1.0.0-alpha2

This commit is contained in:
Adam Jakubowski 2020-12-29 14:06:54 +01:00
parent ac9044887d
commit df888936a2
30 changed files with 988 additions and 2036 deletions

View File

@ -10,7 +10,7 @@
**[>> Demo](https://mdbootstrap.com/docs/standard/#demo)**
<a href="https://npmcharts.com/compare/mdbootstrap?minimal=true"> <img src="https://img.shields.io/npm/dm/mdbootstrap.svg" alt="Downloads"></a><a href="https://github.com/mdbootstrap/bootstrap-material-design/blob/master/License.pdf"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License"></a> <a href="https://cdnjs.com/libraries/mdbootstrap"> <img src="https://img.shields.io/cdnjs/v/mdbootstrap.svg" alt="cdnjs"></a> <a href="https://badge.fury.io/js/mdbootstrap"><img src="https://badge.fury.io/js/mdbootstrap.svg" alt="npm"></a> <a href="https://twitter.com/intent/tweet/?text=Thanks+@mdbootstrap+for+creating+amazing+and+free+Material+Design+for+Bootstrap+4+UI+KIT%20https://mdbootstrap.com/docs/jquery/&hashtags=javascript,code,webdesign,bootstrap"> <img src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social"></a>
<a href="https://npmcharts.com/compare/mdbootstrap?minimal=true"> <img src="https://img.shields.io/npm/dm/mdbootstrap.svg" alt="Downloads"></a><a href="https://github.com/mdbootstrap/bootstrap-material-design/blob/master/License.pdf"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License"></a> <a href="https://twitter.com/intent/tweet/?text=Thanks+@mdbootstrap+for+creating+amazing+and+free+Material+Design+for+Bootstrap+4+UI+KIT%20https://mdbootstrap.com/docs/jquery/&hashtags=javascript,code,webdesign,bootstrap"> <img src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social"></a>
___
<table>
@ -92,6 +92,4 @@ ___
<a href="https://mdbootstrap.com/docs/standard/" alt="Bootstrap 5" rel="dofollow"><img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-loaders1.gif"></a>
<a href="https://mdbootstrap.com/docs/standard/" alt="Bootstrap 5" rel="dofollow"><img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-loaders2.gif"></a>
<a href="https://mdbootstrap.com/docs/standard/" alt="Bootstrap 5" rel="dofollow"><img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-mdb5.jpg"></a>

View File

@ -1,5 +1,5 @@
MDB5
Version: FREE 1.0.0-alpha1
Version: FREE 1.0.0-alpha2
Documentation:
https://mdbootstrap.com/docs/standard/

6
css/mdb.min.css vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -21,13 +21,17 @@
</head>
<body>
<!-- Start your project here-->
<div style="height: 100vh; text-align: center; margin-top: 150px;">
<img
src="https://mdbootstrap.com/img/logo/mdb-transparent-250px.png"
style="width: 250px; height: 90px;"
/>
<h5>Thank you for using our product. We're glad you're with us.</h5>
<p>MDB Team</p>
<div class="container">
<div class="d-flex justify-content-center align-items-center" style="height: 100vh;">
<div class="text-center">
<img
src="https://mdbootstrap.com/img/logo/mdb-transparent-250px.png"
style="width: 250px; height: 90px;"
/>
<h5 class="pt-3">Thank you for using our product. We're glad you're with us.</h5>
<p class="pb-5">MDB Team</p>
</div>
</div>
</div>
<!-- End your project here-->
</body>

6
js/mdb.min.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{
"name": "mdb-ui-kit",
"version": "1.0.0-alpha1",
"version": "1.0.0-alpha2",
"main": "js/mdb.min.js",
"repository": "https://github.com/mdbootstrap/mdb-ui-kit.git",
"author": "MDBootstrap",

View File

@ -16,11 +16,13 @@ const SELECTOR_EXPAND = '[data-toggle="animation"]';
const DefaultType = {
animation: 'string',
start: 'string',
showOnLoad: 'boolean',
onStart: '(null|function)',
onEnd: '(null|function)',
onHide: '(null|function)',
onShow: '(null|function)',
animateonscroll: '(boolean|string)',
animateOnScroll: '(string)',
windowHeight: 'number',
offset: '(number|string)',
delay: '(number|string)',
@ -28,15 +30,18 @@ const DefaultType = {
reverse: 'boolean',
interval: '(number|string)',
repeat: '(number|boolean)',
reset: 'boolean',
};
const Default = {
animation: 'fade',
start: 'onClick',
showOnLoad: true,
onStart: null,
onEnd: null,
onHide: null,
onShow: null,
animateonscroll: false,
animateOnScroll: 'once',
windowHeight: 0,
offset: 0,
delay: 0,
@ -44,6 +49,7 @@ const Default = {
reverse: false,
interval: 0,
repeat: false,
reset: false,
};
/**
@ -82,10 +88,22 @@ class Animate {
// Private
_init() {
if (this._options.animateonscroll) {
this._bindScrollEvents();
} else {
this._bindClickEvents();
switch (this._options.start) {
case 'onHover':
this._bindHoverEvents();
break;
case 'onLoad':
this._startAnimation();
break;
case 'onScroll':
this._bindScrollEvents();
break;
default:
this._bindClickEvents();
break;
}
this._bindTriggerOnEndCallback();
if (this._options.reset) {
this._bindResetAnimationAfterFinish();
}
}
@ -128,7 +146,7 @@ class Animate {
this._hideAnimateElement();
break;
case shouldBeVisible && !isElementVisible && this._repeatAnimateOnScroll:
if (this._options.animateonscroll !== 'repeat') {
if (this._options.animateOnScroll !== 'repeat') {
this._repeatAnimateOnScroll = false;
}
this._callback(this._options.onShow);
@ -146,12 +164,12 @@ class Animate {
}
_addAnimatedClass() {
Manipulator.addClass(this._animateElement, 'animated');
Manipulator.addClass(this._animateElement, 'animation');
Manipulator.addClass(this._animateElement, this._options.animation);
}
_clearAnimationClass() {
this._animateElement.classList.remove(this._options.animation, 'animated');
this._animateElement.classList.remove(this._options.animation, 'animation');
}
_startAnimation() {
@ -207,7 +225,6 @@ class Animate {
_setAnimationInterval() {
EventHandler.on(this._animateElement, 'animationend', () => {
this._callback(this._options.onEnd);
this._clearAnimationClass();
setTimeout(() => {
this._addAnimatedClass();
@ -225,17 +242,23 @@ class Animate {
_bindResetAnimationAfterFinish() {
EventHandler.on(this._animateElement, 'animationend', () => {
this._callback(this._options.onEnd);
this._clearAnimationClass();
});
}
_bindTriggerOnEndCallback() {
EventHandler.on(this._animateElement, 'animationend', () => {
this._callback(this._options.onEnd);
});
}
_bindScrollEvents() {
const scrollPositionOnPageLoad = window.scrollY;
if (!this._options.showOnLoad) {
this._animateOnScroll();
}
EventHandler.on(window, 'scroll', () => {
if (scrollPositionOnPageLoad !== window.scrollY) {
this._animateOnScroll();
}
this._animateOnScroll();
});
}
@ -245,6 +268,18 @@ class Animate {
});
}
_bindHoverEvents() {
EventHandler.one(this._element, 'mouseenter', () => {
this._startAnimation();
});
EventHandler.one(this._animateElement, 'animationend', () => {
// wait after bind hoverEvents to prevent animation looping
setTimeout(() => {
this._bindHoverEvents();
}, 100);
});
}
_callback(fn) {
if (fn instanceof Function) {
fn();

View File

@ -14,6 +14,7 @@ const NAME = 'input';
const DATA_KEY = 'mdb.input';
const CLASSNAME_WRAPPER = 'form-outline';
const OUTLINE_INPUT = `.${CLASSNAME_WRAPPER} input`;
const OUTLINE_TEXTAREA = `.${CLASSNAME_WRAPPER} textarea`;
/**
* ------------------------------------------------------------------------
@ -24,8 +25,12 @@ const OUTLINE_INPUT = `.${CLASSNAME_WRAPPER} input`;
class Input {
constructor(element) {
this._element = element;
this._label = null;
this._labelWidth = 0;
this._labelMarginLeft = 0;
this._notchLeading = null;
this._notchMiddle = null;
this._notchTrailing = null;
if (this._element) {
Data.setData(element, DATA_KEY, this);
@ -39,9 +44,9 @@ class Input {
// Public
init() {
this._calculateLabelWidth();
this._getLabelData();
this._applyDivs();
this._applyNotchWidth();
this._applyNotch();
this._applyActiveClass();
}
@ -51,40 +56,67 @@ class Input {
}
// Private
_calculateLabelWidth() {
const label = SelectorEngine.findOne('label.form-label', this._element);
this._labelWidth = label.clientWidth * 0.8 + 8;
_getLabelData() {
this._label = SelectorEngine.findOne('label', this._element);
if (this._label === null) return;
this._getLabelWidth();
if (!this._element.classList.contains('input-group')) return;
this._getLabelPositionInInputGroup();
}
_getLabelWidth() {
this._labelWidth = this._label.clientWidth * 0.8 + 8;
}
_getLabelPositionInInputGroup() {
const input =
SelectorEngine.findOne('input', this._element) ||
SelectorEngine.findOne('textarea', this._element);
const prefix = SelectorEngine.prev(input, '.input-group-text')[0];
if (prefix === undefined) return;
this._labelMarginLeft = prefix.offsetWidth - 1;
}
_applyDivs() {
const notchWrapper = element('div');
Manipulator.addClass(notchWrapper, 'form-notch');
const notchLeading = element('div');
Manipulator.addClass(notchLeading, 'form-notch-leading');
this._notchLeading = element('div');
Manipulator.addClass(this._notchLeading, 'form-notch-leading');
this._notchMiddle = element('div');
Manipulator.addClass(this._notchMiddle, 'form-notch-middle');
const notchTrailing = element('div');
Manipulator.addClass(notchTrailing, 'form-notch-trailing');
this._notchTrailing = element('div');
Manipulator.addClass(this._notchTrailing, 'form-notch-trailing');
notchWrapper.append(notchLeading);
notchWrapper.append(this._notchLeading);
notchWrapper.append(this._notchMiddle);
notchWrapper.append(notchTrailing);
notchWrapper.append(this._notchTrailing);
this._element.append(notchWrapper);
}
_applyNotchWidth() {
_applyNotch() {
this._notchMiddle.style.width = `${this._labelWidth}px`;
this._notchLeading.style.width = `${this._labelMarginLeft + 9}px`;
if (this._label === null) return;
this._label.style.marginLeft = `${this._labelMarginLeft}px`;
}
_applyActiveClass(event) {
const input = event ? event.target : SelectorEngine.findOne('input', this._element);
const input = event
? event.target
: SelectorEngine.findOne('input', this._element) ||
SelectorEngine.findOne('textarea', this._element);
if (input.value !== '') {
Manipulator.addClass(input, 'active');
}
}
_removeActiveClass(event) {
const input = event ? event.target : SelectorEngine.findOne('input', this._element);
const input = event
? event.target
: SelectorEngine.findOne('input', this._element) ||
SelectorEngine.findOne('textarea', this._element);
if (input.value === '') {
input.classList.remove('active');
}
@ -101,15 +133,23 @@ class Input {
instance._removeActiveClass(event);
};
}
static getInstance(element) {
return Data.getData(element, DATA_KEY);
}
}
EventHandler.on(document, 'focus', OUTLINE_INPUT, Input.applyActiveClass(new Input()));
EventHandler.on(document, 'input', OUTLINE_INPUT, Input.applyActiveClass(new Input()));
EventHandler.on(document, 'blur', OUTLINE_INPUT, Input.removeActiveClass(new Input()));
EventHandler.on(document, 'focus', OUTLINE_TEXTAREA, Input.applyActiveClass(new Input()));
EventHandler.on(document, 'input', OUTLINE_TEXTAREA, Input.applyActiveClass(new Input()));
EventHandler.on(document, 'blur', OUTLINE_TEXTAREA, Input.removeActiveClass(new Input()));
// auto-init
SelectorEngine.find(`.${CLASSNAME_WRAPPER}`).forEach((input) => {
new Input(input).init();
SelectorEngine.find(`.${CLASSNAME_WRAPPER}`).forEach((element) => {
new Input(element).init();
});
export default Input;

View File

@ -36,19 +36,19 @@ const BOOTSTRAP_COLORS = [
const TRANSITION_BREAK_OPACITY = 0.5;
const Default = {
centered: false,
color: '',
duration: '500ms',
radius: 0,
unbound: false,
rippleCentered: false,
rippleColor: '',
rippleDuration: '500ms',
rippleRadius: 0,
rippleUnbound: false,
};
const DefaultType = {
centered: 'boolean',
color: 'string',
duration: 'string',
radius: 'number',
unbound: 'boolean',
rippleCentered: 'boolean',
rippleColor: 'string',
rippleDuration: 'string',
rippleRadius: 'number',
rippleUnbound: 'boolean',
};
/**
@ -83,9 +83,9 @@ class Ripple {
dispose() {
Data.removeData(this._element, DATA_KEY);
EventHandler.off(this._element, 'click', '');
this._element = null;
this._options = null;
EventHandler.off(this._element, 'click', '');
}
// Private
@ -109,18 +109,20 @@ class Ripple {
}
_createRipple(event) {
const { offsetX, offsetY } = event;
const { layerX, layerY } = event;
const offsetX = layerX;
const offsetY = layerY;
const height = this._element.offsetHeight;
const width = this._element.offsetWidth;
const duration = this._durationToMsNumber(this._options.duration);
const duration = this._durationToMsNumber(this._options.rippleDuration);
const diameterOptions = {
offsetX: this._options.centered ? height / 2 : offsetX,
offsetY: this._options.centered ? width / 2 : offsetY,
offsetX: this._options.rippleCentered ? height / 2 : offsetX,
offsetY: this._options.rippleCentered ? width / 2 : offsetY,
height,
width,
};
const diameter = this._getDiameter(diameterOptions);
const radiusValue = this._options.radius || diameter / 2;
const radiusValue = this._options.rippleRadius || diameter / 2;
const opacity = {
delay: duration * TRANSITION_BREAK_OPACITY,
@ -128,10 +130,14 @@ class Ripple {
};
const styles = {
left: this._options.centered ? `${width / 2 - radiusValue}px` : `${offsetX - radiusValue}px`,
top: this._options.centered ? `${height / 2 - radiusValue}px` : `${offsetY - radiusValue}px`,
height: `${this._options.radius * 2 || diameter}px`,
width: `${this._options.radius * 2 || diameter}px`,
left: this._options.rippleCentered
? `${width / 2 - radiusValue}px`
: `${offsetX - radiusValue}px`,
top: this._options.rippleCentered
? `${height / 2 - radiusValue}px`
: `${offsetY - radiusValue}px`,
height: `${this._options.rippleRadius * 2 || diameter}px`,
width: `${this._options.rippleRadius * 2 || diameter}px`,
transitionDelay: `0s, ${opacity.delay}ms`,
transitionDuration: `${duration}ms, ${opacity.duration}ms`,
};
@ -139,13 +145,13 @@ class Ripple {
const rippleHTML = element('div');
this._createHTMLRipple({ wrapper: this._element, ripple: rippleHTML, styles });
this._removeHTMLRipple({ wrapper: this._element, ripple: rippleHTML, duration });
this._removeHTMLRipple({ ripple: rippleHTML, duration });
}
_createHTMLRipple({ wrapper, ripple, styles }) {
Object.keys(styles).forEach((property) => (ripple.style[property] = styles[property]));
ripple.classList.add(CLASSNAME_RIPPLE_WAVE);
if (this._options.color !== '') {
if (this._options.rippleColor !== '') {
this._removeOldColorClasses(wrapper);
this._addColor(ripple, wrapper);
}
@ -154,9 +160,11 @@ class Ripple {
this._appendRipple(ripple, wrapper);
}
_removeHTMLRipple({ wrapper, ripple, duration }) {
_removeHTMLRipple({ ripple, duration }) {
setTimeout(() => {
wrapper.removeChild(ripple);
if (ripple) {
ripple.remove();
}
}, duration);
}
@ -213,7 +221,7 @@ class Ripple {
}
_appendRipple(target, parent) {
const FIX_ADD_RIPPLE_EFFECT = 50; // We need delay for active animations
const FIX_ADD_RIPPLE_EFFECT = 50; // delay for active animations
parent.appendChild(target);
setTimeout(() => {
Manipulator.addClass(target, 'active');
@ -221,7 +229,7 @@ class Ripple {
}
_toggleUnbound(target) {
if (this._options.unbound === true) {
if (this._options.rippleUnbound === true) {
Manipulator.addClass(target, CLASSNAME_UNBOUND);
} else {
target.classList.remove(CLASSNAME_UNBOUND);
@ -230,13 +238,16 @@ class Ripple {
_addColor(target, parent) {
const IS_BOOTSTRAP_COLOR = BOOTSTRAP_COLORS.find(
(color) => color === this._options.color.toLowerCase()
(color) => color === this._options.rippleColor.toLowerCase()
);
if (IS_BOOTSTRAP_COLOR) {
Manipulator.addClass(parent, `${CLASSNAME_RIPPLE}-${this._options.color.toLowerCase()}`);
Manipulator.addClass(
parent,
`${CLASSNAME_RIPPLE}-${this._options.rippleColor.toLowerCase()}`
);
} else {
const rgbValue = this._colorToRGB(this._options.color).join(',');
const rgbValue = this._colorToRGB(this._options.rippleColor).join(',');
const gradientImage = GRADIENT.split('{{color}}').join(`${rgbValue}`);
target.style.backgroundImage = `radial-gradient(circle, ${gradientImage})`;
}

View File

@ -0,0 +1,38 @@
export const LEFT_ARROW = 37;
export const UP_ARROW = 38;
export const RIGHT_ARROW = 39;
export const DOWN_ARROW = 40;
export const HOME = 36;
export const END = 35;
export const PAGE_UP = 33;
export const PAGE_DOWN = 34;
export const ENTER = 13;
export const SPACE = 32;
export const ESCAPE = 27;
export const TAB = 9;
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;

View File

@ -1,6 +1,6 @@
// animations
@keyframes dropIn {
@keyframes drop-in {
0% {
opacity: 0;
transform: scale(0);
@ -11,13 +11,13 @@
}
}
.dropIn {
.drop-in {
transform-origin: top center;
animation-timing-function: cubic-bezier(0.34, 1.61, 0.7, 1);
animation-name: dropIn;
animation-name: drop-in;
}
@keyframes dropOut {
@keyframes drop-out {
0% {
opacity: 1;
transform: scale(1);
@ -28,13 +28,13 @@
}
}
.dropOut {
.drop-out {
transform-origin: top center;
animation-timing-function: cubic-bezier(0.34, 1.61, 0.7, 1);
animation-name: dropOut;
animation-name: drop-out;
}
@keyframes flyIn {
@keyframes fly-in {
0% {
opacity: 0;
transform: scale3d(0.3, 0.3, 0.3);
@ -58,12 +58,12 @@
}
}
.flyIn {
animation-name: flyIn;
.fly-in {
animation-name: fly-in;
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
@keyframes flyInUp {
@keyframes fly-in-up {
0% {
opacity: 0;
transform: translate3d(0, 1500px, 0);
@ -83,12 +83,12 @@
}
}
.flyInUp {
animation-name: flyInUp;
.fly-in-up {
animation-name: fly-in-up;
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
@keyframes flyInDown {
@keyframes fly-in-down {
0% {
opacity: 0;
transform: translate3d(0, -1500px, 0);
@ -108,12 +108,12 @@
}
}
.flyInDown {
animation-name: flyInDown;
.fly-in-down {
animation-name: fly-in-down;
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
@keyframes flyInLeft {
@keyframes fly-in-left {
0% {
opacity: 0;
transform: translate3d(1500px, 0, 0);
@ -133,12 +133,12 @@
}
}
.flyInLeft {
animation-name: flyInLeft;
.fly-in-left {
animation-name: fly-in-left;
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
@keyframes flyInRight {
@keyframes fly-in-right {
0% {
opacity: 0;
transform: translate3d(-1500px, 0, 0);
@ -158,12 +158,12 @@
}
}
.flyInRight {
animation-name: flyInRight;
.fly-in-right {
animation-name: fly-in-right;
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
@keyframes flyOut {
@keyframes fly-out {
20% {
transform: scale3d(0.9, 0.9, 0.9);
}
@ -178,12 +178,12 @@
}
}
.flyOut {
animation-name: flyOut;
.fly-out {
animation-name: fly-out;
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
@keyframes flyOutUp {
@keyframes fly-out-up {
20% {
transform: translate3d(0, 10px, 0);
}
@ -198,12 +198,12 @@
}
}
.flyOutUp {
animation-name: flyOutUp;
.fly-out-up {
animation-name: fly-out-up;
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
@keyframes flyOutDown {
@keyframes fly-out-down {
20% {
transform: translate3d(0, -10px, 0);
}
@ -218,12 +218,12 @@
}
}
.flyOutDown {
animation-name: flyOutDown;
.fly-out-down {
animation-name: fly-out-down;
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
@keyframes flyOutLeft {
@keyframes fly-out-left {
20% {
opacity: 1;
transform: translate3d(-20px, 0, 0);
@ -234,12 +234,12 @@
}
}
.flyOutLeft {
animation-name: flyOutLeft;
.fly-out-left {
animation-name: fly-out-left;
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
@keyframes flyOutRight {
@keyframes fly-out-right {
20% {
opacity: 1;
transform: translate3d(20px, 0, 0);
@ -250,12 +250,12 @@
}
}
.flyOutRight {
animation-name: flyOutRight;
.fly-out-right {
animation-name: fly-out-right;
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
@keyframes browseIn {
@keyframes browse-in {
0% {
transform: scale(0.8) translateZ(0px);
z-index: -1;
@ -276,11 +276,11 @@
}
}
.browseIn {
animation-name: browseIn;
.browse-in {
animation-name: browse-in;
}
@keyframes browseOutLeft {
@keyframes browse-out-left {
0% {
z-index: 999;
transform: translateX(0%) rotateY(0deg) rotateX(0deg);
@ -299,12 +299,12 @@
}
}
.browseOut,
.browseOutLeft {
animation-name: browseOutLeft;
.browse-out,
.browse-out-left {
animation-name: browse-out-left;
}
@keyframes browseOutRight {
@keyframes browse-out-right {
0% {
z-index: 999;
transform: translateX(0%) rotateY(0deg) rotateX(0deg);
@ -323,8 +323,8 @@
}
}
.browseOutRight {
animation-name: browseOutRight;
.browse-out-right {
animation-name: browse-out-right;
}
@keyframes jiggle {

View File

@ -1,8 +1,9 @@
// animations
.animated {
.animation {
animation-duration: 1s;
animation-fill-mode: both;
padding: auto;
&.infinite {
animation-iteration-count: infinite;
}
@ -36,13 +37,13 @@
}
@media (prefers-reduced-motion) {
.animated {
.animation {
transition: none !important;
animation: unset !important;
}
}
@keyframes fadeIn {
@keyframes fade-in {
from {
opacity: 0;
}
@ -52,11 +53,11 @@
}
}
.fadeIn {
animation-name: fadeIn;
.fade-in {
animation-name: fade-in;
}
@keyframes fadeInDown {
@keyframes fade-in-down {
from {
opacity: 0;
transform: translate3d(0, -100%, 0);
@ -68,11 +69,11 @@
}
}
.fadeInDown {
animation-name: fadeInDown;
.fade-in-down {
animation-name: fade-in-down;
}
@keyframes fadeInLeft {
@keyframes fade-in-left {
from {
opacity: 0;
transform: translate3d(-100%, 0, 0);
@ -84,11 +85,11 @@
}
}
.fadeInLeft {
animation-name: fadeInLeft;
.fade-in-left {
animation-name: fade-in-left;
}
@keyframes fadeInRight {
@keyframes fade-in-right {
from {
opacity: 0;
transform: translate3d(100%, 0, 0);
@ -100,11 +101,11 @@
}
}
.fadeInRight {
animation-name: fadeInRight;
.fade-in-right {
animation-name: fade-in-right;
}
@keyframes fadeInUp {
@keyframes fade-in-up {
from {
opacity: 0;
transform: translate3d(0, 100%, 0);
@ -116,11 +117,11 @@
}
}
.fadeInUp {
animation-name: fadeInUp;
.fade-in-up {
animation-name: fade-in-up;
}
@keyframes fadeOut {
@keyframes fade-out {
from {
opacity: 1;
}
@ -130,11 +131,11 @@
}
}
.fadeOut {
animation-name: fadeOut;
.fade-out {
animation-name: fade-out;
}
@keyframes fadeOutDown {
@keyframes fade-out-down {
from {
opacity: 1;
}
@ -145,11 +146,11 @@
}
}
.fadeOutDown {
animation-name: fadeOutDown;
.fade-out-down {
animation-name: fade-out-down;
}
@keyframes fadeOutLeft {
@keyframes fade-out-left {
from {
opacity: 1;
}
@ -160,11 +161,11 @@
}
}
.fadeOutLeft {
animation-name: fadeOutLeft;
.fade-out-left {
animation-name: fade-out-left;
}
@keyframes fadeOutRight {
@keyframes fade-out-right {
from {
opacity: 1;
}
@ -175,11 +176,11 @@
}
}
.fadeOutRight {
animation-name: fadeOutRight;
.fade-out-right {
animation-name: fade-out-right;
}
@keyframes fadeOutUp {
@keyframes fade-out-up {
from {
opacity: 1;
}
@ -190,11 +191,11 @@
}
}
.fadeOutUp {
animation-name: fadeOutUp;
.fade-out-up {
animation-name: fade-out-up;
}
@keyframes slideInDown {
@keyframes slide-in-down {
from {
visibility: visible;
transform: translate3d(0, -100%, 0);
@ -205,11 +206,11 @@
}
}
.slideInDown {
animation-name: slideInDown;
.slide-in-down {
animation-name: slide-in-down;
}
@keyframes slideInLeft {
@keyframes slide-in-left {
from {
visibility: visible;
transform: translate3d(-100%, 0, 0);
@ -220,11 +221,11 @@
}
}
.slideInLeft {
animation-name: slideInLeft;
.slide-in-left {
animation-name: slide-in-left;
}
@keyframes slideInRight {
@keyframes slide-in-right {
from {
visibility: visible;
transform: translate3d(100%, 0, 0);
@ -235,11 +236,11 @@
}
}
.slideInRight {
animation-name: slideInRight;
.slide-in-right {
animation-name: slide-in-right;
}
@keyframes slideInUp {
@keyframes slide-in-up {
from {
visibility: visible;
transform: translate3d(0, 100%, 0);
@ -250,11 +251,11 @@
}
}
.slideInUp {
animation-name: slideInUp;
.slide-in-up {
animation-name: slide-in-up;
}
@keyframes slideOutDown {
@keyframes slide-out-down {
from {
transform: translate3d(0, 0, 0);
}
@ -265,11 +266,11 @@
}
}
.slideOutDown {
animation-name: slideOutDown;
.slide-out-down {
animation-name: slide-out-down;
}
@keyframes slideOutLeft {
@keyframes slide-out-left {
from {
transform: translate3d(0, 0, 0);
}
@ -280,11 +281,11 @@
}
}
.slideOutLeft {
animation-name: slideOutLeft;
.slide-out-left {
animation-name: slide-out-left;
}
@keyframes slideOutRight {
@keyframes slide-out-right {
from {
transform: translate3d(0, 0, 0);
}
@ -295,11 +296,11 @@
}
}
.slideOutRight {
animation-name: slideOutRight;
.slide-out-right {
animation-name: slide-out-right;
}
@keyframes slideOutUp {
@keyframes slide-out-up {
from {
transform: translate3d(0, 0, 0);
}
@ -310,11 +311,67 @@
}
}
.slideOutUp {
animation-name: slideOutUp;
.slide-out-up {
animation-name: slide-out-up;
}
@keyframes zoomIn {
@keyframes slide-down {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(0, 100%, 0);
}
}
.slide-down {
animation-name: slide-down;
}
@keyframes slide-left {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(-100%, 0, 0);
}
}
.slide-left {
animation-name: slide-left;
}
@keyframes slide-right {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(100%, 0, 0);
}
}
.slide-right {
animation-name: slide-right;
}
@keyframes slide-up {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(0, -100%, 0);
}
}
.slide-up {
animation-name: slide-up;
}
@keyframes zoom-in {
from {
opacity: 0;
transform: scale3d(0.3, 0.3, 0.3);
@ -325,11 +382,11 @@
}
}
.zoomIn {
animation-name: zoomIn;
.zoom-in {
animation-name: zoom-in;
}
@keyframes zoomOut {
@keyframes zoom-out {
from {
opacity: 1;
}
@ -344,8 +401,8 @@
}
}
.zoomOut {
animation-name: zoomOut;
.zoom-out {
animation-name: zoom-out;
}
@keyframes tada {

View File

@ -1,12 +1,12 @@
// Badge
.badge-dot {
position: absolute;
border-radius: 4.5px;
height: 9px;
border-radius: $badge-dot-border-radius;
height: $badge-dot-height;
min-width: 0;
padding: 0;
width: 9px;
margin-left: -3px;
width: $badge-dot-width;
margin-left: $badge-dot-ml;
&:empty {
display: inline-block;
}
@ -14,6 +14,6 @@
.badge-notification {
position: absolute;
margin-top: -5px;
margin-left: -5px;
}
margin-top: $badge-notification-mt;
margin-left: $badge-notification-ml;
}

View File

@ -0,0 +1,24 @@
// Breadcrumb
.navbar {
.breadcrumb {
background-color: transparent;
margin-bottom: 0;
.breadcrumb-item {
a {
color: rgba(0, 0, 0, 0.55);
transition: color 0.15s ease-in-out;
&:hover,
&:focus {
color: rgba(0, 0, 0, 0.7);
}
}
+ .breadcrumb-item {
&:before {
color: rgba(0, 0, 0, 0.55);
}
}
}
}
}

View File

@ -2,9 +2,8 @@
.btn-group {
box-shadow: $btn-box-shadow;
border-radius: calc(0.25rem - 1px);
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
border-radius: $btn-group-border-radius;
transition: $btn-group-transition;
&:hover {
box-shadow: $btn-hover-box-shadow;

View File

@ -2,17 +2,17 @@
.btn {
font-family: $btn-font-family;
line-height: 1.5;
line-height: $btn-line-height;
text-transform: uppercase;
vertical-align: bottom;
padding-top: 10px;
padding-bottom: 8px;
padding-top: $btn-padding-top;
padding-bottom: $btn-padding-bottom;
border: 0;
box-shadow: $btn-box-shadow;
font-size: 12px;
padding-left: 24px;
padding-right: 24px;
font-weight: 500;
font-size: $btn-font-size;
padding-left: $btn-padding-left;
padding-right: $btn-padding-right;
font-weight: $btn-font-weight;
&:hover {
box-shadow: $btn-hover-box-shadow;
@ -43,13 +43,13 @@
// Buttons outline
[class*='btn-outline-'] {
border-width: 2px;
border-width: $btn-border-width;
border-style: solid;
box-shadow: none;
padding-top: 8px;
padding-bottom: 6px;
padding-left: 22px;
padding-right: 22px;
padding-top: $btn-outline-padding-top;
padding-bottom: $btn-outline-padding-bottom;
padding-left: $btn-outline-padding-left;
padding-right: $btn-outline-padding-right;
&:hover {
box-shadow: none;
@ -78,17 +78,17 @@
}
&.btn-sm {
padding-top: 4px;
padding-bottom: 3px;
padding-right: 14px;
padding-left: 14px;
padding-top: $btn-outline-padding-top-sm;
padding-bottom: $btn-outline-padding-bottom-sm;
padding-right: $btn-outline-padding-right-sm;
padding-left: $btn-outline-padding-left-sm;
}
&.btn-lg {
padding-top: 10px;
padding-bottom: 9px;
padding-right: 25px;
padding-left: 25px;
padding-top: $btn-outline-padding-top-lg;
padding-bottom: $btn-outline-padding-bottom-lg;
padding-right: $btn-outline-padding-right-lg;
padding-left: $btn-outline-padding-left-lg;
}
}
@ -112,23 +112,22 @@
.btn-lg {
// @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg);
line-height: 1.6;
padding-top: 12px;
padding-bottom: 11px;
font-size: 14px;
padding-left: 27px;
padding-right: 27px;
line-height: $btn-line-height-lg;
font-size: $btn-font-size-lg;
padding-top: $btn-padding-top-lg;
padding-bottom: $btn-padding-bottom-lg;
padding-right: $btn-padding-right-lg;
padding-left: $btn-padding-left-lg;
}
.btn-sm {
// @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm);
line-height: 1.5;
font-size: 12px;
padding-top: 6px;
padding-bottom: 5px;
padding-right: 16px;
padding-left: 16px;
line-height: $btn-line-height-sm;
font-size: $btn-font-size-sm;
padding-top: $btn-padding-top-sm;
padding-bottom: $btn-padding-bottom-sm;
padding-right: $btn-padding-right-sm;
padding-left: $btn-padding-left-sm;
}
// Link buttons
@ -142,24 +141,24 @@
&:hover {
box-shadow: none;
text-decoration: none;
background-color: #f5f5f5;
background-color: $btn-link-bgc;
}
&:focus,
&.focus {
box-shadow: none;
text-decoration: none;
background-color: #f5f5f5;
background-color: $btn-link-bgc;
}
&:active,
&.active {
box-shadow: none;
background-color: #f5f5f5;
background-color: $btn-link-bgc;
&:focus {
box-shadow: none;
background-color: #f5f5f5;
background-color: $btn-link-bgc;
}
}
@ -171,5 +170,40 @@
}
.btn-rounded {
border-radius: 10rem;
border-radius: $btn-rounded-border-radius;
}
.btn-floating {
border-radius: 50%;
padding: 0;
width: 36px;
height: 36px;
.fas,
.far,
.fab {
line-height: 36px;
}
&.btn-sm {
width: 29px;
height: 29px;
.fas,
.far,
.fab {
line-height: 29px;
}
}
&.btn-lg {
width: 45px;
height: 45px;
.fas,
.far,
.fab {
line-height: 45px;
}
}
}

View File

@ -0,0 +1,9 @@
// Footer
.footer {
bottom: 0;
}
.footer-copyright {
background-color: rgba($black, 0.2);
}

View File

@ -0,0 +1,53 @@
//
// Images
//
.bg-image {
position: relative;
overflow: hidden;
background-repeat: no-repeat;
background-size: cover;
background-position: center center;
}
.mask {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
background-attachment: fixed;
}
.overlay {
opacity: 0;
transition: all 0.3s ease-in-out;
&:hover {
opacity: 1;
}
}
.zoom {
img,
video {
transition: all 0.3s linear;
}
&:hover {
img,
video {
transform: scale(1.1);
}
}
}
.hoverable {
box-shadow: none;
transition: all 0.3s ease-in-out;
&:hover {
box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
transition: all 0.3s ease-in-out;
}
}

View File

@ -1,5 +1,68 @@
// Modal
.modal-content {
border: 0;
box-shadow: $box-shadow-1;
}
box-shadow: $box-shadow-3;
}
.modal {
.modal-dialog {
width: 100%;
@media (min-width: 768px) {
&.modal-top {
top: 0;
}
&.modal-left {
left: 0;
}
&.modal-right {
right: 0;
}
&.modal-bottom {
bottom: 0;
}
&.modal-top-left {
top: 10px;
left: 10px;
}
&.modal-top-right {
top: 10px;
right: 10px;
}
&.modal-bottom-left {
bottom: 10px;
left: 10px;
}
&.modal-bottom-right {
right: 10px;
bottom: 10px;
}
}
}
&.fade {
&.top:not(.show) .modal-dialog {
transform: translate3d(0, -25%, 0);
}
&.right:not(.show) .modal-dialog {
transform: translate3d(25%, 0, 0);
}
&.bottom:not(.show) .modal-dialog {
transform: translate3d(0, 25%, 0);
}
&.left:not(.show) .modal-dialog {
transform: translate3d(-25%, 0, 0);
}
}
@media (min-width: 992px) {
.modal-side {
position: absolute;
right: 10px;
bottom: 10px;
margin: 0;
}
.modal-frame {
position: absolute;
max-width: 100%;
margin: 0;
}
}
}

View File

@ -1,8 +1,8 @@
// Navbar
.navbar {
// box-shadow: $box-shadow-2;
box-shadow: $box-shadow-3;
padding-top: 0.5625rem;
}
.navbar-toggler {

View File

@ -2,6 +2,7 @@
position: relative;
overflow: hidden;
display: inline-block;
vertical-align: bottom;
}
.ripple-surface-unbound {

View File

@ -5,7 +5,7 @@
// Grays
$white: #fff;
$gray-50: #eff0f4;
$gray-50: #fbfbfb;
$gray-100: #f5f5f5;
$gray-200: #eeeeee;
$gray-300: #e0e0e0;
@ -289,7 +289,7 @@ $success: #00b74a;
$info: #39c0ed;
$warning: #ffa900;
$danger: #f93154;
$light: $gray-100;
$light: $gray-50;
$dark: $gray-900;
$theme-colors: (
@ -301,6 +301,8 @@ $theme-colors: (
'danger': $danger,
'light': $light,
'dark': $dark,
'white': $white,
'black': $black,
);
$note: () !default;
@ -342,13 +344,6 @@ $body-color: $gray-800;
// Components
// $box-shadow-0: none;
// $box-shadow-1: 0 2px 5px 0 rgba(0, 0, 0, 0.05), 0 2px 10px 0 rgba(0, 0, 0, 0.05);
// $box-shadow-2: 0 4px 10px 0 rgba(0, 0, 0, 0.05), 0 4px 20px 0 rgba(0, 0, 0, 0.05);
// $box-shadow-3: 0 6px 15px 2px rgba(0, 0, 0, 0.05), 0 6px 30px 2px rgba(0, 0, 0, 0.05);
// $box-shadow-4: 0 8px 20px 4px rgba(0, 0, 0, 0.05), 0 8px 40px 4px rgba(0, 0, 0, 0.05);
// $box-shadow-5: 0 10px 25px 6px rgba(0, 0, 0, 0.05), 0 10px 50px 6px rgba(0, 0, 0, 0.05);
$box-shadow-0: none;
$box-shadow-1: 0 2px 10px 0 rgba(0, 0, 0, 0.05);
$box-shadow-2: 0 5px 15px 0 rgba(0, 0, 0, 0.05);
@ -356,11 +351,11 @@ $box-shadow-3: 0 10px 20px 0 rgba(0, 0, 0, 0.05);
$box-shadow-4: 0 15px 30px 0 rgba(0, 0, 0, 0.05);
$box-shadow-5: 0 20px 40px 0 rgba(0, 0, 0, 0.05);
$box-shadow-1-strong: 0 2px 5px 0 rgba(0, 0, 0, 0.25), 0 2px 10px 0 rgba(0, 0, 0, 0.25);
$box-shadow-2-strong: 0 4px 10px 0 rgba(0, 0, 0, 0.25), 0 4px 20px 0 rgba(0, 0, 0, 0.25);
$box-shadow-3-strong: 0 6px 15px 2px rgba(0, 0, 0, 0.25), 0 6px 30px 2px rgba(0, 0, 0, 0.25);
$box-shadow-4-strong: 0 8px 20px 4px rgba(0, 0, 0, 0.25), 0 8px 40px 4px rgba(0, 0, 0, 0.25);
$box-shadow-5-strong: 0 10px 25px 6px rgba(0, 0, 0, 0.25), 0 10px 50px 6px rgba(0, 0, 0, 0.25);
$box-shadow-1-strong: 0px 2px 5px 0px rgba(0, 0, 0, 0.25), 0px 3px 10px 0px rgba(0, 0, 0, 0.2);
$box-shadow-2-strong: 0px 4px 8px 0px rgba(0, 0, 0, 0.25), 0px 5px 15px 2px rgba(0, 0, 0, 0.2);
$box-shadow-3-strong: 0px 6px 11px 0px rgba(0, 0, 0, 0.25), 0px 7px 20px 3px rgba(0, 0, 0, 0.2);
$box-shadow-4-strong: 0px 6px 14px 0px rgba(0, 0, 0, 0.25), 0px 10px 30px 4px rgba(0, 0, 0, 0.2);
$box-shadow-5-strong: 0px 6px 20px 0px rgba(0, 0, 0, 0.25), 0px 12px 40px 5px rgba(0, 0, 0, 0.2);
$shadows-light: (
'0': $box-shadow-0,
@ -386,12 +381,64 @@ $font-family-base: var(--mdb-font-roboto);
$line-height-base: 1.6;
// Badge
$badge-dot-border-radius: 4.5px;
$badge-dot-height: 9px;
$badge-dot-width: 9px;
$badge-dot-ml: -3px;
$badge-notification-mt: -5px;
$badge-notification-ml: -5px;
// Buttons
$btn-line-height: 1.6;
$btn-line-height: 1.5;
$btn-padding-top: 10px;
$btn-padding-bottom: 8px;
$btn-font-size: 12px;
$btn-padding-left: 24px;
$btn-padding-right: 24px;
$btn-font-weight: 500;
$btn-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2), 0 2px 10px 0 rgba(0, 0, 0, 0.1);
$btn-hover-box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.2), 0 4px 20px 0 rgba(0, 0, 0, 0.1);
$btn-focus-box-shadow: $btn-hover-box-shadow;
$btn-active-box-shadow: $btn-hover-box-shadow;
$btn-border-width: 2px;
$btn-padding-top: 0.4375rem;
$btn-outline-padding-top: 8px;
$btn-outline-padding-bottom: 6px;
$btn-outline-padding-left: 22px;
$btn-outline-padding-right: 22px;
$btn-outline-padding-top-sm: 4px;
$btn-outline-padding-bottom-sm: 3px;
$btn-outline-padding-right-sm: 14px;
$btn-outline-padding-left-sm: 14px;
$btn-outline-padding-top-lg: 10px;
$btn-outline-padding-bottom-lg: 9px;
$btn-outline-padding-right-lg: 25px;
$btn-outline-padding-left-lg: 25px;
$btn-line-height-lg: 1.6;
$btn-font-size-lg: 14px;
$btn-padding-top-lg: 12px;
$btn-padding-bottom-lg: 11px;
$btn-padding-right-lg: 27px;
$btn-padding-left-lg: 27px;
$btn-line-height-sm: $btn-line-height;
$btn-font-size-sm: 12px;
$btn-padding-top-sm: 6px;
$btn-padding-bottom-sm: 5px;
$btn-padding-right-sm: 16px;
$btn-padding-left-sm: 16px;
$btn-link-bgc: #f5f5f5;
$btn-rounded-border-radius: 10rem;
// Button group
$btn-group-border-radius: calc(0.25rem - 1px);
$btn-group-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;

View File

@ -1,16 +1,103 @@
//
// Check/radio
// Material styles for check / radio / switch
//
.form-check {
.form-check-input {
margin-left: 1.79rem * -1;
&[type='radio'] {
margin-left: 1.85rem * -1;
}
}
}
.form-check-input {
border: solid 2px;
border-color: rgba(0, 0, 0, 0.6);
width: 18px;
height: 18px;
background-color: #fff;
border: 2px solid rgb(117, 117, 117);
&:before {
content: '';
position: absolute;
z-index: -1;
box-shadow: 0px 0px 0px 13px transparent;
border-radius: 50%;
width: 14px;
height: 14px;
background-color: transparent;
opacity: 0;
pointer-events: none;
transform: scale(0);
}
&:hover {
cursor: pointer;
&:before {
opacity: 0.04;
box-shadow: 0px 0px 0px 13px rgba(0, 0, 0, 0.6);
}
}
&:focus {
box-shadow: none;
border-color: rgb(117, 117, 117);
transition: border-color 0.2s;
&:before {
opacity: 0.12;
box-shadow: 0px 0px 0px 13px rgba(0, 0, 0, 0.6);
transform: scale(1);
transition: box-shadow 0.2s, transform 0.2s;
}
}
&:checked {
border-color: $primary;
&:before {
opacity: 0.16;
}
&:after {
content: '';
position: absolute;
}
&:focus {
border-color: $primary;
&:before {
box-shadow: 0px 0px 0px 13px $primary;
transform: scale(1);
transition: box-shadow 0.2s, transform 0.2s;
}
}
}
&[type='checkbox'] {
border-radius: 2px;
&:checked {
background-image: none;
background-color: $primary;
&:after {
display: block;
transform: rotate(45deg);
border-width: 2px;
border-color: #fff;
width: 6px;
height: 13px;
border-style: solid;
border-top: 0;
border-left: 0;
margin-left: 4px;
margin-top: -1px;
}
&:focus {
background-color: $primary;
}
@ -18,54 +105,19 @@
}
&[type='radio'] {
border-radius: 50%;
width: 20px;
height: 20px;
&:before {
box-shadow: 1px 1px 0px 13px rgba(0, 0, 0, 0.6);
}
&:checked {
background-image: none;
background-color: #fff;
&:focus {
background-color: #fff;
}
}
}
&:hover {
cursor: pointer;
}
&:focus {
border-color: rgba(0, 0, 0, 0.6);
box-shadow: none;
}
&:checked {
&:focus {
border-color: $primary;
}
&[type='checkbox'] {
background-image: none;
&:before {
content: '';
transform: rotate(45deg);
position: absolute;
margin-left: 5px;
width: 6px;
height: 13px;
border-width: 2px;
border-style: solid;
border-top: 0;
border-left: 0;
border-color: #fff;
z-index: 10000;
transition: border-color 0.2s, background-color 0.2s;
}
}
&[type='radio'] {
background-image: none;
&:before {
content: '';
position: absolute;
&:after {
border-radius: 50%;
width: 10px;
height: 10px;
@ -75,6 +127,14 @@
margin-left: 3px;
transition: border-color;
}
&:focus {
background-color: #fff;
&:before {
box-shadow: 1px 1px 0px 13px $primary;
}
}
}
}
}
@ -86,6 +146,7 @@
}
.form-switch {
padding-left: 1.85rem;
.form-check-input {
background-image: none;
border-width: 0px;
@ -93,8 +154,10 @@
width: 36px;
height: 14px;
background-color: rgba(0, 0, 0, 0.38);
margin-top: 0.35rem;
margin-right: 0.7rem;
&:before {
&:after {
content: '';
position: absolute;
border: none;
@ -111,6 +174,12 @@
&:focus {
background-image: none;
&:before {
box-shadow: 3px -1px 0px 13px rgba(0, 0, 0, 0.6);
transform: scale(1);
transition: box-shadow 0.2s, transform 0.2s;
}
}
&:checked {
@ -118,12 +187,19 @@
&:focus {
background-image: none;
&:before {
margin-left: 17px;
box-shadow: 3px -1px 0px 13px $primary;
transform: scale(1);
transition: box-shadow 0.2s, transform 0.2s;
}
}
&[type='checkbox'] {
background-image: none;
&:before {
&:after {
content: '';
position: absolute;
border: none;

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,3 @@
//
// Form text
//
.form-text {
margin-top: $form-text-margin-top;
@include font-size($form-text-font-size);
font-style: $form-text-font-style;
font-weight: $form-text-font-weight;
color: $form-text-color;
}

View File

@ -7,8 +7,10 @@
min-height: calc(1.5em + 0.33rem + 2px);
padding-top: 0.27rem;
padding-bottom: 0.27rem;
transition: all 0.2s linear;
&:focus {
transition: all 0.2s linear;
border-color: $primary;
outline: 0;
box-shadow: inset 0 0 0 1px $primary;
@ -54,5 +56,9 @@
.input-group-text {
border-left: 0;
}
input + .input-group-text {
border: 0;
border-left: 1px solid #bdbdbd;
}
}
}

View File

@ -65,24 +65,19 @@
}
}
.was-validated
.form-check
.form-check-input[type='checkbox']:valid:checked
+ .form-check-label:before,
.was-validated
.form-check
.form-check-input[type='checkbox'].is-valid:checked
+ .form-check-label:before {
.was-validated .form-check-input.is-valid:checked[type='checkbox']:before {
border-color: #fff;
}
.was-validated .form-check-input.is-valid:checked[type='checkbox'] {
background-color: $success;
border-color: $success;
}
.was-validated .form-check .form-check-input[type='checkbox']:invalid + .form-check-label:before,
.was-validated
.form-check
.form-check-input[type='checkbox'].is-invalid
+ .form-check-label:before {
background-color: $white;
.was-validated .form-check-input.is-invalid:checked[type='checkbox']:before {
border-color: #fff;
}
.was-validated .form-check-input.is-invalid:checked[type='checkbox'] {
background-color: $danger;
border-color: $danger;
}
@ -93,12 +88,38 @@
margin-bottom: 1rem;
}
.was-validated .form-check-input:valid:checked,
.form-check-input.is-valid:checked {
background-color: $success;
.was-validated .form-check-input:invalid:focus,
.form-check-input.is-invalid:focus {
box-shadow: none;
}
.was-validated .form-check-input:invalid,
.form-check-input.is-invalid {
background-color: $danger;
.was-validated .form-check-input:valid:focus,
.form-check-input.valid:focus {
box-shadow: none;
}
.was-validated .form-check-input:valid:checked:focus:before {
box-shadow: 0px 0px 0px 13px $success;
}
.was-validated .form-check-input:invalid:checked:focus:before {
box-shadow: 0px 0px 0px 13px $danger;
}
.was-validated .form-check-input[type='checkbox']:checked:valid:focus,
.form-check-input[type='checkbox'].valid:checked:focus {
background-color: $success;
border-color: $success;
}
.was-validated .input-group .form-control:invalid,
.was-validated .input-group .form-control.is-invalid,
.was-validated .input-group .form-control:valid,
.was-validated .input-group .form-control.is-valid {
margin-bottom: 0;
}
.was-validated .input-group .valid-feedback,
.was-validated .input-group .invalid-feedback {
margin-top: 2.5rem;
}

View File

@ -58,10 +58,10 @@
@import './free/colors';
@import './free/shadows';
@import './free/flag';
@import './free/images';
// MDB FORMS
@import './free/forms/form-control';
@import './free/forms/form-outline';
@import './free/forms/form-select';
@import './free/forms/form-check';
@import './free/forms/form-file';
@ -76,6 +76,7 @@
@import './free/nav';
@import './free/navbar';
@import './free/card';
@import './free/breadcrumb';
@import './free/pagination';
@import './free/badge';
@import './free/alert';
@ -87,3 +88,4 @@
@import './free/scrollspy';
@import './free/animate';
@import './free/ripple';
@import './free/footer';