소스 검색

Merge branch 'develop' of https://github.com/frappe/frappe into design-fixes

version-14
prssanna 4 년 전
부모
커밋
1a8a24eaef
23개의 변경된 파일330개의 추가작업 그리고 1564개의 파일을 삭제
  1. +0
    -1
      frappe/public/build.json
  2. +0
    -729
      frappe/public/css/form.css
  3. +4
    -1
      frappe/public/icons/timeless/symbol-defs.svg
  4. +15
    -7
      frappe/public/js/frappe/file_uploader/FilePreview.vue
  5. +14
    -18
      frappe/public/js/frappe/file_uploader/FileUploader.vue
  6. +11
    -2
      frappe/public/js/frappe/file_uploader/index.js
  7. +9
    -2
      frappe/public/js/frappe/form/controls/barcode.js
  8. +11
    -5
      frappe/public/js/frappe/form/controls/signature.js
  9. +1
    -1
      frappe/public/js/frappe/form/grid_row.js
  10. +1
    -1
      frappe/public/js/frappe/form/sidebar/form_sidebar.js
  11. +1
    -1
      frappe/public/js/frappe/list/list_sidebar.html
  12. +1
    -1
      frappe/public/js/frappe/list/list_view_select.js
  13. +1
    -1
      frappe/public/js/frappe/request.js
  14. +2
    -2
      frappe/public/js/frappe/ui/toolbar/search.js
  15. +2
    -2
      frappe/public/js/frappe/views/breadcrumbs.js
  16. +0
    -778
      frappe/public/less/form.less
  17. +8
    -1
      frappe/public/scss/common/buttons.scss
  18. +66
    -1
      frappe/public/scss/desk/controls.scss
  19. +17
    -0
      frappe/public/scss/desk/data_import.scss
  20. +153
    -5
      frappe/public/scss/desk/form.scss
  21. +2
    -1
      frappe/public/scss/desk/index.scss
  22. +0
    -4
      frappe/public/scss/desk/mobile.scss
  23. +11
    -0
      frappe/public/scss/desk/sidebar.scss

+ 0
- 1
frappe/public/build.json 파일 보기

@@ -76,7 +76,6 @@
"public/less/desk.less",
"public/less/module.less",
"public/less/link_preview.less",
"public/less/form.less",
"public/less/mobile.less",
"public/less/controls.less",
"public/less/chat.less",


+ 0
- 729
frappe/public/css/form.css 파일 보기

@@ -1,729 +0,0 @@
.form-print-wrapper {
border: 1px solid #d1d8dd;
border-top: none;
}
.print-preview-wrapper {
padding: 30px 0px;
background-color: #f5f7fa;
}
.print-toolbar {
margin: 0px;
padding: 10px 0px;
border-bottom: 1px solid #d1d8dd;
}
.print-toolbar > div {
padding-right: 0px;
}
.print-toolbar > div:last-child {
padding-right: 15px;
}
.form-inner-toolbar {
padding: 10px 15px 0px;
background-color: #fafbfc;
text-align: right;
}
.form-inner-toolbar .btn {
margin-bottom: 10px;
}
.form-clickable-section {
border-top: 1px solid #d1d8dd;
padding: 10px 15px;
background-color: #F7FAFC;
}
.form-page.second-page {
border-top: 1px solid #d1d8dd;
}
.form-message {
padding: 15px 30px;
border-bottom: 1px solid #d1d8dd;
}
.document-flow-wrapper {
padding: 40px 15px 30px;
font-size: 12px;
border-bottom: 1px solid #EBEFF2;
}
.document-flow-wrapper .document-flow {
display: inline-block;
position: relative;
left: 50%;
transform: translateX(-50%);
}
.document-flow-wrapper .document-flow .document-flow-link-wrapper {
width: 140px;
display: inline-block;
}
.document-flow-wrapper .document-flow .document-flow-link-wrapper:not(:last-child) {
border-top: 1px solid #b8c2cc;
margin-right: -4px;
}
.document-flow-wrapper .document-flow .document-flow-link-wrapper:last-child {
margin-right: -140px;
}
.document-flow-wrapper .document-flow .document-flow-link {
margin-top: -10px;
display: inline-block;
}
.document-flow-wrapper .document-flow .document-flow-link:not(.disabled):hover .document-flow-link-label,
.document-flow-wrapper .document-flow .document-flow-link:not(.disabled):focus .document-flow-link-label,
.document-flow-wrapper .document-flow .document-flow-link:not(.disabled):active .document-flow-link-label {
text-decoration: underline;
}
.document-flow-wrapper .document-flow .document-flow-link-label {
display: inline-block;
margin-left: -50%;
margin-top: 5px;
}
@media (max-width: 767px) {
.document-flow-wrapper {
display: none;
}
}
.form-dashboard {
background-color: #fafbfc;
}
.form-dashboard-wrapper {
margin: -15px 0px;
}
.form-documents h6 {
margin-top: 15px;
}
.form-dashboard-section {
margin: 0px -15px;
padding: 15px 30px;
border-bottom: 1px solid #EBEFF2;
}
.form-dashboard-section:first-child {
padding-top: 0px;
}
.form-dashboard-section:last-child {
border-bottom: none;
}
.form-heatmap .heatmap {
display: flex;
justify-content: center;
}
.form-heatmap .heatmap-message {
margin-top: 10px;
}
@media (max-width: 991px) {
.form-heatmap {
overflow: hidden;
overflow-x: scroll;
}
}
.inline-graph .inline-graph-half {
width: 48%;
display: inline-block;
position: relative;
height: 30px;
}
.inline-graph .inline-graph-half .inline-graph-count {
font-size: 10px;
position: absolute;
left: 0;
right: 0;
top: 3px;
padding: 0px 5px;
text-align: left;
}
.inline-graph .inline-graph-half .inline-graph-bar {
position: absolute;
left: 0;
right: 0;
top: 20px;
}
.inline-graph .inline-graph-half .inline-graph-bar-inner {
display: block;
float: left;
background-color: #d1d8dd;
height: 6px;
border-radius: 0px 3px 3px 0px;
}
.inline-graph .inline-graph-half .inline-graph-bar-inner.dark {
background-color: #36414C;
}
.inline-graph .inline-graph-half:first-child {
border-right: 1px solid #d1d8dd;
margin-right: -3px;
}
.inline-graph .inline-graph-half:first-child .inline-graph-count {
text-align: right;
}
.inline-graph .inline-graph-half:first-child .inline-graph-bar-inner {
float: right;
border-radius: 3px 0px 0px 3px;
}
.progress-area {
padding-top: 15px;
padding-bottom: 15px;
}
.form-links .document-link {
margin-bottom: 10px;
height: 22px;
}
.form-links .document-link:hover .badge-link {
text-decoration: underline;
}
.form-links .document-link:hover .badge-link[disabled='disabled'] {
text-decoration: none;
}
.form-links .count {
display: inline-block;
margin-left: 5px;
margin-right: 5px;
}
h6.uppercase,
.h6.uppercase {
font-size: 11px;
font-weight: normal;
letter-spacing: 0.4px;
text-transform: uppercase;
color: #8D99A6;
}
.form-section {
margin: 0px;
padding: 15px;
}
.form-section .form-section-description {
margin-bottom: 10px;
}
.form-section .form-section-heading {
margin: 10px 0px;
}
.form-section .section-head {
margin: 0px 0px 15px 15px;
cursor: pointer;
}
.form-section .section-head .collapse-indicator {
color: #d1d8dd;
margin-left: 10px;
position: relative;
bottom: -1px;
}
.form-section .section-head .collapse-indicator.octicon-chevron-up {
bottom: -2px;
}
.form-section .section-head.collapsed {
margin-bottom: 0px;
}
.form-section:not(:last-child),
.form-inner-toolbar {
border-bottom: 1px solid #d1d8dd;
}
.empty-section {
display: none !important;
}
.modal .form-layout {
margin: -15px;
}
.modal .form-grid .form-layout {
margin: 0px;
}
.modal .form-section {
padding: 15px 7px;
}
.help ol {
padding-left: 19px;
}
.field_description_top {
margin-bottom: 3px;
}
.user-actions {
margin-bottom: 15px;
}
.user-actions a {
font-weight: bold;
}
.badge-important {
background-color: #e74c3c;
}
.address-box {
background-color: #fafbfc;
padding: 0px 15px;
margin: 15px 0px;
border: 1px solid #d1d8dd;
border-radius: 3px;
font-size: 12px;
}
.timeline {
margin: 30px 0px;
}
.timeline .timeline-head .comment-input {
height: auto;
}
.timeline-item {
margin-top: 0px;
}
.timeline-item b {
color: #36414C !important;
}
.timeline-item blockquote {
font-size: inherit;
}
.timeline-item .btn-more {
margin-left: 65px;
}
.timeline-item .gmail_extra {
display: none;
}
.timeline-items {
position: relative;
}
.timeline {
position: relative;
}
.timeline::before {
content: " ";
border-left: 1px solid #d1d8dd;
position: absolute;
top: 0px;
bottom: -124px;
left: 43px;
z-index: 0;
}
.timeline.in-dialog::before {
bottom: 0px;
}
@media (max-width: 991px) {
.timeline::before {
bottom: -64px;
}
}
.timeline-item.user-content {
margin: 30px 0px 30px 27px;
}
.timeline-item.user-content .media-body {
border: 1px solid #d1d8dd;
border-radius: 3px;
margin-left: -7px;
position: relative;
max-width: calc(100% - 50px);
padding-right: 0px;
overflow: visible;
}
.timeline-item.user-content .avatar-medium {
margin-right: 10px;
height: 45px;
width: 45px;
}
.timeline-item.user-content .action-btns {
position: absolute;
right: 0;
padding: 8px 15px 0 5px;
}
.timeline-item.user-content .action-btns .edit-btn-container {
margin-right: 13px;
}
.timeline-item.user-content .comment-header {
background-color: #fafbfc;
padding: 10px 15px 8px 13px;
margin: 0px;
color: #8D99A6;
border-bottom: 1px solid #EBEFF2;
}
.timeline-item.user-content .comment-header.links-active {
padding-right: 77px;
}
.timeline-item.user-content .comment-header .asset-details {
display: inline-block;
width: 100%;
}
.timeline-item.user-content .comment-header .asset-details .btn-link {
border: 0;
border-radius: 0;
padding: 0;
}
.timeline-item.user-content .comment-header .asset-details .btn-link:hover {
text-decoration: none;
}
.timeline-item.user-content .comment-header .commented-on-small {
display: none;
}
.timeline-item.user-content .comment-header .octicon-heart {
color: #ff5858;
cursor: pointer;
}
.timeline-item.user-content .reply {
padding: 15px;
overflow: auto;
}
.timeline-item.user-content .reply > div > p:first-child {
margin-top: 0px;
}
.timeline-item.user-content .reply > div > p:last-child {
margin-bottom: 0px;
}
.timeline-item.user-content .reply hr {
margin: 10px 0px;
}
.timeline-item.user-content .close-btn-container .close {
color: inherit;
opacity: 1;
padding: 0;
font-size: 18px;
}
.timeline-item.user-content .edit-btn-container {
padding: 0;
}
.timeline-item.user-content .edit-btn-container .edit {
color: inherit;
font-size: 21px;
line-height: 1;
}
.timeline-item.user-content .edit-btn-container .edit .octicon-check {
font-size: 1em;
}
.timeline-item.user-content .edit-btn-container .edit:hover,
.timeline-item.user-content .edit-btn-container .edit:focus {
color: #000;
}
.timeline-item.user-content .comment-likes {
margin-left: 5px;
}
.timeline-item.user-content .media-body:after,
.timeline-item.user-content .media-body:before {
right: 100%;
top: 15px;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
}
.timeline-item.user-content .media-body:after {
border-color: rgba(136, 183, 213, 0);
border-right-color: #fafbfc;
border-width: 6px;
margin-top: -6px;
}
.timeline-item.user-content .media-body:before {
border-color: rgba(194, 225, 245, 0);
border-right-color: #d1d8dd;
border-width: 7px;
margin-top: -7px;
}
.timeline-item.notification-content {
padding-left: 30px;
margin: 30px 0px;
position: relative;
color: #8D99A6;
}
.timeline-item.notification-content * {
color: #8D99A6;
}
.timeline-item.notification-content .fa-fw {
margin-left: 36px;
}
.timeline-item.notification-content div.small {
padding-left: 40px;
}
.timeline-item.notification-content div.small .fa-fw {
margin-left: 0px;
}
.timeline-item.notification-content .octicon-heart {
color: #ff5858 !important;
}
.timeline-item.notification-content::before {
content: " ";
width: 7px;
height: 7px;
background-color: #d1d8dd;
position: absolute;
left: 40px;
border-radius: 50%;
top: 5px;
}
.timeline-item .reply-link {
margin-left: 15px;
font-size: 12px;
}
.timeline-head {
background-color: white;
border: 1px solid #d1d8dd;
border-radius: 3px;
position: relative;
z-index: 1;
}
.timeline-head .comment-input-header {
background-color: #fafbfc;
padding: 7px 15px;
border-bottom: 1px solid #EBEFF2;
}
.timeline-head .comment-input-container {
padding: 15px;
}
.timeline-head .comment-input-container .awesomplete > ul {
min-width: 200px;
}
.timeline-head .comment-input {
border-color: #EBEFF2;
max-width: 100%;
}
.timeline-head .comment-input:focus {
box-shadow: none;
}
@media (max-width: 767px) {
.timeline-head {
border-left: none;
border-right: none;
border-radius: 0px;
}
}
.signature-field {
min-height: 300px;
background: #fff;
border: 1px solid #d1d8dd;
border-radius: 3px;
position: relative;
margin-top: -10px;
}
.signature-display {
margin: 7px 0px;
background: #fff;
}
.signature-btn-row {
position: absolute;
bottom: 12px;
right: 12px;
}
.signature-reset {
z-index: 10;
height: 30px;
width: 30px;
padding: 4px 0px;
}
.signature-img {
background: #fff;
border-radius: 3px;
margin-top: 5px;
max-height: 150px;
}
.timeline-new-email {
margin: 30px 0px;
padding-left: 70px;
position: relative;
}
.timeline-new-email::before {
content: " ";
width: 7px;
height: 7px;
background-color: #d1d8dd;
position: absolute;
left: 40px;
border-radius: 50%;
top: 5px;
}
.form-footer h5 {
margin: 15px 0px;
font-weight: bold;
}
.control-label,
.grid-heading-row {
color: #8D99A6;
font-size: 12px;
}
.control-label {
margin-bottom: 5px;
font-weight: normal;
}
.like-disabled-input {
margin-bottom: 7px;
min-height: 30px;
font-weight: bold;
background-color: #f5f7fa;
padding: 5px 10px;
border-radius: 3px;
}
.disabled-check {
color: #f5f7fa;
margin-right: 5px;
margin-bottom: -2px;
}
.like-disabled-input.for-description {
font-weight: normal;
font-size: 12px;
}
.frappe-control {
margin-bottom: 10px;
}
.frappe-control .help-box {
margin-top: 3px;
}
.frappe-control pre {
white-space: pre-wrap;
background-color: inherit;
border: none;
padding: 0px;
margin: 0px;
}
.flex-justify-center {
display: flex;
justify-content: center;
}
.flex-justify-end {
display: flex;
justify-content: flex-end;
}
.hide-control {
display: none !important;
}
.shared-user {
margin-bottom: 10px;
}
.attach-missing-image,
.attach-image-display {
cursor: pointer;
}
select.form-control {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.form-control.bold {
color: #000;
font-weight: bold;
background-color: #fffdf4;
}
.form-control[data-fieldtype="Password"] {
position: inherit;
}
.password-strength-indicator {
float: right;
padding: 15px;
margin-top: -41px;
margin-right: -7px;
}
.password-strength-message {
margin-top: -10px;
}
.control-code,
.control-code.bold {
height: 400px;
font-family: Monaco, "Courier New", monospace;
color: #36414C;
font-size: 12px;
line-height: 1.7em;
}
.delivery-status-indicator {
display: inline-block;
margin-top: -3px;
margin-left: 1px;
font-weight: 500;
color: #8D99A6;
}
.attach-btn {
margin-top: 10px;
}
@media (min-width: 768px) {
.layout-main .form-column.col-sm-12 > form > .input-max-width {
max-width: 50%;
padding-right: 15px;
}
.col-sm-6 .form-grid .form-column.col-sm-12 > form > .input-max-width {
max-width: none;
padding-right: 0px;
}
.form-column.col-sm-6 textarea[data-fieldtype="Code"] {
height: 120px !important;
}
}
@media (max-width: 991px) {
.form-section .form-section-heading {
margin-top: 10px;
}
}
@media (max-width: 767px) {
.form-section .section-head {
padding: 15px 15px 15px 0px;
}
.form-section .section-body .form-column:first-child .radio,
.form-section .section-body .form-column:first-child .checkbox {
margin-top: 0;
}
.form-column {
border-bottom: 1px solid #EBEFF2;
padding-top: 15px;
padding-bottom: 15px;
}
.form-column:last-child {
border-bottom: 0px;
}
.form-section {
padding-left: 0px !important;
padding-right: 0px !important;
}
.form-grid {
margin-left: -17px;
margin-right: -17px;
border-left: none !important;
border-right: none !important;
border-radius: none;
}
.form-page .form-section {
padding: 0px 15px;
}
.frappe-control.form-page {
padding: 7px 15px;
border-bottom: 1px solid #EBEFF2;
margin: 0px -15px;
}
.frappe-control.form-page .link-btn {
top: -2px;
}
.frappe-control.form-page .like-disabled-input {
min-height: 0px !important;
}
.frappe-control.form-page:last-child {
margin-bottom: 0px;
}
.form-page .frappe-control:last-child {
border-bottom: 0px;
}
.form-page .frappe-control[data-fieldtype="Table"] {
padding: 0px 15px;
margin-top: -1px;
border-bottom: none;
}
.form-page .frappe-control[data-fieldtype="Table"] label {
margin-top: 7px;
}
.form-page .form-control {
border: none;
border-bottom: 1px solid #d1d8dd;
box-shadow: none;
background-color: inherit;
height: auto;
padding: 0px;
margin-bottom: 7px;
border-radius: 0px;
text-align: left !important;
}
.form-page .form-control:focus {
box-shadow: none;
}
}
/* goals */
.goals-page-container {
background-color: #fafbfc;
padding-top: 1px;
}
.goals-page-container .goal-container {
background-color: #fff;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
border-radius: 2px;
padding: 10px;
margin: 10px;
}
body[data-route^="Form/Communication"] textarea[data-fieldname="subject"] {
height: 80px !important;
}
.frappe-control[data-fieldtype="Attach"] .attached-file {
position: relative;
margin-top: 5px;
}
.frappe-control[data-fieldtype="Attach"] .attached-file .close {
position: absolute;
top: 0;
right: 0;
}

+ 4
- 1
frappe/public/icons/timeless/symbol-defs.svg 파일 보기

@@ -138,7 +138,10 @@
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.25 6C3.25 5.72386 3.47386 5.5 3.75 5.5H20.2474C20.5236 5.5 20.7474 5.72386 20.7474 6C20.7474 6.27614 20.5236 6.5 20.2474 6.5H3.75C3.47386 6.5 3.25 6.27614 3.25 6ZM3.25 12C3.25 11.7239 3.47386 11.5 3.75 11.5H20.2474C20.5236 11.5 20.7474 11.7239 20.7474 12C20.7474 12.2761 20.5236 12.5 20.2474 12.5H3.75C3.47386 12.5 3.25 12.2761 3.25 12ZM3.75 17.5C3.47386 17.5 3.25 17.7239 3.25 18C3.25 18.2761 3.47386 18.5 3.75 18.5H20.2474C20.5236 18.5 20.7474 18.2761 20.7474 18C20.7474 17.7239 20.5236 17.5 20.2474 17.5H3.75Z" fill="var(--icon-stroke)"/>
</symbol>
<symbol fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" id="icon-lock">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.077 1.45h-.055a3.356 3.356 0 00-3.387 3.322v.35H3.75a2 2 0 00-2 2v5.391a2 2 0 002 2h8.539a2 2 0 002-2V7.122a2 2 0 00-2-2h-.885v-.285A3.356 3.356 0 008.082 1.45h-.005zm2.327 3.672V4.83a2.356 2.356 0 00-2.33-2.38h-.06a2.356 2.356 0 00-2.38 2.33v.342h4.77zm-6.654 1a1 1 0 00-1 1v5.391a1 1 0 001 1h8.539a1 1 0 001-1V7.122a1 1 0 00-1-1H3.75zm4.27 4.269a.573.573 0 100-1.147.573.573 0 000 1.147zm1.573-.574a1.573 1.573 0 11-3.147 0 1.573 1.573 0 013.147 0z"></path>
<path stroke="none" fill-rule="evenodd" clip-rule="evenodd" d="M8.077 1.45h-.055a3.356 3.356 0 00-3.387 3.322v.35H3.75a2 2 0 00-2 2v5.391a2 2 0 002 2h8.539a2 2 0 002-2V7.122a2 2 0 00-2-2h-.885v-.285A3.356 3.356 0 008.082 1.45h-.005zm2.327 3.672V4.83a2.356 2.356 0 00-2.33-2.38h-.06a2.356 2.356 0 00-2.38 2.33v.342h4.77zm-6.654 1a1 1 0 00-1 1v5.391a1 1 0 001 1h8.539a1 1 0 001-1V7.122a1 1 0 00-1-1H3.75zm4.27 4.269a.573.573 0 100-1.147.573.573 0 000 1.147zm1.573-.574a1.573 1.573 0 11-3.147 0 1.573 1.573 0 013.147 0z" fill="#1F272E"></path>
</symbol>
<symbol width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" id="icon-unlock">
<path stroke="none" fill-rule="evenodd" clip-rule="evenodd" d="M8.07685 1.45034H8.02155C7.13255 1.44218 6.2766 1.78707 5.64159 2.40938C5.00596 3.03229 4.64377 3.88215 4.63464 4.77206L4.63462 4.77206V4.77719V5.12175H3.75C2.64543 5.12175 1.75 6.01719 1.75 7.12175V12.5134C1.75 13.6179 2.64543 14.5134 3.75 14.5134H12.2885C13.393 14.5134 14.2885 13.6179 14.2885 12.5134V7.12175C14.2885 6.01718 13.393 5.12175 12.2885 5.12175H5.63462V4.77988C5.64166 4.156 5.89586 3.56033 6.34152 3.12359C6.78776 2.68627 7.38942 2.4441 8.01419 2.45031L8.01418 2.45034H8.01916H8.07417C8.69805 2.45738 9.29371 2.71158 9.73045 3.15724C9.92373 3.35446 10.2403 3.35766 10.4375 3.16438C10.6347 2.9711 10.6379 2.65453 10.4447 2.45731C9.82175 1.82169 8.97189 1.45949 8.08198 1.45036L8.08198 1.45034H8.07685ZM3.75 6.12175C3.19772 6.12175 2.75 6.56947 2.75 7.12175V12.5134C2.75 13.0656 3.19772 13.5134 3.75 13.5134H12.2885C12.8407 13.5134 13.2885 13.0656 13.2885 12.5134V7.12175C13.2885 6.56947 12.8407 6.12175 12.2885 6.12175H3.75ZM8.01936 10.3909C8.33605 10.3909 8.59279 10.1342 8.59279 9.81752C8.59279 9.50083 8.33605 9.24409 8.01936 9.24409C7.70266 9.24409 7.44593 9.50083 7.44593 9.81752C7.44593 10.1342 7.70266 10.3909 8.01936 10.3909ZM9.59279 9.81752C9.59279 10.6865 8.88834 11.3909 8.01936 11.3909C7.15038 11.3909 6.44593 10.6865 6.44593 9.81752C6.44593 8.94854 7.15038 8.24409 8.01936 8.24409C8.88834 8.24409 9.59279 8.94854 9.59279 9.81752Z" fill="#1F272E"/>
</symbol>
<symbol viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" id="icon-list_alt">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.5 3.722c0-.454.316-.722.59-.722h9.82c.274 0 .59.268.59.722v8.556c0 .454-.316.722-.59.722H3.09c-.274 0-.59-.268-.59-.722V3.722zM3.09 2c-.93 0-1.59.826-1.59 1.722v8.556c0 .896.66 1.722 1.59 1.722h9.82c.93 0 1.59-.826 1.59-1.722V3.722C14.5 2.826 13.84 2 12.91 2H3.09zM5 4.5a.5.5 0 0 0 0 1h4.002a.5.5 0 1 0 0-1H5zM5 7a.5.5 0 0 0 0 1h5.002a.5.5 0 1 0 0-1H5zm-.5 3a.5.5 0 0 1 .5-.5h2.27a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5z"


+ 15
- 7
frappe/public/js/frappe/file_uploader/FilePreview.vue 파일 보기

@@ -11,17 +11,18 @@
</div>
<div>
<div>
<a :href="file.doc.file_url" v-if="file.doc" target="_blank">
<a class="flex" :href="file.doc.file_url" v-if="file.doc" target="_blank">
<span class="file-name">{{ file.name | file_name }}</span>
<i v-html="frappe.utils.icon(file.doc.is_private ? 'lock' : 'unlock')"></i>
<div class="ml-2" v-html="private_icon"></div>
</a>
<span class="flex" v-else>
<span class="file-name">{{ file.name | file_name }}</span>
<span class="cursor-pointer" @click="$emit('toggle_private')" :title="__('Toggle Public/Private')">
<i v-html="frappe.utils.icon(file.is_private ? 'lock' : 'unlock')"></i>
</span>
<button class="ml-2 btn-reset" @click="$emit('toggle_private')" :title="__('Toggle Public/Private')">
<div v-html="private_icon"></div>
</button>
</span>
</div>

<div>
<span class="file-size">
{{ file.file_obj.size | file_size }}
@@ -30,7 +31,7 @@
</div>
<div class="file-actions">
<ProgressRing
v-show="file.uploading"
v-show="file.uploading && !uploaded"
primary="var(--primary-color)"
secondary="var(--gray-200)"
radius="24"
@@ -76,6 +77,12 @@ export default {
}
},
computed: {
private_icon() {
return frappe.utils.icon(this.is_private ? 'lock' : 'unlock');
},
is_private() {
return this.file.doc ? this.file.doc.is_private : this.file.private;
},
uploaded() {
return this.file.total && this.file.total === this.file.progress && !this.file.failed;
},
@@ -156,9 +163,10 @@ export default {
}

.file-actions {
width: 2.5rem;
width: 3rem;
flex-shrink: 0;
margin-left: auto;
text-align: center;
}

.file-actions .btn {


+ 14
- 18
frappe/public/js/frappe/file_uploader/FileUploader.vue 파일 보기

@@ -73,21 +73,13 @@
</div>
</div>
<div class="file-preview-area" v-show="files.length && !show_file_browser && !show_web_link">
<!-- <div class="margin-bottom" v-if="!upload_complete">
<label>
<input type="checkbox" class="input-with-feedback" @change="e => toggle_all_private(e.target.checked)">
<span class="text-medium" style="font-weight: normal;">
{{ __('Make all attachments private') }}
</span>
</label>
</div> -->
<div class="file-preview-container">
<FilePreview
v-for="(file, i) in files"
:key="file.name"
:file="file"
@remove="remove_file(i)"
@toggle_private="toggle_private(i)"
@remove="remove_file(file)"
@toggle_private="file.private = !file.private"
/>
</div>
<div class="flex align-center" v-if="show_upload_button && currently_uploading === -1">
@@ -217,15 +209,19 @@ export default {
on_file_input(e) {
this.add_files(this.$refs.file_input.files);
},
remove_file(i) {
this.files = this.files.filter((file, j) => i !== j);
},
toggle_private(i) {
this.files[i].private = !this.files[i].private;
remove_file(file) {
this.files = this.files.filter(f => f !== file);
},
toggle_all_private(flag) {
if (flag == null) {
flag = this.files.every(file => file.private);
toggle_all_private() {
let flag;
let private_values = this.files.filter(file => file.private);
if (private_values.length < this.files.length) {
// there are some private and some public
// set all to private
flag = true;
} else {
// all are private, set all to public
flag = false;
}
this.files = this.files.map(file => {
file.private = flag;


+ 11
- 2
frappe/public/js/frappe/file_uploader/index.js 파일 보기

@@ -48,6 +48,13 @@ export default class FileUploader {

this.uploader = this.$fileuploader.$children[0];

this.uploader.$watch('files', (files) => {
let all_private = files.every(file => file.private);
if (this.dialog) {
this.dialog.set_secondary_action_label(all_private ? __('Set all public') : __('Set all private'));
}
}, { deep: true });

if (files && files.length) {
this.uploader.add_files(files);
}
@@ -66,8 +73,10 @@ export default class FileUploader {
title: __('Upload'),
primary_action_label: __('Upload'),
primary_action: () => this.upload_files(),
secondary_action_label: __('Toggle Private'),
secondary_action: () => this.uploader.toggle_all_private()
secondary_action_label: __('Set all private'),
secondary_action: () => {
this.uploader.toggle_all_private();
}
});

this.wrapper = this.dialog.body;


+ 9
- 2
frappe/public/js/frappe/form/controls/barcode.js 파일 보기

@@ -8,7 +8,7 @@ frappe.ui.form.ControlBarcode = frappe.ui.form.ControlData.extend({
this.default_svg = '<svg height=80></svg>';
let $input_wrapper = this.$wrapper.find('.control-input-wrapper');
this.barcode_area = $(
`<div class="barcode-wrapper border">${this.default_svg}</div>`
`<div class="barcode-wrapper">${this.default_svg}</div>`
);
this.barcode_area.appendTo($input_wrapper);
},
@@ -55,7 +55,14 @@ frappe.ui.form.ControlBarcode = frappe.ui.form.ControlData.extend({

get_options(value) {
// get JsBarcode options
let options = JSON.parse('{ "height" : 40 }');
let options = {};
options.background = "var(--control-bg)";
options.lineColor = "var(--text-color)";
options.font = "var(--font-stack)";
options.fontSize = "16";
options.width = "3";
options.height = "50";

if (frappe.utils.is_json(this.df.options)) {
options = JSON.parse(this.df.options);
if (options.format && options.format === 'EAN') {


+ 11
- 5
frappe/public/js/frappe/form/controls/signature.js 파일 보기

@@ -29,15 +29,21 @@ frappe.ui.form.ControlSignature = frappe.ui.form.ControlData.extend({
let width = this.body.width();
if (width > 0 && !this.$pad) {
this.$pad = this.body.jSignature({
height: 300,
height: 200,
color: "var(--text-color)",
width: this.body.width(),
lineWidth: 3
lineWidth: 2,
"background-color": "var(--control-bg)"
}).on('change',
this.on_save_sign.bind(this));
this.load_pad();
this.$reset_button_wrapper = $(`<div class="signature-btn-row">
<a href="#" type="button" class="signature-reset btn btn-default">
<i class="glyphicon glyphicon-repeat"></i></a>`)
this.$reset_button_wrapper = $(`
<div class="signature-btn-row">
<a href="#" type="button" class="signature-reset btn icon-btn">
${frappe.utils.icon('refresh', 'sm')}
</a>
</div>
`)
.appendTo(this.$pad)
.on("click", '.signature-reset', () => {
this.on_reset_sign();


+ 1
- 1
frappe/public/js/frappe/form/grid_row.js 파일 보기

@@ -229,7 +229,7 @@ export default class GridRow {
this.open_form_button = $(`
<div class="btn-open-row">
<a>${frappe.utils.icon('edit', 'xs')}</a>
<div class="hidden-xs edit-grid-row">Edit</div>
<div class="hidden-xs edit-grid-row">${ __("Edit") }</div>
</div>
`)
.appendTo($('<div class="col col-xs-1"></div>').appendTo(this.row))


+ 1
- 1
frappe/public/js/frappe/form/sidebar/form_sidebar.js 파일 보기

@@ -210,7 +210,7 @@ frappe.ui.form.Sidebar = class {
if (follow == null) {
follow = this.frm.get_docinfo().is_document_followed;
}
this.follow_button.text(follow ? "Unfollow" : "Follow");
this.follow_button.text(follow ? __("Unfollow") : __("Follow"));
}

refresh_like() {


+ 1
- 1
frappe/public/js/frappe/list/list_sidebar.html 파일 보기

@@ -56,7 +56,7 @@
</a>
<ul class="dropdown-menu list-stats-dropdown" role="menu">
<div class="dropdown-search">
<input type="text" placeholder="Search" data-element="search" class="form-control input-xs">
<input type="text" placeholder={{__("Search") }} data-element="search" class="form-control input-xs">
</div>
<div class="stat-result">
</div>


+ 1
- 1
frappe/public/js/frappe/list/list_view_select.js 파일 보기

@@ -10,7 +10,7 @@ frappe.views.ListViewSelect = class ListViewSelect {
add_view_to_menu(view, action) {
let $el = this.page.add_custom_menu_item(
this.parent,
view,
__(view),
action,
true,
null,


+ 1
- 1
frappe/public/js/frappe/request.js 파일 보기

@@ -492,7 +492,7 @@ frappe.request.report_error = function(xhr, request_opts) {

if (!frappe.error_dialog) {
frappe.error_dialog = new frappe.ui.Dialog({
title: 'Server Error',
title: __('Server Error'),
primary_action_label: __('Report'),
primary_action: () => {
if (error_report_email) {


+ 2
- 2
frappe/public/js/frappe/ui/toolbar/search.js 파일 보기

@@ -303,7 +303,7 @@ frappe.search.SearchDialog = class {

let $results_list = $(`<div class="results-summary">
<div class="result-section full-list ${type}-section col-sm-12">
<div class="result-title">${type}</div>
<div class="result-title"> ${ __(type) }</div>
<div class="result-body">
</div>
</div>
@@ -340,7 +340,7 @@ frappe.search.SearchDialog = class {
}

let $result_section = $(`<div class="col-sm-12 result-section" data-type="${type}">
<div class="result-title">${type}</div>
<div class="result-title">${__(type)}</div>
<div class="result-body">
${more_html}
</div>


+ 2
- 2
frappe/public/js/frappe/views/breadcrumbs.js 파일 보기

@@ -138,7 +138,7 @@ frappe.breadcrumbs = {
} else {
route = doctype_route;
}
$(`<li><a href="/app/${route}">${doctype}</a></li>`)
$(`<li><a href="/app/${route}">${__(doctype)}</a></li>`)
.appendTo(this.$breadcrumbs);
}
},
@@ -147,7 +147,7 @@ frappe.breadcrumbs = {
const doctype = breadcrumbs.doctype;
const docname = frappe.get_route()[2];
let form_route = `/app/${frappe.router.slug(doctype)}/${docname}`;
$(`<li><a href="${form_route}">${docname}</a></li>`)
$(`<li><a href="${form_route}">${__(docname)}</a></li>`)
.appendTo(this.$breadcrumbs);

if (view === "form") {


+ 0
- 778
frappe/public/less/form.less 파일 보기

@@ -1,778 +0,0 @@
@import "variables.less";

.form-print-wrapper {
border: 1px solid @border-color;
border-top: none;
}

.print-preview-wrapper {
padding: 30px 0px;
background-color: @navbar-bg;
}

.print-toolbar {
margin: 0px;
// padding: 10px 0px;
// border-bottom: 1px solid @border-color;

> div {
padding-right: 0px;
}
> div:last-child {
padding-right: 15px;
}
}

.form-page.second-page {
border-top: 1px solid @border-color;
}

.document-flow-wrapper {
padding: 40px 15px 30px;
font-size: @text-medium;
border-bottom: 1px solid @light-border-color;

.document-flow {
display: inline-block;
position: relative;
left: 50%;
transform: translateX(-50%);

.document-flow-link-wrapper {
width: 140px;
display: inline-block;
}

.document-flow-link-wrapper:not(:last-child) {
border-top: 1px solid @indicator-gray;
// padding-left: 20px;
// padding-right: 20px;
margin-right: -4px;
}

.document-flow-link-wrapper:first-child {
// padding-left: 0px;
}

.document-flow-link-wrapper:last-child {
// padding-right: 0px;
margin-right: -140px;
}

.document-flow-link {
margin-top: -10px;
display: inline-block;
}

.document-flow-link:not(.disabled):hover,
.document-flow-link:not(.disabled):focus,
.document-flow-link:not(.disabled):active {
.document-flow-link-label {
text-decoration: underline;
}
}

.document-flow-link-label {
display: inline-block;
margin-left: -50%;
margin-top: 5px;
}
}
}

@media (max-width: @screen-xs) {
.document-flow-wrapper {
display: none;
}
}

.form-heatmap {
padding: 0px 30px 15px 30px;

.heatmap {
display: flex;
justify-content: center;

// excessive whitespace around the chart
.chart-container {
margin: 0px;
}

// don't show the less..more legend
.chart-legend {
display: none;
}
}

@media (max-width: @screen-sm) {
overflow: hidden;
overflow-x: scroll;
}
}

.frappe-rtl .inline-graph {
direction: ltr;
display: block;
transform: scaleX(-1);
.inline-graph-count {
transform: scaleX(-1);
text-align: right;
}
.inline-graph-half:first-child .inline-graph-count {
text-align: left;
}
}

.form-section {
margin: 0px;
// padding: 15px;

.form-section-description {
margin-bottom: 10px;
}

.form-section-heading {
margin: 10px 0px;
}

.section-head {
margin: 0px 0px 15px 15px;
cursor: pointer;

.collapse-indicator {
color: @text-extra-muted;
margin-left: 10px;
position: relative;
bottom: -1px;
}

.collapse-indicator.octicon-chevron-up {
bottom: -2px;
}
}
.section-head.collapsed {
margin-bottom: 0px;
}
}

.empty-section {
display: none !important;
}

.help ol {
padding-left: 19px;
}

.field_description_top {
margin-bottom: 3px;
}

.user-actions {
margin-bottom: 15px;
}
.user-actions a {
font-weight: bold;
}

.badge-important {
background-color: #e74c3c;
}

.timeline {
margin: 30px 0px;

.timeline-head {
.comment-input {
height: auto;
}
}
}

.timeline-item-content .mention {
background-color: transparent;
padding: 0;
font-weight: bold;

span {
margin: 0;
}
}

.timeline {
position: relative;
}

.timeline::before {
content: " ";
border-left: 1px solid @border-color;
position: absolute;
top: 0px;
bottom: -124px;
left: 43px;
z-index: 0;
}

.timeline.in-dialog::before {
bottom: 0px;
}

@media (max-width: @screen-sm) {
.timeline::before {
bottom: -64px;
}
}

.timeline-item .media-body {
max-width: 100%;
}

.timeline-item.user-content {
margin: 30px 0px 30px 27px;

.media-body {
border: 1px solid @border-color;
border-radius: 3px;
margin-left: -7px;
position: relative;
max-width: calc(~"100% - 50px");
padding-right: 0px;
// to display the triangle beside the box
overflow: visible;
}

.avatar-medium {
margin-right: 10px;
height: 45px;
width: 45px;
}

.action-btns {
position: absolute;
right: 0;
padding: 8px 15px 0 5px;
.edit-btn-container {
margin-right: 13px;
}
}

.comment-header {
background-color: @light-bg;
padding: 10px 15px 8px 13px;
margin: 0px;
color: @text-muted;
border-bottom: 1px solid @light-border-color;
&.links-active {
padding-right: 77px;
}
.asset-details {
display: inline-block;
width: 100%;
.btn-link {
border: 0;
border-radius: 0;
padding: 0;
&:hover {
text-decoration: none;
}
}
}
.commented-on-small {
display: none;
}

.octicon-heart {
color: @heart-color;
cursor: pointer;
}
}

.reply {
padding: 15px;
overflow: auto;

& > div > p:first-child {
margin-top: 0px;
}

& > div > p:last-child {
margin-bottom: 0px;
}

hr {
margin: 10px 0px;
}
}

.close-btn-container {
.close {
color: inherit;
opacity: 1;
padding: 0;
font-size: 18px;
}
}

.edit-btn-container {
padding: 0;

.edit {
color: inherit;
font-size: 21px;
line-height: 1;

.octicon-check {
font-size: 1em;
}

&:hover,
&:focus {
color: #000;
}
}
}

.comment-likes {
margin-left: 5px;
}

.media-body {
.left-arrow;
}
}

.left-arrow {
&::after,
&::before {
right: 100%;
top: 15px;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
}

&::after {
border-color: rgba(136, 183, 213, 0);
border-right-color: #fafbfc;
border-width: 6px;
margin-top: -6px;
}
&::before {
border-color: rgba(194, 225, 245, 0);
border-right-color: @border-color;
border-width: 7px;
margin-top: -7px;
}
}

.timeline-item.notification-content {
padding-left: 30px;
margin: 30px 0px;
position: relative;
color: @text-muted;

* {
color: @text-muted;
}

.fa-fw {
margin-left: 36px;
}

div.small {
padding-left: 40px;

.fa-fw {
margin-left: 0px;
}
}

.octicon-heart {
color: @heart-color !important;
}
}

.timeline-indicator() {
content: " ";
width: 7px;
height: 7px;
background-color: @border-color;
// background-color: white;
// border: 1px solid @border-color;
position: absolute;
left: 40px;
border-radius: 50%;
top: 5px;
}

.timeline-item.user-content.show-indicator {
position: relative;
.media-body {
margin-left: 50px;
}
&::before {
.timeline-indicator();
left: 13px;
top: 13px;
}
}

.timeline-item.notification-content::before {
.timeline-indicator();
}

.timeline-item {
.reply-link,
.reply-link-all {
margin-left: 15px;
font-size: 12px;
}
}

.timeline-item.notification-content.dark::before {
background-color: @text-color;
}

.timeline-head {
background-color: white;
// padding: 15px 30px;
border: 1px solid @border-color;
border-radius: 3px;
position: relative;
z-index: 1;

.comment-input-header {
background-color: @light-bg;
padding: 7px 15px;
border-bottom: 1px solid @light-border-color;
}

.comment-input-container {
padding: 15px;

.awesomplete > ul {
min-width: 200px;
}
}

.comment-input {
border-color: @light-border-color;
max-width: 100%;

&:focus {
box-shadow: none;
}
}
}

@media (max-width: @screen-xs) {
.timeline-head {
border-left: none;
border-right: none;
border-radius: 0px;
}
}

.timeline-futur span {
color: @orange !important;
}

.signature-field {
min-height: 300px;
background: #fff;
border: 1px solid @border-color;
border-radius: 3px;
position: relative;
margin-top: -10px;
}
.signature-display {
margin: 7px 0px;
background: #fff;
}
.signature-btn-row {
position: absolute;
bottom: 12px;
right: 12px;
}
.signature-reset {
z-index: 10;
height: 30px;
width: 30px;
padding: 4px 0px;
}

.signature-img {
background: #fff;
border-radius: 3px;
margin-top: 5px;
max-height: 150px;
}

.timeline-new-email,
.timeline-email-import {
margin: 30px 0px;
padding-left: 70px;
position: relative;
}

.timeline-new-email::before,
.timeline-email-import::before {
.timeline-indicator();
}

.form-footer h5 {
margin: 15px 0px;
font-weight: bold;
}

.control-label,
.grid-heading-row {
color: @text-muted;
font-size: 12px;
}

.control-label {
margin-bottom: 5px;
font-weight: normal;
}

.disabled-check {
color: @navbar-bg;
margin-right: 5px;
margin-bottom: -2px;
}

.like-disabled-input.for-description {
font-weight: normal;
font-size: 12px;
}

.frappe-control& {
margin-bottom: 15px;

.help-box {
margin-top: 3px;
margin-bottom: 6px;
}

pre {
white-space: pre-wrap;
background-color: inherit;
border: none;
padding: 0px;
margin: 0px;
}
}

.flex-justify-center {
display: flex;
justify-content: center;
}

.flex-justify-end {
display: flex;
justify-content: flex-end;
}

.hide-control {
display: none !important;
}

.shared-user {
margin-bottom: 10px;
}

.attach-missing-image,
.attach-image-display {
cursor: pointer;
}

select.form-control {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}

.form-control[data-fieldtype="Password"] {
position: inherit;
}

.password-strength-indicator {
float: right;
padding: 15px;
margin-top: -41px;
margin-right: -7px;
}

.password-strength-message {
margin-top: -10px;
}

.control-code,
.control-code.bold {
height: 400px;
font-family: Monaco, "Courier New", monospace;
color: @text-color;
font-size: 12px;
line-height: 1.7em;
margin-bottom: 10px !important;
}

.delivery-status-indicator {
display: inline-block;
margin-top: -3px;
margin-left: 1px;
font-weight: 500;
color: @text-muted;
}

.attach-btn {
margin-top: 10px;
}

// above mobile
@media (min-width: 768px) {
.layout-main .form-column.col-sm-12 > form > .input-max-width {
max-width: 50%;
padding-right: 15px;
}

// don't max-width when in form-grid with half width
.col-sm-6 .form-grid .form-column.col-sm-12 > form > .input-max-width {
max-width: none;
padding-right: 0px;
}

.form-column.col-sm-6 textarea[data-fieldtype="Code"] {
height: 120px !important;
}
}

// upto tablets
@media (max-width: @screen-sm) {
.form-section .form-section-heading {
margin-top: 10px;
}
}

// mobile
@media (max-width: @screen-xs) {
// padding to form section on mobile
.form-section {
.section-head {
padding: 15px 15px 15px 0px;
}
.section-body {
margin-top: -15px;
}
.section-body .form-column:first-child {
.radio,
.checkbox {
margin-top: 0;
}
}
}

.form-column {
border-bottom: 1px solid @light-border-color;
padding-top: 15px;
padding-bottom: 15px;
}

.form-column:last-child {
border-bottom: 0px;
}

.form-section {
padding-left: 0px !important;
padding-right: 0px !important;
}

// forms

.form-page {
.form-section {
padding: 0px 15px;
}

.frappe-control& {
padding: 7px 15px;
border-bottom: 1px solid @light-border-color;
margin: 0px -15px;

.link-btn {
top: -2px;
}

&:last-child {
margin-bottom: 0px;
}
}

.frappe-control:last-child {
border-bottom: 0px;
}

.frappe-control[data-fieldtype="Table"] {
padding: 0px 15px;
margin-top: -1px;
margin-left: -17px;
margin-right: -17px;
border-bottom: none;

label {
margin-top: 7px;
}
}

.form-control {
height: auto;
margin-bottom: 7px;

// make all fields left-aligned!
text-align: left !important;
}

.form-control:focus {
box-shadow: none;
}
}
}

/* goals */
.goals-page-container {
background-color: #fafbfc;
padding-top: 1px;

.goal-container {
background-color: #fff;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
border-radius: 2px;
padding: 10px;
margin: 10px;
}
}

body[data-route^="Form/Communication"] textarea[data-fieldname="subject"] {
height: 80px !important;
}

// Data Import
.map-columns .form-section {
padding: 0 7px 7px;
border-top: none;

.clearfix {
display: none;
}
}

.map-columns .form-section:first-child {
padding-top: 7px;
}

.table-preview {
margin-top: 12px;
}

+ 8
- 1
frappe/public/scss/common/buttons.scss 파일 보기

@@ -88,10 +88,17 @@
color: $white;
}

.btn-reset {
padding: 0;
margin: 0;
border: 0;
font-size: inherit;
background-color: inherit;
}

[data-theme="dark"] {
.btn-primary-light {
background-color: var(--bg-dark-blue);
box-shadow: none;
}
}
}

+ 66
- 1
frappe/public/scss/desk/controls.scss 파일 보기

@@ -2,6 +2,30 @@
@import "color_picker";
@import "datepicker";

// password
.form-control[data-fieldtype="Password"] {
position: inherit;
}

.password-strength-indicator {
// TODO: Review
float: right;
padding: 15px;
margin-top: -41px;
margin-right: -7px;
}

.password-strength-message {
margin-top: -10px;
}

// select
select.form-control {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}

/* table multiselect */
.table-multiselect {
display: flex;
@@ -200,6 +224,9 @@ textarea.form-control {

.barcode-wrapper {
text-align: center;
background-color: var(--control-bg);
border-radius: var(--border-radius);
padding: var(--padding-md);
}

@media (min-width: 768px) {
@@ -212,8 +239,8 @@ textarea.form-control {
z-index: inherit;
}

// rating
.rating {
// rating
--star-fill: var(--gray-300);
.star-hover {
--star-fill: var(--yellow-100);
@@ -348,3 +375,41 @@ textarea.form-control {
}
}

// signature
.signature-field {
min-height: 110px;
background: var(--control-bg);
border: 1px solid var(--border-color);
border-radius: var(--border-radius);
position: relative;
margin-top: -10px;
}

.signature-display {
margin: 7px 0px;
background: var(--control-bg);
.attach-missing-image,
.attach-image-display {
cursor: pointer;
}
}

.signature-btn-row {
position: absolute;
top: 12px;
right: 12px;
}

.signature-reset {
z-index: 10;
height: 30px;
width: 30px;
padding: 4px 0px;
}

.signature-img {
background: var(--control-bg);
border-radius: 3px;
margin-top: 5px;
max-height: 150px;
}

+ 17
- 0
frappe/public/scss/desk/data_import.scss 파일 보기

@@ -0,0 +1,17 @@
// Data Import
.map-columns .form-section {
padding: 0 7px 7px;
border-top: none;

.clearfix {
display: none;
}
}

.map-columns .form-section:first-child {
padding-top: 7px;
}

.table-preview {
margin-top: 12px;
}

+ 153
- 5
frappe/public/scss/desk/form.scss 파일 보기

@@ -22,15 +22,11 @@
cursor: pointer;

.collapse-indicator {
color: $text-muted;
color: var(--text-muted);
margin-left: 10px;
position: relative;
padding: 0px;
}

.collapse-indicator.octicon-chevron-up {
bottom: -2px;
}
}

.section-head.collapsed {
@@ -76,6 +72,11 @@
font-size: var(--text-sm);
}

.control-label {
margin-bottom: var(--margin-xs);
font-weight: normal;
}

.form-inner-toolbar {
padding-top: var(--padding-md);
text-align: right;
@@ -86,6 +87,10 @@
}

.like-disabled-input {
.for-description {
font-weight: normal;
font-size: var(--text-sm);
}
min-height: var(--input-height);
border-radius: $border-radius;
font-weight: 400;
@@ -226,6 +231,19 @@
}
}

.frappe-rtl .inline-graph {
direction: ltr;
display: block;
transform: scaleX(-1);
.inline-graph-count {
transform: scaleX(-1);
text-align: right;
}
.inline-graph-half:first-child .inline-graph-count {
text-align: left;
}
}

@mixin form-message-background($color) {
background: var(--bg-#{$color});
color: var(--text-on-#{$color});
@@ -264,6 +282,26 @@
line-height: 1.6;
}

.form-heatmap {
.heatmap {
display: flex;
justify-content: center;

.chart-container {
margin: 0px;
}

.chart-legend {
display: none;
}
}

@media (max-width: map-get($grid-breakpoints, "sm")) {
overflow: hidden;
overflow-x: scroll;
}
}

.form-group {
&.frappe-control:last-child {
margin-bottom: 0;
@@ -274,6 +312,10 @@
}

.form-footer {
h5 {
margin: 15px 0px;
font-weight: bold;
}
position: relative;
.scroll-to-top {
position: absolute;
@@ -299,3 +341,109 @@
margin-top: 0px;
}
}

// above mobile
@media (min-width: map-get($grid-breakpoints, "md")) {
.layout-main .form-column.col-sm-12 > form > .input-max-width {
max-width: 50%;
padding-right: 15px;
}

// don't max-width when in form-grid with half width
.col-sm-6 .form-grid .form-column.col-sm-12 > form > .input-max-width {
max-width: none;
padding-right: 0px;
}

.form-column.col-sm-6 textarea[data-fieldtype="Code"] {
height: 120px !important;
}
}

// upto tablets
@media (max-width: map-get($grid-breakpoints, "md")) {
.form-section .form-section-heading {
margin-top: 10px;
}
}

// mobile
@media (max-width: map-get($grid-breakpoints, "sm")) {
// padding to form section on mobile
.form-section {
.section-head {
padding: 15px 15px 15px 0px;
}
.section-body {
margin-top: -15px;
}
.section-body .form-column:first-child {
.radio,
.checkbox {
margin-top: 0;
}
}
padding-left: 0px !important;
padding-right: 0px !important;
}

.form-column {
border-bottom: 1px solid var(--border-color);
padding-top: 15px;
padding-bottom: 15px;
}

.form-column:last-child {
border-bottom: none;
}

// forms
.form-page {
&.second-page {
border-top: 1px solid var(--border-color);
}

.form-section {
padding: 0px 15px;
}

.frappe-control {
padding: 7px 15px;
border-bottom: 1px solid var(--border-color);
margin: 0px -15px;

.link-btn {
top: -2px;
}

&:last-child {
margin-bottom: 0px;
border-bottom: 0px;
}
}

.frappe-control[data-fieldtype="Table"] {
padding: 0px 15px;
margin-top: -1px;
margin-left: -17px;
margin-right: -17px;
border-bottom: none;

label {
margin-top: 7px;
}
}

.form-control {
height: auto;
margin-bottom: 7px;

// make all fields left-aligned!
text-align: left !important;
}

.form-control:focus {
box-shadow: none;
}
}
}

+ 2
- 1
frappe/public/scss/desk/index.scss 파일 보기

@@ -38,9 +38,10 @@
@import "dashboard_view";
@import "tree";
@import "controls";
@import "data_import";
@import "driver";
@import "role_editor";
@import "user_profile";
@import "theme_switcher";
@import "quill";
@import "plyr";
@import "plyr";

+ 0
- 4
frappe/public/scss/desk/mobile.scss 파일 보기

@@ -379,10 +379,6 @@ body {
padding-left: 0;
}
}
.delivery-status-indicator {
float: left;
margin: 0 var(--margin-xs) 0 0;
}
}
.asset-details {
line-height: 24px; /*Height of avtar image -36px to align text center vertically*/


+ 11
- 0
frappe/public/scss/desk/sidebar.scss 파일 보기

@@ -38,6 +38,13 @@ body[data-route^="Module"] .main-menu {
}

.sidebar-menu {
&.user-actions {
margin-bottom: 15px;
a {
font-weight: bold;
}
}

h6,
.h6 {
margin-top: 0px;
@@ -495,3 +502,7 @@ button.data-pill {
display: inline-block;
font-size: var(--text-sm);
}

.shared-user {
margin-bottom: 10px;
}

불러오는 중...
취소
저장