Laravel 11, Vuexy Admin 10.3, by admin@koneko.mx

This commit is contained in:
2025-01-25 04:23:40 -06:00
parent c3045b43b1
commit 64d505910f
1283 changed files with 140198 additions and 0 deletions

View File

@ -0,0 +1,7 @@
import { AutoFocus } from '@form-validation/plugin-auto-focus';
try {
FormValidation.plugins.AutoFocus = AutoFocus;
} catch (e) {}
export { AutoFocus };

View File

@ -0,0 +1,7 @@
import { Bootstrap5 } from '@form-validation/plugin-bootstrap5';
try {
FormValidation.plugins.Bootstrap5 = Bootstrap5;
} catch (e) {}
export { Bootstrap5 };

View File

@ -0,0 +1,4 @@
@import '@form-validation/core/lib/styles/index';
@import '@form-validation/plugin-framework/lib/styles/index';
@import '@form-validation/plugin-message/lib/styles/index';
@import '@form-validation/plugin-bootstrap5/lib/styles/index';

View File

@ -0,0 +1,7 @@
import FormValidation from '@form-validation/bundle/popular';
try {
window.FormValidation = FormValidation;
} catch (e) {}
export { FormValidation };

View File

@ -0,0 +1,105 @@
export const validationMessages = {
default: 'Por favor, introduce un valor válido.',
// Validación de campo obligatorio
notEmpty: 'Este campo no puede estar vacío.',
// Validación de direcciones de correo electrónico
emailAddress: 'Por favor, introduce una dirección de correo electrónico válida.',
// Validación de números
numeric: 'Por favor, introduce un número válido.',
// Validación de URL
uri: 'Por favor, introduce una URL válida.',
// Validación de rango de longitud de texto
stringLength: 'Por favor, introduce un valor entre %s y %s caracteres.',
// Validación de tamaño mínimo
greaterThan: 'Por favor, introduce un valor mayor o igual a %s.',
// Validación de tamaño máximo
lessThan: 'Por favor, introduce un valor menor o igual a %s.',
// Validación de rango entre dos valores
between: 'Por favor, introduce un valor entre %s y %s.',
// Validación de coincidencia de valores
identical: 'Los valores deben coincidir.',
// Validación de expresiones regulares
regexp: 'El formato del valor no es válido.',
// Validación de números de tarjeta de crédito
creditCard: 'Por favor, introduce un número de tarjeta de crédito válido.',
// Validación de direcciones IP
ip: 'Por favor, introduce una dirección IP válida.',
// Validación de direcciones MAC
mac: 'Por favor, introduce una dirección MAC válida.',
// Validación de números de teléfono
phone: 'Por favor, introduce un número de teléfono válido.',
// Validación de códigos postales
zipCode: 'Por favor, introduce un código postal válido.',
// Validación de datos remotos
remote: 'Por favor, corrige este campo.',
// Validación de archivo cargado (file upload)
file: {
size: 'Por favor, selecciona un archivo con un tamaño máximo de %s KB.',
type: 'Por favor, selecciona un archivo de tipo válido (%s).'
},
// Validación de fecha
date: 'Por favor, introduce una fecha válida en el formato %s.',
// Validación de valores únicos en una lista
unique: 'Por favor, asegúrate de que este valor sea único.',
// Validación de campos iguales
equalTo: 'Por favor, introduce el mismo valor que en el campo %s.',
// Validación de JSON
json: 'Por favor, introduce un JSON válido.',
// Validación de booleanos
boolean: 'Por favor, introduce un valor booleano válido (true o false).',
// Validación de IBAN
iban: 'Por favor, introduce un número IBAN válido.',
// Validación de ISBN
isbn: 'Por favor, introduce un número ISBN válido.',
// Validación de tarjeta de identidad
id: 'Por favor, introduce un número de identificación válido.',
// Validación de números enteros
integer: 'Por favor, introduce un número entero válido.',
// Validación de números decimales
decimal: 'Por favor, introduce un número decimal válido.',
// Validación de formato de hora
time: 'Por favor, introduce una hora válida en el formato %s.',
// Validación de rango de archivos cargados
fileCount: 'Por favor, selecciona entre %s y %s archivos.',
// Validación de valores en una lista
in: 'Por favor, selecciona un valor válido.',
// Validación de valores fuera de una lista
notIn: 'Por favor, selecciona un valor no restringido.',
// Validación de valores opcionales
optional: 'Este campo es opcional, pero debe ser válido si está presente.',
// Validación de UUID
uuid: 'Por favor, introduce un UUID válido.'
};

View File

@ -0,0 +1,414 @@
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes spin {
0% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@-webkit-keyframes burst {
0% {
-webkit-transform: scale(1);
transform: scale(1);
opacity: 1;
}
90% {
-webkit-transform: scale(1.5);
transform: scale(1.5);
opacity: 0;
}
}
@keyframes burst {
0% {
-webkit-transform: scale(1);
transform: scale(1);
opacity: 1;
}
90% {
-webkit-transform: scale(1.5);
transform: scale(1.5);
opacity: 0;
}
}
@-webkit-keyframes flashing {
0% {
opacity: 1;
}
45% {
opacity: 0;
}
90% {
opacity: 1;
}
}
@keyframes flashing {
0% {
opacity: 1;
}
45% {
opacity: 0;
}
90% {
opacity: 1;
}
}
@-webkit-keyframes fade-left {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
opacity: 1;
}
75% {
-webkit-transform: translateX(-20px);
transform: translateX(-20px);
opacity: 0;
}
}
@keyframes fade-left {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
opacity: 1;
}
75% {
-webkit-transform: translateX(-20px);
transform: translateX(-20px);
opacity: 0;
}
}
@-webkit-keyframes fade-right {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
opacity: 1;
}
75% {
-webkit-transform: translateX(20px);
transform: translateX(20px);
opacity: 0;
}
}
@keyframes fade-right {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
opacity: 1;
}
75% {
-webkit-transform: translateX(20px);
transform: translateX(20px);
opacity: 0;
}
}
@-webkit-keyframes fade-up {
0% {
-webkit-transform: translateY(0);
transform: translateY(0);
opacity: 1;
}
75% {
-webkit-transform: translateY(-20px);
transform: translateY(-20px);
opacity: 0;
}
}
@keyframes fade-up {
0% {
-webkit-transform: translateY(0);
transform: translateY(0);
opacity: 1;
}
75% {
-webkit-transform: translateY(-20px);
transform: translateY(-20px);
opacity: 0;
}
}
@-webkit-keyframes fade-down {
0% {
-webkit-transform: translateY(0);
transform: translateY(0);
opacity: 1;
}
75% {
-webkit-transform: translateY(20px);
transform: translateY(20px);
opacity: 0;
}
}
@keyframes fade-down {
0% {
-webkit-transform: translateY(0);
transform: translateY(0);
opacity: 1;
}
75% {
-webkit-transform: translateY(20px);
transform: translateY(20px);
opacity: 0;
}
}
@-webkit-keyframes tada {
from {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
10%,
20% {
-webkit-transform: scale3d(0.95, 0.95, 0.95) rotate3d(0, 0, 1, -10deg);
transform: scale3d(0.95, 0.95, 0.95) rotate3d(0, 0, 1, -10deg);
}
30%,
50%,
70%,
90% {
-webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg);
transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg);
}
40%,
60%,
80% {
-webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, -10deg);
transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, -10deg);
}
to {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
}
@keyframes tada {
from {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
10%,
20% {
-webkit-transform: scale3d(0.95, 0.95, 0.95) rotate3d(0, 0, 1, -10deg);
transform: scale3d(0.95, 0.95, 0.95) rotate3d(0, 0, 1, -10deg);
}
30%,
50%,
70%,
90% {
-webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg);
transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg);
}
40%,
60%,
80% {
-webkit-transform: rotate3d(0, 0, 1, -10deg);
transform: rotate3d(0, 0, 1, -10deg);
}
to {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
}
.ti-spin {
-webkit-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
}
.ti-spin-hover:hover {
-webkit-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
}
.ti-tada {
-webkit-animation: tada 1.5s ease infinite;
animation: tada 1.5s ease infinite;
}
.ti-tada-hover:hover {
-webkit-animation: tada 1.5s ease infinite;
animation: tada 1.5s ease infinite;
}
.ti-flashing {
-webkit-animation: flashing 1.5s infinite linear;
animation: flashing 1.5s infinite linear;
}
.ti-flashing-hover:hover {
-webkit-animation: flashing 1.5s infinite linear;
animation: flashing 1.5s infinite linear;
}
.ti-burst {
-webkit-animation: burst 1.5s infinite linear;
animation: burst 1.5s infinite linear;
}
.ti-burst-hover:hover {
-webkit-animation: burst 1.5s infinite linear;
animation: burst 1.5s infinite linear;
}
.ti-fade-up {
-webkit-animation: fade-up 1.5s infinite linear;
animation: fade-up 1.5s infinite linear;
}
.ti-fade-up-hover:hover {
-webkit-animation: fade-up 1.5s infinite linear;
animation: fade-up 1.5s infinite linear;
}
.ti-fade-down {
-webkit-animation: fade-down 1.5s infinite linear;
animation: fade-down 1.5s infinite linear;
}
.ti-fade-down-hover:hover {
-webkit-animation: fade-down 1.5s infinite linear;
animation: fade-down 1.5s infinite linear;
}
.ti-fade-left {
-webkit-animation: fade-left 1.5s infinite linear;
animation: fade-left 1.5s infinite linear;
}
.ti-fade-left-hover:hover {
-webkit-animation: fade-left 1.5s infinite linear;
animation: fade-left 1.5s infinite linear;
}
.ti-fade-right {
-webkit-animation: fade-right 1.5s infinite linear;
animation: fade-right 1.5s infinite linear;
}
.ti-fade-right-hover:hover {
-webkit-animation: fade-right 1.5s infinite linear;
animation: fade-right 1.5s infinite linear;
}
.ti-xs {
font-size: 1rem !important;
}
.ti-sm {
font-size: 1.125rem !important;
}
.ti-md {
font-size: 1.375rem !important;
}
.ti-lg {
font-size: 1.5rem !important;
}
.ti-xl {
font-size: 2.25rem !important;
}
.ti-10px {
&,
&:before {
font-size: 10px;
}
}
.ti-12px {
&,
&:before {
font-size: 12px;
}
}
.ti-14px {
&,
&:before {
font-size: 14px;
}
}
.ti-16px {
&,
&:before {
font-size: 16px;
}
}
.ti-18px {
&,
&:before {
font-size: 18px;
}
}
.ti-20px {
&,
&:before {
font-size: 20px;
}
}
.ti-22px {
&,
&:before {
font-size: 22px;
}
}
.ti-24px {
&,
&:before {
font-size: 24px;
}
}
.ti-26px {
&,
&:before {
font-size: 26px;
}
}
.ti-28px {
&,
&:before {
font-size: 28px;
}
}
.ti-30px {
&,
&:before {
font-size: 30px;
}
}
.ti-32px {
&,
&:before {
font-size: 32px;
}
}
.ti-36px {
&,
&:before {
font-size: 36px;
}
}
.ti-40px {
&,
&:before {
font-size: 40px;
}
}
.ti-42px {
&,
&:before {
font-size: 42px;
}
}
.ti-48px {
&,
&:before {
font-size: 48px;
}
}

View File

@ -0,0 +1 @@
@import 'animate.css/animate';

View File

@ -0,0 +1,7 @@
import AOS from 'aos/dist/aos';
try {
window.AOS = AOS;
} catch (e) {}
export { AOS };

View File

@ -0,0 +1 @@
@import 'aos/dist/aos';

View File

@ -0,0 +1,171 @@
/**
* Apex Charts
*/
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'apexcharts-clevision/dist/apexcharts';
// Light style
@if $enable-light-style {
.light-style {
.apexcharts-canvas {
.apexcharts-tooltip {
background: light.$card-bg;
border-color: light.$border-color;
box-shadow: light.$box-shadow;
.apexcharts-tooltip-title {
background: light.$card-bg;
border-color: light.$border-color;
font-family: light.$font-family-base !important;
}
&.apexcharts-theme-light {
color: light.$headings-color;
}
&.apexcharts-theme-dark {
color: light.$white;
}
.apexcharts-tooltip-title {
font-weight: light.$headings-font-weight;
}
}
.apexcharts-xaxistooltip,
.apexcharts-yaxistooltip {
background: light.$body-bg;
border-color: light.$border-color;
color: light.$headings-color;
&.apexcharts-xaxistooltip-bottom,
&.apexcharts-yaxistooltip-bottom {
&:after {
border-bottom-color: light.$body-bg;
}
&:before {
border-bottom-color: light.$border-color;
}
}
&.apexcharts-xaxistooltip-left,
&.apexcharts-yaxistooltip-left {
&:after {
border-left-color: light.$body-bg;
}
&:before {
border-left-color: light.$border-color;
}
}
&.apexcharts-xaxistooltip-right,
&.apexcharts-yaxistooltip-right {
&:after {
border-right-color: light.$body-bg;
}
&:before {
border-right-color: light.$border-color;
}
}
&.apexcharts-xaxistooltip-top,
&.apexcharts-yaxistooltip-top {
&:after {
border-top-color: light.$body-bg;
}
&:before {
border-top-color: light.$border-color;
}
}
}
.apexcharts-tooltip-text {
font-family: light.$font-family-base !important;
filter: none;
}
}
}
}
// Dark Style
@if $enable-dark-style {
.dark-style {
#radarChart {
.apexcharts-canvas {
.apexcharts-grid line {
opacity: 0;
}
}
}
.apexcharts-canvas {
.apexcharts-tooltip {
background: dark.$body-bg;
border-color: dark.$border-color;
box-shadow: dark.$box-shadow;
.apexcharts-tooltip-title {
background: dark.$body-bg;
border-color: dark.$border-color;
font-family: dark.$font-family-base !important;
}
&.apexcharts-theme-light {
color: dark.$headings-color;
}
&.apexcharts-theme-dark {
color: dark.$white;
}
.apexcharts-tooltip-title {
font-weight: dark.$headings-font-weight;
}
}
.apexcharts-xaxistooltip,
.apexcharts-yaxistooltip {
background: dark.$body-bg;
color: dark.$headings-color;
border-color: dark.$border-color;
&.apexcharts-xaxistooltip-bottom,
&.apexcharts-yaxistooltip-bottom {
&:after {
border-bottom-color: dark.$body-bg;
}
&:before {
border-bottom-color: dark.$border-color;
}
}
&.apexcharts-xaxistooltip-left,
&.apexcharts-yaxistooltip-left {
&:after {
border-left-color: dark.$body-bg;
}
&:before {
border-left-color: dark.$border-color;
}
}
&.apexcharts-xaxistooltip-right,
&.apexcharts-yaxistooltip-right {
&:after {
border-right-color: dark.$body-bg;
}
&:before {
border-right-color: dark.$border-color;
}
}
&.apexcharts-xaxistooltip-top,
&.apexcharts-yaxistooltip-top {
&:after {
border-top-color: dark.$body-bg;
}
&:before {
border-top-color: dark.$border-color;
}
}
}
}
}
}
// RTL
@include app-rtl(false) {
.apexcharts-canvas {
.apexcharts-yaxis {
text {
text-anchor: start;
}
}
.apexcharts-legend-marker,
.apexcharts-tooltip-marker {
margin-right: 0;
margin-left: 0.5rem;
}
}
}

View File

@ -0,0 +1,7 @@
import ApexCharts from 'apexcharts-clevision';
try {
window.ApexCharts = ApexCharts;
} catch (e) {}
export { ApexCharts };

View File

@ -0,0 +1,7 @@
import autosize from 'autosize';
try {
window.autosize = autosize;
} catch (e) {}
export { autosize };

View File

@ -0,0 +1 @@
import 'block-ui/jquery.blockUI';

View File

@ -0,0 +1,7 @@
import Bloodhound from 'typeahead.js/dist/bloodhound';
try {
window.Bloodhound = Bloodhound;
} catch (e) {}
export { Bloodhound };

View File

@ -0,0 +1,93 @@
@import '../../scss/_bootstrap-extended/functions';
@mixin bs-datepicker-theme($background, $color: null) {
$color: if($color, $color, color-contrast($background));
$range-bg: rgba-to-hex(rgba($background, 0.16), $card-bg);
$range-color: $background;
.datepicker {
table {
tr td {
&.active,
&.active.highlighted,
.focused,
span.active,
span.active.disabled,
&.range-start,
&.range-end {
background: $background !important;
color: $color !important;
box-shadow: 0 0.125rem 0.375rem 0 rgba($background, 0.3);
}
&.range,
&.range.highlighted,
&.range.today {
color: $range-color !important;
background: $range-bg !important;
&.focused {
background: rgba-to-hex(rgba($background, 0.24), $card-bg) !important;
}
&.disabled {
background: transparentize($range-bg, 0.5) !important;
color: transparentize($range-color, 0.5) !important;
}
}
&.today:not(.active),
&.today:not(.active):hover {
color: $background;
background-color: rgba-to-hex(rgba($background, 0.16), $card-bg);
}
}
}
}
}
@mixin bs-datepicker-dark-theme($background, $color: null) {
$color: if($color, $color, color-contrast($background));
$range-bg: rgba-to-hex(rgba($background, 0.24), $card-bg);
$range-color: $background;
.datepicker {
table {
tr td {
&.active,
&.active.highlighted,
.focused,
span.active,
span.active.disabled,
&.range-start,
&.range-end {
color: $color !important;
background: $background !important;
box-shadow: 0 0.125rem 0.375rem 0 rgba($background, 0.3);
}
&.range,
&.range.highlighted,
&.range.today {
color: $range-color !important;
background: $range-bg !important;
&.disabled {
color: transparentize($range-color, 0.5) !important;
background: transparentize($range-bg, 0.5) !important;
}
&.focused {
background: rgba-to-hex(rgba($background, 0.24), $card-bg) !important;
}
}
&.today:not(.active),
&.today:not(.active):hover {
color: $background;
background-color: rgba-to-hex(rgba($background, 0.16), $card-bg);
}
}
}
}
}

View File

@ -0,0 +1 @@
import 'bootstrap-datepicker/dist/js/bootstrap-datepicker';

View File

@ -0,0 +1,482 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
$datepicker-arrow-size: 0.45rem !default;
$datepicker-item-width: 2.25rem !default;
$datepicker-item-height: 2.25rem !default;
$white: #fff;
.datepicker {
direction: ltr;
&.dropdown-menu {
padding: 0;
margin: 0;
}
.datepicker-days {
margin: 0.875rem 0.875rem 0.875rem;
}
// Basic styles for next and prev arrows
.next,
.prev {
color: transparent !important;
position: absolute;
top: 0.65rem;
height: 1.875rem;
width: 1.875rem;
border-radius: light.$border-radius-pill;
display: table-caption;
}
// LRT & RTL only styles for arrows
table thead tr th {
&.next {
@include app-ltr {
float: right;
right: 0.125rem;
}
@include app-rtl {
float: left;
left: 0.125rem;
}
}
&.prev {
@include app-ltr {
right: 2.75rem;
}
@include app-rtl {
left: 2.75rem;
}
}
}
&.datepicker-inline {
table {
thead tr th {
&.next {
inset-inline-end: 0.5rem !important;
}
}
}
.datepicker-days {
.datepicker-switch {
top: 0;
}
}
}
// next & prev arrow after style
.next::after,
.prev::after {
content: '';
display: block;
position: absolute;
left: 46%;
top: 46%;
height: $datepicker-arrow-size;
width: $datepicker-arrow-size;
border-radius: 0;
border-style: solid;
transform: rotate(-45deg);
transform-origin: left;
}
.next::after {
margin-left: -$datepicker-arrow-size * 0.35;
border-width: 0 1.9px 1.9px 0;
@include app-rtl {
transform: rotate(-45deg);
border-width: 1.9px 0 0 1.9px;
margin-left: 0;
}
}
.prev::after {
border-width: 1.9px 0 0 1.9px;
@include app-rtl {
transform: rotate(-45deg);
border-width: 0 1.9px 1.9px 0;
margin-left: -$datepicker-arrow-size * 0.5;
}
}
// arrow alignments excluding datepicker-days
.datepicker-months,
.datepicker-years,
.datepicker-decades,
.datepicker-centuries {
.next {
@include app-ltr {
right: 1rem;
}
@include app-rtl {
left: 1rem;
}
}
.prev {
@include app-ltr {
right: 3.4rem;
}
@include app-rtl {
left: 3.4rem;
}
}
}
// switch default styles
.datepicker-switch {
vertical-align: middle;
position: relative;
@include app-ltr {
text-align: left;
}
@include app-rtl {
text-align: right;
}
}
// switch alignments datepicker-days
.datepicker-days {
.datepicker-switch {
top: -4px;
@include app-ltr {
left: -1.68rem;
}
@include app-rtl {
right: -1.68rem;
}
}
}
// switch alignments excluding datepicker-days
.datepicker-months,
.datepicker-years,
.datepicker-decades,
.datepicker-centuries {
.datepicker-switch {
@include app-ltr {
left: 1rem;
}
@include app-rtl {
right: 1rem;
}
}
}
table thead tr:nth-child(2) {
height: 60px !important;
width: 80px;
position: relative;
}
&.datepicker-rtl {
direction: rtl;
table tr td span {
float: right;
}
}
@include app-rtl {
direction: rtl;
}
}
.datepicker table {
user-select: none;
margin: 0;
overflow: hidden;
border-radius: light.$dropdown-border-radius;
tbody {
//! FIX: padding or margin top will not work in table
&:before {
content: '@';
display: block;
line-height: 6px;
text-indent: -99999px;
}
}
}
.datepicker table tr td,
.datepicker table tr th {
font-weight: 400;
text-align: center;
border: none;
&.dow {
font-size: light.$font-size-sm;
}
}
.datepicker table tr td {
border-radius: light.$border-radius-pill;
width: $datepicker-item-width;
height: $datepicker-item-height;
&.day:hover,
&.focused {
cursor: pointer;
}
&.disabled,
&.disabled:hover {
cursor: default;
background: none;
}
&.range {
border-radius: 0 !important;
&.today {
box-shadow: none !important;
}
}
// span.month,
// span.year {
// margin: 0 0.5rem;
// }
&.range-start:not(.range-end) {
@include app-ltr {
border-bottom-right-radius: 0 !important;
border-top-right-radius: 0 !important;
}
@include app-rtl {
border-bottom-left-radius: 0 !important;
border-top-left-radius: 0 !important;
}
}
&.range-end:not(.range-start) {
@include app-ltr {
border-bottom-left-radius: 0 !important;
border-top-left-radius: 0 !important;
}
@include app-rtl {
border-bottom-right-radius: 0 !important;
border-top-right-radius: 0 !important;
}
}
&.selected,
&.selected:hover,
&.selected.highlighted {
color: $white;
}
}
// Styles for datepicker months, years, decades etc
.datepicker table tr td span {
display: block;
float: left;
width: 3.625rem;
height: 2rem;
line-height: 2rem;
cursor: pointer;
&.disabled,
&.disabled:hover {
background: none;
cursor: default;
}
@include app-rtl {
float: right;
}
}
.datepicker .datepicker-switch,
.datepicker .prev,
.datepicker .next,
.datepicker tfoot tr th {
cursor: pointer;
}
.datepicker-months table,
.datepicker-years table,
.datepicker-decades table,
.datepicker-centuries table {
width: (3.375rem * 3) + 2.625rem;
td {
padding: 0 0 0.5rem 0.8125rem;
@include app-rtl {
padding: 0 0.8125rem 0.5rem 0;
}
}
}
.datepicker-dropdown {
left: 0;
top: 0;
padding: 0;
}
.input-daterange input {
text-align: center;
}
// Light style
@if $enable-light-style {
.light-style {
.datepicker-dropdown {
z-index: light.$zindex-popover !important;
box-shadow: light.$card-box-shadow;
}
.datepicker {
th {
&.prev,
&.next {
background-color: light.rgba-to-hex(rgba(light.$black, 0.08), light.$card-bg);
&::after {
border-color: light.$body-color;
}
}
}
&.datepicker-inline {
table {
box-shadow: light.$box-shadow;
}
}
table {
thead {
background-color: light.$card-bg;
tr,
td {
color: light.$headings-color;
}
}
tr td,
tr th {
&.new {
color: light.$text-muted;
}
}
tr td {
&.old,
&.disabled {
color: light.$text-muted;
}
&.cw {
background-color: light.$card-bg;
color: light.$body-color;
}
&.day:hover,
&.focused {
background: light.rgba-to-hex(light.$gray-50, light.$card-bg);
}
}
}
}
.datepicker table tr td span {
border-radius: light.$border-radius;
&:hover,
&.focused {
background: light.rgba-to-hex(light.$gray-50, light.$card-bg);
}
&.disabled,
&.disabled:hover {
color: light.$text-muted;
}
&.old,
&.new {
color: light.$text-muted;
}
}
}
}
// Dark style
@if $enable-dark-style {
.dark-style {
.datepicker-dropdown {
z-index: dark.$zindex-popover !important;
box-shadow: dark.$card-box-shadow;
}
.datepicker {
th {
&.prev,
&.next {
background-color: dark.rgba-to-hex(rgba(dark.$base, 0.08), dark.$card-bg);
&::after {
border-color: dark.$body-color;
}
}
}
&.datepicker-inline {
table {
box-shadow: dark.$card-box-shadow;
}
}
table {
thead {
background-color: dark.$card-bg;
tr,
td {
color: dark.$headings-color;
}
}
tr td,
tr th {
&.new {
color: dark.$text-muted;
}
}
tr td {
color: dark.$body-color;
&.old,
&.disabled {
color: dark.$text-muted;
}
&.cw {
background-color: dark.$card-bg;
color: dark.$body-color;
}
&.day:hover,
&.focused {
background: dark.rgba-to-hex(dark.$gray-50, dark.$card-bg);
}
}
}
}
.datepicker table tr td span {
border-radius: dark.$border-radius;
&:hover,
&.focused {
background: dark.rgba-to-hex(dark.$gray-50, dark.$card-bg);
}
&.disabled,
&.disabled:hover {
color: dark.$text-muted;
}
&.old,
&.new {
color: dark.$text-muted;
}
}
}
}

View File

@ -0,0 +1,81 @@
@import '../../scss/_bootstrap-extended/functions';
@mixin bs-daterangepicker-theme($background, $color: null) {
$color: if($color, $color, color-contrast($background));
$highlighted-bg: rgba-to-hex(rgba($background, 0.16), $card-bg);
$highlighted-color: $background;
.daterangepicker td.active:not(.off) {
background: $background !important;
color: $white;
box-shadow: 0 0.125rem 0.375rem 0 rgba($background, 0.3);
}
.daterangepicker {
.start-date:not(.end-date):not(.off),
.end-date:not(.start-date):not(.off) {
background-color: $background;
color: $white;
border: 0 !important;
&:hover {
background-color: $background !important;
}
}
}
.daterangepicker .input-mini.active {
border-color: $background !important;
}
.daterangepicker td.in-range:not(.start-date):not(.end-date):not(.off) {
color: $highlighted-color !important;
background-color: $highlighted-bg !important;
}
.ranges li.active {
color: $highlighted-color !important;
background-color: $highlighted-bg !important;
}
}
@mixin bs-daterangepicker-dark-theme($background, $color: null) {
$color: if($color, $color, color-contrast($background));
$highlighted-bg: rgba-to-hex(rgba($background, 0.16), $card-bg);
$highlighted-color: $background;
.daterangepicker td.active:not(.off) {
background: $background !important;
color: $white;
box-shadow: 0 0.125rem 0.375rem 0 rgba($background, 0.3);
}
.daterangepicker {
.start-date:not(.end-date):not(.off),
.end-date:not(.start-date):not(.off) {
background-color: $background;
color: $white;
border: 0 !important;
&:hover {
background-color: $background !important;
}
}
}
.daterangepicker .input-mini.active {
border-color: $background !important;
}
.daterangepicker td.in-range:not(.start-date):not(.end-date):not(.off) {
color: $highlighted-color !important;
background-color: $highlighted-bg !important;
}
.ranges li.active {
color: $highlighted-color !important;
background-color: $highlighted-bg !important;
}
}

View File

@ -0,0 +1,18 @@
import 'bootstrap-daterangepicker/daterangepicker';
// Patch detect when weeks are shown
const fnDaterangepicker = $.fn.daterangepicker;
$.fn.daterangepicker = function (options, callback) {
fnDaterangepicker.call(this, options, callback);
if (options && (options.showWeekNumbers || options.showISOWeekNumbers)) {
this.each(function () {
const instance = $(this).data('daterangepicker');
if (instance && instance.container) instance.container.addClass('with-week-numbers');
});
}
return this;
};

View File

@ -0,0 +1,744 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
$daterangepicker-arrow-size: 0.45rem !default;
$daterangepicker-select-width: 3.125rem !default;
$daterangepicker-cell-size: 2.25rem !default;
$daterangepicker-padding: 0.8rem !default;
// Calculate widths
$daterangepicker-width: ($daterangepicker-cell-size * 7)+ ($daterangepicker-padding * 2);
$daterangepicker-width-with-weeks: $daterangepicker-width + $daterangepicker-cell-size;
.daterangepicker {
position: absolute;
max-width: none;
padding: 0.875rem 0 0.5rem;
display: none;
tbody {
//! FIX: padding or margin top will not work in table
&:before {
content: '@';
display: block;
line-height: 6px;
text-indent: -99999px;
}
}
@include app-rtl {
direction: rtl !important;
}
// datepicker header styles
table thead tr:first-child {
height: 52px !important;
position: relative;
}
.calendar-table td {
border-radius: 50rem;
}
// month and year select styles
table thead {
th,
td {
select {
background-color: transparent;
font-weight: light.$font-weight-medium;
}
}
}
}
// prev arrow styles excluding single daterangepicker
.daterangepicker {
.drp-calendar:not(.single).left {
.prev {
@include app-ltr {
left: 0.25rem;
}
@include app-rtl {
right: 0.25rem;
}
}
}
// next arrow styles excluding single daterangepicker
.drp-calendar:not(.single).right {
.next {
@include app-ltr {
right: 0.25rem;
}
@include app-rtl {
left: 0.25rem;
}
}
}
}
.daterangepicker.auto-apply .drp-buttons {
display: none;
}
.daterangepicker.show-calendar .drp-calendar,
.daterangepicker.show-calendar .drp-buttons {
display: block;
}
.daterangepicker .drp-calendar {
display: none;
padding: 0 $daterangepicker-padding $daterangepicker-padding;
&.single .calendar-table {
border: 0;
}
}
.daterangepicker.single {
.drp-selected {
display: none;
}
.daterangepicker .ranges,
.drp-calendar {
float: none;
}
}
.daterangepicker .calendar-table {
border: 0;
// prev & next arrow default styles
.next,
.prev {
position: absolute;
top: 0.65rem;
min-width: unset;
height: 1.875rem;
width: 1.875rem;
border-radius: 50rem;
display: flex;
justify-content: center;
align-items: center;
}
.next span,
.prev span {
display: inline-block;
border-width: 0 1.9px 1.9px 0;
border-style: solid;
border-radius: 0;
height: $daterangepicker-arrow-size;
width: $daterangepicker-arrow-size;
}
.prev span {
margin-right: -$daterangepicker-arrow-size * 0.5;
transform: rotate(135deg);
@include app-rtl {
margin-left: -$daterangepicker-arrow-size * 0.5;
margin-right: 0;
transform: rotate(-45deg);
}
}
.next span {
margin-left: -$daterangepicker-arrow-size * 0.5;
transform: rotate(-45deg);
@include app-rtl {
margin-left: 0;
margin-right: -$daterangepicker-arrow-size * 0.5;
transform: rotate(135deg);
}
}
table {
border: 0;
border-spacing: 0;
border-collapse: collapse;
margin: 0;
width: 100%;
}
th,
td {
vertical-align: middle;
min-width: $daterangepicker-cell-size;
line-height: calc(#{$daterangepicker-cell-size} - 2px);
white-space: nowrap;
text-align: center;
cursor: pointer;
}
td {
height: $daterangepicker-cell-size;
width: $daterangepicker-cell-size;
}
th {
width: $daterangepicker-cell-size;
height: $daterangepicker-cell-size + 0.5rem;
}
tr:first-child th:not(.prev):not(.next) {
height: $daterangepicker-cell-size;
}
// daterangepicker single
.daterangepicker .single {
// arrow alignments
.next {
float: right;
@include app-ltr {
right: 0.625rem;
}
@include app-rtl {
left: 0.625rem;
}
}
.prev {
@include app-ltr {
right: 3.125rem;
}
@include app-rtl {
left: 3.125rem;
}
}
// month alignments
th.month {
position: absolute;
top: 0.5rem;
@include app-ltr {
text-align: left;
left: 0.562rem;
}
@include app-rtl {
text-align: right;
right: 0.562rem;
}
}
}
}
.daterangepicker td {
@include app-ltr {
&.start-date:not(.end-date) {
border-bottom-right-radius: 0 !important;
border-top-right-radius: 0 !important;
}
&.end-date:not(.start-date) {
border-bottom-left-radius: 0 !important;
border-top-left-radius: 0 !important;
}
}
&.in-range:not(.start-date):not(.end-date) {
border-radius: 0 !important;
}
@include app-rtl {
&.start-date:not(.end-date) {
border-bottom-left-radius: 0 !important;
border-top-left-radius: 0 !important;
}
&.end-date:not(.start-date) {
border-bottom-right-radius: 0 !important;
border-top-right-radius: 0 !important;
}
}
}
.daterangepicker td.disabled,
.daterangepicker option.disabled {
cursor: not-allowed;
text-decoration: line-through;
}
.daterangepicker th.month {
width: auto;
}
.daterangepicker select {
&.monthselect,
&.yearselect {
height: auto;
padding: 1px;
margin: 0;
border: 0;
cursor: default;
}
&:focus-visible {
outline: 0;
}
&.monthselect {
width: 46%;
margin-right: 2%;
@include app-rtl {
margin-left: 2%;
margin-right: 0;
}
}
&.yearselect {
width: 40%;
}
&.hourselect,
&.minuteselect,
&.secondselect,
&.ampmselect {
outline: 0;
width: $daterangepicker-select-width;
padding: 2px;
margin: 0 auto;
border-radius: light.$border-radius-sm;
}
}
.daterangepicker .calendar-time {
position: relative;
line-height: 30px;
text-align: center;
margin: 0 auto;
select.disabled {
cursor: not-allowed;
}
}
.daterangepicker .drp-buttons {
padding: $daterangepicker-padding $daterangepicker-padding * 1.5;
clear: both;
display: none;
text-align: right;
vertical-align: middle;
.btn {
margin-left: $daterangepicker-padding * 1.2;
}
@include app-rtl {
text-align: left;
.btn {
margin-left: 0;
margin-right: $daterangepicker-padding * 1.2;
}
}
}
.daterangepicker .drp-selected {
width: 100%;
padding-bottom: $daterangepicker-padding;
display: block;
}
.daterangepicker .ranges {
text-align: left;
float: none;
margin: 0;
// Daterangepicker Ranges spacing
ul {
padding: 0.5rem;
margin: 0 auto;
list-style: none;
width: 100%;
}
li {
border-radius: light.$border-radius;
padding: light.$dropdown-item-padding-y light.$dropdown-item-padding-x;
&:not(:first-child) {
margin-top: 0.125rem;
}
}
@include app-rtl {
text-align: right;
}
}
.daterangepicker.show-calendar .ranges {
border-bottom: 1px solid;
&:empty {
display: none;
}
}
.daterangepicker .drp-calendar.right {
@include app-ltr {
padding-left: 1px;
}
@include app-rtl {
padding-right: 1px;
}
}
// Light style
@if $enable-light-style {
.light-style {
.daterangepicker {
z-index: light.$zindex-popover !important;
border: light.$dropdown-border-width solid light.$dropdown-border-color;
border-radius: light.$border-radius;
width: calc(#{$daterangepicker-width} + calc(#{light.$dropdown-border-width} * 2));
box-shadow: light.$card-box-shadow;
background-color: light.$dropdown-bg;
table thead {
background: light.$dropdown-bg;
th,
td {
color: light.$headings-color;
&.prev,
&.next {
span {
border-color: light.$body-color !important;
}
}
select {
background-color: transparent;
color: light.$headings-color;
}
}
}
&.drop-up {
margin-top: -(light.$dropdown-spacer);
}
&.with-week-numbers {
width: calc(#{$daterangepicker-width-with-weeks} + calc(#{light.$dropdown-border-width} * 2));
}
}
.daterangepicker .calendar-table td {
border-radius: light.$border-radius-pill;
}
.daterangepicker .drp-selected {
font-size: light.$font-size-sm;
}
.daterangepicker .calendar-table thead tr:last-child th {
border-radius: 0 !important;
color: light.$headings-color;
font-size: light.$font-size-sm;
font-weight: light.$font-weight-normal;
}
.daterangepicker th.month {
color: light.$headings-color;
font-weight: light.$font-weight-normal;
}
.daterangepicker td.week,
.daterangepicker th.week {
color: light.$headings-color;
font-weight: light.$font-weight-normal;
}
.daterangepicker td.disabled,
.daterangepicker option.disabled {
color: light.$text-muted;
}
.daterangepicker td.available:not(.active):hover,
.daterangepicker th.available:hover {
background-color: light.$gray-50;
}
.daterangepicker td.off {
color: light.$text-muted;
}
.daterangepicker .ranges li {
cursor: pointer;
padding: light.$dropdown-item-padding-y light.$dropdown-item-padding-x;
&:hover {
background-color: light.$dropdown-link-hover-bg;
}
}
.daterangepicker .calendar-table .next,
.daterangepicker .calendar-table .prev {
background-color: light.$gray-50;
span {
border-color: light.$body-color;
}
}
.daterangepicker select {
&.hourselect,
&.minuteselect,
&.secondselect,
&.ampmselect {
background: light.rgba-to-hex(light.$gray-100, light.$rgba-to-hex-bg);
font-size: light.$font-size-sm;
color: light.$body-color;
border: 1px solid transparent;
option {
background: light.$card-bg;
}
}
// ! FIX: OS Windows and Linux Browsers DD Option color
&.monthselect,
&.yearselect {
option {
color: light.$body-color;
background: light.$input-bg;
&:disabled {
color: light.$text-muted;
}
}
}
}
.daterangepicker .calendar-time select.disabled {
color: light.$text-light;
}
@include light.media-breakpoint-up(md) {
.daterangepicker {
width: auto !important;
&:not(.single) .drp-selected {
width: auto;
padding: 0;
display: inline-block;
}
}
@include app-ltr-style {
.daterangepicker:not(.single) .drp-calendar {
float: left;
&.left {
padding-right: 1rem;
}
}
}
@include app-rtl-style {
.daterangepicker:not(.single) .drp-calendar {
float: right;
&.left {
padding-left: 1rem;
}
}
}
}
@include light.media-breakpoint-up(lg) {
.daterangepicker .ranges {
border-bottom: 0;
}
@include app-ltr-style {
.daterangepicker {
.ranges {
float: left;
}
}
}
@include app-rtl-style {
.daterangepicker {
.ranges {
float: right;
}
}
}
}
}
}
// Dark style
@if $enable-dark-style {
.dark-style {
.daterangepicker {
box-shadow: dark.$card-box-shadow;
width: calc(#{$daterangepicker-width} + calc(#{dark.$dropdown-border-width} * 2));
margin-top: dark.$dropdown-spacer;
background-color: dark.$dropdown-bg;
border: dark.$dropdown-border-width solid dark.$dropdown-border-color;
border-radius: dark.$border-radius;
z-index: dark.$zindex-popover !important;
table thead {
background: dark.$dropdown-bg;
th,
td {
color: dark.$headings-color;
&.prev,
&.next {
span {
border-color: dark.$headings-color !important;
}
}
select {
background-color: transparent;
color: dark.$headings-color;
}
}
}
&.with-week-numbers {
width: calc(#{$daterangepicker-width-with-weeks} + calc(#{dark.$dropdown-border-width} * 2));
}
&.drop-up {
margin-top: -(dark.$dropdown-spacer);
}
}
.daterangepicker .calendar-table td {
border-radius: dark.$border-radius-pill;
}
.daterangepicker .drp-selected {
font-size: dark.$font-size-sm;
}
.daterangepicker .calendar-table thead tr:last-child th {
border-radius: 0 !important;
color: dark.$headings-color;
font-size: dark.$font-size-sm;
font-weight: dark.$font-weight-normal;
}
.daterangepicker th.month {
color: dark.$headings-color;
font-weight: dark.$font-weight-normal;
}
.daterangepicker td.week,
.daterangepicker th.week {
color: dark.$headings-color;
font-weight: dark.$font-weight-normal;
}
.daterangepicker td.disabled,
.daterangepicker option.disabled {
color: dark.$text-muted;
}
.daterangepicker td.available:not(.active):hover,
.daterangepicker th.available:hover {
background-color: dark.$gray-50;
}
.daterangepicker td.off {
color: dark.$text-muted;
}
.daterangepicker .ranges li {
cursor: pointer;
padding: dark.$dropdown-item-padding-y dark.$dropdown-item-padding-x;
&:hover {
background-color: dark.$dropdown-link-hover-bg;
}
}
.daterangepicker .calendar-table .next,
.daterangepicker .calendar-table .prev {
background-color: dark.$gray-50;
span {
border-color: dark.$body-color;
}
}
.daterangepicker select {
&.hourselect,
&.minuteselect,
&.secondselect,
&.ampmselect {
background: dark.rgba-to-hex(dark.$gray-100, dark.$rgba-to-hex-bg);
border: 1px solid transparent;
font-size: dark.$font-size-sm;
color: dark.$body-color;
option {
background: dark.$card-bg;
}
}
// ! FIX: OS Windows and Linux Browsers DD Option color
&.monthselect,
&.yearselect {
option {
color: dark.$body-color;
background: dark.$card-bg;
&:disabled {
color: dark.$text-muted;
}
}
}
}
.daterangepicker .calendar-time select.disabled {
color: dark.$text-light;
}
@include dark.media-breakpoint-up(md) {
.daterangepicker {
width: auto !important;
&:not(.single) .drp-selected {
display: inline-block;
width: auto;
padding: 0;
}
}
@include app-ltr-style {
.daterangepicker:not(.single) .drp-calendar {
float: left;
&.left {
padding-right: 1rem;
}
}
}
@include app-rtl-style {
.daterangepicker:not(.single) .drp-calendar {
float: right;
&.left {
padding-left: 1rem;
}
}
}
}
@include dark.media-breakpoint-up(lg) {
.daterangepicker .ranges {
border-bottom: 0;
}
@include app-ltr-style {
.daterangepicker {
.ranges {
float: left;
}
}
}
@include app-rtl-style {
.daterangepicker {
.ranges {
float: right;
}
}
}
}
}
}

View File

@ -0,0 +1 @@
import 'bootstrap-maxlength/src/bootstrap-maxlength';

View File

@ -0,0 +1,46 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
.bootstrap-maxlength {
line-height: 1;
text-align: center;
vertical-align: baseline;
}
// light layout
@if $enable-light-style {
.light-style {
.bootstrap-maxlength {
background: light.$gray-200;
font-size: light.$badge-font-size;
font-weight: light.$badge-font-weight;
padding: light.$badge-padding-y light.$badge-padding-x;
@include light.border-bottom-radius(light.$badge-border-radius);
&.label-danger {
color: light.color-contrast(map-get(light.$theme-colors, danger));
background: map-get(light.$theme-colors, danger);
}
}
}
}
// dark layout
@if $enable-dark-style {
.dark-style {
.bootstrap-maxlength {
background: dark.$body-bg;
padding: dark.$badge-padding-y dark.$badge-padding-x;
font-size: dark.$badge-font-size;
font-weight: dark.$badge-font-weight;
@include light.border-bottom-radius(dark.$badge-border-radius);
&.label-danger {
color: dark.color-contrast(map-get(dark.$theme-colors, danger));
background: map-get(dark.$theme-colors, danger);
}
}
}
}

View File

@ -0,0 +1,16 @@
@import '../../scss/_bootstrap-extended/functions';
@mixin bs-select-theme($background, $color: null) {
$color: if($color, $color, color-contrast($background));
.bootstrap-select {
.dropdown-menu.inner a[aria-selected='true'] {
background: $background !important;
color: $color !important;
}
// Fix: To add focus border, .bootstrap-select adding border but not able to update as we can not have the focus on div
.dropdown-toggle.show {
border-color: $background;
}
}
}

View File

@ -0,0 +1 @@
import 'bootstrap-select/js/bootstrap-select';

View File

@ -0,0 +1,259 @@
// Bootstrap Select
// *******************************************************************************
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'bootstrap-select/sass/bootstrap-select.scss';
// Common Styles
.bootstrap-select *,
.bootstrap-select .dropdown-toggle:focus {
outline: 0 !important;
}
.bootstrap-select {
.bs-searchbox,
.bs-actionsbox,
.bs-donebutton {
padding: 0 0 8px;
}
.dropdown-toggle {
transition: none;
padding: calc(light.$input-padding-y - light.$input-border-width) light.$input-padding-x;
box-shadow: none !important;
&.show,
&:focus {
padding: calc(light.$input-padding-y - light.$input-focus-border-width)
calc(light.$input-padding-x - light.$input-border-width);
}
&:after {
transform: rotate(45deg) translateY(-100%);
position: absolute;
inset-inline-end: 23px;
top: 50%;
margin: 0 !important;
@include app-rtl {
inset-inline-end: 12px;
}
}
&:active {
transform: none !important;
}
&.show {
&:after {
inset-inline-end: calc(23px - light.$input-border-width);
@include app-rtl {
inset-inline-end: calc(12px - light.$input-border-width);
}
}
}
.filter-option-inner-inner {
line-height: light.$input-line-height;
}
}
.btn {
&:disabled,
&.disabled {
color: light.$btn-color !important;
}
}
// For header dropdown close btn
.dropdown-menu .popover-header {
display: flex;
align-items: center;
button {
border: none;
font-size: light.$h4-font-size;
background: transparent;
padding-bottom: 0.125rem;
}
}
.is-invalid {
~ .dropdown-toggle {
&:after {
inset-inline-end: calc(23px - light.$input-border-width);
@include app-rtl {
inset-inline-end: calc(12px - light.$input-border-width);
}
}
}
}
}
.bootstrap-select.dropup {
.dropdown-toggle {
&:after {
transform: rotate(317deg) translateY(-30%);
inset-inline-end: 14px;
@include app-rtl {
inset-inline-end: calc(18px);
}
}
&.show {
&:after {
inset-inline-end: calc(14px - light.$input-border-width);
@include app-rtl {
inset-inline-end: calc(18px - light.$input-border-width);
}
}
}
}
.is-invalid {
~ .dropdown-toggle {
&:after {
inset-inline-end: calc(14px - light.$input-border-width);
@include app-rtl {
inset-inline-end: calc(18px - light.$input-border-width);
}
}
}
}
}
// Menu Position
.bootstrap-select.show-tick .dropdown-menu {
li a {
position: relative;
}
// RTL
@include app-rtl {
li a span.text {
margin-left: 2.125rem;
margin-right: 0;
}
}
.selected span.check-mark {
display: block;
right: 1rem;
top: 50%;
margin: 0;
transform: translateY(-50%);
line-height: 1;
@include app-rtl {
left: 1rem;
right: auto;
}
}
}
// To remove ripple effect
.bootstrap-select .dropdown-menu.inner .selected .waves-ripple {
display: none !important;
}
.bootstrap-select:not(.input-group-btn),
.bootstrap-select[class*='col-'] {
display: block;
}
html[class] .bootstrap-select.form-select {
background: none !important;
border: 0 !important;
padding: 0 !important;
margin: 0 !important;
}
// RTL
@include app-rtl(false) {
.bootstrap-select .dropdown-toggle .filter-option {
float: right;
right: 0;
left: auto;
text-align: right;
padding-left: inherit;
padding-right: 0;
margin-left: -100%;
margin-right: 0;
}
// Fix: Subtext rtl support
.bootstrap-select .filter-option-inner-inner {
float: right;
}
.bootstrap-select .dropdown-menu li small.text-muted,
.bootstrap-select .filter-option small.text-muted {
position: relative;
top: 2px;
padding-left: 0;
padding-right: 0.5em;
float: left;
}
.bootstrap-select .dropdown-toggle .filter-option-inner {
padding-left: inherit;
padding-right: 0;
}
}
// Light style
@if $enable-light-style {
.light-style {
.bootstrap-select {
background-color: light.$input-bg;
.dropdown-toggle {
border-radius: light.$border-radius;
border: light.$input-border-width solid light.$input-border-color;
&.show,
&:focus {
border: light.$input-focus-border-width solid light.$primary;
}
&:not(.show):hover {
border-color: light.$input-border-hover-color;
}
}
.dropdown-menu {
&[data-popper-placement='top-start'],
&[data-popper-placement='top-end'] {
box-shadow: 0 -0.2rem 1.25rem rgba(light.rgba-to-hex(light.$gray-500, light.$rgba-to-hex-bg), 0.4);
}
.notify {
background: light.$popover-bg;
border: light.$input-border-width solid light.$popover-border-color;
}
.popover-header button {
color: light.$body-color;
}
}
}
}
}
// Dark Style
@if $enable-dark-style {
.dark-style {
.bootstrap-select {
background-color: dark.$input-bg;
.dropdown-toggle {
color: dark.$input-color;
&:hover {
color: dark.$input-color;
}
border: dark.$input-border-width solid dark.$input-border-color;
border-radius: dark.$border-radius;
&.show,
&:focus {
border: dark.$input-focus-border-width solid dark.$primary;
}
&:not(.show):hover {
border-color: dark.$input-border-hover-color;
}
}
.dropdown-menu {
&[data-popper-placement='top-start'],
&[data-popper-placement='top-end'] {
box-shadow: 0 -0.2rem 1.25rem rgba(15, 20, 34, 0.55);
}
.notify {
background: dark.$popover-bg;
border: dark.$input-border-width solid dark.$popover-border-color;
}
.popover-header button {
color: dark.$body-color;
}
}
}
}
}

View File

@ -0,0 +1,51 @@
// Stepper Mixin
// *******************************************************************************
@mixin bs-stepper-theme($background) {
$color: color-contrast($background);
.bs-stepper {
.step {
&.active {
.bs-stepper-circle {
background-color: $background;
color: $color;
box-shadow: 0 0.125rem 0.375rem 0 rgba($background, 0.3);
}
.bs-stepper-icon svg {
fill: $background !important;
}
.bs-stepper-icon i,
.bs-stepper-label {
color: $background !important;
}
}
&.crossed {
.step-trigger {
.bs-stepper-circle {
background-color: rgba-to-hex(rgba($background, 0.16), $card-bg) !important;
color: $background !important;
}
.bs-stepper-icon svg {
fill: $background !important;
}
.bs-stepper-icon i {
color: $background !important;
}
}
}
}
&.wizard-icons {
.step.crossed {
.bs-stepper-label {
color: $background !important;
}
& + {
.line {
i {
color: $background;
}
}
}
}
}
}
}

View File

@ -0,0 +1,37 @@
import Stepper from 'bs-stepper/dist/js/bs-stepper';
const bsStepper = document.querySelectorAll('.bs-stepper');
// Adds crossed class
bsStepper.forEach(el => {
el.addEventListener('show.bs-stepper', function (event) {
var index = event.detail.indexStep;
var numberOfSteps = el.querySelectorAll('.line').length;
var line = el.querySelectorAll('.step');
// The first for loop is for increasing the steps,
// the second is for turning them off when going back
// and the third with the if statement because the last line
// can't seem to turn off when I press the first item. ¯\_(ツ)_/¯
for (let i = 0; i < index; i++) {
line[i].classList.add('crossed');
for (let j = index; j < numberOfSteps; j++) {
line[j].classList.remove('crossed');
}
}
if (event.detail.to == 0) {
for (let k = index; k < numberOfSteps; k++) {
line[k].classList.remove('crossed');
}
line[0].classList.remove('crossed');
}
});
});
try {
window.Stepper = Stepper;
} catch (e) {}
export { Stepper };

View File

@ -0,0 +1,549 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import 'bs-stepper/dist/css/bs-stepper';
@import '../../scss/_custom-variables/libs';
$bs-stepper-header-padding-y: 1.5rem !default;
$bs-stepper-header-padding-x: $bs-stepper-header-padding-y !default;
$bs-stepper-content-padding-x: 1.5rem !default;
$bs-stepper-content-padding-y: $bs-stepper-content-padding-x !default;
$bs-stepper-trigger-padding: 1.25rem !default;
$bs-stepper-trigger-padding-vertical: 0.6rem !default;
$bs-stepper-label-max-width: 224px !default;
$bs-stepper-svg-icon-height: 3.75rem !default;
$bs-stepper-svg-icon-width: 3.75rem !default;
$bs-stepper-icon-font-size: 1.6rem !default;
$bs-stepper-vertical-separator-height: 1.55rem !default;
$bs-stepper-vertical-header-min-width: 18rem !default;
// Default Styles
.bs-stepper {
border-radius: light.$border-radius;
.line {
flex: 0;
min-width: auto;
min-height: auto;
background-color: transparent;
margin: 0;
}
.bs-stepper-header {
padding: $bs-stepper-header-padding-y $bs-stepper-header-padding-x;
.step {
.step-trigger {
padding: 0;
flex-wrap: nowrap;
gap: 0.5rem;
font-weight: light.$font-weight-medium;
.bs-stepper-label {
margin: 0;
max-width: $bs-stepper-label-max-width;
overflow: hidden;
text-overflow: ellipsis;
text-align: start;
display: inline-grid;
font-weight: light.$font-weight-medium;
font-size: light.$font-size-base;
line-height: light.$h6-line-height;
.bs-stepper-title {
font-weight: light.$font-weight-medium;
}
.bs-stepper-subtitle {
font-size: light.$small-font-size;
font-weight: light.$font-weight-base;
}
}
&:hover {
background-color: transparent;
}
@include light.media-breakpoint-down(lg) {
padding: calc($bs-stepper-trigger-padding * 0.5) 0;
}
}
.bs-stepper-circle {
display: flex;
align-items: center;
justify-content: center;
border-radius: light.$border-radius;
width: 2.375rem;
height: 2.375rem;
font-size: light.$h5-font-size;
font-weight: light.$font-weight-medium;
i {
font-size: 1.375rem;
}
}
}
}
.bs-stepper-content {
padding: $bs-stepper-content-padding-y $bs-stepper-content-padding-x;
}
&.vertical {
.bs-stepper-header {
min-width: $bs-stepper-vertical-header-min-width;
.step {
.step-trigger {
padding: $bs-stepper-trigger-padding-vertical 0;
}
&:first-child {
.step-trigger {
padding-top: 0;
}
}
&:last-child {
.step-trigger {
padding-bottom: 0;
}
}
}
.line {
position: relative;
min-height: 1px;
}
}
.bs-stepper-content {
width: 100%;
.content {
&:not(.active) {
display: none;
}
}
}
&.wizard-icons {
.step {
text-align: center;
padding: 0.75rem 0;
}
}
}
&.wizard-icons {
.bs-stepper-header {
justify-content: center;
.step-trigger {
padding: $bs-stepper-trigger-padding;
flex-direction: column;
gap: 0.5rem;
.bs-stepper-icon {
svg {
height: $bs-stepper-svg-icon-height;
width: $bs-stepper-svg-icon-width;
}
i {
font-size: $bs-stepper-icon-font-size;
}
}
}
@include light.media-breakpoint-up(lg) {
justify-content: space-around;
gap: 1rem;
}
}
}
// Remove borders from wizard modern
&.wizard-modern {
.bs-stepper-header {
border-bottom: none !important;
}
.bs-stepper-content {
border-radius: light.$border-radius;
}
&.vertical {
.bs-stepper-header {
border-right: none !important;
}
}
}
&:not(.vertical):not(.wizard-icons) .bs-stepper-header {
@include light.media-breakpoint-up(lg) {
gap: 1.25rem;
}
}
}
@include app-rtl(false) {
.bs-stepper.wizard-icons .bs-stepper-header .step-trigger {
@include light.media-breakpoint-down(lg) {
padding-right: 0;
}
}
}
@include app-ltr(false) {
.bs-stepper.wizard-icons .bs-stepper-header .step-trigger {
@include light.media-breakpoint-down(lg) {
padding-left: 0;
}
}
}
// Styles for Modal example Create App wizard
#wizard-create-app {
&.vertical {
.bs-stepper-header {
min-width: $bs-stepper-vertical-header-min-width - 3;
}
}
}
// Light style
@if $enable-light-style {
.light-style {
.bs-stepper {
background-color: light.$card-bg;
&:not(.wizard-modern) {
box-shadow: light.$card-box-shadow;
}
.bs-stepper-header {
border-bottom: 1px solid light.$border-color;
.line {
i {
color: light.$body-color;
}
}
.bs-stepper-title,
.bs-stepper-label {
color: light.$headings-color;
}
.bs-stepper-label {
.bs-stepper-subtitle {
color: light.$body-color;
}
}
.step {
&:not(.active) {
.bs-stepper-circle {
background-color: light.$gray-50;
color: light.$headings-color;
}
}
&.crossed .step-trigger {
.bs-stepper-label .bs-stepper-subtitle,
.bs-stepper-title {
color: light.$text-muted;
}
}
}
}
.step-trigger:focus {
color: light.$headings-color;
}
&.vertical {
.bs-stepper-header {
border-bottom: none;
@include light.media-breakpoint-down(lg) {
border-right: none !important;
border-left: none !important;
border-bottom: 1px solid light.$border-color;
}
}
}
&.wizard-modern {
background-color: transparent;
.bs-stepper-content {
background-color: light.$card-bg;
box-shadow: light.$card-box-shadow;
}
}
&.wizard-icons {
.bs-stepper-header {
.bs-stepper-icon {
svg {
fill: light.$headings-color;
}
i {
fill: light.$headings-color;
}
}
.bs-stepper-label {
color: light.$headings-color;
}
}
}
}
}
// ! FIX: Vertical border issue in rtl and ltr
@include app-rtl(false) {
.light-style {
.bs-stepper {
&.vertical {
.bs-stepper-header {
border-left: 1px solid light.$border-color;
}
}
}
}
}
@include app-ltr(false) {
.light-style {
.bs-stepper {
&.vertical {
.bs-stepper-header {
border-right: 1px solid light.$border-color;
}
}
}
}
}
}
// Dark Style
@if $enable-dark-style {
.dark-style {
.bs-stepper {
background-color: dark.$card-bg;
.bs-stepper-header {
border-bottom: 1px solid dark.$border-color;
.line {
i {
color: dark.$body-color;
}
}
.bs-stepper-label,
.bs-stepper-title {
color: dark.$headings-color;
}
.bs-stepper-label {
.bs-stepper-subtitle {
color: dark.$body-color;
}
}
.step {
&:not(.active) {
.bs-stepper-circle {
background-color: dark.$gray-50;
color: dark.$headings-color;
}
}
&.crossed .step-trigger {
.bs-stepper-label .bs-stepper-subtitle,
.bs-stepper-title {
color: dark.$text-muted;
}
}
}
}
.step-trigger:focus {
color: dark.$headings-color;
}
&.vertical {
.bs-stepper-header {
border-bottom: none;
@include light.media-breakpoint-down(lg) {
border-right: none !important;
border-left: none !important;
border-bottom: 1px solid dark.$border-color;
}
}
}
&.wizard-modern {
background-color: transparent;
.bs-stepper-content {
background-color: dark.$card-bg;
box-shadow: dark.$card-box-shadow;
}
}
&.wizard-icons {
.bs-stepper-header {
.bs-stepper-icon {
i {
color: dark.$headings-color;
}
svg {
fill: dark.$headings-color;
}
}
.bs-stepper-label {
color: dark.$headings-color;
}
}
}
}
}
// ! FIX: Vertical border issue in rtl and ltr
@include app-rtl(false) {
.dark-style {
.bs-stepper {
&.vertical {
.bs-stepper-header {
border-left: 1px solid dark.$border-color;
}
}
}
}
}
@include app-ltr(false) {
.dark-style {
.bs-stepper {
&.vertical {
.bs-stepper-header {
border-right: 1px solid dark.$border-color;
}
}
}
}
}
}
// RTL
@include app-rtl(false) {
.bs-stepper {
.bs-stepper-content {
.btn-next:not(.btn-submit),
.btn-prev {
i {
transform: rotate(180deg);
}
}
}
&.vertical {
&.wizard-icons {
.bs-stepper-header {
.line:before {
right: 50%;
}
}
}
}
// Remove borders from wizard modern
&.wizard-modern {
&.vertical {
.bs-stepper-header {
border-left: none !important;
}
}
}
@include light.media-breakpoint-up(lg) {
.bs-stepper-header {
.line {
i {
transform: rotate(180deg);
}
}
}
}
@include light.media-breakpoint-down(lg) {
.bs-stepper-header {
.step {
.step-trigger {
.bs-stepper-label {
margin-left: 0;
margin-right: 1rem;
}
}
}
}
&.wizard-icons {
.bs-stepper-header {
.line {
&:before {
margin-right: 0.75rem;
}
}
}
}
}
}
}
// Media Queries
@include light.media-breakpoint-down(lg) {
.bs-stepper {
.bs-stepper-header {
flex-direction: column;
align-items: flex-start;
.step {
.step-trigger {
flex-direction: row;
.bs-stepper-label {
margin-left: 0.35rem;
}
}
&:first-child {
.step-trigger {
padding-top: 0;
}
}
&:last-child {
.step-trigger {
padding-bottom: 0;
}
}
}
}
&.vertical {
flex-direction: column;
.bs-stepper-header {
align-items: flex-start;
}
&.wizard-icons {
.bs-stepper-header {
.line:before {
left: 0.75rem;
margin-left: 0;
}
}
}
}
&:not(.vertical) {
.bs-stepper-header {
.line {
i {
display: none;
}
}
}
}
&.wizard-icons {
.bs-stepper-header .step:not(:first-child) {
.bs-stepper-icon {
svg {
margin-top: 0.5rem;
}
}
}
}
}
}
@media (max-width: 520px) {
.bs-stepper-header {
margin: 0;
}
}
// Styles for Create App Modal Wizard
#wizard-create-app {
&.vertical {
.bs-stepper-header {
min-width: $bs-stepper-vertical-header-min-width - 3;
}
}
}

View File

@ -0,0 +1,7 @@
import Chart from 'chart.js/auto';
try {
window.Chart = Chart;
} catch (e) {}
export { Chart };

View File

@ -0,0 +1 @@
import 'cleave.js/dist/addons/cleave-phone.us';

View File

@ -0,0 +1 @@
import 'cleave.js/dist/cleave';

View File

@ -0,0 +1,7 @@
import ClipboardJS from 'clipboard';
try {
window.ClipboardJS = ClipboardJS;
} catch (e) {}
export { ClipboardJS };

View File

@ -0,0 +1,30 @@
import JSZip from 'jszip';
import pdfMake from 'pdfmake';
import 'pdfmake/build/vfs_fonts';
import 'datatables.net-bs5';
import 'datatables.net-fixedcolumns-bs5';
import 'datatables.net-fixedheader-bs5';
import 'datatables.net-select-bs5';
import 'datatables.net-buttons';
import 'datatables.net-buttons-bs5';
import 'datatables.net-buttons/js/buttons.html5';
import 'datatables.net-buttons/js/buttons.print';
import 'datatables.net-responsive';
import 'datatables.net-responsive-bs5';
import 'datatables.net-rowgroup-bs5';
import Checkbox from 'jquery-datatables-checkboxes';
import { datatable_spanish_default } from '../datatables-lang/datatable-lang-es';
// This solution related to font issues with pdfMake
pdfMake.fonts = {
Roboto: {
normal: 'https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.66/fonts/Roboto/Roboto-Regular.ttf',
bold: 'https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.66/fonts/Roboto/Roboto-Medium.ttf',
italics: 'https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.66/fonts/Roboto/Roboto-Italic.ttf',
bolditalics: 'https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.66/fonts/Roboto/Roboto-MediumItalic.ttf'
}
};
$.fn.dataTable.ext.Checkbox = Checkbox(window, $);
$.fn.dataTable.ext.buttons.pdfMake = pdfMake;
$.fn.dataTable.ext.datatable_spanish_default = datatable_spanish_default;
window.JSZip = JSZip;

View File

@ -0,0 +1,394 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'datatables.net-bs5/css/dataTables.bootstrap5';
// Margin between select, input field and text
div.dataTables_wrapper div.dataTables_length select {
margin-left: 0.5rem;
margin-right: 0.5rem;
}
div.dataTables_wrapper div.dataTables_filter input {
margin-left: 1em;
}
.dataTable .emp_name {
font-weight: light.$font-weight-medium;
}
// Shadow none for action buttons
.dataTable td .btn {
box-shadow: none !important;
}
// Card header inside the datatable
div.dataTables_wrapper .card-header {
display: flex;
align-items: center;
justify-content: space-between;
}
div.dataTables_wrapper div.dataTables_info {
padding-top: light.$spacer * 0.5;
}
table.table-bordered.dataTable {
// For complex header and column search datatable
&.dt-complex-header,
&.dt-column-search {
thead tr th {
border-width: 1px;
}
tfoot tr th {
border-width: 1px;
}
}
& tfoot tr th {
border-bottom-width: 1px;
}
& > :not(caption) > * {
& > * {
border-width: 0;
}
}
}
// Remove left and right border from datatable with table-bordered class
table.table-bordered.dataTable {
tr:first-child th,
td {
&:first-child {
@include app-ltr() {
border-left-width: 0;
}
@include app-rtl() {
border-right-width: 0;
}
}
&:last-child {
@include app-ltr() {
border-right-width: 0;
}
@include app-rtl() {
border-left-width: 0;
}
}
}
> tbody:not(caption) tr:first-child {
border-top-width: 0;
}
}
// Responsive datatable in desktop screen
@media screen and (min-width: 1399.98px) {
table.table-responsive {
display: table;
}
}
// RTL style
@include app-rtl(false) {
div.dataTables_wrapper .dataTables_filter {
display: flex;
justify-content: flex-end;
input {
margin-left: 0;
margin-right: 1rem;
}
}
table.table-bordered.dataTable th,
table.table-bordered.dataTable td {
border-right-width: 0;
border-left-width: 1px;
&:last-child {
border-left-width: 0;
}
}
}
table.dataTable {
width: 100% !important;
border-collapse: collapse !important;
margin-bottom: light.$spacer !important;
margin-top: 0 !important;
thead th {
&.sorting_disabled {
&::before,
&::after {
display: none !important;
}
}
&.sorting {
&:before,
&:after {
visibility: hidden;
}
&:hover {
&:before,
&:after {
visibility: visible;
}
}
}
}
@include app-rtl {
&.table-sm > thead > tr > th {
padding-left: 1.25rem;
}
&.table-sm .sorting:before,
&.table-sm .sorting_asc:before,
&.table-sm .sorting_desc:before {
right: auto !important;
left: 0.85em !important;
}
thead th,
thead td,
tfoot th,
tfoot td {
text-align: right;
}
}
// Checkbox height & width for datatables checkboxes
.form-check-input {
width: light.$form-datatables-check-input-size;
height: light.$form-datatables-check-input-size;
}
}
// to add spacing between table and datatable footer elements like pagination & info
.dataTables_scroll {
margin-bottom: 0.75rem;
}
// Used while complex headers
table.dataTable thead th {
vertical-align: middle;
}
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
&::before,
&::after {
line-height: 1.25rem !important;
font-family: tabler-icons !important;
font-size: 1rem !important;
width: 10px;
height: 10px;
right: 0.78rem !important;
}
&::before {
content: '\ea62' !important;
top: 0.58rem !important;
}
&::after {
bottom: 0.72rem !important;
content: '\ea5f' !important;
}
@include app-rtl {
&::before {
right: auto !important;
left: 0.58em !important;
}
&::after {
right: auto !important;
left: 0.58em !important;
}
}
}
// DataTable within card
div.card-datatable.dataTable,
div.card-datatable .dataTable {
border-right: 0;
border-left: 0;
}
// Card header inside the datatable
@media screen and (max-width: 575.98px) {
div.dataTables_wrapper .card-header {
display: block;
}
.dtr-bs-modal.modal {
// padding-left: 0.75rem;
.modal-body {
padding: 0;
overflow: auto;
}
}
.dataTable_select div.dataTables_wrapper div.dataTables_info {
flex-direction: column;
}
}
@media screen and (max-width: 767.98px) {
div.dataTables_wrapper div.dataTables_info {
padding-bottom: light.$table-cell-padding-y;
}
}
div.dataTables_wrapper {
div.dataTables_length,
.dataTables_filter {
margin-top: light.$spacer * 1.5;
margin-bottom: light.$spacer * 1.5;
}
}
// common style for light / dark
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
.page-item {
&,
&.next,
&.previous,
&.first,
&.last {
.page-link {
border-radius: light.$border-radius;
}
}
}
}
div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-link {
div:not(.table-responsive) div.dataTables_wrapper .dataTables_paginate {
margin-right: 0;
}
}
@include light.media-breakpoint-down(md) {
div.dataTables_wrapper div.dataTables_length label,
div.dataTables_wrapper div.dataTables_filter label,
div.dataTables_wrapper div.dataTables_info,
div.dataTables_wrapper div.dataTables_paginate {
justify-content: center;
}
}
@include light.media-breakpoint-down(sm) {
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
justify-content: start !important;
overflow-x: scroll;
}
}
// DataTable within card
div.card-datatable {
padding-bottom: light.$card-spacer-x-sm; // Check this in site and update if needed
[class*='col-md-'] {
padding-right: light.$table-cell-padding-x !important;
padding-left: light.$table-cell-padding-x !important;
}
// length, filter & info, pagination row margin
&:not(.table-responsive) .dataTables_wrapper .row {
&:first-child,
&:last-child {
margin: 0;
}
}
}
// LTR style
@include app-ltr(false) {
div.card-datatable table.dataTable thead th,
div.card-datatable table.dataTable tfoot th {
&:first-child {
padding-left: light.$card-spacer-x;
padding-right: light.$card-spacer-x;
}
&:last-child {
padding-right: light.$card-spacer-x-sm;
}
}
div.card-datatable table.dataTable tbody td {
&:first-child {
padding-left: light.$card-spacer-x;
padding-right: light.$card-spacer-x;
}
}
}
// RTL Style
@include app-rtl(false) {
table.dataTable.table-sm > thead > tr > th {
padding-right: light.$table-cell-padding-x-sm;
}
table.table-bordered.dataTable tr {
td,
th,
th:first-child {
border-left-width: 0 !important;
}
}
table.dataTable {
thead th,
tbody td,
tfoot th {
padding-right: light.$table-cell-padding-x;
}
&.table-sm thead th,
&.table-sm tbody td,
&.table-sm tfoot th {
padding-right: light.$table-cell-padding-x-sm;
}
}
div.card-datatable table.dataTable {
thead th,
tbody td,
tfoot th {
&:first-child {
padding-right: light.$card-spacer-x;
}
&:last-child {
padding-left: light.$card-spacer-x;
}
}
}
}
// Light style
@if $enable-light-style {
.light-style {
div.dataTables_wrapper div.dataTables_info {
color: light.$text-muted;
}
div.dataTables_scrollBody table {
border-top-color: light.$table-border-color;
}
table.dataTable th,
table.dataTable td {
border-color: light.$table-border-color !important;
}
}
}
// Dark Style
@if $enable-dark-style {
.dark-style {
div.dataTables_wrapper div.dataTables_info {
color: dark.$text-muted;
}
div.dataTables_scrollBody table {
border-top-color: dark.$table-border-color;
}
table.dataTable th,
table.dataTable td {
border-color: dark.$table-border-color !important;
}
}
}

View File

@ -0,0 +1,101 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'datatables.net-buttons-bs5/css/buttons.bootstrap5';
// remove 0.5em margin bottom from dt-buttons
@media screen and (max-width: 767px) {
div.dt-buttons {
margin-bottom: 0;
}
}
div.dataTables_wrapper .dt-button-collection {
border: 0;
border-radius: light.$dropdown-border-radius;
padding: light.$dropdown-padding-y light.$dropdown-padding-x;
width: auto;
> div[role='menu'] {
text-align: left;
}
}
// avoid dropdown to overlap the trigger button
.dt-button-collection {
margin-top: 0.2rem;
}
div.dropdown-menu.dt-button-collection,
div.dt-button-collection .dt-button:not(.dt-btn-split-drop) {
min-width: 8rem;
}
.dt-down-arrow {
display: none;
}
// override button radius
div.dt-button-collection .dt-button,
div.dt-buttons div.dropdown-menu .dt-button {
border-radius: light.$dropdown-border-radius;
}
// Light style
@if $enable-light-style {
.light-style {
div.dataTables_wrapper .dt-button-collection {
background-color: light.$dropdown-bg;
}
.dataTable a:not([href]):not([tabindex]) {
color: map-get(light.$theme-colors, success);
}
.dt-button-info {
box-shadow: light.$floating-component-shadow;
}
.dt-button-collection {
.dropdown-item {
padding: light.$dropdown-item-padding-y light.$dropdown-item-padding-x;
}
}
}
}
// Dark style
@if $enable-dark-style {
.dark-style {
div.dataTables_wrapper .dt-button-collection {
background-color: dark.$dropdown-bg;
}
.dataTable a:not([href]):not([tabindex]) {
color: map-get(dark.$theme-colors, success);
}
.dt-button-info {
box-shadow: dark.$floating-component-shadow;
}
.dt-button-collection {
.dropdown-item {
padding: dark.$dropdown-item-padding-y dark.$dropdown-item-padding-x;
}
}
}
}
.dt-button-info {
border-width: 0 !important;
border-radius: light.$border-radius !important;
h2 {
font-size: light.$h4-font-size !important;
}
}
.dt-buttons {
position: relative;
.dt-button-collection .dropdown-item {
@include app-rtl {
text-align: right;
}
}
&.btn-group {
button {
border-color: transparent !important;
border-radius: light.$border-radius !important;
}
}
}
div.dt-buttons .dropdown-menu .dt-button {
border-radius: light.$border-radius;
}

View File

@ -0,0 +1,2 @@
@import '../../scss/_custom-variables/libs';
@import 'jquery-datatables-checkboxes/css/dataTables.checkboxes';

View File

@ -0,0 +1,133 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'datatables.net-fixedcolumns-bs5/css/fixedColumns.bootstrap5';
// Fixed column style
div.dataTables_scrollBody thead tr,
div.DTFC_LeftBodyLiner thead tr {
border-top-width: 0;
border-bottom-width: 0;
}
div.dataTables_scrollBody {
border: 0 !important;
}
@include app-ltr(false) {
div.dataTables_scrollFootInner table.table-bordered tr th:first-child,
div.dataTables_scrollHeadInner table.table-bordered tr th:first-child {
border-left: 0 !important;
}
}
@include app-rtl(false) {
table.dataTable thead th,
table.dataTable thead td,
table.dataTable tfoot th,
table.dataTable tfoot td {
text-align: right !important;
}
}
// Light style
@if $enable-light-style {
.light-style {
table.DTFC_Cloned tr {
border-color: light.$table-border-color;
}
// fixed header and footer border
div.dataTables_scrollFootInner table.table-bordered tr th:first-child,
div.dataTables_scrollHeadInner table.table-bordered tr th:first-child {
border-left: 1px solid light.$table-border-color;
}
// fixed column background color
table.dataTable thead tr > .dtfc-fixed-left,
table.dataTable thead tr > .dtfc-fixed-right,
table.dataTable tbody tr > .dtfc-fixed-left,
table.dataTable tbody tr > .dtfc-fixed-right,
div.dtfc-right-top-blocker,
div.dtfc-left-top-blocker {
background-color: light.$card-bg;
margin-top: 1px !important;
height: 0px !important;
}
// To override BS5 css
.dt-fixedcolumns thead {
border-top-color: light.$table-border-color;
}
&[dir='rtl'] {
div.dataTables_scrollHead,
div.dataTables_scrollBody {
table {
border-width: 0;
}
}
div.DTFC_LeftBodyLiner {
padding-right: 0 !important;
}
div.DTFC_RightHeadWrapper,
div.DTFC_RightBodyWrapper {
table {
border: 0;
}
}
div.DTFC_RightBodyLiner {
padding-left: 0 !important;
}
}
}
}
// Dark style
@if $enable-dark-style {
.dark-style {
table.DTFC_Cloned tr {
background-color: dark.$card-bg;
border-color: dark.$table-border-color;
}
div.dataTables_scrollHead table,
div.DTFC_RightHeadWrapper table,
table.dataTable.fixedHeader-floating,
table.dataTable.fixedHeader-locked {
background-color: dark.$card-bg;
}
// fixed header and footer border
div.dataTables_scrollFootInner table.table-bordered tr th:first-child,
div.dataTables_scrollHeadInner table.table-bordered tr th:first-child {
border-left: 1px solid dark.$table-border-color !important;
}
// fixed column background color
table.dataTable thead tr > .dtfc-fixed-left,
table.dataTable thead tr > .dtfc-fixed-right,
table.dataTable tbody tr > .dtfc-fixed-left,
table.dataTable tbody tr > .dtfc-fixed-right,
div.dtfc-right-top-blocker,
div.dtfc-left-top-blocker {
background-color: dark.$card-bg;
margin-top: 1px !important;
height: 0px !important;
}
// To override BS5 css
.dt-fixedcolumns thead {
border-top-color: dark.$table-border-color;
}
&[dir='rtl'] {
div.dataTables_scrollHead,
div.dataTables_scrollBody {
table {
border-width: 0;
}
}
div.DTFC_LeftBodyLiner {
padding-right: 0 !important;
}
div.DTFC_RightHeadWrapper,
div.DTFC_RightBodyWrapper {
table {
border: 0;
}
}
div.DTFC_RightBodyLiner {
padding-left: 0 !important;
}
}
}
}

View File

@ -0,0 +1,40 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'datatables.net-fixedheader-bs5/css/fixedHeader.bootstrap5';
// Fixed header Style
.dt-fixedheader.fixedHeader-floating.table.dataTable {
width: auto !important;
}
.dt-fixedheader.fixedHeader-locked.table.dataTable {
display: none;
}
// Last style
@if $enable-light-style {
.light-style {
.dtfh-floatingparenthead {
border-bottom: 1px solid light.$table-border-color;
}
.table-bordered.dt-fixedheader.fixedHeader-floating.table.dataTable thead > tr > th,
.table-bordered.dt-fixedheader.fixedHeader-locked.table.dataTable thead > tr > th {
border-bottom-width: 1px;
border-color: light.$table-border-color;
}
}
}
// Dark style
@if $enable-dark-style {
.dark-style {
.dtfh-floatingparenthead {
border-bottom: 1px solid dark.$table-border-color;
}
.table-bordered.dt-fixedheader.fixedHeader-floating.table.dataTable thead > tr > th,
.table-bordered.dt-fixedheader.fixedHeader-locked.table.dataTable thead > tr > th {
border-bottom-width: 1px;
border-color: dark.$table-border-color;
}
}
}

View File

@ -0,0 +1,195 @@
export const datatable_spanish_default = {
processing: 'Procesando...',
lengthMenu: 'Mostrar _MENU_ registros',
zeroRecords: 'No se encontraron resultados',
emptyTable: 'Ningún dato disponible en esta tabla',
infoEmpty: 'Mostrando registros del 0 al 0 de un total de 0 registros',
infoFiltered: '(filtrado de un total de _MAX_ registros)',
search: 'Buscar:',
infoThousands: ',',
loadingRecords: 'Cargando...',
paginate: {
first: 'Primero',
last: 'Último',
next: 'Siguiente',
previous: 'Anterior'
},
aria: {
sortAscending: ': Activar para ordenar la columna de manera ascendente',
sortDescending: ': Activar para ordenar la columna de manera descendente'
},
buttons: {
copy: 'Copiar',
colvis: 'Visibilidad',
collection: 'Colección',
colvisRestore: 'Restaurar visibilidad',
copyKeys:
'Presione ctrl o u2318 + C para copiar los datos de la tabla al portapapeles del sistema. <br /> <br /> Para cancelar, haga clic en este mensaje o presione escape.',
copySuccess: {
1: 'Copiada 1 fila al portapapeles',
_: 'Copiadas %d fila al portapapeles'
},
copyTitle: 'Copiar al portapapeles',
csv: 'CSV',
excel: 'Excel',
pageLength: {
'-1': 'Mostrar todas las filas',
_: 'Mostrar %d filas'
},
pdf: 'PDF',
print: 'Imprimir'
},
autoFill: {
cancel: 'Cancelar',
fill: 'Rellene todas las celdas con <i>%d</i>',
fillHorizontal: 'Rellenar celdas horizontalmente',
fillVertical: 'Rellenar celdas verticalmentemente'
},
decimal: ',',
searchBuilder: {
add: 'Añadir condición',
button: {
0: 'Constructor de búsqueda',
_: 'Constructor de búsqueda (%d)'
},
clearAll: 'Borrar todo',
condition: 'Condición',
conditions: {
date: {
after: 'Despues',
before: 'Antes',
between: 'Entre',
empty: 'Vacío',
equals: 'Igual a',
notBetween: 'No entre',
notEmpty: 'No Vacio',
not: 'Diferente de'
},
number: {
between: 'Entre',
empty: 'Vacio',
equals: 'Igual a',
gt: 'Mayor a',
gte: 'Mayor o igual a',
lt: 'Menor que',
lte: 'Menor o igual que',
notBetween: 'No entre',
notEmpty: 'No vacío',
not: 'Diferente de'
},
string: {
contains: 'Contiene',
empty: 'Vacío',
endsWith: 'Termina en',
equals: 'Igual a',
notEmpty: 'No Vacio',
startsWith: 'Empieza con',
not: 'Diferente de'
},
array: {
not: 'Diferente de',
equals: 'Igual',
empty: 'Vacío',
contains: 'Contiene',
notEmpty: 'No Vacío',
without: 'Sin'
}
},
data: 'Data',
deleteTitle: 'Eliminar regla de filtrado',
leftTitle: 'Criterios anulados',
logicAnd: 'Y',
logicOr: 'O',
rightTitle: 'Criterios de sangría',
title: {
0: 'Constructor de búsqueda',
_: 'Constructor de búsqueda (%d)'
},
value: 'Valor'
},
searchPanes: {
clearMessage: 'Borrar todo',
collapse: {
0: 'Paneles de búsqueda',
_: 'Paneles de búsqueda (%d)'
},
count: '{total}',
countFiltered: '{shown} ({total})',
emptyPanes: 'Sin paneles de búsqueda',
loadMessage: 'Cargando paneles de búsqueda',
title: 'Filtros Activos - %d'
},
select: {
cells: {
1: '1 celda seleccionada',
_: '%d celdas seleccionadas'
},
columns: {
1: '1 columna seleccionada',
_: '%d columnas seleccionadas'
},
rows: {
1: '1 fila seleccionada',
_: '%d filas seleccionadas'
}
},
thousands: '.',
datetime: {
previous: 'Anterior',
next: 'Proximo',
hours: 'Horas',
minutes: 'Minutos',
seconds: 'Segundos',
unknown: '-',
amPm: ['AM', 'PM'],
months: {
0: 'Enero',
1: 'Febrero',
10: 'Noviembre',
11: 'Diciembre',
2: 'Marzo',
3: 'Abril',
4: 'Mayo',
5: 'Junio',
6: 'Julio',
7: 'Agosto',
8: 'Septiembre',
9: 'Octubre'
},
weekdays: ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab']
},
editor: {
close: 'Cerrar',
create: {
button: 'Nuevo',
title: 'Crear Nuevo Registro',
submit: 'Crear'
},
edit: {
button: 'Editar',
title: 'Editar Registro',
submit: 'Actualizar'
},
remove: {
button: 'Eliminar',
title: 'Eliminar Registro',
submit: 'Eliminar',
confirm: {
_: '¿Está seguro que desea eliminar %d filas?',
1: '¿Está seguro que desea eliminar 1 fila?'
}
},
error: {
system: 'Ha ocurrido un error en el sistema (<a target="\\" rel="\\ nofollow" href="\\">Más información&lt;\\/a&gt;).</a>'
},
multi: {
title: 'Múltiples Valores',
info: 'Los elementos seleccionados contienen diferentes valores para este registro. Para editar y establecer todos los elementos de este registro con el mismo valor, hacer click o tap aquí, de lo contrario conservarán sus valores individuales.',
restore: 'Deshacer Cambios',
noMulti: 'Este registro puede ser editado individualmente, pero no como parte de un grupo.'
}
},
info: 'Mostrando _START_ a _END_ de _TOTAL_ registros',
search: '',
searchPlaceholder: 'Buscar'
};

View File

@ -0,0 +1,9 @@
@mixin bs-datatables-theme($background) {
// Style for responsive icon
table.dataTable.dtr-column > tbody > tr > td.control:before,
table.dataTable.dtr-column > tbody > tr > th.control:before {
background-color: $background;
border: 2px solid $rgba-to-hex-bg;
box-shadow: 0 0 3px $gray-800;
}
}

View File

@ -0,0 +1,57 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import 'datatables.net-responsive-bs5/css/responsive.bootstrap5';
@import 'mixins';
// Responsive table area '+' icon position
table.dataTable.dtr-column > tbody > tr > td.control,
table.dataTable.dtr-column > tbody > tr > th.control {
position: relative;
&:before,
&:before {
position: absolute;
line-height: 0.9em;
font-weight: light.$font-weight-medium;
height: 0.85em;
width: 0.85em;
color: light.$white;
border-radius: 1em;
box-sizing: content-box;
text-align: center;
font-family: 'Courier New', Courier, monospace;
content: '+';
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
table.dataTable.dtr-column > tbody > tr.parent td.dtr-control:before,
table.dataTable.dtr-column > tbody > tr.parent th.dtr-control:before,
table.dataTable.dtr-column > tbody > tr.parent td.control:before,
table.dataTable.dtr-column > tbody > tr.parent th.control:before {
content: '+';
}
// To scroll within datatable area
@media screen and (max-width: 1399.98px) {
table.dataTable.table-responsive {
display: block;
}
}
// Modal table style
.modal.dtr-bs-modal {
.modal-body {
padding: 0;
}
.table {
tr:last-child > td {
border-bottom: 0;
}
.btn {
box-shadow: none !important;
}
.emp_name {
font-weight: light.$font-weight-medium;
}
}
}

View File

@ -0,0 +1,25 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'datatables.net-rowgroup-bs5/css/rowGroup.bootstrap5';
// Light style
@if $enable-light-style {
.light-style {
tr.group,
tr.group:hover {
background-color: light.$gray-100 !important;
}
}
}
// Dark style
@if $enable-dark-style {
.dark-style {
tr.group,
tr.group:hover {
background-color: rgba(dark.$base, 0.1) !important;
}
}
}

View File

@ -0,0 +1,39 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@use '../../scss/_components/include' as comp;
@import '../../scss/_custom-variables/libs';
@import 'datatables.net-select-bs5/css/select.bootstrap5';
// Background color for select row
table.dataTable tbody > tr.selected td,
table.dataTable tbody > tr > .selected td {
background-color: rgba(light.$primary, 0.08);
box-shadow: none;
}
// Light style
@if $enable-light-style {
.light-style {
table.dataTable tbody tr.selected td,
table.dataTable tbody th.selected td,
table.dataTable tbody td.selected td {
color: light.$body-color !important;
}
}
}
// Dark Style
@if $enable-dark-style {
.dark-style {
table.dataTable tbody > tr.selected > *,
table.dataTable tbody > tr > .selected > * {
box-shadow: inset 0 0 0 dark.$gray-50;
color: dark.$table-active-color;
}
table.dataTable tbody tr.selected td,
table.dataTable tbody th.selected td,
table.dataTable tbody td.selected td {
color: inherit;
}
}
}

View File

@ -0,0 +1,5 @@
@mixin dropzone-theme($border) {
.dropzone.dz-drag-hover {
border-color: $border !important;
}
}

View File

@ -0,0 +1,56 @@
import Dropzone from 'dropzone/dist/dropzone';
Dropzone.autoDiscover = false;
// File upload progress animation
Dropzone.prototype.uploadFiles = function (files) {
const minSteps = 6;
const maxSteps = 60;
const timeBetweenSteps = 100;
const bytesPerStep = 100000;
const isUploadSuccess = true;
const self = this;
for (let i = 0; i < files.length; i++) {
const file = files[i];
const totalSteps = Math.round(Math.min(maxSteps, Math.max(minSteps, file.size / bytesPerStep)));
for (let step = 0; step < totalSteps; step++) {
const duration = timeBetweenSteps * (step + 1);
setTimeout(
(function (file, totalSteps, step) {
return function () {
file.upload = {
progress: (100 * (step + 1)) / totalSteps,
total: file.size,
bytesSent: ((step + 1) * file.size) / totalSteps
};
self.emit('uploadprogress', file, file.upload.progress, file.upload.bytesSent);
if (file.upload.progress === 100) {
if (isUploadSuccess) {
file.status = Dropzone.SUCCESS;
self.emit('success', file, 'success', null);
} else {
file.status = Dropzone.ERROR;
self.emit('error', file, 'Some upload error', null);
}
self.emit('complete', file);
self.processQueue();
}
};
})(file, totalSteps, step),
duration
);
}
}
};
try {
window.Dropzone = Dropzone;
} catch (e) {}
export { Dropzone };

View File

@ -0,0 +1,460 @@
// Dropzone
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
$dz-box-padding: 1.25rem !default;
$dz-icon-size: 1.875rem !default;
$dz-thumbnail-width: 10rem !default;
$dz-thumbnail-height: 7.5rem !default;
$dz-preview-padding: 0.625rem !default;
$dz-progress-height: 0.5rem !default;
$dz-icon-block-size: 3.75rem !default;
// common styles
.dropzone {
width: 100%;
position: relative;
cursor: pointer;
border-radius: light.$border-radius-lg;
// Disabled
&:not(.dz-clickable) {
opacity: 0.5;
cursor: not-allowed;
}
// Hover
&.dz-drag-hover {
border-style: solid;
.dz-message {
opacity: 0.5;
}
}
}
.dz-message {
font-size: light.$h4-font-size;
&:before {
content: '';
border-radius: 6px;
position: absolute;
top: 5rem;
left: calc(50% - 23px);
display: inline-block;
height: 40px;
width: 40px;
background-repeat: no-repeat !important;
background-position: center !important;
}
.note {
font-size: light.$font-size-base;
}
}
// Fallback
.dz-browser-not-supported {
&.dropzone-box {
min-height: auto !important;
border: none !important;
border-radius: 0 !important;
padding: 0 !important;
width: auto !important;
cursor: default !important;
transition: none;
}
.dz-message {
display: none !important;
}
}
// Default message
.dz-started .dz-message {
display: none;
}
.dz-message {
margin: 8rem 0 3rem;
font-weight: 500;
text-align: center;
.note {
display: block;
margin-top: 0.5rem;
}
}
// styles for dropzone in ecommerce
.app-ecommerce {
.dz-message {
margin-top: 5rem;
&::before {
top: 3rem;
}
}
}
// Preview
.dz-preview {
position: relative;
vertical-align: top;
background: #fff;
font-size: 0.8125rem;
margin: 1rem;
margin-right: $dz-box-padding - 1;
box-sizing: content-box;
cursor: default;
@include light.media-breakpoint-down(sm) {
margin: $dz-box-padding - 0.5;
}
}
// File information
.dz-filename {
position: absolute;
width: 100%;
overflow: hidden;
padding: $dz-preview-padding $dz-preview-padding 0 $dz-preview-padding;
background: light.$white;
white-space: nowrap;
text-overflow: ellipsis;
&:hover {
white-space: normal;
text-overflow: inherit;
}
}
.dz-size {
padding: 1.875rem $dz-preview-padding $dz-preview-padding $dz-preview-padding;
font-size: 0.6875rem;
font-style: italic;
}
// Progressbar
.dz-preview .progress,
.dz-preview .progess-bar {
height: $dz-progress-height;
}
.dz-preview .progress {
position: absolute;
left: 1.25rem;
right: 1.25rem;
top: 50%;
margin-top: -$dz-progress-height * 0.5;
z-index: 30;
}
.dz-complete .progress {
display: none;
}
// Thumbnail
.dz-thumbnail {
position: relative;
padding: $dz-preview-padding;
height: $dz-thumbnail-height;
text-align: center;
box-sizing: content-box;
> img,
.dz-nopreview {
top: 50%;
position: relative;
transform: translateY(-50%) scale(1);
margin: 0 auto;
display: block;
}
> img {
max-height: 100%;
max-width: 100%;
}
}
.dz-nopreview {
font-weight: light.$font-weight-medium;
text-transform: uppercase;
font-size: 0.6875rem;
}
.dz-thumbnail img[src] ~ .dz-nopreview {
display: none;
}
// Remove link
.dz-remove {
display: block;
text-align: center;
padding: 0.375rem 0;
font-size: 0.75rem;
&:hover,
&:focus {
text-decoration: none;
border-top-color: transparent;
}
}
// error/success states
.dz-error-mark,
.dz-success-mark {
position: absolute;
left: 50%;
top: 50%;
display: none;
margin-left: -$dz-icon-block-size * 0.5;
margin-top: -$dz-icon-block-size * 0.5;
height: $dz-icon-block-size;
width: $dz-icon-block-size;
border-radius: 50%;
background-position: center center;
background-size: $dz-icon-size $dz-icon-size;
background-repeat: no-repeat;
box-shadow: 0 0 1.25rem rgba(0, 0, 0, 0.06);
}
.dz-success-mark {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235cb85c' 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");
}
.dz-error-mark {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' 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");
}
.dz-error-message {
position: absolute;
top: -1px;
left: -1px;
bottom: -1px;
right: -1px;
display: none;
color: light.$white;
z-index: 40;
padding: 0.75rem;
text-align: left;
overflow: auto;
font-weight: light.$font-weight-medium;
@include app-rtl {
text-align: right;
}
}
// Error state
.dz-error {
.dz-error-message {
display: none;
}
.dz-error-mark {
display: block;
}
&:hover {
.dz-error-message {
display: block;
}
.dz-error-mark {
display: none;
}
}
}
// Success state
.dz-success .dz-success-mark {
display: block;
}
// RTL
@include app-rtl(false) {
.dz-hidden-input {
left: auto !important;
right: 0 !important;
}
}
// Light style
@if $enable-light-style {
.light-style {
$dz-overlay-bg: light.$dark;
$dz-thumbnail-bg: light.$gray-25;
$dz-border-color: light.$card-border-color;
.dropzone {
border: 2px dashed $dz-border-color;
}
.dz-preview {
border: light.$card-border-width solid $dz-border-color;
border-radius: light.$border-radius;
box-shadow: light.$card-box-shadow;
}
.dz-message {
color: light.$headings-color;
&:before {
background-image: light.str-replace(
light.str-replace(light.$upload-icon, 'currentColor', light.$headings-color),
'#',
'%23'
) !important;
background: #eeedf0;
}
.note {
color: light.$body-color;
font-weight: light.$font-weight-normal;
}
}
.dz-thumbnail {
border-bottom: 1px solid light.rgba-to-hex($dz-border-color);
background: $dz-thumbnail-bg;
@include light.border-top-radius(if(light.$border-radius, calc(#{light.$border-radius} - 1px), 0));
}
.dz-size {
color: light.$text-muted;
}
.dz-remove {
color: light.$body-color;
border-top: 1px solid light.rgba-to-hex($dz-border-color);
@include light.border-bottom-radius(if(light.$border-radius, calc(#{light.$border-radius} - 1px), 0));
&:hover,
&:focus {
color: light.$body-color;
background: light.$gray-100;
}
}
.dz-nopreview {
color: light.$text-muted;
}
.dz-error-mark,
.dz-success-mark {
background-color: rgba($dz-overlay-bg, 0.5);
}
.dz-error-message {
background: rgba(map-get(light.$theme-colors, danger), 0.8);
@include light.border-top-radius(light.$border-radius);
}
@include light.media-breakpoint-up(sm) {
.dz-preview {
display: inline-block;
width: $dz-thumbnail-width + ($dz-preview-padding * 2);
}
.dz-thumbnail {
width: $dz-thumbnail-width;
}
}
}
}
// dark style
@if $enable-dark-style {
.dark-style {
$dz-overlay-bg: dark.$dark;
$dz-thumbnail-bg: dark.$gray-25;
$dz-border-color: dark.$card-border-color;
.dropzone {
border: 2px dashed $dz-border-color;
}
.dz-preview {
background: dark.$card-bg;
border: dark.$card-border-width solid $dz-border-color;
border-radius: dark.$border-radius;
box-shadow: dark.$card-box-shadow;
}
.dz-message {
color: dark.$headings-color;
&:before {
background-image: light.str-replace(
light.str-replace(light.$upload-icon, 'currentColor', dark.$headings-color),
'#',
'%23'
) !important;
background: #373b50;
}
.note {
color: dark.$body-color;
font-weight: dark.$font-weight-normal;
}
}
.dz-filename {
background: dark.$card-bg;
padding-top: 0.25rem;
padding-bottom: 0.25rem;
border-bottom: dark.$card-border-width solid $dz-border-color;
}
.dz-size {
color: dark.$text-muted;
}
.dz-thumbnail {
border-bottom: 1px solid $dz-border-color;
background: $dz-thumbnail-bg;
@include dark.border-top-radius(if(dark.$border-radius, calc(#{dark.$border-radius} - 1px), 0));
}
.dz-nopreview {
color: dark.$text-muted;
}
.dz-remove {
color: dark.$body-color;
border-top: 1px solid $dz-border-color;
@include dark.border-bottom-radius(if(dark.$border-radius, calc(#{dark.$border-radius} - 1px), 0));
&:hover,
&:focus {
color: dark.$body-color;
background: dark.$gray-100;
}
}
.dz-error-mark,
.dz-success-mark {
background-color: rgba($dz-overlay-bg, 0.5);
}
.dz-error-message {
background: rgba(map-get(dark.$theme-colors, danger), 0.8);
@include dark.border-top-radius(dark.$border-radius);
}
@include dark.media-breakpoint-up(sm) {
.dz-preview {
display: inline-block;
width: $dz-thumbnail-width + ($dz-preview-padding * 2);
}
.dz-thumbnail {
width: $dz-thumbnail-width;
}
}
}
}

View File

@ -0,0 +1,114 @@
@import '../../scss/_bootstrap-extended/functions';
@mixin flatpickr-theme($background, $color: null) {
$in-range-bg: rgba-to-hex(rgba($background, 0.16), $card-bg);
$color: if($color, $color, color-contrast($background));
$in-range-color: $background;
.flatpickr-day {
&.today,
&.today:hover {
color: $background !important;
border-color: rgba-to-hex(rgba($background, 0.16), $card-bg);
background-color: rgba-to-hex(rgba($background, 0.16), $card-bg) !important;
}
&.inRange,
&.nextMonthDay.inRange,
&.prevMonthDay.inRange,
&.today.inRange,
&.prevMonthDay.today.inRange,
&.nextMonthDay.today.inRange {
color: $background !important;
background: $in-range-bg !important;
border-color: $in-range-bg !important;
}
&.selected,
&.selected.inRange,
&.selected:focus,
&.selected:hover,
&.selected.nextMonthDay,
&.selected.prevMonthDay,
&.startRange,
&.startRange.inRange,
&.startRange:focus,
&.startRange:hover,
&.startRange.nextMonthDay,
&.startRange.prevMonthDay,
&.endRange,
&.endRange.inRange,
&.endRange:focus,
&.endRange:hover,
&.endRange.nextMonthDay,
&.endRange.prevMonthDay,
&.week.selected {
color: $color !important;
background: $background !important;
border-color: $background !important;
box-shadow: 0 0.125rem 0.375rem 0 rgba($background, 0.3);
}
}
}
@mixin flatpickr-dark-theme($background, $color: null) {
$color: if($color, $color, color-contrast($background));
$in-range-bg: rgba-to-hex(rgba($background, 0.16), $card-bg);
$in-range-color: $background;
.flatpickr-calendar .numInputWrapper span {
&.arrowUp:after {
border-bottom-color: $color;
}
&.arrowDown:after {
border-top-color: $color;
}
}
.flatpickr-day {
&.today,
&.today:hover,
&.inRange {
color: $background !important;
border-color: rgba-to-hex(rgba($background, 0.16), $card-bg) !important;
background-color: rgba-to-hex(rgba($background, 0.16), $card-bg) !important;
}
&.inRange,
&.nextMonthDay.inRange,
&.prevMonthDay.inRange,
&.today.inRange,
&.nextMonthDay.today.inRange,
&.prevMonthDay.today.inRange {
border-color: $in-range-bg !important;
background: $in-range-bg !important;
color: $background !important;
}
&.selected,
&.selected.inRange,
&.selected:focus,
&.selected:hover,
&.selected.prevMonthDay,
&.selected.nextMonthDay,
&.startRange,
&.startRange.inRange,
&.startRange:focus,
&.startRange:hover,
&.startRange.prevMonthDay,
&.startRange.nextMonthDay,
&.endRange,
&.endRange.inRange,
&.endRange:focus,
&.endRange:hover,
&.endRange.nextMonthDay,
&.endRange.prevMonthDay,
&.week.selected {
background: $background !important;
border-color: $background !important;
color: $color !important;
box-shadow: 0 0.125rem 0.375rem 0 rgba($background, 0.3);
}
}
}

View File

@ -0,0 +1,7 @@
import flatpickr from 'flatpickr/dist/flatpickr';
try {
window.flatpickr = flatpickr;
} catch (e) {}
export { flatpickr };

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
@mixin fullcalendar-theme($background, $color) {
.fc {
// FC event
@include bg-label-variant('.fc-event-primary:not(.fc-list-event)', $background);
// FC list event
.fc-event-primary.fc-list-event {
.fc-list-event-dot {
border-color: $background !important;
}
}
.fc-button-primary:not(.fc-prev-button):not(.fc-next-button) {
background-color: rgba($background, 0.16) !important;
border: 0;
color: $background;
&.fc-button-active,
&:hover {
background-color: rgba($background, 0.24) !important;
color: $background;
}
}
}
}

View File

@ -0,0 +1,22 @@
import { Calendar } from '@fullcalendar/core';
import dayGridPlugin from '@fullcalendar/daygrid';
import interactionPlugin from '@fullcalendar/interaction';
import listPlugin from '@fullcalendar/list';
import timegridPlugin from '@fullcalendar/timegrid';
const calendarPlugins = {
dayGrid: dayGridPlugin,
interaction: interactionPlugin,
list: listPlugin,
timeGrid: timegridPlugin
};
try {
window.Calendar = Calendar;
window.dayGridPlugin = dayGridPlugin;
window.interactionPlugin = interactionPlugin;
window.listPlugin = listPlugin;
window.timegridPlugin = timegridPlugin;
} catch (e) {}
export { Calendar, dayGridPlugin, interactionPlugin, listPlugin, timegridPlugin };

View File

@ -0,0 +1,535 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'mixins';
$fullcalendar-event-padding-y: 0.25rem !default;
$fullcalendar-event-padding-x: 0.75rem !default;
$fullcalendar-event-margin-top: 0.625rem !default;
$fullcalendar-event-font-size: light.$font-size-base !default;
$fullcalendar-event-font-weight: light.$font-weight-medium !default;
$fullcalendar-toolbar-btn-padding: light.$input-btn-padding-y - 0.115 light.$input-btn-padding-x !default;
$fullcalendar-fc-popover-z-index: 1090 !default;
$fullcalendar-event-border-radius: light.$border-radius-sm !default;
$fullcalendar-today-background-light: light.rgba-to-hex(light.$gray-50, light.$rgba-to-hex-bg) !default;
$fullcalendar-today-background-dark: dark.rgba-to-hex(dark.$gray-50, dark.$rgba-to-hex-bg) !default;
// Calendar
.fc {
.fc-scrollgrid-section {
height: 0px;
}
a[data-navlink]:hover {
text-decoration: none;
}
.fc-timegrid-slot {
height: 4em !important;
}
.fc-timeGridWeek-view {
.fc-timegrid-slot-minor {
border-top-style: none;
}
}
.fc-timeGridDay-view {
.fc-timegrid-slot-minor {
border-top-style: solid;
}
}
.fc-col-header-cell-cushion {
padding-top: 8.7px !important;
padding-bottom: 8.7px !important;
}
.fc-toolbar {
flex-wrap: wrap;
.fc-prev-button,
.fc-next-button {
display: inline-block;
background-color: transparent;
border-color: transparent;
&:hover,
&:active,
&:focus {
background-color: transparent !important;
border-color: transparent !important;
box-shadow: none !important;
}
}
.fc-button {
border-radius: light.$border-radius;
&:not(.fc-next-button):not(.fc-prev-button) {
padding: $fullcalendar-toolbar-btn-padding;
&:active,
&:focus {
box-shadow: none !important ;
}
}
}
> * > :not(:first-child) {
margin-left: 0 !important;
@include app-rtl(true) {
margin-right: 0 !important;
}
}
.fc-toolbar-chunk {
display: flex;
align-items: center;
}
.fc-button-group {
.fc-button {
text-transform: capitalize;
}
& + div {
display: flex;
align-items: center;
flex-wrap: wrap;
}
}
.fc--button:empty,
.fc-toolbar-chunk:empty {
display: none;
}
.fc-sidebarToggle-button + div {
margin-left: 0;
}
}
table.fc-scrollgrid {
.fc-col-header {
.fc-col-header-cell {
border-left: none;
}
}
}
.fc-view-harness {
min-height: 650px;
.fc-col-header-cell-cushion {
padding-bottom: 3px;
padding-top: 3px;
}
// To remove border on weekday row
.fc-scrollgrid-section-header > * {
@include app-ltr(true) {
border-inline-end-width: 0px;
}
@include app-rtl(true) {
border-inline-start-width: 0px;
}
}
.fc-timegrid-event .fc-event-time {
font-size: 0.6875rem;
}
.fc-v-event .fc-event-title {
font-size: $fullcalendar-event-font-size;
padding-top: 0.2rem;
font-weight: $fullcalendar-event-font-weight;
}
.fc-timegrid-event .fc-event-main {
padding: $fullcalendar-event-padding-y $fullcalendar-event-padding-x 0;
}
}
.fc-daygrid-day-events {
.fc-event,
.fc-more-link {
margin-inline: 0.5rem !important;
}
}
// To fix firefox thead border issue
.fc-day-today {
background-clip: padding-box;
}
//! Fix: white color issue of event text
.fc-h-event .fc-event-main,
.fc-v-event .fc-event-main {
color: inherit !important;
}
.fc-daygrid-block-event .fc-event-time,
.fc-daygrid-dot-event .fc-event-title {
font-weight: $fullcalendar-event-font-weight;
}
.fc-daygrid-body-natural {
.fc-daygrid-day-events {
margin-top: 0.94rem !important;
margin-bottom: 0.94rem !important;
}
}
.fc-view-harness {
margin: 0 -1.5rem;
.fc-daygrid-body {
.fc-daygrid-day {
.fc-daygrid-day-top {
flex-direction: row;
.fc-daygrid-day-number {
float: left;
padding: 0.5rem;
}
}
.fc-daygrid-day-bottom .fc-daygrid-more-link {
margin-top: 0.625rem;
}
}
}
.fc-event {
font-size: $fullcalendar-event-font-size;
font-weight: $fullcalendar-event-font-weight;
padding: $fullcalendar-event-padding-y $fullcalendar-event-padding-x;
border-radius: $fullcalendar-event-border-radius;
border: 0;
.fc-event-title {
font-weight: light.$font-weight-medium;
}
}
.fc-daygrid-event-harness {
// ! week & day events are using this style for all day only, not for other events
.fc-event {
&.private-event {
background-color: transparent !important;
border-color: transparent !important;
}
}
}
.fc-event .fc-daygrid-event-dot {
display: none;
}
}
.fc-daygrid-event-harness + .fc-daygrid-event-harness .fc-daygrid-event {
margin-top: $fullcalendar-event-margin-top !important;
}
.fc-timegrid {
.fc-timegrid-divider {
display: none;
}
.fc-timegrid-event {
border-radius: 0px;
box-shadow: none;
padding-top: $fullcalendar-event-padding-x;
.fc-event-time {
font-size: inherit;
}
}
}
.fc-daygrid-event-harness-abs .fc-event {
margin-bottom: 0.625rem;
}
.fc-timegrid-slot-label-frame {
text-align: center;
}
.fc-timegrid-axis-cushion,
.fc-timegrid-slot-label-cushion {
font-size: light.$font-size-sm;
}
.fc-timegrid-axis-cushion {
text-transform: capitalize;
padding: 0.5rem 0.4375rem;
}
.fc-timegrid-slot-label-cushion {
text-transform: uppercase;
padding: $fullcalendar-event-padding-x !important;
}
.fc-list-day-cushion,
.fc-list-table td {
padding-inline: 1rem;
}
.fc-popover {
z-index: $fullcalendar-fc-popover-z-index !important;
.fc-popover-header {
padding: 0.566rem;
}
}
.fc-list {
.fc-list-table {
border-bottom: 1px solid;
}
}
&.fc-theme-standard {
.fc-list {
border: none;
}
}
.fc-day-other {
.fc-daygrid-day-top {
opacity: 1;
}
}
}
// Light style
@if $enable-light-style {
.light-style {
.fc {
.fc-toolbar {
.fc-prev-button,
.fc-next-button {
.fc-icon {
color: light.$headings-color;
}
}
}
.fc-col-header-cell-cushion {
color: light.$headings-color;
}
&.fc-theme-standard .fc-list-day-cushion {
background-color: $fullcalendar-today-background-light !important;
}
table.fc-scrollgrid {
border-color: light.$border-color;
.fc-col-header {
tbody {
border: none;
}
.fc-col-header-cell {
border-color: light.$border-color;
}
}
td {
border-color: light.$border-color;
}
}
.fc-timegrid-axis-cushion {
color: light.$text-muted;
}
.fc-timegrid-slot-label-cushion {
color: light.$headings-color;
}
.private-event {
.fc-event-time,
.fc-event-title {
color: light.$danger;
}
}
.fc-day-today:not(.fc-col-header-cell) {
background-color: $fullcalendar-today-background-light !important;
.fc-popover-body {
background-color: light.$card-bg !important;
}
}
.fc-popover {
.fc-popover-header {
background: light.$body-bg;
}
}
.fc-list {
.fc-list-table {
th {
border: 0;
background: light.$body-bg;
}
.fc-list-event {
cursor: pointer;
&:hover {
td {
background-color: light.$gray-25;
}
}
td {
border-color: light.$border-color;
color: light.$body-color;
}
}
.fc-list-day {
th {
color: light.$headings-color;
}
}
tbody > tr:first-child th {
border-top: 1px solid light.$border-color;
}
}
.fc-list-empty {
background-color: light.$body-bg;
}
}
// Border color
table,
tbody,
thead,
tbody td {
border-color: light.$border-color;
}
.fc-day-other {
.fc-daygrid-day-top {
color: light.$text-muted;
}
}
}
// ? Style event here
@each $color, $value in light.$theme-colors {
// FC event
@include light.bg-label-variant('.fc-event-#{$color}:not(.fc-list-event)', $value);
// FC list event
.fc-event-#{$color}.fc-list-event {
.fc-list-event-dot {
border-color: $value !important;
}
}
}
}
}
// Dark Style
@if $enable-dark-style {
.dark-style {
.fc {
.fc-toolbar {
.fc-prev-button,
.fc-next-button {
.fc-icon {
color: dark.$headings-color;
}
}
.fc-sidebarToggle-button {
color: dark.$white;
}
}
.fc-col-header-cell-cushion {
color: dark.$headings-color;
}
&.fc-theme-standard .fc-list-day-cushion {
background-color: $fullcalendar-today-background-dark !important;
}
.fc-timegrid-axis-cushion {
color: dark.$text-muted;
}
.fc-timegrid-slot-label-cushion {
color: dark.$headings-color;
}
table.fc-scrollgrid {
border-color: dark.$border-color;
.fc-col-header {
tbody {
border: none;
}
.fc-col-header-cell {
border-color: dark.$border-color;
}
}
td {
border-color: dark.$border-color;
}
}
.private-event {
.fc-event-time,
.fc-event-title {
color: dark.$danger;
}
}
.fc-day-today:not(.fc-col-header-cell) {
background-color: $fullcalendar-today-background-dark !important;
.fc-popover-body {
background-color: dark.$card-bg !important;
}
}
.fc-divider {
background: dark.$border-color;
border-color: dark.$border-color;
}
.fc-popover {
background-color: dark.$body-bg;
border: 0;
.fc-popover-header {
background-color: dark.$light;
}
}
.fc-list {
.fc-list-table {
th {
border: 0;
background: dark.$body-bg;
}
.fc-list-event {
cursor: pointer;
&:hover {
td {
background-color: dark.$gray-50;
}
}
td {
border-color: dark.$border-color;
color: dark.$body-color;
}
}
.fc-list-day {
th {
color: dark.$headings-color;
}
}
tbody > tr:first-child th {
border-top: 1px solid dark.$border-color;
}
}
.fc-list-empty {
background-color: dark.$body-bg;
}
}
table,
.fc-timegrid-axis,
tbody,
thead,
tbody td {
border-color: dark.$border-color;
}
// FC day
.fc-timegrid-axis-cushion.fc-scrollgrid-shrink-cushion {
color: dark.$text-muted;
}
// FC table list disabled bg
.fc-day-disabled {
background-color: rgba(dark.$base, 0.16);
}
.fc-day-other {
.fc-daygrid-day-top {
color: dark.$text-muted;
}
}
}
// ? Style event here
@each $color, $value in dark.$theme-colors {
// FC event
@include dark.bg-label-variant('.fc-event-#{$color}:not(.fc-list-event)', $value);
.fc-event-#{$color}:not(.fc-list-event) {
box-shadow: none;
}
// FC list event
.fc-event-#{$color}.fc-list-event {
.fc-list-event-dot {
border-color: $value !important;
}
}
}
}
}
// Media Queries
@include light.media-breakpoint-down(sm) {
.fc {
.fc-header-toolbar {
.fc-toolbar-chunk + .fc-toolbar-chunk {
margin-top: 1rem;
}
}
}
}

View File

@ -0,0 +1 @@
import 'hammerjs/hammer.js';

View File

@ -0,0 +1 @@
@import 'highlight.js/styles/github.css';

View File

@ -0,0 +1,7 @@
import hljs from 'highlight.js';
try {
window.hljs = hljs;
} catch (e) {}
export { hljs };

View File

@ -0,0 +1 @@
@import 'highlight.js/styles/atom-one-light';

View File

@ -0,0 +1,339 @@
/*! Idle Timer - v1.1.1 - 2020-06-25
* https://github.com/thorst/jquery-idletimer
* Copyright (c) 2020 Paul Irish; Licensed MIT */
/*
mousewheel (deprecated) -> IE6.0, Chrome, Opera, Safari
DOMMouseScroll (deprecated) -> Firefox 1.0
wheel (standard) -> Chrome 31, Firefox 17, IE9, Firefox Mobile 17.0
//No need to use, use DOMMouseScroll
MozMousePixelScroll -> Firefox 3.5, Firefox Mobile 1.0
//Events
WheelEvent -> see wheel
MouseWheelEvent -> see mousewheel
MouseScrollEvent -> Firefox 3.5, Firefox Mobile 1.0
*/
(function ($) {
$.idleTimer = function (firstParam, elem) {
var opts;
if (typeof firstParam === 'object') {
opts = firstParam;
firstParam = null;
} else if (typeof firstParam === 'number') {
opts = { timeout: firstParam };
firstParam = null;
}
// element to watch
elem = elem || document;
// defaults that are to be stored as instance props on the elem
opts = $.extend(
{
idle: false, // indicates if the user is idle
timeout: 30000, // the amount of time (ms) before the user is considered idle
events:
'mousemove keydown wheel DOMMouseScroll mousewheel mousedown touchstart touchmove MSPointerDown MSPointerMove' // define active events
},
opts
);
var jqElem = $(elem),
obj = jqElem.data('idleTimerObj') || {},
/* (intentionally not documented)
* Toggles the idle state and fires an appropriate event.
* @return {void}
*/
toggleIdleState = function (e) {
var obj = $.data(elem, 'idleTimerObj') || {};
// toggle the state
obj.idle = !obj.idle;
// store toggle state date time
obj.olddate = +new Date();
// create a custom event, with state and name space
var event = $.Event((obj.idle ? 'idle' : 'active') + '.idleTimer');
// trigger event on object with elem and copy of obj
$(elem).trigger(event, [elem, $.extend({}, obj), e]);
},
/**
* Handle event triggers
* @return {void}
* @method event
* @static
*/
handleEvent = function (e) {
var obj = $.data(elem, 'idleTimerObj') || {};
// ignore writting to storage unless related to idleTimer
if (e.type === 'storage' && e.originalEvent.key !== obj.timerSyncId) {
return;
}
// this is already paused, ignore events for now
if (obj.remaining != null) {
return;
}
/*
mousemove is kinda buggy, it can be triggered when it should be idle.
Typically is happening between 115 - 150 milliseconds after idle triggered.
@psyafter & @kaellis report "always triggered if using modal (jQuery ui, with overlay)"
@thorst has similar issues on ios7 "after $.scrollTop() on text area"
*/
if (e.type === 'mousemove') {
// if coord are same, it didn't move
if (e.pageX === obj.pageX && e.pageY === obj.pageY) {
return;
}
// if coord don't exist how could it move
if (typeof e.pageX === 'undefined' && typeof e.pageY === 'undefined') {
return;
}
// under 200 ms is hard to do, and you would have to stop, as continuous activity will bypass this
var elapsed = +new Date() - obj.olddate;
if (elapsed < 200) {
return;
}
}
// clear any existing timeout
clearTimeout(obj.tId);
// if the idle timer is enabled, flip
if (obj.idle) {
toggleIdleState(e);
}
// store when user was last active
obj.lastActive = +new Date();
// update mouse coord
obj.pageX = e.pageX;
obj.pageY = e.pageY;
// sync lastActive
if (e.type !== 'storage' && obj.timerSyncId) {
if (typeof localStorage !== 'undefined') {
localStorage.setItem(obj.timerSyncId, obj.lastActive);
}
}
// set a new timeout
obj.tId = setTimeout(toggleIdleState, obj.timeout);
},
/**
* Restore initial settings and restart timer
* @return {void}
* @method reset
* @static
*/
reset = function () {
var obj = $.data(elem, 'idleTimerObj') || {};
// reset settings
obj.idle = obj.idleBackup;
obj.olddate = +new Date();
obj.lastActive = obj.olddate;
obj.remaining = null;
// reset Timers
clearTimeout(obj.tId);
if (!obj.idle) {
obj.tId = setTimeout(toggleIdleState, obj.timeout);
}
},
/**
* Store remaining time, stop timer
* You can pause from an idle OR active state
* @return {void}
* @method pause
* @static
*/
pause = function () {
var obj = $.data(elem, 'idleTimerObj') || {};
// this is already paused
if (obj.remaining != null) {
return;
}
// define how much is left on the timer
obj.remaining = obj.timeout - (+new Date() - obj.olddate);
// clear any existing timeout
clearTimeout(obj.tId);
},
/**
* Start timer with remaining value
* @return {void}
* @method resume
* @static
*/
resume = function () {
var obj = $.data(elem, 'idleTimerObj') || {};
// this isn't paused yet
if (obj.remaining == null) {
return;
}
// start timer
if (!obj.idle) {
obj.tId = setTimeout(toggleIdleState, obj.remaining);
}
// clear remaining
obj.remaining = null;
},
/**
* Stops the idle timer. This removes appropriate event handlers
* and cancels any pending timeouts.
* @return {void}
* @method destroy
* @static
*/
destroy = function () {
var obj = $.data(elem, 'idleTimerObj') || {};
//clear any pending timeouts
clearTimeout(obj.tId);
//Remove data
jqElem.removeData('idleTimerObj');
//detach the event handlers
jqElem.off('._idleTimer');
},
/**
* Returns the time until becoming idle
* @return {number}
* @method remainingtime
* @static
*/
remainingtime = function () {
var obj = $.data(elem, 'idleTimerObj') || {};
//If idle there is no time remaining
if (obj.idle) {
return 0;
}
//If its paused just return that
if (obj.remaining != null) {
return obj.remaining;
}
//Determine remaining, if negative idle didn't finish flipping, just return 0
var remaining = obj.timeout - (+new Date() - obj.lastActive);
if (remaining < 0) {
remaining = 0;
}
//If this is paused return that number, else return current remaining
return remaining;
};
// determine which function to call
if (firstParam === null && typeof obj.idle !== 'undefined') {
// they think they want to init, but it already is, just reset
reset();
return jqElem;
} else if (firstParam === null) {
// they want to init
} else if (firstParam !== null && typeof obj.idle === 'undefined') {
// they want to do something, but it isnt init
// not sure the best way to handle this
return false;
} else if (firstParam === 'destroy') {
destroy();
return jqElem;
} else if (firstParam === 'pause') {
pause();
return jqElem;
} else if (firstParam === 'resume') {
resume();
return jqElem;
} else if (firstParam === 'reset') {
reset();
return jqElem;
} else if (firstParam === 'getRemainingTime') {
return remainingtime();
} else if (firstParam === 'getElapsedTime') {
return +new Date() - obj.olddate;
} else if (firstParam === 'getLastActiveTime') {
return obj.lastActive;
} else if (firstParam === 'isIdle') {
return obj.idle;
}
// Test via a getter in the options object to see if the passive property is accessed
// This isnt working in jquery, though is planned for 4.0
// https://github.com/jquery/jquery/issues/2871
/*var supportsPassive = false;
try {
var Popts = Object.defineProperty({}, "passive", {
get: function() {
supportsPassive = true;
}
});
window.addEventListener("test", null, Popts);
} catch (e) {}
*/
/* (intentionally not documented)
* Handles a user event indicating that the user isn't idle. namespaced with internal idleTimer
* @param {Event} event A DOM2-normalized event object.
* @return {void}
*/
jqElem.on((opts.events + ' ').split(' ').join('._idleTimer ').trim(), function (e) {
handleEvent(e);
});
//}, supportsPassive ? { passive: true } : false);
if (opts.timerSyncId) {
$(window).on('storage', handleEvent);
}
// Internal Object Properties, This isn't all necessary, but we
// explicitly define all keys here so we know what we are working with
obj = $.extend(
{},
{
olddate: +new Date(), // the last time state changed
lastActive: +new Date(), // the last time timer was active
idle: opts.idle, // current state
idleBackup: opts.idle, // backup of idle parameter since it gets modified
timeout: opts.timeout, // the interval to change state
remaining: null, // how long until state changes
timerSyncId: opts.timerSyncId, // localStorage key to use for syncing this timer
tId: null, // the idle timer setTimeout
pageX: null, // used to store the mouse coord
pageY: null
}
);
// set a timeout to toggle state. May wish to omit this in some situations
if (!obj.idle) {
obj.tId = setTimeout(toggleIdleState, obj.timeout);
}
// store our instance on the object
$.data(elem, 'idleTimerObj', obj);
return jqElem;
};
// This allows binding to element
$.fn.idleTimer = function (firstParam) {
if (this[0]) {
return $.idleTimer(firstParam, this[0]);
}
return this;
};
})(jQuery);

View File

@ -0,0 +1 @@
import 'jkanban/dist/jkanban';

View File

@ -0,0 +1,28 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'jkanban/dist/jkanban';
// Light layout
@if $enable-light-style {
.light-style {
.kanban-board {
background: light.$border-color;
}
.kanban-item {
background: light.$card-bg;
}
}
}
// Dark layout
@if $enable-dark-style {
.dark-style {
.kanban-board {
background: dark.$border-color;
}
.kanban-item {
background: dark.$card-bg;
}
}
}

View File

@ -0,0 +1 @@
import 'jquery.repeater/jquery.repeater';

View File

@ -0,0 +1 @@
import 'jquery-sticky/jquery.sticky';

View File

@ -0,0 +1,11 @@
@import '../../scss/_bootstrap-extended/_functions';
@mixin timepicker-theme($background, $color: null) {
$color: if($color, $color, color-contrast($background));
li.ui-timepicker-selected,
.ui-timepicker-list .ui-timepicker-selected:hover {
color: $color !important;
background: $background !important;
}
}

View File

@ -0,0 +1 @@
import 'timepicker/jquery.timepicker';

View File

@ -0,0 +1,116 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
.ui-timepicker-wrapper {
max-height: 10rem;
overflow-y: auto;
margin: 0.125rem 0;
background: light.$white;
background-clip: padding-box;
outline: none;
}
.ui-timepicker-list {
list-style: none;
padding: 0.125rem 0;
margin: 0;
}
.ui-timepicker-duration {
margin-left: 0.25rem;
@include app-rtl {
margin-left: 0;
margin-right: 0.25rem;
}
}
.ui-timepicker-list li {
padding: 0.25rem 0.75rem;
margin: 0.125rem 0.875rem;
white-space: nowrap;
cursor: pointer;
list-style: none;
border-radius: light.$dropdown-border-radius;
&.ui-timepicker-disabled,
&.ui-timepicker-selected.ui-timepicker-disabled {
background: light.$white !important;
cursor: default !important;
}
}
@if $enable-light-style {
.light-style {
.ui-timepicker-wrapper {
padding: light.$dropdown-padding-y;
z-index: light.$zindex-popover;
background: light.$dropdown-bg;
box-shadow: light.$card-box-shadow;
border: light.$dropdown-border-width solid light.$dropdown-border-color;
@include light.border-radius(light.$border-radius);
}
.ui-timepicker-list li {
color: light.$dropdown-link-color;
&:hover {
background: light.$dropdown-link-hover-bg;
}
&:not(.ui-timepicker-selected) {
.ui-timepicker-duration {
color: light.$text-muted;
.ui-timepicker-list:hover & {
color: light.$text-muted;
}
}
}
}
.ui-timepicker-list li.ui-timepicker-disabled,
.ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled {
background: light.$dropdown-bg !important;
color: light.$dropdown-link-disabled-color !important;
}
}
}
@if $enable-dark-style {
.dark-style {
.ui-timepicker-wrapper {
border: dark.$dropdown-border-width solid dark.$dropdown-border-color;
padding: dark.$dropdown-padding-y 0;
z-index: dark.$zindex-popover;
background: dark.$dropdown-bg;
box-shadow: dark.$card-box-shadow;
@include dark.border-radius(dark.$border-radius);
}
.ui-timepicker-list li {
color: dark.$dropdown-link-color;
&:hover {
background: dark.$dropdown-link-hover-bg;
}
&:not(.ui-timepicker-selected) {
.ui-timepicker-duration {
color: dark.$text-muted;
.ui-timepicker-list:hover & {
color: dark.$text-muted;
}
}
}
}
.ui-timepicker-list li.ui-timepicker-disabled,
.ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled {
color: dark.$dropdown-link-disabled-color !important;
background: dark.$dropdown-bg !important;
}
}
}

View File

@ -0,0 +1,8 @@
import jQuery from 'jquery/dist/jquery';
const $ = jQuery;
try {
window.jQuery = window.$ = jQuery;
} catch (e) {}
export { jQuery, $ };

View File

@ -0,0 +1 @@
import 'jstree/dist/jstree';

View File

@ -0,0 +1,115 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'jstree/dist/themes/default/style';
@import 'jstree/dist/themes/default-dark/style';
@import './themes/theme';
// Light Style
@if $enable-light-style {
.light-style {
// Folder Icons and text colors
.jstree {
.jstree-container-ul {
.jstree-icon.ti-folder,
.ion-ios-folder {
color: light.$warning;
}
.jstree-icon.ti-file {
color: light.$primary;
}
}
}
// Context Menu Styling
.vakata-context.jstree-contextmenu {
background: light.$white;
border: 0;
box-shadow: 0px 0px 50px 0px rgba(light.$black, 0.1);
li {
a {
padding: 0 1.5rem;
text-shadow: none;
i {
display: none;
}
}
&.vakata-context-hover {
a {
box-shadow: none;
}
}
&.vakata-context-separator {
a {
margin: 0;
}
}
ul {
background: light.$white;
border: 0;
box-shadow: 0px 0px 50px 0px rgba(light.$black, 0.1);
}
}
.vakata-contextmenu-sep {
display: none;
}
}
}
}
// Dark Style
@if $enable-dark-style {
.dark-style {
// Folder Icons and text colors
.jstree {
.jstree-container-ul {
.jstree-icon.ti-folder,
.ion-ios-folder {
color: dark.$warning;
}
.jstree-icon.ti-file {
color: dark.$primary;
}
}
}
// Context Menu Styling
.vakata-context.jstree-contextmenu {
background: dark.$white;
border: 0;
box-shadow: 0px 0px 50px 0px rgba(dark.$black, 0.1);
li {
a {
padding: 0 1.5rem;
text-shadow: none;
i {
display: none;
}
}
&.vakata-context-hover {
a {
box-shadow: none;
}
}
&.vakata-context-separator {
a {
margin: 0;
}
}
ul {
background: dark.$white;
border: 0;
box-shadow: 0px 0px 50px 0px rgba(dark.$black, 0.1);
}
}
.vakata-contextmenu-sep {
display: none;
}
}
}
}
.jstree-default-dark .jstree-anchor {
text-shadow: none !important;
color: dark.$body-color;
}

View File

@ -0,0 +1,123 @@
@import '../../../scss/_bootstrap-extended/include'; // imported for media query mixin
// Light Style
@if $enable-light-style {
$theme-name: 'default';
$throbber-bg: "url('./themes/default/throbber.gif')";
$small-bg: "url('./themes/default/32px.png')";
$big-bg: "url('./themes/default/40px.png')";
.jstree-#{$theme-name} {
background: transparent;
}
.jstree-#{$theme-name} > .jstree-container-ul .jstree-loading > .jstree-ocl,
.jstree-#{$theme-name}-small > .jstree-container-ul .jstree-loading > .jstree-ocl,
.jstree-#{$theme-name}-large > .jstree-container-ul .jstree-loading > .jstree-ocl {
background-image: #{$throbber-bg};
}
.jstree-#{$theme-name} .jstree-node,
.jstree-#{$theme-name} .jstree-icon,
.jstree-#{$theme-name} .jstree-file,
.jstree-#{$theme-name} .jstree-folder,
#jstree-dnd.jstree-#{$theme-name} .jstree-ok,
#jstree-dnd.jstree-#{$theme-name} .jstree-er,
.jstree-#{$theme-name}-small .jstree-node,
.jstree-#{$theme-name}-small .jstree-icon,
.jstree-#{$theme-name}-small .jstree-file,
.jstree-#{$theme-name}-small .jstree-folder,
#jstree-dnd.jstree-#{$theme-name}-small .jstree-ok,
#jstree-dnd.jstree-#{$theme-name}-small .jstree-er,
.jstree-#{$theme-name}-large .jstree-node,
.jstree-#{$theme-name}-large .jstree-icon,
.jstree-#{$theme-name}-large .jstree-file,
.jstree-#{$theme-name}-large .jstree-folder,
#jstree-dnd.jstree-#{$theme-name}-large .jstree-ok,
#jstree-dnd.jstree-#{$theme-name}-large .jstree-er {
background-image: #{$small-bg};
}
@include media-breakpoint-down(md) {
#jstree-dnd.jstree-dnd-responsive > .jstree-ok,
#jstree-dnd.jstree-dnd-responsive > .jstree-er,
.jstree-#{$theme-name}-responsive .jstree-icon,
.jstree-#{$theme-name}-responsive .jstree-node,
.jstree-#{$theme-name}-responsive .jstree-icon,
.jstree-#{$theme-name}-responsive .jstree-node > .jstree-ocl,
.jstree-#{$theme-name}-responsive .jstree-themeicon,
.jstree-#{$theme-name}-responsive .jstree-checkbox,
.jstree-#{$theme-name}-responsive .jstree-file,
.jstree-#{$theme-name}-responsive .jstree-folder {
background-image: #{$big-bg};
}
}
.jstree-#{$theme-name} .jstree-last,
.jstree-#{$theme-name} > .jstree-no-dots .jstree-node,
.jstree-#{$theme-name} > .jstree-no-dots .jstree-leaf > .jstree-ocl,
.jstree-#{$theme-name} .jstree-disabled,
.jstree-#{$theme-name} .jstree-themeicon-custom:not(.jstree-file):not(.jstree-folder) {
background: transparent !important;
}
}
// Dark Style
@if $enable-dark-style {
$theme-name: 'default-dark';
$throbber-bg: "url('./themes/default-dark/throbber.gif')";
$small-bg: "url('./themes/default-dark/32px.png')";
$big-bg: "url('./themes/default-dark/40px.png')";
.jstree-#{$theme-name} {
background: transparent;
}
.jstree-#{$theme-name} > .jstree-container-ul .jstree-loading > .jstree-ocl,
.jstree-#{$theme-name}-small > .jstree-container-ul .jstree-loading > .jstree-ocl,
.jstree-#{$theme-name}-large > .jstree-container-ul .jstree-loading > .jstree-ocl {
background-image: #{$throbber-bg};
}
.jstree-#{$theme-name} .jstree-node,
.jstree-#{$theme-name} .jstree-icon,
.jstree-#{$theme-name} .jstree-file,
.jstree-#{$theme-name} .jstree-folder,
#jstree-dnd.jstree-#{$theme-name} .jstree-ok,
#jstree-dnd.jstree-#{$theme-name} .jstree-er,
.jstree-#{$theme-name}-small .jstree-node,
.jstree-#{$theme-name}-small .jstree-icon,
.jstree-#{$theme-name}-small .jstree-file,
.jstree-#{$theme-name}-small .jstree-folder,
#jstree-dnd.jstree-#{$theme-name}-small .jstree-ok,
#jstree-dnd.jstree-#{$theme-name}-small .jstree-er,
.jstree-#{$theme-name}-large .jstree-node,
.jstree-#{$theme-name}-large .jstree-icon,
.jstree-#{$theme-name}-large .jstree-file,
.jstree-#{$theme-name}-large .jstree-folder,
#jstree-dnd.jstree-#{$theme-name}-large .jstree-ok,
#jstree-dnd.jstree-#{$theme-name}-large .jstree-er {
background-image: #{$small-bg};
}
@include media-breakpoint-down(md) {
#jstree-dnd.jstree-dnd-responsive > .jstree-ok,
#jstree-dnd.jstree-dnd-responsive > .jstree-er,
.jstree-#{$theme-name}-responsive .jstree-icon,
.jstree-#{$theme-name}-responsive .jstree-node,
.jstree-#{$theme-name}-responsive .jstree-icon,
.jstree-#{$theme-name}-responsive .jstree-node > .jstree-ocl,
.jstree-#{$theme-name}-responsive .jstree-themeicon,
.jstree-#{$theme-name}-responsive .jstree-checkbox,
.jstree-#{$theme-name}-responsive .jstree-file,
.jstree-#{$theme-name}-responsive .jstree-folder {
background-image: #{$big-bg};
}
}
.jstree-#{$theme-name} .jstree-last,
.jstree-#{$theme-name} > .jstree-no-dots .jstree-node,
.jstree-#{$theme-name} > .jstree-no-dots .jstree-leaf > .jstree-ocl,
.jstree-#{$theme-name} .jstree-disabled,
.jstree-#{$theme-name} .jstree-themeicon-custom:not(.jstree-file):not(.jstree-folder) {
background: transparent !important;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

View File

@ -0,0 +1,19 @@
import leaFlet from 'leaflet';
import markerIcon2x from 'leaflet/dist/images/marker-icon-2x.png';
import markerIcon from 'leaflet/dist/images/marker-icon.png';
import markerShadow from 'leaflet/dist/images/marker-shadow.png';
delete leaFlet.Icon.Default.prototype._getIconUrl;
leaFlet.Icon.Default.mergeOptions({
iconRetinaUrl: markerIcon2x,
iconUrl: markerIcon,
shadowUrl: markerShadow
});
try {
window.leaFlet = leaFlet;
} catch (e) {}
export { leaFlet };

View File

@ -0,0 +1,46 @@
@import '../../scss/_bootstrap-extended/include';
@import '../../scss/_custom-variables/libs';
@import 'leaflet/dist/leaflet';
.leaflet-map {
height: 400px;
}
.leaflet-pane {
z-index: 1;
}
// RTL
@include app-rtl(false) {
.leaflet-map {
.leaflet-control-container {
.leaflet-left {
right: 0;
left: unset;
.leaflet-control-zoom,
.leaflet-control-layers {
margin-left: 0;
margin-right: 10px;
}
}
.leaflet-right {
left: 0;
right: unset;
.leaflet-control-zoom,
.leaflet-control-layers {
margin-left: 10px;
margin-right: 0px;
}
}
}
}
}
//Map tooltip border radius
.leaflet-popup {
.leaflet-popup-content-wrapper {
border-radius: $border-radius;
}
}

View File

@ -0,0 +1,7 @@
import mapboxgl from 'mapbox-gl';
try {
window.mapboxgl = mapboxgl;
} catch (e) {}
export { mapboxgl };

View File

@ -0,0 +1,8 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'mapbox-gl/dist/mapbox-gl';
.marker-focus {
filter: drop-shadow(0px 0px 7px light.$purple);
}

View File

@ -0,0 +1,7 @@
import Masonry from 'masonry-layout';
try {
window.Masonry = Masonry;
} catch (e) {}
export { Masonry };

View File

@ -0,0 +1,7 @@
import moment from 'moment/moment';
try {
window.moment = moment;
} catch (e) {}
export { moment };

View File

@ -0,0 +1,3 @@
import nodeWaves from 'node-waves/src/js/waves';
window.Waves = nodeWaves;

View File

@ -0,0 +1,4 @@
// Waves
// *******************************************************************************
@import 'node-waves/src/scss/waves';

View File

@ -0,0 +1,26 @@
@mixin nouislider-variant($parent, $background) {
#{$parent}.noUi-target {
// If slider is not disabled
&:not([disabled]) {
background: rgba($background, 0.16);
.noUi-connect {
background: $background;
}
.noUi-handle {
border-color: $background;
&:hover {
box-shadow: 0 0 0 8px rgba($background, 0.16);
}
&:active,
&:focus {
box-shadow: 0 0 0 13px rgba($background, 0.16);
}
}
}
}
}
@mixin nouislider-theme($background) {
@include nouislider-variant('', $background);
}

View File

@ -0,0 +1,7 @@
import noUiSlider from 'nouislider';
try {
window.noUiSlider = noUiSlider;
} catch (e) {}
export { noUiSlider };

View File

@ -0,0 +1,398 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import 'nouislider/dist/nouislider';
@import '../../scss/_custom-variables/libs';
@import 'mixins';
$noUiSlider-handle-color: #fff !default;
$noUiSlider-handle-width: 1.375rem !default;
$noUiSlider-handle-height: 1.375rem !default;
$noUiSlider-bar-height: 0.375rem !default;
$noUiSlider-vertical-height: 13.125rem !default;
$noUiSlider-tick-size: 0.5rem !default;
$noUiSlider-tick-label-font-size: light.$font-size-sm !default;
.noUi-target {
direction: ltr !important;
position: relative;
border-width: 0;
box-shadow: none;
}
.noUi-target,
.noUi-target * {
touch-action: none;
user-select: none;
box-sizing: border-box;
}
.noUi-connects {
height: $noUiSlider-bar-height;
border-radius: light.$border-radius-pill;
}
.noUi-base,
.noUi-connects {
z-index: 1;
position: relative;
height: 100%;
width: 100%;
}
.noUi-horizontal .noUi-origin {
height: 0;
@include app-ltr {
left: auto;
right: 0;
}
}
.noUi-vertical .noUi-origin {
width: 0;
}
.noUi-handle {
backface-visibility: hidden;
outline: none !important;
position: absolute;
box-shadow: none;
border: none;
transition: all 0.2s;
border: 4px solid;
background: #fff;
&:before,
&:after {
display: none;
}
}
.noUi-touch-area {
height: 100%;
width: 100%;
}
.noUi-state-tap .noUi-connect,
.noUi-state-tap .noUi-origin {
transition:
top 0.3s,
right 0.3s,
bottom 0.3s,
left 0.3s;
}
.noUi-state-drag * {
cursor: inherit !important;
}
// Slider size and handle placement
.noUi-horizontal {
height: $noUiSlider-bar-height;
margin-bottom: 3rem;
margin-top: 1.5rem;
}
.noUi-horizontal .noUi-handle {
left: -($noUiSlider-handle-width * 0.5);
width: $noUiSlider-handle-width;
height: $noUiSlider-handle-height;
top: ($noUiSlider-bar-height - $noUiSlider-handle-height) * 0.5;
@include app-ltr {
right: -($noUiSlider-handle-width * 0.5);
left: auto;
}
}
.noUi-vertical {
width: $noUiSlider-bar-height;
}
.noUi-vertical .noUi-handle {
bottom: -($noUiSlider-handle-height);
width: $noUiSlider-handle-height;
height: $noUiSlider-handle-width;
right: ($noUiSlider-bar-height - $noUiSlider-handle-height) * 0.5;
}
// Styling
.noUi-target {
border-radius: 10rem;
}
// Handles and cursors
.noUi-draggable {
cursor: ew-resize;
}
.noUi-vertical .noUi-draggable {
cursor: ns-resize;
}
.noUi-handle {
border-radius: 10rem;
background: $noUiSlider-handle-color;
cursor: pointer;
}
// Disabled state
.noUi-target[disabled] {
opacity: 0.45;
}
[disabled] .noUi-handle {
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05);
}
[disabled].noUi-target,
[disabled].noUi-handle,
[disabled] .noUi-handle {
cursor: not-allowed;
}
// Base
.noUi-pips,
.noUi-pips * {
box-sizing: border-box;
}
.noUi-pips {
color: #999;
position: absolute;
}
// Values
.noUi-value {
position: absolute;
white-space: nowrap;
text-align: center;
font-size: $noUiSlider-tick-label-font-size;
}
// Markings
.noUi-marker {
position: absolute;
}
// Horizontal layout
.noUi-pips-horizontal {
left: 0;
top: 100%;
padding: (($noUiSlider-handle-height - $noUiSlider-bar-height) * 0.5 + 0.375rem) 0 0 0;
height: 5rem;
width: 100%;
}
.noUi-value-horizontal {
padding-top: 0.125rem;
transform: translate(-50%, 50%);
@include app-rtl {
transform: translate(50%, 50%);
}
}
.noUi-marker-horizontal.noUi-marker {
height: $noUiSlider-tick-size;
width: 1px;
}
@include app-rtl(false) {
.noUi-horizontal {
.noUi-origin {
left: 0;
}
}
}
// Vertical layout
.noUi-pips-vertical {
top: 0;
left: 100%;
padding: 0 0 0 (($noUiSlider-handle-height - $noUiSlider-bar-height) * 0.5 + 0.375rem);
height: 100%;
@include app-rtl {
right: 100%;
left: auto;
}
}
.noUi-value-vertical {
padding-left: $noUiSlider-tick-size + 0.375rem;
transform: translate(0, 50%);
@include app-rtl {
right: 100%;
padding-right: $noUiSlider-tick-size + 0.375rem;
padding-left: 0;
}
}
@include app-rtl(false) {
.noUi-marker-vertical {
right: 100%;
}
}
.noUi-marker-vertical.noUi-marker {
width: $noUiSlider-tick-size;
height: 1px;
}
// Tooltips
.noUi-tooltip {
position: absolute;
display: block;
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
text-align: center;
line-height: 1;
transition: transform 0.2s;
&::after {
content: '';
position: absolute;
width: 0;
height: 0;
clear: both;
}
}
.noUi-horizontal .noUi-tooltip {
bottom: 125%;
left: 50%;
transform: translate(-50%, -45%);
&::after {
content: '';
left: 50%;
transform: translateX(-50%);
top: 1.25rem;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
}
}
.noUi-vertical .noUi-tooltip {
top: 50%;
right: 125%;
transform: translate(-15%, -52%);
&::after {
content: '';
top: 14%;
right: -5px;
border-top: 8px solid transparent;
border-bottom: 8px solid transparent;
@include app-rtl {
left: -14px;
right: auto;
}
}
@include app-rtl {
right: auto;
left: 125%;
transform: translate(15%, -52%);
}
}
// Light style
@if $enable-light-style {
.light-style {
$noUiSlider-default-bg: light.$gray-400;
$noUiSlider-tick-label-color: light.$text-light;
.noUi-target {
.noUi-handle {
box-shadow: light.$form-range-thumb-box-shadow;
}
}
.noUi-value {
color: $noUiSlider-tick-label-color;
}
.noUi-marker {
background: $noUiSlider-tick-label-color;
}
.noUi-tooltip {
font-size: light.$small-font-size;
color: light.$tooltip-color;
border: none;
background: light.$tooltip-bg;
}
.noUi-horizontal .noUi-tooltip {
&::after {
border-top: 8px solid light.$tooltip-bg;
}
}
.noUi-vertical .noUi-tooltip {
&::after {
border-left: 8px solid light.$tooltip-bg;
}
}
@include app-rtl-style {
.noUi-vertical .noUi-tooltip {
&::after {
border-right: 8px solid light.$tooltip-bg;
border-left: 8px solid transparent;
}
}
}
@each $color, $value in light.$theme-colors {
@if $color !=primary {
@include nouislider-variant('.noUi-#{$color}', $value);
}
}
}
}
@if $enable-dark-style {
.dark-style {
$noUiSlider-default-bg: dark.$gray-400;
$noUiSlider-tick-label-color: dark.$text-light;
.noUi-target {
.noUi-handle {
box-shadow: dark.$form-range-thumb-box-shadow;
}
}
.noUi-value {
color: $noUiSlider-tick-label-color;
}
.noUi-marker {
background: $noUiSlider-tick-label-color;
}
.noUi-tooltip {
font-size: dark.$small-font-size;
color: dark.$tooltip-color;
border: none;
background: dark.$tooltip-bg;
}
.noUi-horizontal .noUi-tooltip {
&::after {
border-top: 8px solid dark.$tooltip-bg;
}
}
.noUi-vertical .noUi-tooltip {
&::after {
border-left: 8px solid dark.$tooltip-bg;
}
}
@include app-rtl-style {
.noUi-vertical .noUi-tooltip {
&::after {
border-right: 8px solid dark.$tooltip-bg;
border-left: 8px solid transparent;
}
}
}
@each $color, $value in dark.$theme-colors {
@if $color !=primary {
@include nouislider-variant('.noUi-#{$color}', $value);
}
}
}
}

View File

@ -0,0 +1,8 @@
import numeral from 'numeral';
import 'numeral/locales';
try {
window.numeral = numeral;
} catch (e) {}
export { numeral };

View File

@ -0,0 +1,7 @@
import PerfectScrollbar from 'perfect-scrollbar/dist/perfect-scrollbar';
try {
window.PerfectScrollbar = PerfectScrollbar;
} catch (e) {}
export { PerfectScrollbar };

View File

@ -0,0 +1,177 @@
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'perfect-scrollbar/css/perfect-scrollbar';
$ps-width: 0.25rem !default;
$ps-hover-width: 0.375rem !default;
.ps {
position: relative;
}
.ps__rail-x {
height: $ps-width;
}
.ps__rail-y {
width: $ps-width;
z-index: 3;
}
.ps__rail-x,
.ps__rail-y,
.ps__thumb-x,
.ps__thumb-y {
border-radius: 10rem;
}
.ps__rail-x:hover,
.ps__rail-x:focus,
.ps__rail-x.ps--clicking,
.ps__rail-x:hover > .ps__thumb-x,
.ps__rail-x:focus > .ps__thumb-x,
.ps__rail-x.ps--clicking > .ps__thumb-x {
height: $ps-hover-width;
}
.ps__rail-y:hover,
.ps__rail-y:focus,
.ps__rail-y.ps--clicking,
.ps__rail-y:hover > .ps__thumb-y,
.ps__rail-y:focus > .ps__thumb-y,
.ps__rail-y.ps--clicking > .ps__thumb-y {
width: $ps-hover-width;
}
.ps__thumb-x {
height: $ps-width;
bottom: 0;
}
.ps__thumb-y {
width: $ps-width;
right: 0;
}
// Light layout
@if $enable-light-style {
.light-style {
.ps__thumb-x,
.ps__thumb-y {
background-color: light.$gray-400;
}
.ps__rail-x:hover,
.ps__rail-y:hover,
.ps__rail-x:focus,
.ps__rail-y:focus,
.ps__rail-x.ps--clicking,
.ps__rail-y.ps--clicking {
background-color: light.$gray-200;
}
.ps__rail-x:hover > .ps__thumb-x,
.ps__rail-y:hover > .ps__thumb-y,
.ps__rail-x:focus > .ps__thumb-x,
.ps__rail-y:focus > .ps__thumb-y,
.ps__rail-x.ps--clicking > .ps__thumb-x,
.ps__rail-y.ps--clicking > .ps__thumb-y {
background-color: light.$gray-700;
}
.ps-inverted {
.ps__rail-x:hover,
.ps__rail-y:hover,
.ps__rail-x:focus,
.ps__rail-y:focus,
.ps__rail-x.ps--clicking,
.ps__rail-y.ps--clicking {
background-color: rgba(light.$white, 0.5);
}
.ps__thumb-x,
.ps__thumb-y {
background-color: rgba(light.$white, 0.7);
}
.ps__rail-x:hover > .ps__thumb-x,
.ps__rail-y:hover > .ps__thumb-y,
.ps__rail-x:focus > .ps__thumb-x,
.ps__rail-y:focus > .ps__thumb-y,
.ps__rail-x.ps--clicking > .ps__thumb-x,
.ps__rail-y.ps--clicking > .ps__thumb-y {
background-color: light.$white;
}
}
}
}
// Firefox width issue fixed
@supports (-moz-appearance: none) {
#both-scrollbars-example {
max-width: 1080px;
margin: 0 auto;
padding-left: 0;
padding-right: 0;
}
}
// Dark style
@if $enable-dark-style {
.dark-style {
.ps__thumb-x,
.ps__thumb-y {
background-color: rgba(255, 255, 255, 0.438133) !important;
}
.ps__rail-x:hover,
.ps__rail-y:hover,
.ps__rail-x:focus,
.ps__rail-y:focus,
.ps__rail-x.ps--clicking,
.ps__rail-y.ps--clicking {
background-color: rgba(255, 255, 255, 0.438133) !important;
}
.ps__rail-x:hover > .ps__thumb-x,
.ps__rail-y:hover > .ps__thumb-y,
.ps__rail-x:focus > .ps__thumb-x,
.ps__rail-y:focus > .ps__thumb-y,
.ps__rail-x.ps--clicking > .ps__thumb-x,
.ps__rail-y.ps--clicking > .ps__thumb-y {
background-color: dark.$gray-700;
}
.ps-inverted {
.ps__rail-x:hover,
.ps__rail-y:hover,
.ps__rail-x:focus,
.ps__rail-y:focus,
.ps__rail-x.ps--clicking,
.ps__rail-y.ps--clicking {
background-color: rgba(light.$white, 0.5);
}
.ps__thumb-x,
.ps__thumb-y {
background-color: rgba(light.$white, 0.7);
}
.ps__rail-x:hover > .ps__thumb-x,
.ps__rail-y:hover > .ps__thumb-y,
.ps__rail-x:focus > .ps__thumb-x,
.ps__rail-y:focus > .ps__thumb-y,
.ps__rail-x.ps--clicking > .ps__thumb-x,
.ps__rail-y.ps--clicking > .ps__thumb-y {
background-color: light.$white;
}
}
}
}
// RTL rail-y position
.ps--active-y > .ps__rail-y {
@include app-rtl {
left: 0;
right: unset !important;
}
}

View File

@ -0,0 +1,11 @@
@import '../../scss/_custom-variables/libs';
// Background & Primary color for picker
@mixin colorPicker-theme($background) {
.pcr-app {
.pcr-type.active,
.pcr-save {
background: $background !important;
}
}
}

View File

@ -0,0 +1,15 @@
@import '@simonwep/pickr/dist/themes/classic.min';
@import '../../scss/_custom-variables/libs';
@include app-rtl(false) {
.pcr-app[data-theme='classic'] .pcr-selection .pcr-color-preview {
margin-right: inherit;
margin-left: 0.75em;
}
.pcr-app[data-theme='classic'] .pcr-selection .pcr-color-chooser,
.pcr-app[data-theme='classic'] .pcr-selection .pcr-color-opacity {
margin-left: inherit;
margin-right: 0.75em;
}
}

View File

@ -0,0 +1,10 @@
@import '@simonwep/pickr/dist/themes/monolith.min';
@include app-rtl(false) {
.pcr-app[data-theme='monolith'] .pcr-selection .pcr-color-preview .pcr-last-color {
border-radius: 0 0.15em 0.15em 0;
}
.pcr-app[data-theme='monolith'] .pcr-selection .pcr-color-preview .pcr-current-color {
border-radius: 0.15em 0 0 0.15em;
}
}

View File

@ -0,0 +1,7 @@
@import '@simonwep/pickr/dist/themes/nano.min';
@include app-rtl(false) {
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview {
margin-right: 0.6em;
}
}

View File

@ -0,0 +1,39 @@
// Pickr
// *******************************************************************************
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
@import 'pickr-classic';
@import 'pickr-monolith';
@import 'pickr-nano';
@import 'mixins';
@if $enable-light-style {
.light-style {
.pcr-app {
.pcr-interaction input:focus {
box-shadow: light.$box-shadow;
}
}
}
}
// Dark style for pickr
@if $enable-dark-style {
.dark-style {
.pcr-app {
background: dark.$card-bg !important;
.pcr-type:not(.active),
.pcr-result {
background: dark.$dropdown-bg !important;
color: dark.$white !important;
}
.pcr-interaction input:focus {
box-shadow: dark.$box-shadow;
}
}
}
}

View File

@ -0,0 +1,7 @@
import pickr from '@simonwep/pickr/dist/pickr.es5.min';
try {
window.pickr = pickr;
} catch (e) {}
export { pickr };

View File

@ -0,0 +1,52 @@
@import '../../scss/_bootstrap-extended/functions';
// Light style
@mixin plyr-theme($background, $color: null) {
$color: if($color, $color, color-contrast($background));
.plyr input[type='range']::-ms-fill-lower {
background: $background !important;
}
.plyr input[type='range']:active {
&::-webkit-slider-thumb {
background: $background !important;
}
&::-moz-range-thumb {
background: $background !important;
}
&::-ms-thumb {
background: $background !important;
}
}
.plyr--video .plyr__control.plyr__control--overlaid,
.plyr--video .plyr__controls button.tab-focus:focus,
.plyr--video .plyr__control[aria-expanded='true'],
.plyr--video .plyr__controls button:hover {
background: $background !important;
color: $color !important;
}
.plyr--audio .plyr__controls button.tab-focus:focus,
.plyr--audio .plyr__control[aria-expanded='true'],
.plyr--audio .plyr__controls button:hover {
background: $background !important;
color: $color !important;
}
.plyr__play-large {
background: $background !important;
color: $color !important;
}
.plyr__progress--played,
.plyr__volume--display {
color: $background !important;
}
.plyr--full-ui input[type='range'] {
color: $background !important;
}
.plyr__menu__container .plyr__control[role='menuitemradio'][aria-checked='true']::before {
background: $background !important;
}
}

Some files were not shown because too many files have changed in this diff Show More