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.

825 lines
19 KiB

  1. /**
  2. * Items
  3. * --------------------------------------------------
  4. */
  5. .item {
  6. @include item-style($item-default-bg, $item-default-border, $item-default-text);
  7. position: relative;
  8. z-index: $z-index-item; // Make sure the borders and stuff don't get hidden by children
  9. display: block;
  10. margin: $item-border-width * -1;
  11. padding: $item-padding;
  12. border-width: $item-border-width;
  13. border-style: solid;
  14. font-size: $item-font-size;
  15. h2 {
  16. margin: 0 0 2px 0;
  17. font-size: 16px;
  18. font-weight: normal;
  19. }
  20. h3 {
  21. margin: 0 0 4px 0;
  22. font-size: 14px;
  23. }
  24. h4 {
  25. margin: 0 0 4px 0;
  26. font-size: 12px;
  27. }
  28. h5, h6 {
  29. margin: 0 0 3px 0;
  30. font-size: 10px;
  31. }
  32. p {
  33. color: #666;
  34. font-size: 14px;
  35. margin-bottom: 2px;
  36. }
  37. h1:last-child,
  38. h2:last-child,
  39. h3:last-child,
  40. h4:last-child,
  41. h5:last-child,
  42. h6:last-child,
  43. p:last-child {
  44. margin-bottom: 0;
  45. }
  46. // Align badges within items
  47. .badge {
  48. @include display-flex();
  49. position: absolute;
  50. top: $item-padding;
  51. right: ($item-padding * 2);
  52. }
  53. &.item-button-right .badge {
  54. right: ($item-padding * 2) + 35;
  55. }
  56. &.item-divider .badge {
  57. top: ceil($item-padding / 2);
  58. }
  59. .badge + .badge {
  60. margin-right: 5px;
  61. }
  62. // Different themes for items
  63. &.item-light {
  64. @include item-style($item-light-bg, $item-light-border, $item-light-text);
  65. }
  66. &.item-stable {
  67. @include item-style($item-stable-bg, $item-stable-border, $item-stable-text);
  68. }
  69. &.item-positive {
  70. @include item-style($item-positive-bg, $item-positive-border, $item-positive-text);
  71. }
  72. &.item-calm {
  73. @include item-style($item-calm-bg, $item-calm-border, $item-calm-text);
  74. }
  75. &.item-assertive {
  76. @include item-style($item-assertive-bg, $item-assertive-border, $item-assertive-text);
  77. }
  78. &.item-balanced {
  79. @include item-style($item-balanced-bg, $item-balanced-border, $item-balanced-text);
  80. }
  81. &.item-energized {
  82. @include item-style($item-energized-bg, $item-energized-border, $item-energized-text);
  83. }
  84. &.item-royal {
  85. @include item-style($item-royal-bg, $item-royal-border, $item-royal-text);
  86. }
  87. &.item-dark {
  88. @include item-style($item-dark-bg, $item-dark-border, $item-dark-text);
  89. }
  90. &[ng-click]:hover {
  91. cursor: pointer;
  92. }
  93. }
  94. .list-borderless .item,
  95. .item-borderless {
  96. border-width: 0;
  97. }
  98. // Link and Button Active States
  99. .item.active,
  100. .item.activated,
  101. .item-complex.active .item-content,
  102. .item-complex.activated .item-content,
  103. .item .item-content.active,
  104. .item .item-content.activated {
  105. @include item-active-style($item-default-active-bg, $item-default-active-border);
  106. // Different active themes for <a> and <button> items
  107. &.item-light {
  108. @include item-active-style($item-light-active-bg, $item-light-active-border);
  109. }
  110. &.item-stable {
  111. @include item-active-style($item-stable-active-bg, $item-stable-active-border);
  112. }
  113. &.item-positive {
  114. @include item-active-style($item-positive-active-bg, $item-positive-active-border);
  115. }
  116. &.item-calm {
  117. @include item-active-style($item-calm-active-bg, $item-calm-active-border);
  118. }
  119. &.item-assertive {
  120. @include item-active-style($item-assertive-active-bg, $item-assertive-active-border);
  121. }
  122. &.item-balanced {
  123. @include item-active-style($item-balanced-active-bg, $item-balanced-active-border);
  124. }
  125. &.item-energized {
  126. @include item-active-style($item-energized-active-bg, $item-energized-active-border);
  127. }
  128. &.item-royal {
  129. @include item-active-style($item-royal-active-bg, $item-royal-active-border);
  130. }
  131. &.item-dark {
  132. @include item-active-style($item-dark-active-bg, $item-dark-active-border);
  133. }
  134. }
  135. // Handle text overflow
  136. .item,
  137. .item h1,
  138. .item h2,
  139. .item h3,
  140. .item h4,
  141. .item h5,
  142. .item h6,
  143. .item p,
  144. .item-content,
  145. .item-content h1,
  146. .item-content h2,
  147. .item-content h3,
  148. .item-content h4,
  149. .item-content h5,
  150. .item-content h6,
  151. .item-content p {
  152. overflow: hidden;
  153. text-overflow: ellipsis;
  154. white-space: nowrap;
  155. }
  156. // Linked list items
  157. a.item {
  158. color: inherit;
  159. text-decoration: none;
  160. &:hover,
  161. &:focus {
  162. text-decoration: none;
  163. }
  164. }
  165. /**
  166. * Complex Items
  167. * --------------------------------------------------
  168. * Adding .item-complex allows the .item to be slidable and
  169. * have options underneath the button, but also requires an
  170. * additional .item-content element inside .item.
  171. * Basically .item-complex removes any default settings which
  172. * .item added, so that .item-content looks them as just .item.
  173. */
  174. .item-complex,
  175. a.item.item-complex,
  176. button.item.item-complex {
  177. padding: 0;
  178. }
  179. .item-complex .item-content,
  180. .item-radio .item-content {
  181. position: relative;
  182. z-index: $z-index-item;
  183. padding: $item-padding (ceil( ($item-padding * 3) + ($item-padding / 3) ) - 5) $item-padding $item-padding;
  184. border: none;
  185. background-color: $item-default-bg;
  186. }
  187. a.item-content {
  188. display: block;
  189. color: inherit;
  190. text-decoration: none;
  191. }
  192. .item-text-wrap .item,
  193. .item-text-wrap .item-content,
  194. .item-text-wrap,
  195. .item-text-wrap h1,
  196. .item-text-wrap h2,
  197. .item-text-wrap h3,
  198. .item-text-wrap h4,
  199. .item-text-wrap h5,
  200. .item-text-wrap h6,
  201. .item-text-wrap p,
  202. .item-complex.item-text-wrap .item-content,
  203. .item-body h1,
  204. .item-body h2,
  205. .item-body h3,
  206. .item-body h4,
  207. .item-body h5,
  208. .item-body h6,
  209. .item-body p {
  210. overflow: visible;
  211. white-space: normal;
  212. }
  213. .item-complex.item-text-wrap,
  214. .item-complex.item-text-wrap h1,
  215. .item-complex.item-text-wrap h2,
  216. .item-complex.item-text-wrap h3,
  217. .item-complex.item-text-wrap h4,
  218. .item-complex.item-text-wrap h5,
  219. .item-complex.item-text-wrap h6,
  220. .item-complex.item-text-wrap p {
  221. overflow: visible;
  222. white-space: normal;
  223. }
  224. // Link and Button Active States
  225. .item-complex{
  226. // Stylized items
  227. &.item-light > .item-content{
  228. @include item-style($item-light-bg, $item-light-border, $item-light-text);
  229. &.active, &:active {
  230. @include item-active-style($item-light-active-bg, $item-light-active-border);
  231. }
  232. }
  233. &.item-stable > .item-content{
  234. @include item-style($item-stable-bg, $item-stable-border, $item-stable-text);
  235. &.active, &:active {
  236. @include item-active-style($item-stable-active-bg, $item-stable-active-border);
  237. }
  238. }
  239. &.item-positive > .item-content{
  240. @include item-style($item-positive-bg, $item-positive-border, $item-positive-text);
  241. &.active, &:active {
  242. @include item-active-style($item-positive-active-bg, $item-positive-active-border);
  243. }
  244. }
  245. &.item-calm > .item-content{
  246. @include item-style($item-calm-bg, $item-calm-border, $item-calm-text);
  247. &.active, &:active {
  248. @include item-active-style($item-calm-active-bg, $item-calm-active-border);
  249. }
  250. }
  251. &.item-assertive > .item-content{
  252. @include item-style($item-assertive-bg, $item-assertive-border, $item-assertive-text);
  253. &.active, &:active {
  254. @include item-active-style($item-assertive-active-bg, $item-assertive-active-border);
  255. }
  256. }
  257. &.item-balanced > .item-content{
  258. @include item-style($item-balanced-bg, $item-balanced-border, $item-balanced-text);
  259. &.active, &:active {
  260. @include item-active-style($item-balanced-active-bg, $item-balanced-active-border);
  261. }
  262. }
  263. &.item-energized > .item-content{
  264. @include item-style($item-energized-bg, $item-energized-border, $item-energized-text);
  265. &.active, &:active {
  266. @include item-active-style($item-energized-active-bg, $item-energized-active-border);
  267. }
  268. }
  269. &.item-royal > .item-content{
  270. @include item-style($item-royal-bg, $item-royal-border, $item-royal-text);
  271. &.active, &:active {
  272. @include item-active-style($item-royal-active-bg, $item-royal-active-border);
  273. }
  274. }
  275. &.item-dark > .item-content{
  276. @include item-style($item-dark-bg, $item-dark-border, $item-dark-text);
  277. &.active, &:active {
  278. @include item-active-style($item-dark-active-bg, $item-dark-active-border);
  279. }
  280. }
  281. }
  282. /**
  283. * Item Icons
  284. * --------------------------------------------------
  285. */
  286. .item-icon-left .icon,
  287. .item-icon-right .icon {
  288. @include display-flex();
  289. @include align-items(center);
  290. position: absolute;
  291. top: 0;
  292. height: 100%;
  293. font-size: $item-icon-font-size;
  294. &:before {
  295. display: block;
  296. width: $item-icon-font-size;
  297. text-align: center;
  298. }
  299. }
  300. .item .fill-icon {
  301. min-width: $item-icon-fill-font-size + 2;
  302. min-height: $item-icon-fill-font-size + 2;
  303. font-size: $item-icon-fill-font-size;
  304. }
  305. .item-icon-left {
  306. padding-left: ceil( ($item-padding * 3) + ($item-padding / 3) );
  307. .icon {
  308. left: ceil( ($item-padding / 3) * 2);
  309. }
  310. }
  311. .item-complex.item-icon-left {
  312. padding-left: 0;
  313. .item-content {
  314. padding-left: ceil( ($item-padding * 3) + ($item-padding / 3) );
  315. }
  316. }
  317. .item-icon-right {
  318. padding-right: ceil( ($item-padding * 3) + ($item-padding / 3) );
  319. .icon {
  320. right: ceil( ($item-padding / 3) * 2);
  321. }
  322. }
  323. .item-complex.item-icon-right {
  324. padding-right: 0;
  325. .item-content {
  326. padding-right: ceil( ($item-padding * 3) + ($item-padding / 3) );
  327. }
  328. }
  329. .item-icon-left.item-icon-right .icon:first-child {
  330. right: auto;
  331. }
  332. .item-icon-left.item-icon-right .icon:last-child,
  333. .item-icon-left .item-delete .icon {
  334. left: auto;
  335. }
  336. .item-icon-left .icon-accessory,
  337. .item-icon-right .icon-accessory {
  338. color: $item-icon-accessory-color;
  339. font-size: $item-icon-accessory-font-size;
  340. }
  341. .item-icon-left .icon-accessory {
  342. left: floor($item-padding / 5);
  343. }
  344. .item-icon-right .icon-accessory {
  345. right: floor($item-padding / 5);
  346. }
  347. /**
  348. * Item Button
  349. * --------------------------------------------------
  350. * An item button is a child button inside an .item (not the entire .item)
  351. */
  352. .item-button-left {
  353. padding-left: ceil($item-padding * 4.5);
  354. }
  355. .item-button-left > .button,
  356. .item-button-left .item-content > .button {
  357. @include display-flex();
  358. @include align-items(center);
  359. position: absolute;
  360. top: ceil($item-padding / 2);
  361. left: ceil( ($item-padding / 3) * 2);
  362. min-width: $item-icon-font-size + ($button-border-width * 2);
  363. min-height: $item-icon-font-size + ($button-border-width * 2);
  364. font-size: $item-button-font-size;
  365. line-height: $item-button-line-height;
  366. .icon:before {
  367. position: relative;
  368. left: auto;
  369. width: auto;
  370. line-height: $item-icon-font-size - 1;
  371. }
  372. > .button {
  373. margin: 0px 2px;
  374. min-height: $item-icon-font-size + ($button-border-width * 2);
  375. font-size: $item-button-font-size;
  376. line-height: $item-button-line-height;
  377. }
  378. }
  379. .item-button-right,
  380. a.item.item-button-right,
  381. button.item.item-button-right {
  382. padding-right: $item-padding * 5;
  383. }
  384. .item-button-right > .button,
  385. .item-button-right .item-content > .button,
  386. .item-button-right > .buttons,
  387. .item-button-right .item-content > .buttons {
  388. @include display-flex();
  389. @include align-items(center);
  390. position: absolute;
  391. top: ceil($item-padding / 2);
  392. right: $item-padding;
  393. min-width: $item-icon-font-size + ($button-border-width * 2);
  394. min-height: $item-icon-font-size + ($button-border-width * 2);
  395. font-size: $item-button-font-size;
  396. line-height: $item-button-line-height;
  397. .icon:before {
  398. position: relative;
  399. left: auto;
  400. width: auto;
  401. line-height: $item-icon-font-size - 1;
  402. }
  403. > .button {
  404. margin: 0px 2px;
  405. min-width: $item-icon-font-size + ($button-border-width * 2);
  406. min-height: $item-icon-font-size + ($button-border-width * 2);
  407. font-size: $item-button-font-size;
  408. line-height: $item-button-line-height;
  409. }
  410. }
  411. .item-button-left.item-button-right{
  412. .button{
  413. &:first-child {
  414. right: auto;
  415. }
  416. &:last-child {
  417. left: auto;
  418. }
  419. }
  420. }
  421. // Item Avatar
  422. // -------------------------------
  423. .item-avatar,
  424. .item-avatar .item-content,
  425. .item-avatar-left,
  426. .item-avatar-left .item-content {
  427. padding-left: $item-avatar-width + ($item-padding * 2);
  428. min-height: $item-avatar-width + ($item-padding * 2);
  429. > img:first-child,
  430. .item-image {
  431. position: absolute;
  432. top: $item-padding;
  433. left: $item-padding;
  434. max-width: $item-avatar-width;
  435. max-height: $item-avatar-height;
  436. width: 100%;
  437. height: 100%;
  438. border-radius: $item-avatar-border-radius;
  439. }
  440. }
  441. .item-avatar-right,
  442. .item-avatar-right .item-content {
  443. padding-right: $item-avatar-width + ($item-padding * 2);
  444. min-height: $item-avatar-width + ($item-padding * 2);
  445. > img:first-child,
  446. .item-image {
  447. position: absolute;
  448. top: $item-padding;
  449. right: $item-padding;
  450. max-width: $item-avatar-width;
  451. max-height: $item-avatar-height;
  452. width: 100%;
  453. height: 100%;
  454. border-radius: $item-avatar-border-radius;
  455. }
  456. }
  457. // Item Thumbnails
  458. // -------------------------------
  459. .item-thumbnail-left,
  460. .item-thumbnail-left .item-content {
  461. padding-top: $item-padding / 2;
  462. padding-left: $item-thumbnail-width + $item-thumbnail-margin + $item-padding;
  463. min-height: $item-thumbnail-height + ($item-thumbnail-margin * 2);
  464. > img:first-child,
  465. .item-image {
  466. position: absolute;
  467. top: $item-thumbnail-margin;
  468. left: $item-thumbnail-margin;
  469. max-width: $item-thumbnail-width;
  470. max-height: $item-thumbnail-height;
  471. width: 100%;
  472. height: 100%;
  473. }
  474. }
  475. .item-avatar.item-complex,
  476. .item-avatar-left.item-complex,
  477. .item-thumbnail-left.item-complex {
  478. padding-top: 0;
  479. padding-left: 0;
  480. }
  481. .item-thumbnail-right,
  482. .item-thumbnail-right .item-content {
  483. padding-top: $item-padding / 2;
  484. padding-right: $item-thumbnail-width + $item-thumbnail-margin + $item-padding;
  485. min-height: $item-thumbnail-height + ($item-thumbnail-margin * 2);
  486. > img:first-child,
  487. .item-image {
  488. position: absolute;
  489. top: $item-thumbnail-margin;
  490. right: $item-thumbnail-margin;
  491. max-width: $item-thumbnail-width;
  492. max-height: $item-thumbnail-height;
  493. width: 100%;
  494. height: 100%;
  495. }
  496. }
  497. .item-avatar-right.item-complex,
  498. .item-thumbnail-right.item-complex {
  499. padding-top: 0;
  500. padding-right: 0;
  501. }
  502. // Item Image
  503. // -------------------------------
  504. .item-image {
  505. padding: 0;
  506. text-align: center;
  507. img:first-child, .list-img {
  508. width: 100%;
  509. vertical-align: middle;
  510. }
  511. }
  512. // Item Body
  513. // -------------------------------
  514. .item-body {
  515. overflow: auto;
  516. padding: $item-padding;
  517. text-overflow: inherit;
  518. white-space: normal;
  519. h1, h2, h3, h4, h5, h6, p {
  520. margin-top: $item-padding;
  521. margin-bottom: $item-padding;
  522. }
  523. }
  524. // Item Divider
  525. // -------------------------------
  526. .item-divider {
  527. padding-top: ceil($item-padding / 2);
  528. padding-bottom: ceil($item-padding / 2);
  529. min-height: 30px;
  530. background-color: $item-divider-bg;
  531. color: $item-divider-color;
  532. font-weight: 500;
  533. }
  534. .platform-ios .item-divider-platform,
  535. .item-divider-ios {
  536. padding-top: 26px;
  537. text-transform: uppercase;
  538. font-weight: 300;
  539. font-size: 13px;
  540. background-color: #efeff4;
  541. color: #555;
  542. }
  543. .platform-android .item-divider-platform,
  544. .item-divider-android {
  545. font-weight: 300;
  546. font-size: 13px;
  547. }
  548. // Item Note
  549. // -------------------------------
  550. .item-note {
  551. float: right;
  552. color: #aaa;
  553. font-size: 14px;
  554. }
  555. // Item Editing
  556. // -------------------------------
  557. .item-left-editable .item-content,
  558. .item-right-editable .item-content {
  559. // setup standard transition settings
  560. @include transition-duration( $item-edit-transition-duration );
  561. @include transition-timing-function( $item-edit-transition-function );
  562. -webkit-transition-property: -webkit-transform;
  563. -moz-transition-property: -moz-transform;
  564. transition-property: transform;
  565. }
  566. .list-left-editing .item-left-editable .item-content,
  567. .item-left-editing.item-left-editable .item-content {
  568. // actively editing the left side of the item
  569. @include translate3d($item-left-edit-open-width, 0, 0);
  570. }
  571. .item-remove-animate {
  572. &.ng-leave {
  573. @include transition-duration( $item-remove-transition-duration );
  574. }
  575. &.ng-leave .item-content,
  576. &.ng-leave:last-of-type {
  577. @include transition-duration( $item-remove-transition-duration );
  578. @include transition-timing-function( $item-remove-transition-function );
  579. @include transition-property( all );
  580. }
  581. &.ng-leave.ng-leave-active .item-content {
  582. opacity:0;
  583. -webkit-transform: translate3d(-100%, 0, 0) !important;
  584. transform: translate3d(-100%, 0, 0) !important;
  585. }
  586. &.ng-leave.ng-leave-active:last-of-type {
  587. opacity: 0;
  588. }
  589. &.ng-leave.ng-leave-active ~ ion-item:not(.ng-leave) {
  590. -webkit-transform: translate3d(0, unquote('-webkit-calc(-100% + 1px)'), 0);
  591. transform: translate3d(0, calc(-100% + 1px), 0);
  592. @include transition-duration( $item-remove-transition-duration );
  593. @include transition-timing-function( $item-remove-descendents-transition-function );
  594. @include transition-property( all );
  595. }
  596. }
  597. // Item Left Edit Button
  598. // -------------------------------
  599. .item-left-edit {
  600. @include transition(all $item-edit-transition-function $item-edit-transition-duration / 2);
  601. position: absolute;
  602. top: 0;
  603. left: 0;
  604. z-index: $z-index-item-edit;
  605. width: $item-left-edit-open-width;
  606. height: 100%;
  607. line-height: 100%;
  608. .button {
  609. height: 100%;
  610. &.icon {
  611. @include display-flex();
  612. @include align-items(center);
  613. position: absolute;
  614. top: 0;
  615. height: 100%;
  616. }
  617. }
  618. display: none;
  619. opacity: 0;
  620. @include translate3d( ($item-left-edit-left - $item-left-edit-open-width) / 2, 0, 0);
  621. &.visible {
  622. display: block;
  623. &.active {
  624. opacity: 1;
  625. @include translate3d($item-left-edit-left, 0, 0);
  626. }
  627. }
  628. }
  629. .list-left-editing .item-left-edit {
  630. @include transition-delay($item-edit-transition-duration / 2);
  631. }
  632. // Item Delete (Left side edit button)
  633. // -------------------------------
  634. .item-delete .button.icon {
  635. color: $item-delete-icon-color;
  636. font-size: $item-delete-icon-size;
  637. &:hover {
  638. opacity: .7;
  639. }
  640. }
  641. // Item Right Edit Button
  642. // -------------------------------
  643. .item-right-edit {
  644. @include transition(all $item-edit-transition-function $item-edit-transition-duration);
  645. position: absolute;
  646. top: 0;
  647. right: 0;
  648. z-index: $z-index-item-reorder;
  649. width: $item-right-edit-open-width * 1.5;
  650. height: 100%;
  651. background: inherit;
  652. padding-left: 20px;
  653. .button {
  654. min-width: $item-right-edit-open-width;
  655. height: 100%;
  656. &.icon {
  657. @include display-flex();
  658. @include align-items(center);
  659. position: absolute;
  660. top: 0;
  661. height: 100%;
  662. font-size: $item-reorder-icon-size;
  663. }
  664. }
  665. display: block;
  666. opacity: 0;
  667. @include translate3d($item-right-edit-open-width * 1.5, 0, 0);
  668. &.visible {
  669. display: block;
  670. &.active {
  671. opacity: 1;
  672. @include translate3d(0, 0, 0);
  673. }
  674. }
  675. }
  676. // Item Reordering (Right side edit button)
  677. // -------------------------------
  678. .item-reorder .button.icon {
  679. color: $item-reorder-icon-color;
  680. font-size: $item-reorder-icon-size;
  681. }
  682. .item-reordering {
  683. // item is actively being reordered
  684. position: absolute;
  685. left: 0;
  686. top: 0;
  687. z-index: $z-index-item-reordering;
  688. width: 100%;
  689. box-shadow: 0px 0px 10px 0px #aaa;
  690. .item-reorder {
  691. z-index: $z-index-item-reordering;
  692. }
  693. }
  694. .item-placeholder {
  695. // placeholder for the item that's being reordered
  696. opacity: 0.7;
  697. }
  698. /**
  699. * The hidden right-side buttons that can be exposed under a list item
  700. * with dragging.
  701. */
  702. .item-options {
  703. position: absolute;
  704. top: 0;
  705. right: 0;
  706. z-index: $z-index-item-options;
  707. height: 100%;
  708. .button {
  709. height: 100%;
  710. border: none;
  711. border-radius: 0;
  712. @include display-inline-flex();
  713. @include align-items(center);
  714. &:before{
  715. margin: 0 auto;
  716. }
  717. }
  718. }