`s.
-
-.nav {
- display: flex;
- flex-wrap: wrap;
- padding-left: 0;
- margin-bottom: 0;
- list-style: none;
-}
-
-.nav-link {
- display: block;
- padding: $nav-link-padding-y $nav-link-padding-x;
-
- @include hover-focus {
- text-decoration: none;
- }
-
- // Disabled state lightens text
- &.disabled {
- color: $nav-link-disabled-color;
- pointer-events: none;
- cursor: default;
- }
-}
-
-//
-// Tabs
-//
-
-.nav-tabs {
- border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;
-
- .nav-item {
- margin-bottom: -$nav-tabs-border-width;
- }
-
- .nav-link {
- border: $nav-tabs-border-width solid transparent;
- @include border-top-radius($nav-tabs-border-radius);
-
- @include hover-focus {
- border-color: $nav-tabs-link-hover-border-color;
- }
-
- &.disabled {
- color: $nav-link-disabled-color;
- background-color: transparent;
- border-color: transparent;
- }
- }
-
- .nav-link.active,
- .nav-item.show .nav-link {
- color: $nav-tabs-link-active-color;
- background-color: $nav-tabs-link-active-bg;
- border-color: $nav-tabs-link-active-border-color;
- }
-
- .dropdown-menu {
- // Make dropdown border overlap tab border
- margin-top: -$nav-tabs-border-width;
- // Remove the top rounded corners here since there is a hard edge above the menu
- @include border-top-radius(0);
- }
-}
-
-
-//
-// Pills
-//
-
-.nav-pills {
- .nav-link {
- @include border-radius($nav-pills-border-radius);
- }
-
- .nav-link.active,
- .show > .nav-link {
- color: $nav-pills-link-active-color;
- background-color: $nav-pills-link-active-bg;
- }
-}
-
-
-//
-// Justified variants
-//
-
-.nav-fill {
- .nav-item {
- flex: 1 1 auto;
- text-align: center;
- }
-}
-
-.nav-justified {
- .nav-item {
- flex-basis: 0;
- flex-grow: 1;
- text-align: center;
- }
-}
-
-
-// Tabbable tabs
-//
-// Hide tabbable panes to start, show them when `.active`
-
-.tab-content {
- > .tab-pane {
- display: none;
- }
- > .active {
- display: block;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_navbar.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_navbar.scss
deleted file mode 100644
index 5c6e9639..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_navbar.scss
+++ /dev/null
@@ -1,294 +0,0 @@
-// Contents
-//
-// Navbar
-// Navbar brand
-// Navbar nav
-// Navbar text
-// Navbar divider
-// Responsive navbar
-// Navbar position
-// Navbar themes
-
-
-// Navbar
-//
-// Provide a static navbar from which we expand to create full-width, fixed, and
-// other navbar variations.
-
-.navbar {
- position: relative;
- display: flex;
- flex-wrap: wrap; // allow us to do the line break for collapsing content
- align-items: center;
- justify-content: space-between; // space out brand from logo
- padding: $navbar-padding-y $navbar-padding-x;
-
- // Because flex properties aren't inherited, we need to redeclare these first
- // few properties so that content nested within behave properly.
- > .container,
- > .container-fluid {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- justify-content: space-between;
- }
-}
-
-
-// Navbar brand
-//
-// Used for brand, project, or site names.
-
-.navbar-brand {
- display: inline-block;
- padding-top: $navbar-brand-padding-y;
- padding-bottom: $navbar-brand-padding-y;
- margin-right: $navbar-padding-x;
- @include font-size($navbar-brand-font-size);
- line-height: inherit;
- white-space: nowrap;
-
- @include hover-focus {
- text-decoration: none;
- }
-}
-
-
-// Navbar nav
-//
-// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).
-
-.navbar-nav {
- display: flex;
- flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
- padding-left: 0;
- margin-bottom: 0;
- list-style: none;
-
- .nav-link {
- padding-right: 0;
- padding-left: 0;
- }
-
- .dropdown-menu {
- position: static;
- float: none;
- }
-}
-
-
-// Navbar text
-//
-//
-
-.navbar-text {
- display: inline-block;
- padding-top: $nav-link-padding-y;
- padding-bottom: $nav-link-padding-y;
-}
-
-
-// Responsive navbar
-//
-// Custom styles for responsive collapsing and toggling of navbar contents.
-// Powered by the collapse Bootstrap JavaScript plugin.
-
-// When collapsed, prevent the toggleable navbar contents from appearing in
-// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`
-// on the `.navbar` parent.
-.navbar-collapse {
- flex-basis: 100%;
- flex-grow: 1;
- // For always expanded or extra full navbars, ensure content aligns itself
- // properly vertically. Can be easily overridden with flex utilities.
- align-items: center;
-}
-
-// Button for toggling the navbar when in its collapsed state
-.navbar-toggler {
- padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;
- @include font-size($navbar-toggler-font-size);
- line-height: 1;
- background-color: transparent; // remove default button style
- border: $border-width solid transparent; // remove default button style
- @include border-radius($navbar-toggler-border-radius);
-
- @include hover-focus {
- text-decoration: none;
- }
-}
-
-// Keep as a separate element so folks can easily override it with another icon
-// or image file as needed.
-.navbar-toggler-icon {
- display: inline-block;
- width: 1.5em;
- height: 1.5em;
- vertical-align: middle;
- content: "";
- background: no-repeat center center;
- background-size: 100% 100%;
-}
-
-// Generate series of `.navbar-expand-*` responsive classes for configuring
-// where your navbar collapses.
-.navbar-expand {
- @each $breakpoint in map-keys($grid-breakpoints) {
- $next: breakpoint-next($breakpoint, $grid-breakpoints);
- $infix: breakpoint-infix($next, $grid-breakpoints);
-
- {$infix} {
- @include media-breakpoint-down($breakpoint) {
- > .container,
- > .container-fluid {
- padding-right: 0;
- padding-left: 0;
- }
- }
-
- @include media-breakpoint-up($next) {
- flex-flow: row nowrap;
- justify-content: flex-start;
-
- .navbar-nav {
- flex-direction: row;
-
- .dropdown-menu {
- position: absolute;
- }
-
- .nav-link {
- padding-right: $navbar-nav-link-padding-x;
- padding-left: $navbar-nav-link-padding-x;
- }
- }
-
- // For nesting containers, have to redeclare for alignment purposes
- > .container,
- > .container-fluid {
- flex-wrap: nowrap;
- }
-
- .navbar-collapse {
- display: flex !important; // stylelint-disable-line declaration-no-important
-
- // Changes flex-bases to auto because of an IE10 bug
- flex-basis: auto;
- }
-
- .navbar-toggler {
- display: none;
- }
- }
- }
- }
-}
-
-
-// Navbar themes
-//
-// Styles for switching between navbars with light or dark background.
-
-// Dark links against a light background
-.navbar-light {
- .navbar-brand {
- color: $navbar-light-brand-color;
-
- @include hover-focus {
- color: $navbar-light-brand-hover-color;
- }
- }
-
- .navbar-nav {
- .nav-link {
- color: $navbar-light-color;
-
- @include hover-focus {
- color: $navbar-light-hover-color;
- }
-
- &.disabled {
- color: $navbar-light-disabled-color;
- }
- }
-
- .show > .nav-link,
- .active > .nav-link,
- .nav-link.show,
- .nav-link.active {
- color: $navbar-light-active-color;
- }
- }
-
- .navbar-toggler {
- color: $navbar-light-color;
- border-color: $navbar-light-toggler-border-color;
- }
-
- .navbar-toggler-icon {
- background-image: $navbar-light-toggler-icon-bg;
- }
-
- .navbar-text {
- color: $navbar-light-color;
- a {
- color: $navbar-light-active-color;
-
- @include hover-focus {
- color: $navbar-light-active-color;
- }
- }
- }
-}
-
-// White links against a dark background
-.navbar-dark {
- .navbar-brand {
- color: $navbar-dark-brand-color;
-
- @include hover-focus {
- color: $navbar-dark-brand-hover-color;
- }
- }
-
- .navbar-nav {
- .nav-link {
- color: $navbar-dark-color;
-
- @include hover-focus {
- color: $navbar-dark-hover-color;
- }
-
- &.disabled {
- color: $navbar-dark-disabled-color;
- }
- }
-
- .show > .nav-link,
- .active > .nav-link,
- .nav-link.show,
- .nav-link.active {
- color: $navbar-dark-active-color;
- }
- }
-
- .navbar-toggler {
- color: $navbar-dark-color;
- border-color: $navbar-dark-toggler-border-color;
- }
-
- .navbar-toggler-icon {
- background-image: $navbar-dark-toggler-icon-bg;
- }
-
- .navbar-text {
- color: $navbar-dark-color;
- a {
- color: $navbar-dark-active-color;
-
- @include hover-focus {
- color: $navbar-dark-active-color;
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_pagination.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_pagination.scss
deleted file mode 100644
index b4345311..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_pagination.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-.pagination {
- display: flex;
- @include list-unstyled();
- @include border-radius();
-}
-
-.page-link {
- position: relative;
- display: block;
- padding: $pagination-padding-y $pagination-padding-x;
- margin-left: -$pagination-border-width;
- line-height: $pagination-line-height;
- color: $pagination-color;
- background-color: $pagination-bg;
- border: $pagination-border-width solid $pagination-border-color;
-
- &:hover {
- z-index: 2;
- color: $pagination-hover-color;
- text-decoration: none;
- background-color: $pagination-hover-bg;
- border-color: $pagination-hover-border-color;
- }
-
- &:focus {
- z-index: 2;
- outline: $pagination-focus-outline;
- box-shadow: $pagination-focus-box-shadow;
- }
-}
-
-.page-item {
- &:first-child {
- .page-link {
- margin-left: 0;
- @include border-left-radius($border-radius);
- }
- }
- &:last-child {
- .page-link {
- @include border-right-radius($border-radius);
- }
- }
-
- &.active .page-link {
- z-index: 1;
- color: $pagination-active-color;
- background-color: $pagination-active-bg;
- border-color: $pagination-active-border-color;
- }
-
- &.disabled .page-link {
- color: $pagination-disabled-color;
- pointer-events: none;
- // Opinionated: remove the "hand" cursor set previously for .page-link
- cursor: auto;
- background-color: $pagination-disabled-bg;
- border-color: $pagination-disabled-border-color;
- }
-}
-
-
-//
-// Sizing
-//
-
-.pagination-lg {
- @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);
-}
-
-.pagination-sm {
- @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_popover.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_popover.scss
deleted file mode 100644
index f205e668..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_popover.scss
+++ /dev/null
@@ -1,171 +0,0 @@
-.popover {
- position: absolute;
- top: 0;
- left: 0;
- z-index: $zindex-popover;
- display: block;
- max-width: $popover-max-width;
- // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
- // So reset our font and text properties to avoid inheriting weird values.
- @include reset-text();
- @include font-size($popover-font-size);
- // Allow breaking very long words so they don't overflow the popover's bounds
- word-wrap: break-word;
- background-color: $popover-bg;
- background-clip: padding-box;
- border: $popover-border-width solid $popover-border-color;
- @include border-radius($popover-border-radius);
- @include box-shadow($popover-box-shadow);
-
- .arrow {
- position: absolute;
- display: block;
- width: $popover-arrow-width;
- height: $popover-arrow-height;
- margin: 0 $border-radius-lg;
-
- &::before,
- &::after {
- position: absolute;
- display: block;
- content: "";
- border-color: transparent;
- border-style: solid;
- }
- }
-}
-
-.bs-popover-top {
- margin-bottom: $popover-arrow-height;
-
- > .arrow {
- bottom: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
-
- &::before {
- bottom: 0;
- border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
- border-top-color: $popover-arrow-outer-color;
- }
-
- &::after {
- bottom: $popover-border-width;
- border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
- border-top-color: $popover-arrow-color;
- }
- }
-}
-
-.bs-popover-right {
- margin-left: $popover-arrow-height;
-
- > .arrow {
- left: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
- width: $popover-arrow-height;
- height: $popover-arrow-width;
- margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners
-
- &::before {
- left: 0;
- border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
- border-right-color: $popover-arrow-outer-color;
- }
-
- &::after {
- left: $popover-border-width;
- border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
- border-right-color: $popover-arrow-color;
- }
- }
-}
-
-.bs-popover-bottom {
- margin-top: $popover-arrow-height;
-
- > .arrow {
- top: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
-
- &::before {
- top: 0;
- border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
- border-bottom-color: $popover-arrow-outer-color;
- }
-
- &::after {
- top: $popover-border-width;
- border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
- border-bottom-color: $popover-arrow-color;
- }
- }
-
- // This will remove the popover-header's border just below the arrow
- .popover-header::before {
- position: absolute;
- top: 0;
- left: 50%;
- display: block;
- width: $popover-arrow-width;
- margin-left: -$popover-arrow-width / 2;
- content: "";
- border-bottom: $popover-border-width solid $popover-header-bg;
- }
-}
-
-.bs-popover-left {
- margin-right: $popover-arrow-height;
-
- > .arrow {
- right: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
- width: $popover-arrow-height;
- height: $popover-arrow-width;
- margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners
-
- &::before {
- right: 0;
- border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
- border-left-color: $popover-arrow-outer-color;
- }
-
- &::after {
- right: $popover-border-width;
- border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
- border-left-color: $popover-arrow-color;
- }
- }
-}
-
-.bs-popover-auto {
- &[x-placement^="top"] {
- @extend .bs-popover-top;
- }
- &[x-placement^="right"] {
- @extend .bs-popover-right;
- }
- &[x-placement^="bottom"] {
- @extend .bs-popover-bottom;
- }
- &[x-placement^="left"] {
- @extend .bs-popover-left;
- }
-}
-
-
-// Offset the popover to account for the popover arrow
-.popover-header {
- padding: $popover-header-padding-y $popover-header-padding-x;
- margin-bottom: 0; // Reset the default from Reboot
- @include font-size($font-size-base);
- color: $popover-header-color;
- background-color: $popover-header-bg;
- border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);
- $offset-border-width: calc(#{$border-radius-lg} - #{$popover-border-width});
- @include border-top-radius($offset-border-width);
-
- &:empty {
- display: none;
- }
-}
-
-.popover-body {
- padding: $popover-body-padding-y $popover-body-padding-x;
- color: $popover-body-color;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_print.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_print.scss
deleted file mode 100644
index 61b60b98..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_print.scss
+++ /dev/null
@@ -1,141 +0,0 @@
-// stylelint-disable declaration-no-important, selector-no-qualifying-type
-
-// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css
-
-// ==========================================================================
-// Print styles.
-// Inlined to avoid the additional HTTP request:
-// https://www.phpied.com/delay-loading-your-print-css/
-// ==========================================================================
-
-@if $enable-print-styles {
- @media print {
- *,
- *::before,
- *::after {
- // Bootstrap specific; comment out `color` and `background`
- //color: $black !important; // Black prints faster
- text-shadow: none !important;
- //background: transparent !important;
- box-shadow: none !important;
- }
-
- a {
- &:not(.btn) {
- text-decoration: underline;
- }
- }
-
- // Bootstrap specific; comment the following selector out
- //a[href]::after {
- // content: " (" attr(href) ")";
- //}
-
- abbr[title]::after {
- content: " (" attr(title) ")";
- }
-
- // Bootstrap specific; comment the following selector out
- //
- // Don't show links that are fragment identifiers,
- // or use the `javascript:` pseudo protocol
- //
-
- //a[href^="#"]::after,
- //a[href^="javascript:"]::after {
- // content: "";
- //}
-
- pre {
- white-space: pre-wrap !important;
- }
- pre,
- blockquote {
- border: $border-width solid $gray-500; // Bootstrap custom code; using `$border-width` instead of 1px
- page-break-inside: avoid;
- }
-
- //
- // Printing Tables:
- // http://css-discuss.incutio.com/wiki/Printing_Tables
- //
-
- thead {
- display: table-header-group;
- }
-
- tr,
- img {
- page-break-inside: avoid;
- }
-
- p,
- h2,
- h3 {
- orphans: 3;
- widows: 3;
- }
-
- h2,
- h3 {
- page-break-after: avoid;
- }
-
- // Bootstrap specific changes start
-
- // Specify a size and min-width to make printing closer across browsers.
- // We don't set margin here because it breaks `size` in Chrome. We also
- // don't use `!important` on `size` as it breaks in Chrome.
- @page {
- size: $print-page-size;
- }
- body {
- min-width: $print-body-min-width !important;
- }
- .container {
- min-width: $print-body-min-width !important;
- }
-
- // Bootstrap components
- .navbar {
- display: none;
- }
- .badge {
- border: $border-width solid $black;
- }
-
- .table {
- border-collapse: collapse !important;
-
- td,
- th {
- background-color: $white !important;
- }
- }
-
- .table-bordered {
- th,
- td {
- border: 1px solid $gray-300 !important;
- }
- }
-
- .table-dark {
- color: inherit;
-
- th,
- td,
- thead th,
- tbody + tbody {
- border-color: $table-border-color;
- }
- }
-
- .table .thead-dark th {
- color: inherit;
- border-color: $table-border-color;
- }
-
- // Bootstrap specific changes end
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_progress.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_progress.scss
deleted file mode 100644
index ab9ea0ff..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_progress.scss
+++ /dev/null
@@ -1,43 +0,0 @@
-// Disable animation if transitions are disabled
-@if $enable-transitions {
- @keyframes progress-bar-stripes {
- from { background-position: $progress-height 0; }
- to { background-position: 0 0; }
- }
-}
-
-.progress {
- display: flex;
- height: $progress-height;
- overflow: hidden; // force rounded corners by cropping it
- @include font-size($progress-font-size);
- background-color: $progress-bg;
- @include border-radius($progress-border-radius);
- @include box-shadow($progress-box-shadow);
-}
-
-.progress-bar {
- display: flex;
- flex-direction: column;
- justify-content: center;
- color: $progress-bar-color;
- text-align: center;
- white-space: nowrap;
- background-color: $progress-bar-bg;
- @include transition($progress-bar-transition);
-}
-
-.progress-bar-striped {
- @include gradient-striped();
- background-size: $progress-height $progress-height;
-}
-
-@if $enable-transitions {
- .progress-bar-animated {
- animation: progress-bar-stripes $progress-bar-animation-timing;
-
- @media (prefers-reduced-motion: reduce) {
- animation: none;
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_reboot.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_reboot.scss
deleted file mode 100644
index c55d42e4..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_reboot.scss
+++ /dev/null
@@ -1,483 +0,0 @@
-// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
-
-// Reboot
-//
-// Normalization of HTML elements, manually forked from Normalize.css to remove
-// styles targeting irrelevant browsers while applying new styles.
-//
-// Normalize is licensed MIT. https://github.com/necolas/normalize.css
-
-
-// Document
-//
-// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
-// 2. Change the default font family in all browsers.
-// 3. Correct the line height in all browsers.
-// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.
-// 5. Change the default tap highlight to be completely transparent in iOS.
-
-*,
-*::before,
-*::after {
- box-sizing: border-box; // 1
-}
-
-html {
- font-family: sans-serif; // 2
- line-height: 1.15; // 3
- -webkit-text-size-adjust: 100%; // 4
- -webkit-tap-highlight-color: rgba($black, 0); // 5
-}
-
-// Shim for "new" HTML5 structural elements to display correctly (IE10, older browsers)
-// TODO: remove in v5
-// stylelint-disable-next-line selector-list-comma-newline-after
-article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
- display: block;
-}
-
-// Body
-//
-// 1. Remove the margin in all browsers.
-// 2. As a best practice, apply a default `background-color`.
-// 3. Set an explicit initial text-align value so that we can later use
-// the `inherit` value on things like `` elements.
-
-body {
- margin: 0; // 1
- font-family: $font-family-base;
- @include font-size($font-size-base);
- font-weight: $font-weight-base;
- line-height: $line-height-base;
- color: $body-color;
- text-align: left; // 3
- background-color: $body-bg; // 2
-}
-
-// Suppress the focus outline on elements that cannot be accessed via keyboard.
-// This prevents an unwanted focus outline from appearing around elements that
-// might still respond to pointer events.
-//
-// Credit: https://github.com/suitcss/base
-[tabindex="-1"]:focus {
- outline: 0 !important;
-}
-
-
-// Content grouping
-//
-// 1. Add the correct box sizing in Firefox.
-// 2. Show the overflow in Edge and IE.
-
-hr {
- box-sizing: content-box; // 1
- height: 0; // 1
- overflow: visible; // 2
-}
-
-
-//
-// Typography
-//
-
-// Remove top margins from headings
-//
-// By default, ``-`` all receive top and bottom margins. We nuke the top
-// margin for easier control within type scales as it avoids margin collapsing.
-// stylelint-disable-next-line selector-list-comma-newline-after
-h1, h2, h3, h4, h5, h6 {
- margin-top: 0;
- margin-bottom: $headings-margin-bottom;
-}
-
-// Reset margins on paragraphs
-//
-// Similarly, the top margin on ` `s get reset. However, we also reset the
-// bottom margin to use `rem` units instead of `em`.
-p {
- margin-top: 0;
- margin-bottom: $paragraph-margin-bottom;
-}
-
-// Abbreviations
-//
-// 1. Duplicate behavior to the data-* attribute for our tooltip plugin
-// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
-// 3. Add explicit cursor to indicate changed behavior.
-// 4. Remove the bottom border in Firefox 39-.
-// 5. Prevent the text-decoration to be skipped.
-
-abbr[title],
-abbr[data-original-title] { // 1
- text-decoration: underline; // 2
- text-decoration: underline dotted; // 2
- cursor: help; // 3
- border-bottom: 0; // 4
- text-decoration-skip-ink: none; // 5
-}
-
-address {
- margin-bottom: 1rem;
- font-style: normal;
- line-height: inherit;
-}
-
-ol,
-ul,
-dl {
- margin-top: 0;
- margin-bottom: 1rem;
-}
-
-ol ol,
-ul ul,
-ol ul,
-ul ol {
- margin-bottom: 0;
-}
-
-dt {
- font-weight: $dt-font-weight;
-}
-
-dd {
- margin-bottom: .5rem;
- margin-left: 0; // Undo browser default
-}
-
-blockquote {
- margin: 0 0 1rem;
-}
-
-b,
-strong {
- font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari
-}
-
-small {
- @include font-size(80%); // Add the correct font size in all browsers
-}
-
-//
-// Prevent `sub` and `sup` elements from affecting the line height in
-// all browsers.
-//
-
-sub,
-sup {
- position: relative;
- @include font-size(75%);
- line-height: 0;
- vertical-align: baseline;
-}
-
-sub { bottom: -.25em; }
-sup { top: -.5em; }
-
-
-//
-// Links
-//
-
-a {
- color: $link-color;
- text-decoration: $link-decoration;
- background-color: transparent; // Remove the gray background on active links in IE 10.
-
- @include hover {
- color: $link-hover-color;
- text-decoration: $link-hover-decoration;
- }
-}
-
-// And undo these styles for placeholder links/named anchors (without href)
-// which have not been made explicitly keyboard-focusable (without tabindex).
-// It would be more straightforward to just use a[href] in previous block, but that
-// causes specificity issues in many other styles that are too complex to fix.
-// See https://github.com/twbs/bootstrap/issues/19402
-
-a:not([href]):not([tabindex]) {
- color: inherit;
- text-decoration: none;
-
- @include hover-focus {
- color: inherit;
- text-decoration: none;
- }
-
- &:focus {
- outline: 0;
- }
-}
-
-
-//
-// Code
-//
-
-pre,
-code,
-kbd,
-samp {
- font-family: $font-family-monospace;
- @include font-size(1em); // Correct the odd `em` font sizing in all browsers.
-}
-
-pre {
- // Remove browser default top margin
- margin-top: 0;
- // Reset browser default of `1em` to use `rem`s
- margin-bottom: 1rem;
- // Don't allow content to break outside
- overflow: auto;
-}
-
-
-//
-// Figures
-//
-
-figure {
- // Apply a consistent margin strategy (matches our type styles).
- margin: 0 0 1rem;
-}
-
-
-//
-// Images and content
-//
-
-img {
- vertical-align: middle;
- border-style: none; // Remove the border on images inside links in IE 10-.
-}
-
-svg {
- // Workaround for the SVG overflow bug in IE10/11 is still required.
- // See https://github.com/twbs/bootstrap/issues/26878
- overflow: hidden;
- vertical-align: middle;
-}
-
-
-//
-// Tables
-//
-
-table {
- border-collapse: collapse; // Prevent double borders
-}
-
-caption {
- padding-top: $table-cell-padding;
- padding-bottom: $table-cell-padding;
- color: $table-caption-color;
- text-align: left;
- caption-side: bottom;
-}
-
-th {
- // Matches default `
` alignment by inheriting from the ``, or the
- // closest parent with a set `text-align`.
- text-align: inherit;
-}
-
-
-//
-// Forms
-//
-
-label {
- // Allow labels to use `margin` for spacing.
- display: inline-block;
- margin-bottom: $label-margin-bottom;
-}
-
-// Remove the default `border-radius` that macOS Chrome adds.
-//
-// Details at https://github.com/twbs/bootstrap/issues/24093
-button {
- // stylelint-disable-next-line property-blacklist
- border-radius: 0;
-}
-
-// Work around a Firefox/IE bug where the transparent `button` background
-// results in a loss of the default `button` focus styles.
-//
-// Credit: https://github.com/suitcss/base/
-button:focus {
- outline: 1px dotted;
- outline: 5px auto -webkit-focus-ring-color;
-}
-
-input,
-button,
-select,
-optgroup,
-textarea {
- margin: 0; // Remove the margin in Firefox and Safari
- font-family: inherit;
- @include font-size(inherit);
- line-height: inherit;
-}
-
-button,
-input {
- overflow: visible; // Show the overflow in Edge
-}
-
-button,
-select {
- text-transform: none; // Remove the inheritance of text transform in Firefox
-}
-
-// Remove the inheritance of word-wrap in Safari.
-//
-// Details at https://github.com/twbs/bootstrap/issues/24990
-select {
- word-wrap: normal;
-}
-
-
-// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
-// controls in Android 4.
-// 2. Correct the inability to style clickable types in iOS and Safari.
-button,
-[type="button"], // 1
-[type="reset"],
-[type="submit"] {
- -webkit-appearance: button; // 2
-}
-
-// Opinionated: add "hand" cursor to non-disabled button elements.
-@if $enable-pointer-cursor-for-buttons {
- button,
- [type="button"],
- [type="reset"],
- [type="submit"] {
- &:not(:disabled) {
- cursor: pointer;
- }
- }
-}
-
-// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
-button::-moz-focus-inner,
-[type="button"]::-moz-focus-inner,
-[type="reset"]::-moz-focus-inner,
-[type="submit"]::-moz-focus-inner {
- padding: 0;
- border-style: none;
-}
-
-input[type="radio"],
-input[type="checkbox"] {
- box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
- padding: 0; // 2. Remove the padding in IE 10-
-}
-
-
-input[type="date"],
-input[type="time"],
-input[type="datetime-local"],
-input[type="month"] {
- // Remove the default appearance of temporal inputs to avoid a Mobile Safari
- // bug where setting a custom line-height prevents text from being vertically
- // centered within the input.
- // See https://bugs.webkit.org/show_bug.cgi?id=139848
- // and https://github.com/twbs/bootstrap/issues/11266
- -webkit-appearance: listbox;
-}
-
-textarea {
- overflow: auto; // Remove the default vertical scrollbar in IE.
- // Textareas should really only resize vertically so they don't break their (horizontal) containers.
- resize: vertical;
-}
-
-fieldset {
- // Browsers set a default `min-width: min-content;` on fieldsets,
- // unlike e.g. ``s, which have `min-width: 0;` by default.
- // So we reset that to ensure fieldsets behave more like a standard block element.
- // See https://github.com/twbs/bootstrap/issues/12359
- // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
- min-width: 0;
- // Reset the default outline behavior of fieldsets so they don't affect page layout.
- padding: 0;
- margin: 0;
- border: 0;
-}
-
-// 1. Correct the text wrapping in Edge and IE.
-// 2. Correct the color inheritance from `fieldset` elements in IE.
-legend {
- display: block;
- width: 100%;
- max-width: 100%; // 1
- padding: 0;
- margin-bottom: .5rem;
- @include font-size(1.5rem);
- line-height: inherit;
- color: inherit; // 2
- white-space: normal; // 1
-}
-
-progress {
- vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.
-}
-
-// Correct the cursor style of increment and decrement buttons in Chrome.
-[type="number"]::-webkit-inner-spin-button,
-[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-
-[type="search"] {
- // This overrides the extra rounded corners on search inputs in iOS so that our
- // `.form-control` class can properly style them. Note that this cannot simply
- // be added to `.form-control` as it's not specific enough. For details, see
- // https://github.com/twbs/bootstrap/issues/11586.
- outline-offset: -2px; // 2. Correct the outline style in Safari.
- -webkit-appearance: none;
-}
-
-//
-// Remove the inner padding in Chrome and Safari on macOS.
-//
-
-[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-//
-// 1. Correct the inability to style clickable types in iOS and Safari.
-// 2. Change font properties to `inherit` in Safari.
-//
-
-::-webkit-file-upload-button {
- font: inherit; // 2
- -webkit-appearance: button; // 1
-}
-
-//
-// Correct element displays
-//
-
-output {
- display: inline-block;
-}
-
-summary {
- display: list-item; // Add the correct display in all browsers
- cursor: pointer;
-}
-
-template {
- display: none; // Add the correct display in IE
-}
-
-// Always hide an element with the `hidden` HTML attribute (from PureCSS).
-// Needed for proper display in IE 10-.
-[hidden] {
- display: none !important;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_root.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_root.scss
deleted file mode 100644
index ad550df3..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_root.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-:root {
- // Custom variable values only support SassScript inside `#{}`.
- @each $color, $value in $colors {
- --#{$color}: #{$value};
- }
-
- @each $color, $value in $theme-colors {
- --#{$color}: #{$value};
- }
-
- @each $bp, $value in $grid-breakpoints {
- --breakpoint-#{$bp}: #{$value};
- }
-
- // Use `inspect` for lists so that quoted items keep the quotes.
- // See https://github.com/sass/sass/issues/2383#issuecomment-336349172
- --font-family-sans-serif: #{inspect($font-family-sans-serif)};
- --font-family-monospace: #{inspect($font-family-monospace)};
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_spinners.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_spinners.scss
deleted file mode 100644
index 364a5c1a..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_spinners.scss
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// Rotating border
-//
-
-@keyframes spinner-border {
- to { transform: rotate(360deg); }
-}
-
-.spinner-border {
- display: inline-block;
- width: $spinner-width;
- height: $spinner-height;
- vertical-align: text-bottom;
- border: $spinner-border-width solid currentColor;
- border-right-color: transparent;
- // stylelint-disable-next-line property-blacklist
- border-radius: 50%;
- animation: spinner-border .75s linear infinite;
-}
-
-.spinner-border-sm {
- width: $spinner-width-sm;
- height: $spinner-height-sm;
- border-width: $spinner-border-width-sm;
-}
-
-//
-// Growing circle
-//
-
-@keyframes spinner-grow {
- 0% {
- transform: scale(0);
- }
- 50% {
- opacity: 1;
- }
-}
-
-.spinner-grow {
- display: inline-block;
- width: $spinner-width;
- height: $spinner-height;
- vertical-align: text-bottom;
- background-color: currentColor;
- // stylelint-disable-next-line property-blacklist
- border-radius: 50%;
- opacity: 0;
- animation: spinner-grow .75s linear infinite;
-}
-
-.spinner-grow-sm {
- width: $spinner-width-sm;
- height: $spinner-height-sm;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_tables.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_tables.scss
deleted file mode 100644
index b7ab3d50..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_tables.scss
+++ /dev/null
@@ -1,185 +0,0 @@
-//
-// Basic Bootstrap table
-//
-
-.table {
- width: 100%;
- margin-bottom: $spacer;
- color: $table-color;
- background-color: $table-bg; // Reset for nesting within parents with `background-color`.
-
- th,
- td {
- padding: $table-cell-padding;
- vertical-align: top;
- border-top: $table-border-width solid $table-border-color;
- }
-
- thead th {
- vertical-align: bottom;
- border-bottom: (2 * $table-border-width) solid $table-border-color;
- }
-
- tbody + tbody {
- border-top: (2 * $table-border-width) solid $table-border-color;
- }
-}
-
-
-//
-// Condensed table w/ half padding
-//
-
-.table-sm {
- th,
- td {
- padding: $table-cell-padding-sm;
- }
-}
-
-
-// Border versions
-//
-// Add or remove borders all around the table and between all the columns.
-
-.table-bordered {
- border: $table-border-width solid $table-border-color;
-
- th,
- td {
- border: $table-border-width solid $table-border-color;
- }
-
- thead {
- th,
- td {
- border-bottom-width: 2 * $table-border-width;
- }
- }
-}
-
-.table-borderless {
- th,
- td,
- thead th,
- tbody + tbody {
- border: 0;
- }
-}
-
-// Zebra-striping
-//
-// Default zebra-stripe styles (alternating gray and transparent backgrounds)
-
-.table-striped {
- tbody tr:nth-of-type(#{$table-striped-order}) {
- background-color: $table-accent-bg;
- }
-}
-
-
-// Hover effect
-//
-// Placed here since it has to come after the potential zebra striping
-
-.table-hover {
- tbody tr {
- @include hover {
- color: $table-hover-color;
- background-color: $table-hover-bg;
- }
- }
-}
-
-
-// Table backgrounds
-//
-// Exact selectors below required to override `.table-striped` and prevent
-// inheritance to nested tables.
-
-@each $color, $value in $theme-colors {
- @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));
-}
-
-@include table-row-variant(active, $table-active-bg);
-
-
-// Dark styles
-//
-// Same table markup, but inverted color scheme: dark background and light text.
-
-// stylelint-disable-next-line no-duplicate-selectors
-.table {
- .thead-dark {
- th {
- color: $table-dark-color;
- background-color: $table-dark-bg;
- border-color: $table-dark-border-color;
- }
- }
-
- .thead-light {
- th {
- color: $table-head-color;
- background-color: $table-head-bg;
- border-color: $table-border-color;
- }
- }
-}
-
-.table-dark {
- color: $table-dark-color;
- background-color: $table-dark-bg;
-
- th,
- td,
- thead th {
- border-color: $table-dark-border-color;
- }
-
- &.table-bordered {
- border: 0;
- }
-
- &.table-striped {
- tbody tr:nth-of-type(odd) {
- background-color: $table-dark-accent-bg;
- }
- }
-
- &.table-hover {
- tbody tr {
- @include hover {
- color: $table-dark-hover-color;
- background-color: $table-dark-hover-bg;
- }
- }
- }
-}
-
-
-// Responsive tables
-//
-// Generate series of `.table-responsive-*` classes for configuring the screen
-// size of where your table will overflow.
-
-.table-responsive {
- @each $breakpoint in map-keys($grid-breakpoints) {
- $next: breakpoint-next($breakpoint, $grid-breakpoints);
- $infix: breakpoint-infix($next, $grid-breakpoints);
-
- {$infix} {
- @include media-breakpoint-down($breakpoint) {
- display: block;
- width: 100%;
- overflow-x: auto;
- -webkit-overflow-scrolling: touch;
-
- // Prevent double border on horizontal scroll due to use of `display: block;`
- > .table-bordered {
- border: 0;
- }
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_toasts.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_toasts.scss
deleted file mode 100644
index 6aa5352a..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_toasts.scss
+++ /dev/null
@@ -1,44 +0,0 @@
-.toast {
- max-width: $toast-max-width;
- overflow: hidden; // cheap rounded corners on nested items
- @include font-size($toast-font-size);
- color: $toast-color;
- background-color: $toast-background-color;
- background-clip: padding-box;
- border: $toast-border-width solid $toast-border-color;
- box-shadow: $toast-box-shadow;
- backdrop-filter: blur(10px);
- opacity: 0;
- @include border-radius($toast-border-radius);
-
- &:not(:last-child) {
- margin-bottom: $toast-padding-x;
- }
-
- &.showing {
- opacity: 1;
- }
-
- &.show {
- display: block;
- opacity: 1;
- }
-
- &.hide {
- display: none;
- }
-}
-
-.toast-header {
- display: flex;
- align-items: center;
- padding: $toast-padding-y $toast-padding-x;
- color: $toast-header-color;
- background-color: $toast-header-background-color;
- background-clip: padding-box;
- border-bottom: $toast-border-width solid $toast-header-border-color;
-}
-
-.toast-body {
- padding: $toast-padding-x; // apply to both vertical and horizontal
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_tooltip.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_tooltip.scss
deleted file mode 100644
index 6b3aa62d..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_tooltip.scss
+++ /dev/null
@@ -1,115 +0,0 @@
-// Base class
-.tooltip {
- position: absolute;
- z-index: $zindex-tooltip;
- display: block;
- margin: $tooltip-margin;
- // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
- // So reset our font and text properties to avoid inheriting weird values.
- @include reset-text();
- @include font-size($tooltip-font-size);
- // Allow breaking very long words so they don't overflow the tooltip's bounds
- word-wrap: break-word;
- opacity: 0;
-
- &.show { opacity: $tooltip-opacity; }
-
- .arrow {
- position: absolute;
- display: block;
- width: $tooltip-arrow-width;
- height: $tooltip-arrow-height;
-
- &::before {
- position: absolute;
- content: "";
- border-color: transparent;
- border-style: solid;
- }
- }
-}
-
-.bs-tooltip-top {
- padding: $tooltip-arrow-height 0;
-
- .arrow {
- bottom: 0;
-
- &::before {
- top: 0;
- border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
- border-top-color: $tooltip-arrow-color;
- }
- }
-}
-
-.bs-tooltip-right {
- padding: 0 $tooltip-arrow-height;
-
- .arrow {
- left: 0;
- width: $tooltip-arrow-height;
- height: $tooltip-arrow-width;
-
- &::before {
- right: 0;
- border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
- border-right-color: $tooltip-arrow-color;
- }
- }
-}
-
-.bs-tooltip-bottom {
- padding: $tooltip-arrow-height 0;
-
- .arrow {
- top: 0;
-
- &::before {
- bottom: 0;
- border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
- border-bottom-color: $tooltip-arrow-color;
- }
- }
-}
-
-.bs-tooltip-left {
- padding: 0 $tooltip-arrow-height;
-
- .arrow {
- right: 0;
- width: $tooltip-arrow-height;
- height: $tooltip-arrow-width;
-
- &::before {
- left: 0;
- border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
- border-left-color: $tooltip-arrow-color;
- }
- }
-}
-
-.bs-tooltip-auto {
- &[x-placement^="top"] {
- @extend .bs-tooltip-top;
- }
- &[x-placement^="right"] {
- @extend .bs-tooltip-right;
- }
- &[x-placement^="bottom"] {
- @extend .bs-tooltip-bottom;
- }
- &[x-placement^="left"] {
- @extend .bs-tooltip-left;
- }
-}
-
-// Wrapper for the tooltip content
-.tooltip-inner {
- max-width: $tooltip-max-width;
- padding: $tooltip-padding-y $tooltip-padding-x;
- color: $tooltip-color;
- text-align: center;
- background-color: $tooltip-bg;
- @include border-radius($tooltip-border-radius);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_type.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_type.scss
deleted file mode 100644
index f8ed0906..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_type.scss
+++ /dev/null
@@ -1,125 +0,0 @@
-// stylelint-disable declaration-no-important, selector-list-comma-newline-after
-
-//
-// Headings
-//
-
-h1, h2, h3, h4, h5, h6,
-.h1, .h2, .h3, .h4, .h5, .h6 {
- margin-bottom: $headings-margin-bottom;
- font-family: $headings-font-family;
- font-weight: $headings-font-weight;
- line-height: $headings-line-height;
- color: $headings-color;
-}
-
-h1, .h1 { @include font-size($h1-font-size); }
-h2, .h2 { @include font-size($h2-font-size); }
-h3, .h3 { @include font-size($h3-font-size); }
-h4, .h4 { @include font-size($h4-font-size); }
-h5, .h5 { @include font-size($h5-font-size); }
-h6, .h6 { @include font-size($h6-font-size); }
-
-.lead {
- @include font-size($lead-font-size);
- font-weight: $lead-font-weight;
-}
-
-// Type display classes
-.display-1 {
- @include font-size($display1-size);
- font-weight: $display1-weight;
- line-height: $display-line-height;
-}
-.display-2 {
- @include font-size($display2-size);
- font-weight: $display2-weight;
- line-height: $display-line-height;
-}
-.display-3 {
- @include font-size($display3-size);
- font-weight: $display3-weight;
- line-height: $display-line-height;
-}
-.display-4 {
- @include font-size($display4-size);
- font-weight: $display4-weight;
- line-height: $display-line-height;
-}
-
-
-//
-// Horizontal rules
-//
-
-hr {
- margin-top: $hr-margin-y;
- margin-bottom: $hr-margin-y;
- border: 0;
- border-top: $hr-border-width solid $hr-border-color;
-}
-
-
-//
-// Emphasis
-//
-
-small,
-.small {
- @include font-size($small-font-size);
- font-weight: $font-weight-normal;
-}
-
-mark,
-.mark {
- padding: $mark-padding;
- background-color: $mark-bg;
-}
-
-
-//
-// Lists
-//
-
-.list-unstyled {
- @include list-unstyled;
-}
-
-// Inline turns list items into inline-block
-.list-inline {
- @include list-unstyled;
-}
-.list-inline-item {
- display: inline-block;
-
- &:not(:last-child) {
- margin-right: $list-inline-padding;
- }
-}
-
-
-//
-// Misc
-//
-
-// Builds on `abbr`
-.initialism {
- @include font-size(90%);
- text-transform: uppercase;
-}
-
-// Blockquotes
-.blockquote {
- margin-bottom: $spacer;
- @include font-size($blockquote-font-size);
-}
-
-.blockquote-footer {
- display: block;
- @include font-size($blockquote-small-font-size);
- color: $blockquote-small-color;
-
- &::before {
- content: "\2014\00A0"; // em dash, nbsp
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_utilities.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_utilities.scss
deleted file mode 100644
index a5de31ba..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_utilities.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-@import "utilities/align";
-@import "utilities/background";
-@import "utilities/borders";
-@import "utilities/clearfix";
-@import "utilities/display";
-@import "utilities/embed";
-@import "utilities/flex";
-@import "utilities/float";
-@import "utilities/overflow";
-@import "utilities/position";
-@import "utilities/screenreaders";
-@import "utilities/shadows";
-@import "utilities/sizing";
-@import "utilities/stretched-link";
-@import "utilities/spacing";
-@import "utilities/text";
-@import "utilities/visibility";
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_variables.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_variables.scss
deleted file mode 100644
index d9e88df9..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_variables.scss
+++ /dev/null
@@ -1,1123 +0,0 @@
-// Variables
-//
-// Variables should follow the `$component-state-property-size` formula for
-// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.
-
-// Color system
-
-$white: #fff !default;
-$gray-100: #f8f9fa !default;
-$gray-200: #e9ecef !default;
-$gray-300: #dee2e6 !default;
-$gray-400: #ced4da !default;
-$gray-500: #adb5bd !default;
-$gray-600: #6c757d !default;
-$gray-700: #495057 !default;
-$gray-800: #343a40 !default;
-$gray-900: #212529 !default;
-$black: #000 !default;
-
-$grays: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$grays: map-merge(
- (
- "100": $gray-100,
- "200": $gray-200,
- "300": $gray-300,
- "400": $gray-400,
- "500": $gray-500,
- "600": $gray-600,
- "700": $gray-700,
- "800": $gray-800,
- "900": $gray-900
- ),
- $grays
-);
-
-$blue: #007bff !default;
-$indigo: #6610f2 !default;
-$purple: #6f42c1 !default;
-$pink: #e83e8c !default;
-$red: #dc3545 !default;
-$orange: #fd7e14 !default;
-$yellow: #ffc107 !default;
-$green: #28a745 !default;
-$teal: #20c997 !default;
-$cyan: #17a2b8 !default;
-
-$colors: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$colors: map-merge(
- (
- "blue": $blue,
- "indigo": $indigo,
- "purple": $purple,
- "pink": $pink,
- "red": $red,
- "orange": $orange,
- "yellow": $yellow,
- "green": $green,
- "teal": $teal,
- "cyan": $cyan,
- "white": $white,
- "gray": $gray-600,
- "gray-dark": $gray-800
- ),
- $colors
-);
-
-$primary: $blue !default;
-$secondary: $gray-600 !default;
-$success: $green !default;
-$info: $cyan !default;
-$warning: $yellow !default;
-$danger: $red !default;
-$light: $gray-100 !default;
-$dark: $gray-800 !default;
-
-$theme-colors: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$theme-colors: map-merge(
- (
- "primary": $primary,
- "secondary": $secondary,
- "success": $success,
- "info": $info,
- "warning": $warning,
- "danger": $danger,
- "light": $light,
- "dark": $dark
- ),
- $theme-colors
-);
-
-// Set a specific jump point for requesting color jumps
-$theme-color-interval: 8% !default;
-
-// The yiq lightness value that determines when the lightness of color changes from "dark" to "light". Acceptable values are between 0 and 255.
-$yiq-contrasted-threshold: 150 !default;
-
-// Customize the light and dark text colors for use in our YIQ color contrast function.
-$yiq-text-dark: $gray-900 !default;
-$yiq-text-light: $white !default;
-
-
-// Options
-//
-// Quickly modify global styling by enabling or disabling optional features.
-
-$enable-caret: true !default;
-$enable-rounded: true !default;
-$enable-shadows: false !default;
-$enable-gradients: false !default;
-$enable-transitions: true !default;
-$enable-prefers-reduced-motion-media-query: true !default;
-$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS
-$enable-grid-classes: true !default;
-$enable-pointer-cursor-for-buttons: true !default;
-$enable-print-styles: true !default;
-$enable-responsive-font-sizes: false !default;
-$enable-validation-icons: true !default;
-$enable-deprecation-messages: true !default;
-
-
-// Spacing
-//
-// Control the default styling of most Bootstrap elements by modifying these
-// variables. Mostly focused on spacing.
-// You can add more entries to the $spacers map, should you need more variation.
-
-$spacer: 1rem !default;
-$spacers: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$spacers: map-merge(
- (
- 0: 0,
- 1: ($spacer * .25),
- 2: ($spacer * .5),
- 3: $spacer,
- 4: ($spacer * 1.5),
- 5: ($spacer * 3)
- ),
- $spacers
-);
-
-// This variable affects the `.h-*` and `.w-*` classes.
-$sizes: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$sizes: map-merge(
- (
- 25: 25%,
- 50: 50%,
- 75: 75%,
- 100: 100%,
- auto: auto
- ),
- $sizes
-);
-
-
-// Body
-//
-// Settings for the `` element.
-
-$body-bg: $white !default;
-$body-color: $gray-900 !default;
-
-
-// Links
-//
-// Style anchor elements.
-
-$link-color: theme-color("primary") !default;
-$link-decoration: none !default;
-$link-hover-color: darken($link-color, 15%) !default;
-$link-hover-decoration: underline !default;
-// Darken percentage for links with `.text-*` class (e.g. `.text-success`)
-$emphasized-link-hover-darken-percentage: 15% !default;
-
-// Paragraphs
-//
-// Style p element.
-
-$paragraph-margin-bottom: 1rem !default;
-
-
-// Grid breakpoints
-//
-// Define the minimum dimensions at which your layout will change,
-// adapting to different screen sizes, for use in media queries.
-
-$grid-breakpoints: (
- xs: 0,
- sm: 576px,
- md: 768px,
- lg: 992px,
- xl: 1200px
-) !default;
-
-@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
-@include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints");
-
-
-// Grid containers
-//
-// Define the maximum width of `.container` for different screen sizes.
-
-$container-max-widths: (
- sm: 540px,
- md: 720px,
- lg: 960px,
- xl: 1140px
-) !default;
-
-@include _assert-ascending($container-max-widths, "$container-max-widths");
-
-
-// Grid columns
-//
-// Set the number of columns and specify the width of the gutters.
-
-$grid-columns: 12 !default;
-$grid-gutter-width: 30px !default;
-
-
-// Components
-//
-// Define common padding and border radius sizes and more.
-
-$line-height-lg: 1.5 !default;
-$line-height-sm: 1.5 !default;
-
-$border-width: 1px !default;
-$border-color: $gray-300 !default;
-
-$border-radius: .25rem !default;
-$border-radius-lg: .3rem !default;
-$border-radius-sm: .2rem !default;
-
-$rounded-pill: 50rem !default;
-
-$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;
-$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;
-$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;
-
-$component-active-color: $white !default;
-$component-active-bg: theme-color("primary") !default;
-
-$caret-width: .3em !default;
-$caret-vertical-align: $caret-width * .85 !default;
-$caret-spacing: $caret-width * .85 !default;
-
-$transition-base: all .2s ease-in-out !default;
-$transition-fade: opacity .15s linear !default;
-$transition-collapse: height .35s ease !default;
-
-$embed-responsive-aspect-ratios: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$embed-responsive-aspect-ratios: join(
- (
- (21 9),
- (16 9),
- (4 3),
- (1 1),
- ),
- $embed-responsive-aspect-ratios
-);
-
-// Typography
-//
-// Font, line-height, and color for body text, headings, and more.
-
-// stylelint-disable value-keyword-case
-$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
-$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
-$font-family-base: $font-family-sans-serif !default;
-// stylelint-enable value-keyword-case
-
-$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`
-$font-size-lg: $font-size-base * 1.25 !default;
-$font-size-sm: $font-size-base * .875 !default;
-
-$font-weight-lighter: lighter !default;
-$font-weight-light: 300 !default;
-$font-weight-normal: 400 !default;
-$font-weight-bold: 700 !default;
-$font-weight-bolder: bolder !default;
-
-$font-weight-base: $font-weight-normal !default;
-$line-height-base: 1.5 !default;
-
-$h1-font-size: $font-size-base * 2.5 !default;
-$h2-font-size: $font-size-base * 2 !default;
-$h3-font-size: $font-size-base * 1.75 !default;
-$h4-font-size: $font-size-base * 1.5 !default;
-$h5-font-size: $font-size-base * 1.25 !default;
-$h6-font-size: $font-size-base !default;
-
-$headings-margin-bottom: $spacer / 2 !default;
-$headings-font-family: null !default;
-$headings-font-weight: 500 !default;
-$headings-line-height: 1.2 !default;
-$headings-color: null !default;
-
-$display1-size: 6rem !default;
-$display2-size: 5.5rem !default;
-$display3-size: 4.5rem !default;
-$display4-size: 3.5rem !default;
-
-$display1-weight: 300 !default;
-$display2-weight: 300 !default;
-$display3-weight: 300 !default;
-$display4-weight: 300 !default;
-$display-line-height: $headings-line-height !default;
-
-$lead-font-size: $font-size-base * 1.25 !default;
-$lead-font-weight: 300 !default;
-
-$small-font-size: 80% !default;
-
-$text-muted: $gray-600 !default;
-
-$blockquote-small-color: $gray-600 !default;
-$blockquote-small-font-size: $small-font-size !default;
-$blockquote-font-size: $font-size-base * 1.25 !default;
-
-$hr-border-color: rgba($black, .1) !default;
-$hr-border-width: $border-width !default;
-
-$mark-padding: .2em !default;
-
-$dt-font-weight: $font-weight-bold !default;
-
-$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;
-$nested-kbd-font-weight: $font-weight-bold !default;
-
-$list-inline-padding: .5rem !default;
-
-$mark-bg: #fcf8e3 !default;
-
-$hr-margin-y: $spacer !default;
-
-
-// Tables
-//
-// Customizes the `.table` component with basic values, each used across all table variations.
-
-$table-cell-padding: .75rem !default;
-$table-cell-padding-sm: .3rem !default;
-
-$table-color: $body-color !default;
-$table-bg: null !default;
-$table-accent-bg: rgba($black, .05) !default;
-$table-hover-color: $table-color !default;
-$table-hover-bg: rgba($black, .075) !default;
-$table-active-bg: $table-hover-bg !default;
-
-$table-border-width: $border-width !default;
-$table-border-color: $border-color !default;
-
-$table-head-bg: $gray-200 !default;
-$table-head-color: $gray-700 !default;
-
-$table-dark-color: $white !default;
-$table-dark-bg: $gray-800 !default;
-$table-dark-accent-bg: rgba($white, .05) !default;
-$table-dark-hover-color: $table-dark-color !default;
-$table-dark-hover-bg: rgba($white, .075) !default;
-$table-dark-border-color: lighten($table-dark-bg, 7.5%) !default;
-$table-dark-color: $white !default;
-
-$table-striped-order: odd !default;
-
-$table-caption-color: $text-muted !default;
-
-$table-bg-level: -9 !default;
-$table-border-level: -6 !default;
-
-
-// Buttons + Forms
-//
-// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
-
-$input-btn-padding-y: .375rem !default;
-$input-btn-padding-x: .75rem !default;
-$input-btn-font-family: null !default;
-$input-btn-font-size: $font-size-base !default;
-$input-btn-line-height: $line-height-base !default;
-
-$input-btn-focus-width: .2rem !default;
-$input-btn-focus-color: rgba($component-active-bg, .25) !default;
-$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;
-
-$input-btn-padding-y-sm: .25rem !default;
-$input-btn-padding-x-sm: .5rem !default;
-$input-btn-font-size-sm: $font-size-sm !default;
-$input-btn-line-height-sm: $line-height-sm !default;
-
-$input-btn-padding-y-lg: .5rem !default;
-$input-btn-padding-x-lg: 1rem !default;
-$input-btn-font-size-lg: $font-size-lg !default;
-$input-btn-line-height-lg: $line-height-lg !default;
-
-$input-btn-border-width: $border-width !default;
-
-
-// Buttons
-//
-// For each of Bootstrap's buttons, define text, background, and border color.
-
-$btn-padding-y: $input-btn-padding-y !default;
-$btn-padding-x: $input-btn-padding-x !default;
-$btn-font-family: $input-btn-font-family !default;
-$btn-font-size: $input-btn-font-size !default;
-$btn-line-height: $input-btn-line-height !default;
-
-$btn-padding-y-sm: $input-btn-padding-y-sm !default;
-$btn-padding-x-sm: $input-btn-padding-x-sm !default;
-$btn-font-size-sm: $input-btn-font-size-sm !default;
-$btn-line-height-sm: $input-btn-line-height-sm !default;
-
-$btn-padding-y-lg: $input-btn-padding-y-lg !default;
-$btn-padding-x-lg: $input-btn-padding-x-lg !default;
-$btn-font-size-lg: $input-btn-font-size-lg !default;
-$btn-line-height-lg: $input-btn-line-height-lg !default;
-
-$btn-border-width: $input-btn-border-width !default;
-
-$btn-font-weight: $font-weight-normal !default;
-$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;
-$btn-focus-width: $input-btn-focus-width !default;
-$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;
-$btn-disabled-opacity: .65 !default;
-$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;
-
-$btn-link-disabled-color: $gray-600 !default;
-
-$btn-block-spacing-y: .5rem !default;
-
-// Allows for customizing button radius independently from global border radius
-$btn-border-radius: $border-radius !default;
-$btn-border-radius-lg: $border-radius-lg !default;
-$btn-border-radius-sm: $border-radius-sm !default;
-
-$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
-
-
-// Forms
-
-$label-margin-bottom: .5rem !default;
-
-$input-padding-y: $input-btn-padding-y !default;
-$input-padding-x: $input-btn-padding-x !default;
-$input-font-family: $input-btn-font-family !default;
-$input-font-size: $input-btn-font-size !default;
-$input-font-weight: $font-weight-base !default;
-$input-line-height: $input-btn-line-height !default;
-
-$input-padding-y-sm: $input-btn-padding-y-sm !default;
-$input-padding-x-sm: $input-btn-padding-x-sm !default;
-$input-font-size-sm: $input-btn-font-size-sm !default;
-$input-line-height-sm: $input-btn-line-height-sm !default;
-
-$input-padding-y-lg: $input-btn-padding-y-lg !default;
-$input-padding-x-lg: $input-btn-padding-x-lg !default;
-$input-font-size-lg: $input-btn-font-size-lg !default;
-$input-line-height-lg: $input-btn-line-height-lg !default;
-
-$input-bg: $white !default;
-$input-disabled-bg: $gray-200 !default;
-
-$input-color: $gray-700 !default;
-$input-border-color: $gray-400 !default;
-$input-border-width: $input-btn-border-width !default;
-$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;
-
-$input-border-radius: $border-radius !default;
-$input-border-radius-lg: $border-radius-lg !default;
-$input-border-radius-sm: $border-radius-sm !default;
-
-$input-focus-bg: $input-bg !default;
-$input-focus-border-color: lighten($component-active-bg, 25%) !default;
-$input-focus-color: $input-color !default;
-$input-focus-width: $input-btn-focus-width !default;
-$input-focus-box-shadow: $input-btn-focus-box-shadow !default;
-
-$input-placeholder-color: $gray-600 !default;
-$input-plaintext-color: $body-color !default;
-
-$input-height-border: $input-border-width * 2 !default;
-
-$input-height-inner: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2}) !default;
-$input-height-inner-half: calc(#{$input-line-height * .5em} + #{$input-padding-y}) !default;
-$input-height-inner-quarter: calc(#{$input-line-height * .25em} + #{$input-padding-y / 2}) !default;
-
-$input-height: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2} + #{$input-height-border}) !default;
-$input-height-sm: calc(#{$input-line-height-sm * 1em} + #{$input-btn-padding-y-sm * 2} + #{$input-height-border}) !default;
-$input-height-lg: calc(#{$input-line-height-lg * 1em} + #{$input-btn-padding-y-lg * 2} + #{$input-height-border}) !default;
-
-$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
-
-$form-text-margin-top: .25rem !default;
-
-$form-check-input-gutter: 1.25rem !default;
-$form-check-input-margin-y: .3rem !default;
-$form-check-input-margin-x: .25rem !default;
-
-$form-check-inline-margin-x: .75rem !default;
-$form-check-inline-input-margin-x: .3125rem !default;
-
-$form-grid-gutter-width: 10px !default;
-$form-group-margin-bottom: 1rem !default;
-
-$input-group-addon-color: $input-color !default;
-$input-group-addon-bg: $gray-200 !default;
-$input-group-addon-border-color: $input-border-color !default;
-
-$custom-forms-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
-
-$custom-control-gutter: .5rem !default;
-$custom-control-spacer-x: 1rem !default;
-
-$custom-control-indicator-size: 1rem !default;
-$custom-control-indicator-bg: $input-bg !default;
-
-$custom-control-indicator-bg-size: 50% 50% !default;
-$custom-control-indicator-box-shadow: $input-box-shadow !default;
-$custom-control-indicator-border-color: $gray-500 !default;
-$custom-control-indicator-border-width: $input-border-width !default;
-
-$custom-control-indicator-disabled-bg: $input-disabled-bg !default;
-$custom-control-label-disabled-color: $gray-600 !default;
-
-$custom-control-indicator-checked-color: $component-active-color !default;
-$custom-control-indicator-checked-bg: $component-active-bg !default;
-$custom-control-indicator-checked-disabled-bg: rgba(theme-color("primary"), .5) !default;
-$custom-control-indicator-checked-box-shadow: none !default;
-$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;
-
-$custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;
-$custom-control-indicator-focus-border-color: $input-focus-border-color !default;
-
-$custom-control-indicator-active-color: $component-active-color !default;
-$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;
-$custom-control-indicator-active-box-shadow: none !default;
-$custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;
-
-$custom-checkbox-indicator-border-radius: $border-radius !default;
-$custom-checkbox-indicator-icon-checked: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"), "#", "%23") !default;
-
-$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;
-$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;
-$custom-checkbox-indicator-icon-indeterminate: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3e%3c/svg%3e"), "#", "%23") !default;
-$custom-checkbox-indicator-indeterminate-box-shadow: none !default;
-$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;
-
-$custom-radio-indicator-border-radius: 50% !default;
-$custom-radio-indicator-icon-checked: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3e%3c/svg%3e"), "#", "%23") !default;
-
-$custom-switch-width: $custom-control-indicator-size * 1.75 !default;
-$custom-switch-indicator-border-radius: $custom-control-indicator-size / 2 !default;
-$custom-switch-indicator-size: calc(#{$custom-control-indicator-size} - #{$custom-control-indicator-border-width * 4}) !default;
-
-$custom-select-padding-y: $input-padding-y !default;
-$custom-select-padding-x: $input-padding-x !default;
-$custom-select-font-family: $input-font-family !default;
-$custom-select-font-size: $input-font-size !default;
-$custom-select-height: $input-height !default;
-$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator
-$custom-select-font-weight: $input-font-weight !default;
-$custom-select-line-height: $input-line-height !default;
-$custom-select-color: $input-color !default;
-$custom-select-disabled-color: $gray-600 !default;
-$custom-select-bg: $input-bg !default;
-$custom-select-disabled-bg: $gray-200 !default;
-$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions
-$custom-select-indicator-color: $gray-800 !default;
-$custom-select-indicator: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e"), "#", "%23") !default;
-$custom-select-background: $custom-select-indicator no-repeat right $custom-select-padding-x center / $custom-select-bg-size !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)
-
-$custom-select-feedback-icon-padding-right: calc((1em + #{2 * $custom-select-padding-y}) * 3 / 4 + #{$custom-select-padding-x + $custom-select-indicator-padding}) !default;
-$custom-select-feedback-icon-position: center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;
-$custom-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;
-
-$custom-select-border-width: $input-border-width !default;
-$custom-select-border-color: $input-border-color !default;
-$custom-select-border-radius: $border-radius !default;
-$custom-select-box-shadow: inset 0 1px 2px rgba($black, .075) !default;
-
-$custom-select-focus-border-color: $input-focus-border-color !default;
-$custom-select-focus-width: $input-focus-width !default;
-$custom-select-focus-box-shadow: 0 0 0 $custom-select-focus-width $input-btn-focus-color !default;
-
-$custom-select-padding-y-sm: $input-padding-y-sm !default;
-$custom-select-padding-x-sm: $input-padding-x-sm !default;
-$custom-select-font-size-sm: $input-font-size-sm !default;
-$custom-select-height-sm: $input-height-sm !default;
-
-$custom-select-padding-y-lg: $input-padding-y-lg !default;
-$custom-select-padding-x-lg: $input-padding-x-lg !default;
-$custom-select-font-size-lg: $input-font-size-lg !default;
-$custom-select-height-lg: $input-height-lg !default;
-
-$custom-range-track-width: 100% !default;
-$custom-range-track-height: .5rem !default;
-$custom-range-track-cursor: pointer !default;
-$custom-range-track-bg: $gray-300 !default;
-$custom-range-track-border-radius: 1rem !default;
-$custom-range-track-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;
-
-$custom-range-thumb-width: 1rem !default;
-$custom-range-thumb-height: $custom-range-thumb-width !default;
-$custom-range-thumb-bg: $component-active-bg !default;
-$custom-range-thumb-border: 0 !default;
-$custom-range-thumb-border-radius: 1rem !default;
-$custom-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;
-$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;
-$custom-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in IE/Edge
-$custom-range-thumb-active-bg: lighten($component-active-bg, 35%) !default;
-$custom-range-thumb-disabled-bg: $gray-500 !default;
-
-$custom-file-height: $input-height !default;
-$custom-file-height-inner: $input-height-inner !default;
-$custom-file-focus-border-color: $input-focus-border-color !default;
-$custom-file-focus-box-shadow: $input-focus-box-shadow !default;
-$custom-file-disabled-bg: $input-disabled-bg !default;
-
-$custom-file-padding-y: $input-padding-y !default;
-$custom-file-padding-x: $input-padding-x !default;
-$custom-file-line-height: $input-line-height !default;
-$custom-file-font-family: $input-font-family !default;
-$custom-file-font-weight: $input-font-weight !default;
-$custom-file-color: $input-color !default;
-$custom-file-bg: $input-bg !default;
-$custom-file-border-width: $input-border-width !default;
-$custom-file-border-color: $input-border-color !default;
-$custom-file-border-radius: $input-border-radius !default;
-$custom-file-box-shadow: $input-box-shadow !default;
-$custom-file-button-color: $custom-file-color !default;
-$custom-file-button-bg: $input-group-addon-bg !default;
-$custom-file-text: (
- en: "Browse"
-) !default;
-
-
-// Form validation
-
-$form-feedback-margin-top: $form-text-margin-top !default;
-$form-feedback-font-size: $small-font-size !default;
-$form-feedback-valid-color: theme-color("success") !default;
-$form-feedback-invalid-color: theme-color("danger") !default;
-
-$form-feedback-icon-valid-color: $form-feedback-valid-color !default;
-$form-feedback-icon-valid: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"), "#", "%23") !default;
-$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
-$form-feedback-icon-invalid: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$form-feedback-icon-invalid-color}' viewBox='-2 -2 7 7'%3e%3cpath stroke='#{$form-feedback-icon-invalid-color}' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"), "#", "%23") !default;
-
-$form-validation-states: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$form-validation-states: map-merge(
- (
- "valid": (
- "color": $form-feedback-valid-color,
- "icon": $form-feedback-icon-valid
- ),
- "invalid": (
- "color": $form-feedback-invalid-color,
- "icon": $form-feedback-icon-invalid
- ),
- ),
- $form-validation-states
-);
-
-// Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-
-$zindex-dropdown: 1000 !default;
-$zindex-sticky: 1020 !default;
-$zindex-fixed: 1030 !default;
-$zindex-modal-backdrop: 1040 !default;
-$zindex-modal: 1050 !default;
-$zindex-popover: 1060 !default;
-$zindex-tooltip: 1070 !default;
-
-
-// Navs
-
-$nav-link-padding-y: .5rem !default;
-$nav-link-padding-x: 1rem !default;
-$nav-link-disabled-color: $gray-600 !default;
-
-$nav-tabs-border-color: $gray-300 !default;
-$nav-tabs-border-width: $border-width !default;
-$nav-tabs-border-radius: $border-radius !default;
-$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;
-$nav-tabs-link-active-color: $gray-700 !default;
-$nav-tabs-link-active-bg: $body-bg !default;
-$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;
-
-$nav-pills-border-radius: $border-radius !default;
-$nav-pills-link-active-color: $component-active-color !default;
-$nav-pills-link-active-bg: $component-active-bg !default;
-
-$nav-divider-color: $gray-200 !default;
-$nav-divider-margin-y: $spacer / 2 !default;
-
-
-// Navbar
-
-$navbar-padding-y: $spacer / 2 !default;
-$navbar-padding-x: $spacer !default;
-
-$navbar-nav-link-padding-x: .5rem !default;
-
-$navbar-brand-font-size: $font-size-lg !default;
-// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
-$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;
-$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;
-$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;
-
-$navbar-toggler-padding-y: .25rem !default;
-$navbar-toggler-padding-x: .75rem !default;
-$navbar-toggler-font-size: $font-size-lg !default;
-$navbar-toggler-border-radius: $btn-border-radius !default;
-
-$navbar-dark-color: rgba($white, .5) !default;
-$navbar-dark-hover-color: rgba($white, .75) !default;
-$navbar-dark-active-color: $white !default;
-$navbar-dark-disabled-color: rgba($white, .25) !default;
-$navbar-dark-toggler-icon-bg: str-replace(url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"), "#", "%23") !default;
-$navbar-dark-toggler-border-color: rgba($white, .1) !default;
-
-$navbar-light-color: rgba($black, .5) !default;
-$navbar-light-hover-color: rgba($black, .7) !default;
-$navbar-light-active-color: rgba($black, .9) !default;
-$navbar-light-disabled-color: rgba($black, .3) !default;
-$navbar-light-toggler-icon-bg: str-replace(url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"), "#", "%23") !default;
-$navbar-light-toggler-border-color: rgba($black, .1) !default;
-
-$navbar-light-brand-color: $navbar-light-active-color !default;
-$navbar-light-brand-hover-color: $navbar-light-active-color !default;
-$navbar-dark-brand-color: $navbar-dark-active-color !default;
-$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;
-
-
-// Dropdowns
-//
-// Dropdown menu container and contents.
-
-$dropdown-min-width: 10rem !default;
-$dropdown-padding-y: .5rem !default;
-$dropdown-spacer: .125rem !default;
-$dropdown-font-size: $font-size-base !default;
-$dropdown-color: $body-color !default;
-$dropdown-bg: $white !default;
-$dropdown-border-color: rgba($black, .15) !default;
-$dropdown-border-radius: $border-radius !default;
-$dropdown-border-width: $border-width !default;
-$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default;
-$dropdown-divider-bg: $gray-200 !default;
-$dropdown-divider-margin-y: $nav-divider-margin-y !default;
-$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;
-
-$dropdown-link-color: $gray-900 !default;
-$dropdown-link-hover-color: darken($gray-900, 5%) !default;
-$dropdown-link-hover-bg: $gray-100 !default;
-
-$dropdown-link-active-color: $component-active-color !default;
-$dropdown-link-active-bg: $component-active-bg !default;
-
-$dropdown-link-disabled-color: $gray-600 !default;
-
-$dropdown-item-padding-y: .25rem !default;
-$dropdown-item-padding-x: 1.5rem !default;
-
-$dropdown-header-color: $gray-600 !default;
-
-
-// Pagination
-
-$pagination-padding-y: .5rem !default;
-$pagination-padding-x: .75rem !default;
-$pagination-padding-y-sm: .25rem !default;
-$pagination-padding-x-sm: .5rem !default;
-$pagination-padding-y-lg: .75rem !default;
-$pagination-padding-x-lg: 1.5rem !default;
-$pagination-line-height: 1.25 !default;
-
-$pagination-color: $link-color !default;
-$pagination-bg: $white !default;
-$pagination-border-width: $border-width !default;
-$pagination-border-color: $gray-300 !default;
-
-$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;
-$pagination-focus-outline: 0 !default;
-
-$pagination-hover-color: $link-hover-color !default;
-$pagination-hover-bg: $gray-200 !default;
-$pagination-hover-border-color: $gray-300 !default;
-
-$pagination-active-color: $component-active-color !default;
-$pagination-active-bg: $component-active-bg !default;
-$pagination-active-border-color: $pagination-active-bg !default;
-
-$pagination-disabled-color: $gray-600 !default;
-$pagination-disabled-bg: $white !default;
-$pagination-disabled-border-color: $gray-300 !default;
-
-
-// Jumbotron
-
-$jumbotron-padding: 2rem !default;
-$jumbotron-color: null !default;
-$jumbotron-bg: $gray-200 !default;
-
-
-// Cards
-
-$card-spacer-y: .75rem !default;
-$card-spacer-x: 1.25rem !default;
-$card-border-width: $border-width !default;
-$card-border-radius: $border-radius !default;
-$card-border-color: rgba($black, .125) !default;
-$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;
-$card-cap-bg: rgba($black, .03) !default;
-$card-cap-color: null !default;
-$card-color: null !default;
-$card-bg: $white !default;
-
-$card-img-overlay-padding: 1.25rem !default;
-
-$card-group-margin: $grid-gutter-width / 2 !default;
-$card-deck-margin: $card-group-margin !default;
-
-$card-columns-count: 3 !default;
-$card-columns-gap: 1.25rem !default;
-$card-columns-margin: $card-spacer-y !default;
-
-
-// Tooltips
-
-$tooltip-font-size: $font-size-sm !default;
-$tooltip-max-width: 200px !default;
-$tooltip-color: $white !default;
-$tooltip-bg: $black !default;
-$tooltip-border-radius: $border-radius !default;
-$tooltip-opacity: .9 !default;
-$tooltip-padding-y: .25rem !default;
-$tooltip-padding-x: .5rem !default;
-$tooltip-margin: 0 !default;
-
-$tooltip-arrow-width: .8rem !default;
-$tooltip-arrow-height: .4rem !default;
-$tooltip-arrow-color: $tooltip-bg !default;
-
-// Form tooltips must come after regular tooltips
-$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;
-$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;
-$form-feedback-tooltip-font-size: $tooltip-font-size !default;
-$form-feedback-tooltip-line-height: $line-height-base !default;
-$form-feedback-tooltip-opacity: $tooltip-opacity !default;
-$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;
-
-
-// Popovers
-
-$popover-font-size: $font-size-sm !default;
-$popover-bg: $white !default;
-$popover-max-width: 276px !default;
-$popover-border-width: $border-width !default;
-$popover-border-color: rgba($black, .2) !default;
-$popover-border-radius: $border-radius-lg !default;
-$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;
-
-$popover-header-bg: darken($popover-bg, 3%) !default;
-$popover-header-color: $headings-color !default;
-$popover-header-padding-y: .5rem !default;
-$popover-header-padding-x: .75rem !default;
-
-$popover-body-color: $body-color !default;
-$popover-body-padding-y: $popover-header-padding-y !default;
-$popover-body-padding-x: $popover-header-padding-x !default;
-
-$popover-arrow-width: 1rem !default;
-$popover-arrow-height: .5rem !default;
-$popover-arrow-color: $popover-bg !default;
-
-$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;
-
-
-// Toasts
-
-$toast-max-width: 350px !default;
-$toast-padding-x: .75rem !default;
-$toast-padding-y: .25rem !default;
-$toast-font-size: .875rem !default;
-$toast-color: null !default;
-$toast-background-color: rgba($white, .85) !default;
-$toast-border-width: 1px !default;
-$toast-border-color: rgba(0, 0, 0, .1) !default;
-$toast-border-radius: .25rem !default;
-$toast-box-shadow: 0 .25rem .75rem rgba($black, .1) !default;
-
-$toast-header-color: $gray-600 !default;
-$toast-header-background-color: rgba($white, .85) !default;
-$toast-header-border-color: rgba(0, 0, 0, .05) !default;
-
-
-// Badges
-
-$badge-font-size: 75% !default;
-$badge-font-weight: $font-weight-bold !default;
-$badge-padding-y: .25em !default;
-$badge-padding-x: .4em !default;
-$badge-border-radius: $border-radius !default;
-
-$badge-transition: $btn-transition !default;
-$badge-focus-width: $input-btn-focus-width !default;
-
-$badge-pill-padding-x: .6em !default;
-// Use a higher than normal value to ensure completely rounded edges when
-// customizing padding or font-size on labels.
-$badge-pill-border-radius: 10rem !default;
-
-
-// Modals
-
-// Padding applied to the modal body
-$modal-inner-padding: 1rem !default;
-
-$modal-dialog-margin: .5rem !default;
-$modal-dialog-margin-y-sm-up: 1.75rem !default;
-
-$modal-title-line-height: $line-height-base !default;
-
-$modal-content-color: null !default;
-$modal-content-bg: $white !default;
-$modal-content-border-color: rgba($black, .2) !default;
-$modal-content-border-width: $border-width !default;
-$modal-content-border-radius: $border-radius-lg !default;
-$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;
-$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;
-
-$modal-backdrop-bg: $black !default;
-$modal-backdrop-opacity: .5 !default;
-$modal-header-border-color: $border-color !default;
-$modal-footer-border-color: $modal-header-border-color !default;
-$modal-header-border-width: $modal-content-border-width !default;
-$modal-footer-border-width: $modal-header-border-width !default;
-$modal-header-padding-y: 1rem !default;
-$modal-header-padding-x: 1rem !default;
-$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility
-
-$modal-xl: 1140px !default;
-$modal-lg: 800px !default;
-$modal-md: 500px !default;
-$modal-sm: 300px !default;
-
-$modal-fade-transform: translate(0, -50px) !default;
-$modal-show-transform: none !default;
-$modal-transition: transform .3s ease-out !default;
-
-
-// Alerts
-//
-// Define alert colors, border radius, and padding.
-
-$alert-padding-y: .75rem !default;
-$alert-padding-x: 1.25rem !default;
-$alert-margin-bottom: 1rem !default;
-$alert-border-radius: $border-radius !default;
-$alert-link-font-weight: $font-weight-bold !default;
-$alert-border-width: $border-width !default;
-
-$alert-bg-level: -10 !default;
-$alert-border-level: -9 !default;
-$alert-color-level: 6 !default;
-
-
-// Progress bars
-
-$progress-height: 1rem !default;
-$progress-font-size: $font-size-base * .75 !default;
-$progress-bg: $gray-200 !default;
-$progress-border-radius: $border-radius !default;
-$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;
-$progress-bar-color: $white !default;
-$progress-bar-bg: theme-color("primary") !default;
-$progress-bar-animation-timing: 1s linear infinite !default;
-$progress-bar-transition: width .6s ease !default;
-
-
-// List group
-
-$list-group-color: null !default;
-$list-group-bg: $white !default;
-$list-group-border-color: rgba($black, .125) !default;
-$list-group-border-width: $border-width !default;
-$list-group-border-radius: $border-radius !default;
-
-$list-group-item-padding-y: .75rem !default;
-$list-group-item-padding-x: 1.25rem !default;
-
-$list-group-hover-bg: $gray-100 !default;
-$list-group-active-color: $component-active-color !default;
-$list-group-active-bg: $component-active-bg !default;
-$list-group-active-border-color: $list-group-active-bg !default;
-
-$list-group-disabled-color: $gray-600 !default;
-$list-group-disabled-bg: $list-group-bg !default;
-
-$list-group-action-color: $gray-700 !default;
-$list-group-action-hover-color: $list-group-action-color !default;
-
-$list-group-action-active-color: $body-color !default;
-$list-group-action-active-bg: $gray-200 !default;
-
-
-// Image thumbnails
-
-$thumbnail-padding: .25rem !default;
-$thumbnail-bg: $body-bg !default;
-$thumbnail-border-width: $border-width !default;
-$thumbnail-border-color: $gray-300 !default;
-$thumbnail-border-radius: $border-radius !default;
-$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;
-
-
-// Figures
-
-$figure-caption-font-size: 90% !default;
-$figure-caption-color: $gray-600 !default;
-
-
-// Breadcrumbs
-
-$breadcrumb-padding-y: .75rem !default;
-$breadcrumb-padding-x: 1rem !default;
-$breadcrumb-item-padding: .5rem !default;
-
-$breadcrumb-margin-bottom: 1rem !default;
-
-$breadcrumb-bg: $gray-200 !default;
-$breadcrumb-divider-color: $gray-600 !default;
-$breadcrumb-active-color: $gray-600 !default;
-$breadcrumb-divider: quote("/") !default;
-
-$breadcrumb-border-radius: $border-radius !default;
-
-
-// Carousel
-
-$carousel-control-color: $white !default;
-$carousel-control-width: 15% !default;
-$carousel-control-opacity: .5 !default;
-$carousel-control-hover-opacity: .9 !default;
-$carousel-control-transition: opacity .15s ease !default;
-
-$carousel-indicator-width: 30px !default;
-$carousel-indicator-height: 3px !default;
-$carousel-indicator-hit-area-height: 10px !default;
-$carousel-indicator-spacer: 3px !default;
-$carousel-indicator-active-bg: $white !default;
-$carousel-indicator-transition: opacity .6s ease !default;
-
-$carousel-caption-width: 70% !default;
-$carousel-caption-color: $white !default;
-
-$carousel-control-icon-width: 20px !default;
-
-$carousel-control-prev-icon-bg: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"), "#", "%23") !default;
-$carousel-control-next-icon-bg: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"), "#", "%23") !default;
-
-$carousel-transition-duration: .6s !default;
-$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
-
-
-// Spinners
-
-$spinner-width: 2rem !default;
-$spinner-height: $spinner-width !default;
-$spinner-border-width: .25em !default;
-
-$spinner-width-sm: 1rem !default;
-$spinner-height-sm: $spinner-width-sm !default;
-$spinner-border-width-sm: .2em !default;
-
-
-// Close
-
-$close-font-size: $font-size-base * 1.5 !default;
-$close-font-weight: $font-weight-bold !default;
-$close-color: $black !default;
-$close-text-shadow: 0 1px 0 $white !default;
-
-
-// Code
-
-$code-font-size: 87.5% !default;
-$code-color: $pink !default;
-
-$kbd-padding-y: .2rem !default;
-$kbd-padding-x: .4rem !default;
-$kbd-font-size: $code-font-size !default;
-$kbd-color: $white !default;
-$kbd-bg: $gray-900 !default;
-
-$pre-color: $gray-900 !default;
-$pre-scrollable-max-height: 340px !default;
-
-
-// Utilities
-
-$displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;
-$overflows: auto, hidden !default;
-$positions: static, relative, absolute, fixed, sticky !default;
-
-
-// Printing
-
-$print-page-size: a3 !default;
-$print-body-min-width: map-get($grid-breakpoints, "lg") !default;
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/bootstrap-grid.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/bootstrap-grid.scss
deleted file mode 100644
index d5f92a16..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/bootstrap-grid.scss
+++ /dev/null
@@ -1,29 +0,0 @@
-/*!
- * Bootstrap Grid v4.3.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 The Bootstrap Authors
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-html {
- box-sizing: border-box;
- -ms-overflow-style: scrollbar;
-}
-
-*,
-*::before,
-*::after {
- box-sizing: inherit;
-}
-
-@import "functions";
-@import "variables";
-
-@import "mixins/breakpoints";
-@import "mixins/grid-framework";
-@import "mixins/grid";
-
-@import "grid";
-@import "utilities/display";
-@import "utilities/flex";
-@import "utilities/spacing";
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/bootstrap-reboot.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/bootstrap-reboot.scss
deleted file mode 100644
index 2983f3f6..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/bootstrap-reboot.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-/*!
- * Bootstrap Reboot v4.3.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 The Bootstrap Authors
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
- */
-
-@import "functions";
-@import "variables";
-@import "mixins";
-@import "reboot";
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_alert.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_alert.scss
deleted file mode 100644
index db5a7eb4..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_alert.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-@mixin alert-variant($background, $border, $color) {
- color: $color;
- @include gradient-bg($background);
- border-color: $border;
-
- hr {
- border-top-color: darken($border, 5%);
- }
-
- .alert-link {
- color: darken($color, 10%);
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_background-variant.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_background-variant.scss
deleted file mode 100644
index 494439d2..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_background-variant.scss
+++ /dev/null
@@ -1,21 +0,0 @@
-// stylelint-disable declaration-no-important
-
-// Contextual backgrounds
-
-@mixin bg-variant($parent, $color) {
- #{$parent} {
- background-color: $color !important;
- }
- a#{$parent},
- button#{$parent} {
- @include hover-focus {
- background-color: darken($color, 10%) !important;
- }
- }
-}
-
-@mixin bg-gradient-variant($parent, $color) {
- #{$parent} {
- background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_badge.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_badge.scss
deleted file mode 100644
index 64b29cb5..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_badge.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-@mixin badge-variant($bg) {
- color: color-yiq($bg);
- background-color: $bg;
-
- @at-root a#{&} {
- @include hover-focus {
- color: color-yiq($bg);
- background-color: darken($bg, 10%);
- }
-
- &:focus,
- &.focus {
- outline: 0;
- box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_border-radius.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_border-radius.scss
deleted file mode 100644
index 88aeb37d..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_border-radius.scss
+++ /dev/null
@@ -1,63 +0,0 @@
-// stylelint-disable property-blacklist
-// Single side border-radius
-
-@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
- @if $enable-rounded {
- border-radius: $radius;
- }
- @else if $fallback-border-radius != false {
- border-radius: $fallback-border-radius;
- }
-}
-
-@mixin border-top-radius($radius) {
- @if $enable-rounded {
- border-top-left-radius: $radius;
- border-top-right-radius: $radius;
- }
-}
-
-@mixin border-right-radius($radius) {
- @if $enable-rounded {
- border-top-right-radius: $radius;
- border-bottom-right-radius: $radius;
- }
-}
-
-@mixin border-bottom-radius($radius) {
- @if $enable-rounded {
- border-bottom-right-radius: $radius;
- border-bottom-left-radius: $radius;
- }
-}
-
-@mixin border-left-radius($radius) {
- @if $enable-rounded {
- border-top-left-radius: $radius;
- border-bottom-left-radius: $radius;
- }
-}
-
-@mixin border-top-left-radius($radius) {
- @if $enable-rounded {
- border-top-left-radius: $radius;
- }
-}
-
-@mixin border-top-right-radius($radius) {
- @if $enable-rounded {
- border-top-right-radius: $radius;
- }
-}
-
-@mixin border-bottom-right-radius($radius) {
- @if $enable-rounded {
- border-bottom-right-radius: $radius;
- }
-}
-
-@mixin border-bottom-left-radius($radius) {
- @if $enable-rounded {
- border-bottom-left-radius: $radius;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_box-shadow.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_box-shadow.scss
deleted file mode 100644
index 0726d435..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_box-shadow.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-@mixin box-shadow($shadow...) {
- @if $enable-shadows {
- $result: ();
-
- @if (length($shadow) == 1) {
- // We can pass `@include box-shadow(none);`
- $result: $shadow;
- } @else {
- // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`
- @for $i from 1 through length($shadow) {
- @if nth($shadow, $i) != "none" {
- $result: append($result, nth($shadow, $i), "comma");
- }
- }
- }
- @if (length($result) > 0) {
- box-shadow: $result;
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_buttons.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_buttons.scss
deleted file mode 100644
index eee903f8..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_buttons.scss
+++ /dev/null
@@ -1,107 +0,0 @@
-// Button variants
-//
-// Easily pump out default styles, as well as :hover, :focus, :active,
-// and disabled options for all buttons
-
-@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {
- color: color-yiq($background);
- @include gradient-bg($background);
- border-color: $border;
- @include box-shadow($btn-box-shadow);
-
- @include hover {
- color: color-yiq($hover-background);
- @include gradient-bg($hover-background);
- border-color: $hover-border;
- }
-
- &:focus,
- &.focus {
- // Avoid using mixin so we can pass custom focus shadow properly
- @if $enable-shadows {
- box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
- } @else {
- box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
- }
- }
-
- // Disabled comes first so active can properly restyle
- &.disabled,
- &:disabled {
- color: color-yiq($background);
- background-color: $background;
- border-color: $border;
- // Remove CSS gradients if they're enabled
- @if $enable-gradients {
- background-image: none;
- }
- }
-
- &:not(:disabled):not(.disabled):active,
- &:not(:disabled):not(.disabled).active,
- .show > &.dropdown-toggle {
- color: color-yiq($active-background);
- background-color: $active-background;
- @if $enable-gradients {
- background-image: none; // Remove the gradient for the pressed/active state
- }
- border-color: $active-border;
-
- &:focus {
- // Avoid using mixin so we can pass custom focus shadow properly
- @if $enable-shadows and $btn-active-box-shadow != none {
- box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
- } @else {
- box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
- }
- }
- }
-}
-
-@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {
- color: $color;
- border-color: $color;
-
- @include hover {
- color: $color-hover;
- background-color: $active-background;
- border-color: $active-border;
- }
-
- &:focus,
- &.focus {
- box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
- }
-
- &.disabled,
- &:disabled {
- color: $color;
- background-color: transparent;
- }
-
- &:not(:disabled):not(.disabled):active,
- &:not(:disabled):not(.disabled).active,
- .show > &.dropdown-toggle {
- color: color-yiq($active-background);
- background-color: $active-background;
- border-color: $active-border;
-
- &:focus {
- // Avoid using mixin so we can pass custom focus shadow properly
- @if $enable-shadows and $btn-active-box-shadow != none {
- box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);
- } @else {
- box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
- }
- }
- }
-}
-
-// Button sizes
-@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {
- padding: $padding-y $padding-x;
- @include font-size($font-size);
- line-height: $line-height;
- // Manually declare to provide an override to the browser default
- @include border-radius($border-radius, 0);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_caret.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_caret.scss
deleted file mode 100644
index 8ecef65b..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_caret.scss
+++ /dev/null
@@ -1,62 +0,0 @@
-@mixin caret-down {
- border-top: $caret-width solid;
- border-right: $caret-width solid transparent;
- border-bottom: 0;
- border-left: $caret-width solid transparent;
-}
-
-@mixin caret-up {
- border-top: 0;
- border-right: $caret-width solid transparent;
- border-bottom: $caret-width solid;
- border-left: $caret-width solid transparent;
-}
-
-@mixin caret-right {
- border-top: $caret-width solid transparent;
- border-right: 0;
- border-bottom: $caret-width solid transparent;
- border-left: $caret-width solid;
-}
-
-@mixin caret-left {
- border-top: $caret-width solid transparent;
- border-right: $caret-width solid;
- border-bottom: $caret-width solid transparent;
-}
-
-@mixin caret($direction: down) {
- @if $enable-caret {
- &::after {
- display: inline-block;
- margin-left: $caret-spacing;
- vertical-align: $caret-vertical-align;
- content: "";
- @if $direction == down {
- @include caret-down;
- } @else if $direction == up {
- @include caret-up;
- } @else if $direction == right {
- @include caret-right;
- }
- }
-
- @if $direction == left {
- &::after {
- display: none;
- }
-
- &::before {
- display: inline-block;
- margin-right: $caret-spacing;
- vertical-align: $caret-vertical-align;
- content: "";
- @include caret-left;
- }
- }
-
- &:empty::after {
- margin-left: 0;
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_float.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_float.scss
deleted file mode 100644
index adff88e7..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_float.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-// stylelint-disable declaration-no-important
-
-@mixin float-left {
- float: left !important;
- @include deprecate("The `float-left` mixin", "v4.3.0", "v5");
-}
-@mixin float-right {
- float: right !important;
- @include deprecate("The `float-right` mixin", "v4.3.0", "v5");
-}
-@mixin float-none {
- float: none !important;
- @include deprecate("The `float-none` mixin", "v4.3.0", "v5");
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_forms.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_forms.scss
deleted file mode 100644
index ea8a91a0..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_forms.scss
+++ /dev/null
@@ -1,192 +0,0 @@
-// Form control focus state
-//
-// Generate a customized focus state and for any input with the specified color,
-// which defaults to the `$input-focus-border-color` variable.
-//
-// We highly encourage you to not customize the default value, but instead use
-// this to tweak colors on an as-needed basis. This aesthetic change is based on
-// WebKit's default styles, but applicable to a wider range of browsers. Its
-// usability and accessibility should be taken into account with any change.
-//
-// Example usage: change the default blue border and shadow to white for better
-// contrast against a dark gray background.
-@mixin form-control-focus() {
- &:focus {
- color: $input-focus-color;
- background-color: $input-focus-bg;
- border-color: $input-focus-border-color;
- outline: 0;
- // Avoid using mixin so we can pass custom focus shadow properly
- @if $enable-shadows {
- box-shadow: $input-box-shadow, $input-focus-box-shadow;
- } @else {
- box-shadow: $input-focus-box-shadow;
- }
- }
-}
-
-
-@mixin form-validation-state($state, $color, $icon) {
- .#{$state}-feedback {
- display: none;
- width: 100%;
- margin-top: $form-feedback-margin-top;
- @include font-size($form-feedback-font-size);
- color: $color;
- }
-
- .#{$state}-tooltip {
- position: absolute;
- top: 100%;
- z-index: 5;
- display: none;
- max-width: 100%; // Contain to parent when possible
- padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
- margin-top: .1rem;
- @include font-size($form-feedback-tooltip-font-size);
- line-height: $form-feedback-tooltip-line-height;
- color: color-yiq($color);
- background-color: rgba($color, $form-feedback-tooltip-opacity);
- @include border-radius($form-feedback-tooltip-border-radius);
- }
-
- .form-control {
- .was-validated &:#{$state},
- &.is-#{$state} {
- border-color: $color;
-
- @if $enable-validation-icons {
- padding-right: $input-height-inner;
- background-image: $icon;
- background-repeat: no-repeat;
- background-position: center right $input-height-inner-quarter;
- background-size: $input-height-inner-half $input-height-inner-half;
- }
-
- &:focus {
- border-color: $color;
- box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
- }
-
- ~ .#{$state}-feedback,
- ~ .#{$state}-tooltip {
- display: block;
- }
- }
- }
-
- // stylelint-disable-next-line selector-no-qualifying-type
- textarea.form-control {
- .was-validated &:#{$state},
- &.is-#{$state} {
- @if $enable-validation-icons {
- padding-right: $input-height-inner;
- background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
- }
- }
- }
-
- .custom-select {
- .was-validated &:#{$state},
- &.is-#{$state} {
- border-color: $color;
-
- @if $enable-validation-icons {
- padding-right: $custom-select-feedback-icon-padding-right;
- background: $custom-select-background, $icon $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;
- }
-
- &:focus {
- border-color: $color;
- box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
- }
-
- ~ .#{$state}-feedback,
- ~ .#{$state}-tooltip {
- display: block;
- }
- }
- }
-
-
- .form-control-file {
- .was-validated &:#{$state},
- &.is-#{$state} {
- ~ .#{$state}-feedback,
- ~ .#{$state}-tooltip {
- display: block;
- }
- }
- }
-
- .form-check-input {
- .was-validated &:#{$state},
- &.is-#{$state} {
- ~ .form-check-label {
- color: $color;
- }
-
- ~ .#{$state}-feedback,
- ~ .#{$state}-tooltip {
- display: block;
- }
- }
- }
-
- .custom-control-input {
- .was-validated &:#{$state},
- &.is-#{$state} {
- ~ .custom-control-label {
- color: $color;
-
- &::before {
- border-color: $color;
- }
- }
-
- ~ .#{$state}-feedback,
- ~ .#{$state}-tooltip {
- display: block;
- }
-
- &:checked {
- ~ .custom-control-label::before {
- border-color: lighten($color, 10%);
- @include gradient-bg(lighten($color, 10%));
- }
- }
-
- &:focus {
- ~ .custom-control-label::before {
- box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
- }
-
- &:not(:checked) ~ .custom-control-label::before {
- border-color: $color;
- }
- }
- }
- }
-
- // custom file
- .custom-file-input {
- .was-validated &:#{$state},
- &.is-#{$state} {
- ~ .custom-file-label {
- border-color: $color;
- }
-
- ~ .#{$state}-feedback,
- ~ .#{$state}-tooltip {
- display: block;
- }
-
- &:focus {
- ~ .custom-file-label {
- border-color: $color;
- box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
- }
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_grid-framework.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_grid-framework.scss
deleted file mode 100644
index 649c28bf..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_grid-framework.scss
+++ /dev/null
@@ -1,66 +0,0 @@
-// Framework grid generation
-//
-// Used only by Bootstrap to generate the correct number of grid classes given
-// any value of `$grid-columns`.
-
-@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
- // Common properties for all breakpoints
- %grid-column {
- position: relative;
- width: 100%;
- padding-right: $gutter / 2;
- padding-left: $gutter / 2;
- }
-
- @each $breakpoint in map-keys($breakpoints) {
- $infix: breakpoint-infix($breakpoint, $breakpoints);
-
- // Allow columns to stretch full width below their breakpoints
- @for $i from 1 through $columns {
- .col#{$infix}-#{$i} {
- @extend %grid-column;
- }
- }
- .col#{$infix},
- .col#{$infix}-auto {
- @extend %grid-column;
- }
-
- @include media-breakpoint-up($breakpoint, $breakpoints) {
- // Provide basic `.col-{bp}` classes for equal-width flexbox columns
- .col#{$infix} {
- flex-basis: 0;
- flex-grow: 1;
- max-width: 100%;
- }
- .col#{$infix}-auto {
- flex: 0 0 auto;
- width: auto;
- max-width: 100%; // Reset earlier grid tiers
- }
-
- @for $i from 1 through $columns {
- .col#{$infix}-#{$i} {
- @include make-col($i, $columns);
- }
- }
-
- .order#{$infix}-first { order: -1; }
-
- .order#{$infix}-last { order: $columns + 1; }
-
- @for $i from 0 through $columns {
- .order#{$infix}-#{$i} { order: $i; }
- }
-
- // `$columns - 1` because offsetting by the width of an entire row isn't possible
- @for $i from 0 through ($columns - 1) {
- @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
- .offset#{$infix}-#{$i} {
- @include make-col-offset($i, $columns);
- }
- }
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_grid.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_grid.scss
deleted file mode 100644
index 924eb0cf..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_grid.scss
+++ /dev/null
@@ -1,51 +0,0 @@
-/// Grid system
-//
-// Generate semantic grid columns with these mixins.
-
-@mixin make-container($gutter: $grid-gutter-width) {
- width: 100%;
- padding-right: $gutter / 2;
- padding-left: $gutter / 2;
- margin-right: auto;
- margin-left: auto;
-}
-
-
-// For each breakpoint, define the maximum width of the container in a media query
-@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {
- @each $breakpoint, $container-max-width in $max-widths {
- @include media-breakpoint-up($breakpoint, $breakpoints) {
- max-width: $container-max-width;
- }
- }
-}
-
-@mixin make-row($gutter: $grid-gutter-width) {
- display: flex;
- flex-wrap: wrap;
- margin-right: -$gutter / 2;
- margin-left: -$gutter / 2;
-}
-
-@mixin make-col-ready($gutter: $grid-gutter-width) {
- position: relative;
- // Prevent columns from becoming too narrow when at smaller grid tiers by
- // always setting `width: 100%;`. This works because we use `flex` values
- // later on to override this initial width.
- width: 100%;
- padding-right: $gutter / 2;
- padding-left: $gutter / 2;
-}
-
-@mixin make-col($size, $columns: $grid-columns) {
- flex: 0 0 percentage($size / $columns);
- // Add a `max-width` to ensure content within each column does not blow out
- // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari
- // do not appear to require this.
- max-width: percentage($size / $columns);
-}
-
-@mixin make-col-offset($size, $columns: $grid-columns) {
- $num: $size / $columns;
- margin-left: if($num == 0, 0, percentage($num));
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_hover.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_hover.scss
deleted file mode 100644
index 192f847e..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_hover.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-// Hover mixin and `$enable-hover-media-query` are deprecated.
-//
-// Originally added during our alphas and maintained during betas, this mixin was
-// designed to prevent `:hover` stickiness on iOS-an issue where hover styles
-// would persist after initial touch.
-//
-// For backward compatibility, we've kept these mixins and updated them to
-// always return their regular pseudo-classes instead of a shimmed media query.
-//
-// Issue: https://github.com/twbs/bootstrap/issues/25195
-
-@mixin hover {
- &:hover { @content; }
-}
-
-@mixin hover-focus {
- &:hover,
- &:focus {
- @content;
- }
-}
-
-@mixin plain-hover-focus {
- &,
- &:hover,
- &:focus {
- @content;
- }
-}
-
-@mixin hover-focus-active {
- &:hover,
- &:focus,
- &:active {
- @content;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_image.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_image.scss
deleted file mode 100644
index a76a6082..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_image.scss
+++ /dev/null
@@ -1,36 +0,0 @@
-// Image Mixins
-// - Responsive image
-// - Retina image
-
-
-// Responsive image
-//
-// Keep images from scaling beyond the width of their parents.
-
-@mixin img-fluid {
- // Part 1: Set a maximum relative to the parent
- max-width: 100%;
- // Part 2: Override the height to auto, otherwise images will be stretched
- // when setting a width and height attribute on the img element.
- height: auto;
-}
-
-
-// Retina image
-//
-// Short retina mixin for setting background-image and -size.
-
-@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
- background-image: url($file-1x);
-
- // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,
- // but doesn't convert dppx=>dpi.
- // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.
- // Compatibility info: https://caniuse.com/#feat=css-media-resolution
- @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx
- only screen and (min-resolution: 2dppx) { // Standardized
- background-image: url($file-2x);
- background-size: $width-1x $height-1x;
- }
- @include deprecate("`img-retina()`", "v4.3.0", "v5");
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_nav-divider.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_nav-divider.scss
deleted file mode 100644
index 4fb37b62..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_nav-divider.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-// Horizontal dividers
-//
-// Dividers (basically an hr) within dropdowns and nav lists
-
-@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) {
- height: 0;
- margin: $margin-y 0;
- overflow: hidden;
- border-top: 1px solid $color;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_pagination.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_pagination.scss
deleted file mode 100644
index af8e16d6..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_pagination.scss
+++ /dev/null
@@ -1,22 +0,0 @@
-// Pagination
-
-@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {
- .page-link {
- padding: $padding-y $padding-x;
- @include font-size($font-size);
- line-height: $line-height;
- }
-
- .page-item {
- &:first-child {
- .page-link {
- @include border-left-radius($border-radius);
- }
- }
- &:last-child {
- .page-link {
- @include border-right-radius($border-radius);
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_screen-reader.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_screen-reader.scss
deleted file mode 100644
index 812591bc..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_screen-reader.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-// Only display content to screen readers
-//
-// See: https://a11yproject.com/posts/how-to-hide-content/
-// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/
-
-@mixin sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- white-space: nowrap;
- border: 0;
-}
-
-// Use in conjunction with .sr-only to only display content when it's focused.
-//
-// Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
-//
-// Credit: HTML5 Boilerplate
-
-@mixin sr-only-focusable {
- &:active,
- &:focus {
- position: static;
- width: auto;
- height: auto;
- overflow: visible;
- clip: auto;
- white-space: normal;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_size.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_size.scss
deleted file mode 100644
index 69e056d2..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_size.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-// Sizing shortcuts
-
-@mixin size($width, $height: $width) {
- width: $width;
- height: $height;
- @include deprecate("`size()`", "v4.3.0", "v5");
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_table-row.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_table-row.scss
deleted file mode 100644
index f8d61869..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_table-row.scss
+++ /dev/null
@@ -1,39 +0,0 @@
-// Tables
-
-@mixin table-row-variant($state, $background, $border: null) {
- // Exact selectors below required to override `.table-striped` and prevent
- // inheritance to nested tables.
- .table-#{$state} {
- &,
- > th,
- > td {
- background-color: $background;
- }
-
- @if $border != null {
- th,
- td,
- thead th,
- tbody + tbody {
- border-color: $border;
- }
- }
- }
-
- // Hover states for `.table-hover`
- // Note: this is not available for cells or rows within `thead` or `tfoot`.
- .table-hover {
- $hover-background: darken($background, 5%);
-
- .table-#{$state} {
- @include hover {
- background-color: $hover-background;
-
- > td,
- > th {
- background-color: $hover-background;
- }
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_text-emphasis.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_text-emphasis.scss
deleted file mode 100644
index 155d6ca8..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_text-emphasis.scss
+++ /dev/null
@@ -1,16 +0,0 @@
-// stylelint-disable declaration-no-important
-
-// Typography
-
-@mixin text-emphasis-variant($parent, $color) {
- #{$parent} {
- color: $color !important;
- }
- @if $emphasized-link-hover-darken-percentage != 0 {
- a#{$parent} {
- @include hover-focus {
- color: darken($color, $emphasized-link-hover-darken-percentage) !important;
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_text-hide.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_text-hide.scss
deleted file mode 100644
index 3a923011..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_text-hide.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-// CSS image replacement
-@mixin text-hide($ignore-warning: false) {
- // stylelint-disable-next-line font-family-no-missing-generic-family-keyword
- font: 0/0 a;
- color: transparent;
- text-shadow: none;
- background-color: transparent;
- border: 0;
-
- @include deprecate("`text-hide()`", "v4.1.0", "v5", $ignore-warning);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_transition.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_transition.scss
deleted file mode 100644
index 8ce35a6b..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_transition.scss
+++ /dev/null
@@ -1,16 +0,0 @@
-// stylelint-disable property-blacklist
-@mixin transition($transition...) {
- @if $enable-transitions {
- @if length($transition) == 0 {
- transition: $transition-base;
- } @else {
- transition: $transition;
- }
- }
-
- @if $enable-prefers-reduced-motion-media-query {
- @media (prefers-reduced-motion: reduce) {
- transition: none;
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_visibility.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_visibility.scss
deleted file mode 100644
index f1746731..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/mixins/_visibility.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-// stylelint-disable declaration-no-important
-
-// Visibility
-
-@mixin invisible($visibility) {
- visibility: $visibility !important;
- @include deprecate("`invisible()`", "v4.3.0", "v5");
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_align.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_align.scss
deleted file mode 100644
index 8b7df9f7..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_align.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-// stylelint-disable declaration-no-important
-
-.align-baseline { vertical-align: baseline !important; } // Browser default
-.align-top { vertical-align: top !important; }
-.align-middle { vertical-align: middle !important; }
-.align-bottom { vertical-align: bottom !important; }
-.align-text-bottom { vertical-align: text-bottom !important; }
-.align-text-top { vertical-align: text-top !important; }
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_background.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_background.scss
deleted file mode 100644
index 1f18b2f3..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_background.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-// stylelint-disable declaration-no-important
-
-@each $color, $value in $theme-colors {
- @include bg-variant(".bg-#{$color}", $value);
-}
-
-@if $enable-gradients {
- @each $color, $value in $theme-colors {
- @include bg-gradient-variant(".bg-gradient-#{$color}", $value);
- }
-}
-
-.bg-white {
- background-color: $white !important;
-}
-
-.bg-transparent {
- background-color: transparent !important;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_borders.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_borders.scss
deleted file mode 100644
index 302f6bf8..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_borders.scss
+++ /dev/null
@@ -1,75 +0,0 @@
-// stylelint-disable property-blacklist, declaration-no-important
-
-//
-// Border
-//
-
-.border { border: $border-width solid $border-color !important; }
-.border-top { border-top: $border-width solid $border-color !important; }
-.border-right { border-right: $border-width solid $border-color !important; }
-.border-bottom { border-bottom: $border-width solid $border-color !important; }
-.border-left { border-left: $border-width solid $border-color !important; }
-
-.border-0 { border: 0 !important; }
-.border-top-0 { border-top: 0 !important; }
-.border-right-0 { border-right: 0 !important; }
-.border-bottom-0 { border-bottom: 0 !important; }
-.border-left-0 { border-left: 0 !important; }
-
-@each $color, $value in $theme-colors {
- .border-#{$color} {
- border-color: $value !important;
- }
-}
-
-.border-white {
- border-color: $white !important;
-}
-
-//
-// Border-radius
-//
-
-.rounded-sm {
- border-radius: $border-radius-sm !important;
-}
-
-.rounded {
- border-radius: $border-radius !important;
-}
-
-.rounded-top {
- border-top-left-radius: $border-radius !important;
- border-top-right-radius: $border-radius !important;
-}
-
-.rounded-right {
- border-top-right-radius: $border-radius !important;
- border-bottom-right-radius: $border-radius !important;
-}
-
-.rounded-bottom {
- border-bottom-right-radius: $border-radius !important;
- border-bottom-left-radius: $border-radius !important;
-}
-
-.rounded-left {
- border-top-left-radius: $border-radius !important;
- border-bottom-left-radius: $border-radius !important;
-}
-
-.rounded-lg {
- border-radius: $border-radius-lg !important;
-}
-
-.rounded-circle {
- border-radius: 50% !important;
-}
-
-.rounded-pill {
- border-radius: $rounded-pill !important;
-}
-
-.rounded-0 {
- border-radius: 0 !important;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_display.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_display.scss
deleted file mode 100644
index 13036799..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_display.scss
+++ /dev/null
@@ -1,26 +0,0 @@
-// stylelint-disable declaration-no-important
-
-//
-// Utilities for common `display` values
-//
-
-@each $breakpoint in map-keys($grid-breakpoints) {
- @include media-breakpoint-up($breakpoint) {
- $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
-
- @each $value in $displays {
- .d#{$infix}-#{$value} { display: $value !important; }
- }
- }
-}
-
-
-//
-// Utilities for toggling `display` in print
-//
-
-@media print {
- @each $value in $displays {
- .d-print-#{$value} { display: $value !important; }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_embed.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_embed.scss
deleted file mode 100644
index 4497ac04..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_embed.scss
+++ /dev/null
@@ -1,39 +0,0 @@
-// Credit: Nicolas Gallagher and SUIT CSS.
-
-.embed-responsive {
- position: relative;
- display: block;
- width: 100%;
- padding: 0;
- overflow: hidden;
-
- &::before {
- display: block;
- content: "";
- }
-
- .embed-responsive-item,
- iframe,
- embed,
- object,
- video {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- width: 100%;
- height: 100%;
- border: 0;
- }
-}
-
-@each $embed-responsive-aspect-ratio in $embed-responsive-aspect-ratios {
- $embed-responsive-aspect-ratio-x: nth($embed-responsive-aspect-ratio, 1);
- $embed-responsive-aspect-ratio-y: nth($embed-responsive-aspect-ratio, 2);
-
- .embed-responsive-#{$embed-responsive-aspect-ratio-x}by#{$embed-responsive-aspect-ratio-y} {
- &::before {
- padding-top: percentage($embed-responsive-aspect-ratio-y / $embed-responsive-aspect-ratio-x);
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_flex.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_flex.scss
deleted file mode 100644
index 3d4266e0..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_flex.scss
+++ /dev/null
@@ -1,51 +0,0 @@
-// stylelint-disable declaration-no-important
-
-// Flex variation
-//
-// Custom styles for additional flex alignment options.
-
-@each $breakpoint in map-keys($grid-breakpoints) {
- @include media-breakpoint-up($breakpoint) {
- $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
-
- .flex#{$infix}-row { flex-direction: row !important; }
- .flex#{$infix}-column { flex-direction: column !important; }
- .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }
- .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }
-
- .flex#{$infix}-wrap { flex-wrap: wrap !important; }
- .flex#{$infix}-nowrap { flex-wrap: nowrap !important; }
- .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }
- .flex#{$infix}-fill { flex: 1 1 auto !important; }
- .flex#{$infix}-grow-0 { flex-grow: 0 !important; }
- .flex#{$infix}-grow-1 { flex-grow: 1 !important; }
- .flex#{$infix}-shrink-0 { flex-shrink: 0 !important; }
- .flex#{$infix}-shrink-1 { flex-shrink: 1 !important; }
-
- .justify-content#{$infix}-start { justify-content: flex-start !important; }
- .justify-content#{$infix}-end { justify-content: flex-end !important; }
- .justify-content#{$infix}-center { justify-content: center !important; }
- .justify-content#{$infix}-between { justify-content: space-between !important; }
- .justify-content#{$infix}-around { justify-content: space-around !important; }
-
- .align-items#{$infix}-start { align-items: flex-start !important; }
- .align-items#{$infix}-end { align-items: flex-end !important; }
- .align-items#{$infix}-center { align-items: center !important; }
- .align-items#{$infix}-baseline { align-items: baseline !important; }
- .align-items#{$infix}-stretch { align-items: stretch !important; }
-
- .align-content#{$infix}-start { align-content: flex-start !important; }
- .align-content#{$infix}-end { align-content: flex-end !important; }
- .align-content#{$infix}-center { align-content: center !important; }
- .align-content#{$infix}-between { align-content: space-between !important; }
- .align-content#{$infix}-around { align-content: space-around !important; }
- .align-content#{$infix}-stretch { align-content: stretch !important; }
-
- .align-self#{$infix}-auto { align-self: auto !important; }
- .align-self#{$infix}-start { align-self: flex-start !important; }
- .align-self#{$infix}-end { align-self: flex-end !important; }
- .align-self#{$infix}-center { align-self: center !important; }
- .align-self#{$infix}-baseline { align-self: baseline !important; }
- .align-self#{$infix}-stretch { align-self: stretch !important; }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_float.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_float.scss
deleted file mode 100644
index 54250844..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_float.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-// stylelint-disable declaration-no-important
-
-@each $breakpoint in map-keys($grid-breakpoints) {
- @include media-breakpoint-up($breakpoint) {
- $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
-
- .float#{$infix}-left { float: left !important; }
- .float#{$infix}-right { float: right !important; }
- .float#{$infix}-none { float: none !important; }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_overflow.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_overflow.scss
deleted file mode 100644
index 8326c306..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_overflow.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-// stylelint-disable declaration-no-important
-
-@each $value in $overflows {
- .overflow-#{$value} { overflow: $value !important; }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_position.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_position.scss
deleted file mode 100644
index cdf6c115..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_position.scss
+++ /dev/null
@@ -1,32 +0,0 @@
-// stylelint-disable declaration-no-important
-
-// Common values
-@each $position in $positions {
- .position-#{$position} { position: $position !important; }
-}
-
-// Shorthand
-
-.fixed-top {
- position: fixed;
- top: 0;
- right: 0;
- left: 0;
- z-index: $zindex-fixed;
-}
-
-.fixed-bottom {
- position: fixed;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: $zindex-fixed;
-}
-
-.sticky-top {
- @supports (position: sticky) {
- position: sticky;
- top: 0;
- z-index: $zindex-sticky;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_screenreaders.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_screenreaders.scss
deleted file mode 100644
index 9f26fde0..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_screenreaders.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// Screenreaders
-//
-
-.sr-only {
- @include sr-only();
-}
-
-.sr-only-focusable {
- @include sr-only-focusable();
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_shadows.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_shadows.scss
deleted file mode 100644
index f5d03fcd..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_shadows.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// stylelint-disable declaration-no-important
-
-.shadow-sm { box-shadow: $box-shadow-sm !important; }
-.shadow { box-shadow: $box-shadow !important; }
-.shadow-lg { box-shadow: $box-shadow-lg !important; }
-.shadow-none { box-shadow: none !important; }
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_sizing.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_sizing.scss
deleted file mode 100644
index f3764880..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_sizing.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-// stylelint-disable declaration-no-important
-
-// Width and height
-
-@each $prop, $abbrev in (width: w, height: h) {
- @each $size, $length in $sizes {
- .#{$abbrev}-#{$size} { #{$prop}: $length !important; }
- }
-}
-
-.mw-100 { max-width: 100% !important; }
-.mh-100 { max-height: 100% !important; }
-
-// Viewport additional helpers
-
-.min-vw-100 { min-width: 100vw !important; }
-.min-vh-100 { min-height: 100vh !important; }
-
-.vw-100 { width: 100vw !important; }
-.vh-100 { height: 100vh !important; }
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_spacing.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_spacing.scss
deleted file mode 100644
index 35113679..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_spacing.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-// stylelint-disable declaration-no-important
-
-// Margin and Padding
-
-@each $breakpoint in map-keys($grid-breakpoints) {
- @include media-breakpoint-up($breakpoint) {
- $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
-
- @each $prop, $abbrev in (margin: m, padding: p) {
- @each $size, $length in $spacers {
- .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }
- .#{$abbrev}t#{$infix}-#{$size},
- .#{$abbrev}y#{$infix}-#{$size} {
- #{$prop}-top: $length !important;
- }
- .#{$abbrev}r#{$infix}-#{$size},
- .#{$abbrev}x#{$infix}-#{$size} {
- #{$prop}-right: $length !important;
- }
- .#{$abbrev}b#{$infix}-#{$size},
- .#{$abbrev}y#{$infix}-#{$size} {
- #{$prop}-bottom: $length !important;
- }
- .#{$abbrev}l#{$infix}-#{$size},
- .#{$abbrev}x#{$infix}-#{$size} {
- #{$prop}-left: $length !important;
- }
- }
- }
-
- // Negative margins (e.g., where `.mb-n1` is negative version of `.mb-1`)
- @each $size, $length in $spacers {
- @if $size != 0 {
- .m#{$infix}-n#{$size} { margin: -$length !important; }
- .mt#{$infix}-n#{$size},
- .my#{$infix}-n#{$size} {
- margin-top: -$length !important;
- }
- .mr#{$infix}-n#{$size},
- .mx#{$infix}-n#{$size} {
- margin-right: -$length !important;
- }
- .mb#{$infix}-n#{$size},
- .my#{$infix}-n#{$size} {
- margin-bottom: -$length !important;
- }
- .ml#{$infix}-n#{$size},
- .mx#{$infix}-n#{$size} {
- margin-left: -$length !important;
- }
- }
- }
-
- // Some special margin utils
- .m#{$infix}-auto { margin: auto !important; }
- .mt#{$infix}-auto,
- .my#{$infix}-auto {
- margin-top: auto !important;
- }
- .mr#{$infix}-auto,
- .mx#{$infix}-auto {
- margin-right: auto !important;
- }
- .mb#{$infix}-auto,
- .my#{$infix}-auto {
- margin-bottom: auto !important;
- }
- .ml#{$infix}-auto,
- .mx#{$infix}-auto {
- margin-left: auto !important;
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_stretched-link.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_stretched-link.scss
deleted file mode 100644
index fb5066bf..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_stretched-link.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// Stretched link
-//
-
-.stretched-link {
- &::after {
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 1;
- // Just in case `pointer-events: none` is set on a parent
- pointer-events: auto;
- content: "";
- // IE10 bugfix, see https://stackoverflow.com/questions/16947967/ie10-hover-pseudo-class-doesnt-work-without-background-color
- background-color: rgba(0, 0, 0, 0);
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_text.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_text.scss
deleted file mode 100644
index 589e5687..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_text.scss
+++ /dev/null
@@ -1,72 +0,0 @@
-// stylelint-disable declaration-no-important
-
-//
-// Text
-//
-
-.text-monospace { font-family: $font-family-monospace !important; }
-
-// Alignment
-
-.text-justify { text-align: justify !important; }
-.text-wrap { white-space: normal !important; }
-.text-nowrap { white-space: nowrap !important; }
-.text-truncate { @include text-truncate; }
-
-// Responsive alignment
-
-@each $breakpoint in map-keys($grid-breakpoints) {
- @include media-breakpoint-up($breakpoint) {
- $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
-
- .text#{$infix}-left { text-align: left !important; }
- .text#{$infix}-right { text-align: right !important; }
- .text#{$infix}-center { text-align: center !important; }
- }
-}
-
-// Transformation
-
-.text-lowercase { text-transform: lowercase !important; }
-.text-uppercase { text-transform: uppercase !important; }
-.text-capitalize { text-transform: capitalize !important; }
-
-// Weight and italics
-
-.font-weight-light { font-weight: $font-weight-light !important; }
-.font-weight-lighter { font-weight: $font-weight-lighter !important; }
-.font-weight-normal { font-weight: $font-weight-normal !important; }
-.font-weight-bold { font-weight: $font-weight-bold !important; }
-.font-weight-bolder { font-weight: $font-weight-bolder !important; }
-.font-italic { font-style: italic !important; }
-
-// Contextual colors
-
-.text-white { color: $white !important; }
-
-@each $color, $value in $theme-colors {
- @include text-emphasis-variant(".text-#{$color}", $value);
-}
-
-.text-body { color: $body-color !important; }
-.text-muted { color: $text-muted !important; }
-
-.text-black-50 { color: rgba($black, .5) !important; }
-.text-white-50 { color: rgba($white, .5) !important; }
-
-// Misc
-
-.text-hide {
- @include text-hide($ignore-warning: true);
-}
-
-.text-decoration-none { text-decoration: none !important; }
-
-.text-break {
- word-break: break-word !important; // IE & < Edge 18
- overflow-wrap: break-word !important;
-}
-
-// Reset
-
-.text-reset { color: inherit !important; }
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_visibility.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_visibility.scss
deleted file mode 100644
index 7756c3bf..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/utilities/_visibility.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// stylelint-disable declaration-no-important
-
-//
-// Visibility utilities
-//
-
-.visible {
- visibility: visible !important;
-}
-
-.invisible {
- visibility: hidden !important;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/vendor/_rfs.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/vendor/_rfs.scss
deleted file mode 100644
index 497e07ed..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/vendor/_rfs.scss
+++ /dev/null
@@ -1,204 +0,0 @@
-// stylelint-disable property-blacklist, scss/dollar-variable-default
-
-// SCSS RFS mixin
-//
-// Automated font-resizing
-//
-// See https://github.com/twbs/rfs
-
-// Configuration
-
-// Base font size
-$rfs-base-font-size: 1.25rem !default;
-$rfs-font-size-unit: rem !default;
-
-// Breakpoint at where font-size starts decreasing if screen width is smaller
-$rfs-breakpoint: 1200px !default;
-$rfs-breakpoint-unit: px !default;
-
-// Resize font-size based on screen height and width
-$rfs-two-dimensional: false !default;
-
-// Factor of decrease
-$rfs-factor: 10 !default;
-
-@if type-of($rfs-factor) != "number" or $rfs-factor <= 1 {
- @error "`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.";
-}
-
-// Generate enable or disable classes. Possibilities: false, "enable" or "disable"
-$rfs-class: false !default;
-
-// 1 rem = $rfs-rem-value px
-$rfs-rem-value: 16 !default;
-
-// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14
-$rfs-safari-iframe-resize-bug-fix: false !default;
-
-// Disable RFS by setting $enable-responsive-font-sizes to false
-$enable-responsive-font-sizes: true !default;
-
-// Cache $rfs-base-font-size unit
-$rfs-base-font-size-unit: unit($rfs-base-font-size);
-
-// Remove px-unit from $rfs-base-font-size for calculations
-@if $rfs-base-font-size-unit == "px" {
- $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);
-}
-@else if $rfs-base-font-size-unit == "rem" {
- $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);
-}
-
-// Cache $rfs-breakpoint unit to prevent multiple calls
-$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);
-
-// Remove unit from $rfs-breakpoint for calculations
-@if $rfs-breakpoint-unit-cache == "px" {
- $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);
-}
-@else if $rfs-breakpoint-unit-cache == "rem" or $rfs-breakpoint-unit-cache == "em" {
- $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);
-}
-
-// Responsive font-size mixin
-@mixin rfs($fs, $important: false) {
- // Cache $fs unit
- $fs-unit: if(type-of($fs) == "number", unit($fs), false);
-
- // Add !important suffix if needed
- $rfs-suffix: if($important, " !important", "");
-
- // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
- @if not $fs-unit or $fs-unit != "" and $fs-unit != "px" and $fs-unit != "rem" or $fs == 0 {
- font-size: #{$fs}#{$rfs-suffix};
- }
- @else {
- // Variables for storing static and fluid rescaling
- $rfs-static: null;
- $rfs-fluid: null;
-
- // Remove px-unit from $fs for calculations
- @if $fs-unit == "px" {
- $fs: $fs / ($fs * 0 + 1);
- }
- @else if $fs-unit == "rem" {
- $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);
- }
-
- // Set default font-size
- @if $rfs-font-size-unit == rem {
- $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};
- }
- @else if $rfs-font-size-unit == px {
- $rfs-static: #{$fs}px#{$rfs-suffix};
- }
- @else {
- @error "`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.";
- }
-
- // Only add media query if font-size is bigger as the minimum font-size
- // If $rfs-factor == 1, no rescaling will take place
- @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {
- $min-width: null;
- $variable-unit: null;
-
- // Calculate minimum font-size for given font-size
- $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;
-
- // Calculate difference between given font-size and minimum font-size for given font-size
- $fs-diff: $fs - $fs-min;
-
- // Base font-size formatting
- // No need to check if the unit is valid, because we did that before
- $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);
-
- // If two-dimensional, use smallest of screen width and height
- $variable-unit: if($rfs-two-dimensional, vmin, vw);
-
- // Calculate the variable width between 0 and $rfs-breakpoint
- $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};
-
- // Set the calculated font-size.
- $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};
- }
-
- // Rendering
- @if $rfs-fluid == null {
- // Only render static font-size if no fluid font-size is available
- font-size: $rfs-static;
- }
- @else {
- $mq-value: null;
-
- // RFS breakpoint formatting
- @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {
- $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};
- }
- @else if $rfs-breakpoint-unit == px {
- $mq-value: #{$rfs-breakpoint}px;
- }
- @else {
- @error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.";
- }
-
- @if $rfs-class == "disable" {
- // Adding an extra class increases specificity,
- // which prevents the media query to override the font size
- &,
- .disable-responsive-font-size &,
- &.disable-responsive-font-size {
- font-size: $rfs-static;
- }
- }
- @else {
- font-size: $rfs-static;
- }
-
- @if $rfs-two-dimensional {
- @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {
- @if $rfs-class == "enable" {
- .enable-responsive-font-size &,
- &.enable-responsive-font-size {
- font-size: $rfs-fluid;
- }
- }
- @else {
- font-size: $rfs-fluid;
- }
-
- @if $rfs-safari-iframe-resize-bug-fix {
- // stylelint-disable-next-line length-zero-no-unit
- min-width: 0vw;
- }
- }
- }
- @else {
- @media (max-width: #{$mq-value}) {
- @if $rfs-class == "enable" {
- .enable-responsive-font-size &,
- &.enable-responsive-font-size {
- font-size: $rfs-fluid;
- }
- }
- @else {
- font-size: $rfs-fluid;
- }
-
- @if $rfs-safari-iframe-resize-bug-fix {
- // stylelint-disable-next-line length-zero-no-unit
- min-width: 0vw;
- }
- }
- }
- }
- }
-}
-
-// The font-size & responsive-font-size mixin uses RFS to rescale font sizes
-@mixin font-size($fs, $important: false) {
- @include rfs($fs, $important);
-}
-
-@mixin responsive-font-size($fs, $important: false) {
- @include rfs($fs, $important);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_colors.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/_colors.scss
deleted file mode 100755
index 3a90fccd..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_colors.scss
+++ /dev/null
@@ -1,870 +0,0 @@
-// Colors
-$mdb-color-lighten-5: #d0d6e2 !default;
-$mdb-color-lighten-4: #b1bace !default;
-$mdb-color-lighten-3: #929fba !default;
-$mdb-color-lighten-2: #7283a7 !default;
-$mdb-color-lighten-1: #59698d !default;
-$mdb-color-base: #45526e !default;
-$mdb-color-darken-1: #3b465e !default;
-$mdb-color-darken-2: #2e3951 !default;
-$mdb-color-darken-3: #1c2a48 !default;
-$mdb-color-darken-4: #1c2331 !default;
-
-$red-lighten-5: #ffebee !default;
-$red-lighten-4: #ffcdd2 !default;
-$red-lighten-3: #ef9a9a !default;
-$red-lighten-2: #e57373 !default;
-$red-lighten-1: #ef5350 !default;
-$red-base: #f44336 !default;
-$red-darken-1: #e53935 !default;
-$red-darken-2: #d32f2f !default;
-$red-darken-3: #c62828 !default;
-$red-darken-4: #b71c1c !default;
-$red-accent-1: #ff8a80 !default;
-$red-accent-2: #ff5252 !default;
-$red-accent-3: #ff1744 !default;
-$red-accent-4: #d50000 !default;
-
-$pink-lighten-5: #fce4ec !default;
-$pink-lighten-4: #f8bbd0 !default;
-$pink-lighten-3: #f48fb1 !default;
-$pink-lighten-2: #f06292 !default;
-$pink-lighten-1: #ec407a !default;
-$pink-base: #e91e63 !default;
-$pink-darken-1: #d81b60 !default;
-$pink-darken-2: #c2185b !default;
-$pink-darken-3: #ad1457 !default;
-$pink-darken-4: #880e4f !default;
-$pink-accent-1: #ff80ab !default;
-$pink-accent-2: #ff4081 !default;
-$pink-accent-3: #f50057 !default;
-$pink-accent-4: #c51162 !default;
-
-$purple-lighten-5: #f3e5f5 !default;
-$purple-lighten-4: #e1bee7 !default;
-$purple-lighten-3: #ce93d8 !default;
-$purple-lighten-2: #ba68c8 !default;
-$purple-lighten-1: #ab47bc !default;
-$purple-base: #9c27b0 !default;
-$purple-darken-1: #8e24aa !default;
-$purple-darken-2: #7b1fa2 !default;
-$purple-darken-3: #6a1b9a !default;
-$purple-darken-4: #4a148c !default;
-$purple-accent-1: #ea80fc !default;
-$purple-accent-2: #e040fb !default;
-$purple-accent-3: #d500f9 !default;
-$purple-accent-4: #aa00ff !default;
-
-$deep-purple-lighten-5: #ede7f6 !default;
-$deep-purple-lighten-4: #d1c4e9 !default;
-$deep-purple-lighten-3: #b39ddb !default;
-$deep-purple-lighten-2: #9575cd !default;
-$deep-purple-lighten-1: #7e57c2 !default;
-$deep-purple-base: #673ab7 !default;
-$deep-purple-darken-1: #5e35b1 !default;
-$deep-purple-darken-2: #512da8 !default;
-$deep-purple-darken-3: #4527a0 !default;
-$deep-purple-darken-4: #311b92 !default;
-$deep-purple-accent-1: #b388ff !default;
-$deep-purple-accent-2: #7c4dff !default;
-$deep-purple-accent-3: #651fff !default;
-$deep-purple-accent-4: #6200ea !default;
-
-$indigo-lighten-5: #e8eaf6 !default;
-$indigo-lighten-4: #c5cae9 !default;
-$indigo-lighten-3: #9fa8da !default;
-$indigo-lighten-2: #7986cb !default;
-$indigo-lighten-1: #5c6bc0 !default;
-$indigo-base: #3f51b5 !default;
-$indigo-darken-1: #3949ab !default;
-$indigo-darken-2: #303f9f !default;
-$indigo-darken-3: #283593 !default;
-$indigo-darken-4: #1a237e !default;
-$indigo-accent-1: #8c9eff !default;
-$indigo-accent-2: #536dfe !default;
-$indigo-accent-3: #3d5afe !default;
-$indigo-accent-4: #304ffe !default;
-
-$blue-lighten-5: #e3f2fd !default;
-$blue-lighten-4: #bbdefb !default;
-$blue-lighten-3: #90caf9 !default;
-$blue-lighten-2: #64b5f6 !default;
-$blue-lighten-1: #42a5f5 !default;
-$blue-base: #2196f3 !default;
-$blue-darken-1: #1e88e5 !default;
-$blue-darken-2: #1976d2 !default;
-$blue-darken-3: #1565c0 !default;
-$blue-darken-4: #0d47a1 !default;
-$blue-accent-1: #82b1ff !default;
-$blue-accent-2: #448aff !default;
-$blue-accent-3: #2979ff !default;
-$blue-accent-4: #2962ff !default;
-
-$light-blue-lighten-5: #e1f5fe !default;
-$light-blue-lighten-4: #b3e5fc !default;
-$light-blue-lighten-3: #81d4fa !default;
-$light-blue-lighten-2: #4fc3f7 !default;
-$light-blue-lighten-1: #29b6f6 !default;
-$light-blue-base: #03a9f4 !default;
-$light-blue-darken-1: #039be5 !default;
-$light-blue-darken-2: #0288d1 !default;
-$light-blue-darken-3: #0277bd !default;
-$light-blue-darken-4: #01579b !default;
-$light-blue-accent-1: #80d8ff !default;
-$light-blue-accent-2: #40c4ff !default;
-$light-blue-accent-3: #00b0ff !default;
-$light-blue-accent-4: #0091ea !default;
-
-$cyan-lighten-5: #e0f7fa !default;
-$cyan-lighten-4: #b2ebf2 !default;
-$cyan-lighten-3: #80deea !default;
-$cyan-lighten-2: #4dd0e1 !default;
-$cyan-lighten-1: #26c6da !default;
-$cyan-base: #00bcd4 !default;
-$cyan-darken-1: #00acc1 !default;
-$cyan-darken-2: #0097a7 !default;
-$cyan-darken-3: #00838f !default;
-$cyan-darken-4: #006064 !default;
-$cyan-accent-1: #84ffff !default;
-$cyan-accent-2: #18ffff !default;
-$cyan-accent-3: #00e5ff !default;
-$cyan-accent-4: #00b8d4 !default;
-
-$teal-lighten-5: #e0f2f1 !default;
-$teal-lighten-4: #b2dfdb !default;
-$teal-lighten-3: #80cbc4 !default;
-$teal-lighten-2: #4db6ac !default;
-$teal-lighten-1: #26a69a !default;
-$teal-base: #009688 !default;
-$teal-darken-1: #00897b !default;
-$teal-darken-2: #00796b !default;
-$teal-darken-3: #00695c !default;
-$teal-darken-4: #004d40 !default;
-$teal-accent-1: #a7ffeb !default;
-$teal-accent-2: #64ffda !default;
-$teal-accent-3: #1de9b6 !default;
-$teal-accent-4: #00bfa5 !default;
-
-$green-lighten-5: #e8f5e9 !default;
-$green-lighten-4: #c8e6c9 !default;
-$green-lighten-3: #a5d6a7 !default;
-$green-lighten-2: #81c784 !default;
-$green-lighten-1: #66bb6a !default;
-$green-base: #4caf50 !default;
-$green-darken-1: #43a047 !default;
-$green-darken-2: #388e3c !default;
-$green-darken-3: #2e7d32 !default;
-$green-darken-4: #1b5e20 !default;
-$green-accent-1: #b9f6ca !default;
-$green-accent-2: #69f0ae !default;
-$green-accent-3: #00e676 !default;
-$green-accent-4: #00c853 !default;
-
-
-$light-green-lighten-5: #f1f8e9 !default;
-$light-green-lighten-4: #dcedc8 !default;
-$light-green-lighten-3: #c5e1a5 !default;
-$light-green-lighten-2: #aed581 !default;
-$light-green-lighten-1: #9ccc65 !default;
-$light-green-base: #8bc34a !default;
-$light-green-darken-1: #7cb342 !default;
-$light-green-darken-2: #689f38 !default;
-$light-green-darken-3: #558b2f !default;
-$light-green-darken-4: #33691e !default;
-$light-green-accent-1: #ccff90 !default;
-$light-green-accent-2: #b2ff59 !default;
-$light-green-accent-3: #76ff03 !default;
-$light-green-accent-4: #64dd17 !default;
-
-$lime-lighten-5: #f9fbe7 !default;
-$lime-lighten-4: #f0f4c3 !default;
-$lime-lighten-3: #e6ee9c !default;
-$lime-lighten-2: #dce775 !default;
-$lime-lighten-1: #d4e157 !default;
-$lime-base: #cddc39 !default;
-$lime-darken-1: #c0ca33 !default;
-$lime-darken-2: #afb42b !default;
-$lime-darken-3: #9e9d24 !default;
-$lime-darken-4: #827717 !default;
-$lime-accent-1: #f4ff81 !default;
-$lime-accent-2: #eeff41 !default;
-$lime-accent-3: #c6ff00 !default;
-$lime-accent-4: #aeea00 !default;
-
-$yellow-lighten-5: #fffde7 !default;
-$yellow-lighten-4: #fff9c4 !default;
-$yellow-lighten-3: #fff59d !default;
-$yellow-lighten-2: #fff176 !default;
-$yellow-lighten-1: #ffee58 !default;
-$yellow-base: #ffeb3b !default;
-$yellow-darken-1: #fdd835 !default;
-$yellow-darken-2: #fbc02d !default;
-$yellow-darken-3: #f9a825 !default;
-$yellow-darken-4: #f57f17 !default;
-$yellow-accent-1: #ffff8d !default;
-$yellow-accent-2: #ffff00 !default;
-$yellow-accent-3: #ffea00 !default;
-$yellow-accent-4: #ffd600 !default;
-
-$amber-lighten-5: #fff8e1 !default;
-$amber-lighten-4: #ffecb3 !default;
-$amber-lighten-3: #ffe082 !default;
-$amber-lighten-2: #ffd54f !default;
-$amber-lighten-1: #ffca28 !default;
-$amber-base: #ffc107 !default;
-$amber-darken-1: #ffb300 !default;
-$amber-darken-2: #ffa000 !default;
-$amber-darken-3: #ff8f00 !default;
-$amber-darken-4: #ff6f00 !default;
-$amber-accent-1: #ffe57f !default;
-$amber-accent-2: #ffd740 !default;
-$amber-accent-3: #ffc400 !default;
-$amber-accent-4: #ffab00 !default;
-
-$orange-lighten-5: #fff3e0 !default;
-$orange-lighten-4: #ffe0b2 !default;
-$orange-lighten-3: #ffcc80 !default;
-$orange-lighten-2: #ffb74d !default;
-$orange-lighten-1: #ffa726 !default;
-$orange-base: #ff9800 !default;
-$orange-darken-1: #fb8c00 !default;
-$orange-darken-2: #f57c00 !default;
-$orange-darken-3: #ef6c00 !default;
-$orange-darken-4: #e65100 !default;
-$orange-accent-1: #ffd180 !default;
-$orange-accent-2: #ffab40 !default;
-$orange-accent-3: #ff9100 !default;
-$orange-accent-4: #ff6d00 !default;
-
-$deep-orange-lighten-5: #fbe9e7 !default;
-$deep-orange-lighten-4: #ffccbc !default;
-$deep-orange-lighten-3: #ffab91 !default;
-$deep-orange-lighten-2: #ff8a65 !default;
-$deep-orange-lighten-1: #ff7043 !default;
-$deep-orange-base: #ff5722 !default;
-$deep-orange-darken-1: #f4511e !default;
-$deep-orange-darken-2: #e64a19 !default;
-$deep-orange-darken-3: #d84315 !default;
-$deep-orange-darken-4: #bf360c !default;
-$deep-orange-accent-1: #ff9e80 !default;
-$deep-orange-accent-2: #ff6e40 !default;
-$deep-orange-accent-3: #ff3d00 !default;
-$deep-orange-accent-4: #dd2c00 !default;
-
-$brown-lighten-5: #efebe9 !default;
-$brown-lighten-4: #d7ccc8 !default;
-$brown-lighten-3: #bcaaa4 !default;
-$brown-lighten-2: #a1887f !default;
-$brown-lighten-1: #8d6e63 !default;
-$brown-base: #795548 !default;
-$brown-darken-1: #6d4c41 !default;
-$brown-darken-2: #5d4037 !default;
-$brown-darken-3: #4e342e !default;
-$brown-darken-4: #3e2723 !default;
-
-$blue-grey-lighten-5: #eceff1 !default;
-$blue-grey-lighten-4: #cfd8dc !default;
-$blue-grey-lighten-3: #b0bec5 !default;
-$blue-grey-lighten-2: #90a4ae !default;
-$blue-grey-lighten-1: #78909c !default;
-$blue-grey-base: #607d8b !default;
-$blue-grey-darken-1: #546e7a !default;
-$blue-grey-darken-2: #455a64 !default;
-$blue-grey-darken-3: #37474f !default;
-$blue-grey-darken-4: #263238 !default;
-
-$grey-lighten-5: #fafafa !default;
-$grey-lighten-4: #f5f5f5 !default;
-$grey-lighten-3: #eeeeee !default;
-$grey-lighten-2: #e0e0e0 !default;
-$grey-lighten-1: #bdbdbd !default;
-$grey-base: #9e9e9e !default;
-$grey-darken-1: #757575 !default;
-$grey-darken-2: #616161 !default;
-$grey-darken-3: #424242 !default;
-$grey-darken-4: #212121 !default;
-
-$black-base: #000 !default;
-$white-base: #fff !default;
-$foggy-grey: #4f4f4f !default;
-
-$mdb-colors-1: () !default;
-$mdb-colors-1: map-merge((
- "mdb-color": (
- "lighten-5": $mdb-color-lighten-5,
- "lighten-4": $mdb-color-lighten-4,
- "lighten-3": $mdb-color-lighten-3,
- "lighten-2": $mdb-color-lighten-2,
- "lighten-1": $mdb-color-lighten-1,
- "base": $mdb-color-base,
- "darken-1": $mdb-color-darken-1,
- "darken-2": $mdb-color-darken-2,
- "darken-3": $mdb-color-darken-3,
- "darken-4": $mdb-color-darken-4
- ),
- "red": (
- "lighten-5": $red-lighten-5,
- "lighten-4": $red-lighten-4,
- "lighten-3": $red-lighten-3,
- "lighten-2": $red-lighten-2,
- "lighten-1": $red-lighten-1,
- "base": $red-base,
- "darken-1": $red-darken-1,
- "darken-2": $red-darken-2,
- "darken-3": $red-darken-3,
- "darken-4": $red-darken-4,
- "accent-1": $red-accent-1,
- "accent-2": $red-accent-2,
- "accent-3": $red-accent-3,
- "accent-4": $red-accent-4
- ),
- "pink": (
- "lighten-5": $pink-lighten-5,
- "lighten-4": $pink-lighten-4,
- "lighten-3": $pink-lighten-3,
- "lighten-2": $pink-lighten-2,
- "lighten-1": $pink-lighten-1,
- "base": $pink-base,
- "darken-1": $pink-darken-1,
- "darken-2": $pink-darken-2,
- "darken-3": $pink-darken-3,
- "darken-4": $pink-darken-4,
- "accent-1": $pink-accent-1,
- "accent-2": $pink-accent-2,
- "accent-3": $pink-accent-3,
- "accent-4": $pink-accent-4
- ),
- "purple": (
- "lighten-5": $purple-lighten-5,
- "lighten-4": $purple-lighten-4,
- "lighten-3": $purple-lighten-3,
- "lighten-2": $purple-lighten-2,
- "lighten-1": $purple-lighten-1,
- "base": $purple-base,
- "darken-1": $purple-darken-1,
- "darken-2": $purple-darken-2,
- "darken-3": $purple-darken-3,
- "darken-4": $purple-darken-4,
- "accent-1": $purple-accent-1,
- "accent-2": $purple-accent-2,
- "accent-3": $purple-accent-3,
- "accent-4": $purple-accent-4
- ),
- "deep-purple": (
- "lighten-5": $deep-purple-lighten-5,
- "lighten-4": $deep-purple-lighten-4,
- "lighten-3": $deep-purple-lighten-3,
- "lighten-2": $deep-purple-lighten-2,
- "lighten-1": $deep-purple-lighten-1,
- "base": $deep-purple-base,
- "darken-1": $deep-purple-darken-1,
- "darken-2": $deep-purple-darken-2,
- "darken-3": $deep-purple-darken-3,
- "darken-4": $deep-purple-darken-4,
- "accent-1": $deep-purple-accent-1,
- "accent-2": $deep-purple-accent-2,
- "accent-3": $deep-purple-accent-3,
- "accent-4": $deep-purple-accent-4
- ),
- "indigo": (
- "lighten-5": $indigo-lighten-5,
- "lighten-4": $indigo-lighten-4,
- "lighten-3": $indigo-lighten-3,
- "lighten-2": $indigo-lighten-2,
- "lighten-1": $indigo-lighten-1,
- "base": $indigo-base,
- "darken-1": $indigo-darken-1,
- "darken-2": $indigo-darken-2,
- "darken-3": $indigo-darken-3,
- "darken-4": $indigo-darken-4,
- "accent-1": $indigo-accent-1,
- "accent-2": $indigo-accent-2,
- "accent-3": $indigo-accent-3,
- "accent-4": $indigo-accent-4
- ),
- "blue": (
- "lighten-5": $blue-lighten-5,
- "lighten-4": $blue-lighten-4,
- "lighten-3": $blue-lighten-3,
- "lighten-2": $blue-lighten-2,
- "lighten-1": $blue-lighten-1,
- "base": $blue-base,
- "darken-1": $blue-darken-1,
- "darken-2": $blue-darken-2,
- "darken-3": $blue-darken-3,
- "darken-4": $blue-darken-4,
- "accent-1": $blue-accent-1,
- "accent-2": $blue-accent-2,
- "accent-3": $blue-accent-3,
- "accent-4": $blue-accent-4
- ),
- "light-blue": (
- "lighten-5": $light-blue-lighten-5,
- "lighten-4": $light-blue-lighten-4,
- "lighten-3": $light-blue-lighten-3,
- "lighten-2": $light-blue-lighten-2,
- "lighten-1": $light-blue-lighten-1,
- "base": $light-blue-base,
- "darken-1": $light-blue-darken-1,
- "darken-2": $light-blue-darken-2,
- "darken-3": $light-blue-darken-3,
- "darken-4": $light-blue-darken-4,
- "accent-1": $light-blue-accent-1,
- "accent-2": $light-blue-accent-2,
- "accent-3": $light-blue-accent-3,
- "accent-4": $light-blue-accent-4
- ),
- "cyan": (
- "lighten-5": $cyan-lighten-5,
- "lighten-4": $cyan-lighten-4,
- "lighten-3": $cyan-lighten-3,
- "lighten-2": $cyan-lighten-2,
- "lighten-1": $cyan-lighten-1,
- "base": $cyan-base,
- "darken-1": $cyan-darken-1,
- "darken-2": $cyan-darken-2,
- "darken-3": $cyan-darken-3,
- "darken-4": $cyan-darken-4,
- "accent-1": $cyan-accent-1,
- "accent-2": $cyan-accent-2,
- "accent-3": $cyan-accent-3,
- "accent-4": $cyan-accent-4
- ),
- "teal": (
- "lighten-5": $teal-lighten-5,
- "lighten-4": $teal-lighten-4,
- "lighten-3": $teal-lighten-3,
- "lighten-2": $teal-lighten-2,
- "lighten-1": $teal-lighten-1,
- "base": $teal-base,
- "darken-1": $teal-darken-1,
- "darken-2": $teal-darken-2,
- "darken-3": $teal-darken-3,
- "darken-4": $teal-darken-4,
- "accent-1": $teal-accent-1,
- "accent-2": $teal-accent-2,
- "accent-3": $teal-accent-3,
- "accent-4": $teal-accent-4
- ),
- "green": (
- "lighten-5": $green-lighten-5,
- "lighten-4": $green-lighten-4,
- "lighten-3": $green-lighten-3,
- "lighten-2": $green-lighten-2,
- "lighten-1": $green-lighten-1,
- "base": $green-base,
- "darken-1": $green-darken-1,
- "darken-2": $green-darken-2,
- "darken-3": $green-darken-3,
- "darken-4": $green-darken-4,
- "accent-1": $green-accent-1,
- "accent-2": $green-accent-2,
- "accent-3": $green-accent-3,
- "accent-4": $green-accent-4
- ),
- "light-green": (
- "lighten-5": $light-green-lighten-5,
- "lighten-4": $light-green-lighten-4,
- "lighten-3": $light-green-lighten-3,
- "lighten-2": $light-green-lighten-2,
- "lighten-1": $light-green-lighten-1,
- "base": $light-green-base,
- "darken-1": $light-green-darken-1,
- "darken-2": $light-green-darken-2,
- "darken-3": $light-green-darken-3,
- "darken-4": $light-green-darken-4,
- "accent-1": $light-green-accent-1,
- "accent-2": $light-green-accent-2,
- "accent-3": $light-green-accent-3,
- "accent-4": $light-green-accent-4
- ),
- "lime": (
- "lighten-5": $lime-lighten-5,
- "lighten-4": $lime-lighten-4,
- "lighten-3": $lime-lighten-3,
- "lighten-2": $lime-lighten-2,
- "lighten-1": $lime-lighten-1,
- "base": $lime-base,
- "darken-1": $lime-darken-1,
- "darken-2": $lime-darken-2,
- "darken-3": $lime-darken-3,
- "darken-4": $lime-darken-4,
- "accent-1": $lime-accent-1,
- "accent-2": $lime-accent-2,
- "accent-3": $lime-accent-3,
- "accent-4": $lime-accent-4
- ),
- "yellow": (
- "lighten-5": $yellow-lighten-5,
- "lighten-4": $yellow-lighten-4,
- "lighten-3": $yellow-lighten-3,
- "lighten-2": $yellow-lighten-2,
- "lighten-1": $yellow-lighten-1,
- "base": $yellow-base,
- "darken-1": $yellow-darken-1,
- "darken-2": $yellow-darken-2,
- "darken-3": $yellow-darken-3,
- "darken-4": $yellow-darken-4,
- "accent-1": $yellow-accent-1,
- "accent-2": $yellow-accent-2,
- "accent-3": $yellow-accent-3,
- "accent-4": $yellow-accent-4
- ),
- "amber": (
- "lighten-5": $amber-lighten-5,
- "lighten-4": $amber-lighten-4,
- "lighten-3": $amber-lighten-3,
- "lighten-2": $amber-lighten-2,
- "lighten-1": $amber-lighten-1,
- "base": $amber-base,
- "darken-1": $amber-darken-1,
- "darken-2": $amber-darken-2,
- "darken-3": $amber-darken-3,
- "darken-4": $amber-darken-4,
- "accent-1": $amber-accent-1,
- "accent-2": $amber-accent-2,
- "accent-3": $amber-accent-3,
- "accent-4": $amber-accent-4
- ),
- "orange": (
- "lighten-5": $orange-lighten-5,
- "lighten-4": $orange-lighten-4,
- "lighten-3": $orange-lighten-3,
- "lighten-2": $orange-lighten-2,
- "lighten-1": $orange-lighten-1,
- "base": $orange-base,
- "darken-1": $orange-darken-1,
- "darken-2": $orange-darken-2,
- "darken-3": $orange-darken-3,
- "darken-4": $orange-darken-4,
- "accent-1": $orange-accent-1,
- "accent-2": $orange-accent-2,
- "accent-3": $orange-accent-3,
- "accent-4": $orange-accent-4
- ),
- "deep-orange": (
- "lighten-5": $deep-orange-lighten-5,
- "lighten-4": $deep-orange-lighten-4,
- "lighten-3": $deep-orange-lighten-3,
- "lighten-2": $deep-orange-lighten-2,
- "lighten-1": $deep-orange-lighten-1,
- "base": $deep-orange-base,
- "darken-1": $deep-orange-darken-1,
- "darken-2": $deep-orange-darken-2,
- "darken-3": $deep-orange-darken-3,
- "darken-4": $deep-orange-darken-4,
- "accent-1": $deep-orange-accent-1,
- "accent-2": $deep-orange-accent-2,
- "accent-3": $deep-orange-accent-3,
- "accent-4": $deep-orange-accent-4
- ),
- "brown": (
- "lighten-5": $brown-lighten-5,
- "lighten-4": $brown-lighten-4,
- "lighten-3": $brown-lighten-3,
- "lighten-2": $brown-lighten-2,
- "lighten-1": $brown-lighten-1,
- "base": $brown-base,
- "darken-1": $brown-darken-1,
- "darken-2": $brown-darken-2,
- "darken-3": $brown-darken-3,
- "darken-4": $brown-darken-4
- ),
- "blue-grey": (
- "lighten-5": $blue-grey-lighten-5,
- "lighten-4": $blue-grey-lighten-4,
- "lighten-3": $blue-grey-lighten-3,
- "lighten-2": $blue-grey-lighten-2,
- "lighten-1": $blue-grey-lighten-1,
- "base": $blue-grey-base,
- "darken-1": $blue-grey-darken-1,
- "darken-2": $blue-grey-darken-2,
- "darken-3": $blue-grey-darken-3,
- "darken-4": $blue-grey-darken-4
- ),
- "grey": (
- "lighten-5": $grey-lighten-5,
- "lighten-4": $grey-lighten-4,
- "lighten-3": $grey-lighten-3,
- "lighten-2": $grey-lighten-2,
- "lighten-1": $grey-lighten-1,
- "base": $grey-base,
- "darken-1": $grey-darken-1,
- "darken-2": $grey-darken-2,
- "darken-3": $grey-darken-3,
- "darken-4": $grey-darken-4
- ),
- "black": (
- "base": $black-base
- ),
- "white": (
- "base": $white-base
- )
-), $mdb-colors-1);
-
-// Full palette of colors
-$enable_full_palette: true !default;
-
-// Stylish rgba colors
-$stylish-rgba: (
- "rgba-stylish-slight": rgba(62, 69, 81, .1),
- "rgba-stylish-light": rgba(62, 69, 81, .3),
- "rgba-stylish-strong": rgba(62, 69, 81, .7),
-);
-
-// Material colors
-$primary-color: #4285f4 !default;
-$primary-color-dark: #0d47a1 !default;
-$secondary-color: #aa66cc !default;
-$secondary-color-dark: #9933cc !default;
-$default-color: #2bbbad !default;
-$default-color-dark: #00695c !default;
-$info-color: #33b5e5 !default;
-$info-color-dark: #0099cc !default;
-$success-color: #00c851 !default;
-$success-color-dark: #007e33 !default;
-$warning-color: #ffbb33 !default;
-$warning-color-dark: #ff8800 !default;
-$danger-color: #ff3547 !default;
-$danger-color-dark: #cc0000 !default;
-$elegant-color: #2e2e2e !default;
-$elegant-color-dark: #212121 !default;
-$stylish-color: #4b515d !default;
-$stylish-color-dark: #3e4551 !default;
-$unique-color: #3f729b !default;
-$unique-color-dark: #1c2331 !default;
-$special-color: #37474f !default;
-$special-color-dark: #263238 !default;
-$white: #fff;
-$black: #000;
-$error-color: $red-base !default;
-
-$material-colors: () !default;
-$material-colors: map-merge((
- "primary-color": $primary-color,
- "primary-color-dark": $primary-color-dark,
- "secondary-color": $secondary-color,
- "secondary-color-dark": $secondary-color-dark,
- "default-color": $default-color,
- "default-color-dark": $default-color-dark,
- "info-color": $info-color,
- "info-color-dark": $info-color-dark,
- "success-color": $success-color,
- "success-color-dark": $success-color-dark,
- "warning-color": $warning-color,
- "warning-color-dark": $warning-color-dark,
- "danger-color": $danger-color,
- "danger-color-dark": $danger-color-dark,
- "elegant-color": $elegant-color,
- "elegant-color-dark": $elegant-color-dark,
- "stylish-color": $stylish-color,
- "stylish-color-dark": $stylish-color-dark,
- "unique-color": $unique-color,
- "unique-color-dark": $unique-color-dark,
- "special-color": $special-color,
- "special-color-dark": $special-color-dark
-), $material-colors);
-
-// Social colors
-$fb-color: #3b5998 !default;
-$tw-color: #55acee !default;
-$gplus-color: #dd4b39 !default;
-$yt-color: #ed302f !default;
-$li-color: #0082ca !default;
-$pin-color: #c61118 !default;
-$ins-color: #2e5e86 !default;
-$git-color: #333333 !default;
-$comm-color: #30cfc0 !default;
-$vk-color: #4c75a3 !default;
-$drib-color: #ec4a89 !default;
-$so-color: #ffac44 !default;
-$slack-color: #56b68b !default;
-$email-color: #4b515d !default;
-$redd-color: #ff4500 !default;
-$twitch-color: #6441a4 !default;
-$discord-color: #7289da !default;
-
-$social-colors: () !default;
-$social-colors: map-merge((
- "fb": $fb-color,
- "tw": $tw-color,
- "gplus": $gplus-color,
- "yt": $yt-color,
- "li": $li-color,
- "pin": $pin-color,
- "ins": $ins-color,
- "git": $git-color,
- "comm": $comm-color,
- "vk": $vk-color,
- "dribbble": $drib-color,
- "so": $so-color,
- "slack": $slack-color,
- "email": $email-color,
- "reddit": $redd-color,
- "twitch": $twitch-color,
- "discord": $discord-color,
-), $social-colors);
-
-// MDB buttons colors
-$mdb-colors: () !default;
-$mdb-colors: map-merge((
- "primary": $primary-color,
- "danger": $danger-color,
- "warning": $warning-color,
- "success": $success-color,
- "info": $info-color,
- "default": $default-color,
- "secondary": $secondary-color,
- "elegant": $elegant-color,
- "unique": $pink-darken-4,
- "dark-green": $green-darken-2,
- "mdb-color": $mdb-color-lighten-1,
- "red": $red-darken-2,
- "pink": $pink-lighten-1,
- "purple": $purple-darken-1,
- "deep-purple": $deep-purple-darken-2,
- "indigo": $indigo-base,
- "blue": $blue-darken-2,
- "light-blue": $blue-accent-1,
- "cyan": $cyan-base,
- "teal": $teal-darken-2,
- "green": $green-darken-2,
- "light-green": $light-green-base,
- "lime": $lime-darken-2,
- "yellow": $yellow-darken-2,
- "amber": $amber-darken-2,
- "orange": $orange-darken-2,
- "deep-orange": $deep-orange-lighten-1,
- "brown": $brown-base,
- "grey": $grey-darken-2,
- "blue-grey": $blue-grey-lighten-1,
- "dark": $grey-darken-4,
- "light": $grey-lighten-2,
- "white": $white-base,
- "black": $black-base
-), $mdb-colors);
-
-// Basic colors
-$basic: () !default;
-$basic: map-merge((
- "primary": $primary-color,
- "danger": $danger-color,
- "warning": $warning-color,
- "success": $success-color,
- "info": $info-color
-), $basic);
-
-$basic-mdb-colors: () !default;
-$basic-mdb-colors: map-merge((
- "primary": $primary-color,
- "danger": $danger-color,
- "warning": $warning-color,
- "success": $success-color,
- "info": $info-color,
- "default": $default-color,
- "secondary": $secondary-color,
- "dark": $grey-darken-4,
- "light": $grey-lighten-2
-), $basic-mdb-colors);
-
-$pagination-colors: () !default;
-$pagination-colors: map-merge((
- "blue": $primary-color,
- "red": $danger-color,
- "teal": $default-color,
- "dark-grey": $special-color,
- "dark": $elegant-color,
- "blue-grey": $unique-color,
- "amber": $amber-darken-4,
- "purple": $deep-purple-darken-1
-), $pagination-colors);
-
-$ctbc: () !default;
-$ctbc: map-merge((
- "tabs-cyan": $yellow-base,
- "tabs-orange": $red-darken-1,
- "tabs-grey": $white-base,
- "tabs-pink": $deep-purple-base,
- "tabs-green": $blue-darken-3,
- "tabs-primary": $white-base
-), $ctbc);
-
-$switch-color-bg: $secondary-color !default;
-$switch-color-checked-lever-bg: desaturate(lighten($secondary-color, 25%), 25%) !default;
-$switch-color-unchecked-bg: #F1F1F1 !default;
-$switch-color-unchecked-lever-bg: #818181 !default;
-
-$switch-colors: () !default;
-$switch-colors: map-merge((
- "bg": $switch-color-bg,
- "checked-lever-bg": $switch-color-checked-lever-bg,
- "unchecked-bg": $switch-color-unchecked-bg,
- "unchecked-lever-bg": $switch-color-unchecked-lever-bg,
-), $switch-colors);
-
-$dropdown-colors: () !default;
-$dropdown-colors: map-merge((
- "primary" : $primary-color,
- "danger" : $danger-color-dark,
- "default" : $default-color,
- "secondary": $secondary-color,
- "success" : $success-color,
- "info" : $info-color,
- "warning" : $warning-color,
- "dark" : map-get($mdb-colors, "elegant"),
- "ins" : map-get($social-colors, "ins")
-), $dropdown-colors);
-
-// Gradients
-$gradients: () !default;
-$gradients: map-merge((
- "purple": (
- "start": #ff6ec4,
- "end": #7873f5
- ),
- "peach": (
- "start": #FFD86F,
- "end": #FC6262
- ),
- "aqua": (
- "start": #2096ff,
- "end": #05ffa3
- ),
- "blue": (
- "start": #45cafc,
- "end": $indigo-darken-2
- ),
-), $gradients);
-
-// Gradients RGBA Version
-$gradients-rgba: () !default;
-$gradients-rgba: map-merge((
- "purple": (
- "start": rgba(255,110,196,.9),
- "end": rgba(120,115,245,.9)
- ),
- "peach": (
- "start": rgba(255,216,111,.9),
- "end": rgba(252,98,98,.9)
- ),
- "aqua": (
- "start": rgba(32,150,255,.9),
- "end": rgba(5,255,163,.9)
- ),
- "blue": (
- "start": rgba(69,202,252,.9),
- "end": rgba(48,63,159,.9)
- ),
-), $gradients-rgba);
-
-
-$note: () !default;
-$note: map-merge((
- "note-primary": #176ac4,
- "note-secondary": #58595a,
- "note-success": #49a75f,
- "note-danger": #e45460,
- "note-warning": #c2a442,
- "note-info": #2492a5,
- "note-light": #0f0f0f
-), $note);
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_directives.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/_directives.scss
deleted file mode 100644
index d5158f8f..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_directives.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// Optional directives
-@each $key in (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100) {
- .opacity-#{$key} {
- opacity: $key * 0.01;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_global.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/_global.scss
deleted file mode 100755
index acea123d..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_global.scss
+++ /dev/null
@@ -1,126 +0,0 @@
-// Globals
-// Full palette of colors
-@each $color_name, $color in $mdb-colors-1 {
- @each $color_type, $color_value in $color {
- @if $color_type == "base" {
- .#{$color_name} {
- background-color: $color_value !important;
- }
- .#{$color_name}-text {
- color: $color-value !important;
- }
- .rgba-#{$color_name}-slight,
- .rgba-#{$color_name}-slight:after {
- background-color: rgba($color_value, .1);
- }
- .rgba-#{$color_name}-light,
- .rgba-#{$color_name}-light:after {
- background-color: rgba($color_value, .3);
- }
- .rgba-#{$color_name}-strong,
- .rgba-#{$color_name}-strong:after {
- background-color: rgba($color_value, .7);
- }
- }
- @else {
- @if $enable_full_palette {
- .#{$color_name}.#{$color_type} {
- background-color: $color_value !important;
- }
- }
- }
- }
-}
-
-// Stylish color
-@each $color_name, $color_value in $stylish-rgba {
- .#{$color_name} {
- background-color: $color_value;
- }
-}
-
-// Material colors palette
-@each $color_name, $color in $material-colors {
- .#{$color_name} {
- background-color: $color !important;
- }
-}
-
-// Basic gradients
-@each $name, $val in $gradients {
- @include make-gradient($name, $val);
-}
-@each $name, $val in $gradients-rgba {
- @include make-gradient-rgba($name, $val);
-}
-
-.dark-grey-text {
- color: #4f4f4f !important;
- &:hover,
- &:focus {
- color: #4f4f4f !important;
- }
-}
-
-// Shadow on hover
-.hoverable {
- box-shadow: none;
- transition: $transition-hoverable;
- &:hover {
- box-shadow: $z-depth-2;
- transition: $transition-hoverable;
- }
-}
-
-// Shadows
-.z-depth-0 {
- box-shadow: none !important;
-}
-.z-depth-1 {
- box-shadow: $z-depth-1 !important;
-}
-.z-depth-1-half {
- box-shadow: $z-depth-1-half !important;
-}
-.z-depth-2 {
- box-shadow: $z-depth-2 !important;
-}
-.z-depth-3 {
- box-shadow: $z-depth-3 !important;
-}
-.z-depth-4 {
- box-shadow: $z-depth-4 !important;
-}
-.z-depth-5 {
- box-shadow: $z-depth-5 !important;
-}
-
-// Disabled cursor
-.disabled,
-:disabled {
- pointer-events: none !important;
-}
-
-// Links
-a {
- cursor: pointer;
- text-decoration: none;
- color: $link-color;
- transition: $transition-basic;
- &:hover {
- text-decoration: none;
- color: $link-hover-color;
- transition: $transition-basic;
- }
- &.disabled,
- &:disabled {
- &:hover {
- color: $link-color;
- }
- }
-}
-
-a:not([href]):not([tabindex]), a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {
- color: inherit;
- text-decoration: none;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_helpers.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/_helpers.scss
deleted file mode 100644
index 9bed4cb0..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_helpers.scss
+++ /dev/null
@@ -1,85 +0,0 @@
-// Helpers
-// MDB helpers
-.img-fluid,
-.video-fluid {
- max-width: 100%;
- height: auto;
-}
-
-.flex-center {
- display: flex;
- justify-content: center;
- align-items: center;
- height: 100%;
-
- p {
- margin: 0;
- }
-
- ul {
- text-align: center;
-
- li {
- margin-bottom: $flex-center-ul-mb;
-
- &:last-of-type {
- margin-bottom: 0;
- }
- }
- }
-}
-
-.hr-light {
- border-top: 1px solid $hr-light;
-}
-
-.hr-dark {
- border-top: 1px solid $hr-dark;
-}
-
-// Responsive width
-.w-responsive {
- width: 75%;
-
- @media (max-width: 740px) {
- width: 100%;
- }
-}
-
-// Collapsible body
-.collapsible-body {
- display: none;
-}
-
-.jumbotron {
- box-shadow: $z-depth-1;
- border-radius: $border-radius-base;
- background-color: $white-base;
-}
-
-@each $name,
-$color in $basic-mdb-colors {
- @include bg-variant(".bg-#{$name}", $color);
-
- .border-#{$name} {
- border-color: $color !important;
- }
-}
-
-.card-img-100 {
- width: 100px;
- height: 100px;
-}
-
-.card-img-64 {
- width: 64px;
- height: 64px;
-}
-
-.mml-1 {
- margin-left: - 0.25rem !important;
-}
-
-.flex-1 {
- flex: 1;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_masks.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/_masks.scss
deleted file mode 100755
index 4dcebcc6..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_masks.scss
+++ /dev/null
@@ -1,81 +0,0 @@
-// Masks
-// General properties
-.view {
- position: relative;
- overflow: hidden;
- cursor: default;
- .mask {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- overflow: hidden;
- width: 100%;
- height: 100%;
- background-attachment: fixed;
- }
- img,
- video {
- position: relative;
- display: block;
- }
- video {
- &.video-intro {
- z-index: -100;
- top: 50%;
- left: 50%;
- transform: $intro-video-transform;
- transition: $intro-video-transition opacity;
- min-width: 100%;
- min-height: 100%;
- width: auto;
- height: auto;
- }
- }
-}
-
-// Overlay
-.overlay {
- .mask {
- opacity: 0;
- transition: $mask-overlay-transition;
- &:hover {
- opacity: 1;
- }
- }
-}
-
-// Zoom
-.zoom {
- img,
- video {
- transition: $mask-zoom-transition;
- }
- &:hover {
- img,
- video {
- transform: $mask-zoom-transform;
- }
- }
-}
-
-// Patterns
-$patterns: (
- 1: '01',
- 2: '02',
- 3: '03',
- 4: '04',
- 5: '05',
- 6: '06',
- 7: '07',
- 8: '08',
- 9: '09',
-);
-
-@each $no, $filename in $patterns {
- .pattern-#{$no} {
- background: url('#{$image-path}/overlays/#{$filename}.png');
- background-attachment: fixed;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_mixins.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/_mixins.scss
deleted file mode 100755
index ca1afd11..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_mixins.scss
+++ /dev/null
@@ -1,611 +0,0 @@
-// Mixins
-// Bootstrap Mixins
-@function breakpoint-next(
- $name,
- $breakpoints: $grid-breakpoints,
- $breakpoint-names: map-keys($breakpoints)
-) {
- $n: index($breakpoint-names, $name);
- @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);
-}
-
-@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {
- $min: map-get($breakpoints, $name);
- @return if($min !=0, $min, null);
-}
-
-@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {
- $next: breakpoint-next($name, $breakpoints);
- @return if($next, breakpoint-min($next, $breakpoints) - 0.02px, null);
-}
-
-// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.
-// Makes the @content apply to the given breakpoint and wider.
-@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {
- $min: breakpoint-min($name, $breakpoints);
-
- @if $min {
- @media (min-width: $min) {
- @content;
- }
- } @else {
- @content;
- }
-}
-
-// Media of at most the maximum breakpoint width. No query for the largest breakpoint.
-// Makes the @content apply to the given breakpoint and narrower.
-@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
- $max: breakpoint-max($name, $breakpoints);
-
- @if $max {
- @media (max-width: $max) {
- @content;
- }
- } @else {
- @content;
- }
-}
-
-// Media that spans multiple breakpoint widths.
-// Makes the @content apply between the min and max breakpoints
-@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {
- $min: breakpoint-min($lower, $breakpoints);
- $max: breakpoint-max($upper, $breakpoints);
-
- @if $min !=null and $max !=null {
- @media (min-width: $min) and (max-width: $max) {
- @content;
- }
- } @else if $max==null {
- @include media-breakpoint-up($lower, $breakpoints) {
- @content;
- }
- } @else if $min==null {
- @include media-breakpoint-down($upper, $breakpoints) {
- @content;
- }
- }
-}
-
-// Media between the breakpoint's minimum and maximum widths.
-// No minimum for the smallest breakpoint, and no maximum for the largest one.
-// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.
-@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {
- $min: breakpoint-min($name, $breakpoints);
- $max: breakpoint-max($name, $breakpoints);
-
- @if $min !=null and $max !=null {
- @media (min-width: $min) and (max-width: $max) {
- @content;
- }
- } @else if $max==null {
- @include media-breakpoint-up($name, $breakpoints) {
- @content;
- }
- } @else if $min==null {
- @include media-breakpoint-down($name, $breakpoints) {
- @content;
- }
- }
-}
-
-@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {
- @return if(breakpoint-min($name, $breakpoints) ==null, '', '-#{$name}');
-}
-
-@mixin hover-focus {
- &:hover,
- &:focus {
- @content;
- }
-}
-
-// Background color
-@mixin bg-variant($parent, $color) {
- #{$parent} {
- background-color: $color !important;
- }
-
- a#{$parent},
- button#{$parent} {
- @include hover-focus {
- background-color: darken($color, 10%) !important;
- }
- }
-}
-
-// Typography
-@mixin text-emphasis-variant($parent, $color) {
- #{$parent} {
- color: $color !important;
- }
-
- a#{$parent} {
- @include hover-focus {
- color: darken($color, 10%) !important;
- }
- }
-}
-
-// Placeholder
-@mixin placeholder {
- &::placeholder {
- @content;
- }
-}
-
-/// Grid system
-//
-// Generate semantic grid columns with these mixins.
-
-@mixin make-container($gutter: $grid-gutter-width) {
- width: 100%;
- padding-right: $gutter / 2;
- padding-left: $gutter / 2;
- margin-right: auto;
- margin-left: auto;
-}
-
-// For each breakpoint, define the maximum width of the container in a media query
-@mixin make-container-max-widths(
- $max-widths: $container-max-widths,
- $breakpoints: $grid-breakpoints
-) {
- @each $breakpoint, $container-max-width in $max-widths {
- @include media-breakpoint-up($breakpoint, $breakpoints) {
- max-width: $container-max-width;
- }
- }
-}
-
-@mixin make-row() {
- display: flex;
- flex-wrap: wrap;
- margin-right: ($grid-gutter-width / -2);
- margin-left: ($grid-gutter-width / -2);
-}
-
-@mixin make-col-ready() {
- position: relative;
- // Prevent columns from becoming too narrow when at smaller grid tiers by
- // always setting `width: 100%;`. This works because we use `flex` values
- // later on to override this initial width.
- width: 100%;
- min-height: 1px; // Prevent collapsing
- padding-right: ($grid-gutter-width / 2);
- padding-left: ($grid-gutter-width / 2);
-}
-
-@mixin make-col($size, $columns: $grid-columns) {
- flex: 0 0 percentage($size / $columns);
- // Add a `max-width` to ensure content within each column does not blow out
- // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari
- // do not appear to require this.
- max-width: percentage($size / $columns);
-}
-
-@mixin make-col-offset($size, $columns: $grid-columns) {
- $num: $size / $columns;
- margin-left: if($num==0, 0, percentage($num));
-}
-
-@mixin clearfix() {
- &::after {
- display: block;
- clear: both;
- content: '';
- }
-}
-
-@mixin float-left {
- float: left !important;
-}
-
-@mixin float-right {
- float: right !important;
-}
-
-@mixin float-none {
- float: none !important;
-}
-
-// CSS image replacement
-@mixin text-hide($ignore-warning: false) {
- // stylelint-disable-next-line font-family-no-missing-generic-family-keyword
- font: 0/0 a;
- color: transparent;
- text-shadow: none;
- background-color: transparent;
- border: 0;
-
- @if ($ignore-warning !=true) {
- @warn "The `text-hide()` mixin has been deprecated as of v4.1.0. It will be removed entirely in v5.";
- }
-}
-
-// Only display content to screen readers
-//
-// See: https://a11yproject.com/posts/how-to-hide-content/
-// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/
-
-@mixin sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- white-space: nowrap;
- border: 0;
-}
-
-// Use in conjunction with .sr-only to only display content when it's focused.
-//
-// Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
-//
-// Credit: HTML5 Boilerplate
-
-@mixin sr-only-focusable {
- &:active,
- &:focus {
- position: static;
- width: auto;
- height: auto;
- overflow: visible;
- clip: auto;
- white-space: normal;
- }
-}
-
-@mixin invisible($visibility) {
- visibility: $visibility !important;
-}
-
-// MDB Mixins
-// Set the color of the button and badge
-@function set-notification-text-color($color) {
- @if (lightness($color) > 80) {
- @return $black-base; // Lighter backgorund, return dark color
- } @else {
- @return $white-base; // Darker background, return light color
- }
-}
-
-// Make button
-@mixin make-button($name, $color) {
- .btn-#{$name} {
- background-color: $color !important;
- color: set-notification-text-color($color);
-
- &:hover {
- background-color: lighten($color, 5%);
- color: set-notification-text-color($color);
- }
-
- &:focus,
- &.focus {
- box-shadow: $z-depth-1-half;
- }
-
- &:focus,
- &:active,
- &.active {
- background-color: darken($color, 20%);
- }
-
- &.dropdown-toggle {
- background-color: $color !important;
-
- &:hover,
- &:focus {
- background-color: lighten($color, 5%) !important;
- }
- }
-
- &:not([disabled]):not(.disabled):active,
- &:not([disabled]):not(.disabled).active,
- .show > &.dropdown-toggle {
- box-shadow: $z-depth-1-half;
- background-color: darken($color, 20%) !important;
- }
-
- &:not([disabled]):not(.disabled):active:focus,
- &:not([disabled]):not(.disabled).active:focus,
- .show > &.dropdown-toggle:focus {
- box-shadow: $z-depth-1-half;
- }
- }
-
- .#{$name}-ic {
- color: $color !important;
-
- &:hover,
- &:focus {
- color: $color;
- }
- }
-
- a.btn:not([href]):not([tabindex]),
- a.btn:not([href]):not([tabindex]):focus,
- a.btn:not([href]):not([tabindex]):hover {
- color: set-notification-text-color($color);
- }
- table {
- &.table {
- a {
- &.btn {
- &.btn-#{$name} {
- color: set-notification-text-color($color);
- }
- }
- }
- }
- }
-}
-
-// Make outline button
-@mixin make-outline-button($name, $color) {
- .btn-outline-#{$name} {
- border: 2px solid $color !important;
- background-color: transparent !important;
- color: $color !important;
-
- &:hover,
- &:focus,
- &:active,
- &:active:focus,
- &.active {
- border-color: $color !important;
- background-color: transparent !important;
- color: $color !important;
- }
-
- &:not([disabled]):not(.disabled):active,
- &:not([disabled]):not(.disabled).active,
- .show > &.dropdown-toggle {
- box-shadow: $z-depth-1-half;
- background-color: transparent !important;
- border-color: $color !important;
- }
-
- &:not([disabled]):not(.disabled):active:focus,
- &:not([disabled]):not(.disabled).active:focus,
- .show > &.dropdown-toggle:focus {
- box-shadow: $z-depth-1-half;
- }
- }
-}
-
-// Make gradient
-@mixin make-gradient($name, $value) {
- .#{$name}-gradient {
- background: linear-gradient(40deg, map-get($value, start), map-get($value, end)) !important;
- }
-}
-
-$opacity: 0.9;
-
-// Make gradient
-@mixin make-gradient-rgba($name, $value) {
- .#{$name}-gradient-rgba {
- background: linear-gradient(40deg, map-get($value, start), map-get($value, end)) !important;
- }
-}
-
-// Make gradient button
-@mixin make-gradient-button($name, $value) {
- .btn {
- &.#{$name}-gradient {
- transition: 0.5s ease;
- color: $white-base;
-
- &:hover,
- &:focus,
- &:active,
- &:active:focus &.active {
- background: linear-gradient(
- lighten(map-get($value, start), 5%),
- lighten(map-get($value, end), 5%)
- );
- }
- }
- }
-}
-
-// Button size
-@mixin button-size($padding-y, $padding-x, $font-size) {
- padding: $padding-y $padding-x;
- font-size: $font-size;
-}
-
-@mixin make-badge($name, $color) {
- .badge-#{$name} {
- background-color: $color !important;
- color: set-notification-text-color($color) !important;
- }
-}
-
-// Make input
-@mixin make-input(
- $margin-bottom,
- $label-font-size,
- $label-active-font-size,
- $top,
- $prefix-font-size,
- $margin-left,
- $width,
- $margin-left-2
-) {
- .validate {
- margin-bottom: $margin-bottom;
- }
-
- label {
- font-size: $label-font-size;
-
- &.active {
- font-size: $label-active-font-size;
- }
- }
-
- .prefix {
- top: $top;
- font-size: $prefix-font-size;
-
- ~ input,
- ~ textarea {
- margin-left: $margin-left;
- width: $width;
- }
-
- ~ label {
- max-width: calc(99% - #{$margin-left});
- margin-left: $margin-left;
- &.active {
- max-width: calc(121% - #{$margin-left});
- }
- }
-
- ~ .form-text {
- margin-left: $margin-left-2;
- }
- }
-}
-
-// Make navbar
-@mixin make-navbar($color-0, $background-image, $color, $color-2, $color-3) {
- .navbar-nav {
- .nav-item {
- .nav-link {
- &.disbled {
- color: $color-0;
-
- &:hover {
- color: $color-0;
- }
- }
- }
- }
- }
-
- .navbar-toggler-icon {
- background-image: $background-image;
- cursor: pointer;
- }
-
- .breadcrumb,
- .navbar-nav {
- .nav-item {
- .nav-link {
- color: $color;
- transition: $navbar-nav-transition;
-
- &:hover {
- color: $color-2;
- }
- }
-
- &.active > .nav-link {
- background-color: $color-3;
-
- &:hover {
- color: $color;
- }
- }
- }
- }
-
- .navbar-toggler {
- color: $color;
- }
-
- form {
- .md-form {
- input {
- border-bottom: 1px solid $color;
-
- &:focus:not([readonly]) {
- border-color: $input-md-focus-color;
- }
- }
-
- .form-control {
- color: $color;
-
- @include placeholder {
- color: $color;
- font-weight: $navbar-font-weight;
- }
- }
- }
- }
-}
-
-// Make floating button
-@mixin make-btn-floating($width, $height, $font-size, $line-height) {
- width: $width;
- height: $height;
-
- i {
- font-size: $font-size;
- line-height: $line-height;
- }
-}
-
-// Keyframes
-@mixin keyframes($animation-name) {
- @keyframes #{$animation-name} {
- @content;
- }
-}
-
-// Scroll bar and scroll spy width and height
-@mixin scroll-width($scrollbar-width) {
- width: $scrollbar-width;
-}
-
-@mixin scroll-height($scrollbar-height) {
- height: $scrollbar-height;
-}
-
-// Scroll spy font-weight
-@mixin scrollspy-font-weight($scrollspy-font-weight) {
- font-weight: $scrollspy-font-weight;
-}
-
-// Switch width and height
-@mixin switch-width-height($switchWidth, $switchHeight) {
- width: $switchWidth;
- height: $switchHeight;
-}
-
-// Make Box-shadows
-@mixin box-shadows($shadow...) {
- box-shadow: $shadow;
-}
-
-// Make Transition
-@mixin transition-main($transition...) {
- transition: $transition;
-}
-
-// Make border-radius scrollspy
-@mixin scrollspy-border-radius($scrollspy-radius) {
- border-radius: $scrollspy-radius;
-}
-
-// Make border-radius scrollspy 4rows
-@mixin scrollspy-border-radius-4rows($top-left, $top-right, $bottom-right, $bottom-left) {
- border-radius: $top-left $top-right $bottom-right $bottom-left;
-}
-
-//Make animation for progresss
-@mixin progress-animation-default($animation...) {
- animation: $animation;
-}
-
-//Make transform
-@mixin transform($transform...) {
- transform: $transform;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_typography.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/_typography.scss
deleted file mode 100755
index 102c55e8..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_typography.scss
+++ /dev/null
@@ -1,139 +0,0 @@
-// Typography
-// ROBOTO FONT
-@font-face {
- font-family: "Roboto";
- src: local(Roboto Thin),
- url("#{$roboto-font-path}Roboto-Thin.eot");
- src: url("#{$roboto-font-path}Roboto-Thin.eot?#iefix") format("embedded-opentype"),
- url("#{$roboto-font-path}Roboto-Thin.woff2") format("woff2"),
- url("#{$roboto-font-path}Roboto-Thin.woff") format("woff"),
- url("#{$roboto-font-path}Roboto-Thin.ttf") format("truetype");
- font-weight: 200;
-}
-
-@font-face {
- font-family: "Roboto";
- src: local(Roboto Light),
- url("#{$roboto-font-path}Roboto-Light.eot");
- src: url("#{$roboto-font-path}Roboto-Light.eot?#iefix") format("embedded-opentype"),
- url("#{$roboto-font-path}Roboto-Light.woff2") format("woff2"),
- url("#{$roboto-font-path}Roboto-Light.woff") format("woff"),
- url("#{$roboto-font-path}Roboto-Light.ttf") format("truetype");
- font-weight: 300;
-}
-
-@font-face {
- font-family: "Roboto";
- src: local(Roboto Regular),
- url("#{$roboto-font-path}Roboto-Regular.eot");
- src: url("#{$roboto-font-path}Roboto-Regular.eot?#iefix") format("embedded-opentype"),
- url("#{$roboto-font-path}Roboto-Regular.woff2") format("woff2"),
- url("#{$roboto-font-path}Roboto-Regular.woff") format("woff"),
- url("#{$roboto-font-path}Roboto-Regular.ttf") format("truetype");
- font-weight: 400;
-}
-
-@font-face {
- font-family: "Roboto";
- src: url("#{$roboto-font-path}Roboto-Medium.eot");
- src: url("#{$roboto-font-path}Roboto-Medium.eot?#iefix") format("embedded-opentype"),
- url("#{$roboto-font-path}Roboto-Medium.woff2") format("woff2"),
- url("#{$roboto-font-path}Roboto-Medium.woff") format("woff"),
- url("#{$roboto-font-path}Roboto-Medium.ttf") format("truetype");
- font-weight: 500;
-}
-
-@font-face {
- font-family: "Roboto";
- src: url("#{$roboto-font-path}Roboto-Bold.eot");
- src: url("#{$roboto-font-path}Roboto-Bold.eot?#iefix") format("embedded-opentype"),
- url("#{$roboto-font-path}Roboto-Bold.woff2") format("woff2"),
- url("#{$roboto-font-path}Roboto-Bold.woff") format("woff"),
- url("#{$roboto-font-path}Roboto-Bold.ttf") format("truetype");
- font-weight: 700;
-}
-
-body {
- font-family: $roboto-font-family;
- font-weight: 300;
-}
-
-h1, h2, h3, h4, h5, h6 {
- font-weight: 300;
-}
-
-// Responsive headings
-@each $key, $val in $grid-breakpoints {
- @include media-breakpoint-up($key) {
- $y: map-get($responsive-headings, $key);
- @each $name,
- $value in $y {
- .#{$name}-responsive {
- font-size: $value;
- }
- }
- }
-}
-
-// Divider
-.divider-new {
- flex-direction: row;
- justify-content: center;
- align-items: center;
- display: flex;
- margin-top: $divider-margin-y;
- margin-bottom: $divider-margin-y;
- > h1, h2, h3, h4, h5, h6 {
- margin-bottom: 0;
- }
- &:before,
- &:after {
- content: "";
- height: 1.5px;
- flex: 1;
- height: $divider-height;
- background: #c6c6c6;
- }
- &:before {
- margin: 0 $divider-margin-x 0 0;
- }
- &:after {
- margin: 0 0 0 $divider-margin-x;
- }
-}
-
-// Blockquote
-.blockquote {
- padding: $blockquote-padding-y $blockquote-padding-x;
- border-left: .25rem solid #eceeef;
- &.text-right {
- border-left: none;
- border-right: .25rem solid #eceeef;
- }
- .bq-title {
- margin-bottom: 0;
- font-size: $font-size-large;
- font-weight: 400;
- }
- p {
- padding: $blockquote-p-padding-y 0;
- font-size: $blockquote-p-font-size;
- }
-}
-
-@each $name, $color in $basic {
- .bq-#{$name} {
- border-left: 3px solid $color !important;
- .bq-title {
- color: $color !important;
- }
- }
-}
-
-@each $name, $color in $basic-mdb-colors {
- @include text-emphasis-variant(".text-#{$name}", $color);
-}
-
-.font-small {
- font-size: $font-small;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_variables.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/_variables.scss
deleted file mode 100755
index 5929290b..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_variables.scss
+++ /dev/null
@@ -1,393 +0,0 @@
-// Variables
-// Fonts
-$roboto-font-path: '~angular-bootstrap-md/assets/font/roboto/' !default;
-$roboto-font-family: 'Roboto', sans-serif !default;
-
-$font-size-large: 1.5rem !default;
-$font-bold: 500 !default;
-$font-small: 0.9rem !default;
-
-$line-height-small: 1 !default;
-$line-height-extra-large: 2.5 !default;
-
-// Reponsive Headings
-$responsive-headings: () !default;
-$responsive-headings: map-merge(
- (
- 'xs': (
- 'h1': 150%,
- 'h2': 145%,
- 'h3': 135%,
- 'h4': 135%,
- 'h5': 135%,
- ),
- 'sm': (
- 'h1': 170%,
- 'h2': 140%,
- 'h3': 125%,
- 'h4': 125%,
- 'h5': 125%,
- ),
- 'md': (
- 'h1': 200%,
- 'h2': 170%,
- 'h3': 140%,
- 'h4': 125%,
- 'h5': 125%,
- ),
- 'lg': (
- 'h1': 200%,
- 'h2': 170%,
- 'h3': 140%,
- 'h4': 125%,
- 'h5': 125%,
- ),
- 'xl': (
- 'h1': 250%,
- 'h2': 200%,
- 'h3': 170%,
- 'h4': 140%,
- 'h5': 125%,
- ),
- ),
- $responsive-headings
-);
-
-//Custom map for file browser
-$custom-mdb-file-text: (
- es: 'Elegir',
- pl-PL: 'Wybierz',
- fr: 'Choisir',
- in: 'Pilih',
- zh: '選擇',
- de: 'Wählen',
- ru: 'выбирать',
-);
-
-// Blockquote
-$blockquote-padding-y: 0.5rem !default;
-$blockquote-padding-x: 1rem !default;
-$blockquote-p-padding-y: $blockquote-padding-x !default;
-$blockquote-p-padding-l: 2rem !default;
-$blockquote-p-font-size: 1.1rem !default;
-
-// Shadows
-$z-depth-1: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12) !default;
-$z-depth-1-half: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15) !default;
-$z-depth-2: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19) !default;
-$z-depth-3: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19) !default;
-$z-depth-4: 0 16px 28px 0 rgba(0, 0, 0, 0.22), 0 25px 55px 0 rgba(0, 0, 0, 0.21) !default;
-$z-depth-5: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22) !default;
-
-// Transitions
-$transition-basic: all 0.2s ease-in-out !default;
-$transition-hoverable: all 0.55s ease-in-out !default;
-
-// Border radius
-$border-radius-base: 0.125rem !default;
-$border-radius-circle: 50% !default;
-
-// Buttons
-$btn-color-basic: $white-base !default;
-$btn-margin-basic: 0.375rem !default;
-$btn-padding-y-basic: 0.84rem !default;
-$btn-padding-x-basic: 2.14rem !default;
-$btn-font-size-basic: 0.81rem !default;
-
-$btn-padding-y-large: 1rem !default;
-$btn-padding-x-large: 2.4rem !default;
-$btn-font-size-large: 0.94rem !default;
-
-$btn-padding-y-medium: 0.7rem !default;
-$btn-padding-x-medium: 1.6rem !default;
-$btn-font-size-medium: 0.7rem !default;
-
-$btn-padding-y-small: 0.5rem !default;
-$btn-padding-x-small: 1.6rem !default;
-$btn-font-size-small: 0.64rem !default;
-
-$btn-outline-padding-y-basic: 0.7rem !default;
-$btn-outline-padding-y-large: 0.88rem !default;
-$btn-outline-padding-y-medium: 0.58rem !default;
-$btn-outline-padding-y-small: 0.38rem !default;
-
-$btn-tb-padding-y: 0.3rem !default;
-$btn-tb-padding-x: 1rem !default;
-
-$btn-transition: $transition-basic !default;
-
-$btn-icon-basic: 0.9rem !default;
-$btn-icon-large: 1rem !default;
-$btn-icon-medium: 0.8rem !default;
-$btn-icon-small: 0.7rem !default;
-$btn-icon-margin: 0.3rem !default;
-
-/*** Global ***/
-// Media Query Ranges
-$small-screen-up: 601px !default;
-$medium-screen-up: 993px !default;
-$large-screen-up: 1201px !default;
-$small-screen: 600px !default;
-$medium-screen: 992px !default;
-$large-screen: 1200px !default;
-$sidenav-breakpoint: 1440px !default;
-
-$medium-and-up: 'only screen and (min-width : #{$small-screen-up})' !default;
-$large-and-up: 'only screen and (min-width : #{$medium-screen-up})' !default;
-$small-and-down: 'only screen and (max-width : #{$small-screen})' !default;
-$medium-and-down: 'only screen and (max-width : #{$medium-screen})' !default;
-$medium-only: 'only screen and (min-width : #{$small-screen-up}) and (max-width : #{$medium-screen})' !default;
-$hide-sidenav: 'only screen and (max-width : #{$sidenav-breakpoint})' !default;
-
-// Link color
-$link-color: #0275d8 !default;
-$link-hover-color: darken($link-color, 15%) !default;
-
-// Dividers colors
-$hr-light: $white-base !default;
-$hr-dark: #666 !default;
-$flex-center-ul-mb: 1rem !default;
-
-// Divider
-$divider-margin-y: 2.8rem !default;
-$divider-margin-x: 0.5rem !default;
-$divider-height: 2px !default;
-
-// Masks
-$mask-overlay-transition: all 0.4s ease-in-out !default;
-$mask-zoom-transition: all 0.2s linear !default;
-$mask-zoom-transform: scale(1.1) !default;
-$intro-video-transform: translateX(-50%) translateY(-50%) !default;
-$intro-video-transition: 1s !default;
-
-// Cards
-$md-card-border-radius: 0.25rem !default;
-$md-card-link-transition: 0.2s ease-in-out !default;
-$md-card-font-size: 0.9rem !default;
-$md-card-text-color: #747373 !default;
-
-// Images
-$image-path: '~angular-bootstrap-md/assets/img' !default;
-$avatar-img-max-width: 100px !default;
-
-// Carousels
-$carousel-control-icon-width: 2.25rem !default;
-$carousel-control-icon-height: $carousel-control-icon-width !default;
-$carousel-control-prev-icon: url('../../img/svg/arrow_left.svg') !default;
-$carousel-control-next-icon: url('../../img/svg/arrow_right.svg') !default;
-$carousel-indicators-width: 0.625rem !default;
-$carousel-indicators-height: $carousel-indicators-width !default;
-$carousel-indicators-border-radius: $border-radius-circle !default;
-$carousel-transition-duration: 0.6s !default;
-$carousel-item-transform: translateX(0) !default;
-$carousel-item-transform-2: translate3d(0, 0, 0) !default;
-
-// Badges
-$badge-pill-padding-x: 0.6rem !default;
-$badge-pill-border-radius: 10rem !default;
-
-// Footers
-$footer-copyright-color: rgba($white-base, 0.6) !default;
-$footer-copyright-bg-color: rgba($black-base, 0.2) !default;
-$footer-font-size: 0.9rem !default;
-
-// Forms
-$input-bg-color: $white-base !default;
-$label-font-size: 0.8rem !default;
-$input-transition: all 0.3s !default;
-$input-disabled-color: rgba(0, 0, 0, 0.46) !default;
-$input-md-focus-color: $primary-color !default;
-$input-error-color: $error-color !default;
-$input-success-color: $success-color !default;
-$input-label-after-top: 65px !default;
-$input-label-after-transition: 0.2s opacity ease-out, 0.2s color ease-out !default;
-$input-border-color: #ced4da !default;
-
-$input-label-transition: 0.2s ease-out !default;
-$input-label-color: #757575 !default;
-$input-label-top: 0.65rem !default;
-$input-label-active-transform: translateY(-14px) !default;
-$input-prefix-transition: color 0s !default;
-
-$input-md-form-margin-top: 1.5rem !default;
-$input-md-form-margin-bottom: $input-md-form-margin-top !default;
-$input-label-font-size: 1rem !default;
-$input-label-active-font-size: 1rem !default;
-$input-prefix-top: 0.25rem !default;
-$input-prefix-font-size: 1.75rem !default;
-$input-prefix-margin-left: 2.5rem !default;
-$input-prefix-width: calc(100% - 2.5rem) !default;
-$input-group-addon-font-size: 1.4rem !default;
-$input-form-text-ml: 2.6rem !default;
-$input-validate-mb: 2.5rem !default;
-$input-label-valid-top: 4.1rem !default;
-$input-label-invalid-top: 4rem !default;
-
-$input-label-font-size-lg: 1.25rem !default;
-$input-label-active-font-size-lg: 1.15rem !default;
-$input-prefix-top-lg: 0.4rem !default;
-$input-prefix-font-size-lg: 2rem !default;
-$input-prefix-margin-left-lg: 3rem !default;
-$input-prefix-width-lg: calc(100% - 3rem) !default;
-$input-group-addon-font-size-lg: 1.65rem !default;
-$input-form-text-ml-lg: 3.1rem !default;
-$input-validate-mb-lg: 2.8rem !default;
-$input-label-valid-top-lg: 4.6rem !default;
-$input-label-invalid-top-lg: 4.6rem !default;
-
-$input-label-font-size-sm: 0.875rem !default;
-$input-label-active-font-size-sm: 0.95rem !default;
-$input-prefix-top-sm: 0.35rem !default;
-$input-prefix-font-size-sm: 1.5rem !default;
-$input-prefix-margin-left-sm: 2rem !default;
-$input-prefix-width-sm: calc(100% - 2rem) !default;
-$input-group-addon-font-size-sm: 1.15rem !default;
-$input-form-text-ml-sm: 2rem !default;
-$input-validate-mb-sm: 2.3rem !default;
-$input-label-valid-top-sm: 3.7rem !default;
-$input-label-invalid-top-sm: 3.6rem !default;
-
-$textarea-padding: 1.5rem !default;
-
-$input-form-control-margin-bottom: 0.5rem !default;
-$input-form-control-padding-top: 0.6rem !default;
-$input-form-control-padding-bottom: 0.4rem !default;
-$input-disabled-solid-color: #bdbdbd !default;
-
-// Input group
-$input-group-text-bgc: #e0e0e0 !default;
-$input-group-form-control-px: 0.75rem !default;
-$input-group-form-control-py: 0.375rem !default;
-
-// List group
-$list-group-padding: 0 10px 10px 0 !default;
-$list-group-transition: 0.5s !default;
-
-// Modals
-$modal-distance: 10px !default;
-$modal-width: 400px !default;
-$modal-full-height-medium-screen: 800px !default;
-$modal-full-height-large-screen: 1000px !default;
-$modal-fade-top-transform: translate3d(0, -25%, 0) !default;
-$modal-fade-bottom-transform: translate3d(0, 25%, 0) !default;
-$modal-fade-right-transform: translate3d(25%, 0, 0) !default;
-$modal-fade-left-transform: translate3d(-25%, 0, 0) !default;
-$modal-notify-body-padding: 1.5rem !default;
-$modal-notify-heading-padding: 0.3rem !default;
-$modal-notify-font-size: 1.15rem !default;
-$modal-avatar-margin-top: 6rem !default;
-$modal-avatar-header-margin-top: -6rem !default;
-$modal-avatar-header-margin-bottom: -1rem !default;
-$modal-avatar-img-width: 130px !default;
-$modal-body-padding-right: 2rem !default;
-$modal-body-padding-left: $modal-body-padding-right !default;
-$modal-body-margin-top: 1rem !default;
-$cascading-modal-margin-top: -2rem !default;
-$cascading-modal-margin-right: 1rem !default;
-$cascading-modal-margin-bottom: $cascading-modal-margin-right !default;
-$cascading-modal-margin-left: $cascading-modal-margin-right !default;
-$cascading-modal-padding: 1.5rem !default;
-$cascading-modal-close-margin-right: $cascading-modal-margin-right !default;
-$cascading-modal-font-size: 1.25rem !default;
-$cascading-modal-fa-margin-right: 9px !default;
-$cascading-modal-social-margin-top: $cascading-modal-padding !default;
-$cascading-modal-a-font-size: 1rem !default;
-$cascading-modal-tabs-margin-x: 1rem !default;
-$cascading-modal-tabs-margin-top: -1.5rem !default;
-$cascading-modal-tabs-padding-top: 1.7rem !default;
-
-// Miscellaneous
-$edge-header-height: 278px !default;
-$edge-header-background-color: #ccc !default;
-$edge-header-margin-top: -100px !default;
-
-// Navbars
-$navbar-font-weight: 300 !default;
-$navbar-double-font-size: 15px !default;
-
-$navbar-light-toggler-icon: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.9)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E") !default;
-$navbar-light-bg-active-color: rgba($black-base, 0.1) !default;
-$navbar-light-hover-color: rgba($black-base, 0.75) !default;
-$navbar-light-disabled-color: rgba(0, 0, 0, 0.5) !default;
-
-$navbar-dark-toggler-icon: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.9)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E") !default;
-$navbar-dark-bg-active-color: rgba($white-base, 0.1) !default;
-$navbar-dark-hover-color: rgba($white-base, 0.75) !default;
-$navbar-dark-disabled-color: rgba(255, 255, 255, 0.5) !default;
-
-$navbar-scrolling-transition: background 0.5s ease-in-out, padding 0.5s ease-in-out !default;
-$navbar-scrolling-transition-duration: 1s !default;
-$navbar-scrolling-padding: 12px !default;
-$navbar-top-collapse-padding: 5px !default;
-$navbar-nav-transition: 0.35s !default;
-$navbar-dropdown-font-size: 0.9375rem !default;
-$navbar-dropdown-menu-padding: 10px !default;
-$navbar-flex-icons-padding-md: 6px !default;
-$navbar-flex-icons-padding-lg: 3px !default;
-$navbar-form-input-mr: 5px !default;
-$navbar-form-input-mb: 1px !default;
-$navbar-form-input-ml: 8px !default;
-$navbar-form-input-height: 1rem !default;
-$navbar-breadcrumb-padding-top: 0.3rem !default;
-$navbar-breadcrumb-padding-left: 1rem !default;
-$navbar-breadcrumb-color: rgba(255, 255, 255, 0.65) !default;
-
-// Pagination
-$pagination-active-transition: all 0.2s linear !default;
-$pagination-page-link-transition: all 0.3s linear !default;
-$pagination-page-link-font-size: 0.9rem !default;
-$pagination-page-link-font-size-lg: 1rem !default;
-$pagination-page-link-font-size-sm: 0.8rem !default;
-$pagination-page-item-disabled-color: #868e96 !default;
-$pagination-page-link-color: #212529 !default;
-$pagination-page-link-hover-bg-color: #eee !default;
-$pagination-circle-margin-x: 2px !default;
-$pagination-circle-border-radius: $border-radius-circle !default;
-
-// Tables
-$table-th-font-size: 0.9rem !default;
-$table-td-font-size: $table-th-font-size !default;
-$table-th-padding-top: 1.1rem !default;
-$table-td-padding-bottom: 1rem !default;
-$table-a-color: #212529 !default;
-$table-hover-transition: 0.5s !default;
-$table-hover-background-color: rgba(0, 0, 0, 0.075) !default;
-$table-sm-padding-y: 0.6rem !default;
-$table-inverse-color-border: $white-base !default;
-$product-table-img-max-height: 150px !default;
-$product-table-img-min-width: 50px !default;
-$table-th-lg-min-width: 9rem !default;
-$table-th-sm-min-width: 6rem !default;
-$table-scroll-vertical-max-height: 300px !default;
-$table-label-height: 0.94rem !default;
-$table-label-line-height: $table-label-height !default;
-
-// Steppers
-$stepper-li-a-padding: 1.5rem !default;
-$stepper-li-a-circle-color: $white !default;
-$stepper-li-a-circle-border-radius: $border-radius-circle !default;
-$stepper-li-a-circle-bg: rgba($black, 0.38) !default;
-$stepper-li-a-circle-mr: 0.5rem !default;
-$stepper-li-a-label-color: rgba($black, 0.87) !default;
-
-$stepper-horizontal-li-transition: 0.5s !default;
-$stepper-horizontal-li-a-label-mt: 0.63rem !default;
-$stepper-horizontal-li-after-margin: 0.5rem !default;
-$stepper-horizontal-li-after-height: 1px !default;
-$stepper-horizontal-li-after-bgc: rgba($black, 0.1) !default;
-$stepper-horizontal-breakpoint: 47.9375rem !default;
-$stepper-horizontal-small-li-a-label-mt: 0.2rem !default;
-$stepper-horizontal-small-li-after-width: $stepper-horizontal-li-after-height !default;
-$stepper-horizontal-small-li-after-height: calc(100% - 40px) !default;
-$stepper-horizontal-small-li-after-left: 2.19rem !default;
-$stepper-horizontal-small-li-after-top: 3.75rem !default;
-
-$stepper-vertical-li-a-label-mt: $stepper-horizontal-small-li-a-label-mt !default;
-$stepper-vertical-li-step-content-ml: 3.13rem !default;
-$stepper-vertical-li-step-content-padding: 0.94rem !default;
-$stepper-vertical-li-step-content-p-font-size: 0.88rem !default;
-$stepper-vertical-li-after-width: 1px !default;
-$stepper-vertical-li-after-height: $stepper-horizontal-small-li-after-height !default;
-$stepper-vertical-li-after-left: $stepper-horizontal-small-li-after-left !default;
-$stepper-vertical-li-after-top: 3.44rem !default;
-$stepper-vertical-li-after-bgc: $stepper-horizontal-li-after-bgc !default;
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_waves.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/_waves.scss
deleted file mode 100755
index 262dcbe1..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/_waves.scss
+++ /dev/null
@@ -1,165 +0,0 @@
-/*!
- * Waves v0.7.6
- * http://fian.my.id/Waves
- *
- * Copyright 2014-2018 Alfiana E. Sibuea and other contributors
- * Released under the MIT license
- * https://github.com/fians/Waves/blob/master/LICENSE */
-
-@mixin waves-transition($transition) {
- -webkit-transition: $transition;
- -moz-transition: $transition;
- -o-transition: $transition;
- transition: $transition;
-}
-
-@mixin waves-transform($string) {
- -webkit-transform: $string;
- -moz-transform: $string;
- -ms-transform: $string;
- -o-transform: $string;
- transform: $string;
-}
-
-@mixin waves-box-shadow($shadow) {
- -webkit-box-shadow: $shadow;
- box-shadow: $shadow;
-}
-
-.waves-effect {
- position: relative;
- cursor: pointer;
- overflow: hidden;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- -webkit-tap-highlight-color: transparent;
-
- .waves-ripple {
- position: absolute;
- border-radius: 50%;
- width: 100px;
- height: 100px;
- margin-top: -50px;
- margin-left: -50px;
- opacity: 0;
- background: rgba(0, 0, 0, 0.2);
- $gradient: rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%,
- rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%;
- background: -webkit-radial-gradient($gradient);
- background: -o-radial-gradient($gradient);
- background: -moz-radial-gradient($gradient);
- background: radial-gradient($gradient);
- @include waves-transition(all 0.5s ease-out);
- -webkit-transition-property: -webkit-transform, opacity;
- -moz-transition-property: -moz-transform, opacity;
- -o-transition-property: -o-transform, opacity;
- transition-property: transform, opacity;
- @include waves-transform(scale(0) translate(0, 0));
- pointer-events: none;
- }
-
- &.waves-light .waves-ripple {
- background: rgba(255, 255, 255, 0.4);
- $gradient: rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%,
- rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%;
- background: -webkit-radial-gradient($gradient);
- background: -o-radial-gradient($gradient);
- background: -moz-radial-gradient($gradient);
- background: radial-gradient($gradient);
- }
-
- &.waves-classic .waves-ripple {
- background: rgba(0, 0, 0, 0.2);
- }
-
- &.waves-classic.waves-light .waves-ripple {
- background: rgba(255, 255, 255, 0.4);
- }
-}
-
-.waves-notransition {
- @include waves-transition(none #{'!important'});
-}
-
-.waves-button,
-.waves-circle {
- @include waves-transform(translateZ(0));
- -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);
-}
-
-.waves-button,
-.waves-button:hover,
-.waves-button:visited,
-.waves-button-input {
- white-space: nowrap;
- vertical-align: middle;
- cursor: pointer;
- border: none;
- outline: none;
- color: inherit;
- background-color: rgba(0, 0, 0, 0);
- font-size: 1em;
- line-height: 1em;
- text-align: center;
- text-decoration: none;
- z-index: 1;
-}
-
-.waves-button {
- padding: 0.85em 1.1em;
- border-radius: 0.2em;
-}
-
-.waves-button-input {
- margin: 0;
- padding: 0.85em 1.1em;
-}
-
-.waves-input-wrapper {
- display: inline-block;
- position: relative;
- vertical-align: middle;
- border-radius: 0.2em;
-
- &.waves-button {
- padding: 0;
- }
-
- .waves-button-input {
- position: relative;
- top: 0;
- left: 0;
- z-index: 1;
- }
-}
-
-.waves-circle {
- text-align: center;
- width: 2.5em;
- height: 2.5em;
- line-height: 2.5em;
- border-radius: 50%;
-}
-
-.waves-float {
- -webkit-mask-image: none;
- @include waves-box-shadow(0px 1px 1.5px 1px rgba(0, 0, 0, 0.12));
- @include waves-transition(all 300ms);
-
- &:active {
- @include waves-box-shadow(0px 8px 20px 1px rgba(0, 0, 0, 0.3));
- }
-}
-
-.waves-block {
- display: block;
-}
-
-a:not(.nav-link) {
- &.waves-effect,
- &.waves-light {
- display: inline-block;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/bootstrap/_functions.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/bootstrap/_functions.scss
deleted file mode 100755
index d2cc91d5..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/bootstrap/_functions.scss
+++ /dev/null
@@ -1,86 +0,0 @@
-// Bootstrap functions
-//
-// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
-
-// Ascending
-// Used to evaluate Sass maps like our grid breakpoints.
-@mixin _assert-ascending($map, $map-name) {
- $prev-key: null;
- $prev-num: null;
- @each $key, $num in $map {
- @if $prev-num == null or unit($num) == "%" {
- // Do nothing
- } @else if not comparable($prev-num, $num) {
- @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
- } @else if $prev-num >= $num {
- @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
- }
- $prev-key: $key;
- $prev-num: $num;
- }
-}
-
-// Starts at zero
-// Used to ensure the min-width of the lowest breakpoint starts at 0.
-@mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
- $values: map-values($map);
- $first-value: nth($values, 1);
- @if $first-value != 0 {
- @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
- }
-}
-
-// Replace `$search` with `$replace` in `$string`
-// Used on our SVG icon backgrounds for custom forms.
-//
-// @author Hugo Giraudel
-// @param {String} $string - Initial string
-// @param {String} $search - Substring to replace
-// @param {String} $replace ('') - New value
-// @return {String} - Updated string
-@function str-replace($string, $search, $replace: "") {
- $index: str-index($string, $search);
-
- @if $index {
- @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
- }
-
- @return $string;
-}
-
-// Color contrast
-@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
- $r: red($color);
- $g: green($color);
- $b: blue($color);
-
- $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
-
- @if ($yiq >= $yiq-contrasted-threshold) {
- @return $dark;
- } @else {
- @return $light;
- }
-}
-
-// Retrieve color Sass maps
-@function color($key: "blue") {
- @return map-get($colors, $key);
-}
-
-@function theme-color($key: "primary") {
- @return map-get($theme-colors, $key);
-}
-
-@function gray($key: "100") {
- @return map-get($grays, $key);
-}
-
-// Request a theme color level
-@function theme-color-level($color-name: "primary", $level: 0) {
- $color: theme-color($color-name);
- $color-base: if($level > 0, $black, $white);
- $level: abs($level);
-
- @return mix($color-base, $color, $level * $theme-color-interval);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/bootstrap/_rfs.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/bootstrap/_rfs.scss
deleted file mode 100644
index c9b858eb..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/bootstrap/_rfs.scss
+++ /dev/null
@@ -1,204 +0,0 @@
-// stylelint-disable property-blacklist, scss/dollar-variable-default
-
-// SCSS RFS mixin
-//
-// Automated font-resizing
-//
-// See https://github.com/twbs/rfs
-
-// Configuration
-
-// Base font size
-$rfs-base-font-size: 1.25rem !default;
-$rfs-font-size-unit: rem !default;
-
-// Breakpoint at where font-size starts decreasing if screen width is smaller
-$rfs-breakpoint: 1200px !default;
-$rfs-breakpoint-unit: px !default;
-
-// Resize font-size based on screen height and width
-$rfs-two-dimensional: false !default;
-
-// Factor of decrease
-$rfs-factor: 10 !default;
-
-@if type-of($rfs-factor) != "number" or $rfs-factor <= 1 {
- @error "`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.";
-}
-
-// Generate enable or disable classes. Possibilities: false, "enable" or "disable"
-$rfs-class: false !default;
-
-// 1 rem = $rfs-rem-value px
-$rfs-rem-value: 16 !default;
-
-// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14
-$rfs-safari-iframe-resize-bug-fix: false !default;
-
-// Disable RFS by setting $enable-responsive-font-sizes to false
-$enable-responsive-font-sizes: true !important;
-
-// Cache $rfs-base-font-size unit
-$rfs-base-font-size-unit: unit($rfs-base-font-size);
-
-// Remove px-unit from $rfs-base-font-size for calculations
-@if $rfs-base-font-size-unit == "px" {
- $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);
-}
-@else if $rfs-base-font-size-unit == "rem" {
- $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);
-}
-
-// Cache $rfs-breakpoint unit to prevent multiple calls
-$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);
-
-// Remove unit from $rfs-breakpoint for calculations
-@if $rfs-breakpoint-unit-cache == "px" {
- $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);
-}
-@else if $rfs-breakpoint-unit-cache == "rem" or $rfs-breakpoint-unit-cache == "em" {
- $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);
-}
-
-// Responsive font-size mixin
-@mixin rfs($fs, $important: false) {
- // Cache $fs unit
- $fs-unit: if(type-of($fs) == "number", unit($fs), false);
-
- // Add !important suffix if needed
- $rfs-suffix: if($important, " !important", "");
-
- // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
- @if not $fs-unit or $fs-unit != "" and $fs-unit != "px" and $fs-unit != "rem" or $fs == 0 {
- font-size: #{$fs}#{$rfs-suffix};
- }
- @else {
- // Variables for storing static and fluid rescaling
- $rfs-static: null;
- $rfs-fluid: null;
-
- // Remove px-unit from $fs for calculations
- @if $fs-unit == "px" {
- $fs: $fs / ($fs * 0 + 1);
- }
- @else if $fs-unit == "rem" {
- $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);
- }
-
- // Set default font-size
- @if $rfs-font-size-unit == rem {
- $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};
- }
- @else if $rfs-font-size-unit == px {
- $rfs-static: #{$fs}px#{$rfs-suffix};
- }
- @else {
- @error "`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.";
- }
-
- // Only add media query if font-size is bigger as the minimum font-size
- // If $rfs-factor == 1, no rescaling will take place
- @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {
- $min-width: null;
- $variable-unit: null;
-
- // Calculate minimum font-size for given font-size
- $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;
-
- // Calculate difference between given font-size and minimum font-size for given font-size
- $fs-diff: $fs - $fs-min;
-
- // Base font-size formatting
- // No need to check if the unit is valid, because we did that before
- $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);
-
- // If two-dimensional, use smallest of screen width and height
- $variable-unit: if($rfs-two-dimensional, vmin, vw);
-
- // Calculate the variable width between 0 and $rfs-breakpoint
- $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};
-
- // Set the calculated font-size.
- $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};
- }
-
- // Rendering
- @if $rfs-fluid == null {
- // Only render static font-size if no fluid font-size is available
- font-size: $rfs-static;
- }
- @else {
- $mq-value: null;
-
- // RFS breakpoint formatting
- @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {
- $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};
- }
- @else if $rfs-breakpoint-unit == px {
- $mq-value: #{$rfs-breakpoint}px;
- }
- @else {
- @error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.";
- }
-
- @if $rfs-class == "disable" {
- // Adding an extra class increases specificity,
- // which prevents the media query to override the font size
- &,
- .disable-responsive-font-size &,
- &.disable-responsive-font-size {
- font-size: $rfs-static;
- }
- }
- @else {
- font-size: $rfs-static;
- }
-
- @if $rfs-two-dimensional {
- @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {
- @if $rfs-class == "enable" {
- .enable-responsive-font-size &,
- &.enable-responsive-font-size {
- font-size: $rfs-fluid;
- }
- }
- @else {
- font-size: $rfs-fluid;
- }
-
- @if $rfs-safari-iframe-resize-bug-fix {
- // stylelint-disable-next-line length-zero-no-unit
- min-width: 0vw;
- }
- }
- }
- @else {
- @media (max-width: #{$mq-value}) {
- @if $rfs-class == "enable" {
- .enable-responsive-font-size &,
- &.enable-responsive-font-size {
- font-size: $rfs-fluid;
- }
- }
- @else {
- font-size: $rfs-fluid;
- }
-
- @if $rfs-safari-iframe-resize-bug-fix {
- // stylelint-disable-next-line length-zero-no-unit
- min-width: 0vw;
- }
- }
- }
- }
- }
-}
-
-// The font-size & responsive-font-size mixin uses RFS to rescale font sizes
-@mixin font-size($fs, $important: false) {
- @include rfs($fs, $important);
-}
-
-@mixin responsive-font-size($fs, $important: false) {
- @include rfs($fs, $important);
-}
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/bootstrap/_variables.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/bootstrap/_variables.scss
deleted file mode 100755
index f206593c..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/bootstrap/_variables.scss
+++ /dev/null
@@ -1,1124 +0,0 @@
-// Variables
-//
-// Variables should follow the `$component-state-property-size` formula for
-// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.
-
-// Color system
-
-$white: #fff !default;
-$gray-100: #f8f9fa !default;
-$gray-200: #e9ecef !default;
-$gray-300: #dee2e6 !default;
-$gray-400: #ced4da !default;
-$gray-500: #adb5bd !default;
-$gray-600: #6c757d !default;
-$gray-700: #495057 !default;
-$gray-800: #343a40 !default;
-$gray-900: #212529 !default;
-$black: #000 !default;
-
-$grays: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$grays: map-merge(
- (
- "100": $gray-100,
- "200": $gray-200,
- "300": $gray-300,
- "400": $gray-400,
- "500": $gray-500,
- "600": $gray-600,
- "700": $gray-700,
- "800": $gray-800,
- "900": $gray-900
- ),
- $grays
-);
-
-$blue: #007bff !default;
-$indigo: #6610f2 !default;
-$purple: #6f42c1 !default;
-$pink: #e83e8c !default;
-$red: #dc3545 !default;
-$orange: #fd7e14 !default;
-$yellow: #ffc107 !default;
-$green: #28a745 !default;
-$teal: #20c997 !default;
-$cyan: #17a2b8 !default;
-
-$colors: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$colors: map-merge(
- (
- "blue": $blue,
- "indigo": $indigo,
- "purple": $purple,
- "pink": $pink,
- "red": $red,
- "orange": $orange,
- "yellow": $yellow,
- "green": $green,
- "teal": $teal,
- "cyan": $cyan,
- "white": $white,
- "gray": $gray-600,
- "gray-dark": $gray-800
- ),
- $colors
-);
-
-$primary: $blue !default;
-$secondary: $gray-600 !default;
-$success: $green !default;
-$info: $cyan !default;
-$warning: $yellow !default;
-$danger: $red !default;
-$light: $gray-100 !default;
-$dark: $gray-800 !default;
-
-$theme-colors: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$theme-colors: map-merge(
- (
- "primary": $primary,
- "secondary": $secondary,
- "success": $success,
- "info": $info,
- "warning": $warning,
- "danger": $danger,
- "light": $light,
- "dark": $dark
- ),
- $theme-colors
-);
-
-// Set a specific jump point for requesting color jumps
-$theme-color-interval: 8% !default;
-
-// The yiq lightness value that determines when the lightness of color changes from "dark" to "light". Acceptable values are between 0 and 255.
-$yiq-contrasted-threshold: 150 !default;
-
-// Customize the light and dark text colors for use in our YIQ color contrast function.
-$yiq-text-dark: $gray-900 !default;
-$yiq-text-light: $white !default;
-
-
-// Options
-//
-// Quickly modify global styling by enabling or disabling optional features.
-
-$enable-caret: true !default;
-$enable-rounded: true !default;
-$enable-shadows: false !default;
-$enable-gradients: false !default;
-$enable-transitions: true !default;
-$enable-prefers-reduced-motion-media-query: true !default;
-$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS
-$enable-grid-classes: true !default;
-$enable-pointer-cursor-for-buttons: true !default;
-$enable-print-styles: true !default;
-$enable-responsive-font-sizes: false !default;
-$enable-validation-icons: true !default;
-$enable-deprecation-messages: true !default;
-
-
-// Spacing
-//
-// Control the default styling of most Bootstrap elements by modifying these
-// variables. Mostly focused on spacing.
-// You can add more entries to the $spacers map, should you need more variation.
-
-$spacer: 1rem !default;
-$spacers: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$spacers: map-merge(
- (
- 0: 0,
- 1: ($spacer * .25),
- 2: ($spacer * .5),
- 3: $spacer,
- 4: ($spacer * 1.5),
- 5: ($spacer * 3)
- ),
- $spacers
-);
-
-// This variable affects the `.h-*` and `.w-*` classes.
-$sizes: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$sizes: map-merge(
- (
- 25: 25%,
- 50: 50%,
- 75: 75%,
- 100: 100%,
- auto: auto
- ),
- $sizes
-);
-
-
-// Body
-//
-// Settings for the `` element.
-
-$body-bg: $white !default;
-$body-color: $gray-900 !default;
-
-
-// Links
-//
-// Style anchor elements.
-
-$link-color: theme-color("primary") !default;
-$link-decoration: none !default;
-$link-hover-color: darken($link-color, 15%) !default;
-$link-hover-decoration: underline !default;
-// Darken percentage for links with `.text-*` class (e.g. `.text-success`)
-$emphasized-link-hover-darken-percentage: 15% !default;
-
-// Paragraphs
-//
-// Style p element.
-
-$paragraph-margin-bottom: 1rem !default;
-
-
-// Grid breakpoints
-//
-// Define the minimum dimensions at which your layout will change,
-// adapting to different screen sizes, for use in media queries.
-
-$grid-breakpoints: (
- xs: 0,
- sm: 576px,
- md: 768px,
- lg: 992px,
- xl: 1200px
-) !default;
-
-@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
-@include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints");
-
-
-// Grid containers
-//
-// Define the maximum width of `.container` for different screen sizes.
-
-$container-max-widths: (
- sm: 540px,
- md: 720px,
- lg: 960px,
- xl: 1140px
-) !default;
-
-@include _assert-ascending($container-max-widths, "$container-max-widths");
-
-
-// Grid columns
-//
-// Set the number of columns and specify the width of the gutters.
-
-$grid-columns: 12 !default;
-$grid-gutter-width: 30px !default;
-
-
-// Components
-//
-// Define common padding and border radius sizes and more.
-
-$line-height-lg: 1.5 !default;
-$line-height-sm: 1.5 !default;
-
-$border-width: 1px !default;
-$border-color: $gray-300 !default;
-
-$border-radius: .25rem !default;
-$border-radius-lg: .3rem !default;
-$border-radius-sm: .2rem !default;
-
-$rounded-pill: 50rem !default;
-
-$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;
-$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;
-$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;
-
-$component-active-color: $white !default;
-$component-active-bg: theme-color("primary") !default;
-
-$caret-width: .3em !default;
-$caret-vertical-align: $caret-width * .85 !default;
-$caret-spacing: $caret-width * .85 !default;
-
-$transition-base: all .2s ease-in-out !default;
-$transition-fade: opacity .15s linear !default;
-$transition-collapse: height .35s ease !default;
-
-$embed-responsive-aspect-ratios: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$embed-responsive-aspect-ratios: join(
- (
- (21 9),
- (16 9),
- (4 3),
- (1 1),
- ),
- $embed-responsive-aspect-ratios
-);
-
-// Typography
-//
-// Font, line-height, and color for body text, headings, and more.
-
-// stylelint-disable value-keyword-case
-$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
-$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
-$font-family-base: $font-family-sans-serif !default;
-// stylelint-enable value-keyword-case
-
-$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`
-$font-size-lg: $font-size-base * 1.25 !default;
-$font-size-sm: $font-size-base * .875 !default;
-
-$font-weight-lighter: lighter !default;
-$font-weight-light: 300 !default;
-$font-weight-normal: 400 !default;
-$font-weight-bold: 700 !default;
-$font-weight-bolder: bolder !default;
-
-$font-weight-base: $font-weight-normal !default;
-$line-height-base: 1.5 !default;
-
-$h1-font-size: $font-size-base * 2.5 !default;
-$h2-font-size: $font-size-base * 2 !default;
-$h3-font-size: $font-size-base * 1.75 !default;
-$h4-font-size: $font-size-base * 1.5 !default;
-$h5-font-size: $font-size-base * 1.25 !default;
-$h6-font-size: $font-size-base !default;
-
-$headings-margin-bottom: $spacer / 2 !default;
-$headings-font-family: null !default;
-$headings-font-weight: 500 !default;
-$headings-line-height: 1.2 !default;
-$headings-color: null !default;
-
-$display1-size: 6rem !default;
-$display2-size: 5.5rem !default;
-$display3-size: 4.5rem !default;
-$display4-size: 3.5rem !default;
-
-$display1-weight: 300 !default;
-$display2-weight: 300 !default;
-$display3-weight: 300 !default;
-$display4-weight: 300 !default;
-$display-line-height: $headings-line-height !default;
-
-$lead-font-size: $font-size-base * 1.25 !default;
-$lead-font-weight: 300 !default;
-
-$small-font-size: 80% !default;
-
-$text-muted: $gray-600 !default;
-
-$blockquote-small-color: $gray-600 !default;
-$blockquote-small-font-size: $small-font-size !default;
-$blockquote-font-size: $font-size-base * 1.25 !default;
-
-$hr-border-color: rgba($black, .1) !default;
-$hr-border-width: $border-width !default;
-
-$mark-padding: .2em !default;
-
-$dt-font-weight: $font-weight-bold !default;
-
-$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;
-$nested-kbd-font-weight: $font-weight-bold !default;
-
-$list-inline-padding: .5rem !default;
-
-$mark-bg: #fcf8e3 !default;
-
-$hr-margin-y: $spacer !default;
-
-
-// Tables
-//
-// Customizes the `.table` component with basic values, each used across all table variations.
-
-$table-cell-padding: .75rem !default;
-$table-cell-padding-sm: .3rem !default;
-
-$table-color: $body-color !default;
-$table-bg: null !default;
-$table-accent-bg: rgba($black, .05) !default;
-$table-hover-color: $table-color !default;
-$table-hover-bg: rgba($black, .075) !default;
-$table-active-bg: $table-hover-bg !default;
-
-$table-border-width: $border-width !default;
-$table-border-color: $border-color !default;
-
-$table-head-bg: $gray-200 !default;
-$table-head-color: $gray-700 !default;
-
-$table-dark-color: $white !default;
-$table-dark-bg: $gray-800 !default;
-$table-dark-accent-bg: rgba($white, .05) !default;
-$table-dark-hover-color: $table-dark-color !default;
-$table-dark-hover-bg: rgba($white, .075) !default;
-$table-dark-border-color: lighten($table-dark-bg, 7.5%) !default;
-$table-dark-color: $white !default;
-
-$table-striped-order: odd !default;
-
-$table-caption-color: $text-muted !default;
-
-$table-bg-level: -9 !default;
-$table-border-level: -6 !default;
-
-
-// Buttons + Forms
-//
-// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
-
-$input-btn-padding-y: .375rem !default;
-$input-btn-padding-x: .75rem !default;
-$input-btn-font-family: null !default;
-$input-btn-font-size: $font-size-base !default;
-$input-btn-line-height: $line-height-base !default;
-
-$input-btn-focus-width: .2rem !default;
-$input-btn-focus-color: rgba($component-active-bg, .25) !default;
-$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;
-
-$input-btn-padding-y-sm: .25rem !default;
-$input-btn-padding-x-sm: .5rem !default;
-$input-btn-font-size-sm: $font-size-sm !default;
-$input-btn-line-height-sm: $line-height-sm !default;
-
-$input-btn-padding-y-lg: .5rem !default;
-$input-btn-padding-x-lg: 1rem !default;
-$input-btn-font-size-lg: $font-size-lg !default;
-$input-btn-line-height-lg: $line-height-lg !default;
-
-$input-btn-border-width: $border-width !default;
-
-
-// Buttons
-//
-// For each of Bootstrap's buttons, define text, background, and border color.
-
-$btn-padding-y: $input-btn-padding-y !default;
-$btn-padding-x: $input-btn-padding-x !default;
-$btn-font-family: $input-btn-font-family !default;
-$btn-font-size: $input-btn-font-size !default;
-$btn-line-height: $input-btn-line-height !default;
-
-$btn-padding-y-sm: $input-btn-padding-y-sm !default;
-$btn-padding-x-sm: $input-btn-padding-x-sm !default;
-$btn-font-size-sm: $input-btn-font-size-sm !default;
-$btn-line-height-sm: $input-btn-line-height-sm !default;
-
-$btn-padding-y-lg: $input-btn-padding-y-lg !default;
-$btn-padding-x-lg: $input-btn-padding-x-lg !default;
-$btn-font-size-lg: $input-btn-font-size-lg !default;
-$btn-line-height-lg: $input-btn-line-height-lg !default;
-
-$btn-border-width: $input-btn-border-width !default;
-
-$btn-font-weight: $font-weight-normal !default;
-$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;
-$btn-focus-width: $input-btn-focus-width !default;
-$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;
-$btn-disabled-opacity: .65 !default;
-$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;
-
-$btn-link-disabled-color: $gray-600 !default;
-
-$btn-block-spacing-y: .5rem !default;
-
-// Allows for customizing button radius independently from global border radius
-$btn-border-radius: $border-radius !default;
-$btn-border-radius-lg: $border-radius-lg !default;
-$btn-border-radius-sm: $border-radius-sm !default;
-
-$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
-
-
-// Forms
-
-$label-margin-bottom: .5rem !default;
-
-$input-padding-y: $input-btn-padding-y !default;
-$input-padding-x: $input-btn-padding-x !default;
-$input-font-family: $input-btn-font-family !default;
-$input-font-size: $input-btn-font-size !default;
-$input-font-weight: $font-weight-base !default;
-$input-line-height: $input-btn-line-height !default;
-
-$input-padding-y-sm: $input-btn-padding-y-sm !default;
-$input-padding-x-sm: $input-btn-padding-x-sm !default;
-$input-font-size-sm: $input-btn-font-size-sm !default;
-$input-line-height-sm: $input-btn-line-height-sm !default;
-
-$input-padding-y-lg: $input-btn-padding-y-lg !default;
-$input-padding-x-lg: $input-btn-padding-x-lg !default;
-$input-font-size-lg: $input-btn-font-size-lg !default;
-$input-line-height-lg: $input-btn-line-height-lg !default;
-
-$input-bg: $white !default;
-$input-disabled-bg: $gray-200 !default;
-
-$input-color: $gray-700 !default;
-$input-border-color: $gray-400 !default;
-$input-border-width: $input-btn-border-width !default;
-$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;
-
-$input-border-radius: $border-radius !default;
-$input-border-radius-lg: $border-radius-lg !default;
-$input-border-radius-sm: $border-radius-sm !default;
-
-$input-focus-bg: $input-bg !default;
-$input-focus-border-color: lighten($component-active-bg, 25%) !default;
-$input-focus-color: $input-color !default;
-$input-focus-width: $input-btn-focus-width !default;
-$input-focus-box-shadow: $input-btn-focus-box-shadow !default;
-
-$input-placeholder-color: $gray-600 !default;
-$input-plaintext-color: $body-color !default;
-
-$input-height-border: $input-border-width * 2 !default;
-
-$input-height-inner: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2}) !default;
-$input-height-inner-half: calc(#{$input-line-height * .5em} + #{$input-padding-y}) !default;
-$input-height-inner-quarter: calc(#{$input-line-height * .25em} + #{$input-padding-y / 2}) !default;
-
-$input-height: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2} + #{$input-height-border}) !default;
-$input-height-sm: calc(#{$input-line-height-sm * 1em} + #{$input-btn-padding-y-sm * 2} + #{$input-height-border}) !default;
-$input-height-lg: calc(#{$input-line-height-lg * 1em} + #{$input-btn-padding-y-lg * 2} + #{$input-height-border}) !default;
-
-$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
-
-$form-text-margin-top: .25rem !default;
-
-$form-check-input-gutter: 1.25rem !default;
-$form-check-input-margin-y: .3rem !default;
-$form-check-input-margin-x: .25rem !default;
-
-$form-check-inline-margin-x: .75rem !default;
-$form-check-inline-input-margin-x: .3125rem !default;
-
-$form-grid-gutter-width: 10px !default;
-$form-group-margin-bottom: 1rem !default;
-
-$input-group-addon-color: $input-color !default;
-$input-group-addon-bg: $gray-200 !default;
-$input-group-addon-border-color: $input-border-color !default;
-
-$custom-forms-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
-
-$custom-control-gutter: .5rem !default;
-$custom-control-spacer-x: 1rem !default;
-
-$custom-control-indicator-size: 1rem !default;
-$custom-control-indicator-bg: $input-bg !default;
-
-$custom-control-indicator-bg-size: 50% 50% !default;
-$custom-control-indicator-box-shadow: $input-box-shadow !default;
-$custom-control-indicator-border-color: $gray-500 !default;
-$custom-control-indicator-border-width: $input-border-width !default;
-
-$custom-control-indicator-disabled-bg: $input-disabled-bg !default;
-$custom-control-label-disabled-color: $gray-600 !default;
-
-$custom-control-indicator-checked-color: $component-active-color !default;
-$custom-control-indicator-checked-bg: $component-active-bg !default;
-$custom-control-indicator-checked-disabled-bg: rgba(theme-color("primary"), .5) !default;
-$custom-control-indicator-checked-box-shadow: none !default;
-$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;
-
-$custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;
-$custom-control-indicator-focus-border-color: $input-focus-border-color !default;
-
-$custom-control-indicator-active-color: $component-active-color !default;
-$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;
-$custom-control-indicator-active-box-shadow: none !default;
-$custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;
-
-$custom-checkbox-indicator-border-radius: $border-radius !default;
-$custom-checkbox-indicator-icon-checked: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"), "#", "%23") !default;
-
-$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;
-$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;
-$custom-checkbox-indicator-icon-indeterminate: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3e%3c/svg%3e"), "#", "%23") !default;
-$custom-checkbox-indicator-indeterminate-box-shadow: none !default;
-$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;
-
-$custom-radio-indicator-border-radius: 50% !default;
-$custom-radio-indicator-icon-checked: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3e%3c/svg%3e"), "#", "%23") !default;
-
-$custom-switch-width: $custom-control-indicator-size * 1.75 !default;
-$custom-switch-indicator-border-radius: $custom-control-indicator-size / 2 !default;
-$custom-switch-indicator-size: calc(#{$custom-control-indicator-size} - #{$custom-control-indicator-border-width * 4}) !default;
-
-$custom-select-padding-y: $input-padding-y !default;
-$custom-select-padding-x: $input-padding-x !default;
-$custom-select-font-family: $input-font-family !default;
-$custom-select-font-size: $input-font-size !default;
-$custom-select-height: $input-height !default;
-$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator
-$custom-select-font-weight: $input-font-weight !default;
-$custom-select-line-height: $input-line-height !default;
-$custom-select-color: $input-color !default;
-$custom-select-disabled-color: $gray-600 !default;
-$custom-select-bg: $input-bg !default;
-$custom-select-disabled-bg: $gray-200 !default;
-$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions
-$custom-select-indicator-color: $gray-800 !default;
-$custom-select-indicator: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e"), "#", "%23") !default;
-$custom-select-background: $custom-select-indicator no-repeat right $custom-select-padding-x center / $custom-select-bg-size !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)
-
-$custom-select-feedback-icon-padding-right: calc((1em + #{2 * $custom-select-padding-y}) * 3 / 4 + #{$custom-select-padding-x + $custom-select-indicator-padding}) !default;
-$custom-select-feedback-icon-position: center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;
-$custom-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;
-
-$custom-select-border-width: $input-border-width !default;
-$custom-select-border-color: $input-border-color !default;
-$custom-select-border-radius: $border-radius !default;
-$custom-select-box-shadow: inset 0 1px 2px rgba($black, .075) !default;
-
-$custom-select-focus-border-color: $input-focus-border-color !default;
-$custom-select-focus-width: $input-focus-width !default;
-$custom-select-focus-box-shadow: 0 0 0 $custom-select-focus-width $input-btn-focus-color !default;
-
-$custom-select-padding-y-sm: $input-padding-y-sm !default;
-$custom-select-padding-x-sm: $input-padding-x-sm !default;
-$custom-select-font-size-sm: $input-font-size-sm !default;
-$custom-select-height-sm: $input-height-sm !default;
-
-$custom-select-padding-y-lg: $input-padding-y-lg !default;
-$custom-select-padding-x-lg: $input-padding-x-lg !default;
-$custom-select-font-size-lg: $input-font-size-lg !default;
-$custom-select-height-lg: $input-height-lg !default;
-
-$custom-range-track-width: 100% !default;
-$custom-range-track-height: .5rem !default;
-$custom-range-track-cursor: pointer !default;
-$custom-range-track-bg: $gray-300 !default;
-$custom-range-track-border-radius: 1rem !default;
-$custom-range-track-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;
-
-$custom-range-thumb-width: 1rem !default;
-$custom-range-thumb-height: $custom-range-thumb-width !default;
-$custom-range-thumb-bg: $component-active-bg !default;
-$custom-range-thumb-border: 0 !default;
-$custom-range-thumb-border-radius: 1rem !default;
-$custom-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;
-$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;
-$custom-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in IE/Edge
-$custom-range-thumb-active-bg: lighten($component-active-bg, 35%) !default;
-$custom-range-thumb-disabled-bg: $gray-500 !default;
-
-$custom-file-height: $input-height !default;
-$custom-file-height-inner: $input-height-inner !default;
-$custom-file-focus-border-color: $input-focus-border-color !default;
-$custom-file-focus-box-shadow: $input-focus-box-shadow !default;
-$custom-file-disabled-bg: $input-disabled-bg !default;
-
-$custom-file-padding-y: $input-padding-y !default;
-$custom-file-padding-x: $input-padding-x !default;
-$custom-file-line-height: $input-line-height !default;
-$custom-file-font-family: $input-font-family !default;
-$custom-file-font-weight: $input-font-weight !default;
-$custom-file-color: $input-color !default;
-$custom-file-bg: $input-bg !default;
-$custom-file-border-width: $input-border-width !default;
-$custom-file-border-color: $input-border-color !default;
-$custom-file-border-radius: $input-border-radius !default;
-$custom-file-box-shadow: $input-box-shadow !default;
-$custom-file-button-color: $custom-file-color !default;
-$custom-file-button-bg: $input-group-addon-bg !default;
-$custom-file-text: (
- en: "Browse"
-) !default;
-
-
-// Form validation
-
-$form-feedback-margin-top: $form-text-margin-top !default;
-$form-feedback-font-size: $small-font-size !default;
-$form-feedback-valid-color: theme-color("success") !default;
-$form-feedback-invalid-color: theme-color("danger") !default;
-
-$form-feedback-icon-valid-color: $form-feedback-valid-color !default;
-$form-feedback-icon-valid: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"), "#", "%23") !default;
-$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
-$form-feedback-icon-invalid: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$form-feedback-icon-invalid-color}' viewBox='-2 -2 7 7'%3e%3cpath stroke='#{$form-feedback-icon-invalid-color}' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"), "#", "%23") !default;
-
-$form-validation-states: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$form-validation-states: map-merge(
- (
- "valid": (
- "color": $form-feedback-valid-color,
- "icon": $form-feedback-icon-valid
- ),
- "invalid": (
- "color": $form-feedback-invalid-color,
- "icon": $form-feedback-icon-invalid
- ),
- ),
- $form-validation-states
-);
-
-// Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-
-$zindex-dropdown: 1000 !default;
-$zindex-sticky: 1020 !default;
-$zindex-fixed: 1030 !default;
-$zindex-modal-backdrop: 1040 !default;
-$zindex-modal: 1050 !default;
-$zindex-popover: 1060 !default;
-$zindex-tooltip: 1070 !default;
-
-
-// Navs
-
-$nav-link-padding-y: .5rem !default;
-$nav-link-padding-x: 1rem !default;
-$nav-link-disabled-color: $gray-600 !default;
-
-$nav-tabs-border-color: $gray-300 !default;
-$nav-tabs-border-width: $border-width !default;
-$nav-tabs-border-radius: $border-radius !default;
-$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;
-$nav-tabs-link-active-color: $gray-700 !default;
-$nav-tabs-link-active-bg: $body-bg !default;
-$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;
-
-$nav-pills-border-radius: $border-radius !default;
-$nav-pills-link-active-color: $component-active-color !default;
-$nav-pills-link-active-bg: $component-active-bg !default;
-
-$nav-divider-color: $gray-200 !default;
-$nav-divider-margin-y: $spacer / 2 !default;
-
-
-// Navbar
-
-$navbar-padding-y: $spacer / 2 !default;
-$navbar-padding-x: $spacer !default;
-
-$navbar-nav-link-padding-x: .5rem !default;
-
-$navbar-brand-font-size: $font-size-lg !default;
-// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
-$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;
-$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;
-$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;
-
-$navbar-toggler-padding-y: .25rem !default;
-$navbar-toggler-padding-x: .75rem !default;
-$navbar-toggler-font-size: $font-size-lg !default;
-$navbar-toggler-border-radius: $btn-border-radius !default;
-
-$navbar-dark-color: rgba($white, .5) !default;
-$navbar-dark-hover-color: rgba($white, .75) !default;
-$navbar-dark-active-color: $white !default;
-$navbar-dark-disabled-color: rgba($white, .25) !default;
-$navbar-dark-toggler-icon-bg: str-replace(url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"), "#", "%23") !default;
-$navbar-dark-toggler-border-color: rgba($white, .1) !default;
-
-$navbar-light-color: rgba($black, .5) !default;
-$navbar-light-hover-color: rgba($black, .7) !default;
-$navbar-light-active-color: rgba($black, .9) !default;
-$navbar-light-disabled-color: rgba($black, .3) !default;
-$navbar-light-toggler-icon-bg: str-replace(url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"), "#", "%23") !default;
-$navbar-light-toggler-border-color: rgba($black, .1) !default;
-
-$navbar-light-brand-color: $navbar-light-active-color !default;
-$navbar-light-brand-hover-color: $navbar-light-active-color !default;
-$navbar-dark-brand-color: $navbar-dark-active-color !default;
-$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;
-
-
-// Dropdowns
-//
-// Dropdown menu container and contents.
-
-$dropdown-min-width: 10rem !default;
-$dropdown-padding-y: .5rem !default;
-$dropdown-spacer: .125rem !default;
-$dropdown-font-size: $font-size-base !default;
-$dropdown-color: $body-color !default;
-$dropdown-bg: $white !default;
-$dropdown-border-color: rgba($black, .15) !default;
-$dropdown-border-radius: $border-radius !default;
-$dropdown-border-width: $border-width !default;
-$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default;
-$dropdown-divider-bg: $gray-200 !default;
-$dropdown-divider-margin-y: $nav-divider-margin-y !default;
-$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;
-
-$dropdown-link-color: $gray-900 !default;
-$dropdown-link-hover-color: darken($gray-900, 5%) !default;
-$dropdown-link-hover-bg: $gray-100 !default;
-
-$dropdown-link-active-color: $component-active-color !default;
-$dropdown-link-active-bg: $component-active-bg !default;
-
-$dropdown-link-disabled-color: $gray-600 !default;
-
-$dropdown-item-padding-y: .25rem !default;
-$dropdown-item-padding-x: 1.5rem !default;
-
-$dropdown-header-color: $gray-600 !default;
-
-
-// Pagination
-
-$pagination-padding-y: .5rem !default;
-$pagination-padding-x: .75rem !default;
-$pagination-padding-y-sm: .25rem !default;
-$pagination-padding-x-sm: .5rem !default;
-$pagination-padding-y-lg: .75rem !default;
-$pagination-padding-x-lg: 1.5rem !default;
-$pagination-line-height: 1.25 !default;
-
-$pagination-color: $link-color !default;
-$pagination-bg: $white !default;
-$pagination-border-width: $border-width !default;
-$pagination-border-color: $gray-300 !default;
-
-$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;
-$pagination-focus-outline: 0 !default;
-
-$pagination-hover-color: $link-hover-color !default;
-$pagination-hover-bg: $gray-200 !default;
-$pagination-hover-border-color: $gray-300 !default;
-
-$pagination-active-color: $component-active-color !default;
-$pagination-active-bg: $component-active-bg !default;
-$pagination-active-border-color: $pagination-active-bg !default;
-
-$pagination-disabled-color: $gray-600 !default;
-$pagination-disabled-bg: $white !default;
-$pagination-disabled-border-color: $gray-300 !default;
-
-
-// Jumbotron
-
-$jumbotron-padding: 2rem !default;
-$jumbotron-color: null !default;
-$jumbotron-bg: $gray-200 !default;
-
-
-// Cards
-
-$card-spacer-y: .75rem !default;
-$card-spacer-x: 1.25rem !default;
-$card-border-width: $border-width !default;
-$card-border-radius: $border-radius !default;
-$card-border-color: rgba($black, .125) !default;
-$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;
-$card-cap-bg: rgba($black, .03) !default;
-$card-cap-color: null !default;
-$card-color: null !default;
-$card-bg: $white !default;
-
-$card-img-overlay-padding: 1.25rem !default;
-
-$card-group-margin: $grid-gutter-width / 2 !default;
-$card-deck-margin: $card-group-margin !default;
-
-$card-columns-count: 3 !default;
-$card-columns-gap: 1.25rem !default;
-$card-columns-margin: $card-spacer-y !default;
-
-
-// Tooltips
-
-$tooltip-font-size: $font-size-sm !default;
-$tooltip-max-width: 200px !default;
-$tooltip-color: $white !default;
-$tooltip-bg: $black !default;
-$tooltip-border-radius: $border-radius !default;
-$tooltip-opacity: .9 !default;
-$tooltip-padding-y: .25rem !default;
-$tooltip-padding-x: .5rem !default;
-$tooltip-margin: 0 !default;
-
-$tooltip-arrow-width: .8rem !default;
-$tooltip-arrow-height: .4rem !default;
-$tooltip-arrow-color: $tooltip-bg !default;
-
-// Form tooltips must come after regular tooltips
-$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;
-$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;
-$form-feedback-tooltip-font-size: $tooltip-font-size !default;
-$form-feedback-tooltip-line-height: $line-height-base !default;
-$form-feedback-tooltip-opacity: $tooltip-opacity !default;
-$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;
-
-
-// Popovers
-
-$popover-font-size: $font-size-sm !default;
-$popover-bg: $white !default;
-$popover-max-width: 276px !default;
-$popover-border-width: $border-width !default;
-$popover-border-color: rgba($black, .2) !default;
-$popover-border-radius: $border-radius-lg !default;
-$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;
-
-$popover-header-bg: darken($popover-bg, 3%) !default;
-$popover-header-color: $headings-color !default;
-$popover-header-padding-y: .5rem !default;
-$popover-header-padding-x: .75rem !default;
-
-$popover-body-color: $body-color !default;
-$popover-body-padding-y: $popover-header-padding-y !default;
-$popover-body-padding-x: $popover-header-padding-x !default;
-
-$popover-arrow-width: 1rem !default;
-$popover-arrow-height: .5rem !default;
-$popover-arrow-color: $popover-bg !default;
-
-$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;
-
-
-// Toasts
-
-$toast-max-width: 350px !default;
-$toast-padding-x: .75rem !default;
-$toast-padding-y: .25rem !default;
-$toast-font-size: .875rem !default;
-$toast-color: null !default;
-$toast-background-color: rgba($white, .85) !default;
-$toast-border-width: 1px !default;
-$toast-border-color: rgba(0, 0, 0, .1) !default;
-$toast-border-radius: .25rem !default;
-$toast-box-shadow: 0 .25rem .75rem rgba($black, .1) !default;
-
-$toast-header-color: $gray-600 !default;
-$toast-header-background-color: rgba($white, .85) !default;
-$toast-header-border-color: rgba(0, 0, 0, .05) !default;
-
-
-// Badges
-
-$badge-font-size: 75% !default;
-$badge-font-weight: $font-weight-bold !default;
-$badge-padding-y: .25em !default;
-$badge-padding-x: .4em !default;
-$badge-border-radius: $border-radius !default;
-
-$badge-transition: $btn-transition !default;
-$badge-focus-width: $input-btn-focus-width !default;
-
-$badge-pill-padding-x: .6em !default;
-// Use a higher than normal value to ensure completely rounded edges when
-// customizing padding or font-size on labels.
-$badge-pill-border-radius: 10rem !default;
-
-
-// Modals
-
-// Padding applied to the modal body
-$modal-inner-padding: 1rem !default;
-
-$modal-dialog-margin: .5rem !default;
-$modal-dialog-margin-y-sm-up: 1.75rem !default;
-
-$modal-title-line-height: $line-height-base !default;
-
-$modal-content-color: null !default;
-$modal-content-bg: $white !default;
-$modal-content-border-color: rgba($black, .2) !default;
-$modal-content-border-width: $border-width !default;
-$modal-content-border-radius: $border-radius-lg !default;
-$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;
-$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;
-
-$modal-backdrop-bg: $black !default;
-$modal-backdrop-opacity: .5 !default;
-$modal-header-border-color: $border-color !default;
-$modal-footer-border-color: $modal-header-border-color !default;
-$modal-header-border-width: $modal-content-border-width !default;
-$modal-footer-border-width: $modal-header-border-width !default;
-$modal-header-padding-y: 1rem !default;
-$modal-header-padding-x: 1rem !default;
-$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility
-
-$modal-xl: 1140px !default;
-$modal-lg: 800px !default;
-$modal-md: 500px !default;
-$modal-sm: 300px !default;
-
-$modal-fade-transform: translate(0, -50px) !default;
-$modal-show-transform: none !default;
-$modal-transition: transform .3s ease-out !default;
-
-
-// Alerts
-//
-// Define alert colors, border radius, and padding.
-
-$alert-padding-y: .75rem !default;
-$alert-padding-x: 1.25rem !default;
-$alert-margin-bottom: 1rem !default;
-$alert-border-radius: $border-radius !default;
-$alert-link-font-weight: $font-weight-bold !default;
-$alert-border-width: $border-width !default;
-
-$alert-bg-level: -10 !default;
-$alert-border-level: -9 !default;
-$alert-color-level: 6 !default;
-
-
-// Progress bars
-
-$progress-height: 1rem !default;
-$progress-font-size: $font-size-base * .75 !default;
-$progress-bg: $gray-200 !default;
-$progress-border-radius: $border-radius !default;
-$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;
-$progress-bar-color: $white !default;
-$progress-bar-bg: theme-color("primary") !default;
-$progress-bar-animation-timing: 1s linear infinite !default;
-$progress-bar-transition: width .6s ease !default;
-
-
-// List group
-
-$list-group-color: null !default;
-$list-group-bg: $white !default;
-$list-group-border-color: rgba($black, .125) !default;
-$list-group-border-width: $border-width !default;
-$list-group-border-radius: $border-radius !default;
-
-$list-group-item-padding-y: .75rem !default;
-$list-group-item-padding-x: 1.25rem !default;
-
-$list-group-hover-bg: $gray-100 !default;
-$list-group-active-color: $component-active-color !default;
-$list-group-active-bg: $component-active-bg !default;
-$list-group-active-border-color: $list-group-active-bg !default;
-
-$list-group-disabled-color: $gray-600 !default;
-$list-group-disabled-bg: $list-group-bg !default;
-
-$list-group-action-color: $gray-700 !default;
-$list-group-action-hover-color: $list-group-action-color !default;
-
-$list-group-action-active-color: $body-color !default;
-$list-group-action-active-bg: $gray-200 !default;
-
-
-// Image thumbnails
-
-$thumbnail-padding: .25rem !default;
-$thumbnail-bg: $body-bg !default;
-$thumbnail-border-width: $border-width !default;
-$thumbnail-border-color: $gray-300 !default;
-$thumbnail-border-radius: $border-radius !default;
-$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;
-
-
-// Figures
-
-$figure-caption-font-size: 90% !default;
-$figure-caption-color: $gray-600 !default;
-
-
-// Breadcrumbs
-
-$breadcrumb-padding-y: .75rem !default;
-$breadcrumb-padding-x: 1rem !default;
-$breadcrumb-item-padding: .5rem !default;
-
-$breadcrumb-margin-bottom: 1rem !default;
-
-$breadcrumb-bg: $gray-200 !default;
-$breadcrumb-divider-color: $gray-600 !default;
-$breadcrumb-active-color: $gray-600 !default;
-$breadcrumb-divider: quote("/") !default;
-
-$breadcrumb-border-radius: $border-radius !default;
-
-
-// Carousel
-
-$carousel-control-color: $white !default;
-$carousel-control-width: 15% !default;
-$carousel-control-opacity: .5 !default;
-$carousel-control-hover-opacity: .9 !default;
-$carousel-control-transition: opacity .15s ease !default;
-
-$carousel-indicator-width: 30px !default;
-$carousel-indicator-height: 3px !default;
-$carousel-indicator-hit-area-height: 10px !default;
-$carousel-indicator-spacer: 3px !default;
-$carousel-indicator-active-bg: $white !default;
-$carousel-indicator-transition: opacity .6s ease !default;
-
-$carousel-caption-width: 70% !default;
-$carousel-caption-color: $white !default;
-
-$carousel-control-icon-width: 20px !default;
-
-$carousel-control-prev-icon-bg: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"), "#", "%23") !default;
-$carousel-control-next-icon-bg: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"), "#", "%23") !default;
-
-$carousel-transition-duration: .6s !default;
-$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
-
-
-// Spinners
-
-$spinner-width: 2rem !default;
-$spinner-height: $spinner-width !default;
-$spinner-border-width: .25em !default;
-
-$spinner-width-sm: 1rem !default;
-$spinner-height-sm: $spinner-width-sm !default;
-$spinner-border-width-sm: .2em !default;
-
-
-// Close
-
-$close-font-size: $font-size-base * 1.5 !default;
-$close-font-weight: $font-weight-bold !default;
-$close-color: $black !default;
-$close-text-shadow: 0 1px 0 $white !default;
-
-
-// Code
-
-$code-font-size: 87.5% !default;
-$code-color: $pink !default;
-
-$kbd-padding-y: .2rem !default;
-$kbd-padding-x: .4rem !default;
-$kbd-font-size: $code-font-size !default;
-$kbd-color: $white !default;
-$kbd-bg: $gray-900 !default;
-
-$pre-color: $gray-900 !default;
-$pre-scrollable-max-height: 340px !default;
-
-
-// Utilities
-
-$displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;
-$overflows: auto, hidden !default;
-$positions: static, relative, absolute, fixed, sticky !default;
-
-
-// Printing
-
-$print-page-size: a3 !default;
-$print-body-min-width: map-get($grid-breakpoints, "lg") !default;
-
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_bootstrap-select.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_bootstrap-select.scss
deleted file mode 100644
index 389403a3..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_bootstrap-select.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-.custom-select.validate-error.ng-touched.ng-invalid {
- border-color: #ff4444;
- background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e")
- no-repeat right 0.75rem center/8px 10px,
- url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E")
- #fff no-repeat center right 1.75rem / calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
-}
-
-.custom-select.validate-error.ng-touched.ng-invalid:focus {
- border-color: #ff4444;
- box-shadow: 0 0 0 0.2rem rgba(255, 68, 68, 0.25);
-}
-
-.custom-select.validate-success.ng-touched.ng-valid {
- border-color: #00c851;
- background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e")
- no-repeat right 0.75rem center/8px 10px,
- url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e")
- #fff no-repeat center right 1.75rem / calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
-}
-
-.custom-select.validate-success.ng-touched.ng-valid:focus {
- border-color: #00c851;
- box-shadow: 0 0 0 0.2rem rgba(0, 200, 81, 0.25);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_carousel.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_carousel.scss
deleted file mode 100644
index 10ca6aba..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_carousel.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-.carousel {
- .carousel-control-prev-icon {
- background-image: url('#{$image-path}/svg/arrow_left.svg') !important;
- }
-
- .carousel-control-next-icon {
- background-image: url('#{$image-path}/svg/arrow_right.svg') !important;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_footers.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_footers.scss
deleted file mode 100644
index d063c024..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_footers.scss
+++ /dev/null
@@ -1,18 +0,0 @@
-// Footers
-footer {
- &.page-footer {
- bottom: 0;
- color: $white-base;
- .container-fluid {
- width: auto;
- }
- .footer-copyright {
- overflow: hidden;
- background-color: $footer-copyright-bg-color;
- color: $footer-copyright-color;
- }
- a {
- color: $white-base;
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_forms.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_forms.scss
deleted file mode 100755
index 95d7f879..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_forms.scss
+++ /dev/null
@@ -1,904 +0,0 @@
-// Forms basic
-// Input + label wrapper styles
-.md-form {
- // Text inputs
- input[type='text'],
- input[type='password'],
- input[type='email'],
- input[type='url'],
- input[type='time'],
- input[type='date'],
- input[type='datetime-local'],
- input[type='tel'],
- input[type='number'],
- input[type='search-md'],
- input[type='search'],
- textarea.md-textarea {
- // General Styles
- transition: $input-transition;
- outline: none;
- box-shadow: none;
- border: none;
- border-bottom: 1px solid $input-border-color;
- border-radius: 0;
- box-sizing: content-box;
- background-color: transparent;
-
- // Focused input style
- &:focus:not([readonly]) {
- box-shadow: 0 1px 0 0 $input-md-focus-color;
- border-bottom: 1px solid $input-md-focus-color;
-
- // Focused label style
- + label {
- color: $input-md-focus-color;
- }
- }
-
- // Form message shared styles
- + label:after {
- content: '';
- position: absolute;
- top: $input-label-after-top;
- display: block;
- opacity: 0;
- transition: $input-label-after-transition;
- }
-
- // Valid input style
- &.valid,
- &:focus.valid {
- border-bottom: 1px solid $input-success-color;
- box-shadow: 0 1px 0 0 $input-success-color;
- }
-
- &.valid + label:after,
- &:focus.valid + label:after {
- content: attr(data-success);
- color: $input-success-color;
- opacity: 1;
- }
-
- // Invalid input style
- &.invalid,
- &:focus.invalid {
- border-bottom: 1px solid $input-error-color;
- box-shadow: 0 1px 0 0 $input-error-color;
- }
-
- &.invalid + label:after,
- &:focus.invalid + label:after {
- content: attr(data-error);
- color: $input-error-color;
- opacity: 1;
- }
-
- &.form-control.valid + label:after,
- &.form-control:focus.valid + label:after {
- top: $input-label-valid-top;
- }
-
- &.form-control.invalid + label:after,
- &.form-control:focus.invalid + label:after {
- top: $input-label-invalid-top;
- }
-
- &.form-control-lg.valid + label:after,
- &.form-control-lg:focus.valid + label:after {
- top: $input-label-valid-top-lg;
- }
-
- &.form-control-lg.invalid + label:after,
- &.form-control-lg:focus.invalid + label:after {
- top: $input-label-invalid-top-lg;
- }
-
- &.form-control-sm.valid + label:after,
- &.form-control-sm:focus.valid + label:after {
- top: $input-label-valid-top-sm;
- }
-
- &.form-control-sm.invalid + label:after,
- &.form-control-sm:focus.invalid + label:after {
- top: $input-label-invalid-top-sm;
- }
- }
-
- > input[type='date']:not(.browser-default) + label {
- transform: translateY(-14px) scale(0.8);
- transform-origin: 0 0;
- width: 125%;
- }
-
- > input[type]:-webkit-autofill:not(.browser-default):not([type='search']) + label,
- > input[type='time']:not(.browser-default) + label {
- transform: translateY(-14px);
- transform-origin: 0 0;
- font-size: 0.8rem;
- width: 100%;
- }
-
- .was-validated {
- input[type='text'] {
- &:valid {
- + label {
- color: $input-success-color !important;
- }
- }
-
- &:invalid {
- + label {
- color: $input-error-color !important;
- }
- }
- }
-
- .form-control {
- &:valid:focus {
- box-shadow: 0 1px 0 0 $input-success-color !important;
- }
-
- &:valid {
- border-color: $input-success-color !important;
- }
-
- &:invalid:focus {
- box-shadow: 0 1px 0 0 $input-error-color !important;
- }
-
- &:invalid {
- border-color: $input-error-color !important;
- }
- }
- }
-
- // Input with label
- .form-control {
- margin: 0 0 $input-form-control-margin-bottom 0;
- border-radius: 0;
- padding: $input-form-control-padding-top 0 $input-form-control-padding-bottom 0;
- // background-image: none;
- background-color: transparent;
- height: auto;
-
- &:focus {
- box-shadow: none;
- // background: transparent;
- }
-
- &:disabled,
- &[readonly] {
- border-bottom: 1px solid $grey-lighten-1;
- background-color: transparent;
- }
-
- &.is-valid {
- border-color: $input-success-color;
-
- &:focus {
- border-color: $input-success-color !important;
- box-shadow: 0 1px 0 0 $input-success-color !important;
- }
- }
-
- &.is-invalid {
- border-color: $input-error-color;
-
- &:focus {
- box-shadow: 0 1px 0 0 $input-error-color !important;
- border-color: $input-error-color !important;
- }
- }
-
- &.is-valid,
- &.is-invalid {
- background-position: center right !important;
- }
- }
-
- @include make-input(
- $input-validate-mb,
- $input-label-font-size,
- $input-label-active-font-size,
- $input-prefix-top,
- $input-prefix-font-size,
- $input-prefix-margin-left,
- $input-prefix-width,
- $input-form-text-ml
- );
- position: relative;
- margin-top: $input-md-form-margin-top;
- margin-bottom: $input-md-form-margin-bottom;
-
- label {
- position: absolute;
- top: 0;
- left: 0;
- font-size: 1rem;
- transition: transform 0.2s ease-out, color 0.2s ease-out;
- transform-origin: 0% 100%;
- transform: translateY(12px);
- cursor: text;
- color: $input-label-color;
- &.active {
- transform: translateY(-14px) scale(0.8);
- }
- }
-
- label:not(.form-check-label) {
- transition: transform 0.2s ease-out, color 0.2s ease-out, max-width 0.2s ease-out;
- text-overflow: ellipsis;
- overflow: hidden;
- white-space: nowrap;
- max-width: 100%;
-
- &.active {
- max-width: 123%;
- }
- }
-
- .prefix {
- position: absolute;
- transition: $input-prefix-transition;
-
- &.active {
- color: $input-md-focus-color;
- &.success-message {
- color: $input-success-color;
- }
- &.error-message {
- color: $input-error-color;
- }
- }
- }
-
- &.form-lg {
- @include make-input(
- $input-validate-mb-lg,
- $input-label-font-size-lg,
- $input-label-active-font-size-lg,
- $input-prefix-top-lg,
- $input-prefix-font-size-lg,
- $input-prefix-margin-left-lg,
- $input-prefix-width-lg,
- $input-form-text-ml-lg
- );
-
- // fix(validation): resolved problem with alignment of mdb-error and mdb-success components
- mdb-error,
- mdb-success {
- left: 3rem !important;
- }
- }
-
- &.form-sm {
- @include make-input(
- $input-validate-mb-sm,
- $input-label-font-size-sm,
- $input-label-active-font-size-sm,
- $input-prefix-top-sm,
- $input-prefix-font-size-sm,
- $input-prefix-margin-left-sm,
- $input-prefix-width-sm,
- $input-form-text-ml-sm
- );
-
- // fix(validation): resolved problem with alignment of mdb-error and mdb-success components
- mdb-error,
- mdb-success {
- left: 2rem !important;
- }
- }
-
- // Textarea
- textarea {
- &.md-textarea {
- overflow-y: hidden;
- padding: $textarea-padding 0;
- // resize: none;
- }
-
- &.md-textarea-auto {
- padding: 0;
- padding-top: $textarea-padding;
- }
-
- // Label color for textarea
- /* ~ label {
- &.active {
- color: $input-md-focus-color;
- }
- } */
- }
-
- &.md-outline {
- position: relative;
- margin-top: 1.5rem;
- margin-bottom: 1.5rem;
-
- input[type='text'],
- input[type='password'],
- input[type='email'],
- input[type='url'],
- input[type='time'],
- input[type='date'],
- input[type='datetime-local'],
- input[type='tel'],
- input[type='number'],
- input[type='search-md'],
- input[type='search'],
- textarea.md-textarea {
- // General Styles
- transition: all 0.3s;
- outline: none;
- box-shadow: none;
- border: 1px solid #dadce0;
- border-radius: 4px;
- background-color: transparent;
- box-sizing: border-box;
-
- // Focused input style
- &:focus:not([readonly]) {
- border-color: #4285f4;
- box-shadow: inset 0px 0px 0px 1px #4285f4;
-
- // Focused label style
- + label {
- color: #4285f4;
- }
- }
-
- // Valid input style
- &.valid,
- &:focus.valid {
- border-color: $input-success-color;
- box-shadow: inset 0px 0px 0px 1px $input-success-color;
- }
-
- &:focus:not([readonly]).valid + label,
- &.valid + label:after,
- &:focus.valid + label:after {
- content: attr(data-success);
- color: $input-success-color;
- opacity: 1;
- }
-
- // Invalid input style
- &.invalid,
- &:focus.invalid {
- border-color: $input-error-color;
- box-shadow: inset 0px 0px 0px 1px $input-error-color;
- }
-
- &:focus:not([readonly]).invalid + label,
- &.invalid + label:after,
- &:focus.invalid + label:after {
- content: attr(data-error);
- color: $input-error-color;
- opacity: 1;
- }
-
- &.form-control.valid + label:after,
- &.form-control:focus.valid + label:after {
- top: 2.75rem;
- left: 0;
- position: absolute;
- }
-
- &.form-control.invalid + label:after,
- &.form-control:focus.invalid + label:after {
- top: 2.75rem;
- left: 0;
- position: absolute;
- }
- }
-
- > input[type]:-webkit-autofill:not(.browser-default):not([type='search']) + label,
- > input[type='time']:not(.browser-default) + label {
- transform: translateY(-14px) scale(0.8);
- transform-origin: 0 0;
- background: #fff;
- font-weight: 500;
- padding-right: 5px;
- padding-left: 5px;
- font-size: 11px;
- left: 8px;
- }
-
- > input[type]:-webkit-autofill:not(.browser-default):not([type='search']) + label.active,
- > input[type='time']:not(.browser-default) + label.active {
- transform: translateY(-14px) scale(0.8);
- transform-origin: 0 0;
- }
-
- @-webkit-keyframes autofill {
- to {
- color: #495057;
- background: transparent;
- }
- }
-
- @keyframes autofill {
- to {
- color: #495057;
- background: transparent;
- }
- }
-
- input:-webkit-autofill {
- -webkit-animation-name: autofill;
- animation-name: autofill;
- -webkit-animation-fill-mode: both;
- animation-fill-mode: both;
- }
-
- .form-control {
- padding: 0.375rem 0.75rem;
- }
-
- label {
- font-size: 1rem !important;
- position: absolute;
- top: 0;
- left: 0;
- padding-left: 10px;
- transition: transform 0.2s ease-out, color 0.2s ease-out, max-width 0.2 ease-out;
- transform-origin: 0% 100%;
- transform: translateY(9px);
- cursor: text;
- color: #757575;
-
- &.active {
- transform: translateY(-13px) scale(0.8);
- background: #fff;
- font-weight: 500;
- padding-right: 5px;
- padding-left: 5px;
- left: 8px;
- }
- }
-
- &.form-lg {
- .form-control {
- &.form-control-lg {
- padding: 0.5rem 0.725rem;
- }
- }
-
- label {
- font-size: 1.25rem;
- transform: translateY(10px);
-
- &.active {
- font-size: 1.1rem;
- transform: translateY(-14px) scale(0.8);
- }
- }
-
- .prefix {
- top: 0.65rem;
- font-size: 25px;
-
- ~ input,
- ~ textarea {
- margin-left: 2.2rem;
- width: calc(100% - 2.2rem);
- }
-
- ~ label {
- margin-left: 2.2rem;
- }
-
- ~ .form-text {
- margin-left: 2.3rem;
- }
- }
- }
-
- &.form-sm {
- .form-control {
- &.form-control-sm {
- padding: 0.25rem 0.625rem;
- }
- }
-
- label {
- font-size: 0.8rem;
- transform: translateY(8px);
-
- &.active {
- font-size: 0.85rem;
- transform: translateY(-12px) scale(0.8);
- }
- }
-
- .prefix {
- top: 0.5rem;
- font-size: 15px;
-
- ~ input,
- ~ textarea {
- margin-left: 1.6rem;
- width: calc(100% - 1.6rem);
- }
-
- ~ label {
- margin-left: 1.6rem;
- }
-
- ~ .form-text {
- margin-left: 1.7rem;
- }
- }
- }
-
- .prefix {
- position: absolute;
- transition: color 0.2s;
-
- &:focus {
- color: #4285f4;
- }
- }
-
- .prefix {
- top: 0.6rem;
- font-size: 20px;
-
- ~ input,
- ~ textarea {
- margin-left: 2rem;
- width: calc(100% - 2rem);
- }
-
- ~ label {
- margin-left: 2rem;
- }
-
- ~ .form-text {
- margin-left: 2.1rem;
- }
- }
-
- .character-counter {
- margin-top: -0.5rem;
- }
- }
-
- &.md-bg {
- input[type='text'],
- input[type='password'],
- input[type='email'],
- input[type='url'],
- input[type='time'],
- input[type='date'],
- input[type='datetime-local'],
- input[type='tel'],
- input[type='number'],
- input[type='search-md'],
- input[type='search'],
- textarea.md-textarea {
- &:focus:not([readonly]) {
- box-shadow: none;
- border-bottom: none;
- }
-
- box-sizing: border-box;
- padding: 10px 5px;
- border: 0;
- border-top-left-radius: 0.3rem;
- border-top-right-radius: 0.3rem;
- background: #f5f5f5 no-repeat;
- background-image: linear-gradient(to bottom, $input-md-focus-color, $input-md-focus-color),
- linear-gradient(to bottom, $input-border-color, $input-border-color);
- background-size: 0 2px, 100% 1px;
- background-position: 50% 100%, 50% 100%;
- transition: background-size 0.3s cubic-bezier(0.64, 0.09, 0.08, 1);
-
- &:focus {
- background-color: #dcdcdc;
- background-size: 100% 2px, 100% 1px;
- outline: none;
- }
- }
-
- > input[type='date']:not(.browser-default) + label {
- transform: translateY(-12px) scale(0.8);
- transform-origin: 0 0;
- }
-
- > input[type]:-webkit-autofill:not(.browser-default):not([type='search']) + label,
- > input[type='time']:not(.browser-default) + label {
- transform: translateY(-12px);
- transform-origin: 0 0;
- font-size: 0.8rem;
- }
-
- .form-control {
- padding: 1.1rem 0.7rem 0.4rem !important;
- }
-
- label {
- top: 0;
- padding-left: 0.7rem;
- font-size: 1rem;
- transition: transform 0.2s ease-out, color 0.2s ease-out;
- transform-origin: 0% 100%;
- transform: translateY(13px);
-
- &.active {
- transform: translateY(-3px) scale(0.8);
- font-weight: 500;
- padding-left: 0.75rem;
- }
- }
-
- &.form-lg {
- label {
- transform: translateY(16px);
-
- &.active {
- transform: translateY(-4px) scale(0.8);
- }
- }
- }
-
- &.form-sm {
- label {
- transform: translateY(11px);
-
- &.active {
- transform: translateY(-2px) scale(0.8);
- }
- }
- }
- }
-}
-
-.md-form .form-control.is-invalid,
-.was-validated .md-form .form-control:invalid {
- padding-right: 0;
-}
-
-.md-form .form-control.is-valid,
-.was-validated .md-form .form-control:valid {
- padding-right: 0;
-}
-
-.needs-validation .md-form label {
- left: 0.3rem;
-}
-
-// Custom fille input browser support
-@each $lang, $text in $custom-mdb-file-text {
- .custom-file-input {
- &:lang(#{$lang}) {
- & ~ .custom-file-label {
- &::after {
- content: $text;
- }
- }
- }
- }
-}
-
-//input disabled
-.disabled {
- cursor: not-allowed !important;
-}
-
-//input counter
-.counter-danger {
- border-bottom: 1px solid $input-error-color !important;
- box-shadow: 0 1px 0 0 $input-error-color !important;
-}
-
-input:focus ~ .chars {
- float: right;
- clear: both;
- display: block;
-}
-
-textarea:focus ~ .chars {
- float: right;
- clear: both;
- display: block;
-}
-
-.md-form label {
- left: 0;
-}
-
-//active styles for input label
-.md-form label.active {
- color: #757575;
-}
-
-//inputs validation
-.counter-success {
- border-bottom: 1px solid $input-success-color !important;
- box-shadow: 0 1px 0 0 $input-success-color !important;
-}
-
-.inputVal {
- font-size: 0.8rem;
- position: absolute;
-}
-
-.modal-body .md-form .prefix ~ .text-success,
-.modal-body .md-form .prefix ~ .text-danger {
- left: 2.5rem;
-}
-
-.md-form .prefix ~ .text-success,
-.md-form .prefix ~ .text-danger {
- left: 2.5rem;
-}
-
-.md-form .prefix ~ .error-message,
-.md-form .prefix ~ .success-message {
- left: 2.5rem;
-}
-
-mdb-tab .md-form .prefix ~ .inputVal {
- left: 2rem;
-}
-
-input.counter-danger ~ span.text-danger {
- visibility: visible;
-}
-
-input.counter-success ~ span.text-success {
- visibility: visible;
-}
-
-.md-form textarea.md-textarea {
- overflow-y: auto !important;
-}
-
-.md-outline input.form-control.validate-success.ng-valid.ng-dirty,
-.md-outline input.form-control.validate-success.ng-valid.ng-touched,
-.md-outline.form-submitted input.form-control.validate-success.ng-valid {
- border-color: $input-success-color !important;
- box-shadow: inset 0 0 0 1px $input-success-color !important;
-}
-
-.md-outline input.form-control.validate-success.ng-valid.ng-dirty + label,
-.md-outline input.form-control.validate-success.ng-valid.ng-touched + label,
-.md-outline.form-submitted input.form-control.validate-success.ng-valid + label {
- color: inherit !important;
- font-weight: normal !important;
-}
-
-.md-outline input.form-control.validate-error.ng-invalid.ng-touched,
-.md-outline input.form-control.validate-error.ng-invalid.ng-dirty,
-.md-outline.form-submitted input.form-control.validate-error.ng-invalid {
- border-color: $input-error-color !important;
- box-shadow: inset 0 0 0 1px $input-error-color !important;
-}
-
-.md-outline input.form-control.validate-error.ng-invalid.ng-touched + label,
-.md-outline input.form-control.validate-error.ng-invalid.ng-dirty + label,
-.md-outline.form-submitted input.form-control.validate-error.ng-invalid + label {
- color: inherit !important;
- font-weight: normal !important;
-}
-
-.md-outline .md-textarea.validate-success.ng-valid.ng-dirty,
-.md-outline .md-textarea.validate-success.ng-valid.ng-touched {
- border-color: $input-success-color !important;
- box-shadow: inset 0 0 0 1px $input-success-color !important;
-}
-
-.md-outline .md-textarea.validate-success.ng-valid.ng-dirty,
-.md-outline .md-textarea.validate-success.ng-valid.ng-touched + label {
- color: inherit !important;
- font-weight: normal !important;
-}
-
-.md-outline .md-textarea.validate-error.ng-invalid.ng-touched,
-.md-outline .md-textarea.validate-error.ng-invalid.ng-dirty,
-.md-outline .form-submitted .md-textarea.validate-error.ng-invalid {
- border-color: $input-error-color !important;
- box-shadow: inset 0 0 0 1px $input-error-color !important;
-}
-
-.md-outline .md-textarea.validate-error.ng-invalid.ng-touched + label,
-.md-outline .md-textarea.validate-error.ng-invalid.ng-dirty + label,
-.md-outline .form-submitted .md-textarea.validate-error.ng-invalid + label {
- color: inherit !important;
- font-weight: normal !important;
-}
-
-input.form-control.validate-success.ng-valid.ng-dirty,
-input.form-control.validate-success.ng-valid.ng-touched,
-.form-submitted input.form-control.validate-success.ng-valid {
- border-bottom: 1px solid $input-success-color !important;
- box-shadow: 0 1px 0 0 $input-success-color !important;
-}
-
-input.form-control.validate-success.ng-valid.ng-dirty + label,
-input.form-control.validate-success.ng-valid.ng-touched + label,
-.form-submitted input.form-control.validate-success.ng-valid + label {
- color: $input-success-color !important;
-}
-
-input.form-control.validate-error.ng-invalid.ng-touched,
-input.form-control.validate-error.ng-invalid.ng-dirty,
-.form-submitted input.form-control.validate-error.ng-invalid {
- border-bottom: 1px solid $input-error-color !important;
- box-shadow: 0 1px 0 0 $input-error-color !important;
-}
-
-input.form-control.validate-error.ng-invalid.ng-touched + label,
-input.form-control.validate-error.ng-invalid.ng-dirty + label,
-.form-submitted input.form-control.validate-error.ng-invalid + label {
- color: $input-error-color !important;
-}
-
-.md-textarea.validate-success.ng-valid.ng-dirty,
-.md-textarea.validate-success.ng-valid.ng-touched {
- border-bottom: 1px solid $input-success-color !important;
- box-shadow: 0 1px 0 0 $input-success-color !important;
-}
-
-.md-textarea.validate-success.ng-valid.ng-dirty + label,
-.md-textarea.validate-success.ng-valid.ng-touched + label {
- color: $input-success-color !important;
-}
-
-.md-textarea.validate-error.ng-invalid.ng-touched,
-.md-textarea.validate-error.ng-invalid.ng-dirty,
-.form-submitted .md-textarea.validate-error.ng-invalid {
- border-bottom: 1px solid $input-error-color !important;
- box-shadow: 0 1px 0 0 $input-error-color !important;
-}
-
-.md-textarea.validate-error.ng-invalid.ng-touched + label,
-.md-textarea.validate-error.ng-invalid.ng-dirty + label,
-.form-submitted .md-textarea.validate-error.ng-invalid + label {
- color: $input-error-color !important;
-}
-
-.md-form {
- margin-bottom: 2rem;
-}
-
-.error-message {
- position: absolute;
- top: 40px;
- left: 0;
- font-size: 0.8rem;
- color: $input-error-color;
-}
-
-.success-message {
- position: absolute;
- top: 40px;
- left: 0;
- font-size: 0.8rem;
- color: $input-success-color;
-}
-
-// Input groups
-// Input group
-.md-form {
- &.input-group {
- label {
- top: 0;
- margin-bottom: 0;
- }
- .input-group-text {
- background-color: $input-group-text-bgc;
- &.md-addon {
- border: none;
- background-color: transparent;
- font-weight: 500;
- }
- }
- .form-control {
- margin: 0;
- padding: $input-group-form-control-py $input-group-form-control-px;
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_list-group.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_list-group.scss
deleted file mode 100644
index 0315913a..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_list-group.scss
+++ /dev/null
@@ -1,30 +0,0 @@
-.flex-column {
- .nav-item a {
- width: 100%;
- margin: 0;
- color: #495057;
- margin-bottom: -1px;
- }
-
- .active a {
- background-color: #007bff;
- border-color: #007bff;
- color: #fff !important;
- }
-
- .list-group-item {
- border-radius: 0;
- }
-}
-
-.flex-column.list-group {
- .nav-link {
- padding: 0 !important;
- }
-}
-
-.list-group-item-action {
- @include hover-focus {
- z-index: unset; // Fix for situation when in Safari list group item is invisible on hover
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_loader.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_loader.scss
deleted file mode 100644
index 53ad52e3..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_loader.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-// Loader / Spinner
-.fast {
- &.spinner-border {
- animation: spinner-border 0.4s linear infinite;
- }
- &.spinner-grow {
- animation: spinner-grow 0.4s linear infinite;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_msc.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_msc.scss
deleted file mode 100644
index 4a7bb81e..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_msc.scss
+++ /dev/null
@@ -1,154 +0,0 @@
-// Miscellaneous
-// Edge Headers
-.edge-header {
- display: block;
- height: $edge-header-height;
- background-color: $edge-header-background-color;
-}
-
-.free-bird {
- margin-top: $edge-header-margin-top;
-}
-
-// Additional gradients
-.juicy-peach-gradient {
- background-image: linear-gradient(to right, #ffecd2 0%, #fcb69f 100%);
-}
-
-.young-passion-gradient {
- background-image: linear-gradient(
- to right,
- #ff8177 0%,
- #ff867a 0%,
- #ff8c7f 21%,
- #f99185 52%,
- #cf556c 78%,
- #b12a5b 100%
- );
-}
-
-.lady-lips-gradient {
- background-image: linear-gradient(to top, #ff9a9e 0%, #fecfef 99%, #fecfef 100%);
-}
-
-.sunny-morning-gradient {
- background-image: linear-gradient(120deg, #f6d365 0%, #fda085 100%);
-}
-
-.rainy-ashville-gradient {
- background-image: linear-gradient(to top, #fbc2eb 0%, #a6c1ee 100%);
-}
-
-.frozen-dreams-gradient {
- background-image: linear-gradient(to top, #fdcbf1 0%, #fdcbf1 1%, #e6dee9 100%);
-}
-
-.warm-flame-gradient {
- background-image: linear-gradient(45deg, #ff9a9e 0%, #fad0c4 99%, #fad0c4 100%);
-}
-
-.night-fade-gradient {
- background-image: linear-gradient(to top, #a18cd1 0%, #fbc2eb 100%);
-}
-
-.spring-warmth-gradient {
- background-image: linear-gradient(to top, #fad0c4 0%, #ffd1ff 100%);
-}
-
-.winter-neva-gradient {
- background-image: linear-gradient(120deg, #a1c4fd 0%, #c2e9fb 100%);
-}
-
-.dusty-grass-gradient {
- background-image: linear-gradient(120deg, #d4fc79 0%, #96e6a1 100%);
-}
-
-.tempting-azure-gradient {
- background-image: linear-gradient(120deg, #84fab0 0%, #8fd3f4 100%);
-}
-
-.heavy-rain-gradient {
- background-image: linear-gradient(to top, #cfd9df 0%, #e2ebf0 100%);
-}
-
-.amy-crisp-gradient {
- background-image: linear-gradient(120deg, #a6c0fe 0%, #f68084 100%);
-}
-
-.mean-fruit-gradient {
- background-image: linear-gradient(120deg, #fccb90 0%, #d57eeb 100%);
-}
-
-.deep-blue-gradient {
- background-image: linear-gradient(120deg, #e0c3fc 0%, #8ec5fc 100%);
-}
-
-.ripe-malinka-gradient {
- background-image: linear-gradient(120deg, #f093fb 0%, #f5576c 100%);
-}
-
-.cloudy-knoxville-gradient {
- background-image: linear-gradient(120deg, #fdfbfb 0%, #ebedee 100%);
-}
-
-.morpheus-den-gradient {
- background-image: linear-gradient(to top, #30cfd0 0%, #330867 100%);
-}
-
-.rare-wind-gradient {
- background-image: linear-gradient(to top, #a8edea 0%, #fed6e3 100%);
-}
-
-.near-moon-gradient {
- background-image: linear-gradient(to top, #5ee7df 0%, #b490ca 100%);
-}
-
-.schedule-list {
- .hr-bold {
- border-top: 2px solid #212529;
- }
-
- .font-smaller {
- font-size: 0.8rem;
- }
-}
-
-.note {
- padding: 10px;
- border-left: 6px solid;
- border-radius: 5px;
- strong {
- font-weight: 600;
- }
- p {
- font-weight: 500;
- }
- &.note-primary {
- background-color: #dfeefd;
- border-color: #176ac4;
- }
- &.note-secondary {
- background-color: #e2e3e5;
- border-color: #58595a;
- }
- &.note-success {
- background-color: #e2f0e5;
- border-color: #49a75f;
- }
- &.note-danger {
- background-color: #fae7e8;
- border-color: #e45460;
- }
- &.note-warning {
- background-color: #faf4e0;
- border-color: #c2a442;
- }
- &.note-info {
- background-color: #e4f2f5;
- border-color: #2492a5;
- }
- &.note-light {
- background-color: #fefefe;
- border-color: #0f0f0f;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_pagination.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_pagination.scss
deleted file mode 100644
index 5baae7f8..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_pagination.scss
+++ /dev/null
@@ -1,84 +0,0 @@
-// Pagination
-.pagination {
- .page-item {
- &.active {
- .page-link {
- box-shadow: $z-depth-1;
- transition: $pagination-active-transition;
- border-radius: $border-radius-base;
- background-color: $primary-color;
- color: $white-base;
- &:hover {
- background-color: $primary-color;
- }
- }
- }
- &.disabled {
- .page-link {
- color: $pagination-page-item-disabled-color;
- }
- }
- .page-link {
- transition: $pagination-page-link-transition;
- outline: 0;
- border: 0;
- background-color: transparent;
- font-size: $pagination-page-link-font-size;
- color: $pagination-page-link-color;
- &:hover {
- transition: $pagination-page-link-transition;
- border-radius: $border-radius-base;
- background-color: $pagination-page-link-hover-bg-color;
- }
- &:focus {
- background-color: transparent;
- box-shadow: none;
- }
- }
- }
- &.pagination-lg {
- .page-item {
- .page-link {
- font-size: $pagination-page-link-font-size-lg;
- }
- }
- }
- &.pagination-sm {
- .page-item {
- .page-link {
- font-size: $pagination-page-link-font-size-sm;
- }
- }
- }
- &.pagination-circle {
- .page-item {
- .page-link {
- margin-left: $pagination-circle-margin-x;
- margin-right: $pagination-circle-margin-x;
- border-radius: $pagination-circle-border-radius;
- &:hover {
- border-radius: $pagination-circle-border-radius;
- }
- }
- &.active {
- .page-link {
- border-radius: $pagination-circle-border-radius;
- }
- }
- }
- }
- @each $name, $color in $pagination-colors {
- &.pg-#{$name} {
- .page-item {
- &.active {
- .page-link {
- background-color: $color;
- &:hover {
- background-color: $color;
- }
- }
- }
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_progress.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_progress.scss
deleted file mode 100755
index bf7cc173..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_progress.scss
+++ /dev/null
@@ -1,839 +0,0 @@
-// Progress
-mdb-progress .progress {
- box-shadow: none;
- position: relative;
- display: block;
- width: 100%;
- height: 4px;
- overflow: hidden;
- margin-bottom: 1rem;
- background-color: #eee;
- .progress-bar {
- box-shadow: none;
- height: 4px;
- border-radius: 0;
- background-color: $primary-color-dark;
- }
- .progress-bar-animated {
- -webkit-transition: width 2s ease-in-out;
- transition: width 2s ease-in-out;
- }
- .indeterminate {
- background-color: #90caf9;
- &:before {
- content: '';
- position: absolute;
- background-color: inherit;
- top: 0;
- left: 0;
- bottom: 0;
- will-change: left, right;
- // Custom bezier
- animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
- }
- &:after {
- content: '';
- position: absolute;
- background-color: inherit;
- top: 0;
- left: 0;
- bottom: 0;
- will-change: left, right;
- // Custom bezier
- animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;
- animation-delay: 1.15s;
- }
- }
-
- @keyframes indeterminate {
- 0% {
- left: -35%;
- right: 100%;
- }
- 60% {
- left: 100%;
- right: -90%;
- }
- 100% {
- left: 100%;
- right: -90%;
- }
- }
- @keyframes indeterminate-short {
- 0% {
- left: -200%;
- right: 100%;
- }
- 60% {
- left: 107%;
- right: -8%;
- }
- 100% {
- left: 107%;
- right: -8%;
- }
- }
-}
-
-/*********************
- CIRCLE
-**********************/
-
-/*
- @license
- Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
- This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
- The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
- The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
- Code distributed by Google as part of the polymer project is also
- subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
- */
-
-/**************************/
-
-/* STYLES FOR THE SPINNER */
-
-/**************************/
-
-/*
- * Constants:
- * STROKEWIDTH = 3px
- * ARCSIZE = 270 degrees (amount of circle the arc takes up)
- * ARCTIME = 1333ms (time it takes to expand and contract arc)
- * ARCSTARTROT = 216 degrees (how much the start location of the arc
- * should rotate each time, 216 gives us a
- * 5 pointed star shape (it's 360/5 * 3).
- * For a 7 pointed star, we might do
- * 360/7 * 3 = 154.286)
- * CONTAINERWIDTH = 28px
- * SHRINK_TIME = 400ms
- */
-
-.preloader-wrapper {
- display: inline-block;
- position: relative;
- width: 48px;
- height: 48px;
- &.small {
- width: 36px;
- height: 36px;
- }
- &.big {
- width: 64px;
- height: 64px;
- }
- &.active {
- /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */
- -webkit-animation: container-rotate 1568ms linear infinite;
- animation: container-rotate 1568ms linear infinite;
- }
-}
-
-@-webkit-keyframes container-rotate {
- from {
- -webkit-transform: rotate(0deg);
- }
- to {
- -webkit-transform: rotate(360deg);
- }
-}
-
-@keyframes container-rotate {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
-
-.spinner-layer {
- position: absolute;
- width: 100%;
- height: 100%;
- opacity: 0;
-}
-
-.spinner-blue,
-.spinner-blue-only {
- border-color: #4285f4;
-}
-
-.spinner-red,
-.spinner-red-only {
- border-color: #db4437;
-}
-
-.spinner-yellow,
-.spinner-yellow-only {
- border-color: #f4b400;
-}
-
-.spinner-green,
-.spinner-green-only {
- border-color: #0f9d58;
-}
-
-/**
- * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee):
- *
- * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't
- * guarantee that the animation will start _exactly_ after that value. So we avoid using
- * animation-delay and instead set custom keyframes for each color (as redundant as it
- * seems).
- *
- * We write out each animation in full (instead of separating animation-name,
- * animation-duration, etc.) because under the polyfill, Safari does not recognize those
- * specific properties properly, treats them as -webkit-animation, and overrides the
- * other animation rules. See https://github.com/Polymer/platform/issues/53.
- */
-
-.active .spinner-layer.spinner-blue {
- /* durations: 4 * ARCTIME */
- -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,
- blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,
- blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
-}
-
-.active .spinner-layer.spinner-red {
- /* durations: 4 * ARCTIME */
- -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,
- red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,
- red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
-}
-
-.active .spinner-layer.spinner-yellow {
- /* durations: 4 * ARCTIME */
- -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,
- yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,
- yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
-}
-
-.active .spinner-layer.spinner-green {
- /* durations: 4 * ARCTIME */
- -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,
- green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,
- green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
-}
-
-.active .spinner-layer.spinner-blue-only,
-.active .spinner-layer.spinner-red-only,
-.active .spinner-layer.spinner-yellow-only,
-.active .spinner-layer.spinner-green-only,
-.active .spinner-layer.spinner-primary-color-only {
- /* durations: 4 * ARCTIME */
- opacity: 1;
- -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
-}
-
-@-webkit-keyframes fill-unfill-rotate {
- 12.5% {
- -webkit-transform: rotate(135deg);
- }
- /* 0.5 * ARCSIZE */
- 25% {
- -webkit-transform: rotate(270deg);
- }
- /* 1 * ARCSIZE */
- 37.5% {
- -webkit-transform: rotate(405deg);
- }
- /* 1.5 * ARCSIZE */
- 50% {
- -webkit-transform: rotate(540deg);
- }
- /* 2 * ARCSIZE */
- 62.5% {
- -webkit-transform: rotate(675deg);
- }
- /* 2.5 * ARCSIZE */
- 75% {
- -webkit-transform: rotate(810deg);
- }
- /* 3 * ARCSIZE */
- 87.5% {
- -webkit-transform: rotate(945deg);
- }
- /* 3.5 * ARCSIZE */
- to {
- -webkit-transform: rotate(1080deg);
- }
- /* 4 * ARCSIZE */
-}
-
-@keyframes fill-unfill-rotate {
- 12.5% {
- transform: rotate(135deg);
- }
- /* 0.5 * ARCSIZE */
- 25% {
- transform: rotate(270deg);
- }
- /* 1 * ARCSIZE */
- 37.5% {
- transform: rotate(405deg);
- }
- /* 1.5 * ARCSIZE */
- 50% {
- transform: rotate(540deg);
- }
- /* 2 * ARCSIZE */
- 62.5% {
- transform: rotate(675deg);
- }
- /* 2.5 * ARCSIZE */
- 75% {
- transform: rotate(810deg);
- }
- /* 3 * ARCSIZE */
- 87.5% {
- transform: rotate(945deg);
- }
- /* 3.5 * ARCSIZE */
- to {
- transform: rotate(1080deg);
- }
- /* 4 * ARCSIZE */
-}
-
-@-webkit-keyframes blue-fade-in-out {
- from {
- opacity: 1;
- }
- 25% {
- opacity: 1;
- }
- 26% {
- opacity: 0;
- }
- 89% {
- opacity: 0;
- }
- 90% {
- opacity: 1;
- }
- 100% {
- opacity: 1;
- }
-}
-
-@keyframes blue-fade-in-out {
- from {
- opacity: 1;
- }
- 25% {
- opacity: 1;
- }
- 26% {
- opacity: 0;
- }
- 89% {
- opacity: 0;
- }
- 90% {
- opacity: 1;
- }
- 100% {
- opacity: 1;
- }
-}
-
-@-webkit-keyframes red-fade-in-out {
- from {
- opacity: 0;
- }
- 15% {
- opacity: 0;
- }
- 25% {
- opacity: 1;
- }
- 50% {
- opacity: 1;
- }
- 51% {
- opacity: 0;
- }
-}
-
-@keyframes red-fade-in-out {
- from {
- opacity: 0;
- }
- 15% {
- opacity: 0;
- }
- 25% {
- opacity: 1;
- }
- 50% {
- opacity: 1;
- }
- 51% {
- opacity: 0;
- }
-}
-
-@-webkit-keyframes yellow-fade-in-out {
- from {
- opacity: 0;
- }
- 40% {
- opacity: 0;
- }
- 50% {
- opacity: 1;
- }
- 75% {
- opacity: 1;
- }
- 76% {
- opacity: 0;
- }
-}
-
-@keyframes yellow-fade-in-out {
- from {
- opacity: 0;
- }
- 40% {
- opacity: 0;
- }
- 50% {
- opacity: 1;
- }
- 75% {
- opacity: 1;
- }
- 76% {
- opacity: 0;
- }
-}
-
-@-webkit-keyframes green-fade-in-out {
- from {
- opacity: 0;
- }
- 65% {
- opacity: 0;
- }
- 75% {
- opacity: 1;
- }
- 90% {
- opacity: 1;
- }
- 100% {
- opacity: 0;
- }
-}
-
-@keyframes green-fade-in-out {
- from {
- opacity: 0;
- }
- 65% {
- opacity: 0;
- }
- 75% {
- opacity: 1;
- }
- 90% {
- opacity: 1;
- }
- 100% {
- opacity: 0;
- }
-}
-
-/**
- * Patch the gap that appear between the two adjacent div.circle-clipper while the
- * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11).
- */
-
-.gap-patch {
- position: absolute;
- top: 0;
- left: 45%;
- width: 10%;
- height: 100%;
- overflow: hidden;
- border-color: inherit;
-}
-
-.gap-patch .circle {
- width: 1000%;
- left: -450%;
-}
-
-.circle-clipper {
- display: inline-block;
- position: relative;
- width: 50%;
- height: 100%;
- overflow: hidden;
- border-color: inherit;
- .circle {
- width: 200%;
- height: 100%;
- border-width: 3px;
- /* STROKEWIDTH */
- border-style: solid;
- border-color: inherit;
- border-bottom-color: transparent !important;
- border-radius: 50%;
- -webkit-animation: none;
- animation: none;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- }
- &.left .circle {
- left: 0;
- border-right-color: transparent !important;
- -webkit-transform: rotate(129deg);
- transform: rotate(129deg);
- }
- &.right .circle {
- left: -100%;
- border-left-color: transparent !important;
- -webkit-transform: rotate(-129deg);
- transform: rotate(-129deg);
- }
-}
-
-.active .circle-clipper.left .circle {
- /* duration: ARCTIME */
- -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
-}
-
-.active .circle-clipper.right .circle {
- /* duration: ARCTIME */
- -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
-}
-
-@-webkit-keyframes left-spin {
- from {
- -webkit-transform: rotate(130deg);
- }
- 50% {
- -webkit-transform: rotate(-5deg);
- }
- to {
- -webkit-transform: rotate(130deg);
- }
-}
-
-@keyframes left-spin {
- from {
- transform: rotate(130deg);
- }
- 50% {
- transform: rotate(-5deg);
- }
- to {
- transform: rotate(130deg);
- }
-}
-
-@-webkit-keyframes right-spin {
- from {
- -webkit-transform: rotate(-130deg);
- }
- 50% {
- -webkit-transform: rotate(5deg);
- }
- to {
- -webkit-transform: rotate(-130deg);
- }
-}
-
-@keyframes right-spin {
- from {
- transform: rotate(-130deg);
- }
- 50% {
- transform: rotate(5deg);
- }
- to {
- transform: rotate(-130deg);
- }
-}
-
-#spinnerContainer.cooldown {
- /* duration: SHRINK_TIME */
- -webkit-animation: container-rotate 1568ms linear infinite,
- fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);
- animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);
-}
-
-@-webkit-keyframes fade-out {
- from {
- opacity: 1;
- }
- to {
- opacity: 0;
- }
-}
-
-@keyframes fade-out {
- from {
- opacity: 1;
- }
- to {
- opacity: 0;
- }
-}
-
-#mdb-preloader {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background-color: #000;
- /* change if the mask should have another color than white */
- z-index: 9998;
- /* makes sure it stays on top */
- height: 100%;
- width: 100%;
-}
-
-.spinning-preloader-container {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- z-index: 99999;
- display: flex;
- align-items: center;
- justify-content: center;
- background: #000;
- transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
-}
-
-.spinning-preloader-container.complete {
- opacity: 0;
- display: none;
-}
-
-//
static
-mdb-progress .progress {
- height: 4px !important;
- .progress-bar {
- &.progress-bar-success {
- background-color: #5cb85c;
- }
- &.progress-bar-info {
- background-color: #5bc0de;
- }
- &.progress-bar-warning {
- background-color: #f0ad4e;
- }
- &.progress-bar-danger {
- background-color: #d9534f;
- }
- }
-}
-
-//
-.primary-color-dark {
- .mat-progress-bar-buffer {
- background-color: #90caf9 !important;
- }
- .mat-progress-bar-fill::after {
- background-color: #0d47a1 !important;
- }
-}
-
-//
-.preloader-wrapper {
- .mat-progress-spinner {
- width: 100% !important;
- height: 100% !important;
- svg path {
- transition: stroke 0.3s;
- stroke-width: 6px !important;
- fill: transparent;
- }
- &[mode='indeterminate'] svg {
- animation-duration: 5332ms, 1333ms !important;
- }
- }
- .spinner-blue-only.mat-progress-spinner svg path {
- stroke: #4285f4;
- }
-
- .spinner-red-only.mat-progress-spinner svg path {
- stroke: #db4437;
- }
-
- .spinner-yellow-only.mat-progress-spinner svg path {
- stroke: #f4b400;
- }
-
- .spinner-green-only.mat-progress-spinner svg path {
- stroke: #0f9d58;
- }
-}
-
-.preloader-wrapper.crazy {
- animation: container-rotate 784ms linear infinite;
-}
-
-mdb-progress-spinner,
-mat-progress-spinner {
- display: block;
- height: 100px;
- width: 100px;
- svg {
- height: 100%;
- width: 100%;
- transform-origin: center;
- }
- path {
- fill: transparent;
- stroke-width: 10px;
- transition: stroke 0.3s cubic-bezier(0.35, 0, 0.25, 1);
- }
- &[mode='indeterminate'] svg {
- animation-duration: 5.25s, 2.887s;
- animation-name: mat-progress-spinner-sporadic-rotate, mat-progress-spinner-linear-rotate;
- animation-timing-function: cubic-bezier(0.35, 0, 0.25, 1), linear;
- animation-iteration-count: infinite;
- transition: none;
- }
-}
-
-@keyframes mat-progress-spinner-linear-rotate {
- 0% {
- transform: rotate(0);
- }
- 100% {
- transform: rotate(360deg);
- }
-}
-
-@keyframes mat-progress-spinner-sporadic-rotate {
- 12.5% {
- transform: rotate(135deg);
- }
- 25% {
- transform: rotate(270deg);
- }
- 37.5% {
- transform: rotate(405deg);
- }
- 50% {
- transform: rotate(540deg);
- }
- 62.5% {
- transform: rotate(675deg);
- }
- 75% {
- transform: rotate(810deg);
- }
- 87.5% {
- transform: rotate(945deg);
- }
- 100% {
- transform: rotate(1080deg);
- }
-}
-
-.spinning-preloader-container {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- z-index: 1000;
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-align: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-box-pack: center;
- -ms-flex-pack: center;
- justify-content: center;
- background: -webkit-linear-gradient(top, #fff 0, #f2f2f2 100%) #f2f2f2;
- background: linear-gradient(to bottom, #fff 0, #f2f2f2 100%) #f2f2f2;
- -webkit-transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
- transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
-}
-.spinning-preloader-container > .spinning-preloader-elements,
-.spinning-preloader-container > .spinning-preloader-elements:after,
-.spinning-preloader-container > .spinning-preloader-elements:before {
- border: 3px solid transparent;
- border-radius: 50%;
-}
-.spinning-preloader-container > .spinning-preloader-elements {
- display: block;
- width: 150px;
- height: 150px;
- border-top-color: #44749d;
- z-index: 1500;
- opacity: 1;
- -webkit-animation: spin 2s linear infinite;
- animation: spin 2s linear infinite;
-}
-.spinning-preloader-container > .spinning-preloader-elements:after,
-.spinning-preloader-container > .spinning-preloader-elements:before {
- content: '';
- position: absolute;
-}
-.spinning-preloader-container > .spinning-preloader-elements:before {
- top: 5px;
- left: 5px;
- right: 5px;
- bottom: 5px;
- border-top-color: #da222b;
- -webkit-animation: spin 3s linear infinite;
- animation: spin 3s linear infinite;
-}
-.spinning-preloader-container > .spinning-preloader-elements:after {
- top: 15px;
- left: 15px;
- right: 15px;
- bottom: 15px;
- border-top-color: #f6dc74;
- -webkit-animation: spin 1.5s linear infinite;
- animation: spin 1.5s linear infinite;
-}
-
-.spinning-preloader-container.complete {
- opacity: 0;
- display: none;
-}
-
-@-webkit-keyframes spin {
- from {
- -webkit-transform: rotateZ(0);
- transform: rotateZ(0);
- }
- to {
- -webkit-transform: rotateZ(360deg);
- transform: rotateZ(360deg);
- }
-}
-
-@keyframes spin {
- from {
- -webkit-transform: rotateZ(0);
- transform: rotateZ(0);
- }
- to {
- -webkit-transform: rotateZ(360deg);
- transform: rotateZ(360deg);
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_steppers.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_steppers.scss
deleted file mode 100644
index 7c864b74..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_steppers.scss
+++ /dev/null
@@ -1,189 +0,0 @@
-// Steppers
-ul.stepper {
- counter-reset: section;
- overflow-y: auto;
- overflow-x: hidden;
- margin: 1em -1.5rem;
- padding: 0 1.5rem;
- padding: 1.5rem;
-
- li {
- a {
- padding: $stepper-li-a-padding;
- text-align: center;
-
- .circle {
- display: inline-block;
- color: $stepper-li-a-circle-color;
- border-radius: $stepper-li-a-circle-border-radius;
- background: $stepper-li-a-circle-bg;
- width: 1.75rem;
- height: 1.75rem;
- text-align: center;
- line-height: 1.7rem;
- margin-right: $stepper-li-a-circle-mr;
- }
-
- .label {
- display: inline-block;
- color: $stepper-li-a-circle-bg;
- }
- }
-
- &.active,
- &.completed {
- a {
- .circle {
- @extend .primary-color;
- }
-
- .label {
- font-weight: 600;
- color: $stepper-li-a-label-color;
- }
- }
- }
-
- &.warning {
- a {
- .circle {
- @extend .danger-color;
- }
- }
- }
- }
-}
-
-// Horizontal
-.stepper-horizontal {
- position: relative;
- display: flex;
- justify-content: space-between;
-
- li {
- transition: $stepper-horizontal-li-transition;
- display: flex;
- align-items: center;
- flex: 1;
- position: relative;
-
- a {
- .label {
- margin-top: $stepper-horizontal-li-a-label-mt;
- }
- }
-
- &:not(:last-child):after {
- content: '';
- position: relative;
- flex: 1;
- margin: $stepper-horizontal-li-after-margin 0 0 0;
- height: $stepper-horizontal-li-after-height;
- background-color: $stepper-horizontal-li-after-bgc;
- }
-
- &:not(:first-child):before {
- content: '';
- position: relative;
- flex: 1;
- margin: $stepper-horizontal-li-after-margin 0 0 0;
- height: $stepper-horizontal-li-after-height;
- background-color: $stepper-horizontal-li-after-bgc;
- }
-
- &:hover {
- background-color: rgba(0, 0, 0, 0.06);
- }
- }
-
- @media (max-width: $stepper-horizontal-breakpoint) {
- flex-direction: column;
-
- li {
- align-items: flex-start;
- flex-direction: column;
-
- a {
- .label {
- flex-flow: column nowrap;
- order: 2;
- margin-top: $stepper-horizontal-small-li-a-label-mt;
- }
- }
-
- &:not(:last-child):after {
- content: '';
- position: absolute;
- width: $stepper-horizontal-small-li-after-width;
- height: $stepper-horizontal-small-li-after-height;
- left: $stepper-horizontal-small-li-after-left;
- top: $stepper-horizontal-small-li-after-top;
- }
- }
- }
-
- > li:not(:last-of-type) {
- margin-bottom: 0 !important;
- }
-}
-
-// Vertical
-.stepper-vertical {
- position: relative;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
-
- li {
- display: flex;
- align-items: flex-start;
- flex: 1;
- flex-direction: column;
- position: relative;
-
- a {
- align-self: flex-start;
- display: flex;
- position: relative;
-
- .circle {
- order: 1;
- }
-
- .label {
- flex-flow: column nowrap;
- order: 2;
- margin-top: $stepper-vertical-li-a-label-mt;
- }
- }
-
- &.completed {
- a {
- .label {
- font-weight: 500;
- }
- }
- }
-
- .step-content {
- display: block;
- margin-top: 0;
- margin-left: $stepper-vertical-li-step-content-ml;
- padding: $stepper-vertical-li-step-content-padding;
-
- p {
- font-size: $stepper-vertical-li-step-content-p-font-size;
- }
- }
-
- &:not(:last-child):after {
- content: '';
- position: absolute;
- width: $stepper-vertical-li-after-width;
- height: $stepper-vertical-li-after-height;
- left: $stepper-vertical-li-after-left;
- top: $stepper-vertical-li-after-top;
- background-color: $stepper-vertical-li-after-bgc;
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_switch.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_switch.scss
deleted file mode 100644
index 76ce8823..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_switch.scss
+++ /dev/null
@@ -1,51 +0,0 @@
-// Switch free
-.bs-switch {
- position: relative;
- display: inline-block;
- width: 60px;
- height: 34px;
- input {
- display: none;
- &:checked {
- + .slider {
- background-color: #2196f3;
- &:before {
- transform: translateX(26px);
- }
- }
- }
- &:focus {
- + .slider {
- box-shadow: 0 0 1px #2196f3;
- }
- }
- }
- .slider {
- position: absolute;
- cursor: pointer;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background-color: #ccc;
- -webkit-transition: 0.4s;
- transition: 0.4s;
- &:before {
- position: absolute;
- content: '';
- height: 26px;
- width: 26px;
- left: 4px;
- bottom: 4px;
- background-color: white;
- -webkit-transition: 0.4s;
- transition: 0.4s;
- }
- &.round {
- border-radius: 34px;
- &:before {
- border-radius: 50%;
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_treeview.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_treeview.scss
deleted file mode 100644
index 53691a6a..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/core/msc/_treeview.scss
+++ /dev/null
@@ -1,126 +0,0 @@
-// Treeview
-.treeview {
- &.w-20 {
- width: 20rem;
- }
-
- .rotate {
- cursor: pointer;
- user-select: none;
- transition: all 0.1s linear;
- font-size: 0.8rem;
- vertical-align: text-top;
- margin-top: 0.2rem;
-
- &.down {
- transform: rotate(90deg);
- }
- }
-
- .nested {
- display: none;
- }
-
- .active {
- display: block;
- }
-
- ul {
- list-style-type: none;
- }
-
- .ic-w {
- width: 1.3rem;
- }
-}
-
-.treeview-animated {
- &.w-20 {
- width: 20rem;
- }
-
- ul {
- position: relative;
- list-style: none;
- padding-left: 1em;
- }
-
- .treeview-animated-list {
- li {
- padding: 0.2em 0 0 0.2em;
- }
-
- .treeview-animated-items {
- .nested {
- &::before {
- content: '';
- display: block;
- position: absolute;
- background-color: grey;
- left: 5px;
- width: 5px;
- height: 100%;
- }
- }
-
- .closed {
- display: block;
- padding: 0.2em 0.2em 0.2em 0.4em;
- margin-right: 0;
- border-top-left-radius: 0.3em;
- border-bottom-left-radius: 0.3em;
-
- &:hover {
- background-color: rgb(140, 185, 255);
- }
-
- .fa-angle-right {
- transition: all 0.1s linear;
- font-size: 0.8rem;
-
- &.down {
- position: relative;
- color: #f8f9fa;
- transform: rotate(90deg);
- }
- }
- }
-
- .open {
- transition: all 0.1s linear;
- background-color: rgb(50, 160, 255);
-
- &:hover {
- color: #f8f9fa;
- background-color: rgb(50, 160, 255);
- }
-
- span {
- color: #f8f9fa;
- }
- }
- }
-
- .treeview-animated-element {
- padding: 0.2em 0.2em 0.2em 0.6em;
- cursor: pointer;
- transition: all 0.1s linear;
- border-bottom-left-radius: 4px;
- border-top-left-radius: 4px;
-
- &:hover {
- background-color: rgb(140, 185, 255);
- }
-
- &.opened {
- color: #f8f9fa;
- background-color: rgb(50, 160, 255);
-
- &:hover {
- color: #f8f9fa;
- background-color: rgb(50, 160, 255);
- }
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/mdb.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/mdb.scss
deleted file mode 100755
index 7c86f973..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/mdb.scss
+++ /dev/null
@@ -1,50 +0,0 @@
-/*!
- * Material Design for Bootstrap 4
- * Version: MDB FREE 4.8.2
- *
- *
- * Copyright: Material Design for Bootstrap
- * https://mdbootstrap.com/
- *
- * Read the license: https://mdbootstrap.com/general/license/
- *
- *
- * Documentation: https://mdbootstrap.com/
- *
- * Getting started: https://mdbootstrap.com/docs/jquery/getting-started/download/
- *
- * Tutorials: https://mdbootstrap.com/education/bootstrap/
- *
- * Templates: https://mdbootstrap.com/templates/
- *
- * Support: https://mdbootstrap.com/support/
- *
- * Contact: office@mdbootstrap.com
- *
- * Attribution: Animate CSS, Twitter Bootstrap, Materialize CSS, Normalize CSS, Waves JS, WOW JS, Toastr, Chart.js
- *
- */
-
-@charset "UTF-8";
-
-// Bootstrap
-@import 'core/bootstrap/functions';
-@import 'core/bootstrap/variables';
-@import 'core/bootstrap/rfs';
-// CORE
-@import 'core/mixins';
-@import 'core/colors';
-@import 'core/variables';
-@import 'core/global';
-@import 'core/helpers';
-@import 'core/typography';
-@import 'core/masks';
-@import 'core/waves';
-@import 'core/msc/forms';
-
-
-
-@import 'core/directives';
-// MSC
-@import 'msc';
-
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/msc.scss b/projects/angular-bootstrap-md/src/lib/assets/scss/msc.scss
deleted file mode 100644
index ab30f577..00000000
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/msc.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-@import 'core/msc/footers';
-@import 'core/msc/list-group';
-@import 'core/msc/loader';
-@import 'core/msc/msc';
-@import 'core/msc/pagination';
-@import 'core/msc/steppers';
-@import 'core/msc/switch';
-@import 'core/msc/carousel';
-@import 'core/msc/bootstrap-select';
diff --git a/projects/angular-bootstrap-md/src/lib/changelog b/projects/angular-bootstrap-md/src/lib/changelog
deleted file mode 100644
index b40d26de..00000000
--- a/projects/angular-bootstrap-md/src/lib/changelog
+++ /dev/null
@@ -1,1409 +0,0 @@
-8.10.1
-In version 8.10.1 we added bug fixes for WYSIWYG plugin and new guide for styles customization. Check what changed below:
-
-**Fixes:**
-
-* WYSIWYG plugin - resolved problem with "Cannot read property parentElement of null" error,
-* WYSIWYG plugin - resolved problem with resetting value in reactive forms.
-
-**Docs:**
-
-* Added new guide for styles customization.
-
-8.10.0
-In version 8.10.0 we added some bug fixes and new features for the existing components. Check what changed below:
-
-**Fixes:**
-
-* Carousel - selectSlide method will work correctly even if animation type is not specified,
-* Datepicker - resolved problem with setting disabled state in reactive forms (modal version),
-* Textarea - resolved problem with auto resize for default value,
-* Select/Multiselect - resolved problem with background color of highlighted option in colorful select,
-* Select/Multiselect - resolved problem with position of value text in outline mode.
-
-**New features:**
-
-* Carousel - added new allowSwipe input that allow to enable/disable swipe gestures,
-* Icon - added support for Font Awesome Pro Duotone Icons.
-
-8.9.0
-In version 8.9.0 we added some fixes and features for the existing components. Check what changed below:
-
-**Fixes:**
-
-* Validation - resolved problem with styles of outline inputs,
-* Select - adjusted outline input height to the height of the inputs in other form controls,
-* Stepper - (stepChange) event will not be emitted for disabled steps,
-* Datepicker - resolved problems with global options,
-* Autocomplete - fixed dropdown bottom position in outline mode,
-* Timepicker - component will now return new value and change event when clear method is used,
-* Checkbox - resolved problem with label styles (removed unnecessary overflow and white-space properties),
-* Sidenav - resolved problem with styles of the links with waves effect,
-* Sortable plugin - input/textarea funcitonality will no longer be blocked by the sortable directive,
-* Sidenav/Accordion - added checks for window object to resolve problems with server side rendering.
-
-**New features:**
-
-* Dropdown - added new dynamicPosition input, when this option is active component will dynamically update dropdown position (if the menu does not fit the viewport),
-* Timepicker - added possibility to add custom styles for footer and AM/PM buttons and custom translation to buttons,
-* Timepicker - added possibility to add new button that will clear the current selected value.
-
-8.8.2
-In version 8.8.2 we added some fixes for the existing components and removed duplicated css styles. Check what changed below:
-
-**Fixes:**
-
-* Styles - removed duplicated code,
-* Toast - resolved problem with box-shadow styles on hover,
-* Table - removed unecessary styles from a elements,
-* Table sort - slightly improved performance,
-* Validation - prefix icons will get correct validation color styles (success/error),
-* Validation - fixed position of validation messages,
-* Sidenav - will not be closed when viewport height change,
-* Select - will not be overlapped by table header with sticky-top class,
-* Pills - removed unecessary shadow styles on hover,
-* Static modal - backdrop will be added/removed correctly when config value change,
-* Calendar plugin - fixed parameter name in object emitted by (monthChanged) output.
-
-8.8.1
-In version 8.8.1 we added some fixes for the existing components and small update for the calendar plugin. Check what changed below:
-
-**Fixes:**
-
-* Inputs - resolved problem with styles of long label,
-* Datepicker inline - clicking on the icon won't open the disabled component,
-* Textarea - resolved problem with position of validation message,
-* Textarea - active styles for prefix icon will be applied correctly,
-* Search - resolved problem with the icon position when the input is inside container with .md-form class,
-* Autocomplete - clear button will be added correctly if default value is set,
-* Admin Template Pro - resolved problem with styles of images that use waves effect,
-* Admin Template Pro - resolved problem with styles of icons in the sidenav.
-
-**Plugins:**
-
-* Calendar - added new [defaultView] input that allow to set default view for the component (week/month/list).
-
-8.8.0
-In version 8.8.0 we added some fixes and new tree view component. Check what changed below:
-
-**Fixes:**
-
-* Sticky header - resolved problem with navbar z-index,
-* Table search/Table editor - resolved problem with filtering when a property value is null,
-* Datepicker - resolved problem with setting minYear and maxYear options,
-* Select - clear button will no longer be displayed if no option is selected,
-* Timepicker - component view will be now updated correctly on form control value change,
-* Color picker plugin - resolved problem with displaying wrong rgba color on component initialization,
-* Resolved problem with memory leaks caused by unsubscribed subscriptions.
-
-**New Features:**
-
-* Added new tree view component.
-
-8.7.0
-In version 8.7.0 we added some fixes and new features. Check what changed below:
-
-**Fixes:**
-
-* Sidenav - resolved problem with closing sidenav when mobile keyboard appear on the screen,
-* Datepicker - resolved problem with next and previous arrows styles on IE11,
-* Select - resolved problem with search input and value container styles in outline mode,
-* Select - added validation styles for bootstrap version,
-* Autocomplete - resolved problem with dropdown dynamic position when appendToBody option is used,
-* Autocomplete - resolved problem with dynamic dropdown position updates on option filtering,
-* Lightbox - resolved problems with browser navigation,
-* Buttons - resolved problem with dynamic style updates for outline and flat button,
-* Color picker plugin - resolved problem with rendering the plugin inside modal,
-* Zip packages/Admin template - resolved problem with ng test and ng lint.
-
-**New Features:**
-
-* Table search - added possibility to search through multiple table columns,
-* Reveal cards - added new (animationStart) and (animationEnd) outputs,
-* Table pagination - added new (lastPageClick) and (firstPageClick) outputs.
-
-8.6.0
-In version 8.6.0 we added some fixes and new features. Check what changed below:
-
-**Fixes:**
-
-* Select - resolved problem with maintaing focus on component when navigating using keyboard and added proper colors for focused component,
-* Select - resolved problem with navigation to other element using tab or shift+tab keys,
-* Select - added different color for highlighted options to help to distinguish selected options from highlighted options,
-* Select - resolved problem with highlighting option when typing its name (it works when filter input is disabled),
-* Select - resolved problem with dropdown position when using filter input or custom content,
-* Select - resolved problems with styles and dropdown position in outline mode,
-* Select - resolved problems with resetting selected value,
-* Buttons - styles will be now properly updated if inputs values change,
-* Prefix icon - removed unecessary color transition delay,
-* Datepicker - resolved problem with disabling component with reactive forms
-* Datepicker - resolved problem with z-index in inline mode (this problem occured when multiple components were used in the same view),
-* Table sort - resolved problem with returning undefined sortOrder in (sorted) output.
-
-**New Features:**
-
-* Select - added possibility to use prefix icon,
-* Select - added proper aria attributes,
-* Timepicker - added possibility to mark input as readonly,
-* WYSIWYG plugin - added new (valueContent) output that will return only text content without HTML tags.
-
-8.5.0
-In version 8.5.0 we added some fixes and new features. Check what changed below:
-
-**Fixes:**
-
-* Datepicker - resolved problem with opening multiple datepickers on label click when inline mode is used,
-* Datepicker - resolved problem with styles of right and left arrows when date picker is rendered inside mdb-stepper,
-* Datepicker - resolved problem with z-index in inline mode (dropdown should no longer be overlapped by a footer),
-* Multiselect - resolved problem with styles of checkboxes when select is used inside element with md-form class,
-* Select - resolved problem with setting default value when change is detected in option array,
-* Select - component styles have been corrected to adapt its appearance to other MDB form elements,
-* Autocomplete - number of visible options will no longer be set by default. It resolves problem with options styles when mdb-options have a non-standard height.
-
-**New Features:**
-
-* Table sort - added new (sorted) output that emits data, sortDirection and sortBy parameters,
-* Autocomplete - added new [dropdownHeight] input that allows to customize dropdown height (it will only work if visibleOptions input is not used).
-
-**Docs:**
-
-* Modal - added list of options available for dynamic modals
-* MDB Angular Boilerplate - added guide on how to configure MDB Angular Pro version.
-
-8.4.0
-In version 8.4.0 we added some fixes and new features. Check what changed below:
-
-**Fixes:**
-
-* Datepicker - resolved problem with opening multiple datepickers on label click. Every component will now have unique id. You can specify this id in [id] input, otherwise custom id will be created,
-* Chips - resolved problem with displaying default tags on component initialization,
-* Chips - resolved problem with deleting items with backspace/delete key,
-* Chips - resolved problem with input focus after adding first tag or removing last tag,
-* Modal - resolved problem with modal position when backdrop option is set to false,
-* Autocompleter - resolved problem with closing dropdown on scroll click. We needed to drop support for dropdown state updates on input blur event, because in many cases it was impossible to check whether dropdow should b* closed. If you need to programatically change focus to other element with focus() method, you should also programatically hide autocompleter dropdow* by using its hide() method,
-* Autocompleter - removed unecessary border styles from mdb-option,
-* Autocomplter - resolved problem with opening dropdown when [clearButton] is set to false,
-* Dropdown - resolved problem with change detection, dropdown should be correctly removed from DOM even when OnPush strategy is used in parent component,
-* Select - dropdown won't open on right click on input,
-* Select - resolved problem with displaying long placeholder and label text,
-* Select - resolved problem with opening dropdown on label click (this problem occured only when label was added as html element and not with [label] input ,
-* Sortable plugin - resolved problem with blocked click events,
-* Sortable plugin - resolved problem with width of cards in card deck example.
-
-**New Features:**
-
-* Select - added possibility to add object to the value parameter in select options array,
-* Select - added new [compareWith] input that accepts a function that will be used to find corresponding option for specified value (useful when using object as option value),
-* Calendar plugin - added new (monthChanged), (weekChanged) and (listChanged) outputs,
-* Popover - added new [bodyClass], [headerClass] and [containerClass] inputs that allow to specify custom classes.
-
-8.3.1
-In version 8.3.1 we added some fixes and updated code in the documentation pages. Check what changed below:
-
-**Fixes:**
-
-* Checkbox - resolved problem with checked state updates on ngModel value change,
-* Autocompleter - resolved problem with Cannot read property 'value' of undefined on up arrow navigation,
-* Dropdown - resolved problem with material styles in default version,
-* Textarea - added possibility to resize material version,
-* Timepicker - resolved problem with clear button, it should be now displayed correctly,
-* Table pagination - resolved problem with pagination when switching to last item,
-* Sidenav - resolved problem with accordion auto expand/collapse when queryParams are used.
-
-8.3.0
-In version 8.3.0 we added some fixes, new features and updated code in documentation pages. Check what changed below:
-
-**Fixes:**
-
-* Admin Pro Template - resolved problem with responsivity,
-* Flipping cards - resolved problem with animation,
-* Time picker - resolved problem with change detection when setting default value,
-* Time picker - component will now open on input focus, to disable this behavior set openOnFocus input to false,
-* Checkbox - resolved problem with position of validation message for longer text,
-* Radio buttons group - resolved problem with styles for rounded buttons,
-* Breadcrumbs - added cursor: pointer style for inactive elements,
-* File upload - resolved problem with uploading the same file multiple times in a row,
-* Sidenav - resolved problems with accordion items auto expand on route change,
-* Sidenav - reduced size of indicator arrow in accordion items and fixed its animation,
-* Modal - resolved problem with alignment of items in dynamic full height modal,
-* Select - resolved problem with styles on disabled state,
-* Toast - resolved problem with maxOpened option,
-* Carousel - resolved problem with displaying first slide when OnPush strategy is used in parent component,
-* Accordion - resolved problem with aria-expanded value,
-* Select - resolve problem with highlightColor and highlightTextColor options,
-* Autocompleter - dropdown will no longer be closed on input click.
-
-**New Features:**
-
-* Date picker - added possibility to add default date in JavaScript Date Object format. Component will also return date object if useDateObject option is set to true (default value is false)
-* Dropdown - added new dropupDefault input that allow to use dropup component with default Bootstrap styles,
-* Autocompleter - added new clear method that allow to reset displayed value,
-* Table - added new searchLocalDataByFields method that allow to filter result only in specific table columns,
-* Autocompleter - added new optionHeight input that allow to set height for the dropdown options,
-* Autocompleter - added new visibleOptions input that allow to change number of options visible in the dropdown,
-* Autocompleter - added new displayValue input that allow to specify option value that will be displayed in the input text field. This is useful in case where we want the value processed by the form control to be different from the displayed value (for example when value of the option is an object).
-
-**Docs:**
-
-* Datatables - added example of master detail table
-* Charts - added examples of data formatting
-* Time picker - added validation example
-
-8.2.0
-In version 8.2.0 we resolved some problems with change detection and reduced number of unecessary change detection cycles caused by our components. These changes should positively affect the performance of applications that use MDB Angular.
-
-**Fixes:**
-
-* Credit card directive - changed limit of Diners card from 19 to 14,
-* Autocomplete - resolved problem with position of dropdown displayed above the completer input (it should now update correctly when number of displayed options change),
-* Date picker - resolved problem with label animation when click is detected directly on label text,
-* Date picker - resolved problem with display of default date when using locales other than 'en',
-* Carousel - resolved problem with video playing in the background even when slide is not active,
-* Select - resolved problem with long placeholder overlapping select input,
-* Toast - resolved problem with null check in show method,
-* Navbar - resolved problem with scroll in navbar dropdown when .fixed-top class is added,
-* Dropdown - resolved problem with fade out animation,
-* File upload plugin - resolved problem with resetting default file,
-* File upload plugin - resolved problem with 'No file choosen' message when default file is available.
-
-**New features:**
-
-* Autocomplete - added new (selected) output that is fired on selection change,
-* Accordion - added new [autoExpand] input that allow to disable auto expanding of accordion items in sidenav when active route is detected,
-* Table editor plugin - added sorting feature.
-
-8.1.1
-In version 8.1.1 we added some minor fixes and updated documentation pages. Check what changed below:
-
-**Fixes:**
-
-* Lightbox - resolved problem with styles (hover, cursor, margin),
-* Lightbox - resolved problems with back button in mobile browsers,
-* Ligthbox/Carousel - resolved problem with paths to images,
-* Autocompleter - resolved problem with dropdown position when its rendered on top, it should no longer cover the input
-* Autocompleter - resolved problem with closing the dropdown with hide() method,
-* Fixed button - removed unnecessary right and left styles,
-* Select - removed display: none style from standard HTML select,
-* Inline date picker - resolved problem with closing dropdown when using multiple date pickers in the same view, the dropdown should now close automatically when another date picker is opened
-* Inline date picker - resolved problem with previous/next buttons styles,
-* Credit card directive - resolved problem with formatting of the Diners card number,
-* Rounded buttons - resolved problem with styles when using rounded buttons and mdb-calendar plugin in the same view,
-* Range slider - resolved problem with value updates in reactive forms.
-
-**Docs:**
-
-* Cards - updated code responsible for rendering image overlay,
-* Progressbar - updated API section of the component.
-
-8.1.0
-In version 8.1.0 we added some new features and bug fixes. Check what changed below:
-
-**Fixes:**
-
-* Dynamic modal - resolved problem with backdrop in lazy loaded modules (it should no longer remain on screen after navigating to a different module),
-* Carousel - resolved problem with auto slide,
-* Sticky header - resolved problem with stickyHeader="true" in Chrome browser,
-* Table search - resolved problem with filtering for nested data,
-* Vertical list group (mdb-tabset) - resolved problem with display on hover in Safari browser,
-* Time picker and Date picker - resolved problem with different input position in these form controls,
-* Popover - resolved problem with outsideClick in Safari browser (ipad),
-* Accordion - resolved problem with alignment of indicator icon,
-* Accordion - resolved problem with OnPush change detection,
-* Register/login modal - resolved problem with alignment of mdb-success and mdb-error messages,
-* Video modal - resolved problem with not pausing video when closing modal,
-* Select - resolve problem with position of clear button,
-* Double navigation - resolved problem with missing margin-left and margin-right in dobule navigation layouts,
-* Textarea - resolved problem with active state of the label (it should no longer have blue color when it's not focused),
-* Fixed caption button - resolved problem with element[NATIVE_ADD_LISTENER] is not a function error.
-
-**New features:**
-
-* Table pagination - added new buttons for navigation to first and last page,
-* Charts - added new getPointDataAtEvent(event) for getting cursor position after click.
-
-**Docs:**
-
-* Migration guide - added information about cards and skins,
-* Sidenav - added live preview for slim sidenav,
-* Charts- added example on how to display values for each point of the graph,
-* Forms - updated example code with new validation method,
-* Validation - updated example code for onSubmit validation method,
-* Dynamic modal - added example on how to use output events,
-* Parallax - added additional information about the usage in Angular project.
-
-8.0.0
-New version brings refactor in styles and few components. Check every change in 8.0.0 below.
-
-**MIGRATION INSTRUCTIONS:**
-You should definitely read the entire migration guide carefully and understandably before updating your application to the latest.
-
-**Most important changes in version 8.0.0:**
-
-* support for Angular 8 - new Angular version is now required in MDB Angular 8.0.0,
-* modular styles - components styles will be now loaded with thier modules, that means you can load only the styles you need in your application (some of the styles still remain global as they are not part of any component),
-* some bug fixes and new features.
-
-**Fixes:**
-
-* Fluid modal - the modal will no longer overwrite padding-right styles on the body element,
-* Fixed button - resolved problem with ExpressionChangedAfterItHasBeenCheckedError error,
-* Dynamic modal - resolved problem with focus trap (other elements on the page should no longer be focusable if the modal is displayed),
-* Autocompleter - resolved problem with click event on the clear button,
-* Autocompleter - resolved problem with blocked events in autocompleter dropdown (it should be possible to add events to mdb-option components and other custom elements that are displayed in completer dropdown),
-* Stepper - removed automatic mode change from horizontal to vertical on smaller screens. The stepper mode will be changed only if [vertical]value change,
-* Dropdown - resolved problem with visibility of dropdown menu when it was opened from element with mdbTooltipdirective.
-
-**New Features:**
-
-* Steppers - added new [stepChange] output which will be fired on every step change,
-* Autocompleter - added Control Value Accessor to completer input (that should resolve problems wit valueChange in reactive forms).
-* Material Select - added ChangeDetectionStrategy.OnPush from default to the Material Select dropdown.
-
-**Docs:**
-
-All code examples have been updated to work correctly in Angular 8 projects. Due to the changes in styles modularity, there may be slight differences when it comes to overwritting component styles. We also reviewed the documentation and removed minor errors like typos and old, unused code.
-
-* Autocompleter - changed the code of the examples to make it shorter and more readable.
-
-7.5.4
-New version brings some bug fixes and new features. Check every change in 7.5.4 below.
-
-**Fixes:**
-
-* Select label with prefilled value 0 won't break lifting up label element,
-* Select will now be properly aligned with other material inputs,
-* Material Select will now close it's dropdown while clicking outside of it on iOS,
-* visibleOptions in Material Select will now work again when select was opened for the first time,
-* Carousel won't throw classList is undefined anymore,
-* Datepicker won't throw document is undefined while SSR no more,
-* Datepicker will now allow to use Font Awesome 5 Pro with css,
-* Datepicker will now format date properly while using patchValue and JS date format,
-* Toast with changed opacity won't blink anymore,
-* Resolved problems with access specificators on fullTemplateTypeCheck mode,
-* Color Picker won't throw erorrs when destroying it's instance,
-* Sidenav with routerLink will now open active links after reload while using HashLocationStrategy.
-
-**New Features:**
-
-* Material Select - Added new input - [outline] which will allow to use outline input type,
-* Multi Select - Added new input - [outline] which will allow to use outline input type,
-* Material Select - added ChangeDetectionStrategy.OnPush from default to the Material Select dropdown,
-* Autocomplete - Added new output which will emit value after clicking in clear button,
-* Table Editor plugin - added behavior to highlight table editor row when editing row,
-* Table Pagination - added two new ofKeyword, dashKeyword inputs which allow to overwrite default text in Table Pagination,
-* Accordion - added new (animationStateChange) event which will be fired after accordion animation end,
-* Cards - added ChangeDetectionStrategy.OnPush from default to the Cards components,
-* Sortable plugin - added new [disabledDragElements]="[]" input which allow to determine, on which elements sortable effect should be disabled.
-* Chat plugin - added new chat example - Small Chat,
-* E-commerce components - added new example - Shopping Cart.
-
-**Docs:**
-
-* Navbars - resolved problem with dropdown alignment on mobile screen,
-* Material Select - added missing inputs and outputs to the Material Select API docs.
-
-**Other:**
-
-* Resolved vulnerability problems on four repositories: MDB Free, MDB Admin Free, MDB Pro, MDB Admin Pro.
-
-7.5.3
-New version brings some bug fixes and new features. Check every change in 7.5.3 below.
-
-**Fixes:**
-
-* Tooltip with routerLink and nested i tag won't reload page after click,
-* Improved positioning in Tooltip - use dynamicPosition input to turn off adjusting position,
-* Improved positioning in Popover - use dynamicPosition input to turn off adjusting position,
-* Accordion will now allow to use keyboard navigation (Tab, Enter, Space).
-
-**New Features:**
-
-* Double Range Slider - Added new component - Two dots range slider,
-* Accordion - changed icon behavior - now it is rendered with css and content property,
-* Flipping Cards - added (animationStart) and (animationEnd) outputs,
-* File Upload plugin - added new customText input which allow to overwrite default text in File Upload,
-* File Upload Plugin - added new [defaultFile]" input which allow to set default file for File Input component,
-* Date Picker - added possibility to use LocaleService as global service - one instance for every instance of Date Picker,
-* Material Select - added feature which allow to highlight specific item after keyboard button push (eg. push "F", and Select will highlight item which starts on "F" char),
-* Material Select - added new [filterAutocomplete]="true" input which allow to determine, Select should allow browser autocomplete mechanism or not,
-* Material Select - Select will now allow you to define custom template in it,
-* Toast / Notification - added new actionButtonClass config property which allow to add CSS class to action button in toast,
-* Date Picker - added new editableDateField config property which allow to disable Date Picker input field to put there some text,
-* Popover - added new [outsideClick]="true" input which allow to determine, if Popover should be closed after clicking in it's content,
-* Date Picker - added new [outlineInput]="true" input which allow to use the .md-outline class inside Date Picker,
-* Time Picker - added new [outlineInput]="true" input which allow to use the .md-outline class inside Time Picker.
-
-**Docs:**
-
-* Multi Item Carousel - added new Multi item responsive carousel,
-* Flipping Cards - added information about this, that Flipping Cards requires BrowserAnimationsModule.
-
-7.5.2
-New version brings some bug fixes and new features. Check every change in 7.5.2 below.
-
-**Fixes:**
-
-* Table pagination - resolved problem with displayed value of maxVisibleItems,
-* Tooltip - resolved problems with alignment near the edge of viewport,
-* Dropdown - resolved problem with menu position when its open near the edge of viewport,
-* Autocompleter - resolved problem with dropdown position in Chrome,
-* Select/multiselect - resolved problem with animation of label added with html tag,
-* Date picker - resolved problem with dynamic value and format updates when locale input change,
-* Date picker - resolved problem with disabling component in reactive forms,
-* Validation - resolved problems with validation of default value in mdb-select component,
-* Sidenav - resolved problem with component blinking on initialization,
-* WYSIWYG plugin - added type="button" to the options buttons to resolve problem with form submitting.
-
-**New Features:**
-
-* Select / Multiselect - added possibility to customize toggle icon,
-* Sidenav - added new slim sidenav version,
-* Calendar plugin - added new [editable] input that allow to disable event editing,
-* Calendar plugin - added new [options] input that allow to add custom configuration options, options.
-
-**Docs:**
-
-* Modals - updated example code for long content modals,
-* Date picker - added new examples for setting default value,
-* Datatables - added new example for passing table data to dynamic modal,
-* Calendar plugin - added new instructions on how to use custom configuration options.
-
-7.5.1
-New version brings some bug fixes and new features. Check every change in 7.5.1 below.
-
-*** Fixes: ***
-
- * Sticky Header - resolved problem with 'BrowserModule has already been loaded',
- * Toast - resolved problem with animation in Edge,
- * Carousel - resolved problem with 'Cannot read property classList of undefined',
- * Card reveal - resolved problems with animation,
- * WYSIWYG plugin - resolve problems with value dynamic updates and valueChange event.
-
-*** New Features: ***
-
- * Fixed buttons - added new mdbFixedCaption directive that allow to add caption to button,
- * Navbar - added new [scrollSensitivity] input that allow to specify scroll amount needed for the top-nav-collapse class to be added,
- * Stepper - added new [editable] input that allow to disable edition of finished step,
- * Sidenav - added new [side] input that allow to change position of the sidenav. Use [side]="'right'" or [side]="'left'" options,
- * Inputs - added new Material 2.0 input with background and animated border.
-
-*** Docs: ***
-
- * Card reveal - added live example,
- * Composition - added example with hidden sidenav under fixed navbar.
-
-7.5.0
-New version brings breaking changes in tables, some bug fixes and new features. Check every change in 7.5.0 below!
-
-*** Breaking changes in tables: ***
-
-MdbTableService will be no longer used and it will be removed from package in MDB Angular 8 version. All methods available in this service were moved to the MdbTableDirective.
-
-New [tableEl] input was added to MdbTablePaginationComponent. This input accepts instance of MdbTableDirective, and it's required for the pagination to function properly.
-
-toLowerCase() method was removed from MdbTableSort directive due to problems with sorting in Chrome browser. Sort headers values must be now exactly the same as values of data source objects properties.
-
-All changes have been included in the new examples in the tables documentation.
-
-*** Fixes: ***
-
- * Frame Modal - resolved problem with displaying in Safari browser,
- * Fluid Modal - resolved problem with position on smaller screens,
- * Autocompleter - resolved problem with dropdown position in modal,
- * Autocompleter - resolved problem with form submitting when using enter key to select an option,
- * Collapse - resolved problem with displaying shadow of card component,
- * Horizontal Stepper - resolved problem with dynamic height update,
- * Accordion - resolved problem with asynchronous data,
- * Accordion - resolved problem with multiple accordion instances inside one component,
- * Table sort header - resolved problem with accessibility,
- * Navbar - resolved problem with accessibility of navbar toggler button.
-
-*** New Features: ***
-
- * Date picker - added new inline version,
- * Date picker - added javascript date to object emitted by (dateChanged) output,
- * Date picker - added new (closeButtonClicked), (todayButtonClicked) and (clearButtonClicked) outputs,
- * Table sort - added new (sortEnd) output that will emit sorted data,
- * Sticky header - added new mdbStickyHeader directive that can be added to mdb-navbar component to hide navbar when scrolling down and bring it back when scrolling up.
- * WYSIWYG plugin - added ControlValueAccessor implementation.
-
-
-*** Docs: ***
-
- * Inputs - added new fix for yellow or blue background that is added with Chrome auto-fill,
- * File upload plugin - changed component type from FileUploadComponent to MdbFileUploadComponent,
- * Table sort - added TitleCase pipe to sort headers,
- * Table pagination - onPreviousPageClick and onNextPageClick methods were moved to the MdbTablePaginationComponent internal code.
-
-7.4.4
-New version brings some bug fixes and new features. Check every change in 7.4.4 below!
-
-**Fixes:**
-
-* Multiselect - disabled options will be now skipped correctly in 'Select all' method,
-* Table pagination - resolved problem with accessibility,
-* Table filter - resolved problem with searching in list with null values,
-* Table filter - search will now work correctly for uppercase letters,
-* Table sort - resolved problem with sorting null values,
-* Autocompleter - resolved problem with scrollbar,
-* Autocompleter - resolved problem with z-index in modal,
-* Textarea - resolved problem with rows attribute.
-
-**New Features:**
-
-* Time picker - added new (timeChanged) output that will be emitted on time change,
-* WYSIWYG plugin - added new (valueChanged) output which emits current value as string.
-
-**Docs:**
-
-* Skins - added new instructions on how to add new data to skin.
-
-7.4.3
-New version brings a lot of bug fixes, and improved performance in Material Select Component. Check the every change in 7.4.3 below!
-
-**Fixes:**
-
-* Select - resolved problem with performance,
-* Select - resolved problem with option height on dynamic option update,
-* Multiselect with filter - resolved problem with options position,
-* Dynamic modal - resolved problem with animation when mdb-select component is added to modal template,
-* Datepicker - resolved problem with event emitting on input focus and added new [openOnFocus] input. Add [openOnFocus]="false" to prevent date picker from opening on input focus,
-* Checkbox - (change) event won't be emitted before valueChanges on Edge anymore,
-* Lightbox - magnifier icon will zoom picture properly,
-* Dynamic Modal - animation on Edge will now won't blink,
-* Dynamic Modal with Select - the animation won't blink on Edge anymore,
-* Modals - resolved problem with focusing element from background while modal was opened,
-* Auto Completer - resolved problem with scrolling down completer's dropdown with keyboard on Chrome,
-* Auto Completer - fixed problem with wrong highlighted item after first click on arrow down key,
-* Inputs with icon prefix - icon will now be highlighted after input focus,
-* Carousel with Crossfade - rewritten the crossfade animation so it now looks like this one from MDB jQuery.
-
-**New features:**
-
-* Auto Completer - added functionality to pick highlighted (with keyboard) item as input's value,
-* Auto Completer - added (select) output event which is fired after item selection,
-* Icon - added classInside input which allow to add class to inside element of mdb-icon element,
-* Badge - added classInside input which allow to add class to inside element of mdb-badge element,
-* Navbars - added possibility to add custom element to mdb-navbar template (it will allow to add custom back button to iOS devices),
-* Table Sort - added functionality to sort over nested object properties.
-
-**Docs:**
-
-* File Input - added example of upload options usage,
-* File Input - added few new examples how to use options,
-* Date Picker - added new [openOnFocus] input to input list,
-* Carousel - updated input list in API section,
-* Auto Completer - added example how to send API calls after (input) event,
-* Charts - added Stacked Bar Chart example,
-* Checkbox - Added Template-Driven forms example,
-* Checkbox - Added Reactive Forms example,
-* Table with Pagination - Modified Basic Example code,
-* Table Editable - Modified Basic Example code (now it has bigger padding on table items),
-* Plugins - Added Live Preview in MDB Angular Demo App,
-* Navbar - Added 4 new navbar examples to the Basic Example section,
-* Dropdowns - Added new example how to open dropdown from various elements,
-* Sticky Content - renamed sticky-after input to stickyAfter. Previous code is still compatible,
-* Steppers - Added new example how to add icons to the each steps with SCSS,
-* Toast with opacity -Customized the opacity scss code,
-* Sidenav - Added new example how to build sidenav with nested accordion links,
-* DataTables - Customized the searchItems() function in every DataTables example.
-
-**Changes:**
-
-* Auto Completer - changed behavior of textNoResults input. From now, you have to set it to be visible. From default, this text is not visible.
-
-7.4.2
-In this version we resolved few bugs and resolved the problem with mdb-angular-free zip install on Windows. Check the 7.4.2 changes below.
-
-**Fixes:**
-
-* Collapse animation will now work properly on MacOS and Safari Browser,
-* Lightbox won't throw the this.galleryDescription is undefined no more,,
-* Resolved problem with search.toLowerCase() is undefined in Table Search,
-* mdbWavesEffect won't hide button text no more while button is nested in Accordion on Chrome 71 & 72.
-
-**New features:**
-
-* Table Sort - added custom trim function which allows to sort table data while table data contains white signs.
-
-7.4.1
-In this version we resolved problems with a lot of bugs. Check the 7.4.1 changes below.
-
-**Fixes:**
-
-* mdb-auto-completer component won't throw errors when navigating with keyboard while dropdown is closed,
-* mdbAutoCompleter - resolved problem with rendering completer's dropdown below the parent with overflow: hidden style - necessary to use the [appendToBody]="true" input,
-* mdbAutoCompleter will now render along the top edge of the input when it won't fit below the input,
-* mdbAutoCompleter - resolved problem with showing clear button in the first mdb-auto-completer while there were two or more of them,
-* mdb-image-card - image card will now properly scale when his container is .col-6 or more,
-* mdb-card - from now it's possible to overwrite the default shadow with one of .z-depth-* class,
-* mdbInputDirective - renamed the mdbValidate input to the mdbValidation due to duplicated name conflict,
-* mdbInput - from now, it's possible to bind dynamic value to the input placeholder via placeholder="{{text}}" string interpolation,
-* mdbCheckboxChange - will now be exported, so problem with unable to import this class from the ng-uikit-pro-standard will gone,
-* Sidenav & Nested Accordion - from now only the active mdb-accordion-item element will be highlighted,
-* Navbar - added possibility to use the hide() method to collapse navbar after click on mobile view,
-* Select - added mechanism to prevent line wrap in mdb-select item when it is wider than select dropdown,
-* Lightbox - image size will now be little bit larger,
-* Toast - the positioning classes .md-toast-top-center .md-toast-bottom-center will now work as they should,
-* Checkbox - resolved problem with validation while using onSubmit or onBlur properties,
-* Textarea validation - validation message won't be overlapped with bottom border of the element on Firefox,
-* Accordion - resolved problem with not working [multiple]="false" on mdb-accordion generated with *ngFor loop,
-* Thumbnail Carousel - thumbnails will now be properly highlighted while active.
-
-**New Features:**
-
-* Inputs - new Material 2.0 inputs (outlined),
-* Added new helper classes for opacity: Incremented by 10, .opacity-0, .opacity-10 until 100.
-* mdbAutoCompleter - added new [appendToBody]="true" input which will determine if completer's dropdown should be appended to the body element or it's parent. Useful while completer's parent got overflow: hidden style.
-* Date Picker - added new closeBtnClicked() method which allow to hide Date Picker programmatically.
-
-**Documentation:**
-
-* Masonry - Added documentation for Masonry Layout,
-* Autocompleter - added example how to use [appendToBody]="true" input,
-* Date Picker - added example how to show / hide date picker with typescript method,
-* Vertical Tabs - added new necessary class .list-group for the Vertical Tabs in list group,
-* Notifications - changed the iconClasses in API section,
-* Notifications - resolved problem with not working alerts,
-* Pattern Validation - updated the allow only letters regex pattern,
-* Navbar - corrected the method names,
-* Multi-Item carousel gallery - added new most recent code.
-
-
-7.4.0
-In this version we resolved problems with our modules and tree shaking.
-It is now possible to import only those modules you need in your application, which will significantly reduce bundle size. We also updated Bootstrap to the newest version (4.2.1).
-
-*** Bootstrap version update: ***
-
- * Added new spinner loading component,
- * Added new .font-weight-lighter and .font-weight-bolder utitlities,
- * Added new .text-decoration-none class,
- * Added new negative margin utility classes (e.g, .mb-n3),
- * Changed auto columns (e.g, .col-auto) from max-width: none to max-width: 100% to prevent content from causing a column to overflow the parent.
- * Added md prefix to scss code of our alert components to avoid overwritting bootstrap classes
-
-*** Fixes: ***
-
- * Popover / Tooltip - resolved problems with displaying in Firefox/Safari browsers on Mac OS,
- * Multiselect - changed some methods to provide better support for older browsers,
- * Carousel - resolved problem with OnPush change detection,
- * Validation - resolved problem with positioning messages under inputs with icons,
- * Select with filter - resolved problem with ExpressionChangedAfterItHasBeenCheckedError,
- * Select with icons - resolved problem with padding,
- * Steppers - updated styles to resolve problem with Font Awesome 5 Pro icons,
- * Tooltip - resolved problem with placement.
-
-*** Documentation: ***
-
- * Multi item carousel - updated example code. From now only one item should be displayed on smaller screens,
- * Switch - changed syntax of default component,
- * Borders - added new border-white and rounded-pill examples,
- * Overflow - new documentation page in utilities section
- * Icons list - updated example code of the icons
- * Table editable - changed example code to resolve problems with editing on Edge 15.
-
-*** New features: ***
-
- * Select - added new [optionHeight] input which allow to customize options height,
- * Select - you can now use [appendToBody]="true" input to avoid problems with displaying select dropdown in container with overflow: hidden,
- * Multiselect - added new selectAllLabel input which allow to customize text of 'Select all' option,
- * Tabs - added possibility to add action buttons to tabset header.
-
-7.3.0
-In this release we have migrated our entire library to Font Awesome 5. Changing from 4 to 5 is not backward compatible, so we recommend updating the application to Font Awesome 5.
-
-*** Fixes: ***
-
- * Datepicker - Solved problems with date formatting, when the component is in *ngIf,
- * Tabs - It is no longer necessary to double-click to activate the tab during OnPush,
- * Tabs - Disabled tab will not be marked as active,
- * Sidenav & Custom Skin - Solved problem with text color overwriting in Sidenav in combination with custom skin,
- * Select & Custom Skin - Solved problem with overwriting text color in Select with Custom Skin,
- * Table Sort - Sorting tables will not display an error .toLowerCase() is undefined,
- * Tooltips & Admin Template Pro - Fixed tooltips in Admin Template Pro,
- * API - Removed deprecated API - HttpModule, eflectiveInjector, NavigationExtras.preserveQueryParams,
- * Lightbox & Firebase - Solved problem with Lightbox and Firebase,
- * Navbar - Navbar in mobile version will not flash on the screen,
- * Textarea - Autoresizing Textarea will expand when text is added before rendering a view,
- * Auto Completer - Resolved problem with .trim() is undefined in mdb-option component.
-
-*** Documentation: ***
-
- * Checkbox - Added documentation for Template Driven & Reactive Forms Checkbox,
- * PWA Tutorial - Published new version of Angular PWA tutorial with Firebase and IndexedDB!
-
-*** New Features: ***
-
- * Font Awesome 5 Icons - compatibility with Font Awesome 5,
- * Admin Template Pro - Added Sections page to Admin Template Pro,
- * Steppers - added new Steppers component,
- * Dynamic Modals - Added a new way to pass data to dynamic modals,
- * Scrollspy - Added event activeLinkChange to Scrollspy.
-
-7.2.0
-In this release we added new mdb-auto-completer component, which is improved version of mdb-autocomplete.
-
-We encourage you to use mdb-auto-completer, but mdb-autocomplete will still be available until version 8 of MDB Angular.
-
-*** Fixes: ***
-
- * Select - resolved problems with updating values dynamically,
- * Dropdown - resolved problem with content position when opened in navbar,
- * Modal - remove unnecessary icon styles,
- * Autocomplete - resolved problem with angular/http.
-
-*** Documentation: ***
-
- * Table with panel - resolved problem with icon names,
- * Navbars - removed unnecessary margin from search element,
- * Validation - added example for file upload validation.
-
-7.1.1
-*** Fixes: ***
-
- * Select - resolved problems with OnPush change detection,
- * Select - changed styles and animation to add more material look,
- * Multiselect - resolved problem with disabled option styles,
- * Date Picker - resolved problem with dynamic value updating,
- * Date Picker - resolved problem with opening using built-in method,
- * Table Pagination - resolved two minor problems
-
-*** New features: ***
-
- * Dynamic Modal - added new scroll property to modal options object. It can be used to add overflow-y: auto to modal with long content,
- * Multiselect - added select all option. This option is enabled by default and can be turned off with [enableSelectAll]="false" input,
- * Multiselect - added button for clearing selected options,
- * Select and Multiselect - added new [highlightFirst] input which can be used to turn off highlight added by default to the first option.
-
-*** Documentation: ***
-
- * Scrollspy - added new example for MDB scrollspy on full page,
- * Accordion - added new example,
- * File Input - added new example,
- * Select - updated code in examples
- * Multiselect - updated code in examples
- * Added description how to change default Roboto font,
- * Intro Sections - resolved few minor problems,
- * Accordion - added toggle() method description.
-
-7.1.0
-We have rewritten the entire validation of forms. New validation is faster, lighter, better! Read about it below.
-
-The mdbInputDirective directive has been divided into mdbInput and mdbValidate directives. Validation messages can ben now added with mdb-error and mdb-success components. More information on the usage can be found in validation documentation.
-
-New validation offers more flexibility and solves problems with updateOn: 'blur' and updateOn: 'submit' options.
-
-Those changes are backwards compatible. Directive mdbInputDirective will be still available for next few versions, but we recommend to use the new directives.
-
-*** Fixes: ***
-
- * Data Tables - pagination and search will now work without problems against data coming from Remote API,
- * Carousel with thumbnails - The problem with a larger thumbnails strip width than the slide photo in case of more slides has been solved,
- * Material Select - Filtering results with filterEnabled will now returns each line that contains the search character,
- * Date Picker - Significantly improved component performance. Solved an issue where Date Picker was rendered before it was needed,
- * Tooltip - A tooltip that does not fit in a free space along the top edge of the screen will be placed along the bottom edge, and vice versa,
- * Tooltip - Added input customHeight which supports the above effect, but in case the height of the tooltip has been changed,
- * Tabs - The problem in which static tabs were rendered before those with *ngIf was solved. It is required to use a new input tabOrder. Read more about this here,
- * Scroll Spy - Fixed problem with handling nested links.
- * Modals - Solved problem with built-in modal service. Now it is possible to call modals from this service.
-
-*** Documentation: ***
-
- * Data Tables - added new example how to use Data Tables with data from remote API,
- * Tabs - added new example how to use both static & dynamic tabs,
- * Tabs - added new tabOrder input,
- * Tooltips - added new example how to modify the Tooltip height,
- * Tooltips - added new customHeight input.
- * Modals - added examples how to use built-in modal's service.
-
-7.0.0
-Angular 7 version is now supported in MDB Angular.
-
-*** Fixes: ***
-
- * Date picker - resolved problem with disabled state added in reactive forms
- * Date picker - resolved problem with typing the date in the input field
- * Date picker - changed z-index styles to fix the problem that caused other elements to overlap the component
- * Time picker - changed z-index styles to fix the problem that caused other elements to overlap the component
- * Accordion - resolved problem with 'Cannot read property expandAnimationState of undefined'
- * MdbInputDirective - resolved problem with displaying error and success messages when errorMessage and successMessage inputs values are empty strings
- * File Upload - resolved problem with 'Cannot read property unsubscribe of undefined'
-
-*** New features: ***
-
- * Date picker - added new [ tabIndex ] input that allow to set tabindex of the date picker input field
- * Time picker - added new [ tabIndex ] input that allow to set tabindex of the time picker input field
- * Tabs - added new [ disableWaves ] input that allow to disable waves effect on the tabs buttons
-
-6.3.0
-The key "defaultProject" has been added to angular.json files of all packages containing the demo application. Thanks to that you can restart the application using the ng serve command.
-
-In this update, support for the ng add function has been added to the MDB Angular Free product in the npmjs repository - angular-bootstrap-md. Thanks to that it is possible to install MDB Angular Free with one command ng add angular-bootstrap-md.
-
-*** Fixes: ***
-
- * Select - resolved problem with placeholder when value is null,
- * Select - resolved problems with label styling. For the label to work correctly, we encourage you to add it via [ label ] input instead of HTML tag.
- * Select - resolved problem with opening dropdown inside mdb-collapse component,
- * Multiselect - added new styles to resolve problem with broken layout when many options are selected,
- * Autocomplete - resolved problem with label position on input blur,
- * Date Picker - resolved problems with component performance,
- * Cards - resolved problem with adding shadow classes,
- * Card Reveal - resolved problem with card height,
- * Resolved problems with dependency vulnerabilities in MDB Free and MDB Pro
-
-*** New features: ***
-
- * Added possibility to create vertical tabs and pills,
- * Added clear button functionality to mdb-time-picker
-
-*** Documentation: ***
-
- * File input - added instructions on how to upload file to server
- * Sidenav - added instructions on how to use RouterLinkActive on mdb-side-nav links
-
-*** Improved documentation: ***
-
-Added a new documentation format for all pages in following sections:
-
- * Layout
- * Utilities
- * Content
- * CSS
- * Components
- * Forms
-
-6.2.6
-*** Fixes: ***
-
- * Resolved problem with ngIf directive used on mdb-tab,
- * Resolved problem with active state on disabled mdb-tab,
- * Resolved problem with display of slider range cloud in Safari browser,
- * Resolved problem with usage of routerLinkActive in mdb-sidenav. Sidenav should now highlight active item and toggle accordion item depending on active route,
- * Resolved problem with display of mega menu when it is used together with mdb-sidenav component,
- * Resolved problem with mdb-sidenav mask,
- * Resolved problem with 'Attempt to use a destroyed view' in scroll-spy,
- * Resolved problem with 'ExpressionChangedAfterItHasBeenCheckedError' in mdb-select filter input
- * Removed unnecessary padding from mdb-select component
-
-*** New features: ***
-
- * Added possibility to use icons in option list of mdb-autocomplete component,
- * Added focus animation to mdb-autocomplete clear button and new [ clearButtonTabIndex ] input which allow to change tabindex attribute of this button
-
-*** Documentation: ***
-
- * Date picker - updated options object in example code,
- * Tabs - added new instructions on how to set active tab programatically
- * Gradients - added examples for additional gradients
- * Skins - added instructions on how to add custom skin
- * Select - resolved problems with overlapped label with select element
- * Timeline - scss code is now in MDB Angular Pro package
- * FAQ - removed old and unnecessary questions and added new one
-
-*** Syntax changes: ***
-
-Following outputs names has been changed:
-
- Modal:
-
- * (onShow) is now (open)
- * (onShown) is now (opened)
- * (onHide) is now (close)
- * (onHidden) is now (closed)
-
- Dropdown:
-
- * (onShown) is now (shown)
- * (onHidden) is now (hidden)
-
- Popover:
-
- * (onShown) is now (shown)
- * (onHidden) is now (hidden)
-
- Tooltip:
-
- * (onShown) is now (shown)
- * (onHidden) is now (hidden)
-
-These syntax changes are backward compatible, which means that your project will work with both the old and the new syntax. We recommend that you update the syntax as soon as possible. The changes will be backward compatible for several more versions.
-
-6.2.5
-Added two demo applications to ready-to-use archives containing MDB Angular Free and MDB Angular Pro, and to the Angular Bootstrap with Material Design repository on Github.
-
-*** Fixes: ***
-
- * Resolved problem with mdb-select animation. Option list will appear above the component if there is not enough space below,
- * Fixed bug which caused problems with opening mdb-select dropdown,
- * Resolved problem with mdb-autocomplete events (keyup, keydown) which were emitted twice on each entry in the input element,
- * Resolved problem with mdb-side-nav on Firefox,
- * Resolved problem with hidden and fixed double navigation on IE11,
- * Resolved problem with double navbar in Admin Dashboard Pro.
-
-*** New features: ***
-
- * Added new directives which can be used to format credit card number, cvv number and date automatically.
- * Tables - added TableModule containing following elements:
- MdbTableDirective - responsible for different table types, for example: striped, responsive, hover, bordered, borderless
- MdbTableRowDirective - can be used to emit events after creating/removing table row
- MdbTableScrollDirective - responsible for table scroll along the x/y axis
- MdbTableSortDirective - responsible for sorting items in the table
- MdbTablePagination - component responsible for table pagination
- MdbTableService - service responsible for creating new rows, table search and table data source
- * Time picker - added [ disabled ] input which allow to specify disabled state for the component input,
- * Select - added new visibleOptions and tabindex inputs. Those inputs can be used to change number of options visible in the options list and tabindex of the component,
- * Added new BadgeModule module containing the MDBBadgeComponent.
-
-*** Documentation: ***
-
- * Editable table - resolved problem with moving cursor in edit mode
- * Added new example how to use Info Window in Google Maps
-
-*** Syntax changes: ***
-
- * Color - replaced .default-text, .primary-text, .secondary-text, .success-text, .danger-text, .warning-text, .info-text classes with Bootstrap ones: .text-default, .text-primary, .text-secondary, .text-success, .text-danger, .text-warning, .text-info
-
-*** Deprecated: ***
-
- This settings will be stored only by one version yet:
- * .default-text, .primary-text, .secondary-text, .success-text, .danger-text, .warning-text, .info-text
-
- We removed these classes from the package:
- * .full-bg-img
- * .full-height
- * .side-nav .double-navbar .bc-min
- * .no-padding
- * .ql-modal, .product-panel
- * .no-radius
- * .section-blog-fw
- * .personal-sm
- * .classic-tabs (previous syntax not classic tabs at all)
- * .naked-card
- * .pricing-card .heading .card-overlay
-
-6.2.4
-*** Fixes: ***
-
- * Resolved problem with event (noOptionsFound) in mdb-select. It should no longer be emitted on every input in the select filter,
- * Resolved problem with display of vertical images in Lightbox component,
- * Resolved problem with mdb-collapse default collapsed state.
-
-*** New features: ***
-
- * Added new scrollspy component
-
-*** Changed syntax: ***
-
- * Collapse - you no longer need to use [ mdbCollapse ]="isCollapsed" syntax, instead just add mdbCollapse directive to the element and use [ isCollapsed ]="false" input if you want collapsible element to be open by default.
-
-*** New documentation: ***
-
- * Contact Form,
- * Breadcrumbs,
- * Table scroll,
- * Css demonstration page,
- * Gradient,
- * Background Image,
- * Components demonstration page,
- * Button group,
- * Loader,
- * Sections demonstration page,
- * Advanced demonstration page,
- * Chat,
- * Timeline,
- * Edge Header,
- * Streak,
- * Video,
- * Notifications,
- * E-commerce components,
- * Gallery
-
-*** Tutorial: ***
-
- * MDB Angular PWA tutorial
-
-6.2.3
-*** Fixes: ***
-
- * Resolved problem with unemitted tooltipChange event in Tooltips,
- * Resolved problem with select component with updateOn: 'blur' option,
- * Resolved problem with display of select clear button when input [ allowClear ] is set to true,
- * Resolved problem with fixed buttons where one button overlapped another. Use of many fixed buttons in the same view should be now possible,
- * Resolved problem with label in date picker. It should no longer overlap on the displayed date,
- * Fixed problem with overlapped label in Autocomplete when there was some value after view init,
- * Sidenav will now remove fixed-sn or hidden-sn class from body element in ngOnDestroy lifecycle,
- * Fixed problem with wrong margin in input validation message in Cascading Modal form,
- * Resolved problem with autoresizing textarea without .md-textarea-auto class
- * Resolved problem with visibility of content placed below header in intro sections,
- * Resolved problem with dynamic updates of big data in date-picker component,
- * Removed unnecessary console.log from Tabs Component,
- * .dropdown-menu-right class will now align dropdown menu to the right side,
- * Modal without backdrop will now allow to interact with elements on the background,
- * Changing date in datepicker with reactive forms will now affect the big date in datepicker modal,
-
-*** Docs: ***
-
- * Added legacy docs for version 6.2.1,
- * Dropdown alignment section - updated example code responsible for menu position,
- * Advanced modals - updated example code for modal advanced examples. Modal cookies, modal coupon, modal discount, modal related content and modal abandoned cart should no longer block interaction with other elements. In order to achieve this behaviour you need to add modal-scrolling class to the div with mdbModal directive,
- * Modals - added new section with instructions on how to open a modal from another component,
- * Intros - updated example codes to resolve problem with visibility of content placed below header,
- * Tabs & pills - improved documentation
- * Slider - improved documentation
- * Switch - improved documentation
- * Autocomplete - added example how to use [ textSearching ] input
- * Datepicker - Added methods, inputs and outputs description
- * Social Buttons - added examples how to get page share and like counters from Facebook API, and how to share a page on Facebook
-
-*** New documentation: ***
-
- * File input
- * Accordion
-
-6.2.2
-*** Fixes: ***
-
- * Resolved problem with select filter. It should now display only values that match the word you type,
- * Resolved problem with select values and options that were updated dynamically. It should now work correctly both in template-driven and reactive forms,
- * Resolved problem with dateFormat and startDate options in DatePicker component. It is now possible to set default start date which will be formatted as it was specified in format option,
- * Resolved problem with auto resize textarea height,
- * Resolved problem with errorMessage and successMessage inputs - it is now possible to update messages dynamically,
- * Resolved file input problem with file upload,
- * Resolved problem with gesture support for lightbox,
- * Resolved problem with protected parameters in carousel component,
- * Resolved problem with 'mdb-card is not a known element'.
-
-*** New features: ***
-
- * Added possibility to disable accordion item. To do that, add [ isDisabled ]="true" input to ,
- * Added new checkbox component.
-
-*** Docs: ***
-
- * Updated live examples in pagination advanced examples section,
- * Updated file input example code,
- * Updated code in carousel examples (there a was problem with display of carousel with mask),
- * Updated checkbox docs,
- * Added legacy docs for versions 6.0.0 and 6.1.0,
- * Added update instructions for MDB Admin Templates (free and pro).
-
-6.2.1
-*** Fixes: ***
-
- * Resolved problem when validation status was visible even when input was disabled,
- * Resolved problem with select focus event (clicking the space bar when the component is selected with tab key is no longer required),
- * Resolved problem with display of date-picker opened in the modal.
-
-*** New Features: ***
-
- * Added possibility to choose custom color in mdb-spinner,
- * Added new functionality to use only desired validation status (disabling success or error validation) by using [ validationSuccess ] ="true" or [ validationError ] = "true",
- * Added new [ errorMessage ] and [ successMessage ] inputs that allow to pass string or variable with custom validation message (only works when data-error and data-success are not available),
- * Added mdbBtn directive to handle button styling,
- * Added new mdb-card, mdb-card-body, mdb-card-img, mdb-card-header, mdb-card-footer, mdb-card-text, mdb-card-title components,
- * Added 'actionButton' option to alerts.
-
-*** Docs: ***
-
- * Fixed bug with wrong validation status in Success and Error messages section in Inputs docs,
- * Added new section 'Navigation',
- * Added new page 'Mega menu',
- * Added new page 'Navs',
- * Added new page 'Hamburger menu',
- * Added new 'actionButton' option and new section 'Events' to Alerts docs.
- * Added description and examples for new inputs ([ errorMessage ] , [ successMessage ], [ validationSuccess ] , [ validationError ] ) in Inputs docs,
- * Removed duplicated elements from Autocomplete docs,
- * Updated Autocomplete docs with example of 'textNoResults' usage,
- * Updated pagination advanced examples (added variables that allow to change the number of elements displayed on a given page).
-
-6.2.0
-*** MDB Angular Admin Templates: ***
- * Resolved problem with not working hamburger menu in Admin Dashboard Free,
- * Fixed problems with cards styling in Admin Dashboard Pro.
-
-*** Fixes: ***
-
- * Fixed a problem with the inability to update the charts labels together with the data,
- * Resolved problem with only 1 image in Lightbox Component,
- * Fixed problem with undefined calls after (ngModelChange) in Material Select component,
- * Collapse directive won't throw undefined calls after emitting events,
- * Datepicker date changed from string to javascript Date object,
- * Fixed problem with unable to listen date changes in Datepicker Component,
- * Resolved problem with fixed button sliding out from the bottom edge of the screen when it was at the top of the screen,
- * Fixed simple warnings from ng lint,
- * Resolved problem with tabs visible on Datepicker plate,
-
-*** Docs: ***
-
- * Described how to close Fixed Button content after click on some of his childs,
- * Improved documentation of adding translation into Datepicker Component,
- * Rewrote whole Modals Documentation section,
- * Described how to open collapse after view init,
- * Integration with ASP.NET Core moved from 5min-quickstart page to separate ASP.NET page,
- * On Multiselect page added description how to add initial value to it and how to get value changes,
- * Described how to update charts appearance dynamically.
-
-6.1.6
-*** Fixes: ***
- * Fixed problem with freezing browser while validating input
-
-6.1.5
-*** New Features: ***
- * Added .md-textarea-auto class which allows textarea to auto resize when would not fit into it. This feature requires mdbInputDirective on textarea,
- * Added functionality to set first active slide in Carousel.
-
-** Docs: ***
- * Described Card Reveal Component: https://mdbootstrap.com/angular/components/flipping-cards/,
- * Described changing opacity of alerts using toastClass option: https://mdbootstrap.com/angular/advanced/alerts/
-
-*** Fixes: ***
- * Solved problem in which backdrop in sidenav did not hide after scrolling the page on the mobile,
- * Fixed problem with rotating Time Picker arrow on mobile,
- * Fixed problem with (activeSlideChange) event in Carousel Component,
- * Solved problem with resetting state of validation in forms,
- * Fixed problem with scaling mdb-simple-chart, and centering text in chart,
-
-6.1.4
-*** Fixes: ***
- * Solved problem with this.changes.disconnect is undefined in mdbInputDirective.
-
-
-6.1.3
-*** New Features: ***
- * Icons are now component. supports only Font Awesome icons. Available field: icon (icon class), size (icon size), class (custom class for example color),
- * Number input now listens for key events. Added functionality to increment / decrement it's value by 10 or 0.1 by using shift + up / down arrow or alt + up / down arrow keys. Available by using mdbInputDirective.
-
-
-*** Fixes: ***
- * Fixed problems with Carousel when using Angular Universal,
- * mdbInputDirective validation has ben rewritten. Now works with Angular Validators,
- * Fixed problem with no backdrop in sidenav on mobile,
- * Fixed problem with sidenavBreakpoint
-
-6.1.2
-
-
-*** Admin Templates: ***
-We have provided users with the option to make their own changes to the source code and compile the library into JavaScript.
-
-*** New Features: ***
- * Added possibility to use .filled-in class in Multiple Select by using customClass=" 'filled-in' " field,
- * Added possibility to set custom sidenav breakpoint by using sidenavBreakpoint="desired-value" control on mdb-sidenav element,
- * Added option to define custom locale for datePicker without modifying datepickerLocale.service source file,
-
-*** Fixes: ***
- * Fixed problem with fluid modal-bottom,
- * Fixed problem with modal height while using datepicker in modal,
- * Fixed label lifting-up in Autocomplete,
- * Fixed problem with Material Dropdowns and dropup, dropleft, dropright variations,
- * Rewriten Material Select animation.
-
-
-6.1.1
-*** NOTE: ***
-You may need to rename the modules you are using in your application. The list of modified modules is presented below.
-
-In 6.1.1 we have made it possible to import only those modules that you actually use in your application.
-If only individual modules are used, import them but do not import the MDBBootstrapModulesPro main module as this may cause errors.
-
-*** What's new: ***
- Source code delivered to customers is now compilated to .js instead of .ts,
- There's now possibility to import only those modules, which you need in your project. Full module list: https://mdbootstrap.com/angular/modules-list
- Changed names of few modules:
- * MDBChartsModule -> ChartsModule,
- * BsDropdownModule -> DropdownModule,
- * MDBTooltipModule -> TooltipModule,
- * SqueezeBoxModule -> AccordionModule,
- * Ng2CompleterModule -> AutocompleteModule,
- * MDBDatePickerModule -> DatepickerModule,
- * MDBUploaderModule -> FileInputModule,
- * MDBPageScrollModule -> SmoothscrollModule,
- * MdbStickyModule -> StickyContentModule,
- * MaterialRootModule -> PreloadersModule.
-
-*** Fixes: ***
- Fixed missing space in mdb-angular.scss file,
- Added close icon to Autocomplete,
- Fixed problem with prefilling Char Counter value,
- Fixed problem with overlapping label & error / success messages with mdbInputDirective,
- Fixed problem with focusing inputs through TAB key.
-
-
-6.0.2
-*** General: ***
- Changed Renderer to Renderer2.
-
-*** Fixes: ***
- Unnable to scroll in Sidenav,
- Fixed problems with skins,
- Fixed mobile view in DatePicker,
- Fixed problem with scrolling page to the top edge in DatePicker,
- Fixed problem with scrolling page to the top edge in TimePicker.
-
-6.0.1
-*** Fixes: ***
- Fix for dropdowns, dropup variation,
- Fix for fixed button when collapsing (need to pass $event in .toggle() method),
- Few fixes in scss
-
-
-6.0.0
-*** NOTE: Most of the components have been rebuilt. Please, check the ones you use in your project. ***
-
-*** General: ***
-
- Compatible with MDB 4.5.1,
- Compatible with Angular 6.0.0-rc.5, rxjs 6.0.0-uncanny-rc.7 and rxjs-compat 6.0.0-uncanny-rc.7,
- Compatible with Angular CLI ^1.7.1.
-
-*** NOTE 2: For proper using Angular 6 with MDB Angular 6 please check, if you're using rxjs in version at least 6.0.0-uncanny-rc.7 and rxjs-compat in version at least 6.0.0-uncanny-rc.7. Using older versions may produce errors and problems. ***
-
-*** Marked as deprecated: ***
-
- mdbActive,
- mdbInputValidate,
- mdbDeepDirective,
- mdbRippleRadius.
-
-mdbInputDirective has three of the above directives - mdbActive, mdbInputValidate and mdbDeepDirective.
-
-mdbActive is used by default and we do not anticipate that you will be able to disable it.
-
-mdbInputValidate is used by default, but the user can disable validation by using the [mdbValidate]="false" control on input which contains mdbInputDirective.
-
-mdbDeepDirective is used by default when used on a checkbox or radio. It is possible to disable it by using [focusCheckbox]="false" and [focusRadio]="false".
-
-mdbRippleRadius was changed to mdbWavesEffect. mdbRippleRadius will be deleted after next release.
-
-*** Fixes: ***
-
- Fix for z-index in few scenarios (tabs & datePicker), navbar and other,
- Fixed clearUnselected in Autocomplete,
- Fix for mdbActive in Autocomplete.
-
-*** Features: ***
-
- Added feature to close datePicker after selecting an date (closeAfterSelect: true) in datePicker options object.
-
-*** Docs: ***
-
- New category Forms,
- Autocomplete, Inputs, Input Validation, Forms moved from Components to Forms,
- Material Select moved from Advanced to Forms,
- Input Groups moved from Extended to Forms,
- Added instructions how to update Angular projects: https://mdbootstrap.com/getting-started/update-instructions/
- Added instructions how to create project with Angular Universal: https://mdbootstrap.com/getting-started/universal/
-
-*** Changed syntax: ***
-
- Cards,
- Flipping Cards,
- Intros,
- Sections,
- Inputs,
- Footers,
- Preloaders,
- Masks,
- Hover Effects,
- Accordion,
- Modals,
-
-5.2.3
-*** Compatibility with Angular Universal (Server-Side Rendering) ***. Read tutorial.
-Improved dropdown animation in Material Select,
-Fixed problem with dropdown transition in Material Select,
-"Not Found" message in Material Select will be visible only when filtering does not show results ,
-Fix for top / bottom arrow in Material Select,
-Added possibility to overwrite $image-path variable.
-
-5.2.2
-Hotfixes not included in 5.2.1 patch
-
-5.2.1
-Enhanced mdbActive directive - works with data prefilled by browser
-Sidenav issue fixed (skin is optional)
-Fixed with rounded buttons inside input group
-Fixed for dropdown not getting closed after click in other dropdown.
-Fix for line breaking label in checkboxes
-
-5.2.0
-Updated to Bootstrap 4 stable version
-Integration with .NET CORE - tutorial here
-Compatibility with Angular 5.2.1 and CLI 1.6.5
-noImplicitAny and strictNullChecks compatibility
-New validation added (number, tel, submit) + custom validation regex. Read tutorial.
-Configurable labels for DatePicker
-
-5.1.2
-Angular 5.2.1 and CLI 1.6.5 compatibility
-Extended docs for modals - auto focus on input
-Fixed validation for email and password
-Aria attributes added to datepicker
-Added filtering options to Material Select
-Support for IE+ and Edge for Double Navigation
-Extended DatePicker with new functionality:
-Important!
-By default date picker will load now +- 7 years starting from current year. It can be overwritten using minYear and maxYear parameters:
-
-import { Component } from '@angular/core';
-import { IMyOptions } from 'your_path_to/date-picker/index';
-
-@Component({
- selector: 'date-picker-component-example',
- templateUrl: 'toast.component.html'
-})
-
- export class DatePickerComponentExample {
- public myDatePickerOptions: IMyOptions = {
- minYear: 2015,
- maxYear: 2017
- };
-}
-
-5.1.1
-Double navigation - support for collapsed sidenav and navbar
-Extended documentation for Autocomplete
-Auto resize function for collapse added
-Mobile gestures carousel support added
-Added option to hide next / prev buttons in carousel
-Fix for: Module has no exported member 'MDBSpinningPreloader'
-Automatically set date in DatePicker using ngModel
-Fixed docs for File Upload
-
-5.1.0
-Angular 5.1.3 and CLI 1.6.3. compatibility
-Fixed issue with exceeding text tabs component
-Auto-close navbar after click into link (check documentation for more information)
-Fixed problem with error/success message on Firefox
-Fixed problems with selecting hour on mobile devices in Timepicker
-Extended configuration options of easy pie charts (check documentation for more information)
-Fixed for relative path in _skins.scss
-Fixed issue with date picker for Firefox
-Enhanced support for small screen resolution in Datepicker (<575 px)
-Fix for issue while using multiple MDB Autocomplete components
-
-5.0.5
-Added compatibility with noUnusedLocals
-
-5.0.4
-Added compatibility with noUnusedParameters
-
-5.0.3
-Fixed missing arrow in popovers
-
-5.0.2
-Fixed circular dependencies error.
-
-5.0.1
-Fixed for imgPath in .scss
-
-5.0.0
-Version 5.0.0 brings brings compatibility with new Angular 5.0 and CLI 1.5. Except for that new update include Bootstrap 4 Beta 2 assets.
-
-What's new in Bootstrap 4 beta-2:
-
-Restored `.offset-*` classes
-Switched Breadcrumbs from `float` to Flexbox
-Dropped support for Bower
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Bold.eot b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Bold.eot
deleted file mode 100755
index b73776ee..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Bold.eot and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Bold.ttf b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Bold.ttf
deleted file mode 100755
index 68822caf..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Bold.ttf and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Bold.woff b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Bold.woff
deleted file mode 100755
index 1f75afdc..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Bold.woff and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Bold.woff2 b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Bold.woff2
deleted file mode 100755
index 350d1c3a..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Bold.woff2 and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Light.eot b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Light.eot
deleted file mode 100755
index 072cdc48..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Light.eot and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Light.ttf b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Light.ttf
deleted file mode 100755
index aa453407..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Light.ttf and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Light.woff b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Light.woff
deleted file mode 100755
index 3480c6c8..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Light.woff and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Light.woff2 b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Light.woff2
deleted file mode 100755
index 9a4d98c4..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Light.woff2 and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Medium.eot b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Medium.eot
deleted file mode 100755
index f9ad9956..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Medium.eot and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Medium.ttf b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Medium.ttf
deleted file mode 100755
index a3c1a1f1..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Medium.ttf and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Medium.woff b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Medium.woff
deleted file mode 100755
index 1186773f..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Medium.woff and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Medium.woff2 b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Medium.woff2
deleted file mode 100755
index d10a5926..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Medium.woff2 and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Regular.eot b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Regular.eot
deleted file mode 100755
index 9b5e8e41..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Regular.eot and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Regular.ttf b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Regular.ttf
deleted file mode 100755
index 0e58508a..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Regular.ttf and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Regular.woff b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Regular.woff
deleted file mode 100755
index f823258a..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Regular.woff and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Regular.woff2 b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Regular.woff2
deleted file mode 100755
index b7082ef3..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Regular.woff2 and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Thin.eot b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Thin.eot
deleted file mode 100755
index 2284a3b3..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Thin.eot and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Thin.ttf b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Thin.ttf
deleted file mode 100755
index 8779333b..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Thin.ttf and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Thin.woff b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Thin.woff
deleted file mode 100755
index 2a98c1e4..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Thin.woff and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Thin.woff2 b/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Thin.woff2
deleted file mode 100755
index a38025a1..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/font/roboto/Roboto-Thin.woff2 and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/free/badge/_badge.scss b/projects/angular-bootstrap-md/src/lib/free/badge/_badge.scss
deleted file mode 100755
index 43ad465a..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/badge/_badge.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-// Badges
-.badge {
- box-shadow: $z-depth-1;
- border-radius: $border-radius-base;
- color: $white !important;
-}
-.badge-pill {
- border-radius: $badge-pill-border-radius;
- padding-right: $badge-pill-padding-x;
- padding-left: $badge-pill-padding-x;
-}
-@each $name, $color in $basic-mdb-colors {
- @include make-badge($name, $color);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/badge/badge-module.scss b/projects/angular-bootstrap-md/src/lib/free/badge/badge-module.scss
deleted file mode 100644
index 708d6b3a..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/badge/badge-module.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-@import '../../assets/scss/core/mixins';
-@import '../../assets/scss/core/colors';
-@import '../../assets/scss/core/variables';
-
-@import 'badge';
diff --git a/projects/angular-bootstrap-md/src/lib/free/badge/badge.module.ts b/projects/angular-bootstrap-md/src/lib/free/badge/badge.module.ts
deleted file mode 100644
index 9ba39f1a..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/badge/badge.module.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { MDBBadgeComponent } from './mdb-badge.component';
-import { NgModule } from '@angular/core';
-
-
-@NgModule({
- declarations: [MDBBadgeComponent],
- exports: [MDBBadgeComponent]
-})
-
-export class BadgeModule {
-
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/badge/index.ts b/projects/angular-bootstrap-md/src/lib/free/badge/index.ts
deleted file mode 100644
index 8434b297..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/badge/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { BadgeModule } from './badge.module';
-export { MDBBadgeComponent } from './mdb-badge.component';
diff --git a/projects/angular-bootstrap-md/src/lib/free/badge/mdb-badge.component.html b/projects/angular-bootstrap-md/src/lib/free/badge/mdb-badge.component.html
deleted file mode 100644
index 01a1c5f1..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/badge/mdb-badge.component.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/badge/mdb-badge.component.ts b/projects/angular-bootstrap-md/src/lib/free/badge/mdb-badge.component.ts
deleted file mode 100644
index bd05b660..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/badge/mdb-badge.component.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import {
- Component,
- ElementRef,
- HostBinding,
- Input,
- OnInit,
- Renderer2,
- ViewEncapsulation,
- ChangeDetectionStrategy,
-} from '@angular/core';
-
-@Component({
- selector: 'mdb-badge',
- templateUrl: './mdb-badge.component.html',
- styleUrls: ['./badge-module.scss'],
- encapsulation: ViewEncapsulation.None,
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class MDBBadgeComponent implements OnInit {
- @Input() @HostBinding('class.badge-default') default: boolean;
- @Input() @HostBinding('class.badge-primary') primary: boolean;
- @Input() @HostBinding('class.badge-success') success: boolean;
- @Input() @HostBinding('class.badge-info') info: boolean;
- @Input() @HostBinding('class.badge-warning') warning: boolean;
- @Input() @HostBinding('class.badge-danger') danger: boolean;
- @Input() @HostBinding('class.badge-pill') pill: boolean;
-
- @Input() classInside: string;
-
- @Input() color: string;
- @Input() class: string;
-
- constructor(private _el: ElementRef, private _renderer: Renderer2) {}
-
- ngOnInit() {
- this._renderer.addClass(this._el.nativeElement, 'badge');
- if (this.color) {
- const customClassArr = this.color.split(' ');
-
- customClassArr.forEach((el: string) => {
- this._renderer.addClass(this._el.nativeElement, el);
- });
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/_breadcrumbs.scss b/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/_breadcrumbs.scss
deleted file mode 100644
index 226b686c..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/_breadcrumbs.scss
+++ /dev/null
@@ -1,36 +0,0 @@
-.breadcrumb-item {
- cursor: pointer;
- &.active {
- color: #6c757d !important;
- > .breadcrumb-item {
- cursor: default;
- }
- }
-}
-.light-font {
- .breadcrumb-item {
- &:before {
- color: #fff;
- }
- &.active {
- color: #cfd8dc !important;
- > .breadcrumb-item {
- cursor: default;
- }
- }
- }
-}
-
-.dark-font {
- .breadcrumb-item {
- &:before {
- color: #000;
- }
- &.active {
- color: #455a64 !important;
- > .breadcrumb-item {
- cursor: default;
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/breadcrumb.module.ts b/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/breadcrumb.module.ts
deleted file mode 100644
index 711dbbde..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/breadcrumb.module.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { CommonModule } from '@angular/common';
-import { MdbBreadcrumbComponent } from './mdb-breadcrumb.component';
-import { MdbBreadcrumbItemComponent } from './mdb-breadcrumb-item.component';
-import { NgModule } from '@angular/core';
-
-
-@NgModule({
- imports: [CommonModule],
- declarations: [MdbBreadcrumbComponent, MdbBreadcrumbItemComponent],
- exports: [MdbBreadcrumbComponent, MdbBreadcrumbItemComponent]
-})
-
-export class BreadcrumbModule {
-
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/breadcrumbs-module.scss b/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/breadcrumbs-module.scss
deleted file mode 100644
index 7acc045b..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/breadcrumbs-module.scss
+++ /dev/null
@@ -1 +0,0 @@
-@import 'breadcrumbs';
diff --git a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/index.ts b/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/index.ts
deleted file mode 100644
index 453cde98..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export { MdbBreadcrumbComponent } from './mdb-breadcrumb.component';
-export { MdbBreadcrumbItemComponent } from './mdb-breadcrumb-item.component';
-export { BreadcrumbModule } from './breadcrumb.module';
diff --git a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/mdb-breadcrumb-item.component.html b/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/mdb-breadcrumb-item.component.html
deleted file mode 100644
index af0fb016..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/mdb-breadcrumb-item.component.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/mdb-breadcrumb-item.component.ts b/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/mdb-breadcrumb-item.component.ts
deleted file mode 100644
index 8d9d3dc6..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/mdb-breadcrumb-item.component.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { Component, ElementRef, Input, OnInit, Renderer2, ViewEncapsulation } from '@angular/core';
-
-@Component({
- selector: 'mdb-breadcrumb-item',
- templateUrl: './mdb-breadcrumb-item.component.html',
- styleUrls: ['./_breadcrumbs.scss'],
- encapsulation: ViewEncapsulation.None,
-})
-export class MdbBreadcrumbItemComponent implements OnInit {
- @Input() fontWeight: string;
-
- constructor(private _el: ElementRef, private _renderer: Renderer2) {}
-
- ngOnInit() {
- this._renderer.addClass(this._el.nativeElement, 'breadcrumb-item');
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/mdb-breadcrumb.component.html b/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/mdb-breadcrumb.component.html
deleted file mode 100644
index 1bd7c934..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/mdb-breadcrumb.component.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/mdb-breadcrumb.component.ts b/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/mdb-breadcrumb.component.ts
deleted file mode 100644
index 406343f0..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/breadcrumbs/mdb-breadcrumb.component.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
-
-@Component({
- selector: 'mdb-breadcrumb',
- templateUrl: './mdb-breadcrumb.component.html',
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class MdbBreadcrumbComponent {
- @Input() customClass: string;
- @Input() textTransform: string;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/buttons/_buttons.scss b/projects/angular-bootstrap-md/src/lib/free/buttons/_buttons.scss
deleted file mode 100755
index ea954b07..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/buttons/_buttons.scss
+++ /dev/null
@@ -1,208 +0,0 @@
-// Buttons
-.btn {
- box-shadow: $z-depth-1;
- @include button-size($btn-padding-y-basic, $btn-padding-x-basic, $btn-font-size-basic);
- transition: $btn-transition;
- margin: $btn-margin-basic;
- border: 0;
- border-radius: $border-radius-base;
- cursor: pointer;
- text-transform: uppercase;
- white-space: normal;
- word-wrap: break-word;
- color: inherit;
- &:hover,
- &:active,
- &:focus {
- box-shadow: $z-depth-1-half;
- outline: 0;
- }
- &:not([disabled]):not(.disabled):active,
- &:not([disabled]):not(.disabled).active {
- box-shadow: $z-depth-1-half;
- }
- .fas,
- .fab,
- .far {
- position: relative;
- font-size: $btn-icon-basic;
- &.right {
- margin-left: $btn-icon-margin;
- }
- &.left {
- margin-right: $btn-icon-margin;
- }
- }
- &.btn-lg {
- @include button-size($btn-padding-y-large, $btn-padding-x-large, $btn-font-size-large);
- .fas,
- .fab,
- .far {
- font-size: $btn-icon-large;
- }
- }
- &.btn-md {
- @include button-size($btn-padding-y-medium, $btn-padding-x-medium, $btn-font-size-medium);
- .fas,
- .fab,
- .far {
- font-size: $btn-icon-medium;
- }
- }
- &.btn-sm {
- @include button-size($btn-padding-y-small, $btn-padding-x-small, $btn-font-size-small);
- .fas,
- .fab,
- .far {
- font-size: $btn-icon-small;
- }
- }
- &.btn-tb {
- padding: $btn-tb-padding-y $btn-tb-padding-x;
- }
- &.disabled,
- &:disabled {
- &:active,
- &:focus,
- &:hover {
- box-shadow: $z-depth-1;
- }
- }
- &.btn-block {
- margin: inherit;
- }
- &.btn-link {
- color: #000;
- box-shadow: none;
- background-color: transparent;
- &:active,
- &:focus,
- &:hover {
- box-shadow: none !important;
- background-color: transparent;
- }
- }
- &[class*='btn-outline-'] {
- padding-top: $btn-outline-padding-y-basic;
- padding-bottom: $btn-outline-padding-y-basic;
- &.btn-lg {
- padding-top: $btn-outline-padding-y-large;
- padding-bottom: $btn-outline-padding-y-large;
- }
- &.btn-md {
- padding-top: $btn-outline-padding-y-medium;
- padding-bottom: $btn-outline-padding-y-medium;
- }
- &.btn-sm {
- padding-top: $btn-outline-padding-y-small;
- padding-bottom: $btn-outline-padding-y-small;
- }
- }
-}
-.btn-group {
- .btn {
- margin: 0;
- }
-}
-// Overwrite default button icon size
-.btn,
-.btn-floating {
- .fa-lg {
- font-size: 1.33333em !important;
- }
-
- .fa-xs {
- font-size: 0.75em !important;
- }
-
- .fa-sm {
- font-size: 0.875em !important;
- }
-
- .fa-1x {
- font-size: 1em !important;
- }
-
- .fa-2x {
- font-size: 2em !important;
- }
-
- .fa-3x {
- font-size: 3em !important;
- }
-
- .fa-4x {
- font-size: 4em !important;
- }
-
- .fa-5x {
- font-size: 5em !important;
- }
-
- .fa-6x {
- font-size: 6em !important;
- }
-
- .fa-7x {
- font-size: 7em !important;
- }
-
- .fa-8x {
- font-size: 8em !important;
- }
-
- .fa-9x {
- font-size: 9em !important;
- }
-
- .fa-10x {
- font-size: 10em !important;
- }
-}
-@each $btn_name, $color_value in $mdb-colors {
- @include make-button($btn_name, $color_value);
- @include make-outline-button($btn_name, $color_value);
-}
-.btn-warning:not(:disabled):not(.disabled).active,
-.btn-warning:not(:disabled):not(.disabled):active,
-.show > .btn-warning.dropdown-toggle {
- color: $white-base;
-}
-
-// Gradient buttons
-@each $name, $val in $gradients {
- @include make-gradient-button($name, $val);
-}
-
-// Angular styles
-
-.btn {
- mdb-icon {
- position: relative;
- font-size: $btn-icon-basic;
- &.right {
- margin-left: $btn-icon-margin;
- }
- &.left {
- margin-right: $btn-icon-margin;
- }
- }
- &.btn-lg {
- @include button-size($btn-padding-y-large, $btn-padding-x-large, $btn-font-size-large);
- mdb-icon {
- font-size: $btn-icon-large;
- }
- }
- &.btn-md {
- @include button-size($btn-padding-y-medium, $btn-padding-x-medium, $btn-font-size-medium);
- mdb-icon {
- font-size: $btn-icon-medium;
- }
- }
- &.btn-sm {
- @include button-size($btn-padding-y-small, $btn-padding-x-small, $btn-font-size-small);
- mdb-icon {
- font-size: $btn-icon-small;
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/buttons/buttons-module.scss b/projects/angular-bootstrap-md/src/lib/free/buttons/buttons-module.scss
deleted file mode 100644
index f8d74794..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/buttons/buttons-module.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-@import '../../assets/scss/core/mixins';
-@import '../../assets/scss/core/colors';
-@import '../../assets/scss/core/variables';
-
-
-@import 'buttons';
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/buttons/buttons.directive.ts b/projects/angular-bootstrap-md/src/lib/free/buttons/buttons.directive.ts
deleted file mode 100644
index d930b092..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/buttons/buttons.directive.ts
+++ /dev/null
@@ -1,194 +0,0 @@
-import {
- Component,
- ElementRef,
- Input,
- OnInit,
- Renderer2,
- ViewEncapsulation,
- SimpleChanges,
- OnChanges,
-} from '@angular/core';
-
-@Component({
- // tslint:disable-next-line:component-selector
- selector: '[mdbBtn]',
- template: ' ',
- styleUrls: ['./buttons-module.scss'],
- encapsulation: ViewEncapsulation.None,
-})
-// tslint:disable-next-line:component-class-suffix
-export class MdbBtnDirective implements OnInit, OnChanges {
- @Input() color = '';
- @Input() rounded = false;
- @Input() gradient = '';
- @Input() outline = false;
- @Input() flat = false;
- @Input() size = '';
- @Input() block = false;
- @Input() floating = false;
-
- public simpleChange: string;
- public simpleChangeValue: string;
-
- private colorClass: string;
- private gradientClass: string;
- private outlineClass: string;
- private flatClass: string;
- private roundedClass: string;
- private sizeClass: string;
- private blockClass: string;
- private floatingClass: string;
-
- constructor(private el: ElementRef, private renderer: Renderer2) {}
-
- ngOnInit() {
- this.colorClass = 'btn-' + this.color;
- this.gradientClass = this.gradient + '-gradient';
- this.outlineClass = 'btn-outline-' + this.color;
- this.flatClass = 'btn-flat';
- this.roundedClass = 'btn-rounded';
- this.sizeClass = 'btn-' + this.size;
- this.blockClass = 'btn-block';
- this.floatingClass = 'btn-floating';
- this.renderer.addClass(this.el.nativeElement, 'btn');
-
- this.initClasses();
- }
-
- ngOnChanges(changes: SimpleChanges) {
- if (changes.color) {
- this.renderer.removeClass(this.el.nativeElement, this.colorClass);
- if (this.color && this.color !== '') {
- this.colorClass = 'btn-' + this.color;
- this.renderer.addClass(this.el.nativeElement, this.colorClass);
- }
-
- if (this.outline) {
- const currentOutlineClass = this.outlineClass;
- this.outlineClass = 'btn-outline-' + this.color;
- this.renderer.removeClass(this.el.nativeElement, currentOutlineClass);
- this.renderer.addClass(this.el.nativeElement, this.outlineClass);
- }
- }
- if (changes.gradient) {
- this.renderer.removeClass(this.el.nativeElement, this.gradientClass);
- if (this.gradient !== '') {
- this.gradientClass = this.gradient + '-gradient';
- this.renderer.addClass(this.el.nativeElement, this.gradientClass);
- }
- }
- if (changes.outline) {
- if (!this.outline) {
- this.renderer.removeClass(this.el.nativeElement, this.outlineClass);
- }
- if (this.outline) {
- this.renderer.removeClass(this.el.nativeElement, this.colorClass);
- this.renderer.addClass(this.el.nativeElement, this.outlineClass);
- }
- this.outlineClass = 'btn-outline-' + this.color;
- }
- if (changes.flat) {
- this.renderer.removeClass(this.el.nativeElement, this.flatClass);
- if (this.flat) {
- if (this.color) {
- this.renderer.removeClass(this.el.nativeElement, this.colorClass);
- }
- if (this.gradient) {
- this.renderer.removeClass(this.el.nativeElement, this.gradientClass);
- }
- if (this.outline) {
- this.renderer.removeClass(this.el.nativeElement, this.outlineClass);
- }
- if (this.rounded) {
- this.renderer.removeClass(this.el.nativeElement, this.roundedClass);
- }
- this.renderer.addClass(this.el.nativeElement, this.flatClass);
- }
- }
-
- if (changes.rounded) {
- this.renderer.removeClass(this.el.nativeElement, this.roundedClass);
- if (this.rounded) {
- this.roundedClass = 'btn-rounded';
- this.renderer.addClass(this.el.nativeElement, this.roundedClass);
- }
- }
- if (changes.size) {
- this.renderer.removeClass(this.el.nativeElement, this.sizeClass);
- if (this.size !== '') {
- this.sizeClass = 'btn-' + this.size;
- this.renderer.addClass(this.el.nativeElement, this.sizeClass);
- }
- }
- if (changes.block) {
- this.renderer.removeClass(this.el.nativeElement, this.blockClass);
- if (this.block) {
- this.blockClass = 'btn-block';
- this.renderer.addClass(this.el.nativeElement, this.blockClass);
- }
- }
- if (changes.floating) {
- if (!this.floating) {
- this.renderer.removeClass(this.el.nativeElement, this.floatingClass);
- this.renderer.addClass(this.el.nativeElement, 'btn');
- }
-
- if (this.floating) {
- this.floatingClass = 'btn-floating';
- this.renderer.addClass(this.el.nativeElement, this.floatingClass);
- this.renderer.removeClass(this.el.nativeElement, 'btn');
- }
- }
- }
-
- initClasses() {
- if (this.color !== '') {
- this.renderer.addClass(this.el.nativeElement, this.colorClass);
- }
-
- if (this.rounded) {
- this.renderer.addClass(this.el.nativeElement, this.roundedClass);
- }
-
- if (this.gradient) {
- if (this.color !== '') {
- this.renderer.removeClass(this.el.nativeElement, this.colorClass);
- }
- this.renderer.addClass(this.el.nativeElement, this.gradientClass);
- }
-
- if (this.outline) {
- this.renderer.removeClass(this.el.nativeElement, this.colorClass);
- this.renderer.addClass(this.el.nativeElement, this.outlineClass);
- }
-
- if (this.flat) {
- if (this.color) {
- this.renderer.removeClass(this.el.nativeElement, this.colorClass);
- }
- if (this.gradient) {
- this.renderer.removeClass(this.el.nativeElement, this.gradientClass);
- }
- if (this.outline) {
- this.renderer.removeClass(this.el.nativeElement, this.outlineClass);
- }
- if (this.rounded) {
- this.renderer.removeClass(this.el.nativeElement, this.roundedClass);
- }
- this.renderer.addClass(this.el.nativeElement, this.flatClass);
- }
-
- if (this.size) {
- this.renderer.addClass(this.el.nativeElement, this.sizeClass);
- }
-
- if (this.block) {
- this.renderer.addClass(this.el.nativeElement, this.blockClass);
- }
-
- if (this.floating) {
- this.renderer.addClass(this.el.nativeElement, this.floatingClass);
- this.renderer.removeClass(this.el.nativeElement, 'btn');
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/buttons/buttons.module.ts b/projects/angular-bootstrap-md/src/lib/free/buttons/buttons.module.ts
deleted file mode 100755
index c38e0f71..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/buttons/buttons.module.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { MdbBtnDirective } from './buttons.directive';
-import { NgModule, ModuleWithProviders } from '@angular/core';
-
-import { ButtonCheckboxDirective } from './checkbox.directive';
-import { ButtonRadioDirective } from './radio.directive';
-import { FixedButtonCaptionDirective } from './fixed-caption.directive';
-
-@NgModule({
- declarations: [
- ButtonCheckboxDirective,
- ButtonRadioDirective,
- MdbBtnDirective,
- FixedButtonCaptionDirective,
- ],
- exports: [
- ButtonCheckboxDirective,
- ButtonRadioDirective,
- MdbBtnDirective,
- FixedButtonCaptionDirective,
- ],
-})
-export class ButtonsModule {
- public static forRoot(): ModuleWithProviders {
- return { ngModule: ButtonsModule, providers: [] };
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/buttons/checkbox.directive.ts b/projects/angular-bootstrap-md/src/lib/free/buttons/checkbox.directive.ts
deleted file mode 100755
index 925e4057..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/buttons/checkbox.directive.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import { Directive, HostBinding, HostListener, Input, OnInit, forwardRef } from '@angular/core';
-import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
-
-export const CHECKBOX_CONTROL_VALUE_ACCESSOR: any = {
- provide: NG_VALUE_ACCESSOR,
- // tslint:disable-next-line: no-use-before-declare
- useExisting: forwardRef(() => ButtonCheckboxDirective),
- multi: true,
-};
-
-/**
- * Add checkbox functionality to any element
- */
-@Directive({ selector: '[mdbCheckbox]', providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR] })
-export class ButtonCheckboxDirective implements ControlValueAccessor, OnInit {
- /** Truthy value, will be set to ngModel */
- @Input() public btnCheckboxTrue: any = true;
- /** Falsy value, will be set to ngModel */
- @Input() public btnCheckboxFalse: any = false;
-
- @HostBinding('class.active') public state = false;
-
- protected value: any;
- protected isDisabled: boolean;
-
- protected onChange: any = Function.prototype;
- protected onTouched: any = Function.prototype;
-
- // view -> model
- @HostListener('click')
- public onClick(): void {
- if (this.isDisabled) {
- return;
- }
-
- this.toggle(!this.state);
- this.onChange(this.value);
- }
-
- public ngOnInit(): any {
- this.toggle(this.trueValue === this.value);
- }
-
- protected get trueValue(): boolean {
- return typeof this.btnCheckboxTrue !== 'undefined' ? this.btnCheckboxTrue : true;
- }
-
- protected get falseValue(): boolean {
- return typeof this.btnCheckboxFalse !== 'undefined' ? this.btnCheckboxFalse : false;
- }
-
- public toggle(state: boolean): void {
- this.state = state;
- this.value = this.state ? this.trueValue : this.falseValue;
- }
-
- // ControlValueAccessor
- // model -> view
- public writeValue(value: any): void {
- this.state = this.trueValue === value;
- this.value = value ? this.trueValue : this.falseValue;
- }
-
- public setDisabledState(isDisabled: boolean): void {
- this.isDisabled = isDisabled;
- }
-
- public registerOnChange(fn: (_: any) => {}): void {
- this.onChange = fn;
- }
-
- public registerOnTouched(fn: () => {}): void {
- this.onTouched = fn;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/buttons/fixed-caption.directive.ts b/projects/angular-bootstrap-md/src/lib/free/buttons/fixed-caption.directive.ts
deleted file mode 100644
index 5d4b6af6..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/buttons/fixed-caption.directive.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';
-
-@Directive({ selector: '[mdbFixedCaption]' })
-export class FixedButtonCaptionDirective implements OnInit {
- @Input('mdbFixedCaption') caption: string;
- // tslint:disable-next-line:no-input-rename
- @Input('collapseButton') collapseButtonActivator: any;
- private paragraphEl: any;
- constructor(private renderer: Renderer2, private el: ElementRef) {}
-
- ngOnInit() {
- this.createCaptionElement();
- }
-
- createCaptionElement() {
- const paragraph = this.renderer.createElement('p');
- const text = this.renderer.createText(this.caption);
- this.renderer.appendChild(paragraph, text);
- this.renderer.appendChild(this.el.nativeElement, paragraph);
- this.paragraphEl = paragraph;
- }
-
- showCaption() {
- this.renderer.addClass(this.paragraphEl, 'fixed-button-caption');
- this.renderer.setStyle(this.paragraphEl, 'position', 'absolute');
- this.renderer.setStyle(this.paragraphEl, 'right', `60px`);
- this.renderer.setStyle(this.paragraphEl, 'top', '10px');
- this.renderer.setStyle(this.el.nativeElement, 'overflow', 'visible');
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/buttons/index.ts b/projects/angular-bootstrap-md/src/lib/free/buttons/index.ts
deleted file mode 100755
index aff23464..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/buttons/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export { MdbBtnDirective } from './buttons.directive';
-export { ButtonsModule } from './buttons.module';
-export { ButtonRadioDirective } from './radio.directive';
-export { ButtonCheckboxDirective } from './checkbox.directive';
-export { FixedButtonCaptionDirective } from './fixed-caption.directive';
diff --git a/projects/angular-bootstrap-md/src/lib/free/buttons/licens.md b/projects/angular-bootstrap-md/src/lib/free/buttons/licens.md
deleted file mode 100755
index 68dc12fd..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/buttons/licens.md
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/valor-software/ngx-bootstrap/blob/development/LICENSE
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/buttons/radio.directive.ts b/projects/angular-bootstrap-md/src/lib/free/buttons/radio.directive.ts
deleted file mode 100755
index 23a0908f..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/buttons/radio.directive.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-import {
- Directive,
- ElementRef,
- HostBinding,
- forwardRef,
- HostListener,
- Input,
- OnInit,
- Renderer2,
-} from '@angular/core';
-import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
-
-export const RADIO_CONTROL_VALUE_ACCESSOR: any = {
- provide: NG_VALUE_ACCESSOR,
- // tslint:disable-next-line: no-use-before-declare
- useExisting: forwardRef(() => ButtonRadioDirective),
- multi: true,
-};
-
-/**
- * Create radio buttons or groups of buttons.
- * A value of a selected button is bound to a variable specified via ngModel.
- */
-@Directive({ selector: '[mdbRadio]', providers: [RADIO_CONTROL_VALUE_ACCESSOR] })
-export class ButtonRadioDirective implements ControlValueAccessor, OnInit {
- public onChange: any = Function.prototype;
- public onTouched: any = Function.prototype;
-
- radioElementsArray: Array = [];
- /** Radio button value, will be set to `ngModel` */
- @Input() public mdbRadio: any;
- /** If `true` — radio button can be unchecked */
- @Input() public uncheckable: boolean;
- /** Current value of radio component or group */
- @Input() public value: any;
-
- @HostBinding('class.active')
- public get isActive(): boolean {
- return this.mdbRadio === this.value;
- }
-
- @HostListener('click', ['$event'])
- public onClick(event?: any): void {
- try {
- this.el.nativeElement.parentElement.childNodes.forEach((element: any) => {
- this.radioElementsArray.push(element);
- });
- this.radioElementsArray.forEach(element => {
- this.renderer.removeClass(element, 'active');
- });
- this.renderer.addClass(event.target, 'active');
- } catch (error) {}
- if (this.el.nativeElement.attributes.disabled) {
- return;
- }
-
- if (this.uncheckable && this.mdbRadio === this.value) {
- this.value = undefined;
- } else {
- this.value = this.mdbRadio;
- }
-
- this.onTouched();
- this.onChange(this.value);
- }
-
- public constructor(protected el: ElementRef, private renderer: Renderer2) {}
-
- public ngOnInit(): void {
- this.uncheckable = typeof this.uncheckable !== 'undefined';
- }
-
- public onBlur(): void {
- this.onTouched();
- }
-
- // ControlValueAccessor
- // model -> view
- public writeValue(value: any): void {
- this.value = value;
- }
-
- public registerOnChange(fn: any): void {
- this.onChange = fn;
- }
-
- public registerOnTouched(fn: any): void {
- this.onTouched = fn;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/_cards.scss b/projects/angular-bootstrap-md/src/lib/free/cards/_cards.scss
deleted file mode 100644
index 78071f6d..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/_cards.scss
+++ /dev/null
@@ -1,47 +0,0 @@
-// Cards
-.card {
- box-shadow: $z-depth-1;
- border: 0;
- font-weight: 400;
- &[class*='border'] {
- border: 1px solid $grey-base;
- box-shadow: none;
- }
- .card-body {
- h1,
- h2,
- h3,
- h4,
- h5,
- h6 {
- font-weight: 400;
- }
- .card-title {
- a {
- transition: $md-card-link-transition;
- &:hover {
- transition: $md-card-link-transition;
- }
- }
- }
- .card-text {
- color: $md-card-text-color;
- font-size: $md-card-font-size;
- font-weight: 400;
- }
- }
- .md-form {
- label {
- font-weight: 300;
- }
- }
-}
-
-// Angular styles
-.card-text:last-child {
- margin-bottom: 1rem !important;
-}
-
-mdb-card-img img.img-fluid {
- width: 100%;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/cards-module.scss b/projects/angular-bootstrap-md/src/lib/free/cards/cards-module.scss
deleted file mode 100644
index 20adae48..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/cards-module.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-@import '../../assets/scss/core/mixins';
-@import '../../assets/scss/core/colors';
-@import '../../assets/scss/core/variables';
-
-
-@import 'cards';
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/cards.module.ts b/projects/angular-bootstrap-md/src/lib/free/cards/cards.module.ts
deleted file mode 100644
index 1642efa1..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/cards.module.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { MdbCardFooterComponent } from './mdb-card-footer.component';
-import { MdbCardTitleComponent } from './mdb-card-title.component';
-import { MdbCardTextComponent } from './mdb-card-text.component';
-import { MdbCardBodyComponent } from './mdb-card-body.component';
-import { MdbCardComponent } from './mdb-card.component';
-import { CommonModule } from '@angular/common';
-import { NgModule, ModuleWithProviders } from '@angular/core';
-import { MdbCardImageComponent } from './mdb-card-image.component';
-import { MdbCardHeaderComponent } from './mdb-card-header.component';
-
-@NgModule({
- imports: [CommonModule],
- declarations: [
- MdbCardComponent,
- MdbCardBodyComponent,
- MdbCardImageComponent,
- MdbCardTextComponent,
- MdbCardTitleComponent,
- MdbCardFooterComponent,
- MdbCardHeaderComponent,
- ],
- exports: [
- MdbCardComponent,
- MdbCardBodyComponent,
- MdbCardImageComponent,
- MdbCardTextComponent,
- MdbCardTitleComponent,
- MdbCardFooterComponent,
- MdbCardHeaderComponent,
- ],
-})
-export class CardsModule {
- public static forRoot(): ModuleWithProviders {
- return { ngModule: CardsModule, providers: [] };
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/index.ts b/projects/angular-bootstrap-md/src/lib/free/cards/index.ts
deleted file mode 100644
index 120e5546..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/index.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export { CardsModule } from './cards.module';
-export { MdbCardComponent } from './mdb-card.component';
-export { MdbCardBodyComponent } from './mdb-card-body.component';
-export { MdbCardImageComponent } from './mdb-card-image.component';
-export { MdbCardTextComponent } from './mdb-card-text.component';
-export { MdbCardTitleComponent } from './mdb-card-title.component';
-export { MdbCardFooterComponent } from './mdb-card-footer.component';
-export { MdbCardHeaderComponent } from './mdb-card-header.component';
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-body.component.ts b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-body.component.ts
deleted file mode 100644
index 024012fb..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-body.component.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import {
- Component,
- Input,
- ElementRef,
- Renderer2,
- OnInit,
- ViewEncapsulation,
- ChangeDetectionStrategy,
-} from '@angular/core';
-
-@Component({
- selector: 'mdb-card-body',
- templateUrl: './mdb-card-body.component.html',
- encapsulation: ViewEncapsulation.None,
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class MdbCardBodyComponent implements OnInit {
- @Input() class: string;
-
- @Input() set cascade(cascade: boolean) {
- if (cascade) {
- this._r.addClass(this._el.nativeElement, 'card-body-cascade');
- }
- }
-
- constructor(private _el: ElementRef, private _r: Renderer2) {}
-
- ngOnInit() {
- this._r.addClass(this._el.nativeElement, 'card-body');
- if (this.class) {
- this.class.split(' ').forEach((element: any) => {
- this._r.addClass(this._el.nativeElement, element);
- });
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-footer.component.html b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-footer.component.html
deleted file mode 100644
index 6dbc7430..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-footer.component.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-footer.component.ts b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-footer.component.ts
deleted file mode 100644
index b1c403fd..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-footer.component.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { ChangeDetectionStrategy, Component, ElementRef, OnInit, Renderer2 } from '@angular/core';
-
-@Component({
- selector: 'mdb-card-footer',
- templateUrl: './mdb-card-footer.component.html',
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class MdbCardFooterComponent implements OnInit {
- constructor(private _el: ElementRef, private _r: Renderer2) {}
-
- ngOnInit() {
- this._r.addClass(this._el.nativeElement, 'card-footer');
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-header.component.html b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-header.component.html
deleted file mode 100644
index 95a0b70b..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-header.component.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-header.component.ts b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-header.component.ts
deleted file mode 100644
index dd313d7b..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-header.component.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { Component, Input, OnInit, ElementRef, Renderer2, ChangeDetectionStrategy } from '@angular/core';
-
-@Component({
- selector: 'mdb-card-header',
- templateUrl: './mdb-card-header.component.html',
- changeDetection: ChangeDetectionStrategy.OnPush
-})
-
-export class MdbCardHeaderComponent implements OnInit {
- @Input() class: string;
- constructor(private _el: ElementRef, private _r: Renderer2) { }
-
- ngOnInit() {
- this._r.addClass(this._el.nativeElement, 'card-header');
- if (this.class) {
- this.class.split(' ').forEach((element: any) => {
- this._r.addClass(this._el.nativeElement, element);
- });
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-image.component.html b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-image.component.html
deleted file mode 100644
index de7435d4..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-image.component.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-image.component.ts b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-image.component.ts
deleted file mode 100644
index df704012..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-image.component.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
-
-@Component({
- selector: 'mdb-card-img',
- templateUrl: './mdb-card-image.component.html',
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class MdbCardImageComponent {
- @Input() src: string;
- @Input() alt: string;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-text.component.html b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-text.component.html
deleted file mode 100644
index d8afb74e..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-text.component.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-text.component.ts b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-text.component.ts
deleted file mode 100644
index c88c4fa3..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-text.component.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
-
-@Component({
- selector: 'mdb-card-text',
- templateUrl: './mdb-card-text.component.html',
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class MdbCardTextComponent {
- @Input() class: string;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-title.component.html b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-title.component.html
deleted file mode 100644
index 95a0b70b..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-title.component.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-title.component.ts b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-title.component.ts
deleted file mode 100644
index afa36013..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-title.component.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { Component, OnInit, ElementRef, Renderer2, ChangeDetectionStrategy } from '@angular/core';
-
-@Component({
- selector: 'mdb-card-title',
- templateUrl: './mdb-card-title.component.html',
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class MdbCardTitleComponent implements OnInit {
- constructor(private _el: ElementRef, private _r: Renderer2) {}
-
- ngOnInit() {
- this._r.addClass(this._el.nativeElement, 'card-title');
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card.component.html b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card.component.html
deleted file mode 100644
index 6dbc7430..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card.component.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card.component.ts b/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card.component.ts
deleted file mode 100644
index f9b3f17c..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card.component.ts
+++ /dev/null
@@ -1,82 +0,0 @@
-import {
- ChangeDetectionStrategy,
- Component,
- ElementRef,
- Input,
- OnInit,
- Renderer2,
- ViewChild,
- ViewEncapsulation,
-} from '@angular/core';
-
-@Component({
- selector: 'mdb-card',
- templateUrl: './mdb-card.component.html',
- styleUrls: ['./cards-module.scss'],
- changeDetection: ChangeDetectionStrategy.OnPush,
- encapsulation: ViewEncapsulation.None,
-})
-export class MdbCardComponent implements OnInit {
- @Input() class: string;
- @Input() cascade: boolean;
- @Input() wider: boolean;
- @Input() imageBackground: string;
-
- @ViewChild('card', { static: true }) card: ElementRef;
-
- @Input() set narrower(narrower: boolean) {
- if (narrower) {
- this._r.addClass(this._el.nativeElement, 'narrower');
- } else if (!narrower && this._el.nativeElement.classList.contains('narrower')) {
- this._r.removeClass(this._el.nativeElement, 'narrower');
- }
- }
-
- @Input() set reverse(reverse: boolean) {
- if (reverse) {
- this._r.addClass(this._el.nativeElement, 'reverse');
- } else if (!reverse && this._el.nativeElement.classList.contains('reserse')) {
- this._r.removeClass(this._el.nativeElement, 'reverse');
- }
- }
-
- @Input() set dark(dark: boolean) {
- if (dark) {
- this._r.addClass(this._el.nativeElement, 'card-dark');
- } else if (!dark && this._el.nativeElement.classList.contains('card-dark')) {
- this._r.removeClass(this._el.nativeElement, 'card-dark');
- }
- }
-
- @Input() set bgColor(color: string) {
- if (color) {
- this._r.addClass(this._el.nativeElement, color);
- }
- }
-
- @Input() set borderColor(color: string) {
- if (color) {
- this._r.addClass(this._el.nativeElement, color);
- }
- }
-
- constructor(private _el: ElementRef, private _r: Renderer2) {}
-
- ngOnInit() {
- this._r.addClass(this._el.nativeElement, 'card');
- if (this.cascade) {
- this._r.addClass(this._el.nativeElement, 'card-cascade');
- }
- if (this.wider) {
- this._r.addClass(this._el.nativeElement, 'wider');
- }
- if (this.narrower) {
- this._r.addClass(this._el.nativeElement, 'narrower');
- }
- if (this.class) {
- this.class.split(' ').forEach((element: any) => {
- this._r.addClass(this._el.nativeElement, element);
- });
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/carousel/_carousel.scss b/projects/angular-bootstrap-md/src/lib/free/carousel/_carousel.scss
deleted file mode 100644
index bf7ae651..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/carousel/_carousel.scss
+++ /dev/null
@@ -1,92 +0,0 @@
-// Carousels
-.carousel {
- .carousel-control-prev-icon,
- .carousel-control-next-icon {
- width: $carousel-control-icon-width;
- height: $carousel-control-icon-height;
- }
-
- //.carousel-control-prev-icon {
- // background-image: url('~node_modules/ng-uikit-pro-standard/assets/img/svg/arrow_left.svg');
- //}
- //
- //.carousel-control-next-icon {
- // background-image: url('~node_modules/ng-uikit-pro-standard/assets/img/svg/arrow_right.svg');
- //}
-
- .carousel-indicators {
- li {
- width: $carousel-indicators-width;
- height: $carousel-indicators-height;
- border-radius: $carousel-indicators-border-radius;
- cursor: pointer;
- }
- }
-}
-
-.carousel-fade {
- .carousel-item {
- opacity: 0;
- transition-duration: $carousel-transition-duration;
- transition-property: opacity;
- }
-
- .carousel-item.active,
- .carousel-item-next.carousel-item-left,
- .carousel-item-prev.carousel-item-right {
- opacity: 1;
- }
-
- .carousel-item-left,
- .carousel-item-right {
- &.active {
- opacity: 0;
- }
- }
-
- .carousel-item-next,
- .carousel-item-prev,
- .carousel-item.active,
- .carousel-item-left.active,
- .carousel-item-prev.active {
- transform: $carousel-item-transform;
- @supports (transform-style: preserve-3d) {
- transform: $carousel-item-transform-2;
- }
- }
-}
-
-// Angular styles
-.carousel-item.active,
-.carousel-item-next,
-.carousel-item-prev,
-.carousel-control-prev,
-.carousel-control-next {
- display: flex;
- overflow: hidden;
-}
-
-.carousel,
-.carousel-multi-item,
-.carousel-thumbnails {
- outline: none;
-}
-
-.carousel-fade .carousel-inner .carousel-item {
- opacity: 0;
- transition-property: opacity;
-}
-
-.carousel-fade .carousel-inner .active {
- opacity: 1;
- transition: all 600ms;
-}
-
-.carousel-fade .carousel-inner > .carousel-item.active,
-.carousel-fade .carousel-inner > .carousel-item.next.left,
-.carousel-fade .carousel-inner > .carousel-item.prev.right {
- opacity: 1;
- transition: all 600ms;
- -webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/carousel/carousel-module.scss b/projects/angular-bootstrap-md/src/lib/free/carousel/carousel-module.scss
deleted file mode 100644
index 489606a8..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/carousel/carousel-module.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-@import '../../assets/scss/core/mixins';
-@import '../../assets/scss/core/colors';
-@import '../../assets/scss/core/variables';
-
-
-@import 'carousel';
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/carousel/carousel.component.html b/projects/angular-bootstrap-md/src/lib/free/carousel/carousel.component.html
deleted file mode 100755
index 5c5556da..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/carousel/carousel.component.html
+++ /dev/null
@@ -1,57 +0,0 @@
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/carousel/carousel.component.ts b/projects/angular-bootstrap-md/src/lib/free/carousel/carousel.component.ts
deleted file mode 100755
index b9227c7a..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/carousel/carousel.component.ts
+++ /dev/null
@@ -1,515 +0,0 @@
-import {
- AfterViewInit,
- ChangeDetectorRef,
- Component,
- ContentChildren,
- ElementRef,
- EventEmitter,
- HostListener,
- Inject,
- Input,
- OnDestroy,
- Output,
- PLATFORM_ID,
- QueryList,
- Renderer2,
- ViewEncapsulation,
- ChangeDetectionStrategy,
-} from '@angular/core';
-
-import { isBs3 } from '../utils/ng2-bootstrap-config';
-import { SlideComponent } from './slide.component';
-import { CarouselConfig } from './carousel.config';
-import { isPlatformBrowser } from '@angular/common';
-import { LEFT_ARROW, RIGHT_ARROW } from '../utils/keyboard-navigation';
-import { takeUntil } from 'rxjs/operators';
-import { Subject } from 'rxjs';
-
-export enum Direction {
- UNKNOWN,
- NEXT,
- PREV,
-}
-
-/**
- * Base element to create carousel
- */
-@Component({
- selector: 'mdb-carousel',
- templateUrl: './carousel.component.html',
- styleUrls: ['./carousel-module.scss'],
- encapsulation: ViewEncapsulation.None,
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class CarouselComponent implements OnDestroy, AfterViewInit {
- SWIPE_ACTION = { LEFT: 'swipeleft', RIGHT: 'swiperight' };
-
- @ContentChildren(SlideComponent) _slidesList: QueryList;
- public get slides(): SlideComponent[] {
- return this._slidesList.toArray();
- }
-
- private _destroy$: Subject = new Subject();
-
- protected currentInterval: any;
- protected isPlaying: boolean;
- protected destroyed = false;
-
- protected animationEnd = true;
- protected _currentActiveSlide: number;
- protected carouselIndicators: any;
-
- isBrowser: any = false;
- @Input() public noWrap: boolean;
- @Input() public noPause: boolean;
-
- @Input() public isControls = true;
- @Input() public keyboard: boolean;
-
- @Input() public class: String = '';
- @Input() public type: String = '';
- @Input() public animation: String = '';
- @Input() activeSlideIndex: number;
- @Input() allowSwipe = true;
-
- @Output() public activeSlideChange: EventEmitter = new EventEmitter(false);
-
- @Input()
- public set activeSlide(index: number) {
- if (this._slidesList && index !== this._currentActiveSlide) {
- this._select(index);
- }
- }
-
- public get activeSlide(): number {
- return this._currentActiveSlide;
- }
-
- protected _interval: number;
-
- public checkNavigation() {
- if (this.type === 'carousel-multi-item') {
- return false;
- }
- return true;
- }
-
- public checkDots() {
- if (this.type === 'carousel-thumbnails') {
- return false;
- }
- return true;
- }
-
- getImg(slide: any) {
- return slide.el.nativeElement.querySelector('img').src;
- }
-
- @Input()
- public get interval(): number {
- return this._interval;
- }
-
- public set interval(value: number) {
- this._interval = value;
- this.restartTimer();
- }
-
- public get isBs4(): boolean {
- return !isBs3();
- }
-
- public constructor(
- config: CarouselConfig,
- protected el: ElementRef,
- @Inject(PLATFORM_ID) platformId: string,
- private cdRef: ChangeDetectorRef,
- private renderer: Renderer2
- ) {
- this.isBrowser = isPlatformBrowser(platformId);
- Object.assign(this, config);
- }
-
- public ngOnDestroy(): void {
- this.destroyed = true;
- this._destroy$.next();
- this._destroy$.complete();
- }
-
- ngAfterViewInit() {
- this.play();
- this._slidesList.changes
- .pipe(takeUntil(this._destroy$))
- .subscribe((slidesList: QueryList) => {
- this._slidesList = slidesList;
- setTimeout(() => {
- this._select(0);
- }, 0);
- });
-
- if (this.activeSlideIndex) {
- setTimeout(() => {
- this._select(this.activeSlideIndex);
- this.activeSlideChange.emit({ relatedTarget: this.activeSlide });
- }, 0);
- } else {
- setTimeout(() => {
- this._select(0);
- }, 0);
- }
-
- if (this.isControls) {
- this.carouselIndicators = this.el.nativeElement.querySelectorAll('.carousel-indicators > li');
- if (this.carouselIndicators.length && this.activeSlideIndex) {
- this.renderer.addClass(this.carouselIndicators[this.activeSlideIndex], 'active');
- } else if (this.carouselIndicators.length) {
- this.renderer.addClass(this.carouselIndicators[0], 'active');
- }
- }
- }
-
- swipe(action = this.SWIPE_ACTION.RIGHT) {
- if (this.allowSwipe) {
- if (action === this.SWIPE_ACTION.RIGHT) {
- this.previousSlide();
- this.cdRef.markForCheck();
- }
-
- if (action === this.SWIPE_ACTION.LEFT) {
- this.nextSlide();
- this.cdRef.markForCheck();
- }
- }
- }
-
- public nextSlide(force: boolean = false) {
- this.restartTimer();
- // Start next slide, pause actual slide
- const videoList = this.el.nativeElement.getElementsByTagName('video');
- const direction = Direction.NEXT;
- const indexEl = this.findNextSlideIndex(direction, force);
- if (videoList.length > 0) {
- // Check for video carousel
- for (let i = 0; i < videoList.length; i++) {
- if (i === indexEl) {
- videoList[i].play();
- } else {
- videoList[i].pause();
- }
- }
- }
- if (this.animation === 'slide') {
- this.pause();
- this.slideAnimation(this.findNextSlideIndex(Direction.NEXT, force), Direction.NEXT);
- this.cdRef.markForCheck();
- } else if (this.animation === 'fade') {
- this.pause();
- this.fadeAnimation(this.findNextSlideIndex(Direction.NEXT, force), Direction.NEXT);
- this.cdRef.markForCheck();
- } else {
- this.activeSlide = this.findNextSlideIndex(Direction.NEXT, force);
- this.cdRef.markForCheck();
- }
- if (!this.animation) {
- this.activeSlideChange.emit({ direction: 'Next', relatedTarget: this.activeSlide });
- }
- }
-
- public previousSlide(force: boolean = false): void {
- this.restartTimer();
- // Start previous slide, pause actual slide
- const videoList = this.el.nativeElement.getElementsByTagName('video');
- const direction = Direction.PREV;
- const indexel = this.findNextSlideIndex(direction, force);
- if (videoList.length > 0) {
- // Check for video carousel
- for (let i = 0; i < videoList.length; i++) {
- if (i === indexel) {
- videoList[i].play();
- } else {
- videoList[i].pause();
- }
- }
- }
-
- if (this.animation === 'slide') {
- this.pause();
- this.slideAnimation(this.findNextSlideIndex(direction, force), direction);
- this.cdRef.markForCheck();
- } else if (this.animation === 'fade') {
- this.pause();
- this.fadeAnimation(this.findNextSlideIndex(Direction.PREV, force), Direction.PREV);
- this.cdRef.markForCheck();
- } else {
- this.activeSlide = this.findNextSlideIndex(Direction.PREV, force);
- this.cdRef.markForCheck();
- }
- if (!this.animation) {
- this.activeSlideChange.emit({ direction: 'Prev', relatedTarget: this.activeSlide });
- }
- }
-
- protected fadeAnimation(goToIndex: number, direction?: any) {
- const goToSlide = this.slides[goToIndex];
-
- if (this.animationEnd) {
- this.animationEnd = false;
-
- goToSlide.directionNext = true;
- if (this.isBrowser) {
- setTimeout(() => {
- const previous = this.slides[this._currentActiveSlide].el.nativeElement;
-
- this.renderer.setStyle(previous, 'opacity', '0');
- this.renderer.setStyle(previous, 'transition', 'all 600ms');
- this.renderer.setStyle(previous, 'display', 'block');
-
- this.renderer.setStyle(goToSlide.el.nativeElement, 'display', 'block');
- this.renderer.setStyle(goToSlide.el.nativeElement, 'opacity', '1');
- this.renderer.setStyle(goToSlide.el.nativeElement, 'transition', 'all 600ms');
-
- if (direction === 1) {
- this.activeSlideChange.emit({ direction: 'Next', relatedTarget: this.activeSlide });
- } else if (direction === 2) {
- this.activeSlideChange.emit({ direction: 'Prev', relatedTarget: this.activeSlide });
- }
-
- goToSlide.directionNext = false;
- this.animationEnd = true;
- this.activeSlide = goToIndex;
- this.activeSlideChange.emit({ direction: 'Next', relatedTarget: this.activeSlide });
- this.play();
- this.cdRef.markForCheck();
- }, 0);
- }
- }
- }
-
- protected slideAnimation(goToIndex: number, direction: any) {
- const currentSlide = this.slides[this._currentActiveSlide];
- const goToSlide = this.slides[goToIndex];
-
- if (this.animationEnd) {
- if (direction === Direction.NEXT) {
- this.animationEnd = false;
- goToSlide.directionNext = true;
- if (this.isBrowser) {
- setTimeout(() => {
- goToSlide.directionLeft = true;
- currentSlide.directionLeft = true;
- this.cdRef.markForCheck();
- }, 100);
- }
- }
-
- if (direction === Direction.PREV) {
- this.animationEnd = false;
-
- goToSlide.directionPrev = true;
- if (this.isBrowser) {
- setTimeout(() => {
- goToSlide.directionRight = true;
- currentSlide.directionRight = true;
- this.cdRef.markForCheck();
- }, 100);
- }
- }
-
- if (this.isBrowser) {
- setTimeout(() => {
- goToSlide.directionLeft = false;
- goToSlide.directionNext = false;
- currentSlide.directionLeft = false;
- currentSlide.directionNext = false;
- goToSlide.directionRight = false;
- goToSlide.directionPrev = false;
- currentSlide.directionRight = false;
- currentSlide.directionPrev = false;
-
- this.animationEnd = true;
-
- this.activeSlide = goToIndex;
-
- let directionName;
- if (direction === Direction.NEXT) {
- directionName = 'Next';
- } else if (direction === Direction.PREV) {
- directionName = 'Prev';
- }
-
- this.activeSlideChange.emit({
- direction: directionName,
- relatedTarget: this.activeSlide,
- });
- this.play();
- this.cdRef.markForCheck();
- }, 700);
- }
- }
- }
-
- public selectSlide(index: number): void {
- this.pause();
- if (this.animation === 'slide') {
- if (this.activeSlide < index) {
- this.slideAnimation(index, Direction.NEXT);
- } else if (this.activeSlide > index) {
- this.slideAnimation(index, Direction.PREV);
- }
- } else if (this.animation === 'fade') {
- if (index !== this.activeSlide) {
- this.fadeAnimation(index);
- }
- } else if (!this.animation) {
- setTimeout(() => {
- const direction = index < this.activeSlide ? 'Prev' : 'Next';
- this._select(index);
- this.activeSlideChange.emit({
- direction,
- relatedTarget: this.activeSlide,
- });
- }, 0);
- }
- this.play();
- }
-
- @HostListener('mouseleave') play() {
- if (!this.isPlaying) {
- this.isPlaying = true;
- this.restartTimer();
- this.cdRef.markForCheck();
- }
- }
-
- @HostListener('mouseenter') pause() {
- if (!this.noPause) {
- this.isPlaying = false;
- this.resetTimer();
- this.cdRef.markForCheck();
- }
- }
-
- public getCurrentSlideIndex(): number {
- return this.slides.findIndex((slide: SlideComponent) => slide.active);
- }
-
- public isLast(index: number): boolean {
- return index + 1 >= this.slides.length;
- }
-
- private findNextSlideIndex(direction: Direction, force: boolean): any {
- let nextSlideIndex = 0;
-
- if (!force && (this.isLast(this.activeSlide) && direction !== Direction.PREV && this.noWrap)) {
- return void 0;
- }
-
- switch (direction) {
- case Direction.NEXT:
- nextSlideIndex = !this.isLast(this._currentActiveSlide)
- ? this._currentActiveSlide + 1
- : !force && this.noWrap
- ? this._currentActiveSlide
- : 0;
- break;
- case Direction.PREV:
- nextSlideIndex =
- this._currentActiveSlide > 0
- ? this._currentActiveSlide - 1
- : !force && this.noWrap
- ? this._currentActiveSlide
- : this.slides.length - 1;
- break;
- default:
- throw new Error('Unknown direction');
- }
- return nextSlideIndex;
- }
-
- private _select(index: number): void {
- if (isNaN(index)) {
- this.pause();
- return;
- }
- const currentSlide = this.slides[this._currentActiveSlide];
- if (currentSlide) {
- currentSlide.active = false;
- }
- const nextSlide = this.slides[index];
- if (nextSlide) {
- this._currentActiveSlide = index;
- nextSlide.active = true;
- this.activeSlide = index;
- }
- this.cdRef.markForCheck();
- }
-
- private restartTimer(): any {
- this.resetTimer();
- if (this.isBrowser) {
- const interval = +this.interval;
- if (!isNaN(interval) && interval > 0) {
- this.currentInterval = setInterval(() => {
- const nInterval = +this.interval;
- if (this.isPlaying && !isNaN(this.interval) && nInterval > 0 && this.slides.length) {
- this.nextSlide();
- } else {
- this.pause();
- }
- }, interval);
- }
- }
- }
-
- private resetTimer(): void {
- if (this.isBrowser) {
- if (this.currentInterval) {
- clearInterval(this.currentInterval);
- this.currentInterval = void 0;
- }
- }
- }
-
- protected hasClass(el: any, className: any) {
- if (el.classList) {
- return el.classList.contains(className);
- } else {
- return !!el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)'));
- }
- }
-
- protected classAdd(el: any, className: any) {
- if (el.classList) {
- el.classList.add(className);
- } else if (!this.hasClass(el, className)) {
- el.className += ' ' + className;
- }
- }
-
- protected removeClass(el: any, className: any) {
- if (el.classList) {
- el.classList.remove(className);
- } else if (this.hasClass(el, className)) {
- const reg = new RegExp('(\\s|^)' + className + '(\\s|$)');
- el.className = el.className.replace(reg, ' ');
- }
- }
-
- @HostListener('keyup', ['$event']) keyboardControl(event: KeyboardEvent) {
- if (this.keyboard) {
- // tslint:disable-next-line: deprecation
- if (event.keyCode === RIGHT_ARROW) {
- this.nextSlide();
- }
-
- // tslint:disable-next-line: deprecation
- if (event.keyCode === LEFT_ARROW) {
- this.previousSlide();
- }
- }
- }
-
- @HostListener('click') focus() {
- this.el.nativeElement.focus();
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/carousel/carousel.config.ts b/projects/angular-bootstrap-md/src/lib/free/carousel/carousel.config.ts
deleted file mode 100755
index 21fbe1ff..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/carousel/carousel.config.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { Injectable } from '@angular/core';
-
-@Injectable()
-export class CarouselConfig {
- /** Default interval of auto changing of slides */
- public interval = 5000;
-
- /** Is loop of auto changing of slides can be paused */
- public noPause = false;
-
- /** Is slides can wrap from the last to the first slide */
- public noWrap = false;
-
- public keyboard = false;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/carousel/carousel.module.ts b/projects/angular-bootstrap-md/src/lib/free/carousel/carousel.module.ts
deleted file mode 100755
index 5f85e3f1..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/carousel/carousel.module.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { CommonModule } from '@angular/common';
-import { NgModule, ModuleWithProviders } from '@angular/core';
-
-import { CarouselComponent } from './carousel.component';
-import { SlideComponent } from './slide.component';
-import { CarouselConfig } from './carousel.config';
-import { ButtonsModule } from '../buttons/buttons.module';
-
-@NgModule({
- imports: [CommonModule, ButtonsModule],
- declarations: [SlideComponent, CarouselComponent],
- exports: [SlideComponent, CarouselComponent],
- providers: [CarouselConfig],
-})
-export class CarouselModule {
- public static forRoot(): ModuleWithProviders {
- return { ngModule: CarouselModule, providers: [] };
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/carousel/index.ts b/projects/angular-bootstrap-md/src/lib/free/carousel/index.ts
deleted file mode 100755
index 322baeaa..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/carousel/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { CarouselComponent } from './carousel.component';
-export { CarouselModule } from './carousel.module';
-export { SlideComponent } from './slide.component';
-export { CarouselConfig } from './carousel.config';
diff --git a/projects/angular-bootstrap-md/src/lib/free/carousel/licens.md b/projects/angular-bootstrap-md/src/lib/free/carousel/licens.md
deleted file mode 100755
index 68dc12fd..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/carousel/licens.md
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/valor-software/ngx-bootstrap/blob/development/LICENSE
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/carousel/slide.component.ts b/projects/angular-bootstrap-md/src/lib/free/carousel/slide.component.ts
deleted file mode 100755
index fabdadef..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/carousel/slide.component.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { Component, HostBinding, Input, ElementRef } from '@angular/core';
-
-@Component({
- selector: 'mdb-slide, mdb-carousel-item',
- template: `
-
- `,
-})
-export class SlideComponent {
- /** Is current slide active */
- @HostBinding('class.active')
- @Input()
- public active: boolean;
- @HostBinding('class.animated') animated = false;
- @HostBinding('class.carousel-item-next') directionNext = false;
- @HostBinding('class.carousel-item-left') directionLeft = false;
- @HostBinding('class.carousel-item-prev') directionPrev = false;
- @HostBinding('class.carousel-item-right') directionRight = false;
- /** Wraps element by appropriate CSS classes */
- @HostBinding('class.carousel-item')
-
- /** Link to Parent(container-collection) component */
- public el: ElementRef | any = null;
-
- public constructor(el: ElementRef) {
- this.el = el;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/charts/chart.directive.ts b/projects/angular-bootstrap-md/src/lib/free/charts/chart.directive.ts
deleted file mode 100755
index 1a1fba2d..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/charts/chart.directive.ts
+++ /dev/null
@@ -1,288 +0,0 @@
-import {
- OnDestroy,
- OnInit,
- OnChanges,
- EventEmitter,
- ElementRef,
- Input,
- Output,
- SimpleChanges,
- Directive,
-} from '@angular/core';
-
-import { Color } from './color.interface';
-import { Colors } from './colors.interface';
-
-import { isPlatformBrowser } from '@angular/common';
-import { PLATFORM_ID, Inject } from '@angular/core';
-
-declare var Chart: any;
-
-@Directive({ selector: 'canvas[mdbChart]', exportAs: 'mdb-base-chart' })
-export class BaseChartDirective implements OnDestroy, OnChanges, OnInit, Colors {
- public static defaultColors: Array = [
- [255, 99, 132],
- [54, 162, 235],
- [255, 206, 86],
- [231, 233, 237],
- [75, 192, 192],
- [151, 187, 205],
- [220, 220, 220],
- [247, 70, 74],
- [70, 191, 189],
- [253, 180, 92],
- [148, 159, 177],
- [77, 83, 96],
- ];
-
- @Input() public data: number[] | any[];
- @Input() public datasets: any[];
- @Input() public labels: Array = [];
- @Input() public options: any = { legend: { display: false } };
- @Input() public chartType: string;
- @Input() public colors: Array;
- @Input() public legend = false;
-
- @Output() public chartClick: EventEmitter = new EventEmitter();
- @Output() public chartHover: EventEmitter = new EventEmitter();
-
- public ctx: any;
- public chart: any;
-
- cvs: any;
- initFlag = false;
-
- isBrowser: any = false;
-
- public constructor(public element: ElementRef, @Inject(PLATFORM_ID) platformId: string) {
- this.isBrowser = isPlatformBrowser(platformId);
- }
-
- public ngOnInit(): any {
- if (this.isBrowser) {
- this.ctx = this.element.nativeElement.getContext('2d');
- this.cvs = this.element.nativeElement;
- this.initFlag = true;
- if (this.data || this.datasets) {
- this.refresh();
- }
- }
- }
-
- public ngOnChanges(changes: SimpleChanges): void {
- if (this.initFlag) {
- // Check if the changes are in the data or datasets
- if (
- (changes.hasOwnProperty('data') || changes.hasOwnProperty('datasets')) &&
- !changes.hasOwnProperty('labels')
- ) {
- if (changes['data']) {
- this.updateChartData(changes['data'].currentValue);
- } else {
- this.updateChartData(changes['datasets'].currentValue);
- }
-
- this.chart.update();
- } else {
- // otherwise rebuild the chart
- this.refresh();
- }
- }
- }
-
- public ngOnDestroy(): any {
- if (this.chart) {
- this.chart.destroy();
- this.chart = void 0;
- }
- }
-
- public getChartBuilder(ctx: any): any {
- const datasets: any = this.getDatasets();
-
- const options: any = Object.assign({}, this.options);
- if (this.legend === false) {
- options.legend = { display: false };
- }
- // hock for onHover and onClick events
- options.hover = options.hover || {};
- if (!options.hover.onHover) {
- options.hover.onHover = (event: any, active: Array) => {
- if (active && active.length) {
- this.chartHover.emit({ event, active });
- }
- };
- }
-
- if (!options.onClick) {
- options.onClick = (event: any, active: Array) => {
- this.chartClick.emit({ event, active });
- };
- }
-
- const opts = {
- type: this.chartType,
- data: {
- labels: this.labels,
- datasets: datasets,
- },
- options: options,
- };
-
- return new Chart(ctx, opts);
- }
-
- // feature(chart): added getPointDataAtEvent which will return clicked chart's point data
- public getPointDataAtEvent(event: any) {
- if (event.active.length > 0) {
- const datasetIndex = event.active[0]._datasetIndex;
- const dataIndex = event.active[0]._index;
- const dataObject = this.datasets[datasetIndex].data[dataIndex];
- return dataObject;
- }
- }
-
- private updateChartData(newDataValues: number[] | any[]): void {
- if (Array.isArray(newDataValues[0].data)) {
- this.chart.data.datasets.forEach((dataset: any, i: number) => {
- dataset.data = newDataValues[i].data;
-
- if (newDataValues[i].label) {
- dataset.label = newDataValues[i].label;
- }
- });
- } else {
- this.chart.data.datasets[0].data = newDataValues;
- }
- }
-
- private getDatasets(): any {
- let datasets: any = void 0;
- // in case if datasets is not provided, but data is present
- if (!this.datasets || (!this.datasets.length && (this.data && this.data.length))) {
- if (Array.isArray(this.data[0])) {
- datasets = (this.data as Array).map((data: number[], index: number) => {
- return { data, label: this.labels[index] || `Label ${index}` };
- });
- } else {
- datasets = [{ data: this.data, label: `Label 0` }];
- }
- }
-
- if ((this.datasets && this.datasets.length) || (datasets && datasets.length)) {
- datasets = (this.datasets || datasets).map((elm: number, index: number) => {
- const newElm: any = Object.assign({}, elm);
- if (this.colors && this.colors.length) {
- Object.assign(newElm, this.colors[index]);
- } else {
- Object.assign(newElm, getColors(this.chartType, index, newElm.data.length));
- }
- return newElm;
- });
- }
-
- if (!datasets) {
- throw new Error(`ng-charts configuration error,
- data or datasets field are required to render char ${this.chartType}`);
- }
-
- return datasets;
- }
-
- private refresh(): any {
- this.ngOnDestroy();
- this.chart = this.getChartBuilder(this.ctx);
- }
-}
-
-function rgba(colour: Array, alpha: number): string {
- return 'rgba(' + colour.concat(alpha).join(',') + ')';
-}
-
-function getRandomInt(min: number, max: number): number {
- return Math.floor(Math.random() * (max - min + 1)) + min;
-}
-
-function formatLineColor(colors: Array): Color {
- return {
- backgroundColor: rgba(colors, 0.4),
- borderColor: rgba(colors, 1),
- pointBackgroundColor: rgba(colors, 1),
- pointBorderColor: '#fff',
- pointHoverBackgroundColor: '#fff',
- pointHoverBorderColor: rgba(colors, 0.8),
- };
-}
-
-function formatBarColor(colors: Array): Color {
- return {
- backgroundColor: rgba(colors, 0.6),
- borderColor: rgba(colors, 1),
- hoverBackgroundColor: rgba(colors, 0.8),
- hoverBorderColor: rgba(colors, 1),
- };
-}
-
-function formatPieColors(colors: Array): any {
- return {
- backgroundColor: colors.map((color: number[]) => rgba(color, 0.6)),
- borderColor: colors.map(() => '#fff'),
- pointBackgroundColor: colors.map((color: number[]) => rgba(color, 1)),
- pointBorderColor: colors.map(() => '#fff'),
- pointHoverBackgroundColor: colors.map((color: number[]) => rgba(color, 1)),
- pointHoverBorderColor: colors.map((color: number[]) => rgba(color, 1)),
- };
-}
-
-function formatPolarAreaColors(colors: Array): Color {
- return {
- backgroundColor: colors.map((color: number[]) => rgba(color, 0.6)),
- borderColor: colors.map((color: number[]) => rgba(color, 1)),
- hoverBackgroundColor: colors.map((color: number[]) => rgba(color, 0.8)),
- hoverBorderColor: colors.map((color: number[]) => rgba(color, 1)),
- };
-}
-
-function getRandomColor(): number[] {
- return [getRandomInt(0, 255), getRandomInt(0, 255), getRandomInt(0, 255)];
-}
-
-/**
- * Generate colors for line|bar charts
- */
-function generateColor(index: number): number[] {
- return BaseChartDirective.defaultColors[index] || getRandomColor();
-}
-
-/**
- * Generate colors for pie|doughnut charts
- */
-function generateColors(count: number): Array {
- const colorsArr: Array = new Array(count);
- for (let i = 0; i < count; i++) {
- colorsArr[i] = BaseChartDirective.defaultColors[i] || getRandomColor();
- }
- return colorsArr;
-}
-
-/**
- * Generate colors by chart type
- */
-function getColors(chartType: string, index: number, count: number): any {
- if (chartType === 'pie' || chartType === 'doughnut') {
- return formatPieColors(generateColors(count));
- }
-
- if (chartType === 'polarArea') {
- return formatPolarAreaColors(generateColors(count));
- }
-
- if (chartType === 'line' || chartType === 'radar') {
- return formatLineColor(generateColor(index));
- }
-
- if (chartType === 'bar' || chartType === 'horizontalBar') {
- return formatBarColor(generateColor(index));
- }
- return generateColor(index);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/charts/chart.module.ts b/projects/angular-bootstrap-md/src/lib/free/charts/chart.module.ts
deleted file mode 100755
index e5b74efa..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/charts/chart.module.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { NgModule } from '@angular/core';
-
-import { BaseChartDirective } from './chart.directive';
-
-@NgModule({
- declarations: [BaseChartDirective],
- exports: [BaseChartDirective],
-})
-export class ChartsModule {}
diff --git a/projects/angular-bootstrap-md/src/lib/free/charts/color.interface.ts b/projects/angular-bootstrap-md/src/lib/free/charts/color.interface.ts
deleted file mode 100755
index e6d9abd5..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/charts/color.interface.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-export interface Color {
- backgroundColor?: string | string[];
- borderWidth?: number | number[];
- borderColor?: string | string[];
- borderCapStyle?: string;
- borderDash?: number[];
- borderDashOffset?: number;
- borderJoinStyle?: string;
-
- pointBorderColor?: string | string[];
- pointBackgroundColor?: string | string[];
- pointBorderWidth?: number | number[];
-
- pointRadius?: number | number[];
- pointHoverRadius?: number | number[];
- pointHitRadius?: number | number[];
-
- pointHoverBackgroundColor?: string | string[];
- pointHoverBorderColor?: string | string[];
- pointHoverBorderWidth?: number | number[];
- pointStyle?: string | string[];
-
- hoverBackgroundColor?: string | string[];
- hoverBorderColor?: string | string[];
- hoverBorderWidth?: number;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/charts/color.service.ts b/projects/angular-bootstrap-md/src/lib/free/charts/color.service.ts
deleted file mode 100755
index f6d02c62..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/charts/color.service.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-// private helper functions
-export interface Color {
- backgroundColor?: string | string[];
- borderWidth?: number | number[];
- borderColor?: string | string[];
- borderCapStyle?: string;
- borderDash?: number[];
- borderDashOffset?: number;
- borderJoinStyle?: string;
-
- pointBorderColor?: string | string[];
- pointBackgroundColor?: string | string[];
- pointBorderWidth?: number | number[];
-
- pointRadius?: number | number[];
- pointHoverRadius?: number | number[];
- pointHitRadius?: number | number[];
-
- pointHoverBackgroundColor?: string | string[];
- pointHoverBorderColor?: string | string[];
- pointHoverBorderWidth?: number | number[];
- pointStyle?: string | string[];
-
- hoverBackgroundColor?: string | string[];
- hoverBorderColor?: string | string[];
- hoverBorderWidth?: number;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/charts/colors.interface.ts b/projects/angular-bootstrap-md/src/lib/free/charts/colors.interface.ts
deleted file mode 100755
index 197449d3..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/charts/colors.interface.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { Color } from './color.interface';
-
-export interface Colors extends Color {
- data?: number[];
- label?: string;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/charts/colors.service.ts b/projects/angular-bootstrap-md/src/lib/free/charts/colors.service.ts
deleted file mode 100755
index 0d150743..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/charts/colors.service.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { Color } from './color.service';
-
-export interface Colors extends Color {
- data?: number[];
- label?: string;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/charts/index.ts b/projects/angular-bootstrap-md/src/lib/free/charts/index.ts
deleted file mode 100755
index e87efcb7..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/charts/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export * from './chart.directive';
-export { Color } from './color.interface';
-export { Colors } from './colors.interface';
-export { ChartsModule } from './chart.module';
diff --git a/projects/angular-bootstrap-md/src/lib/free/charts/licens.md b/projects/angular-bootstrap-md/src/lib/free/charts/licens.md
deleted file mode 100755
index a9cf4e94..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/charts/licens.md
+++ /dev/null
@@ -1,5 +0,0 @@
-https://github.com/valor-software/ng2-charts/blob/development/LICENSE
-https://github.com/chartjs/Chart.js/blob/master/LICENSE.md
-https://github.com/rendro/easy-pie-chart/blob/master/LICENSE
-https://www.npmjs.com/package/ng2modules-easypiechart
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/checkbox/_checkbox.scss b/projects/angular-bootstrap-md/src/lib/free/checkbox/_checkbox.scss
deleted file mode 100644
index 32b8867e..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/checkbox/_checkbox.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-.form-check-label.label-before:before,
-.form-check-label.label-before:after {
- top: 0 !important;
- right: 0 !important;
- left: auto !important;
-}
-
-.custom-control-label.label-before:before,
-.custom-control-label.label-before:after {
- top: 0.25rem !important;
- right: 0 !important;
- left: auto !important;
-}
-
-.custom-control-label.label-before {
- position: absolute;
-}
-
-.custom-control-inline .label-before {
- position: relative;
-}
-
-.form-check-label.label-before {
- padding-left: 0 !important;
- padding-right: 35px;
-}
-
-.custom-control-label.label-before {
- padding-left: 0 !important;
- padding-right: 25px !important;
-}
-
-.form-check-input[type='checkbox']:checked + .label-before:before,
-label.btn input[type='checkbox']:checked + .label-before:before {
- top: -4px !important;
- right: 10px !important;
- left: auto !important;
-}
-
-.form-check-input[type='checkbox']:indeterminate + .label-before:before,
-label.btn input[type='checkbox']:indeterminate + .label-before:before {
- top: -11px !important;
- right: 16px !important;
- left: auto !important;
-}
-
-.form-check-input[type='checkbox'].filled-in + .label-before:before,
-label.btn input[type='checkbox'].filled-in + .label-before:before {
- top: 0 !important;
- right: 10px !important;
- left: auto !important;
-}
-
-.form-check-input[type='checkbox'].filled-in:checked + .label-before:before,
-label.btn input[type='checkbox'].filled-in:checked + .label-before:before {
- top: 0 !important;
- right: 10px !important;
- left: auto !important;
-}
-
-.form-check-input[type='checkbox'].filled-in + .label-before:after,
-label.btn input[type='checkbox'].filled-in + .label-before:after {
- top: 0 !important;
- left: auto !important;
-}
-
-.checkbox-rounded:after {
- border-radius: 50% !important;
-}
-
-mdb-checkbox .form-check {
- padding-left: 0 !important;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/checkbox/checkbox-module.scss b/projects/angular-bootstrap-md/src/lib/free/checkbox/checkbox-module.scss
deleted file mode 100644
index b5ea9ea3..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/checkbox/checkbox-module.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-@import '../../assets/scss/core/colors';
-@import '../../assets/scss/core/variables';
-
-
-@import 'checkbox';
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/checkbox/checkbox.component.html b/projects/angular-bootstrap-md/src/lib/free/checkbox/checkbox.component.html
deleted file mode 100644
index 8a06374f..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/checkbox/checkbox.component.html
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/checkbox/checkbox.component.ts b/projects/angular-bootstrap-md/src/lib/free/checkbox/checkbox.component.ts
deleted file mode 100644
index 2c1954a0..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/checkbox/checkbox.component.ts
+++ /dev/null
@@ -1,148 +0,0 @@
-import {
- Component,
- EventEmitter,
- forwardRef,
- HostListener,
- Input,
- OnChanges,
- OnInit,
- Output,
- SimpleChanges,
- ViewChild,
- ViewEncapsulation,
- ChangeDetectionStrategy,
- ChangeDetectorRef,
-} from '@angular/core';
-import { NG_VALUE_ACCESSOR } from '@angular/forms';
-import { Subject, timer } from 'rxjs';
-import { take } from 'rxjs/operators';
-
-export const CHECKBOX_VALUE_ACCESSOR: any = {
- provide: NG_VALUE_ACCESSOR,
- // tslint:disable-next-line: no-use-before-declare
- useExisting: forwardRef(() => CheckboxComponent),
- multi: true,
-};
-
-let defaultIdNumber = 0;
-
-export class MdbCheckboxChange {
- element: CheckboxComponent;
- checked: boolean;
-}
-
-@Component({
- selector: 'mdb-checkbox',
- templateUrl: './checkbox.component.html',
- styleUrls: ['checkbox-module.scss'],
- encapsulation: ViewEncapsulation.None,
- providers: [CHECKBOX_VALUE_ACCESSOR],
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class CheckboxComponent implements OnInit, OnChanges {
- @ViewChild('input', { static: true }) inputEl: any;
-
- private defaultId = `mdb-checkbox-${++defaultIdNumber}`;
-
- @Input() class: string;
- @Input() id: string = this.defaultId;
- @Input() required: boolean;
- @Input() name: string;
- @Input() value: string;
- @Input() checked = false;
- @Input() filledIn = false;
- @Input() indeterminate = false;
- @Input() disabled: boolean;
- @Input() rounded = false;
- @Input() checkboxPosition = 'left';
- @Input() default = false;
- @Input() inline = false;
- @Input() tabIndex: number;
-
- @Output() change: EventEmitter = new EventEmitter();
-
- private checkboxClicked = new Subject();
-
- constructor(private _cdRef: ChangeDetectorRef) {}
-
- @HostListener('click', ['$event'])
- onLabelClick(event: any) {
- event.stopPropagation();
- this.checkboxClicked.next(true);
- }
-
- @HostListener('document:click')
- onDocumentClick() {
- this.checkboxClicked.next(false);
- }
-
- ngOnInit() {
- if (this.indeterminate && !this.filledIn && !this.rounded) {
- this.inputEl.indeterminate = true;
- }
- }
-
- ngOnChanges(changes: SimpleChanges) {
- if (changes.hasOwnProperty('checked')) {
- this.checked = changes.checked.currentValue;
- }
- }
-
- get changeEvent() {
- const newChangeEvent = new MdbCheckboxChange();
- newChangeEvent.element = this;
- newChangeEvent.checked = this.checked;
- return newChangeEvent;
- }
-
- toggle() {
- if (this.disabled) {
- return;
- }
- this.checked = !this.checked;
- this.indeterminate = false;
- this.onChange(this.checked);
-
- this._cdRef.markForCheck();
- }
-
- onCheckboxClick(event: any) {
- event.stopPropagation();
- this.toggle();
- }
-
- onCheckboxChange(event: any) {
- event.stopPropagation();
- timer(0).subscribe(() => this.change.emit(this.changeEvent));
- }
-
- onBlur() {
- this.checkboxClicked.pipe(take(1)).subscribe(val => {
- if (!val) {
- this.onTouched();
- }
- });
- }
-
- // Control Value Accessor Methods
- onChange = (_: any) => {};
- onTouched = () => {};
-
- writeValue(value: any) {
- this.value = value;
- this.checked = !!value;
- this._cdRef.markForCheck();
- }
-
- registerOnChange(fn: (_: any) => void) {
- this.onChange = fn;
- }
-
- registerOnTouched(fn: () => void) {
- this.onTouched = fn;
- }
-
- setDisabledState(isDisabled: boolean) {
- this.disabled = isDisabled;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/checkbox/checkbox.module.ts b/projects/angular-bootstrap-md/src/lib/free/checkbox/checkbox.module.ts
deleted file mode 100644
index 17f3930f..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/checkbox/checkbox.module.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-import { FormsModule } from '@angular/forms';
-
-import { CheckboxComponent } from './checkbox.component';
-
-export { CHECKBOX_VALUE_ACCESSOR, CheckboxComponent } from './checkbox.component';
-
-@NgModule({
- declarations: [CheckboxComponent],
- exports: [CheckboxComponent],
- imports: [CommonModule, FormsModule],
-})
-export class CheckboxModule {}
diff --git a/projects/angular-bootstrap-md/src/lib/free/checkbox/index.ts b/projects/angular-bootstrap-md/src/lib/free/checkbox/index.ts
deleted file mode 100644
index 7af96b16..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/checkbox/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { CHECKBOX_VALUE_ACCESSOR, CheckboxComponent, MdbCheckboxChange } from './checkbox.component';
-export { CheckboxModule } from './checkbox.module';
diff --git a/projects/angular-bootstrap-md/src/lib/free/collapse/collapse.component.ts b/projects/angular-bootstrap-md/src/lib/free/collapse/collapse.component.ts
deleted file mode 100755
index 9f481bc0..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/collapse/collapse.component.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-import {
- Component,
- OnInit,
- HostBinding,
- Input,
- Output,
- EventEmitter,
- HostListener,
- ContentChildren,
- QueryList,
- ChangeDetectionStrategy,
- ChangeDetectorRef,
-} from '@angular/core';
-import { state, style, trigger, transition, animate } from '@angular/animations';
-import { FixedButtonCaptionDirective } from '../buttons/fixed-caption.directive';
-
-@Component({
- // tslint:disable-next-line:component-selector
- selector: '[mdbCollapse]',
- exportAs: 'bs-collapse',
- template: ' ',
- animations: [
- trigger('expandBody', [
- state('collapsed', style({ height: '0px' })),
- state('expanded', style({ height: '*' })),
- transition('expanded <=> collapsed', animate('500ms ease')),
- ]),
- ],
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class CollapseComponent implements OnInit {
- @ContentChildren(FixedButtonCaptionDirective) captions: QueryList;
- @Input() isCollapsed = true;
-
- @Output() showBsCollapse: EventEmitter = new EventEmitter();
- @Output() shownBsCollapse: EventEmitter = new EventEmitter();
- @Output() hideBsCollapse: EventEmitter = new EventEmitter();
- @Output() hiddenBsCollapse: EventEmitter = new EventEmitter();
- @Output() collapsed: EventEmitter = new EventEmitter();
- @Output() expanded: EventEmitter = new EventEmitter();
-
- constructor(private _cdRef: ChangeDetectorRef) {}
-
- @HostBinding('@expandBody') expandAnimationState: string;
- @HostBinding('style.overflow') overflow = 'hidden';
-
- @HostListener('@expandBody.done', ['$event'])
- onExpandBodyDone(event: any) {
- setTimeout(() => {
- if (event.toState === 'expanded') {
- this.shownBsCollapse.emit(this);
- this.expanded.emit(this);
- this.overflow = 'visible';
- this.showCaptions();
- } else {
- this.hiddenBsCollapse.emit(this);
- this.collapsed.emit(this);
- }
- }, 0);
- }
-
- showCaptions() {
- this.captions.forEach((caption: FixedButtonCaptionDirective) => caption.showCaption());
- }
-
- toggle() {
- this.isCollapsed ? this.show() : this.hide();
- }
-
- show() {
- this.expandAnimationState = 'expanded';
- this.isCollapsed = false;
-
- this.showBsCollapse.emit(this);
- this._cdRef.markForCheck();
- }
-
- hide() {
- this.overflow = 'hidden';
- this.expandAnimationState = 'collapsed';
- this.isCollapsed = true;
-
- this.hideBsCollapse.emit(this);
- this._cdRef.markForCheck();
- }
-
- initializeCollapseState() {
- this.isCollapsed ? this.hide() : this.show();
- }
-
- ngOnInit() {
- this.initializeCollapseState();
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/collapse/collapse.module.ts b/projects/angular-bootstrap-md/src/lib/free/collapse/collapse.module.ts
deleted file mode 100755
index 9d9e5fdf..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/collapse/collapse.module.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { NgModule, ModuleWithProviders } from '@angular/core';
-import { CollapseComponent } from './collapse.component';
-
-@NgModule({
- declarations: [CollapseComponent],
- exports: [CollapseComponent]
-})
-export class CollapseModule {
- public static forRoot(): ModuleWithProviders {
- return {ngModule: CollapseModule, providers: []};
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/collapse/index.ts b/projects/angular-bootstrap-md/src/lib/free/collapse/index.ts
deleted file mode 100755
index 13547a4a..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/collapse/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { CollapseComponent } from './collapse.component';
-export { CollapseModule } from './collapse.module';
diff --git a/projects/angular-bootstrap-md/src/lib/free/dropdown/_dropdown.scss b/projects/angular-bootstrap-md/src/lib/free/dropdown/_dropdown.scss
deleted file mode 100644
index 27696e44..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/dropdown/_dropdown.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-// Dropdowns
-
-.dropdown-menu {
- .dropdown-item {
- &:active {
- background-color: $grey-darken-1;
- }
- }
-}
-
-// Angular styles
-.show {
- // Show the menu
- > .dropdown-menu {
- display: block;
- }
-
- // Remove the outline when :focus is triggered
- > a {
- outline: 0;
- }
-}
-
-.dropdown-menu {
- display: none;
- position: absolute;
-
- margin-top: 5px;
- left: 0px;
- will-change: transform;
-}
-.various-dropdown {
- transform: translate3d(0px, 21px, 0px) !important;
-}
-.a-various-dropdown {
- transform: translate3d(0px, 29px, 0px) !important;
-}
-.medium-dropdown {
- transform: translate3d(0px, 36px, 0px) !important;
-}
-.small-dropdown {
- transform: translate3d(5px, 34px, 0px) !important;
-}
-.large-dropdown {
- transform: translate3d(5px, 57px, 0px) !important;
-}
-.btn-group {
- > .dropdown-menu {
- transform: translate3d(0px, 43px, 0px);
- }
-}
-//dropup
-.dropup {
- // Different positioning for bottom up menu
- > .dropdown-menu {
- display: none;
- // // position: absolute;
- transform: translate3d(117px, 0px, 0px) !important;
- // // top: 0px;
- // // left: 0px;
- will-change: transform;
- }
-}
-//dropup animation
-.dropup.show {
- .dropdown-menu {
- display: block;
- opacity: 0;
- }
-
- .fadeInDropdown {
- opacity: 1;
- }
-}
-.dropup-material.show {
- .dropdown-menu {
- transition: 0.55s;
- }
-}
-
-//material dropdown
-
-.dropdown-menu {
- display: none;
- position: absolute;
- transform: translate3d(6px, 49px, 0px);
- top: 0px;
- left: 0px;
- will-change: transform;
-}
-
-//material dropdown animation
-.dropdown.show {
- .dropdown-menu {
- display: block;
- opacity: 0;
- transition: 0.55s;
- }
-
- .fadeInDropdown {
- opacity: 1;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-container.component.html b/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-container.component.html
deleted file mode 100755
index 8841ad9f..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-container.component.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-container.component.ts b/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-container.component.ts
deleted file mode 100755
index 2c19ab60..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-container.component.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { ChangeDetectionStrategy, Component, OnDestroy, HostBinding } from '@angular/core';
-import { BsDropdownState } from './dropdown.state';
-
-@Component({
- selector: 'mdb-dropdown-container',
- changeDetection: ChangeDetectionStrategy.OnPush,
- template: `
-
-
-
- `,
-})
-export class BsDropdownContainerComponent implements OnDestroy {
- isOpen = false;
-
- @HostBinding('style.display') display = 'block';
- @HostBinding('style.position') position = 'absolute';
-
- get direction(): 'down' | 'up' {
- return this._state.direction;
- }
-
- private _subscription: any;
-
- constructor(private _state: BsDropdownState) {
- this._subscription = _state.isOpenChange.subscribe((value: boolean) => {
- this.isOpen = value;
- });
- }
-
- ngOnDestroy(): void {
- this._subscription.unsubscribe();
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-menu.directive.ts b/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-menu.directive.ts
deleted file mode 100755
index b8af437c..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-menu.directive.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { Directive, TemplateRef, ViewContainerRef } from '@angular/core';
-import { BsDropdownState } from './dropdown.state';
-
-@Directive({
- selector: '[mdbDropdownMenu],[dropdownMenu]',
- exportAs: 'bs-dropdown-menu'
-})
-export class BsDropdownMenuDirective {
- constructor(_state: BsDropdownState,
- _viewContainer: ViewContainerRef,
- _templateRef: TemplateRef) {
- _state.resolveDropdownMenu({
- templateRef: _templateRef,
- viewContainer: _viewContainer
- });
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-module.scss b/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-module.scss
deleted file mode 100644
index 2c8427e5..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-module.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-@import '../../assets/scss/core/mixins';
-@import '../../assets/scss/core/colors';
-@import '../../assets/scss/core/variables';
-
-
-@import 'dropdown';
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-toggle.directive.ts b/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-toggle.directive.ts
deleted file mode 100755
index 9471a6d4..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown-toggle.directive.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { Directive, ElementRef, HostBinding, HostListener, OnDestroy } from '@angular/core';
-import { Subscription } from 'rxjs';
-
-import { BsDropdownState } from './dropdown.state';
-
-@Directive({
- selector: '[mdbDropdownToggle],[dropdownToggle]',
- exportAs: 'bs-dropdown-toggle',
-})
-export class BsDropdownToggleDirective implements OnDestroy {
- private _subscriptions: Subscription[] = [];
-
- @HostBinding('attr.aria-haspopup') ariaHaspopup = true;
- @HostBinding('attr.disabled') isDisabled: boolean | any = null;
- @HostBinding('attr.aria-expanded') isOpen: boolean;
-
- @HostListener('click')
- onClick(): void {
- if (this.isDisabled) {
- return;
- }
- this._state.toggleClick.emit();
- }
-
- @HostListener('document:click', ['$event'])
- onDocumentClick(event: any): void {
- if (
- this._state.autoClose &&
- event.button !== 2 &&
- !this._element.nativeElement.contains(event.target)
- ) {
- this._state.toggleClick.emit(false);
- }
- }
-
- @HostListener('keyup.esc')
- onEsc(): void {
- if (this._state.autoClose) {
- this._state.toggleClick.emit(false);
- }
- }
-
- constructor(private _state: BsDropdownState, private _element: ElementRef) {
- // sync is open value with state
- this._subscriptions.push(
- this._state.isOpenChange.subscribe((value: boolean) => (this.isOpen = value))
- );
- // populate disabled state
- this._subscriptions.push(
- this._state.isDisabledChange.subscribe(
- (value: boolean | any) => (this.isDisabled = value || null)
- )
- );
- }
-
- ngOnDestroy(): void {
- for (const sub of this._subscriptions) {
- sub.unsubscribe();
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown.config.ts b/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown.config.ts
deleted file mode 100755
index 51d4988b..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown.config.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { Injectable } from '@angular/core';
-
-/** Default dropdown configuration */
-@Injectable()
-export class BsDropdownConfig {
- /** default dropdown auto closing behavior */
- autoClose = true;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown.directive.ts b/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown.directive.ts
deleted file mode 100755
index b883a11b..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown.directive.ts
+++ /dev/null
@@ -1,408 +0,0 @@
-import {
- Component,
- ElementRef,
- EmbeddedViewRef,
- EventEmitter,
- HostBinding,
- Input,
- OnDestroy,
- OnInit,
- Output,
- Renderer2,
- ViewContainerRef,
- ViewEncapsulation,
- ChangeDetectorRef,
-} from '@angular/core';
-import { Subscription, Subject } from 'rxjs';
-
-import { ComponentLoader } from '../utils/component-loader/component-loader.class';
-import { ComponentLoaderFactory } from '../utils/component-loader/component-loader.factory';
-import { BsDropdownConfig } from './dropdown.config';
-import { BsDropdownContainerComponent } from './dropdown-container.component';
-import { BsDropdownState } from './dropdown.state';
-import { BsComponentRef } from '../utils/component-loader/bs-component-ref.class';
-import { BsDropdownMenuDirective } from './dropdown-menu.directive';
-import { isBs3 } from '../utils/ng2-bootstrap-config';
-import { takeUntil } from 'rxjs/operators';
-
-@Component({
- // tslint:disable-next-line:component-selector
- selector: '[mdbDropdown],[dropdown]',
- exportAs: 'bs-dropdown',
- template: ' ',
- styleUrls: ['dropdown-module.scss'],
- encapsulation: ViewEncapsulation.None,
- providers: [BsDropdownState],
-})
-// tslint:disable-next-line:component-class-suffix
-export class BsDropdownDirective implements OnInit, OnDestroy {
- /**
- * Placement of a popover. Accepts: "top", "bottom", "left", "right"
- */
- @Input() placement: string;
- /**
- * Specifies events that should trigger. Supports a space separated list of
- * event names.
- */
- @Input() triggers: string;
- /**
- * A selector specifying the element the popover should be appended to.
- * Currently only supports "body".
- */
- @Input() container: string;
- @Input() dropup: boolean;
- @Input() dropupDefault = false;
- @Input() dynamicPosition = false;
- /**
- * This attribute indicates that the dropdown should be opened upwards
- */
- @HostBinding('class.dropup') public get isDropup() {
- if (this.dropup) {
- this._isDropupDefault = false;
- return this.dropup;
- } else if (this.dropupDefault) {
- this._isDropupDefault = true;
- return this.dropupDefault;
- } else if (this.dropupDefault && this.dropup) {
- this._isDropupDefault = false;
- return this.dropup;
- }
- }
-
- /**
- * Indicates that dropdown will be closed on item or document click,
- * and after pressing ESC
- */
- @Input() set autoClose(value: boolean) {
- if (typeof value === 'boolean') {
- this._state.autoClose = value;
- }
- }
-
- get autoClose(): boolean {
- return this._state.autoClose;
- }
-
- /**
- * Disables dropdown toggle and hides dropdown menu if opened
- */
- @Input() set isDisabled(value: boolean) {
- this._isDisabled = value;
- this._state.isDisabledChange.emit(value);
- if (value) {
- this.hide();
- }
- }
-
- get isDisabled(): boolean {
- return this._isDisabled;
- }
-
- /**
- * Returns whether or not the popover is currently being shown
- */
- @HostBinding('class.open')
- @HostBinding('class.show')
- @Input()
- get isOpen(): boolean {
- if (this._showInline) {
- return this._isInlineOpen;
- }
- return this._dropdown.isShown;
- }
-
- set isOpen(value: boolean) {
- if (value) {
- this.show();
- } else {
- this.hide();
- }
- }
-
- /**
- * Emits an event when isOpen change
- */
- @Output() isOpenChange: EventEmitter;
-
- /**
- * Emits an event when the popover is shown
- */
- // tslint:disable-next-line:no-output-on-prefix
- @Output() onShown: EventEmitter;
- @Output() shown: EventEmitter;
-
- /**
- * Emits an event when the popover is hidden
- */
- // tslint:disable-next-line:no-output-on-prefix
- @Output() onHidden: EventEmitter;
- @Output() hidden: EventEmitter;
-
- private _destroy$: Subject = new Subject();
-
- get isBs4(): boolean {
- return !isBs3();
- }
-
- _isInlineOpen = false;
- _showInline: boolean;
- _inlinedMenu: EmbeddedViewRef;
-
- _isDisabled: boolean;
- _dropdown: ComponentLoader;
- _dropup: boolean;
- _subscriptions: Subscription[] = [];
- _isInited = false;
- _isDropupDefault: boolean;
-
- constructor(
- private _elementRef: ElementRef,
- private _renderer: Renderer2,
- private _viewContainerRef: ViewContainerRef,
- private _cis: ComponentLoaderFactory,
- private _config: BsDropdownConfig,
- private _state: BsDropdownState,
- private cdRef: ChangeDetectorRef
- ) {
- // create dropdown component loader
- this._dropdown = this._cis
- .createLoader(
- this._elementRef,
- this._viewContainerRef,
- this._renderer
- )
- .provide({ provide: BsDropdownState, useValue: this._state });
-
- this.onShown = this._dropdown.onShown;
- this.shown = this._dropdown.shown;
- this.onHidden = this._dropdown.onHidden;
- this.hidden = this._dropdown.hidden;
- this.isOpenChange = this._state.isOpenChange;
-
- // set initial dropdown state from config
- this._state.autoClose = this._config.autoClose;
- }
-
- ngOnInit(): void {
- // fix: seems there are an issue with `routerLinkActive`
- // which result in duplicated call ngOnInit without call to ngOnDestroy
- // read more: https://github.com/valor-software/ngx-bootstrap/issues/1885
- if (this._isInited) {
- return;
- }
- this._isInited = true;
-
- this._showInline = !this.container;
-
- this._dropup = this.dropup;
-
- // attach DOM listeners
- this._dropdown.listen({
- triggers: this.triggers,
- show: () => this.show(),
- });
-
- // toggle visibility on toggle element click
- this._state.toggleClick
- .pipe(takeUntil(this._destroy$))
- .subscribe((value: boolean) => this.toggle(value));
-
- // hide dropdown if set disabled while opened
- this._state.isDisabledChange.pipe(takeUntil(this._destroy$)).subscribe((element: any) => {
- if (element === true) {
- this.hide();
- }
- });
-
- // attach dropdown menu inside of dropdown
- if (this._showInline) {
- this._state.dropdownMenu.then((dropdownMenu: BsComponentRef) => {
- this._inlinedMenu = dropdownMenu.viewContainer.createEmbeddedView(dropdownMenu.templateRef);
- });
- }
-
- this._state.isOpenChange.pipe(takeUntil(this._destroy$)).subscribe(() => {
- setTimeout(() => {
- const dropdownContainer = this._elementRef.nativeElement.querySelector('.dropdown-menu');
- const left = dropdownContainer.getBoundingClientRect().left;
-
- if (
- dropdownContainer.classList.contains('dropdown-menu-right') &&
- left <= dropdownContainer.clientWidth
- ) {
- if (left < 0) {
- this._renderer.setStyle(dropdownContainer, 'right', left + 'px');
- } else {
- this._renderer.setStyle(dropdownContainer, 'right', '0');
- }
- }
- }, 0);
- });
- }
-
- /**
- * Opens an element’s popover. This is considered a “manual” triggering of
- * the popover.
- */
- show(): void {
- if (this.isOpen || this.isDisabled) {
- return;
- }
- // material and dropup dropdown animation
-
- const button = this._elementRef.nativeElement.children[0];
- const container = this._elementRef.nativeElement.querySelector('.dropdown-menu');
-
- if (
- !container.parentNode.classList.contains('btn-group') &&
- !container.parentNode.classList.contains('dropdown') &&
- !this._isDropupDefault
- ) {
- container.parentNode.classList.add('dropdown');
- }
- if (this.dropup && !this._isDropupDefault) {
- container.parentNode.classList.add('dropup-material');
- }
- if (button.tagName !== 'BUTTON') {
- if (button.tagName === 'A') {
- container.classList.add('a-various-dropdown');
- } else {
- container.classList.add('various-dropdown');
- }
- } else {
- if (button.classList.contains('btn-sm')) {
- container.classList.add('small-dropdown');
- }
- if (button.classList.contains('btn-md')) {
- container.classList.add('medium-dropdown');
- }
- if (button.classList.contains('btn-lg')) {
- container.classList.add('large-dropdown');
- }
- }
- setTimeout(() => {
- container.classList.add('fadeInDropdown');
-
- if (this.dynamicPosition) {
- const bounding = container.getBoundingClientRect();
- const out: { top: boolean; bottom: boolean } = {
- top: bounding.top < 0,
- bottom: bounding.bottom > (window.innerHeight || document.documentElement.clientHeight),
- };
-
- if (this.dropup && out.top) {
- this.dropup = false;
- } else if (!this.dropup && out.bottom) {
- this.dropup = true;
- }
- }
- }, 0);
-
- if (this._showInline) {
- this._isInlineOpen = true;
- if (
- container.parentNode.classList.contains('dropdown') ||
- container.parentNode.classList.contains('dropup-material')
- ) {
- setTimeout(() => {
- this.onShown.emit(true);
- this.shown.emit(true);
- }, 560);
- } else {
- setTimeout(() => {
- this.onShown.emit(true);
- this.shown.emit(true);
- }, 0);
- }
- this._state.isOpenChange.emit(true);
-
- return;
- }
- this._state.dropdownMenu.then(dropdownMenu => {
- // check direction in which dropdown should be opened
- const _dropup = this.dropup === true || this.dropupDefault === true;
-
- this._state.direction = _dropup ? 'up' : 'down';
- const _placement = this.placement || (_dropup ? 'top left' : 'bottom left');
-
- // show dropdown
- this._dropdown
- .attach(BsDropdownContainerComponent)
- .to(this.container)
- .position({ attachment: _placement })
- .show({
- content: dropdownMenu.templateRef,
- placement: _placement,
- });
-
- this._state.isOpenChange.emit(true);
- });
- }
-
- /**
- * Closes an element’s popover. This is considered a “manual” triggering of
- * the popover.
- */
- hide(): void {
- if (!this.isOpen) {
- return;
- }
-
- if (this.dropup !== this._dropup) {
- this.dropup = this._dropup;
- }
-
- const container = this._elementRef.nativeElement.querySelector('.dropdown-menu');
-
- container.classList.remove('fadeInDropdown');
- if (
- container.parentNode.classList.contains('dropdown') ||
- container.parentNode.classList.contains('dropup-material')
- ) {
- setTimeout(() => {
- if (this._showInline) {
- this._isInlineOpen = false;
- this.onHidden.emit(true);
- this.hidden.emit(true);
- this.cdRef.markForCheck();
- } else {
- this._dropdown.hide();
- }
-
- this._state.isOpenChange.emit(false);
- }, 560);
- } else {
- setTimeout(() => {
- if (this._showInline) {
- this._isInlineOpen = false;
- this.onHidden.emit(true);
- this.hidden.emit(true);
- this.cdRef.markForCheck();
- } else {
- this._dropdown.hide();
- }
-
- this._state.isOpenChange.emit(false);
- }, 0);
- }
- }
-
- /**
- * Toggles an element’s popover. This is considered a “manual” triggering of
- * the popover.
- */
- toggle(value?: boolean): void {
- if (this.isOpen || value === false) {
- return this.hide();
- }
-
- return this.show();
- }
-
- ngOnDestroy(): void {
- // clean up subscriptions and destroy dropdown
- this._destroy$.next();
- this._destroy$.complete();
- this._dropdown.dispose();
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown.module.ts b/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown.module.ts
deleted file mode 100755
index 65fb8999..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown.module.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { ModuleWithProviders, NgModule } from '@angular/core';
-import { ComponentLoaderFactory } from '../utils/component-loader/component-loader.factory';
-
-import { PositioningService } from '../utils/positioning/positioning.service';
-import { BsDropdownContainerComponent } from './dropdown-container.component';
-import { BsDropdownMenuDirective } from './dropdown-menu.directive';
-import { BsDropdownToggleDirective } from './dropdown-toggle.directive';
-import { BsDropdownConfig } from './dropdown.config';
-
-import { BsDropdownDirective } from './dropdown.directive';
-import { BsDropdownState } from './dropdown.state';
-
-@NgModule({
- declarations: [
- BsDropdownMenuDirective,
- BsDropdownToggleDirective,
- BsDropdownContainerComponent,
- BsDropdownDirective
- ],
- exports: [
- BsDropdownMenuDirective,
- BsDropdownToggleDirective,
- BsDropdownDirective
- ],
- entryComponents: [BsDropdownContainerComponent]
-})
-export class DropdownModule {
- public static forRoot(config?: any): ModuleWithProviders {
- return {
- ngModule: DropdownModule, providers: [
- ComponentLoaderFactory,
- PositioningService,
- BsDropdownState,
- {provide: BsDropdownConfig, useValue: config ? config : {autoClose: true}}
- ]
- };
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown.state.ts b/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown.state.ts
deleted file mode 100755
index 403dc4e1..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/dropdown/dropdown.state.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { EventEmitter, Injectable } from '@angular/core';
-import { BsComponentRef } from '../utils/component-loader/bs-component-ref.class';
-
-@Injectable()
-export class BsDropdownState {
- direction: 'down' | 'up' = 'down';
- autoClose: boolean;
- isOpenChange = new EventEmitter();
- isDisabledChange = new EventEmitter();
- toggleClick = new EventEmitter();
-
- /**
- * Content to be displayed as popover.
- */
- dropdownMenu: Promise>;
- resolveDropdownMenu: (componentRef: BsComponentRef) => void;
-
- constructor() {
- this.dropdownMenu = new Promise((resolve) => {
- this.resolveDropdownMenu = resolve;
- });
- }
- }
diff --git a/projects/angular-bootstrap-md/src/lib/free/dropdown/index.ts b/projects/angular-bootstrap-md/src/lib/free/dropdown/index.ts
deleted file mode 100755
index 64b15674..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/dropdown/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export { BsDropdownDirective } from './dropdown.directive';
-export { BsDropdownMenuDirective } from './dropdown-menu.directive';
-export { BsDropdownToggleDirective } from './dropdown-toggle.directive';
-export { BsDropdownContainerComponent } from './dropdown-container.component';
-export { BsDropdownState } from './dropdown.state';
-export { BsDropdownConfig } from './dropdown.config';
-export { DropdownModule } from './dropdown.module';
diff --git a/projects/angular-bootstrap-md/src/lib/free/icons/directives/fab.directive.ts b/projects/angular-bootstrap-md/src/lib/free/icons/directives/fab.directive.ts
deleted file mode 100644
index 9f39fc14..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/icons/directives/fab.directive.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Directive, ElementRef, Renderer2 } from '@angular/core';
-
-// tslint:disable-next-line:directive-selector
-@Directive({ selector: '[fab], [brands]' })
-export class FabDirective {
- constructor(private _el: ElementRef, private _r: Renderer2) {
- this._r.addClass(this._el.nativeElement, 'fab');
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/icons/directives/fad.directive.ts b/projects/angular-bootstrap-md/src/lib/free/icons/directives/fad.directive.ts
deleted file mode 100644
index 63c7f066..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/icons/directives/fad.directive.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Directive, ElementRef, Renderer2 } from '@angular/core';
-
-// tslint:disable-next-line:directive-selector
-@Directive({ selector: '[fad], [duotone]' })
-export class FadDirective {
- constructor(private _el: ElementRef, private _r: Renderer2) {
- this._r.addClass(this._el.nativeElement, 'fad');
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/icons/directives/fal.directive.ts b/projects/angular-bootstrap-md/src/lib/free/icons/directives/fal.directive.ts
deleted file mode 100644
index 02a0e91c..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/icons/directives/fal.directive.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Directive, ElementRef, Renderer2 } from '@angular/core';
-
-// tslint:disable-next-line:directive-selector
-@Directive({ selector: '[fal], [light]' })
-export class FalDirective {
- constructor(private _el: ElementRef, private _r: Renderer2) {
- this._r.addClass(this._el.nativeElement, 'fal');
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/icons/directives/far.directive.ts b/projects/angular-bootstrap-md/src/lib/free/icons/directives/far.directive.ts
deleted file mode 100644
index 6de0e802..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/icons/directives/far.directive.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Directive, ElementRef, Renderer2 } from '@angular/core';
-
-// tslint:disable-next-line:directive-selector
-@Directive({ selector: '[far], [regular]' })
-export class FarDirective {
- constructor(private _el: ElementRef, private _r: Renderer2) {
- this._r.addClass(this._el.nativeElement, 'far');
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/icons/directives/fas.directive.ts b/projects/angular-bootstrap-md/src/lib/free/icons/directives/fas.directive.ts
deleted file mode 100644
index 728366f0..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/icons/directives/fas.directive.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Directive, ElementRef, Renderer2 } from '@angular/core';
-
-// tslint:disable-next-line:directive-selector
-@Directive({ selector: '[fas], [solid]' })
-export class FasDirective {
- constructor(private _el: ElementRef, private _r: Renderer2) {
- this._r.addClass(this._el.nativeElement, 'fas');
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/icons/icon.component.html b/projects/angular-bootstrap-md/src/lib/free/icons/icon.component.html
deleted file mode 100644
index 38061652..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/icons/icon.component.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/icons/icon.component.ts b/projects/angular-bootstrap-md/src/lib/free/icons/icon.component.ts
deleted file mode 100644
index 664da2e2..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/icons/icon.component.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import {
- Component,
- Input,
- ElementRef,
- OnInit,
- Renderer2,
- ChangeDetectionStrategy,
-} from '@angular/core';
-import { Utils } from '../utils';
-
-@Component({
- selector: 'mdb-icon',
- templateUrl: './icon.component.html',
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class MdbIconComponent implements OnInit {
- @Input() icon: string;
- @Input() size: string;
- @Input() class: string;
- @Input() classInside: string;
-
- fab = false;
- far = false;
- fal = false;
- fad = false;
- fas = true;
-
- sizeClass = '';
-
- utils: Utils = new Utils();
-
- constructor(private _el: ElementRef, private _renderer: Renderer2) {}
-
- ngOnInit() {
- if (this.size) {
- this.sizeClass = `fa-${this.size}`;
- }
-
- const classList = this._el.nativeElement.classList;
- this.fab = classList.contains('fab');
- this.far = classList.contains('far');
- this.fas = classList.contains('fas');
- this.fal = classList.contains('fal');
- this.fad = classList.contains('fad');
-
- const formWrapper =
- this.utils.getClosestEl(this._el.nativeElement, '.md-form') ||
- this.utils.getClosestEl(this._el.nativeElement, '.md-outline');
-
- if (formWrapper) {
- formWrapper.childNodes.forEach((el: any) => {
- if (el.tagName === 'INPUT' || 'TEXTAREA') {
- this._renderer.listen(el, 'focus', () => {
- this._renderer.addClass(this._el.nativeElement, 'active');
- });
- this._renderer.listen(el, 'blur', () => {
- this._renderer.removeClass(this._el.nativeElement, 'active');
- });
- }
- });
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/icons/icon.module.ts b/projects/angular-bootstrap-md/src/lib/free/icons/icon.module.ts
deleted file mode 100644
index 4241d36e..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/icons/icon.module.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { MdbIconComponent } from './icon.component';
-import { NgModule } from '@angular/core';
-import { FabDirective } from './directives/fab.directive';
-import { FarDirective } from './directives/far.directive';
-import { FasDirective } from './directives/fas.directive';
-import { FalDirective } from './directives/fal.directive';
-import { CommonModule } from '@angular/common';
-import { FadDirective } from './directives/fad.directive';
-
-@NgModule({
- declarations: [
- MdbIconComponent,
- FabDirective,
- FarDirective,
- FasDirective,
- FalDirective,
- FadDirective,
- ],
- imports: [CommonModule],
- exports: [MdbIconComponent, FabDirective, FarDirective, FasDirective, FalDirective, FadDirective],
-})
-export class IconsModule {}
diff --git a/projects/angular-bootstrap-md/src/lib/free/icons/index.ts b/projects/angular-bootstrap-md/src/lib/free/icons/index.ts
deleted file mode 100644
index 40cd00a1..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/icons/index.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export { MdbIconComponent } from './icon.component';
-export { FalDirective } from './directives/fal.directive';
-export { FarDirective } from './directives/far.directive';
-export { FasDirective } from './directives/fas.directive';
-export { FabDirective } from './directives/fab.directive';
-export { FadDirective } from './directives/fad.directive';
-
-export { IconsModule } from './icon.module';
diff --git a/projects/angular-bootstrap-md/src/lib/free/input-utilities/_input-utilities.scss b/projects/angular-bootstrap-md/src/lib/free/input-utilities/_input-utilities.scss
deleted file mode 100644
index af070122..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/input-utilities/_input-utilities.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-.error-message,
-.success-message {
- position: absolute;
- top: 40px;
- left: 0;
- font-size: 0.8rem;
-}
-textarea ~ .error-message,
-textarea ~ .success-message {
- top: unset;
- bottom: -20px;
-}
-.error-message {
- color: $input-error-color;
-}
-
-.success-message {
- color: $input-success-color;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/input-utilities/error.directive.ts b/projects/angular-bootstrap-md/src/lib/free/input-utilities/error.directive.ts
deleted file mode 100644
index c0d57714..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/input-utilities/error.directive.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import {
- Input,
- HostBinding,
- OnInit,
- ElementRef,
- Renderer2,
- OnDestroy,
- ViewEncapsulation,
- Component,
-} from '@angular/core';
-import { Utils } from '../utils';
-
-let defaultIdNumber = 0;
-
-@Component({
- selector: 'mdb-error',
- template: ' ',
- styleUrls: ['./input-utilities-module.scss'],
- encapsulation: ViewEncapsulation.None,
-})
-// tslint:disable-next-line:component-class-suffix
-export class MdbErrorDirective implements OnInit, OnDestroy {
- prefix: HTMLElement;
- @Input() id = `mdb-error-${defaultIdNumber++}`;
-
- @HostBinding('class.error-message') errorMsg = true;
- @HostBinding('attr.id') messageId = this.id;
-
- textareaListenFunction: Function;
-
- private utils: Utils = new Utils();
-
- constructor(private el: ElementRef, private renderer: Renderer2) {}
-
- private _calculateMarginTop() {
- const parent = this.el.nativeElement.parentNode.querySelector('.form-check');
- const heightParent = parent ? parent.offsetHeight : null;
- if (heightParent) {
- const margin = heightParent / 12.5;
- this.el.nativeElement.style.top = `${heightParent + heightParent / margin}px`;
- }
- }
-
- ngOnInit() {
- this.prefix = this.el.nativeElement.parentNode.querySelector('.prefix');
- if (this.prefix) {
- this.prefix.classList.add('error-message');
- }
-
- const textarea = this.utils.getClosestEl(this.el.nativeElement, '.md-textarea');
- this._calculateMarginTop();
- if (textarea) {
- let height = textarea.offsetHeight + 4 + 'px';
- this.renderer.setStyle(this.el.nativeElement, 'top', height);
-
- this.textareaListenFunction = this.renderer.listen(textarea, 'keyup', () => {
- height = textarea.offsetHeight + 4 + 'px';
- this.renderer.setStyle(this.el.nativeElement, 'top', height);
- });
- }
- }
-
- ngOnDestroy() {
- if (this.textareaListenFunction) {
- this.textareaListenFunction();
- }
- if (this.prefix) {
- this.prefix.classList.remove('error-message');
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/input-utilities/input-utilities-module.scss b/projects/angular-bootstrap-md/src/lib/free/input-utilities/input-utilities-module.scss
deleted file mode 100644
index 04f774bd..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/input-utilities/input-utilities-module.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-@import '../../assets/scss/core/colors';
-@import '../../assets/scss/core/variables';
-
-@import 'input-utilities';
diff --git a/projects/angular-bootstrap-md/src/lib/free/input-utilities/success.directive.ts b/projects/angular-bootstrap-md/src/lib/free/input-utilities/success.directive.ts
deleted file mode 100644
index ff3577e9..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/input-utilities/success.directive.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import {
- Input,
- HostBinding,
- ElementRef,
- Renderer2,
- OnInit,
- OnDestroy,
- Component,
- ViewEncapsulation,
-} from '@angular/core';
-import { Utils } from '../utils';
-
-let defaultIdNumber = 0;
-
-@Component({
- selector: 'mdb-success',
- template: ' ',
- styleUrls: ['./input-utilities-module.scss'],
- encapsulation: ViewEncapsulation.None,
-})
-// tslint:disable-next-line:component-class-suffix
-export class MdbSuccessDirective implements OnInit, OnDestroy {
- prefix: HTMLElement;
- @Input() id = `mdb-success-${defaultIdNumber++}`;
-
- @HostBinding('class.success-message') successMsg = true;
- @HostBinding('attr.id') messageId = this.id;
-
- textareaListenFunction: Function;
-
- private utils: Utils = new Utils();
-
- constructor(private el: ElementRef, private renderer: Renderer2) {}
-
- private _calculateMarginTop() {
- const parent = this.el.nativeElement.parentNode.querySelector('.form-check');
- const heightParent = parent ? parent.offsetHeight : null;
- if (heightParent) {
- const margin = heightParent / 12.5;
- this.el.nativeElement.style.top = `${heightParent + heightParent / margin}px`;
- }
- }
-
- ngOnInit() {
- this.prefix = this.el.nativeElement.parentNode.querySelector('.prefix');
- if (this.prefix) {
- this.prefix.classList.add('success-message');
- }
-
- const textarea = this.utils.getClosestEl(this.el.nativeElement, '.md-textarea');
-
- this._calculateMarginTop();
- if (textarea) {
- let height = textarea.offsetHeight + 4 + 'px';
- this.renderer.setStyle(this.el.nativeElement, 'top', height);
-
- this.textareaListenFunction = this.renderer.listen(textarea, 'keyup', () => {
- height = textarea.offsetHeight + 4 + 'px';
- this.renderer.setStyle(this.el.nativeElement, 'top', height);
- });
- }
- }
-
- ngOnDestroy() {
- if (this.textareaListenFunction) {
- this.textareaListenFunction();
- }
- if (this.prefix) {
- this.prefix.classList.remove('success-message');
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/input-utilities/validate.directive.ts b/projects/angular-bootstrap-md/src/lib/free/input-utilities/validate.directive.ts
deleted file mode 100644
index a5ea31dd..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/input-utilities/validate.directive.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';
-
-@Directive({
- selector: '[mdbValidate]',
-})
-export class MdbValidateDirective implements OnInit {
- private _validate = true;
- private _validateSuccess = true;
- private _validateError = true;
-
- @Input() mdbValidate: boolean;
- @Input()
- get validate() {
- return this._validate;
- }
- set validate(value: boolean) {
- this._validate = value;
- this.updateErrorClass();
- this.updateSuccessClass();
- }
-
- @Input()
- get validateSuccess() {
- return this._validateSuccess;
- }
- set validateSuccess(value: boolean) {
- this._validateSuccess = value;
- this.updateSuccessClass();
- }
-
- @Input()
- get validateError() {
- return this._validateError;
- }
- set validateError(value: boolean) {
- this._validateError = value;
- this.updateErrorClass();
- this.updateSuccessClass();
- }
-
- constructor(private renderer: Renderer2, private el: ElementRef) {}
-
- updateSuccessClass() {
- if (this.validate && this.validateSuccess) {
- this.renderer.addClass(this.el.nativeElement, 'validate-success');
- } else {
- this.renderer.removeClass(this.el.nativeElement, 'validate-success');
- }
- }
-
- updateErrorClass() {
- if (this.validate && this.validateError) {
- this.renderer.addClass(this.el.nativeElement, 'validate-error');
- } else {
- this.renderer.removeClass(this.el.nativeElement, 'validate-error');
- }
- }
-
- ngOnInit() {
- this.updateSuccessClass();
- this.updateErrorClass();
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/inputs/equal-validator.directive.ts b/projects/angular-bootstrap-md/src/lib/free/inputs/equal-validator.directive.ts
deleted file mode 100755
index 6727fc92..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/inputs/equal-validator.directive.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { Directive, forwardRef, Attribute } from '@angular/core';
-import { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';
-
-@Directive({
- selector:
- '[mdb-validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]',
- providers: [
- { provide: NG_VALIDATORS, useExisting: forwardRef(() => EqualValidatorDirective), multi: true },
- ],
-})
-export class EqualValidatorDirective implements Validator {
- constructor(
- @Attribute('validateEqual') public validateEqual: string,
- @Attribute('reverse') public reverse: string
- ) {}
-
- private get isReverse() {
- if (!this.reverse) {
- return false;
- }
- return this.reverse === 'true' ? true : false;
- }
-
- validate(c: AbstractControl): { [key: string]: any } | null {
- // self value (e.g. retype password)
- const v = c.value;
-
- // control value (e.g. password)
- const e: any = c.root.get(this.validateEqual);
-
- // value not equal
- if (e && v !== e.value) {
- return { validateEqual: false };
- }
-
- // value equal and reverse
- if (e && v === e.value && this.isReverse) {
- delete e.errors['validateEqual'];
- if (!Object.keys(e.errors).length) {
- e.setErrors(null);
- }
- }
-
- // value not equal and reverse
- if (e && v !== e.value && this.isReverse) {
- e.setErrors({
- validateEqual: false,
- });
- }
-
- // return null;
- return null;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/inputs/index.ts b/projects/angular-bootstrap-md/src/lib/free/inputs/index.ts
deleted file mode 100755
index aa37298f..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/inputs/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { InputsModule } from './inputs.module';
-export { EqualValidatorDirective} from './equal-validator.directive';
-export { MdbInputDirective } from './mdb-input.directive';
-export { MdbInput } from './input.directive';
diff --git a/projects/angular-bootstrap-md/src/lib/free/inputs/input.directive.ts b/projects/angular-bootstrap-md/src/lib/free/inputs/input.directive.ts
deleted file mode 100644
index faf62826..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/inputs/input.directive.ts
+++ /dev/null
@@ -1,189 +0,0 @@
-import { isPlatformBrowser } from '@angular/common';
-import {
- Directive,
- ElementRef,
- Renderer2,
- Input,
- AfterViewInit,
- HostListener,
- PLATFORM_ID,
- Inject,
- AfterViewChecked,
-} from '@angular/core';
-import { DOWN_ARROW, UP_ARROW } from '../utils/keyboard-navigation';
-
-@Directive({
- selector: '[mdbInput]',
-})
-// tslint:disable-next-line:directive-class-suffix
-export class MdbInput implements AfterViewChecked, AfterViewInit {
- public elLabel: ElementRef | any = null;
- public elIcon: Element | any = null;
-
- @Input() focusCheckbox = true;
- @Input() focusRadio = true;
-
- isBrowser: any = false;
- isClicked = false;
- element: any = null;
-
- constructor(
- private el: ElementRef,
- private _renderer: Renderer2,
- @Inject(PLATFORM_ID) platformId: string
- ) {
- this.isBrowser = isPlatformBrowser(platformId);
- }
-
- @HostListener('focus') onfocus() {
- try {
- this._renderer.addClass(this.elLabel, 'active');
- this.isClicked = true;
- } catch (error) {}
- }
-
- @HostListener('blur') onblur() {
- try {
- if (this.el.nativeElement.value === '') {
- this._renderer.removeClass(this.elLabel, 'active');
- }
- this.isClicked = false;
- } catch (error) {}
- }
-
- @HostListener('change') onchange() {
- try {
- this.checkValue();
- } catch (error) {}
- }
-
- @HostListener('keydown', ['$event']) onkeydown(event: any) {
- try {
- if (event.target.type === 'number') {
- if (event.shiftKey) {
- switch (event.keyCode) {
- case UP_ARROW:
- event.target.value = +event.target.value + 10;
- break;
- case DOWN_ARROW:
- event.target.value = +event.target.value - 10;
- break;
- }
- }
- if (event.altKey) {
- switch (event.keyCode) {
- case UP_ARROW:
- event.target.value = +event.target.value + 0.1;
- break;
- case DOWN_ARROW:
- event.target.value = +event.target.value - 0.1;
- break;
- }
- }
- }
- } catch (error) {}
- this.delayedResize();
- }
- @HostListener('cut') oncut() {
- try {
- setTimeout(() => {
- this.delayedResize();
- }, 0);
- } catch (error) {}
- }
- @HostListener('paste') onpaste() {
- try {
- setTimeout(() => {
- this.delayedResize();
- }, 0);
- } catch (error) {}
- }
- @HostListener('drop') ondrop() {
- try {
- setTimeout(() => {
- this.delayedResize();
- }, 0);
- } catch (error) {}
- }
-
- ngAfterViewInit() {
- if (this.isBrowser) {
- try {
- this.element = document.querySelector('.md-textarea-auto');
- if (this.element) {
- this.delayedResize();
- }
- } catch (error) {}
- }
- const type = this.el.nativeElement.type;
- if (this.focusCheckbox && type === 'checkbox') {
- this._renderer.addClass(this.el.nativeElement, 'onFocusSelect');
- }
- if (this.focusRadio && type === 'radio') {
- this._renderer.addClass(this.el.nativeElement, 'onFocusSelect');
- }
- }
-
- ngAfterViewChecked() {
- this.initComponent();
- this.checkValue();
- }
-
- resize() {
- if (this.el.nativeElement.classList.contains('md-textarea-auto')) {
- this._renderer.setStyle(this.el.nativeElement, 'height', 'auto');
- this._renderer.setStyle(
- this.el.nativeElement,
- 'height',
- this.el.nativeElement.scrollHeight + 'px'
- );
- }
- }
-
- delayedResize() {
- setTimeout(() => {
- this.resize();
- }, 0);
- }
-
- public initComponent(): void {
- let inputId;
- let inputP;
- if (this.isBrowser) {
- try {
- inputId = this.el.nativeElement.id;
- } catch (err) {}
-
- try {
- inputP = this.el.nativeElement.parentNode;
- } catch (err) {}
-
- this.elLabel =
- inputP.querySelector('label[for="' + inputId + '"]') || inputP.querySelector('label');
- if (this.elLabel && this.el.nativeElement.value !== '') {
- this._renderer.addClass(this.elLabel, 'active');
- }
- this.elIcon = inputP.querySelector('i') || false;
- }
- }
-
- private checkValue(): void {
- let value = '';
- if (this.elLabel != null) {
- value = this.el.nativeElement.value || '';
- if (value === '') {
- this._renderer.removeClass(this.elLabel, 'active');
- if (this.elIcon) {
- this._renderer.removeClass(this.elIcon, 'active');
- }
- }
- if (
- (value === '' && this.isClicked) ||
- (value === '' && this.el.nativeElement.placeholder) ||
- (value === '' && this.el.nativeElement.attributes.placeholder)
- ) {
- this._renderer.addClass(this.elLabel, 'active');
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/inputs/inputs.module.ts b/projects/angular-bootstrap-md/src/lib/free/inputs/inputs.module.ts
deleted file mode 100644
index 8cb8ed0a..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/inputs/inputs.module.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { NgModule, ModuleWithProviders, NO_ERRORS_SCHEMA} from '@angular/core';
-import { EqualValidatorDirective } from './equal-validator.directive';
-import { MdbInputDirective } from './mdb-input.directive';
-import { MdbInput } from './input.directive';
-
-@NgModule({
- declarations: [MdbInput, MdbInputDirective, EqualValidatorDirective],
- exports: [MdbInput, MdbInputDirective, EqualValidatorDirective],
- schemas: [NO_ERRORS_SCHEMA],
-})
-
-export class InputsModule {
- public static forRoot(): ModuleWithProviders {
- return { ngModule: InputsModule, providers: [] };
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/inputs/licens.md b/projects/angular-bootstrap-md/src/lib/free/inputs/licens.md
deleted file mode 100755
index 8e1c25fb..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/inputs/licens.md
+++ /dev/null
@@ -1,3 +0,0 @@
-https://github.com/SebastianM/angular-google-maps/blob/master/LICENSE
-https://www.npmjs.com/package/ng2-completer
-https://github.com/jkuri/ngx-uploader
diff --git a/projects/angular-bootstrap-md/src/lib/free/inputs/mdb-input.directive.ts b/projects/angular-bootstrap-md/src/lib/free/inputs/mdb-input.directive.ts
deleted file mode 100644
index be5543cc..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/inputs/mdb-input.directive.ts
+++ /dev/null
@@ -1,393 +0,0 @@
-import { isPlatformBrowser } from '@angular/common';
-import {
- Directive,
- ElementRef,
- Renderer2,
- Input,
- AfterViewInit,
- HostListener,
- PLATFORM_ID,
- Inject,
- AfterViewChecked,
- OnInit,
- DoCheck,
- OnChanges,
- SimpleChanges,
-} from '@angular/core';
-import { DOWN_ARROW, UP_ARROW } from '../utils/keyboard-navigation';
-
-@Directive({
- selector: '[mdbInputDirective]',
-})
-export class MdbInputDirective
- implements AfterViewChecked, OnInit, AfterViewInit, DoCheck, OnChanges {
- public wrongTextContainer: any;
- public rightTextContainer: any;
- public el: ElementRef | any = null;
- public elLabel: ElementRef | any = null;
- public elIcon: Element | any = null;
-
- element: any = null;
-
- @Input() mdbInputDirective: MdbInputDirective;
- @Input() customRegex: any;
- @Input() mdbValidate = true;
- @Input() validateSuccess = true;
- @Input() validateError = true;
- @Input() focusCheckbox = true;
- @Input() focusRadio = true;
- @Input() errorMessage: string;
- @Input() successMessage: string;
-
- isBrowser: any = false;
- isClicked = false;
-
- constructor(
- private _elRef: ElementRef,
- private _renderer: Renderer2,
- @Inject(PLATFORM_ID) platformId: string
- ) {
- this.isBrowser = isPlatformBrowser(platformId);
- }
-
- @HostListener('focus') onfocus() {
- try {
- this._renderer.addClass(this.elLabel, 'active');
- this.isClicked = true;
- } catch (error) {}
- }
-
- @HostListener('blur') onblur() {
- this.validationFunction();
- try {
- if (this.el.nativeElement.value === '') {
- this._renderer.removeClass(this.elLabel, 'active');
- }
- this.isClicked = false;
- } catch (error) {}
- }
-
- @HostListener('change') onchange() {
- try {
- this.checkValue();
- } catch (error) {}
- }
-
- @HostListener('input') oniput() {
- this.validationFunction();
- }
-
- @HostListener('keydown', ['$event']) onkeydown(event: any) {
- try {
- if (event.target.type === 'number') {
- if (event.shiftKey) {
- switch (event.keyCode) {
- case UP_ARROW:
- event.target.value = +event.target.value + 10;
- break;
- case DOWN_ARROW:
- event.target.value = +event.target.value - 10;
- break;
- }
- }
- if (event.altKey) {
- switch (event.keyCode) {
- case UP_ARROW:
- event.target.value = +event.target.value + 0.1;
- break;
- case DOWN_ARROW:
- event.target.value = +event.target.value - 0.1;
- break;
- }
- }
- }
- } catch (error) {}
- this.delayedResize();
- }
-
- @HostListener('cut') oncut() {
- try {
- setTimeout(() => {
- this.delayedResize();
- }, 0);
- } catch (error) {}
- }
-
- @HostListener('paste') onpaste() {
- try {
- setTimeout(() => {
- this.delayedResize();
- }, 0);
- } catch (error) {}
- }
-
- @HostListener('drop') ondrop() {
- try {
- setTimeout(() => {
- this.delayedResize();
- }, 0);
- } catch (error) {}
- }
-
- updateErrorMsg(value: string) {
- if (this.wrongTextContainer) {
- this.wrongTextContainer.innerHTML = value;
- }
- }
-
- updateSuccessMsg(value: string) {
- if (this.rightTextContainer) {
- this.rightTextContainer.innerHTML = value;
- }
- }
-
- ngOnInit() {
- try {
- setTimeout(() => {
- this.delayedResize();
- }, 0);
- } catch (error) {
- console.log(error);
- }
-
- // Inititalise a new wrong/right elements and render it below the host component.
- if (this.mdbValidate) {
- this.wrongTextContainer = this._renderer.createElement('span');
- this._renderer.addClass(this.wrongTextContainer, 'inputVal');
- this._renderer.addClass(this.wrongTextContainer, 'text-danger');
- this._renderer.appendChild(this._elRef.nativeElement.parentElement, this.wrongTextContainer);
- const textWrong = this._elRef.nativeElement.getAttribute('data-error');
- this.wrongTextContainer.innerHTML = textWrong ? textWrong : 'wrong';
- if (!textWrong && this.errorMessage !== undefined) {
- this.wrongTextContainer.innerHTML = this.errorMessage;
- }
- this._renderer.setStyle(this.wrongTextContainer, 'visibility', 'hidden');
-
- this.rightTextContainer = this._renderer.createElement('span');
- this._renderer.addClass(this.rightTextContainer, 'inputVal');
- this._renderer.addClass(this.rightTextContainer, 'text-success');
- this._renderer.appendChild(this._elRef.nativeElement.parentElement, this.rightTextContainer);
- const textSuccess = this._elRef.nativeElement.getAttribute('data-success');
- this.rightTextContainer.innerHTML = textSuccess ? textSuccess : 'success';
- if (!textSuccess && this.successMessage !== undefined) {
- this.rightTextContainer.innerHTML = this.successMessage;
- }
- this._renderer.setStyle(this.rightTextContainer, 'visibility', 'hidden');
- }
- }
-
- ngOnChanges(changes: SimpleChanges) {
- if (changes.hasOwnProperty('errorMessage')) {
- const newErrorMsg = changes.errorMessage.currentValue;
- this.updateErrorMsg(newErrorMsg);
- }
-
- if (changes.hasOwnProperty('successMessage')) {
- const newSuccessMsg = changes.successMessage.currentValue;
- this.updateSuccessMsg(newSuccessMsg);
- }
- }
-
- ngDoCheck() {
- if (
- this.mdbValidate &&
- this._elRef.nativeElement.classList.contains('ng-valid') &&
- this._elRef.nativeElement.classList.contains('ng-dirty') &&
- !this._elRef.nativeElement.classList.contains('counter-success')
- ) {
- this._renderer.addClass(this._elRef.nativeElement, 'counter-success');
- this._renderer.setStyle(this.wrongTextContainer, 'visibility', 'hidden');
- this._renderer.setStyle(this.rightTextContainer, 'visibility', 'visible');
- this._renderer.setStyle(
- this.rightTextContainer,
- 'top',
- this._elRef.nativeElement.offsetHeight + 'px'
- );
- this._renderer.setStyle(
- this.wrongTextContainer,
- 'top',
- this._elRef.nativeElement.offsetHeight + 'px'
- );
- }
- if (
- this.mdbValidate &&
- this._elRef.nativeElement.classList.contains('ng-invalid') &&
- this._elRef.nativeElement.classList.contains('ng-dirty') &&
- !this._elRef.nativeElement.classList.contains('counter-danger')
- ) {
- this._renderer.addClass(this._elRef.nativeElement, 'counter-danger');
- this._renderer.setStyle(this.rightTextContainer, 'visibility', 'hidden');
- this._renderer.setStyle(this.wrongTextContainer, 'visibility', 'visible');
- this._renderer.setStyle(
- this.rightTextContainer,
- 'top',
- this._elRef.nativeElement.offsetHeight + 'px'
- );
- this._renderer.setStyle(
- this.wrongTextContainer,
- 'top',
- this._elRef.nativeElement.offsetHeight + 'px'
- );
- }
- if (
- (this._elRef.nativeElement.classList.contains('ng-invalid') &&
- this._elRef.nativeElement.classList.contains('ng-pristine') &&
- this._elRef.nativeElement.classList.contains('ng-untouched')) ||
- this._elRef.nativeElement.disabled
- ) {
- if (this._elRef.nativeElement.classList.contains('counter-success')) {
- this._renderer.removeClass(this._elRef.nativeElement, 'counter-success');
- this._renderer.setStyle(this.rightTextContainer, 'visibility', 'hidden');
- } else if (this._elRef.nativeElement.classList.contains('counter-danger')) {
- this._renderer.removeClass(this._elRef.nativeElement, 'counter-danger');
- this._renderer.setStyle(this.wrongTextContainer, 'visibility', 'hidden');
- }
- }
- if (!this.validateSuccess) {
- this._renderer.removeClass(this._elRef.nativeElement, 'counter-success');
- this._renderer.setStyle(this.rightTextContainer, 'display', 'none');
- if (this._elRef.nativeElement.classList.contains('ng-valid')) {
- this._renderer.removeClass(this._elRef.nativeElement, 'counter-danger');
- }
- }
-
- if (!this.validateError) {
- this._renderer.removeClass(this._elRef.nativeElement, 'counter-danger');
- this._renderer.setStyle(this.wrongTextContainer, 'display', 'none');
- if (this._elRef.nativeElement.classList.contains('ng-invalid')) {
- this._renderer.removeClass(this._elRef.nativeElement, 'counter-success');
- }
- }
- }
-
- validationFunction() {
- setTimeout(() => {
- if (this._elRef.nativeElement.classList.contains('ng-invalid')) {
- this._renderer.removeClass(this._elRef.nativeElement, 'counter-success');
- this._renderer.removeClass(this._elRef.nativeElement, 'counter-danger');
- }
- if (
- this._elRef.nativeElement.classList.contains('ng-touched') &&
- this._elRef.nativeElement.classList.contains('ng-invalid')
- ) {
- if (this.mdbValidate) {
- this._renderer.addClass(this._elRef.nativeElement, 'counter-danger');
- this._renderer.setStyle(this.rightTextContainer, 'visibility', 'hidden');
- this._renderer.setStyle(this.wrongTextContainer, 'visibility', 'visible');
- this._renderer.setStyle(
- this.rightTextContainer,
- 'top',
- this._elRef.nativeElement.offsetHeight + 'px'
- );
- this._renderer.setStyle(
- this.wrongTextContainer,
- 'top',
- this._elRef.nativeElement.offsetHeight + 'px'
- );
- }
- } else if (
- this._elRef.nativeElement.classList.contains('ng-touched') &&
- this._elRef.nativeElement.classList.contains('ng-valid')
- ) {
- if (this.mdbValidate) {
- this._renderer.addClass(this._elRef.nativeElement, 'counter-success');
- this._renderer.setStyle(this.rightTextContainer, 'visibility', 'visible');
- this._renderer.setStyle(this.wrongTextContainer, 'visibility', 'hidden');
- this._renderer.setStyle(
- this.rightTextContainer,
- 'top',
- this._elRef.nativeElement.offsetHeight + 'px'
- );
- this._renderer.setStyle(
- this.wrongTextContainer,
- 'top',
- this._elRef.nativeElement.offsetHeight + 'px'
- );
- }
- }
- }, 0);
- }
-
- ngAfterViewInit() {
- if (this.isBrowser) {
- try {
- this.element = document.querySelector('.md-textarea-auto');
- } catch (error) {}
- }
- const type = this.el.nativeElement.type;
- if (this.focusCheckbox && type === 'checkbox') {
- this._renderer.addClass(this.el.nativeElement, 'onFocusSelect');
- }
- if (this.focusRadio && type === 'radio') {
- this._renderer.addClass(this.el.nativeElement, 'onFocusSelect');
- }
- }
-
- ngAfterViewChecked() {
- this.initComponent();
- this.checkValue();
- }
-
- resize() {
- if (this.el.nativeElement.classList.contains('md-textarea-auto')) {
- this._renderer.setStyle(this.el.nativeElement, 'height', 'auto');
- this._renderer.setStyle(
- this.el.nativeElement,
- 'height',
- this.el.nativeElement.scrollHeight + 'px'
- );
- }
- }
-
- delayedResize() {
- setTimeout(() => {
- this.resize();
- }, 0);
- }
-
- public initComponent(): void {
- let inputId;
- let inputP;
- if (this.isBrowser) {
- try {
- inputId = this.el.nativeElement.id;
- } catch (err) {}
-
- try {
- inputP = this.el.nativeElement.parentNode;
- } catch (err) {}
-
- this.elLabel =
- inputP.querySelector('label[for="' + inputId + '"]') || inputP.querySelector('label');
- if (this.elLabel && this.el.nativeElement.value !== '') {
- this._renderer.addClass(this.elLabel, 'active');
- }
- this.elIcon = inputP.querySelector('i') || false;
-
- if (this.elIcon) {
- this._renderer.addClass(this.elIcon, 'active');
- }
- }
- }
-
- private checkValue(): void {
- let value = '';
- if (this.elLabel != null) {
- value = this.el.nativeElement.value || '';
- if (value === '') {
- this._renderer.removeClass(this.elLabel, 'active');
- if (this.elIcon) {
- this._renderer.removeClass(this.elIcon, 'active');
- }
- // tslint:disable-next-line:max-line-length
- }
- if (
- (value === '' && this.isClicked) ||
- (value === '' && this.el.nativeElement.placeholder) ||
- (value === '' && this.el.nativeElement.attributes.placeholder)
- ) {
- this._renderer.addClass(this.elLabel, 'active');
- }
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/mdb-free.module.ts b/projects/angular-bootstrap-md/src/lib/free/mdb-free.module.ts
deleted file mode 100755
index 584b0009..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/mdb-free.module.ts
+++ /dev/null
@@ -1,183 +0,0 @@
-// free
-import { ModuleWithProviders, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
-
-import { CardsModule } from './cards/cards.module';
-import { ButtonsModule } from './buttons/buttons.module';
-import { NavbarModule } from './navbars/navbar.module';
-import { DropdownModule } from './dropdown/dropdown.module';
-import { CarouselModule } from './carousel/carousel.module';
-import { ChartsModule } from './charts/chart.module';
-import { CollapseModule } from './collapse/collapse.module';
-import { ModalModule } from './modals/modal.module';
-import { TooltipModule } from './tooltip/tooltip.module';
-import { PopoverModule } from './popover/popover.module';
-import { InputsModule } from './inputs/inputs.module';
-import { WavesModule } from './waves/waves.module';
-import { IconsModule } from './icons/icon.module';
-import { CheckboxModule } from './checkbox/checkbox.module';
-import { TableModule } from './tables/tables.module';
-import { BadgeModule } from './badge/badge.module';
-import { BreadcrumbModule } from './breadcrumbs/breadcrumb.module';
-import { InputUtilitiesModule } from './input-utilities/input-utilities.module';
-import { StickyHeaderModule } from './sticky-header/sticky-header.module';
-
-export { StickyHeaderDirective, StickyHeaderModule } from './sticky-header/index';
-
-export {
- MdbErrorDirective,
- MdbSuccessDirective,
- MdbValidateDirective,
- InputUtilitiesModule,
-} from './input-utilities/index';
-
-export {
- MdbBreadcrumbComponent,
- MdbBreadcrumbItemComponent,
- BreadcrumbModule,
-} from './breadcrumbs/index';
-
-export { MDBBadgeComponent, BadgeModule } from './badge/index';
-
-export {
- MdbTablePaginationComponent,
- MdbTableRowDirective,
- MdbTableScrollDirective,
- MdbTableSortDirective,
- MdbTableDirective,
- MdbTableService,
- TableModule,
-} from './tables/index';
-
-export { CHECKBOX_VALUE_ACCESSOR, CheckboxComponent, CheckboxModule } from './checkbox/index';
-
-export {
- ButtonsModule,
- ButtonRadioDirective,
- ButtonCheckboxDirective,
- MdbBtnDirective,
- FixedButtonCaptionDirective,
-} from './buttons/index';
-
-export {
- CardsModule,
- MdbCardComponent,
- MdbCardBodyComponent,
- MdbCardImageComponent,
- MdbCardTextComponent,
- MdbCardTitleComponent,
- MdbCardFooterComponent,
- MdbCardHeaderComponent,
-} from './cards/index';
-
-export { WavesModule, WavesDirective } from './waves/index';
-
-export { InputsModule, MdbInputDirective, MdbInput } from './inputs/index';
-
-export { NavbarModule } from './navbars/index';
-
-export {
- BsDropdownConfig,
- BsDropdownContainerComponent,
- BsDropdownDirective,
- BsDropdownMenuDirective,
- DropdownModule,
- BsDropdownState,
- BsDropdownToggleDirective,
-} from './dropdown/index';
-
-export { CarouselComponent, CarouselConfig, CarouselModule } from './carousel/index';
-
-export { ChartsModule, BaseChartDirective } from './charts/index';
-
-export { CollapseComponent, CollapseModule } from './collapse/index';
-
-export {
- ModalBackdropComponent,
- ModalBackdropOptions,
- ModalDirective,
- ModalModule,
- ModalOptions,
- MDBModalService,
- ModalContainerComponent,
- MDBModalRef,
-} from './modals/index';
-
-export {
- TooltipConfig,
- TooltipContainerComponent,
- TooltipDirective,
- TooltipModule,
-} from './tooltip/index';
-
-export {
- PopoverConfig,
- PopoverContainerComponent,
- PopoverModule,
- PopoverDirective,
-} from './popover/index';
-
-export {
- IconsModule,
- MdbIconComponent,
- FalDirective,
- FarDirective,
- FasDirective,
- FabDirective,
- FadDirective
-} from './icons/index';
-
-const MODULES = [
- ButtonsModule,
- CardsModule,
- WavesModule,
- InputsModule,
- NavbarModule,
- DropdownModule,
- CarouselModule,
- ChartsModule,
- CollapseModule,
- ModalModule,
- TooltipModule,
- PopoverModule,
- IconsModule,
- CheckboxModule,
- TableModule,
- BadgeModule,
- BreadcrumbModule,
- InputUtilitiesModule,
- StickyHeaderModule,
-];
-
-@NgModule({
- imports: [
- ButtonsModule,
- WavesModule.forRoot(),
- InputsModule.forRoot(),
- NavbarModule,
- DropdownModule.forRoot(),
- CarouselModule.forRoot(),
- ChartsModule,
- CollapseModule.forRoot(),
- ModalModule.forRoot(),
- TooltipModule.forRoot(),
- PopoverModule.forRoot(),
- IconsModule,
- CardsModule.forRoot(),
- CheckboxModule,
- TableModule,
- BadgeModule,
- BreadcrumbModule,
- InputUtilitiesModule,
- StickyHeaderModule,
- ],
- exports: MODULES,
- schemas: [NO_ERRORS_SCHEMA],
-})
-export class MDBRootModule {}
-
-@NgModule({ exports: MODULES })
-export class MDBBootstrapModule {
- public static forRoot(): ModuleWithProviders {
- return { ngModule: MDBRootModule };
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/_modals.scss b/projects/angular-bootstrap-md/src/lib/free/modals/_modals.scss
deleted file mode 100644
index 7c0968e7..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/modals/_modals.scss
+++ /dev/null
@@ -1,995 +0,0 @@
-// Modals
-// Styles for body
-body {
- &.modal-open {
- overflow: auto;
- }
- &.scrollable {
- overflow-y: auto;
- }
-}
-
-// *** ENHANCED BOOTSTRAP MODALS ***///
-// General styles
-.modal-dialog {
- .modal-content {
- box-shadow: $z-depth-1-half;
- border: 0;
- border-radius: $border-radius-base;
- .modal-header {
- border-top-left-radius: $border-radius-base;
- border-top-right-radius: $border-radius-base;
- }
- }
- // Cascading modals
- &.cascading-modal {
- margin-top: 10%;
- .close {
- opacity: 1;
- text-shadow: none;
- color: $white-base;
- outline: 0;
- }
- // Cascading header
- .modal-header {
- box-shadow: $z-depth-1-half;
- margin: $cascading-modal-margin-top $cascading-modal-margin-right
- $cascading-modal-margin-bottom $cascading-modal-margin-left;
- border: none;
- border-radius: $border-radius-base;
- padding: $cascading-modal-padding;
- text-align: center;
- .close {
- margin-right: $cascading-modal-close-margin-right;
- }
- .title {
- margin-bottom: 0;
- width: 100%;
- font-size: $cascading-modal-font-size;
- .fas,
- .fab,
- .far {
- margin-right: $cascading-modal-fa-margin-right;
- }
- }
- .social-buttons {
- margin-top: $cascading-modal-social-margin-top;
- a {
- font-size: $cascading-modal-a-font-size;
- }
- }
- }
- // Cascading tabs nav
- .modal-c-tabs {
- .md-tabs {
- box-shadow: $z-depth-1;
- margin: $cascading-modal-tabs-margin-top $cascading-modal-tabs-margin-x 0
- $cascading-modal-tabs-margin-x;
- display: flex;
- li {
- flex: 1;
- a {
- text-align: center;
- }
- }
- }
- .tab-content {
- padding: $cascading-modal-tabs-padding-top 0 0 0;
- box-shadow: unset;
- }
- //.md-tabs {
- // border-radius: $md-card-border-radius;
- // .nav-item {
- // .nav-link {
- // border-radius: $md-card-border-radius;
- // background-color: inherit;
- // color: $white-base;
- // }
- // }
- //}
- }
- // Footer customization
- .modal-body,
- .modal-footer {
- padding-left: $modal-body-padding-left;
- padding-right: $modal-body-padding-right;
- color: $grey-darken-2;
- .additional-option {
- margin-top: $modal-body-margin-top;
- text-align: center;
- }
- }
- // Cascading avatar
- &.modal-avatar {
- margin-top: $modal-avatar-margin-top;
- .modal-header {
- box-shadow: none;
- @extend .img-fluid;
- margin: $modal-avatar-header-margin-top 0 $modal-avatar-header-margin-bottom;
- img {
- width: $modal-avatar-img-width;
- box-shadow: $z-depth-2;
- margin-left: auto;
- margin-right: auto;
- }
- }
- }
- }
- // Modal notify
- &.modal-notify {
- .heading {
- margin: 0;
- padding: $modal-notify-heading-padding;
- font-size: $modal-notify-font-size;
- color: $white-base;
- }
- .modal-header {
- box-shadow: $z-depth-1;
- border: 0;
- }
- .close {
- opacity: 1;
- }
- .modal-body {
- padding: $modal-notify-body-padding;
- color: $grey-darken-2;
- }
- @each $name, $color in $basic {
- &.modal-#{$name} {
- .modal-header {
- background-color: $color;
- }
- .fas,
- .fab,
- .far {
- color: $color;
- }
- .badge {
- background-color: $color;
- }
- .btn {
- .fas,
- .fab,
- .far {
- color: #fff;
- }
- &.btn-outline-#{$name} {
- .fas,
- .fab,
- .far {
- color: $color;
- }
- }
- }
- }
- }
- }
-}
-
-// Position & Size
-.modal {
- padding-right: 0 !important;
- .modal-dialog {
- @media (min-width: 768px) {
- &.modal-top {
- top: 0;
- }
- &.modal-left {
- left: 0;
- }
- &.modal-right {
- right: 0;
- }
- &.modal-bottom {
- bottom: 0;
- }
- &.modal-top-left {
- top: $modal-distance;
- left: $modal-distance;
- }
- &.modal-top-right {
- top: $modal-distance;
- right: $modal-distance;
- }
- &.modal-bottom-left {
- bottom: $modal-distance;
- left: $modal-distance;
- }
- &.modal-bottom-right {
- bottom: $modal-distance;
- right: $modal-distance;
- }
- }
- }
- &.fade {
- &.top:not(.show) .modal-dialog {
- transform: $modal-fade-top-transform;
- }
- &.left:not(.show) .modal-dialog {
- transform: $modal-fade-left-transform;
- }
- &.right:not(.show) .modal-dialog {
- transform: $modal-fade-right-transform;
- }
- &.bottom:not(.show) .modal-dialog {
- transform: $modal-fade-bottom-transform;
- }
- }
- @media (min-width: $medium-screen) {
- &.modal-scrolling {
- position: relative;
- .modal-dialog {
- position: fixed;
- z-index: 1050;
- }
- }
- &.modal-content-clickable {
- top: auto;
- bottom: auto;
- .modal-dialog {
- position: fixed;
- }
- }
- .modal-fluid {
- width: 100%;
- max-width: 100%;
- .modal-content {
- width: 100%;
- }
- }
- .modal-frame {
- position: absolute;
- margin: 0 !important;
- width: 100%;
- max-width: 100% !important;
- &.modal-bottom {
- bottom: 0;
- }
- &.modal-dialog {
- height: inherit;
- }
- }
- .modal-full-height {
- position: absolute;
- display: flex;
- margin: 0;
- width: $modal-width;
- min-height: 100%;
- height: auto;
- min-height: 100%;
- top: 0;
- right: 0;
- &.modal-top,
- &.modal-bottom {
- display: block;
- width: 100%;
- max-width: 100%;
- height: auto;
- }
- &.modal-top {
- bottom: auto;
- }
- &.modal-bottom {
- min-height: 0;
- top: auto;
- }
- .modal-content {
- width: 100%;
- }
- &.modal-lg {
- width: 90%;
- max-width: 90%;
- @media (min-width: $medium-screen) {
- width: $modal-full-height-medium-screen;
- max-width: $modal-full-height-medium-screen;
- }
- @media (min-width: $large-screen) {
- width: $modal-full-height-large-screen;
- max-width: $modal-full-height-large-screen;
- }
- }
- }
- .modal-side {
- position: absolute;
- bottom: $modal-distance;
- right: $modal-distance;
- margin: 0;
- width: $modal-width;
- }
- }
-}
-
-// Angular styles
-/* You can add global styles to this file, and also import other style files */
-
-// Distance
-$modal-distance: 10px;
-$modal-info-color: #5394ff;
-$modal-success-color: #01d36b;
-$modal-warning-color: #ff8e38;
-$modal-danger-color: #ff4b4b;
-
-// Styles for body
-body {
- &.scrollable {
- overflow-y: auto;
- }
-}
-
-// *** ENHANCED BOOTSTRAP MODALS ***///
-// General styles
-.modal-dialog {
- .modal-content {
- // @include border-radius(2px);
- // @extend .z-depth-1-half;
- border: 0;
- }
-}
-
-// Position & Size
-.modal {
- padding-right: 0 !important;
-
- .modal-dialog {
- @media (min-width: 768px) {
- &.modal-top {
- top: 0;
- left: 0;
- right: 0;
- }
- &.modal-left {
- left: 0;
- }
- &.modal-right {
- right: 0;
- }
- &.modal-bottom > .modal-content {
- position: absolute;
- bottom: 0;
- }
- &.modal-top-left {
- top: $modal-distance;
- left: $modal-distance;
- }
- &.modal-top-right {
- top: $modal-distance;
- right: $modal-distance;
- }
- &.modal-bottom-left {
- left: $modal-distance;
- bottom: $modal-distance;
- }
- &.modal-bottom-right {
- right: $modal-distance;
- bottom: $modal-distance;
- }
- }
- }
-
- .modal-side {
- &.modal-top {
- top: 0;
- }
-
- &.modal-left {
- left: 0;
- }
-
- &.modal-right {
- right: 0;
- }
-
- &.modal-bottom {
- bottom: 0;
- }
-
- &.modal-top-left {
- top: $modal-distance;
- left: $modal-distance;
- }
-
- &.modal-top-right {
- top: $modal-distance;
- right: $modal-distance;
- }
-
- &.modal-bottom-left {
- left: $modal-distance;
- bottom: $modal-distance;
- }
-
- &.modal-bottom-right {
- right: $modal-distance;
- bottom: $modal-distance;
- }
- }
-
- &.fade {
- &.top:not(.show) .modal-dialog {
- transform: translate3d(0, -25%, 0);
- }
-
- &.left:not(.show) .modal-dialog {
- transform: translate3d(-25%, 0, 0);
- }
-
- &.right:not(.show) .modal-dialog {
- transform: translate3d(25%, 0, 0);
- }
-
- &.bottom:not(.show) .modal-dialog {
- transform: translate3d(0, 25%, 0);
- }
-
- &.in {
- opacity: 1;
-
- .modal-dialog {
- // -webkit-transform: translate(0, 0);
- transform: translate(0, 0);
-
- .relative {
- display: inline-block;
- // transform: translate3d(0, 0, 0);
- }
- }
- }
- }
-
- &.modal-scrolling {
- position: relative;
-
- .modal-dialog {
- position: fixed;
- z-index: 1050;
- }
- }
-
- &.modal-content-clickable {
- top: auto;
- bottom: auto;
-
- .modal-dialog {
- position: fixed;
- }
- }
-
- .modal-fluid {
- width: 100%;
- max-width: 100%;
-
- .modal-content {
- width: 100%;
- }
- }
-
- .modal-frame {
- position: absolute;
- width: 100%;
- max-width: 100%;
- margin: 0;
- @media (max-width: 767px) {
- padding: 0.5rem;
- }
- &.modal-bottom {
- bottom: 0;
- }
- }
-
- .modal-full-height {
- display: flex;
- position: absolute;
- width: 400px;
- min-height: 100%;
- margin: 0;
- top: 0;
- // bottom: 0;
- right: 0;
- @media (max-width: 576px) {
- width: 100%;
- padding: 0.5rem;
- }
-
- @media (max-width: 992px) {
- width: 100%;
- height: unset;
- position: unset;
- }
-
- &.modal-top,
- &.modal-left,
- &.modal-right {
- @media (max-width: 992px) {
- margin: 1.75rem auto;
- min-height: unset;
- }
- }
-
- &.modal-bottom {
- @media (max-width: 768px) {
- margin-top: 1.75rem;
- }
- @media (min-width: 768px) and (max-width: 992px) {
- margin-bottom: 1.75rem;
- .modal-content {
- bottom: 1rem;
- }
- }
- }
-
- &.modal-top,
- &.modal-bottom,
- &.modal-left,
- &.modal-right {
- @media (max-width: 992px) {
- margin-left: auto;
- margin-right: auto;
- }
- }
-
- &.modal-top,
- &.modal-bottom {
- display: block;
- width: 100%;
- height: auto;
- }
- &.modal-top {
- bottom: auto;
- }
-
- &.modal-bottom {
- bottom: 0;
- }
-
- .modal-content {
- width: 100%;
- }
-
- &.modal-lg {
- max-width: 90%;
- width: 90%;
- @media (min-width: 992px) {
- max-width: 800px;
- width: 800px;
- }
- @media (min-width: 1200px) {
- max-width: 1000px;
- width: 1000px;
- }
- }
- }
-
- .modal-side {
- position: absolute;
- right: $modal-distance;
- bottom: $modal-distance;
- margin: 0;
- min-width: 100px;
- @media (max-width: 768px) {
- padding-left: 0.5rem;
- }
- }
-}
-
-// Styles
-.modal-dialog {
- // Cascading modals
- &.cascading-modal {
- margin-top: 10%;
- // Cascading header
- .modal-header {
- text-align: center;
- margin: -2rem 1rem 1rem 1rem;
- padding: 1.5rem;
- border: none;
- flex-direction: column;
- // @extend .z-depth-1-half;
- // @include border-radius(3px);
- .close {
- margin-right: 2.5rem;
- }
-
- &.white-text {
- .close {
- color: #fff;
- opacity: 1;
- }
- }
-
- .title {
- width: 100%;
- margin-bottom: 0;
- font-size: 1.25rem;
-
- .fa {
- margin-right: 9px;
- }
- }
-
- .social-buttons {
- margin-top: 1.5rem;
-
- a {
- font-size: 1rem;
- }
- }
- }
-
- // Cascading tabs nav
- .modal-c-tabs {
- .md-tabs {
- margin: -1.5rem 1rem 0 1rem;
- // @extend .z-depth-1;
- }
-
- .tab-content {
- padding: 1.7rem 0 0 0;
- }
- }
-
- // Footer customization
- .modal-body,
- .modal-footer {
- color: #616161;
- padding-right: 2rem;
- padding-left: 2rem;
-
- .additional-option {
- text-align: center;
- margin-top: 1rem;
- }
- }
-
- // Cascading avatar
- &.modal-avatar {
- margin-top: 6rem;
-
- .modal-header {
- // @extend .z-depth-0;
- // @extend .img-fluid;
- margin: -6rem 2rem -1rem 2rem;
-
- img {
- width: 130px;
- // @extend .z-depth-2;
- }
- }
- }
- }
-
- // Modal notify
- &.modal-notify {
- .heading {
- margin: 0;
- padding: 0.3rem;
- color: #fff;
- font-size: 1.15rem;
- }
-
- .modal-header {
- // @extend .z-depth-1;
- border: 0;
- }
-
- .close {
- opacity: 1;
- }
-
- .modal-body {
- padding: 1.5rem;
- color: #616161;
- }
-
- .btn-outline-secondary-modal {
- background-color: transparent;
- }
-
- // Modal info
- &.modal-info {
- .modal-header {
- background-color: $modal-info-color;
- }
-
- .fa {
- color: $modal-info-color;
- }
-
- .badge {
- background-color: $modal-info-color;
- }
-
- .btn-primary-modal {
- background: $modal-info-color;
-
- &:hover,
- &:focus,
- &:active {
- background-color: lighten($modal-info-color, 5%) !important;
- }
-
- &.active {
- background-color: darken($modal-info-color, 20%) !important;
- // @extend .z-depth-1-half;
- }
- }
-
- .btn-outline-secondary-modal {
- border: 2px solid $modal-info-color;
- color: $modal-info-color !important;
- }
- }
-
- // Modal warning
- &.modal-warning {
- .modal-header {
- background-color: $modal-warning-color;
- }
-
- .fa {
- color: $modal-warning-color;
- }
-
- .badge {
- background-color: $modal-warning-color;
- }
-
- .btn-primary-modal {
- background: $modal-warning-color;
-
- &:hover,
- &:focus,
- &:active {
- background-color: lighten($modal-warning-color, 5%) !important;
- }
-
- &.active {
- background-color: darken($modal-warning-color, 20%) !important;
- // @extend .z-depth-1-half;
- }
- }
-
- .btn-outline-secondary-modal {
- border: 2px solid $modal-warning-color;
- color: $modal-warning-color !important;
- }
- }
-
- // Modal success
- &.modal-success {
- .modal-header {
- background-color: $modal-success-color;
- }
-
- .fa {
- color: $modal-success-color;
- }
-
- .badge {
- background-color: $modal-success-color;
- }
-
- .btn-primary-modal {
- background: $modal-success-color;
-
- &:hover,
- &:focus,
- &:active {
- background-color: lighten($modal-success-color, 5%) !important;
- }
-
- &.active {
- background-color: darken($modal-success-color, 20%) !important;
- // @extend .z-depth-1-half;
- }
- }
-
- .btn-outline-secondary-modal {
- border: 2px solid $modal-success-color;
- color: $modal-success-color !important;
- }
- }
-
- // Modal danger
- &.modal-danger {
- .modal-header {
- background-color: $modal-danger-color;
- }
-
- .fa {
- color: $modal-danger-color;
- }
-
- .badge {
- background-color: $modal-danger-color;
- }
-
- .btn-primary-modal {
- background: $modal-danger-color;
-
- &:hover,
- &:focus,
- &:active {
- background-color: lighten($modal-danger-color, 5%) !important;
- }
-
- &.active {
- background-color: darken($modal-danger-color, 20%) !important;
- // @extend .z-depth-1-half;
- }
- }
-
- .btn-outline-secondary-modal {
- border: 2px solid $modal-danger-color;
- color: $modal-danger-color !important;
- }
- }
- }
-}
-
-.modal-sm .modal-content {
- margin: 0 auto;
- max-width: 300px;
-}
-
-@media (min-width: 768px) {
- .modal-sm {
- // max-width: 100%;
- max-width: 300px;
- }
-}
-
-.modal .modal-fluid,
-.modal .modal-frame {
- width: 100%;
- max-width: 100%;
-}
-
-/*********************
- Modals
-**********************/
-
-// Modal Login & Modal Register
-.modal-ext .modal-content {
- .modal-header {
- text-align: center;
- }
-
- .options {
- float: left;
- }
-
- .modal-body .text-xs-center fieldset {
- margin-top: 20px;
- }
-
- .call {
- margin-top: 1rem;
- }
-
- .modal-body {
- padding: 2rem 2rem 1rem 2rem;
- }
-}
-
-.modal-content:not(.card-image) {
- .close {
- position: absolute;
- right: 15px;
- }
-}
-
-// Modal Cart
-.modal-cart {
- li p {
- margin: 5px;
- font-weight: 400;
-
- .badge {
- margin-left: 10px;
- margin-top: 3px;
- font-weight: 400;
- position: absolute;
- }
-
- .quantity {
- font-size: 16px;
- margin-right: 7px;
- font-weight: 300;
- }
- }
-
- .cartPageLink {
- margin-left: 10px;
-
- a {
- text-decoration: underline;
- color: #666;
- }
- }
-
- .total {
- float: right;
- font-weight: 400;
- }
-}
-
-// Modals normalize
-.cf-phone {
- margin-left: 7px;
-}
-
-// Container that the modal scrolls within
-.side-modal {
- position: fixed;
- width: 400px;
- height: 100%;
- width: 100%;
- z-index: 9999;
- // Shell div to position the modal with bottom padding
- .modal-dialog {
- position: absolute;
- bottom: 10px;
- right: 10px;
- width: 400px;
- margin: 10px;
- // @extend .z-depth-1-half;
- @media (max-width: 760px) {
- display: none;
- }
- }
-
- // Actual modal
- .modal-header {
- padding: 1rem;
-
- .heading {
- margin: 0;
- padding: 0;
- }
- }
-
- .modal-content {
- border: none;
- }
-
- // Modal background
-}
-.modal-dynamic > :first-child {
- display: flex;
- flex-direction: column;
- height: 100%;
-}
-
-.side-modal.fade:not(.show) .modal-dialog {
- -webkit-transform: translate3d(25%, 0, 0);
- transform: translate3d(25%, 0, 0);
-}
-
-// Transparent backdrop
-.transparent-bd {
- opacity: 0 !important;
-}
-
-.modal-backdrop.in {
- opacity: 0.5;
-}
-
-.modal-backdrop {
- opacity: 0.5;
-}
-
-#exampleModalScroll {
- overflow-x: hidden;
- overflow-y: auto;
-}
-
-.modal-open .modal {
- overflow-x: hidden;
- overflow-y: hidden;
-}
-
-.form-dark {
- .card-image {
- background-size: 100%;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/index.ts b/projects/angular-bootstrap-md/src/lib/free/modals/index.ts
deleted file mode 100755
index d9407229..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/modals/index.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export { ModalBackdropComponent, ModalBackdropOptions } from './modalBackdrop.component';
-export { ModalOptions, MDBModalRef } from './modal.options';
-export { ModalDirective } from './modal.directive';
-export { ModalModule } from './modal.module';
-export { MDBModalService } from './modal.service';
-export { ModalContainerComponent } from './modalContainer.component';
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/licens.md b/projects/angular-bootstrap-md/src/lib/free/modals/licens.md
deleted file mode 100755
index 68dc12fd..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/modals/licens.md
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/valor-software/ngx-bootstrap/blob/development/LICENSE
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/modal.directive.ts b/projects/angular-bootstrap-md/src/lib/free/modals/modal.directive.ts
deleted file mode 100755
index ca9a7c72..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/modals/modal.directive.ts
+++ /dev/null
@@ -1,406 +0,0 @@
-import {
- AfterViewInit,
- Component,
- ComponentRef,
- ElementRef,
- EventEmitter,
- HostListener,
- Input,
- OnDestroy,
- OnChanges,
- Output,
- Renderer2,
- ViewContainerRef,
- ViewEncapsulation,
-} from '@angular/core';
-
-import { document, navigator, window } from '../utils/facade/browser';
-
-import { isBs3 } from '../utils/ng2-bootstrap-config';
-import { Utils } from '../utils/utils.class';
-import { ModalBackdropComponent } from './modalBackdrop.component';
-import { ClassName, DISMISS_REASONS, modalConfigDefaults, ModalOptions } from './modal.options';
-import { ComponentLoader } from '../utils/component-loader/component-loader.class';
-import { ComponentLoaderFactory } from '../utils/component-loader/component-loader.factory';
-
-const TRANSITION_DURATION = 300;
-const BACKDROP_TRANSITION_DURATION = 150;
-
-/** Mark any code with directive to show it's content in modal */
-@Component({
- // tslint:disable-next-line:component-selector
- selector: '[mdbModal]',
- template: ' ',
- styleUrls: ['./modals-module.scss'],
- encapsulation: ViewEncapsulation.None,
- exportAs: 'mdb-modal, mdbModal',
-})
-// tslint:disable-next-line:component-class-suffix
-export class ModalDirective implements AfterViewInit, OnDestroy, OnChanges {
- /** allows to set modal configuration via element property */
- @Input()
- public set config(conf: ModalOptions | any) {
- this._config = this.getConfig(conf);
- }
-
- public get config(): ModalOptions | any {
- return this._config;
- }
-
- /** This event fires immediately when the `show` instance method is called. */
- // tslint:disable-next-line:no-output-on-prefix
- @Output() public onShow: EventEmitter = new EventEmitter();
- @Output() public open: EventEmitter = new EventEmitter();
- /** This event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete) */
- // tslint:disable-next-line:no-output-on-prefix
- @Output() public onShown: EventEmitter = new EventEmitter();
- @Output() public opened: EventEmitter = new EventEmitter();
- /** This event is fired immediately when the hide instance method has been called. */
- // tslint:disable-next-line:no-output-on-prefix
- @Output() public onHide: EventEmitter = new EventEmitter();
- @Output() public close: EventEmitter = new EventEmitter();
- /** This event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete). */
- // tslint:disable-next-line:no-output-on-prefix
- @Output() public onHidden: EventEmitter = new EventEmitter();
- @Output() public closed: EventEmitter = new EventEmitter();
-
- // seems like an Options
- public isAnimated = true;
- /** This field contains last dismiss reason.
- Possible values: `backdrop-click`, `esc` and `null` (if modal was closed by direct call of `.hide()`). */
- public dismissReason: string | any;
-
- public get isShown(): boolean {
- return this._isShown;
- }
-
- protected _config: ModalOptions | any;
- protected _isShown = false;
-
- protected isBodyOverflowing = false;
- protected originalBodyPadding = 0;
- protected scrollbarWidth = 0;
-
- protected timerHideModal: any = 0;
- protected timerRmBackDrop: any = 0;
-
- // reference to backdrop component
- protected backdrop: ComponentRef | undefined;
- private _backdrop: ComponentLoader;
- // todo: implement _dialog
- _dialog: any;
-
- isNested = false;
-
- utils: Utils = new Utils();
-
- @HostListener('keydown', ['$event']) onKeyDown(event: any) {
- this.utils.focusTrapModal(event, this._element);
- }
-
- @HostListener('click', ['$event'])
- public onClick(event: any): void {
- if (
- this.config.ignoreBackdropClick ||
- this.config.backdrop === 'static' ||
- event.target !== this._element.nativeElement
- ) {
- return;
- }
- this.dismissReason = DISMISS_REASONS.BACKRDOP;
- this.hide(event);
- }
-
- // todo: consider preventing default and stopping propagation
- @HostListener('keydown.esc')
- public onEsc(): void {
- if (this.config.keyboard) {
- this.dismissReason = DISMISS_REASONS.ESC;
- this.hide();
- }
- }
-
- public constructor(
- protected _element: ElementRef,
- _viewContainerRef: ViewContainerRef,
- protected _renderer: Renderer2,
- clf: ComponentLoaderFactory
- ) {
- this._backdrop = clf.createLoader(
- _element,
- _viewContainerRef,
- _renderer
- );
- }
-
- public ngOnDestroy(): any {
- this.config = void 0;
- if (this._isShown) {
- this._isShown = false;
- this.hideModal();
- this._backdrop.dispose();
- }
- }
-
- public ngAfterViewInit(): any {
- this._config = this._config || this.getConfig();
- setTimeout(() => {
- if (this._config.show) {
- this.show();
- }
- }, 0);
- }
-
- public ngOnChanges(): any {
- this.config.backdrop ? this.showBackdrop() : this.removeBackdrop();
- }
-
- /* Public methods */
-
- /** Allows to manually toggle modal visibility */
- public toggle(): void {
- return this._isShown ? this.hide() : this.show();
- }
-
- /** Allows to manually open modal */
- public show(): void {
- this.dismissReason = null;
- this.onShow.emit(this);
- this.open.emit(this);
- if (this._isShown) {
- return;
- }
- clearTimeout(this.timerHideModal);
- clearTimeout(this.timerRmBackDrop);
-
- this._isShown = true;
-
- this.checkScrollbar();
- this.setScrollbar();
-
- if (document && document.body) {
- if (document.body.classList.contains(ClassName.OPEN)) {
- this.isNested = true;
- } else {
- this._renderer.addClass(document.body, ClassName.OPEN);
- }
- }
- this.showBackdrop(() => {
- this.showElement();
- });
- if (!this.config.backdrop && this.config.ignoreBackdropClick) {
- this._renderer.setStyle(this._element.nativeElement, 'position', 'fixed');
-
- if (
- navigator.userAgent.indexOf('Safari') !== -1 &&
- navigator.userAgent.indexOf('Chrome') === -1
- ) {
- this._renderer.setStyle(this._element.nativeElement, 'overflow', 'unset');
- this._renderer.setStyle(this._element.nativeElement, 'overflow-y', 'unset');
- this._renderer.setStyle(this._element.nativeElement, 'overflow-x', 'unset');
- }
- }
- }
-
- /** Allows to manually close modal */
- public hide(event?: Event): void {
- if (event) {
- event.preventDefault();
- }
-
- // fix(modal): resolved problem with not pausing iframe/video when closing modal
- const iframeElements = Array.from(this._element.nativeElement.querySelectorAll('iframe'));
- const videoElements = Array.from(this._element.nativeElement.querySelectorAll('video'));
-
- iframeElements.forEach((iframe: HTMLIFrameElement) => {
- const srcAttribute: any = iframe.getAttribute('src');
- this._renderer.setAttribute(iframe, 'src', srcAttribute);
- });
-
- videoElements.forEach((video: HTMLVideoElement) => {
- video.pause();
- });
-
- this.onHide.emit(this);
- this.close.emit(this);
-
- if (!this._isShown) {
- return;
- }
-
- clearTimeout(this.timerHideModal);
- clearTimeout(this.timerRmBackDrop);
-
- this._isShown = false;
- this._renderer.removeClass(this._element.nativeElement, ClassName.IN);
- if (!isBs3()) {
- this._renderer.removeClass(this._element.nativeElement, ClassName.SHOW);
- }
-
- if (this.isAnimated) {
- this.timerHideModal = setTimeout(() => this.hideModal(), TRANSITION_DURATION);
- } else {
- this.hideModal();
- }
- }
-
- /** Private methods @internal */
- protected getConfig(config?: ModalOptions): ModalOptions {
- return Object.assign({}, modalConfigDefaults, config);
- }
-
- /**
- * Show dialog
- * @internal
- */
- protected showElement(): void {
- if (
- !this._element.nativeElement.parentNode ||
- this._element.nativeElement.parentNode.nodeType !== Node.ELEMENT_NODE
- ) {
- // don't move modals dom position
- if (document && document.body) {
- document.body.appendChild(this._element.nativeElement);
- }
- }
-
- this._renderer.setAttribute(this._element.nativeElement, 'aria-hidden', 'false');
- this._renderer.setStyle(this._element.nativeElement, 'display', 'block');
- this._renderer.setProperty(this._element.nativeElement, 'scrollTop', 0);
-
- if (this.isAnimated) {
- Utils.reflow(this._element.nativeElement);
- }
-
- this._renderer.addClass(this._element.nativeElement, ClassName.IN);
- if (!isBs3()) {
- this._renderer.addClass(this._element.nativeElement, ClassName.SHOW);
- }
-
- const transitionComplete = () => {
- if (this._config.focus) {
- this._element.nativeElement.focus();
- }
- this.onShown.emit(this);
- this.opened.emit(this);
- };
-
- if (this.isAnimated) {
- setTimeout(transitionComplete, TRANSITION_DURATION);
- } else {
- transitionComplete();
- }
- }
-
- /** @internal */
- protected hideModal(): void {
- this._renderer.setAttribute(this._element.nativeElement, 'aria-hidden', 'true');
- this._renderer.setStyle(this._element.nativeElement, 'display', 'none');
- this.showBackdrop(() => {
- if (!this.isNested) {
- if (document && document.body) {
- this._renderer.removeClass(document.body, ClassName.OPEN);
- }
- }
- this.resetAdjustments();
- this.focusOtherModal();
- this.onHidden.emit(this);
- this.closed.emit(this);
- });
- }
-
- /** @internal */
- protected showBackdrop(callback?: Function): void {
- if (
- this._isShown &&
- this.config.backdrop &&
- (!this.backdrop || !this.backdrop.instance.isShown)
- ) {
- this.removeBackdrop();
- this._backdrop
- .attach(ModalBackdropComponent)
- .to('body')
- .show({ isAnimated: this.isAnimated });
- this.backdrop = this._backdrop._componentRef;
-
- if (!callback) {
- return;
- }
-
- if (!this.isAnimated) {
- callback();
- return;
- }
-
- setTimeout(callback, BACKDROP_TRANSITION_DURATION);
- } else if (!this._isShown && this.backdrop) {
- this.backdrop.instance.isShown = false;
-
- const callbackRemove = () => {
- this.removeBackdrop();
- if (callback) {
- callback();
- }
- };
-
- if (this.backdrop.instance.isAnimated) {
- this.timerRmBackDrop = setTimeout(callbackRemove, BACKDROP_TRANSITION_DURATION);
- } else {
- callbackRemove();
- }
- } else if (callback) {
- callback();
- }
- }
-
- /** @internal */
- protected removeBackdrop(): void {
- this._backdrop.hide();
- this.backdrop = undefined;
- }
-
- protected focusOtherModal() {
- try {
- const otherOpenedModals = this._element.nativeElement.parentElement.querySelectorAll(
- '.in[mdbModal]'
- );
- if (!otherOpenedModals.length) {
- return;
- }
- otherOpenedModals[otherOpenedModals.length - 1].nativeElement.focus();
- } catch (error) {}
- }
-
- /** @internal */
- protected resetAdjustments(): void {
- this._renderer.setStyle(this._element.nativeElement, 'paddingLeft', '');
- this._renderer.setStyle(this._element.nativeElement, 'paddingRight', '');
- }
-
- /** Scroll bar tricks */
- /** @internal */
- protected checkScrollbar(): void {
- this.isBodyOverflowing = document.body.clientWidth < window.innerWidth;
- this.scrollbarWidth = this.getScrollbarWidth();
- }
-
- protected setScrollbar(): void {
- if (!document) {
- return;
- }
- this.originalBodyPadding = parseInt(
- window.getComputedStyle(document.body).getPropertyValue('padding-right') || 0,
- 10
- );
- }
-
- // thx d.walsh
- protected getScrollbarWidth(): number {
- const scrollDiv = this._renderer.createElement('div', void 0);
- this._renderer.appendChild(document.body, scrollDiv);
- scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
- const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
- document.body.removeChild(scrollDiv);
- return scrollbarWidth;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/modal.module.ts b/projects/angular-bootstrap-md/src/lib/free/modals/modal.module.ts
deleted file mode 100755
index 187c0cbf..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/modals/modal.module.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { NgModule, ModuleWithProviders, NO_ERRORS_SCHEMA } from '@angular/core';
-
-import { ModalBackdropComponent } from './modalBackdrop.component';
-import { ModalDirective } from './modal.directive';
-import { PositioningService } from '../utils/positioning/positioning.service';
-import { ComponentLoaderFactory } from '../utils/component-loader/component-loader.factory';
-import { ModalContainerComponent } from './modalContainer.component';
-import { MDBModalService } from './modal.service';
-
-@NgModule({
- declarations: [ModalBackdropComponent, ModalDirective, ModalContainerComponent],
- exports: [ModalBackdropComponent, ModalDirective],
- entryComponents: [ModalBackdropComponent, ModalContainerComponent],
- schemas: [NO_ERRORS_SCHEMA]
-})
-export class ModalModule {
- public static forRoot(): ModuleWithProviders {
- return {ngModule: ModalModule, providers: [MDBModalService, ComponentLoaderFactory, PositioningService]};
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/modal.options.ts b/projects/angular-bootstrap-md/src/lib/free/modals/modal.options.ts
deleted file mode 100755
index 48fd8c3a..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/modals/modal.options.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-import { Injectable } from '@angular/core';
-
-@Injectable()
-export class ModalOptions {
- /**
- * Includes a modal-backdrop element. Alternatively, specify static for a backdrop which doesn't close the modal on click.
- */
- backdrop?: boolean | 'static' | any;
- /**
- * Closes the modal when escape key is pressed.
- */
- keyboard?: boolean;
-
- focus?: boolean;
- /**
- * Shows the modal when initialized.
- */
- show?: boolean;
- /**
- * Ignore the backdrop click
- */
- ignoreBackdropClick?: boolean;
- /**
- * Css class for opened modal
- */
- class?: string;
- /**
- * Toggle animation
- */
- containerClass?: string;
- animated?: boolean;
- scroll?: boolean;
- data?: Object;
-}
-
-@Injectable()
-export class MDBModalRef {
- /**
- * Reference to a component inside the modal. Null if modal's been created with TemplateRef
- */
- content?: any | null;
- /**
- * Hides the modal
- */
- hide(): void {}
-}
-
-export const modalConfigDefaults: ModalOptions = {
- backdrop: true,
- keyboard: true,
- focus: true,
- show: false,
- ignoreBackdropClick: false,
- class: '',
- containerClass: '',
- animated: true,
- scroll: false,
- data: {},
-};
-
-export const ClassName: any = {
- SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
- BACKDROP: 'modal-backdrop',
- OPEN: 'modal-open',
- FADE: 'fade',
- IN: 'in', // bs3
- SHOW: 'show', // bs4
-};
-
-export const Selector: any = {
- DIALOG: '.modal-dialog',
- DATA_TOGGLE: '[data-toggle="modal"]',
- DATA_DISMISS: '[data-dismiss="modal"]',
- FIXED_CONTENT: '.navbar-fixed-top, .navbar-fixed-bottom, .is-fixed',
-};
-
-export const TransitionDurations: any = {
- MODAL: 300,
- BACKDROP: 150,
-};
-
-export const DISMISS_REASONS = {
- BACKRDOP: 'backdrop-click',
- ESC: 'esc',
-};
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/modal.service.ts b/projects/angular-bootstrap-md/src/lib/free/modals/modal.service.ts
deleted file mode 100755
index a4b2f3bd..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/modals/modal.service.ts
+++ /dev/null
@@ -1,205 +0,0 @@
-import {
- ComponentRef,
- Injectable,
- TemplateRef,
- EventEmitter,
- Renderer2,
- RendererFactory2,
- ViewContainerRef,
- ElementRef,
-} from '@angular/core';
-
-import { ComponentLoader } from '../utils/component-loader/component-loader.class';
-import { ComponentLoaderFactory } from '../utils/component-loader/component-loader.factory';
-import { ModalBackdropComponent } from './modalBackdrop.component';
-import { ModalContainerComponent } from './modalContainer.component';
-import {
- MDBModalRef,
- ClassName,
- modalConfigDefaults,
- ModalOptions,
- TransitionDurations,
-} from './modal.options';
-
-@Injectable()
-export class MDBModalService {
- public config: ModalOptions = modalConfigDefaults;
- private renderer: Renderer2;
- private vcr: ViewContainerRef;
- private el: ElementRef;
-
- public open: EventEmitter = new EventEmitter();
- public opened: EventEmitter = new EventEmitter();
- public close: EventEmitter = new EventEmitter();
- public closed: EventEmitter = new EventEmitter();
-
- protected isBodyOverflowing = false;
- protected originalBodyPadding = 0;
-
- protected scrollbarWidth = 0;
-
- protected backdropRef: ComponentRef | any;
- private _backdropLoader: ComponentLoader;
- private modalsCount = 0;
- private lastDismissReason: any = '';
-
- private loaders: ComponentLoader[] = [];
- public constructor(rendererFactory: RendererFactory2, private clf: ComponentLoaderFactory) {
- this._backdropLoader = this.clf.createLoader(
- this.el,
- this.vcr,
- this.renderer
- );
- this.renderer = rendererFactory.createRenderer(null, null);
- }
-
- /** Shows a modal */
- show(content: string | TemplateRef | any, config?: any): MDBModalRef {
- this.modalsCount++;
- this._createLoaders();
- this.config = Object.assign({}, modalConfigDefaults, config);
- this._showBackdrop();
- this.lastDismissReason = null;
- return this._showModal(content);
- }
-
- hide(level: number) {
- if (this.modalsCount === 1) {
- this._hideBackdrop();
- this.resetScrollbar();
- }
- this.modalsCount = this.modalsCount >= 1 ? this.modalsCount - 1 : 0;
- setTimeout(
- () => {
- this._hideModal(level);
- this.removeLoaders(level);
- },
- this.config.animated ? TransitionDurations.BACKDROP : 0
- );
- }
-
- _showBackdrop(): void {
- const isBackdropEnabled = this.config.backdrop || this.config.backdrop === 'static';
- const isBackdropInDOM = !this.backdropRef || !this.backdropRef.instance.isShown;
-
- if (this.modalsCount === 1) {
- this.removeBackdrop();
-
- if (isBackdropEnabled && isBackdropInDOM) {
- this._backdropLoader
- .attach(ModalBackdropComponent)
- .to('body')
- .show({ isAnimated: this.config.animated });
- this.backdropRef = this._backdropLoader._componentRef;
- }
- }
- }
-
- _hideBackdrop(): void {
- if (!this.backdropRef) {
- return;
- }
- this.backdropRef.instance.isShown = false;
- const duration = this.config.animated ? TransitionDurations.BACKDROP : 0;
- setTimeout(() => this.removeBackdrop(), duration);
- }
-
- _showModal(content: any): MDBModalRef {
- const modalLoader = this.loaders[this.loaders.length - 1];
- const mdbModalRef = new MDBModalRef();
- const modalContainerRef = modalLoader
- .provide({ provide: ModalOptions, useValue: this.config })
- .provide({ provide: MDBModalRef, useValue: mdbModalRef })
- .attach(ModalContainerComponent)
- .to('body')
- .show({
- content,
- isAnimated: this.config.animated,
- data: this.config.data,
- mdbModalService: this,
- });
- modalContainerRef.instance.focusModalElement();
- modalContainerRef.instance.level = this.getModalsCount();
- mdbModalRef.hide = () => {
- modalContainerRef.instance.hide();
- };
- mdbModalRef.content = modalLoader.getInnerComponent() || null;
- return mdbModalRef;
- }
-
- _hideModal(level: number): void {
- const modalLoader = this.loaders[level - 1];
- if (modalLoader) {
- modalLoader.hide();
- }
- }
-
- getModalsCount(): number {
- return this.modalsCount;
- }
-
- setDismissReason(reason: string) {
- this.lastDismissReason = reason;
- }
-
- protected removeBackdrop(): void {
- this._backdropLoader.hide();
- this.backdropRef = null;
- }
-
- /** AFTER PR MERGE MODAL.COMPONENT WILL BE USING THIS CODE*/
- /** Scroll bar tricks */
- /** @internal */
- public checkScrollbar(): void {
- this.isBodyOverflowing = document.body.clientWidth < window.innerWidth;
- this.scrollbarWidth = this.getScrollbarWidth();
- }
-
- public setScrollbar(): void {
- if (!document) {
- return;
- }
-
- this.originalBodyPadding = parseInt(
- window.getComputedStyle(document.body).getPropertyValue('padding-right') || '0',
- 10
- );
- }
-
- private resetScrollbar(): void {
- document.body.style.paddingRight = this.originalBodyPadding + 'px';
- }
-
- // thx d.walsh
- private getScrollbarWidth(): number {
- const scrollDiv = this.renderer.createElement('div');
- this.renderer.addClass(scrollDiv, ClassName.SCROLLBAR_MEASURER);
- this.renderer.appendChild(document.body, scrollDiv);
- const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
- this.renderer.removeChild(document.body, scrollDiv);
-
- return scrollbarWidth;
- }
-
- private _createLoaders(): void {
- const loader = this.clf.createLoader(this.el, this.vcr, this.renderer);
- this.copyEvent(loader.onBeforeShow, this.open);
- this.copyEvent(loader.onShown, this.opened);
- this.copyEvent(loader.onBeforeHide, this.close);
- this.copyEvent(loader.onHidden, this.closed);
- this.loaders.push(loader);
- }
-
- private removeLoaders(level: number): void {
- this.loaders.splice(level - 1, 1);
- this.loaders.forEach((loader: ComponentLoader, i: number) => {
- loader.instance.level = i + 1;
- });
- }
-
- private copyEvent(from: EventEmitter, to: EventEmitter) {
- from.subscribe(() => {
- to.emit(this.lastDismissReason);
- });
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/modalBackdrop.component.html b/projects/angular-bootstrap-md/src/lib/free/modals/modalBackdrop.component.html
deleted file mode 100755
index e69de29b..00000000
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/modalBackdrop.component.ts b/projects/angular-bootstrap-md/src/lib/free/modals/modalBackdrop.component.ts
deleted file mode 100755
index a211a8da..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/modals/modalBackdrop.component.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import { Component, ElementRef, OnInit, Renderer2, HostBinding } from '@angular/core';
-
-import { ClassName } from './modal.options';
-import { isBs3 } from '../utils/ng2-bootstrap-config';
-import { Utils } from '../utils/utils.class';
-
-export class ModalBackdropOptions {
- public animate = true;
-
- public constructor(options: ModalBackdropOptions) {
- Object.assign(this, options);
- }
-}
-
-/** This component will be added as background layout for modals if enabled */
-@Component({
- selector: 'mdb-modal-backdrop',
- template: ``,
-})
-export class ModalBackdropComponent implements OnInit {
- @HostBinding('class.modal-backdrop') public classNameBackDrop = true;
-
- public get isAnimated(): boolean {
- return this._isAnimated;
- }
-
- public set isAnimated(value: boolean) {
- this._isAnimated = value;
- }
-
- public get isShown(): boolean {
- return this._isShown;
- }
-
- public set isShown(value: boolean) {
- this._isShown = value;
- if (value) {
- this.renderer.addClass(this.element.nativeElement, `${ClassName.IN}`);
-
- if (!isBs3()) {
- this.renderer.addClass(this.element.nativeElement, `${ClassName.SHOW}`);
- }
- } else {
- this.renderer.removeClass(this.element.nativeElement, `${ClassName.IN}`);
-
- if (!isBs3()) {
- this.renderer.removeClass(this.element.nativeElement, `${ClassName.SHOW}`);
- }
- }
- }
-
- protected _isAnimated: boolean;
- protected _isShown = false;
-
- public constructor(public element: ElementRef, public renderer: Renderer2) {}
-
- ngOnInit(): void {
- if (this.isAnimated) {
- this.renderer.addClass(this.element.nativeElement, `${ClassName.FADE}`);
- Utils.reflow(this.element.nativeElement);
- } else {
- this.renderer.addClass(this.element.nativeElement, `${ClassName.FADE}`);
- Utils.reflow(this.element.nativeElement);
- }
- this.isShown = true;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/modalContainer.component.html b/projects/angular-bootstrap-md/src/lib/free/modals/modalContainer.component.html
deleted file mode 100755
index f2120a3b..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/modals/modalContainer.component.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/modalContainer.component.ts b/projects/angular-bootstrap-md/src/lib/free/modals/modalContainer.component.ts
deleted file mode 100755
index 68302131..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/modals/modalContainer.component.ts
+++ /dev/null
@@ -1,178 +0,0 @@
-import {
- Component,
- ElementRef,
- HostListener,
- OnDestroy,
- OnInit,
- Renderer2,
- HostBinding,
- ViewEncapsulation,
-} from '@angular/core';
-import { ClassName, DISMISS_REASONS, ModalOptions, TransitionDurations } from './modal.options';
-import { isBs3 } from '../utils/ng2-bootstrap-config';
-import { Utils } from '../utils';
-import { MDBModalService } from './modal.service';
-
-@Component({
- selector: 'mdb-modal-container',
- templateUrl: 'modalContainer.component.html',
- styleUrls: ['./modals-module.scss'],
- encapsulation: ViewEncapsulation.None,
-})
-export class ModalContainerComponent implements OnInit, OnDestroy {
- modalClass = 'modal';
- @HostBinding('tabindex') tabindex = -1;
- @HostBinding('role') role = 'dialog';
- @HostBinding('class.modal') modal = true;
-
- private mdbModalService: MDBModalService;
-
- public config: ModalOptions;
- public isShown = false;
- public level: number;
- public isAnimated: boolean;
- protected _element: ElementRef;
- private isModalHiding = false;
-
- private utils: Utils = new Utils();
-
- @HostListener('click', ['$event'])
- public onClick(event: any): void {
- if (
- this.config.ignoreBackdropClick ||
- this.config.backdrop === 'static' ||
- event.target !== this._element.nativeElement
- ) {
- return;
- }
- this.mdbModalService.setDismissReason(DISMISS_REASONS.BACKRDOP);
- this.hide();
- }
-
- @HostListener('window:keydown.esc')
- public onEsc(): void {
- if (this.config.keyboard && this.level === this.mdbModalService.getModalsCount()) {
- this.mdbModalService.setDismissReason(DISMISS_REASONS.ESC);
- this.hide();
- }
- }
-
- @HostListener('keydown', ['$event']) onKeyDown(event: any) {
- this.utils.focusTrapModal(event, this._element);
- }
-
- public constructor(options: ModalOptions, _element: ElementRef, private _renderer: Renderer2) {
- // this.mdbModalService = msConfig.serviceInstance;
-
- this._element = _element;
- this.config = Object.assign({}, options);
- }
-
- ngOnInit(): void {
- if (this.config.animated) {
- this._renderer.addClass(this._element.nativeElement, 'fade');
- }
- this._renderer.setStyle(this._element.nativeElement, 'display', 'block');
- if (
- (window &&
- window.navigator.userAgent.indexOf('Edge') !== -1 &&
- this.config &&
- this.config.toString().indexOf('side-modal') === -1) ||
- (window &&
- window.navigator.userAgent.indexOf('Edge') !== -1 &&
- this.config &&
- this.config.toString().indexOf('modal-full-height') === -1)
- ) {
- this.isShown = true;
- this._renderer.addClass(this._element.nativeElement, isBs3() ? ClassName.IN : ClassName.SHOW);
- this._renderer.setStyle(this._element.nativeElement, 'transition', 'transform 0.3s ease-out');
- this._renderer.setStyle(this._element.nativeElement, 'transform', 'translate(0, 25px)');
- } else {
- setTimeout(
- () => {
- this.isShown = true;
- this._renderer.addClass(
- this._element.nativeElement,
- isBs3() ? ClassName.IN : ClassName.SHOW
- );
- },
- this.isAnimated ? TransitionDurations.BACKDROP : 0
- );
- }
-
- if (document && document.body) {
- if (this.mdbModalService.getModalsCount() === 1) {
- this.mdbModalService.checkScrollbar();
- this.mdbModalService.setScrollbar();
- }
- this._renderer.addClass(document.body, ClassName.OPEN);
- }
-
- if (this.config.containerClass) {
- this.updateContainerClass();
- }
-
- if (this.config.scroll) {
- this._renderer.setStyle(this._element.nativeElement, 'overflow-y', 'auto');
- }
- }
-
- focusModalElement() {
- if (this.config.focus) {
- this._element.nativeElement.focus();
- }
- }
-
- updateContainerClass() {
- if (this.config.containerClass) {
- const containerClasses = this.config.containerClass;
- const classArr = containerClasses.split(' ');
-
- for (let i = 0; i < classArr.length; i++) {
- this._renderer.addClass(this._element.nativeElement, classArr[i]);
- }
- }
- }
-
- ngOnDestroy(): void {
- if (this.isShown) {
- this.hide();
- }
- }
-
- hide(): void {
- if (this.isModalHiding || !this.isShown) {
- return;
- }
- this.isModalHiding = true;
- this._renderer.removeClass(
- this._element.nativeElement,
- isBs3() ? ClassName.IN : ClassName.SHOW
- );
-
- // fix(modal): resolved problem with not pausing iframe/video when closing modal
- const iframeElements = Array.from(this._element.nativeElement.querySelectorAll('iframe'));
- const videoElements = Array.from(this._element.nativeElement.querySelectorAll('video'));
-
- iframeElements.forEach((iframe: HTMLIFrameElement) => {
- const srcAttribute: any = iframe.getAttribute('src');
- this._renderer.setAttribute(iframe, 'src', srcAttribute);
- });
-
- videoElements.forEach((video: HTMLVideoElement) => {
- video.pause();
- });
-
- setTimeout(
- () => {
- this.isShown = false;
- if (document && document.body && this.mdbModalService.getModalsCount() === 1) {
- this._renderer.removeClass(document.body, ClassName.OPEN);
- }
- this.mdbModalService.hide(this.level);
- this.isModalHiding = false;
- },
- this.isAnimated ? TransitionDurations.MODAL : 0
- );
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/modalService.config.ts b/projects/angular-bootstrap-md/src/lib/free/modals/modalService.config.ts
deleted file mode 100755
index e9493746..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/modals/modalService.config.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export const msConfig = {
- serviceInstance: new Object()
-};
diff --git a/projects/angular-bootstrap-md/src/lib/free/modals/modals-module.scss b/projects/angular-bootstrap-md/src/lib/free/modals/modals-module.scss
deleted file mode 100644
index e1fea9c7..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/modals/modals-module.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-@import '../../assets/scss/core/mixins';
-@import '../../assets/scss/core/colors';
-@import '../../assets/scss/core/variables';
-@import '../../assets/scss/core/helpers';
-
-@import 'modals';
diff --git a/projects/angular-bootstrap-md/src/lib/free/navbars/_navbars.scss b/projects/angular-bootstrap-md/src/lib/free/navbars/_navbars.scss
deleted file mode 100644
index 195b1ade..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/navbars/_navbars.scss
+++ /dev/null
@@ -1,331 +0,0 @@
-// Navbars
-.navbar {
- box-shadow: $z-depth-1;
- font-weight: $navbar-font-weight;
- form {
- .md-form {
- input {
- margin: 0 $navbar-form-input-mr $navbar-form-input-mb $navbar-form-input-ml;
- }
- }
- }
- .breadcrumb {
- margin: 0;
- padding: $navbar-breadcrumb-padding-top 0 0 $navbar-breadcrumb-padding-left;
- background-color: inherit;
- font-size: $navbar-double-font-size;
- font-weight: $navbar-font-weight;
- .breadcrumb-item {
- color: $white-base;
- &.active {
- color: $navbar-breadcrumb-color;
- }
- &:before {
- color: $navbar-breadcrumb-color;
- }
- }
- }
- .navbar-toggler {
- outline: 0;
- border-width: 0;
- }
- .nav-flex-icons {
- flex-direction: row;
- }
- .container {
- @media (max-width: $medium-screen) {
- width: 100%;
- .navbar-toggler-right {
- right: 0;
- }
- }
- }
- .nav-item {
- .nav-link {
- display: block;
- &.disabled {
- &:active {
- pointer-events: none;
- }
- }
- .fas,
- .fab,
- .far {
- padding-right: $navbar-flex-icons-padding-lg;
- padding-left: $navbar-flex-icons-padding-lg;
- }
- @media (max-width: $medium-screen) {
- padding-right: $navbar-flex-icons-padding-md;
- padding-left: $navbar-flex-icons-padding-md;
- }
- }
- }
- .dropdown-menu {
- position: absolute !important;
- margin-top: 0;
- a {
- padding: $navbar-dropdown-menu-padding;
- font-size: $navbar-dropdown-font-size;
- font-weight: $navbar-font-weight;
- color: $black;
- }
- form {
- @media (max-width: $small-screen) {
- width: 17rem;
- }
- @media (min-width: $small-screen) {
- width: 22rem;
- }
- }
- }
- &.navbar-light {
- @include make-navbar(
- $navbar-light-disabled-color,
- $navbar-light-toggler-icon,
- $black,
- $navbar-light-hover-color,
- $navbar-light-bg-active-color
- );
- }
- &.navbar-dark {
- @include make-navbar(
- $navbar-dark-disabled-color,
- $navbar-dark-toggler-icon,
- $white,
- $navbar-dark-hover-color,
- $navbar-dark-bg-active-color
- );
- }
- &.scrolling-navbar {
- @media (min-width: $small-screen) {
- transition: $navbar-scrolling-transition;
- padding-top: $navbar-scrolling-padding;
- padding-bottom: $navbar-scrolling-padding;
- .navbar-nav > li {
- transition-duration: $navbar-scrolling-transition-duration;
- }
- &.top-nav-collapse {
- padding-top: $navbar-top-collapse-padding;
- padding-bottom: $navbar-top-collapse-padding;
- }
- }
- }
-}
-
-// Angular styles
-@media (min-width: 1200px) {
- .navbar.navbar-expand-xl {
- links,
- navlinks {
- display: flex;
- flex-direction: row;
- align-items: center !important;
- align-self: center !important;
- width: 100%;
- }
- }
-}
-
-@media (min-width: 992px) {
- .navbar > logo > div > a {
- img {
- margin-left: 20px;
- }
- }
- .navbar.navbar-expand-lg {
- links,
- navlinks {
- display: flex;
- flex-direction: row;
- align-items: center !important;
- align-self: center !important;
- width: 100%;
- }
- }
-}
-
-@media (min-width: 768px) {
- .navbar.navbar-expand-md {
- links,
- navlinks {
- display: flex;
- flex-direction: row;
- width: 100%;
- }
- }
-}
-
-@media (min-width: 576px) {
- .navbar.navbar-expand-sm {
- links,
- navlinks {
- display: flex;
- flex-direction: row;
- width: 100%;
- }
- }
-}
-
-@media all and (max-width: 992px) {
- .collapsed-navbar-scroll {
- max-height: calc(100vh - 40px);
- overflow-y: scroll;
- }
-}
-
-// .navbar {
-// z-index: 91;
-// }
-.navbar-container {
- order: -1;
- width: 50px !important;
- padding-left: 5px;
- padding-right: 5px;
-}
-
-.navbar-nav {
- .dropdown-menu-right.dropdown-menu {
- left: unset;
- }
- .dropdown-menu {
- top: 100% !important;
- transform: translate3d(0, 0, 0) !important;
- }
-}
-
-.breadcrumbs {
- display: flex;
- padding-left: 5px;
- padding-right: 5px;
- order: 0;
- align-items: center;
- @media (min-width: 1441px) {
- margin-left: -0.6rem;
- }
-} //EDGE
-@supports (-ms-ime-align: auto) {
- .ie-nav {
- @media all and (min-width: 992px) {
- .navbar-nav.nav-flex-icons {
- position: absolute;
- top: 30%;
- right: 0;
- }
- .navbar-nav {
- position: absolute;
- top: 30%;
- margin-left: 88px;
- }
- .navbar-brand > img {
- margin-top: -2px;
- padding-right: 16px;
- }
- }
- .navbar-toggler {
- position: absolute;
- margin-top: -40px;
- right: 0;
- }
- }
- .intro-non-fixed-nav > links {
- @media all and (min-width: 992px) {
- .navbar-collapse {
- display: inline-flex !important;
- align-items: center !important;
- justify-content: space-between !important;
- }
- }
- }
- .intro-fixed-nav {
- @media all and (min-width: 992px) {
- .navbar-nav.nav-flex-icons {
- position: absolute;
- top: 30%;
- right: 0;
- }
- .navbar-nav {
- position: absolute;
- top: 30%;
- margin-left: 88px;
- }
- .navbar-brand {
- img {
- margin-top: -2px;
- padding-right: 16px;
- }
- }
- }
- .navbar-toggler {
- position: absolute;
- margin-top: -40px;
- right: 0;
- }
- }
-} //IE10+
-@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
- .ie-nav {
- @media all and (min-width: 992px) {
- .navbar-nav.nav-flex-icons {
- position: absolute;
- top: 30%;
- right: 0;
- }
- .navbar-nav {
- position: absolute;
- top: 30%;
- margin-left: 88px;
- }
- .navbar-brand > img {
- margin-top: -2px;
- padding-right: 16px;
- }
- }
- .navbar-toggler {
- position: absolute;
- margin-top: -40px;
- right: 0;
- }
- }
- .intro-non-fixed-nav > links {
- @media all and (min-width: 992px) {
- .navbar-collapse {
- display: inline-flex !important;
- align-items: center !important;
- justify-content: space-between !important;
- }
- }
- }
- .intro-fixed-nav {
- @media all and (min-width: 992px) {
- .navbar-nav.nav-flex-icons {
- position: absolute;
- top: 30%;
- right: 0;
- }
- .navbar-nav {
- position: absolute;
- top: 30%;
- margin-left: 88px;
- }
- .navbar-brand {
- img {
- margin-top: -2px;
- padding-right: 16px;
- }
- }
- }
- .navbar-toggler {
- position: absolute;
- margin-top: -40px;
- right: 0;
- }
- }
-}
-
-// Fix for situation when in Chrome, dropdown button got default browser styling
-button,
-html [type='button'],
-[type='reset'],
-[type='submit'] {
- -webkit-appearance: none;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/navbars/index.ts b/projects/angular-bootstrap-md/src/lib/free/navbars/index.ts
deleted file mode 100755
index 1e2addff..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/navbars/index.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export { NavbarComponent } from './navbar.component';
-export { NavbarModule } from './navbar.module';
-export { LinksComponent } from './links.component';
-export { NavlinksComponent } from './navlinks.component';
-export { LogoComponent } from './logo.component';
-export { NavbarService } from './navbar.service';
diff --git a/projects/angular-bootstrap-md/src/lib/free/navbars/links.component.ts b/projects/angular-bootstrap-md/src/lib/free/navbars/links.component.ts
deleted file mode 100755
index 4ee9f6de..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/navbars/links.component.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { NavbarService } from './navbar.service';
-import {
- AfterContentInit,
- Component,
- ContentChildren,
- ElementRef,
- QueryList,
- EventEmitter,
- Output,
- Renderer2,
-} from '@angular/core';
-import { RouterLinkWithHref } from '@angular/router';
-
-@Component({
- // tslint:disable-next-line:component-selector
- selector: 'links',
- template: `
-
- `,
-})
-export class LinksComponent implements AfterContentInit {
- @ContentChildren(RouterLinkWithHref, { read: ElementRef, descendants: true })
- links: QueryList;
-
- @Output() linkClick = new EventEmitter();
-
- constructor(private _navbarService: NavbarService, private renderer: Renderer2) {}
-
- ngAfterContentInit() {
- setTimeout(() => {
- this.links.forEach((link: ElementRef) => {
- this.renderer.listen(link.nativeElement, 'click', () => {
- this._navbarService.setNavbarLinkClicks();
- });
- });
- }, 0);
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/navbars/logo.component.ts b/projects/angular-bootstrap-md/src/lib/free/navbars/logo.component.ts
deleted file mode 100755
index e7feda2d..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/navbars/logo.component.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import {Component} from '@angular/core';
-
-@Component({
- selector: 'logo, mdb-navbar-brand',
- template: ` `
-})
-export class LogoComponent {
-
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/navbars/navbar.component.html b/projects/angular-bootstrap-md/src/lib/free/navbars/navbar.component.html
deleted file mode 100755
index c916a274..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/navbars/navbar.component.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/navbars/navbar.component.ts b/projects/angular-bootstrap-md/src/lib/free/navbars/navbar.component.ts
deleted file mode 100755
index 14177402..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/navbars/navbar.component.ts
+++ /dev/null
@@ -1,251 +0,0 @@
-import { NavbarService } from './navbar.service';
-import {
- AfterContentChecked,
- AfterViewInit,
- Component,
- ContentChild,
- ElementRef,
- HostListener,
- Input,
- OnInit,
- Renderer2,
- ViewChild,
- ViewEncapsulation,
- ChangeDetectorRef,
- ChangeDetectionStrategy,
- Inject,
- NgZone,
- OnDestroy,
-} from '@angular/core';
-import { fromEvent, Subject } from 'rxjs';
-import { LinksComponent } from './links.component';
-import { DOCUMENT } from '@angular/common';
-import { takeUntil } from 'rxjs/operators';
-
-@Component({
- selector: 'mdb-navbar',
- templateUrl: 'navbar.component.html',
- styleUrls: ['./navbars-module.scss'],
- encapsulation: ViewEncapsulation.None,
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class NavbarComponent implements AfterViewInit, OnInit, AfterContentChecked, OnDestroy {
- @Input() iconBackground: string | string[];
- @Input() SideClass: string;
- @Input() containerInside = true;
- @Input() collapseId = 'navbarCollapse';
- @Input() scrollSensitivity = 120;
- @Input() scrollableNavbar = false;
-
- private _destroy$: Subject = new Subject();
-
- navbarLinkClicks: any;
- shown = false;
-
- public doubleNav: boolean;
- public height: number;
- public duration = 350; // ms
-
- public collapse = true;
- public showClass = false;
- public collapsing = false;
-
- private _itemsLength = 0;
-
- ariaExpanded = false;
-
- @ViewChild('navbar', { static: true }) el: ElementRef;
- @ViewChild('mobile', { static: false }) mobile: ElementRef;
- @ViewChild('nav', { static: true }) navbar: ElementRef;
- @ViewChild('container', { static: true }) container: ElementRef;
- @ViewChild('toggler', { static: false }) toggler: ElementRef;
- @ContentChild(LinksComponent, { static: false }) links: LinksComponent;
-
- constructor(
- public renderer: Renderer2,
- private _navbarService: NavbarService,
- private _cdRef: ChangeDetectorRef,
- private _ngZone: NgZone,
- @Inject(DOCUMENT) private _document: any
- ) {
- this._navbarService
- .getNavbarLinkClicks()
- .pipe(takeUntil(this._destroy$))
- .subscribe(navbarLinkClicks => {
- this.closeNavbarOnClick(navbarLinkClicks);
- });
- }
-
- closeNavbarOnClick(navbarLinkClicks: any) {
- this.navbarLinkClicks = navbarLinkClicks;
- if (this.showClass) {
- this.hide();
- }
- }
-
- addTogglerIconClasses() {
- if (this.iconBackground) {
- if (Array.isArray(this.iconBackground)) {
- this.iconBackground.forEach(iconClass => {
- this.renderer.addClass(this.toggler.nativeElement, iconClass);
- });
- } else {
- this.renderer.addClass(this.toggler.nativeElement, this.iconBackground);
- }
- }
- }
-
- private _listenToScroll() {
- this._ngZone.runOutsideAngular(() => {
- fromEvent(this._document, 'scroll')
- .pipe(takeUntil(this._destroy$))
- .subscribe(() => {
- if (window.pageYOffset > this.scrollSensitivity) {
- this.renderer.addClass(this.navbar.nativeElement, 'top-nav-collapse');
- } else {
- this.renderer.removeClass(this.navbar.nativeElement, 'top-nav-collapse');
- }
- });
- });
- }
-
- ngOnInit() {
- const isDoubleNav = this.SideClass.split(' ');
- this.doubleNav = isDoubleNav.indexOf('double-nav') !== -1;
- }
-
- ngAfterViewInit() {
- if (!this.containerInside) {
- const childrens = Array.from(this.container.nativeElement.children);
- childrens.forEach(child => {
- this.renderer.appendChild(this.navbar.nativeElement, child);
- this.container.nativeElement.remove();
- });
- }
- if (this.el.nativeElement.children.length === 0) {
- this.el.nativeElement.remove();
- }
- this.addTogglerIconClasses();
- if (this.scrollableNavbar) {
- this.renderer.addClass(this.el.nativeElement, 'collapsed-navbar-scroll');
- }
-
- if (this.navbar.nativeElement.classList.contains('scrolling-navbar')) {
- this._listenToScroll();
- }
- }
-
- toggle() {
- if (!this.collapsing) {
- if (this.shown) {
- this.hide();
- } else {
- this.show();
- }
- }
- }
-
- show() {
- this.shown = true;
- this.collapse = false;
- this.collapsing = true;
- this.ariaExpanded = true;
-
- setTimeout(() => {
- this.height = this.el.nativeElement.scrollHeight;
- this.renderer.setStyle(this.el.nativeElement, 'height', this.height + 'px');
- }, 0);
-
- setTimeout(() => {
- this.collapsing = false;
- this.collapse = true;
- this.showClass = true;
- }, this.duration);
-
- this._cdRef.markForCheck();
- }
-
- hide() {
- if (this.shown) {
- this.shown = false;
- this.collapse = false;
- this.showClass = false;
- this.collapsing = true;
- this.ariaExpanded = false;
- setTimeout(() => {
- this.renderer.setStyle(this.el.nativeElement, 'height', '0px');
- }, 0);
-
- setTimeout(() => {
- this.collapsing = false;
- this.collapse = true;
- }, this.duration);
- }
-
- this._cdRef.markForCheck();
- }
-
- get displayStyle() {
- if (!this.containerInside) {
- return 'flex';
- } else {
- return '';
- }
- }
-
- @HostListener('window:resize', ['$event']) onResize(event: any) {
- let breakpoint = 0;
-
- if (this.SideClass.includes('navbar-expand-xl')) {
- breakpoint = 1200;
- } else if (this.SideClass.includes('navbar-expand-lg')) {
- breakpoint = 992;
- } else if (this.SideClass.includes('navbar-expand-md')) {
- breakpoint = 768;
- } else if (this.SideClass.includes('navbar-expand-sm')) {
- breakpoint = 576;
- } else {
- breakpoint = event.target.innerWidth + 1;
- }
-
- if (event.target.innerWidth < breakpoint) {
- if (!this.shown) {
- this.collapse = false;
- this.renderer.setStyle(this.el.nativeElement, 'height', '0px');
- this.renderer.setStyle(this.el.nativeElement, 'opacity', '0');
- setTimeout(() => {
- this.height = this.el.nativeElement.scrollHeight;
- this.collapse = true;
- this.renderer.setStyle(this.el.nativeElement, 'opacity', '');
- }, 4);
- }
- } else {
- this.collapsing = false;
- this.shown = false;
- this.showClass = false;
- this.collapse = true;
- this.ariaExpanded = false;
- this.renderer.setStyle(this.el.nativeElement, 'height', '');
- }
- }
-
- ngAfterContentChecked() {
- if (this.el.nativeElement.firstElementChild) {
- if (
- this._itemsLength !==
- this.el.nativeElement.firstElementChild.firstElementChild.children.length
- ) {
- this.height = this.el.nativeElement.firstElementChild.firstElementChild.clientHeight;
- this.renderer.setStyle(this.el.nativeElement, 'height', this.height + 'px');
- }
-
- this._itemsLength = this.el.nativeElement.firstElementChild.firstElementChild.children.length;
- }
- this._cdRef.markForCheck();
- }
-
- ngOnDestroy() {
- this._destroy$.next();
- this._destroy$.complete();
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/navbars/navbar.module.ts b/projects/angular-bootstrap-md/src/lib/free/navbars/navbar.module.ts
deleted file mode 100755
index 83166c8d..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/navbars/navbar.module.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { LinksComponent } from './links.component';
-import { LogoComponent } from './logo.component';
-import { NavbarService } from './navbar.service';
-import {CommonModule} from '@angular/common';
-import {NgModule} from '@angular/core';
-import {NavbarComponent} from './navbar.component';
-import { NavlinksComponent } from './navlinks.component';
-@NgModule({
- imports: [CommonModule],
- declarations: [NavbarComponent, LinksComponent, LogoComponent, NavlinksComponent],
- exports: [NavbarComponent, LinksComponent , LogoComponent, NavlinksComponent],
- providers: [NavbarService]
-})
-export class NavbarModule {}
diff --git a/projects/angular-bootstrap-md/src/lib/free/navbars/navbar.service.ts b/projects/angular-bootstrap-md/src/lib/free/navbars/navbar.service.ts
deleted file mode 100755
index b0ba3276..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/navbars/navbar.service.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { Injectable } from '@angular/core';
-import { Subject, Observable } from 'rxjs';
-
-@Injectable()
-export class NavbarService {
- private navbarLinkClicks = new Subject();
-
- getNavbarLinkClicks(): Observable {
- return this.navbarLinkClicks.asObservable();
- }
-
- setNavbarLinkClicks() {
- this.navbarLinkClicks.next();
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/navbars/navbars-module.scss b/projects/angular-bootstrap-md/src/lib/free/navbars/navbars-module.scss
deleted file mode 100644
index 469c9ebb..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/navbars/navbars-module.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-@import '../../assets/scss/core/mixins';
-@import '../../assets/scss/core/colors';
-@import '../../assets/scss/core/variables';
-
-
-@import 'navbars';
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/navbars/navlinks.component.ts b/projects/angular-bootstrap-md/src/lib/free/navbars/navlinks.component.ts
deleted file mode 100755
index 5e2b27b4..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/navbars/navlinks.component.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { NavbarService } from './navbar.service';
-import {
- AfterContentInit,
- Component,
- ContentChildren,
- ElementRef,
- QueryList,
- EventEmitter,
- Output,
- Renderer2,
-} from '@angular/core';
-import { RouterLinkWithHref } from '@angular/router';
-
-@Component({
- // tslint:disable-next-line:component-selector
- selector: 'navlinks',
- template: `
-
- `,
-})
-export class NavlinksComponent implements AfterContentInit {
- @ContentChildren(RouterLinkWithHref, { read: ElementRef, descendants: true })
- links: QueryList;
-
- @Output() linkClick = new EventEmitter();
-
- constructor(private _navbarService: NavbarService, private renderer: Renderer2) {}
-
- ngAfterContentInit() {
- setTimeout(() => {
- this.links.forEach((link: ElementRef) => {
- this.renderer.listen(link.nativeElement, 'click', () => {
- this._navbarService.setNavbarLinkClicks();
- });
- });
- }, 0);
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/popover/_popover.scss b/projects/angular-bootstrap-md/src/lib/free/popover/_popover.scss
deleted file mode 100644
index 6d8b6602..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/popover/_popover.scss
+++ /dev/null
@@ -1,172 +0,0 @@
-//Bootstrap 4 alpha popover styles - works with ng-bootstrap by Valor popover plugin
-
-.popover.popover-top,
-.popover.bs-tether-element-attached-bottom {
- margin-top: -10px;
-}
-
-.popover.popover-top::before,
-.popover.popover-top::after,
-.popover.bs-tether-element-attached-bottom::before,
-.popover.bs-tether-element-attached-bottom::after {
- left: 50%;
- border-bottom-width: 0;
-}
-
-.popover.popover-top::before,
-.popover.bs-tether-element-attached-bottom::before {
- bottom: -11px;
- margin-left: -11px;
- border-top-color: rgba(0, 0, 0, 0.25);
-}
-
-.popover.popover-top::after,
-.popover.bs-tether-element-attached-bottom::after {
- bottom: -10px;
- margin-left: -10px;
- border-top-color: #fff;
-}
-
-.popover.popover-right,
-.popover.bs-tether-element-attached-left {
- margin-left: 10px;
-}
-
-.popover.popover-right::before,
-.popover.popover-right::after,
-.popover.bs-tether-element-attached-left::before,
-.popover.bs-tether-element-attached-left::after {
- top: 50%;
- border-left-width: 0;
-}
-
-.popover.popover-right::before,
-.popover.bs-tether-element-attached-left::before {
- left: -11px;
- margin-top: -11px;
- border-right-color: rgba(0, 0, 0, 0.25);
-}
-
-.popover.popover-right::after,
-.popover.bs-tether-element-attached-left::after {
- left: -10px;
- margin-top: -10px;
- border-right-color: #fff;
-}
-
-.popover.popover-bottom,
-.popover.bs-tether-element-attached-top {
- margin-top: 10px;
-}
-
-.popover.popover-bottom::before,
-.popover.popover-bottom::after,
-.popover.bs-tether-element-attached-top::before,
-.popover.bs-tether-element-attached-top::after {
- left: 50%;
- border-top-width: 0;
-}
-
-.popover.popover-bottom::before,
-.popover.bs-tether-element-attached-top::before {
- top: -11px;
- margin-left: -11px;
- border-bottom-color: rgba(0, 0, 0, 0.25);
-}
-
-.popover.popover-bottom::after,
-.popover.bs-tether-element-attached-top::after {
- top: -10px;
- margin-left: -10px;
- border-bottom-color: #f7f7f7;
-}
-
-.popover.popover-bottom .popover-title::before,
-.popover.bs-tether-element-attached-top .popover-title::before {
- position: absolute;
- top: 0;
- left: 50%;
- display: block;
- width: 20px;
- margin-left: -10px;
- content: '';
- border-bottom: 1px solid #f7f7f7;
-}
-
-.popover.popover-left,
-.popover.bs-tether-element-attached-right {
- margin-left: -10px;
-}
-
-.popover.popover-left::before,
-.popover.popover-left::after,
-.popover.bs-tether-element-attached-right::before,
-.popover.bs-tether-element-attached-right::after {
- top: 50%;
- border-right-width: 0;
-}
-
-.popover.popover-left::before,
-.popover.bs-tether-element-attached-right::before {
- right: -11px;
- margin-top: -11px;
- border-left-color: rgba(0, 0, 0, 0.25);
-}
-
-.popover.popover-left::after,
-.popover.bs-tether-element-attached-right::after {
- right: -10px;
- margin-top: -10px;
- border-left-color: #fff;
-}
-
-.popover::before,
-.popover::after {
- position: absolute;
- display: block;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
-}
-
-.popover::before {
- content: '';
- border-width: 11px;
-}
-
-.popover::after {
- content: '';
- border-width: 10px;
-}
-
-// Popover animations
-
-@-webkit-keyframes fadeInPopover {
- from {
- opacity: 0;
- }
- to {
- opacity: 1;
- }
-}
-@keyframes fadeInPopover {
- from {
- opacity: 0;
- }
- to {
- opacity: 1;
- }
-}
-
-.popover-fadeIn {
- -webkit-animation-name: fadeInPopover;
- animation-name: fadeInPopover;
- -webkit-animation-delay: 0.2s;
- -moz-animation-delay: 0.2s;
- animation-delay: 0.2s;
- -webkit-animation-duration: 0.2s;
- animation-duration: 0.2s;
- -webkit-animation-fill-mode: both;
- animation-fill-mode: both;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/popover/index.ts b/projects/angular-bootstrap-md/src/lib/free/popover/index.ts
deleted file mode 100755
index 234a9258..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/popover/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { PopoverDirective } from './popover.directive';
-export { PopoverModule } from './popover.module';
-export { PopoverConfig } from './popover.config';
-export { PopoverContainerComponent } from './popover-container.component';
diff --git a/projects/angular-bootstrap-md/src/lib/free/popover/licens.md b/projects/angular-bootstrap-md/src/lib/free/popover/licens.md
deleted file mode 100755
index 68dc12fd..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/popover/licens.md
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/valor-software/ngx-bootstrap/blob/development/LICENSE
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/popover/popover-container.component.html b/projects/angular-bootstrap-md/src/lib/free/popover/popover-container.component.html
deleted file mode 100755
index eac5a669..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/popover/popover-container.component.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/popover/popover-container.component.ts b/projects/angular-bootstrap-md/src/lib/free/popover/popover-container.component.ts
deleted file mode 100755
index 6366eda5..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/popover/popover-container.component.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import {
- ChangeDetectionStrategy,
- Component,
- HostBinding,
- Input,
- OnInit,
- ViewEncapsulation,
-} from '@angular/core';
-import { PopoverConfig } from './popover.config';
-import { isBs3 } from '../utils/ng2-bootstrap-config';
-
-@Component({
- selector: 'mdb-popover-container',
- changeDetection: ChangeDetectionStrategy.OnPush,
- template: `
-
-
-
-
- `,
- styleUrls: ['./popover-module.scss'],
- encapsulation: ViewEncapsulation.None,
-})
-export class PopoverContainerComponent implements OnInit {
- @Input() public placement: string;
- @Input() public title: string;
- public containerClass: string;
- public bodyClass: string;
- public headerClass: string;
- @HostBinding('class.show') show = '!isBs3';
- @HostBinding('attr.role') role = 'tooltip';
-
- @HostBinding('class') class: any;
- public get isBs3(): boolean {
- return isBs3();
- }
-
- public constructor(config: PopoverConfig) {
- Object.assign(this, config);
- }
-
- ngOnInit() {
- this.class =
- 'popover-fadeIn popover in popover-' +
- this.placement +
- ' ' +
- this.placement +
- ' bs-popover-' +
- this.placement +
- ' ' +
- this.containerClass;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/popover/popover-module.scss b/projects/angular-bootstrap-md/src/lib/free/popover/popover-module.scss
deleted file mode 100644
index 8133ac4f..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/popover/popover-module.scss
+++ /dev/null
@@ -1 +0,0 @@
-@import 'popover';
diff --git a/projects/angular-bootstrap-md/src/lib/free/popover/popover.config.ts b/projects/angular-bootstrap-md/src/lib/free/popover/popover.config.ts
deleted file mode 100755
index d52ce229..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/popover/popover.config.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { Injectable } from '@angular/core';
-
-/**
- * Configuration service for the Popover directive.
- * You can inject this service, typically in your root component, and customize
- * the values of its properties in order to provide default values for all the
- * popovers used in the application.
- */
- @Injectable()
- export class PopoverConfig {
- /**
- * Placement of a popover. Accepts: "top", "bottom", "left", "right"
- */
- public placement = 'top';
- /**
- * Specifies events that should trigger. Supports a space separated list of
- * event names.
- */
- public triggers = 'click';
- /**
- * A selector specifying the element the popover should be appended to.
- * Currently only supports "body".
- */
- public container: string;
- }
diff --git a/projects/angular-bootstrap-md/src/lib/free/popover/popover.directive.ts b/projects/angular-bootstrap-md/src/lib/free/popover/popover.directive.ts
deleted file mode 100755
index 5be90b45..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/popover/popover.directive.ts
+++ /dev/null
@@ -1,201 +0,0 @@
-import {
- Directive,
- Input,
- Output,
- EventEmitter,
- OnInit,
- OnDestroy,
- Renderer2,
- ElementRef,
- TemplateRef,
- ViewContainerRef,
- HostListener,
-} from '@angular/core';
-import { PopoverConfig } from './popover.config';
-import { ComponentLoaderFactory } from '../utils/component-loader/component-loader.factory';
-import { ComponentLoader } from '../utils/component-loader/component-loader.class';
-import { PopoverContainerComponent } from './popover-container.component';
-import { PositioningService } from '../utils/positioning/positioning.service';
-
-/**
- * A lightweight, extensible directive for fancy popover creation.
- */
-@Directive({ selector: '[mdbPopover]', exportAs: 'bs-mdbPopover' })
-export class PopoverDirective implements OnInit, OnDestroy {
- @Input() public containerClass: string;
- @Input() public bodyClass: string;
- @Input() public headerClass: string;
- /**
- * Content to be displayed as popover.
- */
- @Input() public mdbPopover: string | TemplateRef;
- /**
- * Title of a popover.
- */
- @Input() public mdbPopoverHeader: string;
- @Input() public popoverTitle: string;
- /**
- * Placement of a popover. Accepts: "top", "bottom", "left", "right"
- */
- @Input() public placement: 'top' | 'bottom' | 'left' | 'right';
- /**
- * Specifies events that should trigger. Supports a space separated list of
- * event names.
- */
- @Input() public triggers: string;
- /**
- * A selector specifying the element the popover should be appended to.
- * Currently only supports "body".
- */
- @Input() public container: string;
-
- /**
- * Returns whether or not the popover is currently being shown
- */
- @Input()
- public get isOpen(): boolean {
- return this._popover.isShown;
- }
-
- public set isOpen(value: boolean) {
- if (value) {
- this.show();
- } else {
- this.hide();
- }
- }
-
- @Input() dynamicPosition = true;
- @Input() outsideClick = false;
- /**
- * Emits an event when the popover is shown
- */
- // tslint:disable-next-line:no-output-on-prefix
- @Output() public onShown: EventEmitter;
- @Output() public shown: EventEmitter;
- /**
- * Emits an event when the popover is hidden
- */
- // tslint:disable-next-line:no-output-on-prefix
- @Output() public onHidden: EventEmitter;
- @Output() public hidden: EventEmitter;
-
- private _popover: ComponentLoader;
-
- public constructor(
- _elementRef: ElementRef,
- _renderer: Renderer2,
- _viewContainerRef: ViewContainerRef,
- _config: PopoverConfig,
- cis: ComponentLoaderFactory,
- private _positionService: PositioningService
- ) {
- this._popover = cis
- .createLoader(_elementRef, _viewContainerRef, _renderer)
- .provide({ provide: PopoverConfig, useValue: _config });
- Object.assign(this, _config);
- this.onShown = this._popover.onShown;
- this.shown = this._popover.onShown;
- this.onHidden = this._popover.onHidden;
- this.hidden = this._popover.onHidden;
- }
-
- /**
- * Opens an element’s popover. This is considered a “manual” triggering of
- * the popover.
- */
- public show(): void | any {
- if (this._popover.isShown) {
- return;
- }
-
- this._positionService.setOptions({
- modifiers: {
- flip: {
- enabled: this.dynamicPosition,
- },
- preventOverflow: {
- enabled: this.dynamicPosition,
- },
- },
- });
-
- this._popover
- .attach(PopoverContainerComponent)
- .to(this.container)
- .position({ attachment: this.placement })
- .show({
- content: this.mdbPopover,
- placement: this.placement,
- title: this.mdbPopoverHeader || this.popoverTitle,
- containerClass: this.containerClass ? this.containerClass : '',
- bodyClass: this.bodyClass ? this.bodyClass : '',
- headerClass: this.headerClass ? this.headerClass : '',
- });
- this.isOpen = true;
-
- if (!this.dynamicPosition) {
- this._positionService.calcPosition();
- this._positionService.deletePositionElement(this._popover._componentRef.location);
- }
- }
-
- /**
- * Closes an element’s popover. This is considered a “manual” triggering of
- * the popover.
- */
- public hide(): void {
- if (this.isOpen) {
- this._popover.hide();
- this.isOpen = false;
- }
- }
-
- /**
- * Toggles an element’s popover. This is considered a “manual” triggering of
- * the popover.
- */
- public toggle(): void {
- if (this.isOpen) {
- return this.hide();
- }
-
- this.show();
- }
-
- @HostListener('click', ['$event']) onclick(event: any) {
- if (this.triggers.toString().includes('focus')) {
- event.stopPropagation();
- this.show();
- }
- }
-
- @HostListener('window:click') onblur() {
- if (this.triggers.toString().includes('focus') && this.isOpen) {
- this.hide();
- }
- }
-
- // fix(popover): popover with outsideClick='true' will now close after clicking in document on iPad Safari
- @HostListener('document:touchstart', ['$event']) onTouchStart(event: any) {
- if (this.outsideClick && !event.target.classList.contains('popover-body')) {
- this.hide();
- }
- }
-
- public ngOnInit(): any {
- this._popover.listen({
- triggers: this.triggers,
- outsideClick: this.outsideClick,
- show: () => this.show(),
- });
- }
-
- public dispose() {
- this._popover.dispose();
- }
-
- public ngOnDestroy(): any {
- this._popover.dispose();
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/popover/popover.module.ts b/projects/angular-bootstrap-md/src/lib/free/popover/popover.module.ts
deleted file mode 100755
index df35c44f..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/popover/popover.module.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { NgModule, ModuleWithProviders } from '@angular/core';
-import { CommonModule } from '@angular/common';
-
-import { ComponentLoaderFactory } from '../utils/component-loader/component-loader.factory';
-import { PositioningService } from '../utils/positioning/positioning.service';
-import { PopoverConfig } from './popover.config';
-import { PopoverDirective } from './popover.directive';
-import { PopoverContainerComponent } from './popover-container.component';
-
-@NgModule({
- imports: [CommonModule],
- declarations: [PopoverDirective, PopoverContainerComponent],
- exports: [PopoverDirective],
- entryComponents: [PopoverContainerComponent]
-})
-export class PopoverModule {
- public static forRoot(): ModuleWithProviders {
- return {
- ngModule: PopoverModule,
- providers: [PopoverConfig, ComponentLoaderFactory, PositioningService]
- };
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/sticky-header/index.ts b/projects/angular-bootstrap-md/src/lib/free/sticky-header/index.ts
deleted file mode 100644
index 27081b7d..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/sticky-header/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './sticky-header.directive';
-export * from './sticky-header.module';
diff --git a/projects/angular-bootstrap-md/src/lib/free/sticky-header/sticky-header.directive.ts b/projects/angular-bootstrap-md/src/lib/free/sticky-header/sticky-header.directive.ts
deleted file mode 100644
index f72bcc8c..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/sticky-header/sticky-header.directive.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-import {
- AfterViewInit,
- Directive,
- ElementRef,
- EventEmitter,
- Input,
- Output,
- Renderer2,
- OnDestroy,
-} from '@angular/core';
-import { fromEvent, Subject } from 'rxjs';
-import { window } from '../utils/facade/browser';
-import {
- distinctUntilChanged,
- filter,
- map,
- pairwise,
- share,
- skip,
- throttleTime,
- takeUntil,
-} from 'rxjs/operators';
-
-enum Direction {
- Up = 'Up',
- Down = 'Down',
-}
-
-@Directive({
- selector: '[mdbStickyHeader]',
- exportAs: 'mdbStickyHeader',
-})
-export class StickyHeaderDirective implements AfterViewInit, OnDestroy {
- @Input() animationDuration = 200;
- @Output() transitionEnd: EventEmitter<{ state: string }> = new EventEmitter<{ state: string }>();
-
- private _destroy$: Subject = new Subject();
-
- private scrollDown$: any;
- private scrollUp$: any;
-
- constructor(private _renderer: Renderer2, private _el: ElementRef) {}
-
- ngAfterViewInit() {
- const scroll$ = fromEvent(window, 'scroll').pipe(
- throttleTime(10),
- map(() => window.pageYOffset),
- pairwise(),
- map(([y1, y2]): Direction => (y2 < y1 ? Direction.Up : Direction.Down)),
- distinctUntilChanged(),
- share()
- );
-
- this.scrollUp$ = scroll$.pipe(filter(direction => direction === Direction.Up));
- this.scrollDown$ = scroll$.pipe(filter(direction => direction === Direction.Down));
-
- this._renderer.setStyle(this._el.nativeElement, 'position', 'fixed');
- this._renderer.setStyle(this._el.nativeElement, 'top', '0');
- this._renderer.setStyle(this._el.nativeElement, 'width', '100%');
- this._renderer.setStyle(this._el.nativeElement, 'z-index', '1030');
-
- setTimeout(() => {
- this.scrollUp$
- .pipe(
- skip(0),
- takeUntil(this._destroy$)
- )
- .subscribe(() => {
- this._renderer.setStyle(
- this._el.nativeElement,
- 'transition',
- `all ${this.animationDuration}ms ease-in`
- );
- this._renderer.setStyle(this._el.nativeElement, 'transform', 'translateY(0%)');
- this.transitionEnd.emit({ state: 'Visible' });
- });
- this.scrollDown$
- .pipe(
- skip(0),
- takeUntil(this._destroy$)
- )
- .subscribe(() => {
- this._renderer.setStyle(
- this._el.nativeElement,
- 'transition',
- `all ${this.animationDuration}ms ease-in`
- );
- this._renderer.setStyle(this._el.nativeElement, 'transform', 'translateY(-100%)');
- this.transitionEnd.emit({ state: 'Hidden' });
- });
- }, 0);
- }
-
- ngOnDestroy() {
- this._destroy$.next();
- this._destroy$.complete();
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/sticky-header/sticky-header.module.ts b/projects/angular-bootstrap-md/src/lib/free/sticky-header/sticky-header.module.ts
deleted file mode 100644
index 7c64f5f1..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/sticky-header/sticky-header.module.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-import { StickyHeaderDirective } from './sticky-header.directive';
-
-@NgModule({
- declarations: [StickyHeaderDirective],
- exports: [StickyHeaderDirective],
- imports: [CommonModule],
-})
-export class StickyHeaderModule {}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tables/_tables.scss b/projects/angular-bootstrap-md/src/lib/free/tables/_tables.scss
deleted file mode 100644
index 038ed269..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tables/_tables.scss
+++ /dev/null
@@ -1,71 +0,0 @@
-// Tables
-table {
- th {
- font-size: $table-th-font-size;
- font-weight: 400;
- }
- td {
- font-size: $table-td-font-size;
- font-weight: 300;
- }
- &.table {
- thead th {
- border-top: none;
- }
- th,
- td {
- padding-top: $table-th-padding-top;
- padding-bottom: $table-td-padding-bottom;
- }
- .label-table {
- margin: 0;
- padding: 0;
- line-height: $table-label-height;
- height: $table-label-line-height;
- }
- &.btn-table {
- td {
- vertical-align: middle;
- }
- }
- }
- &.table-hover {
- tbody {
- tr {
- &:hover {
- transition: $table-hover-transition;
- background-color: $table-hover-background-color;
- }
- }
- }
- }
- .th-lg {
- min-width: $table-th-lg-min-width;
- }
- .th-sm {
- min-width: $table-th-sm-min-width;
- }
- &.table-sm {
- th,
- td {
- padding-top: $table-sm-padding-y;
- padding-bottom: $table-sm-padding-y;
- }
- }
-}
-.table-scroll-vertical {
- max-height: $table-scroll-vertical-max-height;
- overflow-y: auto;
-}
-.table-fixed {
- table-layout: fixed;
-}
-.table-responsive,
-.table-responsive-sm,
-.table-responsive-md,
-.table-responsive-lg,
-.table-responsive-xl {
- > .table-bordered {
- border-top: 1px solid #dee2e6;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tables/components/mdb-table-pagination.component.html b/projects/angular-bootstrap-md/src/lib/free/tables/components/mdb-table-pagination.component.html
deleted file mode 100644
index 9ff60b43..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tables/components/mdb-table-pagination.component.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/tables/components/mdb-table-pagination.component.ts b/projects/angular-bootstrap-md/src/lib/free/tables/components/mdb-table-pagination.component.ts
deleted file mode 100644
index ed882c74..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tables/components/mdb-table-pagination.component.ts
+++ /dev/null
@@ -1,256 +0,0 @@
-import {
- Component,
- OnInit,
- Output,
- EventEmitter,
- Input,
- ChangeDetectorRef,
- OnChanges,
- SimpleChanges,
- AfterViewInit,
- OnDestroy,
-} from '@angular/core';
-import { Observable, Subject } from 'rxjs';
-import { MdbTableDirective } from '../directives/mdb-table.directive';
-import { takeUntil } from 'rxjs/operators';
-
-export interface MdbPaginationIndex {
- first: number;
- last: number;
-}
-
-@Component({
- selector: 'mdb-table-pagination',
- templateUrl: './mdb-table-pagination.component.html',
-})
-export class MdbTablePaginationComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {
- @Input() tableEl: MdbTableDirective;
- @Input() searchPagination = false;
- @Input() searchDataSource: any = null;
- @Input() ofKeyword = 'of';
- @Input() dashKeyword = '-';
- @Input() paginationAlign = '';
- @Input() hideDescription = false;
-
- private _destroy$: Subject = new Subject();
-
- maxVisibleItems = 10;
-
- firstItemIndex = 0;
- lastItemIndex: number = this.maxVisibleItems;
- lastVisibleItemIndex = 5;
-
- activePageNumber = 1;
-
- allItemsLength = 0;
-
- nextShouldBeDisabled = false;
- previousShouldBeDisabled = true;
-
- searchText = '';
-
- pagination: Subject = new Subject();
-
- @Output() nextPageClick = new EventEmitter();
- @Output() previousPageClick = new EventEmitter();
- @Output() firstPageClick = new EventEmitter();
- @Output() lastPageClick = new EventEmitter();
- constructor(private cdRef: ChangeDetectorRef) {}
-
- ngOnInit() {
- if (this.tableEl) {
- this.allItemsLength = this.tableEl.getDataSource().length;
- }
- }
-
- ngAfterViewInit() {
- if (this.tableEl) {
- this.tableEl
- .dataSourceChange()
- .pipe(takeUntil(this._destroy$))
- .subscribe((data: any) => {
- this.allItemsLength = data.length;
- this.lastVisibleItemIndex = data.length;
- this.calculateFirstItemIndex();
- this.calculateLastItemIndex();
- this.disableNextButton(data);
-
- if (this.searchDataSource) {
- setTimeout(() => {
- if (this.searchDataSource.length !== data.length) {
- this.activePageNumber = 1;
- this.firstItemIndex = 1;
- }
- }, 0);
- }
- });
- }
-
- this.paginationChange()
- .pipe(takeUntil(this._destroy$))
- .subscribe((data: any) => {
- this.firstItemIndex = data.first;
- this.lastVisibleItemIndex = data.last;
- });
- }
-
- ngOnChanges(changes: SimpleChanges) {
- const searchDataSource = changes['searchDataSource'];
- if (searchDataSource.currentValue.length !== 0) {
- this.allItemsLength = searchDataSource.currentValue.length;
- }
-
- if (this.lastVisibleItemIndex > this.allItemsLength) {
- this.lastVisibleItemIndex = this.allItemsLength;
- }
-
- if (searchDataSource.currentValue.length === 0) {
- this.firstItemIndex = 0;
- this.lastItemIndex = 0;
- this.lastVisibleItemIndex = 0;
- this.allItemsLength = 0;
- }
-
- if (
- !searchDataSource.isFirstChange() &&
- searchDataSource.currentValue.length <= this.maxVisibleItems
- ) {
- this.nextShouldBeDisabled = true;
- this.lastVisibleItemIndex = searchDataSource.currentValue.length;
- } else {
- this.nextShouldBeDisabled = false;
- }
- }
-
- setMaxVisibleItemsNumberTo(value: number) {
- this.lastItemIndex = value;
- this.lastVisibleItemIndex = value;
- this.maxVisibleItems = value;
- this.cdRef.detectChanges();
- }
-
- searchTextObs(): Observable {
- const observable = new Observable((observer: any) => {
- observer.next(this.searchText);
- });
- return observable;
- }
-
- disableNextButton(data: any) {
- if (data.length <= this.maxVisibleItems) {
- this.nextShouldBeDisabled = true;
- } else {
- this.nextShouldBeDisabled = false;
- }
- }
-
- calculateFirstItemIndex() {
- this.firstItemIndex = this.activePageNumber * this.maxVisibleItems - this.maxVisibleItems + 1;
- this.pagination.next({ first: this.firstItemIndex, last: this.lastItemIndex });
- }
-
- calculateLastItemIndex() {
- this.lastItemIndex = this.activePageNumber * this.maxVisibleItems;
- this.lastVisibleItemIndex = this.lastItemIndex;
-
- if (this.searchDataSource && this.lastItemIndex > this.searchDataSource.length) {
- this.lastVisibleItemIndex = this.searchDataSource.length;
- } else if (!this.searchDataSource) {
- this.lastVisibleItemIndex = this.lastItemIndex;
- }
-
- if (this.lastItemIndex > this.tableEl.getDataSource().length) {
- this.lastItemIndex = this.tableEl.getDataSource().length;
- this.lastVisibleItemIndex = this.tableEl.getDataSource().length;
- }
-
- this.pagination.next({ first: this.firstItemIndex, last: this.lastItemIndex });
- }
-
- paginationChange(): Observable {
- return this.pagination;
- }
-
- calculateHowManyPagesShouldBe() {
- return Math.ceil(this.tableEl.getDataSource().length / this.maxVisibleItems);
- }
-
- previousPage() {
- this.activePageNumber--;
- this.calculateFirstItemIndex();
- this.calculateLastItemIndex();
- this.previousPageClick.emit({ first: this.firstItemIndex, last: this.lastItemIndex });
- }
-
- nextPage() {
- this.activePageNumber++;
- this.calculateFirstItemIndex();
- this.calculateLastItemIndex();
-
- if (this.lastItemIndex > this.tableEl.getDataSource().length) {
- this.lastItemIndex = this.tableEl.getDataSource().length;
- }
-
- if (this.lastVisibleItemIndex > this.allItemsLength) {
- this.lastVisibleItemIndex = this.allItemsLength;
- }
-
- this.nextPageClick.emit({ first: this.firstItemIndex, last: this.lastItemIndex });
- }
-
- firstPage() {
- this.activePageNumber = 1;
- this.calculateFirstItemIndex();
- this.calculateLastItemIndex();
-
- this.firstPageClick.emit({ first: this.firstItemIndex, last: this.lastItemIndex });
- }
-
- lastPage() {
- const lastPage = Math.ceil(this.allItemsLength / this.maxVisibleItems);
- this.activePageNumber = lastPage;
- this.calculateFirstItemIndex();
- this.calculateLastItemIndex();
-
- this.lastPageClick.emit({ first: this.firstItemIndex, last: this.lastItemIndex });
- }
-
- nextPageObservable(): Observable {
- const obs = new Observable((observer: any) => {
- observer.next(this.firstItemIndex);
- });
- return obs;
- }
-
- previousPageObservable(): Observable {
- const obs = new Observable((observer: any) => {
- observer.next(this.lastVisibleItemIndex);
- });
- return obs;
- }
-
- checkIfNextShouldBeDisabled() {
- if (this.searchDataSource && this.lastVisibleItemIndex === this.searchDataSource.length) {
- return true;
- }
-
- if (this.activePageNumber >= this.calculateHowManyPagesShouldBe()) {
- return true;
- }
-
- if (this.nextShouldBeDisabled) {
- return this.nextShouldBeDisabled;
- }
- }
-
- checkIfPreviousShouldBeDisabled() {
- if (this.activePageNumber === 1) {
- return true;
- }
- }
-
- ngOnDestroy() {
- this._destroy$.next();
- this._destroy$.complete();
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tables/directives/mdb-table-row.directive.ts b/projects/angular-bootstrap-md/src/lib/free/tables/directives/mdb-table-row.directive.ts
deleted file mode 100644
index c4cfbb2b..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tables/directives/mdb-table-row.directive.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { Directive, Output, EventEmitter, OnInit, OnDestroy, ElementRef } from '@angular/core';
-
-@Directive({
- selector: '[mdbTableRow]'
-})
-export class MdbTableRowDirective implements OnInit, OnDestroy {
-
- @Output() rowCreated = new EventEmitter();
- @Output() rowRemoved = new EventEmitter();
-
- constructor(private el: ElementRef) {
- }
-
- ngOnInit() {
- this.rowCreated.emit({ created: true, el: this.el.nativeElement });
- }
-
- ngOnDestroy() {
- this.rowRemoved.emit({ removed: true });
- }
-
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tables/directives/mdb-table-scroll.directive.ts b/projects/angular-bootstrap-md/src/lib/free/tables/directives/mdb-table-scroll.directive.ts
deleted file mode 100644
index 846101cd..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tables/directives/mdb-table-scroll.directive.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { Directive, ElementRef, Renderer2, OnInit, Input } from '@angular/core';
-
-@Directive({
- selector: '[mdbTableScroll]',
-})
-export class MdbTableScrollDirective implements OnInit {
- @Input() scrollY = false;
- @Input() maxHeight: any = null;
-
- @Input() scrollX = false;
- @Input() maxWidth: any = null;
-
- constructor(private renderer: Renderer2, private el: ElementRef) {}
-
- wrapTableWithVerticalScrollingWrapper(tableWrapper: ElementRef) {
- this.renderer.setStyle(tableWrapper, 'max-height', this.maxHeight + 'px');
- this.renderer.setStyle(tableWrapper, 'overflow-y', 'auto');
- this.renderer.setStyle(tableWrapper, 'display', 'block');
- }
-
- wrapTableWithHorizontalScrollingWrapper(tableWrapper: ElementRef) {
- this.renderer.setStyle(tableWrapper, 'max-width', this.maxWidth + 'px');
- this.renderer.setStyle(tableWrapper, 'overflow-x', 'auto');
- this.renderer.setStyle(tableWrapper, 'display', 'block');
- }
-
- wrapTableWithHorizontalAndVerticalScrollingWrapper(tableWrapper: ElementRef) {
- this.renderer.setStyle(tableWrapper, 'max-height', this.maxHeight + 'px');
- this.renderer.setStyle(tableWrapper, 'max-width', this.maxWidth + 'px');
- this.renderer.setStyle(tableWrapper, 'overflow-x', 'auto');
- this.renderer.setStyle(tableWrapper, 'display', 'block');
- }
-
- ngOnInit() {
- const parent = this.el.nativeElement.parentNode;
- const tableWrapper = this.renderer.createElement('div');
-
- if (this.scrollY && this.scrollX && this.maxHeight && this.maxWidth) {
- this.wrapTableWithHorizontalAndVerticalScrollingWrapper(tableWrapper);
- }
-
- if (this.scrollY && this.maxHeight) {
- this.wrapTableWithVerticalScrollingWrapper(tableWrapper);
- }
-
- if (this.scrollX && this.maxWidth) {
- this.wrapTableWithHorizontalScrollingWrapper(tableWrapper);
- }
-
- this.renderer.insertBefore(parent, tableWrapper, this.el.nativeElement);
- this.renderer.removeChild(parent, this.el.nativeElement);
- this.renderer.appendChild(tableWrapper, this.el.nativeElement);
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tables/directives/mdb-table-sort.directive.ts b/projects/angular-bootstrap-md/src/lib/free/tables/directives/mdb-table-sort.directive.ts
deleted file mode 100644
index 9c2afa61..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tables/directives/mdb-table-sort.directive.ts
+++ /dev/null
@@ -1,127 +0,0 @@
-import {
- Directive,
- EventEmitter,
- HostListener,
- Input,
- Output,
- ElementRef,
- Renderer2,
- OnInit,
-} from '@angular/core';
-
-enum SortDirection {
- ASC = 'ascending',
- DESC = 'descending',
- CONST = 'constant',
-}
-
-export interface SortedData {
- data: any[];
- sortOrder: string;
- sortBy: string;
-}
-
-@Directive({
- selector: '[mdbTableSort]',
-})
-export class MdbTableSortDirective implements OnInit {
- sortedInto = true;
- order: string;
-
- @Input('mdbTableSort') dataSource: Array = [];
- @Input() sortBy: string;
-
- @Output() sortEnd: EventEmitter = new EventEmitter();
- @Output() sorted: EventEmitter = new EventEmitter();
-
- constructor(private el: ElementRef, private renderer: Renderer2) {}
-
- @HostListener('click') onclick() {
- this.sortDataBy(this.trimWhiteSigns(this.sortBy.toString()));
- this.sortEnd.emit(this.dataSource);
- this.sorted.emit({
- data: this.dataSource,
- sortOrder: this.order,
- sortBy: this.sortBy,
- });
- }
-
- trimWhiteSigns(headElement: any): string {
- return headElement.replace(/ /g, '');
- }
-
- public moveArrayItem(arr: any, oldIndex: number, newIndex: number) {
- while (oldIndex < 0) {
- oldIndex += arr.length;
- }
- while (newIndex < 0) {
- newIndex += arr.length;
- }
- if (newIndex >= arr.length) {
- let k = newIndex - arr.length;
- while (k-- + 1) {
- arr.push(null);
- }
- }
- arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);
- return arr;
- }
-
- sortDataBy(key: string | any) {
- let ariaPass = true;
-
- const setAria = (sort: 'ascending' | 'descending', id: any) => {
- if (ariaPass) {
- const inverse = sort === 'ascending' ? 'descending' : 'ascending';
-
- this.renderer.setAttribute(this.el.nativeElement, 'aria-sort', sort);
- this.renderer.setAttribute(
- this.el.nativeElement,
- 'aria-label',
- `${id}: activate to sort column ${inverse}`
- );
- ariaPass = false;
- }
- };
-
- key = key.split('.');
-
- this.dataSource.sort((a: any, b: any) => {
- let i = 0;
- while (i < key.length) {
- a = a[key[i]];
- b = b[key[i]];
- i++;
- }
-
- if (a < b) {
- setAria('ascending', key);
- this.order = SortDirection.ASC;
-
- return this.sortedInto ? 1 : -1;
- } else if (a > b) {
- setAria('descending', key);
- this.order = SortDirection.DESC;
-
- return this.sortedInto ? -1 : 1;
- } else if (a == null || b == null) {
- this.order = SortDirection.CONST;
- return 1;
- } else {
- this.order = SortDirection.CONST;
- return 0;
- }
- });
-
- this.sortedInto = !this.sortedInto;
- }
-
- ngOnInit() {
- const key = this.trimWhiteSigns(this.sortBy.toString()).split('.');
- this.renderer.setAttribute(
- this.el.nativeElement,
- 'aria-label',
- `${key}: activate to sort column descending`
- );
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tables/directives/mdb-table.directive.ts b/projects/angular-bootstrap-md/src/lib/free/tables/directives/mdb-table.directive.ts
deleted file mode 100644
index 0cd33a44..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tables/directives/mdb-table.directive.ts
+++ /dev/null
@@ -1,213 +0,0 @@
-import {
- AfterViewInit,
- Component,
- ElementRef,
- HostBinding,
- Input,
- OnInit,
- Renderer2,
- ViewEncapsulation,
-} from '@angular/core';
-import { Observable, Subject } from 'rxjs';
-
-@Component({
- // tslint:disable-next-line:component-selector
- selector: '[mdbTable]',
- exportAs: 'mdbTable',
- template: ' ',
- styleUrls: ['./../tables-module.scss'],
- encapsulation: ViewEncapsulation.None,
-})
-// tslint:disable-next-line:component-class-suffix
-export class MdbTableDirective implements OnInit, AfterViewInit {
- @Input()
- @HostBinding('class.table-striped')
- striped: boolean;
-
- @Input()
- @HostBinding('class.table-bordered')
- bordered: boolean;
-
- @Input()
- @HostBinding('class.table-borderless')
- borderless: boolean;
-
- @Input()
- @HostBinding('class.table-hover')
- hover: boolean;
-
- @Input()
- @HostBinding('class.table-sm')
- small: boolean;
-
- @Input()
- @HostBinding('class.table-responsive')
- responsive: boolean;
-
- @Input() stickyHeader = false;
- @Input() stickyHeaderBgColor = '';
- @Input() stickyHeaderTextColor = '';
-
- constructor(private el: ElementRef, private renderer: Renderer2) {}
-
- private _dataSource: any = [];
- private _dataSourceChanged: Subject = new Subject();
-
- addRow(newRow: any) {
- this.getDataSource().push(newRow);
- }
-
- addRowAfter(index: number, row: any) {
- this.getDataSource().splice(index, 0, row);
- }
-
- removeRow(index: number) {
- this.getDataSource().splice(index, 1);
- }
-
- rowRemoved(): Observable {
- const rowRemoved = new Observable((observer: any) => {
- observer.next(true);
- });
- return rowRemoved;
- }
-
- removeLastRow() {
- this.getDataSource().pop();
- }
-
- getDataSource() {
- return this._dataSource;
- }
-
- setDataSource(data: any) {
- this._dataSource = data;
- this._dataSourceChanged.next(this.getDataSource());
- }
-
- dataSourceChange(): Observable {
- return this._dataSourceChanged;
- }
-
- filterLocalDataBy(searchKey: string) {
- return this.getDataSource().filter((obj: Array) => {
- return Object.keys(obj).some((key: any) => {
- if (obj[key]) {
- // Fix(tableSearch): table search will now able to filter through nested data
-
- return JSON.stringify(obj)
- .toLowerCase()
- .includes(searchKey) as any;
- }
- });
- });
- }
-
- filterLocalDataByFields(searchKey: string, keys: string[]) {
- return this.getDataSource().filter((obj: Array) => {
- return Object.keys(obj).some((key: any) => {
- if (obj[key]) {
- if (keys.includes(key)) {
- if (obj[key].toLowerCase().includes(searchKey)) {
- return obj[key];
- }
- }
- }
- });
- });
- }
- filterLocalDataByMultipleFields(searchKey: string, keys?: string[]) {
- const items = searchKey.split(' ').map((x: { toLowerCase: () => void }) => x.toLowerCase());
- return this.getDataSource().filter((x: Array) => {
- for (const item of items) {
- let flag = false;
-
- if (keys !== undefined) {
- for (const prop in x) {
- if (x[prop]) {
- if (keys.includes(prop)) {
- if (x[prop].toLowerCase().indexOf(item) !== -1) {
- flag = true;
- break;
- }
- }
- }
- }
- }
- if (keys === undefined) {
- for (const prop in x) {
- if (x[prop].toLowerCase().indexOf(item) !== -1) {
- flag = true;
- break;
- }
- }
- }
- if (!flag) {
- return false;
- }
- }
- return true;
- });
- }
- searchLocalDataBy(searchKey: string) {
- if (!searchKey) {
- return this.getDataSource();
- }
-
- if (searchKey) {
- return this.filterLocalDataBy(searchKey.toLowerCase());
- }
- }
-
- searchLocalDataByFields(searchKey: string, keys: string[]) {
- if (!searchKey) {
- return this.getDataSource();
- }
-
- if (searchKey && keys.length > 0) {
- return this.filterLocalDataByFields(searchKey.toLowerCase(), keys);
- }
- if (!keys || keys.length === 0) {
- return this.filterLocalDataBy(searchKey.toLowerCase());
- }
- }
- searchLocalDataByMultipleFields(searchKey: string, keys?: string[]) {
- if (!searchKey) {
- return this.getDataSource();
- }
- if (searchKey && keys !== undefined) {
- return this.filterLocalDataByMultipleFields(searchKey.toLowerCase(), keys);
- }
- }
- searchDataObservable(searchKey: string): Observable {
- const observable = new Observable((observer: any) => {
- observer.next(this.searchLocalDataBy(searchKey));
- });
- return observable;
- }
-
- ngOnInit() {
- this.renderer.addClass(this.el.nativeElement, 'table');
- }
-
- ngAfterViewInit() {
- // Fix(stickyHeader): resolved problem with not working stickyHeader="true" on Chrome
- if (this.stickyHeader) {
- const tableHead = this.el.nativeElement.querySelector('thead');
-
- Array.from(tableHead.firstElementChild.children).forEach((child: any) => {
- this.renderer.addClass(child, 'sticky-top');
- if (this.stickyHeaderBgColor) {
- this.renderer.setStyle(child, 'background-color', this.stickyHeaderBgColor);
- } else {
- this.renderer.setStyle(child, 'background-color', '#f2f2f2');
- }
- if (this.stickyHeaderTextColor) {
- this.renderer.setStyle(child, 'color', this.stickyHeaderTextColor);
- } else {
- this.renderer.setStyle(child, 'color', '#000000');
- }
- });
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tables/index.ts b/projects/angular-bootstrap-md/src/lib/free/tables/index.ts
deleted file mode 100644
index 5e6bcc09..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tables/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export { TableModule } from './tables.module';
-export { MdbTablePaginationComponent } from './components/mdb-table-pagination.component';
-export { MdbTableRowDirective } from './directives/mdb-table-row.directive';
-export { MdbTableScrollDirective } from './directives/mdb-table-scroll.directive';
-export { MdbTableSortDirective } from './directives/mdb-table-sort.directive';
-export { MdbTableDirective } from './directives/mdb-table.directive';
-export { MdbTableService } from './services/mdb-table.service';
diff --git a/projects/angular-bootstrap-md/src/lib/free/tables/services/mdb-table.service.ts b/projects/angular-bootstrap-md/src/lib/free/tables/services/mdb-table.service.ts
deleted file mode 100644
index 0cc69ea0..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tables/services/mdb-table.service.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import { Observable, Subject } from 'rxjs';
-import { Injectable } from '@angular/core';
-
-@Injectable({
- providedIn: 'root',
-})
-export class MdbTableService {
- private _dataSource: any = [];
- private _dataSourceChanged: Subject = new Subject();
- constructor() {}
-
- addRow(newRow: any) {
- this.getDataSource().push(newRow);
- }
-
- addRowAfter(index: number, row: any) {
- this.getDataSource().splice(index, 0, row);
- }
-
- removeRow(index: number) {
- this.getDataSource().splice(index, 1);
- }
-
- rowRemoved(): Observable {
- const rowRemoved = new Observable((observer: any) => {
- observer.next(true);
- });
- return rowRemoved;
- }
-
- removeLastRow() {
- this.getDataSource().pop();
- }
-
- getDataSource() {
- return this._dataSource;
- }
-
- setDataSource(data: any) {
- this._dataSource = data;
- this._dataSourceChanged.next(this.getDataSource());
- }
-
- dataSourceChange(): Observable {
- return this._dataSourceChanged;
- }
-
- filterLocalDataBy(searchKey: any) {
- return this.getDataSource().filter((obj: Array) => {
- return Object.keys(obj).some((key: any) => {
- if (obj[key]) {
- return obj[key]
- .toString()
- .toLowerCase()
- .includes(searchKey);
- }
- });
- });
- }
-
- searchLocalDataBy(searchKey: any) {
- if (!searchKey) {
- return this.getDataSource();
- }
-
- if (searchKey) {
- return this.filterLocalDataBy(searchKey.toLowerCase());
- }
- }
-
- searchDataObservable(searchKey: any): Observable {
- const observable = new Observable((observer: any) => {
- observer.next(this.searchLocalDataBy(searchKey));
- });
- return observable;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tables/tables-module.scss b/projects/angular-bootstrap-md/src/lib/free/tables/tables-module.scss
deleted file mode 100644
index f436c505..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tables/tables-module.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-@import '../../assets/scss/core/colors';
-@import '../../assets/scss/core/variables';
-
-@import 'tables';
diff --git a/projects/angular-bootstrap-md/src/lib/free/tables/tables.module.ts b/projects/angular-bootstrap-md/src/lib/free/tables/tables.module.ts
deleted file mode 100644
index dd148503..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tables/tables.module.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-import { MdbTableDirective } from './directives/mdb-table.directive';
-import { MdbTableSortDirective } from './directives/mdb-table-sort.directive';
-import { MdbTableScrollDirective } from './directives/mdb-table-scroll.directive';
-import { MdbTableRowDirective } from './directives/mdb-table-row.directive';
-import { MdbTableService } from './services/mdb-table.service';
-import { MdbTablePaginationComponent } from './components/mdb-table-pagination.component';
-
-@NgModule({
- imports: [CommonModule],
- declarations: [
- MdbTablePaginationComponent,
- MdbTableRowDirective,
- MdbTableScrollDirective,
- MdbTableSortDirective,
- MdbTableDirective,
- ],
- exports: [
- MdbTablePaginationComponent,
- MdbTableRowDirective,
- MdbTableScrollDirective,
- MdbTableSortDirective,
- MdbTableDirective,
- ],
- entryComponents: [MdbTablePaginationComponent],
- providers: [MdbTableService],
-})
-export class TableModule {}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tooltip/_tooltip.scss b/projects/angular-bootstrap-md/src/lib/free/tooltip/_tooltip.scss
deleted file mode 100644
index 3f5e9083..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tooltip/_tooltip.scss
+++ /dev/null
@@ -1,229 +0,0 @@
-@mixin reset-text {
- font-family: $font-family-base;
- // We deliberately do NOT reset font-size or word-wrap.
- font-style: normal;
- font-weight: $font-weight-normal;
- letter-spacing: normal;
- line-break: auto;
- line-height: $line-height-base;
- text-align: left; // Fallback for where `start` is not supported
- text-align: start;
- text-decoration: none;
- text-shadow: none;
- text-transform: none;
- white-space: normal;
- word-break: normal;
- word-spacing: normal;
-}
-a
-
-// Base class
-.tooltip {
- position: absolute;
- z-index: $zindex-tooltip;
- display: block;
- // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
- // So reset our font and text properties to avoid inheriting weird values.
- @include reset-text();
- font-size: $font-size-sm;
- // Allow breaking very long words so they don't overflow the tooltip's bounds
- word-wrap: break-word;
- opacity: 0;
-
- &.show {
- opacity: $tooltip-opacity;
- }
-
- &.tooltip-top,
- &.bs-tether-element-attached-bottom {
- padding: $tooltip-arrow-width 0;
- margin-top: -$tooltip-margin;
-
- .tooltip-inner::before {
- bottom: 0;
- left: 50%;
- margin-left: -$tooltip-arrow-width;
- content: '';
- border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
- // border-top-color: $tooltip-arrow-color;
- }
- }
- &.tooltip-right,
- &.bs-tether-element-attached-left {
- padding: 0 $tooltip-arrow-width;
- margin-left: $tooltip-margin;
-
- .tooltip-inner::before {
- top: 50%;
- left: 0;
- margin-top: -$tooltip-arrow-width;
- content: '';
- border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;
- // border-right-color: $tooltip-arrow-color;
- }
- }
- &.tooltip-bottom,
- &.bs-tether-element-attached-top {
- padding: $tooltip-arrow-width 0;
- margin-top: $tooltip-margin;
-
- .tooltip-inner::before {
- top: 0;
- left: 50%;
- margin-left: -$tooltip-arrow-width;
- content: '';
- border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
- // border-bottom-color: $tooltip-arrow-color;
- }
- }
- &.tooltip-left,
- &.bs-tether-element-attached-right {
- padding: 0 $tooltip-arrow-width;
- margin-left: -$tooltip-margin;
-
- .tooltip-inner::before {
- top: 50%;
- right: 0;
- margin-top: -$tooltip-arrow-width;
- content: '';
- border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;
- // border-left-color: $tooltip-arrow-color;
- }
- }
-}
-
-// Wrapper for the tooltip content
-.tooltip-inner {
- max-width: $tooltip-max-width;
- padding: $tooltip-padding-y $tooltip-padding-x;
- // color: $tooltip-color;
- text-align: center;
- // background-color: $tooltip-bg;
- padding: 0.2rem 0.4rem;
- box-shadow: $z-depth-1-half;
- border-radius: ($border-radius);
-
- &::before {
- position: absolute;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
- }
-}
-
-// Tooltip animations
-@-webkit-keyframes fadeInTooltip {
- from {
- opacity: 0;
- }
- to {
- opacity: 1;
- }
-}
-@keyframes fadeInTooltip {
- from {
- opacity: 0;
- }
- to {
- opacity: 1;
- }
-}
-
-.tooltip-fadeIn {
- -webkit-animation-name: fadeInTooltip;
- animation-name: fadeInTooltip;
- -webkit-animation-delay: 0.2s;
- -moz-animation-delay: 0.2s;
- animation-delay: 0.2s;
- -webkit-animation-duration: 0.2s;
- animation-duration: 0.2s;
- -webkit-animation-fill-mode: both;
- animation-fill-mode: both;
-}
-
-//sebfix for tooltips
-.single-tooltip {
- padding: 0.75rem 0 0 0;
- a {
- padding: 0 !important;
- }
-}
-
-a[tooltip] {
- margin-left: 0 !important;
- padding: 0 0.5rem;
-}
-
-.tooltip-arrow {
- &.left {
- position: relative;
- margin-right: -0.6rem;
- transform: rotate(90deg);
- }
- &.right {
- position: relative;
- margin-left: -0.6rem;
- transform: rotate(-90deg);
- }
- &.top {
- position: relative;
- transform: rotate(-180deg);
- }
-}
-
-.tooltip-top {
- padding: $tooltip-arrow-height 0;
-
- .arrow {
- bottom: 0;
-
- &::before {
- top: 0;
- border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
- border-top-color: $tooltip-arrow-color;
- }
- }
-}
-
-.tooltip-right {
- padding: 0 $tooltip-arrow-height;
-
- .arrow {
- left: 0;
-
- &::before {
- right: 0;
- border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
- border-right-color: $tooltip-arrow-color;
- }
- }
-}
-
-.tooltip-bottom {
- padding: $tooltip-arrow-height 0;
-
- .arrow {
- top: 0;
-
- &::before {
- bottom: 0;
- border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
- border-bottom-color: $tooltip-arrow-color;
- }
- }
-}
-
-.tooltip-left {
- padding: 0 $tooltip-arrow-height;
-
- .arrow {
- right: 0;
-
- &::before {
- left: 0;
- border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
- border-left-color: $tooltip-arrow-color;
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tooltip/index.ts b/projects/angular-bootstrap-md/src/lib/free/tooltip/index.ts
deleted file mode 100755
index b652a3d4..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tooltip/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { TooltipContainerComponent } from './tooltip.component';
-export { TooltipDirective } from './tooltip.directive';
-export { TooltipModule } from './tooltip.module';
-export { TooltipConfig } from './tooltip.service';
diff --git a/projects/angular-bootstrap-md/src/lib/free/tooltip/licens.md b/projects/angular-bootstrap-md/src/lib/free/tooltip/licens.md
deleted file mode 100755
index 68dc12fd..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tooltip/licens.md
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/valor-software/ngx-bootstrap/blob/development/LICENSE
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip-module.scss b/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip-module.scss
deleted file mode 100644
index 88c8f34e..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip-module.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-@import '../../assets/scss/core/mixins';
-@import '../../assets/scss/core/colors';
-@import '../../assets/scss/core/variables';
-@import '../../assets/scss/core/bootstrap/functions';
-@import '../../assets/scss/core/bootstrap/variables';
-
-@import 'tooltip';
-
diff --git a/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.component.html b/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.component.html
deleted file mode 100755
index 5ec56eb6..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.component.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.component.ts b/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.component.ts
deleted file mode 100755
index dd2dca21..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.component.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import {
- AfterViewInit,
- ChangeDetectionStrategy,
- Component,
- ElementRef,
- HostBinding,
- Input,
- ViewChild,
- ViewEncapsulation,
-} from '@angular/core';
-import { TooltipConfig } from './tooltip.service';
-import { isBs3 } from '../utils/ng2-bootstrap-config';
-
-@Component({
- selector: 'mdb-tooltip-container',
- changeDetection: ChangeDetectionStrategy.OnPush,
- template: `
-
-
-
-
- `,
- styleUrls: ['tooltip-module.scss'],
- encapsulation: ViewEncapsulation.None,
-})
-export class TooltipContainerComponent implements AfterViewInit {
- public classMap: any;
- public placement: string;
- public popupClass: string;
- public animation: boolean;
-
- @Input() containerClass = '';
- @ViewChild('tooltipInner', { static: true }) tooltipInner: ElementRef;
- @ViewChild('tooltipArrow', { static: true }) tooltipArrow: ElementRef;
- @HostBinding('class.show') show = !this.isBs3;
- @HostBinding('class')
- get tooltipClasses() {
- return `tooltip-fadeIn tooltip in tooltip-${this.placement} bs-tooltip-${this.placement} ${this.placement} ${this.containerClass}`;
- }
-
- public get isBs3(): boolean {
- return isBs3();
- }
-
- public constructor(config: TooltipConfig, public elem: ElementRef) {
- Object.assign(this, config);
- }
-
- public ngAfterViewInit(): void {
- this.classMap = { in: false, fade: false };
- this.classMap[this.placement] = true;
- this.classMap['tooltip-' + this.placement] = true;
-
- this.classMap.in = true;
- if (this.animation) {
- this.classMap.fade = true;
- }
-
- if (this.popupClass) {
- this.classMap[this.popupClass] = true;
- }
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.directive.ts b/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.directive.ts
deleted file mode 100755
index 22c28c02..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.directive.ts
+++ /dev/null
@@ -1,229 +0,0 @@
-import {
- Directive,
- ElementRef,
- EventEmitter,
- Inject,
- Input,
- OnChanges,
- OnDestroy,
- OnInit,
- Output,
- PLATFORM_ID,
- Renderer2,
- SimpleChanges,
- TemplateRef,
- ViewContainerRef,
-} from '@angular/core';
-import { TooltipContainerComponent } from './tooltip.component';
-import { TooltipConfig } from './tooltip.service';
-import { ComponentLoaderFactory } from '../utils/component-loader/component-loader.factory';
-import { ComponentLoader } from '../utils/component-loader/component-loader.class';
-import { OnChange } from '../utils/decorators';
-import { isPlatformBrowser } from '@angular/common';
-import { PositioningService } from '../utils/positioning/positioning.service';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
-
-@Directive({
- selector: '[mdbTooltip]',
- exportAs: 'mdb-tooltip',
-})
-export class TooltipDirective implements OnInit, OnDestroy, OnChanges {
- /**
- * Content to be displayed as tooltip.
- */
- @OnChange()
- @Input()
- public mdbTooltip: string | TemplateRef;
- /** Fired when tooltip content changes */
- @Output() public tooltipChange: EventEmitter> = new EventEmitter();
-
- /**
- * Placement of a tooltip. Accepts: "top", "bottom", "left", "right"
- */
- @Input() public placement: string;
- /**
- * Specifies events that should trigger. Supports a space separated list of
- * event names.
- */
- @Input() public triggers: string;
- /**
- * A selector specifying the element the tooltip should be appended to.
- * Currently only supports "body".
- */
- @Input() public container: string;
-
- /**
- * Returns whether or not the tooltip is currently being shown
- */
- @Input()
- public get isOpen(): boolean {
- return this._tooltip.isShown;
- }
-
- public set isOpen(value: boolean) {
- if (value) {
- this.show();
- } else {
- this.hide();
- }
- }
-
- /**
- * Allows to disable tooltip
- */
- @Input() public isDisabled: boolean;
-
- @Input() dynamicPosition = true;
-
- /**
- * Emits an event when the tooltip is shown
- */
- // tslint:disable-next-line:no-output-on-prefix
- @Output() public onShown: EventEmitter;
- @Output() public shown: EventEmitter;
- /**
- * Emits an event when the tooltip is hidden
- */
- // tslint:disable-next-line:no-output-on-prefix
- @Output() public onHidden: EventEmitter;
- @Output() public hidden: EventEmitter;
-
- @Input() public delay = 0;
- @Input() public customHeight: string;
- @Input() public fadeDuration = 150;
-
- private _destroy$: Subject = new Subject();
-
- protected _delayTimeoutId: any;
-
- private _tooltip: ComponentLoader;
-
- isBrowser: any = false;
-
- public constructor(
- _renderer: Renderer2,
- private _elementRef: ElementRef,
- private _positionService: PositioningService,
- _viewContainerRef: ViewContainerRef,
- cis: ComponentLoaderFactory,
- config: TooltipConfig,
- @Inject(PLATFORM_ID) private platformId: string
- ) {
- this.isBrowser = isPlatformBrowser(this.platformId);
- this._tooltip = cis
- .createLoader(this._elementRef, _viewContainerRef, _renderer)
- .provide({ provide: TooltipConfig, useValue: config });
-
- Object.assign(this, config);
- this.onShown = this._tooltip.onShown;
- this.shown = this._tooltip.onShown;
- this.onHidden = this._tooltip.onHidden;
- this.hidden = this._tooltip.onHidden;
- }
-
- public ngOnInit(): void {
- this._tooltip.listen({
- triggers: this.triggers,
- show: () => this.show(),
- });
-
- this.tooltipChange.pipe(takeUntil(this._destroy$)).subscribe((value: any) => {
- if (!value) {
- this._tooltip.hide();
- }
- });
- }
-
- ngOnChanges(changes: SimpleChanges) {
- if (!changes['mdbTooltip'].isFirstChange()) {
- this.tooltipChange.emit(this.mdbTooltip);
- }
- }
-
- /**
- * Toggles an element’s tooltip. This is considered a “manual” triggering of
- * the tooltip.
- */
- public toggle(): void {
- if (this.isOpen) {
- return this.hide();
- }
-
- this.show();
- }
-
- /**
- * Opens an element’s tooltip. This is considered a “manual” triggering of
- * the tooltip.
- */
- public show(): void {
- if (this.isOpen || this.isDisabled || this._delayTimeoutId || !this.mdbTooltip) {
- return;
- }
-
- this._positionService.setOptions({
- modifiers: {
- flip: {
- enabled: this.dynamicPosition,
- },
- preventOverflow: {
- enabled: this.dynamicPosition,
- },
- },
- });
-
- const showTooltip = () => {
- this._tooltip
- .attach(TooltipContainerComponent)
- .to(this.container)
- .position({ attachment: this.placement })
- .show({
- content: this.mdbTooltip,
- placement: this.placement,
- });
- };
-
- this.showTooltip(showTooltip);
- }
-
- private showTooltip(fn: Function) {
- if (this.delay) {
- this._delayTimeoutId = setTimeout(() => {
- fn();
- }, this.delay);
- } else {
- fn();
- }
- }
-
- /**
- * Closes an element’s tooltip. This is considered a “manual” triggering of
- * the tooltip.
- */
- public hide(): void {
- if (this._delayTimeoutId) {
- clearTimeout(this._delayTimeoutId);
- this._delayTimeoutId = undefined;
- }
-
- if (!this._tooltip.isShown) {
- return;
- }
-
- this._tooltip.instance.classMap.in = false;
- setTimeout(() => {
- this._tooltip.hide();
- }, this.fadeDuration);
- }
-
- public dispose() {
- this._tooltip.dispose();
- }
-
- public ngOnDestroy(): void {
- this._tooltip.dispose();
- this._destroy$.next();
- this._destroy$.complete();
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.module.ts b/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.module.ts
deleted file mode 100755
index 4eaa2c03..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.module.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { CommonModule } from '@angular/common';
-import { NgModule, ModuleWithProviders } from '@angular/core';
-import { TooltipContainerComponent } from './tooltip.component';
-import { TooltipDirective } from './tooltip.directive';
-import { TooltipConfig } from './tooltip.service';
-import { ComponentLoaderFactory } from '../utils/component-loader/component-loader.factory';
-import { PositioningService } from '../utils/positioning/positioning.service';
-
-@NgModule({
- imports: [CommonModule],
- declarations: [TooltipDirective, TooltipContainerComponent],
- exports: [TooltipDirective],
- entryComponents: [TooltipContainerComponent]
-})
-export class TooltipModule {
- public static forRoot(): ModuleWithProviders {
- return {
- ngModule: TooltipModule,
- providers: [TooltipConfig, ComponentLoaderFactory, PositioningService]
- };
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.service.ts b/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.service.ts
deleted file mode 100755
index 8f798358..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/tooltip/tooltip.service.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Injectable } from '@angular/core';
-
-/** Default values provider for tooltip */
-@Injectable()
-export class TooltipConfig {
- /** tooltip placement, supported positions: 'top', 'bottom', 'left', 'right' */
- public placement = 'top';
- /** array of event names which triggers tooltip opening */
- public triggers = 'hover focus';
- /** a selector specifying the element the tooltip should be appended to. Currently only supports "body" */
- public container: string;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utilities/decorators.ts b/projects/angular-bootstrap-md/src/lib/free/utilities/decorators.ts
deleted file mode 100644
index c27344f7..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utilities/decorators.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/*tslint:disable:no-invalid-this */
-/* tslint:disable-next-line: no-any */
-export function OnChange(): any {
- const sufix = 'Change';
-
- /* tslint:disable-next-line: no-any */
- return function OnChangeHandler(target: any, propertyKey: string): void {
- const _key = ` __${propertyKey}Value`;
- Object.defineProperty(target, propertyKey, {
- /* tslint:disable-next-line: no-any */
- get(): any {
- return this[_key];
- },
- /* tslint:disable-next-line: no-any */
- set(value: any): void {
- const prevValue = this[_key];
- this[_key] = value;
- if (prevValue !== value && this[propertyKey + sufix]) {
- this[propertyKey + sufix].emit(value);
- }
- }
- });
- };
-}
-/* tslint:enable */
diff --git a/projects/angular-bootstrap-md/src/lib/free/utilities/facade/browser.ts b/projects/angular-bootstrap-md/src/lib/free/utilities/facade/browser.ts
deleted file mode 100644
index bd78bbc2..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utilities/facade/browser.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * @license
- * Copyright Google Inc. All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-
-/**
- * JS version of browser APIs. This library can only run in the browser.
- */
-const win = (typeof window !== 'undefined' && window) || {} as any;
-
-export { win as window };
-export const document = win.document;
-export const location = win.location;
-export const gc = win.gc ? () => win.gc() : (): any => null;
-export const performance = win.performance ? win.performance : null;
-export const Event = win.Event;
-export const MouseEvent = win.MouseEvent;
-export const KeyboardEvent = win.KeyboardEvent;
-export const EventTarget = win.EventTarget;
-export const History = win.History;
-export const Location = win.Location;
-export const EventListener = win.EventListener;
diff --git a/projects/angular-bootstrap-md/src/lib/free/utilities/index.ts b/projects/angular-bootstrap-md/src/lib/free/utilities/index.ts
deleted file mode 100644
index 56c5e091..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utilities/index.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-export * from './triggers';
-export { isBs3 } from './theme-provider';
-export { LinkedList } from './linked-list.class';
-
-export {
- listenToTriggersV2,
- registerOutsideClick,
- registerEscClick
-} from './triggers';
-
-export { OnChange } from './decorators';
-export { setTheme } from './theme-provider';
-export { Trigger } from './trigger.class';
-export { Utils } from './utils.class';
-export { window, document } from './facade/browser';
-export { warnOnce }from './warn-once';
diff --git a/projects/angular-bootstrap-md/src/lib/free/utilities/licens.md b/projects/angular-bootstrap-md/src/lib/free/utilities/licens.md
deleted file mode 100755
index 68dc12fd..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utilities/licens.md
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/valor-software/ngx-bootstrap/blob/development/LICENSE
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/utilities/linked-list.class.ts b/projects/angular-bootstrap-md/src/lib/free/utilities/linked-list.class.ts
deleted file mode 100644
index da4546c4..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utilities/linked-list.class.ts
+++ /dev/null
@@ -1,283 +0,0 @@
-export class LinkedList {
- length = 0;
- /* tslint:disable-next-line: no-any*/
- protected head: any;
- /* tslint:disable-next-line: no-any*/
- protected tail: any;
- /* tslint:disable-next-line: no-any*/
- protected current: any;
- protected asArray: T[] = [];
-
- get(position: number) {
- if (this.length === 0 || position < 0 || position >= this.length) {
- return void 0;
- }
-
- let current = this.head;
-
- for (let index = 0; index < position; index++) {
- current = current.next;
- }
-
- return current.value;
- }
-
- add(value: T, position: number = this.length): void {
- if (position < 0 || position > this.length) {
- throw new Error('Position is out of the list');
- }
-
- /* tslint:disable-next-line: no-any*/
- const node: any = {
- value,
- next: undefined,
- previous: undefined
- };
-
- if (this.length === 0) {
- this.head = node;
- this.tail = node;
- this.current = node;
- } else {
- if (position === 0) {
- // first node
- node.next = this.head;
- this.head.previous = node;
- this.head = node;
- } else if (position === this.length) {
- // last node
- this.tail.next = node;
- node.previous = this.tail;
- this.tail = node;
- } else {
- // node in middle
- const currentPreviousNode = this.getNode(position - 1);
- const currentNextNode = currentPreviousNode.next;
-
- currentPreviousNode.next = node;
- currentNextNode.previous = node;
-
- node.previous = currentPreviousNode;
- node.next = currentNextNode;
- }
- }
- this.length++;
- this.createInternalArrayRepresentation();
- }
-
- remove(position = 0): void {
- if (this.length === 0 || position < 0 || position >= this.length) {
- throw new Error('Position is out of the list');
- }
-
- if (position === 0) {
- // first node
- this.head = this.head.next;
-
- if (this.head) {
- // there is no second node
- this.head.previous = undefined;
- } else {
- // there is no second node
- this.tail = undefined;
- }
- } else if (position === this.length - 1) {
- // last node
- this.tail = this.tail.previous;
- this.tail.next = undefined;
- } else {
- // middle node
- const removedNode = this.getNode(position);
- removedNode.next.previous = removedNode.previous;
- removedNode.previous.next = removedNode.next;
- }
-
- this.length--;
- this.createInternalArrayRepresentation();
- }
-
- set(position: number, value: T): void {
- if (this.length === 0 || position < 0 || position >= this.length) {
- throw new Error('Position is out of the list');
- }
-
- const node = this.getNode(position);
- node.value = value;
- this.createInternalArrayRepresentation();
- }
-
- toArray(): T[] {
- return this.asArray;
- }
-
- /* tslint:disable-next-line: no-any*/
- findAll(fn: any): any[] {
- let current = this.head;
- /* tslint:disable-next-line: no-any*/
- const result: any[] = [];
- for (let index = 0; index < this.length; index++) {
- if (fn(current.value, index)) {
- result.push({index, value: current.value});
- }
- current = current.next;
- }
-
- return result;
- }
-
- // Array methods overriding start
- push(...args: T[]): number {
- /* tslint:disable-next-line: no-any*/
- args.forEach((arg: any) => {
- this.add(arg);
- });
-
- return this.length;
- }
-
- pop() {
- if (this.length === 0) {
- return undefined;
- }
- const last = this.tail;
- this.remove(this.length - 1);
-
- return last.value;
- }
-
- unshift(...args: T[]): number {
- args.reverse();
- /* tslint:disable-next-line: no-any*/
- args.forEach((arg: any) => {
- this.add(arg, 0);
- });
-
- return this.length;
- }
-
- shift() {
- if (this.length === 0) {
- return undefined;
- }
- const lastItem = this.head.value;
- this.remove();
-
- return lastItem;
- }
-
- /* tslint:disable-next-line: no-any*/
- forEach(fn: any): void {
- let current = this.head;
- for (let index = 0; index < this.length; index++) {
- fn(current.value, index);
- current = current.next;
- }
- }
-
- indexOf(value: T): number {
- let current = this.head;
- let position = 0;
-
- for (let index = 0; index < this.length; index++) {
- if (current.value === value) {
- position = index;
- break;
- }
- current = current.next;
- }
-
- return position;
- }
-
- /* tslint:disable-next-line: no-any*/
- some(fn: any): boolean {
- let current = this.head;
- let result = false;
- while (current && !result) {
- if (fn(current.value)) {
- result = true;
- break;
- }
- current = current.next;
- }
-
- return result;
- }
-
- /* tslint:disable-next-line: no-any*/
- every(fn: any): boolean {
- let current = this.head;
- let result = true;
- while (current && result) {
- if (!fn(current.value)) {
- result = false;
- }
- current = current.next;
- }
-
- return result;
- }
-
- toString(): string {
- return '[Linked List]';
- }
-
- /* tslint:disable-next-line: no-any*/
- find(fn: any) {
- let current = this.head;
- let result;
- for (let index = 0; index < this.length; index++) {
- if (fn(current.value, index)) {
- result = current.value;
- break;
- }
- current = current.next;
- }
-
- return result;
- }
-
- /* tslint:disable-next-line: no-any*/
- findIndex(fn: any) {
- let current = this.head;
- let result;
- for (let index = 0; index < this.length; index++) {
- if (fn(current.value, index)) {
- result = index;
- break;
- }
- current = current.next;
- }
-
- return result;
- }
-
- /* tslint:disable-next-line: no-any*/
- protected getNode(position: number): any {
- if (this.length === 0 || position < 0 || position >= this.length) {
- throw new Error('Position is out of the list');
- }
-
- let current = this.head;
-
- for (let index = 0; index < position; index++) {
- current = current.next;
- }
-
- return current;
- }
-
- protected createInternalArrayRepresentation(): void {
- /* tslint:disable-next-line: no-any*/
- const outArray: any[] = [];
- let current = this.head;
-
- while (current) {
- outArray.push(current.value);
- current = current.next;
- }
- this.asArray = outArray;
- }
-
- // Array methods overriding END
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utilities/theme-provider.ts b/projects/angular-bootstrap-md/src/lib/free/utilities/theme-provider.ts
deleted file mode 100644
index f94e8ff8..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utilities/theme-provider.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { window } from './facade/browser';
-
-let guessedVersion: 'bs3' | 'bs4' | null;
-
-function _guessBsVersion(): 'bs3' | 'bs4' | null {
- if (typeof document === 'undefined') {
- return null;
- }
- const spanEl = document.createElement('span');
- spanEl.innerText = 'test bs version';
- document.body.appendChild(spanEl);
- spanEl.classList.add('d-none');
- const rect = spanEl.getBoundingClientRect();
- document.body.removeChild(spanEl);
- if (!rect) {
- return 'bs3';
- }
-
- return rect.top === 0 ? 'bs4' : 'bs3';
-}
-
-export function setTheme(theme: 'bs3' | 'bs4'): void {
- guessedVersion = theme;
-}
-
-// todo: in ngx-bootstrap, bs4 will became a default one
-export function isBs3(): boolean {
- if (typeof window === 'undefined') {
- return true;
- }
-
- if (typeof window.__theme === 'undefined') {
- if (guessedVersion) {
- return guessedVersion === 'bs3';
- }
- guessedVersion = _guessBsVersion();
-
- return guessedVersion === 'bs3';
- }
-
- return window.__theme !== 'bs4';
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utilities/trigger.class.ts b/projects/angular-bootstrap-md/src/lib/free/utilities/trigger.class.ts
deleted file mode 100644
index 0ee7d29f..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utilities/trigger.class.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * @copyright Valor Software
- * @copyright Angular ng-bootstrap team
- */
-
-export class Trigger {
- open: string;
- close?: any;
-
- constructor(open: string, close?: string) {
- this.open = open;
- this.close = close || open;
- }
-
- isManual(): boolean {
- return this.open === 'manual' || this.close === 'manual';
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utilities/triggers.ts b/projects/angular-bootstrap-md/src/lib/free/utilities/triggers.ts
deleted file mode 100644
index ee572878..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utilities/triggers.ts
+++ /dev/null
@@ -1,176 +0,0 @@
-/**
- * @copyright Valor Software
- * @copyright Angular ng-bootstrap team
- */
-import { Renderer2 } from '@angular/core';
-import { Trigger } from './trigger.class';
-
-/* tslint:disable-next-line: no-any */
-export type BsEventCallback = (event?: any) => boolean | void;
-
-export interface ListenOptions {
- target?: HTMLElement;
- targets?: HTMLElement[];
- triggers?: any;
- outsideClick?: boolean;
- outsideEsc?: boolean;
- show?: any;
- hide?: any;
- toggle?: BsEventCallback;
-}
-
-const DEFAULT_ALIASES = {
- hover: ['mouseover', 'mouseout'],
- focus: ['focusin', 'focusout']
-};
-
-/* tslint:disable-next-line: no-any */
-export function parseTriggers(triggers: string, aliases: any = DEFAULT_ALIASES): Trigger[] {
- const trimmedTriggers = (triggers || '').trim();
-
- if (trimmedTriggers.length === 0) {
- return [];
- }
-
- const parsedTriggers = trimmedTriggers
- .split(/\s+/)
- .map((trigger: string) => trigger.split(':'))
- .map((triggerPair: string[]) => {
- const alias = aliases[triggerPair[0]] || triggerPair;
-
- return new Trigger(alias[0], alias[1]);
- });
-
- const manualTriggers = parsedTriggers.filter((triggerPair: Trigger) =>
- triggerPair.isManual()
- );
-
- if (manualTriggers.length > 1) {
- throw new Error('Triggers parse error: only one manual trigger is allowed');
- }
-
- if (manualTriggers.length === 1 && parsedTriggers.length > 1) {
- throw new Error('Triggers parse error: manual trigger can\'t be mixed with other triggers');
- }
-
- return parsedTriggers;
-}
-
-export function listenToTriggers(renderer: Renderer2,
- /* tslint:disable-next-line: no-any */
- target: any,
- triggers: string,
- showFn: BsEventCallback,
- hideFn: BsEventCallback,
- toggleFn: BsEventCallback): Function {
- const parsedTriggers = parseTriggers(triggers);
- /* tslint:disable-next-line: no-any */
- const listeners: any[] = [];
-
- if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {
- return Function.prototype;
- }
-
- parsedTriggers.forEach((trigger: Trigger) => {
- if (trigger.open === trigger.close) {
- listeners.push(renderer.listen(target, trigger.open, toggleFn));
-
- return;
- }
-
- listeners.push(
- renderer.listen(target, trigger.open, showFn),
- renderer.listen(target, trigger.close, hideFn)
- );
- });
-
- return () => {
- listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());
- };
-}
-
-export function listenToTriggersV2(renderer: Renderer2,
- options: ListenOptions): Function {
- const parsedTriggers = parseTriggers(options.triggers);
- const target = options.target;
- // do nothing
- if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {
- return Function.prototype;
- }
-
- // all listeners
- /* tslint:disable-next-line: no-any */
- const listeners: any[] = [];
-
- // lazy listeners registration
- const _registerHide: Function[] = [];
- const registerHide = () => {
- // add hide listeners to unregister array
- _registerHide.forEach((fn: Function) => listeners.push(fn()));
- // register hide events only once
- _registerHide.length = 0;
- };
-
- // register open\close\toggle listeners
- parsedTriggers.forEach((trigger: Trigger) => {
- const useToggle = trigger.open === trigger.close;
- const showFn = useToggle ? options.toggle : options.show;
-
- if (!useToggle) {
- _registerHide.push(() =>
- renderer.listen(target, trigger.close, options.hide)
- );
- }
-
- listeners.push(
- renderer.listen(target, trigger.open, () => showFn(registerHide))
- );
- });
-
- return () => {
- listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());
- };
-}
-
-export function registerOutsideClick(renderer: Renderer2,
- options: ListenOptions) {
- if (!options.outsideClick) {
- return Function.prototype;
- }
-
- /* tslint:disable-next-line: no-any */
- return renderer.listen('document', 'click', (event: any) => {
- if (options.target && options.target.contains(event.target)) {
- return undefined;
- }
- if (
- options.targets &&
- options.targets.some(target => target.contains(event.target))
- ) {
- return undefined;
- }
-
- options.hide();
- });
-}
-
-export function registerEscClick(renderer: Renderer2,
- options: ListenOptions) {
- if (!options.outsideEsc) {
- return Function.prototype;
- }
-
- return renderer.listen('document', 'keyup.esc', (event: any) => {
- if (options.target && options.target.contains(event.target)) {
- return undefined;
- }
- if (
- options.targets &&
- options.targets.some(target => target.contains(event.target))
- ) {
- return undefined;
- }
-
- options.hide();
- });
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utilities/utils.class.ts b/projects/angular-bootstrap-md/src/lib/free/utilities/utils.class.ts
deleted file mode 100644
index 41926a3e..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utilities/utils.class.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { window } from './facade/browser';
-
-export class Utils {
- /* tslint:disable-next-line: no-any */
- static reflow(element: any): void {
- /* tslint:disable-next-line: no-any */
- ((bs: any): void => bs)(element.offsetHeight);
- }
-
- // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js
- /* tslint:disable-next-line: no-any */
- static getStyles(elem: any): any {
- // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
- // IE throws on elements created in popups
- // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
- let view = elem.ownerDocument.defaultView;
-
- if (!view || !view.opener) {
- view = window;
- }
-
- return view.getComputedStyle(elem);
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utilities/warn-once.ts b/projects/angular-bootstrap-md/src/lib/free/utilities/warn-once.ts
deleted file mode 100644
index d9a84629..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utilities/warn-once.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { isDevMode } from '@angular/core';
-const _messagesHash: { [key: string]: boolean } = {};
-const _hideMsg = typeof console === 'undefined' || !('warn' in console);
-
-export function warnOnce(msg: string): void {
- if (!isDevMode() || _hideMsg || msg in _messagesHash) {
- return;
- }
-
- _messagesHash[msg] = true;
- /*tslint:disable-next-line*/
- console.warn(msg);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/bs-component-ref.class.ts b/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/bs-component-ref.class.ts
deleted file mode 100644
index 14c212ee..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/bs-component-ref.class.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { TemplateRef, ViewContainerRef } from '@angular/core';
-
-export class BsComponentRef {
- templateRef: TemplateRef;
- viewContainer: ViewContainerRef;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/component-loader.class.ts b/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/component-loader.class.ts
deleted file mode 100644
index 16f1a453..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/component-loader.class.ts
+++ /dev/null
@@ -1,420 +0,0 @@
-// tslint:disable:max-file-line-count
-// todo: add delay support
-// todo: merge events onShow, onShown, etc...
-// todo: add global positioning configuration?
-import {
- ApplicationRef,
- ComponentFactory,
- ComponentFactoryResolver,
- ComponentRef,
- ElementRef,
- EmbeddedViewRef,
- EventEmitter,
- Injector,
- NgZone,
- Renderer2,
- StaticProvider,
- TemplateRef,
- Type,
- ViewContainerRef
-} from '@angular/core';
-
-import { PositioningOptions, PositioningService} from './../positioning/positioning.service';
-
-import {
- listenToTriggersV2,
- registerEscClick,
- registerOutsideClick
-} from './../../utilities';
-
-import { ContentRef } from './content-ref.class';
-import { ListenOptions } from './listen-options.model';
-
-export class ComponentLoader {
- onBeforeShow: EventEmitter = new EventEmitter();
- /* tslint:disable-next-line: no-any*/
- onShown: EventEmitter = new EventEmitter();
- /* tslint:disable-next-line: no-any*/
- onBeforeHide: EventEmitter = new EventEmitter();
- onHidden: EventEmitter = new EventEmitter();
- shown: EventEmitter = new EventEmitter();
- hidden: EventEmitter = new EventEmitter();
-
- instance: T;
- _componentRef: ComponentRef | any;
- _inlineViewRef: EmbeddedViewRef;
-
- private _providers: StaticProvider[] = [];
- private _componentFactory: ComponentFactory;
- private _zoneSubscription: any;
- private _contentRef: ContentRef | any;
- private _innerComponent: ComponentRef | any;
-
- private _unregisterListenersFn: Function;
-
- get isShown(): boolean {
- if (this._isHiding) {
- return false;
- }
-
- return !!this._componentRef;
- }
-
- private _isHiding = false;
-
- /**
- * Placement of a component. Accepts: "top", "bottom", "left", "right"
- */
- private attachment: string;
-
- /**
- * A selector specifying the element the popover should be appended to.
- */
- /* tslint:disable-next-line: no-any*/
- private container: string | ElementRef | any;
-
- /**
- * A selector used if container element was not found
- */
- private containerDefaultSelector = 'body';
-
- /**
- * Specifies events that should trigger. Supports a space separated list of
- * event names.
- */
- private triggers: string;
-
- private _listenOpts: any = {};
- private _globalListener: Function | null = Function.prototype;
-
- /**
- * Do not use this directly, it should be instanced via
- * `ComponentLoadFactory.attach`
- * @internal
- */
- // tslint:disable-next-line
- public constructor(
- private _viewContainerRef: ViewContainerRef,
- private _renderer: Renderer2,
- private _elementRef: ElementRef,
- private _injector: Injector,
- private _componentFactoryResolver: ComponentFactoryResolver,
- private _ngZone: NgZone,
- private _applicationRef: ApplicationRef,
- private _posService: PositioningService
- ) {}
-
- attach(compType: Type): ComponentLoader {
- this._componentFactory = this._componentFactoryResolver
- .resolveComponentFactory(compType);
-
- return this;
- }
-
- // todo: add behaviour: to target element, `body`, custom element
- to(container?: string | ElementRef): ComponentLoader {
- this.container = container || this.container;
-
- return this;
- }
-
- position(opts?: PositioningOptions | any): ComponentLoader {
- this.attachment = opts.attachment || this.attachment;
- this._elementRef = (opts.target as ElementRef) || this._elementRef;
-
- return this;
- }
-
- provide(provider: StaticProvider): ComponentLoader {
- this._providers.push(provider);
-
- return this;
- }
-
- // todo: appendChild to element or document.querySelector(this.container)
-
- show(opts: {
- /* tslint:disable-next-line: no-any*/
- content?: string | TemplateRef;
- /* tslint:disable-next-line: no-any*/
- data?: any;
- /* tslint:disable-next-line: no-any*/
- [key: string]: any;
- } = {}
- ): ComponentRef {
-
- this._subscribePositioning();
- this._innerComponent = null;
-
- if (!this._componentRef) {
- this.onBeforeShow.emit();
- this._contentRef = this._getContentRef(opts.content, opts.data);
-
- const injector = Injector.create({
- providers: this._providers,
- parent: this._injector
- });
-
- this._componentRef = this._componentFactory.create(injector, this._contentRef.nodes);
-
- this._applicationRef.attachView(this._componentRef.hostView);
- // this._componentRef = this._viewContainerRef
- // .createComponent(this._componentFactory, 0, injector, this._contentRef.nodes);
- this.instance = this._componentRef.instance;
-
- Object.assign(this._componentRef.instance, opts);
-
- if (this.container instanceof ElementRef) {
- this.container.nativeElement.appendChild(
- this._componentRef.location.nativeElement
- );
- }
-
- if (typeof this.container === 'string' && typeof document !== 'undefined') {
- const selectedElement = document.querySelector(this.container) ||
- document.querySelector(this.containerDefaultSelector);
-
- if (selectedElement) {
- selectedElement.appendChild(this._componentRef.location.nativeElement);
- }
- }
-
- if (
- !this.container &&
- this._elementRef &&
- this._elementRef.nativeElement.parentElement
- ) {
- this._elementRef.nativeElement.parentElement.appendChild(
- this._componentRef.location.nativeElement
- );
- }
-
- // we need to manually invoke change detection since events registered
- // via
- // Renderer::listen() are not picked up by change detection with the
- // OnPush strategy
- if (this._contentRef.componentRef) {
- this._innerComponent = this._contentRef.componentRef.instance;
- this._contentRef.componentRef.changeDetectorRef.markForCheck();
- this._contentRef.componentRef.changeDetectorRef.detectChanges();
- }
- this._componentRef.changeDetectorRef.markForCheck();
- this._componentRef.changeDetectorRef.detectChanges();
- this.onShown.emit(this._componentRef.instance);
- }
-
- this._registerOutsideClick();
-
- return this._componentRef;
- }
-
- hide(): ComponentLoader {
- if (!this._componentRef) {
- return this;
- }
-
- this._posService.deletePositionElement(this._componentRef.location);
-
- this.onBeforeHide.emit(this._componentRef.instance);
-
- const componentEl = this._componentRef.location.nativeElement;
- componentEl.parentNode.removeChild(componentEl);
- if (this._contentRef.componentRef) {
- this._contentRef.componentRef.destroy();
- }
- this._componentRef.destroy();
- if (this._viewContainerRef && this._contentRef.viewRef) {
- this._viewContainerRef.remove(
- this._viewContainerRef.indexOf(this._contentRef.viewRef)
- );
- }
- if (this._contentRef.viewRef) {
- this._contentRef.viewRef.destroy();
- }
-
- this._contentRef = null;
- this._componentRef = null;
- this._removeGlobalListener();
-
- this.onHidden.emit();
-
- return this;
- }
-
- toggle(): void {
- if (this.isShown) {
- this.hide();
-
- return;
- }
-
- this.show();
- }
-
- dispose(): void {
- if (this.isShown) {
- this.hide();
- }
-
- this._unsubscribePositioning();
-
- if (this._unregisterListenersFn) {
- this._unregisterListenersFn();
- }
- }
-
- listen(listenOpts: ListenOptions | any): ComponentLoader {
- this.triggers = listenOpts.triggers || this.triggers;
- this._listenOpts.outsideClick = listenOpts.outsideClick;
- this._listenOpts.outsideEsc = listenOpts.outsideEsc;
- listenOpts.target = listenOpts.target || this._elementRef.nativeElement;
-
- const hide = (this._listenOpts.hide = () =>
- listenOpts.hide ? listenOpts.hide() : void this.hide());
- const show = (this._listenOpts.show = (registerHide: Function) => {
- listenOpts.show ? listenOpts.show(registerHide) : this.show(registerHide);
- registerHide();
- });
-
- const toggle = (registerHide: Function) => {
- this.isShown ? hide() : show(registerHide);
- };
-
- this._unregisterListenersFn = listenToTriggersV2(this._renderer, {
- target: listenOpts.target,
- triggers: listenOpts.triggers,
- show,
- hide,
- toggle
- });
-
- return this;
- }
-
- _removeGlobalListener() {
- if (this._globalListener) {
- this._globalListener();
- this._globalListener = null;
- }
- }
-
- attachInline(
- vRef: ViewContainerRef,
- /* tslint:disable-next-line: no-any*/
- template: TemplateRef
- ): ComponentLoader {
- this._inlineViewRef = vRef.createEmbeddedView(template);
-
- return this;
- }
-
- _registerOutsideClick(): void {
- if (!this._componentRef || !this._componentRef.location) {
- return;
- }
- // why: should run after first event bubble
- if (this._listenOpts && this._listenOpts.outsideClick) {
- const target = this._componentRef.location.nativeElement;
- setTimeout(() => {
- this._globalListener = registerOutsideClick(this._renderer, {
- targets: [target, this._elementRef.nativeElement],
- outsideClick: this._listenOpts.outsideClick,
- hide: () => this._listenOpts.hide()
- });
- });
- }
- if (this._listenOpts.outsideEsc) {
- const target = this._componentRef.location.nativeElement;
- this._globalListener = registerEscClick(this._renderer, {
- targets: [target, this._elementRef.nativeElement],
- outsideEsc: this._listenOpts.outsideEsc,
- hide: () => this._listenOpts.hide()
- });
- }
- }
-
- getInnerComponent(): ComponentRef {
- return this._innerComponent;
- }
-
- private _subscribePositioning(): void {
- if (this._zoneSubscription || !this.attachment) {
- return;
- }
-
- this.onShown.subscribe(() => {
- this._posService.position({
- element: this._componentRef.location,
- target: this._elementRef,
- attachment: this.attachment,
- appendToBody: this.container === 'body'
- });
- });
-
- this._zoneSubscription = this._ngZone.onStable.subscribe(() => {
- if (!this._componentRef) {
- return;
- }
-
- this._posService.calcPosition();
- });
- }
-
- private _unsubscribePositioning(): void {
- if (!this._zoneSubscription) {
- return;
- }
-
- this._zoneSubscription.unsubscribe();
- this._zoneSubscription = null;
- }
-
- private _getContentRef(
- /* tslint:disable-next-line: no-any*/
- content: string | TemplateRef | any,
- /* tslint:disable-next-line: no-any*/
- data?: any,
- /* tslint:disable-next-line: no-any*/
- ): ContentRef {
- if (!content) {
- return new ContentRef([]);
- }
-
- if (content instanceof TemplateRef) {
- if (this._viewContainerRef) {
- const _viewRef = this._viewContainerRef
- .createEmbeddedView>(content);
- _viewRef.markForCheck();
-
- return new ContentRef([_viewRef.rootNodes], _viewRef);
- }
- const viewRef = content.createEmbeddedView({});
- this._applicationRef.attachView(viewRef);
-
- return new ContentRef([viewRef.rootNodes], viewRef);
- }
-
- if (typeof content === 'function') {
- const contentCmptFactory = this._componentFactoryResolver.resolveComponentFactory(
- content
- );
-
- const modalContentInjector = Injector.create({
- providers: this._providers,
- parent: this._injector
- });
-
- const componentRef = contentCmptFactory.create(modalContentInjector);
- Object.assign(componentRef.instance, data);
- this._applicationRef.attachView(componentRef.hostView);
-
- return new ContentRef(
- [[componentRef.location.nativeElement]],
- componentRef.hostView,
- componentRef
- );
- }
-
- return new ContentRef([[this._renderer.createText(`${content}`)]]);
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/component-loader.factory.ts b/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/component-loader.factory.ts
deleted file mode 100644
index 0f244f6e..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/component-loader.factory.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import {
- ApplicationRef, ComponentFactoryResolver, ElementRef, Injectable, Injector,
- NgZone, Renderer2, ViewContainerRef
-} from '@angular/core';
-import { ComponentLoader } from './component-loader.class';
-import { PositioningService } from './../positioning/positioning.service';
-
-@Injectable()
-export class ComponentLoaderFactory {
- constructor(private _componentFactoryResolver: ComponentFactoryResolver,
- private _ngZone: NgZone,
- private _injector: Injector,
- private _posService: PositioningService,
- private _applicationRef: ApplicationRef) {}
-
- createLoader(_elementRef: ElementRef,
- _viewContainerRef: ViewContainerRef,
- _renderer: Renderer2): ComponentLoader {
- return new ComponentLoader(
- _viewContainerRef,
- _renderer,
- _elementRef,
- this._injector,
- this._componentFactoryResolver,
- this._ngZone,
- this._applicationRef,
- this._posService
- );
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/content-ref.class.ts b/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/content-ref.class.ts
deleted file mode 100644
index 2c973c8c..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/content-ref.class.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * @copyright Valor Software
- * @copyright Angular ng-bootstrap team
- */
-
-import { ComponentRef, ViewRef } from '@angular/core';
-
-export class ContentRef {
- /* tslint:disable-next-line: no-any */
- nodes: any[];
- viewRef?: ViewRef;
- /* tslint:disable-next-line: no-any */
- componentRef?: ComponentRef;
-
- constructor(
- /* tslint:disable-next-line: no-any */
- nodes: any[],
- viewRef?: ViewRef,
- /* tslint:disable-next-line: no-any */
- componentRef?: ComponentRef
- ) {
- this.nodes = nodes;
- this.viewRef = viewRef;
- this.componentRef = componentRef;
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/index.ts b/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/index.ts
deleted file mode 100644
index 91dc3fc1..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { BsComponentRef } from './bs-component-ref.class';
-export { ComponentLoader } from './component-loader.class';
-export { ComponentLoaderFactory } from './component-loader.factory';
-export { ContentRef } from './content-ref.class';
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/listen-options.model.ts b/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/listen-options.model.ts
deleted file mode 100644
index 004c8db0..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/component-loader/listen-options.model.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/* tslint:disable-next-line: no-any */
-export type BsEventCallback = (event?: any) => boolean | void;
-
-export interface ListenOptions {
- target?: HTMLElement;
- targets?: HTMLElement[];
- triggers?: string;
- outsideClick?: boolean;
- outsideEsc?: boolean;
- show?: BsEventCallback;
- hide?: BsEventCallback;
- toggle?: BsEventCallback;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/decorators.ts b/projects/angular-bootstrap-md/src/lib/free/utils/decorators.ts
deleted file mode 100755
index 607a27bf..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/decorators.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/*tslint:disable:no-invalid-this */
-export function OnChange(): any {
- const sufix = 'Change';
- return function OnChangeHandler(target: any, propertyKey: string): void {
- const _key = ` __${propertyKey}Value`;
- Object.defineProperty(target, propertyKey, {
- get(): any { return this[_key]; },
- set(value: any): void {
- const prevValue = this[_key];
- this[_key] = value;
- if (prevValue !== value && this[propertyKey + sufix]) {
- this[propertyKey + sufix].emit(value);
- }
- }
- });
- };
-}
-/* tslint:enable */
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/facade/browser.ts b/projects/angular-bootstrap-md/src/lib/free/utils/facade/browser.ts
deleted file mode 100755
index e6bbfdc8..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/facade/browser.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/*tslint:disable */
-/**
- * @license
- * Copyright Google Inc. All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-
-/**
- * JS version of browser APIs. This library can only run in the browser.
- */
-var win = typeof window !== 'undefined' && window || {};
-
-export {win as window};
-export var document = win.document;
-export var location = win.location;
-export var gc = win['gc'] ? () => win['gc']() : (): any => null;
-export var performance = win['performance'] ? win['performance'] : null;
-export const Event = win['Event'];
-export const MouseEvent = win['MouseEvent'];
-export const KeyboardEvent = win['KeyboardEvent'];
-export const EventTarget = win['EventTarget'];
-export const History = win['History'];
-export const Location = win['Location'];
-export const EventListener = win['EventListener'];
-export const navigator = win['navigator'];
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/index.ts b/projects/angular-bootstrap-md/src/lib/free/utils/index.ts
deleted file mode 100755
index 3ddf6c52..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export { OnChange } from './decorators';
-export { LinkedList } from './linked-list.class';
-export { isBs3 } from './ng2-bootstrap-config';
-export { Trigger } from './trigger.class';
-export { Utils } from './utils.class';
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/keyboard-navigation.ts b/projects/angular-bootstrap-md/src/lib/free/utils/keyboard-navigation.ts
deleted file mode 100644
index ea5d737e..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/keyboard-navigation.ts
+++ /dev/null
@@ -1,126 +0,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-
-export const MAC_ENTER = 3;
-export const BACKSPACE = 8;
-export const TAB = 9;
-export const NUM_CENTER = 12;
-export const ENTER = 13;
-export const SHIFT = 16;
-export const CONTROL = 17;
-export const ALT = 18;
-export const PAUSE = 19;
-export const CAPS_LOCK = 20;
-export const ESCAPE = 27;
-export const SPACE = 32;
-export const PAGE_UP = 33;
-export const PAGE_DOWN = 34;
-export const END = 35;
-export const HOME = 36;
-export const LEFT_ARROW = 37;
-export const UP_ARROW = 38;
-export const RIGHT_ARROW = 39;
-export const DOWN_ARROW = 40;
-export const PLUS_SIGN = 43;
-export const PRINT_SCREEN = 44;
-export const INSERT = 45;
-export const DELETE = 46;
-export const ZERO = 48;
-export const ONE = 49;
-export const TWO = 50;
-export const THREE = 51;
-export const FOUR = 52;
-export const FIVE = 53;
-export const SIX = 54;
-export const SEVEN = 55;
-export const EIGHT = 56;
-export const NINE = 57;
-export const FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186
-export const FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187
-export const QUESTION_MARK = 63;
-export const AT_SIGN = 64;
-export const A = 65;
-export const B = 66;
-export const C = 67;
-export const D = 68;
-export const E = 69;
-export const F = 70;
-export const G = 71;
-export const H = 72;
-export const I = 73;
-export const J = 74;
-export const K = 75;
-export const L = 76;
-export const M = 77;
-export const N = 78;
-export const O = 79;
-export const P = 80;
-export const Q = 81;
-export const R = 82;
-export const S = 83;
-export const T = 84;
-export const U = 85;
-export const V = 86;
-export const W = 87;
-export const X = 88;
-export const Y = 89;
-export const Z = 90;
-export const META = 91; // WIN_KEY_LEFT
-export const MAC_WK_CMD_LEFT = 91;
-export const MAC_WK_CMD_RIGHT = 93;
-export const CONTEXT_MENU = 93;
-export const NUMPAD_ZERO = 96;
-export const NUMPAD_ONE = 97;
-export const NUMPAD_TWO = 98;
-export const NUMPAD_THREE = 99;
-export const NUMPAD_FOUR = 100;
-export const NUMPAD_FIVE = 101;
-export const NUMPAD_SIX = 102;
-export const NUMPAD_SEVEN = 103;
-export const NUMPAD_EIGHT = 104;
-export const NUMPAD_NINE = 105;
-export const NUMPAD_MULTIPLY = 106;
-export const NUMPAD_PLUS = 107;
-export const NUMPAD_MINUS = 109;
-export const NUMPAD_PERIOD = 110;
-export const NUMPAD_DIVIDE = 111;
-export const F1 = 112;
-export const F2 = 113;
-export const F3 = 114;
-export const F4 = 115;
-export const F5 = 116;
-export const F6 = 117;
-export const F7 = 118;
-export const F8 = 119;
-export const F9 = 120;
-export const F10 = 121;
-export const F11 = 122;
-export const F12 = 123;
-export const NUM_LOCK = 144;
-export const SCROLL_LOCK = 145;
-export const FIRST_MEDIA = 166;
-export const FF_MINUS = 173;
-export const MUTE = 173; // Firefox (Gecko) fires 181 for MUTE
-export const VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN
-export const VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP
-export const FF_MUTE = 181;
-export const FF_VOLUME_DOWN = 182;
-export const LAST_MEDIA = 183;
-export const FF_VOLUME_UP = 183;
-export const SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON
-export const EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS
-export const COMMA = 188;
-export const DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS
-export const SLASH = 191;
-export const APOSTROPHE = 192;
-export const TILDE = 192;
-export const OPEN_SQUARE_BRACKET = 219;
-export const BACKSLASH = 220;
-export const CLOSE_SQUARE_BRACKET = 221;
-export const SINGLE_QUOTE = 222;
-export const MAC_META = 224;
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/licens.md b/projects/angular-bootstrap-md/src/lib/free/utils/licens.md
deleted file mode 100755
index 68dc12fd..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/licens.md
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/valor-software/ngx-bootstrap/blob/development/LICENSE
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/linked-list.class.ts b/projects/angular-bootstrap-md/src/lib/free/utils/linked-list.class.ts
deleted file mode 100755
index 075d20c9..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/linked-list.class.ts
+++ /dev/null
@@ -1,265 +0,0 @@
-export class LinkedList {
-
- // public length: = 0;
- public length: any = 0;
- protected head: any;
- protected tail: any;
- protected current: any;
- protected asArray: T[] = [];
-
- protected getNode(position: number): any {
- if (this.length === 0 || position < 0 || position >= this.length) {
- throw new Error('Position is out of the list');
- }
-
- let current = this.head;
-
- for (let index = 0; index < position; index++) {
- current = current.next;
- }
- return current;
- }
-
- protected createInternalArrayRepresentation(): void {
- const outArray: any[] = [];
- let current = this.head;
-
- while (current) {
- outArray.push(current.value);
- current = current.next;
- }
- this.asArray = outArray;
- }
-
- // public get(position: number): T {
- public get(position: number): T | any {
- if (this.length === 0 || position < 0 || position >= this.length) {
- return void 0;
- }
-
- let current = this.head;
-
- for (let index = 0; index < position; index++) {
- current = current.next;
- }
- return current.value;
- }
-
- public add(value: T, position: number = this.length): void {
- if (position < 0 || position > this.length) {
- throw new Error('Position is out of the list');
- }
-
- const node = {
- value: value as any,
- next: undefined as any,
- previous: undefined as any
- };
-
- if (this.length === 0) {
- this.head = node;
- this.tail = node;
- this.current = node;
- } else {
- if (position === 0) {
- // first node
- node.next = this.head;
- this.head.previous = node;
- this.head = node;
- } else if (position === this.length) {
- // last node
- this.tail.next = node;
- node.previous = this.tail;
- this.tail = node;
- } else {
- // node in middle
- const currentPreviousNode = this.getNode(position - 1);
- const currentNextNode = currentPreviousNode.next;
-
- currentPreviousNode.next = node;
- currentNextNode.previous = node;
-
- node.previous = currentPreviousNode;
- node.next = currentNextNode;
- }
-
- }
- this.length++;
- this.createInternalArrayRepresentation();
- }
-
- public remove(position: number = 0): void {
- if (this.length === 0 || position < 0 || position >= this.length) {
- throw new Error('Position is out of the list');
- }
-
- if (position === 0) {
- // first node
- this.head = this.head.next;
-
- if (this.head) {
- // there is no second node
- this.head.previous = undefined;
- } else {
- // there is no second node
- this.tail = undefined;
- }
- } else if (position === this.length - 1) {
- // last node
- this.tail = this.tail.previous;
- this.tail.next = undefined;
- } else {
- // middle node
- const removedNode = this.getNode(position);
- removedNode.next.previous = removedNode.previous;
- removedNode.previous.next = removedNode.next;
- }
-
- this.length--;
- this.createInternalArrayRepresentation();
- }
-
- public set(position: number, value: T): void {
- if (this.length === 0 || position < 0 || position >= this.length) {
- throw new Error('Position is out of the list');
- }
-
- const node = this.getNode(position);
- node.value = value;
- this.createInternalArrayRepresentation();
- }
-
- public toArray(): T[] {
- return this.asArray;
- }
-
- public findAll(fn: any): any[] {
- let current = this.head;
- const result: any[] = [];
- for (let index = 0; index < this.length; index++) {
- if (fn(current.value, index)) {
- result.push({index, value: current.value});
- }
- current = current.next;
- }
- return result;
- }
- // Array methods overriding start
- public push(...args: T[]): number {
- args.forEach((arg: any) => {
- this.add(arg);
- });
- return this.length;
- }
-
- // public pop(): T {
- public pop(): T | any {
- if (this.length === 0) {
- return undefined;
- }
- const last = this.tail;
- this.remove(this.length - 1);
- return last.value;
- }
-
- public unshift(...args: T[]): number {
- args.reverse();
- args.forEach((arg: any) => {
- this.add(arg, 0);
- });
- return this.length;
- }
-
- // public shift(): T {
- public shift(): T | any {
- if (this.length === 0) {
- return undefined;
- }
- const lastItem = this.head.value;
- this.remove();
- return lastItem;
- }
-
- public forEach(fn: any): void {
- let current = this.head;
- for (let index = 0; index < this.length; index++) {
- fn(current.value, index);
- current = current.next;
- }
- }
-
- public indexOf(value: T): number {
- let current = this.head;
- let position = 0;
-
- for (let index = 0; index < this.length; index++) {
- if (current.value === value) {
-
- position = index;
- break;
- }
- current = current.next;
- }
- return position;
- }
-
- public some(fn: any): boolean {
- let current = this.head;
- let result = false;
- while (current && !result) {
- if (fn(current.value)) {
- result = true;
- break;
- }
- current = current.next;
- }
- return result;
- }
-
- public every(fn: any): boolean {
- let current = this.head;
- let result = true;
- while (current && result) {
- if (!fn(current.value)) {
- result = false;
- }
- current = current.next;
- }
- return result;
- }
-
- public toString(): string {
- return '[Linked List]';
- }
-
- // public find(fn: any): T {
- public find(fn: any): T | any {
- let current = this.head;
- // let result: T;
- let result: T | any;
- for (let index = 0; index < this.length; index++) {
- if (fn(current.value, index)) {
- result = current.value;
- break;
- }
- current = current.next;
- }
- return result;
- }
-
- public findIndex(fn: any): number {
- let current = this.head;
- // let result: number;
- let result: number | any;
- for (let index = 0; index < this.length; index++) {
- if (fn(current.value, index)) {
- result = index;
- break;
- }
- current = current.next;
- }
- return result;
- }
-
- // Array methods overriding END
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/ng2-bootstrap-config.ts b/projects/angular-bootstrap-md/src/lib/free/utils/ng2-bootstrap-config.ts
deleted file mode 100755
index 3e6f0432..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/ng2-bootstrap-config.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { window } from './facade/browser';
-
-export function isBs3(): boolean {
- return window.__theme === 'bs4';
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/index.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/index.ts
deleted file mode 100644
index 8b7a4ef0..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { positionElements, Positioning } from './ng-positioning';
-export { PositioningService, PositioningOptions } from './positioning.service';
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/models/index.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/models/index.ts
deleted file mode 100644
index 22c3d864..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/models/index.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-export interface Offsets {
- bottom?: number;
- height: number;
- left?: number;
- right?: number;
- top?: number;
- width: number;
- marginTop?: number;
- marginLeft?: number;
-}
-
-export interface Data {
- options: Options;
- instance: {
- target: HTMLElement;
- host: HTMLElement;
- arrow: any;
- };
- offsets: {
- target: any;
- host: any;
- arrow: any;
- };
- positionFixed: boolean;
- placement: string;
- placementAuto: boolean;
-}
-
-export interface Options {
- placement?: string;
- modifiers: {
- flip?: {
- enabled: boolean;
- };
- preventOverflow?: {
- enabled: boolean;
- };
- };
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/arrow.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/arrow.ts
deleted file mode 100644
index 510fc51b..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/arrow.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import { getClientRect, getOuterSizes, getStyleComputedProperty } from '../utils/index';
-import { Data } from '../models/index';
-
-export function arrow(data: Data) {
- let targetOffsets = data.offsets.target;
- // if arrowElement is a string, suppose it's a CSS selector
- const arrowElement: HTMLElement | null = data.instance.target.querySelector('.arrow');
-
- // if arrowElement is not found, don't run the modifier
- if (!arrowElement) {
- return data;
- }
-
- const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;
-
- const len = isVertical ? 'height' : 'width';
- const sideCapitalized = isVertical ? 'Top' : 'Left';
- const side = sideCapitalized.toLowerCase();
- const altSide = isVertical ? 'left' : 'top';
- const opSide = isVertical ? 'bottom' : 'right';
- const arrowElementSize = getOuterSizes(arrowElement)[len];
-
- // top/left side
- if (data.offsets.host[opSide] - arrowElementSize < (targetOffsets as any)[side]) {
- (targetOffsets as any)[side] -=
- (targetOffsets as any)[side] - (data.offsets.host[opSide] - arrowElementSize);
- }
- // bottom/right side
- if (Number((data as any).offsets.host[side]) + Number(arrowElementSize) > (targetOffsets as any)[opSide]) {
- (targetOffsets as any)[side] +=
- Number((data as any).offsets.host[side]) + Number(arrowElementSize) - Number((targetOffsets as any)[opSide]);
- }
- targetOffsets = getClientRect(targetOffsets);
-
- // compute center of the target
- const center = Number((data as any).offsets.host[side]) + Number(data.offsets.host[len] / 2 - arrowElementSize / 2);
-
- // Compute the sideValue using the updated target offsets
- // take target margin in account because we don't have this info available
- const css = getStyleComputedProperty(data.instance.target);
-
- const targetMarginSide = parseFloat(css[`margin${sideCapitalized}`]);
- const targetBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);
- let sideValue =
- center - (targetOffsets as any)[side] - targetMarginSide - targetBorderSide;
-
- // prevent arrowElement from being placed not contiguously to its target
- sideValue = Math.max(Math.min(targetOffsets[len] - arrowElementSize, sideValue), 0);
-
- data.offsets.arrow = {
- [side]: Math.round(sideValue),
- [altSide]: '' // make sure to unset any eventual altSide value from the DOM node
- };
-
- data.instance.arrow = arrowElement;
-
- return data;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/flip.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/flip.ts
deleted file mode 100644
index b1cda1ff..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/flip.ts
+++ /dev/null
@@ -1,111 +0,0 @@
-import {
- computeAutoPlacement,
- getBoundaries,
- getClientRect,
- getOppositeVariation,
- getTargetOffsets,
- isModifierEnabled
-} from '../utils/index';
-
-import { Data } from '../models/index';
-
-export function flip(data: Data): Data {
- data.offsets.target = getClientRect(data.offsets.target);
-
- if (!isModifierEnabled(data.options, 'flip')) {
-
- data.offsets.target = {
- ...data.offsets.target,
- ...getTargetOffsets(
- data.instance.target,
- data.offsets.host,
- data.placement
- )
- };
-
- return data;
- }
-
- const boundaries = getBoundaries(
- data.instance.target,
- data.instance.host,
- 0, // padding
- 'viewport',
- false // positionFixed
- );
-
- let placement = data.placement.split(' ')[0];
- let variation = data.placement.split(' ')[1] || '';
-
- const offsetsHost = data.offsets.host;
- const target = data.instance.target;
- const host = data.instance.host;
-
- const adaptivePosition = variation
- ? computeAutoPlacement('auto', offsetsHost, target, host, ['top', 'bottom'])
- : computeAutoPlacement('auto', offsetsHost, target, host);
-
- const flipOrder = [placement, adaptivePosition];
-
- /* tslint:disable-next-line: cyclomatic-complexity */
- flipOrder.forEach((step, index) => {
- if (placement !== step || flipOrder.length === index + 1) {
- return data;
- }
-
- placement = data.placement.split(' ')[0];
-
- // using floor because the host offsets may contain decimals we are not going to consider here
- const overlapsRef =
- (placement === 'left' &&
- Math.floor(data.offsets.target.right) > Math.floor(data.offsets.host.left)) ||
- (placement === 'right' &&
- Math.floor(data.offsets.target.left) < Math.floor(data.offsets.host.right)) ||
- (placement === 'top' &&
- Math.floor(data.offsets.target.bottom) > Math.floor(data.offsets.host.top)) ||
- (placement === 'bottom' &&
- Math.floor(data.offsets.target.top) < Math.floor(data.offsets.host.bottom));
-
- const overflowsLeft = Math.floor(data.offsets.target.left) < Math.floor(boundaries.left);
- const overflowsRight = Math.floor(data.offsets.target.right) > Math.floor(boundaries.right);
- const overflowsTop = Math.floor(data.offsets.target.top) < Math.floor(boundaries.top);
- const overflowsBottom = Math.floor(data.offsets.target.bottom) > Math.floor(boundaries.bottom);
-
- const overflowsBoundaries =
- (placement === 'left' && overflowsLeft) ||
- (placement === 'right' && overflowsRight) ||
- (placement === 'top' && overflowsTop) ||
- (placement === 'bottom' && overflowsBottom);
-
- // flip the variation if required
- const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
- const flippedVariation =
- ((isVertical && variation === 'left' && overflowsLeft) ||
- (isVertical && variation === 'right' && overflowsRight) ||
- (!isVertical && variation === 'left' && overflowsTop) ||
- (!isVertical && variation === 'right' && overflowsBottom));
-
- if (overlapsRef || overflowsBoundaries || flippedVariation) {
- if (overlapsRef || overflowsBoundaries) {
- placement = flipOrder[index + 1];
- }
-
- if (flippedVariation) {
- variation = getOppositeVariation(variation);
- }
-
- data.placement = placement + (variation ? ` ${variation}` : '');
-
- data.offsets.target = {
- ...data.offsets.target,
- ...getTargetOffsets(
- data.instance.target,
- data.offsets.host,
- data.placement
- )
- };
- }
- });
-
- return data;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/index.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/index.ts
deleted file mode 100644
index 94492244..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export { arrow } from './arrow';
-export { flip } from './flip';
-export { initData } from './initData';
-export { preventOverflow } from './preventOverflow';
-export { shift } from './shift';
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/initData.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/initData.ts
deleted file mode 100644
index 823e0475..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/initData.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import {
- computeAutoPlacement,
- getReferenceOffsets,
- getTargetOffsets
-} from '../utils/index';
-
-import { Data, Options } from '../models/index';
-
-export function initData(
- targetElement: HTMLElement, hostElement: HTMLElement, position: string, options: Options
-): Data {
-
- const hostElPosition = getReferenceOffsets(targetElement, hostElement);
- const placementAuto = !!position.match(/auto/g);
-
- // support old placements 'auto left|right|top|bottom'
- let placement = !!position.match(/auto\s(left|right|top|bottom)/g)
- ? position.split(' ')[1] || ''
- : position;
-
- const targetOffset = getTargetOffsets(targetElement, hostElPosition, placement);
- placement = computeAutoPlacement(placement, hostElPosition, targetElement, hostElement);
-
- return {
- options,
- instance: {
- target: targetElement,
- host: hostElement,
- arrow: null
- },
- offsets: {
- target: targetOffset,
- host: hostElPosition,
- arrow: null
- },
- positionFixed: false,
- placement,
- placementAuto
- };
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/preventOverflow.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/preventOverflow.ts
deleted file mode 100644
index b061fe4d..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/preventOverflow.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-import { getBoundaries, isModifierEnabled } from '../utils/index';
-import { Data } from '../models/index';
-
-export function preventOverflow(data: Data) {
-
- if (!isModifierEnabled(data.options, 'preventOverflow')) {
- return data;
- }
-
- // NOTE: DOM access here
- // resets the targetOffsets's position so that the document size can be calculated excluding
- // the size of the targetOffsets element itself
- const transformProp = 'transform';
- const targetStyles = data.instance.target.style; // assignment to help minification
- const { top, left, [transformProp]: transform } = targetStyles;
- targetStyles.top = '';
- targetStyles.left = '';
- targetStyles[transformProp] = '';
-
- const boundaries = getBoundaries(
- data.instance.target,
- data.instance.host,
- 0, // padding
- 'scrollParent',
- false // positionFixed
- );
-
- // NOTE: DOM access here
- // restores the original style properties after the offsets have been computed
- targetStyles.top = top;
- targetStyles.left = left;
- targetStyles[transformProp] = transform;
-
- const order = ['left', 'right', 'top', 'bottom'];
-
- const check = {
- primary(placement: string) {
- let value = (data as any).offsets.target[placement];
- if (
- (data as any).offsets.target[placement] < boundaries[placement] &&
- !false // options.escapeWithReference
- ) {
- value = Math.max((data as any).offsets.target[placement], boundaries[placement]);
- }
-
- return { [placement]: value };
- },
- secondary(placement: string) {
- const mainSide = placement === 'right' ? 'left' : 'top';
- let value = data.offsets.target[mainSide];
- if (
- (data as any).offsets.target[placement] > boundaries[placement] &&
- !false // escapeWithReference
- ) {
- value = Math.min(
- data.offsets.target[mainSide],
- boundaries[placement] -
- (placement === 'right' ? data.offsets.target.width : data.offsets.target.height)
- );
- }
-
- return { [mainSide]: value };
- }
- };
-
- let side: string;
-
- order.forEach(placement => {
- side = ['left', 'top']
- .indexOf(placement) !== -1
- ? 'primary'
- : 'secondary';
-
- data.offsets.target = { ...data.offsets.target, ...(check as any)[side](placement) };
-
- });
-
- return data;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/shift.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/shift.ts
deleted file mode 100644
index ed040ac7..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/modifiers/shift.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { Data } from '../models/index';
-
-export function shift(data: Data): Data {
- const placement = data.placement;
- const basePlacement = placement.split(' ')[0];
- const shiftvariation = placement.split(' ')[1];
-
- if (shiftvariation) {
- const { host, target } = data.offsets;
- const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;
- const side = isVertical ? 'left' : 'top';
- const measurement = isVertical ? 'width' : 'height';
-
- const shiftOffsets = {
- left: { [side]: host[side] },
- right: {
- [side]: host[side] + host[measurement] - host[measurement]
- }
- };
-
- data.offsets.target = { ...target, ...(shiftOffsets as any)[shiftvariation] };
- }
-
- return data;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/ng-positioning.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/ng-positioning.ts
deleted file mode 100644
index b1fb5106..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/ng-positioning.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * @copyright Valor Software
- * @copyright Federico Zivolo and contributors
- */
-import { Renderer2 } from '@angular/core';
-
-import { getReferenceOffsets, setAllStyles } from './utils/index';
-
-import { arrow, flip, preventOverflow, shift, initData } from './modifiers/index';
-import { Data, Offsets, Options } from './models/index';
-
-
-export class Positioning {
- position(hostElement: HTMLElement, targetElement: HTMLElement): Offsets {
- return this.offset(hostElement, targetElement);
- }
-
- offset(hostElement: HTMLElement, targetElement: HTMLElement): Offsets {
- return getReferenceOffsets(targetElement, hostElement);
- }
-
- positionElements(
- hostElement: HTMLElement,
- targetElement: HTMLElement,
- position: string,
- _appendToBody?: boolean,
- options?: any
- ): Data {
- const chainOfModifiers = [flip, shift, preventOverflow, arrow];
-
- return chainOfModifiers.reduce(
- (modifiedData, modifier) => modifier(modifiedData),
- initData(targetElement, hostElement, position, options)
- );
- }
-}
-
-const positionService = new Positioning();
-
-export function positionElements(
- hostElement: HTMLElement,
- targetElement: HTMLElement,
- placement: string,
- appendToBody?: boolean,
- options?: Options,
- renderer?: Renderer2
-): void {
-
- const data = positionService.positionElements(
- hostElement,
- targetElement,
- placement,
- appendToBody,
- options
- );
-
- setAllStyles(data, renderer);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/positioning.service.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/positioning.service.ts
deleted file mode 100644
index 2cd1fef0..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/positioning.service.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-import {
- Injectable,
- ElementRef,
- RendererFactory2,
- Inject,
- PLATFORM_ID,
- NgZone,
-} from '@angular/core';
-import { isPlatformBrowser } from '@angular/common';
-
-import { positionElements } from './ng-positioning';
-
-import { fromEvent, merge, of, animationFrameScheduler, Subject } from 'rxjs';
-import { Options } from './models/index';
-
-export interface PositioningOptions {
- /** The DOM element, ElementRef, or a selector string of an element which will be moved */
- element?: any;
-
- /** The DOM element, ElementRef, or a selector string of an element which the element will be attached to */
- target?: any;
-
- /**
- * A string of the form 'vert-attachment horiz-attachment' or 'placement'
- * - placement can be "top", "bottom", "left", "right"
- * not yet supported:
- * - vert-attachment can be any of 'top', 'middle', 'bottom'
- * - horiz-attachment can be any of 'left', 'center', 'right'
- */
- attachment?: any;
-
- /** A string similar to `attachment`. The one difference is that, if it's not provided,
- * `targetAttachment` will assume the mirror image of `attachment`.
- */
- targetAttachment?: string;
-
- /** A string of the form 'vert-offset horiz-offset'
- * - vert-offset and horiz-offset can be of the form "20px" or "55%"
- */
- offset?: string;
-
- /** A string similar to `offset`, but referring to the offset of the target */
- targetOffset?: string;
-
- /** If true component will be attached to body */
- appendToBody?: boolean;
-}
-
-@Injectable()
-export class PositioningService {
- options: Options;
- private update$$ = new Subject();
- private positionElements = new Map();
-
- constructor(
- rendererFactory: RendererFactory2,
- @Inject(PLATFORM_ID) platformId: number,
- private _ngZone: NgZone
- ) {
- if (isPlatformBrowser(platformId)) {
- this._ngZone.runOutsideAngular(() => {
- merge(
- fromEvent(window, 'scroll'),
- fromEvent(window, 'resize'),
- // tslint:disable-next-line: deprecation
- of(0, animationFrameScheduler),
- this.update$$
- ).subscribe(() => {
- this.positionElements.forEach((positionElement: PositioningOptions) => {
- positionElements(
- _getHtmlElement(positionElement.target),
- _getHtmlElement(positionElement.element),
- positionElement.attachment,
- positionElement.appendToBody,
- this.options,
- rendererFactory.createRenderer(null, null)
- );
- });
- });
- });
- }
- }
-
- position(options: PositioningOptions): void {
- this.addPositionElement(options);
- }
-
- addPositionElement(options: PositioningOptions): void {
- this.positionElements.set(_getHtmlElement(options.element), options);
- }
-
- calcPosition(): void {
- this.update$$.next();
- }
-
- deletePositionElement(elRef: ElementRef): void {
- this.positionElements.delete(_getHtmlElement(elRef));
- }
-
- setOptions(options: Options) {
- this.options = options;
- }
-}
-
-function _getHtmlElement(element: HTMLElement | ElementRef | string): any {
- // it means that we got a selector
- if (element && typeof element === 'string') {
- return document.querySelector(element);
- }
-
- if (element instanceof ElementRef) {
- return element.nativeElement;
- }
-
- return element;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/computeAutoPlacement.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/computeAutoPlacement.ts
deleted file mode 100644
index ea303110..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/computeAutoPlacement.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Utility used to transform the `auto` placement to the placement with more
- * available space.
- */
-import { getBoundaries } from './getBoundaries';
-
-function getArea({ width, height }: { [key: string]: number }) {
- return width * height;
-}
-
-export function computeAutoPlacement(
- placement: string,
- refRect: any,
- target: HTMLElement,
- host: HTMLElement,
- allowedPositions: any[] = ['top', 'left', 'bottom', 'right'],
- boundariesElement = 'viewport',
- padding = 0
-) {
- if (placement.indexOf('auto') === -1) {
- return placement;
- }
-
- const boundaries = getBoundaries(target, host, padding, boundariesElement);
-
- const rects: any = {
- top: {
- width: boundaries.width,
- height: refRect.top - boundaries.top
- },
- right: {
- width: boundaries.right - refRect.right,
- height: boundaries.height
- },
- bottom: {
- width: boundaries.width,
- height: boundaries.bottom - refRect.bottom
- },
- left: {
- width: refRect.left - boundaries.left,
- height: boundaries.height
- }
- };
-
- const sortedAreas = Object.keys(rects)
- .map(key => ({
- key,
- ...rects[key],
- area: getArea(rects[key])
- }))
- .sort((a, b) => b.area - a.area);
-
- let filteredAreas: any[] = sortedAreas.filter(
- ({ width, height }) =>
- width >= target.clientWidth && height >= target.clientHeight
- );
-
- filteredAreas = allowedPositions
- .reduce((obj, key) => {
- return { ...obj, [key]: filteredAreas[key] };
- }, {});
-
- const computedPlacement: string = filteredAreas.length > 0
- ? filteredAreas[0].key
- : sortedAreas[0].key;
-
- const variation = placement.split(' ')[1];
-
- target.className = target.className.replace(/auto/g, computedPlacement);
-
- return computedPlacement + (variation ? `-${variation}` : '');
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/findCommonOffsetParent.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/findCommonOffsetParent.ts
deleted file mode 100644
index 278ed8de..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/findCommonOffsetParent.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Finds the offset parent common to the two provided nodes
- */
-import { isOffsetContainer } from './isOffsetContainer';
-import { getRoot } from './getRoot';
-import { getOffsetParent } from './getOffsetParent';
-
-export function findCommonOffsetParent(element1: HTMLElement, element2: HTMLElement): any {
- // This check is needed to avoid errors in case one of the elements isn't defined for any reason
- if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
- return document.documentElement;
- }
-
- // Here we make sure to give as "start" the element that comes first in the DOM
- /* tslint:disable-next-line: no-bitwise */
- const order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;
-
- const start = order ? element1 : element2;
- const end = order ? element2 : element1;
-
- // Get common ancestor container
- const range = document.createRange();
- range.setStart(start, 0);
- range.setEnd(end, 0);
- const { commonAncestorContainer } = range;
-
- // Both nodes are inside #document
- if (
- (element1 !== commonAncestorContainer &&
- element2 !== commonAncestorContainer) ||
- start.contains(end)
- ) {
- if (isOffsetContainer(commonAncestorContainer)) {
- return commonAncestorContainer;
- }
-
- return getOffsetParent(commonAncestorContainer);
- }
-
- // one of the nodes is inside shadowDOM, find which one
- const element1root = getRoot(element1);
- if (element1root.host) {
- return findCommonOffsetParent(element1root.host, element2);
- } else {
- return findCommonOffsetParent(element1, getRoot(element2).host);
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getBordersSize.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getBordersSize.ts
deleted file mode 100644
index 52da2c5a..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getBordersSize.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Helper to detect borders of a given element
- */
-
-export function getBordersSize(styles: CSSStyleDeclaration, axis: string) {
- const sideA = axis === 'x' ? 'Left' : 'Top';
- const sideB = sideA === 'Left' ? 'Right' : 'Bottom';
-
- return (
- parseFloat(styles[`border${sideA}Width` as any]) +
- parseFloat(styles[`border${sideB}Width` as any])
- );
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getBoundaries.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getBoundaries.ts
deleted file mode 100644
index 897acd8d..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getBoundaries.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Computed the boundaries limits and return them
- */
-import { getScrollParent } from './getScrollParent';
-import { getParentNode } from './getParentNode';
-import { findCommonOffsetParent } from './findCommonOffsetParent';
-import { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';
-import { getViewportOffsetRectRelativeToArtbitraryNode } from './getViewportOffsetRectRelativeToArtbitraryNode';
-import { getWindowSizes } from './getWindowSizes';
-import { isFixed } from './isFixed';
-import { getFixedPositionOffsetParent } from './getFixedPositionOffsetParent';
-
-export function getBoundaries(
- target: any,
- host: HTMLElement,
- padding = 0,
- boundariesElement: string,
- fixedPosition = false
-) {
- // NOTE: 1 DOM access here
-
- let boundaries: any = { top: 0, left: 0 };
- const offsetParent = fixedPosition ? getFixedPositionOffsetParent(target) : findCommonOffsetParent(target, host);
-
- // Handle viewport case
- if (boundariesElement === 'viewport') {
- boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);
- } else {
- // Handle other cases based on DOM element used as boundaries
- let boundariesNode;
- if (boundariesElement === 'scrollParent') {
- boundariesNode = getScrollParent(getParentNode(host));
- if (boundariesNode.nodeName === 'BODY') {
- boundariesNode = target.ownerDocument.documentElement;
- }
- } else if (boundariesElement === 'window') {
- boundariesNode = target.ownerDocument.documentElement;
- } else {
- boundariesNode = boundariesElement;
- }
-
- const offsets = getOffsetRectRelativeToArbitraryNode(
- boundariesNode,
- offsetParent,
- fixedPosition
- );
-
- // In case of HTML, we need a different computation
- if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {
- const { height, width } = getWindowSizes(target.ownerDocument);
- boundaries.top += offsets.top - offsets.marginTop;
- boundaries.bottom = Number(height) + Number(offsets.top);
- boundaries.left += offsets.left - offsets.marginLeft;
- boundaries.right = Number(width) + Number(offsets.left);
- } else {
- // for all the other DOM elements, this one is good
- boundaries = offsets;
- }
- }
-
- // Add paddings
- boundaries.left += padding;
- boundaries.top += padding;
- boundaries.right -= padding;
- boundaries.bottom -= padding;
-
- return boundaries;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getBoundingClientRect.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getBoundingClientRect.ts
deleted file mode 100644
index 057d696c..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getBoundingClientRect.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Get bounding client rect of given element
- */
-import { getStyleComputedProperty } from './getStyleComputedProperty';
-import { getBordersSize } from './getBordersSize';
-import { getWindowSizes } from './getWindowSizes';
-import { getScroll } from './getScroll';
-import { getClientRect } from './getClientRect';
-import { isIE } from './isIE';
-
-export function getBoundingClientRect(element: HTMLElement): any {
- let rect: any = {};
-
- // IE10 10 FIX: Please, don't ask, the element isn't
- // considered in DOM in some circumstances...
- // This isn't reproducible in IE10 compatibility mode of IE11
- try {
- if (isIE(10)) {
- rect = element.getBoundingClientRect();
- const scrollTop = getScroll(element, 'top');
- const scrollLeft = getScroll(element, 'left');
- rect.top += scrollTop;
- rect.left += scrollLeft;
- rect.bottom += scrollTop;
- rect.right += scrollLeft;
- } else {
- rect = element.getBoundingClientRect();
- }
- } catch (e) {
- return undefined;
- }
-
- const result: any = {
- left: rect.left,
- top: rect.top,
- width: rect.right - rect.left,
- height: rect.bottom - rect.top
- };
-
- // subtract scrollbar size from sizes
- const sizes: any = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};
- const width =
- sizes.width || element.clientWidth || result.right - result.left;
- const height =
- sizes.height || element.clientHeight || result.bottom - result.top;
-
- let horizScrollbar = element.offsetWidth - width;
- let vertScrollbar = element.offsetHeight - height;
-
- // if an hypothetical scrollbar is detected, we must be sure it's not a `border`
- // we make this check conditional for performance reasons
- if (horizScrollbar || vertScrollbar) {
- const styles = getStyleComputedProperty(element);
- horizScrollbar -= getBordersSize(styles, 'x');
- vertScrollbar -= getBordersSize(styles, 'y');
-
- result.width -= horizScrollbar;
- result.height -= vertScrollbar;
- }
-
- return getClientRect(result);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getClientRect.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getClientRect.ts
deleted file mode 100644
index c86a4510..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getClientRect.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * Given element offsets, generate an output similar to getBoundingClientRect
- */
-import { Offsets } from '../models/index';
-
-export function getClientRect(offsets: any): Offsets {
- return {
- ...offsets,
- right: offsets.left + offsets.width,
- bottom: offsets.top + offsets.height
- };
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getFixedPositionOffsetParent.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getFixedPositionOffsetParent.ts
deleted file mode 100644
index ca1f2336..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getFixedPositionOffsetParent.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Finds the first parent of an element that has a transformed property defined
- */
-
-import { getStyleComputedProperty } from './getStyleComputedProperty';
-import { isIE } from './isIE';
-
-export function getFixedPositionOffsetParent(element: any): any {
- // This check is needed to avoid errors in case one of the elements isn't defined for any reason
- if (!element || !element.parentElement || isIE()) {
- return document.documentElement;
- }
-
- let el: any = element.parentElement;
-
- while (el && getStyleComputedProperty(el, 'transform') === 'none') {
- el = el.parentElement;
- }
-
- return el || document.documentElement;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOffsetParent.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOffsetParent.ts
deleted file mode 100644
index 01eaf3dc..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOffsetParent.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Returns the offset parent of the given element
- */
-import { getStyleComputedProperty } from './getStyleComputedProperty';
-import { isIE } from './isIE';
-
-export function getOffsetParent(element: any): any {
- if (!element) {
- return document.documentElement;
- }
-
- const noOffsetParent = isIE(10) ? document.body : null;
-
- // NOTE: 1 DOM access here
- let offsetParent = element.offsetParent || null;
- // Skip hidden elements which don't have an offsetParent
-
- let sibling: any;
-
- while (offsetParent === noOffsetParent && element.nextElementSibling && element.nodeName !== 'BODY') {
- sibling = element.nextElementSibling;
- offsetParent = sibling.offsetParent;
- }
-
- const nodeName = offsetParent && offsetParent.nodeName;
-
- if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {
- return sibling ? sibling.ownerDocument.documentElement : document.documentElement;
- }
-
- // .offsetParent will return the closest TH, TD or TABLE in case
- // no offsetParent is present, I hate this job...
- if (
- ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&
- getStyleComputedProperty(offsetParent, 'position') === 'static'
- ) {
- return getOffsetParent(offsetParent);
- }
-
- return offsetParent;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOffsetRectRelativeToArbitraryNode.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOffsetRectRelativeToArbitraryNode.ts
deleted file mode 100644
index 5e8b5a36..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOffsetRectRelativeToArbitraryNode.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import { getBoundingClientRect } from './getBoundingClientRect';
-import { getClientRect } from './getClientRect';
-import { getScrollParent } from './getScrollParent';
-import { getStyleComputedProperty } from './getStyleComputedProperty';
-import { includeScroll } from './includeScroll';
-import { isIE as runIsIE } from './isIE';
-
-export function getOffsetRectRelativeToArbitraryNode(
- children: HTMLElement,
- parent: HTMLElement,
- fixedPosition = false
-): any {
- const isIE10 = runIsIE(10);
- const isHTML = parent.nodeName === 'HTML';
- const childrenRect: any = getBoundingClientRect(children);
- const parentRect: any = getBoundingClientRect(parent);
- const scrollParent = getScrollParent(children);
-
- const styles = getStyleComputedProperty(parent);
- const borderTopWidth = parseFloat(styles.borderTopWidth);
- const borderLeftWidth = parseFloat(styles.borderLeftWidth);
-
- // In cases where the parent is fixed, we must ignore negative scroll in offset calc
- if (fixedPosition && isHTML) {
- parentRect.top = Math.max(parentRect.top, 0);
- parentRect.left = Math.max(parentRect.left, 0);
- }
-
- let offsets: any = getClientRect({
- top: childrenRect.top - parentRect.top - borderTopWidth,
- left: childrenRect.left - parentRect.left - borderLeftWidth,
- width: childrenRect.width,
- height: childrenRect.height
- });
-
- offsets.marginTop = 0;
- offsets.marginLeft = 0;
-
- // Subtract margins of documentElement in case it's being used as parent
- // we do this only on HTML because it's the only element that behaves
- // differently when margins are applied to it. The margins are included in
- // the box of the documentElement, in the other cases not.
- if (!isIE10 && isHTML) {
- const marginTop = parseFloat(styles.marginTop);
- const marginLeft = parseFloat(styles.marginLeft);
-
- offsets.top -= borderTopWidth - marginTop;
- offsets.bottom -= borderTopWidth - marginTop;
- offsets.left -= borderLeftWidth - marginLeft;
- offsets.right -= borderLeftWidth - marginLeft;
-
- // Attach marginTop and marginLeft because in some circumstances we may need them
- offsets.marginTop = marginTop;
- offsets.marginLeft = marginLeft;
- }
-
- if (
- isIE10 && !fixedPosition
- ? parent.contains(scrollParent)
- : parent === scrollParent && scrollParent.nodeName !== 'BODY'
- ) {
- offsets = includeScroll(offsets, parent);
- }
-
- return offsets;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOffsets.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOffsets.ts
deleted file mode 100644
index cc14e088..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOffsets.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Data, Offsets } from '../models/index';
-
-export function getOffsets(data: Data): Offsets {
- return {
- width: data.offsets.target.width,
- height: data.offsets.target.height,
- left: Math.floor(data.offsets.target.left),
- top: Math.round(data.offsets.target.top),
- bottom: Math.round(data.offsets.target.bottom),
- right: Math.floor(data.offsets.target.right)
- };
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOppositePlacement.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOppositePlacement.ts
deleted file mode 100644
index d34fe453..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOppositePlacement.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Get the opposite placement of the given one
- */
-export function getOppositePlacement(placement: string) {
- const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
-
- return placement.replace(/left|right|bottom|top/g, matched => (hash as any)[matched]);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOppositeVariation.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOppositeVariation.ts
deleted file mode 100644
index ea32bcb6..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOppositeVariation.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * Get the opposite placement variation of the given one
- */
-export function getOppositeVariation(variation: string) {
- if (variation === 'right') {
- return 'left';
- } else if (variation === 'left') {
- return 'right';
- }
-
- return variation;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOuterSizes.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOuterSizes.ts
deleted file mode 100644
index 5f475a03..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getOuterSizes.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Get the outer sizes of the given element (offset size + margins)
- */
-export function getOuterSizes(element: any) {
- const window = element.ownerDocument.defaultView;
- const styles = window.getComputedStyle(element);
- const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);
- const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);
-
- return {
- width: Number(element.offsetWidth) + y,
- height: Number(element.offsetHeight) + x
- };
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getParentNode.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getParentNode.ts
deleted file mode 100644
index b0ef5780..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getParentNode.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Returns the parentNode or the host of the element
- */
-export function getParentNode(element: any): any {
- if (element.nodeName === 'HTML') {
- return element;
- }
-
- return element.parentNode || element.host;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getReferenceOffsets.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getReferenceOffsets.ts
deleted file mode 100644
index 983a9978..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getReferenceOffsets.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * Get offsets to the reference element
- */
-import { findCommonOffsetParent } from './findCommonOffsetParent';
-import { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';
-import { getFixedPositionOffsetParent } from './getFixedPositionOffsetParent';
-import { Offsets } from '../models/index';
-
-export function getReferenceOffsets(
- target: HTMLElement,
- host: HTMLElement,
- fixedPosition: any = null
-): Offsets {
- const commonOffsetParent = fixedPosition
- ? getFixedPositionOffsetParent(target)
- : findCommonOffsetParent(target, host);
-
- return getOffsetRectRelativeToArbitraryNode(host, commonOffsetParent, fixedPosition);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getRoot.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getRoot.ts
deleted file mode 100644
index dda10ed1..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getRoot.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Finds the root node (document, shadowDOM root) of the given element
- */
-export function getRoot(node: Node): any {
- if (node.parentNode !== null) {
- return getRoot(node.parentNode);
- }
-
- return node;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getScroll.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getScroll.ts
deleted file mode 100644
index f7f751e6..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getScroll.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Gets the scroll value of the given element in the given side (top and left)
- */
-export function getScroll(element: any, side = 'top') {
- const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';
- const nodeName = element.nodeName;
-
- if (nodeName === 'BODY' || nodeName === 'HTML') {
- const html = element.ownerDocument.documentElement;
- const scrollingElement = element.ownerDocument.scrollingElement || html;
-
- return scrollingElement[upperSide];
- }
-
- return element[upperSide];
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getScrollParent.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getScrollParent.ts
deleted file mode 100644
index 59ede938..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getScrollParent.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Returns the scrolling parent of the given element
- */
-import { getStyleComputedProperty } from './getStyleComputedProperty';
-import { getParentNode } from './getParentNode';
-
-export function getScrollParent(element: any): any {
- // Return body, `getScroll` will take care to get the correct `scrollTop` from it
- if (!element) {
- return document.body;
- }
-
- switch (element.nodeName) {
- case 'HTML':
- case 'BODY':
- return element.ownerDocument.body;
- case '#document':
- return element.body;
- default:
- }
-
- // Firefox want us to check `-x` and `-y` variations as well
- const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);
- if (/(auto|scroll|overlay)/.test(String(overflow) + String(overflowY) + String(overflowX))) {
- return element;
- }
-
- return getScrollParent(getParentNode(element));
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getStyleComputedProperty.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getStyleComputedProperty.ts
deleted file mode 100644
index 280f039b..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getStyleComputedProperty.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Get CSS computed property of the given element
- */
-export function getStyleComputedProperty(element: any, property?: string): any {
- if (element.nodeType !== 1) {
- return [];
- }
- // NOTE: 1 DOM access here
- const window = element.ownerDocument.defaultView;
- const css = window.getComputedStyle(element, null);
-
- return property ? css[property as any] : css;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getTargetOffsets.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getTargetOffsets.ts
deleted file mode 100644
index 5400cc51..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getTargetOffsets.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Get offsets to the target
- */
-import { getOppositePlacement } from './getOppositePlacement';
-import { getOuterSizes } from './getOuterSizes';
-import { Offsets } from '../models/index';
-
-export function getTargetOffsets(
- target: HTMLElement,
- hostOffsets: any,
- position: string
-): Offsets {
- const placement = position.split(' ')[0];
-
- // Get target node sizes
- const targetRect = getOuterSizes(target);
-
- // Add position, width and height to our offsets object
- const targetOffsets = {
- width: targetRect.width,
- height: targetRect.height
- };
-
- // depending by the target placement we have to compute its offsets slightly differently
- const isHoriz = ['right', 'left'].indexOf(placement) !== -1;
- const mainSide = isHoriz ? 'top' : 'left';
- const secondarySide = isHoriz ? 'left' : 'top';
- const measurement = isHoriz ? 'height' : 'width';
- const secondaryMeasurement = !isHoriz ? 'height' : 'width';
-
- (targetOffsets as any)[mainSide] =
- hostOffsets[mainSide] +
- hostOffsets[measurement] / 2 -
- targetRect[measurement] / 2;
-
- (targetOffsets as any)[secondarySide] = placement === secondarySide
- ? hostOffsets[secondarySide] - targetRect[secondaryMeasurement]
- : (hostOffsets as any)[getOppositePlacement(secondarySide)];
-
- return targetOffsets;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.ts
deleted file mode 100644
index d59764d7..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { getClientRect } from './getClientRect';
-import { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';
-import { getScroll } from './getScroll';
-import { Offsets } from '../models/index';
-
-export function getViewportOffsetRectRelativeToArtbitraryNode(element: any, excludeScroll = false): Offsets {
- const html = element.ownerDocument.documentElement;
- const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);
- const width = Math.max(html.clientWidth, window.innerWidth || 0);
- const height = Math.max(html.clientHeight, window.innerHeight || 0);
-
- const scrollTop = !excludeScroll ? getScroll(html) : 0;
- const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;
-
- const offset = {
- top: scrollTop - Number(relativeOffset.top) + Number(relativeOffset.marginTop),
- left: scrollLeft - Number(relativeOffset.left) + Number(relativeOffset.marginLeft),
- width,
- height
- };
-
- return getClientRect(offset);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getWindowSizes.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getWindowSizes.ts
deleted file mode 100644
index 1e555525..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/getWindowSizes.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { isIE } from './isIE';
-
-function getSize(axis: string, body: HTMLElement, html: HTMLElement, computedStyle: CSSStyleDeclaration) {
- return Math.max(
- (body as any)[`offset${axis}`],
- (body as any)[`scroll${axis}`],
- (html as any)[`client${axis}`],
- (html as any)[`offset${axis}`],
- (html as any)[`scroll${axis}`],
- isIE(10)
- ? (parseInt((html as any)[`offset${axis}`], 10) +
- parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}` as any], 10) +
- parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}` as any], 10))
- : 0
- );
-}
-
-export function getWindowSizes(document: any) {
- const body = document.body;
- const html = document.documentElement;
- const computedStyle: any = isIE(10) && getComputedStyle(html);
-
- return {
- height: getSize('Height', body, html, computedStyle),
- width: getSize('Width', body, html, computedStyle)
- };
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/includeScroll.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/includeScroll.ts
deleted file mode 100644
index 9e98bad5..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/includeScroll.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Sum or subtract the element scroll values (left and top) from a given rect object
- */
-import { getScroll } from './getScroll';
-
-export function includeScroll(rect: any, element: HTMLElement, subtract = false) {
- const scrollTop = getScroll(element, 'top');
- const scrollLeft = getScroll(element, 'left');
- const modifier = subtract ? -1 : 1;
- rect.top += scrollTop * modifier;
- rect.bottom += scrollTop * modifier;
- rect.left += scrollLeft * modifier;
- rect.right += scrollLeft * modifier;
-
- return rect;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/index.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/index.ts
deleted file mode 100644
index d2071654..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/index.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-export { computeAutoPlacement } from './computeAutoPlacement';
-export { getBordersSize } from './getBordersSize';
-export { getBoundaries } from './getBoundaries';
-export { getBoundingClientRect } from './getBoundingClientRect';
-export { getClientRect } from './getClientRect';
-export { getOffsetParent } from './getOffsetParent';
-export { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';
-export { getOffsets } from './getOffsets';
-export { getOppositePlacement } from './getOppositePlacement';
-export { getOppositeVariation } from './getOppositeVariation';
-export { getOuterSizes } from './getOuterSizes';
-export { getParentNode } from './getParentNode';
-export { getReferenceOffsets } from './getReferenceOffsets';
-export { getScroll } from './getScroll';
-export { getScrollParent } from './getScrollParent';
-export { getStyleComputedProperty } from './getStyleComputedProperty';
-export { getTargetOffsets } from './getTargetOffsets';
-export { getWindowSizes } from './getWindowSizes';
-export { isFixed } from './isFixed';
-export { isModifierEnabled } from './isModifierEnabled';
-export { isNumeric } from './isNumeric';
-export { setAllStyles } from './setAllStyles';
-export { setStyles } from './setStyles';
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isBrowser.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isBrowser.ts
deleted file mode 100644
index bb2cd0b7..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isBrowser.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isFixed.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isFixed.ts
deleted file mode 100644
index c3be266e..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isFixed.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Check if the given element is fixed or is inside a fixed parent
- */
-import { getStyleComputedProperty } from './getStyleComputedProperty';
-import { getParentNode } from './getParentNode';
-
-export function isFixed(element: HTMLElement): boolean {
- const nodeName = element.nodeName;
- if (nodeName === 'BODY' || nodeName === 'HTML') {
- return false;
- }
- if (getStyleComputedProperty(element, 'position') === 'fixed') {
- return true;
- }
-
- return isFixed(getParentNode(element));
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isIE.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isIE.ts
deleted file mode 100644
index fc624605..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isIE.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Determines if the browser is Internet Explorer
- */
-import { isBrowser } from './isBrowser';
-
-const isIE11 = isBrowser && !!((window as any).MSInputMethodContext && (document as any).documentMode);
-const isIE10 = isBrowser && !!((window as any).MSInputMethodContext && /MSIE 10/.test((navigator as any).userAgent));
-
-export function isIE(version?: number) {
- if (version === 11) {
- return isIE11;
- }
- if (version === 10) {
- return isIE10;
- }
-
- return isIE11 || isIE10;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isModifierEnabled.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isModifierEnabled.ts
deleted file mode 100644
index 1f203aec..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isModifierEnabled.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Helper used to know if the given modifier is enabled.
- */
-export function isModifierEnabled(options: any, modifierName: string) {
- return options
- && options.modifiers
- && options.modifiers[modifierName]
- && options.modifiers[modifierName].enabled;
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isNumeric.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isNumeric.ts
deleted file mode 100644
index 5a237c85..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isNumeric.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Tells if a given input is a number
- */
-export function isNumeric(n: any) {
- return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isOffsetContainer.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isOffsetContainer.ts
deleted file mode 100644
index 1e847bf5..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/isOffsetContainer.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { getOffsetParent } from './getOffsetParent';
-
-export function isOffsetContainer(element: any) {
- const { nodeName } = element;
- if (nodeName === 'BODY') {
- return false;
- }
-
- return (
- nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element
- );
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/setAllStyles.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/setAllStyles.ts
deleted file mode 100644
index 6f588594..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/setAllStyles.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Set the style to the given popper
- */
-import { Renderer2 } from '@angular/core';
-
-import { Data } from '../models/index';
-import { setStyles } from './setStyles';
-import { getOffsets } from './getOffsets';
-
-export function setAllStyles(data: Data, renderer?: Renderer2): void {
- const target = data.instance.target;
-
- const offsets = getOffsets(data);
-
- setStyles(target, {
- 'will-change': 'transform',
- top: '0px',
- left: '0px',
- transform: `translate3d(${offsets.left}px, ${offsets.top}px, 0px)`
- }, renderer);
-
- if (data.instance.arrow) {
- setStyles(data.instance.arrow, data.offsets.arrow, renderer);
- }
-
- if (data.placementAuto) {
- if (renderer) {
- renderer.setAttribute(target, 'class',
- target.className.replace(/bs-popover-auto/g, `bs-popover-${data.placement}`)
- );
- renderer.setAttribute(target, 'class',
- target.className.replace(/bs-tooltip-auto/g, `bs-tooltip-${data.placement}`)
- );
-
- renderer.setAttribute(target, 'class',
- target.className.replace(/\sauto/g, `\s${data.placement}`)
- );
-
- if (target.className.match(/popover/g)) {
- renderer.addClass(target, 'popover-auto');
- }
-
- if (target.className.match(/tooltip/g)) {
- renderer.addClass(target, 'tooltip-auto');
- }
-
-
- } else {
- target.className = target.className.replace(/bs-popover-auto/g, `bs-popover-${data.placement}`);
- target.className = target.className.replace(/bs-tooltip-auto/g, `bs-tooltip-${data.placement}`);
- target.className = target.className.replace(/\sauto/g, `\s${data.placement}`);
-
- if (target.className.match(/popover/g)) {
- target.classList.add('popover-auto');
- }
-
- if (target.className.match(/tooltip/g)) {
- target.classList.add('tooltip-auto');
- }
- }
- }
-
- if (renderer) {
- renderer.setAttribute(
- target,
- 'class',
- target.className.replace(/left|right|top|bottom/g, `${data.placement.split(' ')[0]}`)
- );
- } else {
- target.className = target.className.replace(/left|right|top|bottom/g, `${data.placement.split(' ')[0]}`);
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/setStyles.ts b/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/setStyles.ts
deleted file mode 100644
index e73c69f0..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/positioning/utils/setStyles.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Set the style to the given popper
- */
-import { Renderer2 } from '@angular/core';
-
-import { isNumeric } from './isNumeric';
-
-export function setStyles(element: HTMLElement, styles: any, renderer?: Renderer2) {
- Object.keys(styles).forEach((prop: any) => {
- let unit = '';
- // add unit if the value is numeric and is one of the following
- if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 &&
- isNumeric(styles[prop])) {
- unit = 'px';
- }
-
- if (renderer) {
- renderer.setStyle(element, prop, `${String(styles[prop])}${unit}`);
-
- return;
- }
-
- element.style[prop] = String(styles[prop]) + unit;
- });
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/trigger.class.ts b/projects/angular-bootstrap-md/src/lib/free/utils/trigger.class.ts
deleted file mode 100755
index 12df1274..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/trigger.class.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * @copyright Valor Software
- * @copyright Angular ng-bootstrap team
- */
-
- export class Trigger {
- public open: string;
- public close?: string;
-
- public constructor(open: string, close?: string) {
- this.open = open;
- this.close = close || open;
- }
-
- public isManual(): boolean { return this.open === 'manual' || this.close === 'manual'; }
- }
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/triggers.ts b/projects/angular-bootstrap-md/src/lib/free/utils/triggers.ts
deleted file mode 100755
index 2fd43509..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/triggers.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * @copyright Valor Software
- * @copyright Angular ng-bootstrap team
- */
-import { Renderer2 } from '@angular/core';
-import { Trigger } from './trigger.class';
-
-const DEFAULT_ALIASES = {
- hover: ['mouseover', 'mouseout'],
- focus: ['focusin', 'focusout']
-};
-
-export function parseTriggers(triggers: string, aliases: any = DEFAULT_ALIASES): Trigger[] {
- const trimmedTriggers = (triggers || '').trim();
-
- if (trimmedTriggers.length === 0) {
- return [];
- }
-
- const parsedTriggers = trimmedTriggers.split(/\s+/)
- .map((trigger: string) => trigger.split(':'))
- .map((triggerPair: string[]) => {
- const alias = aliases[triggerPair[0]] || triggerPair;
- return new Trigger(alias[0], alias[1]);
- });
-
- const manualTriggers = parsedTriggers
- .filter((triggerPair: Trigger) => triggerPair.isManual());
-
- if (manualTriggers.length > 1) {
- throw new Error('Triggers parse error: only one manual trigger is allowed');
- }
-
- if (manualTriggers.length === 1 && parsedTriggers.length > 1) {
- throw new Error('Triggers parse error: manual trigger can\'t be mixed with other triggers');
- }
-
- return parsedTriggers;
-}
-
-export function listenToTriggers(renderer: Renderer2, target: any, triggers: string,
- showFn: Function, hideFn: Function, toggleFn: Function): Function {
- const parsedTriggers = parseTriggers(triggers);
- const listeners: any[] = [];
-
- if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {
- return Function.prototype;
- }
-
- // parsedTriggers.forEach((trigger: Trigger) => {
- parsedTriggers.forEach((trigger: Trigger | any) => {
- if (trigger.open === trigger.close) {
- listeners.push(renderer.listen(target, trigger.open, () => {
- toggleFn();
- }));
- // listeners.push(renderer.listen(target, trigger.open, toggleFn));
- return;
- }
-
- listeners.push(
- renderer.listen(target, trigger.open, () => {
- showFn();
- }),
- // renderer.listen(target, trigger.open, showFn),
- renderer.listen(target, trigger.close, () => {
- hideFn();
- }));
- // renderer.listen(target, trigger.close, hideFn));
- });
-
- return () => { listeners.forEach((unsubscribeFn: Function) => unsubscribeFn()); };
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/utils/utils.class.ts b/projects/angular-bootstrap-md/src/lib/free/utils/utils.class.ts
deleted file mode 100755
index d31e13c4..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/utils/utils.class.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import { window, document } from './facade/browser';
-import {ElementRef} from '@angular/core';
-
-export class Utils {
- constructor() {
-
- }
- public static reflow(element: any): void {
- ((bs: any): void => bs)(element.offsetHeight);
- }
-
- // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js
- public static getStyles(elem: any): any {
- // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
- // IE throws on elements created in popups
- // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
- let view = elem.ownerDocument.defaultView;
-
- if (!view || !view.opener) {
- view = window;
- }
-
- return view.getComputedStyle(elem);
- }
-
- public focusTrapModal(event: KeyboardEvent | any, el: ElementRef) {
- let focusableElements: any;
- let firstFocusableElement: any;
- let lastFocusableElement: any;
-
- const KEYCODE_TAB = 9;
- /*tslint:disable-next-line:max-line-length */
- focusableElements = el.nativeElement.querySelectorAll('a[href], button, textarea, input, select, form, mdb-select, mdb-auto-completer, mdb-checkbox, mdb-range-input');
- firstFocusableElement = focusableElements[0];
- lastFocusableElement = focusableElements[focusableElements.length - 1];
-
- if (event.key === 'Tab' || event.keyCode === KEYCODE_TAB) {
- if (event.shiftKey) {
- if (document && document.activeElement === firstFocusableElement) {
- lastFocusableElement.focus();
- event.preventDefault();
- }
- } else {
- if (document && document.activeElement === lastFocusableElement) {
- firstFocusableElement.focus();
- event.preventDefault();
- }
- }
- }
- }
-
- public getClosestEl(el: any, selector: string) {
- for (; el && el !== document; el = el.parentNode) {
- if (el.matches && el.matches(selector)) {
- return el;
- }
- }
- return null;
- }
-
- public getCoords(elem: any): any {
- const box: ClientRect = elem.getBoundingClientRect();
- const body: any = document.body;
- const docEl: any = document.documentElement;
-
- const scrollTop: number = window.pageYOffset || docEl.scrollTop || body.scrollTop;
- const scrollLeft: number = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;
-
- const clientTop: number = docEl.clientTop || body.clientTop || 0;
- const clientLeft: number = docEl.clientLeft || body.clientLeft || 0;
-
- const top: number = box.top + scrollTop - clientTop;
- const left: number = box.left + scrollLeft - clientLeft;
-
- return {top: Math.round(top), left: Math.round(left)};
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/waves/index.ts b/projects/angular-bootstrap-md/src/lib/free/waves/index.ts
deleted file mode 100755
index 056949c6..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/waves/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { WavesDirective } from './waves-effect.directive';
-export { WavesModule } from './waves.module';
diff --git a/projects/angular-bootstrap-md/src/lib/free/waves/waves-effect.directive.ts b/projects/angular-bootstrap-md/src/lib/free/waves/waves-effect.directive.ts
deleted file mode 100755
index 47589f09..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/waves/waves-effect.directive.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import { Directive, ElementRef, HostListener } from '@angular/core';
-@Directive({
- selector: '[mdbWavesEffect]',
-})
-export class WavesDirective {
- constructor(public el: ElementRef) {}
-
- @HostListener('click', ['$event'])
- public click(event: any) {
- if (!this.el.nativeElement.classList.contains('disabled')) {
- const button = this.el.nativeElement;
- if (!button.classList.contains('waves-effect')) {
- button.className += ' waves-effect';
- }
-
- const xPos = event.clientX - button.getBoundingClientRect().left;
- const yPos = event.clientY - button.getBoundingClientRect().top;
-
- const tmp = document.createElement('div');
- tmp.className += 'waves-ripple waves-rippling';
- const ripple = button.appendChild(tmp);
-
- const top = yPos + 'px';
- const left = xPos + 'px';
-
- tmp.style.top = top;
- tmp.style.left = left;
-
- const scale = 'scale(' + (button.clientWidth / 100) * 3 + ') translate(0,0)';
-
- // tslint:disable-next-line: deprecation
- tmp.style.webkitTransform = scale;
- tmp.style.transform = scale;
- tmp.style.opacity = '1';
-
- const duration = 750;
-
- // tslint:disable-next-line: deprecation
- tmp.style.webkitTransitionDuration = duration + 'ms';
- tmp.style.transitionDuration = duration + 'ms';
-
- this.removeRipple(button, ripple);
- }
- }
-
- removeRipple(button: any, ripple: any) {
- ripple.classList.remove('waves-rippling');
-
- setTimeout(() => {
- ripple.style.opacity = '0';
-
- setTimeout(() => {
- button.removeChild(ripple);
- }, 750);
- }, 200);
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/free/waves/waves.module.ts b/projects/angular-bootstrap-md/src/lib/free/waves/waves.module.ts
deleted file mode 100755
index dd6edf91..00000000
--- a/projects/angular-bootstrap-md/src/lib/free/waves/waves.module.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { NgModule, ModuleWithProviders } from '@angular/core';
-import { WavesDirective } from './waves-effect.directive';
-
-@NgModule({
- declarations: [WavesDirective],
- exports: [WavesDirective]
-})
-
-export class WavesModule {
- public static forRoot(): ModuleWithProviders {
- return {ngModule: WavesModule, providers: []};
- }
-}
diff --git a/projects/angular-bootstrap-md/src/lib/img/lightbox/default-skin.png b/projects/angular-bootstrap-md/src/lib/img/lightbox/default-skin.png
deleted file mode 100755
index 441c502c..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/lightbox/default-skin.png and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/lightbox/default-skin.svg b/projects/angular-bootstrap-md/src/lib/img/lightbox/default-skin.svg
deleted file mode 100755
index 9d5f0c6a..00000000
--- a/projects/angular-bootstrap-md/src/lib/img/lightbox/default-skin.svg
+++ /dev/null
@@ -1 +0,0 @@
-default-skin 2
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/img/lightbox/preloader.gif b/projects/angular-bootstrap-md/src/lib/img/lightbox/preloader.gif
deleted file mode 100755
index b8faa697..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/lightbox/preloader.gif and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/overlays/01.png b/projects/angular-bootstrap-md/src/lib/img/overlays/01.png
deleted file mode 100755
index f9b60ee7..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/overlays/01.png and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/overlays/02.png b/projects/angular-bootstrap-md/src/lib/img/overlays/02.png
deleted file mode 100755
index acce7a66..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/overlays/02.png and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/overlays/03.png b/projects/angular-bootstrap-md/src/lib/img/overlays/03.png
deleted file mode 100755
index c11a355b..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/overlays/03.png and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/overlays/04.png b/projects/angular-bootstrap-md/src/lib/img/overlays/04.png
deleted file mode 100755
index 89b85338..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/overlays/04.png and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/overlays/04.png~HEAD b/projects/angular-bootstrap-md/src/lib/img/overlays/04.png~HEAD
deleted file mode 100755
index 89b85338..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/overlays/04.png~HEAD and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/overlays/04.png~ecacfc5c730e25dcad92fe8f4a80cba6c23a4b6b b/projects/angular-bootstrap-md/src/lib/img/overlays/04.png~ecacfc5c730e25dcad92fe8f4a80cba6c23a4b6b
deleted file mode 100755
index 89b85338..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/overlays/04.png~ecacfc5c730e25dcad92fe8f4a80cba6c23a4b6b and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/overlays/05.png b/projects/angular-bootstrap-md/src/lib/img/overlays/05.png
deleted file mode 100755
index 082bda8c..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/overlays/05.png and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/overlays/06.png b/projects/angular-bootstrap-md/src/lib/img/overlays/06.png
deleted file mode 100755
index 9c9006a2..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/overlays/06.png and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/overlays/07.png b/projects/angular-bootstrap-md/src/lib/img/overlays/07.png
deleted file mode 100755
index 218be609..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/overlays/07.png and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/overlays/08.png b/projects/angular-bootstrap-md/src/lib/img/overlays/08.png
deleted file mode 100755
index 1b9dffc9..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/overlays/08.png and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/overlays/09.png b/projects/angular-bootstrap-md/src/lib/img/overlays/09.png
deleted file mode 100755
index b9ed2ff1..00000000
Binary files a/projects/angular-bootstrap-md/src/lib/img/overlays/09.png and /dev/null differ
diff --git a/projects/angular-bootstrap-md/src/lib/img/svg/arrow_left.svg b/projects/angular-bootstrap-md/src/lib/img/svg/arrow_left.svg
deleted file mode 100755
index a88d2997..00000000
--- a/projects/angular-bootstrap-md/src/lib/img/svg/arrow_left.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/lib/img/svg/arrow_right.svg b/projects/angular-bootstrap-md/src/lib/img/svg/arrow_right.svg
deleted file mode 100755
index f62d8852..00000000
--- a/projects/angular-bootstrap-md/src/lib/img/svg/arrow_right.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/src/public_api.ts b/projects/angular-bootstrap-md/src/public_api.ts
deleted file mode 100644
index 5b31b0d8..00000000
--- a/projects/angular-bootstrap-md/src/public_api.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Public API Surface of ng-uikit-pro-standard-compile
- */
-// MDB Angular Free
-export * from './lib/free/badge/index';
-export * from './lib/free/breadcrumbs/index';
-export * from './lib/free/buttons/index';
-export * from './lib/free/cards/index';
-export * from './lib/free/carousel/index';
-export * from './lib/free/charts/index';
-export * from './lib/free/checkbox/index';
-export * from './lib/free/collapse/index';
-export * from './lib/free/dropdown/index';
-export * from './lib/free/icons/index';
-export * from './lib/free/input-utilities/index';
-export * from './lib/free/inputs/index';
-export * from './lib/free/modals/index';
-export * from './lib/free/navbars/index';
-export * from './lib/free/popover/index';
-export * from './lib/free/tables/index';
-export * from './lib/free/tooltip/index';
-export * from './lib/free/waves/index';
-export * from './lib/free/mdb-free.module';
-
-
-
diff --git a/projects/angular-bootstrap-md/src/test.ts b/projects/angular-bootstrap-md/src/test.ts
deleted file mode 100644
index e11ff1c9..00000000
--- a/projects/angular-bootstrap-md/src/test.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-// This file is required by karma.conf.js and loads recursively all the .spec and framework files
-
-import 'core-js/es7/reflect';
-import 'zone.js/dist/zone';
-import 'zone.js/dist/zone-testing';
-import { getTestBed } from '@angular/core/testing';
-import {
- BrowserDynamicTestingModule,
- platformBrowserDynamicTesting
-} from '@angular/platform-browser-dynamic/testing';
-
-declare const require: any;
-
-// First, initialize the Angular testing environment.
-getTestBed().initTestEnvironment(
- BrowserDynamicTestingModule,
- platformBrowserDynamicTesting()
-);
-// Then we find all the tests.
-const context = require.context('./', true, /\.spec\.ts$/);
-// And load the modules.
-context.keys().map(context);
diff --git a/projects/angular-bootstrap-md/tsconfig.schematics.json b/projects/angular-bootstrap-md/tsconfig.schematics.json
deleted file mode 100644
index 6057d1cd..00000000
--- a/projects/angular-bootstrap-md/tsconfig.schematics.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "lib": [
- "es2018",
- "dom"
- ],
- "declaration": true,
- "module": "commonjs",
- "moduleResolution": "node",
- "noEmitOnError": true,
- "noFallthroughCasesInSwitch": true,
- "noImplicitAny": true,
- "noImplicitThis": true,
- "noUnusedParameters": true,
- "noUnusedLocals": true,
- "rootDir": "schematics",
- "outDir": "../../dist/angular-bootstrap-md/schematics",
- "skipDefaultLibCheck": true,
- "skipLibCheck": true,
- "sourceMap": true,
- "strictNullChecks": true,
- "target": "es6",
- "types": [
- "jasmine",
- "node"
- ]
- },
- "include": [
- "schematics/"
- ],
- "exclude": [
- ]
- }
\ No newline at end of file
diff --git a/projects/angular-bootstrap-md/tsconfig.spec.json b/projects/angular-bootstrap-md/tsconfig.spec.json
deleted file mode 100644
index 16da33db..00000000
--- a/projects/angular-bootstrap-md/tsconfig.spec.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "extends": "../../tsconfig.json",
- "compilerOptions": {
- "outDir": "../../out-tsc/spec",
- "types": [
- "jasmine",
- "node"
- ]
- },
- "files": [
- "src/test.ts"
- ],
- "include": [
- "**/*.spec.ts",
- "**/*.d.ts"
- ]
-}
diff --git a/projects/mdb-angular-ui-kit/CHANGELOG.md b/projects/mdb-angular-ui-kit/CHANGELOG.md
new file mode 100644
index 00000000..29e567ec
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/CHANGELOG.md
@@ -0,0 +1,1037 @@
+## 9.0.0 (21.09.2025)
+
+This version requires Angular v20. Follow the [Angular Update Guide](https://angular.dev/update-guide) to migrate your project to Angular 20.
+
+### Breaking changes:
+
+- Updated Angular to v20, this version is required in MDB Angular v9
+
+### Fixes and improvements:
+
+- [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/)
+ - Improved blocking of months and years cells in some edge cases
+ - Resolved problems with errors when parsing invalid date formats
+- [File upload](https://mdbootstrap.com/docs/angular/plugins/file-upload/)
+ - Added error handling for `maxFileQuantity`
+ - Improved extensions validation logic to handle problems with uploading files with extensions defined in `mimeTypes` input
+- [Input fields](https://mdbootstrap.com/docs/angular/forms/input-fields/) - resolved problem with border gap updates for dynamically rendered label
+- [Select](https://mdbootstrap.com/docs/angular/forms/select/) - resolved issue where clicking the arrow icon in one Select input would not close the dropdown of another Select component
+
+### New features:
+
+- Added new SCSS and CSS variables for plugins styles
+- [Autocomplete](https://mdbootstrap.com/docs/angular/forms/autocomplete/) - added new `dropdownWidth` input that allows to set custom width for the dropdown menu
+- [Datatables](https://mdbootstrap.com/docs/angular/data/datatables/) - added new `defaultSortDirection` input that allows to set default sort direction for the table header
+
+---
+
+## 8.0.0 (07.04.2025)
+
+This version requires Angular v19. Follow the [Angular Update Guide](https://angular.dev/update-guide) to migrate your project to Angular 19.
+
+### Breaking changes:
+
+- Updated Angular to v19, this version is required in MDB Angular v8
+- Older theming styles are no longer supported, use new [color modes](https://mdbootstrap.com/docs/angular/content-styles/theme/) instead
+- Slightly increased cell width in [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/)
+- The `.navbar-light` class is no longer used in [Navbar](https://mdbootstrap.com/docs/angular/navigation/navbar), use [color modes](https://mdbootstrap.com/docs/angular/content-styles/theme/) instead
+
+### Design updates:
+
+Introduced a new theming system that allows setting the theme for the entire page, its parts, or selected elements using data attributes.
+
+Read [Colors modes](https://mdbootstrap.com/docs/angular/content-styles/theme/) page to learn more about new theming.
+
+### Fixes and improvements:
+
+- [Modal](https://mdbootstrap.com/docs/angular/components/modal/) - resolved problem with opening animation
+- [Select](https://mdbootstrap.com/docs/angular/forms/select/) - resolved problem with not hiding option groups labels when using filter
+- [Popconfirm](https://mdbootstrap.com/docs/angular/components/popconfirm/) - added default offset to the component
+- [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/) - fixed date parsing bug for `yy` year format
+- [Stepper](https://mdbootstrap.com/docs/angular/components/stepper/) - added 'Optional' text to the steps that use `optional` input
+- [Onboarding](https://mdbootstrap.com/docs/angular/plugins/onboarding/) - added gap between the buttons and fixed border styles
+- Fixed [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/) and [Timepicker](https://mdbootstrap.com/docs/angular/forms/timepicker/) toggle button padding in Firefox browser
+- Removed unnecessary `BrowserAnimationsModule` imports from [Onboarding](https://mdbootstrap.com/docs/angular/plugins/onboarding/), [Ecommerce gallery](https://mdbootstrap.com/docs/angular/plugins/ecommerce-gallery/) and [Organization chart](https://mdbootstrap.com/docs/angular/plugins/organization-chart/) plugins
+
+### New features:
+
+- Added new SCSS and CSS variables for plugins styles
+- [File upload](https://mdbootstrap.com/docs/angular/plugins/file-upload/) - added new `mimeTypes` input that allow to define a list of mime types for supported file types
+- [Multi item carousel](https://mdbootstrap.com/docs/angular/plugins/multi-item-carousel/) - added new `(slideClick)` event
+- [Color picker](https://mdbootstrap.com/docs/angular/plugins/color-picker/) - added new `color-picker-next-format-button`, `color-picker-previous-format-button` and `color-picker-copy-button` classes for the buttons
+
+---
+
+## 7.1.0 (18.11.2024)
+
+### Fixes and improvements:
+
+- [Timepicker](https://mdbootstrap.com/docs/angular/forms/timepicker/)
+ - Resolved problem with `close` method being called twice on component close
+ - Fixed dark theme styles in inline mode
+- [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/)
+ - Added `aria-disabled` attributes to elements that display disabled dates
+ - Fixed `aria-label` attribute value in the element used to display day value
+ - Resolved problem with adding `aria-selected` attribute to the element that display day value
+- [Select](https://mdbootstrap.com/docs/angular/forms/select/)
+ - Fixed disabled options styles in custom theme
+ - Resolved problem with opening dropdown on `space` key press
+ - Added `aria-label` and `aria-labelledby` attributes to the component
+ - Fixed value returned by `(deselect)` event
+- [Autocomplete](https://mdbootstrap.com/docs/angular/forms/autocomplete/)
+ - Fixed `aria-expended` attribute values for opened and closed menu
+ - Fixed problem where component menu was opening even when input was disbled
+- [Transfer](https://mdbootstrap.com/docs/angular/plugins/transfer/)
+ - Fixed events output for target container
+ - Fixed checkboxes styles
+- [Range](https://mdbootstrap.com/docs/angular/forms/range/) - fixed thumb position on component init
+- [Onboarding](https://mdbootstrap.com/docs/angular/plugins/onboarding/) - added fix to prevent memory leak after component destroy
+- [Input mask](https://mdbootstrap.com/docs/angular/plugins/input-mask/) - fixed a problem with value formatting when pasting all content into input at once
+- [Vector maps](https://mdbootstrap.com/docs/angular/plugins/vector-maps/) - fixed shadow styles in zoom buttons
+- [Transfer](https://mdbootstrap.com/docs/angular/plugins/wysiwyg-editor/) - fixed dropdown menu alignment
+- [Dropdown](https://mdbootstrap.com/docs/angular/component/dropdowns/) - fixed `aria-expended` attribute values for opened and closed menu
+- [Sidenav](https://mdbootstrap.com/docs/angular/navigation/sidenav/) - fixed problem with focus trap when the last focused element is inside the component content
+
+### New features:
+
+- [Timepicker](https://mdbootstrap.com/docs/angular/forms/timepicker/)
+ - Added new `showClearBtn` input
+ - Added new `(clear)` event that will be fired after using Clear button
+- [File upload](https://mdbootstrap.com/docs/angular/plugins/file-upload/)
+ - Added `svg` and `webp` extensions to the list of allowed file types for default preview
+ - Added new `datepickerOptions` that allow to define options for the date pickers used by the plugin
+- [Select](https://mdbootstrap.com/docs/angular/forms/select/) - added new `(search)` event that will be fired after using search input
+- [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/) - added new `(viewChanged)` event that will be fired on component view change
+- [Progress](https://mdbootstrap.com/docs/angular/components/progress/) - added new circular version of the component
+
+---
+
+## 7.0.0 (16.09.2024)
+
+This version requires Angular v18. Follow the [Angular Update Guide](https://angular.dev/update-guide) to migrate your project to Angular 18.
+
+### Breaking changes:
+
+- Updated Angular to v18, this version is required in MDB Angular v7.
+- [Checkbox](https://mdbootstrap.com/docs/angular/forms/checkbox/) - changed `margin-right` style from `4px` to `6px` in `.form-check-input` element.
+- [Forms](https://mdbootstrap.com/docs/angular/forms/overview/) - added `padding-left: 0.15rem` style to `.form-check-label` element.
+- [Switch](https://mdbootstrap.com/docs/angular/forms/switch/) - changed `margin-right` style from `4px` to `8px` in `.form-check-input` element.
+- [Progress](https://mdbootstrap.com/docs/angular/components/progress/) - added `box-shadow: none` style to `.progress` element.
+- [Input group](https://mdbootstrap.com/docs/angular/forms/input-group/) - added `flex-wrap: nowrap` style to `.input-group` element.
+- [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/) - changed SCSS variable `$datepicker-small-cell-content-width` value from `36px` to `40px`.
+- [Range](https://mdbootstrap.com/docs/angular/forms/range/):
+ - Added `box-shadow: none` style to `.form-range ::-webkit-slider-runnable-track` element.
+ - Added `box-shadow: none` style to `.form-range ::-moz-range-track` element.
+- [Captcha](https://mdbootstrap.com/docs/angular/plugins/captcha/):
+ - Changed `error` event name to `captchaError`.
+ - Changed `expire` event name to `captchaExpire`.
+ - Changed `success` event name to `captchaSuccess`.
+- [Timepicker](https://mdbootstrap.com/docs/angular/forms/timepicker/):
+ - Redesigned clock's page HTML structure and styles.
+ - Arrow icons are now displayed when hour/minute buttons are hovered in inline mode.
+- [Treeview](https://mdbootstrap.com/docs/angular/plugins/tree-view/):
+ - Redesigned entire HTML structure.
+ - Replaced `li` element with `mdb-treeview-item`.
+ - Removed the `` wrapper element from the entire component.
+ - Removed the `checkboxesField` input.
+ - Added a public `MdbTreeviewColor` type for the color input.
+ - Added a new mechanism for setting the arrow icon with the `collapseIcon` property.
+ - Added keyboard navigation handling.
+
+### Fixes and improvements:
+
+- [Multi range](https://mdbootstrap.com/docs/angular/forms/multi-range-slider/) - resolved the issue with `TouchEvent` in Firefox.
+- [Select](https://mdbootstrap.com/docs/angular/forms/select/) - resolved the issue with unhandled `tabindex` input.
+- [Onboarding](https://mdbootstrap.com/docs/angular/plugins/onboarding/) - resolved the issue with initializing onboarding with a delay after navigating to another page.
+- [Input fields](https://mdbootstrap.com/docs/angular/forms/input-fields/) - resolved the issue with displaying the value after setting it programmatically in all inputs with built-in placeholders (e.g., `datetime-local` or `time`).
+- [Datatable](https://mdbootstrap.com/docs/angular/data/datatables/) - resolved the issue with the `showAllEntries` input not working properly with the `entries` input.
+- [Timepicker](https://mdbootstrap.com/docs/angular/forms/timepicker/) - resolved the issue with `ArrowUp` and `ArrowDown` key presses not working upon opening the timepicker.
+- [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/):
+ - Resolved the issue with returned form control values for empty or invalid input values.
+ - Resolved the issue with closing the datepicker using the input toggle.
+- [Calendar](https://mdbootstrap.com/docs/angular/plugins/calendar/):
+ - Resolved the issue with unpreserved event IDs on edit.
+ - Resolved the issue with dragging in `readonly` mode.
+ - Resolved the issue with view selection when non-default captions are used.
+ - Resolved the issue with rendering the period in the correct format in Month view.
+
+### New features:
+
+- [Dropdown](https://mdbootstrap.com/docs/angular/components/dropdown/) - added `MdbDropdownPositionClass` type to the public API.
+- [Modal](https://mdbootstrap.com/docs/angular/components/modal/) - added `focusElementSelector` property to the `open` method's options for specifying the element to focus on when the modal opens.
+- [Calendar](https://mdbootstrap.com/docs/angular/plugins/calendar/):
+ - Added `addEventButtonCaption` property to the `options` input for setting a custom caption for the add event button.
+ - Added `MdbCalendarViews` Enum to the public API.
+
+---
+
+## 6.1.0 (27.05.2024)
+
+### Fixes and improvements:
+
+- [Multi range](https://mdbootstrap.com/docs/angular/forms/multi-range-slider/)
+ - Fixed problem with thumb limiting logic when using custom step
+ - Fixed problem with updating thumb positions via form controls
+- [Popconfirm](https://mdbootstrap.com/docs/angular/components/popconfirm/) - added focus trap
+- [Autocomplete](https://mdbootstrap.com/docs/angular/forms/autocomplete/) - restored native `shift + home` and `shift + end` keys behavior (open/close dropdown)
+- [Select](https://mdbootstrap.com/docs/angular/forms/select/) - added support for opening and closing dropdown with `alt + arrow-up` and `alt + arrow-down` keys
+
+### New:
+
+- [Table pagination](https://mdbootstrap.com/docs/angular/data/datatables/) - added new `page` input that allows to set page number
+- [Multi range](https://mdbootstrap.com/docs/angular/forms/multi-range-slider/) - added new `highlightRange` input that allows to highlight range
+- [Parallax](https://mdbootstrap.com/docs/angular/plugins/parallax/) - added new `container` input that allows to set wrapper element for parallax effect
+
+---
+
+## 6.0.0 (15.01.2024)
+
+This version requires Angular v17. Follow the [Angular Update Guide](https://update.angular.io/?l=3&v=16.0-17.0) to migrate your project to Angular 17.
+
+### Breaking changes:
+
+- Updated Angular to v17, this version is required in MDB Angular v6
+- [Calendar](https://mdbootstrap.com/docs/angular/plugins/calendar/) - changed type of `defaultView` input from `string` to `MdbCalendarView`
+- [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/) - changed type of `options` input from `any` to `MdbDatepickerOptions`
+- [Timepicker](https://mdbootstrap.com/docs/angular/forms/timepicker/)
+ - Changed type of `options` input from `Options` to `MdbTimepickerOptions` and made all parameters optional
+ - Changed `SelectedTime` type name to `MdbTimepickerSelectedTime` and added this type to public exports
+- [Popover](https://mdbootstrap.com/docs/angular/components/popover/) - removed unused `template` input
+- [Sidenav](https://mdbootstrap.com/docs/angular/navigation/sidenav/)
+ - Changed return type of all events from `MdbSidenavComponent` to `void`
+ - Removed redundant `li` element from `MdbSidenavItemComponent` template
+- [Transfer](https://mdbootstrap.com/docs/angular/plugins/transfer/)
+ - Changed `onSearchOutput` event name to `searchOutput`
+ - Changed `selectOutput` event name to `selectOutput`
+ - Changed `onChange` event name to `listChange`
+ - Changed `onSearch` event name to `itemSearch`
+ - Changed `onSelect` event name to `itemSelect`
+
+### Fixes and improvements:
+
+- [Sidenav](https://mdbootstrap.com/docs/angular/navigation/sidenav/) - removed height animation transition
+- [Select](https://mdbootstrap.com/docs/angular/forms/select/) - blocked input clearing in disabled component
+- [Input fields](https://mdbootstrap.com/docs/angular/forms/input-fields/) - resolved problem with default label position in all inputs with built-in placeholder (like `datetime-local` or `time`)
+- [Lightbox](https://mdbootstrap.com/docs/angular/components/lightbox/) - resolved problem with component removal from DOM after using browser's back button
+- [Timepicker](https://mdbootstrap.com/docs/angular/forms/timepicker/) - resolved problem with font size in landscape view
+
+### New fetures:
+
+- [Select](https://mdbootstrap.com/docs/angular/forms/select/) - added new `inputId` and `inputFilterId` inputs that allow to declare ids for input elements
+
+---
+
+## 5.2.0 (04.12.2023)
+
+### Fixes and improvements:
+
+- Resolved problem with components rendering when using Server Side Rendering
+- Resolved problem with overlay when using `menuPositionClass` in [Datatable](https://mdbootstrap.com/docs/angular/components/dropdowns/)
+- Replaced hardcoded `padding-left` value in [Sidenav](https://mdbootstrap.com/docs/angular/navigation/sidenav/) link with a value from CSS variable
+- Replaced hardcoded `box-shadow`, `border-color` and `background-color` values in [Buttons](https://mdbootstrap.com/docs/angular/components/buttons/) with a values from CSS variables
+- [Timepicker](https://mdbootstrap.com/docs/angular/forms/timepicker/)
+ - Fixed the button press behavior to consider the duration of the press
+ - Removed the default scroll effect from the arrow keydown events in inline mode
+- Fixed events types for `opened` and `closed` events in [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/)
+- Resolved problem with initial value in [Rating](https://mdbootstrap.com/docs/angular/components/rating)
+- [Multi Range Slider](https://mdbootstrap.com/docs/angular/forms/multi-range-slider/)
+ - Resolved problem with thumbs position updates on `ngModel` or `formControl` value changes
+ - Added thumbs position constraints so that the position of a given thumb is limited by its counterpart
+- Resolved problem with the `Host already has a portal attached` error in [Wysiwyg](https://mdbootstrap.com/docs/angular/plugins/wysiwyg-editor/)
+
+### New:
+
+- A new `MdbSidenavMenuDirective` directive has been added to [Sidenav](https://mdbootstrap.com/docs/angular/navigation/sidenav/) allowing to create multiple menus within one component
+- A new `size` input has been added to [Select](https://mdbootstrap.com/docs/angular/orms/select/) allowing to change input size to `sm` or `lg`
+
+---
+
+## 5.1.0 (09.10.2023)
+
+### Fixes and improvements:
+
+- [Datatable](https://mdbootstrap.com/docs/angular/data/datatables/)
+ - Added missing `cursor: pointer` styles to clickable rows
+ - Resolved problems with pagination width styles
+ - Resolved problems with page number calculation in pagination
+- [Sidenav](https://mdbootstrap.com/docs/angular/navigation/sidenav/)
+ - Resolved problems with accessibility
+ - Removed the need to define template variables in HTML template
+ - Adjusted padding in slim version to correctly display link icon and arrow
+- [Tabs](https://mdbootstrap.com/docs/angular/navigation/tabs/)
+ - Improved animation smoothness
+ - Added `MdbTabChange` event type to public exports
+- [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/)
+ - Resolved problem with `disabled` input
+ - Resolved problem with disabling and enabling component via Reactive Forms methods
+ - Removed border styles from focused buttons
+- [Timepicker](https://mdbootstrap.com/docs/angular/forms/timepicker/)
+ - Resolved problem with border radius styles
+ - Resolved problem with disabling and enabling component via Reactive Forms methods
+- [Autocomplete](https://mdbootstrap.com/docs/angular/forms/autocomplete/)
+ - Removed auto highlight from first option
+ - Resolved problems with input and dropdown keyboard navigation when using `HOME` and `END` keys
+- [Multi range](https://mdbootstrap.com/docs/angular/forms/multi-range-slider/)
+ - Resolved problem with component render in apps using Angular 16
+ - Resolved problem with unhandled `endDrag` event
+- [Onboarding](https://mdbootstrap.com/docs/angular/plugins/onboarding/)
+ - Resolved problem with component render in apps using Angular 16
+ - Resolved problems with popover styles
+ - Fixed event types
+ - Fixed event emitted when jumping to next step
+- [Treeview](/docs/angular/plugins/tree-view/)
+ - Improved animation smoothness
+ - Added correct types to public events
+ - Resolved problem with `accordion` option
+ - Resolved problem with `openOnClick` option
+ - Improved accessibility
+- Resolved problem with styles of anchor elements used as [floating buttons](https://mdbootstrap.com/docs/angular/components/buttons/#section-floating)
+- Resolved problem with adding new [Chips](https://mdbootstrap.com/docs/angular/components/chips/) on blur event
+- Resolved problem with [Dropdown](https://mdbootstrap.com/docs/angular/components/dropdowns/) menu position
+- Fixed focus styles in [Select](https://mdbootstrap.com/docs/angular/forms/select/) with `form-white` class
+- Resolved problem with position of bottom frame [non-invasive Modal](https://mdbootstrap.com/docs/angular/components/modal/#section-non-invasive-modal)
+- Fixed type of `infiniteScrollCompleted` event in [Infinite scroll](https://mdbootstrap.com/docs/angular/methods/infinite-scroll/)
+- Added mechanism to handle dynamic updates in [Input mask](https://mdbootstrap.com/docs/angular/plugins/input-mask/) plugin
+- Resolved problems with [Color picker](https://mdbootstrap.com/docs/angular/plugins/color-picker/) plugin styles and slider in Firefox browser
+- Resolved problem with [Parallax](https://mdbootstrap.com/docs/angular/plugins/parallax/) plugin render in apps using Angular 16
+- Fixed event types and unhandled events in [Drag and drop](https://mdbootstrap.com/docs/angular/plugins/drag-and-drop/) plugin
+- Resolved problem with reverting lists transformation in [WYSIWYG editor](https://mdbootstrap.com/docs/angular/plugins/wysiwyg-editor/) plugin
+- Resolved problem with `changeView` method in [Calendar](https://mdbootstrap.com/docs/angular/plugins/calendar/) plugin
+- Added types to public exports in [Data parser](https://mdbootstrap.com/docs/angular/plugins/data-parser/) plugin
+
+### New:
+
+- Added new [Treetable](https://mdbootstrap.com/docs/angular/plugins/treetable/) plugin
+- Added mechanism that allow to add context for `ng-template` template in [Popover](https://mdbootstrap.com/docs/angular/components/popovers/)
+- Added new `showAllEntries` option to [Datatable pagination](https://mdbootstrap.com/docs/angular/data/datatables/)
+- Added new `filterFn` option to [Select](https://mdbootstrap.com/docs/angular/forms/select/)
+- Added new directive that allow to create a custom header in [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/)
+- Added new `positionClass` and `menuPositionClass` options to [Dropdown](https://mdbootstrap.com/docs/angular/components/dropdowns/)
+- Added new `disabled` input that allow to disable [Accordion](https://mdbootstrap.com/docs/angular/components/accordion/)Accordion items
+- Added mechanism that allow to define custom icon template with `ng-template` in [Datepicker](/docs/angular/forms/datepicker/) and [Timepicker](https://mdbootstrap.com/docs/angular/forms/timepicker/)
+- Added mechanism that allow to define custom header template with `ng-template` in [Stepper](https://mdbootstrap.com/docs/angular/components/stepper/)
+- Added new `$link-decoration` and `--mdb-link-decoration` variables to make it easier to customize `text-decoration` styles for anchor elements
+- Added new inputs for disabling specific features in [Calendar](https://mdbootstrap.com/docs/angular/plugins/calendar/) plugin
+
+---
+
+## 5.0.0 (26.06.2023)
+
+This version requires Angular v16. Follow the [Angular update guide](https://update.angular.io/?l=3&v=15.0-16.0) to migrate your project to Angular 16.
+
+### Dependencies:
+
+- Updated Angular to v16, this version is required in MDB Angular v5
+- Updated Bootstrap to [5.2.3](https://github.com/twbs/bootstrap/releases/tag/v5.2.3) version.
+
+### Design changes:
+
+- Changed arrow styles in [Select](https://mdbootstrap.com/docs/angular/forms/select/) input
+- Slightly changed hover styles in [outline buttons](https://mdbootstrap.com/docs/angular/components/buttons/#section-outline) to make them more elegant and subtle
+
+### Fixes and improvements:
+
+- Fixed problems with schematics installation in MDB Angular Free version
+- Fixed problem with display of [Sidenav](https://mdbootstrap.com/docs/angular/navigation/sidenav/) item when its content is translated with the `translate` pipe from the `@ngx-translate` library
+- Fixed position of smaller icons in relation to the text in [Rating](https://mdbootstrap.com/docs/angular/components/rating/)
+
+### New:
+
+- Converted MDB components to CSS variables
+- Added SCSS and CSS variables for `mdb-option` and `mdb-option-group` components
+- Added access to the underlying component instance from ref element in [Modal](https://mdbootstrap.com/docs/angular/components/modal/), [Popconfirm](https://mdbootstrap.com/docs/angular/components/popconfirm/), [Alerts](https://mdbootstrap.com/docs/angular/components/alerts/) and [Toasts](https://mdbootstrap.com/docs/angular/components/toasts/)
+
+---
+
+## 4.1.0 (24.01.2023)
+
+### Fixes and improvements:
+
+- Fixed default value display in [Autocomplete](https://mdbootstrap.com/docs/angular/forms/autocomplete/) when the value is an object
+- [Timepicker](https://mdbootstrap.com/docs/angular/forms/timepicker/)
+ - Fixed focus trap
+ - Fixed keyboard navigation in inline mode
+ - Fixed the problem with minTime and maxTime range
+- Fixed [Ripple effect](https://mdbootstrap.com/docs/angular/methods/ripple/) on inputs styled as buttons
+- Fixed background colors of [Toasts](https://mdbootstrap.com/docs/angular/components/toasts/) and [Alerts](https://mdbootstrap.com/docs/angular/components/alerts/) in MDB theme
+- [Modal](https://mdbootstrap.com/docs/angular/components/modal/)
+ - Fixed the problem with scrollbar on bottom frame modal init
+ - Removed rounded corners from frame modals
+ - Removed unnecessary body scroll when using `scrollable` modal
+- [Datatable](https://mdbootstrap.com/docs/angular/data/datatables/)
+ - Removed ability to focus disabled buttons in pagination
+ - Fixed the problem with case-sensitive sorting
+- Fixed the problem with hiding buttons in the [Wysiwyg](https://mdbootstrap.com/docs/angular/plugins/wysiwyg-editor/) toolbar
+- Fixed problem with event types in [Select](https://mdbootstrap.com/docs/angular/forms/select/)
+- Fixed problem with `Rxjs operators` import paths in all the components and plugins
+
+### New:
+
+- Added new [Data Parser](https://mdbootstrap.com/docs/angular/plugins/data-parser/) plugin
+- Added new [Organization Chart](https://mdbootstrap.com/docs/angular/plugins/organization-chart/) plugin
+- Added new [Captcha](https://mdbootstrap.com/docs/angular/plugins/captcha/) plugin
+- Added new [Chips](https://mdbootstrap.com/docs/angular/components/chips/) component
+- Added new `[collapsible]` input to [Scrollspy](https://mdbootstrap.com/docs/angular/navigation/scrollspy/)
+- Added new `[disableWindowScroll]` input to the [Sidenav](https://mdbootstrap.com/docs/angular/navigation/sidenav/)
+- Added new [non-invasive Modal](https://mdbootstrap.com/docs/angular/components/modal/#section-non-invasive-modal)
+- [Datatable](https://mdbootstrap.com/docs/angular/data/datatables/)
+ - Added new `[forceSort]` input that allow to disable sort reset on third click
+ - Added new `[disableSort]` input that allow to disable a specific sort header
+ - Added new `[disabled]` input to pagination component
+- [Datepicker](https://mdbootstrap.com/docs/angular/forms/datepicker/)
+- Added new `[removeOkBtn]`, `[removeCancelBtn]` and `[removeClearBtn]` inputs that allow to remove specific buttons from the component footer
+- Addew new `[confirmDateOnSelect]` input that allow to select date without a confirmation by click on `Ok` button
+
+---
+
+## 4.0.0 (09.01.2023)
+
+### Design updates:
+
+Our basic color palette has been updated. We toned down our colors to be less flashy and more elegant and subtle. This affects virtually all of our components, so be aware of this before upgrading your project to v4.0.0.
+
+Read [colors docs](https://mdbootstrap.com/docs/angular/content-styles/colors/) to learn more about new palette.
+
+### Breaking changes:
+
+- Added support for Angular 15, this Angular version is now required,
+- Improved [buttons](https://mdbootstrap.com/docs/angular/components/buttons/)
+- Improved existing [accordion](https://mdbootstrap.com/docs/angular/components/accordion/) and added new examples
+- Improved [stepper](https://mdbootstrap.com/docs/angular/components/stepper/) design
+- Improved [badges](https://mdbootstrap.com/docs/angular/components/badges/) design and added new examples
+- Improved [popovers](https://mdbootstrap.com/docs/angular/components/popovers/) and [popconfirm](https://mdbootstrap.com/docs/angular/components/popconfirm/) design
+- Removed default configuration of `chartjs-plugin-datalabels` from [charts](https://mdbootstrap.com/docs/angular/data/charts/), all plugins must be now registered before use
+
+### Fixes and improvements:
+
+- Resolved problem with [scrollbar](https://mdbootstrap.com/docs/angular/methods/scrollbar/) initialization on element with a `mdbScrollbar` directive
+- Removed unnecessary border animation on initialization of `mdb-form-control` component
+- Resolved problem with global registration of controllers and plugins in [charts](https://mdbootstrap.com/docs/angular/data/charts/)
+- Improved types in `mdbChart` directive inputs
+- Added some fixes to the [transfer plugin](https://mdbootstrap.com/docs/angular/plugins/transfer/)
+ - Improved 'select all' option implementation
+ - Resolved problems with value updates in search bar input
+ - Resolved problems with component view updates when using pagination
+- Improved theme styles in the following components:
+ - List group
+ - Pagination
+ - Datepicker
+
+### New:
+
+- Addew new [color picker plugin](https://mdbootstrap.com/docs/angular/plugins/color-picker/) plugin
+- Addew new [multi item carousel plugin](https://mdbootstrap.com/docs/angular/plugins/multi-item-carousel/)
+- Addew new [ecommerce gallery plugin](https://mdbootstrap.com/docs/angular/plugins/ecommerce-gallery/)
+- Addew new `[borderless]` input to [accordion](https://mdbootstrap.com/docs/angular/components/accordion/)
+- Added new `[withPush]` input to [dropdown](https://mdbootstrap.com/docs/angular/components/dropdown/)
+- Added new `[plugins]` input to [charts](https://mdbootstrap.com/docs/angular/data/charts/)
+- Added public access to the chart instance in `mdbChart` directive
+- Added new `[ofText]` input to [datatables](https://mdbootstrap.com/docs/angular/data/datatables/)
+- Added new `[titleSource]` and `[titleTarget]` inputs to [transfer plugin](https://mdbootstrap.com/docs/angular/plugins/transfer/)
+
+---
+
+## 3.0.1 (05.12.2022)
+
+### Fixes and improvements:
+
+- [Timepicker](https://mdbootstrap.com/docs/angular/forms/timepicker/)
+ - Removed border styles displayed on focused elements
+ - Resolved problems with keyboard navigation
+- It will be now possible to jump to any step in [linear stepper](https://mdbootstrap.com/docs/angular/components/stepper/#section-linear-stepper-example/), as long as all previous steps are completed
+- Resolved problems with `acceptedExtensions` in [file upload plugin](https://mdbootstrap.com/docs/angular/plugins/file-upload/)
+- Select all option will now select/deselect only filtered options when used inside a [select component with filter](https://mdbootstrap.com/docs/angular/forms/select/#section-search/)
+- Events `itemShown` and `itemHidden` in [accordion](https://mdbootstrap.com/docs/angular/components/accordion/) will be now correctly emitted after animation end
+- Resolved problem with close animation in [popconfirm](https://mdbootstrap.com/docs/angular/components/popconfirm/)
+- Resolved problem with value returned to [autocomplete](https://mdbootstrap.com/docs/angular/forms/autocomplete/) form control on option selection
+- Resolved problem with wrong page value returned by `(paginationChange)` event in [datatable](https://mdbootstrap.com/docs/angular/data/datatables/)
+- Increased backdrop z-index in [onboarding plugin](https://mdbootstrap.com/docs/angular/plugins/onboarding/)
+- Resolved problem with `autohide` option in [toast](https://mdbootstrap.com/docs/angular/components/toasts/), notification will be removed only if it is not hovered
+- Added default padding to the content container in [WYSIWYG editor plugin](https://mdbootstrap.com/docs/angular/plugins/wysiwyg-editor/)
+- Resolved problem with Angular dependencies versions in schematics installation
+
+### New:
+
+- Addew new [color picker plugin](https://mdbootstrap.com/docs/angular/plugins/color-picker/)
+- Addew new [scroll status plugin](https://mdbootstrap.com/docs/angular/plugins/scroll-status/)
+
+---
+
+## 3.0.0 (10.10.2022)
+
+This version requires Angular v14 and Node 14.15.0 (or later). Follow the [Angular update guide](https://update.angular.io/?l=3&v=13.0-14.0) to migrate your project to Angular 14:
+
+### Breaking changes:
+
+- Added support for Angular 14, this Angular version is now required,
+- Removed `~` from styles imports, this syntax is now deprecated
+- Updated [calendar](https://mdbootstrap.com/docs/angular/plugins/calendar/) plugin:
+ - redesigned toolbar, events, views and modals
+ - replaced view toggle buttons with select
+ - created an `Add event` button
+ - added [blur](https://mdbootstrap.com/docs/angular/plugins/calendar/#section-blur/) option to style past events
+ - improved long events styling
+ - improved responsiveness
+- Design changes:
+ - Changed shadows for components such as [card](https://mdbootstrap.com/docs/angular/components/cards/), [popover](https://mdbootstrap.com/docs/angular/components/popovers/), [toast](https://mdbootstrap.com/docs/angular/components/toasts/), [modal](https://mdbootstrap.com/docs/angular/components/modal/), [image hoverable](https://mdbootstrap.com/docs/angular/content-styles/images/), [dropdown menu](https://mdbootstrap.com/docs/angular/components/dropdowns/), [popconfirm](https://mdbootstrap.com/docs/angular/components/popconfirm/)
+ - Changed styling of border for [card](https://mdbootstrap.com/docs/angular/components/cards/), [modal](https://mdbootstrap.com/docs/angular/components/modal/), header and footer
+ - Changed [table](https://mdbootstrap.com/docs/angular/data/tables/) font weight and text color
+ - Changed [checkbox](https://mdbootstrap.com/docs/angular/forms/checkbox/) and [radio](https://mdbootstrap.com/docs/angular/forms/radio/) border color
+ - Changed [switch](https://mdbootstrap.com/docs/angular/forms/switch/) background color
+ - Changed [checkbox](https://mdbootstrap.com/docs/angular/forms/checkbox/) border radius size
+ - Changed [list group](https://mdbootstrap.com/docs/angular/components/list-group/), [pagination](https://mdbootstrap.com/docs/angular/navigation/pagination/) and [dropdown](https://mdbootstrap.com/docs/angular/components/dropdowns/) text color as it is in the body
+ - Changed [toast](https://mdbootstrap.com/docs/angular/components/toasts/) color palette
+ - Changed [datatables](https://mdbootstrap.com/docs/angular/data/datatables/) striped and hover background color as it is in the usual table
+ - Changed [select](https://mdbootstrap.com/docs/angular/forms/select/) states background colors
+ - Changed [sidenav](https://mdbootstrap.com/docs/angular/navigation/sidenav/) icons colors and width of the slim version
+ - Added new [toast](https://mdbootstrap.com/docs/angular/components/toasts/) color classes that replaced background color classes. Old: `toast bg-primary`. New: `toast toast-primary`
+
+### Fixes and improvements:
+
+- [Lightbox](https://mdbootstrap.com/docs/angular/components/lightbox/)
+ - Resolved problems with zoom
+ - Resolved problems with swipe on mobile devices
+ - Resolved problem with display of smaller images
+ - Fixed image position in fullscreen mode
+ - Disabled elements will no longer be displayed inside the component modal
+- Fixed problems with `rebuild` method in [charts](https://mdbootstrap.com/docs/angular/data/charts/)
+- Replaced hardcoded color values with SCSS variables in [autocomplete](https://mdbootstrap.com/docs/angular/forms/autocomplete/) and [select](https://mdbootstrap.com/docs/angular/forms/select/)
+- Resolved problem with [carousel](https://mdbootstrap.com/docs/angular/components/carousel/) animations inside a component with OnPush change detection strategy
+- Position of dropdown menus in all components will be now correctly updated on scroll event
+- Resolved problem with fade animation in [tabs](https://mdbootstrap.com/docs/angular/components/tabs/)
+- Label values in [select](https://mdbootstrap.com/docs/angular/forms/select/) will be now dynamically updated on option label change
+- All event listeners in the [WYSIWYG](https://mdbootstrap.com/docs/angular/plugins/wysiwyg-editor/) plugin will be now correctly removed when component is destroyed
+- Resolved problem with [input](https://mdbootstrap.com/docs/angular/forms/input-fields/) label position when browser autofill is used
+
+### New:
+
+- Addew new [countdown plugin](https://mdbootstrap.com/docs/angular/plugins/countdown/)
+- Addew new [input mask plugin](https://mdbootstrap.com/docs/angular/plugins/input-mask/)
+- Addew new [parallax plugin](https://mdbootstrap.com/docs/angular/plugins/parallax/)
+- Addew new [multi range component](https://mdbootstrap.com/docs/angular/components/multi-range-slider/)
+- Added new `[fade]` input that allow to toggle fade animations in [tabs](https://mdbootstrap.com/docs/angular/components/tabs/)
+
+### Design updates:
+
+- Updated icon colors of basic light navbar and footer with secondary color
+- Added new horizontal dividers classes `.hr` and `.hr-blurry`
+- Updated styles of vertical divider class `.vr` and add new class `.vr-blurry`
+- Added new sidenav with menu categories and class `.sidenav-sm`
+- Added new `object-fit` and `object-position` utilities
+
+### Removed:
+
+- Deprecated button close classes. Old: `.close`. New: `.btn-close` and `.btn-close-white`
+- Deprecated embed classes. Old: `.embed`. New: `.ratio`
+- Deprecated flag classes. Check [flags](https://mdbootstrap.com/docs/angular/content-styles/flags/) docs
+- Deprecated utils
+
+### Deprecated:
+
+- `.divider-horizontal` and `.divider-horizontal-blurry`
+- `.divider-vertical` and `.divider-vertical-blurry`
+
+---
+
+## 2.3.0 (27.06.2022)
+
+### Fixes and improvements
+
+- [Sidenav](https://mdbootstrap.com/docs/b5/angular/navigation/sidenav/)
+ - Resolved problems with arrow position updates in slim mode and accordion mode
+ - Resolved problem with initialization of component with `[right]="true"` and `[hidden]="false"` options
+ - Fixed problem with long content display in component with `[right]="true"` option
+- Fixed problems with long label positioning in [checkbox](https://mdbootstrap.com/docs/b5/angular/forms/checkbox/), [switch](https://mdbootstrap.com/docs/b5/angular/forms/switch/) and [radio](https://mdbootstrap.com/docs/b5/angular/forms/radio/)
+- Resolved problem with multiple `paginationChange` events emitted on [datatable](https://mdbootstrap.com/docs/b5/angular/data/datatables/) initialization
+- Resolved problems with [pagination](https://mdbootstrap.com/docs/b5/angular/navigation/pagination/) and [accordion](https://mdbootstrap.com/docs/b5/angular/components/accordion/) styles when using [theme](https://mdbootstrap.com/docs/b5/angular/content-styles/theme/)
+- Fixed problem with max file quantity in [file upload](https://mdbootstrap.com/docs/b5/angular/plugins/file-upload/) plugin with `multiple` mode
+- Resolved problem with first option highlight in [select](https://mdbootstrap.com/docs/b5/angular/forms/select/) with a `[highlightFirst]="false"` option
+- Added `type="button"` to the 'insert horizontal line' button in [WYSIWYG](https://mdbootstrap.com/docs/b5/angular/plugins/wysiwyg-editor/) to resolve problem with form submit
+- Zero-length [tooltip](https://mdbootstrap.com/docs/b5/angular/components/tooltips/) and [popover](https://mdbootstrap.com/docs/b5/angular/components/popovers/) will no longer be displayed
+- Fixed problem with multiple `(selected)` events emitted after click on [autocomplete](https://mdbootstrap.com/docs/b5/angular/forms/autocomplete/) option
+
+### New
+
+- Addew new [onboarding plugin](https://mdbootstrap.com/docs/b5/angular/plugins/onboarding/)
+- [Stepper](https://mdbootstrap.com/docs/b5/angular/components/stepper/)
+ - Added possibility to block step navigation on step header click
+ - Added possibility to edit buttons and header text in mobile mode
+- Added new `--mdb-bg-opacity` CSS variable
+- Added optional auto select on tab-out in [select](https://mdbootstrap.com/docs/b5/angular/forms/select/) and [autocomplete](https://mdbootstrap.com/docs/b5/angular/forms/autocomplete/)
+- Added list group new variant with `.list-group-light` class
+- Added `.table-group-divider` and `.table-divider-color` classes to emphasize the separation of thead from tbody
+- Added new `.divider-horizontal`, `.divider-vertical`, `.divider-horizontal-blurry` and `.divider-vertical-blurry` classes
+
+---
+
+## 2.2.0 (16.05.2022)
+
+### Fixes and improvements:
+
+- Datepicker - resolved problem with returned month value when `m` format is used,
+- Treeview - resolved problem with `(selected)` event emit when selecting checkbox,
+- Select - resolved problem with keyboard navigation and option highlight after filter input is used.
+- Charts - resolved problem with chart options being overriden by options defined for other charts,
+- Range - resolved problem with thumb position update after change in `ngModel` or `formControl`
+
+### New:
+
+- [Added filter plugin](https://mdbootstrap.com/docs/b5/angular/plugins/filters/)
+- Dropdown - added keyboard navigation
+
+---
+
+## 2.1.0 (11.04.2022)
+
+### Fixes and improvements:
+
+- Datepicker - resolved problem with validation of date typed into input,
+- Sidenav - removed unnecessary transition animation on initialization in slim mode,
+- File upload plugin - fixed typo in main error message,
+- Carousel/Lightbox - updated icons styles for Font Awesome v6.
+
+### New:
+
+- [Cookies management](https://mdbootstrap.com/docs/b5/angular/plugins/cookies-management/)
+- [Storage management](https://mdbootstrap.com/docs/b5/angular/plugins/storage-management/)
+- [Mention](https://mdbootstrap.com/docs/b5/angular/plugins/mention/)
+- [Transfer](https://mdbootstrap.com/docs/b5/angular/plugins/transfer/)
+
+---
+
+## 2.0.0 (28.02.2022)
+
+### Breaking changes:
+
+- Added support for Angular 13, this Angular version is now required,
+- Sidenav - removed support for automatic item expansion based on an active link ([in our documentation](https://mdbootstrap.com/docs/b5/angular/navigation/sidenav/) you can find information on how to achieve this effect using methods provided by Angular Router).
+
+### Dependencies:
+
+- Updated Font Awesome to v6.0.0
+
+### Fixes and improvements:
+
+- Toasts/Alerts - resolved problem with positioning when stacking and position bottom options are used,
+- Select/Datepicker - resolved problems with input, label and icons styles when `form-white` class is used on `mdb-form-control` component,
+- Select - resolved problem with selection when multiple options have the same label (in some cases component incorrectly displayed option value instead of option label in input),
+- Datatable pagination - component will now display correct information when data source is empty.
+
+### New features:
+
+- Tabs - added new `[navColumnClass]` and `[contentColumnClass]` inputs that allow to customize width of the navigation and content sections in vertical mode.
+
+---
+
+## 1.6.1 (24.01.2022)
+
+### Optimization:
+
+- Documentation migration from Wordpress to Hugo,
+- Updated code in snippets in documentation to work properly with tsconfig strict settings.
+
+### Fixes and improvements:
+
+- Input - resolved problem with label position in input with type="date",
+- Datepicker/Timepicker - improved backdrop animation (removed unnecessary delay),
+- Datepicker - resolved problem with navigation using previous/next arrows when min and max date is specified,
+- Sidenav - animation of the collapsed item in slim mode will be now in sync with animation of the menu (previously there was unnecessary delay)
+- Select - list of filtered options will be now correctly reset after the dropdown menu is closed,
+- Treeview plugin - click on checkbox will no longer change collapsed state of the node,
+- Treeview plugin - checked state of the checkox in parent node will be now in sync with the checkboxes in child nodes.
+
+---
+
+## 1.6.0 (27.12.2021)
+
+### Dependencies:
+
+- Updated Bootstrap to 5.1.3 version.
+
+### Fixes and improvements:
+
+- Charts - resolved problem with `chartjs-plugin-datalabels` configuration,
+- Carousel - component should now work correctly inside components with `OnPush` change detection strategy,
+- Table - updated `dataSource` type to resolve problem with asynchronous data and async pipe,
+- File upload plugin - resolved problem with extensions handled by the `acceptedExtensions` input,
+- Popconfirm - target element will be now optional in modal display mode,
+- Sidenav - resolved problem with `child.querySelector is not a function` error when using `ngFor` directive to render sidenav items,
+- Popover - `mdbPopover` input will now correctly accept value with `TemplateRef` type.
+
+### New:
+
+- Dropdown - added new `closeOnOutsideClick`, `closeOnItemClick`, `closeOnEsc` inputs that allow to configure menu closing actions,
+- File upload plugin - added a new `reset` method that allow to reset component state to default settings.
+
+---
+
+## 1.5.1 (22.11.2021)
+
+### Fixes and improvements
+
+- Toast/Alert - resolved problem with stacking and close animation,
+- Modal - resolved problem with closing when mouseup event is detected outside the component,
+- Sidenav - setting `hidden` input to `false` will no longer trigger component animation,
+- Sidenav - resolved problem with arrow rotation update when `[collapsed]="false"` is used,
+- Sidenav - removed focus trap in side and push modes,
+- Sidenav - default position will be now correctly set to `fixed`,
+- Input - resolved problem with border top gap recalculation when used inside a dynamically loaded component (such as tabs),
+- Overlay - resolved problem with z-index in components using overlay (e.g. modal, popconfirm, tooltip, components with dropdown menus). The components will be correctly displayed above the elements with sticky/fixed styles,
+- Charts - fixed default options and resolved problem with custom options merge.
+
+### Vector maps 1.1.0:
+
+- resolved problem with automatic updates of colors defined in `colorMap`,
+- resolved problem with tooltip display when `[hover]="false"` is used,
+- added possibility to display custom tooltips.
+
+---
+
+## 1.5.0 (02.11.2021)
+
+### New
+
+- [File upload](https://mdbootstrap.com/docs/b5/angular/plugins/file-upload)
+- [Treeview](https://mdbootstrap.com/docs/b5/angular/plugins/tree-view)
+
+---
+
+## 1.4.0 (18.10.2021)
+
+### New
+
+- [Drag and drop](https://mdbootstrap.com/docs/b5/angular/plugins/drag-and-drop)
+- [Vector maps](https://mdbootstrap.com/docs/b5/angular/plugins/vector-maps)
+
+---
+
+## 1.3.0 (04.10.2021)
+
+### New
+
+- [Wysiwyg](https://mdbootstrap.com/docs/b5/angular/plugins/wysiwyg-editor)
+
+### Fixes and improvements:
+
+- Popover/Tooltip - resolved problem with closing component when quickly moving mouse over trigger element
+
+---
+
+## 1.2.0 (20.09.2021)
+
+### New
+
+- [Calendar](https://mdbootstrap.com/docs/b5/angular/plugins/calendar)
+- [Table Editor](https://mdbootstrap.com/docs/b5/angular/plugins/table-editor)
+
+---
+
+## 1.1.0 (06.09.2021)
+
+### Fixes and improvements:
+
+- Table pagination - resolved problem with disabled state of next button,
+- Input - resolved problem with disabled state updates using Angular form control methods,
+- Table - resolved problem with default filter function,
+- Datepicker - resolved problem with disabled state of toggle button,
+- Timepicker - resolved problem with setting default value in component with 24h format,
+- Sidenav - resolved problem with `Cannot read property destroy of undefined` error,
+- Select - resolved problem with disabled state of checkboxes in options,
+- Select - resolved problem with closing modal on clear button click,
+- Dropdown - menu will be now closed correctly on item click.
+
+### New components:
+
+- [Theming](https://mdbootstrap.com/docs/b5/angular/content-styles/theme)
+
+### New features:
+
+- Table pagination - added new `rowsPerPageText` input that allow to change default 'Rows per page' text
+
+---
+
+## 1.0.0 (09.08.2021)
+
+In this version we introduced some breaking changes, please check `Breaking changes` section and update your application accordingly.
+
+### Breaking changes:
+
+- Inputs - removed `margin-bottom` styles from inputs with validation classes.
+
+### Fixes and improvements:
+
+- Select - dropdown will be correctly removed on component destroy,
+- Select - resolved problem with select-all option state on component initialization,
+- Select - resolved problem with selection of options with false values,
+- Dropdown - resolved problem with opening component on icon click,
+- Toasts/Alerts - resolved problem with z-index,
+- Popconfirm - resolved problem with `onClose` and `onConfirm` events,
+- Loading management - backdrop will be correctly removed on component destroy when fullscreen option is used,
+- Timepicker - resolved problem with setting default value using Angular form controls,
+- Datepicker - previous/next button disabled state will be now correctly updated on component initialization,
+- Datepicker/Timepicker - click on toggle button will no longer submit form,
+- Datepicker/Timepicker - resolved problems with `valueChanges` event and validation status updates,
+- Datatables - resolved problem with scroll position when component is rendered inside a tab.
+
+### New components:
+
+- [Accordion](https://mdbootstrap.com/docs/b5/angular/components/accordion/)
+- [Charts advanced](https://mdbootstrap.com/docs/b5/angular/data/charts-advanced/)
+- [Lightbox](https://mdbootstrap.com/docs/b5/angular/components/lightbox/)
+- [Smooth scroll](https://mdbootstrap.com/docs/b5/angular/methods/smooth-scroll/)
+
+---
+
+## 1.0.0-beta8 (12.07.2021)
+
+In this version we introduced some breaking changes, please check `Breaking changes` section and update your application accordingly.
+
+### Breaking changes:
+
+- Popover - `[template]` input will now accept value of type `TemplateRef` and can be used to display `ng-template` content.
+
+### Fixes and improvements:
+
+- Toast - component will no longer throw error after reopening,
+- Toast - stacked components will now slide up automatically,
+- Sidenav - resolved problem with auto expand when route has route parameters,
+- Dropdown - opened menu will be now correctly destroyed on route change,
+- Table pagination - resolved problem with data automatic updates after change in `[entryOptions]` input.
+
+### New components:
+
+- [Popconfirm](https://mdbootstrap.com/docs/b5/angular/components/popconfirm/)
+- [Lazy loading](https://mdbootstrap.com/docs/b5/angular/methods/lazy-loading/)
+- [Loading management](https://mdbootstrap.com/docs/b5/angular/methods/loading-management/)
+
+### New features:
+
+- Popover - `[template]` input will now accept value of type `TemplateRef` and can be used to display `ng-template` content.
+
+---
+
+## 1.0.0-beta7 (28.06.2021)
+
+In this version we introduced some breaking changes, please check `Breaking changes` section and update your application accordingly.
+
+### Breaking changes:
+
+- Changed `mdb-select-option` selector to `mdb-option`,
+- Removed `select-` prefix from option and option group class names,
+- Moved option and option group styles to individual file.
+
+### Fixes and improvements:
+
+- Sidenav - resolved problem with arrow icons in collapsed items,
+- Sidenav - resolved problem with z-index,
+- Select - resolved problem with dropdown toggle on arrow icon click,
+- Input - resolved problem with label position when setting value dynamically using Angular form controls.
+
+### New components:
+
+- [Autcomplete](https://mdbootstrap.com/docs/b5/angular/forms/autocomplete/)
+- [Infinite scroll](https://mdbootstrap.com/docs/b5/angular/methods/infinite-scroll/)
+- [Touch](https://mdbootstrap.com/docs/b5/angular/methods/touch/)
+
+### New features:
+
+- Select - added new `[filterPlaceholder]` input that allow to change filter input placeholder.
+
+---
+
+## 1.0.0-beta6 (14.06.2021)
+
+In this version we introduced some breaking changes, please check `Breaking changes` section and update your application accordingly. The list of all individual modules and entry points can be found here:
+
+[MDB Angular UI Kit Free Modules And Imports](https://mdbootstrap.com/docs/b5/angular/getting-started/modules-and-imports/)
+
+[MDB Angular UI Kit Pro Essential Modules And Imports](https://mdbootstrap.com/docs/b5/angular/pro/modules-and-imports/)
+
+### Breaking changes:
+
+- Updated Angular to v12 (this version is now required),
+- Components, modules and types can no longer be imported from `mdb-angular-ui-kit` entry point. Use the newly added secondary entry points, such as `mdb-angular-ui-kit/checkbox` to import individual elements,
+- Removed main `MdbModule`, import individual modules from its entry points, for example: `import { MdbCheckboxModule } from 'mdb-angular-ui-kit/checkbox'`,
+- Renamed `MdbTimePickerComponent` to `MdbTimepickerComponent`,
+- Renamed `MdbTimePickerDirective` to `MdbTimepickerDirective`,
+- Renamed `MdbTimePickerModule` to `MdbTimepickerModule`,
+- Updated Bootstrap styles to the latest stable version.
+
+### Components redesign:
+
+- Redesigned shadows for components: Cards, Dropdowns, Modal, Popover, Toasts, Buttons, Button Group, Navbar, Pagination, Pills, Sidenav,
+- Redesigned padding for components: Alerts, Cards, List Group,
+- Redesigned border radius to 0.5rem for components: Alerts, Cards, Dropdowns, Modal, List group, Popover, Toasts, Dateipcker, Timepicker.
+
+### Fixes and improvements:
+
+- Sidenav - resolved problem with height of the element with `.sidenav-menu` class,
+- Range - resolved problem with a hardcoded `Example label` text,
+- Datepicker - `dateChanged` event will be now correctly emited on date change,
+- Datepicker - resolved problem with components updates on Angular form control changes,
+- File input - updated styles to Material Design styles,
+- Pills - fixed width of pills when they're filled or justified,
+- Checkbox/Switch/Radio - fix margin styles and positioning.
+
+### New components:
+
+- [Stepper](https://mdbootstrap.com/docs/b5/angular/components/stepper/)
+- [Sticky](https://mdbootstrap.com/docs/b5/angular/components/sticky/)
+
+### New features:
+
+- Navbar - added a new `.navbar-nav-scroll` class to enable vertical scrolling when a collapsed navbar is opened,
+- Navbar - re-added `flex-grow` to the `.navbar-collapse` to restore the flexbox behaviors from v4 and prevent some content from being inadvertently squished,
+- List group - added a new `.list-group-numbered` variation to list groups that uses pseudo-elements for numbering list group items,
+- Shadows - added a new styles design: shadows soft, shadows standard, shadows strong,
+- Added color-scheme mixin.
+
+---
+
+## 1.0.0-beta5 (31.05.2021)
+
+### New components:
+
+- [Datatables](https://mdbootstrap.com/docs/b5/angular/data/datatables/)
+- [Rating](https://mdbootstrap.com/docs/b5/angular/components/rating/)
+
+---
+
+## 1.0.0-beta4 (04.05.2021)
+
+### New components:
+
+- [Charts](https://mdbootstrap.com/docs/b5/angular/data/charts/)
+
+### Bug fixes:
+
+- Animations - resolved problem with parameters in HTML template,
+- Sidenav - resolved problems with `mode` and `hidden` inputs,
+- Sidenav - resolved problem with `show` method.
+
+---
+
+## 1.0.0-beta3 (19.04.2021)
+
+### New components:
+
+- [Alerts](https://mdbootstrap.com/docs/b5/angular/components/alerts/)
+- [Carousel](https://mdbootstrap.com/docs/b5/angular/components/carousel)
+- [Toasts](https://mdbootstrap.com/docs/b5/angular/components/toasts)
+
+### Bug fixes:
+
+- Datepicker - resolved problem with keyboard navigation when using `DownArrow` key,
+- Datepicker - resolved problem with selecting dates using `Enter/Space` keys in component with date filter,
+- Datepicker - added correct aria-labels to the previous/next buttons in the days view.
+
+---
+
+## 1.0.0-beta2 (06.04.2021)
+
+### New components:
+
+- [Datepicker](https://mdbootstrap.com/docs/b5/angular/forms/datepicker/)
+- [Timepicker](https://mdbootstrap.com/docs/b5/angular/forms/timepicker)
+
+---
+
+## 1.0.0-beta1 (22.03.2021)
+
+### New components:
+
+- [Range](https://mdbootstrap.com/docs/b5/angular/forms/range/)
+- [File](https://mdbootstrap.com/docs/b5/angular/forms/file)
+- [Switch](https://mdbootstrap.com/docs/b5/angular/forms/switch/)
+- [Input group](https://mdbootstrap.com/docs/b5/angular/forms-input-group/)
+- [Pills](https://mdbootstrap.com/docs/b5/angular/navigation/pills/)
+- [Tabs](https://mdbootstrap.com/docs/b5/angular/navigation/tabs/)
+
+### Bug fixes:
+
+- Scrollspy - added `cursor: pointer` styles to scrollspy links,
+- Sidenav - resolved problem with errors when `RouterModule` is not imported,
+- Sidenav - component will be correctly updated on inputs changes,
+- Sidenav - resolved problem with scroll position,
+- Sidenav - added components and module exports to main library index.
+
+### New features:
+
+- Animations - added new animations: `slideLeft`, `slideRight`, `slideUp`, `slideDown`,
+- Sidenav - added focus trap,
+- Sidenav - escape button will now close the component.
+
+---
+
+## 1.0.0-alpha4 (08.03.2021)
+
+### New components:
+
+- [Animations](https://mdbootstrap.com/docs/b5/angular/content-styles/animations/)
+- [Ripple](https://mdbootstrap.com/docs/b5/angular/methods/ripple/)
+- [Sidenav](https://mdbootstrap.com/docs/b5/angular/navigation/sidenav/)
+- [Scrollspy](https://mdbootstrap.com/docs/b5/angular/navigation/scrollbar/)
+- [Validation](https://mdbootstrap.com/docs/b5/angular/forms/validation/)
+
+### Bug fixes:
+
+- Select - `x options selected` text will be displayed correctly when more than 5 options have been selected,
+- Select - fixed clear button focusing issue.
+
+### New features:
+
+- Select - added new `displayedLabels` input that allows to change maximum number of comma-separated options labels displayed in the multiselect input,
+- Select - added new `optionsSelectedLabel` input that allows to customize x options selected text,
+- Select - added new `filterDebounce` input that allows to add delay to the options list updates when using filter input
+
+---
+
+## 1.0.0-alpha3 (22.02.2021)
+
+### New components:
+
+- [Dropdown](https://mdbootstrap.com/docs/b5/angular/components/dropdowns/)
+- [Modal](https://mdbootstrap.com/docs/b5/angular/components/modal/)
+- [Select](https://mdbootstrap.com/docs/b5/angular/forms/select/)
+- [Scrollbar](https://mdbootstrap.com/docs/b5/angular/methods/scrollbar/)
+
+---
+
+## 1.0.0-alpha2 (25.01.2021)
+
+### New components:
+
+- [Popover](https://mdbootstrap.com/docs/b5/angular/components/popovers/)
+- [Tooltip](https://mdbootstrap.com/docs/b5/angular/components/tooltips/)
+- [Checkbox](https://mdbootstrap.com/docs/b5/angular/forms/checkbox/)
+- [Input](https://mdbootstrap.com/docs/b5/angular/forms/input-fields/)
+- [Radio](https://mdbootstrap.com/docs/b5/angular/forms/radio/)
+
+---
+
+## 1.0.0-alpha1 (11.01.2021)
+
+The initial release of MDB 5 Angular Alpha 1.
+
+### New components:
+
+- [Badges](https://mdbootstrap.com/docs/b5/angular/components/badges/)
+- [Buttons](https://mdbootstrap.com/docs/b5/angular/components/buttons/)
+- [Button Group](https://mdbootstrap.com/docs/b5/angular/components/button-group/)
+- [Cards](https://mdbootstrap.com/docs/b5/angular/components/cards/)
+- [Collapse](https://mdbootstrap.com/docs/b5/angular/components/collapse/)
+- [List Group](https://mdbootstrap.com/docs/b5/angular/components/list-group/)
+- [Progress](https://mdbootstrap.com/docs/b5/angular/components/progress/)
+- [Spinners](https://mdbootstrap.com/docs/b5/angular/components/spinners/)
+- [Tables](https://mdbootstrap.com/docs/b5/angular/data/tables/)
+- [Breadcrumb](https://mdbootstrap.com/docs/b5/angular/navigation/breadcrumb/)
+- [Footer](https://mdbootstrap.com/docs/b5/angular/navigation/footer/)
+- [Headers](https://mdbootstrap.com/docs/b5/angular/navigation/headers/)
+- [Navbar](https://mdbootstrap.com/docs/b5/angular/navigation/navbar/)
+- [Pagination](https://mdbootstrap.com/docs/b5/angular/navigation/pagination/)
+
+### New sections:
+
+- Layout
+- Utilities
+- Content & styles
diff --git a/projects/mdb-angular-ui-kit/LICENSE b/projects/mdb-angular-ui-kit/LICENSE
new file mode 100644
index 00000000..b7512314
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/LICENSE
@@ -0,0 +1,19 @@
+MIT license for MDB Free
+
+Free packages are available under the MIT License.
+
+-- Highlights
+
+● Free for personal use
+
+● Free for commercial use
+
+● No attribution required
+
+-- Copyright notice
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions.
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+The software is provided "As is", without warranty of any kind, express or implied, including but not limited To the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall The authors or copyright holders be liable for any claim, damages or other liability, whether in an action of Contract, tort or otherwise, arising from, out of or in connection with the software or the use or other Dealings in the software.
\ No newline at end of file
diff --git a/projects/mdb-angular-ui-kit/README.md b/projects/mdb-angular-ui-kit/README.md
new file mode 100644
index 00000000..2b958ead
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/README.md
@@ -0,0 +1,238 @@
+Bootstrap 5 & Angular 20 UI KIT - 700+ components, MIT license, simple installation.
+
+MDB is a collection of free Bootstrap templates, themes, design tools & resources.
+
+---
+
+# Get started
+
+### [>> Get Started in 1 minute](https://mdbootstrap.com/docs/angular/getting-started/installation/)
+Simple installation via .zip, npm or cdnjs.
+
+### [>> Install with MDBGO](https://mdbgo.com/)
+ Free Hosting, WordPress support, custom domains, SSL support, free database, frontend & backend templates, webpack starter included, git repostiory, FTP & jenkins support.
+
+### [>> Install with MDBGO + e-commerce shop integration](https://mdbgo.com/wordpress-shop/)
+One click setup! MDB GO allows you to create a WordPress page with a single click.
+Regardless whether you want to create a Travel Blog or an e-commerce shop to sell your product you can easily do that. You can even combine both into single page.
+
+
+## About Material Design for Bootstrap 5 & Angular 20
+
+
Created by
+
+
+
+
+
+Trusted by
2 000 000+ developers & designers. Used by companies & institutions like
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 700+ UI components
+ Super simple, 1 minute installation
+ Detailed docs & practical examples
+ Lots of tutorials
+ Huge and active community
+ MIT license - free for personal & commercial use
+
+
+
+
+
+
+___
+
+# Bootstrap 5 tutorial
+
+**[>> Learn more about Bootstrap 5](https://mdbootstrap.com/docs/standard/bootstrap-5/)**
+
+
+**[>> Bootstrap 5 Tutorial](https://mdbootstrap.com/docs/standard/bootstrap-5-tutorial/)**
+
+**[>> Subscribe to our YouTube channel with dozens of Bootstrap tutorials](https://www.youtube.com/c/Mdbootstrap?sub_confirmation=1)**
+
+
+
+---
+
+# Demo
+
+#### Simplicity and ease of use are key features of MDB 5 Angular UI Kit. You need only one minute to install and run it.
+
+### Buttons
+
+
Use MDB custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### Spinners
+
+
Indicate the loading state of a component or page with MDB spinners, built entirely with HTML, CSS, and no JavaScript.
+
+
+
+
+
+
+
+
+
+
+
+
+
+### Cards
+
+
A card is a flexible and extensible content container. It includes options for headers and footers, a wide variety of content, contextual background colors, and powerful display options.
+
+
+
+
+
+
+
+### Footer
+
+
A footer is an additional navigation component. It can hold links, buttons, company info, copyrights, forms, and many other elements.
+
+
+
+
+
+
+
+### Hover
+
+
MDB hover effect appears when the user positions the computer cursor over an element without activating it. Hover effects make a website more interactive.
+
+
+
+
+
+
+
+
+
+
+
+
+
+### Notes
+
+
Notes are small components very helpful in inserting an additional piece of information.
+
+
+
+
+
+
+
+
+
+___
+
+# Extended documentation
+
+
diff --git a/projects/mdb-angular-ui-kit/accordion/accordion-item-content.directive.ts b/projects/mdb-angular-ui-kit/accordion/accordion-item-content.directive.ts
new file mode 100644
index 00000000..9eac351b
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/accordion/accordion-item-content.directive.ts
@@ -0,0 +1,15 @@
+import { Directive, InjectionToken, TemplateRef } from '@angular/core';
+
+export const MDB_ACCORDION_ITEM_BODY = new InjectionToken
(
+ 'MdbAccordionItemBodyDirective'
+);
+
+@Directive({
+ // eslint-disable-next-line @angular-eslint/directive-selector
+ selector: '[mdbAccordionItemBody]',
+ providers: [{ provide: MDB_ACCORDION_ITEM_BODY, useExisting: MdbAccordionItemBodyDirective }],
+ standalone: false,
+})
+export class MdbAccordionItemBodyDirective {
+ constructor(public template: TemplateRef) {}
+}
diff --git a/projects/mdb-angular-ui-kit/accordion/accordion-item-header.directive.ts b/projects/mdb-angular-ui-kit/accordion/accordion-item-header.directive.ts
new file mode 100644
index 00000000..647f341c
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/accordion/accordion-item-header.directive.ts
@@ -0,0 +1,15 @@
+import { Directive, InjectionToken, TemplateRef } from '@angular/core';
+
+export const MDB_ACCORDION_ITEM_HEADER = new InjectionToken(
+ 'MdbAccordionItemHeaderDirective'
+);
+
+@Directive({
+ // eslint-disable-next-line @angular-eslint/directive-selector
+ selector: '[mdbAccordionItemHeader]',
+ providers: [{ provide: MDB_ACCORDION_ITEM_HEADER, useExisting: MdbAccordionItemHeaderDirective }],
+ standalone: false,
+})
+export class MdbAccordionItemHeaderDirective {
+ constructor(public template: TemplateRef) {}
+}
diff --git a/projects/mdb-angular-ui-kit/accordion/accordion-item.component.html b/projects/mdb-angular-ui-kit/accordion/accordion-item.component.html
new file mode 100644
index 00000000..9c2a2856
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/accordion/accordion-item.component.html
@@ -0,0 +1,27 @@
+
+
diff --git a/projects/mdb-angular-ui-kit/accordion/accordion-item.component.ts b/projects/mdb-angular-ui-kit/accordion/accordion-item.component.ts
new file mode 100644
index 00000000..c5777d0c
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/accordion/accordion-item.component.ts
@@ -0,0 +1,135 @@
+import {
+ ChangeDetectionStrategy,
+ ChangeDetectorRef,
+ Component,
+ ContentChild,
+ EventEmitter,
+ HostBinding,
+ Input,
+ OnInit,
+ Output,
+ TemplateRef,
+ ViewChild,
+} from '@angular/core';
+import { MdbCollapseDirective } from 'mdb-angular-ui-kit/collapse';
+import { Subject } from 'rxjs';
+import { MDB_ACCORDION_ITEM_BODY } from './accordion-item-content.directive';
+import { MDB_ACCORDION_ITEM_HEADER } from './accordion-item-header.directive';
+import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';
+
+let uniqueHeaderId = 0;
+let uniqueId = 0;
+
+@Component({
+ selector: 'mdb-accordion-item',
+ templateUrl: './accordion-item.component.html',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ standalone: false,
+})
+export class MdbAccordionItemComponent implements OnInit {
+ @ContentChild(MDB_ACCORDION_ITEM_HEADER, { read: TemplateRef, static: true })
+ _headerTemplate: TemplateRef;
+
+ @ContentChild(MDB_ACCORDION_ITEM_BODY, { read: TemplateRef, static: true })
+ _bodyTemplate: TemplateRef;
+
+ @ViewChild(MdbCollapseDirective, { static: true }) collapse: MdbCollapseDirective;
+
+ @Input()
+ get disabled(): boolean {
+ return this._disabled;
+ }
+ set disabled(value: boolean) {
+ this._disabled = coerceBooleanProperty(value);
+ }
+ private _disabled = false;
+
+ @Input() header: string;
+ @Input()
+ set collapsed(value: boolean) {
+ if (!this._isInitialized) {
+ if (!value) {
+ this._shouldOpenOnInit = true;
+ }
+ return;
+ }
+
+ if (value) {
+ this.hide();
+ } else {
+ this.show();
+ }
+ }
+
+ @Input() id = `mdb-accordion-item-${uniqueId++}`;
+
+ _headerId = `mdb-accordion-item-header-${uniqueHeaderId++}`;
+
+ private _isInitialized = false;
+ private _shouldOpenOnInit = false;
+
+ @Output() itemShow: EventEmitter = new EventEmitter();
+ @Output() itemShown: EventEmitter = new EventEmitter();
+ @Output() itemHide: EventEmitter = new EventEmitter();
+ @Output() itemHidden: EventEmitter = new EventEmitter();
+
+ @HostBinding('class.accordion-item') accordionItem = true;
+ @HostBinding('class.d-block') accordionItemDisplayBlock = true;
+
+ ngOnInit(): void {
+ this._isInitialized = true;
+
+ if (this._shouldOpenOnInit) {
+ this.show();
+ }
+ }
+
+ show$ = new Subject();
+
+ _collapsed = true;
+ _addCollapsedClass = true;
+
+ constructor(private _cdRef: ChangeDetectorRef) {}
+
+ toggle(): void {
+ if (this.disabled) {
+ return;
+ }
+
+ this.collapse.toggle();
+ }
+
+ show(): void {
+ this.collapse.show();
+ this._cdRef.markForCheck();
+ }
+
+ hide(): void {
+ this.collapse.hide();
+ this._cdRef.markForCheck();
+ }
+
+ onShow(): void {
+ this._addCollapsedClass = false;
+ this.itemShow.emit(this);
+
+ this.show$.next(this);
+ }
+
+ onHide(): void {
+ this._addCollapsedClass = true;
+ this.itemHide.emit(this);
+ }
+
+ onShown(): void {
+ this._collapsed = false;
+ this.itemShown.emit(this);
+ }
+
+ onHidden(): void {
+ this._collapsed = true;
+ this.itemHidden.emit(this);
+ }
+
+ static ngAcceptInputType_disabled: BooleanInput;
+}
diff --git a/projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-body.component.html b/projects/mdb-angular-ui-kit/accordion/accordion.component.html
similarity index 100%
rename from projects/angular-bootstrap-md/src/lib/free/cards/mdb-card-body.component.html
rename to projects/mdb-angular-ui-kit/accordion/accordion.component.html
diff --git a/projects/mdb-angular-ui-kit/accordion/accordion.component.ts b/projects/mdb-angular-ui-kit/accordion/accordion.component.ts
new file mode 100644
index 00000000..6d462f0a
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/accordion/accordion.component.ts
@@ -0,0 +1,91 @@
+import {
+ AfterContentInit,
+ ChangeDetectionStrategy,
+ Component,
+ ContentChildren,
+ HostBinding,
+ Input,
+ QueryList,
+} from '@angular/core';
+import { startWith, switchMap } from 'rxjs/operators';
+import { merge } from 'rxjs';
+import { MdbAccordionItemComponent } from './accordion-item.component';
+import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';
+
+@Component({
+ selector: 'mdb-accordion',
+ templateUrl: './accordion.component.html',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ standalone: false,
+})
+export class MdbAccordionComponent implements AfterContentInit {
+ @ContentChildren(MdbAccordionItemComponent) items: QueryList;
+
+ @Input()
+ get borderless(): boolean {
+ return this._borderless;
+ }
+ set borderless(value: boolean) {
+ this._borderless = coerceBooleanProperty(value);
+ }
+ private _borderless = false;
+
+ @Input()
+ get flush(): boolean {
+ return this._flush;
+ }
+ set flush(value: boolean) {
+ this._flush = coerceBooleanProperty(value);
+ }
+ private _flush = false;
+
+ @Input()
+ get multiple(): boolean {
+ return this._multiple;
+ }
+ set multiple(value: boolean) {
+ this._multiple = coerceBooleanProperty(value);
+ }
+ private _multiple = false;
+
+ @HostBinding('class.accordion') accordion = true;
+
+ @HostBinding('class.accordion-borderless')
+ get addBorderlessClass(): boolean {
+ return this.borderless;
+ }
+
+ @HostBinding('class.accordion-flush')
+ get addFlushClass(): boolean {
+ return this.flush;
+ }
+
+ constructor() {}
+
+ ngAfterContentInit(): void {
+ this.items.changes
+ .pipe(
+ startWith(this.items),
+ switchMap((items: QueryList) => {
+ return merge(...items.map((item: MdbAccordionItemComponent) => item.show$));
+ })
+ )
+ .subscribe((clickedItem: MdbAccordionItemComponent) =>
+ this._handleMultipleItems(clickedItem)
+ );
+ }
+
+ private _handleMultipleItems(clickedItem: MdbAccordionItemComponent): void {
+ if (!this.multiple) {
+ const itemsToClose = this.items.filter(
+ (item: MdbAccordionItemComponent) => item !== clickedItem && !item._collapsed
+ );
+
+ itemsToClose.forEach((item: MdbAccordionItemComponent) => item.hide());
+ }
+ }
+
+ static ngAcceptInputType_borderless: BooleanInput;
+ static ngAcceptInputType_flush: BooleanInput;
+ static ngAcceptInputType_multiple: BooleanInput;
+}
diff --git a/projects/mdb-angular-ui-kit/accordion/accordion.module.ts b/projects/mdb-angular-ui-kit/accordion/accordion.module.ts
new file mode 100644
index 00000000..cf8a59df
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/accordion/accordion.module.ts
@@ -0,0 +1,24 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { MdbAccordionComponent } from './accordion.component';
+import { MdbAccordionItemComponent } from './accordion-item.component';
+import { MdbAccordionItemHeaderDirective } from './accordion-item-header.directive';
+import { MdbAccordionItemBodyDirective } from './accordion-item-content.directive';
+import { MdbCollapseModule } from 'mdb-angular-ui-kit/collapse';
+
+@NgModule({
+ declarations: [
+ MdbAccordionComponent,
+ MdbAccordionItemComponent,
+ MdbAccordionItemHeaderDirective,
+ MdbAccordionItemBodyDirective,
+ ],
+ imports: [CommonModule, MdbCollapseModule],
+ exports: [
+ MdbAccordionComponent,
+ MdbAccordionItemComponent,
+ MdbAccordionItemHeaderDirective,
+ MdbAccordionItemBodyDirective,
+ ],
+})
+export class MdbAccordionModule {}
diff --git a/projects/mdb-angular-ui-kit/accordion/accordion.spec.ts b/projects/mdb-angular-ui-kit/accordion/accordion.spec.ts
new file mode 100644
index 00000000..5248eb2e
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/accordion/accordion.spec.ts
@@ -0,0 +1,241 @@
+import { Component, QueryList, ViewChildren } from '@angular/core';
+import { ComponentFixture, fakeAsync, flush, TestBed, tick } from '@angular/core/testing';
+import { MdbAccordionItemComponent } from './accordion-item.component';
+import { MdbAccordionModule } from './accordion.module';
+
+const ANIMATION_TIME = 350; // animation time from collapse directive
+
+const template = `
+
+
+ Accordion Item #1
+
+ This is the first item's accordion body. It is hidden by default,
+ until the collapse plugin adds the appropriate classes that we use to style each
+ element. These classes control the overall appearance, as well as the showing and
+ hiding via CSS transitions. You can modify any of this with custom CSS or overriding
+ our default variables. It's also worth noting that just about any HTML can go within
+ the .accordion-body , though the transition does limit overflow.
+
+
+
+
+ Accordion Item #2
+
+ This is the second item's accordion body. It is hidden by default,
+ until the collapse plugin adds the appropriate classes that we use to style each
+ element. These classes control the overall appearance, as well as the showing and
+ hiding via CSS transitions. You can modify any of this with custom CSS or overriding
+ our default variables. It's also worth noting that just about any HTML can go within
+ the .accordion-body , though the transition does limit overflow.
+
+
+
+
+ Accordion Item #3
+
+ This is the third item's accordion body. It is hidden by default,
+ until the collapse plugin adds the appropriate classes that we use to style each
+ element. These classes control the overall appearance, as well as the showing and
+ hiding via CSS transitions. You can modify any of this with custom CSS or overriding
+ our default variables. It's also worth noting that just about any HTML can go within
+ the .accordion-body , though the transition does limit overflow.
+
+
+
+`;
+
+@Component({
+ selector: 'mdb-accordion-test',
+ template,
+ standalone: false,
+})
+class TestAccordionComponent {
+ @ViewChildren(MdbAccordionItemComponent) _accordionItems: QueryList;
+ multiple = false;
+ flush = false;
+ borderless = false;
+ disabled = false;
+
+ get accordionItems(): MdbAccordionItemComponent[] {
+ return this._accordionItems.toArray();
+ }
+}
+
+describe('MDB Accordion', () => {
+ let fixture: ComponentFixture;
+ let element: any;
+ let component: any;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ declarations: [TestAccordionComponent],
+ imports: [MdbAccordionModule],
+ teardown: { destroyAfterEach: false },
+ });
+ fixture = TestBed.createComponent(TestAccordionComponent);
+ fixture.detectChanges();
+ component = fixture.componentInstance;
+ element = fixture.nativeElement;
+ });
+
+ it('should toggle item on click', fakeAsync(() => {
+ const item = document.querySelector('.accordion-item') as HTMLElement;
+ const button = item.querySelector('.accordion-button') as HTMLElement;
+
+ button.click();
+ fixture.detectChanges();
+ flush();
+
+ const itemCollapse = item.querySelector('.collapse');
+
+ expect(button.classList).not.toContain('collapsed');
+ expect(itemCollapse.classList).toContain('show');
+
+ button.click();
+ fixture.detectChanges();
+ flush();
+
+ expect(button.classList).toContain('collapsed');
+ expect(itemCollapse.classList).not.toContain('show');
+ }));
+
+ it('should toggle item when toggle method is used', fakeAsync(() => {
+ const item = document.querySelector('.accordion-item') as HTMLElement;
+ const button = item.querySelector('.accordion-button') as HTMLElement;
+ component.accordionItems[0].toggle();
+
+ fixture.detectChanges();
+ flush();
+
+ const itemCollapse = item.querySelector('.collapse');
+
+ expect(button.classList).not.toContain('collapsed');
+ expect(itemCollapse.classList).toContain('show');
+
+ component.accordionItems[0].toggle();
+ fixture.detectChanges();
+ flush();
+
+ expect(button.classList).toContain('collapsed');
+ expect(itemCollapse.classList).not.toContain('show');
+ }));
+
+ it('should allow only one item to be opened if multiple is set to false', fakeAsync(() => {
+ const buttons = document.querySelectorAll('.accordion-button');
+ const contents = document.querySelectorAll('.collapse');
+
+ component.accordionItems[0].toggle();
+ fixture.detectChanges();
+ flush();
+
+ expect(buttons[0].classList).not.toContain('collapsed');
+ expect(contents[0].classList).toContain('show');
+
+ component.accordionItems[1].toggle();
+ fixture.detectChanges();
+ flush();
+
+ expect(buttons[0].classList).toContain('collapsed');
+ expect(contents[0].classList).not.toContain('show');
+ expect(buttons[1].classList).not.toContain('collapsed');
+ expect(contents[1].classList).toContain('show');
+ }));
+
+ it('should allow multiple items to be opened if multiple is set to true', fakeAsync(() => {
+ component.multiple = true;
+ fixture.detectChanges();
+
+ const buttons = document.querySelectorAll('.accordion-button');
+ const contents = document.querySelectorAll('.collapse');
+
+ component.accordionItems[0].toggle();
+ fixture.detectChanges();
+ flush();
+
+ expect(buttons[0].classList).not.toContain('collapsed');
+ expect(contents[0].classList).toContain('show');
+
+ component.accordionItems[1].toggle();
+ fixture.detectChanges();
+ flush();
+
+ expect(buttons[0].classList).not.toContain('collapsed');
+ expect(contents[0].classList).toContain('show');
+ expect(buttons[1].classList).not.toContain('collapsed');
+ expect(contents[1].classList).toContain('show');
+ }));
+
+ it('should add accordion-flush class if flush is set to true', () => {
+ component.flush = true;
+ fixture.detectChanges();
+
+ const accordion = document.querySelector('.accordion');
+
+ expect(accordion.classList).toContain('accordion-flush');
+ });
+
+ it('should add accordion-borderless class if borderless is set to true', () => {
+ const accordion = document.querySelector('.accordion');
+
+ expect(accordion.classList).not.toContain('accordion-borderless');
+
+ component.borderless = true;
+ fixture.detectChanges();
+
+ expect(accordion.classList).toContain('accordion-borderless');
+ });
+
+ it('should emit correct events on item collapse and expand', fakeAsync(() => {
+ const item = component.accordionItems[0];
+
+ const showSpy = jest.spyOn(item.itemShow, 'emit');
+ const shownSpy = jest.spyOn(item.itemShown, 'emit');
+ const hideSpy = jest.spyOn(item.itemHide, 'emit');
+ const hiddenSpy = jest.spyOn(item.itemHidden, 'emit');
+
+ item.show();
+ fixture.detectChanges();
+
+ expect(showSpy).toHaveBeenCalled();
+ expect(shownSpy).not.toHaveBeenCalled();
+
+ tick(ANIMATION_TIME);
+ flush();
+ fixture.detectChanges();
+
+ expect(shownSpy).toHaveBeenCalled();
+
+ item.hide();
+ fixture.detectChanges();
+
+ expect(hideSpy).toHaveBeenCalled();
+ expect(hiddenSpy).not.toHaveBeenCalled();
+
+ tick(ANIMATION_TIME);
+ flush();
+ fixture.detectChanges();
+
+ expect(hiddenSpy).toHaveBeenCalled();
+ }));
+
+ it('should not toggle item on click when disabled input is set to true', fakeAsync(() => {
+ component.disabled = true;
+ fixture.detectChanges();
+
+ const item = document.querySelector('.accordion-item') as HTMLElement;
+ const button = item.querySelector('.accordion-button') as HTMLButtonElement;
+ const itemCollapse = item.querySelector('.collapse') as HTMLDivElement;
+
+ expect(button.hasAttribute('disabled')).toBe(true);
+ expect(button.classList).toContain('collapsed');
+ expect(itemCollapse.classList).not.toContain('show');
+
+ button.click();
+ fixture.detectChanges();
+ flush();
+
+ expect(button.classList).toContain('collapsed');
+ expect(itemCollapse.classList).not.toContain('show');
+ }));
+});
diff --git a/projects/mdb-angular-ui-kit/accordion/index.ts b/projects/mdb-angular-ui-kit/accordion/index.ts
new file mode 100644
index 00000000..4aaf8f92
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/accordion/index.ts
@@ -0,0 +1 @@
+export * from './public_api';
diff --git a/projects/mdb-angular-ui-kit/accordion/ng-package.json b/projects/mdb-angular-ui-kit/accordion/ng-package.json
new file mode 100644
index 00000000..ecef3ed8
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/accordion/ng-package.json
@@ -0,0 +1,6 @@
+{
+ "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
+ "lib": {
+ "entryFile": "index.ts"
+ }
+}
\ No newline at end of file
diff --git a/projects/mdb-angular-ui-kit/accordion/public_api.ts b/projects/mdb-angular-ui-kit/accordion/public_api.ts
new file mode 100644
index 00000000..4a8239b3
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/accordion/public_api.ts
@@ -0,0 +1,5 @@
+export { MdbAccordionComponent } from './accordion.component';
+export { MdbAccordionItemComponent } from './accordion-item.component';
+export { MdbAccordionItemHeaderDirective } from './accordion-item-header.directive';
+export { MdbAccordionItemBodyDirective } from './accordion-item-content.directive';
+export { MdbAccordionModule } from './accordion.module';
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_accordion.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_accordion.scss
new file mode 100644
index 00000000..75588a5a
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_accordion.scss
@@ -0,0 +1,158 @@
+//
+// Base styles
+//
+
+.accordion {
+ // scss-docs-start accordion-css-vars
+ --#{$prefix}accordion-color: #{$accordion-color};
+ --#{$prefix}accordion-bg: #{$accordion-bg};
+ --#{$prefix}accordion-transition: #{$accordion-transition};
+ --#{$prefix}accordion-border-color: #{$accordion-border-color};
+ --#{$prefix}accordion-border-width: #{$accordion-border-width};
+ --#{$prefix}accordion-border-radius: #{$accordion-border-radius};
+ --#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius};
+ --#{$prefix}accordion-btn-padding-x: #{$accordion-button-padding-x};
+ --#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y};
+ --#{$prefix}accordion-btn-color: #{$accordion-button-color};
+ --#{$prefix}accordion-btn-bg: #{$accordion-button-bg};
+ --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon)};
+ --#{$prefix}accordion-btn-icon-width: #{$accordion-icon-width};
+ --#{$prefix}accordion-btn-icon-transform: #{$accordion-icon-transform};
+ --#{$prefix}accordion-btn-icon-transition: #{$accordion-icon-transition};
+ --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon)};
+ --#{$prefix}accordion-btn-focus-border-color: #{$accordion-button-focus-border-color};
+ --#{$prefix}accordion-btn-focus-box-shadow: #{$accordion-button-focus-box-shadow};
+ --#{$prefix}accordion-body-padding-x: #{$accordion-body-padding-x};
+ --#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y};
+ --#{$prefix}accordion-active-color: #{$accordion-button-active-color};
+ --#{$prefix}accordion-active-bg: #{$accordion-button-active-bg};
+ // scss-docs-end accordion-css-vars
+}
+
+.accordion-button {
+ position: relative;
+ display: flex;
+ align-items: center;
+ width: 100%;
+ padding: var(--#{$prefix}accordion-btn-padding-y) var(--#{$prefix}accordion-btn-padding-x);
+ @include font-size($font-size-base);
+ color: var(--#{$prefix}accordion-btn-color);
+ text-align: left; // Reset button style
+ background-color: var(--#{$prefix}accordion-btn-bg);
+ border: 0;
+ @include border-radius(0);
+ overflow-anchor: none;
+ @include transition(var(--#{$prefix}accordion-transition));
+
+ &:not(.collapsed) {
+ color: var(--#{$prefix}accordion-active-color);
+ background-color: var(--#{$prefix}accordion-active-bg);
+ box-shadow: inset 0 calc(-1 * var(--#{$prefix}accordion-border-width)) 0 var(--#{$prefix}accordion-border-color); // stylelint-disable-line function-disallowed-list
+
+ &::after {
+ background-image: var(--#{$prefix}accordion-btn-active-icon);
+ transform: var(--#{$prefix}accordion-btn-icon-transform);
+ }
+ }
+
+ // Accordion icon
+ &::after {
+ flex-shrink: 0;
+ width: var(--#{$prefix}accordion-btn-icon-width);
+ height: var(--#{$prefix}accordion-btn-icon-width);
+ margin-left: auto;
+ content: "";
+ background-image: var(--#{$prefix}accordion-btn-icon);
+ background-repeat: no-repeat;
+ background-size: var(--#{$prefix}accordion-btn-icon-width);
+ @include transition(var(--#{$prefix}accordion-btn-icon-transition));
+ }
+
+ &:hover {
+ z-index: 2;
+ }
+
+ &:focus {
+ z-index: 3;
+ border-color: var(--#{$prefix}accordion-btn-focus-border-color);
+ outline: 0;
+ box-shadow: var(--#{$prefix}accordion-btn-focus-box-shadow);
+ }
+}
+
+.accordion-header {
+ margin-bottom: 0;
+}
+
+.accordion-item {
+ color: var(--#{$prefix}accordion-color);
+ background-color: var(--#{$prefix}accordion-bg);
+ border: var(--#{$prefix}accordion-border-width) solid var(--#{$prefix}accordion-border-color);
+
+ &:first-of-type {
+ @include border-top-radius(var(--#{$prefix}accordion-border-radius));
+
+ .accordion-button {
+ @include border-top-radius(var(--#{$prefix}accordion-inner-border-radius));
+ }
+ }
+
+ &:not(:first-of-type) {
+ border-top: 0;
+ }
+
+ // Only set a border-radius on the last item if the accordion is collapsed
+ &:last-of-type {
+ @include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
+
+ .accordion-button {
+ &.collapsed {
+ @include border-bottom-radius(var(--#{$prefix}accordion-inner-border-radius));
+ }
+ }
+
+ .accordion-collapse {
+ @include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
+ }
+ }
+}
+
+.accordion-body {
+ padding: var(--#{$prefix}accordion-body-padding-y) var(--#{$prefix}accordion-body-padding-x);
+}
+
+
+// Flush accordion items
+//
+// Remove borders and border-radius to keep accordion items edge-to-edge.
+
+.accordion-flush {
+ .accordion-collapse {
+ border-width: 0;
+ }
+
+ .accordion-item {
+ border-right: 0;
+ border-left: 0;
+ @include border-radius(0);
+
+ &:first-child { border-top: 0; }
+ &:last-child { border-bottom: 0; }
+
+ .accordion-button {
+ &,
+ &.collapsed {
+ @include border-radius(0);
+ }
+ }
+ }
+}
+
+@if $enable-dark-mode {
+ @include color-mode(dark) {
+ .accordion-button::after {
+ --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon-dark)};
+ --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon-dark)};
+ }
+ }
+}
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_alert.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_alert.scss
new file mode 100644
index 00000000..b8cff9b7
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_alert.scss
@@ -0,0 +1,68 @@
+//
+// Base styles
+//
+
+.alert {
+ // scss-docs-start alert-css-vars
+ --#{$prefix}alert-bg: transparent;
+ --#{$prefix}alert-padding-x: #{$alert-padding-x};
+ --#{$prefix}alert-padding-y: #{$alert-padding-y};
+ --#{$prefix}alert-margin-bottom: #{$alert-margin-bottom};
+ --#{$prefix}alert-color: inherit;
+ --#{$prefix}alert-border-color: transparent;
+ --#{$prefix}alert-border: #{$alert-border-width} solid var(--#{$prefix}alert-border-color);
+ --#{$prefix}alert-border-radius: #{$alert-border-radius};
+ --#{$prefix}alert-link-color: inherit;
+ // scss-docs-end alert-css-vars
+
+ position: relative;
+ padding: var(--#{$prefix}alert-padding-y) var(--#{$prefix}alert-padding-x);
+ margin-bottom: var(--#{$prefix}alert-margin-bottom);
+ color: var(--#{$prefix}alert-color);
+ background-color: var(--#{$prefix}alert-bg);
+ border: var(--#{$prefix}alert-border);
+ @include border-radius(var(--#{$prefix}alert-border-radius));
+}
+
+// Headings for larger alerts
+.alert-heading {
+ // Specified to prevent conflicts of changing $headings-color
+ color: inherit;
+}
+
+// Provide class for links that match alerts
+.alert-link {
+ font-weight: $alert-link-font-weight;
+ color: var(--#{$prefix}alert-link-color);
+}
+
+
+// Dismissible alerts
+//
+// Expand the right padding and account for the close button's positioning.
+
+.alert-dismissible {
+ padding-right: $alert-dismissible-padding-r;
+
+ // Adjust close link position
+ .btn-close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: $stretched-link-z-index + 1;
+ padding: $alert-padding-y * 1.25 $alert-padding-x;
+ }
+}
+
+
+// scss-docs-start alert-modifiers
+// Generate contextual modifier classes for colorizing the alert
+@each $state in map-keys($theme-colors) {
+ .alert-#{$state} {
+ --#{$prefix}alert-color: var(--#{$prefix}#{$state}-text-emphasis);
+ --#{$prefix}alert-bg: var(--#{$prefix}#{$state}-bg-subtle);
+ --#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle);
+ --#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text-emphasis);
+ }
+}
+// scss-docs-end alert-modifiers
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_badge.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_badge.scss
new file mode 100644
index 00000000..cc3d2695
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_badge.scss
@@ -0,0 +1,38 @@
+// Base class
+//
+// Requires one of the contextual, color modifier classes for `color` and
+// `background-color`.
+
+.badge {
+ // scss-docs-start badge-css-vars
+ --#{$prefix}badge-padding-x: #{$badge-padding-x};
+ --#{$prefix}badge-padding-y: #{$badge-padding-y};
+ @include rfs($badge-font-size, --#{$prefix}badge-font-size);
+ --#{$prefix}badge-font-weight: #{$badge-font-weight};
+ --#{$prefix}badge-color: #{$badge-color};
+ --#{$prefix}badge-border-radius: #{$badge-border-radius};
+ // scss-docs-end badge-css-vars
+
+ display: inline-block;
+ padding: var(--#{$prefix}badge-padding-y) var(--#{$prefix}badge-padding-x);
+ @include font-size(var(--#{$prefix}badge-font-size));
+ font-weight: var(--#{$prefix}badge-font-weight);
+ line-height: 1;
+ color: var(--#{$prefix}badge-color);
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ @include border-radius(var(--#{$prefix}badge-border-radius));
+ @include gradient-bg();
+
+ // Empty badges collapse automatically
+ &:empty {
+ display: none;
+ }
+}
+
+// Quick fix for badges in buttons
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_breadcrumb.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_breadcrumb.scss
new file mode 100644
index 00000000..b8252ff2
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_breadcrumb.scss
@@ -0,0 +1,40 @@
+.breadcrumb {
+ // scss-docs-start breadcrumb-css-vars
+ --#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x};
+ --#{$prefix}breadcrumb-padding-y: #{$breadcrumb-padding-y};
+ --#{$prefix}breadcrumb-margin-bottom: #{$breadcrumb-margin-bottom};
+ @include rfs($breadcrumb-font-size, --#{$prefix}breadcrumb-font-size);
+ --#{$prefix}breadcrumb-bg: #{$breadcrumb-bg};
+ --#{$prefix}breadcrumb-border-radius: #{$breadcrumb-border-radius};
+ --#{$prefix}breadcrumb-divider-color: #{$breadcrumb-divider-color};
+ --#{$prefix}breadcrumb-item-padding-x: #{$breadcrumb-item-padding-x};
+ --#{$prefix}breadcrumb-item-active-color: #{$breadcrumb-active-color};
+ // scss-docs-end breadcrumb-css-vars
+
+ display: flex;
+ flex-wrap: wrap;
+ padding: var(--#{$prefix}breadcrumb-padding-y) var(--#{$prefix}breadcrumb-padding-x);
+ margin-bottom: var(--#{$prefix}breadcrumb-margin-bottom);
+ @include font-size(var(--#{$prefix}breadcrumb-font-size));
+ list-style: none;
+ background-color: var(--#{$prefix}breadcrumb-bg);
+ @include border-radius(var(--#{$prefix}breadcrumb-border-radius));
+}
+
+.breadcrumb-item {
+ // The separator between breadcrumbs (by default, a forward-slash: "/")
+ + .breadcrumb-item {
+ padding-left: var(--#{$prefix}breadcrumb-item-padding-x);
+
+ &::before {
+ float: left; // Suppress inline spacings and underlining of the separator
+ padding-right: var(--#{$prefix}breadcrumb-item-padding-x);
+ color: var(--#{$prefix}breadcrumb-divider-color);
+ content: var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"};
+ }
+ }
+
+ &.active {
+ color: var(--#{$prefix}breadcrumb-item-active-color);
+ }
+}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_button-group.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_button-group.scss
similarity index 51%
rename from projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_button-group.scss
rename to projects/mdb-angular-ui-kit/assets/scss/bootstrap/_button-group.scss
index 9951e927..55ae3f65 100644
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_button-group.scss
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_button-group.scss
@@ -1,5 +1,3 @@
-// stylelint-disable selector-no-qualifying-type
-
// Make the div behave like a button
.btn-group,
.btn-group-vertical {
@@ -10,17 +8,17 @@
> .btn {
position: relative;
flex: 1 1 auto;
+ }
- // Bring the hover, focused, and "active" buttons to the front to overlay
- // the borders properly
- @include hover {
- z-index: 1;
- }
- &:focus,
- &:active,
- &.active {
- z-index: 1;
- }
+ // Bring the hover, focused, and "active" buttons to the front to overlay
+ // the borders properly
+ > .btn-check:checked + .btn,
+ > .btn-check:focus + .btn,
+ > .btn:hover,
+ > .btn:focus,
+ > .btn:active,
+ > .btn.active {
+ z-index: 1;
}
}
@@ -36,21 +34,29 @@
}
.btn-group {
+ @include border-radius($btn-border-radius);
+
// Prevent double borders when buttons are next to each other
- > .btn:not(:first-child),
+ > :not(.btn-check:first-child) + .btn,
> .btn-group:not(:first-child) {
- margin-left: -$btn-border-width;
+ margin-left: calc(#{$btn-border-width} * -1); // stylelint-disable-line function-disallowed-list
}
// Reset rounded corners
> .btn:not(:last-child):not(.dropdown-toggle),
+ > .btn.dropdown-toggle-split:first-child,
> .btn-group:not(:last-child) > .btn {
- @include border-right-radius(0);
+ @include border-end-radius(0);
}
- > .btn:not(:first-child),
+ // The left radius should be 0 if the button is:
+ // - the "third or more" child
+ // - the second child and the previous element isn't `.btn-check` (making it the first child visually)
+ // - part of a btn-group which isn't the first child
+ > .btn:nth-child(n + 3),
+ > :not(.btn-check) + .btn,
> .btn-group:not(:first-child) > .btn {
- @include border-left-radius(0);
+ @include border-start-radius(0);
}
}
@@ -58,42 +64,40 @@
//
// Remix the default button sizing classes into new ones for easier manipulation.
-.btn-group-sm > .btn {
- @extend .btn-sm;
-}
-.btn-group-lg > .btn {
- @extend .btn-lg;
-}
+.btn-group-sm > .btn { @extend .btn-sm; }
+.btn-group-lg > .btn { @extend .btn-lg; }
+
//
// Split button dropdowns
//
.dropdown-toggle-split {
- padding-right: $btn-padding-x * 0.75;
- padding-left: $btn-padding-x * 0.75;
+ padding-right: $btn-padding-x * .75;
+ padding-left: $btn-padding-x * .75;
&::after,
.dropup &::after,
- .dropright &::after {
+ .dropend &::after {
margin-left: 0;
}
- .dropleft &::before {
+ .dropstart &::before {
margin-right: 0;
}
}
.btn-sm + .dropdown-toggle-split {
- padding-right: $btn-padding-x-sm * 0.75;
- padding-left: $btn-padding-x-sm * 0.75;
+ padding-right: $btn-padding-x-sm * .75;
+ padding-left: $btn-padding-x-sm * .75;
}
.btn-lg + .dropdown-toggle-split {
- padding-right: $btn-padding-x-lg * 0.75;
- padding-left: $btn-padding-x-lg * 0.75;
+ padding-right: $btn-padding-x-lg * .75;
+ padding-left: $btn-padding-x-lg * .75;
}
+
// The clickable button for toggling the menu
// Set the same inset shadow as the :active state
.btn-group.show .dropdown-toggle {
@@ -105,6 +109,7 @@
}
}
+
//
// Vertical button groups
//
@@ -121,7 +126,7 @@
> .btn:not(:first-child),
> .btn-group:not(:first-child) {
- margin-top: -$btn-border-width;
+ margin-top: calc(#{$btn-border-width} * -1); // stylelint-disable-line function-disallowed-list
}
// Reset rounded corners
@@ -130,34 +135,8 @@
@include border-bottom-radius(0);
}
- > .btn:not(:first-child),
+ > .btn ~ .btn,
> .btn-group:not(:first-child) > .btn {
@include border-top-radius(0);
}
}
-
-// Checkbox and radio options
-//
-// In order to support the browser's form validation feedback, powered by the
-// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
-// `display: none;` or `visibility: hidden;` as that also hides the popover.
-// Simply visually hiding the inputs via `opacity` would leave them clickable in
-// certain cases which is prevented by using `clip` and `pointer-events`.
-// This way, we ensure a DOM element is visible to position the popover from.
-//
-// See https://github.com/twbs/bootstrap/pull/12794 and
-// https://github.com/twbs/bootstrap/pull/14559 for more information.
-
-.btn-group-toggle {
- > .btn,
- > .btn-group > .btn {
- margin-bottom: 0; // Override default `` value
-
- input[type='radio'],
- input[type='checkbox'] {
- position: absolute;
- clip: rect(0, 0, 0, 0);
- pointer-events: none;
- }
- }
-}
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_buttons.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_buttons.scss
new file mode 100644
index 00000000..e14a1843
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_buttons.scss
@@ -0,0 +1,207 @@
+//
+// Base styles
+//
+
+.btn {
+ // scss-docs-start btn-css-vars
+ --#{$prefix}btn-padding-x: #{$btn-padding-x};
+ --#{$prefix}btn-padding-y: #{$btn-padding-y};
+ --#{$prefix}btn-font-family: #{$btn-font-family};
+ @include rfs($btn-font-size, --#{$prefix}btn-font-size);
+ --#{$prefix}btn-font-weight: #{$btn-font-weight};
+ --#{$prefix}btn-line-height: #{$btn-line-height};
+ --#{$prefix}btn-color: #{$btn-color};
+ --#{$prefix}btn-bg: transparent;
+ --#{$prefix}btn-border-width: #{$btn-border-width};
+ --#{$prefix}btn-border-color: transparent;
+ --#{$prefix}btn-border-radius: #{$btn-border-radius};
+ --#{$prefix}btn-hover-border-color: transparent;
+ --#{$prefix}btn-box-shadow: #{$btn-box-shadow};
+ --#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity};
+ --#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), .5);
+ // scss-docs-end btn-css-vars
+
+ display: inline-block;
+ padding: var(--#{$prefix}btn-padding-y) var(--#{$prefix}btn-padding-x);
+ font-family: var(--#{$prefix}btn-font-family);
+ @include font-size(var(--#{$prefix}btn-font-size));
+ font-weight: var(--#{$prefix}btn-font-weight);
+ line-height: var(--#{$prefix}btn-line-height);
+ color: var(--#{$prefix}btn-color);
+ text-align: center;
+ text-decoration: if($link-decoration == none, null, none);
+ white-space: $btn-white-space;
+ vertical-align: middle;
+ cursor: if($enable-button-pointers, pointer, null);
+ user-select: none;
+ border: var(--#{$prefix}btn-border-width) solid var(--#{$prefix}btn-border-color);
+ @include border-radius(var(--#{$prefix}btn-border-radius));
+ @include gradient-bg(var(--#{$prefix}btn-bg));
+ @include box-shadow(var(--#{$prefix}btn-box-shadow));
+ @include transition($btn-transition);
+
+ &:hover {
+ color: var(--#{$prefix}btn-hover-color);
+ text-decoration: if($link-hover-decoration == underline, none, null);
+ background-color: var(--#{$prefix}btn-hover-bg);
+ border-color: var(--#{$prefix}btn-hover-border-color);
+ }
+
+ .btn-check + &:hover {
+ // override for the checkbox/radio buttons
+ color: var(--#{$prefix}btn-color);
+ background-color: var(--#{$prefix}btn-bg);
+ border-color: var(--#{$prefix}btn-border-color);
+ }
+
+ &:focus-visible {
+ color: var(--#{$prefix}btn-hover-color);
+ @include gradient-bg(var(--#{$prefix}btn-hover-bg));
+ border-color: var(--#{$prefix}btn-hover-border-color);
+ outline: 0;
+ // Avoid using mixin so we can pass custom focus shadow properly
+ @if $enable-shadows {
+ box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow);
+ } @else {
+ box-shadow: var(--#{$prefix}btn-focus-box-shadow);
+ }
+ }
+
+ .btn-check:focus-visible + & {
+ border-color: var(--#{$prefix}btn-hover-border-color);
+ outline: 0;
+ // Avoid using mixin so we can pass custom focus shadow properly
+ @if $enable-shadows {
+ box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow);
+ } @else {
+ box-shadow: var(--#{$prefix}btn-focus-box-shadow);
+ }
+ }
+
+ .btn-check:checked + &,
+ :not(.btn-check) + &:active,
+ &:first-child:active,
+ &.active,
+ &.show {
+ color: var(--#{$prefix}btn-active-color);
+ background-color: var(--#{$prefix}btn-active-bg);
+ // Remove CSS gradients if they're enabled
+ background-image: if($enable-gradients, none, null);
+ border-color: var(--#{$prefix}btn-active-border-color);
+ @include box-shadow(var(--#{$prefix}btn-active-shadow));
+
+ &:focus-visible {
+ // Avoid using mixin so we can pass custom focus shadow properly
+ @if $enable-shadows {
+ box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow);
+ } @else {
+ box-shadow: var(--#{$prefix}btn-focus-box-shadow);
+ }
+ }
+ }
+
+ &:disabled,
+ &.disabled,
+ fieldset:disabled & {
+ color: var(--#{$prefix}btn-disabled-color);
+ pointer-events: none;
+ background-color: var(--#{$prefix}btn-disabled-bg);
+ background-image: if($enable-gradients, none, null);
+ border-color: var(--#{$prefix}btn-disabled-border-color);
+ opacity: var(--#{$prefix}btn-disabled-opacity);
+ @include box-shadow(none);
+ }
+}
+
+
+//
+// Alternate buttons
+//
+
+// scss-docs-start btn-variant-loops
+@each $color, $value in $theme-colors {
+ .btn-#{$color} {
+ @if $color == "light" {
+ @include button-variant(
+ $value,
+ $value,
+ $hover-background: shade-color($value, $btn-hover-bg-shade-amount),
+ $hover-border: shade-color($value, $btn-hover-border-shade-amount),
+ $active-background: shade-color($value, $btn-active-bg-shade-amount),
+ $active-border: shade-color($value, $btn-active-border-shade-amount)
+ );
+ } @else if $color == "dark" {
+ @include button-variant(
+ $value,
+ $value,
+ $hover-background: tint-color($value, $btn-hover-bg-tint-amount),
+ $hover-border: tint-color($value, $btn-hover-border-tint-amount),
+ $active-background: tint-color($value, $btn-active-bg-tint-amount),
+ $active-border: tint-color($value, $btn-active-border-tint-amount)
+ );
+ } @else {
+ @include button-variant($value, $value);
+ }
+ }
+}
+
+@each $color, $value in $theme-colors {
+ .btn-outline-#{$color} {
+ @include button-outline-variant($value);
+ }
+}
+// scss-docs-end btn-variant-loops
+
+
+//
+// Link buttons
+//
+
+// Make a button look and behave like a link
+.btn-link {
+ --#{$prefix}btn-font-weight: #{$font-weight-normal};
+ --#{$prefix}btn-color: #{$btn-link-color};
+ --#{$prefix}btn-bg: transparent;
+ --#{$prefix}btn-border-color: transparent;
+ --#{$prefix}btn-hover-color: #{$btn-link-hover-color};
+ --#{$prefix}btn-hover-border-color: transparent;
+ --#{$prefix}btn-active-color: #{$btn-link-hover-color};
+ --#{$prefix}btn-active-border-color: transparent;
+ --#{$prefix}btn-disabled-color: #{$btn-link-disabled-color};
+ --#{$prefix}btn-disabled-border-color: transparent;
+ --#{$prefix}btn-box-shadow: 0 0 0 #000; // Can't use `none` as keyword negates all values when used with multiple shadows
+ --#{$prefix}btn-focus-shadow-rgb: #{$btn-link-focus-shadow-rgb};
+
+ text-decoration: $link-decoration;
+ @if $enable-gradients {
+ background-image: none;
+ }
+
+ &:hover,
+ &:focus-visible {
+ text-decoration: $link-hover-decoration;
+ }
+
+ &:focus-visible {
+ color: var(--#{$prefix}btn-color);
+ }
+
+ &:hover {
+ color: var(--#{$prefix}btn-hover-color);
+ }
+
+ // No need for an active state here
+}
+
+
+//
+// Button Sizes
+//
+
+.btn-lg {
+ @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg);
+}
+
+.btn-sm {
+ @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm);
+}
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_card.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_card.scss
new file mode 100644
index 00000000..d3535a98
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_card.scss
@@ -0,0 +1,239 @@
+//
+// Base styles
+//
+
+.card {
+ // scss-docs-start card-css-vars
+ --#{$prefix}card-spacer-y: #{$card-spacer-y};
+ --#{$prefix}card-spacer-x: #{$card-spacer-x};
+ --#{$prefix}card-title-spacer-y: #{$card-title-spacer-y};
+ --#{$prefix}card-title-color: #{$card-title-color};
+ --#{$prefix}card-subtitle-color: #{$card-subtitle-color};
+ --#{$prefix}card-border-width: #{$card-border-width};
+ --#{$prefix}card-border-color: #{$card-border-color};
+ --#{$prefix}card-border-radius: #{$card-border-radius};
+ --#{$prefix}card-box-shadow: #{$card-box-shadow};
+ --#{$prefix}card-inner-border-radius: #{$card-inner-border-radius};
+ --#{$prefix}card-cap-padding-y: #{$card-cap-padding-y};
+ --#{$prefix}card-cap-padding-x: #{$card-cap-padding-x};
+ --#{$prefix}card-cap-bg: #{$card-cap-bg};
+ --#{$prefix}card-cap-color: #{$card-cap-color};
+ --#{$prefix}card-height: #{$card-height};
+ --#{$prefix}card-color: #{$card-color};
+ --#{$prefix}card-bg: #{$card-bg};
+ --#{$prefix}card-img-overlay-padding: #{$card-img-overlay-padding};
+ --#{$prefix}card-group-margin: #{$card-group-margin};
+ // scss-docs-end card-css-vars
+
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
+ height: var(--#{$prefix}card-height);
+ color: var(--#{$prefix}body-color);
+ word-wrap: break-word;
+ background-color: var(--#{$prefix}card-bg);
+ background-clip: border-box;
+ border: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);
+ @include border-radius(var(--#{$prefix}card-border-radius));
+ @include box-shadow(var(--#{$prefix}card-box-shadow));
+
+ > hr {
+ margin-right: 0;
+ margin-left: 0;
+ }
+
+ > .list-group {
+ border-top: inherit;
+ border-bottom: inherit;
+
+ &:first-child {
+ border-top-width: 0;
+ @include border-top-radius(var(--#{$prefix}card-inner-border-radius));
+ }
+
+ &:last-child {
+ border-bottom-width: 0;
+ @include border-bottom-radius(var(--#{$prefix}card-inner-border-radius));
+ }
+ }
+
+ // Due to specificity of the above selector (`.card > .list-group`), we must
+ // use a child selector here to prevent double borders.
+ > .card-header + .list-group,
+ > .list-group + .card-footer {
+ border-top: 0;
+ }
+}
+
+.card-body {
+ // Enable `flex-grow: 1` for decks and groups so that card blocks take up
+ // as much space as possible, ensuring footers are aligned to the bottom.
+ flex: 1 1 auto;
+ padding: var(--#{$prefix}card-spacer-y) var(--#{$prefix}card-spacer-x);
+ color: var(--#{$prefix}card-color);
+}
+
+.card-title {
+ margin-bottom: var(--#{$prefix}card-title-spacer-y);
+ color: var(--#{$prefix}card-title-color);
+}
+
+.card-subtitle {
+ margin-top: calc(-.5 * var(--#{$prefix}card-title-spacer-y)); // stylelint-disable-line function-disallowed-list
+ margin-bottom: 0;
+ color: var(--#{$prefix}card-subtitle-color);
+}
+
+.card-text:last-child {
+ margin-bottom: 0;
+}
+
+.card-link {
+ &:hover {
+ text-decoration: if($link-hover-decoration == underline, none, null);
+ }
+
+ + .card-link {
+ margin-left: var(--#{$prefix}card-spacer-x);
+ }
+}
+
+//
+// Optional textual caps
+//
+
+.card-header {
+ padding: var(--#{$prefix}card-cap-padding-y) var(--#{$prefix}card-cap-padding-x);
+ margin-bottom: 0; // Removes the default margin-bottom of
+ color: var(--#{$prefix}card-cap-color);
+ background-color: var(--#{$prefix}card-cap-bg);
+ border-bottom: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);
+
+ &:first-child {
+ @include border-radius(var(--#{$prefix}card-inner-border-radius) var(--#{$prefix}card-inner-border-radius) 0 0);
+ }
+}
+
+.card-footer {
+ padding: var(--#{$prefix}card-cap-padding-y) var(--#{$prefix}card-cap-padding-x);
+ color: var(--#{$prefix}card-cap-color);
+ background-color: var(--#{$prefix}card-cap-bg);
+ border-top: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);
+
+ &:last-child {
+ @include border-radius(0 0 var(--#{$prefix}card-inner-border-radius) var(--#{$prefix}card-inner-border-radius));
+ }
+}
+
+
+//
+// Header navs
+//
+
+.card-header-tabs {
+ margin-right: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list
+ margin-bottom: calc(-1 * var(--#{$prefix}card-cap-padding-y)); // stylelint-disable-line function-disallowed-list
+ margin-left: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list
+ border-bottom: 0;
+
+ .nav-link.active {
+ background-color: var(--#{$prefix}card-bg);
+ border-bottom-color: var(--#{$prefix}card-bg);
+ }
+}
+
+.card-header-pills {
+ margin-right: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list
+ margin-left: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list
+}
+
+// Card image
+.card-img-overlay {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: var(--#{$prefix}card-img-overlay-padding);
+ @include border-radius(var(--#{$prefix}card-inner-border-radius));
+}
+
+.card-img,
+.card-img-top,
+.card-img-bottom {
+ width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
+}
+
+.card-img,
+.card-img-top {
+ @include border-top-radius(var(--#{$prefix}card-inner-border-radius));
+}
+
+.card-img,
+.card-img-bottom {
+ @include border-bottom-radius(var(--#{$prefix}card-inner-border-radius));
+}
+
+
+//
+// Card groups
+//
+
+.card-group {
+ // The child selector allows nested `.card` within `.card-group`
+ // to display properly.
+ > .card {
+ margin-bottom: var(--#{$prefix}card-group-margin);
+ }
+
+ @include media-breakpoint-up(sm) {
+ display: flex;
+ flex-flow: row wrap;
+ // The child selector allows nested `.card` within `.card-group`
+ // to display properly.
+ > .card {
+ // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+ flex: 1 0 0%;
+ margin-bottom: 0;
+
+ + .card {
+ margin-left: 0;
+ border-left: 0;
+ }
+
+ // Handle rounded corners
+ @if $enable-rounded {
+ &:not(:last-child) {
+ @include border-end-radius(0);
+
+ .card-img-top,
+ .card-header {
+ // stylelint-disable-next-line property-disallowed-list
+ border-top-right-radius: 0;
+ }
+ .card-img-bottom,
+ .card-footer {
+ // stylelint-disable-next-line property-disallowed-list
+ border-bottom-right-radius: 0;
+ }
+ }
+
+ &:not(:first-child) {
+ @include border-start-radius(0);
+
+ .card-img-top,
+ .card-header {
+ // stylelint-disable-next-line property-disallowed-list
+ border-top-left-radius: 0;
+ }
+ .card-img-bottom,
+ .card-footer {
+ // stylelint-disable-next-line property-disallowed-list
+ border-bottom-left-radius: 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_carousel.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_carousel.scss
similarity index 56%
rename from projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_carousel.scss
rename to projects/mdb-angular-ui-kit/assets/scss/bootstrap/_carousel.scss
index 20ea04ba..0ac8f871 100644
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_carousel.scss
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_carousel.scss
@@ -3,12 +3,12 @@
// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)
// even when their scroll action started on a carousel, but for compatibility (with Firefox)
// we're preventing all actions instead
-// 2. The .carousel-item-left and .carousel-item-right is used to indicate where
+// 2. The .carousel-item-start and .carousel-item-end is used to indicate where
// the active slide is heading.
// 3. .active.carousel-item is the current slide.
-// 4. .active.carousel-item-left and .active.carousel-item-right is the current
+// 4. .active.carousel-item-start and .active.carousel-item-end is the current
// slide in its in-transition state. Only one of these occurs at a time.
-// 5. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right
+// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end
// is the upcoming slide in transition.
.carousel {
@@ -42,13 +42,13 @@
display: block;
}
-.carousel-item-next:not(.carousel-item-left),
-.active.carousel-item-right {
+.carousel-item-next:not(.carousel-item-start),
+.active.carousel-item-end {
transform: translateX(100%);
}
-.carousel-item-prev:not(.carousel-item-right),
-.active.carousel-item-left {
+.carousel-item-prev:not(.carousel-item-end),
+.active.carousel-item-start {
transform: translateX(-100%);
}
@@ -65,17 +65,17 @@
}
.carousel-item.active,
- .carousel-item-next.carousel-item-left,
- .carousel-item-prev.carousel-item-right {
+ .carousel-item-next.carousel-item-start,
+ .carousel-item-prev.carousel-item-end {
z-index: 1;
opacity: 1;
}
- .active.carousel-item-left,
- .active.carousel-item-right {
+ .active.carousel-item-start,
+ .active.carousel-item-end {
z-index: 0;
opacity: 0;
- @include transition(0s $carousel-transition-duration opacity);
+ @include transition(opacity 0s $carousel-transition-duration);
}
}
@@ -95,13 +95,17 @@
align-items: center; // 2. vertically center contents
justify-content: center; // 3. horizontally center contents
width: $carousel-control-width;
+ padding: 0;
color: $carousel-control-color;
text-align: center;
+ background: none;
+ border: 0;
opacity: $carousel-control-opacity;
@include transition($carousel-control-transition);
// Hover/focus state
- @include hover-focus {
+ &:hover,
+ &:focus {
color: $carousel-control-color;
text-decoration: none;
outline: 0;
@@ -110,15 +114,11 @@
}
.carousel-control-prev {
left: 0;
- @if $enable-gradients {
- background: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));
- }
+ background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);
}
.carousel-control-next {
right: 0;
- @if $enable-gradients {
- background: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));
- }
+ background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);
}
// Icons for within
@@ -127,55 +127,67 @@
display: inline-block;
width: $carousel-control-icon-width;
height: $carousel-control-icon-width;
- background: no-repeat 50% / 100% 100%;
-}
+ background-repeat: no-repeat;
+ background-position: 50%;
+ background-size: 100% 100%;
+}
+
+/* rtl:options: {
+ "autoRename": true,
+ "stringMap":[ {
+ "name" : "prev-next",
+ "search" : "prev",
+ "replace" : "next"
+ } ]
+} */
.carousel-control-prev-icon {
- background-image: $carousel-control-prev-icon-bg;
+ background-image: escape-svg($carousel-control-prev-icon-bg);
}
.carousel-control-next-icon {
- background-image: $carousel-control-next-icon-bg;
+ background-image: escape-svg($carousel-control-next-icon-bg);
}
-
-// Optional indicator pips
+// Optional indicator pips/controls
//
-// Add an ordered list with the following class and add a list item for each
-// slide your carousel holds.
+// Add a container (such as a list) with the following class and add an item (ideally a focusable control,
+// like a button) with data-bs-target for each slide your carousel holds.
.carousel-indicators {
position: absolute;
right: 0;
bottom: 0;
left: 0;
- z-index: 15;
+ z-index: 2;
display: flex;
justify-content: center;
- padding-left: 0; // override default
+ padding: 0;
// Use the .carousel-control's width as margin so we don't overlay those
margin-right: $carousel-control-width;
+ margin-bottom: 1rem;
margin-left: $carousel-control-width;
- list-style: none;
- li {
+ [data-bs-target] {
box-sizing: content-box;
flex: 0 1 auto;
width: $carousel-indicator-width;
height: $carousel-indicator-height;
+ padding: 0;
margin-right: $carousel-indicator-spacer;
margin-left: $carousel-indicator-spacer;
text-indent: -999px;
cursor: pointer;
background-color: $carousel-indicator-active-bg;
background-clip: padding-box;
+ border: 0;
// Use transparent borders to increase the hit area by 10px on top and bottom.
border-top: $carousel-indicator-hit-area-height solid transparent;
border-bottom: $carousel-indicator-hit-area-height solid transparent;
- opacity: .5;
+ opacity: $carousel-indicator-opacity;
@include transition($carousel-indicator-transition);
}
.active {
- opacity: 1;
+ opacity: $carousel-indicator-active-opacity;
}
}
@@ -186,12 +198,47 @@
.carousel-caption {
position: absolute;
- right: (100% - $carousel-caption-width) / 2;
- bottom: 20px;
- left: (100% - $carousel-caption-width) / 2;
- z-index: 10;
- padding-top: 20px;
- padding-bottom: 20px;
+ right: (100% - $carousel-caption-width) * .5;
+ bottom: $carousel-caption-spacer;
+ left: (100% - $carousel-caption-width) * .5;
+ padding-top: $carousel-caption-padding-y;
+ padding-bottom: $carousel-caption-padding-y;
color: $carousel-caption-color;
text-align: center;
}
+
+// Dark mode carousel
+
+@mixin carousel-dark() {
+ .carousel-control-prev-icon,
+ .carousel-control-next-icon {
+ filter: $carousel-dark-control-icon-filter;
+ }
+
+ .carousel-indicators [data-bs-target] {
+ background-color: $carousel-dark-indicator-active-bg;
+ }
+
+ .carousel-caption {
+ color: $carousel-dark-caption-color;
+ }
+}
+
+.carousel-dark {
+ @include carousel-dark();
+}
+
+@if $enable-dark-mode {
+ @include color-mode(dark) {
+ @if $color-mode-type == "media-query" {
+ .carousel {
+ @include carousel-dark();
+ }
+ } @else {
+ .carousel,
+ &.carousel {
+ @include carousel-dark();
+ }
+ }
+ }
+}
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_close.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_close.scss
new file mode 100644
index 00000000..4d6e73c1
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_close.scss
@@ -0,0 +1,63 @@
+// Transparent background and border properties included for button version.
+// iOS requires the button element instead of an anchor tag.
+// If you want the anchor version, it requires `href="#"`.
+// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
+
+.btn-close {
+ // scss-docs-start close-css-vars
+ --#{$prefix}btn-close-color: #{$btn-close-color};
+ --#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) };
+ --#{$prefix}btn-close-opacity: #{$btn-close-opacity};
+ --#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity};
+ --#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
+ --#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
+ --#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
+ --#{$prefix}btn-close-white-filter: #{$btn-close-white-filter};
+ // scss-docs-end close-css-vars
+
+ box-sizing: content-box;
+ width: $btn-close-width;
+ height: $btn-close-height;
+ padding: $btn-close-padding-y $btn-close-padding-x;
+ color: var(--#{$prefix}btn-close-color);
+ background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
+ border: 0; // for button elements
+ @include border-radius();
+ opacity: var(--#{$prefix}btn-close-opacity);
+
+ // Override 's hover style
+ &:hover {
+ color: var(--#{$prefix}btn-close-color);
+ text-decoration: none;
+ opacity: var(--#{$prefix}btn-close-hover-opacity);
+ }
+
+ &:focus {
+ outline: 0;
+ box-shadow: var(--#{$prefix}btn-close-focus-shadow);
+ opacity: var(--#{$prefix}btn-close-focus-opacity);
+ }
+
+ &:disabled,
+ &.disabled {
+ pointer-events: none;
+ user-select: none;
+ opacity: var(--#{$prefix}btn-close-disabled-opacity);
+ }
+}
+
+@mixin btn-close-white() {
+ filter: var(--#{$prefix}btn-close-white-filter);
+}
+
+.btn-close-white {
+ @include btn-close-white();
+}
+
+@if $enable-dark-mode {
+ @include color-mode(dark) {
+ .btn-close {
+ @include btn-close-white();
+ }
+ }
+}
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_containers.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_containers.scss
new file mode 100644
index 00000000..83b31381
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_containers.scss
@@ -0,0 +1,41 @@
+// Container widths
+//
+// Set the container width, and override it for fixed navbars in media queries.
+
+@if $enable-container-classes {
+ // Single container class with breakpoint max-widths
+ .container,
+ // 100% wide container at all breakpoints
+ .container-fluid {
+ @include make-container();
+ }
+
+ // Responsive containers that are 100% wide until a breakpoint
+ @each $breakpoint, $container-max-width in $container-max-widths {
+ .container-#{$breakpoint} {
+ @extend .container-fluid;
+ }
+
+ @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
+ %responsive-container-#{$breakpoint} {
+ max-width: $container-max-width;
+ }
+
+ // Extend each breakpoint which is smaller or equal to the current breakpoint
+ $extend-breakpoint: true;
+
+ @each $name, $width in $grid-breakpoints {
+ @if ($extend-breakpoint) {
+ .container#{breakpoint-infix($name, $grid-breakpoints)} {
+ @extend %responsive-container-#{$breakpoint};
+ }
+
+ // Once the current breakpoint is reached, stop extending
+ @if ($breakpoint == $name) {
+ $extend-breakpoint: false;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_dropdown.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_dropdown.scss
new file mode 100644
index 00000000..587ebb48
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_dropdown.scss
@@ -0,0 +1,250 @@
+// The dropdown wrapper (``)
+.dropup,
+.dropend,
+.dropdown,
+.dropstart,
+.dropup-center,
+.dropdown-center {
+ position: relative;
+}
+
+.dropdown-toggle {
+ white-space: nowrap;
+
+ // Generate the caret automatically
+ @include caret();
+}
+
+// The dropdown menu
+.dropdown-menu {
+ // scss-docs-start dropdown-css-vars
+ --#{$prefix}dropdown-zindex: #{$zindex-dropdown};
+ --#{$prefix}dropdown-min-width: #{$dropdown-min-width};
+ --#{$prefix}dropdown-padding-x: #{$dropdown-padding-x};
+ --#{$prefix}dropdown-padding-y: #{$dropdown-padding-y};
+ --#{$prefix}dropdown-spacer: #{$dropdown-spacer};
+ @include rfs($dropdown-font-size, --#{$prefix}dropdown-font-size);
+ --#{$prefix}dropdown-color: #{$dropdown-color};
+ --#{$prefix}dropdown-bg: #{$dropdown-bg};
+ --#{$prefix}dropdown-border-color: #{$dropdown-border-color};
+ --#{$prefix}dropdown-border-radius: #{$dropdown-border-radius};
+ --#{$prefix}dropdown-border-width: #{$dropdown-border-width};
+ --#{$prefix}dropdown-inner-border-radius: #{$dropdown-inner-border-radius};
+ --#{$prefix}dropdown-divider-bg: #{$dropdown-divider-bg};
+ --#{$prefix}dropdown-divider-margin-y: #{$dropdown-divider-margin-y};
+ --#{$prefix}dropdown-box-shadow: #{$dropdown-box-shadow};
+ --#{$prefix}dropdown-link-color: #{$dropdown-link-color};
+ --#{$prefix}dropdown-link-hover-color: #{$dropdown-link-hover-color};
+ --#{$prefix}dropdown-link-hover-bg: #{$dropdown-link-hover-bg};
+ --#{$prefix}dropdown-link-active-color: #{$dropdown-link-active-color};
+ --#{$prefix}dropdown-link-active-bg: #{$dropdown-link-active-bg};
+ --#{$prefix}dropdown-link-disabled-color: #{$dropdown-link-disabled-color};
+ --#{$prefix}dropdown-item-padding-x: #{$dropdown-item-padding-x};
+ --#{$prefix}dropdown-item-padding-y: #{$dropdown-item-padding-y};
+ --#{$prefix}dropdown-header-color: #{$dropdown-header-color};
+ --#{$prefix}dropdown-header-padding-x: #{$dropdown-header-padding-x};
+ --#{$prefix}dropdown-header-padding-y: #{$dropdown-header-padding-y};
+ // scss-docs-end dropdown-css-vars
+
+ position: absolute;
+ z-index: var(--#{$prefix}dropdown-zindex);
+ display: none; // none by default, but block on "open" of the menu
+ min-width: var(--#{$prefix}dropdown-min-width);
+ padding: var(--#{$prefix}dropdown-padding-y) var(--#{$prefix}dropdown-padding-x);
+ margin: 0; // Override default margin of ul
+ @include font-size(var(--#{$prefix}dropdown-font-size));
+ color: var(--#{$prefix}dropdown-color);
+ text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
+ list-style: none;
+ background-color: var(--#{$prefix}dropdown-bg);
+ background-clip: padding-box;
+ border: var(--#{$prefix}dropdown-border-width) solid var(--#{$prefix}dropdown-border-color);
+ @include border-radius(var(--#{$prefix}dropdown-border-radius));
+ @include box-shadow(var(--#{$prefix}dropdown-box-shadow));
+
+ &[data-bs-popper] {
+ top: 100%;
+ left: 0;
+ margin-top: var(--#{$prefix}dropdown-spacer);
+ }
+
+ @if $dropdown-padding-y == 0 {
+ > .dropdown-item:first-child,
+ > li:first-child .dropdown-item {
+ @include border-top-radius(var(--#{$prefix}dropdown-inner-border-radius));
+ }
+ > .dropdown-item:last-child,
+ > li:last-child .dropdown-item {
+ @include border-bottom-radius(var(--#{$prefix}dropdown-inner-border-radius));
+ }
+
+ }
+}
+
+// scss-docs-start responsive-breakpoints
+// We deliberately hardcode the `bs-` prefix because we check
+// this custom property in JS to determine Popper's positioning
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+ @include media-breakpoint-up($breakpoint) {
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+ .dropdown-menu#{$infix}-start {
+ --bs-position: start;
+
+ &[data-bs-popper] {
+ right: auto;
+ left: 0;
+ }
+ }
+
+ .dropdown-menu#{$infix}-end {
+ --bs-position: end;
+
+ &[data-bs-popper] {
+ right: 0;
+ left: auto;
+ }
+ }
+ }
+}
+// scss-docs-end responsive-breakpoints
+
+// Allow for dropdowns to go bottom up (aka, dropup-menu)
+// Just add .dropup after the standard .dropdown class and you're set.
+.dropup {
+ .dropdown-menu[data-bs-popper] {
+ top: auto;
+ bottom: 100%;
+ margin-top: 0;
+ margin-bottom: var(--#{$prefix}dropdown-spacer);
+ }
+
+ .dropdown-toggle {
+ @include caret(up);
+ }
+}
+
+.dropend {
+ .dropdown-menu[data-bs-popper] {
+ top: 0;
+ right: auto;
+ left: 100%;
+ margin-top: 0;
+ margin-left: var(--#{$prefix}dropdown-spacer);
+ }
+
+ .dropdown-toggle {
+ @include caret(end);
+ &::after {
+ vertical-align: 0;
+ }
+ }
+}
+
+.dropstart {
+ .dropdown-menu[data-bs-popper] {
+ top: 0;
+ right: 100%;
+ left: auto;
+ margin-top: 0;
+ margin-right: var(--#{$prefix}dropdown-spacer);
+ }
+
+ .dropdown-toggle {
+ @include caret(start);
+ &::before {
+ vertical-align: 0;
+ }
+ }
+}
+
+
+// Dividers (basically an `
`) within the dropdown
+.dropdown-divider {
+ height: 0;
+ margin: var(--#{$prefix}dropdown-divider-margin-y) 0;
+ overflow: hidden;
+ border-top: 1px solid var(--#{$prefix}dropdown-divider-bg);
+ opacity: 1; // Revisit in v6 to de-dupe styles that conflict with
element
+}
+
+// Links, buttons, and more within the dropdown menu
+//
+// `
`-specific styles are denoted with `// For s`
+.dropdown-item {
+ display: block;
+ width: 100%; // For ``s
+ padding: var(--#{$prefix}dropdown-item-padding-y) var(--#{$prefix}dropdown-item-padding-x);
+ clear: both;
+ font-weight: $font-weight-normal;
+ color: var(--#{$prefix}dropdown-link-color);
+ text-align: inherit; // For ``s
+ text-decoration: if($link-decoration == none, null, none);
+ white-space: nowrap; // prevent links from randomly breaking onto new lines
+ background-color: transparent; // For ``s
+ border: 0; // For ``s
+ @include border-radius(var(--#{$prefix}dropdown-item-border-radius, 0));
+
+ &:hover,
+ &:focus {
+ color: var(--#{$prefix}dropdown-link-hover-color);
+ text-decoration: if($link-hover-decoration == underline, none, null);
+ @include gradient-bg(var(--#{$prefix}dropdown-link-hover-bg));
+ }
+
+ &.active,
+ &:active {
+ color: var(--#{$prefix}dropdown-link-active-color);
+ text-decoration: none;
+ @include gradient-bg(var(--#{$prefix}dropdown-link-active-bg));
+ }
+
+ &.disabled,
+ &:disabled {
+ color: var(--#{$prefix}dropdown-link-disabled-color);
+ pointer-events: none;
+ background-color: transparent;
+ // Remove CSS gradients if they're enabled
+ background-image: if($enable-gradients, none, null);
+ }
+}
+
+.dropdown-menu.show {
+ display: block;
+}
+
+// Dropdown section headers
+.dropdown-header {
+ display: block;
+ padding: var(--#{$prefix}dropdown-header-padding-y) var(--#{$prefix}dropdown-header-padding-x);
+ margin-bottom: 0; // for use with heading elements
+ @include font-size($font-size-sm);
+ color: var(--#{$prefix}dropdown-header-color);
+ white-space: nowrap; // as with > li > a
+}
+
+// Dropdown text
+.dropdown-item-text {
+ display: block;
+ padding: var(--#{$prefix}dropdown-item-padding-y) var(--#{$prefix}dropdown-item-padding-x);
+ color: var(--#{$prefix}dropdown-link-color);
+}
+
+// Dark dropdowns
+.dropdown-menu-dark {
+ // scss-docs-start dropdown-dark-css-vars
+ --#{$prefix}dropdown-color: #{$dropdown-dark-color};
+ --#{$prefix}dropdown-bg: #{$dropdown-dark-bg};
+ --#{$prefix}dropdown-border-color: #{$dropdown-dark-border-color};
+ --#{$prefix}dropdown-box-shadow: #{$dropdown-dark-box-shadow};
+ --#{$prefix}dropdown-link-color: #{$dropdown-dark-link-color};
+ --#{$prefix}dropdown-link-hover-color: #{$dropdown-dark-link-hover-color};
+ --#{$prefix}dropdown-divider-bg: #{$dropdown-dark-divider-bg};
+ --#{$prefix}dropdown-link-hover-bg: #{$dropdown-dark-link-hover-bg};
+ --#{$prefix}dropdown-link-active-color: #{$dropdown-dark-link-active-color};
+ --#{$prefix}dropdown-link-active-bg: #{$dropdown-dark-link-active-bg};
+ --#{$prefix}dropdown-link-disabled-color: #{$dropdown-dark-link-disabled-color};
+ --#{$prefix}dropdown-header-color: #{$dropdown-dark-header-color};
+ // scss-docs-end dropdown-dark-css-vars
+}
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_forms.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_forms.scss
new file mode 100644
index 00000000..7b17d849
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_forms.scss
@@ -0,0 +1,9 @@
+@import "forms/labels";
+@import "forms/form-text";
+@import "forms/form-control";
+@import "forms/form-select";
+@import "forms/form-check";
+@import "forms/form-range";
+@import "forms/floating-labels";
+@import "forms/input-group";
+@import "forms/validation";
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_functions.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_functions.scss
new file mode 100644
index 00000000..90296586
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_functions.scss
@@ -0,0 +1,302 @@
+// Bootstrap functions
+//
+// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
+
+// Ascending
+// Used to evaluate Sass maps like our grid breakpoints.
+@mixin _assert-ascending($map, $map-name) {
+ $prev-key: null;
+ $prev-num: null;
+ @each $key, $num in $map {
+ @if $prev-num == null or unit($num) == "%" or unit($prev-num) == "%" {
+ // Do nothing
+ } @else if not comparable($prev-num, $num) {
+ @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+ } @else if $prev-num >= $num {
+ @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+ }
+ $prev-key: $key;
+ $prev-num: $num;
+ }
+}
+
+// Starts at zero
+// Used to ensure the min-width of the lowest breakpoint starts at 0.
+@mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
+ @if length($map) > 0 {
+ $values: map-values($map);
+ $first-value: nth($values, 1);
+ @if $first-value != 0 {
+ @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
+ }
+ }
+}
+
+// Colors
+@function to-rgb($value) {
+ @return red($value), green($value), blue($value);
+}
+
+// stylelint-disable scss/dollar-variable-pattern
+@function rgba-css-var($identifier, $target) {
+ @if $identifier == "body" and $target == "bg" {
+ @return rgba(var(--#{$prefix}#{$identifier}-bg-rgb), var(--#{$prefix}#{$target}-opacity));
+ } @if $identifier == "body" and $target == "text" {
+ @return rgba(var(--#{$prefix}#{$identifier}-color-rgb), var(--#{$prefix}#{$target}-opacity));
+ } @else {
+ @return rgba(var(--#{$prefix}#{$identifier}-rgb), var(--#{$prefix}#{$target}-opacity));
+ }
+}
+
+@function map-loop($map, $func, $args...) {
+ $_map: ();
+
+ @each $key, $value in $map {
+ // allow to pass the $key and $value of the map as an function argument
+ $_args: ();
+ @each $arg in $args {
+ $_args: append($_args, if($arg == "$key", $key, if($arg == "$value", $value, $arg)));
+ }
+
+ $_map: map-merge($_map, ($key: call(get-function($func), $_args...)));
+ }
+
+ @return $_map;
+}
+// stylelint-enable scss/dollar-variable-pattern
+
+@function varify($list) {
+ $result: null;
+ @each $entry in $list {
+ $result: append($result, var(--#{$prefix}#{$entry}), space);
+ }
+ @return $result;
+}
+
+// Internal Bootstrap function to turn maps into its negative variant.
+// It prefixes the keys with `n` and makes the value negative.
+@function negativify-map($map) {
+ $result: ();
+ @each $key, $value in $map {
+ @if $key != 0 {
+ $result: map-merge($result, ("n" + $key: (-$value)));
+ }
+ }
+ @return $result;
+}
+
+// Get multiple keys from a sass map
+@function map-get-multiple($map, $values) {
+ $result: ();
+ @each $key, $value in $map {
+ @if (index($values, $key) != null) {
+ $result: map-merge($result, ($key: $value));
+ }
+ }
+ @return $result;
+}
+
+// Merge multiple maps
+@function map-merge-multiple($maps...) {
+ $merged-maps: ();
+
+ @each $map in $maps {
+ $merged-maps: map-merge($merged-maps, $map);
+ }
+ @return $merged-maps;
+}
+
+// Replace `$search` with `$replace` in `$string`
+// Used on our SVG icon backgrounds for custom forms.
+//
+// @author Kitty Giraudel
+// @param {String} $string - Initial string
+// @param {String} $search - Substring to replace
+// @param {String} $replace ('') - New value
+// @return {String} - Updated string
+@function str-replace($string, $search, $replace: "") {
+ $index: str-index($string, $search);
+
+ @if $index {
+ @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
+ }
+
+ @return $string;
+}
+
+// See https://codepen.io/kevinweber/pen/dXWoRw
+//
+// Requires the use of quotes around data URIs.
+
+@function escape-svg($string) {
+ @if str-index($string, "data:image/svg+xml") {
+ @each $char, $encoded in $escaped-characters {
+ // Do not escape the url brackets
+ @if str-index($string, "url(") == 1 {
+ $string: url("#{str-replace(str-slice($string, 6, -3), $char, $encoded)}");
+ } @else {
+ $string: str-replace($string, $char, $encoded);
+ }
+ }
+ }
+
+ @return $string;
+}
+
+// Color contrast
+// See https://github.com/twbs/bootstrap/pull/30168
+
+// A list of pre-calculated numbers of pow(divide((divide($value, 255) + .055), 1.055), 2.4). (from 0 to 255)
+// stylelint-disable-next-line scss/dollar-variable-default, scss/dollar-variable-pattern
+$_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 .0033 .0037 .004 .0044 .0048 .0052 .0056 .006 .0065 .007 .0075 .008 .0086 .0091 .0097 .0103 .011 .0116 .0123 .013 .0137 .0144 .0152 .016 .0168 .0176 .0185 .0194 .0203 .0212 .0222 .0232 .0242 .0252 .0262 .0273 .0284 .0296 .0307 .0319 .0331 .0343 .0356 .0369 .0382 .0395 .0409 .0423 .0437 .0452 .0467 .0482 .0497 .0513 .0529 .0545 .0561 .0578 .0595 .0612 .063 .0648 .0666 .0685 .0704 .0723 .0742 .0762 .0782 .0802 .0823 .0844 .0865 .0887 .0908 .0931 .0953 .0976 .0999 .1022 .1046 .107 .1095 .1119 .1144 .117 .1195 .1221 .1248 .1274 .1301 .1329 .1356 .1384 .1413 .1441 .147 .15 .1529 .1559 .159 .162 .1651 .1683 .1714 .1746 .1779 .1812 .1845 .1878 .1912 .1946 .1981 .2016 .2051 .2086 .2122 .2159 .2195 .2232 .227 .2307 .2346 .2384 .2423 .2462 .2502 .2542 .2582 .2623 .2664 .2705 .2747 .2789 .2831 .2874 .2918 .2961 .3005 .305 .3095 .314 .3185 .3231 .3278 .3325 .3372 .3419 .3467 .3515 .3564 .3613 .3663 .3712 .3763 .3813 .3864 .3916 .3968 .402 .4072 .4125 .4179 .4233 .4287 .4342 .4397 .4452 .4508 .4564 .4621 .4678 .4735 .4793 .4851 .491 .4969 .5029 .5089 .5149 .521 .5271 .5333 .5395 .5457 .552 .5583 .5647 .5711 .5776 .5841 .5906 .5972 .6038 .6105 .6172 .624 .6308 .6376 .6445 .6514 .6584 .6654 .6724 .6795 .6867 .6939 .7011 .7084 .7157 .7231 .7305 .7379 .7454 .7529 .7605 .7682 .7758 .7835 .7913 .7991 .807 .8148 .8228 .8308 .8388 .8469 .855 .8632 .8714 .8796 .8879 .8963 .9047 .9131 .9216 .9301 .9387 .9473 .956 .9647 .9734 .9823 .9911 1;
+
+@function color-contrast($background, $color-contrast-dark: $color-contrast-dark, $color-contrast-light: $color-contrast-light, $min-contrast-ratio: $min-contrast-ratio) {
+ $foregrounds: $color-contrast-light, $color-contrast-dark, $white, $black;
+ $max-ratio: 0;
+ $max-ratio-color: null;
+
+ @each $color in $foregrounds {
+ $contrast-ratio: contrast-ratio($background, $color);
+ @if $contrast-ratio > $min-contrast-ratio {
+ @return $color;
+ } @else if $contrast-ratio > $max-ratio {
+ $max-ratio: $contrast-ratio;
+ $max-ratio-color: $color;
+ }
+ }
+
+ @warn "Found no color leading to #{$min-contrast-ratio}:1 contrast ratio against #{$background}...";
+
+ @return $max-ratio-color;
+}
+
+@function contrast-ratio($background, $foreground: $color-contrast-light) {
+ $l1: luminance($background);
+ $l2: luminance(opaque($background, $foreground));
+
+ @return if($l1 > $l2, divide($l1 + .05, $l2 + .05), divide($l2 + .05, $l1 + .05));
+}
+
+// Return WCAG2.1 relative luminance
+// See https://www.w3.org/TR/WCAG/#dfn-relative-luminance
+// See https://www.w3.org/TR/WCAG/#dfn-contrast-ratio
+@function luminance($color) {
+ $rgb: (
+ "r": red($color),
+ "g": green($color),
+ "b": blue($color)
+ );
+
+ @each $name, $value in $rgb {
+ $value: if(divide($value, 255) < .04045, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1));
+ $rgb: map-merge($rgb, ($name: $value));
+ }
+
+ @return (map-get($rgb, "r") * .2126) + (map-get($rgb, "g") * .7152) + (map-get($rgb, "b") * .0722);
+}
+
+// Return opaque color
+// opaque(#fff, rgba(0, 0, 0, .5)) => #808080
+@function opaque($background, $foreground) {
+ @return mix(rgba($foreground, 1), $background, opacity($foreground) * 100%);
+}
+
+// scss-docs-start color-functions
+// Tint a color: mix a color with white
+@function tint-color($color, $weight) {
+ @return mix(white, $color, $weight);
+}
+
+// Shade a color: mix a color with black
+@function shade-color($color, $weight) {
+ @return mix(black, $color, $weight);
+}
+
+// Shade the color if the weight is positive, else tint it
+@function shift-color($color, $weight) {
+ @return if($weight > 0, shade-color($color, $weight), tint-color($color, -$weight));
+}
+// scss-docs-end color-functions
+
+// Return valid calc
+@function add($value1, $value2, $return-calc: true) {
+ @if $value1 == null {
+ @return $value2;
+ }
+
+ @if $value2 == null {
+ @return $value1;
+ }
+
+ @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
+ @return $value1 + $value2;
+ }
+
+ @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(" + ") + $value2);
+}
+
+@function subtract($value1, $value2, $return-calc: true) {
+ @if $value1 == null and $value2 == null {
+ @return null;
+ }
+
+ @if $value1 == null {
+ @return -$value2;
+ }
+
+ @if $value2 == null {
+ @return $value1;
+ }
+
+ @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
+ @return $value1 - $value2;
+ }
+
+ @if type-of($value2) != number {
+ $value2: unquote("(") + $value2 + unquote(")");
+ }
+
+ @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
+}
+
+@function divide($dividend, $divisor, $precision: 10) {
+ $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
+ $dividend: abs($dividend);
+ $divisor: abs($divisor);
+ @if $dividend == 0 {
+ @return 0;
+ }
+ @if $divisor == 0 {
+ @error "Cannot divide by 0";
+ }
+ $remainder: $dividend;
+ $result: 0;
+ $factor: 10;
+ @while ($remainder > 0 and $precision >= 0) {
+ $quotient: 0;
+ @while ($remainder >= $divisor) {
+ $remainder: $remainder - $divisor;
+ $quotient: $quotient + 1;
+ }
+ $result: $result * 10 + $quotient;
+ $factor: $factor * .1;
+ $remainder: $remainder * 10;
+ $precision: $precision - 1;
+ @if ($precision < 0 and $remainder >= $divisor * 5) {
+ $result: $result + 1;
+ }
+ }
+ $result: $result * $factor * $sign;
+ $dividend-unit: unit($dividend);
+ $divisor-unit: unit($divisor);
+ $unit-map: (
+ "px": 1px,
+ "rem": 1rem,
+ "em": 1em,
+ "%": 1%
+ );
+ @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
+ $result: $result * map-get($unit-map, $dividend-unit);
+ }
+ @return $result;
+}
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_grid.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_grid.scss
new file mode 100644
index 00000000..048f8009
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_grid.scss
@@ -0,0 +1,39 @@
+// Row
+//
+// Rows contain your columns.
+
+:root {
+ @each $name, $value in $grid-breakpoints {
+ --#{$prefix}breakpoint-#{$name}: #{$value};
+ }
+}
+
+@if $enable-grid-classes {
+ .row {
+ @include make-row();
+
+ > * {
+ @include make-col-ready();
+ }
+ }
+}
+
+@if $enable-cssgrid {
+ .grid {
+ display: grid;
+ grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);
+ grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);
+ gap: var(--#{$prefix}gap, #{$grid-gutter-width});
+
+ @include make-cssgrid();
+ }
+}
+
+
+// Columns
+//
+// Common styles for small and large grid columns
+
+@if $enable-grid-classes {
+ @include make-grid-columns();
+}
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_helpers.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_helpers.scss
new file mode 100644
index 00000000..13f2752c
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_helpers.scss
@@ -0,0 +1,12 @@
+@import "helpers/clearfix";
+@import "helpers/color-bg";
+@import "helpers/colored-links";
+@import "helpers/focus-ring";
+@import "helpers/icon-link";
+@import "helpers/ratio";
+@import "helpers/position";
+@import "helpers/stacks";
+@import "helpers/visually-hidden";
+@import "helpers/stretched-link";
+@import "helpers/text-truncation";
+@import "helpers/vr";
diff --git a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_images.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_images.scss
similarity index 93%
rename from projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_images.scss
rename to projects/mdb-angular-ui-kit/assets/scss/bootstrap/_images.scss
index cb9795e2..3d6a1014 100644
--- a/projects/angular-bootstrap-md/src/lib/assets/scss/bootstrap/_images.scss
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_images.scss
@@ -6,7 +6,7 @@
// which weren't expecting the images within themselves to be involuntarily resized.
// See also https://github.com/twbs/bootstrap/issues/18178
.img-fluid {
- @include img-fluid;
+ @include img-fluid();
}
@@ -19,7 +19,7 @@
@include box-shadow($thumbnail-box-shadow);
// Keep them at most 100% wide
- @include img-fluid;
+ @include img-fluid();
}
//
@@ -32,7 +32,7 @@
}
.figure-img {
- margin-bottom: $spacer / 2;
+ margin-bottom: $spacer * .5;
line-height: 1;
}
diff --git a/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_list-group.scss b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_list-group.scss
new file mode 100644
index 00000000..455531ee
--- /dev/null
+++ b/projects/mdb-angular-ui-kit/assets/scss/bootstrap/_list-group.scss
@@ -0,0 +1,197 @@
+// Base class
+//
+// Easily usable on , , or .
+
+.list-group {
+ // scss-docs-start list-group-css-vars
+ --#{$prefix}list-group-color: #{$list-group-color};
+ --#{$prefix}list-group-bg: #{$list-group-bg};
+ --#{$prefix}list-group-border-color: #{$list-group-border-color};
+ --#{$prefix}list-group-border-width: #{$list-group-border-width};
+ --#{$prefix}list-group-border-radius: #{$list-group-border-radius};
+ --#{$prefix}list-group-item-padding-x: #{$list-group-item-padding-x};
+ --#{$prefix}list-group-item-padding-y: #{$list-group-item-padding-y};
+ --#{$prefix}list-group-action-color: #{$list-group-action-color};
+ --#{$prefix}list-group-action-hover-color: #{$list-group-action-hover-color};
+ --#{$prefix}list-group-action-hover-bg: #{$list-group-hover-bg};
+ --#{$prefix}list-group-action-active-color: #{$list-group-action-active-color};
+ --#{$prefix}list-group-action-active-bg: #{$list-group-action-active-bg};
+ --#{$prefix}list-group-disabled-color: #{$list-group-disabled-color};
+ --#{$prefix}list-group-disabled-bg: #{$list-group-disabled-bg};
+ --#{$prefix}list-group-active-color: #{$list-group-active-color};
+ --#{$prefix}list-group-active-bg: #{$list-group-active-bg};
+ --#{$prefix}list-group-active-border-color: #{$list-group-active-border-color};
+ // scss-docs-end list-group-css-vars
+
+ display: flex;
+ flex-direction: column;
+
+ // No need to set list-style: none; since .list-group-item is block level
+ padding-left: 0; // reset padding because ul and ol
+ margin-bottom: 0;
+ @include border-radius(var(--#{$prefix}list-group-border-radius));
+}
+
+.list-group-numbered {
+ list-style-type: none;
+ counter-reset: section;
+
+ > .list-group-item::before {
+ // Increments only this instance of the section counter
+ content: counters(section, ".") ". ";
+ counter-increment: section;
+ }
+}
+
+// Interactive list items
+//
+// Use anchor or button elements instead of `li`s or `div`s to create interactive
+// list items. Includes an extra `.active` modifier class for selected items.
+
+.list-group-item-action {
+ width: 100%; // For ``s (anchors become 100% by default though)
+ color: var(--#{$prefix}list-group-action-color);
+ text-align: inherit; // For ``s (anchors inherit)
+
+ // Hover state
+ &:hover,
+ &:focus {
+ z-index: 1; // Place hover/focus items above their siblings for proper border styling
+ color: var(--#{$prefix}list-group-action-hover-color);
+ text-decoration: none;
+ background-color: var(--#{$prefix}list-group-action-hover-bg);
+ }
+
+ &:active {
+ color: var(--#{$prefix}list-group-action-active-color);
+ background-color: var(--#{$prefix}list-group-action-active-bg);
+ }
+}
+
+// Individual list items
+//
+// Use on `li`s or `div`s within the `.list-group` parent.
+
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: var(--#{$prefix}list-group-item-padding-y) var(--#{$prefix}list-group-item-padding-x);
+ color: var(--#{$prefix}list-group-color);
+ text-decoration: if($link-decoration == none, null, none);
+ background-color: var(--#{$prefix}list-group-bg);
+ border: var(--#{$prefix}list-group-border-width) solid var(--#{$prefix}list-group-border-color);
+
+ &:first-child {
+ @include border-top-radius(inherit);
+ }
+
+ &:last-child {
+ @include border-bottom-radius(inherit);
+ }
+
+ &.disabled,
+ &:disabled {
+ color: var(--#{$prefix}list-group-disabled-color);
+ pointer-events: none;
+ background-color: var(--#{$prefix}list-group-disabled-bg);
+ }
+
+ // Include both here for `