_navbar.scss 18 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012
  1. %extend_hamburger_color {
  2. .hamburger-inner,
  3. .hamburger-inner::before,
  4. .hamburger-inner::after {
  5. background-color: $white;
  6. }
  7. }
  8. @function set-navbar-text-color($color) {
  9. @if (lightness($color) > 50) {
  10. @return $white; // Lighter backgorund, return dark color
  11. }
  12. @else {
  13. @return $black; // Darker background, return light color
  14. }
  15. }
  16. @mixin fullNav {
  17. .navbar-header {
  18. width: 100% !important;
  19. padding: 0.5rem 1rem;
  20. position: relative;
  21. .menu-toggle {
  22. top: 2px;
  23. position: relative;
  24. }
  25. .open-navbar-container i {
  26. font-size: 1.8rem;
  27. }
  28. .navbar-brand {
  29. position: absolute;
  30. left: 50%;
  31. top: 0;
  32. transform: translate(-50%, 0);
  33. }
  34. }
  35. &.navbar-with-menu {
  36. .navbar-container {
  37. width: 100%;
  38. display: table;
  39. margin: 0;
  40. height: auto;
  41. }
  42. }
  43. }
  44. // Background overlay for scroll
  45. .header-navbar-shadow {
  46. display: none;
  47. }
  48. // Fixed Navbar
  49. .navbar-floating {
  50. .header-navbar-shadow {
  51. display: block;
  52. background: linear-gradient(180deg, hsla(0, 0%, 97.3%, .95) 44%, hsla(0, 0%, 97.3%, .46) 73%, hsla(0, 0%, 100%, 0));
  53. padding-top: 2.2rem;
  54. background-repeat: repeat;
  55. width: 100%;
  56. height: 102px;
  57. position: fixed;
  58. top: 0;
  59. z-index: 11;
  60. }
  61. }
  62. .header-navbar {
  63. padding: 0px;
  64. min-height: $navbar-height - .5;
  65. font-family: $font-family-monospace;
  66. transition: 300ms ease all;
  67. background: linear-gradient(180deg, hsla(0, 0%, 97.3%, .95) 44%, hsla(0, 0%, 97.3%, .46) 73%, hsla(0, 0%, 100%, 0));
  68. z-index: 997; // 1000;
  69. &.fixed-top {
  70. left: $menu-expanded-width;
  71. }
  72. &[class*="bg-"] {
  73. .navbar-nav {
  74. .nav-item {
  75. >a {
  76. color: set-navbar-text-color($body-dark-font-color) !important;
  77. i,
  78. span {
  79. color: set-navbar-text-color($body-dark-font-color) !important;
  80. }
  81. }
  82. .dropdown-menu {
  83. i {
  84. color: inherit !important;
  85. }
  86. }
  87. }
  88. .search-input {
  89. .input,
  90. .search-list .auto-suggestion span {
  91. color: $body-color !important;
  92. }
  93. }
  94. }
  95. }
  96. &.floating-nav {
  97. margin: 1.3rem #{$content-padding} 0;
  98. border-radius: 0.5rem;
  99. position: fixed;
  100. width: calc(100vw - (100vw - 100%) - calc(#{$content-padding} * 2) - #{$menu-expanded-width});
  101. z-index: 12;
  102. right: 0;
  103. }
  104. &.navbar-static-top {
  105. background: transparent;
  106. box-shadow: none !important; // remove this if removing "menu-shadow" class
  107. top: 0;
  108. right: 0;
  109. left: $menu-expanded-width;
  110. width: calc(100vw - (100vw - 100%) - #{$sidebar-width});
  111. }
  112. .navbar-wrapper {
  113. width: 100%;
  114. }
  115. // add border to navbar
  116. &.navbar-border {
  117. border-bottom: 1px solid $custom-border-color;
  118. }
  119. &.navbar-dark.navbar-border {
  120. border-bottom: 1px solid #8596B5;
  121. }
  122. // add shadow to navbar
  123. &.navbar-shadow {
  124. box-shadow: 0 4px 20px 0 rgba(0, 0, 0, .05);
  125. }
  126. // hide top horizontal menu drop-down arrow
  127. &:not(.navbar-horizontal) {
  128. .nav-link {
  129. &.dropdown-toggle::after {
  130. display: none;
  131. }
  132. }
  133. }
  134. .navbar-container ul.nav li.dropdown-language {
  135. padding-right: 0;
  136. .selected-language {
  137. font-size: 0.97rem;
  138. letter-spacing: -0.25px;
  139. font-weight: 500;
  140. }
  141. }
  142. .navbar-container {
  143. padding-left: $spacer;
  144. // height: $navbar-height;
  145. transition: 300ms ease all;
  146. background: inherit;
  147. margin-left: 0;
  148. .bookmark-wrapper {
  149. ul.nav {
  150. li {
  151. >a.nav-link {
  152. padding: 1.4rem 0.5rem 1.35rem;
  153. i {
  154. &:hover {
  155. color: $primary;
  156. }
  157. }
  158. }
  159. }
  160. }
  161. }
  162. // for bookmark z-index
  163. .bookmark-input {
  164. z-index: 1;
  165. }
  166. ul.nav {
  167. li {
  168. &.dropdown .dropdown-menu {
  169. top: 48px;
  170. // top: 90%;
  171. }
  172. .badge {
  173. padding: 0.42em 0.6em 0.25rem;
  174. &.badge-up {
  175. position: absolute;
  176. top: 12px;
  177. right: -2px;
  178. }
  179. }
  180. &.dropdown-language {
  181. >a.nav-link {
  182. padding: 1.65rem 0.5rem;
  183. }
  184. }
  185. >a.nav-link {
  186. color: $body-color;
  187. padding: 1.6rem 0.5rem 1.35rem 1rem;
  188. i.flag-icon {
  189. margin-right: 0.5rem;
  190. }
  191. }
  192. &.dropdown-user {
  193. .dropdown-menu-right {
  194. right: 12px;
  195. left: auto;
  196. padding: 0.5rem;
  197. .dropdown-item {
  198. padding: 10px;
  199. &:hover,
  200. &:active {
  201. background: $primary;
  202. color: $white !important;
  203. }
  204. }
  205. }
  206. }
  207. a.dropdown-user-link {
  208. padding: 0.7rem 1rem;
  209. display: flex;
  210. align-items: center;
  211. .user-name {
  212. display: inline-block;
  213. margin-bottom: 0.435rem;
  214. margin-left: 0.2rem;
  215. }
  216. .user-status {
  217. font-size: smaller;
  218. }
  219. img {
  220. box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08);
  221. }
  222. }
  223. a.menu-toggle {
  224. padding: 1.34rem 0.22rem 1.35rem 0;
  225. i {
  226. font-size: 1.4rem;
  227. }
  228. }
  229. a.nav-link-label {
  230. padding: 1.6rem 0rem 1.35rem 0.8rem;
  231. }
  232. a.dropdown-user-link {
  233. .user-nav {
  234. display: flex;
  235. flex-direction: column;
  236. align-items: flex-end;
  237. float: left;
  238. margin-right: $spacer - 0.2;
  239. }
  240. }
  241. div.input-group {
  242. padding: 0.7rem 1rem;
  243. }
  244. i.ficon {
  245. font-size: 1.5rem;
  246. color: $body-color;
  247. &:hover {
  248. color: $primary;
  249. }
  250. }
  251. .media-list {
  252. max-height: 18.2rem;
  253. }
  254. .scrollable-container {
  255. position: relative;
  256. }
  257. }
  258. }
  259. //Navbar notification css
  260. .dropdown-menu-media {
  261. width: 26rem;
  262. .media-list {
  263. .media {
  264. padding: 1rem;
  265. border: none;
  266. border-bottom: 1px solid $gray-300;
  267. &:hover {
  268. background: $body-bg;
  269. }
  270. .media-meta {
  271. color: $body-color;
  272. }
  273. }
  274. a:last-of-type {
  275. .media {
  276. border-bottom: none;
  277. }
  278. }
  279. }
  280. .dropdown-menu-header {
  281. border-bottom: 1px solid $gray-300;
  282. }
  283. .dropdown-menu-footer {
  284. a {
  285. padding: 0.3rem;
  286. border-top: 1px solid $gray-300;
  287. }
  288. }
  289. }
  290. }
  291. &.navbar-without-menu {
  292. .navbar-container {
  293. margin-left: 0;
  294. }
  295. }
  296. // &.navbar-with-menu {
  297. // .navbar-container {}
  298. // }
  299. .nav-item+.nav-item {
  300. margin-left: 0rem;
  301. }
  302. /* For sm screen*/
  303. @include media-breakpoint-down(sm) {
  304. @include fullNav;
  305. }
  306. }
  307. /* Modern menu For md screen*/
  308. @include media-breakpoint-down(md) {
  309. [data-menu="vertical-menu-modern"] {
  310. .header-navbar {
  311. @include fullNav;
  312. }
  313. .navbar-dark,
  314. .navbar-semi-dark {
  315. .navbar-header .navbar-nav .nav-link {
  316. color: $white;
  317. }
  318. .navbar-container .navbar-nav .nav-link {
  319. color: $gray-600;
  320. }
  321. }
  322. .navbar-light {
  323. .navbar-header .navbar-nav .nav-link {
  324. color: $gray-600;
  325. }
  326. }
  327. }
  328. }
  329. // Navbar colors
  330. .navbar-light {
  331. background: $white;
  332. &.navbar-horizontal {
  333. background: $white;
  334. }
  335. .navbar-nav {
  336. li {
  337. line-height: 1;
  338. }
  339. .active {
  340. &.nav-link {
  341. background-color: rgba(0, 0, 0, 0.03);
  342. }
  343. }
  344. .disabled {
  345. &.nav-link {
  346. color: $nav-link-disabled-color;
  347. }
  348. }
  349. }
  350. }
  351. .navbar-dark {
  352. background: $gray-600;
  353. .navbar-brand {
  354. color: $white !important;
  355. }
  356. &.navbar-horizontal {
  357. background: $gray-600;
  358. }
  359. @extend %extend_hamburger_color;
  360. .nav-search {
  361. .form-control,
  362. .btn-secondary {
  363. color: $white;
  364. background: $gray-600;
  365. }
  366. }
  367. .navbar-nav {
  368. li {
  369. line-height: 1;
  370. }
  371. .active {
  372. &.nav-link {
  373. background-color: rgba(255, 255, 255, 0.05);
  374. }
  375. }
  376. .disabled {
  377. &.nav-link {
  378. color: $gray-300;
  379. }
  380. }
  381. }
  382. }
  383. .navbar-semi-dark {
  384. .navbar-header {
  385. background: $gray-600;
  386. .brand-text {
  387. color: $white;
  388. }
  389. }
  390. background:$white;
  391. .navbar-nav {
  392. li {
  393. line-height: 1;
  394. }
  395. .nav-link {
  396. color: $gray-600;
  397. }
  398. .active {
  399. &.nav-link {
  400. background-color: rgba(0, 0, 0, 0.03);
  401. }
  402. }
  403. .disabled {
  404. &.nav-link {
  405. color: $nav-link-disabled-color;
  406. }
  407. }
  408. }
  409. }
  410. .navbar-semi-light {
  411. .navbar-header {
  412. background: $white;
  413. .brand-text {
  414. color: $gray-600;
  415. }
  416. }
  417. background: $gray-600;
  418. .navbar-nav {
  419. li {
  420. line-height: 1;
  421. }
  422. .nav-link {
  423. color: $white;
  424. }
  425. .active {
  426. &.nav-link {
  427. background-color: rgba(0, 0, 0, 0.03);
  428. }
  429. }
  430. .disabled {
  431. &.nav-link {
  432. color: $nav-link-disabled-color;
  433. }
  434. }
  435. }
  436. }
  437. @-moz-document url-prefix() {
  438. ul {
  439. li {
  440. a {
  441. .children-in {
  442. position: relative;
  443. right: 3px;
  444. top: -14px;
  445. }
  446. }
  447. }
  448. }
  449. }
  450. .navbar-menu-icon {
  451. span {
  452. display: block;
  453. position: absolute;
  454. height: 2px;
  455. width: 100%;
  456. background: $gray-600;
  457. border-radius: 9px;
  458. opacity: 1;
  459. left: 0;
  460. transform: rotate(0deg);
  461. transition: .25s ease-in-out;
  462. }
  463. }
  464. .navbar-menu-icon span:nth-child(1) {
  465. top: 0px;
  466. }
  467. .navbar-menu-icon span:nth-child(2) {
  468. top: 10px;
  469. }
  470. .navbar-menu-icon span:nth-child(3) {
  471. top: 20px;
  472. }
  473. .navbar-menu-icon.show span:nth-child(1) {
  474. top: 10px;
  475. transform: rotate(135deg);
  476. }
  477. .navbar-menu-icon.show span:nth-child(2) {
  478. opacity: 0;
  479. left: -60px;
  480. }
  481. .navbar-menu-icon.show span:nth-child(3) {
  482. top: 10px;
  483. transform: rotate(-135deg);
  484. }
  485. // Media queries for device support
  486. // =========================================
  487. @include media-breakpoint-down(sm) {
  488. .header-navbar {
  489. // generic navbar dropdown specific
  490. .navbar-nav {
  491. .show {
  492. position: static;
  493. }
  494. .open-navbar-container {
  495. padding-top: 0.625rem;
  496. }
  497. }
  498. .navbar-container {
  499. .show {
  500. .dropdown-menu {
  501. right: 0;
  502. left: 0 !important;
  503. float: none;
  504. width: auto;
  505. margin-top: 0;
  506. max-height: 400px;
  507. overflow-x: hidden;
  508. }
  509. }
  510. .dropdown-user {
  511. .dropdown-menu-right {
  512. right: 0 !important;
  513. }
  514. }
  515. ul.nav {
  516. li {
  517. &.nav-item i {
  518. margin-right: 0.2rem;
  519. }
  520. a.dropdown-user-link {
  521. padding: 0.8rem 0.6rem;
  522. }
  523. .dropdown-toggle::after {
  524. margin-right: 0;
  525. margin-left: -2px;
  526. }
  527. }
  528. }
  529. }
  530. }
  531. // dark navbar
  532. .navbar-dark,
  533. .navbar-semi-dark {
  534. .hamburger-inner,
  535. .hamburger-inner::before,
  536. .hamburger-inner::after {
  537. background-color: $white;
  538. }
  539. .navbar-header {
  540. .navbar-nav {
  541. .nav-link {
  542. color: $white;
  543. }
  544. }
  545. }
  546. .navbar-container {
  547. .navbar-nav {
  548. .nav-link {
  549. color: $gray-600;
  550. }
  551. }
  552. }
  553. }
  554. // light navbar
  555. .navbar-light,
  556. .navbar-semi-light {
  557. .navbar-header {
  558. .navbar-nav {
  559. .nav-link {
  560. color: $gray-600;
  561. }
  562. }
  563. }
  564. .navbar-container {
  565. .navbar-nav {
  566. .nav-link {
  567. color: $gray-600;
  568. }
  569. }
  570. }
  571. }
  572. }
  573. .headroom {
  574. will-change: transform;
  575. transition: transform 200ms linear;
  576. }
  577. .headroom--pinned-top {
  578. transform: translateY(0%);
  579. }
  580. .headroom--unpinned-top {
  581. transform: translateY(-100%);
  582. }
  583. .headroom--pinned-bottom {
  584. transform: translateY(0%);
  585. }
  586. .headroom--unpinned-bottom {
  587. transform: translateY(100%);
  588. }
  589. @include media-breakpoint-down(xs) {
  590. .header-navbar {
  591. .navbar-container ul.nav li .selected-language {
  592. display: none;
  593. }
  594. }
  595. }
  596. // header navbar when floating nav
  597. body {
  598. &[data-col="1-column"] {
  599. .header-navbar {
  600. &.floating-nav {
  601. width: calc(100vw - (100vw - 100%) - calc(#{$content-padding} * 2));
  602. }
  603. }
  604. }
  605. }
  606. // header navbar when floating nav
  607. @media (min-width: 1200px) and (-ms-high-contrast: active),
  608. (-ms-high-contrast: none) {
  609. body {
  610. &:not([data-col="1-columns"]) {
  611. .header-navbar {
  612. &.floating-nav {
  613. width: calc(100vw - (100vw - 100%) - 60px - #{$menu-expanded-width});
  614. }
  615. }
  616. }
  617. }
  618. }
  619. // For Medium and down: iPad support for navbr
  620. @include media-breakpoint-down(lg) {
  621. .header-navbar {
  622. .navbar-container {
  623. ul.nav {
  624. li {
  625. a.dropdown-user-link {
  626. padding: 0.7rem 1.23rem;
  627. }
  628. .dropdown-toggle::after {
  629. margin-right: 0;
  630. margin-left: -2px;
  631. }
  632. }
  633. }
  634. }
  635. &.navbar-static-top {
  636. left: 0;
  637. width: 100%;
  638. }
  639. }
  640. }
  641. @mixin extend_mobile_specific($menu_height) {
  642. .header-navbar {
  643. .navbar-container {
  644. .show {
  645. .dropdown-menu {
  646. max-height: $menu_height;
  647. }
  648. }
  649. }
  650. }
  651. }
  652. @mixin responsive_sub_nav {
  653. //For responsive sub nav
  654. #navbar-mobile.navbar-collapse {
  655. .navbar-nav {
  656. margin: 0;
  657. flex-flow: row wrap;
  658. .dropdown-menu {
  659. position: absolute;
  660. }
  661. .nav-item {
  662. float: left;
  663. }
  664. }
  665. }
  666. }
  667. @media (max-width: 767px) {
  668. @include responsive_sub_nav;
  669. }
  670. @include media-breakpoint-down(md) {
  671. @include responsive_sub_nav;
  672. }
  673. /* ----------- iPhone 5, 5S iPhone 6----------- */
  674. /* Landscape */
  675. @media only screen and (min-device-width: 26.78em) and (max-device-width: 47.64em) and (-webkit-min-device-pixel-ratio: 2) and (orientation: landscape) {
  676. @include extend_mobile_specific(180px);
  677. }
  678. /* ----------- iPhone 6+ ----------- */
  679. /* Landscape */
  680. @media only screen and (min-device-width: 29.57em) and (max-device-width: 52.57em) and (-webkit-min-device-pixel-ratio: 3) and (orientation: landscape) {
  681. @include extend_mobile_specific(280px);
  682. }
  683. /*----------------------------- For Navbar Component -------------------------*/
  684. #navbar-component {
  685. .navbar {
  686. &.floating-nav {
  687. border-radius: .5rem;
  688. }
  689. z-index: auto !important;
  690. // navbar dark color
  691. .navbar-nav {
  692. .nav-item {
  693. a {
  694. color: inherit;
  695. }
  696. }
  697. }
  698. &.header-navbar.navbar-dark {
  699. .navbar-nav {
  700. .nav-link {
  701. color: $white;
  702. i {
  703. color: $white;
  704. }
  705. }
  706. }
  707. }
  708. .navbar-nav {
  709. .dropdown-language,
  710. .dropdown-notification,
  711. .dropdown-user {
  712. &.show {
  713. position: relative;
  714. }
  715. .dropdown-menu {
  716. &.show {
  717. position: absolute;
  718. right: 0;
  719. left: auto !important;
  720. }
  721. }
  722. }
  723. }
  724. // for font size of navbar toggler
  725. &.navbar-dark,
  726. &.navbar-light {
  727. .navbar-toggler {
  728. font-size: 1.2rem;
  729. &:focus {
  730. outline: 0;
  731. }
  732. }
  733. }
  734. }
  735. // to remove border radius for collapsed navbar
  736. #navbar-collapsed {
  737. .navbar {
  738. border-radius: 0;
  739. }
  740. }
  741. }
  742. // for alignment of language dropdown and name
  743. @media(min-width: 992px) {
  744. #navbar-component {
  745. .navbar {
  746. .navbar-container {
  747. background: inherit;
  748. }
  749. }
  750. .nav {
  751. .dropdown-language {
  752. float: right;
  753. }
  754. }
  755. }
  756. }
  757. // background color
  758. @media(max-width: 992px) {
  759. #navbar-component {
  760. .navbar {
  761. .navbar-container {
  762. background: inherit;
  763. .navbar-nav {
  764. flex-direction: row;
  765. }
  766. }
  767. }
  768. }
  769. }
  770. // for width of navbar in fixed-top
  771. @media(max-width: 1201px) {
  772. .header-navbar {
  773. &.fixed-top {
  774. left: 0;
  775. }
  776. }
  777. .horizontal-layout {
  778. .header-navbar {
  779. .navbar-container {
  780. padding-left: 1.5rem;
  781. padding-right: 1.2rem;
  782. }
  783. }
  784. }
  785. }
  786. @media(max-width: 1199px) {
  787. .header-navbar {
  788. .navbar-container {
  789. ul.nav li a.dropdown-user-link .user-name {
  790. margin-bottom: 0;
  791. }
  792. }
  793. }
  794. }
  795. // for notification dropdown of navbar component page
  796. @media (max-width: 768px) {
  797. #navbar-component {
  798. .navbar {
  799. .navbar-nav {
  800. .dropdown-notification {
  801. &.show {
  802. position: static;
  803. }
  804. }
  805. }
  806. }
  807. }
  808. }
  809. @include media-breakpoint-down(xs) {
  810. .header-navbar.floating-nav {
  811. width: calc(100vw - (100vw - 100%) - 2.4rem) !important;
  812. margin-left: 1.2rem;
  813. margin-right: 1.2rem;
  814. }
  815. .content.app-content .content-area-wrapper {
  816. margin-left: 1.2rem !important;
  817. margin-right: 1.2rem !important;
  818. }
  819. .header-navbar .navbar-container {
  820. padding-left: 1rem !important;
  821. padding-right: 0 !important;
  822. }
  823. }
  824. // 1-column Layout - Back Link in Center
  825. @media(max-width: 992px) {
  826. .navbar-container {
  827. #navbar-mobile {
  828. .nav-back {
  829. margin-top: 5px;
  830. }
  831. }
  832. }
  833. }