labeledfieldview.css 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /*
  2. * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  4. */
  5. @import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";
  6. @import "../../../mixins/_rounded.css";
  7. :root {
  8. --ck-labeled-field-view-transition: .1s cubic-bezier(0, 0, 0.24, 0.95);
  9. --ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-spacing-medium);
  10. }
  11. .ck.ck-labeled-field-view {
  12. @mixin ck-rounded-corners;
  13. & > .ck.ck-labeled-field-view__input-wrapper {
  14. width: 100%;
  15. & > .ck.ck-label {
  16. top: 0px;
  17. @mixin ck-dir ltr {
  18. left: 0px;
  19. }
  20. @mixin ck-dir rtl {
  21. right: 0px;
  22. }
  23. pointer-events: none;
  24. transform-origin: 0 0;
  25. /* By default, display the label scaled down above the field. */
  26. transform: translate(var(--ck-spacing-medium), -6px) scale(.75);
  27. background: var(--ck-color-base-background);
  28. padding: 0 calc(.5 * var(--ck-font-size-tiny));
  29. line-height: initial;
  30. font-weight: normal;
  31. /* Prevent overflow when the label is longer than the input */
  32. text-overflow: ellipsis;
  33. overflow: hidden;
  34. max-width: 100%;
  35. transition:
  36. transform var(--ck-labeled-field-view-transition),
  37. padding var(--ck-labeled-field-view-transition),
  38. background var(--ck-labeled-field-view-transition);
  39. }
  40. }
  41. &.ck-error {
  42. & > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
  43. color: var(--ck-color-base-error);
  44. }
  45. & .ck-input:not([readonly]) + .ck.ck-label {
  46. color: var(--ck-color-base-error);
  47. }
  48. }
  49. & .ck-labeled-field-view__status {
  50. font-size: var(--ck-font-size-small);
  51. margin-top: var(--ck-spacing-small);
  52. /* Let the info wrap to the next line to avoid stretching the layout horizontally.
  53. The status could be very long. */
  54. white-space: normal;
  55. &.ck-labeled-field-view__status_error {
  56. color: var(--ck-color-base-error);
  57. }
  58. }
  59. /* Disabled fields and fields that have no focus should fade out. */
  60. &.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,
  61. &.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
  62. color: var(--ck-color-input-disabled-text);
  63. }
  64. /* Fields that are disabled or not focused and without a placeholder should have full-sized labels. */
  65. /* stylelint-disable-next-line no-descending-specificity */
  66. &.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,
  67. &.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
  68. @mixin ck-dir ltr {
  69. transform: translate(var(--ck-spacing-medium), calc(0.6 * var(--ck-font-size-base))) scale(1);
  70. }
  71. @mixin ck-dir rtl {
  72. transform: translate(calc(-1 * var(--ck-spacing-medium)), calc(0.6 * var(--ck-font-size-base))) scale(1);
  73. }
  74. /* Compensate for the default translate position. */
  75. max-width: calc(var(--ck-labeled-field-empty-unfocused-max-width));
  76. background: transparent;
  77. padding: 0;
  78. }
  79. /*------ DropdownView integration ----------------------------------------------------------------------------------- */
  80. /* Make sure dropdown' background color in any of dropdown's state does not collide with labeled field. */
  81. & > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck.ck-button {
  82. background: transparent;
  83. }
  84. /* When the dropdown is "empty", the labeled field label replaces its label. */
  85. &.ck-labeled-field-view_empty > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck-button > .ck-button__label {
  86. opacity: 0;
  87. }
  88. /* Make sure the label of the empty, unfocused input does not cover the dropdown arrow. */
  89. &.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown + .ck-label {
  90. max-width: calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard));
  91. }
  92. }