form.pcss.css

Same filename in this branch
  1. main core/misc/dialog/off-canvas/css/form.pcss.css
  2. main core/themes/olivero/css/components/form.pcss.css
  3. main core/themes/claro/css/components/form.pcss.css
  4. main core/themes/admin/css/components/form.pcss.css
Same filename and directory in other branches
  1. 10 core/misc/dialog/off-canvas/css/form.pcss.css
  2. 10 core/themes/olivero/css/components/form.pcss.css
  3. 10 core/themes/claro/css/components/form.pcss.css
  4. 11.x core/misc/dialog/off-canvas/css/form.pcss.css
  5. 11.x core/themes/olivero/css/components/form.pcss.css
  6. 11.x core/themes/claro/css/components/form.pcss.css
  7. 9 core/themes/olivero/css/components/form.pcss.css
  8. 9 core/themes/claro/css/components/form.pcss.css
  9. 8.9.x core/themes/claro/css/components/form.pcss.css
  10. 11.x core/themes/admin/css/components/form.pcss.css
  11. 11.x core/themes/default_admin/css/components/form.pcss.css

Main form and form item styles.

File

core/themes/default_admin/css/components/form.pcss.css

View source
  1. /**
  2. * @file
  3. * Main form and form item styles.
  4. */
  5. ::placeholder {
  6. opacity: 1;
  7. color: var(--input-fg-color--placeholder);
  8. }
  9. /**
  10. * General form item.
  11. */
  12. .form-item {
  13. margin-block: var(--space-l);
  14. .field--type-text-with-summary &,
  15. .field--widget-text-textarea
  16. /* Special case, form starts with a form item, remove margin-block-start. */
  17. #block-gin-content > form > &:first-of-type {
  18. margin-block-start: 0;
  19. }
  20. .image-style-new
  21. /**
  22. * When a table row or a container-inline has a single form item, prevent it
  23. * from adding unnecessary extra spacing.
  24. * If it has multiple form items, allow spacing between them.
  25. */
  26. .container-inline
  27. /* Maxlength styles. */
  28. .counter {
  29. margin-block-start: var(--gin-spacing-xs);
  30. color: var(--gin-color-text);
  31. font-size: var(--gin-font-size-xs);
  32. line-height: 1.3;
  33. }
  34. tr
  35. }
  36. .form-item__warning {
  37. display: inline-block;
  38. margin-block-start: var(--gin-spacing-xs);
  39. }
  40. /**
  41. * Form element label.
  42. */
  43. .form-item__label {
  44. display: block;
  45. margin-block: 0 var(--gin-spacing-xs);
  46. font-size: var(--font-size-s); /* ~14px */
  47. font-weight: var(--gin-font-weight-semibold);
  48. line-height: var(--line-height-form-label);
  49. &[for] {
  50. cursor: pointer;
  51. }
  52. &.option {
  53. display: inline;
  54. font-weight: normal;
  55. }
  56. &.has-error {
  57. color: var(--input--error-color);
  58. }
  59. &.option.has-error {
  60. color: inherit;
  61. }
  62. &.is-disabled {
  63. cursor: default; /* @todo ...or auto? */
  64. color: var(--input--disabled-fg-color);
  65. }
  66. .form-wrapper &,
  67. .form-composite
  68. }
  69. /* Multiple selectors used to ensure styling even if modules override markup. */
  70. .form-item__label--multiple-value-form,
  71. .field-multiple-table .field-label h4.label {
  72. display: inline-block;
  73. margin-block: 0;
  74. align-self: center;
  75. font-size: inherit;
  76. font-weight: inherit;
  77. line-height: inherit;
  78. }
  79. .form-item__label.form-required::after,
  80. .fieldset__label.form-required::after,
  81. .form-required > .fieldset__label::after,
  82. .horizontal-tab-button .form-required::after,
  83. .vertical-tabs__menu-link .form-required::after {
  84. display: inline-block;
  85. content: "*";
  86. vertical-align: text-top;
  87. color: var(--gin-color-danger);
  88. background: none;
  89. font-size: 0.875rem;
  90. line-height: 1;
  91. margin-inline: 0.15em;
  92. }
  93. /**
  94. * Form item description.
  95. */
  96. .form-item__description {
  97. max-width: var(--gin-max-line-length);
  98. color: var(--gin-color-text-light);
  99. font-size: var(--font-size-xs); /* ~13px */
  100. line-height: calc(17rem / 16); /* 17px */
  101. margin-block: calc(6rem / 16); /* 6px */
  102. &.is-disabled {
  103. color: var(--input--disabled-fg-color);
  104. }
  105. }
  106. /**
  107. * Error message (Inline form errors).
  108. */
  109. .form-item__error-message {
  110. margin-block: calc(6rem / 16); /* 6px */
  111. color: var(--gin-color-danger);
  112. font-size: var(--font-size-xs); /* ~13px */
  113. font-weight: normal;
  114. line-height: calc(17rem / 16); /* 17px */
  115. }
  116. .form-item__prefix.is-disabled,
  117. .form-item__suffix.is-disabled {
  118. color: var(--input--disabled-fg-color);
  119. }
  120. /* Add some spacing so that the focus ring and suffix don't overlap. */
  121. @media screen and (min-width: 601px) {
  122. .form-item__suffix {
  123. margin-inline-start: var(--space-xs);
  124. white-space: nowrap;
  125. }
  126. }
  127. /**
  128. * Form actions.
  129. */
  130. .form-actions,
  131. .field-actions {
  132. display: flex;
  133. flex-wrap: wrap;
  134. align-items: flex-start;
  135. margin-block: var(--space-xs);
  136. & .form-wrapper {
  137. display: flex;
  138. flex-wrap: wrap;
  139. gap: var(--space-xs) 0;
  140. }
  141. & .button,
  142. & .action-link {
  143. margin-block: var(--space-xs);
  144. }
  145. & .ajax-progress--throbber {
  146. align-self: center;
  147. }
  148. }
  149. .form-actions {
  150. margin-block-end: 0;
  151. > .form-wrapper {
  152. margin-inline: 0 var(--space-s);
  153. }
  154. .entity-form-display-form >
  155. }
  156. /**
  157. * Password module.
  158. *
  159. * @legacy
  160. * @todo These should be in a standalone component file.
  161. */
  162. .confirm-parent,
  163. .password-parent {
  164. overflow: visible;
  165. width: auto;
  166. }
  167. .form-item-options-group-info-identifier,
  168. .form-item-pass .description {
  169. clear: both;
  170. }
  171. /**
  172. * Custom label placement for editor filter format select.
  173. */
  174. .form-item--editor-format {
  175. display: flex;
  176. flex-wrap: wrap;
  177. align-items: center;
  178. width: auto;
  179. max-width: 100%;
  180. .form-item__label {
  181. inset-block-start: 3px;
  182. padding-block-end: 0;
  183. &.has-error {
  184. color: var(--gin-color-danger);
  185. }
  186. }
  187. .form-item__label,
  188. .form-item__prefix,
  189. .form-item__suffix,
  190. .form-element--editor-format {
  191. min-width: 1px;
  192. }
  193. .form-item__label,
  194. .form-item__prefix,
  195. .form-item__suffix,
  196. .form-element--editor-format {
  197. min-width: 1px;
  198. }
  199. .form-item__label,
  200. .form-item__prefix,
  201. .form-item__suffix {
  202. margin-inline-end: var(--space-xs);
  203. }
  204. .form-item__description,
  205. .form-item__error-message {
  206. flex: 0 1 100%;
  207. min-width: 1px;
  208. }
  209. }
  210. /**
  211. * Improve form element usability on narrow devices.
  212. *
  213. * @legacy
  214. */
  215. @media screen and (max-width: 600px) {
  216. .password-strength {
  217. width: 100%;
  218. }
  219. div.form-item div.password-suggestions {
  220. float: none;
  221. }
  222. }
  223. /**
  224. * Prevent regression due to explicit line-heights applied to these elements in
  225. * normalize.css 7.0.0.
  226. */
  227. button {
  228. line-height: 1.125rem;
  229. }
  230. input,
  231. optgroup {
  232. line-height: 1.5rem;
  233. }
  234. /**
  235. * Prevent regression due to -webkit-appearance being set to button in
  236. * normalize.css 4.1.0.
  237. */
  238. ::-webkit-file-upload-button {
  239. -webkit-appearance: push-button;
  240. }
  241. .required-mark {
  242. &::after {
  243. background: var(--gin-color-danger);
  244. mask-image: var(--admin-icon-asterisk);
  245. mask-position: center center;
  246. mask-size: 100% 100%;
  247. }
  248. }
  249. .length-indicator {
  250. margin-block-end: var(--gin-spacing-l);
  251. }

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.