You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

746 lines
17 KiB

10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
  1. /*
  2. * # Semantic - Form
  3. * http://github.com/semantic-org/semantic-ui/
  4. *
  5. *
  6. * Copyright 2014 Contributor
  7. * Released under the MIT license
  8. * http://opensource.org/licenses/MIT
  9. *
  10. */
  11. /*******************************
  12. Theme
  13. *******************************/
  14. @type : 'collection';
  15. @element : 'form';
  16. @import '../../semantic.config';
  17. /*******************************
  18. Elements
  19. *******************************/
  20. /*--------------------
  21. Form
  22. ---------------------*/
  23. .ui.form {
  24. position: relative;
  25. max-width: 100%;
  26. }
  27. /*--------------------
  28. Content
  29. ---------------------*/
  30. .ui.form > p {
  31. margin: @paragraphMargin;
  32. }
  33. /*--------------------
  34. Field
  35. ---------------------*/
  36. .ui.form .field {
  37. clear: both;
  38. margin: @fieldMargin;
  39. }
  40. .ui.form :not(.fields) .field:last-child {
  41. margin-bottom: 0em;
  42. }
  43. /*--------------------
  44. Labels
  45. ---------------------*/
  46. .ui.form .field > label {
  47. display: block;
  48. margin: @labelMargin;
  49. color: @labelColor;
  50. font-size: @labelFontSize;
  51. font-weight: @labelFontWeight;
  52. text-transform: @labelTextTransform;
  53. }
  54. .ui.form .grouped.fields > label,
  55. .ui.form .inline.fields > label {
  56. margin: @groupedLabelMargin;
  57. color: @groupedLabelColor;
  58. font-size: @groupedLabelFontSize;
  59. font-weight: @groupedLabelFontWeight;
  60. text-transform: @groupedLabelTextTransform;
  61. }
  62. /*--------------------
  63. Standard Inputs
  64. ---------------------*/
  65. .ui.form textarea,
  66. .ui.form input[type="text"],
  67. .ui.form input[type="email"],
  68. .ui.form input[type="date"],
  69. .ui.form input[type="password"],
  70. .ui.form input[type="number"],
  71. .ui.form input[type="url"],
  72. .ui.form input[type="tel"],
  73. .ui.form .ui.input {
  74. width: 100%;
  75. }
  76. .ui.form input[type="text"],
  77. .ui.form input[type="email"],
  78. .ui.form input[type="date"],
  79. .ui.form input[type="password"],
  80. .ui.form input[type="number"],
  81. .ui.form input[type="url"],
  82. .ui.form input[type="tel"] {
  83. margin: 0em;
  84. outline: none;
  85. -webkit-appearance: none;
  86. -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
  87. line-height: @inputLineHeight;
  88. padding: @inputPadding;
  89. font-size: @inputFontSize;
  90. background: @inputBackground;
  91. border: @inputBorder;
  92. color: @inputColor;
  93. border-radius: @inputBorderRadius;
  94. box-shadow: @inputBoxShadow;
  95. box-sizing: border-box;
  96. transition: @inputTransition;
  97. }
  98. .ui.textarea,
  99. .ui.form textarea {
  100. margin: 0em;
  101. -webkit-appearance: none;
  102. -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
  103. box-sizing: border-box;
  104. padding: @textAreaPadding;
  105. font-size: @textAreaFontSize;
  106. background: @textAreaBackground;
  107. border: @textAreaBorder;
  108. outline: none;
  109. color: @inputColor;
  110. border-radius: @inputBorderRadius;
  111. box-shadow: @inputBoxShadow;
  112. transition: @textAreaTransition;
  113. font-size: @textAreaFontSize;
  114. height: @textAreaHeight;
  115. min-height: @textAreaMinHeight;
  116. max-height: @textAreaMaxHeight;
  117. line-height: @textAreaLineHeight;
  118. resize: @textAreaResize;
  119. }
  120. .ui.form textarea,
  121. .ui.form input[type="checkbox"] {
  122. vertical-align: @checkboxVerticalAlign;
  123. }
  124. /*--------------------------
  125. Input w/ attached Button
  126. ---------------------------*/
  127. .ui.form input.attached {
  128. width: auto;
  129. }
  130. /*--------------------
  131. Dropdown
  132. ---------------------*/
  133. .ui.form .field > .selection.dropdown {
  134. width: 100%;
  135. }
  136. .ui.form .field > .selection.dropdown > .dropdown.icon {
  137. float: right;
  138. }
  139. .ui.form .inline.field > .selection.dropdown {
  140. width: auto;
  141. }
  142. .ui.form .inline.field > .selection.dropdown > .dropdown.icon {
  143. float: none;
  144. }
  145. /*--------------------
  146. Dividers
  147. ---------------------*/
  148. .ui.form .divider {
  149. clear: both;
  150. margin: @dividerMargin;
  151. }
  152. /*--------------------
  153. Types of Messages
  154. ---------------------*/
  155. .ui.form .info.message,
  156. .ui.form .success.message,
  157. .ui.form .warning.message,
  158. .ui.form .error.message {
  159. display: none;
  160. }
  161. /* Assumptions */
  162. .ui.form .message:first-child {
  163. margin-top: 0px;
  164. }
  165. /*--------------------
  166. Validation Prompt
  167. ---------------------*/
  168. .ui.form .field .prompt.label {
  169. white-space: nowrap;
  170. }
  171. .ui.form .inline.field .prompt {
  172. margin: @validationMargin;
  173. }
  174. .ui.form .inline.field .prompt:before {
  175. margin-top: @validationArrowOffset;
  176. bottom: auto;
  177. right: auto;
  178. top: 50%;
  179. left: 0em;
  180. }
  181. /*******************************
  182. States
  183. *******************************/
  184. /*--------------------
  185. Placeholder
  186. ---------------------*/
  187. /* browsers require these rules separate */
  188. .ui.form ::-webkit-input-placeholder {
  189. color: @inputPlaceholderColor;
  190. }
  191. .ui.form ::-moz-placeholder {
  192. color: @inputPlaceholderColor;
  193. }
  194. .ui.form :focus::-webkit-input-placeholder {
  195. color: @inputPlaceholderFocusColor;
  196. }
  197. .ui.form :focus::-moz-placeholder {
  198. color: @inputPlaceholderFocusColor;
  199. }
  200. /* Error Placeholder */
  201. .ui.form .error ::-webkit-input-placeholder {
  202. color: @inputErrorPlaceholderColor;
  203. }
  204. .ui.form .error ::-moz-placeholder {
  205. color: @inputErrorPlaceholderColor;
  206. }
  207. .ui.form .error :focus::-webkit-input-placeholder {
  208. color: @inputErrorPlaceholderFocusColor;
  209. }
  210. .ui.form .error :focus::-moz-placeholder {
  211. color: @inputErrorPlaceholderFocusColor;
  212. }
  213. /*--------------------
  214. Focus
  215. ---------------------*/
  216. .ui.form input[type="text"]:focus,
  217. .ui.form input[type="email"]:focus,
  218. .ui.form input[type="date"]:focus,
  219. .ui.form input[type="password"]:focus,
  220. .ui.form input[type="number"]:focus,
  221. .ui.form input[type="url"]:focus,
  222. .ui.form input[type="tel"]:focus {
  223. color: @inputFocusColor;
  224. border-color: @inputFocusBorderColor;
  225. border-radius: @inputFocusBorderRadius;
  226. background: @inputFocusBackground;
  227. box-shadow: @inputFocusBoxShadow;
  228. }
  229. .ui.form textarea:focus {
  230. color: @textAreaFocusColor;
  231. border-color: @textAreaFocusBorderColor;
  232. border-radius: @textAreaFocusBorderRadius;
  233. background: @textAreaFocusBackground;
  234. box-shadow: @textAreaFocusBoxShadow;
  235. -webkit-appearance: none;
  236. }
  237. /*--------------------
  238. Success
  239. ---------------------*/
  240. /* On Form */
  241. .ui.form.success .success.message {
  242. display: block;
  243. }
  244. /*--------------------
  245. Error
  246. ---------------------*/
  247. /* On Form */
  248. .ui.form.warning .warning.message {
  249. display: block;
  250. }
  251. /*--------------------
  252. Warning
  253. ---------------------*/
  254. /* On Form */
  255. .ui.form.error .error.message {
  256. display: block;
  257. }
  258. /* On Field(s) */
  259. .ui.form .fields.error .field label,
  260. .ui.form .field.error label,
  261. .ui.form .fields.error .field .input,
  262. .ui.form .field.error .input {
  263. color: @formErrorColor;
  264. }
  265. .ui.form .fields.error .field .corner.label,
  266. .ui.form .field.error .corner.label {
  267. border-color: @formErrorColor;
  268. color: @white;
  269. }
  270. .ui.form .fields.error .field textarea,
  271. .ui.form .fields.error .field input[type="text"],
  272. .ui.form .fields.error .field input[type="email"],
  273. .ui.form .fields.error .field input[type="date"],
  274. .ui.form .fields.error .field input[type="password"],
  275. .ui.form .fields.error .field input[type="number"],
  276. .ui.form .fields.error .field input[type="url"],
  277. .ui.form .fields.error .field input[type="tel"],
  278. .ui.form .field.error textarea,
  279. .ui.form .field.error input[type="text"],
  280. .ui.form .field.error input[type="email"],
  281. .ui.form .field.error input[type="date"],
  282. .ui.form .field.error input[type="password"],
  283. .ui.form .field.error input[type="number"],
  284. .ui.form .field.error input[type="url"],
  285. .ui.form .field.error input[type="tel"] {
  286. background: @formErrorBackground;
  287. border-color: @formErrorBorder;
  288. color: @formErrorColor;
  289. border-radius: @inputErrorBorderRadius;
  290. box-shadow: @inputErrorBoxShadow;
  291. }
  292. .ui.form .field.error textarea:focus,
  293. .ui.form .field.error input[type="text"]:focus,
  294. .ui.form .field.error input[type="email"]:focus,
  295. .ui.form .field.error input[type="date"]:focus,
  296. .ui.form .field.error input[type="password"]:focus,
  297. .ui.form .field.error input[type="number"]:focus,
  298. .ui.form .field.error input[type="url"]:focus,
  299. .ui.form .field.error input[type="tel"]:focus{
  300. background: @inputErrorFocusBackground;
  301. border-color: @inputErrorFocusBorder;
  302. color: @inputErrorFocusColor;
  303. -webkit-appearance: none;
  304. box-shadow: @inputErrorFocusBoxShadow;
  305. }
  306. /*------------------
  307. Dropdown Error
  308. --------------------*/
  309. .ui.form .fields.error .field .ui.dropdown,
  310. .ui.form .fields.error .field .ui.dropdown .item,
  311. .ui.form .field.error .ui.dropdown,
  312. .ui.form .field.error .ui.dropdown .text,
  313. .ui.form .field.error .ui.dropdown .item {
  314. background: @formErrorBackground;
  315. color: @formErrorColor;
  316. }
  317. .ui.form .fields.error .field .ui.dropdown,
  318. .ui.form .field.error .ui.dropdown {
  319. box-shadow: 0px 0px 0px 1px @formErrorBorder !important;
  320. }
  321. .ui.form .fields.error .field .ui.dropdown:hover,
  322. .ui.form .field.error .ui.dropdown:hover {
  323. box-shadow: 0px 0px 0px 1px @formErrorBorder !important;
  324. }
  325. .ui.form .fields.error .field .ui.dropdown:hover .menu,
  326. .ui.form .field.error .ui.dropdown:hover .menu {
  327. box-shadow: 0px 1px 0px 1px @formErrorBorder;
  328. }
  329. /* Hover */
  330. .ui.form .fields.error .field .ui.dropdown .menu .item:hover,
  331. .ui.form .field.error .ui.dropdown .menu .item:hover {
  332. background-color: @dropdownErrorHoverBackground;
  333. }
  334. /* Active */
  335. .ui.form .fields.error .field .ui.dropdown .menu .active.item,
  336. .ui.form .field.error .ui.dropdown .menu .active.item {
  337. background-color: @dropdownErrorActiveBackground !important;
  338. }
  339. /*--------------------
  340. Checkbox Error
  341. ---------------------*/
  342. .ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) label,
  343. .ui.form .field.error .checkbox:not(.toggle):not(.slider) label,
  344. .ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) .box,
  345. .ui.form .field.error .checkbox:not(.toggle):not(.slider) .box {
  346. color: @formErrorColor;
  347. }
  348. .ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) label:before,
  349. .ui.form .field.error .checkbox:not(.toggle):not(.slider) label:before,
  350. .ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) .box:before,
  351. .ui.form .field.error .checkbox:not(.toggle):not(.slider) .box:before {
  352. background: @formErrorBackground;
  353. border-color: @formErrorBorder;
  354. }
  355. .ui.form .fields.error .field .checkbox label:after,
  356. .ui.form .field.error .checkbox label:after,
  357. .ui.form .fields.error .field .checkbox .box:after,
  358. .ui.form .field.error .checkbox .box:after {
  359. color: @formErrorColor;
  360. }
  361. /*--------------------
  362. Disabled
  363. ---------------------*/
  364. .ui.form .field :disabled,
  365. .ui.form .field.disabled {
  366. opacity: 0.5;
  367. }
  368. .ui.form .field.disabled label {
  369. opacity: 0.5;
  370. }
  371. .ui.form .field.disabled :disabled {
  372. opacity: 1;
  373. }
  374. /*--------------------
  375. Loading State
  376. ---------------------*/
  377. /* On Form */
  378. .ui.form.loading {
  379. position: relative;
  380. }
  381. .ui.form.loading:after {
  382. position: absolute;
  383. top: 0%;
  384. left: 0%;
  385. content: '';
  386. width: 100%;
  387. height: 100%;
  388. background: @formLoaderDimmerColor url(@formLoaderPath) no-repeat @formLoaderPosition;
  389. visibility: visible;
  390. }
  391. /*******************************
  392. Element Types
  393. *******************************/
  394. /*--------------------
  395. Required Field
  396. ---------------------*/
  397. .ui.form .required.fields > .field > label:after,
  398. .ui.form .required.fields > .field > .checkbox:after,
  399. .ui.form .required.field > label:after,
  400. .ui.form .required.field > .checkbox:after {
  401. margin: -0.2em 0em 0em 0.2em;
  402. vertical-align: top;
  403. content: '*';
  404. color: @requiredColor;
  405. }
  406. /*******************************
  407. Variations
  408. *******************************/
  409. /*--------------------
  410. Inverted Colors
  411. ---------------------*/
  412. .ui.inverted.form label,
  413. .ui.form .inverted.segment label,
  414. .ui.form .inverted.segment .ui.checkbox label,
  415. .ui.form .inverted.segment .ui.checkbox .box,
  416. .ui.inverted.form .ui.checkbox label,
  417. .ui.inverted.form .ui.checkbox .box {
  418. color: @invertedLabelColor;
  419. }
  420. .ui.inverted.form.loading:after {
  421. background: @formInvertedLoaderDimmerColor url(@formInvertedLoaderPath) no-repeat @formLoaderPosition;
  422. }
  423. /*--------------------
  424. Field Groups
  425. ---------------------*/
  426. /* Grouped Vertically */
  427. .ui.form .grouped.fields {
  428. margin: @groupedMargin;
  429. }
  430. .ui.form .grouped.fields:last-child {
  431. margin-bottom: 0em;
  432. }
  433. .ui.form .grouped.fields .field {
  434. display: block;
  435. float: none;
  436. margin: @groupedFieldMargin;
  437. padding: 0em;
  438. }
  439. /*--------------------
  440. Fields
  441. ---------------------*/
  442. /* Split fields */
  443. .ui.form .fields {
  444. clear: both;
  445. }
  446. .ui.form .fields:after {
  447. content: ' ';
  448. display: block;
  449. clear: both;
  450. visibility: hidden;
  451. line-height: 0;
  452. height: 0;
  453. }
  454. .ui.form .fields > .field {
  455. clear: none;
  456. float: left;
  457. box-sizing: border-box;
  458. padding-left: (@gutterWidth / 2);
  459. padding-right: (@gutterWidth / 2);
  460. }
  461. .ui.form .fields > .field:first-child {
  462. border-left: none;
  463. box-shadow: none;
  464. }
  465. /* Other Combinations */
  466. .ui.form .two.fields > .fields,
  467. .ui.form .two.fields > .field {
  468. width: @twoColumn;
  469. }
  470. .ui.form .three.fields > .fields,
  471. .ui.form .three.fields > .field {
  472. width: @threeColumn;
  473. }
  474. .ui.form .four.fields > .fields,
  475. .ui.form .four.fields > .field {
  476. width: @fourColumn;
  477. }
  478. .ui.form .five.fields > .fields,
  479. .ui.form .five.fields > .field {
  480. width: @fiveColumn;
  481. }
  482. /* Swap to full width on mobile */
  483. @media only screen and (max-width : 767px) {
  484. .ui.form .two.fields > .fields,
  485. .ui.form .two.fields > .field,
  486. .ui.form .three.fields > .fields,
  487. .ui.form .three.fields > .field,
  488. .ui.form .four.fields > .fields,
  489. .ui.form .four.fields > .field,
  490. .ui.form .five.fields > .fields,
  491. .ui.form .five.fields > .field {
  492. width: @oneColumn;
  493. padding-left: 0%;
  494. padding-right: 0%;
  495. }
  496. }
  497. .ui.form .fields .field:first-child {
  498. padding-left: 0%;
  499. }
  500. .ui.form .fields .field:last-child {
  501. padding-right: 0%;
  502. }
  503. /* Sizing Combinations */
  504. .ui.form .fields .wide.field {
  505. width: @oneWide;
  506. padding-left: (@gutterWidth / 2);
  507. padding-right: (@gutterWidth / 2);
  508. }
  509. .ui.form .fields .wide.field:first-child {
  510. padding-left: 0%;
  511. }
  512. .ui.form .fields .wide.field:last-child {
  513. padding-right: 0%;
  514. }
  515. .ui.form .one.wide.field {
  516. width: @oneWide !important;
  517. }
  518. .ui.form .two.wide.field {
  519. width: @twoWide !important;
  520. }
  521. .ui.form .three.wide.field {
  522. width: @threeWide !important;
  523. }
  524. .ui.form .four.wide.field {
  525. width: @fourWide !important;
  526. }
  527. .ui.form .five.wide.field {
  528. width: @fiveWide !important;
  529. }
  530. .ui.form .six.wide.field {
  531. width: @sixWide !important;
  532. }
  533. .ui.form .seven.wide.field {
  534. width: @sevenWide !important;
  535. }
  536. .ui.form .eight.wide.field {
  537. width: @eightWide !important;
  538. }
  539. .ui.form .nine.wide.field {
  540. width: @nineWide !important;
  541. }
  542. .ui.form .ten.wide.field {
  543. width: @tenWide !important;
  544. }
  545. .ui.form .eleven.wide.field {
  546. width: @elevenWide !important;
  547. }
  548. .ui.form .twelve.wide.field {
  549. width: @twelveWide !important;
  550. }
  551. .ui.form .thirteen.wide.field {
  552. width: @thirteenWide !important;
  553. }
  554. .ui.form .fourteen.wide.field {
  555. width: @fourteenWide !important;
  556. }
  557. .ui.form .fifteen.wide.field {
  558. width: @fifteenWide !important;
  559. }
  560. .ui.form .sixteen.wide.field {
  561. width: @sixteenWide !important;
  562. }
  563. /* Swap to full width on mobile */
  564. @media only screen and (max-width : 767px) {
  565. .ui.form .two.fields > .fields,
  566. .ui.form .two.fields > .field,
  567. .ui.form .three.fields > .fields,
  568. .ui.form .three.fields > .field,
  569. .ui.form .four.fields > .fields,
  570. .ui.form .four.fields > .field,
  571. .ui.form .five.fields > .fields,
  572. .ui.form .five.fields > .field,
  573. .ui.form .fields > .two.wide.field,
  574. .ui.form .fields > .three.wide.field,
  575. .ui.form .fields > .four.wide.field,
  576. .ui.form .fields > .five.wide.field,
  577. .ui.form .fields > .six.wide.field,
  578. .ui.form .fields > .seven.wide.field,
  579. .ui.form .fields > .eight.wide.field,
  580. .ui.form .fields > .nine.wide.field,
  581. .ui.form .fields > .ten.wide.field,
  582. .ui.form .fields > .eleven.wide.field,
  583. .ui.form .fields > .twelve.wide.field,
  584. .ui.form .fields > .thirteen.wide.field,
  585. .ui.form .fields > .fourteen.wide.field,
  586. .ui.form .fields > .fifteen.wide.field,
  587. .ui.form .fields > .sixteen.wide.field {
  588. width: @oneColumn;
  589. padding-left: 0%;
  590. padding-right: 0%;
  591. }
  592. }
  593. /*--------------------
  594. Inline Fields
  595. ---------------------*/
  596. .ui.form .inline.fields {
  597. margin: @fieldMargin;
  598. }
  599. .ui.form .inline.fields .field {
  600. display: inline-block;
  601. margin: @inlineFieldsMargin;
  602. padding: 0em;
  603. }
  604. .ui.form .inline.fields .field > label,
  605. .ui.form .inline.fields .field > p,
  606. .ui.form .inline.fields .field > input,
  607. .ui.form .inline.field > label,
  608. .ui.form .inline.field > p,
  609. .ui.form .inline.field > input {
  610. display: inline-block;
  611. width: auto;
  612. margin-top: 0em;
  613. margin-bottom: 0em;
  614. vertical-align: @inlineLabelVerticalAlign;
  615. font-size: @inlineLabelFontSize;
  616. }
  617. .ui.form .inline.fields .field > input,
  618. .ui.form .inline.field > input {
  619. font-size: @inlineLabelFontSize;
  620. }
  621. /* Label */
  622. .ui.form .inline.fields .field > :first-child,
  623. .ui.form .inline.field > :first-child {
  624. margin: 0em @labelDistance 0em 0em;
  625. }
  626. .ui.form .inline.fields .field > :only-child,
  627. .ui.form .inline.field > :only-child {
  628. margin: 0em;
  629. }
  630. /*--------------------
  631. Sizes
  632. ---------------------*/
  633. /* Standard */
  634. .ui.small.form {
  635. font-size: @small;
  636. }
  637. /* Medium */
  638. .ui.form {
  639. font-size: @medium;
  640. }
  641. /* Large */
  642. .ui.large.form {
  643. font-size: @large;
  644. }
  645. /* Huge */
  646. .ui.huge.form {
  647. font-size: @huge;
  648. }
  649. .loadUIOverrides();