ajax-progress.module.pcss.css 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /**
  2. * @file
  3. * Throbber.
  4. */
  5. @import "../base/variables.pcss.css";
  6. .ajax-progress {
  7. display: inline-block;
  8. }
  9. /**
  10. * Progress bar.
  11. */
  12. .ajax-progress-bar {
  13. width: 13em;
  14. padding: 0 0.3125rem; /* 0 5px */
  15. }
  16. /**
  17. * Throbber.
  18. */
  19. .ajax-progress--throbber {
  20. position: relative;
  21. display: inline-flex;
  22. align-content: center;
  23. height: 1.125rem;
  24. margin: -3px var(--ajax-progress-margin-horizontal) 0;
  25. vertical-align: middle;
  26. white-space: nowrap;
  27. line-height: 1.125rem;
  28. }
  29. /**
  30. * Remove margin from ajax throbbers following buttons because buttons already
  31. * have a large margin set.
  32. */
  33. .js .button:not(.js-hide) + .ajax-progress--throbber {
  34. margin-left: 0; /* LTR */
  35. }
  36. [dir="rtl"].js .button:not(.js-hide) + .ajax-progress--throbber {
  37. margin-right: 0;
  38. margin-left: var(--ajax-progress-margin-horizontal);
  39. }
  40. /**
  41. * Restore start margin for ajax throbbers inside a managed file widget.
  42. */
  43. .js .form-type--managed-file .button:not(.js-hide) + .ajax-progress--throbber,
  44. .js .file-operations-cell .button:not(.js-hide) + .ajax-progress--throbber {
  45. margin-left: var(--ajax-progress-margin-horizontal); /* LTR */
  46. }
  47. [dir="rtl"].js .form-type--managed-file .button:not(.js-hide) + .ajax-progress--throbber,
  48. [dir="rtl"].js .file-operations-cell .button:not(.js-hide) + .ajax-progress--throbber {
  49. margin-right: var(--ajax-progress-margin-horizontal);
  50. margin-left: var(--ajax-progress-margin-horizontal);
  51. }
  52. .ajax-progress__throbber {
  53. box-sizing: border-box;
  54. width: 1.125rem;
  55. height: 1.125rem;
  56. animation: claro-throbber 0.75s linear infinite;
  57. border: 2px solid var(--color-absolutezero);
  58. border-right: 2px dotted transparent;
  59. border-radius: 50%;
  60. }
  61. .ajax-progress__message {
  62. display: inline-block;
  63. padding-left: var(--ajax-progress-margin-horizontal);
  64. font-size: var(--font-size-label);
  65. }
  66. [dir="rtl"] .ajax-progress__message {
  67. padding-right: var(--ajax-progress-margin-horizontal);
  68. padding-left: 0;
  69. }
  70. /**
  71. * Full screen throbber.
  72. */
  73. .ajax-progress--fullscreen {
  74. position: fixed;
  75. z-index: 1000;
  76. top: 50%;
  77. left: 50%;
  78. box-sizing: border-box;
  79. width: 3.5rem; /* 56px */
  80. height: 3.5rem;
  81. margin: -1.75rem;
  82. border: var(--input-border-size) solid var(--jui-dropdown-border-color);
  83. border-radius: 3.5rem;
  84. background: var(--color-white);
  85. box-shadow: 0 0.25rem 0.625rem var(--jui-dropdown-shadow-color);
  86. }
  87. .ajax-progress__throbber--fullscreen {
  88. position: absolute;
  89. top: 50%;
  90. left: 50%;
  91. width: 1.75rem; /* 28px */
  92. height: 1.75rem; /* 28px */
  93. margin: -0.875rem;
  94. content: "";
  95. border: 3px solid var(--color-absolutezero);
  96. border-right: 3px dotted transparent;
  97. }
  98. @media screen and (-ms-high-contrast: active) {
  99. /**
  100. * Throbber animation is shaky on Edge RTL on high contrast for border width
  101. * less than 4px.
  102. */
  103. @supports (-ms-ime-align:auto) {
  104. [dir="rtl"] .ajax-progress__throbber {
  105. border-width: 4px;
  106. }
  107. }
  108. }
  109. @keyframes claro-throbber {
  110. 0% {
  111. transform: rotateZ(0);
  112. }
  113. 100% {
  114. transform: rotateZ(360deg);
  115. }
  116. }