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.

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