Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8a0396ab2d | ||
|
|
b3960653ca | ||
|
|
af321c8aad | ||
|
|
16939c7b6a |
No files matched your search
@@ -1,28 +0,0 @@
|
|||||||
# .github/workflows/gradle-build-pr.yml
|
|
||||||
name: Run Gradle on pushs
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- '*'
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- '*'
|
|
||||||
jobs:
|
|
||||||
gradle:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- uses: actions/setup-java@v1
|
|
||||||
with:
|
|
||||||
java-version: 11
|
|
||||||
- uses: eskatos/gradle-command-action@v1
|
|
||||||
with:
|
|
||||||
gradle-version: rc
|
|
||||||
arguments: build
|
|
||||||
- uses: eskatos/gradle-command-action@v1
|
|
||||||
with:
|
|
||||||
gradle-version: rc
|
|
||||||
arguments: jar
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
# This file is a template, and might need editing before it works on your project.
|
|
||||||
# This is the Gradle build system for JVM applications
|
|
||||||
# https://gradle.org/
|
|
||||||
# https://github.com/gradle/gradle
|
|
||||||
image: gradle:latest
|
|
||||||
|
|
||||||
# Disable the Gradle daemon for Continuous Integration servers as correctness
|
|
||||||
# is usually a priority over speed in CI environments. Using a fresh
|
|
||||||
# runtime for each build is more reliable since the runtime is completely
|
|
||||||
# isolated from any previous builds.
|
|
||||||
variables:
|
|
||||||
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
- export GRADLE_USER_HOME=`pwd`/.gradle
|
|
||||||
|
|
||||||
build:
|
|
||||||
stage: build
|
|
||||||
script: gradle --build-cache assemble
|
|
||||||
cache:
|
|
||||||
key: "$CI_COMMIT_REF_NAME"
|
|
||||||
policy: push
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
- .gradle
|
|
||||||
|
|
||||||
test:
|
|
||||||
stage: test
|
|
||||||
script: gradle check
|
|
||||||
cache:
|
|
||||||
key: "$CI_COMMIT_REF_NAME"
|
|
||||||
policy: pull
|
|
||||||
paths:
|
|
||||||
- build
|
|
||||||
- .gradle
|
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
//plugins {
|
||||||
|
// id 'org.jetbrains.kotlin.js' version '1.3.70-eap-184'
|
||||||
|
//}
|
||||||
|
|
||||||
|
//group 'org.example'
|
||||||
|
version '1.0-SNAPSHOT'
|
||||||
|
|
||||||
|
buildscript {
|
||||||
|
ext.kotlin_version = '1.3.61'
|
||||||
|
ext.web_dir = '../src/resources/wwwroot/js/'
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: 'kotlin2js'
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
main.java.srcDirs = ["src/js/"]
|
||||||
|
test.java.srcDirs = ["src/js/test"]
|
||||||
|
}
|
||||||
|
|
||||||
|
compileKotlin2Js {
|
||||||
|
kotlinOptions.outputFile = "${projectDir}/build/web/WasteInformationServer.js"
|
||||||
|
kotlinOptions.moduleKind = "plain"
|
||||||
|
kotlinOptions.sourceMap = true
|
||||||
|
}
|
||||||
|
|
||||||
|
compileTestKotlin2Js {
|
||||||
|
kotlinOptions.moduleKind = "plain"
|
||||||
|
kotlinOptions.sourceMap = true
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven {
|
||||||
|
url "http://dl.bintray.com/kotlin/kotlin-eap-1.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version"
|
||||||
|
testCompile "org.jetbrains.kotlin:kotlin-test-js:$kotlin_version"
|
||||||
|
}
|
||||||
|
|
||||||
|
clean.doFirst() {
|
||||||
|
delete("${web_dir}")
|
||||||
|
}
|
||||||
|
|
||||||
|
build.doLast() {
|
||||||
|
// Copy kotlin.js and kotlin-meta.js from jar into web directory
|
||||||
|
configurations.compile.each { File file ->
|
||||||
|
copy {
|
||||||
|
includeEmptyDirs = false
|
||||||
|
|
||||||
|
from zipTree(file.absolutePath)
|
||||||
|
into "${projectDir}/${web_dir}/lib"
|
||||||
|
include { fileTreeElement ->
|
||||||
|
def path = fileTreeElement.path
|
||||||
|
path.endsWith(".js") && (path.startsWith("META-INF/resources/") || !path.startsWith("META-INF/"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unpack build contents
|
||||||
|
// TODO Remove this step when a CDN link is available.
|
||||||
|
copy {
|
||||||
|
File artifact = new File("build/libs/${project.name}-${project.version}.jar")
|
||||||
|
includeEmptyDirs = false
|
||||||
|
|
||||||
|
from zipTree(artifact)
|
||||||
|
into "${web_dir}"
|
||||||
|
include { fileTreeElement ->
|
||||||
|
def path = fileTreeElement.path
|
||||||
|
!(path.startsWith("META-INF/") || path.startsWith("${project.name}"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy scripts to web directory
|
||||||
|
copy {
|
||||||
|
includeEmptyDirs = false
|
||||||
|
from new File("build/classes/main")
|
||||||
|
into "${web_dir}/lib"
|
||||||
|
}
|
||||||
|
|
||||||
|
copy {
|
||||||
|
includeEmptyDirs = false
|
||||||
|
from new File("build/classes/test")
|
||||||
|
into "${web_dir}/lib"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
rootProject.name = 'WebServer'
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
import org.w3c.fetch.RequestInit
|
||||||
|
import kotlin.browser.document
|
||||||
|
import kotlin.browser.window
|
||||||
|
import kotlin.js.Json
|
||||||
|
|
||||||
|
class Dashboard {
|
||||||
|
init {
|
||||||
|
window.fetch("/senddata/wastedata", RequestInit(method = "POST", body = "action=getStartHeaderData")).then { it -> it.text().then {
|
||||||
|
println("response text is: "+it)
|
||||||
|
val json = JSON.parse<Json>(it)
|
||||||
|
document.getElementById("total-connection-labels")?.innerHTML = json["collectionnumber"] as String
|
||||||
|
document.getElementById("planed-collection-label")?.innerHTML = json["futurecollections"] as String
|
||||||
|
|
||||||
|
document.getElementById("finished-collection-label")?.innerHTML = json["finshedcollections"] as String
|
||||||
|
|
||||||
|
document.getElementById("total-city-number-label")?.innerHTML = json["citynumber"] as String
|
||||||
|
} }
|
||||||
|
|
||||||
|
window.fetch("/senddata/wastedata", RequestInit(method = "POST", body = "action=getversionandbuildtime")).then { it -> it.text().then {
|
||||||
|
val json = JSON.parse<Json>(it)
|
||||||
|
document.getElementById("version-footer-label")?.innerHTML = "<b>Version</b> " + json["version"] + " <b>Build</b> " + json["buildtime"] as String
|
||||||
|
} }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
import org.w3c.dom.HTMLInputElement
|
||||||
|
import org.w3c.fetch.RequestInit
|
||||||
|
import kotlin.browser.document
|
||||||
|
import kotlin.browser.window
|
||||||
|
import kotlin.js.Json
|
||||||
|
|
||||||
|
class Index {
|
||||||
|
init {
|
||||||
|
document.getElementById("loginbtn")?.addEventListener("click", {
|
||||||
|
it.preventDefault()
|
||||||
|
println("clicked!!!")
|
||||||
|
|
||||||
|
val username = document.getElementById("userfield") as HTMLInputElement
|
||||||
|
val passfield = document.getElementById("passfield") as HTMLInputElement
|
||||||
|
println(username.value)
|
||||||
|
|
||||||
|
console.log("fetch 'data.json' with 'post'")
|
||||||
|
window.fetch("/senddata/loginget", RequestInit(method = "POST", body = "username=${username.value}&password=${passfield.value}")).then { response ->
|
||||||
|
response.text().then { text ->
|
||||||
|
val json = JSON.parse<Json>(text)
|
||||||
|
if (json["status"] == "nodbconn") {
|
||||||
|
js("""Swal.fire({
|
||||||
|
type: "error",
|
||||||
|
title: 'No connection to Database',
|
||||||
|
html: 'Setup DB here --> <a href="index.html">click<a/>.'
|
||||||
|
})""")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (json["accept"] == true) {
|
||||||
|
println("successfully logged in!")
|
||||||
|
document.cookie = "username=$username"
|
||||||
|
window.location.replace("dashboard.html")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// todo register pwa correctly
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import kotlin.browser.window
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val callurl = window.document.URL
|
||||||
|
window.onload = {
|
||||||
|
if (callurl.endsWith("/") || callurl.contains("index.html")) {
|
||||||
|
println("loaded sucessfully")
|
||||||
|
Index()
|
||||||
|
}
|
||||||
|
else if (callurl.contains("dashboard.html")) {
|
||||||
|
Dashboard()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
println("js called from undefined html file")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import org.w3c.xhr.XMLHttpRequest
|
||||||
|
|
||||||
|
class Requester {
|
||||||
|
fun request(){
|
||||||
|
val test = XMLHttpRequest()
|
||||||
|
|
||||||
|
test.open("GET","https://api.ipify.org?format=json")
|
||||||
|
|
||||||
|
test.onload = {
|
||||||
|
println(test.responseText)
|
||||||
|
}
|
||||||
|
|
||||||
|
test.send()
|
||||||
|
}
|
||||||
|
}
|
||||||
+6
-4
@@ -2,11 +2,11 @@ import java.text.SimpleDateFormat
|
|||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id 'java'
|
id 'java'
|
||||||
id 'org.jetbrains.kotlin.jvm' version '1.3.70'
|
id 'org.jetbrains.kotlin.jvm' version '1.3.61'
|
||||||
}
|
}
|
||||||
|
|
||||||
group 'com.wasteinformationserver'
|
group 'com.wasteinformationserver'
|
||||||
version '1.1.1'
|
version '0.3.1-Beta'
|
||||||
|
|
||||||
sourceCompatibility = 1.8
|
sourceCompatibility = 1.8
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ sourceSets {
|
|||||||
dependencies {
|
dependencies {
|
||||||
compile group: 'org.eclipse.paho', name: 'org.eclipse.paho.client.mqttv3', version: '1.2.2'
|
compile group: 'org.eclipse.paho', name: 'org.eclipse.paho.client.mqttv3', version: '1.2.2'
|
||||||
compile group: 'mysql',name:'mysql-connector-java',version: '8.0.18'
|
compile group: 'mysql',name:'mysql-connector-java',version: '8.0.18'
|
||||||
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
|
||||||
}
|
}
|
||||||
|
|
||||||
task run (type: JavaExec){
|
task run (type: JavaExec){
|
||||||
@@ -40,7 +40,7 @@ task run (type: JavaExec){
|
|||||||
|
|
||||||
task createProperties(dependsOn: processResources) {
|
task createProperties(dependsOn: processResources) {
|
||||||
doLast {
|
doLast {
|
||||||
new File("$projectDir/src/resources/version.prop").withWriter { w ->
|
new File("$projectDir/src/resources/version.properties").withWriter { w ->
|
||||||
Properties p = new Properties()
|
Properties p = new Properties()
|
||||||
p['version'] = project.version.toString()
|
p['version'] = project.version.toString()
|
||||||
p['buildtime'] = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date())
|
p['buildtime'] = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date())
|
||||||
@@ -49,6 +49,8 @@ task createProperties(dependsOn: processResources) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.processResources.dependsOn("WebServer:build")
|
||||||
|
|
||||||
task myJavadocs(type: Javadoc) {
|
task myJavadocs(type: Javadoc) {
|
||||||
title = "JAVADOC WasteInformationServer"
|
title = "JAVADOC WasteInformationServer"
|
||||||
source = sourceSets.main.allJava
|
source = sourceSets.main.allJava
|
||||||
|
|||||||
@@ -0,0 +1,156 @@
|
|||||||
|
-- phpMyAdmin SQL Dump
|
||||||
|
-- version 4.9.0.1
|
||||||
|
-- https://www.phpmyadmin.net/
|
||||||
|
--
|
||||||
|
-- Host: localhost
|
||||||
|
-- Erstellungszeit: 06. Dez 2019 um 16:11
|
||||||
|
-- Server-Version: 10.3.11-MariaDB
|
||||||
|
-- PHP-Version: 5.6.40
|
||||||
|
|
||||||
|
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||||
|
SET AUTOCOMMIT = 0;
|
||||||
|
START TRANSACTION;
|
||||||
|
SET time_zone = "+00:00";
|
||||||
|
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8mb4 */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Datenbank: `wasteinformation`
|
||||||
|
--
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Tabellenstruktur für Tabelle `cities`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `cities` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`userid` int(11) NOT NULL,
|
||||||
|
`name` varchar(256) NOT NULL,
|
||||||
|
`wastetype` varchar(64) NOT NULL,
|
||||||
|
`zone` int(11) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Daten für Tabelle `cities`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `cities` (`id`, `userid`, `name`, `wastetype`, `zone`) VALUES
|
||||||
|
(2, 0, 'Steyr', 'Bio', 2),
|
||||||
|
(3, 0, 'Steyr', 'Bio', 3),
|
||||||
|
(4, 0, 'Steyr', 'Bio', 4),
|
||||||
|
(128, 0, 'Steyr', 'Biowaste', 1),
|
||||||
|
(130, 0, 'abc', 'Biowaste', 1);
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Tabellenstruktur für Tabelle `pickupdates`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `pickupdates` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`citywastezoneid` int(11) NOT NULL,
|
||||||
|
`pickupdate` date NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Daten für Tabelle `pickupdates`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `pickupdates` (`id`, `citywastezoneid`, `pickupdate`) VALUES
|
||||||
|
(6, 4, '2019-12-06'),
|
||||||
|
(7, 3, '2019-12-06'),
|
||||||
|
(8, 2, '2019-12-06'),
|
||||||
|
(9, 130, '2019-12-26');
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Tabellenstruktur für Tabelle `user`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `user` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`username` varchar(150) NOT NULL,
|
||||||
|
`firstName` varchar(32) NOT NULL,
|
||||||
|
`secondName` varchar(32) NOT NULL,
|
||||||
|
`password` varchar(32) NOT NULL,
|
||||||
|
`permission` int(11) NOT NULL DEFAULT 0,
|
||||||
|
`email` varchar(64) NOT NULL,
|
||||||
|
`logindate` timestamp NOT NULL DEFAULT current_timestamp()
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Daten für Tabelle `user`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `user` (`id`, `username`, `firstName`, `secondName`, `password`, `permission`, `email`, `logindate`) VALUES
|
||||||
|
(2, 'lheilige', 'lukas', 'heiligenbrunner', 'c6e2ddf577e0dfdc4366f788f1b27102', 0, 'lukas.heiligenbrunner@gmail.com', '2019-09-20 12:19:31'),
|
||||||
|
(11, 'meindl', 'emil', 'meindl', '81dc9bdb52d04dc20036dbd8313ed055', 0, 'mailmeindl', '2019-09-27 10:23:46'),
|
||||||
|
(15, 'horni', 'kk', 'kk', 'c4ca4238a0b923820dcc509a6f75849b', 1, 'kk', '2019-09-27 13:19:09');
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indizes der exportierten Tabellen
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indizes für die Tabelle `cities`
|
||||||
|
--
|
||||||
|
ALTER TABLE `cities`
|
||||||
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indizes für die Tabelle `pickupdates`
|
||||||
|
--
|
||||||
|
ALTER TABLE `pickupdates`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD KEY `citywastezoneid` (`citywastezoneid`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indizes für die Tabelle `user`
|
||||||
|
--
|
||||||
|
ALTER TABLE `user`
|
||||||
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT für exportierte Tabellen
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT für Tabelle `cities`
|
||||||
|
--
|
||||||
|
ALTER TABLE `cities`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=131;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT für Tabelle `pickupdates`
|
||||||
|
--
|
||||||
|
ALTER TABLE `pickupdates`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT für Tabelle `user`
|
||||||
|
--
|
||||||
|
ALTER TABLE `user`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints der exportierten Tabellen
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints der Tabelle `pickupdates`
|
||||||
|
--
|
||||||
|
ALTER TABLE `pickupdates`
|
||||||
|
ADD CONSTRAINT `pickupdates_ibfk_1` FOREIGN KEY (`citywastezoneid`) REFERENCES `cities` (`id`);
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
rootProject.name = 'WasteInformationServer'
|
rootProject.name = 'WasteInformationServer'
|
||||||
|
|
||||||
|
include 'WebServer'
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
/**
|
||||||
|
* dead code...
|
||||||
|
*/
|
||||||
|
package com.wasteinformationserver;
|
||||||
|
|
||||||
|
import com.wasteinformationserver.basicutils.Log;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class Dateget {
|
||||||
|
private int index = 0;
|
||||||
|
ArrayList<String> list = new ArrayList<>();
|
||||||
|
ArrayList<String> listnew = new ArrayList<>();
|
||||||
|
public String nextDate;
|
||||||
|
|
||||||
|
|
||||||
|
public void getdata() {
|
||||||
|
|
||||||
|
GregorianCalendar now = new GregorianCalendar();
|
||||||
|
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
|
||||||
|
String datum = df.format(now.getTime());
|
||||||
|
|
||||||
|
URL url = null;
|
||||||
|
try {
|
||||||
|
url = new URL("https://www.steyr.at/system/web/kalender.aspx?vdatum=" + datum + "&bdatum=19.10.2019&typ=&typid=0&typids=225781950&detailonr=0&menuonr=225781812");
|
||||||
|
Scanner scanner = new Scanner(new InputStreamReader(url.openStream()));
|
||||||
|
|
||||||
|
int n = 0;
|
||||||
|
while (scanner.hasNext()) {
|
||||||
|
String temp = scanner.next();
|
||||||
|
addList(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (MalformedURLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
Filter();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addList(String temp) {
|
||||||
|
list.add(index, temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printList() {
|
||||||
|
for (int n = 0; n < list.size(); n++) {
|
||||||
|
Log.Log.debug(list.get(n));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printListnew() {
|
||||||
|
for (int n = 0; n < listnew.size(); n++) {
|
||||||
|
Log.Log.debug(listnew.get(n));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Filter() {
|
||||||
|
String temp = "href=\"/system/web/kalender.aspx?detailonr=225781954-6&menuonr=225781812\">Hausabfall";
|
||||||
|
int counter = 0;
|
||||||
|
|
||||||
|
for (int n = 0; n < list.size(); n++) {
|
||||||
|
if (list.get(n).equals(temp)) {
|
||||||
|
counter++;
|
||||||
|
|
||||||
|
if (counter == 4) {
|
||||||
|
|
||||||
|
int zaehler = 0;
|
||||||
|
|
||||||
|
for (int v = n; v < list.size(); v++) {
|
||||||
|
listnew.add(zaehler, list.get(v));
|
||||||
|
zaehler++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* String string = "004-034556";
|
||||||
|
String[] parts = string.split("-");
|
||||||
|
String part1 = parts[0]; // 004
|
||||||
|
String part2 = parts[1]; // 034556*/
|
||||||
|
|
||||||
|
splitter();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void splitter() {
|
||||||
|
String temp = "</ul><h2>";
|
||||||
|
|
||||||
|
for (int n = 0; n < listnew.size(); n++) {
|
||||||
|
|
||||||
|
if (listnew.get(n).equals(temp)) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,30 +1,27 @@
|
|||||||
@file:JvmName("Main")
|
@file:JvmName("Main")
|
||||||
|
|
||||||
package com.wasteinformationserver
|
package com.wasteinformationserver
|
||||||
|
|
||||||
import com.wasteinformationserver.basicutils.Info
|
import com.wasteinformationserver.basicutils.Info
|
||||||
import com.wasteinformationserver.basicutils.Log
|
import com.wasteinformationserver.basicutils.Log
|
||||||
import com.wasteinformationserver.basicutils.Storage
|
|
||||||
import com.wasteinformationserver.db.JDBC
|
import com.wasteinformationserver.db.JDBC
|
||||||
import com.wasteinformationserver.mqtt.MqttService
|
import com.wasteinformationserver.mqtt.MqttService
|
||||||
import com.wasteinformationserver.website.Webserver
|
import com.wasteinformationserver.website.Webserver
|
||||||
|
import java.io.IOException
|
||||||
|
|
||||||
/**
|
|
||||||
* application entry point
|
|
||||||
*
|
|
||||||
* @author Lukas Heiligenbrunner
|
|
||||||
*/
|
|
||||||
fun main() {
|
fun main() {
|
||||||
Log.setLevel(Log.DEBUG)
|
Log.setLevel(Log.DEBUG)
|
||||||
Info.init()
|
Info.init()
|
||||||
Storage.getInstance().init()
|
|
||||||
|
|
||||||
Log.info("startup of WasteInformationServer")
|
Log.info("startup of WasteInformationServer")
|
||||||
|
|
||||||
Runtime.getRuntime().addShutdownHook(Thread(Runnable {
|
Runtime.getRuntime().addShutdownHook(Thread(Runnable {
|
||||||
// shutdown routine
|
try {
|
||||||
|
Thread.sleep(200)
|
||||||
Log.warning("Shutting down ...")
|
Log.warning("Shutting down ...")
|
||||||
JDBC.getInstance().disconnect();
|
//shutdown routine
|
||||||
|
} catch (e: InterruptedException) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
}))
|
}))
|
||||||
|
|
||||||
Log.info("Server version: " + Info.getVersion())
|
Log.info("Server version: " + Info.getVersion())
|
||||||
@@ -32,8 +29,12 @@ fun main() {
|
|||||||
|
|
||||||
//initial connect to db
|
//initial connect to db
|
||||||
Log.message("initial login to db")
|
Log.message("initial login to db")
|
||||||
val stor = Storage.getInstance();
|
try {
|
||||||
JDBC.init(stor.dbUser, stor.dbPassword, stor.dbName, stor.dbhost, stor.dbPort)
|
JDBC.init("ingproject", "Kb9Dxklumt76ieq6", "ingproject", "db.power4future.at", 3306)
|
||||||
|
//JDBC.init("users", "kOpaIJUjkgb9ur6S", "wasteinformation", "192.168.65.15", 3306);
|
||||||
|
} catch (e: IOException) { //e.printStackTrace();
|
||||||
|
Log.error("no connection to db")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//startup web server
|
//startup web server
|
||||||
@@ -44,7 +45,6 @@ fun main() {
|
|||||||
//startup mqtt service
|
//startup mqtt service
|
||||||
Log.message("starting mqtt service")
|
Log.message("starting mqtt service")
|
||||||
|
|
||||||
val m = MqttService.getInstance()
|
val m = MqttService("mqtt.heili.eu", "1883")
|
||||||
m.init(Storage.getInstance().mqttServer, Storage.getInstance().mqttPort.toString())
|
|
||||||
m.startupService()
|
m.startupService()
|
||||||
}
|
}
|
||||||
@@ -51,7 +51,7 @@ public class Info {
|
|||||||
starttime = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date());
|
starttime = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date());
|
||||||
Properties prop = new Properties();
|
Properties prop = new Properties();
|
||||||
try {
|
try {
|
||||||
URL url = Info.class.getResource("/version.prop");
|
URL url = Info.class.getResource("/version.properties");
|
||||||
|
|
||||||
prop.load(url.openStream());
|
prop.load(url.openStream());
|
||||||
version = (String) prop.get("version");
|
version = (String) prop.get("version");
|
||||||
@@ -75,10 +75,10 @@ public class Info {
|
|||||||
long allocatedMemory = runtime.totalMemory();
|
long allocatedMemory = runtime.totalMemory();
|
||||||
long freeMemory = runtime.freeMemory();
|
long freeMemory = runtime.freeMemory();
|
||||||
|
|
||||||
sb.append("free memory: ").append(format.format(freeMemory / 1024)).append("\n");
|
sb.append("free memory: " + format.format(freeMemory / 1024) + "\n");
|
||||||
sb.append("allocated memory: ").append(format.format(allocatedMemory / 1024)).append("\n");
|
sb.append("allocated memory: " + format.format(allocatedMemory / 1024) + "\n");
|
||||||
sb.append("max memory: ").append(format.format(maxMemory / 1024)).append("\n");
|
sb.append("max memory: " + format.format(maxMemory / 1024) + "\n");
|
||||||
sb.append("total free memory: ").append(format.format((freeMemory + (maxMemory - allocatedMemory)) / 1024)).append("\n");
|
sb.append("total free memory: " + format.format((freeMemory + (maxMemory - allocatedMemory)) / 1024) + "\n");
|
||||||
|
|
||||||
System.out.println(sb.toString());
|
System.out.println(sb.toString());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,22 +5,22 @@ import java.util.*
|
|||||||
|
|
||||||
class Log {
|
class Log {
|
||||||
companion object Log{
|
companion object Log{
|
||||||
const val CRITICAL_ERROR = 6
|
val CRITICAL_ERROR = 6
|
||||||
const val ERROR = 5
|
val ERROR = 5
|
||||||
const val WARNING = 4
|
val WARNING = 4
|
||||||
const val INFO = 3
|
val INFO = 3
|
||||||
const val MESSAGE = 2
|
val MESSAGE = 2
|
||||||
const val DEBUG = 1
|
val DEBUG = 1
|
||||||
|
|
||||||
private const val ANSI_RESET = "\u001B[0m"
|
private val ANSI_RESET = "\u001B[0m"
|
||||||
private const val ANSI_BLACK = "\u001B[30m"
|
private val ANSI_BLACK = "\u001B[30m"
|
||||||
private const val ANSI_RED = "\u001B[31m"
|
private val ANSI_RED = "\u001B[31m"
|
||||||
private const val ANSI_GREEN = "\u001B[32m"
|
private val ANSI_GREEN = "\u001B[32m"
|
||||||
private const val ANSI_YELLOW = "\u001B[33m"
|
private val ANSI_YELLOW = "\u001B[33m"
|
||||||
private const val ANSI_BLUE = "\u001B[34m"
|
private val ANSI_BLUE = "\u001B[34m"
|
||||||
private const val ANSI_PURPLE = "\u001B[35m"
|
private val ANSI_PURPLE = "\u001B[35m"
|
||||||
private const val ANSI_CYAN = "\u001B[36m"
|
private val ANSI_CYAN = "\u001B[36m"
|
||||||
private const val ANSI_WHITE = "\u001B[37m"
|
private val ANSI_WHITE = "\u001B[37m"
|
||||||
|
|
||||||
private var Loglevel = 0
|
private var Loglevel = 0
|
||||||
|
|
||||||
@@ -126,14 +126,14 @@ class Log {
|
|||||||
fun setLevel(level: Int) {
|
fun setLevel(level: Int) {
|
||||||
Loglevel = level
|
Loglevel = level
|
||||||
}
|
}
|
||||||
|
private val colors = ArrayList(Arrays.asList("", "DEBUG", "MESSAGE", "INFO", "WARNING", "ERROR", "CRITICAL_ERROR"))
|
||||||
private val colors = ArrayList(listOf("", "DEBUG", "MESSAGE", "INFO", "WARNING", "ERROR", "CRITICAL_ERROR"))
|
|
||||||
|
|
||||||
|
|
||||||
private fun calcDate(milliSecs: Long): String? {
|
|
||||||
val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
|
private fun calcDate(millisecs: Long): String? {
|
||||||
val resultDate = Date(milliSecs)
|
val date_format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
|
||||||
return dateFormat.format(resultDate)
|
val resultdate = Date(millisecs)
|
||||||
|
return date_format.format(resultdate)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,163 +0,0 @@
|
|||||||
package com.wasteinformationserver.basicutils
|
|
||||||
|
|
||||||
import java.io.FileInputStream
|
|
||||||
import java.io.FileNotFoundException
|
|
||||||
import java.io.FileOutputStream
|
|
||||||
import java.io.IOException
|
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Storage of user information
|
|
||||||
* * database infos
|
|
||||||
* * mqtt infos
|
|
||||||
*
|
|
||||||
* @author Lukas Heiligenbrunner
|
|
||||||
*/
|
|
||||||
class Storage {
|
|
||||||
companion object {
|
|
||||||
private val obj = Storage()
|
|
||||||
fun getInstance(): Storage {
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var mqttServer: String = ""
|
|
||||||
get() = field
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
}
|
|
||||||
|
|
||||||
var mqttPort: Int = -1
|
|
||||||
get() = field
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
}
|
|
||||||
|
|
||||||
var dbName: String = ""
|
|
||||||
get() = field
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
}
|
|
||||||
|
|
||||||
var dbhost: String = ""
|
|
||||||
get() = field
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
}
|
|
||||||
|
|
||||||
var dbUser: String = ""
|
|
||||||
get() = field
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
}
|
|
||||||
|
|
||||||
var dbPassword: String = ""
|
|
||||||
get() = field
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
}
|
|
||||||
|
|
||||||
var dbPort: Int = -1
|
|
||||||
get() = field
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
}
|
|
||||||
|
|
||||||
private val prop = Properties()
|
|
||||||
|
|
||||||
/**
|
|
||||||
* init config file
|
|
||||||
*/
|
|
||||||
fun init() {
|
|
||||||
try {
|
|
||||||
// try to load existing config file
|
|
||||||
val inp = FileInputStream("settings.prop")
|
|
||||||
prop.load(inp)
|
|
||||||
|
|
||||||
mqttServer = prop["mqttserver"] as String
|
|
||||||
mqttPort = (prop["mqttport"] as String).toInt()
|
|
||||||
dbhost = prop["dbhost"] as String
|
|
||||||
dbName = prop["dbname"] as String
|
|
||||||
dbUser = prop["dbuser"] as String
|
|
||||||
dbPassword = prop["dbpass"] as String
|
|
||||||
dbPort = (prop["dbport"] as String).toInt()
|
|
||||||
} catch (ee: FileNotFoundException) {
|
|
||||||
// file not generated yet
|
|
||||||
store()
|
|
||||||
Log.info("new Settings config file generated")
|
|
||||||
} catch (e: IOException) {
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* store data to storage file
|
|
||||||
*/
|
|
||||||
fun store() {
|
|
||||||
prop["mqttserver"] = mqttServer
|
|
||||||
prop["mqttport"] = mqttPort.toString()
|
|
||||||
prop["dbhost"] = dbhost
|
|
||||||
prop["dbname"] = dbName
|
|
||||||
prop["dbuser"] = dbUser
|
|
||||||
prop["dbpass"] = dbPassword
|
|
||||||
prop["dbport"] = dbPort.toString()
|
|
||||||
|
|
||||||
prop.store(FileOutputStream("settings.prop"), "main config")
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* check if all needed properties are set up correctly
|
|
||||||
* todo real check if connections can be established
|
|
||||||
*/
|
|
||||||
fun isEveryThingDefined(): Boolean {
|
|
||||||
return (isMqttServerDefined() &&
|
|
||||||
isMqttPortDefined() &&
|
|
||||||
isDBNameDefined() &&
|
|
||||||
isDBUsernameDefined() &&
|
|
||||||
isDBPasswdDefined() &&
|
|
||||||
isDBPortDefined())
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* is the mqttservername defined?
|
|
||||||
*/
|
|
||||||
fun isMqttServerDefined(): Boolean {
|
|
||||||
return (mqttServer != "")
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* is the mqttserver port defined?
|
|
||||||
*/
|
|
||||||
fun isMqttPortDefined(): Boolean {
|
|
||||||
return (mqttPort != -1)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* is the dbname defined?
|
|
||||||
*/
|
|
||||||
fun isDBNameDefined(): Boolean {
|
|
||||||
return (dbName != "")
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* is the dbport defined?
|
|
||||||
*/
|
|
||||||
fun isDBPortDefined(): Boolean {
|
|
||||||
return (dbPort != -1)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* is the dbpassword defined?
|
|
||||||
*/
|
|
||||||
fun isDBPasswdDefined(): Boolean {
|
|
||||||
return (dbPassword != "")
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* is the dbusername defined?
|
|
||||||
*/
|
|
||||||
fun isDBUsernameDefined(): Boolean {
|
|
||||||
return (dbUser != "")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+25
@@ -0,0 +1,25 @@
|
|||||||
|
package com.wasteinformationserver.db;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
abstract class Database {
|
||||||
|
|
||||||
|
protected String user;
|
||||||
|
protected String password;
|
||||||
|
|
||||||
|
protected String host;
|
||||||
|
protected int port;
|
||||||
|
|
||||||
|
protected String dbName;
|
||||||
|
|
||||||
|
public Database(String user, String password, String host, int port, String dbName) {
|
||||||
|
this.user = user;
|
||||||
|
this.password = password;
|
||||||
|
this.host = host;
|
||||||
|
this.port = port;
|
||||||
|
this.dbName = dbName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract Connection getConnection() throws SQLException;
|
||||||
|
}
|
||||||
@@ -1,18 +1,14 @@
|
|||||||
package com.wasteinformationserver.db;
|
package com.wasteinformationserver.db;
|
||||||
|
|
||||||
import com.wasteinformationserver.basicutils.Log;
|
|
||||||
import com.wasteinformationserver.basicutils.Storage;
|
|
||||||
import com.wasteinformationserver.mqtt.MqttService;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.sql.*;
|
import java.sql.Connection;
|
||||||
import java.util.Scanner;
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* basic connection class to a Database
|
* basic connection class to a Database
|
||||||
*
|
*
|
||||||
* @author Lukas Heiligenbrunner
|
* @author Lukas Heiligenbrunner
|
||||||
* @author Emil Meindl
|
|
||||||
*/
|
*/
|
||||||
public class JDBC {
|
public class JDBC {
|
||||||
private static Connection conn;
|
private static Connection conn;
|
||||||
@@ -26,21 +22,6 @@ public class JDBC {
|
|||||||
private static String ipc;
|
private static String ipc;
|
||||||
private static int portc;
|
private static int portc;
|
||||||
|
|
||||||
private JDBC(String username, String password, String dbname, String ip, int port) {
|
|
||||||
logintodb(username, password, dbname, ip, port);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* instance of JDBC driver
|
|
||||||
*/
|
|
||||||
static {
|
|
||||||
try {
|
|
||||||
Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* initialize database values
|
* initialize database values
|
||||||
* suggested on startup
|
* suggested on startup
|
||||||
@@ -61,6 +42,10 @@ public class JDBC {
|
|||||||
JDBC = new JDBC(username, password, dbname, ip, port);
|
JDBC = new JDBC(username, password, dbname, ip, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private JDBC(String username, String password, String dbname, String ip, int port) throws IOException {
|
||||||
|
logintodb(username, password, dbname, ip, port);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get instance of db object
|
* get instance of db object
|
||||||
* logindata has to be set before!
|
* logindata has to be set before!
|
||||||
@@ -68,72 +53,31 @@ public class JDBC {
|
|||||||
* @return JDBC object of this
|
* @return JDBC object of this
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
public static JDBC getInstance() {
|
public static JDBC getInstance() throws IOException {
|
||||||
if (!loggedin) {
|
if (loggedin) {
|
||||||
JDBC = new JDBC(usernamec, passwordc, dbnamec, ipc, portc);
|
return JDBC;
|
||||||
}
|
} else {
|
||||||
|
logintodb(usernamec, passwordc, dbnamec, ipc, portc);
|
||||||
return JDBC;
|
return JDBC;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* initial login to db -- should be called only one time or for reconnect
|
|
||||||
*
|
|
||||||
* @param username username
|
|
||||||
* @param password password
|
|
||||||
* @param dbname Database name
|
|
||||||
* @param ip Host or ip address
|
|
||||||
* @param port Server port
|
|
||||||
* @throws IOException thrown if no connection to db is possible.
|
|
||||||
*/
|
|
||||||
private boolean logintodb(String username, String password, String dbname, String ip, int port) {
|
|
||||||
try {
|
|
||||||
DriverManager.setLoginTimeout(1);
|
|
||||||
conn = DriverManager.getConnection(
|
|
||||||
"jdbc:mysql://" + ip + ":" + port + "/" + dbname + "?useSSL=false&serverTimezone=CET",
|
|
||||||
username,
|
|
||||||
password);
|
|
||||||
checkDBStructure();
|
|
||||||
loggedin = true;
|
|
||||||
Log.Log.message("Connected to database");
|
|
||||||
} catch (SQLException e) {
|
|
||||||
// reconnect every 10 sec
|
|
||||||
Log.Log.warning("Database-Connection not possible");
|
|
||||||
new Thread(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
Thread.sleep(10 * 1000);
|
|
||||||
} catch (InterruptedException interruptedException) {
|
|
||||||
interruptedException.printStackTrace();
|
|
||||||
}
|
|
||||||
Log.Log.debug("Reading config");
|
|
||||||
Storage st = Storage.Companion.getInstance();
|
|
||||||
st.init();
|
|
||||||
usernamec = st.getDbName();
|
|
||||||
passwordc = st.getDbPassword();
|
|
||||||
dbnamec = st.getDbName();
|
|
||||||
ipc = st.getDbhost();
|
|
||||||
portc = st.getDbPort();
|
|
||||||
Log.Log.info("Retry connection");
|
|
||||||
loggedin = logintodb(usernamec, passwordc, dbnamec, ipc, portc);
|
|
||||||
if (loggedin) {
|
|
||||||
// startup mqtt service if successfully connected
|
|
||||||
MqttService srvc = MqttService.Companion.getInstance();
|
|
||||||
srvc.init(st.getMqttServer(), String.valueOf(st.getMqttPort()));
|
|
||||||
srvc.startupService();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
}
|
|
||||||
return loggedin;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disconnect() {
|
private static void logintodb(String username, String password, String dbname, String ip, int port) throws IOException {
|
||||||
|
Database db = new MySQLConnector(
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
ip,
|
||||||
|
port,
|
||||||
|
dbname);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
conn.close();
|
conn = db.getConnection();
|
||||||
} catch (SQLException throwables) {
|
loggedin = true;
|
||||||
throwables.printStackTrace();
|
} catch (SQLException e) {
|
||||||
|
throw new IOException("No connection to database");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -144,19 +88,12 @@ public class JDBC {
|
|||||||
*/
|
*/
|
||||||
public ResultSet executeQuery(String sql) {
|
public ResultSet executeQuery(String sql) {
|
||||||
try {
|
try {
|
||||||
conn.isValid(5);
|
|
||||||
PreparedStatement stmt = conn.prepareStatement(sql);
|
PreparedStatement stmt = conn.prepareStatement(sql);
|
||||||
return stmt.executeQuery();
|
return stmt.executeQuery();
|
||||||
} catch (SQLNonTransientConnectionException ee) {
|
|
||||||
if (logintodb(usernamec, passwordc, dbnamec, ipc, portc)) {
|
|
||||||
return this.executeQuery(sql);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
return null;
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -167,63 +104,8 @@ public class JDBC {
|
|||||||
* @throws SQLException
|
* @throws SQLException
|
||||||
*/
|
*/
|
||||||
public int executeUpdate(String sql) throws SQLException {
|
public int executeUpdate(String sql) throws SQLException {
|
||||||
try {
|
|
||||||
conn.isValid(2);
|
|
||||||
PreparedStatement stmt = conn.prepareStatement(sql);
|
PreparedStatement stmt = conn.prepareStatement(sql);
|
||||||
|
|
||||||
return stmt.executeUpdate();
|
return stmt.executeUpdate();
|
||||||
} catch (SQLNonTransientConnectionException ee) {
|
|
||||||
if (logintodb(usernamec, passwordc, dbnamec, ipc, portc)) {
|
|
||||||
return this.executeUpdate(sql);
|
|
||||||
} else {
|
|
||||||
throw new SQLNonTransientConnectionException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* check if connection is still established
|
|
||||||
*
|
|
||||||
* @return connection state
|
|
||||||
*/
|
|
||||||
public static boolean isConnected() {
|
|
||||||
return loggedin;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* validate the correctness of the current sql db structure
|
|
||||||
*/
|
|
||||||
public void checkDBStructure() {
|
|
||||||
try {
|
|
||||||
ResultSet seti = executeQuery("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '" + dbnamec + "'");
|
|
||||||
seti.last();
|
|
||||||
Log.Log.debug("found " + seti.getInt(1) + " tables in db");
|
|
||||||
if (seti.getInt(1) != 5) {
|
|
||||||
// structure not valid
|
|
||||||
Log.Log.info("recreating Database structure!");
|
|
||||||
Scanner s = new Scanner(getClass().getResourceAsStream("/db.sql"));
|
|
||||||
s.useDelimiter("(;(\r)?\n)|(--\n)");
|
|
||||||
Statement st = null;
|
|
||||||
try {
|
|
||||||
st = conn.createStatement();
|
|
||||||
while (s.hasNext()) {
|
|
||||||
String line = s.next();
|
|
||||||
if (line.startsWith("/*!") && line.endsWith("*/")) {
|
|
||||||
int i = line.indexOf(' ');
|
|
||||||
line = line.substring(i + 1, line.length() - " */".length());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (line.trim().length() > 0) {
|
|
||||||
executeUpdate(line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
if (st != null) st.close();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Log.Log.message("found valid database structure!");
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Log.Log.error("a unhandled SQLexception occured at db structure creation.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.wasteinformationserver.db;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
class MySQLConnector extends Database {
|
||||||
|
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public MySQLConnector(String user, String password, String host, int port, String dbName) {
|
||||||
|
super(user, password, host, port, dbName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Connection getConnection() throws SQLException {
|
||||||
|
DriverManager.setLoginTimeout(1);
|
||||||
|
return DriverManager.getConnection(
|
||||||
|
"jdbc:mysql://" + host + ":" + port + "/" + dbName + "?useSSL=false",
|
||||||
|
user,
|
||||||
|
password);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,13 +1,12 @@
|
|||||||
package com.wasteinformationserver.mqtt
|
package com.wasteinformationserver.mqtt
|
||||||
|
|
||||||
import com.wasteinformationserver.basicutils.Log
|
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.debug
|
import com.wasteinformationserver.basicutils.Log.Log.debug
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.error
|
import com.wasteinformationserver.basicutils.Log.Log.error
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.info
|
import com.wasteinformationserver.basicutils.Log.Log.info
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.message
|
import com.wasteinformationserver.basicutils.Log.Log.message
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.warning
|
|
||||||
import com.wasteinformationserver.db.JDBC
|
import com.wasteinformationserver.db.JDBC
|
||||||
import org.eclipse.paho.client.mqttv3.*
|
import org.eclipse.paho.client.mqttv3.*
|
||||||
|
import java.io.IOException
|
||||||
import java.sql.SQLException
|
import java.sql.SQLException
|
||||||
import java.text.ParseException
|
import java.text.ParseException
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
@@ -20,56 +19,51 @@ import java.util.*
|
|||||||
* @author Lukas Heiligenbrunner
|
* @author Lukas Heiligenbrunner
|
||||||
* @author Gregor Dutzler
|
* @author Gregor Dutzler
|
||||||
*/
|
*/
|
||||||
class MqttService {
|
class MqttService(serverurl: String, port: String) {
|
||||||
private var serveruri: String = "";
|
private var client: MqttClient? = null
|
||||||
private lateinit var client: MqttClient;
|
private val serveruri: String
|
||||||
private var db: JDBC = JDBC.getInstance()
|
private var db: JDBC? = null
|
||||||
|
|
||||||
companion object {
|
/**
|
||||||
private val obj = MqttService()
|
* init mqtt service
|
||||||
fun getInstance(): MqttService {
|
* JDBC has to be inited before
|
||||||
return obj;
|
*
|
||||||
}
|
* @param serverurl mqtt server ip or hostname
|
||||||
}
|
* @param port mqtt server port
|
||||||
|
*/
|
||||||
fun init(serverurl: String, port: String){
|
init {
|
||||||
serveruri = "tcp://$serverurl:$port"
|
serveruri = "tcp://$serverurl:$port"
|
||||||
|
connect()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* startup of the mqtt service
|
* startup of the mqtt service
|
||||||
*/
|
*/
|
||||||
fun startupService() {
|
fun startupService() {
|
||||||
if(JDBC.isConnected()) {
|
|
||||||
try {
|
try {
|
||||||
client = MqttClient(serveruri, "WasteInformationServerID")
|
client = MqttClient(serveruri, "JavaSample42")
|
||||||
val connOpts = MqttConnectOptions()
|
val connOpts = MqttConnectOptions()
|
||||||
connOpts.isCleanSession = true
|
connOpts.isCleanSession = true
|
||||||
client.connect(connOpts)
|
client!!.connect(connOpts)
|
||||||
client.setCallback(object : MqttCallback {
|
client!!.setCallback(object : MqttCallback {
|
||||||
override fun connectionLost(throwable: Throwable) {
|
override fun connectionLost(throwable: Throwable) {
|
||||||
error("connection lost")
|
error("connection lost")
|
||||||
Thread.sleep(500)
|
connect()
|
||||||
// restart service
|
|
||||||
startupService()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun messageArrived(s: String, mqttMessage: MqttMessage) {
|
override fun messageArrived(s: String, mqttMessage: MqttMessage) {
|
||||||
val deviceid = String(mqttMessage.payload)
|
val deviceid = String(mqttMessage.payload)
|
||||||
message("received Request from PCB")
|
message("received Request from PCB")
|
||||||
val res = db.executeQuery("SELECT * from devices WHERE DeviceID=$deviceid")
|
val res = db!!.executeQuery("SELECT * from devices WHERE DeviceID=$deviceid")
|
||||||
try {
|
try {
|
||||||
res.last()
|
res.last()
|
||||||
if (res.row != 0) {
|
if (res.row != 0) { //existing device
|
||||||
// existing device
|
|
||||||
res.first()
|
res.first()
|
||||||
val devicecities = db.executeQuery("SELECT * from device_city WHERE DeviceID='$deviceid'")
|
val devicecities = db!!.executeQuery("SELECT * from device_city WHERE DeviceID='$deviceid'")
|
||||||
devicecities.last()
|
devicecities.last()
|
||||||
if (devicecities.row == 0) {
|
if (devicecities.row == 0) { //not configured
|
||||||
// not configured
|
|
||||||
tramsmitMessage("$deviceid,-1")
|
tramsmitMessage("$deviceid,-1")
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
devicecities.first()
|
devicecities.first()
|
||||||
devicecities.previous()
|
devicecities.previous()
|
||||||
|
|
||||||
@@ -78,10 +72,8 @@ class MqttService {
|
|||||||
checkDatabase(cityid, deviceid.toInt())
|
checkDatabase(cityid, deviceid.toInt())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else { //new device
|
||||||
else {
|
db!!.executeUpdate("INSERT INTO devices (DeviceID) VALUES ($deviceid)")
|
||||||
// new device
|
|
||||||
db.executeUpdate("INSERT INTO devices (DeviceID) VALUES ($deviceid)")
|
|
||||||
info("new device registered to server")
|
info("new device registered to server")
|
||||||
tramsmitMessage("$deviceid,-1")
|
tramsmitMessage("$deviceid,-1")
|
||||||
}
|
}
|
||||||
@@ -92,46 +84,32 @@ class MqttService {
|
|||||||
|
|
||||||
override fun deliveryComplete(iMqttDeliveryToken: IMqttDeliveryToken) {}
|
override fun deliveryComplete(iMqttDeliveryToken: IMqttDeliveryToken) {}
|
||||||
})
|
})
|
||||||
client.subscribe("TopicIn")
|
client!!.subscribe("TopicIn")
|
||||||
} catch (e: MqttException) {
|
} catch (e: MqttException) {
|
||||||
error("Connection to the Broker failed")
|
error("Connection to the Broker failed")
|
||||||
}
|
}
|
||||||
}else{
|
|
||||||
Log.error("could't start mqtt service because of missing db connection!")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if device is configured and zone infos are stored in db
|
|
||||||
*
|
|
||||||
* @param citywastezoneid zone/city id
|
|
||||||
* @param deviceid device id
|
|
||||||
*/
|
|
||||||
private fun checkDatabase(citywastezoneid: Int, deviceid: Int) {
|
private fun checkDatabase(citywastezoneid: Int, deviceid: Int) {
|
||||||
var wastetype = -1
|
var wastetype = -1
|
||||||
val set2 = db.executeQuery("SELECT * FROM cities WHERE `id`='$citywastezoneid'")
|
val set2 = db!!.executeQuery("SELECT * FROM cities WHERE `id`='$citywastezoneid'")
|
||||||
try {
|
try {
|
||||||
set2.last()
|
set2.last()
|
||||||
if (set2.row != 1) {
|
if (set2.row != 1) { //error
|
||||||
//error
|
} else {
|
||||||
warning("multiple Rows with same city id found - DB Error")
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
val typ = set2.getString("wastetype")
|
val typ = set2.getString("wastetype")
|
||||||
wastetype = getIntTyp(typ)
|
wastetype = getIntTyp(typ)
|
||||||
}
|
}
|
||||||
} catch (e: SQLException) {
|
} catch (e: SQLException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
val result = db.executeQuery("SELECT pickupdates.pickupdate FROM pickupdates WHERE pickupdates.citywastezoneid=$citywastezoneid")
|
val result = db!!.executeQuery("SELECT pickupdates.pickupdate FROM pickupdates WHERE pickupdates.citywastezoneid=$citywastezoneid")
|
||||||
try {
|
try {
|
||||||
result.last()
|
result.last()
|
||||||
if (result.row == 0) {
|
if (result.row == 0) { //if not found in db --> send zero
|
||||||
//if not found in db --> send zero
|
|
||||||
debug("not found in db")
|
debug("not found in db")
|
||||||
tramsmitMessage("$deviceid,$wastetype,0")
|
tramsmitMessage("$deviceid,$wastetype,0")
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
debug(result.getString("pickupdate"))
|
debug(result.getString("pickupdate"))
|
||||||
result.first()
|
result.first()
|
||||||
do {
|
do {
|
||||||
@@ -146,8 +124,7 @@ class MqttService {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
} while (result.next())
|
} while (result.next())
|
||||||
tramsmitMessage("$deviceid,$wastetype,0")
|
tramsmitMessage("$deviceid,$wastetype,0") //transmit zero if not returned before
|
||||||
//transmit zero if not returned before
|
|
||||||
}
|
}
|
||||||
} catch (e: SQLException) {
|
} catch (e: SQLException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
@@ -156,30 +133,46 @@ class MqttService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* send a mqtt message to predefined topic
|
|
||||||
*/
|
|
||||||
private fun tramsmitMessage(temp: String) {
|
private fun tramsmitMessage(temp: String) {
|
||||||
message("reply back to PCB: $temp")
|
debug("sending message >>>$temp")
|
||||||
val message = MqttMessage(temp.toByteArray())
|
val message = MqttMessage(temp.toByteArray())
|
||||||
message.qos = 2
|
message.qos = 2
|
||||||
try {
|
try {
|
||||||
client.publish("TopicOut", message)
|
client!!.publish("TopicOut", message)
|
||||||
} catch (e: MqttException) {
|
} catch (e: MqttException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private fun getTyp(number: Int): String? {
|
||||||
* parse Type name to representing integer value
|
if (number == 1) {
|
||||||
*/
|
return "Plastic"
|
||||||
|
} else if (number == 2) {
|
||||||
|
return "Metal"
|
||||||
|
} else if (number == 3) {
|
||||||
|
return "Residual waste"
|
||||||
|
} else if (number == 4) {
|
||||||
|
return "Biowaste"
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
private fun getIntTyp(temp: String): Int {
|
private fun getIntTyp(temp: String): Int {
|
||||||
return when (temp) {
|
var number = 0
|
||||||
"Plastic" -> 1
|
when (temp) {
|
||||||
"Metal" -> 2
|
"Plastic" -> number = 1
|
||||||
"Residual waste" -> 3
|
"Metal" -> number = 2
|
||||||
"Biowaste" -> 4
|
"Residual waste" -> number = 3
|
||||||
else -> 0
|
"Biowaste" -> number = 4
|
||||||
|
}
|
||||||
|
return number
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun connect() {
|
||||||
|
try {
|
||||||
|
db = JDBC.getInstance()
|
||||||
|
} catch (e: IOException) {
|
||||||
|
error("no connetion to db")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -17,7 +17,7 @@ class HttpTools {
|
|||||||
* @param value input string
|
* @param value input string
|
||||||
* @return md5 hash
|
* @return md5 hash
|
||||||
*/
|
*/
|
||||||
fun stringToMD5(value: String): String {
|
fun StringToMD5(value: String): String {
|
||||||
return try {
|
return try {
|
||||||
val md = MessageDigest.getInstance("MD5")
|
val md = MessageDigest.getInstance("MD5")
|
||||||
val messageDigest = md.digest(value.toByteArray())
|
val messageDigest = md.digest(value.toByteArray())
|
||||||
|
|||||||
@@ -4,15 +4,9 @@ import com.sun.net.httpserver.HttpExchange
|
|||||||
import com.sun.net.httpserver.HttpHandler
|
import com.sun.net.httpserver.HttpHandler
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.debug
|
import com.wasteinformationserver.basicutils.Log.Log.debug
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.warning
|
import com.wasteinformationserver.basicutils.Log.Log.warning
|
||||||
import com.wasteinformationserver.basicutils.Storage
|
|
||||||
import com.wasteinformationserver.website.datarequests.login.LoginState
|
import com.wasteinformationserver.website.datarequests.login.LoginState
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
/**
|
|
||||||
* Http handler to deliver all the main pages (index.html ...)
|
|
||||||
*
|
|
||||||
* @author Lukas Heiligenbrunner
|
|
||||||
*/
|
|
||||||
class MainPage : HttpHandler {
|
class MainPage : HttpHandler {
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
override fun handle(t: HttpExchange) {
|
override fun handle(t: HttpExchange) {
|
||||||
@@ -20,20 +14,15 @@ class MainPage : HttpHandler {
|
|||||||
if (path == "/") {
|
if (path == "/") {
|
||||||
path += "index.html"
|
path += "index.html"
|
||||||
}
|
}
|
||||||
|
|
||||||
debug("looking for: $path")
|
debug("looking for: $path")
|
||||||
if (path.contains(".html")) {
|
if (path.contains(".html")) {
|
||||||
// if not logged in allow only register and index page!
|
if (LoginState.getObject().isLoggedIn || path == "/register.html" || path == "/index.html") { //pass only register page
|
||||||
if (LoginState.getObject().isLoggedIn || path == "/register.html" || path == "/index.html") {
|
|
||||||
sendPage(path, t)
|
sendPage(path, t)
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
warning("user not logged in --> redirecting to login page")
|
warning("user not logged in --> redirecting to login page")
|
||||||
sendPage("/index.html", t)
|
sendPage("/index.html", t)
|
||||||
}
|
}
|
||||||
}
|
} else { //only detect login state on html pages
|
||||||
else {
|
|
||||||
//only detect login state on html pages
|
|
||||||
sendPage(path, t)
|
sendPage(path, t)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -44,11 +33,9 @@ class MainPage : HttpHandler {
|
|||||||
if (fs == null && path.contains(".html")) {
|
if (fs == null && path.contains(".html")) {
|
||||||
warning("wrong page sending 404")
|
warning("wrong page sending 404")
|
||||||
sendPage("/404Error.html", t)
|
sendPage("/404Error.html", t)
|
||||||
}
|
} else if (fs == null) {
|
||||||
else if (fs == null) {
|
|
||||||
warning("requested resource doesnt exist --> $path")
|
warning("requested resource doesnt exist --> $path")
|
||||||
}
|
} else { // Object exists and is a file: accept with response code 200.
|
||||||
else { // Object exists and is a file: accept with response code 200.
|
|
||||||
var mime = "text/html"
|
var mime = "text/html"
|
||||||
val s = path.substring(path.length - 3)
|
val s = path.substring(path.length - 3)
|
||||||
if (s == ".js") mime = "application/javascript"
|
if (s == ".js") mime = "application/javascript"
|
||||||
|
|||||||
@@ -10,11 +10,6 @@ import java.io.IOException
|
|||||||
import java.net.BindException
|
import java.net.BindException
|
||||||
import java.net.InetSocketAddress
|
import java.net.InetSocketAddress
|
||||||
|
|
||||||
/**
|
|
||||||
* class to create the website nodes at specific paths
|
|
||||||
*
|
|
||||||
* @author Lukas Heiligenbrunner
|
|
||||||
*/
|
|
||||||
class Webserver {
|
class Webserver {
|
||||||
fun startserver() {
|
fun startserver() {
|
||||||
info("starting Webserver")
|
info("starting Webserver")
|
||||||
@@ -28,7 +23,7 @@ class Webserver {
|
|||||||
server.createContext("/senddata/admindata", AdminRequests())
|
server.createContext("/senddata/admindata", AdminRequests())
|
||||||
server.createContext("/senddata/newdate", NewDateRequest())
|
server.createContext("/senddata/newdate", NewDateRequest())
|
||||||
server.createContext("/senddata/Devicedata", DeviceRequest())
|
server.createContext("/senddata/Devicedata", DeviceRequest())
|
||||||
server.executor = java.util.concurrent.Executors.newCachedThreadPool() // creates a default executor
|
server.executor = null // creates a default executor
|
||||||
server.start()
|
server.start()
|
||||||
info("Server available at http://127.0.0.1:8000 now")
|
info("Server available at http://127.0.0.1:8000 now")
|
||||||
} catch (e: BindException) {
|
} catch (e: BindException) {
|
||||||
|
|||||||
@@ -9,25 +9,14 @@ import java.net.URISyntaxException;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
/**
|
|
||||||
* all requests for Admin page
|
|
||||||
*
|
|
||||||
* @author Lukas Heiligenbrunner
|
|
||||||
*/
|
|
||||||
public class AdminRequests extends PostRequest {
|
public class AdminRequests extends PostRequest {
|
||||||
@Override
|
@Override
|
||||||
public String request(HashMap<String, String> params) {
|
public String request(HashMap<String, String> params) {
|
||||||
String result = "";
|
String result = "";
|
||||||
switch (params.get("action")) {
|
switch (params.get("action")) {
|
||||||
/**
|
|
||||||
* shut down the whole application
|
|
||||||
*/
|
|
||||||
case "shutdownserver":
|
case "shutdownserver":
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
break;
|
break;
|
||||||
/**
|
|
||||||
* restart the server application
|
|
||||||
*/
|
|
||||||
case "restartserver":
|
case "restartserver":
|
||||||
final String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
|
final String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
|
||||||
File currentJar = null;
|
File currentJar = null;
|
||||||
@@ -42,7 +31,7 @@ public class AdminRequests extends PostRequest {
|
|||||||
Log.Log.warning("not jar --> cant restart");
|
Log.Log.warning("not jar --> cant restart");
|
||||||
|
|
||||||
/* Build command: java -jar application.jar */
|
/* Build command: java -jar application.jar */
|
||||||
final ArrayList<String> command = new ArrayList<>();
|
final ArrayList<String> command = new ArrayList<String>();
|
||||||
command.add(javaBin);
|
command.add(javaBin);
|
||||||
command.add("-jar");
|
command.add("-jar");
|
||||||
command.add(currentJar.getPath());
|
command.add(currentJar.getPath());
|
||||||
|
|||||||
@@ -6,33 +6,25 @@ import com.wasteinformationserver.basicutils.Log.Log.error
|
|||||||
import com.wasteinformationserver.basicutils.Log.Log.warning
|
import com.wasteinformationserver.basicutils.Log.Log.warning
|
||||||
import com.wasteinformationserver.db.JDBC
|
import com.wasteinformationserver.db.JDBC
|
||||||
import com.wasteinformationserver.website.basicrequest.PostRequest
|
import com.wasteinformationserver.website.basicrequest.PostRequest
|
||||||
|
import java.io.IOException
|
||||||
import java.sql.ResultSet
|
import java.sql.ResultSet
|
||||||
import java.sql.SQLException
|
import java.sql.SQLException
|
||||||
import java.sql.SQLIntegrityConstraintViolationException
|
import java.sql.SQLIntegrityConstraintViolationException
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
/**
|
|
||||||
* General Datarequests for Dashboard
|
|
||||||
*
|
|
||||||
* @author Lukas Heiligenbrunner
|
|
||||||
*/
|
|
||||||
class DataRequest : PostRequest() {
|
class DataRequest : PostRequest() {
|
||||||
override fun request(params: HashMap<String, String>): String {
|
override fun request(params: HashMap<String, String>): String {
|
||||||
val sb = StringBuilder()
|
val sb = StringBuilder()
|
||||||
var set: ResultSet?
|
var set: ResultSet?
|
||||||
var status = -1
|
var status = -1
|
||||||
|
val jdbc: JDBC = try {
|
||||||
if (!JDBC.isConnected()) {
|
JDBC.getInstance()
|
||||||
|
} catch (e: IOException) {
|
||||||
error("no connection to db")
|
error("no connection to db")
|
||||||
return "{\"query\" : \"nodbconn\"}"
|
return "{\"query\" : \"nodbconn\"}"
|
||||||
}
|
}
|
||||||
val jdbc: JDBC = JDBC.getInstance()
|
|
||||||
|
|
||||||
when (params["action"]) {
|
when (params["action"]) {
|
||||||
/**
|
|
||||||
* create a new city entry in db
|
|
||||||
*/
|
|
||||||
"newCity" -> {
|
"newCity" -> {
|
||||||
sb.append("{")
|
sb.append("{")
|
||||||
debug(params.toString())
|
debug(params.toString())
|
||||||
@@ -71,9 +63,6 @@ class DataRequest : PostRequest() {
|
|||||||
sb.append(",\"query\":\"ok\"")
|
sb.append(",\"query\":\"ok\"")
|
||||||
sb.append("}")
|
sb.append("}")
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* return all defined cities from db
|
|
||||||
*/
|
|
||||||
"getAllCities" -> {
|
"getAllCities" -> {
|
||||||
set = jdbc.executeQuery("select * from cities")
|
set = jdbc.executeQuery("select * from cities")
|
||||||
debug(set.toString())
|
debug(set.toString())
|
||||||
@@ -95,9 +84,6 @@ class DataRequest : PostRequest() {
|
|||||||
sb.append(",\"query\":\"ok\"")
|
sb.append(",\"query\":\"ok\"")
|
||||||
sb.append("}")
|
sb.append("}")
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* delete a specific city
|
|
||||||
*/
|
|
||||||
"deletecity" -> {
|
"deletecity" -> {
|
||||||
//DELETE FROM `cities` WHERE `id`=0
|
//DELETE FROM `cities` WHERE `id`=0
|
||||||
sb.append("{")
|
sb.append("{")
|
||||||
@@ -120,9 +106,6 @@ class DataRequest : PostRequest() {
|
|||||||
sb.append(",\"query\":\"ok\"")
|
sb.append(",\"query\":\"ok\"")
|
||||||
sb.append("}")
|
sb.append("}")
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* returns all configured dates with its city and zone
|
|
||||||
*/
|
|
||||||
"getAllDates" -> {
|
"getAllDates" -> {
|
||||||
set = jdbc.executeQuery("SELECT pickupdates.id,pickupdates.pickupdate,cities.userid,cities.name,cities.wastetype,cities.zone " +
|
set = jdbc.executeQuery("SELECT pickupdates.id,pickupdates.pickupdate,cities.userid,cities.name,cities.wastetype,cities.zone " +
|
||||||
"FROM `pickupdates` INNER JOIN `cities` ON pickupdates.citywastezoneid = cities.id")
|
"FROM `pickupdates` INNER JOIN `cities` ON pickupdates.citywastezoneid = cities.id")
|
||||||
@@ -145,9 +128,6 @@ class DataRequest : PostRequest() {
|
|||||||
sb.append(",\"query\":\"ok\"")
|
sb.append(",\"query\":\"ok\"")
|
||||||
sb.append("}")
|
sb.append("}")
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* delete a specific date
|
|
||||||
*/
|
|
||||||
"deletedate" -> {
|
"deletedate" -> {
|
||||||
sb.append("{")
|
sb.append("{")
|
||||||
try {
|
try {
|
||||||
@@ -168,9 +148,6 @@ class DataRequest : PostRequest() {
|
|||||||
sb.append(",\"query\":\"ok\"")
|
sb.append(",\"query\":\"ok\"")
|
||||||
sb.append("}")
|
sb.append("}")
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* return version foot data
|
|
||||||
*/
|
|
||||||
"getversionandbuildtime" -> {
|
"getversionandbuildtime" -> {
|
||||||
sb.append("{")
|
sb.append("{")
|
||||||
sb.append("\"version\" : \"" + Info.getVersion() + "\"")
|
sb.append("\"version\" : \"" + Info.getVersion() + "\"")
|
||||||
@@ -178,9 +155,6 @@ class DataRequest : PostRequest() {
|
|||||||
sb.append(",\"query\":\"ok\"")
|
sb.append(",\"query\":\"ok\"")
|
||||||
sb.append("}")
|
sb.append("}")
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* return head data with basic collection infos
|
|
||||||
*/
|
|
||||||
"getStartHeaderData" -> {
|
"getStartHeaderData" -> {
|
||||||
sb.append("{")
|
sb.append("{")
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -4,50 +4,43 @@ import com.wasteinformationserver.basicutils.Log.Log.debug
|
|||||||
import com.wasteinformationserver.basicutils.Log.Log.error
|
import com.wasteinformationserver.basicutils.Log.Log.error
|
||||||
import com.wasteinformationserver.db.JDBC
|
import com.wasteinformationserver.db.JDBC
|
||||||
import com.wasteinformationserver.website.basicrequest.PostRequest
|
import com.wasteinformationserver.website.basicrequest.PostRequest
|
||||||
|
import java.io.IOException
|
||||||
import java.sql.ResultSet
|
import java.sql.ResultSet
|
||||||
import java.sql.SQLException
|
import java.sql.SQLException
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
/**
|
|
||||||
* Class for all requests on device Page
|
|
||||||
*
|
|
||||||
* @author Lukas Heiligenbrunner
|
|
||||||
*/
|
|
||||||
class DeviceRequest : PostRequest() {
|
class DeviceRequest : PostRequest() {
|
||||||
override fun request(params: HashMap<String, String>): String {
|
override fun request(params: HashMap<String, String>): String {
|
||||||
if (!JDBC.isConnected()) {
|
var jdbc: JDBC? = null
|
||||||
error("no connection to db")
|
try {
|
||||||
return "{\"query\" : \"nodbconn\"}"
|
jdbc = JDBC.getInstance()
|
||||||
|
} catch (e: IOException) {
|
||||||
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
val jdbc: JDBC = JDBC.getInstance()
|
|
||||||
|
|
||||||
val sb = StringBuilder()
|
val sb = StringBuilder()
|
||||||
val deviceset: ResultSet
|
var deviceset: ResultSet
|
||||||
when (params["action"]) {
|
when (params["action"]) {
|
||||||
/**
|
|
||||||
* return all available devices
|
|
||||||
*/
|
|
||||||
"getdevices" -> {
|
"getdevices" -> {
|
||||||
deviceset = jdbc.executeQuery("SELECT * FROM `devices")
|
deviceset = jdbc!!.executeQuery("SELECT * FROM `devices")
|
||||||
sb.append("{\"data\":[")
|
sb.append("{\"data\":[")
|
||||||
try {
|
try {
|
||||||
while (deviceset.next()) {
|
while (deviceset.next()) {
|
||||||
val deviceid = deviceset.getInt("DeviceID")
|
val deviceid = deviceset.getInt("DeviceID")
|
||||||
val cityid = deviceset.getInt("CityID")
|
val cityid = deviceset.getInt("CityID")
|
||||||
if (cityid == -1) {
|
if (cityid == -1) {
|
||||||
sb.append("{\"deviceid\":").append(deviceid).append(",\"cityid\":").append(cityid).append("}")
|
sb.append("{\"deviceid\":\"").append(deviceid).append("\",\"cityid\":\"").append(cityid).append("\"}")
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
val devicename = deviceset.getString("DeviceName")
|
val devicename = deviceset.getString("DeviceName")
|
||||||
val devicelocation = deviceset.getString("DeviceLocation")
|
val devicelocation = deviceset.getString("DeviceLocation")
|
||||||
sb.append("{\"deviceid\":").append(deviceid).append(",\"devicename\":\"").append(devicename).append("\",\"devicelocation\":\"").append(devicelocation).append("\",\"devices\":[")
|
sb.append("{\"deviceid\":\"").append(deviceid).append("\",\"devicename\":\"").append(devicename).append("\",\"devicelocation\":\"").append(devicelocation).append("\",\"devices\":[")
|
||||||
val devicecities = jdbc.executeQuery("SELECT * FROM `device_city` INNER JOIN `cities` ON device_city.CityID=cities.id WHERE `DeviceID`='$deviceid'")
|
val devicecities = jdbc.executeQuery("SELECT * FROM `device_city` INNER JOIN `cities` ON device_city.CityID=cities.id WHERE `DeviceID`='$deviceid'")
|
||||||
while (devicecities.next()) {
|
while (devicecities.next()) {
|
||||||
val cityidd = devicecities.getInt("id")
|
val cityidd = devicecities.getInt("id")
|
||||||
val cityname = devicecities.getString("name")
|
val cityname = devicecities.getString("name")
|
||||||
val wastetype = devicecities.getString("wastetype")
|
val wastetype = devicecities.getString("wastetype")
|
||||||
val zone = devicecities.getString("zone")
|
val zone = devicecities.getString("zone")
|
||||||
sb.append("{\"cityid\":").append(cityidd).append(",\"cityname\":\"").append(cityname).append("\",\"wastetype\":\"").append(wastetype).append("\",\"zone\":\"").append(zone).append("\"}")
|
sb.append("{\"cityid\":\"").append(cityidd).append("\",\"cityname\":\"").append(cityname).append("\",\"wastetype\":\"").append(wastetype).append("\",\"zone\":\"").append(zone).append("\"}")
|
||||||
if (!devicecities.isLast) {
|
if (!devicecities.isLast) {
|
||||||
sb.append(",")
|
sb.append(",")
|
||||||
}
|
}
|
||||||
@@ -63,18 +56,15 @@ class DeviceRequest : PostRequest() {
|
|||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* returns all available city names
|
|
||||||
*/
|
|
||||||
"getCitynames" -> {
|
"getCitynames" -> {
|
||||||
deviceset = jdbc.executeQuery("select * from cities")
|
deviceset = jdbc!!.executeQuery("select * from cities")
|
||||||
debug(deviceset.toString())
|
debug(deviceset.toString())
|
||||||
sb.append("{")
|
sb.append("{")
|
||||||
try {
|
try {
|
||||||
var prev = ""
|
var prev = ""
|
||||||
while (deviceset.next()) {
|
while (deviceset.next()) {
|
||||||
if (prev != deviceset.getString("name")) {
|
if (prev != deviceset.getString("name")) {
|
||||||
if (!deviceset.isFirst) {
|
if (!deviceset.isFirst()) {
|
||||||
sb.append(",")
|
sb.append(",")
|
||||||
}
|
}
|
||||||
sb.append("\"").append(deviceset.getString("name")).append("\":\"").append(deviceset.getString("name")).append("\"")
|
sb.append("\"").append(deviceset.getString("name")).append("\":\"").append(deviceset.getString("name")).append("\"")
|
||||||
@@ -87,11 +77,8 @@ class DeviceRequest : PostRequest() {
|
|||||||
sb.append("}")
|
sb.append("}")
|
||||||
debug(sb.toString())
|
debug(sb.toString())
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* returns all available zones for specified city
|
|
||||||
*/
|
|
||||||
"getzones" -> {
|
"getzones" -> {
|
||||||
deviceset = jdbc.executeQuery("select * from cities WHERE `name`='" + params["cityname"] + "' ORDER BY zone ASC")
|
deviceset = jdbc!!.executeQuery("select * from cities WHERE `name`='" + params["cityname"] + "' ORDER BY zone ASC")
|
||||||
debug(deviceset.toString())
|
debug(deviceset.toString())
|
||||||
sb.append("{")
|
sb.append("{")
|
||||||
try {
|
try {
|
||||||
@@ -99,7 +86,7 @@ class DeviceRequest : PostRequest() {
|
|||||||
while (deviceset.next()) {
|
while (deviceset.next()) {
|
||||||
if (prev != deviceset.getInt("zone")) {
|
if (prev != deviceset.getInt("zone")) {
|
||||||
sb.append("\"").append(deviceset.getInt("zone")).append("\":\"").append(deviceset.getInt("zone")).append("\"")
|
sb.append("\"").append(deviceset.getInt("zone")).append("\":\"").append(deviceset.getInt("zone")).append("\"")
|
||||||
if (!deviceset.isLast) {
|
if (!deviceset.isLast()) {
|
||||||
sb.append(",")
|
sb.append(",")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -110,11 +97,8 @@ class DeviceRequest : PostRequest() {
|
|||||||
}
|
}
|
||||||
sb.append("}")
|
sb.append("}")
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* returns all available waste types for specified zone and city
|
|
||||||
*/
|
|
||||||
"gettypes" -> {
|
"gettypes" -> {
|
||||||
deviceset = jdbc.executeQuery("select * from cities WHERE `name`='" + params["cityname"] + "' AND `zone`='" + params["zonename"] + "' ORDER BY zone ASC")
|
deviceset = jdbc!!.executeQuery("select * from cities WHERE `name`='" + params["cityname"] + "' AND `zone`='" + params["zonename"] + "' ORDER BY zone ASC")
|
||||||
debug(deviceset.toString())
|
debug(deviceset.toString())
|
||||||
sb.append("{")
|
sb.append("{")
|
||||||
try {
|
try {
|
||||||
@@ -122,7 +106,7 @@ class DeviceRequest : PostRequest() {
|
|||||||
while (deviceset.next()) {
|
while (deviceset.next()) {
|
||||||
if (prev != deviceset.getString("wastetype")) {
|
if (prev != deviceset.getString("wastetype")) {
|
||||||
sb.append("\"" + deviceset.getString("wastetype") + "\":\"" + deviceset.getString("wastetype") + "\"")
|
sb.append("\"" + deviceset.getString("wastetype") + "\":\"" + deviceset.getString("wastetype") + "\"")
|
||||||
if (!deviceset.isLast) {
|
if (!deviceset.isLast()) {
|
||||||
sb.append(",")
|
sb.append(",")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -133,11 +117,8 @@ class DeviceRequest : PostRequest() {
|
|||||||
}
|
}
|
||||||
sb.append("}")
|
sb.append("}")
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* configure device and save infos to db
|
|
||||||
*/
|
|
||||||
"savetodb" -> try {
|
"savetodb" -> try {
|
||||||
val cityset = jdbc.executeQuery("SELECT id from cities WHERE `name`='" + params["cityname"] + "' AND `zone`='" + params["zonename"] + "' AND `wastetype`='" + params["wastetype"] + "'")
|
val cityset = jdbc!!.executeQuery("SELECT id from cities WHERE `name`='" + params["cityname"] + "' AND `zone`='" + params["zonename"] + "' AND `wastetype`='" + params["wastetype"] + "'")
|
||||||
cityset.last()
|
cityset.last()
|
||||||
if (cityset.row != 1) {
|
if (cityset.row != 1) {
|
||||||
error("error saving device to db --> device multiply defined?")
|
error("error saving device to db --> device multiply defined?")
|
||||||
@@ -152,50 +133,35 @@ class DeviceRequest : PostRequest() {
|
|||||||
} catch (e: SQLException) {
|
} catch (e: SQLException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* delete a configured device from db
|
|
||||||
*/
|
|
||||||
"deleteDevice" -> {
|
"deleteDevice" -> {
|
||||||
try {
|
try {
|
||||||
jdbc.executeUpdate("DELETE FROM devices WHERE `DeviceID`='" + params["id"] + "'")
|
jdbc!!.executeUpdate("DELETE FROM devices WHERE `DeviceID`='" + params["id"] + "'")
|
||||||
jdbc.executeUpdate("DELETE FROM device_city WHERE `DeviceID`='" + params["id"] + "'")
|
jdbc.executeUpdate("DELETE FROM device_city WHERE `DeviceID`='" + params["id"] + "'")
|
||||||
} catch (e: SQLException) {
|
} catch (e: SQLException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
sb.append("{\"status\":\"success\"}")
|
sb.append("{\"status\":\"success\"}")
|
||||||
}
|
}
|
||||||
/**
|
"getDeviceNumber" -> try {
|
||||||
* add new city/zone/type to db to existing one
|
val numberset = jdbc!!.executeQuery("SELECT * FROM devices")
|
||||||
*/
|
numberset.last()
|
||||||
|
val devicenr = numberset.row
|
||||||
|
sb.append("{\"devicenr\":\"$devicenr\"}")
|
||||||
|
} catch (e: SQLException) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
"addtodb" -> {
|
"addtodb" -> {
|
||||||
|
var cityid = -1
|
||||||
try {
|
try {
|
||||||
val device = jdbc.executeQuery("SELECT * FROM cities WHERE name='" + params["cityname"] + "' AND wastetype='" + params["wastetype"] + "' AND zone='" + params["zonename"] + "'")
|
val device = jdbc!!.executeQuery("SELECT * FROM cities WHERE name='" + params["cityname"] + "' AND wastetype='" + params["wastetype"] + "' AND zone='" + params["zonename"] + "'")
|
||||||
device.first()
|
device.first()
|
||||||
val cityid = device.getInt("id")
|
cityid = device.getInt("id")
|
||||||
jdbc.executeUpdate("INSERT INTO `device_city` (`DeviceID`, `CityID`) VALUES ('" + params["deviceid"] + "', '" + cityid + "');")
|
jdbc.executeUpdate("INSERT INTO `device_city` (`DeviceID`, `CityID`) VALUES ('" + params["deviceid"] + "', '" + cityid + "');")
|
||||||
} catch (e: SQLException) {
|
} catch (e: SQLException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
sb.append("{\"success\":true}")
|
sb.append("{\"success\":true}")
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* return header information such as devicenumber and number of unconfigured devices
|
|
||||||
*/
|
|
||||||
"getheader" -> {
|
|
||||||
try {
|
|
||||||
var numberset = jdbc.executeQuery("SELECT * FROM devices")
|
|
||||||
numberset.last()
|
|
||||||
val devicenr = numberset.row
|
|
||||||
|
|
||||||
numberset = jdbc.executeQuery("SELECT * FROM devices WHERE CityID=-1")
|
|
||||||
numberset.last()
|
|
||||||
val unconfigureddevices = numberset.row
|
|
||||||
|
|
||||||
sb.append("{\"success\":true,\"devicenumber\":$devicenr, \"unconfigureddevices\":$unconfigureddevices}")
|
|
||||||
} catch (e: SQLException) {
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return sb.toString()
|
return sb.toString()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,127 @@
|
|||||||
|
package com.wasteinformationserver.website.datarequests;
|
||||||
|
|
||||||
|
import com.wasteinformationserver.basicutils.Log;
|
||||||
|
import com.wasteinformationserver.db.JDBC;
|
||||||
|
import com.wasteinformationserver.website.basicrequest.PostRequest;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public class NewDateRequest extends PostRequest {
|
||||||
|
@Override
|
||||||
|
public String request(HashMap<String, String> params) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
JDBC jdbc;
|
||||||
|
ResultSet set;
|
||||||
|
try {
|
||||||
|
jdbc = JDBC.getInstance();
|
||||||
|
} catch (IOException e) {
|
||||||
|
Log.Log.error("no connection to db");
|
||||||
|
return "{\"query\" : \"nodbconn\"}";
|
||||||
|
}
|
||||||
|
switch (params.get("action")) {
|
||||||
|
case "getCitynames":
|
||||||
|
set = jdbc.executeQuery("select * from cities");
|
||||||
|
Log.Log.debug(set.toString());
|
||||||
|
sb.append("{\"data\":[");
|
||||||
|
try {
|
||||||
|
String prev = "";
|
||||||
|
while (set.next()) {
|
||||||
|
if (prev.equals(set.getString("name"))) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (!set.isFirst()) {
|
||||||
|
sb.append(",");
|
||||||
|
}
|
||||||
|
sb.append("{\"cityname\":\"" + set.getString("name") + "\"}");
|
||||||
|
}
|
||||||
|
prev = set.getString("name");
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
sb.append("]");
|
||||||
|
sb.append(",\"query\":\"ok\"");
|
||||||
|
sb.append("}");
|
||||||
|
Log.Log.debug(sb.toString());
|
||||||
|
break;
|
||||||
|
case "getzones":
|
||||||
|
set = jdbc.executeQuery("select * from cities WHERE `name`='" + params.get("cityname") + "' ORDER BY zone ASC");
|
||||||
|
Log.Log.debug(set.toString());
|
||||||
|
sb.append("{\"data\":[");
|
||||||
|
try {
|
||||||
|
int prev = 42;
|
||||||
|
while (set.next()) {
|
||||||
|
if (prev == set.getInt("zone")) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
sb.append("{\"zone\":\"" + set.getInt("zone") + "\"}");
|
||||||
|
if (!set.isLast()) {
|
||||||
|
sb.append(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
prev = set.getInt("zone");
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
sb.append("]");
|
||||||
|
sb.append(",\"query\":\"ok\"");
|
||||||
|
sb.append("}");
|
||||||
|
break;
|
||||||
|
case "gettypes":
|
||||||
|
set = jdbc.executeQuery("select * from cities WHERE `name`='" + params.get("cityname") + "' AND `zone`='"+params.get("zonename")+"' ORDER BY zone ASC");
|
||||||
|
Log.Log.debug(set.toString());
|
||||||
|
sb.append("{\"data\":[");
|
||||||
|
try {
|
||||||
|
String prev = "42";
|
||||||
|
while (set.next()) {
|
||||||
|
if (prev == set.getString("wastetype")) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
sb.append("{\"wastetype\":\"" + set.getString("wastetype") + "\"}");
|
||||||
|
if (!set.isLast()) {
|
||||||
|
sb.append(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
prev = set.getString("wastetype");
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
sb.append("]");
|
||||||
|
sb.append(",\"query\":\"ok\"");
|
||||||
|
sb.append("}");
|
||||||
|
break;
|
||||||
|
case "newdate":
|
||||||
|
sb.append("{");
|
||||||
|
Log.Log.debug(params);
|
||||||
|
set = jdbc.executeQuery("select * from cities WHERE `name`='" + params.get("cityname") + "' AND `zone`='" + params.get("zone") + "' AND `wastetype`='" + params.get("wastetype") + "'");
|
||||||
|
try {
|
||||||
|
set.last();
|
||||||
|
if (set.getRow() == 1) {
|
||||||
|
Log.Log.debug(set.getInt("id"));
|
||||||
|
|
||||||
|
int status = jdbc.executeUpdate("INSERT INTO `pickupdates`(`citywastezoneid`, `pickupdate`) VALUES ('" + set.getInt("id") + "','" + params.get("date") + "')");
|
||||||
|
if (status == 1) {
|
||||||
|
sb.append("\"status\" : \"success\"");
|
||||||
|
} else {
|
||||||
|
sb.append("\"status\" : \"error\"");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Log.Log.warning("city doesnt exist!");
|
||||||
|
sb.append("\"status\" : \"citydoesntexist\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
sb.append(",\"query\":\"ok\"");
|
||||||
|
sb.append("}");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
package com.wasteinformationserver.website.datarequests
|
|
||||||
|
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.debug
|
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.error
|
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.warning
|
|
||||||
import com.wasteinformationserver.db.JDBC
|
|
||||||
import com.wasteinformationserver.website.basicrequest.PostRequest
|
|
||||||
import java.sql.ResultSet
|
|
||||||
import java.sql.SQLException
|
|
||||||
|
|
||||||
/**
|
|
||||||
* todo
|
|
||||||
*
|
|
||||||
* @author Lukas Heiligenbrunner
|
|
||||||
*/
|
|
||||||
class NewDateRequest : PostRequest() {
|
|
||||||
override fun request(params: HashMap<String, String>): String {
|
|
||||||
val sb = StringBuilder()
|
|
||||||
val set: ResultSet
|
|
||||||
|
|
||||||
if (!JDBC.isConnected()) {
|
|
||||||
error("no connection to db")
|
|
||||||
return "{\"query\" : \"nodbconn\"}"
|
|
||||||
}
|
|
||||||
val jdbc: JDBC = JDBC.getInstance()
|
|
||||||
|
|
||||||
when (params["action"]) {
|
|
||||||
"getCitynames" -> {
|
|
||||||
set = jdbc.executeQuery("select * from cities")
|
|
||||||
debug(set.toString())
|
|
||||||
sb.append("{\"data\":[")
|
|
||||||
try {
|
|
||||||
var prev = ""
|
|
||||||
while (set.next()) {
|
|
||||||
if (prev != set.getString("name")) { // not same --> new element
|
|
||||||
if (!set.isFirst) {
|
|
||||||
sb.append(",")
|
|
||||||
}
|
|
||||||
sb.append("{\"cityname\":\"" + set.getString("name") + "\"}")
|
|
||||||
}
|
|
||||||
prev = set.getString("name")
|
|
||||||
}
|
|
||||||
} catch (e: SQLException) {
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
sb.append("]")
|
|
||||||
sb.append(",\"query\":\"ok\"")
|
|
||||||
sb.append("}")
|
|
||||||
debug(sb.toString())
|
|
||||||
}
|
|
||||||
"getzones" -> {
|
|
||||||
set = jdbc.executeQuery("select * from cities WHERE `name`='" + params["cityname"] + "' ORDER BY zone ASC")
|
|
||||||
debug(set.toString())
|
|
||||||
sb.append("{\"data\":[")
|
|
||||||
try {
|
|
||||||
var prev = 42
|
|
||||||
while (set.next()) {
|
|
||||||
if (prev != set.getInt("zone")) { // not same --> append next
|
|
||||||
sb.append("{\"zone\":\"" + set.getInt("zone") + "\"}")
|
|
||||||
if (!set.isLast) {
|
|
||||||
sb.append(",")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
prev = set.getInt("zone")
|
|
||||||
}
|
|
||||||
} catch (e: SQLException) {
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
sb.append("]")
|
|
||||||
sb.append(",\"query\":\"ok\"")
|
|
||||||
sb.append("}")
|
|
||||||
}
|
|
||||||
"gettypes" -> {
|
|
||||||
set = jdbc.executeQuery("select * from cities WHERE `name`='" + params["cityname"] + "' AND `zone`='" + params["zonename"] + "' ORDER BY zone ASC")
|
|
||||||
debug(set.toString())
|
|
||||||
sb.append("{\"data\":[")
|
|
||||||
try {
|
|
||||||
var prev = "42"
|
|
||||||
while (set.next()) {
|
|
||||||
if (prev !== set.getString("wastetype")) {
|
|
||||||
sb.append("{\"wastetype\":\"" + set.getString("wastetype") + "\"}")
|
|
||||||
if (!set.isLast) {
|
|
||||||
sb.append(",")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
prev = set.getString("wastetype")
|
|
||||||
}
|
|
||||||
} catch (e: SQLException) {
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
sb.append("]")
|
|
||||||
sb.append(",\"query\":\"ok\"")
|
|
||||||
sb.append("}")
|
|
||||||
}
|
|
||||||
"newdate" -> {
|
|
||||||
sb.append("{")
|
|
||||||
debug(params)
|
|
||||||
set = jdbc.executeQuery("select * from cities WHERE `name`='" + params["cityname"] + "' AND `zone`='" + params["zone"] + "' AND `wastetype`='" + params["wastetype"] + "'")
|
|
||||||
try {
|
|
||||||
set.last()
|
|
||||||
if (set.row == 1) {
|
|
||||||
debug(set.getInt("id"))
|
|
||||||
val status = jdbc.executeUpdate("INSERT INTO `pickupdates`(`citywastezoneid`, `pickupdate`) VALUES ('" + set.getInt("id") + "','" + params["date"] + "')")
|
|
||||||
if (status == 1) {
|
|
||||||
sb.append("\"status\" : \"success\"")
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sb.append("\"status\" : \"error\"")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
warning("city doesnt exist!")
|
|
||||||
sb.append("\"status\" : \"citydoesntexist\"")
|
|
||||||
}
|
|
||||||
} catch (e: SQLException) {
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
sb.append(",\"query\":\"ok\"")
|
|
||||||
sb.append("}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sb.toString()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,7 +3,7 @@ package com.wasteinformationserver.website.datarequests
|
|||||||
import com.wasteinformationserver.basicutils.Log
|
import com.wasteinformationserver.basicutils.Log
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.debug
|
import com.wasteinformationserver.basicutils.Log.Log.debug
|
||||||
import com.wasteinformationserver.db.JDBC
|
import com.wasteinformationserver.db.JDBC
|
||||||
import com.wasteinformationserver.website.HttpTools.Companion.stringToMD5
|
import com.wasteinformationserver.website.HttpTools.Companion.StringToMD5
|
||||||
import com.wasteinformationserver.website.basicrequest.PostRequest
|
import com.wasteinformationserver.website.basicrequest.PostRequest
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.sql.SQLException
|
import java.sql.SQLException
|
||||||
@@ -12,16 +12,15 @@ import java.util.*
|
|||||||
class RegisterRequest : PostRequest() {
|
class RegisterRequest : PostRequest() {
|
||||||
override fun request(params: HashMap<String, String>): String {
|
override fun request(params: HashMap<String, String>): String {
|
||||||
debug(params.toString())
|
debug(params.toString())
|
||||||
val passhash = stringToMD5(params["password"]!!)
|
val passhash = StringToMD5(params["password"]!!)
|
||||||
val reply: StringBuilder = StringBuilder("{")
|
var reply: StringBuilder = StringBuilder("{")
|
||||||
try {
|
try {
|
||||||
val myjd: JDBC = JDBC.getInstance()
|
var myjd: JDBC = JDBC.getInstance()
|
||||||
|
|
||||||
val status = myjd.executeUpdate("INSERT INTO `user` (`username`, `firstName`, `secondName`, `password`, `email`, `logindate`) VALUES ('" + params["username"] + "', '" + params["firstname"] + "', '" + params["lastname"] + "', '" + passhash + "', '" + params["email"] + "', current_timestamp());")
|
val status = myjd.executeUpdate("INSERT INTO `user` (`username`, `firstName`, `secondName`, `password`, `email`, `logindate`) VALUES ('" + params["username"] + "', '" + params["firstname"] + "', '" + params["lastname"] + "', '" + passhash + "', '" + params["email"] + "', current_timestamp());")
|
||||||
if (status == 1) {
|
if (status == 1) {
|
||||||
reply.append("\"accept\": true")
|
reply.append("\"accept\": true")
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
reply.append("\"accept\": false")
|
reply.append("\"accept\": false")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import java.util.*
|
|||||||
class UserInfoRequest : PostRequest() {
|
class UserInfoRequest : PostRequest() {
|
||||||
override fun request(params: HashMap<String, String>): String {
|
override fun request(params: HashMap<String, String>): String {
|
||||||
//TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
//TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
when (params["action"]) {
|
when (params.get("action")) {
|
||||||
"getlogins" -> {
|
"getlogins" -> {
|
||||||
println("heyho")
|
println("heyho")
|
||||||
}
|
}
|
||||||
@@ -14,6 +14,6 @@ class UserInfoRequest : PostRequest() {
|
|||||||
//todo o
|
//todo o
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "{}"
|
return "{}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,19 +3,17 @@ package com.wasteinformationserver.website.datarequests.login
|
|||||||
import com.wasteinformationserver.basicutils.Log.Log.debug
|
import com.wasteinformationserver.basicutils.Log.Log.debug
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.error
|
import com.wasteinformationserver.basicutils.Log.Log.error
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.message
|
import com.wasteinformationserver.basicutils.Log.Log.message
|
||||||
import com.wasteinformationserver.basicutils.Storage
|
|
||||||
import com.wasteinformationserver.db.JDBC
|
import com.wasteinformationserver.db.JDBC
|
||||||
import com.wasteinformationserver.website.HttpTools.Companion.stringToMD5
|
import com.wasteinformationserver.website.HttpTools.Companion.StringToMD5
|
||||||
import com.wasteinformationserver.website.basicrequest.PostRequest
|
import com.wasteinformationserver.website.basicrequest.PostRequest
|
||||||
|
import java.io.IOException
|
||||||
import java.sql.SQLException
|
import java.sql.SQLException
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* request handler of new user login requests
|
* request handler of new login request of user
|
||||||
* - checks the truth of username and password
|
* - checks the truth of username and password
|
||||||
* - replies right error messages or the success login
|
* - replies right error messages or the success login
|
||||||
*
|
|
||||||
* @author Lukas Heiligenbrunner
|
|
||||||
*/
|
*/
|
||||||
class LoginRequest : PostRequest() {
|
class LoginRequest : PostRequest() {
|
||||||
override fun request(params: HashMap<String, String>): String {
|
override fun request(params: HashMap<String, String>): String {
|
||||||
@@ -24,40 +22,28 @@ class LoginRequest : PostRequest() {
|
|||||||
val username = params["username"]
|
val username = params["username"]
|
||||||
val jdbc: JDBC = try {
|
val jdbc: JDBC = try {
|
||||||
JDBC.getInstance()
|
JDBC.getInstance()
|
||||||
} catch (e: Exception) {
|
} catch (e: IOException) {
|
||||||
error("no connection to db" + e.printStackTrace())
|
error("no connection to db")
|
||||||
return "{\"status\" : \"nodbconn\"}"
|
return "{\"status\" : \"nodbconn\"}"
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Storage.getInstance().isEveryThingDefined()) {
|
|
||||||
error("config not configured correctly")
|
|
||||||
return "{\"status\" : \"conferror\"}"
|
|
||||||
}
|
|
||||||
|
|
||||||
val s = jdbc.executeQuery("select * from user where username ='$username'")
|
val s = jdbc.executeQuery("select * from user where username ='$username'")
|
||||||
|
|
||||||
debug("successfully logged in to db")
|
debug("successfully logged in to db")
|
||||||
var response = "{\"accept\": false}"
|
var response = "{\"accept\": false}"
|
||||||
try {
|
try {
|
||||||
s.last()
|
s.last()
|
||||||
if (s.row == 1) {
|
if (s.row == 1) { //success
|
||||||
//success
|
if (StringToMD5(password!!) == s.getString("password")) {
|
||||||
if (stringToMD5(password!!) == s.getString("password")) {
|
|
||||||
debug("login success")
|
debug("login success")
|
||||||
LoginState.getObject().logIn()
|
LoginState.getObject().logIn()
|
||||||
LoginState.getObject().setAccountData(username, s.getString("firstName"), s.getString("secondName"), s.getString("email"), s.getInt("permission"))
|
LoginState.getObject().setAccountData(username, s.getString("firstName"), s.getString("secondName"), s.getString("email"), s.getInt("permission"))
|
||||||
response = "{\"accept\": true}"
|
response = "{\"accept\": true}"
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
debug("wrong password")
|
debug("wrong password")
|
||||||
}
|
}
|
||||||
}
|
} else if (s.row == 0) { //user not found
|
||||||
else if (s.row == 0) {
|
|
||||||
//user not found
|
|
||||||
debug("user not found")
|
debug("user not found")
|
||||||
}
|
} else { //internal error two users with same name...?
|
||||||
else {
|
|
||||||
//internal error two users with same name...?
|
|
||||||
error("there seem to be two users with same name")
|
error("there seem to be two users with same name")
|
||||||
}
|
}
|
||||||
debug("rowcount: " + s.row)
|
debug("rowcount: " + s.row)
|
||||||
|
|||||||
@@ -1,16 +1,12 @@
|
|||||||
package com.wasteinformationserver.website.datarequests.login;
|
package com.wasteinformationserver.website.datarequests.login;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* singleton representing the login state of the user
|
*
|
||||||
*/
|
*/
|
||||||
public class LoginState {
|
public class LoginState {
|
||||||
|
|
||||||
private static final LoginState mythis = new LoginState();
|
private static LoginState mythis = new LoginState();
|
||||||
|
|
||||||
/**
|
|
||||||
* get object
|
|
||||||
* @return LoginState instance
|
|
||||||
*/
|
|
||||||
public static LoginState getObject() {
|
public static LoginState getObject() {
|
||||||
return mythis;
|
return mythis;
|
||||||
}
|
}
|
||||||
@@ -21,26 +17,16 @@ public class LoginState {
|
|||||||
private String email;
|
private String email;
|
||||||
private int permission;
|
private int permission;
|
||||||
|
|
||||||
private boolean loggedin = false;
|
boolean loggedin = true;
|
||||||
|
|
||||||
/**
|
|
||||||
* login the user
|
|
||||||
*/
|
|
||||||
public void logIn() {
|
public void logIn() {
|
||||||
loggedin = true;
|
loggedin = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* logout the user
|
|
||||||
*/
|
|
||||||
public void logOut() {
|
public void logOut() {
|
||||||
loggedin = false;
|
loggedin = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* set the account infos
|
|
||||||
* username, firstname, lastname, email and permission level
|
|
||||||
*/
|
|
||||||
public void setAccountData(String username, String firstname, String lastname, String email, int permission) {
|
public void setAccountData(String username, String firstname, String lastname, String email, int permission) {
|
||||||
this.username = username;
|
this.username = username;
|
||||||
this.firstname = firstname;
|
this.firstname = firstname;
|
||||||
@@ -49,50 +35,26 @@ public class LoginState {
|
|||||||
this.permission = permission;
|
this.permission = permission;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* check if user is logged in
|
|
||||||
* @return loginstate
|
|
||||||
*/
|
|
||||||
public boolean isLoggedIn() {
|
public boolean isLoggedIn() {
|
||||||
return loggedin;
|
return loggedin;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* get username
|
|
||||||
* @return username
|
|
||||||
*/
|
|
||||||
public String getUsername() {
|
public String getUsername() {
|
||||||
return username;
|
return username;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* get firstname
|
|
||||||
* @return firstname
|
|
||||||
*/
|
|
||||||
public String getFirstname() {
|
public String getFirstname() {
|
||||||
return firstname;
|
return firstname;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* get lastname
|
|
||||||
* @return lastname
|
|
||||||
*/
|
|
||||||
public String getLastname() {
|
public String getLastname() {
|
||||||
return lastname;
|
return lastname;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* get email address
|
|
||||||
* @return mail address
|
|
||||||
*/
|
|
||||||
public String getEmail() {
|
public String getEmail() {
|
||||||
return email;
|
return email;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* get permission level
|
|
||||||
* @return level as int
|
|
||||||
*/
|
|
||||||
public int getPermission() {
|
public int getPermission() {
|
||||||
return permission;
|
return permission;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,87 +0,0 @@
|
|||||||
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
|
||||||
SET time_zone = "+00:00";
|
|
||||||
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT = @@CHARACTER_SET_CLIENT */;
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS = @@CHARACTER_SET_RESULTS */;
|
|
||||||
/*!40101 SET @OLD_COLLATION_CONNECTION = @@COLLATION_CONNECTION */;
|
|
||||||
/*!40101 SET NAMES utf8mb4 */;
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE cities
|
|
||||||
(
|
|
||||||
id int(11) NOT NULL,
|
|
||||||
userid int(11) NOT NULL,
|
|
||||||
name varchar(256) NOT NULL,
|
|
||||||
wastetype varchar(64) NOT NULL,
|
|
||||||
zone int(11) NOT NULL
|
|
||||||
) ENGINE = InnoDB
|
|
||||||
DEFAULT CHARSET = utf8;
|
|
||||||
|
|
||||||
CREATE TABLE devices
|
|
||||||
(
|
|
||||||
DeviceID int(11) NOT NULL,
|
|
||||||
CityID int(11) NOT NULL DEFAULT '-1',
|
|
||||||
DeviceName varchar(15) DEFAULT NULL,
|
|
||||||
DeviceLocation varchar(15) DEFAULT NULL
|
|
||||||
) ENGINE = InnoDB
|
|
||||||
DEFAULT CHARSET = utf8mb4;
|
|
||||||
|
|
||||||
CREATE TABLE device_city
|
|
||||||
(
|
|
||||||
DeviceID int(11) NOT NULL,
|
|
||||||
CityID int(11) NOT NULL
|
|
||||||
) ENGINE = InnoDB
|
|
||||||
DEFAULT CHARSET = utf8mb4;
|
|
||||||
|
|
||||||
CREATE TABLE pickupdates
|
|
||||||
(
|
|
||||||
id int(11) NOT NULL,
|
|
||||||
citywastezoneid int(11) NOT NULL,
|
|
||||||
pickupdate date NOT NULL
|
|
||||||
) ENGINE = InnoDB
|
|
||||||
DEFAULT CHARSET = utf8;
|
|
||||||
|
|
||||||
CREATE TABLE `user`
|
|
||||||
(
|
|
||||||
id int(11) NOT NULL,
|
|
||||||
username varchar(150) NOT NULL,
|
|
||||||
firstName varchar(32) NOT NULL,
|
|
||||||
secondName varchar(32) NOT NULL,
|
|
||||||
password varchar(32) NOT NULL,
|
|
||||||
permission int(11) NOT NULL DEFAULT '0',
|
|
||||||
email varchar(64) NOT NULL,
|
|
||||||
logindate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
||||||
) ENGINE = InnoDB
|
|
||||||
DEFAULT CHARSET = utf8;
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE cities
|
|
||||||
ADD PRIMARY KEY (id);
|
|
||||||
|
|
||||||
ALTER TABLE devices
|
|
||||||
ADD PRIMARY KEY (DeviceID);
|
|
||||||
|
|
||||||
ALTER TABLE pickupdates
|
|
||||||
ADD PRIMARY KEY (id),
|
|
||||||
ADD KEY citywastezoneid (citywastezoneid);
|
|
||||||
|
|
||||||
ALTER TABLE `user`
|
|
||||||
ADD PRIMARY KEY (id);
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE cities
|
|
||||||
MODIFY id int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
AUTO_INCREMENT = 143;
|
|
||||||
ALTER TABLE pickupdates
|
|
||||||
MODIFY id int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
AUTO_INCREMENT = 67;
|
|
||||||
ALTER TABLE `user`
|
|
||||||
MODIFY id int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
AUTO_INCREMENT = 17;
|
|
||||||
|
|
||||||
ALTER TABLE pickupdates
|
|
||||||
ADD CONSTRAINT pickupdates_ibfk_1 FOREIGN KEY (citywastezoneid) REFERENCES cities (id);
|
|
||||||
|
|
||||||
/*!40101 SET CHARACTER_SET_CLIENT = @OLD_CHARACTER_SET_CLIENT */;
|
|
||||||
/*!40101 SET CHARACTER_SET_RESULTS = @OLD_CHARACTER_SET_RESULTS */;
|
|
||||||
/*!40101 SET COLLATION_CONNECTION = @OLD_COLLATION_CONNECTION */;
|
|
||||||
@@ -118,5 +118,7 @@
|
|||||||
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||||
<!-- AdminLTE App -->
|
<!-- AdminLTE App -->
|
||||||
<script src="lib/AdminLTE/dist/js/adminlte.min.js"></script>
|
<script src="lib/AdminLTE/dist/js/adminlte.min.js"></script>
|
||||||
|
<!-- AdminLTE for demo purposes -->
|
||||||
|
<script src="lib/AdminLTE/dist/js/demo.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -6,27 +6,38 @@
|
|||||||
<title>WasteInformation Server</title>
|
<title>WasteInformation Server</title>
|
||||||
<!-- Tell the browser to be responsive to screen width -->
|
<!-- Tell the browser to be responsive to screen width -->
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
|
||||||
<!-- AdminLTE Libs -->
|
|
||||||
<!-- Font Awesome -->
|
<!-- Font Awesome -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
||||||
<!-- Ionicons -->
|
<!-- Ionicons -->
|
||||||
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
||||||
|
<!-- Tempusdominus Bbootstrap 4 -->
|
||||||
<!-- !Theme style -->
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css">
|
||||||
|
<!-- iCheck -->
|
||||||
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/icheck-bootstrap/icheck-bootstrap.min.css">
|
||||||
|
<!-- JQVMap -->
|
||||||
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/jqvmap/jqvmap.min.css">
|
||||||
|
<!-- Theme style -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
||||||
<!-- !overlayScrollbars -->
|
<!-- overlayScrollbars -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
||||||
|
<!-- Daterange picker -->
|
||||||
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/daterangepicker/daterangepicker.css">
|
||||||
|
<!-- summernote -->
|
||||||
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/summernote/summernote-bs4.css">
|
||||||
<!-- Google Font: Source Sans Pro -->
|
<!-- Google Font: Source Sans Pro -->
|
||||||
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
<!-- Bootstrap Date-Picker Plugin -->
|
||||||
|
|
||||||
<!-- custom stylesheets -->
|
<link rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
||||||
|
|
||||||
|
<!-- <link rel="stylesheet" type="text/css" href="css/user.css">-->
|
||||||
<link rel="stylesheet" type="text/css" href="css/general.css">
|
<link rel="stylesheet" type="text/css" href="css/general.css">
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body class="hold-transition sidebar-mini layout-fixed">
|
<body class="hold-transition sidebar-mini layout-fixed">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
@@ -42,21 +53,17 @@
|
|||||||
|
|
||||||
<!-- Sidebar -->
|
<!-- Sidebar -->
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<!-- Sidebar User -->
|
<!-- Sidebar user panel (optional) -->
|
||||||
<nav class="user-panel mt-3 pb-3 mb-3">
|
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
|
||||||
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
|
<div class="image">
|
||||||
data-accordion="false">
|
<!-- <img src="lib/AdminLTE/dist/img/user2-160x160.jpg" class="img-circle elevation-2" alt="User Image"> -->
|
||||||
|
<i class="nav-icon fas fa-user img-circle elevation-2" style="color:white"></i>
|
||||||
<li class="nav-item">
|
</div>
|
||||||
<a href="user.html" class="nav-link">
|
<!-- <i class="nav-icon fas fa-tachometer-alt"></i> -->
|
||||||
<i class="nav-icon fas fa-user"></i>
|
<div class="info">
|
||||||
<p id="userlabel">
|
<a href="user.html" class="d-block" id="userlabel">Username to set!</a>
|
||||||
Username to set!
|
</div>
|
||||||
</p>
|
</div>
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<!-- Sidebar Menu -->
|
<!-- Sidebar Menu -->
|
||||||
<nav class="mt-2">
|
<nav class="mt-2">
|
||||||
@@ -64,36 +71,14 @@
|
|||||||
data-accordion="false">
|
data-accordion="false">
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="dashboard.html" class="nav-link">
|
<a href="#todo" class="nav-link">
|
||||||
<i class="nav-icon fas fa-columns"></i>
|
<i class="nav-icon fas fa-cog"></i>
|
||||||
<p>
|
<p>
|
||||||
Dashboard
|
Settings
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li id="devicepanel" class="nav-item">
|
|
||||||
<a href="device.html" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-desktop"></i>
|
|
||||||
<p>
|
|
||||||
Devices
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li id="adminpanel" class="nav-item hideit">
|
|
||||||
<a href="adminpanel.html" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-plus-circle"></i>
|
|
||||||
<p>
|
|
||||||
Admin panel
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="index.html" class="nav-link" id="logoutbtn">
|
<a href="index.html" class="nav-link" id="logoutbtn">
|
||||||
<i class="nav-icon fas fa-sign-out-alt"></i>
|
<i class="nav-icon fas fa-sign-out-alt"></i>
|
||||||
@@ -103,7 +88,23 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li class="nav-item">
|
||||||
|
<a href="#todo" class="nav-link">
|
||||||
|
<i class="nav-icon fas fa-plus-circle"></i>
|
||||||
|
<p>
|
||||||
|
New Entry
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li id="adminpanel" class="nav-item hideit">
|
||||||
|
<a href="adminpanel.html" class="nav-link">
|
||||||
|
<i class="nav-icon fas fa-plus-circle"></i>
|
||||||
|
<p>
|
||||||
|
Admin panel
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
<!-- /.sidebar-menu -->
|
<!-- /.sidebar-menu -->
|
||||||
@@ -118,12 +119,12 @@
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<h1 class="m-0 text-dark sandwich"><i class="fas fa-bars"></i>  Admin Area</h1>
|
<h1 class="m-0 text-dark">Dashboard</h1>
|
||||||
</div><!-- /.col -->
|
</div><!-- /.col -->
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<ol class="breadcrumb float-sm-right">
|
<ol class="breadcrumb float-sm-right">
|
||||||
<li class="breadcrumb-item"><a href="dashboard.html">Home</a></li>
|
<li class="breadcrumb-item"><a href="dashboard.html">Home</a></li>
|
||||||
<li class="breadcrumb-item active">Admin</li>
|
<li class="breadcrumb-item active">Users</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div><!-- /.col -->
|
</div><!-- /.col -->
|
||||||
</div><!-- /.row -->
|
</div><!-- /.row -->
|
||||||
@@ -225,7 +226,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- ./wrapper -->
|
<!-- ./wrapper -->
|
||||||
|
|
||||||
<!-- AdminLTE Libs -->
|
|
||||||
<!-- jQuery -->
|
<!-- jQuery -->
|
||||||
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
||||||
<!-- jQuery UI 1.11.4 -->
|
<!-- jQuery UI 1.11.4 -->
|
||||||
@@ -236,18 +236,42 @@
|
|||||||
</script>
|
</script>
|
||||||
<!-- Bootstrap 4 -->
|
<!-- Bootstrap 4 -->
|
||||||
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||||
|
<!-- ChartJS -->
|
||||||
|
<script src="lib/AdminLTE/plugins/chart.js/Chart.min.js"></script>
|
||||||
|
<!-- Sparkline -->
|
||||||
|
<script src="lib/AdminLTE/plugins/sparklines/sparkline.js"></script>
|
||||||
|
<!-- JQVMap -->
|
||||||
|
<script src="lib/AdminLTE/plugins/jqvmap/jquery.vmap.min.js"></script>
|
||||||
|
<script src="lib/AdminLTE/plugins/jqvmap/maps/jquery.vmap.usa.js"></script>
|
||||||
|
<!-- jQuery Knob Chart -->
|
||||||
|
<script src="lib/AdminLTE/plugins/jquery-knob/jquery.knob.min.js"></script>
|
||||||
|
<!-- daterangepicker -->
|
||||||
|
<script src="lib/AdminLTE/plugins/moment/moment.min.js"></script>
|
||||||
|
<script src="lib/AdminLTE/plugins/daterangepicker/daterangepicker.js"></script>
|
||||||
|
<!-- Tempusdominus Bootstrap 4 -->
|
||||||
|
<script src="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js"></script>
|
||||||
|
<!-- Summernote -->
|
||||||
|
<script src="lib/AdminLTE/plugins/summernote/summernote-bs4.min.js"></script>
|
||||||
|
<!-- overlayScrollbars -->
|
||||||
|
<script src="lib/AdminLTE/plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js"></script>
|
||||||
<!-- AdminLTE App -->
|
<!-- AdminLTE App -->
|
||||||
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
||||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
<!-- AdminLTE dashboard demo (This is only for demo purposes) -->
|
||||||
|
<script src="lib/AdminLTE/dist/js/pages/dashboard.js"></script>
|
||||||
|
<!-- AdminLTE for demo purposes -->
|
||||||
|
<script src="lib/AdminLTE/dist/js/demo.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript"
|
||||||
|
src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="js/adminpanel.js"></script>
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
||||||
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
||||||
|
|
||||||
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
||||||
|
|
||||||
<!-- custom js -->
|
<script src="js/userManager.js"></script>
|
||||||
<script src="js/adminpanel.js"></script>
|
|
||||||
<script src="js/general.js"></script>
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,7 +1,3 @@
|
|||||||
.hideit{
|
.hideit{
|
||||||
display:none;
|
display:none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sandwich:hover{
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
html,body{
|
||||||
|
background-image: url('../rsc/login2.jpg');
|
||||||
|
background-size: cover;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
height: 100%;
|
||||||
|
font-family: 'Numans', sans-serif;
|
||||||
|
}
|
||||||
@@ -6,29 +6,40 @@
|
|||||||
<title>WasteInformation Server</title>
|
<title>WasteInformation Server</title>
|
||||||
<!-- Tell the browser to be responsive to screen width -->
|
<!-- Tell the browser to be responsive to screen width -->
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
<!-- AdminLTE Libs -->
|
|
||||||
<!-- Font Awesome -->
|
<!-- Font Awesome -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
||||||
<!-- Ionicons -->
|
<!-- Ionicons -->
|
||||||
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
||||||
|
<!-- Tempusdominus Bbootstrap 4 -->
|
||||||
<!-- !Theme style -->
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css">
|
||||||
|
<!-- iCheck -->
|
||||||
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/icheck-bootstrap/icheck-bootstrap.min.css">
|
||||||
|
<!-- JQVMap -->
|
||||||
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/jqvmap/jqvmap.min.css">
|
||||||
|
<!-- Theme style -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
||||||
<!-- !overlayScrollbars -->
|
<!-- overlayScrollbars -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
||||||
|
<!-- Daterange picker -->
|
||||||
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/daterangepicker/daterangepicker.css">
|
||||||
|
<!-- summernote -->
|
||||||
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/summernote/summernote-bs4.css">
|
||||||
<!-- Google Font: Source Sans Pro -->
|
<!-- Google Font: Source Sans Pro -->
|
||||||
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
<!-- Bootstrap Date-Picker Plugin -->
|
||||||
|
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
||||||
|
|
||||||
<!-- custom stylesheets -->
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/dashboard.css">
|
<link rel="stylesheet" type="text/css" href="css/dashboard.css">
|
||||||
<link rel="stylesheet" type="text/css" href="css/general.css">
|
<link rel="stylesheet" type="text/css" href="css/general.css">
|
||||||
|
|
||||||
<link rel="icon" type="image/png" href="/favicon.png">
|
<link rel="icon" type="image/png" href="/favicon.png">
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body class="hold-transition sidebar-mini layout-fixed">
|
<body class="hold-transition sidebar-mini layout-fixed">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
@@ -44,21 +55,17 @@
|
|||||||
|
|
||||||
<!-- Sidebar -->
|
<!-- Sidebar -->
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<!-- Sidebar User -->
|
<!-- Sidebar user panel (optional) -->
|
||||||
<nav class="user-panel mt-3 pb-3 mb-3">
|
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
|
||||||
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
|
<div class="image">
|
||||||
data-accordion="false">
|
<!-- <img src="lib/AdminLTE/dist/img/user2-160x160.jpg" class="img-circle elevation-2" alt="User Image"> -->
|
||||||
|
<i class="nav-icon fas fa-user img-circle elevation-2" style="color:white"></i>
|
||||||
<li class="nav-item">
|
</div>
|
||||||
<a href="user.html" class="nav-link">
|
<!-- <i class="nav-icon fas fa-tachometer-alt"></i> -->
|
||||||
<i class="nav-icon fas fa-user"></i>
|
<div class="info">
|
||||||
<p id="userlabel">
|
<a href="user.html" class="d-block" id="userlabel">Username to set!</a>
|
||||||
Username to set!
|
</div>
|
||||||
</p>
|
</div>
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<!-- Sidebar Menu -->
|
<!-- Sidebar Menu -->
|
||||||
<nav class="mt-2">
|
<nav class="mt-2">
|
||||||
@@ -66,25 +73,23 @@
|
|||||||
data-accordion="false">
|
data-accordion="false">
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="dashboard.html" class="nav-link">
|
<a href="#todo" class="nav-link">
|
||||||
<i class="nav-icon fas fa-columns"></i>
|
<i class="nav-icon fas fa-cog"></i>
|
||||||
<p>
|
<p>
|
||||||
Dashboard
|
Settings
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li class="nav-item">
|
||||||
<li id="devicepanel" class="nav-item">
|
<a href="index.html" class="nav-link" id="logoutbtn">
|
||||||
<a href="device.html" class="nav-link">
|
<i class="nav-icon fas fa-sign-out-alt"></i>
|
||||||
<i class="nav-icon fas fa-desktop"></i>
|
|
||||||
<p>
|
<p>
|
||||||
Devices
|
Logout
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li id="adminpanel" class="nav-item hideit">
|
<li id="adminpanel" class="nav-item hideit">
|
||||||
<a href="adminpanel.html" class="nav-link">
|
<a href="adminpanel.html" class="nav-link">
|
||||||
<i class="nav-icon fas fa-plus-circle"></i>
|
<i class="nav-icon fas fa-plus-circle"></i>
|
||||||
@@ -94,12 +99,11 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li id="devicepanel" class="nav-item">
|
||||||
<li class="nav-item">
|
<a href="device.html" class="nav-link">
|
||||||
<a href="index.html" class="nav-link" id="logoutbtn">
|
<i class="nav-icon fas fa-plus-circle"></i>
|
||||||
<i class="nav-icon fas fa-sign-out-alt"></i>
|
|
||||||
<p>
|
<p>
|
||||||
Logout
|
Devices
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -117,7 +121,7 @@
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<h1 class="m-0 text-dark sandwich"><i class="fas fa-bars"></i>  Dashboard</h1>
|
<h1 class="m-0 text-dark">Dashboard</h1>
|
||||||
</div><!-- /.col -->
|
</div><!-- /.col -->
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<ol class="breadcrumb float-sm-right">
|
<ol class="breadcrumb float-sm-right">
|
||||||
@@ -146,6 +150,7 @@
|
|||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="ion ion-bag"></i>
|
<i class="ion ion-bag"></i>
|
||||||
</div>
|
</div>
|
||||||
|
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- ./col -->
|
<!-- ./col -->
|
||||||
@@ -160,6 +165,7 @@
|
|||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="ion ion-android-globe" style="color: lightgrey"></i>
|
<i class="ion ion-android-globe" style="color: lightgrey"></i>
|
||||||
</div>
|
</div>
|
||||||
|
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- ./col -->
|
<!-- ./col -->
|
||||||
@@ -174,6 +180,7 @@
|
|||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="ion ion-calendar"></i>
|
<i class="ion ion-calendar"></i>
|
||||||
</div>
|
</div>
|
||||||
|
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- ./col -->
|
<!-- ./col -->
|
||||||
@@ -188,6 +195,7 @@
|
|||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="ion ion-android-checkmark-circle"></i>
|
<i class="ion ion-android-checkmark-circle"></i>
|
||||||
</div>
|
</div>
|
||||||
|
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- ./col -->
|
<!-- ./col -->
|
||||||
@@ -209,23 +217,22 @@
|
|||||||
<table id="table-pickupdates" class="table table-bordered table-hover">
|
<table id="table-pickupdates" class="table table-bordered table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th><i class="fas fa-city"></i>City</th>
|
<th>City</th>
|
||||||
<th><i class="fas fa-search-location"></i>Zone</th>
|
<th>Zone</th>
|
||||||
<th><i class="fas fa-recycle"></i>Waste Type</th>
|
<th>Waste Type</th>
|
||||||
<th><i class="fas fa-calendar-alt"></i>Date</th>
|
<th>Date</th>
|
||||||
<th><i class="fas fa-trash-alt"></i></th>
|
<th>X</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="picupdates-tablebody">
|
<tbody id="picupdates-tablebody">
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
<th><i class="fas fa-city"></i>City</th>
|
<th>City</th>
|
||||||
<th><i class="fas fa-search-location"></i>Zone</th>
|
<th>Zone</th>
|
||||||
<th><i class="fas fa-recycle"></i>Waste Type</th>
|
<th>Waste Type</th>
|
||||||
<th><i class="fas fa-calendar-alt"></i>Date</th>
|
<th>Date</th>
|
||||||
<th><i class="fas fa-trash-alt"></i>
|
<th>X</th>
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
@@ -315,7 +322,6 @@
|
|||||||
data-toggle="dropdown">
|
data-toggle="dropdown">
|
||||||
Select waste type
|
Select waste type
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<div id="dropdown-type-drops" class="dropdown-menu">
|
<div id="dropdown-type-drops" class="dropdown-menu">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -347,28 +353,20 @@
|
|||||||
<table id="example2" class="table table-bordered table-hover">
|
<table id="example2" class="table table-bordered table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th>City</th>
|
||||||
<i class="fas fa-city"></i>
|
<th>Zone</th>
|
||||||
City
|
<th>Waste Type</th>
|
||||||
</th>
|
<th>X</th>
|
||||||
<th><i class="fas fa-search-location"></i>
|
|
||||||
Zone
|
|
||||||
</th>
|
|
||||||
<th><i class="fas fa-recycle"></i>
|
|
||||||
Waste Type
|
|
||||||
</th>
|
|
||||||
<th><i class="fas fa-trash-alt"></i>
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="location-table-data">
|
<tbody id="location-table-data">
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
<th><i class="fas fa-city"></i>City</th>
|
<th>City</th>
|
||||||
<th><i class="fas fa-search-location"></i>Zone</th>
|
<th>Zone</th>
|
||||||
<th><i class="fas fa-recycle"></i>Waste Type</th>
|
<th>Waste Type</th>
|
||||||
<th><i class="fas fa-trash-alt"></i></th>
|
<th>X</th>
|
||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
@@ -404,7 +402,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- ./wrapper -->
|
<!-- ./wrapper -->
|
||||||
|
|
||||||
<!-- AdminLTE Libs -->
|
|
||||||
<!-- jQuery -->
|
<!-- jQuery -->
|
||||||
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
||||||
<!-- jQuery UI 1.11.4 -->
|
<!-- jQuery UI 1.11.4 -->
|
||||||
@@ -415,18 +412,44 @@
|
|||||||
</script>
|
</script>
|
||||||
<!-- Bootstrap 4 -->
|
<!-- Bootstrap 4 -->
|
||||||
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||||
|
<!-- ChartJS -->
|
||||||
|
<script src="lib/AdminLTE/plugins/chart.js/Chart.min.js"></script>
|
||||||
|
<!-- Sparkline -->
|
||||||
|
<script src="lib/AdminLTE/plugins/sparklines/sparkline.js"></script>
|
||||||
|
<!-- JQVMap -->
|
||||||
|
<script src="lib/AdminLTE/plugins/jqvmap/jquery.vmap.min.js"></script>
|
||||||
|
<script src="lib/AdminLTE/plugins/jqvmap/maps/jquery.vmap.usa.js"></script>
|
||||||
|
<!-- jQuery Knob Chart -->
|
||||||
|
<script src="lib/AdminLTE/plugins/jquery-knob/jquery.knob.min.js"></script>
|
||||||
|
<!-- daterangepicker -->
|
||||||
|
<script src="lib/AdminLTE/plugins/moment/moment.min.js"></script>
|
||||||
|
<script src="lib/AdminLTE/plugins/daterangepicker/daterangepicker.js"></script>
|
||||||
|
<!-- Tempusdominus Bootstrap 4 -->
|
||||||
|
<script src="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js"></script>
|
||||||
|
<!-- Summernote -->
|
||||||
|
<script src="lib/AdminLTE/plugins/summernote/summernote-bs4.min.js"></script>
|
||||||
|
<!-- overlayScrollbars -->
|
||||||
|
<script src="lib/AdminLTE/plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js"></script>
|
||||||
<!-- AdminLTE App -->
|
<!-- AdminLTE App -->
|
||||||
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
||||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
<!-- AdminLTE dashboard demo (This is only for demo purposes) -->
|
||||||
|
<script src="lib/AdminLTE/dist/js/pages/dashboard.js"></script>
|
||||||
|
<!-- AdminLTE for demo purposes -->
|
||||||
|
<script src="lib/AdminLTE/dist/js/demo.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript"
|
||||||
|
src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
||||||
|
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
||||||
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
||||||
|
|
||||||
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
||||||
|
|
||||||
<!-- custom js -->
|
<!-- OWN -->
|
||||||
<script type="text/javascript" src="js/dashboard.js"></script>
|
|
||||||
<script src="js/general.js"></script>
|
<script type="text/javascript" src="js/lib/kotlin.js"></script>
|
||||||
|
<script type="text/javascript" src="js/WasteInformationServer.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -6,27 +6,38 @@
|
|||||||
<title>WasteInformation Server</title>
|
<title>WasteInformation Server</title>
|
||||||
<!-- Tell the browser to be responsive to screen width -->
|
<!-- Tell the browser to be responsive to screen width -->
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
|
||||||
<!-- AdminLTE Libs -->
|
|
||||||
<!-- Font Awesome -->
|
<!-- Font Awesome -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
||||||
<!-- Ionicons -->
|
<!-- Ionicons -->
|
||||||
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
||||||
|
<!-- Tempusdominus Bbootstrap 4 -->
|
||||||
<!-- !Theme style -->
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css">
|
||||||
|
<!-- iCheck -->
|
||||||
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/icheck-bootstrap/icheck-bootstrap.min.css">
|
||||||
|
<!-- JQVMap -->
|
||||||
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/jqvmap/jqvmap.min.css">
|
||||||
|
<!-- Theme style -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
||||||
<!-- !overlayScrollbars -->
|
<!-- overlayScrollbars -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
||||||
|
<!-- Daterange picker -->
|
||||||
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/daterangepicker/daterangepicker.css">
|
||||||
|
<!-- summernote -->
|
||||||
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/summernote/summernote-bs4.css">
|
||||||
<!-- Google Font: Source Sans Pro -->
|
<!-- Google Font: Source Sans Pro -->
|
||||||
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
<!-- Bootstrap Date-Picker Plugin -->
|
||||||
|
|
||||||
<!-- custom stylesheets -->
|
<link rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
||||||
|
|
||||||
|
<!-- <link rel="stylesheet" type="text/css" href="css/user.css">-->
|
||||||
<link rel="stylesheet" type="text/css" href="css/general.css">
|
<link rel="stylesheet" type="text/css" href="css/general.css">
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body class="hold-transition sidebar-mini layout-fixed">
|
<body class="hold-transition sidebar-mini layout-fixed">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
@@ -40,24 +51,19 @@
|
|||||||
<span class="brand-text font-weight-light">Waste Control</span>
|
<span class="brand-text font-weight-light">Waste Control</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
||||||
<!-- Sidebar -->
|
<!-- Sidebar -->
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<!-- Sidebar User -->
|
<!-- Sidebar user panel (optional) -->
|
||||||
<nav class="user-panel mt-3 pb-3 mb-3">
|
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
|
||||||
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
|
<div class="image">
|
||||||
data-accordion="false">
|
<!-- <img src="lib/AdminLTE/dist/img/user2-160x160.jpg" class="img-circle elevation-2" alt="User Image"> -->
|
||||||
|
<i class="nav-icon fas fa-user img-circle elevation-2" style="color:white"></i>
|
||||||
<li class="nav-item">
|
</div>
|
||||||
<a href="user.html" class="nav-link">
|
<!-- <i class="nav-icon fas fa-tachometer-alt"></i> -->
|
||||||
<i class="nav-icon fas fa-user"></i>
|
<div class="info">
|
||||||
<p id="userlabel">
|
<a href="user.html" class="d-block" id="userlabel">Username to set!</a>
|
||||||
Username to set!
|
</div>
|
||||||
</p>
|
</div>
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<!-- Sidebar Menu -->
|
<!-- Sidebar Menu -->
|
||||||
<nav class="mt-2">
|
<nav class="mt-2">
|
||||||
@@ -65,20 +71,19 @@
|
|||||||
data-accordion="false">
|
data-accordion="false">
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="dashboard.html" class="nav-link">
|
<a href="#todo" class="nav-link">
|
||||||
<i class="nav-icon fas fa-columns"></i>
|
<i class="nav-icon fas fa-cog"></i>
|
||||||
<p>
|
<p>
|
||||||
Dashboard
|
Settings
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li class="nav-item">
|
||||||
<li id="devicepanel" class="nav-item">
|
<a href="index.html" class="nav-link" id="logoutbtn">
|
||||||
<a href="device.html" class="nav-link">
|
<i class="nav-icon fas fa-sign-out-alt"></i>
|
||||||
<i class="nav-icon fas fa-desktop"></i>
|
|
||||||
<p>
|
<p>
|
||||||
Devices
|
Logout
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -92,16 +97,14 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li id="devicepanel" class="nav-item">
|
||||||
<li class="nav-item">
|
<a href="device.html" class="nav-link">
|
||||||
<a href="index.html" class="nav-link" id="logoutbtn">
|
<i class="nav-icon fas fa-plus-circle"></i>
|
||||||
<i class="nav-icon fas fa-sign-out-alt"></i>
|
|
||||||
<p>
|
<p>
|
||||||
Logout
|
Devices
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
<!-- /.sidebar-menu -->
|
<!-- /.sidebar-menu -->
|
||||||
@@ -116,12 +119,12 @@
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<h1 class="m-0 text-dark sandwich"><i class="fas fa-bars"></i>  Devices</h1>
|
<h1 class="m-0 text-dark">Dashboard</h1>
|
||||||
</div><!-- /.col -->
|
</div><!-- /.col -->
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<ol class="breadcrumb float-sm-right">
|
<ol class="breadcrumb float-sm-right">
|
||||||
<li class="breadcrumb-item"><a href="dashboard.html">Home</a></li>
|
<li class="breadcrumb-item"><a href="dashboard.html">Home</a></li>
|
||||||
<li class="breadcrumb-item active">Devices</li>
|
<li class="breadcrumb-item active">Users</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div><!-- /.col -->
|
</div><!-- /.col -->
|
||||||
</div><!-- /.row -->
|
</div><!-- /.row -->
|
||||||
@@ -138,13 +141,14 @@
|
|||||||
<!-- small box -->
|
<!-- small box -->
|
||||||
<div class="small-box bg-info">
|
<div class="small-box bg-info">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 id="devicenr-label">-1</h3>
|
<h3>TODO</h3>
|
||||||
|
|
||||||
<p>Devices</p>
|
<p>Todo</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="ion ion-bag"></i>
|
<i class="ion ion-bag"></i>
|
||||||
</div>
|
</div>
|
||||||
|
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- ./col -->
|
<!-- ./col -->
|
||||||
@@ -152,13 +156,14 @@
|
|||||||
<!-- small box -->
|
<!-- small box -->
|
||||||
<div class="small-box bg-success">
|
<div class="small-box bg-success">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 id="unconfigured-devices-label">-1</h3>
|
<h3>TODO</h3>
|
||||||
|
|
||||||
<p>Not Configured Devices</p>
|
<p>Devices</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="ion ion-stats-bars"></i>
|
<i class="ion ion-stats-bars"></i>
|
||||||
</div>
|
</div>
|
||||||
|
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- ./col -->
|
<!-- ./col -->
|
||||||
@@ -181,22 +186,22 @@
|
|||||||
<table id="table-devices" class="table table-bordered table-hover">
|
<table id="table-devices" class="table table-bordered table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th><i class="fas fa-id-card"></i> Device ID</th>
|
<th>Device ID</th>
|
||||||
<th><i class="fas fa-signature"></i> Devicename</th>
|
<th>Devicename</th>
|
||||||
<th><i class="fas fa-search-location"></i> Devicelocation</th>
|
<th>Devicelocation</th>
|
||||||
<th><i class="fas fa-recycle"></i> WasteType</th>
|
<th>WasteType</th>
|
||||||
<th><i class="fas fa-edit"></i> Action</th>
|
<th>Action</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="devices-tablebody">
|
<tbody id="devices-tablebody">
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
<th><i class="fas fa-id-card"></i> Device ID</th>
|
<th>Device ID</th>
|
||||||
<th><i class="fas fa-signature"></i> Devicename</th>
|
<th>Devicename</th>
|
||||||
<th><i class="fas fa-search-location"></i> Devicelocation</th>
|
<th>Devicelocation</th>
|
||||||
<th><i class="fas fa-recycle"></i> WasteType</th>
|
<th>WasteType</th>
|
||||||
<th><i class="fas fa-edit"></i> Action</th>
|
<th>Action</th>
|
||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
@@ -238,7 +243,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- ./wrapper -->
|
<!-- ./wrapper -->
|
||||||
|
|
||||||
<!-- AdminLTE Libs -->
|
|
||||||
<!-- jQuery -->
|
<!-- jQuery -->
|
||||||
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
||||||
<!-- jQuery UI 1.11.4 -->
|
<!-- jQuery UI 1.11.4 -->
|
||||||
@@ -249,17 +253,42 @@
|
|||||||
</script>
|
</script>
|
||||||
<!-- Bootstrap 4 -->
|
<!-- Bootstrap 4 -->
|
||||||
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||||
|
<!-- ChartJS -->
|
||||||
|
<script src="lib/AdminLTE/plugins/chart.js/Chart.min.js"></script>
|
||||||
|
<!-- Sparkline -->
|
||||||
|
<script src="lib/AdminLTE/plugins/sparklines/sparkline.js"></script>
|
||||||
|
<!-- JQVMap -->
|
||||||
|
<script src="lib/AdminLTE/plugins/jqvmap/jquery.vmap.min.js"></script>
|
||||||
|
<script src="lib/AdminLTE/plugins/jqvmap/maps/jquery.vmap.usa.js"></script>
|
||||||
|
<!-- jQuery Knob Chart -->
|
||||||
|
<script src="lib/AdminLTE/plugins/jquery-knob/jquery.knob.min.js"></script>
|
||||||
|
<!-- daterangepicker -->
|
||||||
|
<script src="lib/AdminLTE/plugins/moment/moment.min.js"></script>
|
||||||
|
<script src="lib/AdminLTE/plugins/daterangepicker/daterangepicker.js"></script>
|
||||||
|
<!-- Tempusdominus Bootstrap 4 -->
|
||||||
|
<script src="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js"></script>
|
||||||
|
<!-- Summernote -->
|
||||||
|
<script src="lib/AdminLTE/plugins/summernote/summernote-bs4.min.js"></script>
|
||||||
|
<!-- overlayScrollbars -->
|
||||||
|
<script src="lib/AdminLTE/plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js"></script>
|
||||||
<!-- AdminLTE App -->
|
<!-- AdminLTE App -->
|
||||||
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
||||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
<!-- AdminLTE dashboard demo (This is only for demo purposes) -->
|
||||||
|
<script src="lib/AdminLTE/dist/js/pages/dashboard.js"></script>
|
||||||
|
<!-- AdminLTE for demo purposes -->
|
||||||
|
<script src="lib/AdminLTE/dist/js/demo.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript"
|
||||||
|
src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
||||||
|
|
||||||
|
<!--<script type="text/javascript" src="js/user.js"></script>-->
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
||||||
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
||||||
|
|
||||||
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
||||||
|
|
||||||
<!-- custom js -->
|
<script src="js/userManager.js"></script>
|
||||||
<script src="js/general.js"></script>
|
|
||||||
<script src="js/device.js"></script>
|
<script src="js/device.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -3,18 +3,19 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Login Page</title>
|
<title>Login Page</title>
|
||||||
|
<!--Made with love by Mutiullah Samim -->
|
||||||
|
|
||||||
<!-- Latest compiled and minified CSS -->
|
<!-- Latest compiled and minified CSS -->
|
||||||
<link rel="stylesheet" href="lib/bootstrap.min.css">
|
<link rel="stylesheet" href="lib/bootstrap.min.css">
|
||||||
|
|
||||||
<!-- jQuery library -->
|
<!-- jQuery library -->
|
||||||
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
<script src="lib/jquery.min.js"></script>
|
||||||
|
|
||||||
<!-- Popper JS -->
|
<!-- Popper JS -->
|
||||||
<script src="lib/popper.min.js"></script>
|
<script src="lib/popper.min.js"></script>
|
||||||
|
|
||||||
<!-- Latest compiled JavaScript -->
|
<!-- Latest compiled JavaScript -->
|
||||||
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.min.js"></script>
|
<script src="lib/bootstrap.min.js"></script>
|
||||||
|
|
||||||
<!--Fontawesome CDN-->
|
<!--Fontawesome CDN-->
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css"
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css"
|
||||||
@@ -23,13 +24,15 @@
|
|||||||
<!--Custom styles-->
|
<!--Custom styles-->
|
||||||
<link rel="stylesheet" type="text/css" href="css/index.css">
|
<link rel="stylesheet" type="text/css" href="css/index.css">
|
||||||
|
|
||||||
<script type="text/javascript" src="js/index.js"></script>
|
|
||||||
|
|
||||||
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
||||||
|
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
|
|
||||||
<link rel="icon" type="image/png" href="/favicon.png">
|
<link rel="icon" type="image/png" href="/favicon.png">
|
||||||
|
|
||||||
|
<script type="text/javascript" src="js/lib/kotlin.js"></script>
|
||||||
|
<script type="text/javascript" src="js/WasteInformationServer.js"></script>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
$(document).ready(function () {
|
|
||||||
$('#loginbtn').click(function (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
console.log("clicked login button");
|
|
||||||
const username = $("#userfield")[0].value;
|
|
||||||
const password = $("#passfield")[0].value;
|
|
||||||
|
|
||||||
$.post('/senddata/loginget', 'username=' + username + '&password=' + password, function (data) {
|
|
||||||
console.log(data);
|
|
||||||
|
|
||||||
if (data.accept == true) {
|
|
||||||
console.log("successfully logged in!");
|
|
||||||
window.location = 'dashboard.html';
|
|
||||||
} else {
|
|
||||||
if (data.status == "nodbconn") {
|
|
||||||
Swal.fire({
|
|
||||||
icon: "error",
|
|
||||||
title: 'No connection to Database',
|
|
||||||
html: 'Setup DB in config file!.',
|
|
||||||
});
|
|
||||||
} else if (data.status == "conferror") {
|
|
||||||
Swal.fire({
|
|
||||||
icon: "error",
|
|
||||||
title: 'Not configured correctly',
|
|
||||||
html: 'Please edit settings.prop and restart the server!',
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
Swal.fire({
|
|
||||||
icon: "error",
|
|
||||||
title: 'Wrong login data',
|
|
||||||
html: 'Maybe a typo in your password?',
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, 'json');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
$(document).ready(function () {
|
|
||||||
$('#loginbtn').click(function (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
console.log("clicked login button");
|
|
||||||
var username = $("#usernamefield")[0].value;
|
|
||||||
var firstname = $("#firstnamefield")[0].value;
|
|
||||||
var lastname = $("#lastnamefield")[0].value;
|
|
||||||
var email = $("#emailfield")[0].value;
|
|
||||||
var password = $("#passfield")[0].value;
|
|
||||||
var replypassword = $("#replpassfield")[0].value;
|
|
||||||
|
|
||||||
if (password != replypassword) {
|
|
||||||
console.log("passwords doesnt match");
|
|
||||||
} else {
|
|
||||||
$.post('/senddata/registerpost',
|
|
||||||
'username=' + username +
|
|
||||||
'&firstname=' + firstname +
|
|
||||||
'&lastname=' + lastname +
|
|
||||||
'&email=' + email +
|
|
||||||
'&password=' + password, function (data) {
|
|
||||||
|
|
||||||
console.log(data);
|
|
||||||
|
|
||||||
if (data.accept == true) {
|
|
||||||
console.log("successfully registered!");
|
|
||||||
$("#successbar").show();
|
|
||||||
|
|
||||||
setTimeout(function () {
|
|
||||||
window.location = 'index.html';
|
|
||||||
}, 3000);
|
|
||||||
} else {
|
|
||||||
console.log("error!");
|
|
||||||
$("#errorbar").show();
|
|
||||||
}
|
|
||||||
}, 'json');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
File renamed without changes.
@@ -21,16 +21,6 @@ class Dashboard {
|
|||||||
|
|
||||||
//add click listeners to all buttons
|
//add click listeners to all buttons
|
||||||
this.addClickListeners();
|
this.addClickListeners();
|
||||||
|
|
||||||
// allow moveable tiles
|
|
||||||
$('.connectedSortable').sortable({
|
|
||||||
placeholder : 'sort-highlight',
|
|
||||||
connectWith : '.connectedSortable',
|
|
||||||
handle : '.card-header, .nav-tabs',
|
|
||||||
forcePlaceholderSize: true,
|
|
||||||
zIndex : 999999
|
|
||||||
})
|
|
||||||
$('.connectedSortable .card-header, .connectedSortable .nav-tabs-custom').css('cursor', 'move')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Constants */
|
/* Constants */
|
||||||
@@ -40,7 +30,6 @@ class Dashboard {
|
|||||||
/* Btn Action Listeners */
|
/* Btn Action Listeners */
|
||||||
|
|
||||||
addClickListeners() {
|
addClickListeners() {
|
||||||
const _this = this;
|
|
||||||
//btn listeners
|
//btn listeners
|
||||||
$('#logoutbtn').click(function () {
|
$('#logoutbtn').click(function () {
|
||||||
$.post('/senddata/checkloginstate', 'action=logout', function (data) {
|
$.post('/senddata/checkloginstate', 'action=logout', function (data) {
|
||||||
@@ -63,7 +52,7 @@ class Dashboard {
|
|||||||
console.log(data);
|
console.log(data);
|
||||||
if (data.status == "inserted") {
|
if (data.status == "inserted") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "success",
|
type: "success",
|
||||||
title: 'Successfully created city!',
|
title: 'Successfully created city!',
|
||||||
html: 'This alert closes automatically.',
|
html: 'This alert closes automatically.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
@@ -71,10 +60,10 @@ class Dashboard {
|
|||||||
console.log('Popup closed. ')
|
console.log('Popup closed. ')
|
||||||
|
|
||||||
});
|
});
|
||||||
_this.reloadtable();
|
this.reloadtable();
|
||||||
} else if (data.status == "exists") {
|
} else if (data.status == "exists") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "warning",
|
type: "warning",
|
||||||
title: 'Name already exists in db',
|
title: 'Name already exists in db',
|
||||||
html: 'Close popup.',
|
html: 'Close popup.',
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
@@ -179,7 +168,7 @@ class Dashboard {
|
|||||||
$.post('/senddata/newdate', 'action=newdate&cityname=' + cityname.html() + "&zone=" + zone.html() + "&wastetype=" + wastetype.html() + "&date=" + date.val(), function (data) {
|
$.post('/senddata/newdate', 'action=newdate&cityname=' + cityname.html() + "&zone=" + zone.html() + "&wastetype=" + wastetype.html() + "&date=" + date.val(), function (data) {
|
||||||
if (data.status == "success") {
|
if (data.status == "success") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "success",
|
type: "success",
|
||||||
title: 'Successfully created Date!',
|
title: 'Successfully created Date!',
|
||||||
html: 'This alert closes automatically.',
|
html: 'This alert closes automatically.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
@@ -192,10 +181,10 @@ class Dashboard {
|
|||||||
zone.html("Select Zone");
|
zone.html("Select Zone");
|
||||||
wastetype.html("Select waste type");
|
wastetype.html("Select waste type");
|
||||||
date.val("");
|
date.val("");
|
||||||
_this.reloadDateTable();
|
reloadDateTable();
|
||||||
} else if (data.status == "citydoesntexist") {
|
} else if (data.status == "citydoesntexist") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "warning",
|
type: "warning",
|
||||||
title: 'city name doesnt exist',
|
title: 'city name doesnt exist',
|
||||||
html: 'Close popup.',
|
html: 'Close popup.',
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
@@ -244,10 +233,9 @@ class Dashboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
reloadtable() {
|
reloadtable() {
|
||||||
const _this = this;
|
|
||||||
$.post('/senddata/wastedata', 'action=getAllCities', function (data) {
|
$.post('/senddata/wastedata', 'action=getAllCities', function (data) {
|
||||||
if (_this.citytable != null) {
|
if (this.citytable != null) {
|
||||||
_this.citytable.destroy(); //delete table if already created
|
this.citytable.destroy(); //delete table if already created
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(data);
|
console.log(data);
|
||||||
@@ -269,13 +257,13 @@ class Dashboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$(".delbtn").click(function (event) {
|
$(".delbtn").click(function (event) {
|
||||||
const id = event.target.getAttribute("dataid");
|
var id = event.target.getAttribute("dataid");
|
||||||
console.log("clicked btn data " + id);
|
console.log("clicked btn data " + id);
|
||||||
$.post('/senddata/wastedata', 'action=deletecity&id=' + id, function (data) {
|
$.post('/senddata/wastedata', 'action=deletecity&id=' + id, function (data) {
|
||||||
console.log(data);
|
console.log(data);
|
||||||
if (data.status === "success") {
|
if (data.status === "success") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "success",
|
type: "success",
|
||||||
title: 'Successfully deleted city!',
|
title: 'Successfully deleted city!',
|
||||||
html: 'This alert closes automatically.',
|
html: 'This alert closes automatically.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
@@ -283,12 +271,12 @@ class Dashboard {
|
|||||||
console.log('Popup closed. ')
|
console.log('Popup closed. ')
|
||||||
|
|
||||||
});
|
});
|
||||||
_this.reloadtable();
|
reloadtable();
|
||||||
} else if (data.status === "dependenciesnotdeleted") {
|
} else if (data.status === "dependenciesnotdeleted") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "warning",
|
type: "warning",
|
||||||
title: 'This city is a dependency of a date',
|
title: 'This city is a dependency of a date',
|
||||||
html: 'Please delete all dependencies first!',
|
html: 'Do you want do delete it anyway with all dependencies?',
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
console.log('Popup closed. ')
|
console.log('Popup closed. ')
|
||||||
|
|
||||||
@@ -299,10 +287,10 @@ class Dashboard {
|
|||||||
}, "json");
|
}, "json");
|
||||||
});
|
});
|
||||||
|
|
||||||
_this.citytable = $("#example2").DataTable();
|
this.citytable = $("#example2").DataTable();
|
||||||
} else if (data.query == "nodbconn") {
|
} else if (data.query == "nodbconn") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "error",
|
type: "error",
|
||||||
title: 'No connection to Database',
|
title: 'No connection to Database',
|
||||||
html: 'Setup DB here --> <a href="index.html">click<a/>.',
|
html: 'Setup DB here --> <a href="index.html">click<a/>.',
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
@@ -317,10 +305,9 @@ class Dashboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
reloadDateTable() {
|
reloadDateTable() {
|
||||||
const _this = this;
|
|
||||||
$.post('/senddata/wastedata', 'action=getAllDates', function (data) {
|
$.post('/senddata/wastedata', 'action=getAllDates', function (data) {
|
||||||
if (_this.datetable != null) {
|
if (this.datetable != null) {
|
||||||
_this.datetable.destroy(); //delete table if already created
|
this.datetable.destroy(); //delete table if already created
|
||||||
}
|
}
|
||||||
console.log(data);
|
console.log(data);
|
||||||
|
|
||||||
@@ -345,7 +332,7 @@ class Dashboard {
|
|||||||
console.log(data);
|
console.log(data);
|
||||||
if (data.status == "success") {
|
if (data.status == "success") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "success",
|
type: "success",
|
||||||
title: 'Successfully deleted city!',
|
title: 'Successfully deleted city!',
|
||||||
html: 'This alert closes automatically.',
|
html: 'This alert closes automatically.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
@@ -353,10 +340,10 @@ class Dashboard {
|
|||||||
console.log('Popup closed. ')
|
console.log('Popup closed. ')
|
||||||
|
|
||||||
});
|
});
|
||||||
_this.reloadDateTable();
|
reloadDateTable();
|
||||||
} else if (data.status == "dependenciesnotdeleted") {
|
} else if (data.status == "dependenciesnotdeleted") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "warning",
|
type: "warning",
|
||||||
title: 'This city is a dependency of a date',
|
title: 'This city is a dependency of a date',
|
||||||
html: 'Do you want do delete it anyway with all dependencies?',
|
html: 'Do you want do delete it anyway with all dependencies?',
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
@@ -369,7 +356,7 @@ class Dashboard {
|
|||||||
}, "json");
|
}, "json");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
_this.datetable = $("#table-pickupdates").DataTable({
|
this.datetable = $("#table-pickupdates").DataTable({
|
||||||
"order": [[3, "asc"]]
|
"order": [[3, "asc"]]
|
||||||
});
|
});
|
||||||
}, "json");
|
}, "json");
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
$(function () {
|
$(document).ready(function () {
|
||||||
new Device();
|
new Device();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
class Device {
|
class Device {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.reloadDevices();
|
this.reloadDevices()
|
||||||
this.loadHeader();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
devicetable = null;
|
devicetable = null;
|
||||||
@@ -37,6 +36,7 @@ class Device {
|
|||||||
var devicelocation = data.data[i].devicelocation;
|
var devicelocation = data.data[i].devicelocation;
|
||||||
|
|
||||||
var row = "<tr><td>" + id + "</td><td>" + devicename + "</td><td>" + devicelocation + "</td><td>";
|
var row = "<tr><td>" + id + "</td><td>" + devicename + "</td><td>" + devicelocation + "</td><td>";
|
||||||
|
|
||||||
for (var n = 0; n < data.data[i].devices.length; n++) {
|
for (var n = 0; n < data.data[i].devices.length; n++) {
|
||||||
var cityname = data.data[i].devices[n].cityname;
|
var cityname = data.data[i].devices[n].cityname;
|
||||||
var cityzone = data.data[i].devices[n].zone;
|
var cityzone = data.data[i].devices[n].zone;
|
||||||
@@ -51,9 +51,9 @@ class Device {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_this._addDeleteButton();
|
_this.addDeleteButton();
|
||||||
_this._addAddButton();
|
_this.addAddButton();
|
||||||
_this._addConfigDialog();
|
_this.addConfigDialog();
|
||||||
_this.devicetable = $('#table-devices').DataTable();
|
_this.devicetable = $('#table-devices').DataTable();
|
||||||
}, 'json');
|
}, 'json');
|
||||||
}
|
}
|
||||||
@@ -61,8 +61,7 @@ class Device {
|
|||||||
/**
|
/**
|
||||||
* add click listener to add button to add new city entries to current device
|
* add click listener to add button to add new city entries to current device
|
||||||
*/
|
*/
|
||||||
_addAddButton() {
|
addAddButton() {
|
||||||
var _this = this;
|
|
||||||
$('.addbtn').click(function (event) {
|
$('.addbtn').click(function (event) {
|
||||||
var id = event.target.getAttribute("dataid");
|
var id = event.target.getAttribute("dataid");
|
||||||
var cityname;
|
var cityname;
|
||||||
@@ -85,6 +84,8 @@ class Device {
|
|||||||
}
|
}
|
||||||
]).then((result) => {
|
]).then((result) => {
|
||||||
if (result.value) {
|
if (result.value) {
|
||||||
|
console.log(result.value);
|
||||||
|
const answers = JSON.stringify(result.value);
|
||||||
cityname = result.value[0];
|
cityname = result.value[0];
|
||||||
|
|
||||||
console.log("cityname=" + cityname);
|
console.log("cityname=" + cityname);
|
||||||
@@ -103,6 +104,7 @@ class Device {
|
|||||||
}
|
}
|
||||||
]).then((result) => {
|
]).then((result) => {
|
||||||
if (result.value) {
|
if (result.value) {
|
||||||
|
console.log(result.value);
|
||||||
zone = result.value[0];
|
zone = result.value[0];
|
||||||
$.post('/senddata/Devicedata', 'action=gettypes&cityname=' + cityname + '&zonename=' + zone, function (data) {
|
$.post('/senddata/Devicedata', 'action=gettypes&cityname=' + cityname + '&zonename=' + zone, function (data) {
|
||||||
Swal.mixin({
|
Swal.mixin({
|
||||||
@@ -119,17 +121,21 @@ class Device {
|
|||||||
}
|
}
|
||||||
]).then((result) => {
|
]).then((result) => {
|
||||||
if (result.value) {
|
if (result.value) {
|
||||||
|
console.log(result.value);
|
||||||
wastetype = result.value[0];
|
wastetype = result.value[0];
|
||||||
|
|
||||||
|
|
||||||
|
//todo add to db
|
||||||
$.post('/senddata/Devicedata', 'action=addtodb&deviceid=' + id + '&cityname=' + cityname + '&zonename=' + zone + '&wastetype=' + wastetype, function (data) {
|
$.post('/senddata/Devicedata', 'action=addtodb&deviceid=' + id + '&cityname=' + cityname + '&zonename=' + zone + '&wastetype=' + wastetype, function (data) {
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "success",
|
type: "success",
|
||||||
title: 'Successfully configured!',
|
title: 'Successfully configured!',
|
||||||
html: 'This alert closes added.',
|
html: 'This alert closes added.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
_this.reloadDevices();
|
console.log('Popup closed. ');
|
||||||
|
reloadDevices();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -148,7 +154,7 @@ class Device {
|
|||||||
/**
|
/**
|
||||||
* add click listener to delete button to delete this device entry
|
* add click listener to delete button to delete this device entry
|
||||||
*/
|
*/
|
||||||
_addDeleteButton() {
|
addDeleteButton() {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
$(".delbtn").click(function (event) {
|
$(".delbtn").click(function (event) {
|
||||||
var id = event.target.getAttribute("dataid");
|
var id = event.target.getAttribute("dataid");
|
||||||
@@ -157,7 +163,7 @@ class Device {
|
|||||||
console.log(data);
|
console.log(data);
|
||||||
if (data.status === "success") {
|
if (data.status === "success") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "success",
|
type: "success",
|
||||||
title: 'Successfully deleted city!',
|
title: 'Successfully deleted city!',
|
||||||
html: 'This alert closes automatically.',
|
html: 'This alert closes automatically.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
@@ -168,7 +174,7 @@ class Device {
|
|||||||
_this.reloadDevices();
|
_this.reloadDevices();
|
||||||
} else if (data.status === "dependenciesnotdeleted") {
|
} else if (data.status === "dependenciesnotdeleted") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "warning",
|
type: "warning",
|
||||||
title: 'This city is a dependency of a date',
|
title: 'This city is a dependency of a date',
|
||||||
html: 'Do you want do delete it anyway with all dependencies?',
|
html: 'Do you want do delete it anyway with all dependencies?',
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
@@ -185,8 +191,7 @@ class Device {
|
|||||||
/**
|
/**
|
||||||
* add click listener to unconfigured device to show configure dialog
|
* add click listener to unconfigured device to show configure dialog
|
||||||
*/
|
*/
|
||||||
_addConfigDialog() {
|
addConfigDialog() {
|
||||||
var _this = this;
|
|
||||||
$(".configuredevicebutton").click(function (event) {
|
$(".configuredevicebutton").click(function (event) {
|
||||||
var id = event.target.getAttribute("deviceid");
|
var id = event.target.getAttribute("deviceid");
|
||||||
var cityname;
|
var cityname;
|
||||||
@@ -261,13 +266,13 @@ class Device {
|
|||||||
$.post('/senddata/Devicedata', 'action=savetodb&deviceid=' + id + '&cityname=' + cityname + '&zonename=' + zone + '&wastetype=' + wastetype + '&devicename=' + devicename + '&devicelocation=' + devicelocation, function (data) {
|
$.post('/senddata/Devicedata', 'action=savetodb&deviceid=' + id + '&cityname=' + cityname + '&zonename=' + zone + '&wastetype=' + wastetype + '&devicename=' + devicename + '&devicelocation=' + devicelocation, function (data) {
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: "success",
|
type: "success",
|
||||||
title: 'Successfully configured!',
|
title: 'Successfully configured!',
|
||||||
html: 'This alert closes automatically.',
|
html: 'This alert closes automatically.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
console.log('Popup closed. ');
|
console.log('Popup closed. ');
|
||||||
_this.reloadDevices();
|
reloadDevices();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -280,18 +285,10 @@ class Device {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
console.log("click..." + id);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Load header tiles
|
|
||||||
*/
|
|
||||||
loadHeader(){
|
|
||||||
$.post('/senddata/Devicedata', 'action=getheader', function (data) {
|
|
||||||
if (data.success) {
|
|
||||||
$("#devicenr-label").html(data.devicenumber);
|
|
||||||
$("#unconfigured-devices-label").html(data.unconfigureddevices);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
$(document).ready(function () {
|
||||||
|
$('#loginbtn').click(function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
console.log("clicked login button");
|
||||||
|
var username = $("#userfield")[0].value;
|
||||||
|
var password = $("#passfield")[0].value;
|
||||||
|
|
||||||
|
$.post('/senddata/loginget', 'username=' + username + '&password=' + password, function (data) {
|
||||||
|
|
||||||
|
console.log(data);
|
||||||
|
if (data.status == "nodbconn"){
|
||||||
|
Swal.fire({
|
||||||
|
type: "error",
|
||||||
|
title: 'No connection to Database',
|
||||||
|
html: 'Setup DB here --> <a href="index.html">click<a/>.',
|
||||||
|
}).then((result) => {
|
||||||
|
console.log('Popup closed. ')
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (data.accept == true) {
|
||||||
|
console.log("successfully logged in!");
|
||||||
|
document.cookie = "username=" + username;
|
||||||
|
window.location = 'dashboard.html';
|
||||||
|
}
|
||||||
|
}, 'json');
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//register pwa
|
||||||
|
async function registerSW() {
|
||||||
|
console.log("registering service worker!");
|
||||||
|
if ('serviceWorker' in navigator) {
|
||||||
|
try {
|
||||||
|
await navigator.serviceWorker.register('/sw.js');
|
||||||
|
} catch (e) {
|
||||||
|
console.log(`SW registration failed`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
registerSW();
|
||||||
|
});
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
$(document).ready(function() {
|
||||||
|
$("#firstname").value("hhh");
|
||||||
|
|
||||||
|
$.post('/senddata/checkloginstate', 'action=getfirstname', function (data) {
|
||||||
|
console.log(data);
|
||||||
|
}, 'json');
|
||||||
|
});
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
$(document).ready(function() {
|
||||||
|
$('#loginbtn').click(function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
console.log("clicked login button");
|
||||||
|
var username = $("#usernamefield")[0].value;
|
||||||
|
var firstname = $("#firstnamefield")[0].value;
|
||||||
|
var lastname = $("#lastnamefield")[0].value;
|
||||||
|
var email = $("#emailfield")[0].value;
|
||||||
|
var password = $("#passfield")[0].value;
|
||||||
|
var replypassword = $("#replpassfield")[0].value;
|
||||||
|
|
||||||
|
if (password != replypassword) {
|
||||||
|
console.log("passwords doesnt match");
|
||||||
|
}else {
|
||||||
|
$.post('/senddata/registerpost','username='+username+
|
||||||
|
'&firstname='+firstname+
|
||||||
|
'&lastname='+lastname+
|
||||||
|
'&email='+email+
|
||||||
|
'&password='+password,function(data){
|
||||||
|
|
||||||
|
console.log(data);
|
||||||
|
|
||||||
|
if (data.accept == true) {
|
||||||
|
console.log("successfully registered!");
|
||||||
|
$("#successbar").show();
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
window.location = 'index.html';
|
||||||
|
},3000);
|
||||||
|
}else {
|
||||||
|
console.log("error!");
|
||||||
|
$("#errorbar").show();
|
||||||
|
}
|
||||||
|
},'json');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,19 +1,5 @@
|
|||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
$('.sandwich').click(function () {
|
console.log("page loaded");
|
||||||
const bdy = $('body');
|
|
||||||
if (bdy.hasClass("sidebar-collapse")) {
|
|
||||||
bdy.removeClass("sidebar-collapse");
|
|
||||||
} else {
|
|
||||||
bdy.addClass("sidebar-collapse");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(bdy.hasClass("sidebar-open")){
|
|
||||||
bdy.removeClass("sidebar-open");
|
|
||||||
} else {
|
|
||||||
bdy.addClass("sidebar-open");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$.post('/senddata/checkloginstate', 'action=getloginstate', function (data) {
|
$.post('/senddata/checkloginstate', 'action=getloginstate', function (data) {
|
||||||
console.log(data);
|
console.log(data);
|
||||||
if (data.loggedin == true) {
|
if (data.loggedin == true) {
|
||||||
+2219
-4830
File diff suppressed because it is too large.
Load diff
@@ -1 +1 @@
|
|||||||
{"version":3,"sources":["../../build/scss/AdminLTE.scss","adminlte.css","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","../../build/scss/_bootstrap-variables.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/mixins/_hover.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/mixins/_box-shadow.scss","../../node_modules/bootstrap/scss/_code.scss","../../node_modules/bootstrap/scss/_grid.scss","../../node_modules/bootstrap/scss/mixins/_grid.scss","../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../node_modules/bootstrap/scss/mixins/_grid-framework.scss","../../node_modules/bootstrap/scss/_tables.scss","../../node_modules/bootstrap/scss/mixins/_table-row.scss","../../node_modules/bootstrap/scss/_functions.scss","../../node_modules/bootstrap/scss/_forms.scss","../../node_modules/bootstrap/scss/mixins/_transition.scss","../../node_modules/bootstrap/scss/mixins/_forms.scss","../../node_modules/bootstrap/scss/mixins/_gradients.scss","../../node_modules/bootstrap/scss/_buttons.scss","../../node_modules/bootstrap/scss/mixins/_buttons.scss","../../node_modules/bootstrap/scss/_transitions.scss","../../node_modules/bootstrap/scss/_dropdown.scss","../../node_modules/bootstrap/scss/mixins/_caret.scss","../../node_modules/bootstrap/scss/mixins/_nav-divider.scss","../../node_modules/bootstrap/scss/_button-group.scss","../../node_modules/bootstrap/scss/_input-group.scss","../../node_modules/bootstrap/scss/_custom-forms.scss","../../node_modules/bootstrap/scss/_nav.scss","../../node_modules/bootstrap/scss/_navbar.scss","../../node_modules/bootstrap/scss/_card.scss","../../node_modules/bootstrap/scss/_breadcrumb.scss","../../node_modules/bootstrap/scss/_pagination.scss","../../node_modules/bootstrap/scss/mixins/_pagination.scss","../../node_modules/bootstrap/scss/_badge.scss","../../node_modules/bootstrap/scss/mixins/_badge.scss","../../node_modules/bootstrap/scss/_jumbotron.scss","../../node_modules/bootstrap/scss/_alert.scss","../../node_modules/bootstrap/scss/mixins/_alert.scss","../../node_modules/bootstrap/scss/_progress.scss","../../node_modules/bootstrap/scss/_media.scss","../../node_modules/bootstrap/scss/_list-group.scss","../../node_modules/bootstrap/scss/mixins/_list-group.scss","../../node_modules/bootstrap/scss/_close.scss","../../node_modules/bootstrap/scss/_toasts.scss","../../node_modules/bootstrap/scss/_modal.scss","../../node_modules/bootstrap/scss/_tooltip.scss","../../node_modules/bootstrap/scss/mixins/_reset-text.scss","../../node_modules/bootstrap/scss/_popover.scss","../../node_modules/bootstrap/scss/_carousel.scss","../../node_modules/bootstrap/scss/mixins/_clearfix.scss","../../node_modules/bootstrap/scss/_spinners.scss","../../node_modules/bootstrap/scss/utilities/_align.scss","../../node_modules/bootstrap/scss/mixins/_background-variant.scss","../../node_modules/bootstrap/scss/utilities/_background.scss","../../node_modules/bootstrap/scss/utilities/_borders.scss","../../node_modules/bootstrap/scss/utilities/_display.scss","../../node_modules/bootstrap/scss/utilities/_embed.scss","../../node_modules/bootstrap/scss/utilities/_flex.scss","../../node_modules/bootstrap/scss/utilities/_float.scss","../../node_modules/bootstrap/scss/utilities/_overflow.scss","../../node_modules/bootstrap/scss/utilities/_position.scss","../../node_modules/bootstrap/scss/utilities/_screenreaders.scss","../../node_modules/bootstrap/scss/mixins/_screen-reader.scss","../../node_modules/bootstrap/scss/utilities/_shadows.scss","../../node_modules/bootstrap/scss/utilities/_sizing.scss","../../node_modules/bootstrap/scss/utilities/_stretched-link.scss","../../node_modules/bootstrap/scss/utilities/_spacing.scss","../../node_modules/bootstrap/scss/utilities/_text.scss","../../node_modules/bootstrap/scss/mixins/_text-truncate.scss","../../node_modules/bootstrap/scss/mixins/_text-emphasis.scss","../../node_modules/bootstrap/scss/mixins/_text-hide.scss","../../node_modules/bootstrap/scss/utilities/_visibility.scss","../../node_modules/bootstrap/scss/_print.scss","../../build/scss/_layout.scss","../../build/scss/_variables.scss","../../build/scss/_main-header.scss","../../build/scss/_brand.scss","../../build/scss/_main-sidebar.scss","../../build/scss/mixins/_miscellaneous.scss","../../build/scss/mixins/_sidebar.scss","../../build/scss/_sidebar-mini.scss","../../build/scss/_control-sidebar.scss","../../build/scss/_dropdown.scss","../../build/scss/_navs.scss","../../build/scss/_forms.scss","../../build/scss/mixins/_custom-forms.scss","../../build/scss/_progress-bars.scss","../../Line truncated
|
{"version":3,"sources":["adminlte.css","../../build/scss/AdminLTE.scss","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","../../build/scss/_bootstrap-variables.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/mixins/_hover.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/mixins/_box-shadow.scss","../../node_modules/bootstrap/scss/_code.scss","../../node_modules/bootstrap/scss/_grid.scss","../../node_modules/bootstrap/scss/mixins/_grid.scss","../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../node_modules/bootstrap/scss/mixins/_grid-framework.scss","../../node_modules/bootstrap/scss/_tables.scss","../../node_modules/bootstrap/scss/mixins/_table-row.scss","../../node_modules/bootstrap/scss/_functions.scss","../../node_modules/bootstrap/scss/_forms.scss","../../node_modules/bootstrap/scss/mixins/_transition.scss","../../node_modules/bootstrap/scss/mixins/_forms.scss","../../node_modules/bootstrap/scss/mixins/_gradients.scss","../../node_modules/bootstrap/scss/_buttons.scss","../../node_modules/bootstrap/scss/mixins/_buttons.scss","../../node_modules/bootstrap/scss/_transitions.scss","../../node_modules/bootstrap/scss/_dropdown.scss","../../node_modules/bootstrap/scss/mixins/_caret.scss","../../node_modules/bootstrap/scss/mixins/_nav-divider.scss","../../node_modules/bootstrap/scss/_button-group.scss","../../node_modules/bootstrap/scss/_input-group.scss","../../node_modules/bootstrap/scss/_custom-forms.scss","../../node_modules/bootstrap/scss/_nav.scss","../../node_modules/bootstrap/scss/_navbar.scss","../../node_modules/bootstrap/scss/_card.scss","../../node_modules/bootstrap/scss/_breadcrumb.scss","../../node_modules/bootstrap/scss/_pagination.scss","../../node_modules/bootstrap/scss/mixins/_pagination.scss","../../node_modules/bootstrap/scss/_badge.scss","../../node_modules/bootstrap/scss/mixins/_badge.scss","../../node_modules/bootstrap/scss/_jumbotron.scss","../../node_modules/bootstrap/scss/_alert.scss","../../node_modules/bootstrap/scss/mixins/_alert.scss","../../node_modules/bootstrap/scss/_progress.scss","../../node_modules/bootstrap/scss/_media.scss","../../node_modules/bootstrap/scss/_list-group.scss","../../node_modules/bootstrap/scss/mixins/_list-group.scss","../../node_modules/bootstrap/scss/_close.scss","../../node_modules/bootstrap/scss/_toasts.scss","../../node_modules/bootstrap/scss/_modal.scss","../../node_modules/bootstrap/scss/_tooltip.scss","../../node_modules/bootstrap/scss/mixins/_reset-text.scss","../../node_modules/bootstrap/scss/_popover.scss","../../node_modules/bootstrap/scss/_carousel.scss","../../node_modules/bootstrap/scss/mixins/_clearfix.scss","../../node_modules/bootstrap/scss/_spinners.scss","../../node_modules/bootstrap/scss/utilities/_align.scss","../../node_modules/bootstrap/scss/mixins/_background-variant.scss","../../node_modules/bootstrap/scss/utilities/_background.scss","../../node_modules/bootstrap/scss/utilities/_borders.scss","../../node_modules/bootstrap/scss/utilities/_display.scss","../../node_modules/bootstrap/scss/utilities/_embed.scss","../../node_modules/bootstrap/scss/utilities/_flex.scss","../../node_modules/bootstrap/scss/utilities/_float.scss","../../node_modules/bootstrap/scss/utilities/_overflow.scss","../../node_modules/bootstrap/scss/utilities/_position.scss","../../node_modules/bootstrap/scss/utilities/_screenreaders.scss","../../node_modules/bootstrap/scss/mixins/_screen-reader.scss","../../node_modules/bootstrap/scss/utilities/_shadows.scss","../../node_modules/bootstrap/scss/utilities/_sizing.scss","../../node_modules/bootstrap/scss/utilities/_stretched-link.scss","../../node_modules/bootstrap/scss/utilities/_spacing.scss","../../node_modules/bootstrap/scss/utilities/_text.scss","../../node_modules/bootstrap/scss/mixins/_text-truncate.scss","../../node_modules/bootstrap/scss/mixins/_text-emphasis.scss","../../node_modules/bootstrap/scss/mixins/_text-hide.scss","../../node_modules/bootstrap/scss/utilities/_visibility.scss","../../node_modules/bootstrap/scss/_print.scss","../../build/scss/_layout.scss","../../build/scss/_variables.scss","../../build/scss/_main-header.scss","../../build/scss/_brand.scss","../../build/scss/_main-sidebar.scss","../../build/scss/mixins/_miscellaneous.scss","../../build/scss/mixins/_sidebar.scss","../../build/scss/_sidebar-mini.scss","../../build/scss/_control-sidebar.scss","../../build/scss/_dropdown.scss","../../build/scss/_navs.scss","../../build/scss/_forms.scss","../../build/scss/mixins/_custom-forms.scss","../../build/scss/_progress-bars.scss","../../Line truncated
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
/*!
|
@charset "UTF-8";/*!
|
||||||
* AdminLTE v3.0.4
|
* AdminLTE v3.0.0
|
||||||
* Author: Colorlib
|
* Author: Colorlib
|
||||||
* Website: AdminLTE.io <http://adminlte.io>
|
* Website: AdminLTE.io <http://adminlte.io>
|
||||||
* License: Open source - MIT <http://opensource.org/licenses/MIT>
|
* License: Open source - MIT <http://opensource.org/licenses/MIT>
|
||||||
*//*!
|
*//*!
|
||||||
* Bootstrap v4.4.1 (https://getbootstrap.com/)
|
* Bootstrap v4.3.1 (https://getbootstrap.com/)
|
||||||
* Copyright 2011-2019 The Bootstrap Authors
|
* Copyright 2011-2019 The Bootstrap Authors
|
||||||
* Copyright 2011-2019 Twitter, Inc.
|
* Copyright 2011-2019 Twitter, Inc.
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#ffffff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:none}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.liLine truncated
|
*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#ffffff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:none}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.Line truncated
|
||||||
/*# sourceMappingURL=adminlte.min.css.map */
|
/*# sourceMappingURL=adminlte.min.css.map */
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"sources":["..\\..\\build\\scss\\AdminLTE.scss","..\\..\\node_modules\\bootstrap\\scss\\bootstrap.scss","..\\..\\node_modules\\bootstrap\\scss\\_root.scss","..\\..\\node_modules\\bootstrap\\scss\\_reboot.scss","dist\\css\\adminlte.css","..\\..\\node_modules\\bootstrap\\scss\\vendor\\_rfs.scss","adminlte.css","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_hover.scss","..\\..\\node_modules\\bootstrap\\scss\\_type.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_lists.scss","..\\..\\node_modules\\bootstrap\\scss\\_images.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_image.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_border-radius.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_box-shadow.scss","..\\..\\node_modules\\bootstrap\\scss\\_code.scss","..\\..\\node_modules\\bootstrap\\scss\\_grid.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_grid.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_breakpoints.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_grid-framework.scss","..\\..\\node_modules\\bootstrap\\scss\\_tables.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_table-row.scss","..\\..\\node_modules\\bootstrap\\scss\\_forms.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_transition.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_forms.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_gradients.scss","..\\..\\node_modules\\bootstrap\\scss\\_buttons.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_buttons.scss","..\\..\\node_modules\\bootstrap\\scss\\_transitions.scss","..\\..\\node_modules\\bootstrap\\scss\\_dropdown.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_caret.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_nav-divider.scss","..\\..\\node_modules\\bootstrap\\scss\\_button-group.scss","..\\..\\node_modules\\bootstrap\\scss\\_input-group.scss","..\\..\\node_modules\\bootstrap\\scss\\_custom-forms.scss","..\\..\\node_modules\\bootstrap\\scss\\_nav.scss","..\\..\\node_modules\\bootstrap\\scss\\_navbar.scss","..\\..\\node_modules\\bootstrap\\scss\\_card.scss","..\\..\\node_modules\\bootstrap\\scss\\_breadcrumb.scss","..\\..\\node_modules\\bootstrap\\scss\\_pagination.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_pagination.scss","..\\..\\node_modules\\bootstrap\\scss\\_badge.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_badge.scss","..\\..\\node_modules\\bootstrap\\scss\\_jumbotron.scss","..\\..\\node_modules\\bootstrap\\scss\\_alert.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_alert.scss","..\\..\\node_modules\\bootstrap\\scss\\_progress.scss","..\\..\\node_modules\\bootstrap\\scss\\_media.scss","..\\..\\node_modules\\bootstrap\\scss\\_list-group.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_list-group.scss","..\\..\\node_modules\\bootstrap\\scss\\_close.scss","..\\..\\node_modules\\bootstrap\\scss\\_toasts.scss","..\\..\\node_modules\\bootstrap\\scss\\_modal.scss","..\\..\\node_modules\\bootstrap\\scss\\_tooltip.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_reset-text.scss","..\\..\\node_modules\\bootstrap\\scss\\_popover.scss","..\\..\\node_modules\\bootstrap\\scss\\_carousel.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_clearfix.scss","..\\..\\node_modules\\bootstrap\\scss\\_spinners.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_align.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_background-variant.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_background.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_borders.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_display.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_embed.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_flex.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_float.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_overflow.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_position.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_screenreaders.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_screen-reader.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_shadows.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_sizing.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_stretched-link.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_spacing.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_text.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_text-truncate.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_text-emphasis.scss","..\\..\\node_modules\\bootstrap\\scss\\mixins\\_text-hide.scss","..\\..\\node_modules\\bootstrap\\scss\\utilities\\_visibility.scss","..\\..\\node_modules\\bootstrap\\scss\\_print.scss","..\\..\\build\\scss\\_layout.scss","..\\..\\build\\scss\\_main-header.scss","..\\..\\build\\scss\\_brand.scss","..\\..\\build\\scss\\_main-sidebar.scss","..\\..\\build\\scss\\mixins\\_miscellaneous.scss","..\\..\\bLine truncated
|
{"version":3,"sources":["../../build/scss/AdminLTE.scss","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","dist/css/adminlte.css","../../node_modules/bootstrap/scss/vendor/_rfs.scss","adminlte.css","../../node_modules/bootstrap/scss/mixins/_hover.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/mixins/_box-shadow.scss","../../node_modules/bootstrap/scss/_code.scss","../../node_modules/bootstrap/scss/_grid.scss","../../node_modules/bootstrap/scss/mixins/_grid.scss","../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../node_modules/bootstrap/scss/mixins/_grid-framework.scss","../../node_modules/bootstrap/scss/_tables.scss","../../node_modules/bootstrap/scss/mixins/_table-row.scss","../../node_modules/bootstrap/scss/_forms.scss","../../node_modules/bootstrap/scss/mixins/_transition.scss","../../node_modules/bootstrap/scss/mixins/_forms.scss","../../node_modules/bootstrap/scss/mixins/_gradients.scss","../../node_modules/bootstrap/scss/_buttons.scss","../../node_modules/bootstrap/scss/mixins/_buttons.scss","../../node_modules/bootstrap/scss/_transitions.scss","../../node_modules/bootstrap/scss/_dropdown.scss","../../node_modules/bootstrap/scss/mixins/_caret.scss","../../node_modules/bootstrap/scss/mixins/_nav-divider.scss","../../node_modules/bootstrap/scss/_button-group.scss","../../node_modules/bootstrap/scss/_input-group.scss","../../node_modules/bootstrap/scss/_custom-forms.scss","../../node_modules/bootstrap/scss/_nav.scss","../../node_modules/bootstrap/scss/_navbar.scss","../../node_modules/bootstrap/scss/_card.scss","../../node_modules/bootstrap/scss/_breadcrumb.scss","../../node_modules/bootstrap/scss/_pagination.scss","../../node_modules/bootstrap/scss/mixins/_pagination.scss","../../node_modules/bootstrap/scss/_badge.scss","../../node_modules/bootstrap/scss/mixins/_badge.scss","../../node_modules/bootstrap/scss/_jumbotron.scss","../../node_modules/bootstrap/scss/_alert.scss","../../node_modules/bootstrap/scss/mixins/_alert.scss","../../node_modules/bootstrap/scss/_progress.scss","../../node_modules/bootstrap/scss/_media.scss","../../node_modules/bootstrap/scss/_list-group.scss","../../node_modules/bootstrap/scss/mixins/_list-group.scss","../../node_modules/bootstrap/scss/_close.scss","../../node_modules/bootstrap/scss/_toasts.scss","../../node_modules/bootstrap/scss/_modal.scss","../../node_modules/bootstrap/scss/_tooltip.scss","../../node_modules/bootstrap/scss/mixins/_reset-text.scss","../../node_modules/bootstrap/scss/_popover.scss","../../node_modules/bootstrap/scss/_carousel.scss","../../node_modules/bootstrap/scss/mixins/_clearfix.scss","../../node_modules/bootstrap/scss/_spinners.scss","../../node_modules/bootstrap/scss/utilities/_align.scss","../../node_modules/bootstrap/scss/mixins/_background-variant.scss","../../node_modules/bootstrap/scss/utilities/_background.scss","../../node_modules/bootstrap/scss/utilities/_borders.scss","../../node_modules/bootstrap/scss/utilities/_display.scss","../../node_modules/bootstrap/scss/utilities/_embed.scss","../../node_modules/bootstrap/scss/utilities/_flex.scss","../../node_modules/bootstrap/scss/utilities/_float.scss","../../node_modules/bootstrap/scss/utilities/_overflow.scss","../../node_modules/bootstrap/scss/utilities/_position.scss","../../node_modules/bootstrap/scss/utilities/_screenreaders.scss","../../node_modules/bootstrap/scss/mixins/_screen-reader.scss","../../node_modules/bootstrap/scss/utilities/_shadows.scss","../../node_modules/bootstrap/scss/utilities/_sizing.scss","../../node_modules/bootstrap/scss/utilities/_stretched-link.scss","../../node_modules/bootstrap/scss/utilities/_spacing.scss","../../node_modules/bootstrap/scss/utilities/_text.scss","../../node_modules/bootstrap/scss/mixins/_text-truncate.scss","../../node_modules/bootstrap/scss/mixins/_text-emphasis.scss","../../node_modules/bootstrap/scss/mixins/_text-hide.scss","../../node_modules/bootstrap/scss/utilities/_visibility.scss","../../node_modules/bootstrap/scss/_print.scss","../../build/scss/_layout.scss","../../build/scss/_main-header.scss","../../build/scss/_brand.scss","../../build/scss/_main-sidebar.scss","../../build/scss/mixins/_miscellaneous.scss","../../build/scss/mixins/_sidebar.scss","../../build/scss/_sidebar-mini.scss","../../build/scss/_control-sidebar.scss","../../build/scss/_dropdown.scss","../../build/scss/_navs.scss","../../build/scss/_forms.scss","../../build/scss/mixins/_custom-forms.scss","../../build/scss/_progress-bars.scss","../../build/scss/_cards.scss","../../build/scss/mixins/_cards.scss","../../build/scss/_modals.scss","../../build/scss/_toasts.scss","../../build/scss/mixins/_toasts.sLine truncated
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,126 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"file": "adminlte.components.css",
|
||||||
|
"sources": [
|
||||||
|
"../../../build/scss/AdminLTE-components.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_functions.scss",
|
||||||
|
"../../../build/scss/_bootstrap-variables.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_mixins.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/vendor/_rfs.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_deprecate.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_hover.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_image.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_badge.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_resize.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_screen-reader.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_size.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_reset-text.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-emphasis.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-hide.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-truncate.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_visibility.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_alert.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_buttons.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_caret.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_pagination.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_lists.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_list-group.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_nav-divider.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_forms.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_table-row.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_background-variant.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_border-radius.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_gradients.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_transition.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_clearfix.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_grid-framework.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_grid.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_float.scss",
|
||||||
|
"../../../build/scss/_variables.scss",
|
||||||
|
"../../../build/scss/_mixins.scss",
|
||||||
|
"../../../build/scss/mixins/_cards.scss",
|
||||||
|
"../../../build/scss/mixins/_sidebar.scss",
|
||||||
|
"../../../build/scss/mixins/_navbar.scss",
|
||||||
|
"../../../build/scss/mixins/_accent.scss",
|
||||||
|
"../../../build/scss/mixins/_custom-forms.scss",
|
||||||
|
"../../../build/scss/mixins/_backgrounds.scss",
|
||||||
|
"../../../build/scss/mixins/_direct-chat.scss",
|
||||||
|
"../../../build/scss/mixins/_toasts.scss",
|
||||||
|
"../../../build/scss/mixins/_miscellaneous.scss",
|
||||||
|
"../../../build/scss/parts/_components.scss",
|
||||||
|
"../../../build/scss/_forms.scss",
|
||||||
|
"../../../build/scss/_progress-bars.scss",
|
||||||
|
"../../../build/scss/_cards.scss",
|
||||||
|
"../../../build/scss/_modals.scss",
|
||||||
|
"../../../build/scss/_toasts.scss",
|
||||||
|
"../../../build/scss/_buttons.scss",
|
||||||
|
"../../../build/scss/_callout.scss",
|
||||||
|
"../../../build/scss/_alerts.scss",
|
||||||
|
"../../../build/scss/_table.scss",
|
||||||
|
"../../../build/scss/_carousel.scss"
|
||||||
|
],
|
||||||
|
"sourcesContent": [
|
||||||
|
"/*!\n * AdminLTE v3.0.0\n * Only Components\n * Author: Colorlib\n *\t Website: AdminLTE.io <http://adminlte.io>\n * License: Open source - MIT <http://opensource.org/licenses/MIT>\n */\n// Bootstrap\n// ---------------------------------------------------\n@import '~bootstrap/scss/functions';\n@import 'bootstrap-variables';\n@import '~bootstrap/scss/mixins';\n// @import '~bootstrap/scss/bootstrap';\n\n// Variables and Mixins\n// ---------------------------------------------------\n@import 'variables';\n@import 'mixins';\n\n@import 'parts/components';\n",
|
||||||
|
"// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n",
|
||||||
|
"// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n\n//\n// Color system\n//\n\n// stylelint-disable\n$white: #ffffff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n$grays: map-merge((\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n), $grays);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n$colors: map-merge((\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n), $colors);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n$theme-colors: map-merge((\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n), $theme-colors);\n// stylelint-enable\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: #1F2D3D !default;\n$yiq-text-light: $white !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: true !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// stylelint-disable\n$spacer: 1rem !default;\n$spacers: () !default;\n$spacers: map-merge((\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n), $spacers);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n$sizes: map-merge((\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n), $sizes);\n// stylelint-enable\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: none !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layoLine truncated
|
||||||
|
"// Toggles\n//\n// Used in conjunction with global variables to enable certain theme features.\n\n// Vendor\n@import \"vendor/rfs\";\n\n// Deprecate\n@import \"mixins/deprecate\";\n\n// Utilities\n@import \"mixins/breakpoints\";\n@import \"mixins/hover\";\n@import \"mixins/image\";\n@import \"mixins/badge\";\n@import \"mixins/resize\";\n@import \"mixins/screen-reader\";\n@import \"mixins/size\";\n@import \"mixins/reset-text\";\n@import \"mixins/text-emphasis\";\n@import \"mixins/text-hide\";\n@import \"mixins/text-truncate\";\n@import \"mixins/visibility\";\n\n// // Components\n@import \"mixins/alert\";\n@import \"mixins/buttons\";\n@import \"mixins/caret\";\n@import \"mixins/pagination\";\n@import \"mixins/lists\";\n@import \"mixins/list-group\";\n@import \"mixins/nav-divider\";\n@import \"mixins/forms\";\n@import \"mixins/table-row\";\n\n// // Skins\n@import \"mixins/background-variant\";\n@import \"mixins/border-radius\";\n@import \"mixins/box-shadow\";\n@import \"mixins/gradients\";\n@import \"mixins/transition\";\n\n// // Layout\n@import \"mixins/clearfix\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n@import \"mixins/float\";\n",
|
||||||
|
"// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` Line truncated
|
||||||
|
"// Deprecate mixin\n//\n// This mixin can be used to deprecate mixins or functions.\n// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to\n// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)\n@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {\n @if ($enable-deprecation-messages != false and $ignore-warning != true) {\n @warn \"#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.\";\n }\n}\n",
|
||||||
|
"// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n",
|
||||||
|
"// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n",
|
||||||
|
"// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin badge-variant($bg) {\n color: color-yiq($bg);\n background-color: $bg;\n\n @at-root a#{&} {\n @include hover-focus {\n color: color-yiq($bg);\n background-color: darken($bg, 10%);\n }\n\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);\n }\n }\n}\n",
|
||||||
|
"// Resize anything\n\n@mixin resizable($direction) {\n overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`\n resize: $direction; // Options: horizontal, vertical, both\n}\n",
|
||||||
|
"// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n }\n}\n",
|
||||||
|
"// Sizing shortcuts\n\n@mixin size($width, $height: $width) {\n width: $width;\n height: $height;\n @include deprecate(\"`size()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $color !important;\n }\n @if $emphasized-link-hover-darken-percentage != 0 {\n a#{$parent} {\n @include hover-focus {\n color: darken($color, $emphasized-link-hover-darken-percentage) !important;\n }\n }\n }\n}\n",
|
||||||
|
"// CSS image replacement\n@mixin text-hide($ignore-warning: false) {\n // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n\n @include deprecate(\"`text-hide()`\", \"v4.1.0\", \"v5\", $ignore-warning);\n}\n",
|
||||||
|
"// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n @include deprecate(\"`invisible()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin alert-variant($background, $border, $color) {\n color: $color;\n @include gradient-bg($background);\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n",
|
||||||
|
"// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n border-color: $color;\n\n @include hover {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @include border-radius($border-radius, 0);\n}\n",
|
||||||
|
"@mixin caret-down {\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-bottom: 0;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n border-top: 0;\n border-right: $caret-width solid transparent;\n border-bottom: $caret-width solid;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-right {\n border-top: $caret-width solid transparent;\n border-right: 0;\n border-bottom: $caret-width solid transparent;\n border-left: $caret-width solid;\n}\n\n@mixin caret-left {\n border-top: $caret-width solid transparent;\n border-right: $caret-width solid;\n border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n @if $enable-caret {\n &::after {\n display: inline-block;\n margin-left: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @if $direction == down {\n @include caret-down;\n } @else if $direction == up {\n @include caret-up;\n } @else if $direction == right {\n @include caret-right;\n }\n }\n\n @if $direction == left {\n &::after {\n display: none;\n }\n\n &::before {\n display: inline-block;\n margin-right: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @include caret-left;\n }\n }\n\n &:empty::after {\n margin-left: 0;\n }\n }\n}\n",
|
||||||
|
"// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n",
|
||||||
|
"// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n",
|
||||||
|
"// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n\n &.list-group-item-action {\n @include hover-focus {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: $white;\n background-color: $color;\n border-color: $color;\n }\n }\n }\n}\n",
|
||||||
|
"// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) {\n height: 0;\n margin: $margin-y 0;\n overflow: hidden;\n border-top: 1px solid $color;\n}\n",
|
||||||
|
"// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-focus-border-color` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $input-focus-box-shadow;\n }\n }\n}\n\n\n@mixin form-validation-state($state, $color, $icon) {\n .#{$state}-feedback {\n display: none;\n width: 100%;\n margin-top: $form-feedback-margin-top;\n @include font-size($form-feedback-font-size);\n color: $color;\n }\n\n .#{$state}-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n margin-top: .1rem;\n @include font-size($form-feedback-tooltip-font-size);\n line-height: $form-feedback-tooltip-line-height;\n color: color-yiq($color);\n background-color: rgba($color, $form-feedback-tooltip-opacity);\n @include border-radius($form-feedback-tooltip-border-radius);\n }\n\n .form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-image: $icon;\n background-repeat: no-repeat;\n background-position: center right $input-height-inner-quarter;\n background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n // stylelint-disable-next-line selector-no-qualifying-type\n textarea.form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n }\n\n .custom-select {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $custom-select-feedback-icon-padding-right;\n background: $custom-select-background, $icon $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n\n .form-control-file {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .form-check-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .form-check-label {\n color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .custom-control-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-control-label {\n color: $color;\n\n &::before {\n border-color: $color;\n }\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n border-color: lighten($color, 10%);\n @include gradient-bg(lighten($color, 10%));\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n &:not(:checked) ~ .custom-control-label::before {\n border-color: $color;\n }\n }\n }\n }\n\n // custom file\n .custom-file-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-file-label {\n border-color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:focus {\n ~ .custom-file-label {\n border-color: $coLine truncated
|
||||||
|
"// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n\n @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent},\n button#{$parent} {\n @include hover-focus {\n background-color: darken($color, 10%) !important;\n }\n }\n}\n\n@mixin bg-gradient-variant($parent, $color) {\n #{$parent} {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\n }\n}\n",
|
||||||
|
"// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n",
|
||||||
|
"@mixin box-shadow($shadow...) {\n @if $enable-shadows {\n $result: ();\n\n @if (length($shadow) == 1) {\n // We can pass `@include box-shadow(none);`\n $result: $shadow;\n } @else {\n // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`\n @for $i from 1 through length($shadow) {\n @if nth($shadow, $i) != \"none\" {\n $result: append($result, nth($shadow, $i), \"comma\");\n }\n }\n }\n @if (length($result) > 0) {\n box-shadow: $result;\n }\n }\n}\n",
|
||||||
|
"// Gradients\n\n@mixin gradient-bg($color) {\n @if $enable-gradients {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n } @else {\n background-color: $color;\n }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n",
|
||||||
|
"// stylelint-disable property-blacklist\n@mixin transition($transition...) {\n @if $enable-transitions {\n @if length($transition) == 0 {\n transition: $transition-base;\n } @else {\n transition: $transition;\n }\n }\n\n @if $enable-prefers-reduced-motion-media-query {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n",
|
||||||
|
"@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n",
|
||||||
|
"// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n",
|
||||||
|
"/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n@mixin float-left {\n float: left !important;\n @include deprecate(\"The `float-left` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-right {\n float: right !important;\n @include deprecate(\"The `float-right` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-none {\n float: none !important;\n @include deprecate(\"The `float-none` mixin\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"//\n// Core: Variables\n//\n\n// COLORS\n// --------------------------------------------------------\n$blue: #0073b7 !default;\n$navy: #001f3f !default;\n$teal: #39cccc !default;\n$olive: #3d9970 !default;\n$lime: #01ff70 !default;\n$orange: #ff851b !default;\n$fuchsia: #f012be !default;\n$purple: #605ca8 !default;\n$maroon: #d81b60 !default;\n$black: #111 !default;\n$gray-x-light: #d2d6de !default;\n\n$colors: map-merge((\n 'navy': $navy,\n 'olive': $olive,\n 'lime': $lime,\n 'fuchsia': $fuchsia,\n 'maroon': $maroon,\n), $colors);\n\n// LAYOUT\n// --------------------------------------------------------\n\n$font-size-root: 1rem !default;\n\n// Sidebar\n$sidebar-width: 250px !default;\n$sidebar-padding-x: 0.5rem !default;\n$sidebar-padding-y: 0 !default;\n\n// Boxed layout maximum width\n$boxed-layout-max-width: 1250px !default;\n\n// When to show the smaller logo\n$screen-header-collapse: map-get($grid-breakpoints, md) !default;\n\n// Body background (Affects main content background only)\n$main-bg: #f4f6f9 !default;\n\n// Content padding\n$content-padding-y: 0 !default;\n$content-padding-x: $navbar-padding-x !default;\n\n// IMAGE SIZES\n// --------------------------------------------------------\n$img-size-sm: 1.875rem !default;\n$img-size-md: 3.75rem !default;\n$img-size-lg: 6.25rem !default;\n$img-size-push: .625rem !default;\n\n// MAIN HEADER\n// --------------------------------------------------------\n$main-header-bottom-border-width: $border-width !default;\n$main-header-bottom-border-color: $gray-300 !default;\n$main-header-bottom-border: $main-header-bottom-border-width solid $main-header-bottom-border-color !default;\n$main-header-link-padding-y: $navbar-padding-y !default;\n$main-header-link-padding-x: $navbar-padding-x !default;\n$main-header-brand-padding-y: $navbar-brand-padding-y !default;\n$main-header-brand-padding-x: $navbar-padding-x !default;\n$main-header-height-inner: ($nav-link-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height: calc(#{$main-header-height-inner} + #{$main-header-bottom-border-width}) !default;\n$nav-link-sm-padding-y: .35rem !default;\n$nav-link-sm-height: ($font-size-sm * $line-height-sm + $nav-link-sm-padding-y * 1.785) !default;\n$main-header-height-sm-inner: ($nav-link-sm-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height-sm: calc(#{$main-header-height-sm-inner} + #{$main-header-bottom-border-width}) !default;\n\n\n// Main header skins\n$main-header-dark-form-control-bg: hsla(100, 100%, 100%, 0.2) !default;\n$main-header-dark-form-control-focused-bg: hsla(100, 100%, 100%, 0.6) !default;\n$main-header-dark-form-control-focused-color: $gray-800 !default;\n$main-header-dark-form-control-border: 0 !default;\n$main-header-dark-form-control-focused-border: 0 !default;\n$main-header-dark-placeholder-color: hsla(100, 100%, 100%, 0.6) !default;\n\n$main-header-light-form-control-bg: darken($gray-100, 2%) !default;\n$main-header-light-form-control-focused-bg: $gray-200 !default;\n$main-header-light-form-control-focused-color: $gray-800 !default;\n$main-header-light-form-control-border: 0 !default;\n$main-header-light-form-control-focused-border: 0 !default;\n$main-header-light-placeholder-color: hsla(0, 0%, 0%, 0.6) !default;\n\n// MAIN FOOTER\n// --------------------------------------------------------\n$main-footer-padding: 1rem !default;\n$main-footer-padding-sm: $main-footer-padding * .812 !default;\n$main-footer-border-top-width: 1px !default;\n$main-footer-border-top-color: $gray-300 !default;\n$main-footer-border-top: $main-footer-border-top-width solid $main-footer-border-top-color !default;\n$main-footer-height-inner: (($font-size-root * $line-height-base) + ($main-footer-padding * 2)) !default;\n$main-footer-height: calc(#{$main-footer-height-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-height-sm-inner: (($font-size-sm * $line-height-base) + ($main-footer-padding-sm * 2)) !default;\n$main-footer-height-sm: calc(#{$main-footer-height-sm-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-bg: $white;\n\n// SIDEBAR SKINS\n// --------------------------------------------------------\n\n// Dark sidebar\n$sidebar-dark-bg: $dark !default;\n$sidebar-dark-hover-bg: hsla(100, 100%, 100%, 0.1) !default;\n$sidebar-dark-color: #C2C7D0 !default;\n$sidebar-dark-hover-color: $white !default;\n$sidebar-dark-active-color: $white !default;\n$sidebar-dark-submenu-bg: transparent !default;\n$sidebar-dark-submenu-color: #C2C7D0 !default;\n$sidebar-dark-submenu-hover-color: $white !default;\n$sidebar-dark-submenu-hover-bg: $sidebar-dark-hover-bg !default;\n$sidebar-dark-submenu-active-color: $sidebar-dark-bg !default;\n$sidebar-dark-submenu-active-bg: hsla(100, 100%, 100%, 0.9) !default;\n$sidebar-dark-header-color: $white !default;\n\n// Light sidebar\n$sidebar-light-bg: $white !default;\n$sidebar-light-hover-bg: rgba($black, .1) !default;\n$sidebar-light-color: $gray-800 !default;\nLine truncated
|
||||||
|
"//\n// General: Mixins\n//\n\n@import 'mixins/cards';\n@import 'mixins/sidebar';\n@import 'mixins/navbar';\n@import 'mixins/accent';\n@import 'mixins/custom-forms';\n@import 'mixins/backgrounds';\n@import 'mixins/direct-chat';\n@import 'mixins/toasts';\n@import 'mixins/miscellaneous';\n",
|
||||||
|
"//\n// Mixins: Cards Variant\n//\n\n@mixin cards-variant($name, $color) {\n .card-#{$name} {\n &.card-tabs {\n &:not(.card-outline) {\n .card-header {\n background-color: $color;\n\n &,\n a {\n color: color-yiq($color);\n }\n\n a.active {\n color: color-yiq($white);\n }\n }\n }\n\n &.card-outline {\n border-top: 3px solid $color;\n }\n }\n\n &.card-outline-tabs {\n .card-header {\n a {\n &:hover {\n border-top: 3px solid $nav-tabs-border-color;\n }\n\n &.active {\n border-top: 3px solid $color;\n }\n }\n }\n }\n }\n\n .bg-#{$name},\n .bg-gradient-#{$name},\n .card-#{$name}:not(.card-outline) {\n .btn-tool {\n color: rgba(color-yiq($color), 0.8);\n\n &:hover {\n color: color-yiq($color);\n }\n }\n }\n\n .card.bg-#{$name},\n .card.bg-gradient-#{$name} {\n .bootstrap-datetimepicker-widget {\n .table td,\n .table th {\n border: none;\n }\n\n table thead tr:first-child th:hover,\n table td.day:hover,\n table td.hour:hover,\n table td.minute:hover,\n table td.second:hover {\n background: darken($color, 8%);\n color: color-yiq($color);\n }\n\n table td.today::before {\n border-bottom-color: color-yiq($color);\n }\n\n table td.active,\n table td.active:hover {\n background: lighten($color, 10%);\n color: color-yiq($color);\n }\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Sidebar\n//\n\n// Sidebar Color\n@mixin sidebar-color($color) {\n .nav-sidebar > .nav-item {\n & > .nav-link.active {\n background-color: $color;\n color: color-yiq($color);\n }\n }\n\n .nav-sidebar.nav-legacy > .nav-item {\n & > .nav-link.active {\n border-color: $color;\n }\n }\n}\n\n// Sidebar Mini Breakpoints\n@mixin sidebar-mini-breakpoint() {\n // A fix for text overflow while transitioning from sidebar mini to full sidebar\n .nav-sidebar,\n .nav-sidebar > .nav-header,\n .nav-sidebar .nav-link {\n white-space: nowrap;\n overflow: hidden;\n }\n\n // When the sidebar is collapsed...\n &.sidebar-collapse {\n .d-hidden-mini {\n display: none;\n }\n\n // Apply the new margins to the main content and footer\n .content-wrapper,\n .main-footer,\n .main-header {\n margin-left: $sidebar-mini-width !important;\n }\n\n // Make the sidebar headers\n .nav-sidebar .nav-header {\n display: none;\n }\n\n .nav-sidebar .nav-link p {\n width: 0;\n }\n\n .sidebar .user-panel > .info,\n .nav-sidebar .nav-link p,\n .brand-text {\n margin-left: -10px;\n opacity: 0;\n visibility: hidden;\n }\n\n .logo-xl {\n opacity: 0;\n visibility: hidden;\n }\n\n .logo-xs {\n display: inline-block;\n opacity: 1;\n visibility: visible;\n }\n\n // Modify the sidebar to shrink instead of disappearing\n .main-sidebar {\n overflow-x: hidden;\n\n &,\n &::before {\n // Don't go away! Just shrink\n margin-left: 0;\n width: $sidebar-mini-width;\n }\n\n .user-panel {\n .image {\n float: none;\n }\n }\n\n &:hover,\n &.sidebar-focused {\n width: $sidebar-width;\n\n .nav-sidebar.nav-child-indent .nav-treeview {\n padding-left: 1rem;\n }\n\n .brand-link {\n width: $sidebar-width;\n }\n\n .user-panel {\n text-align: left;\n\n .image {\n float: left;\n }\n }\n\n .user-panel > .info,\n .nav-sidebar .nav-link p,\n .brand-text,\n .logo-xl {\n display: inline-block;\n margin-left: 0;\n opacity: 1;\n visibility: visible;\n }\n\n .nav-flat {\n .nav-icon {\n margin-left: 0;\n }\n\n .nav-treeview {\n .nav-icon {\n margin-left: -.2rem;\n }\n }\n }\n\n .logo-xs {\n opacity: 0;\n visibility: hidden;\n }\n\n .brand-image {\n margin-right: .5rem;\n }\n\n // Make the sidebar links, menus, labels, badges\n // and angle icons disappear\n .sidebar-form,\n .user-panel > .info {\n display: block !important;\n -webkit-transform: translateZ(0);\n }\n\n .nav-sidebar > .nav-item > .nav-link > span {\n display: inline-block !important;\n }\n }\n }\n\n // Make an element visible only when sidebar mini is active\n .visible-sidebar-mini {\n display: block !important;\n }\n\n &.layout-fixed {\n .main-sidebar:hover {\n .brand-link {\n width: $sidebar-width;\n }\n }\n\n .brand-link {\n width: $sidebar-mini-width;\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Navbar\n//\n\n// Navbar Variant\n@mixin navbar-variant($color, $font-color: rgba(255, 255, 255, 0.8), $hover-color: #f6f6f6, $hover-bg: rgba(0, 0, 0, 0.1)) {\n background-color: $color;\n\n .nav > li > a {\n color: $font-color;\n }\n\n .nav > li > a:hover,\n .nav > li > a:active,\n .nav > li > a:focus,\n .nav .open > a,\n .nav .open > a:hover,\n .nav .open > a:focus,\n .nav > .active > a {\n background: $hover-bg;\n color: $hover-color;\n }\n\n // Add color to the sidebar toggle button\n .sidebar-toggle {\n color: $font-color;\n\n &:hover,\n &:focus {\n background: $hover-bg;\n color: $hover-color;\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Accent\n//\n\n// Accent Variant\n@mixin accent-variant($name, $color) {\n .accent-#{$name} {\n $link-color: $color;\n $link-hover-color: darken($color, 15%);\n $pagination-active-bg: $color;\n $pagination-active-border-color: $color;\n\n a {\n color: $link-color;\n\n @include hover {\n color: $link-hover-color;\n }\n }\n\n .page-item {\n &.active .page-link {\n background-color: $pagination-active-bg;\n border-color: $pagination-active-border-color;\n }\n\n &.disabled .page-link {\n background-color: $pagination-disabled-bg;\n border-color: $pagination-disabled-border-color;\n }\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Custom Forms\n//\n\n// Custom Switch Variant\n@mixin custom-switch-variant($name, $color) {\n &.custom-switch-off-#{$name} {\n & .custom-control-input ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input ~ .custom-control-label::after {\n background: darken($color, 25%);\n }\n }\n\n &.custom-switch-on-#{$name} {\n & .custom-control-input:checked ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:checked:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input:checked ~ .custom-control-label::after {\n background: lighten($color, 30%);\n }\n }\n}\n\n// Custom Range Variant\n@mixin custom-range-variant($name, $color) {\n &.custom-range-#{$name} {\n &:focus {\n outline: none;\n\n &::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-moz-range-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-ms-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n }\n\n &::-webkit-slider-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-moz-range-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-ms-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Backgrounds\n//\n\n// Background Variant\n@mixin background-variant($name, $color) {\n .bg-#{$name} {\n background-color: #{$color} !important;\n\n &,\n > a {\n color: color-yiq($color) !important;\n }\n\n &.btn {\n &:hover {\n border-color: darken($color, 10%);\n color: darken(color-yiq($color), 7.5%);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n &:active,\n &.active {\n background-color: darken($color, 10%) !important;\n border-color: darken($color, 12.5%);\n color: color-yiq(darken($color, 10%));\n }\n }\n }\n}\n\n// Background Gradient Variant\n@mixin background-gradient-variant($name, $color) {\n .bg-gradient-#{$name} {\n @include bg-gradient-variant('&', $color);\n color: color-yiq($color);\n\n &.btn {\n &.disabled,\n &:disabled,\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n background-image: none !important;\n }\n\n &:hover {\n @include bg-gradient-variant('&', darken($color, 7.5%));\n border-color: darken($color, 10%);\n color: darken(color-yiq($color), 7.5%);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n &:active,\n &.active {\n @include bg-gradient-variant('&', darken($color, 10%));\n border-color: darken($color, 12.5%);\n color: color-yiq(darken($color, 10%));\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Direct Chat\n//\n\n// Direct Chat Variant\n@mixin direct-chat-variant($bg-color, $color: #fff) {\n .right > .direct-chat-text {\n background: $bg-color;\n border-color: $bg-color;\n color: color-yiq($bg-color);\n\n &::after,\n &::before {\n border-left-color: $bg-color;\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Toasts\n//\n\n// Toast Variant\n@mixin toast-variant($name, $color) {\n &.bg-#{$name} {\n background: rgba($color, .9) !important;\n @if (color-yiq($color) == $yiq-text-light) {\n\n .close {\n color: color-yiq($color);\n text-shadow: 0 1px 0 #000;\n }\n }\n\n .toast-header {\n background: rgba($color, .85);\n color: color-yiq($color);\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Miscellaneous\n//\n\n// ETC\n@mixin translate($x, $y) {\n transform: translate($x, $y);\n}\n\n// Different radius each side\n@mixin border-radius-sides($top-left, $top-right, $bottom-left, $bottom-right) {\n border-radius: $top-left $top-right $bottom-left $bottom-right;\n}\n\n@mixin calc($property, $expression) {\n #{$property}: calc(#{$expression});\n}\n\n@mixin rotate($value) {\n transform: rotate($value);\n}\n\n@mixin animation($animation) {\n animation: $animation;\n}\n\n// Gradient background\n@mixin gradient($color: #F5F5F5, $start: #EEE, $stop: #FFF) {\n background: $color;\n background: -webkit-gradient(linear, left bottom, left top, color-stop(0, $start), color-stop(1, $stop));\n background: -ms-linear-gradient(bottom, $start, $stop);\n background: -moz-linear-gradient(center bottom, $start 0%, $stop 100%);\n background: -o-linear-gradient($stop, $start);\n}\n\n",
|
||||||
|
"//\n// Part: Components\n//\n\n@import '../forms';\n@import '../progress-bars';\n@import '../cards';\n@import '../modals';\n@import '../toasts';\n@import '../buttons';\n@import '../callout';\n@import '../alerts';\n@import '../table';\n@import '../carousel';\n",
|
||||||
|
"//\n// Component: Forms\n//\n \n.form-group {\n &.has-icon {\n position: relative;\n\n .form-control {\n padding-right: 35px;\n }\n\n .form-icon {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n font-size: 1rem;\n // margin-top: -3px;\n padding: $input-btn-padding-y $input-btn-padding-x;\n position: absolute;\n right: 3px;\n top: 0;\n }\n }\n}\n\n// Button groups\n.btn-group-vertical {\n .btn {\n &.btn-flat:first-of-type,\n &.btn-flat:last-of-type {\n @include border-radius(0);\n }\n }\n}\n\n// Support icons in form-control\n.form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height;\n }\n}\n\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height-lg;\n }\n}\n\n.form-group-lg {\n .form-control + .form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height-lg;\n }\n }\n}\n\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height-sm;\n }\n}\n\n.form-group-sm {\n .form-control + .form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height-sm;\n }\n }\n}\n\nlabel:not(.form-check-label, .custom-file-label) {\n font-weight: $font-weight-bold;\n}\n\n.warning-feedback {\n @include font-size($form-feedback-font-size);\n color: theme-color('warning');\n display: none;\n margin-top: $form-feedback-margin-top;\n width: 100%;\n}\n\n.warning-tooltip {\n @include border-radius($form-feedback-tooltip-border-radius);\n @include font-size($form-feedback-tooltip-font-size);\n background-color: rgba(theme-color('warning'), $form-feedback-tooltip-opacity);\n color: color-yiq(theme-color('warning'));\n display: none;\n line-height: $form-feedback-tooltip-line-height;\n margin-top: .1rem;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n position: absolute;\n top: 100%;\n z-index: 5;\n}\n\n.form-control {\n &.is-warning {\n border-color: theme-color('warning');\n\n @if $enable-validation-icons {\n // padding-right: $input-height-inner;\n // background-image: none;\n // background-repeat: no-repeat;\n // background-position: center right $input-height-inner-quarter;\n // background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: theme-color('warning');\n box-shadow: 0 0 0 $input-focus-width rgba(theme-color('warning'), .25);\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n }\n}\n\n// stylelint-disable-next-line selector-no-qualifying-type\ntextarea.form-control {\n &.is-warning {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n}\n\n.custom-select {\n &.is-warning {\n border-color: theme-color('warning');\n\n @if $enable-validation-icons {\n // padding-right: $custom-select-feedback-icon-padding-right;\n // background: $custom-select-background, none $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;\n }\n\n &:focus {\n border-color: theme-color('warning');\n box-shadow: 0 0 0 $input-focus-width rgba(theme-color('warning'), .25);\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n }\n}\n\n\n.form-control-file {\n &.is-warning {\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n }\n}\n\n.form-check-input {\n &.is-warning {\n ~ .form-check-label {\n color: theme-color('warning');\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n }\n}\n\n.custom-control-input.is-warning {\n ~ .custom-control-label {\n color: theme-color('warning');\n\n &::before {\n border-color: theme-color('warning');\n }\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n @include gradient-bg(lighten(theme-color('warning'), 10%));\n border-color: lighten(theme-color('warning'), 10%);\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 $input-focus-width rgba(theme-color('warning'), .25);\n }\n\n &:not(:checked) ~ .custom-control-label::before {\n border-color: theme-color('warning');\n }\n }\n}\n\n// custom file\n.custom-file-input {\n &.is-warning Line truncated
|
||||||
|
"//\n// Component: Progress Bar\n//\n\n//General CSS\n.progress {\n @include box-shadow(none);\n @include border-radius($progress-bar-border-radius);\n\n // Vertical bars\n &.vertical {\n display: inline-block;\n height: 200px;\n margin-right: 10px;\n position: relative;\n width: 30px;\n\n > .progress-bar {\n bottom: 0;\n position: absolute;\n width: 100%;\n }\n\n //Sizes\n &.sm,\n &.progress-sm {\n width: 20px;\n }\n\n &.xs,\n &.progress-xs {\n width: 10px;\n }\n\n &.xxs,\n &.progress-xxs {\n width: 3px;\n }\n }\n}\n\n.progress-group {\n margin-bottom: map-get($spacers, 2);\n}\n\n// size variation\n.progress-sm {\n height: 10px;\n}\n\n.progress-xs {\n height: 7px;\n}\n\n.progress-xxs {\n height: 3px;\n}\n\n// Remove margins from progress bars when put in a table\n.table {\n tr > td {\n .progress {\n margin: 0;\n }\n }\n}\n",
|
||||||
|
"//\n// Component: Cards\n//\n\n.card {\n @include box-shadow($card-shadow);\n margin-bottom: map-get($spacers, 3);\n\n &.bg-dark {\n .card-header {\n border-color: $card-dark-border-color;\n }\n\n &,\n .card-body {\n color: $white;\n }\n }\n\n &.maximized-card {\n height: 100% !important;\n left: 0;\n max-height: 100% !important;\n max-width: 100% !important;\n position: fixed;\n top: 0;\n width: 100% !important;\n z-index: 9999;\n\n &.was-collapsed .card-body {\n display: block !important;\n }\n\n [data-widget='collapse'] {\n display: none;\n }\n\n .card-header,\n .card-footer {\n @include border-radius(0 !important);\n }\n }\n\n // collapsed mode\n &.collapsed-card {\n .card-body,\n .card-footer {\n display: none;\n }\n }\n\n .nav.flex-column {\n > li {\n border-bottom: 1px solid $card-border-color;\n margin: 0;\n\n &:last-of-type {\n border-bottom: 0;\n }\n }\n }\n\n // fixed height to 300px\n &.height-control {\n .card-body {\n max-height: 300px;\n overflow: auto;\n }\n }\n\n .border-right {\n border-right: 1px solid $card-border-color;\n }\n\n .border-left {\n border-left: 1px solid $card-border-color;\n }\n\n &.card-tabs {\n &:not(.card-outline) {\n & .card-header {\n border-bottom: 0;\n\n .nav-item {\n &:first-child .nav-link {\n margin-left: -1px;\n }\n }\n }\n }\n\n &.card-outline {\n .nav-item {\n border-bottom: 0;\n\n &:first-child .nav-link {\n border-left: 0;\n margin-left: 0;\n }\n }\n }\n }\n\n &.card-outline-tabs {\n border-top: 0;\n\n .card-header {\n .nav-item {\n &:first-child .nav-link {\n border-left: 0;\n margin-left: 0;\n }\n }\n\n a {\n border-top: 3px solid transparent;\n\n &:hover {\n border-top: 3px solid $nav-tabs-border-color;\n }\n\n &.active {\n &:hover {\n margin-top: 0;\n }\n }\n }\n }\n }\n\n}\n\n// Maximized Card Body Scroll fix\nhtml.maximized-card {\n overflow: hidden;\n}\n\n// Add clearfix to header, body and footer\n.card-header,\n.card-body,\n.card-footer {\n @include clearfix;\n}\n\n// Box header\n.card-header {\n background-color: transparent;\n border-bottom: 1px solid $card-border-color;\n padding: (($card-spacer-y / 2) * 2) $card-spacer-x;\n position: relative;\n\n @if $enable-rounded {\n @include border-top-radius($border-radius);\n }\n\n .collapsed-card & {\n border-bottom: 0;\n }\n\n > .card-tools {\n float: right;\n margin-right: -$card-spacer-x / 2;\n\n .input-group,\n .nav,\n .pagination {\n margin-bottom: -$card-spacer-y / 2.5;\n margin-top: -$card-spacer-y / 2.5;\n }\n\n [data-toggle='tooltip'] {\n position: relative;\n }\n }\n}\n\n.card-title {\n float: left;\n font-size: $card-title-font-size;\n font-weight: $card-title-font-weight;\n margin: 0;\n}\n\n.card-text {\n clear: both;\n}\n\n\n// Box Tools Buttons\n.btn-tool {\n background: transparent;\n color: $gray-500;\n font-size: $font-size-sm;\n margin: -(($card-spacer-y / 2) * 2) 0;\n padding: .25rem .5rem;\n\n .btn-group.show &,\n &:hover {\n color: $gray-700;\n }\n\n .show &,\n &:focus {\n box-shadow: none !important;\n }\n}\n\n.text-sm {\n .card-title {\n font-size: $card-title-font-size-sm;\n }\n\n .nav-link {\n padding: $card-nav-link-padding-sm-y $card-nav-link-padding-sm-x; \n }\n}\n\n// Box Body\n.card-body {\n // @include border-radius-sides(0, 0, $border-radius, $border-radius);\n // .no-header & {\n // @include border-top-radius($border-radius);\n // }\n\n // Tables within the box body\n > .table {\n margin-bottom: 0;\n\n > thead > tr > th,\n > thead > tr > td {\n border-top-width: 0;\n }\n }\n\n // Calendar within the box body\n .fc {\n margin-top: 5px;\n }\n\n .full-width-chart {\n margin: -19px;\n }\n\n &.p-0 .full-width-chart {\n margin: -9px;\n }\n}\n\n.chart-legend {\n @include list-unstyled;\n margin: 10px 0;\n\n > li {\n @media (max-width: map-get($grid-breakpoints, sm)) {\n float: left;\n margin-right: 10px;\n }\n }\n}\n\n// Comment Box\n.card-comments {\n background: $gray-100;\n\n .card-comment {\n @include clearfix;\n border-bottom: 1px solid $gray-200;\n padding: 8px 0;\n\n &:last-of-type {\n border-bottom: 0;\n }\n\n &:first-of-type {\n padding-top: 0;\n }\n\n img {\n height: $card-img-size;\n width: $card-img-size;\n float: left;\n }\n }\n\n .comment-text {\n color: lighten($gray-700, 20%);\n margin-left: 40px;\n }\n\n .username {\n color: $gray-700;\n display: block;\n font-weight: 600;\n }\n\n .text-muted {\n font-size: 12pLine truncated
|
||||||
|
"//\n// Component: Modals\n//\n\n// Overlay\n.modal-dialog {\n .overlay {\n background-color: $black;\n display: block;\n height: 100%;\n left: 0;\n opacity: .7;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: ($zindex-modal + 2);\n }\n}\n\n\n// BG Color Variations Fixes\n.modal-content {\n &.bg-warning {\n .modal-header,\n .modal-footer {\n border-color: $gray-800;\n }\n }\n\n &.bg-primary,\n &.bg-secondary,\n &.bg-info,\n &.bg-danger,\n &.bg-success, {\n .close {\n color: $white;\n text-shadow: 0 1px 0 #000;\n }\n }\n}\n",
|
||||||
|
"//\n// Component: Toasts\n//\n\n.toasts-top-right {\n position: absolute;\n right: 0;\n top: 0;\n z-index: $zindex-toasts;\n\n &.fixed {\n position: fixed;\n }\n}\n\n.toasts-top-left {\n left: 0;\n position: absolute;\n top: 0;\n z-index: $zindex-toasts;\n\n &.fixed {\n position: fixed;\n }\n}\n\n.toasts-bottom-right {\n bottom: 0;\n position: absolute;\n right: 0;\n z-index: $zindex-toasts;\n\n &.fixed {\n position: fixed;\n }\n}\n\n.toasts-bottom-left {\n bottom: 0;\n left: 0;\n position: absolute;\n z-index: $zindex-toasts;\n\n &.fixed {\n position: fixed;\n }\n}\n\n.toast {\n @each $name, $color in $theme-colors {\n @include toast-variant($name, $color);\n }\n @each $name, $color in $colors {\n @include toast-variant($name, $color);\n }\n}\n",
|
||||||
|
"//\n// Component: Button\n//\n\n.btn {\n &.disabled,\n &:disabled {\n cursor: not-allowed;\n }\n\n // Flat buttons\n &.btn-flat {\n @include border-radius(0);\n border-width: 1px;\n box-shadow: none;\n }\n\n // input file btn\n &.btn-file {\n overflow: hidden;\n position: relative;\n\n > input[type='file'] {\n background: $white;\n cursor: inherit;\n display: block;\n font-size: 100px;\n min-height: 100%;\n min-width: 100%;\n opacity: 0;\n outline: none;\n position: absolute;\n right: 0;\n text-align: right;\n top: 0;\n }\n }\n\n .text-sm & {\n font-size: $font-size-sm !important;\n }\n}\n\n// Button color variations\n.btn-default {\n background-color: $button-default-background-color;\n border-color: $button-default-border-color;\n color: $button-default-color;\n\n &:hover,\n &:active,\n &.hover {\n background-color: darken($button-default-background-color, 5%);\n color: darken($button-default-color, 10%);\n }\n}\n\n// Application buttons\n.btn-app {\n @include border-radius(3px);\n background-color: $button-default-background-color;\n border: 1px solid $button-default-border-color;\n color: $gray-600;\n font-size: 12px;\n height: 60px;\n margin: 0 0 10px 10px;\n min-width: 80px;\n padding: 15px 5px;\n position: relative;\n text-align: center;\n\n // Icons within the btn\n > .fa,\n > .fas,\n > .far,\n > .fab,\n > .glyphicon,\n > .ion {\n display: block;\n font-size: 20px;\n }\n\n &:hover {\n background: $button-default-background-color;\n border-color: darken($button-default-border-color, 20%);\n color: $button-default-color;\n }\n\n &:active,\n &:focus {\n @include box-shadow(inset 0 3px 5px rgba($black, 0.125));\n }\n\n // The badge\n > .badge {\n font-size: 10px;\n font-weight: 400;\n position: absolute;\n right: -10px;\n top: -3px;\n }\n}\n\n// Extra Button Size\n\n.btn-xs {\n @include button-size($button-padding-y-xs, $button-padding-x-xs, $button-font-size-xs, $button-line-height-xs, $button-border-radius-xs);\n}\n",
|
||||||
|
"//\n// Component: Callout\n//\n\n// Base styles (regardless of theme)\n.callout {\n @if $enable-rounded {\n @include border-radius($border-radius);\n }\n\n @if $enable-shadows {\n box-shadow: map-get($elevations, 1);\n } @else {\n border: 1px solid $gray-300;\n }\n\n background-color: $white;\n border-left: 5px solid $gray-200;\n margin-bottom: map-get($spacers, 3);\n padding: 1rem;\n\n a {\n color: $gray-700;\n text-decoration: underline;\n\n &:hover {\n color: $gray-200;\n }\n }\n\n p:last-child {\n margin-bottom: 0;\n }\n\n // Themes for different contexts\n &.callout-danger {\n border-left-color: darken(theme-color('danger'), 10%);\n }\n\n &.callout-warning {\n border-left-color: darken(theme-color('warning'), 10%);\n }\n\n &.callout-info {\n border-left-color: darken(theme-color('info'), 10%);\n }\n\n &.callout-success {\n border-left-color: darken(theme-color('success'), 10%);\n }\n}\n",
|
||||||
|
"//\n// Component: Alert\n//\n\n.alert {\n .icon {\n margin-right: 10px;\n }\n\n .close {\n color: $black;\n opacity: .2;\n\n &:hover {\n opacity: .5;\n }\n }\n\n a {\n color: $white;\n text-decoration: underline;\n }\n}\n\n//Alert Variants\n@each $color, $value in $theme-colors {\n .alert-#{$color} {\n color: color-yiq($value);\n background: $value;\n border-color: darken($value, 5%);\n }\n\n .alert-default-#{$color} {\n @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));\n }\n}\n",
|
||||||
|
"//\n// Component: Table\n//\n\n.table {\n &:not(.table-dark) {\n color: inherit;\n }\n\n // fixed table head\n &.table-head-fixed {\n thead tr:nth-child(1) th {\n background-color: $white;\n border-bottom: 0;\n box-shadow: inset 0 1px 0 $table-border-color,\n inset 0 -1px 0 $table-border-color;\n position: sticky;\n top: 0;\n z-index: 10;\n }\n\n &.table-dark {\n thead tr {\n &:nth-child(1) th {\n background-color: $table-dark-bg;\n box-shadow: inset 0 1px 0 $table-dark-border-color,\n inset 0 -1px 0 $table-dark-border-color;\n }\n }\n }\n }\n\n // no border\n &.no-border {\n &,\n td,\n th {\n border: 0;\n }\n }\n\n // .text-center in tables\n &.text-center {\n &,\n td,\n th {\n text-align: center;\n }\n }\n\n &.table-valign-middle {\n thead > tr > th,\n thead > tr > td,\n tbody > tr > th,\n tbody > tr > td {\n vertical-align: middle;\n }\n }\n\n .card-body.p-0 & {\n thead > tr > th,\n thead > tr > td,\n tbody > tr > th,\n tbody > tr > td {\n &:first-of-type {\n padding-left: map-get($spacers, 4);\n }\n\n &:last-of-type {\n padding-right: map-get($spacers, 4);\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Component: Carousel\n//\n\n.carousel-control {\n &.left,\n &.right {\n background-image: none;\n }\n\n > .fa,\n > .fas,\n > .far,\n > .fab,\n > .glyphicon,\n > .ion {\n display: inline-block;\n font-size: 40px;\n margin-top: -20px;\n position: absolute;\n top: 50%;\n z-index: 5;\n }\n}\n"
|
||||||
|
],
|
||||||
|
"names": [],
|
||||||
|
"mappings": "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 truncated
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
/*!
|
||||||
|
* AdminLTE v3.0.0
|
||||||
|
* Only Components
|
||||||
|
* Author: Colorlib
|
||||||
|
* Website: AdminLTE.io <http://adminlte.io>
|
||||||
|
* License: Open source - MIT <http://opensource.org/licenses/MIT>
|
||||||
|
*/.form-group.has-icon{position:relative}.form-group.has-icon .form-control{padding-right:35px}.form-group.has-icon .form-icon{background-color:transparent;border:0;cursor:pointer;font-size:1rem;padding:.375rem .75rem;position:absolute;right:3px;top:0}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0}.form-control-feedback.fa,.form-control-feedback.fab,.form-control-feedback.far,.form-control-feedback.fas,.form-control-feedback.glyphicon,.form-control-feedback.ion{line-height:calc(2.25rem + 2px)}.input-group-lg+.form-control-feedback.fa,.input-group-lg+.form-control-feedback.fab,.input-group-lg+.form-control-feedback.far,.input-group-lg+.form-control-feedback.fas,.input-group-lg+.form-control-feedback.glyphicon,.input-group-lg+.form-control-feedback.ion,.input-lg+.form-control-feedback.fa,.input-lg+.form-control-feedback.fab,.input-lg+.form-control-feedback.far,.input-lg+.form-control-feedback.fas,.input-lg+.form-control-feedback.glyphicon,.input-lg+.form-control-feedback.ion{line-height:calc(2.875rem + 2px)}.form-group-lg .form-control+.form-control-feedback.fa,.form-group-lg .form-control+.form-control-feedback.fab,.form-group-lg .form-control+.form-control-feedback.far,.form-group-lg .form-control+.form-control-feedback.fas,.form-group-lg .form-control+.form-control-feedback.glyphicon,.form-group-lg .form-control+.form-control-feedback.ion{line-height:calc(2.875rem + 2px)}.input-group-sm+.form-control-feedback.fa,.input-group-sm+.form-control-feedback.fab,.input-group-sm+.form-control-feedback.far,.input-group-sm+.form-control-feedback.fas,.input-group-sm+.form-control-feedback.glyphicon,.input-group-sm+.form-control-feedback.ion,.input-sm+.form-control-feedback.fa,.input-sm+.form-control-feedback.fab,.input-sm+.form-control-feedback.far,.input-sm+.form-control-feedback.fas,.input-sm+.form-control-feedback.glyphicon,.input-sm+.form-control-feedback.ion{line-height:calc(1.8125rem + 2px)}.form-group-sm .form-control+.form-control-feedback.fa,.form-group-sm .form-control+.form-control-feedback.fab,.form-group-sm .form-control+.form-control-feedback.far,.form-group-sm .form-control+.form-control-feedback.fas,.form-group-sm .form-control+.form-control-feedback.glyphicon,.form-group-sm .form-control+.form-control-feedback.ion{line-height:calc(1.8125rem + 2px)}label:not(.form-check-label,.custom-file-label){font-weight:700}.warning-feedback{font-size:80%;color:#ffc107;display:none;margin-top:.25rem;width:100%}.warning-tooltip{border-radius:.25rem;font-size:.875rem;background-color:rgba(255,193,7,.9);color:#1f2d3d;display:none;line-height:1.5;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.form-control.is-warning{border-color:#ffc107}.form-control.is-warning:focus{border-color:#ffc107;box-shadow:0 0 0 0 rgba(255,193,7,.25)}.form-control.is-warning~.warning-feedback,.form-control.is-warning~.warning-tooltip{display:block}textarea.form-control.is-warning{padding-right:2.25rem;background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-warning{border-color:#ffc107}.custom-select.is-warning:focus{border-color:#ffc107;box-shadow:0 0 0 0 rgba(255,193,7,.25)}.custom-select.is-warning~.warning-feedback,.custom-select.is-warning~.warning-tooltip{display:block}.form-control-file.is-warning~.warning-feedback,.form-control-file.is-warning~.warning-tooltip{display:block}.form-check-input.is-warning~.form-check-label{color:#ffc107}.form-check-input.is-warning~.warning-feedback,.form-check-input.is-warning~.warning-tooltip{display:block}.custom-control-input.is-warning~.custom-control-label{color:#ffc107}.custom-control-input.is-warning~.custom-control-label::before{border-color:#ffc107}.custom-control-input.is-warning~.warning-feedback,.custom-control-input.is-warning~.warning-tooltip{display:block}.custom-control-input.is-warning:checked~.custom-control-label::before{background-color:#ffce3a;border-color:#ffce3a}.custom-control-input.is-warning:focus~.custom-control-label::before{box-shadow:0 0 0 0 rgba(255,193,7,.25)}.custom-control-input.is-warning:focus:not(:checked)~.custom-control-label::before{border-color:#ffc107}.custom-file-input.is-warning~.custom-file-label{border-color:#ffc107}.custom-file-input.is-warning~.warning-feedback,.custom-file-input.is-warning~.warning-tooltip{display:block}.custom-file-input.is-warning:focus~.custom-file-label{border-color:#ffc107;box-shadow:0 0 0 0 rgba(255,193,7,.25)}.custom-switch.custom-switch-off-primary .custom-control-input~.custom-control-label::before{background:#007bff;border-color:#004a99}.custom-switch.custom-switch-off-primary .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,123,255,.25)}.custom-switch.custom-switch-off-primary .custom-control-input~.custom-control-label::after{background:#003e80}.custom-switch.custom-switch-on-primary .custom-control-input:checked~.custom-control-lLine truncated
|
||||||
|
/*# sourceMappingURL=adminlte.components.min.css.map */
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":["../../../build/scss/AdminLTE-components.scss","../../../build/scss/_forms.scss","../../../build/scss/_bootstrap-variables.scss","../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../node_modules/bootstrap/scss/mixins/_gradients.scss","../../../build/scss/mixins/_custom-forms.scss","../../../build/scss/_variables.scss","../../../build/scss/_progress-bars.scss","../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss","../../../build/scss/_cards.scss","../../../node_modules/bootstrap/scss/mixins/_clearfix.scss","../../../node_modules/bootstrap/scss/mixins/_lists.scss","../../../build/scss/mixins/_cards.scss","../../../build/scss/_modals.scss","../../../build/scss/_toasts.scss","../../../build/scss/mixins/_toasts.scss","../../../build/scss/_buttons.scss","../../../node_modules/bootstrap/scss/mixins/_buttons.scss","../../../build/scss/_callout.scss","../../../build/scss/_alerts.scss","../../../node_modules/bootstrap/scss/mixins/_alert.scss","../../../node_modules/bootstrap/scss/_functions.scss","../../../build/scss/_table.scss","../../../build/scss/_carousel.scss"],"names":[],"mappings":"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 truncated
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,242 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"file": "adminlte.core.css",
|
||||||
|
"sources": [
|
||||||
|
"../../../build/scss/AdminLTE-core.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_functions.scss",
|
||||||
|
"../../../build/scss/_bootstrap-variables.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/bootstrap.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_functions.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_variables.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_mixins.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/vendor/_rfs.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_deprecate.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_hover.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_image.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_badge.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_resize.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_screen-reader.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_size.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_reset-text.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-emphasis.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-hide.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-truncate.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_visibility.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_alert.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_buttons.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_caret.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_pagination.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_lists.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_list-group.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_nav-divider.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_forms.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_table-row.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_background-variant.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_border-radius.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_gradients.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_transition.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_clearfix.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_grid-framework.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_grid.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_float.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_root.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_reboot.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_type.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_images.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_code.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_grid.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_tables.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_forms.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_buttons.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_transitions.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_dropdown.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_button-group.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_input-group.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_custom-forms.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_nav.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_navbar.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_card.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_breadcrumb.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_pagination.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_badge.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_jumbotron.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_alert.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_progress.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_media.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_list-group.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_close.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_toasts.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_modal.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_tooltip.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_popover.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_carousel.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_spinners.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_utilities.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_align.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_background.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_borders.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_clearfix.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_display.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_embed.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_flex.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_float.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_overflow.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_position.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_screenreaders.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_shadows.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_sizing.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_stretched-link.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_spacing.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_text.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/utilities/_visibility.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_print.scss",
|
||||||
|
"../../../build/scss/_variables.scss",
|
||||||
|
"../../../build/scss/_mixins.scss",
|
||||||
|
"../../../build/scss/mixins/_cards.scss",
|
||||||
|
"../../../build/scss/mixins/_sidebar.scss",
|
||||||
|
"../../../build/scss/mixins/_navbar.scss",
|
||||||
|
"../../../build/scss/mixins/_accent.scss",
|
||||||
|
"../../../build/scss/mixins/_custom-forms.scss",
|
||||||
|
"../../../build/scss/mixins/_backgrounds.scss",
|
||||||
|
"../../../build/scss/mixins/_direct-chat.scss",
|
||||||
|
"../../../build/scss/mixins/_toasts.scss",
|
||||||
|
"../../../build/scss/mixins/_miscellaneous.scss",
|
||||||
|
"../../../build/scss/parts/_core.scss",
|
||||||
|
"../../../build/scss/_layout.scss",
|
||||||
|
"../../../build/scss/_main-header.scss",
|
||||||
|
"../../../build/scss/_brand.scss",
|
||||||
|
"../../../build/scss/_main-sidebar.scss",
|
||||||
|
"../../../build/scss/_sidebar-mini.scss",
|
||||||
|
"../../../build/scss/_control-sidebar.scss",
|
||||||
|
"../../../build/scss/_dropdown.scss",
|
||||||
|
"../../../build/scss/_navs.scss",
|
||||||
|
"../../../build/scss/parts/_miscellaneous.scss",
|
||||||
|
"../../../build/scss/_miscellaneous.scss",
|
||||||
|
"../../../build/scss/_print.scss",
|
||||||
|
"../../../build/scss/_text.scss",
|
||||||
|
"../../../build/scss/_elevation.scss",
|
||||||
|
"../../../build/scss/_colors.scss"
|
||||||
|
],
|
||||||
|
"sourcesContent": [
|
||||||
|
"/*!\n * AdminLTE v3.0.0\n * Only Core\n * Author: Colorlib\n * Website: AdminLTE.io <http://adminlte.io>\n * License: Open source - MIT <http://opensource.org/licenses/MIT>\n */\n// Bootstrap\n// ---------------------------------------------------\n@import '~bootstrap/scss/functions';\n@import 'bootstrap-variables';\n@import '~bootstrap/scss/bootstrap';\n\n// Variables and Mixins\n// ---------------------------------------------------\n@import 'variables';\n@import 'mixins';\n\n@import 'parts/core';\n@import 'parts/miscellaneous';\n",
|
||||||
|
"// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n",
|
||||||
|
"// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n\n//\n// Color system\n//\n\n// stylelint-disable\n$white: #ffffff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n$grays: map-merge((\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n), $grays);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n$colors: map-merge((\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n), $colors);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n$theme-colors: map-merge((\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n), $theme-colors);\n// stylelint-enable\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: #1F2D3D !default;\n$yiq-text-light: $white !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: true !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// stylelint-disable\n$spacer: 1rem !default;\n$spacers: () !default;\n$spacers: map-merge((\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n), $spacers);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n$sizes: map-merge((\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n), $sizes);\n// stylelint-enable\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: none !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layoLine truncated
|
||||||
|
"/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"utilities\";\n@import \"print\";\n",
|
||||||
|
"// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n",
|
||||||
|
"// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$grays: map-merge(\n (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n ),\n $grays\n);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: map-merge(\n (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n ),\n $colors\n);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$theme-colors: map-merge(\n (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n ),\n $theme-colors\n);\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: $gray-900 !default;\n$yiq-text-light: $white !default;\n\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n$spacer: 1rem !default;\n$spacers: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$spacers: map-merge(\n (\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n ),\n $spacers\n);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$sizes: map-merge(\n (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%,\n auto: auto\n ),\n $sizes\n);\n\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decorLine truncated
|
||||||
|
"// Toggles\n//\n// Used in conjunction with global variables to enable certain theme features.\n\n// Vendor\n@import \"vendor/rfs\";\n\n// Deprecate\n@import \"mixins/deprecate\";\n\n// Utilities\n@import \"mixins/breakpoints\";\n@import \"mixins/hover\";\n@import \"mixins/image\";\n@import \"mixins/badge\";\n@import \"mixins/resize\";\n@import \"mixins/screen-reader\";\n@import \"mixins/size\";\n@import \"mixins/reset-text\";\n@import \"mixins/text-emphasis\";\n@import \"mixins/text-hide\";\n@import \"mixins/text-truncate\";\n@import \"mixins/visibility\";\n\n// // Components\n@import \"mixins/alert\";\n@import \"mixins/buttons\";\n@import \"mixins/caret\";\n@import \"mixins/pagination\";\n@import \"mixins/lists\";\n@import \"mixins/list-group\";\n@import \"mixins/nav-divider\";\n@import \"mixins/forms\";\n@import \"mixins/table-row\";\n\n// // Skins\n@import \"mixins/background-variant\";\n@import \"mixins/border-radius\";\n@import \"mixins/box-shadow\";\n@import \"mixins/gradients\";\n@import \"mixins/transition\";\n\n// // Layout\n@import \"mixins/clearfix\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n@import \"mixins/float\";\n",
|
||||||
|
"// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` Line truncated
|
||||||
|
"// Deprecate mixin\n//\n// This mixin can be used to deprecate mixins or functions.\n// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to\n// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)\n@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {\n @if ($enable-deprecation-messages != false and $ignore-warning != true) {\n @warn \"#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.\";\n }\n}\n",
|
||||||
|
"// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n",
|
||||||
|
"// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n",
|
||||||
|
"// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin badge-variant($bg) {\n color: color-yiq($bg);\n background-color: $bg;\n\n @at-root a#{&} {\n @include hover-focus {\n color: color-yiq($bg);\n background-color: darken($bg, 10%);\n }\n\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);\n }\n }\n}\n",
|
||||||
|
"// Resize anything\n\n@mixin resizable($direction) {\n overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`\n resize: $direction; // Options: horizontal, vertical, both\n}\n",
|
||||||
|
"// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n }\n}\n",
|
||||||
|
"// Sizing shortcuts\n\n@mixin size($width, $height: $width) {\n width: $width;\n height: $height;\n @include deprecate(\"`size()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $color !important;\n }\n @if $emphasized-link-hover-darken-percentage != 0 {\n a#{$parent} {\n @include hover-focus {\n color: darken($color, $emphasized-link-hover-darken-percentage) !important;\n }\n }\n }\n}\n",
|
||||||
|
"// CSS image replacement\n@mixin text-hide($ignore-warning: false) {\n // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n\n @include deprecate(\"`text-hide()`\", \"v4.1.0\", \"v5\", $ignore-warning);\n}\n",
|
||||||
|
"// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n @include deprecate(\"`invisible()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin alert-variant($background, $border, $color) {\n color: $color;\n @include gradient-bg($background);\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n",
|
||||||
|
"// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n border-color: $color;\n\n @include hover {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @include border-radius($border-radius, 0);\n}\n",
|
||||||
|
"@mixin caret-down {\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-bottom: 0;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n border-top: 0;\n border-right: $caret-width solid transparent;\n border-bottom: $caret-width solid;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-right {\n border-top: $caret-width solid transparent;\n border-right: 0;\n border-bottom: $caret-width solid transparent;\n border-left: $caret-width solid;\n}\n\n@mixin caret-left {\n border-top: $caret-width solid transparent;\n border-right: $caret-width solid;\n border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n @if $enable-caret {\n &::after {\n display: inline-block;\n margin-left: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @if $direction == down {\n @include caret-down;\n } @else if $direction == up {\n @include caret-up;\n } @else if $direction == right {\n @include caret-right;\n }\n }\n\n @if $direction == left {\n &::after {\n display: none;\n }\n\n &::before {\n display: inline-block;\n margin-right: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @include caret-left;\n }\n }\n\n &:empty::after {\n margin-left: 0;\n }\n }\n}\n",
|
||||||
|
"// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n",
|
||||||
|
"// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n",
|
||||||
|
"// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n\n &.list-group-item-action {\n @include hover-focus {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: $white;\n background-color: $color;\n border-color: $color;\n }\n }\n }\n}\n",
|
||||||
|
"// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) {\n height: 0;\n margin: $margin-y 0;\n overflow: hidden;\n border-top: 1px solid $color;\n}\n",
|
||||||
|
"// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-focus-border-color` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $input-focus-box-shadow;\n }\n }\n}\n\n\n@mixin form-validation-state($state, $color, $icon) {\n .#{$state}-feedback {\n display: none;\n width: 100%;\n margin-top: $form-feedback-margin-top;\n @include font-size($form-feedback-font-size);\n color: $color;\n }\n\n .#{$state}-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n margin-top: .1rem;\n @include font-size($form-feedback-tooltip-font-size);\n line-height: $form-feedback-tooltip-line-height;\n color: color-yiq($color);\n background-color: rgba($color, $form-feedback-tooltip-opacity);\n @include border-radius($form-feedback-tooltip-border-radius);\n }\n\n .form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-image: $icon;\n background-repeat: no-repeat;\n background-position: center right $input-height-inner-quarter;\n background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n // stylelint-disable-next-line selector-no-qualifying-type\n textarea.form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n }\n\n .custom-select {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $custom-select-feedback-icon-padding-right;\n background: $custom-select-background, $icon $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n\n .form-control-file {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .form-check-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .form-check-label {\n color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .custom-control-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-control-label {\n color: $color;\n\n &::before {\n border-color: $color;\n }\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n border-color: lighten($color, 10%);\n @include gradient-bg(lighten($color, 10%));\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n &:not(:checked) ~ .custom-control-label::before {\n border-color: $color;\n }\n }\n }\n }\n\n // custom file\n .custom-file-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-file-label {\n border-color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:focus {\n ~ .custom-file-label {\n border-color: $coLine truncated
|
||||||
|
"// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n\n @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent},\n button#{$parent} {\n @include hover-focus {\n background-color: darken($color, 10%) !important;\n }\n }\n}\n\n@mixin bg-gradient-variant($parent, $color) {\n #{$parent} {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\n }\n}\n",
|
||||||
|
"// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n",
|
||||||
|
"@mixin box-shadow($shadow...) {\n @if $enable-shadows {\n $result: ();\n\n @if (length($shadow) == 1) {\n // We can pass `@include box-shadow(none);`\n $result: $shadow;\n } @else {\n // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`\n @for $i from 1 through length($shadow) {\n @if nth($shadow, $i) != \"none\" {\n $result: append($result, nth($shadow, $i), \"comma\");\n }\n }\n }\n @if (length($result) > 0) {\n box-shadow: $result;\n }\n }\n}\n",
|
||||||
|
"// Gradients\n\n@mixin gradient-bg($color) {\n @if $enable-gradients {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n } @else {\n background-color: $color;\n }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n",
|
||||||
|
"// stylelint-disable property-blacklist\n@mixin transition($transition...) {\n @if $enable-transitions {\n @if length($transition) == 0 {\n transition: $transition-base;\n } @else {\n transition: $transition;\n }\n }\n\n @if $enable-prefers-reduced-motion-media-query {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n",
|
||||||
|
"@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n",
|
||||||
|
"// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n",
|
||||||
|
"/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n@mixin float-left {\n float: left !important;\n @include deprecate(\"The `float-left` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-right {\n float: right !important;\n @include deprecate(\"The `float-right` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-none {\n float: none !important;\n @include deprecate(\"The `float-none` mixin\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
":root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n",
|
||||||
|
"// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -webkit-tap-highlight-color: rgba($black, 0); // 5\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\n// TODO: remove in v5\n// stylelint-disable-next-line selector-list-comma-newline-after\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use\n// the `inherit` value on things like `<th>` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable-next-line selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Remove the bottom border in Firefox 39-.\n// 5. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 4\n text-decoration-skip-ink: none; // 5\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n @include font-size(80%); // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n @include font-size(75%);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/isLine truncated
|
||||||
|
"// stylelint-disable declaration-no-important, selector-list-comma-newline-after\n\n//\n// Headings\n//\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1, .h1 { @include font-size($h1-font-size); }\nh2, .h2 { @include font-size($h2-font-size); }\nh3, .h3 { @include font-size($h3-font-size); }\nh4, .h4 { @include font-size($h4-font-size); }\nh5, .h5 { @include font-size($h5-font-size); }\nh6, .h6 { @include font-size($h6-font-size); }\n\n.lead {\n @include font-size($lead-font-size);\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n.display-1 {\n @include font-size($display1-size);\n font-weight: $display1-weight;\n line-height: $display-line-height;\n}\n.display-2 {\n @include font-size($display2-size);\n font-weight: $display2-weight;\n line-height: $display-line-height;\n}\n.display-3 {\n @include font-size($display3-size);\n font-weight: $display3-weight;\n line-height: $display-line-height;\n}\n.display-4 {\n @include font-size($display4-size);\n font-weight: $display4-weight;\n line-height: $display-line-height;\n}\n\n\n//\n// Horizontal rules\n//\n\nhr {\n margin-top: $hr-margin-y;\n margin-bottom: $hr-margin-y;\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n}\n\n\n//\n// Emphasis\n//\n\nsmall,\n.small {\n @include font-size($small-font-size);\n font-weight: $font-weight-normal;\n}\n\nmark,\n.mark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled;\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n @include font-size(90%);\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $spacer;\n @include font-size($blockquote-font-size);\n}\n\n.blockquote-footer {\n display: block;\n @include font-size($blockquote-small-font-size);\n color: $blockquote-small-color;\n\n &::before {\n content: \"\\2014\\00A0\"; // em dash, nbsp\n }\n}\n",
|
||||||
|
"// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid;\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid;\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: $spacer / 2;\n line-height: 1;\n}\n\n.figure-caption {\n @include font-size($figure-caption-font-size);\n color: $figure-caption-color;\n}\n",
|
||||||
|
"// Inline code\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-break: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n @include box-shadow($kbd-box-shadow);\n\n kbd {\n padding: 0;\n @include font-size(100%);\n font-weight: $nested-kbd-font-weight;\n @include box-shadow(none);\n }\n}\n\n// Blocks of code\npre {\n display: block;\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: $pre-scrollable-max-height;\n overflow-y: scroll;\n}\n",
|
||||||
|
"// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n .container-fluid {\n @include make-container();\n }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n",
|
||||||
|
"//\n// Basic Bootstrap table\n//\n\n.table {\n width: 100%;\n margin-bottom: $spacer;\n color: $table-color;\n background-color: $table-bg; // Reset for nesting within parents with `background-color`.\n\n th,\n td {\n padding: $table-cell-padding;\n vertical-align: top;\n border-top: $table-border-width solid $table-border-color;\n }\n\n thead th {\n vertical-align: bottom;\n border-bottom: (2 * $table-border-width) solid $table-border-color;\n }\n\n tbody + tbody {\n border-top: (2 * $table-border-width) solid $table-border-color;\n }\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n th,\n td {\n padding: $table-cell-padding-sm;\n }\n}\n\n\n// Border versions\n//\n// Add or remove borders all around the table and between all the columns.\n\n.table-bordered {\n border: $table-border-width solid $table-border-color;\n\n th,\n td {\n border: $table-border-width solid $table-border-color;\n }\n\n thead {\n th,\n td {\n border-bottom-width: 2 * $table-border-width;\n }\n }\n}\n\n.table-borderless {\n th,\n td,\n thead th,\n tbody + tbody {\n border: 0;\n }\n}\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n tbody tr:nth-of-type(#{$table-striped-order}) {\n background-color: $table-accent-bg;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n tbody tr {\n @include hover {\n color: $table-hover-color;\n background-color: $table-hover-bg;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n@each $color, $value in $theme-colors {\n @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));\n}\n\n@include table-row-variant(active, $table-active-bg);\n\n\n// Dark styles\n//\n// Same table markup, but inverted color scheme: dark background and light text.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.table {\n .thead-dark {\n th {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n border-color: $table-dark-border-color;\n }\n }\n\n .thead-light {\n th {\n color: $table-head-color;\n background-color: $table-head-bg;\n border-color: $table-border-color;\n }\n }\n}\n\n.table-dark {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n\n th,\n td,\n thead th {\n border-color: $table-dark-border-color;\n }\n\n &.table-bordered {\n border: 0;\n }\n\n &.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-dark-accent-bg;\n }\n }\n\n &.table-hover {\n tbody tr {\n @include hover {\n color: $table-dark-hover-color;\n background-color: $table-dark-hover-bg;\n }\n }\n }\n}\n\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n.table-responsive {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n\n // Prevent double border on horizontal scroll due to use of `display: block;`\n > .table-bordered {\n border: 0;\n }\n }\n }\n }\n}\n",
|
||||||
|
"// stylelint-disable selector-no-qualifying-type\n\n//\n// Textual form controls\n//\n\n.form-control {\n display: block;\n width: 100%;\n height: $input-height;\n padding: $input-padding-y $input-padding-x;\n font-family: $input-font-family;\n @include font-size($input-font-size);\n font-weight: $input-font-weight;\n line-height: $input-line-height;\n color: $input-color;\n background-color: $input-bg;\n background-clip: padding-box;\n border: $input-border-width solid $input-border-color;\n\n // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.\n @include border-radius($input-border-radius, 0);\n\n @include box-shadow($input-box-shadow);\n @include transition($input-transition);\n\n // Unstyle the caret on `<select>`s in IE10+.\n &::-ms-expand {\n background-color: transparent;\n border: 0;\n }\n\n // Customize the `:focus` state to imitate native WebKit styles.\n @include form-control-focus();\n\n // Placeholder\n &::placeholder {\n color: $input-placeholder-color;\n // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n opacity: 1;\n }\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &:disabled,\n &[readonly] {\n background-color: $input-disabled-bg;\n // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n opacity: 1;\n }\n}\n\nselect.form-control {\n &:focus::-ms-value {\n // Suppress the nested default white text on blue background highlight given to\n // the selected option text when the (still closed) <select> receives focus\n // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\n // match the appearance of the native widget.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n}\n\n// Make file inputs better match text inputs by forcing them to new lines.\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n\n//\n// Labels\n//\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n padding-top: calc(#{$input-padding-y} + #{$input-border-width});\n padding-bottom: calc(#{$input-padding-y} + #{$input-border-width});\n margin-bottom: 0; // Override the `<label>/<legend>` default\n @include font-size(inherit); // Override the `<legend>` default\n line-height: $input-line-height;\n}\n\n.col-form-label-lg {\n padding-top: calc(#{$input-padding-y-lg} + #{$input-border-width});\n padding-bottom: calc(#{$input-padding-y-lg} + #{$input-border-width});\n @include font-size($input-font-size-lg);\n line-height: $input-line-height-lg;\n}\n\n.col-form-label-sm {\n padding-top: calc(#{$input-padding-y-sm} + #{$input-border-width});\n padding-bottom: calc(#{$input-padding-y-sm} + #{$input-border-width});\n @include font-size($input-font-size-sm);\n line-height: $input-line-height-sm;\n}\n\n\n// Readonly controls as plain text\n//\n// Apply class to a readonly input to make it appear like regular plain\n// text (without any border, background color, focus indicator)\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: $input-padding-y;\n padding-bottom: $input-padding-y;\n margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n line-height: $input-line-height;\n color: $input-plaintext-color;\n background-color: transparent;\n border: solid transparent;\n border-width: $input-border-width 0;\n\n &.form-control-sm,\n &.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// Repeated in `_input_group.scss` to avoid Sass extend issues.\n\n.form-control-sm {\n height: $input-height-sm;\n padding: $input-padding-y-sm $input-padding-x-sm;\n @include font-size($input-font-size-sm);\n line-height: $input-line-height-sm;\n @include border-radius($input-border-radius-sm);\n}\n\n.form-control-lg {\n height: $input-height-lg;\n padding: $input-padding-y-lg $input-padding-x-lg;\n @include font-size($input-font-size-lg);\n line-height: $input-line-height-lg;\n @include border-radius($input-border-radius-lg);\n}\n\n// stylelint-disable-next-line no-duplicate-selectors\nselect.form-control {\n &[size],\n &[multiple] {\n height: auto;\n }\n}\n\ntextarea.form-control {\n height: auto;\n}\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use Line truncated
|
||||||
|
"// stylelint-disable selector-no-qualifying-type\n\n//\n// Base styles\n//\n\n.btn {\n display: inline-block;\n font-family: $btn-font-family;\n font-weight: $btn-font-weight;\n color: $body-color;\n text-align: center;\n vertical-align: middle;\n user-select: none;\n background-color: transparent;\n border: $btn-border-width solid transparent;\n @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-line-height, $btn-border-radius);\n @include transition($btn-transition);\n\n @include hover {\n color: $body-color;\n text-decoration: none;\n }\n\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: $btn-focus-box-shadow;\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n opacity: $btn-disabled-opacity;\n @include box-shadow(none);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active {\n @include box-shadow($btn-active-box-shadow);\n\n &:focus {\n @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);\n }\n }\n}\n\n// Future-proof disabling of clicks on `<a>` elements\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n\n//\n// Alternate buttons\n//\n\n@each $color, $value in $theme-colors {\n .btn-#{$color} {\n @include button-variant($value, $value);\n }\n}\n\n@each $color, $value in $theme-colors {\n .btn-outline-#{$color} {\n @include button-outline-variant($value);\n }\n}\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n font-weight: $font-weight-normal;\n color: $link-color;\n text-decoration: $link-decoration;\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n\n &:focus,\n &.focus {\n text-decoration: $link-hover-decoration;\n box-shadow: none;\n }\n\n &:disabled,\n &.disabled {\n color: $btn-link-disabled-color;\n pointer-events: none;\n }\n\n // No need for an active state here\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-line-height-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);\n}\n\n\n//\n// Block button\n//\n\n.btn-block {\n display: block;\n width: 100%;\n\n // Vertically space out multiple block buttons\n + .btn-block {\n margin-top: $btn-block-spacing-y;\n }\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n",
|
||||||
|
".fade {\n @include transition($transition-fade);\n\n &:not(.show) {\n opacity: 0;\n }\n}\n\n.collapse {\n &:not(.show) {\n display: none;\n }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n @include transition($transition-collapse);\n}\n",
|
||||||
|
"// The dropdown wrapper (`<div>`)\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n\n // Generate the caret automatically\n @include caret;\n}\n\n// The dropdown menu\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: $zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: $dropdown-min-width;\n padding: $dropdown-padding-y 0;\n margin: $dropdown-spacer 0 0; // override default ul\n @include font-size($dropdown-font-size);\n color: $dropdown-color;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n list-style: none;\n background-color: $dropdown-bg;\n background-clip: padding-box;\n border: $dropdown-border-width solid $dropdown-border-color;\n @include border-radius($dropdown-border-radius);\n @include box-shadow($dropdown-box-shadow);\n}\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .dropdown-menu#{$infix}-left {\n right: auto;\n left: 0;\n }\n\n .dropdown-menu#{$infix}-right {\n right: 0;\n left: auto;\n }\n }\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(up);\n }\n}\n\n.dropright {\n .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(right);\n &::after {\n vertical-align: 0;\n }\n }\n}\n\n.dropleft {\n .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(left);\n &::before {\n vertical-align: 0;\n }\n }\n}\n\n// When enabled Popper.js, reset basic dropdown position\n// stylelint-disable-next-line no-duplicate-selectors\n.dropdown-menu {\n &[x-placement^=\"top\"],\n &[x-placement^=\"right\"],\n &[x-placement^=\"bottom\"],\n &[x-placement^=\"left\"] {\n right: auto;\n bottom: auto;\n }\n}\n\n// Dividers (basically an `<hr>`) within the dropdown\n.dropdown-divider {\n @include nav-divider($dropdown-divider-bg, $dropdown-divider-margin-y);\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `<button>`-specific styles are denoted with `// For <button>s`\n.dropdown-item {\n display: block;\n width: 100%; // For `<button>`s\n padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n clear: both;\n font-weight: $font-weight-normal;\n color: $dropdown-link-color;\n text-align: inherit; // For `<button>`s\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n background-color: transparent; // For `<button>`s\n border: 0; // For `<button>`s\n\n // Prevent dropdown overflow if there's no padding\n // See https://github.com/twbs/bootstrap/pull/27703\n @if $dropdown-padding-y == 0 {\n &:first-child {\n @include border-top-radius($dropdown-inner-border-radius);\n }\n\n &:last-child {\n @include border-bottom-radius($dropdown-inner-border-radius);\n }\n }\n\n @include hover-focus {\n color: $dropdown-link-hover-color;\n text-decoration: none;\n @include gradient-bg($dropdown-link-hover-bg);\n }\n\n &.active,\n &:active {\n color: $dropdown-link-active-color;\n text-decoration: none;\n @include gradient-bg($dropdown-link-active-bg);\n }\n\n &.disabled,\n &:disabled {\n color: $dropdown-link-disabled-color;\n pointer-events: none;\n background-color: transparent;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: $dropdown-padding-y $dropdown-item-padding-x;\n margin-bottom: 0; // for use with heading elements\n @include font-size($font-size-sm);\n color: $dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Dropdown text\n.dropdown-item-text {\n display: block;\n padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n color: $dropdown-link-color;\n}\n",
|
||||||
|
"// stylelint-disable selector-no-qualifying-type\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle; // match .btn alignment given font-size hack above\n\n > .btn {\n position: relative;\n flex: 1 1 auto;\n\n // Bring the hover, focused, and \"active\" buttons to the front to overlay\n // the borders properly\n @include hover {\n z-index: 1;\n }\n &:focus,\n &:active,\n &.active {\n z-index: 1;\n }\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n\n .input-group {\n width: auto;\n }\n}\n\n.btn-group {\n // Prevent double borders when buttons are next to each other\n > .btn:not(:first-child),\n > .btn-group:not(:first-child) {\n margin-left: -$btn-border-width;\n }\n\n // Reset rounded corners\n > .btn:not(:last-child):not(.dropdown-toggle),\n > .btn-group:not(:last-child) > .btn {\n @include border-right-radius(0);\n }\n\n > .btn:not(:first-child),\n > .btn-group:not(:first-child) > .btn {\n @include border-left-radius(0);\n }\n}\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-sm > .btn { @extend .btn-sm; }\n.btn-group-lg > .btn { @extend .btn-lg; }\n\n\n//\n// Split button dropdowns\n//\n\n.dropdown-toggle-split {\n padding-right: $btn-padding-x * .75;\n padding-left: $btn-padding-x * .75;\n\n &::after,\n .dropup &::after,\n .dropright &::after {\n margin-left: 0;\n }\n\n .dropleft &::before {\n margin-right: 0;\n }\n}\n\n.btn-sm + .dropdown-toggle-split {\n padding-right: $btn-padding-x-sm * .75;\n padding-left: $btn-padding-x-sm * .75;\n}\n\n.btn-lg + .dropdown-toggle-split {\n padding-right: $btn-padding-x-lg * .75;\n padding-left: $btn-padding-x-lg * .75;\n}\n\n\n// The clickable button for toggling the menu\n// Set the same inset shadow as the :active state\n.btn-group.show .dropdown-toggle {\n @include box-shadow($btn-active-box-shadow);\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n @include box-shadow(none);\n }\n}\n\n\n//\n// Vertical button groups\n//\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n\n > .btn,\n > .btn-group {\n width: 100%;\n }\n\n > .btn:not(:first-child),\n > .btn-group:not(:first-child) {\n margin-top: -$btn-border-width;\n }\n\n // Reset rounded corners\n > .btn:not(:last-child):not(.dropdown-toggle),\n > .btn-group:not(:last-child) > .btn {\n @include border-bottom-radius(0);\n }\n\n > .btn:not(:first-child),\n > .btn-group:not(:first-child) > .btn {\n @include border-top-radius(0);\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n.btn-group-toggle {\n > .btn,\n > .btn-group > .btn {\n margin-bottom: 0; // Override default `<label>` value\n\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n }\n }\n}\n",
|
||||||
|
"// stylelint-disable selector-no-qualifying-type\n\n//\n// Base styles\n//\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap; // For form validation feedback\n align-items: stretch;\n width: 100%;\n\n > .form-control,\n > .form-control-plaintext,\n > .custom-select,\n > .custom-file {\n position: relative; // For focus state's z-index\n flex: 1 1 auto;\n // Add width 1% and flex-basis auto to ensure that button will not wrap out\n // the column. Applies to IE Edge+ and Firefox. Chrome does not require this.\n width: 1%;\n margin-bottom: 0;\n\n + .form-control,\n + .custom-select,\n + .custom-file {\n margin-left: -$input-border-width;\n }\n }\n\n // Bring the \"active\" form control to the top of surrounding elements\n > .form-control:focus,\n > .custom-select:focus,\n > .custom-file .custom-file-input:focus ~ .custom-file-label {\n z-index: 3;\n }\n\n // Bring the custom file input above the label\n > .custom-file .custom-file-input:focus {\n z-index: 4;\n }\n\n > .form-control,\n > .custom-select {\n &:not(:last-child) { @include border-right-radius(0); }\n &:not(:first-child) { @include border-left-radius(0); }\n }\n\n // Custom file inputs have more complex markup, thus requiring different\n // border-radius overrides.\n > .custom-file {\n display: flex;\n align-items: center;\n\n &:not(:last-child) .custom-file-label,\n &:not(:last-child) .custom-file-label::after { @include border-right-radius(0); }\n &:not(:first-child) .custom-file-label { @include border-left-radius(0); }\n }\n}\n\n\n// Prepend and append\n//\n// While it requires one extra layer of HTML for each, dedicated prepend and\n// append elements allow us to 1) be less clever, 2) simplify our selectors, and\n// 3) support HTML5 form validation.\n\n.input-group-prepend,\n.input-group-append {\n display: flex;\n\n // Ensure buttons are always above inputs for more visually pleasing borders.\n // This isn't needed for `.input-group-text` since it shares the same border-color\n // as our inputs.\n .btn {\n position: relative;\n z-index: 2;\n\n &:focus {\n z-index: 3;\n }\n }\n\n .btn + .btn,\n .btn + .input-group-text,\n .input-group-text + .input-group-text,\n .input-group-text + .btn {\n margin-left: -$input-border-width;\n }\n}\n\n.input-group-prepend { margin-right: -$input-border-width; }\n.input-group-append { margin-left: -$input-border-width; }\n\n\n// Textual addons\n//\n// Serves as a catch-all element for any text or radio/checkbox input you wish\n// to prepend or append to an input.\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: $input-padding-y $input-padding-x;\n margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom\n @include font-size($input-font-size); // Match inputs\n font-weight: $font-weight-normal;\n line-height: $input-line-height;\n color: $input-group-addon-color;\n text-align: center;\n white-space: nowrap;\n background-color: $input-group-addon-bg;\n border: $input-border-width solid $input-group-addon-border-color;\n @include border-radius($input-border-radius);\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n\n// Sizing\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n height: $input-height-lg;\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: $input-padding-y-lg $input-padding-x-lg;\n @include font-size($input-font-size-lg);\n line-height: $input-line-height-lg;\n @include border-radius($input-border-radius-lg);\n}\n\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n height: $input-height-sm;\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: $input-padding-y-sm $input-padding-x-sm;\n @include font-size($input-font-size-sm);\n line-height: $input-line-height-sm;\n @include border-radius($input-border-radius-sm);\n}\n\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n padding-right: $custom-select-padding-x + $custom-select-indicator-padding;\n}\n\n\n// Prepend and append rounded corners\n//\n// These rulesets must come after the sizing ones to properly override sm and lg\n// bordeLine truncated
|
||||||
|
"// Embedded icons from Open Iconic.\n// Released under MIT and copyright 2014 Waybury.\n// https://useiconic.com/open\n\n\n// Checkboxes and radios\n//\n// Base class takes care of all the key behavioral aspects.\n\n.custom-control {\n position: relative;\n display: block;\n min-height: $font-size-base * $line-height-base;\n padding-left: $custom-control-gutter + $custom-control-indicator-size;\n}\n\n.custom-control-inline {\n display: inline-flex;\n margin-right: $custom-control-spacer-x;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1; // Put the input behind the label so it doesn't overlay text\n opacity: 0;\n\n &:checked ~ .custom-control-label::before {\n color: $custom-control-indicator-checked-color;\n border-color: $custom-control-indicator-checked-border-color;\n @include gradient-bg($custom-control-indicator-checked-bg);\n @include box-shadow($custom-control-indicator-checked-box-shadow);\n }\n\n &:focus ~ .custom-control-label::before {\n // the mixin is not used here to make sure there is feedback\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $custom-control-indicator-focus-box-shadow;\n }\n }\n\n &:focus:not(:checked) ~ .custom-control-label::before {\n border-color: $custom-control-indicator-focus-border-color;\n }\n\n &:not(:disabled):active ~ .custom-control-label::before {\n color: $custom-control-indicator-active-color;\n background-color: $custom-control-indicator-active-bg;\n border-color: $custom-control-indicator-active-border-color;\n @include box-shadow($custom-control-indicator-active-box-shadow);\n }\n\n &:disabled {\n ~ .custom-control-label {\n color: $custom-control-label-disabled-color;\n\n &::before {\n background-color: $custom-control-indicator-disabled-bg;\n }\n }\n }\n}\n\n// Custom control indicators\n//\n// Build the custom controls out of pseudo-elements.\n\n.custom-control-label {\n position: relative;\n margin-bottom: 0;\n vertical-align: top;\n\n // Background-color and (when enabled) gradient\n &::before {\n position: absolute;\n top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;\n left: -($custom-control-gutter + $custom-control-indicator-size);\n display: block;\n width: $custom-control-indicator-size;\n height: $custom-control-indicator-size;\n pointer-events: none;\n content: \"\";\n background-color: $custom-control-indicator-bg;\n border: $custom-control-indicator-border-color solid $custom-control-indicator-border-width;\n @include box-shadow($custom-control-indicator-box-shadow);\n }\n\n // Foreground (icon)\n &::after {\n position: absolute;\n top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;\n left: -($custom-control-gutter + $custom-control-indicator-size);\n display: block;\n width: $custom-control-indicator-size;\n height: $custom-control-indicator-size;\n content: \"\";\n background: no-repeat 50% / #{$custom-control-indicator-bg-size};\n }\n}\n\n\n// Checkboxes\n//\n// Tweak just a few things for checkboxes.\n\n.custom-checkbox {\n .custom-control-label::before {\n @include border-radius($custom-checkbox-indicator-border-radius);\n }\n\n .custom-control-input:checked ~ .custom-control-label {\n &::after {\n background-image: $custom-checkbox-indicator-icon-checked;\n }\n }\n\n .custom-control-input:indeterminate ~ .custom-control-label {\n &::before {\n border-color: $custom-checkbox-indicator-indeterminate-border-color;\n @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);\n @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);\n }\n &::after {\n background-image: $custom-checkbox-indicator-icon-indeterminate;\n }\n }\n\n .custom-control-input:disabled {\n &:checked ~ .custom-control-label::before {\n background-color: $custom-control-indicator-checked-disabled-bg;\n }\n &:indeterminate ~ .custom-control-label::before {\n background-color: $custom-control-indicator-checked-disabled-bg;\n }\n }\n}\n\n// Radios\n//\n// Tweak just a few things for radios.\n\n.custom-radio {\n .custom-control-label::before {\n // stylelint-disable-next-line property-blacklist\n border-radius: $custom-radio-indicator-border-radius;\n }\n\n .custom-control-input:checked ~ .custom-control-label {\n &::after {\n background-image: $custom-radio-indicator-icon-checked;\n }\n }\n\n .custom-control-input:disabled {\n &:checked ~ .custom-control-label::before {\n background-color: $custom-control-indicator-checked-disabled-bg;\n }\n }\n}\n\n\n// switches\n//\n// Tweak a few things for switches\n\n.custom-switch {\n padding-left: $custom-switch-width + $custom-control-gutter;\n\n .custom-control-label {\n &::before {\n left: -(Line truncated
|
||||||
|
"// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s or `<ul>`s.\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: $nav-link-padding-y $nav-link-padding-x;\n\n @include hover-focus {\n text-decoration: none;\n }\n\n // Disabled state lightens text\n &.disabled {\n color: $nav-link-disabled-color;\n pointer-events: none;\n cursor: default;\n }\n}\n\n//\n// Tabs\n//\n\n.nav-tabs {\n border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;\n\n .nav-item {\n margin-bottom: -$nav-tabs-border-width;\n }\n\n .nav-link {\n border: $nav-tabs-border-width solid transparent;\n @include border-top-radius($nav-tabs-border-radius);\n\n @include hover-focus {\n border-color: $nav-tabs-link-hover-border-color;\n }\n\n &.disabled {\n color: $nav-link-disabled-color;\n background-color: transparent;\n border-color: transparent;\n }\n }\n\n .nav-link.active,\n .nav-item.show .nav-link {\n color: $nav-tabs-link-active-color;\n background-color: $nav-tabs-link-active-bg;\n border-color: $nav-tabs-link-active-border-color;\n }\n\n .dropdown-menu {\n // Make dropdown border overlap tab border\n margin-top: -$nav-tabs-border-width;\n // Remove the top rounded corners here since there is a hard edge above the menu\n @include border-top-radius(0);\n }\n}\n\n\n//\n// Pills\n//\n\n.nav-pills {\n .nav-link {\n @include border-radius($nav-pills-border-radius);\n }\n\n .nav-link.active,\n .show > .nav-link {\n color: $nav-pills-link-active-color;\n background-color: $nav-pills-link-active-bg;\n }\n}\n\n\n//\n// Justified variants\n//\n\n.nav-fill {\n .nav-item {\n flex: 1 1 auto;\n text-align: center;\n }\n}\n\n.nav-justified {\n .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n }\n}\n\n\n// Tabbable tabs\n//\n// Hide tabbable panes to start, show them when `.active`\n\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n",
|
||||||
|
"// Contents\n//\n// Navbar\n// Navbar brand\n// Navbar nav\n// Navbar text\n// Navbar divider\n// Responsive navbar\n// Navbar position\n// Navbar themes\n\n\n// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap; // allow us to do the line break for collapsing content\n align-items: center;\n justify-content: space-between; // space out brand from logo\n padding: $navbar-padding-y $navbar-padding-x;\n\n // Because flex properties aren't inherited, we need to redeclare these first\n // few properties so that content nested within behave properly.\n > .container,\n > .container-fluid {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n }\n}\n\n\n// Navbar brand\n//\n// Used for brand, project, or site names.\n\n.navbar-brand {\n display: inline-block;\n padding-top: $navbar-brand-padding-y;\n padding-bottom: $navbar-brand-padding-y;\n margin-right: $navbar-padding-x;\n @include font-size($navbar-brand-font-size);\n line-height: inherit;\n white-space: nowrap;\n\n @include hover-focus {\n text-decoration: none;\n }\n}\n\n\n// Navbar nav\n//\n// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).\n\n.navbar-nav {\n display: flex;\n flex-direction: column; // cannot use `inherit` to get the `.navbar`s value\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-link {\n padding-right: 0;\n padding-left: 0;\n }\n\n .dropdown-menu {\n position: static;\n float: none;\n }\n}\n\n\n// Navbar text\n//\n//\n\n.navbar-text {\n display: inline-block;\n padding-top: $nav-link-padding-y;\n padding-bottom: $nav-link-padding-y;\n}\n\n\n// Responsive navbar\n//\n// Custom styles for responsive collapsing and toggling of navbar contents.\n// Powered by the collapse Bootstrap JavaScript plugin.\n\n// When collapsed, prevent the toggleable navbar contents from appearing in\n// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`\n// on the `.navbar` parent.\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n // For always expanded or extra full navbars, ensure content aligns itself\n // properly vertically. Can be easily overridden with flex utilities.\n align-items: center;\n}\n\n// Button for toggling the navbar when in its collapsed state\n.navbar-toggler {\n padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;\n @include font-size($navbar-toggler-font-size);\n line-height: 1;\n background-color: transparent; // remove default button style\n border: $border-width solid transparent; // remove default button style\n @include border-radius($navbar-toggler-border-radius);\n\n @include hover-focus {\n text-decoration: none;\n }\n}\n\n// Keep as a separate element so folks can easily override it with another icon\n// or image file as needed.\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n// Generate series of `.navbar-expand-*` responsive classes for configuring\n// where your navbar collapses.\n.navbar-expand {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n > .container,\n > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n }\n\n @include media-breakpoint-up($next) {\n flex-flow: row nowrap;\n justify-content: flex-start;\n\n .navbar-nav {\n flex-direction: row;\n\n .dropdown-menu {\n position: absolute;\n }\n\n .nav-link {\n padding-right: $navbar-nav-link-padding-x;\n padding-left: $navbar-nav-link-padding-x;\n }\n }\n\n // For nesting containers, have to redeclare for alignment purposes\n > .container,\n > .container-fluid {\n flex-wrap: nowrap;\n }\n\n .navbar-collapse {\n display: flex !important; // stylelint-disable-line declaration-no-important\n\n // Changes flex-bases to auto because of an IE10 bug\n flex-basis: auto;\n }\n\n .navbar-toggler {\n display: none;\n }\n }\n }\n }\n}\n\n\n// Navbar themes\n//\n// Styles for switching between navbars with light or dark background.\n\n// Dark links against a light background\n.navbar-light {\n .navbar-brand {\n color: $navbar-light-brand-color;\n\n @include hover-focus {\n color: $navbar-light-brand-hover-color;\n }\n }\n\n .navbar-nav {\n .nav-link {\n color: $navbar-light-color;\n\n Line truncated
|
||||||
|
"//\n// Base styles\n//\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n word-wrap: break-word;\n background-color: $card-bg;\n background-clip: border-box;\n border: $card-border-width solid $card-border-color;\n @include border-radius($card-border-radius);\n\n > hr {\n margin-right: 0;\n margin-left: 0;\n }\n\n > .list-group:first-child {\n .list-group-item:first-child {\n @include border-top-radius($card-border-radius);\n }\n }\n\n > .list-group:last-child {\n .list-group-item:last-child {\n @include border-bottom-radius($card-border-radius);\n }\n }\n}\n\n.card-body {\n // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n // as much space as possible, ensuring footers are aligned to the bottom.\n flex: 1 1 auto;\n padding: $card-spacer-x;\n color: $card-color;\n}\n\n.card-title {\n margin-bottom: $card-spacer-y;\n}\n\n.card-subtitle {\n margin-top: -$card-spacer-y / 2;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link {\n @include hover {\n text-decoration: none;\n }\n\n + .card-link {\n margin-left: $card-spacer-x;\n }\n}\n\n//\n// Optional textual caps\n//\n\n.card-header {\n padding: $card-spacer-y $card-spacer-x;\n margin-bottom: 0; // Removes the default margin-bottom of <hN>\n color: $card-cap-color;\n background-color: $card-cap-bg;\n border-bottom: $card-border-width solid $card-border-color;\n\n &:first-child {\n @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);\n }\n\n + .list-group {\n .list-group-item:first-child {\n border-top: 0;\n }\n }\n}\n\n.card-footer {\n padding: $card-spacer-y $card-spacer-x;\n background-color: $card-cap-bg;\n border-top: $card-border-width solid $card-border-color;\n\n &:last-child {\n @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);\n }\n}\n\n\n//\n// Header navs\n//\n\n.card-header-tabs {\n margin-right: -$card-spacer-x / 2;\n margin-bottom: -$card-spacer-y;\n margin-left: -$card-spacer-x / 2;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -$card-spacer-x / 2;\n margin-left: -$card-spacer-x / 2;\n}\n\n// Card image\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: $card-img-overlay-padding;\n}\n\n.card-img {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-radius($card-inner-border-radius);\n}\n\n// Card image caps\n.card-img-top {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-top-radius($card-inner-border-radius);\n}\n\n.card-img-bottom {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-bottom-radius($card-inner-border-radius);\n}\n\n\n// Card deck\n\n.card-deck {\n display: flex;\n flex-direction: column;\n\n .card {\n margin-bottom: $card-deck-margin;\n }\n\n @include media-breakpoint-up(sm) {\n flex-flow: row wrap;\n margin-right: -$card-deck-margin;\n margin-left: -$card-deck-margin;\n\n .card {\n display: flex;\n // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n flex: 1 0 0%;\n flex-direction: column;\n margin-right: $card-deck-margin;\n margin-bottom: 0; // Override the default\n margin-left: $card-deck-margin;\n }\n }\n}\n\n\n//\n// Card groups\n//\n\n.card-group {\n display: flex;\n flex-direction: column;\n\n // The child selector allows nested `.card` within `.card-group`\n // to display properly.\n > .card {\n margin-bottom: $card-group-margin;\n }\n\n @include media-breakpoint-up(sm) {\n flex-flow: row wrap;\n // The child selector allows nested `.card` within `.card-group`\n // to display properly.\n > .card {\n // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n flex: 1 0 0%;\n margin-bottom: 0;\n\n + .card {\n margin-left: 0;\n border-left: 0;\n }\n\n // Handle rounded corners\n @if $enable-rounded {\n &:not(:last-child) {\n @include border-right-radius(0);\n\n .card-img-top,\n .card-header {\n // stylelint-disable-next-line property-blacklist\n border-top-right-radius: 0;\n }\n .card-img-bottom,\n .card-footer {\n // stylelint-disable-next-line property-blacklist\n border-bottom-right-radius: 0;\n }\n }\n\n &:not(:first-child) {\n @include border-left-radius(0);\n\n .card-img-top,\n .card-header {\n // stylelint-disable-next-line property-blacklist\n border-top-left-radius: 0;\n }\n Line truncated
|
||||||
|
".breadcrumb {\n display: flex;\n flex-wrap: wrap;\n padding: $breadcrumb-padding-y $breadcrumb-padding-x;\n margin-bottom: $breadcrumb-margin-bottom;\n list-style: none;\n background-color: $breadcrumb-bg;\n @include border-radius($breadcrumb-border-radius);\n}\n\n.breadcrumb-item {\n // The separator between breadcrumbs (by default, a forward-slash: \"/\")\n + .breadcrumb-item {\n padding-left: $breadcrumb-item-padding;\n\n &::before {\n display: inline-block; // Suppress underlining of the separator in modern browsers\n padding-right: $breadcrumb-item-padding;\n color: $breadcrumb-divider-color;\n content: $breadcrumb-divider;\n }\n }\n\n // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built\n // without `<ul>`s. The `::before` pseudo-element generates an element\n // *within* the .breadcrumb-item and thereby inherits the `text-decoration`.\n //\n // To trick IE into suppressing the underline, we give the pseudo-element an\n // underline and then immediately remove it.\n + .breadcrumb-item:hover::before {\n text-decoration: underline;\n }\n // stylelint-disable-next-line no-duplicate-selectors\n + .breadcrumb-item:hover::before {\n text-decoration: none;\n }\n\n &.active {\n color: $breadcrumb-active-color;\n }\n}\n",
|
||||||
|
".pagination {\n display: flex;\n @include list-unstyled();\n @include border-radius();\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: $pagination-padding-y $pagination-padding-x;\n margin-left: -$pagination-border-width;\n line-height: $pagination-line-height;\n color: $pagination-color;\n background-color: $pagination-bg;\n border: $pagination-border-width solid $pagination-border-color;\n\n &:hover {\n z-index: 2;\n color: $pagination-hover-color;\n text-decoration: none;\n background-color: $pagination-hover-bg;\n border-color: $pagination-hover-border-color;\n }\n\n &:focus {\n z-index: 2;\n outline: $pagination-focus-outline;\n box-shadow: $pagination-focus-box-shadow;\n }\n}\n\n.page-item {\n &:first-child {\n .page-link {\n margin-left: 0;\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n\n &.active .page-link {\n z-index: 1;\n color: $pagination-active-color;\n background-color: $pagination-active-bg;\n border-color: $pagination-active-border-color;\n }\n\n &.disabled .page-link {\n color: $pagination-disabled-color;\n pointer-events: none;\n // Opinionated: remove the \"hand\" cursor set previously for .page-link\n cursor: auto;\n background-color: $pagination-disabled-bg;\n border-color: $pagination-disabled-border-color;\n }\n}\n\n\n//\n// Sizing\n//\n\n.pagination-lg {\n @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);\n}\n\n.pagination-sm {\n @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);\n}\n",
|
||||||
|
"// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badge {\n display: inline-block;\n padding: $badge-padding-y $badge-padding-x;\n @include font-size($badge-font-size);\n font-weight: $badge-font-weight;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n @include border-radius($badge-border-radius);\n @include transition($badge-transition);\n\n @at-root a#{&} {\n @include hover-focus {\n text-decoration: none;\n }\n }\n\n // Empty badges collapse automatically\n &:empty {\n display: none;\n }\n}\n\n// Quick fix for badges in buttons\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n// Pill badges\n//\n// Make them extra rounded with a modifier to replace v3's badges.\n\n.badge-pill {\n padding-right: $badge-pill-padding-x;\n padding-left: $badge-pill-padding-x;\n @include border-radius($badge-pill-border-radius);\n}\n\n// Colors\n//\n// Contextual variations (linked badges get darker on :hover).\n\n@each $color, $value in $theme-colors {\n .badge-#{$color} {\n @include badge-variant($value);\n }\n}\n",
|
||||||
|
".jumbotron {\n padding: $jumbotron-padding ($jumbotron-padding / 2);\n margin-bottom: $jumbotron-padding;\n color: $jumbotron-color;\n background-color: $jumbotron-bg;\n @include border-radius($border-radius-lg);\n\n @include media-breakpoint-up(sm) {\n padding: ($jumbotron-padding * 2) $jumbotron-padding;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n @include border-radius(0);\n}\n",
|
||||||
|
"//\n// Base styles\n//\n\n.alert {\n position: relative;\n padding: $alert-padding-y $alert-padding-x;\n margin-bottom: $alert-margin-bottom;\n border: $alert-border-width solid transparent;\n @include border-radius($alert-border-radius);\n}\n\n// Headings for larger alerts\n.alert-heading {\n // Specified to prevent conflicts of changing $headings-color\n color: inherit;\n}\n\n// Provide class for links that match alerts\n.alert-link {\n font-weight: $alert-link-font-weight;\n}\n\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissible {\n padding-right: $close-font-size + $alert-padding-x * 2;\n\n // Adjust close link position\n .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: $alert-padding-y $alert-padding-x;\n color: inherit;\n }\n}\n\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n@each $color, $value in $theme-colors {\n .alert-#{$color} {\n @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));\n }\n}\n",
|
||||||
|
"// Disable animation if transitions are disabled\n@if $enable-transitions {\n @keyframes progress-bar-stripes {\n from { background-position: $progress-height 0; }\n to { background-position: 0 0; }\n }\n}\n\n.progress {\n display: flex;\n height: $progress-height;\n overflow: hidden; // force rounded corners by cropping it\n @include font-size($progress-font-size);\n background-color: $progress-bg;\n @include border-radius($progress-border-radius);\n @include box-shadow($progress-box-shadow);\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n color: $progress-bar-color;\n text-align: center;\n white-space: nowrap;\n background-color: $progress-bar-bg;\n @include transition($progress-bar-transition);\n}\n\n.progress-bar-striped {\n @include gradient-striped();\n background-size: $progress-height $progress-height;\n}\n\n@if $enable-transitions {\n .progress-bar-animated {\n animation: progress-bar-stripes $progress-bar-animation-timing;\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n }\n}\n",
|
||||||
|
".media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n",
|
||||||
|
"// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n display: flex;\n flex-direction: column;\n\n // No need to set list-style: none; since .list-group-item is block level\n padding-left: 0; // reset padding because ul and ol\n margin-bottom: 0;\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive\n// list items. Includes an extra `.active` modifier class for selected items.\n\n.list-group-item-action {\n width: 100%; // For `<button>`s (anchors become 100% by default though)\n color: $list-group-action-color;\n text-align: inherit; // For `<button>`s (anchors inherit)\n\n // Hover state\n @include hover-focus {\n z-index: 1; // Place hover/focus items above their siblings for proper border styling\n color: $list-group-action-hover-color;\n text-decoration: none;\n background-color: $list-group-hover-bg;\n }\n\n &:active {\n color: $list-group-action-active-color;\n background-color: $list-group-action-active-bg;\n }\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: $list-group-item-padding-y $list-group-item-padding-x;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -$list-group-border-width;\n color: $list-group-color;\n background-color: $list-group-bg;\n border: $list-group-border-width solid $list-group-border-color;\n\n &:first-child {\n @include border-top-radius($list-group-border-radius);\n }\n\n &:last-child {\n margin-bottom: 0;\n @include border-bottom-radius($list-group-border-radius);\n }\n\n &.disabled,\n &:disabled {\n color: $list-group-disabled-color;\n pointer-events: none;\n background-color: $list-group-disabled-bg;\n }\n\n // Include both here for `<a>`s and `<button>`s\n &.active {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: $list-group-active-color;\n background-color: $list-group-active-bg;\n border-color: $list-group-active-border-color;\n }\n}\n\n\n// Horizontal\n//\n// Change the layout of list group items from vertical (default) to horizontal.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .list-group-horizontal#{$infix} {\n flex-direction: row;\n\n .list-group-item {\n margin-right: -$list-group-border-width;\n margin-bottom: 0;\n\n &:first-child {\n @include border-left-radius($list-group-border-radius);\n @include border-top-right-radius(0);\n }\n\n &:last-child {\n margin-right: 0;\n @include border-right-radius($list-group-border-radius);\n @include border-bottom-left-radius(0);\n }\n }\n }\n }\n}\n\n\n// Flush list items\n//\n// Remove borders and border-radius to keep list group items edge-to-edge. Most\n// useful within other components (e.g., cards).\n\n.list-group-flush {\n .list-group-item {\n border-right: 0;\n border-left: 0;\n @include border-radius(0);\n\n &:last-child {\n margin-bottom: -$list-group-border-width;\n }\n }\n\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n }\n }\n\n &:last-child {\n .list-group-item:last-child {\n margin-bottom: 0;\n border-bottom: 0;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n@each $color, $value in $theme-colors {\n @include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));\n}\n",
|
||||||
|
".close {\n float: right;\n @include font-size($close-font-size);\n font-weight: $close-font-weight;\n line-height: 1;\n color: $close-color;\n text-shadow: $close-text-shadow;\n opacity: .5;\n\n // Override <a>'s hover style\n @include hover {\n color: $close-color;\n text-decoration: none;\n }\n\n &:not(:disabled):not(.disabled) {\n @include hover-focus {\n opacity: .75;\n }\n }\n}\n\n// Additional properties for button version\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n// stylelint-disable-next-line selector-no-qualifying-type\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n appearance: none;\n}\n\n// Future-proof disabling of clicks on `<a>` elements\n\n// stylelint-disable-next-line selector-no-qualifying-type\na.close.disabled {\n pointer-events: none;\n}\n",
|
||||||
|
".toast {\n max-width: $toast-max-width;\n overflow: hidden; // cheap rounded corners on nested items\n @include font-size($toast-font-size);\n color: $toast-color;\n background-color: $toast-background-color;\n background-clip: padding-box;\n border: $toast-border-width solid $toast-border-color;\n box-shadow: $toast-box-shadow;\n backdrop-filter: blur(10px);\n opacity: 0;\n @include border-radius($toast-border-radius);\n\n &:not(:last-child) {\n margin-bottom: $toast-padding-x;\n }\n\n &.showing {\n opacity: 1;\n }\n\n &.show {\n display: block;\n opacity: 1;\n }\n\n &.hide {\n display: none;\n }\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: $toast-padding-y $toast-padding-x;\n color: $toast-header-color;\n background-color: $toast-header-background-color;\n background-clip: padding-box;\n border-bottom: $toast-border-width solid $toast-header-border-color;\n}\n\n.toast-body {\n padding: $toast-padding-x; // apply to both vertical and horizontal\n}\n",
|
||||||
|
"// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and stuff\n\n\n.modal-open {\n // Kill the scroll on the body\n overflow: hidden;\n\n .modal {\n overflow-x: hidden;\n overflow-y: auto;\n }\n}\n\n// Container that the modal scrolls within\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n z-index: $zindex-modal;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a\n // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\n // See also https://github.com/twbs/bootstrap/issues/17695\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: $modal-dialog-margin;\n // allow clicks to pass through for custom click handling to close modal\n pointer-events: none;\n\n // When fading in the modal, animate it to slide down\n .modal.fade & {\n @include transition($modal-transition);\n transform: $modal-fade-transform;\n }\n .modal.show & {\n transform: $modal-show-transform;\n }\n}\n\n.modal-dialog-scrollable {\n display: flex; // IE10/11\n max-height: calc(100% - #{$modal-dialog-margin * 2});\n\n .modal-content {\n max-height: calc(100vh - #{$modal-dialog-margin * 2}); // IE10/11\n overflow: hidden;\n }\n\n .modal-header,\n .modal-footer {\n flex-shrink: 0;\n }\n\n .modal-body {\n overflow-y: auto;\n }\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - #{$modal-dialog-margin * 2});\n\n // Ensure `modal-dialog-centered` extends the full height of the view (IE10/11)\n &::before {\n display: block; // IE10\n height: calc(100vh - #{$modal-dialog-margin * 2});\n content: \"\";\n }\n\n // Ensure `.modal-body` shows scrollbar (IE10/11)\n &.modal-dialog-scrollable {\n flex-direction: column;\n justify-content: center;\n height: 100%;\n\n .modal-content {\n max-height: none;\n }\n\n &::before {\n content: none;\n }\n }\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`\n // counteract the pointer-events: none; in the .modal-dialog\n color: $modal-content-color;\n pointer-events: auto;\n background-color: $modal-content-bg;\n background-clip: padding-box;\n border: $modal-content-border-width solid $modal-content-border-color;\n @include border-radius($modal-content-border-radius);\n @include box-shadow($modal-content-box-shadow-xs);\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: $zindex-modal-backdrop;\n width: 100vw;\n height: 100vh;\n background-color: $modal-backdrop-bg;\n\n // Fade for backdrop\n &.fade { opacity: 0; }\n &.show { opacity: $modal-backdrop-opacity; }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n display: flex;\n align-items: flex-start; // so the close btn always stays on the upper right corner\n justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends\n padding: $modal-header-padding;\n border-bottom: $modal-header-border-width solid $modal-header-border-color;\n @include border-top-radius($modal-content-border-radius);\n\n .close {\n padding: $modal-header-padding;\n // auto on the left force icon to the right even when there is no .modal-title\n margin: (-$modal-header-padding-y) (-$modal-header-padding-x) (-$modal-header-padding-y) auto;\n }\n}\n\n// Title text within header\n.modal-title {\n margin-bottom: 0;\n line-height: $modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n // Enable `flex-grow: 1` so that the body take up as much space as possible\n // when should there be a fixed height on `.modal-dialog`.\n flex: 1 1 auto;\n padding: $modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n display: flex;\n align-items: center; // vertically center\n justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items\n padding: $modal-inner-padding;\n border-top: $modal-footer-border-width solid $modal-footer-border-color;\n @include border-bottom-radius($modal-content-border-radius);\n\n // Easily place margin between footer elements\n > :not(:first-child) { margin-left: .25rem; }\n > :not(:laLine truncated
|
||||||
|
"// Base class\n.tooltip {\n position: absolute;\n z-index: $zindex-tooltip;\n display: block;\n margin: $tooltip-margin;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n @include reset-text();\n @include font-size($tooltip-font-size);\n // Allow breaking very long words so they don't overflow the tooltip's bounds\n word-wrap: break-word;\n opacity: 0;\n\n &.show { opacity: $tooltip-opacity; }\n\n .arrow {\n position: absolute;\n display: block;\n width: $tooltip-arrow-width;\n height: $tooltip-arrow-height;\n\n &::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n }\n }\n}\n\n.bs-tooltip-top {\n padding: $tooltip-arrow-height 0;\n\n .arrow {\n bottom: 0;\n\n &::before {\n top: 0;\n border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;\n border-top-color: $tooltip-arrow-color;\n }\n }\n}\n\n.bs-tooltip-right {\n padding: 0 $tooltip-arrow-height;\n\n .arrow {\n left: 0;\n width: $tooltip-arrow-height;\n height: $tooltip-arrow-width;\n\n &::before {\n right: 0;\n border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;\n border-right-color: $tooltip-arrow-color;\n }\n }\n}\n\n.bs-tooltip-bottom {\n padding: $tooltip-arrow-height 0;\n\n .arrow {\n top: 0;\n\n &::before {\n bottom: 0;\n border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;\n border-bottom-color: $tooltip-arrow-color;\n }\n }\n}\n\n.bs-tooltip-left {\n padding: 0 $tooltip-arrow-height;\n\n .arrow {\n right: 0;\n width: $tooltip-arrow-height;\n height: $tooltip-arrow-width;\n\n &::before {\n left: 0;\n border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;\n border-left-color: $tooltip-arrow-color;\n }\n }\n}\n\n.bs-tooltip-auto {\n &[x-placement^=\"top\"] {\n @extend .bs-tooltip-top;\n }\n &[x-placement^=\"right\"] {\n @extend .bs-tooltip-right;\n }\n &[x-placement^=\"bottom\"] {\n @extend .bs-tooltip-bottom;\n }\n &[x-placement^=\"left\"] {\n @extend .bs-tooltip-left;\n }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: $tooltip-max-width;\n padding: $tooltip-padding-y $tooltip-padding-x;\n color: $tooltip-color;\n text-align: center;\n background-color: $tooltip-bg;\n @include border-radius($tooltip-border-radius);\n}\n",
|
||||||
|
".popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: $zindex-popover;\n display: block;\n max-width: $popover-max-width;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n @include reset-text();\n @include font-size($popover-font-size);\n // Allow breaking very long words so they don't overflow the popover's bounds\n word-wrap: break-word;\n background-color: $popover-bg;\n background-clip: padding-box;\n border: $popover-border-width solid $popover-border-color;\n @include border-radius($popover-border-radius);\n @include box-shadow($popover-box-shadow);\n\n .arrow {\n position: absolute;\n display: block;\n width: $popover-arrow-width;\n height: $popover-arrow-height;\n margin: 0 $border-radius-lg;\n\n &::before,\n &::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n }\n }\n}\n\n.bs-popover-top {\n margin-bottom: $popover-arrow-height;\n\n > .arrow {\n bottom: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n\n &::before {\n bottom: 0;\n border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;\n border-top-color: $popover-arrow-outer-color;\n }\n\n &::after {\n bottom: $popover-border-width;\n border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;\n border-top-color: $popover-arrow-color;\n }\n }\n}\n\n.bs-popover-right {\n margin-left: $popover-arrow-height;\n\n > .arrow {\n left: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n width: $popover-arrow-height;\n height: $popover-arrow-width;\n margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners\n\n &::before {\n left: 0;\n border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;\n border-right-color: $popover-arrow-outer-color;\n }\n\n &::after {\n left: $popover-border-width;\n border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;\n border-right-color: $popover-arrow-color;\n }\n }\n}\n\n.bs-popover-bottom {\n margin-top: $popover-arrow-height;\n\n > .arrow {\n top: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n\n &::before {\n top: 0;\n border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);\n border-bottom-color: $popover-arrow-outer-color;\n }\n\n &::after {\n top: $popover-border-width;\n border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);\n border-bottom-color: $popover-arrow-color;\n }\n }\n\n // This will remove the popover-header's border just below the arrow\n .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: $popover-arrow-width;\n margin-left: -$popover-arrow-width / 2;\n content: \"\";\n border-bottom: $popover-border-width solid $popover-header-bg;\n }\n}\n\n.bs-popover-left {\n margin-right: $popover-arrow-height;\n\n > .arrow {\n right: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n width: $popover-arrow-height;\n height: $popover-arrow-width;\n margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners\n\n &::before {\n right: 0;\n border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;\n border-left-color: $popover-arrow-outer-color;\n }\n\n &::after {\n right: $popover-border-width;\n border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;\n border-left-color: $popover-arrow-color;\n }\n }\n}\n\n.bs-popover-auto {\n &[x-placement^=\"top\"] {\n @extend .bs-popover-top;\n }\n &[x-placement^=\"right\"] {\n @extend .bs-popover-right;\n }\n &[x-placement^=\"bottom\"] {\n @extend .bs-popover-bottom;\n }\n &[x-placement^=\"left\"] {\n @extend .bs-popover-left;\n }\n}\n\n\n// Offset the popover to account for the popover arrow\n.popover-header {\n padding: $popover-header-padding-y $popover-header-padding-x;\n margin-bottom: 0; // Reset the default from Reboot\n @include font-size($font-size-base);\n color: $popover-header-color;\n background-color: $popover-header-bg;\n border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);\n $offset-border-width: calc(#{$border-radius-lg} - #{$popover-border-width});\n @include border-top-radius($offset-border-width);\n\n &:empty {\n display: none;\n }\n}\n\n.popover-body {\n padding: $popover-body-padding-y $popover-body-padding-x;\n color: $popover-body-color;\n}\n",
|
||||||
|
"// Notes on the classes:\n//\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)\n// even when their scroll action started on a carousel, but for compatibility (with Firefox)\n// we're preventing all actions instead\n// 2. The .carousel-item-left and .carousel-item-right is used to indicate where\n// the active slide is heading.\n// 3. .active.carousel-item is the current slide.\n// 4. .active.carousel-item-left and .active.carousel-item-right is the current\n// slide in its in-transition state. Only one of these occurs at a time.\n// 5. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right\n// is the upcoming slide in transition.\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n @include clearfix();\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n backface-visibility: hidden;\n @include transition($carousel-transition);\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n transform: translateX(-100%);\n}\n\n\n//\n// Alternate transitions\n//\n\n.carousel-fade {\n .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n }\n\n .carousel-item.active,\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n z-index: 1;\n opacity: 1;\n }\n\n .active.carousel-item-left,\n .active.carousel-item-right {\n z-index: 0;\n opacity: 0;\n @include transition(0s $carousel-transition-duration opacity);\n }\n}\n\n\n//\n// Left/right controls for nav\n//\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n // Use flex for alignment (1-3)\n display: flex; // 1. allow flex styles\n align-items: center; // 2. vertically center contents\n justify-content: center; // 3. horizontally center contents\n width: $carousel-control-width;\n color: $carousel-control-color;\n text-align: center;\n opacity: $carousel-control-opacity;\n @include transition($carousel-control-transition);\n\n // Hover/focus state\n @include hover-focus {\n color: $carousel-control-color;\n text-decoration: none;\n outline: 0;\n opacity: $carousel-control-hover-opacity;\n }\n}\n.carousel-control-prev {\n left: 0;\n @if $enable-gradients {\n background: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));\n }\n}\n.carousel-control-next {\n right: 0;\n @if $enable-gradients {\n background: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));\n }\n}\n\n// Icons for within\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: $carousel-control-icon-width;\n height: $carousel-control-icon-width;\n background: no-repeat 50% / 100% 100%;\n}\n.carousel-control-prev-icon {\n background-image: $carousel-control-prev-icon-bg;\n}\n.carousel-control-next-icon {\n background-image: $carousel-control-next-icon-bg;\n}\n\n\n// Optional indicator pips\n//\n// Add an ordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0; // override <ol> default\n // Use the .carousel-control's width as margin so we don't overlay those\n margin-right: $carousel-control-width;\n margin-left: $carousel-control-width;\n list-style: none;\n\n li {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: $carousel-indicator-width;\n height: $carousel-indicator-height;\n margin-right: $carousel-indicator-spacer;\n margin-left: $carousel-indicator-spacer;\n text-indent: -999px;\n cursor: pointer;\n background-color: $carousel-indicator-active-bg;\n background-clip: padding-box;\n // Use transparent borders to increase the hit area by 10px on top and bottom.\n border-top: $carousel-indicator-hit-area-height solid transparent;\n border-bottom: $carousel-indicator-hit-area-height solid transparent;\n opacity: .5;\n @include transition($carousel-indicator-transition);\n }\n\n .active {\n opacity: 1;\n }\n}\n\n\n// Optional captions\n//\n//\n\n.carousel-caption {\n position: absolute;\n right: (100% - $carousel-caption-width) / 2;\n bottom: 20px;\n left: (100% - $carousel-caption-width) / 2;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: $carousel-caption-color;\n text-align: center;\n}\n",
|
||||||
|
"//\n// Rotating border\n//\n\n@keyframes spinner-border {\n to { transform: rotate(360deg); }\n}\n\n.spinner-border {\n display: inline-block;\n width: $spinner-width;\n height: $spinner-height;\n vertical-align: text-bottom;\n border: $spinner-border-width solid currentColor;\n border-right-color: transparent;\n // stylelint-disable-next-line property-blacklist\n border-radius: 50%;\n animation: spinner-border .75s linear infinite;\n}\n\n.spinner-border-sm {\n width: $spinner-width-sm;\n height: $spinner-height-sm;\n border-width: $spinner-border-width-sm;\n}\n\n//\n// Growing circle\n//\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n\n.spinner-grow {\n display: inline-block;\n width: $spinner-width;\n height: $spinner-height;\n vertical-align: text-bottom;\n background-color: currentColor;\n // stylelint-disable-next-line property-blacklist\n border-radius: 50%;\n opacity: 0;\n animation: spinner-grow .75s linear infinite;\n}\n\n.spinner-grow-sm {\n width: $spinner-width-sm;\n height: $spinner-height-sm;\n}\n",
|
||||||
|
"@import \"utilities/align\";\n@import \"utilities/background\";\n@import \"utilities/borders\";\n@import \"utilities/clearfix\";\n@import \"utilities/display\";\n@import \"utilities/embed\";\n@import \"utilities/flex\";\n@import \"utilities/float\";\n@import \"utilities/overflow\";\n@import \"utilities/position\";\n@import \"utilities/screenreaders\";\n@import \"utilities/shadows\";\n@import \"utilities/sizing\";\n@import \"utilities/stretched-link\";\n@import \"utilities/spacing\";\n@import \"utilities/text\";\n@import \"utilities/visibility\";\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n.align-baseline { vertical-align: baseline !important; } // Browser default\n.align-top { vertical-align: top !important; }\n.align-middle { vertical-align: middle !important; }\n.align-bottom { vertical-align: bottom !important; }\n.align-text-bottom { vertical-align: text-bottom !important; }\n.align-text-top { vertical-align: text-top !important; }\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n@each $color, $value in $theme-colors {\n @include bg-variant(\".bg-#{$color}\", $value);\n}\n\n@if $enable-gradients {\n @each $color, $value in $theme-colors {\n @include bg-gradient-variant(\".bg-gradient-#{$color}\", $value);\n }\n}\n\n.bg-white {\n background-color: $white !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n",
|
||||||
|
"// stylelint-disable property-blacklist, declaration-no-important\n\n//\n// Border\n//\n\n.border { border: $border-width solid $border-color !important; }\n.border-top { border-top: $border-width solid $border-color !important; }\n.border-right { border-right: $border-width solid $border-color !important; }\n.border-bottom { border-bottom: $border-width solid $border-color !important; }\n.border-left { border-left: $border-width solid $border-color !important; }\n\n.border-0 { border: 0 !important; }\n.border-top-0 { border-top: 0 !important; }\n.border-right-0 { border-right: 0 !important; }\n.border-bottom-0 { border-bottom: 0 !important; }\n.border-left-0 { border-left: 0 !important; }\n\n@each $color, $value in $theme-colors {\n .border-#{$color} {\n border-color: $value !important;\n }\n}\n\n.border-white {\n border-color: $white !important;\n}\n\n//\n// Border-radius\n//\n\n.rounded-sm {\n border-radius: $border-radius-sm !important;\n}\n\n.rounded {\n border-radius: $border-radius !important;\n}\n\n.rounded-top {\n border-top-left-radius: $border-radius !important;\n border-top-right-radius: $border-radius !important;\n}\n\n.rounded-right {\n border-top-right-radius: $border-radius !important;\n border-bottom-right-radius: $border-radius !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: $border-radius !important;\n border-bottom-left-radius: $border-radius !important;\n}\n\n.rounded-left {\n border-top-left-radius: $border-radius !important;\n border-bottom-left-radius: $border-radius !important;\n}\n\n.rounded-lg {\n border-radius: $border-radius-lg !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: $rounded-pill !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n",
|
||||||
|
".clearfix {\n @include clearfix();\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n//\n// Utilities for common `display` values\n//\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @each $value in $displays {\n .d#{$infix}-#{$value} { display: $value !important; }\n }\n }\n}\n\n\n//\n// Utilities for toggling `display` in print\n//\n\n@media print {\n @each $value in $displays {\n .d-print-#{$value} { display: $value !important; }\n }\n}\n",
|
||||||
|
"// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n\n &::before {\n display: block;\n content: \"\";\n }\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n}\n\n@each $embed-responsive-aspect-ratio in $embed-responsive-aspect-ratios {\n $embed-responsive-aspect-ratio-x: nth($embed-responsive-aspect-ratio, 1);\n $embed-responsive-aspect-ratio-y: nth($embed-responsive-aspect-ratio, 2);\n\n .embed-responsive-#{$embed-responsive-aspect-ratio-x}by#{$embed-responsive-aspect-ratio-y} {\n &::before {\n padding-top: percentage($embed-responsive-aspect-ratio-y / $embed-responsive-aspect-ratio-x);\n }\n }\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Flex variation\n//\n// Custom styles for additional flex alignment options.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .flex#{$infix}-row { flex-direction: row !important; }\n .flex#{$infix}-column { flex-direction: column !important; }\n .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }\n .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }\n\n .flex#{$infix}-wrap { flex-wrap: wrap !important; }\n .flex#{$infix}-nowrap { flex-wrap: nowrap !important; }\n .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }\n .flex#{$infix}-fill { flex: 1 1 auto !important; }\n .flex#{$infix}-grow-0 { flex-grow: 0 !important; }\n .flex#{$infix}-grow-1 { flex-grow: 1 !important; }\n .flex#{$infix}-shrink-0 { flex-shrink: 0 !important; }\n .flex#{$infix}-shrink-1 { flex-shrink: 1 !important; }\n\n .justify-content#{$infix}-start { justify-content: flex-start !important; }\n .justify-content#{$infix}-end { justify-content: flex-end !important; }\n .justify-content#{$infix}-center { justify-content: center !important; }\n .justify-content#{$infix}-between { justify-content: space-between !important; }\n .justify-content#{$infix}-around { justify-content: space-around !important; }\n\n .align-items#{$infix}-start { align-items: flex-start !important; }\n .align-items#{$infix}-end { align-items: flex-end !important; }\n .align-items#{$infix}-center { align-items: center !important; }\n .align-items#{$infix}-baseline { align-items: baseline !important; }\n .align-items#{$infix}-stretch { align-items: stretch !important; }\n\n .align-content#{$infix}-start { align-content: flex-start !important; }\n .align-content#{$infix}-end { align-content: flex-end !important; }\n .align-content#{$infix}-center { align-content: center !important; }\n .align-content#{$infix}-between { align-content: space-between !important; }\n .align-content#{$infix}-around { align-content: space-around !important; }\n .align-content#{$infix}-stretch { align-content: stretch !important; }\n\n .align-self#{$infix}-auto { align-self: auto !important; }\n .align-self#{$infix}-start { align-self: flex-start !important; }\n .align-self#{$infix}-end { align-self: flex-end !important; }\n .align-self#{$infix}-center { align-self: center !important; }\n .align-self#{$infix}-baseline { align-self: baseline !important; }\n .align-self#{$infix}-stretch { align-self: stretch !important; }\n }\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .float#{$infix}-left { float: left !important; }\n .float#{$infix}-right { float: right !important; }\n .float#{$infix}-none { float: none !important; }\n }\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n@each $value in $overflows {\n .overflow-#{$value} { overflow: $value !important; }\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Common values\n@each $position in $positions {\n .position-#{$position} { position: $position !important; }\n}\n\n// Shorthand\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-fixed;\n}\n\n.sticky-top {\n @supports (position: sticky) {\n position: sticky;\n top: 0;\n z-index: $zindex-sticky;\n }\n}\n",
|
||||||
|
"//\n// Screenreaders\n//\n\n.sr-only {\n @include sr-only();\n}\n\n.sr-only-focusable {\n @include sr-only-focusable();\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n.shadow-sm { box-shadow: $box-shadow-sm !important; }\n.shadow { box-shadow: $box-shadow !important; }\n.shadow-lg { box-shadow: $box-shadow-lg !important; }\n.shadow-none { box-shadow: none !important; }\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Width and height\n\n@each $prop, $abbrev in (width: w, height: h) {\n @each $size, $length in $sizes {\n .#{$abbrev}-#{$size} { #{$prop}: $length !important; }\n }\n}\n\n.mw-100 { max-width: 100% !important; }\n.mh-100 { max-height: 100% !important; }\n\n// Viewport additional helpers\n\n.min-vw-100 { min-width: 100vw !important; }\n.min-vh-100 { min-height: 100vh !important; }\n\n.vw-100 { width: 100vw !important; }\n.vh-100 { height: 100vh !important; }\n",
|
||||||
|
"//\n// Stretched link\n//\n\n.stretched-link {\n &::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n // Just in case `pointer-events: none` is set on a parent\n pointer-events: auto;\n content: \"\";\n // IE10 bugfix, see https://stackoverflow.com/questions/16947967/ie10-hover-pseudo-class-doesnt-work-without-background-color\n background-color: rgba(0, 0, 0, 0);\n }\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Margin and Padding\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @each $prop, $abbrev in (margin: m, padding: p) {\n @each $size, $length in $spacers {\n .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }\n .#{$abbrev}t#{$infix}-#{$size},\n .#{$abbrev}y#{$infix}-#{$size} {\n #{$prop}-top: $length !important;\n }\n .#{$abbrev}r#{$infix}-#{$size},\n .#{$abbrev}x#{$infix}-#{$size} {\n #{$prop}-right: $length !important;\n }\n .#{$abbrev}b#{$infix}-#{$size},\n .#{$abbrev}y#{$infix}-#{$size} {\n #{$prop}-bottom: $length !important;\n }\n .#{$abbrev}l#{$infix}-#{$size},\n .#{$abbrev}x#{$infix}-#{$size} {\n #{$prop}-left: $length !important;\n }\n }\n }\n\n // Negative margins (e.g., where `.mb-n1` is negative version of `.mb-1`)\n @each $size, $length in $spacers {\n @if $size != 0 {\n .m#{$infix}-n#{$size} { margin: -$length !important; }\n .mt#{$infix}-n#{$size},\n .my#{$infix}-n#{$size} {\n margin-top: -$length !important;\n }\n .mr#{$infix}-n#{$size},\n .mx#{$infix}-n#{$size} {\n margin-right: -$length !important;\n }\n .mb#{$infix}-n#{$size},\n .my#{$infix}-n#{$size} {\n margin-bottom: -$length !important;\n }\n .ml#{$infix}-n#{$size},\n .mx#{$infix}-n#{$size} {\n margin-left: -$length !important;\n }\n }\n }\n\n // Some special margin utils\n .m#{$infix}-auto { margin: auto !important; }\n .mt#{$infix}-auto,\n .my#{$infix}-auto {\n margin-top: auto !important;\n }\n .mr#{$infix}-auto,\n .mx#{$infix}-auto {\n margin-right: auto !important;\n }\n .mb#{$infix}-auto,\n .my#{$infix}-auto {\n margin-bottom: auto !important;\n }\n .ml#{$infix}-auto,\n .mx#{$infix}-auto {\n margin-left: auto !important;\n }\n }\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n//\n// Text\n//\n\n.text-monospace { font-family: $font-family-monospace !important; }\n\n// Alignment\n\n.text-justify { text-align: justify !important; }\n.text-wrap { white-space: normal !important; }\n.text-nowrap { white-space: nowrap !important; }\n.text-truncate { @include text-truncate; }\n\n// Responsive alignment\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .text#{$infix}-left { text-align: left !important; }\n .text#{$infix}-right { text-align: right !important; }\n .text#{$infix}-center { text-align: center !important; }\n }\n}\n\n// Transformation\n\n.text-lowercase { text-transform: lowercase !important; }\n.text-uppercase { text-transform: uppercase !important; }\n.text-capitalize { text-transform: capitalize !important; }\n\n// Weight and italics\n\n.font-weight-light { font-weight: $font-weight-light !important; }\n.font-weight-lighter { font-weight: $font-weight-lighter !important; }\n.font-weight-normal { font-weight: $font-weight-normal !important; }\n.font-weight-bold { font-weight: $font-weight-bold !important; }\n.font-weight-bolder { font-weight: $font-weight-bolder !important; }\n.font-italic { font-style: italic !important; }\n\n// Contextual colors\n\n.text-white { color: $white !important; }\n\n@each $color, $value in $theme-colors {\n @include text-emphasis-variant(\".text-#{$color}\", $value);\n}\n\n.text-body { color: $body-color !important; }\n.text-muted { color: $text-muted !important; }\n\n.text-black-50 { color: rgba($black, .5) !important; }\n.text-white-50 { color: rgba($white, .5) !important; }\n\n// Misc\n\n.text-hide {\n @include text-hide($ignore-warning: true);\n}\n\n.text-decoration-none { text-decoration: none !important; }\n\n.text-break {\n word-break: break-word !important; // IE & < Edge 18\n overflow-wrap: break-word !important;\n}\n\n// Reset\n\n.text-reset { color: inherit !important; }\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n//\n// Visibility utilities\n//\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important, selector-no-qualifying-type\n\n// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request:\n// https://www.phpied.com/delay-loading-your-print-css/\n// ==========================================================================\n\n@if $enable-print-styles {\n @media print {\n *,\n *::before,\n *::after {\n // Bootstrap specific; comment out `color` and `background`\n //color: $black !important; // Black prints faster\n text-shadow: none !important;\n //background: transparent !important;\n box-shadow: none !important;\n }\n\n a {\n &:not(.btn) {\n text-decoration: underline;\n }\n }\n\n // Bootstrap specific; comment the following selector out\n //a[href]::after {\n // content: \" (\" attr(href) \")\";\n //}\n\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n\n // Bootstrap specific; comment the following selector out\n //\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n //\n\n //a[href^=\"#\"]::after,\n //a[href^=\"javascript:\"]::after {\n // content: \"\";\n //}\n\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: $border-width solid $gray-500; // Bootstrap custom code; using `$border-width` instead of 1px\n page-break-inside: avoid;\n }\n\n //\n // Printing Tables:\n // http://css-discuss.incutio.com/wiki/Printing_Tables\n //\n\n thead {\n display: table-header-group;\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Specify a size and min-width to make printing closer across browsers.\n // We don't set margin here because it breaks `size` in Chrome. We also\n // don't use `!important` on `size` as it breaks in Chrome.\n @page {\n size: $print-page-size;\n }\n body {\n min-width: $print-body-min-width !important;\n }\n .container {\n min-width: $print-body-min-width !important;\n }\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .badge {\n border: $border-width solid $black;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: $white !important;\n }\n }\n\n .table-bordered {\n th,\n td {\n border: 1px solid $gray-300 !important;\n }\n }\n\n .table-dark {\n color: inherit;\n\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $table-border-color;\n }\n }\n\n .table .thead-dark th {\n color: inherit;\n border-color: $table-border-color;\n }\n\n // Bootstrap specific changes end\n }\n}\n",
|
||||||
|
"//\n// Core: Variables\n//\n\n// COLORS\n// --------------------------------------------------------\n$blue: #0073b7 !default;\n$navy: #001f3f !default;\n$teal: #39cccc !default;\n$olive: #3d9970 !default;\n$lime: #01ff70 !default;\n$orange: #ff851b !default;\n$fuchsia: #f012be !default;\n$purple: #605ca8 !default;\n$maroon: #d81b60 !default;\n$black: #111 !default;\n$gray-x-light: #d2d6de !default;\n\n$colors: map-merge((\n 'navy': $navy,\n 'olive': $olive,\n 'lime': $lime,\n 'fuchsia': $fuchsia,\n 'maroon': $maroon,\n), $colors);\n\n// LAYOUT\n// --------------------------------------------------------\n\n$font-size-root: 1rem !default;\n\n// Sidebar\n$sidebar-width: 250px !default;\n$sidebar-padding-x: 0.5rem !default;\n$sidebar-padding-y: 0 !default;\n\n// Boxed layout maximum width\n$boxed-layout-max-width: 1250px !default;\n\n// When to show the smaller logo\n$screen-header-collapse: map-get($grid-breakpoints, md) !default;\n\n// Body background (Affects main content background only)\n$main-bg: #f4f6f9 !default;\n\n// Content padding\n$content-padding-y: 0 !default;\n$content-padding-x: $navbar-padding-x !default;\n\n// IMAGE SIZES\n// --------------------------------------------------------\n$img-size-sm: 1.875rem !default;\n$img-size-md: 3.75rem !default;\n$img-size-lg: 6.25rem !default;\n$img-size-push: .625rem !default;\n\n// MAIN HEADER\n// --------------------------------------------------------\n$main-header-bottom-border-width: $border-width !default;\n$main-header-bottom-border-color: $gray-300 !default;\n$main-header-bottom-border: $main-header-bottom-border-width solid $main-header-bottom-border-color !default;\n$main-header-link-padding-y: $navbar-padding-y !default;\n$main-header-link-padding-x: $navbar-padding-x !default;\n$main-header-brand-padding-y: $navbar-brand-padding-y !default;\n$main-header-brand-padding-x: $navbar-padding-x !default;\n$main-header-height-inner: ($nav-link-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height: calc(#{$main-header-height-inner} + #{$main-header-bottom-border-width}) !default;\n$nav-link-sm-padding-y: .35rem !default;\n$nav-link-sm-height: ($font-size-sm * $line-height-sm + $nav-link-sm-padding-y * 1.785) !default;\n$main-header-height-sm-inner: ($nav-link-sm-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height-sm: calc(#{$main-header-height-sm-inner} + #{$main-header-bottom-border-width}) !default;\n\n\n// Main header skins\n$main-header-dark-form-control-bg: hsla(100, 100%, 100%, 0.2) !default;\n$main-header-dark-form-control-focused-bg: hsla(100, 100%, 100%, 0.6) !default;\n$main-header-dark-form-control-focused-color: $gray-800 !default;\n$main-header-dark-form-control-border: 0 !default;\n$main-header-dark-form-control-focused-border: 0 !default;\n$main-header-dark-placeholder-color: hsla(100, 100%, 100%, 0.6) !default;\n\n$main-header-light-form-control-bg: darken($gray-100, 2%) !default;\n$main-header-light-form-control-focused-bg: $gray-200 !default;\n$main-header-light-form-control-focused-color: $gray-800 !default;\n$main-header-light-form-control-border: 0 !default;\n$main-header-light-form-control-focused-border: 0 !default;\n$main-header-light-placeholder-color: hsla(0, 0%, 0%, 0.6) !default;\n\n// MAIN FOOTER\n// --------------------------------------------------------\n$main-footer-padding: 1rem !default;\n$main-footer-padding-sm: $main-footer-padding * .812 !default;\n$main-footer-border-top-width: 1px !default;\n$main-footer-border-top-color: $gray-300 !default;\n$main-footer-border-top: $main-footer-border-top-width solid $main-footer-border-top-color !default;\n$main-footer-height-inner: (($font-size-root * $line-height-base) + ($main-footer-padding * 2)) !default;\n$main-footer-height: calc(#{$main-footer-height-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-height-sm-inner: (($font-size-sm * $line-height-base) + ($main-footer-padding-sm * 2)) !default;\n$main-footer-height-sm: calc(#{$main-footer-height-sm-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-bg: $white;\n\n// SIDEBAR SKINS\n// --------------------------------------------------------\n\n// Dark sidebar\n$sidebar-dark-bg: $dark !default;\n$sidebar-dark-hover-bg: hsla(100, 100%, 100%, 0.1) !default;\n$sidebar-dark-color: #C2C7D0 !default;\n$sidebar-dark-hover-color: $white !default;\n$sidebar-dark-active-color: $white !default;\n$sidebar-dark-submenu-bg: transparent !default;\n$sidebar-dark-submenu-color: #C2C7D0 !default;\n$sidebar-dark-submenu-hover-color: $white !default;\n$sidebar-dark-submenu-hover-bg: $sidebar-dark-hover-bg !default;\n$sidebar-dark-submenu-active-color: $sidebar-dark-bg !default;\n$sidebar-dark-submenu-active-bg: hsla(100, 100%, 100%, 0.9) !default;\n$sidebar-dark-header-color: $white !default;\n\n// Light sidebar\n$sidebar-light-bg: $white !default;\n$sidebar-light-hover-bg: rgba($black, .1) !default;\n$sidebar-light-color: $gray-800 !default;\nLine truncated
|
||||||
|
"//\n// General: Mixins\n//\n\n@import 'mixins/cards';\n@import 'mixins/sidebar';\n@import 'mixins/navbar';\n@import 'mixins/accent';\n@import 'mixins/custom-forms';\n@import 'mixins/backgrounds';\n@import 'mixins/direct-chat';\n@import 'mixins/toasts';\n@import 'mixins/miscellaneous';\n",
|
||||||
|
"//\n// Mixins: Cards Variant\n//\n\n@mixin cards-variant($name, $color) {\n .card-#{$name} {\n &.card-tabs {\n &:not(.card-outline) {\n .card-header {\n background-color: $color;\n\n &,\n a {\n color: color-yiq($color);\n }\n\n a.active {\n color: color-yiq($white);\n }\n }\n }\n\n &.card-outline {\n border-top: 3px solid $color;\n }\n }\n\n &.card-outline-tabs {\n .card-header {\n a {\n &:hover {\n border-top: 3px solid $nav-tabs-border-color;\n }\n\n &.active {\n border-top: 3px solid $color;\n }\n }\n }\n }\n }\n\n .bg-#{$name},\n .bg-gradient-#{$name},\n .card-#{$name}:not(.card-outline) {\n .btn-tool {\n color: rgba(color-yiq($color), 0.8);\n\n &:hover {\n color: color-yiq($color);\n }\n }\n }\n\n .card.bg-#{$name},\n .card.bg-gradient-#{$name} {\n .bootstrap-datetimepicker-widget {\n .table td,\n .table th {\n border: none;\n }\n\n table thead tr:first-child th:hover,\n table td.day:hover,\n table td.hour:hover,\n table td.minute:hover,\n table td.second:hover {\n background: darken($color, 8%);\n color: color-yiq($color);\n }\n\n table td.today::before {\n border-bottom-color: color-yiq($color);\n }\n\n table td.active,\n table td.active:hover {\n background: lighten($color, 10%);\n color: color-yiq($color);\n }\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Sidebar\n//\n\n// Sidebar Color\n@mixin sidebar-color($color) {\n .nav-sidebar > .nav-item {\n & > .nav-link.active {\n background-color: $color;\n color: color-yiq($color);\n }\n }\n\n .nav-sidebar.nav-legacy > .nav-item {\n & > .nav-link.active {\n border-color: $color;\n }\n }\n}\n\n// Sidebar Mini Breakpoints\n@mixin sidebar-mini-breakpoint() {\n // A fix for text overflow while transitioning from sidebar mini to full sidebar\n .nav-sidebar,\n .nav-sidebar > .nav-header,\n .nav-sidebar .nav-link {\n white-space: nowrap;\n overflow: hidden;\n }\n\n // When the sidebar is collapsed...\n &.sidebar-collapse {\n .d-hidden-mini {\n display: none;\n }\n\n // Apply the new margins to the main content and footer\n .content-wrapper,\n .main-footer,\n .main-header {\n margin-left: $sidebar-mini-width !important;\n }\n\n // Make the sidebar headers\n .nav-sidebar .nav-header {\n display: none;\n }\n\n .nav-sidebar .nav-link p {\n width: 0;\n }\n\n .sidebar .user-panel > .info,\n .nav-sidebar .nav-link p,\n .brand-text {\n margin-left: -10px;\n opacity: 0;\n visibility: hidden;\n }\n\n .logo-xl {\n opacity: 0;\n visibility: hidden;\n }\n\n .logo-xs {\n display: inline-block;\n opacity: 1;\n visibility: visible;\n }\n\n // Modify the sidebar to shrink instead of disappearing\n .main-sidebar {\n overflow-x: hidden;\n\n &,\n &::before {\n // Don't go away! Just shrink\n margin-left: 0;\n width: $sidebar-mini-width;\n }\n\n .user-panel {\n .image {\n float: none;\n }\n }\n\n &:hover,\n &.sidebar-focused {\n width: $sidebar-width;\n\n .nav-sidebar.nav-child-indent .nav-treeview {\n padding-left: 1rem;\n }\n\n .brand-link {\n width: $sidebar-width;\n }\n\n .user-panel {\n text-align: left;\n\n .image {\n float: left;\n }\n }\n\n .user-panel > .info,\n .nav-sidebar .nav-link p,\n .brand-text,\n .logo-xl {\n display: inline-block;\n margin-left: 0;\n opacity: 1;\n visibility: visible;\n }\n\n .nav-flat {\n .nav-icon {\n margin-left: 0;\n }\n\n .nav-treeview {\n .nav-icon {\n margin-left: -.2rem;\n }\n }\n }\n\n .logo-xs {\n opacity: 0;\n visibility: hidden;\n }\n\n .brand-image {\n margin-right: .5rem;\n }\n\n // Make the sidebar links, menus, labels, badges\n // and angle icons disappear\n .sidebar-form,\n .user-panel > .info {\n display: block !important;\n -webkit-transform: translateZ(0);\n }\n\n .nav-sidebar > .nav-item > .nav-link > span {\n display: inline-block !important;\n }\n }\n }\n\n // Make an element visible only when sidebar mini is active\n .visible-sidebar-mini {\n display: block !important;\n }\n\n &.layout-fixed {\n .main-sidebar:hover {\n .brand-link {\n width: $sidebar-width;\n }\n }\n\n .brand-link {\n width: $sidebar-mini-width;\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Navbar\n//\n\n// Navbar Variant\n@mixin navbar-variant($color, $font-color: rgba(255, 255, 255, 0.8), $hover-color: #f6f6f6, $hover-bg: rgba(0, 0, 0, 0.1)) {\n background-color: $color;\n\n .nav > li > a {\n color: $font-color;\n }\n\n .nav > li > a:hover,\n .nav > li > a:active,\n .nav > li > a:focus,\n .nav .open > a,\n .nav .open > a:hover,\n .nav .open > a:focus,\n .nav > .active > a {\n background: $hover-bg;\n color: $hover-color;\n }\n\n // Add color to the sidebar toggle button\n .sidebar-toggle {\n color: $font-color;\n\n &:hover,\n &:focus {\n background: $hover-bg;\n color: $hover-color;\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Accent\n//\n\n// Accent Variant\n@mixin accent-variant($name, $color) {\n .accent-#{$name} {\n $link-color: $color;\n $link-hover-color: darken($color, 15%);\n $pagination-active-bg: $color;\n $pagination-active-border-color: $color;\n\n a {\n color: $link-color;\n\n @include hover {\n color: $link-hover-color;\n }\n }\n\n .page-item {\n &.active .page-link {\n background-color: $pagination-active-bg;\n border-color: $pagination-active-border-color;\n }\n\n &.disabled .page-link {\n background-color: $pagination-disabled-bg;\n border-color: $pagination-disabled-border-color;\n }\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Custom Forms\n//\n\n// Custom Switch Variant\n@mixin custom-switch-variant($name, $color) {\n &.custom-switch-off-#{$name} {\n & .custom-control-input ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input ~ .custom-control-label::after {\n background: darken($color, 25%);\n }\n }\n\n &.custom-switch-on-#{$name} {\n & .custom-control-input:checked ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:checked:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input:checked ~ .custom-control-label::after {\n background: lighten($color, 30%);\n }\n }\n}\n\n// Custom Range Variant\n@mixin custom-range-variant($name, $color) {\n &.custom-range-#{$name} {\n &:focus {\n outline: none;\n\n &::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-moz-range-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-ms-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n }\n\n &::-webkit-slider-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-moz-range-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-ms-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Backgrounds\n//\n\n// Background Variant\n@mixin background-variant($name, $color) {\n .bg-#{$name} {\n background-color: #{$color} !important;\n\n &,\n > a {\n color: color-yiq($color) !important;\n }\n\n &.btn {\n &:hover {\n border-color: darken($color, 10%);\n color: darken(color-yiq($color), 7.5%);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n &:active,\n &.active {\n background-color: darken($color, 10%) !important;\n border-color: darken($color, 12.5%);\n color: color-yiq(darken($color, 10%));\n }\n }\n }\n}\n\n// Background Gradient Variant\n@mixin background-gradient-variant($name, $color) {\n .bg-gradient-#{$name} {\n @include bg-gradient-variant('&', $color);\n color: color-yiq($color);\n\n &.btn {\n &.disabled,\n &:disabled,\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n background-image: none !important;\n }\n\n &:hover {\n @include bg-gradient-variant('&', darken($color, 7.5%));\n border-color: darken($color, 10%);\n color: darken(color-yiq($color), 7.5%);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n &:active,\n &.active {\n @include bg-gradient-variant('&', darken($color, 10%));\n border-color: darken($color, 12.5%);\n color: color-yiq(darken($color, 10%));\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Direct Chat\n//\n\n// Direct Chat Variant\n@mixin direct-chat-variant($bg-color, $color: #fff) {\n .right > .direct-chat-text {\n background: $bg-color;\n border-color: $bg-color;\n color: color-yiq($bg-color);\n\n &::after,\n &::before {\n border-left-color: $bg-color;\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Toasts\n//\n\n// Toast Variant\n@mixin toast-variant($name, $color) {\n &.bg-#{$name} {\n background: rgba($color, .9) !important;\n @if (color-yiq($color) == $yiq-text-light) {\n\n .close {\n color: color-yiq($color);\n text-shadow: 0 1px 0 #000;\n }\n }\n\n .toast-header {\n background: rgba($color, .85);\n color: color-yiq($color);\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Miscellaneous\n//\n\n// ETC\n@mixin translate($x, $y) {\n transform: translate($x, $y);\n}\n\n// Different radius each side\n@mixin border-radius-sides($top-left, $top-right, $bottom-left, $bottom-right) {\n border-radius: $top-left $top-right $bottom-left $bottom-right;\n}\n\n@mixin calc($property, $expression) {\n #{$property}: calc(#{$expression});\n}\n\n@mixin rotate($value) {\n transform: rotate($value);\n}\n\n@mixin animation($animation) {\n animation: $animation;\n}\n\n// Gradient background\n@mixin gradient($color: #F5F5F5, $start: #EEE, $stop: #FFF) {\n background: $color;\n background: -webkit-gradient(linear, left bottom, left top, color-stop(0, $start), color-stop(1, $stop));\n background: -ms-linear-gradient(bottom, $start, $stop);\n background: -moz-linear-gradient(center bottom, $start 0%, $stop 100%);\n background: -o-linear-gradient($stop, $start);\n}\n\n",
|
||||||
|
"//\n// Part: Core\n//\n\n@import '../layout';\n@import '../main-header';\n@import '../brand';\n@import '../main-sidebar';\n@import '../sidebar-mini';\n@import '../control-sidebar';\n@import '../dropdown';\n@import '../navs';\n",
|
||||||
|
"//\n// Core: Layout\n//\n\nhtml {\n scroll-behavior: smooth;\n}\n\nhtml,\nbody,\n.wrapper {\n min-height: 100%;\n}\n\n.wrapper {\n position: relative;\n\n & .content-wrapper {\n min-height: calc(100vh - #{$main-header-height} - #{$main-footer-height});\n }\n\n .layout-boxed & {\n @include box-shadow(0 0 10 rgba($black, .3));\n\n &,\n &::before {\n margin: 0 auto;\n max-width: $boxed-layout-max-width;\n }\n\n & .main-sidebar {\n left: inherit;\n }\n }\n\n .layout-navbar-fixed.layout-fixed & {\n .control-sidebar {\n top: $main-header-height;\n }\n\n .main-header.text-sm ~ .control-sidebar {\n top: $main-header-height-sm;\n }\n\n .sidebar {\n margin-top: $main-header-height;\n }\n\n .brand-link.text-sm ~ .sidebar {\n margin-top: $main-header-height-sm;\n }\n }\n\n .layout-navbar-fixed.layout-fixed.text-sm & {\n .control-sidebar {\n top: $main-header-height-sm;\n }\n\n .sidebar {\n margin-top: $main-header-height-sm;\n }\n }\n\n .layout-navbar-fixed.sidebar-collapse & {\n .brand-link {\n height: $main-header-height;\n width: $sidebar-mini-width;\n\n &.text-sm {\n height: $main-header-height-sm;\n }\n }\n }\n\n .layout-navbar-fixed.sidebar-collapse.text-sm & {\n .brand-link {\n height: $main-header-height-sm;\n }\n }\n\n .layout-navbar-fixed & {\n .control-sidebar {\n top: 0;\n }\n\n a.anchor {\n display: block;\n position: relative;\n top: calc((#{$main-header-height-inner} + #{$main-header-bottom-border-width} + (#{$main-header-link-padding-y} * 2)) / -1);\n }\n\n .main-sidebar:hover {\n .brand-link {\n transition: width $transition-speed $transition-fn;\n width: $sidebar-width;\n }\n }\n\n .brand-link {\n overflow: hidden;\n position: fixed;\n top: 0;\n transition: width $transition-speed $transition-fn;\n width: $sidebar-width;\n z-index: $zindex-main-header + 1;\n }\n\n // Sidebar variants brand-link fix\n @each $name, $color in $theme-colors {\n .sidebar-dark-#{$name} .brand-link:not([class*=\"navbar\"]) {\n background-color: $sidebar-dark-bg;\n }\n\n .sidebar-light-#{$name} .brand-link:not([class*=\"navbar\"]) {\n background-color: $sidebar-light-bg;\n }\n }\n\n .content-wrapper {\n margin-top: $main-header-height;\n }\n\n .main-header.text-sm ~ .content-wrapper {\n margin-top: $main-header-height-sm;\n }\n\n .main-header {\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n z-index: $zindex-main-header - 1;\n }\n }\n\n .layout-navbar-fixed.text-sm & {\n .content-wrapper {\n margin-top: $main-header-height-sm;\n }\n }\n\n .layout-navbar-not-fixed & {\n .brand-link {\n position: static;\n }\n\n .sidebar,\n .content-wrapper {\n margin-top: 0;\n }\n\n .main-header {\n position: static;\n }\n }\n\n .layout-navbar-not-fixed.layout-fixed & {\n .sidebar {\n margin-top: 0;\n }\n }\n\n @each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .layout#{$infix}-navbar-fixed.layout-fixed & {\n .control-sidebar {\n top: $main-header-height;\n }\n\n .text-sm & .main-header ~ .control-sidebar,\n .main-header.text-sm ~ .control-sidebar {\n top: $main-header-height-sm;\n }\n\n .sidebar {\n margin-top: $main-header-height;\n }\n\n .text-sm & .brand-link ~ .sidebar,\n .brand-link.text-sm ~ .sidebar {\n margin-top: $main-header-height-sm;\n }\n }\n\n .layout#{$infix}-navbar-fixed.layout-fixed.text-sm & {\n .control-sidebar {\n top: $main-header-height-sm;\n }\n\n .sidebar {\n margin-top: $main-header-height-sm;\n }\n }\n\n .layout#{$infix}-navbar-fixed & {\n .control-sidebar {\n top: 0;\n }\n\n a.anchor {\n display: block;\n position: relative;\n top: calc((#{$main-header-height-inner} + #{$main-header-bottom-border-width} + (#{$main-header-link-padding-y} * 2)) / -1);\n }\n\n &.sidebar-collapse {\n .brand-link {\n height: $main-header-height;\n transition: width $transition-speed $transition-fn;\n width: $sidebar-mini-width;\n\n .text-sm &,\n &.text-sm {\n height: $main-header-height-sm;\n }\n }\n\n .main-sidebar:hover {\n .brand-link {\n transition: width $transition-speed $transition-fn;\n width: $sidebar-width;\n }\n }\n }\n\n .brand-link {\n overflow: hidden;\n Line truncated
|
||||||
|
"//\n// Component: Main Header\n//\n \n.main-header {\n border-bottom: $main-header-bottom-border;\n z-index: $zindex-main-header;\n\n .nav-link {\n height: $nav-link-height;\n position: relative;\n }\n\n .text-sm &,\n &.text-sm {\n .nav-link {\n height: $nav-link-sm-height;\n padding: $nav-link-sm-padding-y $nav-link-padding-x;\n\n > .fa,\n > .fas,\n > .far,\n > .fab,\n > .glyphicon,\n > .ion {\n font-size: $font-size-sm;\n }\n }\n\n }\n\n .navbar-nav {\n .nav-item {\n margin: 0;\n }\n\n &[class*='-right'] {\n .dropdown-menu {\n left: auto;\n margin-top: -3px;\n right: 0;\n\n @media (max-width: breakpoint-max(xs)) {\n left: 0;\n right: auto;\n }\n }\n }\n }\n}\n\n// Add this class to images within a nav-link\n.navbar-img {\n height: $main-header-height / 2;\n width: auto;\n}\n\n// Navbar badge\n.navbar-badge {\n font-size: .6rem;\n font-weight: 300;\n padding: 2px 4px;\n position: absolute;\n right: 5px;\n top: 9px;\n}\n\n.btn-navbar {\n background-color: transparent;\n border-left-width: 0;\n}\n\n.form-control-navbar {\n border-right-width: 0;\n\n & + .input-group-append {\n margin-left: 0;\n }\n}\n\n.form-control-navbar,\n.btn-navbar {\n transition: none;\n}\n\n.navbar-dark {\n .form-control-navbar,\n .btn-navbar {\n background-color: $main-header-dark-form-control-bg;\n border: $main-header-dark-form-control-border;\n }\n\n .form-control-navbar {\n &::placeholder {\n color: $main-header-dark-placeholder-color;\n }\n\n + .input-group-append > .btn-navbar {\n color: $main-header-dark-placeholder-color;\n }\n\n &:focus {\n &,\n & + .input-group-append .btn-navbar {\n background-color: $main-header-dark-form-control-focused-bg;\n border: $main-header-dark-form-control-focused-border !important;\n color: $main-header-dark-form-control-focused-color;\n }\n }\n }\n}\n\n.navbar-light {\n .form-control-navbar,\n .btn-navbar {\n background-color: $main-header-light-form-control-bg;\n border: $main-header-light-form-control-border;\n }\n\n .form-control-navbar {\n &::placeholder {\n color: $main-header-light-placeholder-color;\n }\n\n + .input-group-append > .btn-navbar {\n color: $main-header-light-placeholder-color;\n }\n\n &:focus {\n &,\n & + .input-group-append .btn-navbar {\n background-color: $main-header-light-form-control-focused-bg;\n border: $main-header-light-form-control-focused-border !important;\n color: $main-header-light-form-control-focused-color;\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Component: Brand\n//\n\n.brand-link {\n $brand-link-padding-y: $navbar-brand-padding-y + $navbar-padding-y;\n display: block;\n font-size: $navbar-brand-font-size;\n line-height: $line-height-lg;\n padding: $brand-link-padding-y $sidebar-padding-x;\n transition: width $transition-speed $transition-fn;\n white-space: nowrap;\n\n &:hover {\n color: $white;\n text-decoration: none;\n }\n\n .text-sm & {\n font-size: inherit;\n }\n\n [class*='sidebar-dark'] & {\n border-bottom: 1px solid lighten($dark, 10%);\n color: rgba($white, .8);\n }\n\n [class*='sidebar-light'] & {\n border-bottom: 1px solid $gray-300;\n color: rgba($black, .8);\n }\n\n .brand-image {\n float: left;\n line-height: .8;\n margin-left: .8rem;\n margin-right: .5rem;\n margin-top: -3px;\n max-height: 33px;\n width: auto;\n }\n\n .brand-image-xs {\n float: left;\n line-height: .8;\n margin-top: -.1rem;\n max-height: 33px;\n width: auto;\n }\n\n .brand-image-xl {\n line-height: .8;\n max-height: 40px;\n width: auto;\n }\n\n &.text-sm,\n .text-sm & {\n .brand-image {\n height: 29px;\n margin-bottom: -.25rem;\n margin-left: .95rem;\n margin-top: -.25rem;\n }\n\n .brand-image-xs {\n margin-top: -.2rem;\n max-height: 29px;\n }\n\n .brand-image-xl {\n margin-top: -.225rem;\n max-height: 38px;\n }\n }\n}\n",
|
||||||
|
"//\n// Component: Main Sidebar\n//\n\n.main-sidebar {\n height: 100vh;\n overflow-y: hidden;\n z-index: $zindex-main-sidebar;\n}\n\n.sidebar {\n height: calc(100% - 4rem);\n overflow-y: auto;\n padding-bottom: $sidebar-padding-y;\n padding-left: $sidebar-padding-x;\n padding-right: $sidebar-padding-x;\n padding-top: $sidebar-padding-y;\n}\n\n// Sidebar user panel\n.user-panel {\n position: relative;\n\n [class*='sidebar-dark'] & {\n border-bottom: 1px solid lighten($dark, 12%);\n }\n\n [class*='sidebar-light'] & {\n border-bottom: 1px solid $gray-300;\n }\n\n &,\n .info {\n overflow: hidden;\n white-space: nowrap;\n }\n\n .image {\n display: inline-block;\n padding-left: $nav-link-padding-x - .2;\n }\n\n img {\n height: auto;\n width: $sidebar-user-image-width;\n }\n\n .info {\n display: inline-block;\n padding: 5px 5px 5px 10px;\n }\n\n .status,\n .dropdown-menu {\n font-size: $font-size-sm;\n }\n}\n\n// Sidebar navigation menu\n.nav-sidebar {\n // All levels\n .nav-item {\n > .nav-link {\n margin-bottom: .2rem;\n\n .right {\n @include transition(transform $transition-fn $transition-speed);\n }\n }\n }\n\n .nav-link > .right,\n .nav-link > p > .right {\n position: absolute;\n right: 1rem;\n top: .7rem;\n\n i,\n span {\n margin-left: .5rem;\n }\n\n &:nth-child(2) {\n right: 2.2rem;\n }\n }\n\n .menu-open {\n > .nav-treeview {\n display: block;\n }\n\n > .nav-link {\n i.right {\n @include rotate(-90deg);\n }\n }\n }\n\n // First Level\n > .nav-item {\n margin-bottom: 0;\n\n .nav-icon {\n font-size: 1.2rem;\n margin-right: .2rem;\n text-align: center;\n width: $sidebar-nav-icon-width;\n\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n font-size: 1.1rem;\n }\n }\n\n .float-right {\n margin-top: 3px;\n }\n }\n\n // Tree view menu\n .nav-treeview {\n display: none;\n list-style: none;\n padding: 0;\n\n > .nav-item {\n > .nav-link {\n > .nav-icon {\n width: $sidebar-nav-icon-width;\n }\n }\n }\n }\n\n &.nav-child-indent {\n .nav-treeview {\n transition: padding $transition-speed $transition-fn;\n padding-left: 1rem;\n }\n }\n\n .nav-header {\n font-size: .9rem;\n padding: $nav-link-padding-y;\n\n &:not(:first-of-type) {\n padding: 1.7rem 1rem .5rem;\n }\n }\n\n .nav-link p {\n display: inline-block;\n margin: 0;\n }\n}\n\n#sidebar-overlay {\n @include media-breakpoint-down(md) {\n .sidebar-open & {\n display: block;\n }\n }\n\n background-color: rgba($black, 0.1);\n bottom: 0;\n display: none;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n z-index: $zindex-main-sidebar - 1;\n}\n\n[class*='sidebar-light-'] {\n // Sidebar background color\n background-color: $sidebar-light-bg;\n\n // User Panel (resides in the sidebar)\n .user-panel {\n a:hover {\n color: $sidebar-light-hover-color;\n }\n\n .status {\n background: $sidebar-light-hover-bg;\n color: $sidebar-light-color;\n\n &:hover,\n &:focus,\n &:active {\n background: darken($sidebar-light-hover-bg, 3%);\n color: $sidebar-light-hover-color;\n }\n }\n\n .dropdown-menu {\n @include box-shadow(0 2px 4px rgba(0, 0, 0, .4));\n border-color: darken($sidebar-light-hover-bg, 5%);\n }\n\n .dropdown-item {\n color: $body-color;\n }\n }\n\n // Sidebar Menu. First level links\n .nav-sidebar > .nav-item {\n // links\n > .nav-link {\n // border-left: 3px solid transparent;\n &:active,\n &:focus {\n color: $sidebar-light-color;\n }\n }\n\n // Hover and active states\n &.menu-open > .nav-link,\n &:hover > .nav-link {\n background-color: $sidebar-light-hover-bg;\n color: $sidebar-light-hover-color;\n }\n\n > .nav-link.active {\n color: $sidebar-light-active-color;\n\n @if $enable-shadows {\n box-shadow: map-get($elevations, 1);\n }\n }\n\n // First Level Submenu\n > .nav-treeview {\n background: $sidebar-light-submenu-bg;\n }\n }\n\n // Section Heading\n .nav-header {\n background: inherit;\n color: darken($sidebar-light-color, 5%);\n }\n\n // All links within the sidebar menu\n .sidebar {\n a {\n color: $sidebar-light-color;\n\n &:hover {\n text-decoration: none;\n }\n }\n }\n\n // All submenus\n .nav-treeview {\n > .nav-item {\n > .nav-link {\n color: $sidebar-light-submenu-color;\n }\n\n > .nav-link.active {\n &,\n &:hover {\n background-color: $sidebar-light-submenu-active-bg;\n color: $sidebar-light-submenu-active-color;\n }\n }\n\n > .nav-link:hover {\n background-color: $sidebar-Line truncated
|
||||||
|
"//\n// Component: Sidebar Mini\n//\n\n// Logo style\n.logo-xs,\n.logo-xl {\n opacity: 1;\n position: absolute;\n visibility: visible;\n\n &.brand-image-xs {\n left: 18px;\n top: 12px;\n }\n\n &.brand-image-xl {\n left: 12px;\n top: 6px;\n }\n}\n\n.logo-xs {\n opacity: 0;\n visibility: hidden;\n\n &.brand-image-xl {\n left: 16px;\n top: 8px;\n }\n}\n\n.brand-link {\n &.logo-switch {\n &::before {\n content: '\\00a0';\n }\n }\n}\n\n// Add sidebar-mini class to the body tag to activate this feature\n.sidebar-mini {\n @include media-breakpoint-up(lg) {\n @include sidebar-mini-breakpoint;\n }\n}\n\n.sidebar-mini-md {\n @include media-breakpoint-up(md) {\n @include sidebar-mini-breakpoint;\n }\n}\n\n.sidebar-collapse {\n .sidebar-no-expand.main-sidebar.sidebar-focused,\n .sidebar-no-expand.main-sidebar:hover {\n width: $sidebar-mini-width;\n\n .brand-link {\n width: $sidebar-mini-width !important;\n }\n\n .user-panel .image {\n float: none !important;\n }\n\n .logo-xs {\n opacity: 1;\n visibility: visible;\n }\n\n .logo-xl {\n opacity: 0;\n visibility: hidden;\n }\n\n .nav-sidebar.nav-child-indent .nav-treeview {\n padding-left: 0;\n }\n\n .brand-text,\n .user-panel > .info,\n .nav-sidebar .nav-link p {\n margin-left: -10px;\n opacity: 0;\n visibility: hidden;\n width: 0;\n }\n\n .nav-sidebar > .nav-item .nav-icon {\n margin-right: 0;\n }\n\n .nav-flat {\n .nav-icon {\n margin-left: .5rem;\n }\n\n .nav-treeview {\n .nav-icon {\n margin-left: .3rem;\n }\n }\n }\n }\n}\n\n.nav-sidebar {\n position: relative;\n\n &:hover {\n overflow: visible;\n }\n}\n\n.sidebar-form,\n.nav-sidebar > .nav-header {\n overflow: hidden;\n text-overflow: clip;\n}\n\n.nav-sidebar .nav-item > .nav-link {\n position: relative;\n\n > .float-right {\n margin-top: -7px;\n position: absolute;\n right: 10px;\n top: 50%;\n }\n}\n\n.sidebar .nav-link p,\n.main-sidebar .brand-text,\n.main-sidebar .logo-xs,\n.main-sidebar .logo-xl,\n.sidebar .user-panel .info {\n @include transition(margin-left $transition-speed linear, opacity $transition-speed ease, visibility $transition-speed ease)\n}\n",
|
||||||
|
"//\n// Component: Control Sidebar\n//\n \nhtml.control-sidebar-animate {\n overflow-x: hidden;\n}\n\n.control-sidebar {\n bottom: $main-footer-height;\n position: absolute;\n top: $main-header-height;\n z-index: $zindex-control-sidebar;\n \n &,\n &::before {\n bottom: $main-footer-height;\n display: none;\n right: -$control-sidebar-width;\n width: $control-sidebar-width;\n @include transition(right $transition-speed $transition-fn, display $transition-speed $transition-fn);\n }\n\n &::before {\n content: '';\n display: block;\n position: fixed;\n top: 0;\n z-index: -1;\n }\n}\n\nbody.text-sm {\n .control-sidebar {\n bottom: $main-footer-height-sm;\n top: $main-header-height-sm;\n }\n}\n\n.main-header.text-sm ~ .control-sidebar {\n top: $main-header-height-sm;\n}\n\n.main-footer.text-sm ~ .control-sidebar {\n bottom: $main-footer-height-sm;\n}\n\n.control-sidebar-push-slide {\n .content-wrapper,\n .main-footer {\n @include transition(margin-right $transition-speed $transition-fn);\n }\n }\n\n// Control sidebar open state\n.control-sidebar-open {\n .control-sidebar {\n display: block;\n\n &,\n &::before {\n right: 0;\n }\n }\n\n &.control-sidebar-push,\n &.control-sidebar-push-slide {\n .content-wrapper,\n .main-footer {\n margin-right: $control-sidebar-width;\n }\n }\n}\n\n// Control sidebar slide over content state\n.control-sidebar-slide-open {\n .control-sidebar {\n display: block;\n\n &,\n &::before {\n right: 0;\n @include transition(right $transition-speed $transition-fn, display $transition-speed $transition-fn);\n }\n }\n\n &.control-sidebar-push,\n &.control-sidebar-push-slide {\n .content-wrapper,\n .main-footer {\n margin-right: $control-sidebar-width;\n }\n }\n}\n\n// Dark skin\n.control-sidebar-dark {\n &,\n a,\n .nav-link {\n color: $sidebar-dark-color;\n }\n\n // Background\n & {\n background: $sidebar-dark-bg;\n }\n\n a:hover {\n color: $sidebar-dark-hover-color;\n }\n\n // Headers and labels\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n label {\n color: $sidebar-dark-hover-color;\n }\n\n // Tabs\n .nav-tabs {\n background-color: $sidebar-dark-hover-bg;\n border-bottom: 0;\n margin-bottom: 5px;\n\n .nav-item {\n margin: 0;\n }\n\n .nav-link {\n border-radius: 0;\n padding: 10px 20px;\n position: relative;\n text-align: center;\n\n &,\n &:hover,\n &:active,\n &:focus,\n &.active {\n border: 0;\n }\n\n &:hover,\n &:active,\n &:focus,\n &.active {\n border-bottom-color: transparent;\n border-left-color: transparent;\n border-top-color: transparent;\n color: $sidebar-dark-hover-color;\n }\n\n &.active {\n background-color: $sidebar-dark-bg;\n }\n }\n }\n\n .tab-pane {\n padding: 10px 15px;\n }\n}\n\n// Light skin\n.control-sidebar-light {\n color: lighten($sidebar-light-color, 10%);\n\n // Background\n & {\n background: $sidebar-light-bg;\n border-left: $main-header-bottom-border;\n }\n}\n",
|
||||||
|
"//\n// Component: Dropdown\n//\n\n// General Dropdown Rules\n//.dropdown-item {\n// &:first-of-type {\n// @include border-top-radius($border-radius);\n// }\n// &:last-of-type {\n// @include border-bottom-radius($border-radius);\n// }\n//}\n\n.text-sm {\n .dropdown-menu {\n font-size: $font-size-sm !important;\n }\n\n .dropdown-toggle::after {\n vertical-align: .2rem\n }\n}\n\n.dropdown-item-title {\n font-size: $font-size-base;\n margin: 0;\n}\n\n.dropdown-icon {\n &::after {\n margin-left: 0;\n }\n}\n\n// Dropdown Sizes\n.dropdown-menu-lg {\n max-width: 300px;\n min-width: 280px;\n padding: 0;\n\n .dropdown-divider {\n margin: 0;\n }\n\n .dropdown-item {\n padding: $dropdown-padding-y $dropdown-item-padding-x;\n }\n\n p {\n margin: 0;\n white-space: normal;\n }\n}\n\n// Dropdown Submenu\n.dropdown-submenu {\n position: relative;\n\n & > a:after {\n @include caret-right;\n float: right;\n margin-left: .5rem;\n margin-top: .5rem;\n }\n\n & > .dropdown-menu {\n left: 100%;\n margin-left: 0px;\n margin-top: 0px;\n top: 0;\n }\n}\n\n// Dropdown Hover\n.dropdown-hover {\n &:hover,\n &.nav-item.dropdown:hover,\n .dropdown-submenu:hover,\n &.dropdown-submenu:hover {\n > .dropdown-menu {\n display: block;\n }\n }\n}\n\n\n\n// Dropdown Sizes\n.dropdown-menu-xl {\n max-width: 420px;\n min-width: 360px;\n padding: 0;\n\n .dropdown-divider {\n margin: 0;\n }\n\n .dropdown-item {\n padding: $dropdown-padding-y $dropdown-item-padding-x;\n }\n\n p {\n margin: 0;\n white-space: normal;\n }\n}\n\n// Dropdown header and footer\n.dropdown-footer,\n.dropdown-header {\n display: block;\n font-size: $font-size-sm;\n padding: .5rem $dropdown-item-padding-x;\n text-align: center;\n}\n\n// Add fade animation to dropdown menus by appending \n// the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)\n.open:not(.dropup) > .animated-dropdown-menu {\n @include animation(flipInX .7s both);\n backface-visibility: visible !important;\n}\n\n@keyframes flipInX {\n 0% {\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transition-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transition-timing-function: ease-in;\n }\n\n 60% {\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n\n 100% {\n transform: perspective(400px);\n }\n}\n\n// Fix dropdown menu in navbars\n.navbar-custom-menu > .navbar-nav {\n > li {\n position: relative;\n > .dropdown-menu {\n position: absolute;\n right: 0;\n left: auto;\n }\n }\n}\n\n@include media-breakpoint-down(sm) {\n .navbar-custom-menu > .navbar-nav {\n float: right;\n > li {\n position: static;\n > .dropdown-menu {\n position: absolute;\n right: 5%;\n left: auto;\n border: 1px solid #ddd;\n background: $white;\n }\n }\n }\n}\n\n// User Menu\n.navbar-nav > .user-menu {\n > .nav-link:after {\n content:none;\n }\n\n > .dropdown-menu {\n @include border-top-radius(0);\n padding: 0;\n border-top-width: 0;\n width: 280px;\n\n &,\n > .user-body {\n @include border-bottom-radius(4px);\n }\n\n // Header menu\n > li.user-header {\n height: 175px;\n padding: 10px;\n text-align: center;\n\n // User image\n > img {\n z-index: 5;\n height: 90px;\n width: 90px;\n border: 3px solid;\n border-color: transparent;\n border-color: rgba(255, 255, 255, 0.2);\n }\n\n > p {\n z-index: 5;\n font-size: 17px;\n //text-shadow: 2px 2px 3px #333333;\n margin-top: 10px;\n\n > small {\n display: block;\n font-size: 12px;\n }\n }\n }\n\n // Menu Body\n > .user-body {\n @include clearfix;\n border-bottom: 1px solid $gray-700;\n border-top: 1px solid $gray-300;\n padding: 15px;\n\n a {\n @include media-breakpoint-up(sm) {\n background: $white !important;\n color: $gray-700 !important;\n }\n }\n }\n\n // Menu Footer\n > .user-footer {\n @include clearfix;\n background-color: $gray-100;\n padding: 10px;\n\n .btn-default {\n color: $gray-600;\n\n &:hover {\n @include media-breakpoint-up(sm) {\n background-color: $gray-100;\n }\n }\n }\n }\n }\n\n .user-image {\n @include media-breakpoint-up(sm) {\n float: none;\n line-height: 10px;\n margin-right: .4rem;\n margin-top: -8px;\n }\n\n border-radius: 50%;\n float: left;\n height: $sidebar-user-image-width;\n margin-right: 10px;\n margin-top: -2px;\n width: $sidebar-user-image-width;\n }\n}\n",
|
||||||
|
"//\n// Component: Nav\n//\n\n.nav-pills {\n .nav-link {\n color: $gray-600;\n\n &:not(.active):hover {\n color: theme-color('primary');\n }\n }\n\n .nav-item {\n &.dropdown.show {\n .nav-link:hover {\n color: $dropdown-link-active-color;\n }\n }\n }\n}\n\n// Vertical Tabs\n.nav-tabs.flex-column {\n border-bottom: 0;\n border-right: $nav-tabs-border-width solid $nav-tabs-border-color;\n\n .nav-link {\n border-bottom-left-radius: $nav-tabs-border-radius;\n border-top-right-radius: 0;\n margin-right: -$nav-tabs-border-width;\n\n @include hover-focus {\n border-color: $gray-200 transparent $gray-200 $gray-200;\n }\n }\n\n .nav-link.active,\n .nav-item.show .nav-link {\n border-color: $gray-300 transparent $gray-300 $gray-300;\n }\n\n &.nav-tabs-right {\n border-left: $nav-tabs-border-width solid $nav-tabs-border-color;\n border-right: 0;\n\n .nav-link {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: $nav-tabs-border-radius;\n border-top-left-radius: 0;\n border-top-right-radius: $nav-tabs-border-radius;\n margin-left: -$nav-tabs-border-width;\n\n @include hover-focus {\n border-color: $gray-200 $gray-200 $gray-200 transparent;\n }\n }\n\n .nav-link.active,\n .nav-item.show .nav-link {\n border-color: $gray-300 $gray-300 $gray-300 transparent;\n }\n }\n}\n\n.navbar-no-expand {\n flex-direction: row;\n\n .nav-link {\n padding-left: $navbar-nav-link-padding-x;\n padding-right: $navbar-nav-link-padding-x;\n }\n}\n\n// Color variants\n@each $color, $value in $theme-colors {\n @if $color == dark or $color == light {\n .navbar-#{$color} {\n background-color: $value;\n }\n }\n}\n\n@each $color, $value in $theme-colors {\n @if $color != dark and $color != light {\n .navbar-#{$color} {\n background-color: $value;\n }\n }\n}\n\n@each $color, $value in $colors {\n .navbar-#{$color} {\n background-color: $value;\n }\n}\n",
|
||||||
|
"//\n// Part: Miscellaneous\n//\n\n@import '../miscellaneous';\n@import '../print';\n@import '../text';\n@import '../elevation';\n@import '../colors';\n",
|
||||||
|
"//\n// Misc: Miscellaneous\n//\n\n.border-transparent {\n border-color: transparent !important;\n}\n\n// Description Blocks\n.description-block {\n display: block;\n margin: 10px 0;\n text-align: center;\n\n &.margin-bottom {\n margin-bottom: 25px;\n }\n\n > .description-header {\n font-size: 16px;\n font-weight: 600;\n margin: 0;\n padding: 0;\n }\n\n > .description-text {\n text-transform: uppercase;\n }\n\n // Description Block Extension\n .description-icon {\n font-size: 16px;\n }\n}\n\n// List utility classes\n.list-group-unbordered {\n > .list-group-item {\n border-left: 0;\n border-radius: 0;\n border-right: 0;\n padding-left: 0;\n padding-right: 0;\n }\n}\n\n.list-header {\n color: $gray-600;\n font-size: 15px;\n font-weight: bold;\n padding: 10px 4px;\n}\n\n.list-seperator {\n background: $card-border-color;\n height: 1px;\n margin: 15px 0 9px;\n}\n\n.list-link {\n > a {\n color: $gray-600;\n padding: 4px;\n\n &:hover {\n color: $gray-900;\n }\n }\n}\n\n// User block\n.user-block {\n float: left;\n\n img {\n float: left;\n height: 40px;\n width: 40px;\n }\n\n .username,\n .description,\n .comment {\n display: block;\n margin-left: 50px;\n }\n\n .username {\n font-size: 16px;\n font-weight: 600;\n margin-top: -1px;\n }\n\n .description {\n color: $gray-600;\n font-size: 13px;\n margin-top: -3px;\n }\n\n &.user-block-sm {\n img {\n width: $img-size-sm;\n height: $img-size-sm;\n }\n\n .username,\n .description,\n .comment {\n margin-left: 40px;\n }\n\n .username {\n font-size: 14px;\n }\n }\n}\n\n// Image sizes\n.img-sm,\n.img-md,\n.img-lg {\n float: left;\n}\n\n.img-sm {\n height: $img-size-sm;\n width: $img-size-sm;\n\n + .img-push {\n margin-left: $img-size-sm + $img-size-push;\n }\n}\n\n.img-md {\n width: $img-size-md;\n height: $img-size-md;\n\n + .img-push {\n margin-left: $img-size-md + $img-size-push;\n }\n}\n\n.img-lg {\n width: $img-size-lg;\n height: $img-size-lg;\n\n + .img-push {\n margin-left: $img-size-lg + $img-size-push;\n }\n}\n\n// Image bordered\n.img-bordered {\n border: 3px solid $gray-500;\n padding: 3px;\n}\n\n.img-bordered-sm {\n border: 2px solid $gray-500;\n padding: 2px;\n}\n\n// Rounded and Circle Images\n.img-rounded {\n @include border-radius($border-radius)\n}\n\n.img-circle {\n @include border-radius(50%);\n}\n\n// Image sizes\n.img-size-64,\n.img-size-50,\n.img-size-32 {\n height: auto;\n}\n\n.img-size-64 {\n width: 64px;\n}\n\n.img-size-50 {\n width: 50px;\n}\n\n.img-size-32 {\n width: 32px;\n}\n\n// Block sizes\n.size-32,\n.size-40,\n.size-50 {\n display: block;\n text-align: center;\n}\n\n.size-32 {\n height: 32px;\n line-height: 32px;\n width: 32px;\n}\n\n.size-40 {\n height: 40px;\n line-height: 40px;\n width: 40px;\n}\n\n.size-50 {\n height: 50px;\n line-height: 50px;\n width: 50px;\n}\n\n// General attachemnt block\n.attachment-block {\n background: $gray-100;\n border: 1px solid $card-border-color;\n margin-bottom: 10px;\n padding: 5px;\n\n .attachment-img {\n float: left;\n height: auto;\n max-height: 100px;\n max-width: 100px;\n }\n\n .attachment-pushed {\n margin-left: 110px;\n }\n\n .attachment-heading {\n margin: 0;\n }\n\n .attachment-text {\n color: $gray-700;\n }\n}\n\n// Overlays for Card, InfoBox & SmallBox\n.card,\n.overlay-wrapper,\n.info-box,\n.small-box {\n // Box overlay for LOADING STATE effect\n > .overlay,\n > .loading-img {\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n .overlay {\n @include border-radius($border-radius);\n align-items: center;\n background: rgba($white, 0.7);\n display: flex;\n justify-content: center;\n z-index: 50;\n\n > .fa,\n > .fas,\n > .far,\n > .fab,\n > .glyphicon,\n > .ion {\n color: $gray-800;\n }\n\n &.dark {\n background: rgba($black, 0.5);\n\n > .fa,\n > .fas,\n > .far,\n > .fab,\n > .glyphicon,\n > .ion {\n color: $gray-400;\n }\n }\n }\n}\n\n// Ribbon\n.ribbon-wrapper {\n height: $ribbon-wrapper-size;\n overflow: hidden;\n position: absolute;\n right: -2px;\n top: -2px;\n width: $ribbon-wrapper-size;\n z-index: 10;\n\n &.ribbon-lg {\n height: $ribbon-lg-wrapper-size;\n width: $ribbon-lg-wrapper-size;\n\n .ribbon {\n right: $ribbon-lg-right;\n top: $ribbon-lg-top;\n width: $ribbon-lg-width;\n }\n }\n\n &.ribbon-xl {\n height: $ribbon-xl-wrapper-size;\n width: $ribbon-xl-wrapper-size;\n\n .ribbon {\n right: $ribbon-xl-right;\n top: $ribbon-xl-top;\n width: $ribbon-xl-width;\n }\n }\n\n .ribbon {\n box-shadow: 0 0 $ribbon-border-size rgba($black, .3);\n font-size: $ribbon-font-size;\n line-height: $ribbon-line-height;\n padding: $ribbon-paddinLine truncated
|
||||||
|
"//\n// Misc: Print\n//\n\n@media print {\n //Add to elements that you do not want to show when printing\n .no-print {\n display: none !important;\n }\n\n //Elements that we want to hide when printing\n .main-sidebar,\n .main-header,\n .content-header {\n @extend .no-print;\n }\n\n //This is the only element that should appear, so let's remove the margins\n .content-wrapper,\n .main-footer {\n @include translate(0, 0);\n margin-left: 0 !important;\n min-height: 0 !important;\n }\n\n .layout-fixed .content-wrapper {\n padding-top: 0 !important;\n }\n\n //Invoice printing\n .invoice {\n border: 0;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n\n .invoice-col {\n float: left;\n width: 33.3333333%;\n }\n\n //Make sure table content displays properly\n .table-responsive {\n overflow: auto;\n\n > .table tr th,\n > .table tr td {\n white-space: normal !important;\n }\n }\n}\n",
|
||||||
|
"//\n// Component: Text\n//\n\n// text modification\n.text-bold {\n &, &.table td, &.table th {\n font-weight: 700;\n }\n}\n\n.text-xs {\n font-size: $font-size-xs !important;\n}\n\n.text-sm {\n font-size: $font-size-sm !important;\n}\n\n.text-md {\n font-size: $font-size-base !important;\n}\n\n.text-lg {\n font-size: $font-size-lg !important;\n}\n\n.text-xl {\n font-size: $font-size-xl !important;\n}\n\n// text color variations\n@each $name, $color in $colors {\n .text-#{$name} {\n color: #{$color};\n }\n}\n",
|
||||||
|
"//\n// Component: Elevation\n//\n\n.elevation-0 {\n box-shadow: none !important;\n}\n\n// Background colors (colors)\n@each $name, $value in $elevations {\n .elevation-#{$name} {\n box-shadow: $value !important;\n }\n}\n",
|
||||||
|
"//\n// Misc: Colors\n//\n\n// Background colors (theme colors)\n@each $name, $color in $theme-colors {\n @include background-variant($name, $color);\n}\n\n// Background colors (colors)\n@each $name, $color in $colors {\n @include background-variant($name, $color);\n}\n\n.bg-gray {\n background-color: $gray-500;\n color: color-yiq($gray-500);\n}\n\n.bg-gray-light {\n background-color: lighten($gray-200, 3%);\n color: color-yiq(lighten($gray-200, 3%)) !important;\n}\n\n.bg-black {\n background-color: $black;\n color: color-yiq($black) !important;\n}\n\n.bg-white {\n background-color: $white;\n color: color-yiq($white) !important;\n}\n\n// Gradient Background colors (theme colors)\n@each $name, $color in $theme-colors {\n @include background-gradient-variant($name, $color);\n}\n\n// Gradient Background colors (colors)\n@each $name, $color in $colors {\n @include background-gradient-variant($name, $color);\n}\n\n// Backgrund Color Disabled\n[class^='bg-'].disabled {\n opacity: .65;\n}\n\n// Text muted hover\na.text-muted:hover {\n color: theme-color(primary) !important;\n}\n\n// Link Styles\n.link-muted {\n color: darken($gray-500, 30%);\n\n &:hover,\n &:focus {\n color: darken($gray-500, 40%);\n }\n}\n\n.link-black {\n color: $gray-600;\n\n &:hover,\n &:focus {\n color: lighten($gray-500, 20%);\n }\n}\n\n// Accent colors (theme colors)\n@each $name, $color in $theme-colors {\n @include accent-variant($name, $color);\n}\n\n// Accent colors (colors)\n@each $name, $color in $colors {\n @include accent-variant($name, $color);\n}\n"
|
||||||
|
],
|
||||||
|
"names": [],
|
||||||
|
"mappings": "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 truncated
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
@charset "UTF-8";/*!
|
||||||
|
* AdminLTE v3.0.0
|
||||||
|
* Only Core
|
||||||
|
* Author: Colorlib
|
||||||
|
* Website: AdminLTE.io <http://adminlte.io>
|
||||||
|
* License: Open source - MIT <http://opensource.org/licenses/MIT>
|
||||||
|
*//*!
|
||||||
|
* Bootstrap v4.3.1 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2019 The Bootstrap Authors
|
||||||
|
* Copyright 2011-2019 Twitter, Inc.
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
|
*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#ffffff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:none}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-coLine truncated
|
||||||
|
/*# sourceMappingURL=adminlte.core.min.css.map */
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":["../../../build/scss/AdminLTE-core.scss","../../../node_modules/bootstrap/scss/bootstrap.scss","../../../node_modules/bootstrap/scss/_root.scss","../../../node_modules/bootstrap/scss/_reboot.scss","../../../build/scss/_bootstrap-variables.scss","../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../node_modules/bootstrap/scss/_variables.scss","../../../node_modules/bootstrap/scss/mixins/_hover.scss","../../../node_modules/bootstrap/scss/_type.scss","../../../node_modules/bootstrap/scss/mixins/_lists.scss","../../../node_modules/bootstrap/scss/_images.scss","../../../node_modules/bootstrap/scss/mixins/_image.scss","../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss","../../../node_modules/bootstrap/scss/_code.scss","../../../node_modules/bootstrap/scss/_grid.scss","../../../node_modules/bootstrap/scss/mixins/_grid.scss","../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../../node_modules/bootstrap/scss/mixins/_grid-framework.scss","../../../node_modules/bootstrap/scss/_tables.scss","../../../node_modules/bootstrap/scss/mixins/_table-row.scss","../../../node_modules/bootstrap/scss/_functions.scss","../../../node_modules/bootstrap/scss/_forms.scss","../../../node_modules/bootstrap/scss/mixins/_transition.scss","../../../node_modules/bootstrap/scss/mixins/_forms.scss","../../../node_modules/bootstrap/scss/mixins/_gradients.scss","../../../node_modules/bootstrap/scss/_buttons.scss","../../../node_modules/bootstrap/scss/mixins/_buttons.scss","../../../node_modules/bootstrap/scss/_button-group.scss","../../../node_modules/bootstrap/scss/_transitions.scss","../../../node_modules/bootstrap/scss/_dropdown.scss","../../../node_modules/bootstrap/scss/mixins/_caret.scss","../../../node_modules/bootstrap/scss/mixins/_nav-divider.scss","../../../node_modules/bootstrap/scss/_input-group.scss","../../../node_modules/bootstrap/scss/_custom-forms.scss","../../../node_modules/bootstrap/scss/_nav.scss","../../../node_modules/bootstrap/scss/_navbar.scss","../../../node_modules/bootstrap/scss/_card.scss","../../../node_modules/bootstrap/scss/_breadcrumb.scss","../../../node_modules/bootstrap/scss/_pagination.scss","../../../node_modules/bootstrap/scss/mixins/_pagination.scss","../../../node_modules/bootstrap/scss/_badge.scss","../../../node_modules/bootstrap/scss/mixins/_badge.scss","../../../node_modules/bootstrap/scss/_jumbotron.scss","../../../node_modules/bootstrap/scss/_alert.scss","../../../node_modules/bootstrap/scss/mixins/_alert.scss","../../../node_modules/bootstrap/scss/_progress.scss","../../../node_modules/bootstrap/scss/_media.scss","../../../node_modules/bootstrap/scss/_list-group.scss","../../../node_modules/bootstrap/scss/mixins/_list-group.scss","../../../node_modules/bootstrap/scss/_close.scss","../../../node_modules/bootstrap/scss/_toasts.scss","../../../node_modules/bootstrap/scss/_modal.scss","../../../node_modules/bootstrap/scss/_tooltip.scss","../../../node_modules/bootstrap/scss/mixins/_reset-text.scss","../../../node_modules/bootstrap/scss/_popover.scss","../../../node_modules/bootstrap/scss/_carousel.scss","../../../node_modules/bootstrap/scss/mixins/_clearfix.scss","../../../node_modules/bootstrap/scss/_spinners.scss","../../../node_modules/bootstrap/scss/utilities/_align.scss","../../../node_modules/bootstrap/scss/mixins/_background-variant.scss","../../../node_modules/bootstrap/scss/utilities/_background.scss","../../../node_modules/bootstrap/scss/utilities/_borders.scss","../../../node_modules/bootstrap/scss/utilities/_display.scss","../../../node_modules/bootstrap/scss/utilities/_embed.scss","../../../node_modules/bootstrap/scss/utilities/_flex.scss","../../../node_modules/bootstrap/scss/utilities/_float.scss","../../../node_modules/bootstrap/scss/utilities/_overflow.scss","../../../node_modules/bootstrap/scss/utilities/_position.scss","../../../node_modules/bootstrap/scss/utilities/_screenreaders.scss","../../../node_modules/bootstrap/scss/mixins/_screen-reader.scss","../../../node_modules/bootstrap/scss/utilities/_shadows.scss","../../../node_modules/bootstrap/scss/utilities/_sizing.scss","../../../node_modules/bootstrap/scss/utilities/_stretched-link.scss","../../../node_modules/bootstrap/scss/utilities/_spacing.scss","../../../node_modules/bootstrap/scss/utilities/_text.scss","../../../node_modules/bootstrap/scss/mixins/_text-truncate.scss","../../../node_modules/bootstrap/scss/mixins/_text-emphasis.scss","../../../node_modules/bootstrap/scss/mixins/_text-hide.scss","../../../node_modules/bootstrap/scss/utilities/_visibility.scss","../../../node_modules/bootstrap/scss/_print.scss","../../../build/scss/_layout.scss","../../../build/scss/_variables.scss","../../../build/scss/_main-header.scss","../../../build/scss/_brand.scss","../../../build/scss/_main-sidebar.scss","../../../build/scss/mixins/_miscellaneous.scss","../../../build/scss/mixins/_sidebar.scss","../../../bLine truncated
|
||||||
+1049
File diff suppressed because it is too large.
Load diff
+120
@@ -0,0 +1,120 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"file": "adminlte.extra-components.css",
|
||||||
|
"sources": [
|
||||||
|
"../../../build/scss/AdminLTE-extra-components.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_functions.scss",
|
||||||
|
"../../../build/scss/_bootstrap-variables.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_mixins.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/vendor/_rfs.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_deprecate.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_hover.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_image.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_badge.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_resize.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_screen-reader.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_size.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_reset-text.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-emphasis.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-hide.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-truncate.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_visibility.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_alert.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_buttons.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_caret.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_pagination.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_lists.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_list-group.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_nav-divider.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_forms.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_table-row.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_background-variant.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_border-radius.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_gradients.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_transition.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_clearfix.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_grid-framework.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_grid.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_float.scss",
|
||||||
|
"../../../build/scss/_variables.scss",
|
||||||
|
"../../../build/scss/_mixins.scss",
|
||||||
|
"../../../build/scss/mixins/_cards.scss",
|
||||||
|
"../../../build/scss/mixins/_sidebar.scss",
|
||||||
|
"../../../build/scss/mixins/_navbar.scss",
|
||||||
|
"../../../build/scss/mixins/_accent.scss",
|
||||||
|
"../../../build/scss/mixins/_custom-forms.scss",
|
||||||
|
"../../../build/scss/mixins/_backgrounds.scss",
|
||||||
|
"../../../build/scss/mixins/_direct-chat.scss",
|
||||||
|
"../../../build/scss/mixins/_toasts.scss",
|
||||||
|
"../../../build/scss/mixins/_miscellaneous.scss",
|
||||||
|
"../../../build/scss/parts/_extra-components.scss",
|
||||||
|
"../../../build/scss/_small-box.scss",
|
||||||
|
"../../../build/scss/_info-box.scss",
|
||||||
|
"../../../build/scss/_timeline.scss",
|
||||||
|
"../../../build/scss/_products.scss",
|
||||||
|
"../../../build/scss/_direct-chat.scss",
|
||||||
|
"../../../build/scss/_users-list.scss",
|
||||||
|
"../../../build/scss/_social-widgets.scss"
|
||||||
|
],
|
||||||
|
"sourcesContent": [
|
||||||
|
"/*!\n * AdminLTE v3.0.0\n * Only Extra Components\n * Author: Colorlib\n *\t Website: AdminLTE.io <http://adminlte.io>\n * License: Open source - MIT <http://opensource.org/licenses/MIT>\n */\n// Bootstrap\n// ---------------------------------------------------\n@import '~bootstrap/scss/functions';\n@import 'bootstrap-variables';\n@import '~bootstrap/scss/mixins';\n// @import '~bootstrap/scss/bootstrap';\n\n// Variables and Mixins\n// ---------------------------------------------------\n@import 'variables';\n@import 'mixins';\n\n@import 'parts/extra-components';\n",
|
||||||
|
"// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n",
|
||||||
|
"// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n\n//\n// Color system\n//\n\n// stylelint-disable\n$white: #ffffff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n$grays: map-merge((\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n), $grays);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n$colors: map-merge((\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n), $colors);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n$theme-colors: map-merge((\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n), $theme-colors);\n// stylelint-enable\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: #1F2D3D !default;\n$yiq-text-light: $white !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: true !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// stylelint-disable\n$spacer: 1rem !default;\n$spacers: () !default;\n$spacers: map-merge((\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n), $spacers);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n$sizes: map-merge((\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n), $sizes);\n// stylelint-enable\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: none !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layoLine truncated
|
||||||
|
"// Toggles\n//\n// Used in conjunction with global variables to enable certain theme features.\n\n// Vendor\n@import \"vendor/rfs\";\n\n// Deprecate\n@import \"mixins/deprecate\";\n\n// Utilities\n@import \"mixins/breakpoints\";\n@import \"mixins/hover\";\n@import \"mixins/image\";\n@import \"mixins/badge\";\n@import \"mixins/resize\";\n@import \"mixins/screen-reader\";\n@import \"mixins/size\";\n@import \"mixins/reset-text\";\n@import \"mixins/text-emphasis\";\n@import \"mixins/text-hide\";\n@import \"mixins/text-truncate\";\n@import \"mixins/visibility\";\n\n// // Components\n@import \"mixins/alert\";\n@import \"mixins/buttons\";\n@import \"mixins/caret\";\n@import \"mixins/pagination\";\n@import \"mixins/lists\";\n@import \"mixins/list-group\";\n@import \"mixins/nav-divider\";\n@import \"mixins/forms\";\n@import \"mixins/table-row\";\n\n// // Skins\n@import \"mixins/background-variant\";\n@import \"mixins/border-radius\";\n@import \"mixins/box-shadow\";\n@import \"mixins/gradients\";\n@import \"mixins/transition\";\n\n// // Layout\n@import \"mixins/clearfix\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n@import \"mixins/float\";\n",
|
||||||
|
"// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` Line truncated
|
||||||
|
"// Deprecate mixin\n//\n// This mixin can be used to deprecate mixins or functions.\n// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to\n// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)\n@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {\n @if ($enable-deprecation-messages != false and $ignore-warning != true) {\n @warn \"#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.\";\n }\n}\n",
|
||||||
|
"// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n",
|
||||||
|
"// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n",
|
||||||
|
"// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin badge-variant($bg) {\n color: color-yiq($bg);\n background-color: $bg;\n\n @at-root a#{&} {\n @include hover-focus {\n color: color-yiq($bg);\n background-color: darken($bg, 10%);\n }\n\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);\n }\n }\n}\n",
|
||||||
|
"// Resize anything\n\n@mixin resizable($direction) {\n overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`\n resize: $direction; // Options: horizontal, vertical, both\n}\n",
|
||||||
|
"// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n }\n}\n",
|
||||||
|
"// Sizing shortcuts\n\n@mixin size($width, $height: $width) {\n width: $width;\n height: $height;\n @include deprecate(\"`size()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $color !important;\n }\n @if $emphasized-link-hover-darken-percentage != 0 {\n a#{$parent} {\n @include hover-focus {\n color: darken($color, $emphasized-link-hover-darken-percentage) !important;\n }\n }\n }\n}\n",
|
||||||
|
"// CSS image replacement\n@mixin text-hide($ignore-warning: false) {\n // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n\n @include deprecate(\"`text-hide()`\", \"v4.1.0\", \"v5\", $ignore-warning);\n}\n",
|
||||||
|
"// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n @include deprecate(\"`invisible()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin alert-variant($background, $border, $color) {\n color: $color;\n @include gradient-bg($background);\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n",
|
||||||
|
"// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n border-color: $color;\n\n @include hover {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @include border-radius($border-radius, 0);\n}\n",
|
||||||
|
"@mixin caret-down {\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-bottom: 0;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n border-top: 0;\n border-right: $caret-width solid transparent;\n border-bottom: $caret-width solid;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-right {\n border-top: $caret-width solid transparent;\n border-right: 0;\n border-bottom: $caret-width solid transparent;\n border-left: $caret-width solid;\n}\n\n@mixin caret-left {\n border-top: $caret-width solid transparent;\n border-right: $caret-width solid;\n border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n @if $enable-caret {\n &::after {\n display: inline-block;\n margin-left: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @if $direction == down {\n @include caret-down;\n } @else if $direction == up {\n @include caret-up;\n } @else if $direction == right {\n @include caret-right;\n }\n }\n\n @if $direction == left {\n &::after {\n display: none;\n }\n\n &::before {\n display: inline-block;\n margin-right: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @include caret-left;\n }\n }\n\n &:empty::after {\n margin-left: 0;\n }\n }\n}\n",
|
||||||
|
"// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n",
|
||||||
|
"// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n",
|
||||||
|
"// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n\n &.list-group-item-action {\n @include hover-focus {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: $white;\n background-color: $color;\n border-color: $color;\n }\n }\n }\n}\n",
|
||||||
|
"// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) {\n height: 0;\n margin: $margin-y 0;\n overflow: hidden;\n border-top: 1px solid $color;\n}\n",
|
||||||
|
"// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-focus-border-color` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $input-focus-box-shadow;\n }\n }\n}\n\n\n@mixin form-validation-state($state, $color, $icon) {\n .#{$state}-feedback {\n display: none;\n width: 100%;\n margin-top: $form-feedback-margin-top;\n @include font-size($form-feedback-font-size);\n color: $color;\n }\n\n .#{$state}-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n margin-top: .1rem;\n @include font-size($form-feedback-tooltip-font-size);\n line-height: $form-feedback-tooltip-line-height;\n color: color-yiq($color);\n background-color: rgba($color, $form-feedback-tooltip-opacity);\n @include border-radius($form-feedback-tooltip-border-radius);\n }\n\n .form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-image: $icon;\n background-repeat: no-repeat;\n background-position: center right $input-height-inner-quarter;\n background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n // stylelint-disable-next-line selector-no-qualifying-type\n textarea.form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n }\n\n .custom-select {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $custom-select-feedback-icon-padding-right;\n background: $custom-select-background, $icon $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n\n .form-control-file {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .form-check-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .form-check-label {\n color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .custom-control-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-control-label {\n color: $color;\n\n &::before {\n border-color: $color;\n }\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n border-color: lighten($color, 10%);\n @include gradient-bg(lighten($color, 10%));\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n &:not(:checked) ~ .custom-control-label::before {\n border-color: $color;\n }\n }\n }\n }\n\n // custom file\n .custom-file-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-file-label {\n border-color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:focus {\n ~ .custom-file-label {\n border-color: $coLine truncated
|
||||||
|
"// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n\n @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent},\n button#{$parent} {\n @include hover-focus {\n background-color: darken($color, 10%) !important;\n }\n }\n}\n\n@mixin bg-gradient-variant($parent, $color) {\n #{$parent} {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\n }\n}\n",
|
||||||
|
"// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n",
|
||||||
|
"@mixin box-shadow($shadow...) {\n @if $enable-shadows {\n $result: ();\n\n @if (length($shadow) == 1) {\n // We can pass `@include box-shadow(none);`\n $result: $shadow;\n } @else {\n // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`\n @for $i from 1 through length($shadow) {\n @if nth($shadow, $i) != \"none\" {\n $result: append($result, nth($shadow, $i), \"comma\");\n }\n }\n }\n @if (length($result) > 0) {\n box-shadow: $result;\n }\n }\n}\n",
|
||||||
|
"// Gradients\n\n@mixin gradient-bg($color) {\n @if $enable-gradients {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n } @else {\n background-color: $color;\n }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n",
|
||||||
|
"// stylelint-disable property-blacklist\n@mixin transition($transition...) {\n @if $enable-transitions {\n @if length($transition) == 0 {\n transition: $transition-base;\n } @else {\n transition: $transition;\n }\n }\n\n @if $enable-prefers-reduced-motion-media-query {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n",
|
||||||
|
"@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n",
|
||||||
|
"// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n",
|
||||||
|
"/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n@mixin float-left {\n float: left !important;\n @include deprecate(\"The `float-left` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-right {\n float: right !important;\n @include deprecate(\"The `float-right` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-none {\n float: none !important;\n @include deprecate(\"The `float-none` mixin\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"//\n// Core: Variables\n//\n\n// COLORS\n// --------------------------------------------------------\n$blue: #0073b7 !default;\n$navy: #001f3f !default;\n$teal: #39cccc !default;\n$olive: #3d9970 !default;\n$lime: #01ff70 !default;\n$orange: #ff851b !default;\n$fuchsia: #f012be !default;\n$purple: #605ca8 !default;\n$maroon: #d81b60 !default;\n$black: #111 !default;\n$gray-x-light: #d2d6de !default;\n\n$colors: map-merge((\n 'navy': $navy,\n 'olive': $olive,\n 'lime': $lime,\n 'fuchsia': $fuchsia,\n 'maroon': $maroon,\n), $colors);\n\n// LAYOUT\n// --------------------------------------------------------\n\n$font-size-root: 1rem !default;\n\n// Sidebar\n$sidebar-width: 250px !default;\n$sidebar-padding-x: 0.5rem !default;\n$sidebar-padding-y: 0 !default;\n\n// Boxed layout maximum width\n$boxed-layout-max-width: 1250px !default;\n\n// When to show the smaller logo\n$screen-header-collapse: map-get($grid-breakpoints, md) !default;\n\n// Body background (Affects main content background only)\n$main-bg: #f4f6f9 !default;\n\n// Content padding\n$content-padding-y: 0 !default;\n$content-padding-x: $navbar-padding-x !default;\n\n// IMAGE SIZES\n// --------------------------------------------------------\n$img-size-sm: 1.875rem !default;\n$img-size-md: 3.75rem !default;\n$img-size-lg: 6.25rem !default;\n$img-size-push: .625rem !default;\n\n// MAIN HEADER\n// --------------------------------------------------------\n$main-header-bottom-border-width: $border-width !default;\n$main-header-bottom-border-color: $gray-300 !default;\n$main-header-bottom-border: $main-header-bottom-border-width solid $main-header-bottom-border-color !default;\n$main-header-link-padding-y: $navbar-padding-y !default;\n$main-header-link-padding-x: $navbar-padding-x !default;\n$main-header-brand-padding-y: $navbar-brand-padding-y !default;\n$main-header-brand-padding-x: $navbar-padding-x !default;\n$main-header-height-inner: ($nav-link-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height: calc(#{$main-header-height-inner} + #{$main-header-bottom-border-width}) !default;\n$nav-link-sm-padding-y: .35rem !default;\n$nav-link-sm-height: ($font-size-sm * $line-height-sm + $nav-link-sm-padding-y * 1.785) !default;\n$main-header-height-sm-inner: ($nav-link-sm-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height-sm: calc(#{$main-header-height-sm-inner} + #{$main-header-bottom-border-width}) !default;\n\n\n// Main header skins\n$main-header-dark-form-control-bg: hsla(100, 100%, 100%, 0.2) !default;\n$main-header-dark-form-control-focused-bg: hsla(100, 100%, 100%, 0.6) !default;\n$main-header-dark-form-control-focused-color: $gray-800 !default;\n$main-header-dark-form-control-border: 0 !default;\n$main-header-dark-form-control-focused-border: 0 !default;\n$main-header-dark-placeholder-color: hsla(100, 100%, 100%, 0.6) !default;\n\n$main-header-light-form-control-bg: darken($gray-100, 2%) !default;\n$main-header-light-form-control-focused-bg: $gray-200 !default;\n$main-header-light-form-control-focused-color: $gray-800 !default;\n$main-header-light-form-control-border: 0 !default;\n$main-header-light-form-control-focused-border: 0 !default;\n$main-header-light-placeholder-color: hsla(0, 0%, 0%, 0.6) !default;\n\n// MAIN FOOTER\n// --------------------------------------------------------\n$main-footer-padding: 1rem !default;\n$main-footer-padding-sm: $main-footer-padding * .812 !default;\n$main-footer-border-top-width: 1px !default;\n$main-footer-border-top-color: $gray-300 !default;\n$main-footer-border-top: $main-footer-border-top-width solid $main-footer-border-top-color !default;\n$main-footer-height-inner: (($font-size-root * $line-height-base) + ($main-footer-padding * 2)) !default;\n$main-footer-height: calc(#{$main-footer-height-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-height-sm-inner: (($font-size-sm * $line-height-base) + ($main-footer-padding-sm * 2)) !default;\n$main-footer-height-sm: calc(#{$main-footer-height-sm-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-bg: $white;\n\n// SIDEBAR SKINS\n// --------------------------------------------------------\n\n// Dark sidebar\n$sidebar-dark-bg: $dark !default;\n$sidebar-dark-hover-bg: hsla(100, 100%, 100%, 0.1) !default;\n$sidebar-dark-color: #C2C7D0 !default;\n$sidebar-dark-hover-color: $white !default;\n$sidebar-dark-active-color: $white !default;\n$sidebar-dark-submenu-bg: transparent !default;\n$sidebar-dark-submenu-color: #C2C7D0 !default;\n$sidebar-dark-submenu-hover-color: $white !default;\n$sidebar-dark-submenu-hover-bg: $sidebar-dark-hover-bg !default;\n$sidebar-dark-submenu-active-color: $sidebar-dark-bg !default;\n$sidebar-dark-submenu-active-bg: hsla(100, 100%, 100%, 0.9) !default;\n$sidebar-dark-header-color: $white !default;\n\n// Light sidebar\n$sidebar-light-bg: $white !default;\n$sidebar-light-hover-bg: rgba($black, .1) !default;\n$sidebar-light-color: $gray-800 !default;\nLine truncated
|
||||||
|
"//\n// General: Mixins\n//\n\n@import 'mixins/cards';\n@import 'mixins/sidebar';\n@import 'mixins/navbar';\n@import 'mixins/accent';\n@import 'mixins/custom-forms';\n@import 'mixins/backgrounds';\n@import 'mixins/direct-chat';\n@import 'mixins/toasts';\n@import 'mixins/miscellaneous';\n",
|
||||||
|
"//\n// Mixins: Cards Variant\n//\n\n@mixin cards-variant($name, $color) {\n .card-#{$name} {\n &.card-tabs {\n &:not(.card-outline) {\n .card-header {\n background-color: $color;\n\n &,\n a {\n color: color-yiq($color);\n }\n\n a.active {\n color: color-yiq($white);\n }\n }\n }\n\n &.card-outline {\n border-top: 3px solid $color;\n }\n }\n\n &.card-outline-tabs {\n .card-header {\n a {\n &:hover {\n border-top: 3px solid $nav-tabs-border-color;\n }\n\n &.active {\n border-top: 3px solid $color;\n }\n }\n }\n }\n }\n\n .bg-#{$name},\n .bg-gradient-#{$name},\n .card-#{$name}:not(.card-outline) {\n .btn-tool {\n color: rgba(color-yiq($color), 0.8);\n\n &:hover {\n color: color-yiq($color);\n }\n }\n }\n\n .card.bg-#{$name},\n .card.bg-gradient-#{$name} {\n .bootstrap-datetimepicker-widget {\n .table td,\n .table th {\n border: none;\n }\n\n table thead tr:first-child th:hover,\n table td.day:hover,\n table td.hour:hover,\n table td.minute:hover,\n table td.second:hover {\n background: darken($color, 8%);\n color: color-yiq($color);\n }\n\n table td.today::before {\n border-bottom-color: color-yiq($color);\n }\n\n table td.active,\n table td.active:hover {\n background: lighten($color, 10%);\n color: color-yiq($color);\n }\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Sidebar\n//\n\n// Sidebar Color\n@mixin sidebar-color($color) {\n .nav-sidebar > .nav-item {\n & > .nav-link.active {\n background-color: $color;\n color: color-yiq($color);\n }\n }\n\n .nav-sidebar.nav-legacy > .nav-item {\n & > .nav-link.active {\n border-color: $color;\n }\n }\n}\n\n// Sidebar Mini Breakpoints\n@mixin sidebar-mini-breakpoint() {\n // A fix for text overflow while transitioning from sidebar mini to full sidebar\n .nav-sidebar,\n .nav-sidebar > .nav-header,\n .nav-sidebar .nav-link {\n white-space: nowrap;\n overflow: hidden;\n }\n\n // When the sidebar is collapsed...\n &.sidebar-collapse {\n .d-hidden-mini {\n display: none;\n }\n\n // Apply the new margins to the main content and footer\n .content-wrapper,\n .main-footer,\n .main-header {\n margin-left: $sidebar-mini-width !important;\n }\n\n // Make the sidebar headers\n .nav-sidebar .nav-header {\n display: none;\n }\n\n .nav-sidebar .nav-link p {\n width: 0;\n }\n\n .sidebar .user-panel > .info,\n .nav-sidebar .nav-link p,\n .brand-text {\n margin-left: -10px;\n opacity: 0;\n visibility: hidden;\n }\n\n .logo-xl {\n opacity: 0;\n visibility: hidden;\n }\n\n .logo-xs {\n display: inline-block;\n opacity: 1;\n visibility: visible;\n }\n\n // Modify the sidebar to shrink instead of disappearing\n .main-sidebar {\n overflow-x: hidden;\n\n &,\n &::before {\n // Don't go away! Just shrink\n margin-left: 0;\n width: $sidebar-mini-width;\n }\n\n .user-panel {\n .image {\n float: none;\n }\n }\n\n &:hover,\n &.sidebar-focused {\n width: $sidebar-width;\n\n .nav-sidebar.nav-child-indent .nav-treeview {\n padding-left: 1rem;\n }\n\n .brand-link {\n width: $sidebar-width;\n }\n\n .user-panel {\n text-align: left;\n\n .image {\n float: left;\n }\n }\n\n .user-panel > .info,\n .nav-sidebar .nav-link p,\n .brand-text,\n .logo-xl {\n display: inline-block;\n margin-left: 0;\n opacity: 1;\n visibility: visible;\n }\n\n .nav-flat {\n .nav-icon {\n margin-left: 0;\n }\n\n .nav-treeview {\n .nav-icon {\n margin-left: -.2rem;\n }\n }\n }\n\n .logo-xs {\n opacity: 0;\n visibility: hidden;\n }\n\n .brand-image {\n margin-right: .5rem;\n }\n\n // Make the sidebar links, menus, labels, badges\n // and angle icons disappear\n .sidebar-form,\n .user-panel > .info {\n display: block !important;\n -webkit-transform: translateZ(0);\n }\n\n .nav-sidebar > .nav-item > .nav-link > span {\n display: inline-block !important;\n }\n }\n }\n\n // Make an element visible only when sidebar mini is active\n .visible-sidebar-mini {\n display: block !important;\n }\n\n &.layout-fixed {\n .main-sidebar:hover {\n .brand-link {\n width: $sidebar-width;\n }\n }\n\n .brand-link {\n width: $sidebar-mini-width;\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Navbar\n//\n\n// Navbar Variant\n@mixin navbar-variant($color, $font-color: rgba(255, 255, 255, 0.8), $hover-color: #f6f6f6, $hover-bg: rgba(0, 0, 0, 0.1)) {\n background-color: $color;\n\n .nav > li > a {\n color: $font-color;\n }\n\n .nav > li > a:hover,\n .nav > li > a:active,\n .nav > li > a:focus,\n .nav .open > a,\n .nav .open > a:hover,\n .nav .open > a:focus,\n .nav > .active > a {\n background: $hover-bg;\n color: $hover-color;\n }\n\n // Add color to the sidebar toggle button\n .sidebar-toggle {\n color: $font-color;\n\n &:hover,\n &:focus {\n background: $hover-bg;\n color: $hover-color;\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Accent\n//\n\n// Accent Variant\n@mixin accent-variant($name, $color) {\n .accent-#{$name} {\n $link-color: $color;\n $link-hover-color: darken($color, 15%);\n $pagination-active-bg: $color;\n $pagination-active-border-color: $color;\n\n a {\n color: $link-color;\n\n @include hover {\n color: $link-hover-color;\n }\n }\n\n .page-item {\n &.active .page-link {\n background-color: $pagination-active-bg;\n border-color: $pagination-active-border-color;\n }\n\n &.disabled .page-link {\n background-color: $pagination-disabled-bg;\n border-color: $pagination-disabled-border-color;\n }\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Custom Forms\n//\n\n// Custom Switch Variant\n@mixin custom-switch-variant($name, $color) {\n &.custom-switch-off-#{$name} {\n & .custom-control-input ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input ~ .custom-control-label::after {\n background: darken($color, 25%);\n }\n }\n\n &.custom-switch-on-#{$name} {\n & .custom-control-input:checked ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:checked:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input:checked ~ .custom-control-label::after {\n background: lighten($color, 30%);\n }\n }\n}\n\n// Custom Range Variant\n@mixin custom-range-variant($name, $color) {\n &.custom-range-#{$name} {\n &:focus {\n outline: none;\n\n &::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-moz-range-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-ms-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n }\n\n &::-webkit-slider-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-moz-range-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-ms-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Backgrounds\n//\n\n// Background Variant\n@mixin background-variant($name, $color) {\n .bg-#{$name} {\n background-color: #{$color} !important;\n\n &,\n > a {\n color: color-yiq($color) !important;\n }\n\n &.btn {\n &:hover {\n border-color: darken($color, 10%);\n color: darken(color-yiq($color), 7.5%);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n &:active,\n &.active {\n background-color: darken($color, 10%) !important;\n border-color: darken($color, 12.5%);\n color: color-yiq(darken($color, 10%));\n }\n }\n }\n}\n\n// Background Gradient Variant\n@mixin background-gradient-variant($name, $color) {\n .bg-gradient-#{$name} {\n @include bg-gradient-variant('&', $color);\n color: color-yiq($color);\n\n &.btn {\n &.disabled,\n &:disabled,\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n background-image: none !important;\n }\n\n &:hover {\n @include bg-gradient-variant('&', darken($color, 7.5%));\n border-color: darken($color, 10%);\n color: darken(color-yiq($color), 7.5%);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n &:active,\n &.active {\n @include bg-gradient-variant('&', darken($color, 10%));\n border-color: darken($color, 12.5%);\n color: color-yiq(darken($color, 10%));\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Direct Chat\n//\n\n// Direct Chat Variant\n@mixin direct-chat-variant($bg-color, $color: #fff) {\n .right > .direct-chat-text {\n background: $bg-color;\n border-color: $bg-color;\n color: color-yiq($bg-color);\n\n &::after,\n &::before {\n border-left-color: $bg-color;\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Toasts\n//\n\n// Toast Variant\n@mixin toast-variant($name, $color) {\n &.bg-#{$name} {\n background: rgba($color, .9) !important;\n @if (color-yiq($color) == $yiq-text-light) {\n\n .close {\n color: color-yiq($color);\n text-shadow: 0 1px 0 #000;\n }\n }\n\n .toast-header {\n background: rgba($color, .85);\n color: color-yiq($color);\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Miscellaneous\n//\n\n// ETC\n@mixin translate($x, $y) {\n transform: translate($x, $y);\n}\n\n// Different radius each side\n@mixin border-radius-sides($top-left, $top-right, $bottom-left, $bottom-right) {\n border-radius: $top-left $top-right $bottom-left $bottom-right;\n}\n\n@mixin calc($property, $expression) {\n #{$property}: calc(#{$expression});\n}\n\n@mixin rotate($value) {\n transform: rotate($value);\n}\n\n@mixin animation($animation) {\n animation: $animation;\n}\n\n// Gradient background\n@mixin gradient($color: #F5F5F5, $start: #EEE, $stop: #FFF) {\n background: $color;\n background: -webkit-gradient(linear, left bottom, left top, color-stop(0, $start), color-stop(1, $stop));\n background: -ms-linear-gradient(bottom, $start, $stop);\n background: -moz-linear-gradient(center bottom, $start 0%, $stop 100%);\n background: -o-linear-gradient($stop, $start);\n}\n\n",
|
||||||
|
"//\n// Part: Extra Components\n//\n\n@import '../small-box';\n@import '../info-box';\n@import '../timeline';\n@import '../products';\n@import '../direct-chat';\n@import '../users-list';\n@import '../social-widgets';\n",
|
||||||
|
"//\n// Component: Small Box\n//\n\n.small-box {\n @include border-radius($border-radius);\n @include box-shadow($card-shadow);\n\n display: block;\n margin-bottom: 20px;\n position: relative;\n\n // content wrapper\n > .inner {\n padding: 10px;\n }\n\n > .small-box-footer {\n background: rgba($black, 0.1);\n color: rgba($white, 0.8);\n display: block;\n padding: 3px 0;\n position: relative;\n text-align: center;\n text-decoration: none;\n z-index: 10;\n\n &:hover {\n background: rgba($black, 0.15);\n color: $white;\n }\n }\n\n h3 {\n @include font-size(2.2rem);\n font-weight: bold;\n margin: 0 0 10px 0;\n padding: 0;\n white-space: nowrap;\n }\n\n @include media-breakpoint-up(lg) {\n .col-xl-2 &,\n .col-lg-2 &,\n .col-md-2 & {\n h3 {\n @include font-size(1.6rem);\n }\n }\n\n .col-xl-3 &,\n .col-lg-3 &,\n .col-md-3 & {\n h3 {\n @include font-size(1.6rem);\n }\n }\n }\n\n @include media-breakpoint-up(xl) {\n .col-xl-2 &,\n .col-lg-2 &,\n .col-md-2 & {\n h3 {\n @include font-size(2.2rem);\n }\n }\n\n .col-xl-3 &,\n .col-lg-3 &,\n .col-md-3 & {\n h3 {\n @include font-size(2.2rem);\n }\n }\n }\n\n p {\n font-size: 1rem;\n\n > small {\n color: $gray-100;\n display: block;\n font-size: 0.9rem;\n margin-top: 5px;\n }\n }\n\n h3,\n p {\n z-index: 5;\n }\n\n // the icon\n .icon {\n color: rgba($black, 0.15);\n z-index: 0;\n\n > i {\n font-size: 90px;\n position: absolute;\n right: 15px;\n top: 15px;\n transition: all $transition-speed linear;\n\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n font-size: 70px;\n top: 20px;\n }\n }\n\n }\n\n // Small box hover state\n &:hover {\n text-decoration: none;\n\n // Animate icons on small box hover\n .icon > i {\n font-size: 95px;\n\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n font-size: 75px;\n }\n }\n }\n}\n\n@include media-breakpoint-down(sm) {\n // No need for icons on very small devices\n .small-box {\n text-align: center;\n\n .icon {\n display: none;\n }\n\n p {\n font-size: 12px;\n }\n }\n}\n",
|
||||||
|
"//\n// Component: Info Box\n//\n \n.info-box {\n @include box-shadow($card-shadow);\n @include border-radius($border-radius);\n\n background: $white;\n display: flex;\n margin-bottom: map-get($spacers, 3);\n min-height: 80px;\n padding: .5rem;\n position: relative;\n\n .progress {\n background-color: rgba($black, .125);\n height: 2px;\n margin: 5px 0;\n\n .progress-bar {\n background-color: $white;\n }\n }\n\n .info-box-icon {\n @if $enable-rounded {\n border-radius: $border-radius;\n }\n\n align-items: center;\n display: flex;\n font-size: 1.875rem;\n justify-content: center;\n text-align: center;\n width: 70px;\n\n > img {\n max-width: 100%;\n }\n }\n\n .info-box-content {\n flex: 1;\n padding: 5px 10px;\n }\n\n .info-box-number {\n display: block;\n font-weight: $font-weight-bold;\n }\n\n .progress-description,\n .info-box-text {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n @each $name, $color in $theme-colors {\n .info-box {\n .bg-#{$name},\n .bg-gradient-#{$name} {\n color: color-yiq($color);\n\n .progress-bar {\n background-color: color-yiq($color);\n }\n }\n }\n }\n\n .info-box-more {\n display: block;\n }\n\n .progress-description {\n margin: 0;\n\n }\n\n @include media-breakpoint-up(md) {\n .col-xl-2 &,\n .col-lg-2 &,\n .col-md-2 & {\n .progress-description {\n display: none;\n }\n }\n\n .col-xl-3 &,\n .col-lg-3 &,\n .col-md-3 & {\n .progress-description {\n display: none;\n }\n }\n }\n\n @include media-breakpoint-up(lg) {\n .col-xl-2 &,\n .col-lg-2 &,\n .col-md-2 & {\n .progress-description {\n @include font-size(.75rem);\n display: block;\n }\n }\n\n .col-xl-3 &,\n .col-lg-3 &,\n .col-md-3 & {\n .progress-description {\n @include font-size(.75rem);\n display: block;\n }\n }\n }\n\n @include media-breakpoint-up(xl) {\n .col-xl-2 &,\n .col-lg-2 &,\n .col-md-2 & {\n .progress-description {\n @include font-size(1rem);\n display: block;\n }\n }\n\n .col-xl-3 &,\n .col-lg-3 &,\n .col-md-3 & {\n .progress-description {\n @include font-size(1rem);\n display: block;\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Component: Timeline\n//\n\n.timeline {\n margin: 0 0 45px;\n padding: 0;\n position: relative;\n // The line\n &::before {\n @include border-radius($border-radius);\n background: $gray-300;\n bottom: 0;\n content: '';\n left: 31px;\n margin: 0;\n position: absolute;\n top: 0;\n width: 4px;\n }\n // Element\n > div {\n &::before,\n &::after {\n content: \"\";\n display: table;\n }\n\n margin-bottom: 15px;\n margin-right: 10px;\n position: relative;\n // The content\n > .timeline-item {\n @include box-shadow($card-shadow);\n @include border-radius($border-radius);\n background: $white;\n color: $gray-700;\n margin-left: 60px;\n margin-right: 15px;\n margin-top: 0;\n padding: 0;\n position: relative;\n // The time and header\n > .time {\n color: #999;\n float: right;\n font-size: 12px;\n padding: 10px;\n }\n // Header\n > .timeline-header {\n border-bottom: 1px solid $card-border-color;\n color: $gray-700;\n font-size: 16px;\n line-height: 1.1;\n margin: 0;\n padding: 10px;\n // Link in header\n > a {\n font-weight: 600;\n }\n }\n // Item body and footer\n > .timeline-body,\n > .timeline-footer {\n padding: 10px;\n }\n\n > .timeline-body {\n > img {\n margin: 10px;\n }\n > dl, ol, ul {\n margin: 0;\n }\n }\n\n > .timeline-footer {\n > a {\n color: $white;\n }\n }\n }\n // The icons at line\n > .fa,\n > .fas,\n > .far,\n > .fab,\n > .glyphicon,\n > .ion {\n background: $gray-500;\n border-radius: 50%;\n font-size: 15px;\n height: 30px;\n left: 18px;\n line-height: 30px;\n position: absolute;\n text-align: center;\n top: 0;\n width: 30px;\n }\n }\n // Time label\n > .time-label {\n > span {\n @include border-radius(4px);\n background-color: $white;\n display: inline-block;\n font-weight: 600;\n padding: 5px;\n }\n }\n}\n\n.timeline-inverse {\n > div {\n > .timeline-item {\n @include box-shadow(none);\n background: $gray-100;\n border: 1px solid $gray-300;\n\n > .timeline-header {\n border-bottom-color: $gray-300;\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Component: Products\n//\n\n.products-list {\n list-style: none;\n margin: 0;\n padding: 0;\n\n > .item {\n @include clearfix;\n\n @if $enable-rounded {\n @include border-radius($border-radius);\n }\n\n background: $white;\n padding: 10px 0;\n }\n\n .product-img {\n float: left;\n\n img {\n height: 50px;\n width: 50px;\n }\n }\n\n .product-info {\n margin-left: 60px;\n }\n\n .product-title {\n font-weight: 600;\n }\n\n .product-description {\n color: $gray-600;\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.product-list-in-card > .item {\n @include border-radius(0);\n border-bottom: 1px solid $card-border-color;\n\n &:last-of-type {\n border-bottom-width: 0;\n }\n}\n",
|
||||||
|
"//\n// Component: Direct Chat\n//\n \n.direct-chat {\n .card-body {\n overflow-x: hidden;\n padding: 0;\n position: relative;\n }\n\n &.chat-pane-open {\n .direct-chat-contacts {\n @include translate(0, 0);\n }\n }\n\n\n &.timestamp-light {\n .direct-chat-timestamp {\n color: lighten(color-yiq($yiq-text-light), 10%);\n }\n }\n\n &.timestamp-dark {\n .direct-chat-timestamp {\n color: darken(color-yiq($yiq-text-dark), 20%);\n }\n }\n}\n\n.direct-chat-messages {\n @include translate(0, 0);\n height: 250px;\n overflow: auto;\n padding: 10px;\n}\n\n.direct-chat-msg,\n.direct-chat-text {\n display: block;\n}\n\n.direct-chat-msg {\n @include clearfix;\n margin-bottom: 10px;\n}\n\n.direct-chat-messages,\n.direct-chat-contacts {\n transition: transform .5s ease-in-out;\n}\n\n.direct-chat-text {\n @if $enable-rounded {\n @include border-radius($border-radius-lg);\n }\n\n background: $direct-chat-default-msg-bg;\n border: 1px solid $direct-chat-default-msg-border-color;\n color: $direct-chat-default-font-color;\n margin: 5px 0 0 50px;\n padding: 5px 10px;\n position: relative;\n\n //Create the arrow\n &::after,\n &::before {\n border: solid transparent;\n border-right-color: $direct-chat-default-msg-border-color;\n content: ' ';\n height: 0;\n pointer-events: none;\n position: absolute;\n right: 100%;\n top: 15px;\n width: 0;\n }\n\n &::after {\n border-width: 5px;\n margin-top: -5px;\n }\n\n &::before {\n border-width: 6px;\n margin-top: -6px;\n }\n\n .right & {\n margin-left: 0;\n margin-right: 50px;\n\n &::after,\n &::before {\n border-left-color: $direct-chat-default-msg-border-color;\n border-right-color: transparent;\n left: 100%;\n right: auto;\n }\n }\n}\n\n.direct-chat-img {\n @include border-radius(50%);\n float: left;\n height: 40px;\n width: 40px;\n\n .right & {\n float: right;\n }\n}\n\n.direct-chat-infos {\n display: block;\n font-size: $font-size-sm;\n margin-bottom: 2px;\n}\n\n.direct-chat-name {\n font-weight: 600;\n}\n\n.direct-chat-timestamp {\n color: darken($gray-500, 25%);\n}\n\n//Direct chat contacts pane\n.direct-chat-contacts-open {\n .direct-chat-contacts {\n @include translate(0, 0);\n }\n}\n\n.direct-chat-contacts {\n @include translate(101%, 0);\n background: $dark;\n bottom: 0;\n color: $white;\n height: 250px;\n overflow: auto;\n position: absolute;\n top: 0;\n width: 100%;\n}\n\n.direct-chat-contacts-light {\n background: $light;\n\n .contacts-list-name {\n color: $gray-700;\n }\n\n .contacts-list-date {\n color: $gray-600;\n }\n\n .contacts-list-msg {\n color: darken($gray-600, 10%);\n }\n}\n\n//Contacts list -- for displaying contacts in direct chat contacts pane\n.contacts-list {\n @include list-unstyled;\n\n > li {\n @include clearfix;\n border-bottom: 1px solid rgba($black, 0.2);\n margin: 0;\n padding: 10px;\n\n &:last-of-type {\n border-bottom: 0;\n }\n }\n}\n\n.contacts-list-img {\n @include border-radius(50%);\n float: left;\n width: 40px;\n}\n\n.contacts-list-info {\n color: $white;\n margin-left: 45px;\n}\n\n.contacts-list-name,\n.contacts-list-status {\n display: block;\n}\n\n.contacts-list-name {\n font-weight: 600;\n}\n\n.contacts-list-status {\n font-size: $font-size-sm;\n}\n\n.contacts-list-date {\n color: $gray-400;\n font-weight: normal;\n}\n\n.contacts-list-msg {\n color: darken($gray-400, 10%);\n}\n\n// Color variants\n@each $name, $color in $theme-colors {\n .direct-chat-#{$name} {\n @include direct-chat-variant($color);\n }\n}\n\n@each $name, $color in $colors {\n .direct-chat-#{$name} {\n @include direct-chat-variant($color);\n }\n}\n",
|
||||||
|
"//\n// Component: Users List\n//\n\n.users-list {\n @include list-unstyled;\n\n > li {\n float: left;\n padding: 10px;\n text-align: center;\n width: 25%;\n\n img {\n @include border-radius(50%);\n height: auto;\n max-width: 100%;\n }\n\n > a:hover {\n &,\n .users-list-name {\n color: #999;\n }\n }\n }\n}\n\n.users-list-name,\n.users-list-date {\n display: block;\n}\n\n.users-list-name {\n color: $gray-700;\n font-size: $font-size-sm;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.users-list-date {\n color: darken($gray-500, 20%);\n font-size: 12px;\n}\n",
|
||||||
|
"//\n// Component: Social Widgets\n//\n\n//General widget style\n.card-widget {\n border: 0;\n position: relative;\n}\n\n//User Widget Style 1\n.widget-user {\n\n //User name container\n .widget-user-header {\n @if $enable-rounded {\n @include border-top-radius($border-radius);\n }\n\n height: 135px;\n padding: 1rem;\n text-align: center;\n }\n\n //User name\n .widget-user-username {\n font-size: 25px;\n font-weight: 300;\n margin-bottom: 0;\n margin-top: 0;\n text-shadow: 0 1px 1px rgba($black, 0.2);\n }\n\n //User single line description\n .widget-user-desc {\n margin-top: 0;\n }\n\n //User image container\n .widget-user-image {\n left: 50%;\n margin-left: -45px;\n position: absolute;\n top: 80px;\n\n > img {\n border: 3px solid $white;\n height: auto;\n width: 90px;\n }\n }\n\n .card-footer {\n padding-top: 50px;\n }\n}\n\n//User Widget Style 2\n.widget-user-2 {\n\n //User name container\n .widget-user-header {\n @include border-top-radius($border-radius);\n padding: 1rem;\n }\n\n //User name\n .widget-user-username {\n font-size: 25px;\n font-weight: 300;\n margin-bottom: 5px;\n margin-top: 5px;\n }\n\n //User single line description\n .widget-user-desc {\n margin-top: 0;\n }\n\n .widget-user-username,\n .widget-user-desc {\n margin-left: 75px;\n }\n\n //User image container\n .widget-user-image {\n > img {\n float: left;\n height: auto;\n width: 65px;\n }\n }\n}\n"
|
||||||
|
],
|
||||||
|
"names": [],
|
||||||
|
"mappings": "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 truncated
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
/*!
|
||||||
|
* AdminLTE v3.0.0
|
||||||
|
* Only Extra Components
|
||||||
|
* Author: Colorlib
|
||||||
|
* Website: AdminLTE.io <http://adminlte.io>
|
||||||
|
* License: Open source - MIT <http://opensource.org/licenses/MIT>
|
||||||
|
*/.small-box{border-radius:.25rem;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);display:block;margin-bottom:20px;position:relative}.small-box>.inner{padding:10px}.small-box>.small-box-footer{background:rgba(0,0,0,.1);color:rgba(255,255,255,.8);display:block;padding:3px 0;position:relative;text-align:center;text-decoration:none;z-index:10}.small-box>.small-box-footer:hover{background:rgba(0,0,0,.15);color:#fff}.small-box h3{font-size:2.2rem;font-weight:700;margin:0 0 10px 0;padding:0;white-space:nowrap}@media (min-width:992px){.col-lg-2 .small-box h3,.col-md-2 .small-box h3,.col-xl-2 .small-box h3{font-size:1.6rem}.col-lg-3 .small-box h3,.col-md-3 .small-box h3,.col-xl-3 .small-box h3{font-size:1.6rem}}@media (min-width:1200px){.col-lg-2 .small-box h3,.col-md-2 .small-box h3,.col-xl-2 .small-box h3{font-size:2.2rem}.col-lg-3 .small-box h3,.col-md-3 .small-box h3,.col-xl-3 .small-box h3{font-size:2.2rem}}.small-box p{font-size:1rem}.small-box p>small{color:#f8f9fa;display:block;font-size:.9rem;margin-top:5px}.small-box h3,.small-box p{z-index:5}.small-box .icon{color:rgba(0,0,0,.15);z-index:0}.small-box .icon>i{font-size:90px;position:absolute;right:15px;top:15px;transition:all .3s linear}.small-box .icon>i.fa,.small-box .icon>i.fab,.small-box .icon>i.far,.small-box .icon>i.fas,.small-box .icon>i.glyphicon,.small-box .icon>i.ion{font-size:70px;top:20px}.small-box:hover{text-decoration:none}.small-box:hover .icon>i{font-size:95px}.small-box:hover .icon>i.fa,.small-box:hover .icon>i.fab,.small-box:hover .icon>i.far,.small-box:hover .icon>i.fas,.small-box:hover .icon>i.glyphicon,.small-box:hover .icon>i.ion{font-size:75px}@media (max-width:767.98px){.small-box{text-align:center}.small-box .icon{display:none}.small-box p{font-size:12px}}.info-box{box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);border-radius:.25rem;background:#fff;display:flex;margin-bottom:1rem;min-height:80px;padding:.5rem;position:relative}.info-box .progress{background-color:rgba(0,0,0,.125);height:2px;margin:5px 0}.info-box .progress .progress-bar{background-color:#fff}.info-box .info-box-icon{border-radius:.25rem;align-items:center;display:flex;font-size:1.875rem;justify-content:center;text-align:center;width:70px}.info-box .info-box-icon>img{max-width:100%}.info-box .info-box-content{flex:1;padding:5px 10px}.info-box .info-box-number{display:block;font-weight:700}.info-box .info-box-text,.info-box .progress-description{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-box .info-box .bg-gradient-primary,.info-box .info-box .bg-primary{color:#fff}.info-box .info-box .bg-gradient-primary .progress-bar,.info-box .info-box .bg-primary .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-secondary,.info-box .info-box .bg-secondary{color:#fff}.info-box .info-box .bg-gradient-secondary .progress-bar,.info-box .info-box .bg-secondary .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-success,.info-box .info-box .bg-success{color:#fff}.info-box .info-box .bg-gradient-success .progress-bar,.info-box .info-box .bg-success .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-info,.info-box .info-box .bg-info{color:#fff}.info-box .info-box .bg-gradient-info .progress-bar,.info-box .info-box .bg-info .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-warning,.info-box .info-box .bg-warning{color:#1f2d3d}.info-box .info-box .bg-gradient-warning .progress-bar,.info-box .info-box .bg-warning .progress-bar{background-color:#1f2d3d}.info-box .info-box .bg-danger,.info-box .info-box .bg-gradient-danger{color:#fff}.info-box .info-box .bg-danger .progress-bar,.info-box .info-box .bg-gradient-danger .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-light,.info-box .info-box .bg-light{color:#1f2d3d}.info-box .info-box .bg-gradient-light .progress-bar,.info-box .info-box .bg-light .progress-bar{background-color:#1f2d3d}.info-box .info-box .bg-dark,.info-box .info-box .bg-gradient-dark{color:#fff}.info-box .info-box .bg-dark .progress-bar,.info-box .info-box .bg-gradient-dark .progress-bar{background-color:#fff}.info-box .info-box-more{display:block}.info-box .progress-description{margin:0}@media (min-width:768px){.col-lg-2 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-xl-2 .info-box .progress-description{display:none}.col-lg-3 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-3 .info-box .progress-description{display:none}}@media (min-width:992px){.col-lg-2 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-xl-2 .info-box .progress-description{font-size:.75rem;display:block}.col-lg-3 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-3 .info-box .progress-description{font-size:.75rem;display:block}}@media (min-width:1200px){.col-lg-2 .info-box .progress-description,.col-md-2 .info-box .progress-descripLine truncated
|
||||||
|
/*# sourceMappingURL=adminlte.extra-components.min.css.map */
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":["../../../build/scss/AdminLTE-extra-components.scss","../../../build/scss/_small-box.scss","../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../build/scss/_bootstrap-variables.scss","../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss","../../../build/scss/_variables.scss","../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../../build/scss/_info-box.scss","../../../build/scss/_timeline.scss","../../../build/scss/_products.scss","../../../node_modules/bootstrap/scss/mixins/_clearfix.scss","../../../build/scss/_direct-chat.scss","../../../build/scss/mixins/_miscellaneous.scss","../../../node_modules/bootstrap/scss/mixins/_lists.scss","../../../build/scss/mixins/_direct-chat.scss","../../../build/scss/_users-list.scss","../../../build/scss/_social-widgets.scss"],"names":[],"mappings":"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 truncated
|
||||||
@@ -0,0 +1,444 @@
|
|||||||
|
/*!
|
||||||
|
* AdminLTE v3.0.0
|
||||||
|
* Only Pages
|
||||||
|
* Author: Colorlib
|
||||||
|
* Website: AdminLTE.io <http://adminlte.io>
|
||||||
|
* License: Open source - MIT <http://opensource.org/licenses/MIT>
|
||||||
|
*/
|
||||||
|
.close, .mailbox-attachment-close {
|
||||||
|
float: right;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 1;
|
||||||
|
color: #000;
|
||||||
|
text-shadow: 0 1px 0 #ffffff;
|
||||||
|
opacity: .5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close:hover, .mailbox-attachment-close:hover {
|
||||||
|
color: #000;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close:not(:disabled):not(.disabled):hover, .mailbox-attachment-close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus, .mailbox-attachment-close:not(:disabled):not(.disabled):focus {
|
||||||
|
opacity: .75;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.close, button.mailbox-attachment-close {
|
||||||
|
padding: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.close.disabled, a.disabled.mailbox-attachment-close {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-messages > .table {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-controls {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-controls.with-border {
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-read-info {
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-read-info h3 {
|
||||||
|
font-size: 20px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-read-info h5 {
|
||||||
|
margin: 0;
|
||||||
|
padding: 5px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-read-time {
|
||||||
|
color: #999;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-read-message {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachments {
|
||||||
|
padding-left: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachments li {
|
||||||
|
border: 1px solid #eee;
|
||||||
|
float: left;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-name {
|
||||||
|
color: #666;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-icon,
|
||||||
|
.mailbox-attachment-info,
|
||||||
|
.mailbox-attachment-size {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-info {
|
||||||
|
background: #f8f9fa;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-size {
|
||||||
|
color: #999;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-size > span {
|
||||||
|
display: inline-block;
|
||||||
|
padding-top: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-icon {
|
||||||
|
color: #666;
|
||||||
|
font-size: 65px;
|
||||||
|
max-height: 132.5px;
|
||||||
|
padding: 20px 10px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-icon.has-img {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-icon.has-img > img {
|
||||||
|
height: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen {
|
||||||
|
background: #e9ecef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen .lockscreen-name {
|
||||||
|
font-weight: 600;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-logo {
|
||||||
|
font-size: 35px;
|
||||||
|
font-weight: 300;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-logo a {
|
||||||
|
color: #495057;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-wrapper {
|
||||||
|
margin: 0 auto;
|
||||||
|
margin-top: 10%;
|
||||||
|
max-width: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-item {
|
||||||
|
border-radius: 4px;
|
||||||
|
background: #ffffff;
|
||||||
|
margin: 10px auto 30px;
|
||||||
|
padding: 0;
|
||||||
|
position: relative;
|
||||||
|
width: 290px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-image {
|
||||||
|
border-radius: 50%;
|
||||||
|
background: #ffffff;
|
||||||
|
left: -10px;
|
||||||
|
padding: 5px;
|
||||||
|
position: absolute;
|
||||||
|
top: -25px;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-image > img {
|
||||||
|
border-radius: 50%;
|
||||||
|
height: 70px;
|
||||||
|
width: 70px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-credentials {
|
||||||
|
margin-left: 70px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-credentials .form-control {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-credentials .btn {
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 0;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-footer {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-logo,
|
||||||
|
.register-logo {
|
||||||
|
font-size: 2.1rem;
|
||||||
|
font-weight: 300;
|
||||||
|
margin-bottom: .9rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-logo a,
|
||||||
|
.register-logo a {
|
||||||
|
color: #495057;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-page,
|
||||||
|
.register-page {
|
||||||
|
align-items: center;
|
||||||
|
background: #e9ecef;
|
||||||
|
display: flex;
|
||||||
|
height: 100vh;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-box,
|
||||||
|
.register-box {
|
||||||
|
width: 360px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 576px) {
|
||||||
|
.login-box,
|
||||||
|
.register-box {
|
||||||
|
margin-top: 20px;
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body,
|
||||||
|
.register-card-body {
|
||||||
|
background: #ffffff;
|
||||||
|
border-top: 0;
|
||||||
|
color: #666;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control,
|
||||||
|
.register-card-body .input-group .form-control {
|
||||||
|
border-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control:focus,
|
||||||
|
.register-card-body .input-group .form-control:focus {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control:focus ~ .input-group-append .input-group-text,
|
||||||
|
.register-card-body .input-group .form-control:focus ~ .input-group-append .input-group-text {
|
||||||
|
border-color: #80bdff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control.is-valid:focus,
|
||||||
|
.register-card-body .input-group .form-control.is-valid:focus {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control.is-valid ~ .input-group-append .input-group-text,
|
||||||
|
.register-card-body .input-group .form-control.is-valid ~ .input-group-append .input-group-text {
|
||||||
|
border-color: #28a745;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control.is-invalid:focus,
|
||||||
|
.register-card-body .input-group .form-control.is-invalid:focus {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control.is-invalid ~ .input-group-append .input-group-text,
|
||||||
|
.register-card-body .input-group .form-control.is-invalid ~ .input-group-append .input-group-text {
|
||||||
|
border-color: #dc3545;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .input-group-text,
|
||||||
|
.register-card-body .input-group .input-group-text {
|
||||||
|
background-color: transparent;
|
||||||
|
border-bottom-right-radius: 0.25rem;
|
||||||
|
border-left: 0;
|
||||||
|
border-top-right-radius: 0.25rem;
|
||||||
|
color: #777;
|
||||||
|
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-box-msg,
|
||||||
|
.register-box-msg {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 20px 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-auth-links {
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-page {
|
||||||
|
margin: 20px auto 0;
|
||||||
|
width: 600px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767.98px) {
|
||||||
|
.error-page {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-page > .headline {
|
||||||
|
float: left;
|
||||||
|
font-size: 100px;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767.98px) {
|
||||||
|
.error-page > .headline {
|
||||||
|
float: none;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-page > .error-content {
|
||||||
|
display: block;
|
||||||
|
margin-left: 190px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767.98px) {
|
||||||
|
.error-page > .error-content {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-page > .error-content > h3 {
|
||||||
|
font-size: 25px;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767.98px) {
|
||||||
|
.error-page > .error-content > h3 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice {
|
||||||
|
background: #ffffff;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.125);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-title {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-user-img {
|
||||||
|
border: 3px solid #adb5bd;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 3px;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-username {
|
||||||
|
font-size: 21px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post {
|
||||||
|
border-bottom: 1px solid #adb5bd;
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
padding-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post:last-of-type {
|
||||||
|
border-bottom: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .user-block {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .row {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image-thumbs {
|
||||||
|
align-items: stretch;
|
||||||
|
display: flex;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image-thumb {
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 1px solid #dee2e6;
|
||||||
|
display: flex;
|
||||||
|
margin-right: 1rem;
|
||||||
|
max-width: 7rem;
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image-thumb img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image-thumb:hover {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-share a {
|
||||||
|
margin-right: .5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.projects td {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.projects .list-inline {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.projects img.table-avatar,
|
||||||
|
.projects .table-avatar img {
|
||||||
|
border-radius: 50%;
|
||||||
|
display: inline;
|
||||||
|
width: 2.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.projects .project-state {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*# sourceMappingURL=adminlte.pages.css.map */
|
||||||
@@ -0,0 +1,124 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"file": "adminlte.pages.css",
|
||||||
|
"sources": [
|
||||||
|
"../../../build/scss/AdminLTE-pages.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_functions.scss",
|
||||||
|
"../../../build/scss/_bootstrap-variables.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_mixins.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/vendor/_rfs.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_deprecate.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_hover.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_image.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_badge.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_resize.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_screen-reader.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_size.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_reset-text.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-emphasis.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-hide.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-truncate.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_visibility.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_alert.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_buttons.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_caret.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_pagination.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_lists.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_list-group.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_nav-divider.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_forms.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_table-row.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_background-variant.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_border-radius.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_gradients.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_transition.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_clearfix.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_grid-framework.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_grid.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_float.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_close.scss",
|
||||||
|
"../../../build/scss/_variables.scss",
|
||||||
|
"../../../build/scss/_mixins.scss",
|
||||||
|
"../../../build/scss/mixins/_cards.scss",
|
||||||
|
"../../../build/scss/mixins/_sidebar.scss",
|
||||||
|
"../../../build/scss/mixins/_navbar.scss",
|
||||||
|
"../../../build/scss/mixins/_accent.scss",
|
||||||
|
"../../../build/scss/mixins/_custom-forms.scss",
|
||||||
|
"../../../build/scss/mixins/_backgrounds.scss",
|
||||||
|
"../../../build/scss/mixins/_direct-chat.scss",
|
||||||
|
"../../../build/scss/mixins/_toasts.scss",
|
||||||
|
"../../../build/scss/mixins/_miscellaneous.scss",
|
||||||
|
"../../../build/scss/parts/_pages.scss",
|
||||||
|
"../../../build/scss/pages/_mailbox.scss",
|
||||||
|
"../../../build/scss/pages/_lockscreen.scss",
|
||||||
|
"../../../build/scss/pages/_login_and_register.scss",
|
||||||
|
"../../../build/scss/pages/_404_500_errors.scss",
|
||||||
|
"../../../build/scss/pages/_invoice.scss",
|
||||||
|
"../../../build/scss/pages/_profile.scss",
|
||||||
|
"../../../build/scss/pages/_e_commerce.scss",
|
||||||
|
"../../../build/scss/pages/_projects.scss"
|
||||||
|
],
|
||||||
|
"sourcesContent": [
|
||||||
|
"/*!\n * AdminLTE v3.0.0\n * Only Pages\n * Author: Colorlib\n *\t Website: AdminLTE.io <http://adminlte.io>\n * License: Open source - MIT <http://opensource.org/licenses/MIT>\n */\n// Bootstrap\n// ---------------------------------------------------\n@import '~bootstrap/scss/functions';\n@import 'bootstrap-variables';\n@import '~bootstrap/scss/mixins';\n@import '~bootstrap/scss/close';\n\n// Variables and Mixins\n// ---------------------------------------------------\n@import 'variables';\n@import 'mixins';\n\n@import 'parts/pages';\n",
|
||||||
|
"// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n",
|
||||||
|
"// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n\n//\n// Color system\n//\n\n// stylelint-disable\n$white: #ffffff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n$grays: map-merge((\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n), $grays);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n$colors: map-merge((\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n), $colors);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n$theme-colors: map-merge((\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n), $theme-colors);\n// stylelint-enable\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: #1F2D3D !default;\n$yiq-text-light: $white !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: true !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// stylelint-disable\n$spacer: 1rem !default;\n$spacers: () !default;\n$spacers: map-merge((\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n), $spacers);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n$sizes: map-merge((\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n), $sizes);\n// stylelint-enable\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: none !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layoLine truncated
|
||||||
|
"// Toggles\n//\n// Used in conjunction with global variables to enable certain theme features.\n\n// Vendor\n@import \"vendor/rfs\";\n\n// Deprecate\n@import \"mixins/deprecate\";\n\n// Utilities\n@import \"mixins/breakpoints\";\n@import \"mixins/hover\";\n@import \"mixins/image\";\n@import \"mixins/badge\";\n@import \"mixins/resize\";\n@import \"mixins/screen-reader\";\n@import \"mixins/size\";\n@import \"mixins/reset-text\";\n@import \"mixins/text-emphasis\";\n@import \"mixins/text-hide\";\n@import \"mixins/text-truncate\";\n@import \"mixins/visibility\";\n\n// // Components\n@import \"mixins/alert\";\n@import \"mixins/buttons\";\n@import \"mixins/caret\";\n@import \"mixins/pagination\";\n@import \"mixins/lists\";\n@import \"mixins/list-group\";\n@import \"mixins/nav-divider\";\n@import \"mixins/forms\";\n@import \"mixins/table-row\";\n\n// // Skins\n@import \"mixins/background-variant\";\n@import \"mixins/border-radius\";\n@import \"mixins/box-shadow\";\n@import \"mixins/gradients\";\n@import \"mixins/transition\";\n\n// // Layout\n@import \"mixins/clearfix\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n@import \"mixins/float\";\n",
|
||||||
|
"// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` Line truncated
|
||||||
|
"// Deprecate mixin\n//\n// This mixin can be used to deprecate mixins or functions.\n// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to\n// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)\n@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {\n @if ($enable-deprecation-messages != false and $ignore-warning != true) {\n @warn \"#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.\";\n }\n}\n",
|
||||||
|
"// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n",
|
||||||
|
"// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n",
|
||||||
|
"// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin badge-variant($bg) {\n color: color-yiq($bg);\n background-color: $bg;\n\n @at-root a#{&} {\n @include hover-focus {\n color: color-yiq($bg);\n background-color: darken($bg, 10%);\n }\n\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);\n }\n }\n}\n",
|
||||||
|
"// Resize anything\n\n@mixin resizable($direction) {\n overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`\n resize: $direction; // Options: horizontal, vertical, both\n}\n",
|
||||||
|
"// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n }\n}\n",
|
||||||
|
"// Sizing shortcuts\n\n@mixin size($width, $height: $width) {\n width: $width;\n height: $height;\n @include deprecate(\"`size()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $color !important;\n }\n @if $emphasized-link-hover-darken-percentage != 0 {\n a#{$parent} {\n @include hover-focus {\n color: darken($color, $emphasized-link-hover-darken-percentage) !important;\n }\n }\n }\n}\n",
|
||||||
|
"// CSS image replacement\n@mixin text-hide($ignore-warning: false) {\n // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n\n @include deprecate(\"`text-hide()`\", \"v4.1.0\", \"v5\", $ignore-warning);\n}\n",
|
||||||
|
"// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n @include deprecate(\"`invisible()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin alert-variant($background, $border, $color) {\n color: $color;\n @include gradient-bg($background);\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n",
|
||||||
|
"// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n border-color: $color;\n\n @include hover {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @include border-radius($border-radius, 0);\n}\n",
|
||||||
|
"@mixin caret-down {\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-bottom: 0;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n border-top: 0;\n border-right: $caret-width solid transparent;\n border-bottom: $caret-width solid;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-right {\n border-top: $caret-width solid transparent;\n border-right: 0;\n border-bottom: $caret-width solid transparent;\n border-left: $caret-width solid;\n}\n\n@mixin caret-left {\n border-top: $caret-width solid transparent;\n border-right: $caret-width solid;\n border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n @if $enable-caret {\n &::after {\n display: inline-block;\n margin-left: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @if $direction == down {\n @include caret-down;\n } @else if $direction == up {\n @include caret-up;\n } @else if $direction == right {\n @include caret-right;\n }\n }\n\n @if $direction == left {\n &::after {\n display: none;\n }\n\n &::before {\n display: inline-block;\n margin-right: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @include caret-left;\n }\n }\n\n &:empty::after {\n margin-left: 0;\n }\n }\n}\n",
|
||||||
|
"// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n",
|
||||||
|
"// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n",
|
||||||
|
"// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n\n &.list-group-item-action {\n @include hover-focus {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: $white;\n background-color: $color;\n border-color: $color;\n }\n }\n }\n}\n",
|
||||||
|
"// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) {\n height: 0;\n margin: $margin-y 0;\n overflow: hidden;\n border-top: 1px solid $color;\n}\n",
|
||||||
|
"// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-focus-border-color` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $input-focus-box-shadow;\n }\n }\n}\n\n\n@mixin form-validation-state($state, $color, $icon) {\n .#{$state}-feedback {\n display: none;\n width: 100%;\n margin-top: $form-feedback-margin-top;\n @include font-size($form-feedback-font-size);\n color: $color;\n }\n\n .#{$state}-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n margin-top: .1rem;\n @include font-size($form-feedback-tooltip-font-size);\n line-height: $form-feedback-tooltip-line-height;\n color: color-yiq($color);\n background-color: rgba($color, $form-feedback-tooltip-opacity);\n @include border-radius($form-feedback-tooltip-border-radius);\n }\n\n .form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-image: $icon;\n background-repeat: no-repeat;\n background-position: center right $input-height-inner-quarter;\n background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n // stylelint-disable-next-line selector-no-qualifying-type\n textarea.form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n }\n\n .custom-select {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $custom-select-feedback-icon-padding-right;\n background: $custom-select-background, $icon $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n\n .form-control-file {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .form-check-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .form-check-label {\n color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .custom-control-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-control-label {\n color: $color;\n\n &::before {\n border-color: $color;\n }\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n border-color: lighten($color, 10%);\n @include gradient-bg(lighten($color, 10%));\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n &:not(:checked) ~ .custom-control-label::before {\n border-color: $color;\n }\n }\n }\n }\n\n // custom file\n .custom-file-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-file-label {\n border-color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:focus {\n ~ .custom-file-label {\n border-color: $coLine truncated
|
||||||
|
"// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n\n @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent},\n button#{$parent} {\n @include hover-focus {\n background-color: darken($color, 10%) !important;\n }\n }\n}\n\n@mixin bg-gradient-variant($parent, $color) {\n #{$parent} {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\n }\n}\n",
|
||||||
|
"// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n",
|
||||||
|
"@mixin box-shadow($shadow...) {\n @if $enable-shadows {\n $result: ();\n\n @if (length($shadow) == 1) {\n // We can pass `@include box-shadow(none);`\n $result: $shadow;\n } @else {\n // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`\n @for $i from 1 through length($shadow) {\n @if nth($shadow, $i) != \"none\" {\n $result: append($result, nth($shadow, $i), \"comma\");\n }\n }\n }\n @if (length($result) > 0) {\n box-shadow: $result;\n }\n }\n}\n",
|
||||||
|
"// Gradients\n\n@mixin gradient-bg($color) {\n @if $enable-gradients {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n } @else {\n background-color: $color;\n }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n",
|
||||||
|
"// stylelint-disable property-blacklist\n@mixin transition($transition...) {\n @if $enable-transitions {\n @if length($transition) == 0 {\n transition: $transition-base;\n } @else {\n transition: $transition;\n }\n }\n\n @if $enable-prefers-reduced-motion-media-query {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n",
|
||||||
|
"@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n",
|
||||||
|
"// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n",
|
||||||
|
"/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n@mixin float-left {\n float: left !important;\n @include deprecate(\"The `float-left` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-right {\n float: right !important;\n @include deprecate(\"The `float-right` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-none {\n float: none !important;\n @include deprecate(\"The `float-none` mixin\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
".close {\n float: right;\n @include font-size($close-font-size);\n font-weight: $close-font-weight;\n line-height: 1;\n color: $close-color;\n text-shadow: $close-text-shadow;\n opacity: .5;\n\n // Override <a>'s hover style\n @include hover {\n color: $close-color;\n text-decoration: none;\n }\n\n &:not(:disabled):not(.disabled) {\n @include hover-focus {\n opacity: .75;\n }\n }\n}\n\n// Additional properties for button version\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n// stylelint-disable-next-line selector-no-qualifying-type\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n appearance: none;\n}\n\n// Future-proof disabling of clicks on `<a>` elements\n\n// stylelint-disable-next-line selector-no-qualifying-type\na.close.disabled {\n pointer-events: none;\n}\n",
|
||||||
|
"//\n// Core: Variables\n//\n\n// COLORS\n// --------------------------------------------------------\n$blue: #0073b7 !default;\n$navy: #001f3f !default;\n$teal: #39cccc !default;\n$olive: #3d9970 !default;\n$lime: #01ff70 !default;\n$orange: #ff851b !default;\n$fuchsia: #f012be !default;\n$purple: #605ca8 !default;\n$maroon: #d81b60 !default;\n$black: #111 !default;\n$gray-x-light: #d2d6de !default;\n\n$colors: map-merge((\n 'navy': $navy,\n 'olive': $olive,\n 'lime': $lime,\n 'fuchsia': $fuchsia,\n 'maroon': $maroon,\n), $colors);\n\n// LAYOUT\n// --------------------------------------------------------\n\n$font-size-root: 1rem !default;\n\n// Sidebar\n$sidebar-width: 250px !default;\n$sidebar-padding-x: 0.5rem !default;\n$sidebar-padding-y: 0 !default;\n\n// Boxed layout maximum width\n$boxed-layout-max-width: 1250px !default;\n\n// When to show the smaller logo\n$screen-header-collapse: map-get($grid-breakpoints, md) !default;\n\n// Body background (Affects main content background only)\n$main-bg: #f4f6f9 !default;\n\n// Content padding\n$content-padding-y: 0 !default;\n$content-padding-x: $navbar-padding-x !default;\n\n// IMAGE SIZES\n// --------------------------------------------------------\n$img-size-sm: 1.875rem !default;\n$img-size-md: 3.75rem !default;\n$img-size-lg: 6.25rem !default;\n$img-size-push: .625rem !default;\n\n// MAIN HEADER\n// --------------------------------------------------------\n$main-header-bottom-border-width: $border-width !default;\n$main-header-bottom-border-color: $gray-300 !default;\n$main-header-bottom-border: $main-header-bottom-border-width solid $main-header-bottom-border-color !default;\n$main-header-link-padding-y: $navbar-padding-y !default;\n$main-header-link-padding-x: $navbar-padding-x !default;\n$main-header-brand-padding-y: $navbar-brand-padding-y !default;\n$main-header-brand-padding-x: $navbar-padding-x !default;\n$main-header-height-inner: ($nav-link-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height: calc(#{$main-header-height-inner} + #{$main-header-bottom-border-width}) !default;\n$nav-link-sm-padding-y: .35rem !default;\n$nav-link-sm-height: ($font-size-sm * $line-height-sm + $nav-link-sm-padding-y * 1.785) !default;\n$main-header-height-sm-inner: ($nav-link-sm-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height-sm: calc(#{$main-header-height-sm-inner} + #{$main-header-bottom-border-width}) !default;\n\n\n// Main header skins\n$main-header-dark-form-control-bg: hsla(100, 100%, 100%, 0.2) !default;\n$main-header-dark-form-control-focused-bg: hsla(100, 100%, 100%, 0.6) !default;\n$main-header-dark-form-control-focused-color: $gray-800 !default;\n$main-header-dark-form-control-border: 0 !default;\n$main-header-dark-form-control-focused-border: 0 !default;\n$main-header-dark-placeholder-color: hsla(100, 100%, 100%, 0.6) !default;\n\n$main-header-light-form-control-bg: darken($gray-100, 2%) !default;\n$main-header-light-form-control-focused-bg: $gray-200 !default;\n$main-header-light-form-control-focused-color: $gray-800 !default;\n$main-header-light-form-control-border: 0 !default;\n$main-header-light-form-control-focused-border: 0 !default;\n$main-header-light-placeholder-color: hsla(0, 0%, 0%, 0.6) !default;\n\n// MAIN FOOTER\n// --------------------------------------------------------\n$main-footer-padding: 1rem !default;\n$main-footer-padding-sm: $main-footer-padding * .812 !default;\n$main-footer-border-top-width: 1px !default;\n$main-footer-border-top-color: $gray-300 !default;\n$main-footer-border-top: $main-footer-border-top-width solid $main-footer-border-top-color !default;\n$main-footer-height-inner: (($font-size-root * $line-height-base) + ($main-footer-padding * 2)) !default;\n$main-footer-height: calc(#{$main-footer-height-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-height-sm-inner: (($font-size-sm * $line-height-base) + ($main-footer-padding-sm * 2)) !default;\n$main-footer-height-sm: calc(#{$main-footer-height-sm-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-bg: $white;\n\n// SIDEBAR SKINS\n// --------------------------------------------------------\n\n// Dark sidebar\n$sidebar-dark-bg: $dark !default;\n$sidebar-dark-hover-bg: hsla(100, 100%, 100%, 0.1) !default;\n$sidebar-dark-color: #C2C7D0 !default;\n$sidebar-dark-hover-color: $white !default;\n$sidebar-dark-active-color: $white !default;\n$sidebar-dark-submenu-bg: transparent !default;\n$sidebar-dark-submenu-color: #C2C7D0 !default;\n$sidebar-dark-submenu-hover-color: $white !default;\n$sidebar-dark-submenu-hover-bg: $sidebar-dark-hover-bg !default;\n$sidebar-dark-submenu-active-color: $sidebar-dark-bg !default;\n$sidebar-dark-submenu-active-bg: hsla(100, 100%, 100%, 0.9) !default;\n$sidebar-dark-header-color: $white !default;\n\n// Light sidebar\n$sidebar-light-bg: $white !default;\n$sidebar-light-hover-bg: rgba($black, .1) !default;\n$sidebar-light-color: $gray-800 !default;\nLine truncated
|
||||||
|
"//\n// General: Mixins\n//\n\n@import 'mixins/cards';\n@import 'mixins/sidebar';\n@import 'mixins/navbar';\n@import 'mixins/accent';\n@import 'mixins/custom-forms';\n@import 'mixins/backgrounds';\n@import 'mixins/direct-chat';\n@import 'mixins/toasts';\n@import 'mixins/miscellaneous';\n",
|
||||||
|
"//\n// Mixins: Cards Variant\n//\n\n@mixin cards-variant($name, $color) {\n .card-#{$name} {\n &.card-tabs {\n &:not(.card-outline) {\n .card-header {\n background-color: $color;\n\n &,\n a {\n color: color-yiq($color);\n }\n\n a.active {\n color: color-yiq($white);\n }\n }\n }\n\n &.card-outline {\n border-top: 3px solid $color;\n }\n }\n\n &.card-outline-tabs {\n .card-header {\n a {\n &:hover {\n border-top: 3px solid $nav-tabs-border-color;\n }\n\n &.active {\n border-top: 3px solid $color;\n }\n }\n }\n }\n }\n\n .bg-#{$name},\n .bg-gradient-#{$name},\n .card-#{$name}:not(.card-outline) {\n .btn-tool {\n color: rgba(color-yiq($color), 0.8);\n\n &:hover {\n color: color-yiq($color);\n }\n }\n }\n\n .card.bg-#{$name},\n .card.bg-gradient-#{$name} {\n .bootstrap-datetimepicker-widget {\n .table td,\n .table th {\n border: none;\n }\n\n table thead tr:first-child th:hover,\n table td.day:hover,\n table td.hour:hover,\n table td.minute:hover,\n table td.second:hover {\n background: darken($color, 8%);\n color: color-yiq($color);\n }\n\n table td.today::before {\n border-bottom-color: color-yiq($color);\n }\n\n table td.active,\n table td.active:hover {\n background: lighten($color, 10%);\n color: color-yiq($color);\n }\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Sidebar\n//\n\n// Sidebar Color\n@mixin sidebar-color($color) {\n .nav-sidebar > .nav-item {\n & > .nav-link.active {\n background-color: $color;\n color: color-yiq($color);\n }\n }\n\n .nav-sidebar.nav-legacy > .nav-item {\n & > .nav-link.active {\n border-color: $color;\n }\n }\n}\n\n// Sidebar Mini Breakpoints\n@mixin sidebar-mini-breakpoint() {\n // A fix for text overflow while transitioning from sidebar mini to full sidebar\n .nav-sidebar,\n .nav-sidebar > .nav-header,\n .nav-sidebar .nav-link {\n white-space: nowrap;\n overflow: hidden;\n }\n\n // When the sidebar is collapsed...\n &.sidebar-collapse {\n .d-hidden-mini {\n display: none;\n }\n\n // Apply the new margins to the main content and footer\n .content-wrapper,\n .main-footer,\n .main-header {\n margin-left: $sidebar-mini-width !important;\n }\n\n // Make the sidebar headers\n .nav-sidebar .nav-header {\n display: none;\n }\n\n .nav-sidebar .nav-link p {\n width: 0;\n }\n\n .sidebar .user-panel > .info,\n .nav-sidebar .nav-link p,\n .brand-text {\n margin-left: -10px;\n opacity: 0;\n visibility: hidden;\n }\n\n .logo-xl {\n opacity: 0;\n visibility: hidden;\n }\n\n .logo-xs {\n display: inline-block;\n opacity: 1;\n visibility: visible;\n }\n\n // Modify the sidebar to shrink instead of disappearing\n .main-sidebar {\n overflow-x: hidden;\n\n &,\n &::before {\n // Don't go away! Just shrink\n margin-left: 0;\n width: $sidebar-mini-width;\n }\n\n .user-panel {\n .image {\n float: none;\n }\n }\n\n &:hover,\n &.sidebar-focused {\n width: $sidebar-width;\n\n .nav-sidebar.nav-child-indent .nav-treeview {\n padding-left: 1rem;\n }\n\n .brand-link {\n width: $sidebar-width;\n }\n\n .user-panel {\n text-align: left;\n\n .image {\n float: left;\n }\n }\n\n .user-panel > .info,\n .nav-sidebar .nav-link p,\n .brand-text,\n .logo-xl {\n display: inline-block;\n margin-left: 0;\n opacity: 1;\n visibility: visible;\n }\n\n .nav-flat {\n .nav-icon {\n margin-left: 0;\n }\n\n .nav-treeview {\n .nav-icon {\n margin-left: -.2rem;\n }\n }\n }\n\n .logo-xs {\n opacity: 0;\n visibility: hidden;\n }\n\n .brand-image {\n margin-right: .5rem;\n }\n\n // Make the sidebar links, menus, labels, badges\n // and angle icons disappear\n .sidebar-form,\n .user-panel > .info {\n display: block !important;\n -webkit-transform: translateZ(0);\n }\n\n .nav-sidebar > .nav-item > .nav-link > span {\n display: inline-block !important;\n }\n }\n }\n\n // Make an element visible only when sidebar mini is active\n .visible-sidebar-mini {\n display: block !important;\n }\n\n &.layout-fixed {\n .main-sidebar:hover {\n .brand-link {\n width: $sidebar-width;\n }\n }\n\n .brand-link {\n width: $sidebar-mini-width;\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Navbar\n//\n\n// Navbar Variant\n@mixin navbar-variant($color, $font-color: rgba(255, 255, 255, 0.8), $hover-color: #f6f6f6, $hover-bg: rgba(0, 0, 0, 0.1)) {\n background-color: $color;\n\n .nav > li > a {\n color: $font-color;\n }\n\n .nav > li > a:hover,\n .nav > li > a:active,\n .nav > li > a:focus,\n .nav .open > a,\n .nav .open > a:hover,\n .nav .open > a:focus,\n .nav > .active > a {\n background: $hover-bg;\n color: $hover-color;\n }\n\n // Add color to the sidebar toggle button\n .sidebar-toggle {\n color: $font-color;\n\n &:hover,\n &:focus {\n background: $hover-bg;\n color: $hover-color;\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Accent\n//\n\n// Accent Variant\n@mixin accent-variant($name, $color) {\n .accent-#{$name} {\n $link-color: $color;\n $link-hover-color: darken($color, 15%);\n $pagination-active-bg: $color;\n $pagination-active-border-color: $color;\n\n a {\n color: $link-color;\n\n @include hover {\n color: $link-hover-color;\n }\n }\n\n .page-item {\n &.active .page-link {\n background-color: $pagination-active-bg;\n border-color: $pagination-active-border-color;\n }\n\n &.disabled .page-link {\n background-color: $pagination-disabled-bg;\n border-color: $pagination-disabled-border-color;\n }\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Custom Forms\n//\n\n// Custom Switch Variant\n@mixin custom-switch-variant($name, $color) {\n &.custom-switch-off-#{$name} {\n & .custom-control-input ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input ~ .custom-control-label::after {\n background: darken($color, 25%);\n }\n }\n\n &.custom-switch-on-#{$name} {\n & .custom-control-input:checked ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:checked:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input:checked ~ .custom-control-label::after {\n background: lighten($color, 30%);\n }\n }\n}\n\n// Custom Range Variant\n@mixin custom-range-variant($name, $color) {\n &.custom-range-#{$name} {\n &:focus {\n outline: none;\n\n &::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-moz-range-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-ms-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n }\n\n &::-webkit-slider-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-moz-range-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-ms-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Backgrounds\n//\n\n// Background Variant\n@mixin background-variant($name, $color) {\n .bg-#{$name} {\n background-color: #{$color} !important;\n\n &,\n > a {\n color: color-yiq($color) !important;\n }\n\n &.btn {\n &:hover {\n border-color: darken($color, 10%);\n color: darken(color-yiq($color), 7.5%);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n &:active,\n &.active {\n background-color: darken($color, 10%) !important;\n border-color: darken($color, 12.5%);\n color: color-yiq(darken($color, 10%));\n }\n }\n }\n}\n\n// Background Gradient Variant\n@mixin background-gradient-variant($name, $color) {\n .bg-gradient-#{$name} {\n @include bg-gradient-variant('&', $color);\n color: color-yiq($color);\n\n &.btn {\n &.disabled,\n &:disabled,\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n background-image: none !important;\n }\n\n &:hover {\n @include bg-gradient-variant('&', darken($color, 7.5%));\n border-color: darken($color, 10%);\n color: darken(color-yiq($color), 7.5%);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n &:active,\n &.active {\n @include bg-gradient-variant('&', darken($color, 10%));\n border-color: darken($color, 12.5%);\n color: color-yiq(darken($color, 10%));\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Direct Chat\n//\n\n// Direct Chat Variant\n@mixin direct-chat-variant($bg-color, $color: #fff) {\n .right > .direct-chat-text {\n background: $bg-color;\n border-color: $bg-color;\n color: color-yiq($bg-color);\n\n &::after,\n &::before {\n border-left-color: $bg-color;\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Toasts\n//\n\n// Toast Variant\n@mixin toast-variant($name, $color) {\n &.bg-#{$name} {\n background: rgba($color, .9) !important;\n @if (color-yiq($color) == $yiq-text-light) {\n\n .close {\n color: color-yiq($color);\n text-shadow: 0 1px 0 #000;\n }\n }\n\n .toast-header {\n background: rgba($color, .85);\n color: color-yiq($color);\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Miscellaneous\n//\n\n// ETC\n@mixin translate($x, $y) {\n transform: translate($x, $y);\n}\n\n// Different radius each side\n@mixin border-radius-sides($top-left, $top-right, $bottom-left, $bottom-right) {\n border-radius: $top-left $top-right $bottom-left $bottom-right;\n}\n\n@mixin calc($property, $expression) {\n #{$property}: calc(#{$expression});\n}\n\n@mixin rotate($value) {\n transform: rotate($value);\n}\n\n@mixin animation($animation) {\n animation: $animation;\n}\n\n// Gradient background\n@mixin gradient($color: #F5F5F5, $start: #EEE, $stop: #FFF) {\n background: $color;\n background: -webkit-gradient(linear, left bottom, left top, color-stop(0, $start), color-stop(1, $stop));\n background: -ms-linear-gradient(bottom, $start, $stop);\n background: -moz-linear-gradient(center bottom, $start 0%, $stop 100%);\n background: -o-linear-gradient($stop, $start);\n}\n\n",
|
||||||
|
"//\n// Part: Pages\n//\n\n@import '../pages/mailbox';\n@import '../pages/lockscreen';\n@import '../pages/login_and_register';\n@import '../pages/404_500_errors';\n@import '../pages/invoice';\n@import '../pages/profile';\n@import '../pages/e_commerce';\n@import '../pages/projects';\n",
|
||||||
|
"//\n// Pages: Mailbox\n//\n\n.mailbox-messages {\n > .table {\n margin: 0;\n }\n}\n\n.mailbox-controls {\n padding: 5px;\n\n &.with-border {\n border-bottom: 1px solid $card-border-color;\n }\n}\n\n.mailbox-read-info {\n border-bottom: 1px solid $card-border-color;\n padding: 10px;\n\n h3 {\n font-size: 20px;\n margin: 0;\n }\n\n h5 {\n margin: 0;\n padding: 5px 0 0;\n }\n}\n\n.mailbox-read-time {\n color: #999;\n font-size: 13px;\n}\n\n.mailbox-read-message {\n padding: 10px;\n}\n\n.mailbox-attachments {\n @include list-unstyled;\n li {\n border: 1px solid #eee;\n float: left;\n margin-bottom: 10px;\n margin-right: 10px;\n width: 200px;\n }\n}\n\n.mailbox-attachment-name {\n color: #666;\n font-weight: bold;\n}\n\n.mailbox-attachment-icon,\n.mailbox-attachment-info,\n.mailbox-attachment-size {\n display: block;\n}\n\n.mailbox-attachment-info {\n background: $gray-100;\n padding: 10px;\n}\n\n.mailbox-attachment-size {\n color: #999;\n font-size: 12px;\n\n > span {\n display: inline-block;\n padding-top: 0.75rem;\n }\n}\n\n.mailbox-attachment-icon {\n color: #666;\n font-size: 65px;\n max-height: 132.5px;\n padding: 20px 10px;\n text-align: center;\n\n &.has-img {\n padding: 0;\n\n > img {\n height: auto;\n max-width: 100%;\n }\n }\n}\n\n.mailbox-attachment-close {\n @extend .close;\n}\n",
|
||||||
|
"//\n// Pages: Lock Screen\n//\n\n// ADD THIS CLASS TO THE <BODY> TAG\n.lockscreen {\n background: $gray-200;\n\n // User name [optional]\n .lockscreen-name {\n font-weight: 600;\n text-align: center;\n }\n}\n\n.lockscreen-logo {\n font-size: 35px;\n font-weight: 300;\n margin-bottom: 25px;\n text-align: center;\n\n a {\n color: $gray-700;\n }\n}\n\n.lockscreen-wrapper {\n margin: 0 auto;\n margin-top: 10%;\n max-width: 400px;\n}\n\n\n// Will contain the image and the sign in form\n.lockscreen-item {\n @include border-radius(4px);\n background: $white;\n margin: 10px auto 30px;\n padding: 0;\n position: relative;\n width: 290px;\n}\n\n// User image\n.lockscreen-image {\n @include border-radius(50%);\n background: $white;\n left: -10px;\n padding: 5px;\n position: absolute;\n top: -25px;\n z-index: 10;\n\n > img {\n @include border-radius(50%);\n height: 70px;\n width: 70px;\n }\n}\n\n// Contains the password input and the login button\n.lockscreen-credentials {\n margin-left: 70px;\n\n .form-control {\n border: 0;\n }\n\n .btn {\n background-color: $white;\n border: 0;\n padding: 0 10px;\n }\n}\n\n.lockscreen-footer {\n margin-top: 10px;\n}\n",
|
||||||
|
"//\n// Pages: Login & Register\n//\n\n.login-logo,\n.register-logo {\n font-size: 2.1rem;\n font-weight: 300;\n margin-bottom: .9rem;\n text-align: center;\n\n a {\n color: $gray-700;\n }\n}\n\n.login-page,\n.register-page {\n align-items: center;\n background: $gray-200;\n display: flex;\n height: 100vh;\n justify-content: center;\n}\n\n.login-box,\n.register-box {\n width: 360px;\n\n @media (max-width: map-get($grid-breakpoints, sm)) {\n margin-top: 20px;\n width: 90%;\n }\n}\n\n.login-card-body,\n.register-card-body {\n background: $white;\n border-top: 0;\n color: #666;\n padding: 20px;\n\n .input-group {\n .form-control {\n border-right: 0;\n\n &:focus {\n box-shadow: none;\n\n & ~ .input-group-append .input-group-text {\n border-color: $input-focus-border-color;\n }\n }\n\n &.is-valid {\n &:focus {\n box-shadow: none;\n }\n\n & ~ .input-group-append .input-group-text {\n border-color: $success;\n }\n }\n\n &.is-invalid {\n &:focus {\n box-shadow: none;\n }\n\n & ~ .input-group-append .input-group-text {\n border-color: $danger;\n }\n }\n }\n\n .input-group-text {\n background-color: transparent;\n border-bottom-right-radius: $border-radius;\n border-left: 0;\n border-top-right-radius: $border-radius;\n color: #777;\n transition: $input-transition;\n }\n }\n}\n\n.login-box-msg,\n.register-box-msg {\n margin: 0;\n padding: 0 20px 20px;\n text-align: center;\n}\n\n.social-auth-links {\n margin: 10px 0;\n}\n",
|
||||||
|
"//\n// Pages: 400 and 500 error pages\n//\n \n.error-page {\n margin: 20px auto 0;\n width: 600px;\n\n @include media-breakpoint-down(sm) {\n width: 100%;\n }\n\n //For the error number e.g: 404\n > .headline {\n float: left;\n font-size: 100px;\n font-weight: 300;\n\n @include media-breakpoint-down(sm) {\n float: none;\n text-align: center;\n }\n }\n\n //For the message\n > .error-content {\n display: block;\n margin-left: 190px;\n\n @include media-breakpoint-down(sm) {\n margin-left: 0;\n }\n\n > h3 {\n font-size: 25px;\n font-weight: 300;\n\n @include media-breakpoint-down(sm) {\n text-align: center;\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Pages: Invoice\n//\n\n.invoice {\n background: $white;\n border: 1px solid $card-border-color;\n position: relative;\n}\n\n.invoice-title {\n margin-top: 0;\n}\n",
|
||||||
|
"//\n// Pages: Profile\n//\n\n.profile-user-img {\n border: 3px solid $gray-500;\n margin: 0 auto;\n padding: 3px;\n width: 100px;\n}\n\n.profile-username {\n font-size: 21px;\n margin-top: 5px;\n}\n\n.post {\n border-bottom: 1px solid $gray-500;\n color: #666;\n margin-bottom: 15px;\n padding-bottom: 15px;\n\n &:last-of-type {\n border-bottom: 0;\n margin-bottom: 0;\n padding-bottom: 0;\n }\n\n .user-block {\n margin-bottom: 15px;\n width: 100%;\n }\n\n .row {\n width: 100%;\n }\n}\n",
|
||||||
|
"//\n// Pages: E-commerce\n//\n\n// product image\n.product-image {\n @include img-fluid;\n width: 100%;\n}\n\n// product image thumbnails list\n.product-image-thumbs {\n align-items: stretch;\n display: flex;\n margin-top: 2rem;\n}\n\n// product image thumbnail\n.product-image-thumb {\n @include box-shadow($thumbnail-box-shadow);\n @include border-radius($thumbnail-border-radius);\n\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n display: flex;\n margin-right: 1rem;\n max-width: 6.5rem + ($thumbnail-padding * 2);\n padding: $thumbnail-padding * 2;\n\n img {\n @include img-fluid;\n align-self: center;\n }\n\n &:hover {\n opacity: 0.5;\n }\n}\n\n// product share\n.product-share {\n a {\n margin-right: .5rem;\n }\n}\n",
|
||||||
|
"//\n// Pages: Projects\n//\n\n.projects {\n td {\n vertical-align: middle;\n }\n\n .list-inline {\n margin-bottom: 0;\n }\n\n // table avatar\n img.table-avatar,\n .table-avatar img {\n border-radius: 50%;\n display: inline;\n width: 2.5rem;\n }\n\n // project state\n .project-state {\n text-align: center;\n }\n}\n"
|
||||||
|
],
|
||||||
|
"names": [],
|
||||||
|
"mappings": "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 truncated
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
/*!
|
||||||
|
* AdminLTE v3.0.0
|
||||||
|
* Only Pages
|
||||||
|
* Author: Colorlib
|
||||||
|
* Website: AdminLTE.io <http://adminlte.io>
|
||||||
|
* License: Open source - MIT <http://opensource.org/licenses/MIT>
|
||||||
|
*/.close,.mailbox-attachment-close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.mailbox-attachment-close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover,.mailbox-attachment-close:not(:disabled):not(.disabled):focus,.mailbox-attachment-close:not(:disabled):not(.disabled):hover{opacity:.75}button.close,button.mailbox-attachment-close{padding:0;background-color:transparent;border:0;appearance:none}a.close.disabled,a.disabled.mailbox-attachment-close{pointer-events:none}.mailbox-messages>.table{margin:0}.mailbox-controls{padding:5px}.mailbox-controls.with-border{border-bottom:1px solid rgba(0,0,0,.125)}.mailbox-read-info{border-bottom:1px solid rgba(0,0,0,.125);padding:10px}.mailbox-read-info h3{font-size:20px;margin:0}.mailbox-read-info h5{margin:0;padding:5px 0 0}.mailbox-read-time{color:#999;font-size:13px}.mailbox-read-message{padding:10px}.mailbox-attachments{padding-left:0;list-style:none}.mailbox-attachments li{border:1px solid #eee;float:left;margin-bottom:10px;margin-right:10px;width:200px}.mailbox-attachment-name{color:#666;font-weight:700}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block}.mailbox-attachment-info{background:#f8f9fa;padding:10px}.mailbox-attachment-size{color:#999;font-size:12px}.mailbox-attachment-size>span{display:inline-block;padding-top:.75rem}.mailbox-attachment-icon{color:#666;font-size:65px;max-height:132.5px;padding:20px 10px;text-align:center}.mailbox-attachment-icon.has-img{padding:0}.mailbox-attachment-icon.has-img>img{height:auto;max-width:100%}.lockscreen{background:#e9ecef}.lockscreen .lockscreen-name{font-weight:600;text-align:center}.lockscreen-logo{font-size:35px;font-weight:300;margin-bottom:25px;text-align:center}.lockscreen-logo a{color:#495057}.lockscreen-wrapper{margin:0 auto;margin-top:10%;max-width:400px}.lockscreen-item{border-radius:4px;background:#fff;margin:10px auto 30px;padding:0;position:relative;width:290px}.lockscreen-image{border-radius:50%;background:#fff;left:-10px;padding:5px;position:absolute;top:-25px;z-index:10}.lockscreen-image>img{border-radius:50%;height:70px;width:70px}.lockscreen-credentials{margin-left:70px}.lockscreen-credentials .form-control{border:0}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px}.lockscreen-footer{margin-top:10px}.login-logo,.register-logo{font-size:2.1rem;font-weight:300;margin-bottom:.9rem;text-align:center}.login-logo a,.register-logo a{color:#495057}.login-page,.register-page{align-items:center;background:#e9ecef;display:flex;height:100vh;justify-content:center}.login-box,.register-box{width:360px}@media (max-width:576px){.login-box,.register-box{margin-top:20px;width:90%}}.login-card-body,.register-card-body{background:#fff;border-top:0;color:#666;padding:20px}.login-card-body .input-group .form-control,.register-card-body .input-group .form-control{border-right:0}.login-card-body .input-group .form-control:focus,.register-card-body .input-group .form-control:focus{box-shadow:none}.login-card-body .input-group .form-control:focus~.input-group-append .input-group-text,.register-card-body .input-group .form-control:focus~.input-group-append .input-group-text{border-color:#80bdff}.login-card-body .input-group .form-control.is-valid:focus,.register-card-body .input-group .form-control.is-valid:focus{box-shadow:none}.login-card-body .input-group .form-control.is-valid~.input-group-append .input-group-text,.register-card-body .input-group .form-control.is-valid~.input-group-append .input-group-text{border-color:#28a745}.login-card-body .input-group .form-control.is-invalid:focus,.register-card-body .input-group .form-control.is-invalid:focus{box-shadow:none}.login-card-body .input-group .form-control.is-invalid~.input-group-append .input-group-text,.register-card-body .input-group .form-control.is-invalid~.input-group-append .input-group-text{border-color:#dc3545}.login-card-body .input-group .input-group-text,.register-card-body .input-group .input-group-text{background-color:transparent;border-bottom-right-radius:.25rem;border-left:0;border-top-right-radius:.25rem;color:#777;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.login-box-msg,.register-box-msg{margin:0;padding:0 20px 20px;text-align:center}.social-auth-links{margin:10px 0}.error-page{margin:20px auto 0;width:600px}@media (max-width:767.98px){.error-page{width:100%}}.error-page>.headline{float:left;font-size:100px;font-weight:300}@media (max-width:767.98px){.error-page>.headline{float:none;text-align:center}}.error-page>.error-content{display:block;margin-left:190px}@media (max-width:767.98px){.error-page>.error-content{margin-left:0}}.error-page>.error-content>h3{font-size:25px;font-weight:300}@media (max-width:767.98px){.error-page>.error-content>h3{text-align:center}}.invoice{background:#fff;border:1px solid rgba(0,0,0,Line truncated
|
||||||
|
/*# sourceMappingURL=adminlte.pages.min.css.map */
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":["../../../build/scss/AdminLTE-pages.scss","../../../node_modules/bootstrap/scss/_close.scss","../../../build/scss/pages/_mailbox.scss","../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../build/scss/_bootstrap-variables.scss","../../../node_modules/bootstrap/scss/mixins/_hover.scss","../../../node_modules/bootstrap/scss/mixins/_lists.scss","../../../build/scss/pages/_lockscreen.scss","../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../build/scss/pages/_login_and_register.scss","../../../build/scss/pages/_404_500_errors.scss","../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../../build/scss/pages/_invoice.scss","../../../build/scss/pages/_profile.scss","../../../build/scss/pages/_e_commerce.scss","../../../node_modules/bootstrap/scss/mixins/_image.scss","../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss","../../../build/scss/pages/_projects.scss"],"names":[],"mappings":"AAAA;;;;;;ACAA,OCgGA,0BD/FE,MAAO,ME8HH,UAtCW,OFtFf,YGgP4B,IH/O5B,YAAa,EACb,MGgBS,KHfT,YGo3BkC,EAAE,IAAI,EA/2B/B,KHJT,QAAS,GIKR,aAAA,gCJDC,MGUO,KHTP,gBAAiB,KIKlB,2CADA,2CACA,8DADA,8DJCG,QAAS,IAWT,aAAA,gCACJ,QAAS,EACT,iBAAkB,YAClB,OAAQ,EACR,WAAY,KAMP,iBAAS,oCACd,eAAgB,KClCd,yBACA,OAAQ,EAIZ,kBACE,QAAS,IADM,8BAIb,cAAe,IAAI,MEOZ,iBFHX,mBACE,cAAe,IAAI,MEEV,iBFDT,QAAS,KAET,sBACE,UAAW,KACX,OAAQ,EAGV,sBACE,OAAQ,EACR,QAAS,IAAA,EAAA,EAIb,mBACE,MAAO,KACP,UAAW,KAGb,sBACE,QAAS,KAGX,qBItCE,aAAc,EACd,WAAY,KJuCZ,wBACE,OAAQ,IAAA,MAAA,KACR,MAAO,KACP,cAAe,KACf,aAAc,KACd,MAAO,MAIX,yBACE,MAAO,KACP,YAAa,IAGf,yBACA,yBACA,yBACE,QAAS,MAGX,yBACE,WErDS,QFsDT,QAAS,KAGX,yBACE,MAAO,KACP,UAAW,KAET,8BACA,QAAS,aACT,YAAa,OAIjB,yBACE,MAAO,KACP,UAAW,KACX,WAAY,QACZ,QAAS,KAAA,KACT,WAAY,OALU,iCAQpB,QAAS,EAEP,qCACA,OAAQ,KACR,UAAW,KKtFjB,YACE,WHOS,QGJT,6BACE,YAAa,IACb,WAAY,OAIhB,iBACE,UAAW,KACX,YAAa,IACb,cAAe,KACf,WAAY,OAEZ,mBACE,MHJO,QGQX,oBACE,OAAQ,EAAA,KACR,WAAY,IACZ,UAAW,MAKb,iBC7BI,cD8BqB,IACvB,WHzBS,KG0BT,OAAQ,KAAA,KAAA,KACR,QAAS,EACT,SAAU,SACV,MAAO,MAIT,kBCvCI,cDwCqB,IACvB,WHnCS,KGoCT,KAAM,MACN,QAAS,IACT,SAAU,SACV,IAAK,MACL,QAAS,GAEP,sBChDA,cDiDuB,IACvB,OAAQ,KACR,MAAO,KAKX,wBACE,YAAa,KAEb,sCACE,OAAQ,EAGV,6BACE,iBH1DO,KG2DP,OAAQ,EACR,QAAS,EAAA,KAIb,mBACE,WAAY,KExEd,YACA,eACE,UAAW,OACX,YAAa,IACb,cAAe,MACf,WAAY,OAEZ,cAAA,iBACE,MLMO,QKFX,YACA,eACE,YAAa,OACb,WLNS,QKOT,QAAS,KACT,OAAQ,MACR,gBAAiB,OAGnB,WACA,cACE,MAAO,MAEiB,yBAJ1B,WACA,cAII,WAAY,KACZ,MAAO,KAIX,iBACA,oBACE,WL1BS,KK2BT,WAAY,EACZ,MAAO,KACP,QAAS,KAGP,4CAAA,+CACE,aAAc,EADH,kDAAA,qDAIT,WAAY,KAEY,wFAAA,2FACtB,aLyW8B,QKrWxB,2DAAA,8DAEN,WAAY,KAGU,2FAAA,8FACtB,aLjBA,QKqBQ,6DAAA,gEAER,WAAY,KAGU,6FAAA,gGACtB,aL9BA,QKmCN,gDAAA,mDACE,iBAAkB,YAClB,2BLwIwB,OKvIxB,YAAa,EACb,wBLsIwB,OKrIxB,MAAO,KACP,WL+VkC,aAAa,KAAK,WAAW,CAAE,WAAW,KAAK,YK1VvF,eACA,kBACE,OAAQ,EACR,QAAS,EAAA,KAAA,KACT,WAAY,OAGd,mBACE,OAAQ,KAAA,EC1FV,YACE,OAAQ,KAAA,KAAA,EACR,MAAO,MCmEsB,4BDrE/B,YAKI,MAAO,MAIP,sBACA,MAAO,KACP,UAAW,MACX,YAAa,ICyDc,4BD5D3B,sBAME,MAAO,KACP,WAAY,QAKd,2BACA,QAAS,MACT,YAAa,MC8Cc,4BDhD3B,2BAKE,YAAa,GAGb,8BACA,UAAW,KACX,YAAa,ICsCY,4BDxCzB,8BAKE,WAAY,QElCpB,SACE,WRMS,KQLT,OAAQ,IAAI,MReH,iBQdT,SAAU,SAGZ,eACE,WAAY,ECPd,kBACE,OAAQ,IAAI,MTWH,QSVT,OAAQ,EAAA,KACR,QAAS,IACT,MAAO,MAGT,kBACE,UAAW,KACX,WAAY,IAGd,MACE,cAAe,IAAI,MTDV,QSET,MAAO,KACP,cAAe,KACf,eAAgB,KAJb,mBAOD,cAAe,EACf,cAAe,EACf,eAAgB,EAGlB,kBACE,cAAe,KACf,MAAO,KAGT,WACE,MAAO,KC7BX,eCME,UAAW,KAGX,OAAQ,KDPR,MAAO,KAIT,sBACE,YAAa,QACb,QAAS,KACT,WAAY,KAId,qBEFM,WZwzB8B,EAAE,IAAI,IAnzB/B,iBIhBP,cJgN0B,OU/L5B,iBVXS,KUYT,OV2L4B,IU3LI,MVTvB,QUUT,QAAS,KACT,aAAc,KACd,UAAW,KACX,QAAS,MAET,yBClBA,UAAW,KAGX,OAAQ,KDiBN,WAAY,OAbI,2BAiBhB,QAAS,GAMX,iBACE,aAAc,MGrChB,aACE,eAAgB,OAGlB,uBACE,cAAe,EAKH,4BADX,2BAED,cAAe,IACf,QAAS,OACT,MAAO,OAIT,yBACE,WAAY","sourcesContent":["/*!\n * AdminLTE v3.0.0\n * Only Pages\n * Author: Colorlib\n *\t Website: AdminLTE.io <http://adminlte.io>\n * License: Open source - MIT <http://opensource.org/licenses/MIT>\n */\n// Bootstrap\n// ---------------------------------------------------\n@import '~bootstrap/scss/functions';\n@import 'bootstrap-variables';\n@import '~bootstrap/scss/mixins';\n@import '~bootstrap/scss/close';\n\n// Variables and Mixins\n// ---------------------------------------------------\n@import 'variables';\n@import 'mixins';\n\n@import 'parts/pages';\n",".close {\n float: right;\n @include font-size($close-font-size);\n font-weight: $close-font-weight;\n line-height: 1;\n color: $close-color;\n text-shadow: $close-text-shadow;\n opacity: .5;\n\n // Override <a>'s hover style\n @include hover {\n color: $close-color;\n text-decoration: none;\n }\n\n &:not(:disabled):not(.disabled) {\n @include hover-focus {\n opacity: .75;\n }\n }\n}\n\n// Additional properties for button version\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n// stylelint-disable-next-line selector-no-qualifyinLine truncated
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,130 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"file": "adminlte.plugins.css",
|
||||||
|
"sources": [
|
||||||
|
"../../../build/scss/AdminLTE-plugins.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_functions.scss",
|
||||||
|
"../../../build/scss/_bootstrap-variables.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/_mixins.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/vendor/_rfs.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_deprecate.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_hover.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_image.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_badge.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_resize.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_screen-reader.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_size.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_reset-text.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-emphasis.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-hide.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_text-truncate.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_visibility.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_alert.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_buttons.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_caret.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_pagination.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_lists.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_list-group.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_nav-divider.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_forms.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_table-row.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_background-variant.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_border-radius.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_gradients.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_transition.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_clearfix.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_grid-framework.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_grid.scss",
|
||||||
|
"../../../node_modules/bootstrap/scss/mixins/_float.scss",
|
||||||
|
"../../../build/scss/_variables.scss",
|
||||||
|
"../../../build/scss/_mixins.scss",
|
||||||
|
"../../../build/scss/mixins/_cards.scss",
|
||||||
|
"../../../build/scss/mixins/_sidebar.scss",
|
||||||
|
"../../../build/scss/mixins/_navbar.scss",
|
||||||
|
"../../../build/scss/mixins/_accent.scss",
|
||||||
|
"../../../build/scss/mixins/_custom-forms.scss",
|
||||||
|
"../../../build/scss/mixins/_backgrounds.scss",
|
||||||
|
"../../../build/scss/mixins/_direct-chat.scss",
|
||||||
|
"../../../build/scss/mixins/_toasts.scss",
|
||||||
|
"../../../build/scss/mixins/_miscellaneous.scss",
|
||||||
|
"../../../build/scss/parts/_plugins.scss",
|
||||||
|
"../../../build/scss/plugins/_mixins.scss",
|
||||||
|
"../../../build/scss/plugins/_fullcalendar.scss",
|
||||||
|
"../../../build/scss/plugins/_select2.scss",
|
||||||
|
"../../../build/scss/plugins/_bootstrap-slider.scss",
|
||||||
|
"../../../build/scss/plugins/_icheck-bootstrap.scss",
|
||||||
|
"../../../build/scss/plugins/_mapael.scss",
|
||||||
|
"../../../build/scss/plugins/_jqvmap.scss",
|
||||||
|
"../../../build/scss/plugins/_sweetalert2.scss",
|
||||||
|
"../../../build/scss/plugins/_toastr.scss",
|
||||||
|
"../../../build/scss/plugins/_pace.scss",
|
||||||
|
"../../../build/scss/plugins/_bootstrap-switch.scss",
|
||||||
|
"../../../build/scss/plugins/_miscellaneous.scss"
|
||||||
|
],
|
||||||
|
"sourcesContent": [
|
||||||
|
"/*!\n * AdminLTE v3.0.0\n * Only Plugins\n * Author: Colorlib\n *\t Website: AdminLTE.io <http://adminlte.io>\n * License: Open source - MIT <http://opensource.org/licenses/MIT>\n */\n// Bootstrap\n// ---------------------------------------------------\n@import '~bootstrap/scss/functions';\n@import 'bootstrap-variables';\n@import '~bootstrap/scss/mixins';\n// @import '~bootstrap/scss/bootstrap';\n\n// Variables and Mixins\n// ---------------------------------------------------\n@import 'variables';\n@import 'mixins';\n\n@import 'parts/plugins';\n",
|
||||||
|
"// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n",
|
||||||
|
"// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n\n//\n// Color system\n//\n\n// stylelint-disable\n$white: #ffffff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n$grays: map-merge((\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n), $grays);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n$colors: map-merge((\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n), $colors);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n$theme-colors: map-merge((\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n), $theme-colors);\n// stylelint-enable\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: #1F2D3D !default;\n$yiq-text-light: $white !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: true !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// stylelint-disable\n$spacer: 1rem !default;\n$spacers: () !default;\n$spacers: map-merge((\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n), $spacers);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n$sizes: map-merge((\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n), $sizes);\n// stylelint-enable\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: none !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layoLine truncated
|
||||||
|
"// Toggles\n//\n// Used in conjunction with global variables to enable certain theme features.\n\n// Vendor\n@import \"vendor/rfs\";\n\n// Deprecate\n@import \"mixins/deprecate\";\n\n// Utilities\n@import \"mixins/breakpoints\";\n@import \"mixins/hover\";\n@import \"mixins/image\";\n@import \"mixins/badge\";\n@import \"mixins/resize\";\n@import \"mixins/screen-reader\";\n@import \"mixins/size\";\n@import \"mixins/reset-text\";\n@import \"mixins/text-emphasis\";\n@import \"mixins/text-hide\";\n@import \"mixins/text-truncate\";\n@import \"mixins/visibility\";\n\n// // Components\n@import \"mixins/alert\";\n@import \"mixins/buttons\";\n@import \"mixins/caret\";\n@import \"mixins/pagination\";\n@import \"mixins/lists\";\n@import \"mixins/list-group\";\n@import \"mixins/nav-divider\";\n@import \"mixins/forms\";\n@import \"mixins/table-row\";\n\n// // Skins\n@import \"mixins/background-variant\";\n@import \"mixins/border-radius\";\n@import \"mixins/box-shadow\";\n@import \"mixins/gradients\";\n@import \"mixins/transition\";\n\n// // Layout\n@import \"mixins/clearfix\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n@import \"mixins/float\";\n",
|
||||||
|
"// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` Line truncated
|
||||||
|
"// Deprecate mixin\n//\n// This mixin can be used to deprecate mixins or functions.\n// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to\n// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)\n@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {\n @if ($enable-deprecation-messages != false and $ignore-warning != true) {\n @warn \"#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.\";\n }\n}\n",
|
||||||
|
"// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n",
|
||||||
|
"// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n",
|
||||||
|
"// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin badge-variant($bg) {\n color: color-yiq($bg);\n background-color: $bg;\n\n @at-root a#{&} {\n @include hover-focus {\n color: color-yiq($bg);\n background-color: darken($bg, 10%);\n }\n\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);\n }\n }\n}\n",
|
||||||
|
"// Resize anything\n\n@mixin resizable($direction) {\n overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`\n resize: $direction; // Options: horizontal, vertical, both\n}\n",
|
||||||
|
"// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n }\n}\n",
|
||||||
|
"// Sizing shortcuts\n\n@mixin size($width, $height: $width) {\n width: $width;\n height: $height;\n @include deprecate(\"`size()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $color !important;\n }\n @if $emphasized-link-hover-darken-percentage != 0 {\n a#{$parent} {\n @include hover-focus {\n color: darken($color, $emphasized-link-hover-darken-percentage) !important;\n }\n }\n }\n}\n",
|
||||||
|
"// CSS image replacement\n@mixin text-hide($ignore-warning: false) {\n // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n\n @include deprecate(\"`text-hide()`\", \"v4.1.0\", \"v5\", $ignore-warning);\n}\n",
|
||||||
|
"// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n @include deprecate(\"`invisible()`\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"@mixin alert-variant($background, $border, $color) {\n color: $color;\n @include gradient-bg($background);\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n",
|
||||||
|
"// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n border-color: $color;\n\n @include hover {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @include border-radius($border-radius, 0);\n}\n",
|
||||||
|
"@mixin caret-down {\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-bottom: 0;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n border-top: 0;\n border-right: $caret-width solid transparent;\n border-bottom: $caret-width solid;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-right {\n border-top: $caret-width solid transparent;\n border-right: 0;\n border-bottom: $caret-width solid transparent;\n border-left: $caret-width solid;\n}\n\n@mixin caret-left {\n border-top: $caret-width solid transparent;\n border-right: $caret-width solid;\n border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n @if $enable-caret {\n &::after {\n display: inline-block;\n margin-left: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @if $direction == down {\n @include caret-down;\n } @else if $direction == up {\n @include caret-up;\n } @else if $direction == right {\n @include caret-right;\n }\n }\n\n @if $direction == left {\n &::after {\n display: none;\n }\n\n &::before {\n display: inline-block;\n margin-right: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @include caret-left;\n }\n }\n\n &:empty::after {\n margin-left: 0;\n }\n }\n}\n",
|
||||||
|
"// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n",
|
||||||
|
"// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n",
|
||||||
|
"// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n\n &.list-group-item-action {\n @include hover-focus {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: $white;\n background-color: $color;\n border-color: $color;\n }\n }\n }\n}\n",
|
||||||
|
"// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) {\n height: 0;\n margin: $margin-y 0;\n overflow: hidden;\n border-top: 1px solid $color;\n}\n",
|
||||||
|
"// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-focus-border-color` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $input-focus-box-shadow;\n }\n }\n}\n\n\n@mixin form-validation-state($state, $color, $icon) {\n .#{$state}-feedback {\n display: none;\n width: 100%;\n margin-top: $form-feedback-margin-top;\n @include font-size($form-feedback-font-size);\n color: $color;\n }\n\n .#{$state}-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n margin-top: .1rem;\n @include font-size($form-feedback-tooltip-font-size);\n line-height: $form-feedback-tooltip-line-height;\n color: color-yiq($color);\n background-color: rgba($color, $form-feedback-tooltip-opacity);\n @include border-radius($form-feedback-tooltip-border-radius);\n }\n\n .form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-image: $icon;\n background-repeat: no-repeat;\n background-position: center right $input-height-inner-quarter;\n background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n // stylelint-disable-next-line selector-no-qualifying-type\n textarea.form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n }\n\n .custom-select {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $custom-select-feedback-icon-padding-right;\n background: $custom-select-background, $icon $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n\n .form-control-file {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .form-check-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .form-check-label {\n color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .custom-control-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-control-label {\n color: $color;\n\n &::before {\n border-color: $color;\n }\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n border-color: lighten($color, 10%);\n @include gradient-bg(lighten($color, 10%));\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n &:not(:checked) ~ .custom-control-label::before {\n border-color: $color;\n }\n }\n }\n }\n\n // custom file\n .custom-file-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-file-label {\n border-color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:focus {\n ~ .custom-file-label {\n border-color: $coLine truncated
|
||||||
|
"// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n\n @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent},\n button#{$parent} {\n @include hover-focus {\n background-color: darken($color, 10%) !important;\n }\n }\n}\n\n@mixin bg-gradient-variant($parent, $color) {\n #{$parent} {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\n }\n}\n",
|
||||||
|
"// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n",
|
||||||
|
"@mixin box-shadow($shadow...) {\n @if $enable-shadows {\n $result: ();\n\n @if (length($shadow) == 1) {\n // We can pass `@include box-shadow(none);`\n $result: $shadow;\n } @else {\n // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`\n @for $i from 1 through length($shadow) {\n @if nth($shadow, $i) != \"none\" {\n $result: append($result, nth($shadow, $i), \"comma\");\n }\n }\n }\n @if (length($result) > 0) {\n box-shadow: $result;\n }\n }\n}\n",
|
||||||
|
"// Gradients\n\n@mixin gradient-bg($color) {\n @if $enable-gradients {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n } @else {\n background-color: $color;\n }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n",
|
||||||
|
"// stylelint-disable property-blacklist\n@mixin transition($transition...) {\n @if $enable-transitions {\n @if length($transition) == 0 {\n transition: $transition-base;\n } @else {\n transition: $transition;\n }\n }\n\n @if $enable-prefers-reduced-motion-media-query {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n",
|
||||||
|
"@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n",
|
||||||
|
"// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n",
|
||||||
|
"/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n",
|
||||||
|
"// stylelint-disable declaration-no-important\n\n@mixin float-left {\n float: left !important;\n @include deprecate(\"The `float-left` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-right {\n float: right !important;\n @include deprecate(\"The `float-right` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-none {\n float: none !important;\n @include deprecate(\"The `float-none` mixin\", \"v4.3.0\", \"v5\");\n}\n",
|
||||||
|
"//\n// Core: Variables\n//\n\n// COLORS\n// --------------------------------------------------------\n$blue: #0073b7 !default;\n$navy: #001f3f !default;\n$teal: #39cccc !default;\n$olive: #3d9970 !default;\n$lime: #01ff70 !default;\n$orange: #ff851b !default;\n$fuchsia: #f012be !default;\n$purple: #605ca8 !default;\n$maroon: #d81b60 !default;\n$black: #111 !default;\n$gray-x-light: #d2d6de !default;\n\n$colors: map-merge((\n 'navy': $navy,\n 'olive': $olive,\n 'lime': $lime,\n 'fuchsia': $fuchsia,\n 'maroon': $maroon,\n), $colors);\n\n// LAYOUT\n// --------------------------------------------------------\n\n$font-size-root: 1rem !default;\n\n// Sidebar\n$sidebar-width: 250px !default;\n$sidebar-padding-x: 0.5rem !default;\n$sidebar-padding-y: 0 !default;\n\n// Boxed layout maximum width\n$boxed-layout-max-width: 1250px !default;\n\n// When to show the smaller logo\n$screen-header-collapse: map-get($grid-breakpoints, md) !default;\n\n// Body background (Affects main content background only)\n$main-bg: #f4f6f9 !default;\n\n// Content padding\n$content-padding-y: 0 !default;\n$content-padding-x: $navbar-padding-x !default;\n\n// IMAGE SIZES\n// --------------------------------------------------------\n$img-size-sm: 1.875rem !default;\n$img-size-md: 3.75rem !default;\n$img-size-lg: 6.25rem !default;\n$img-size-push: .625rem !default;\n\n// MAIN HEADER\n// --------------------------------------------------------\n$main-header-bottom-border-width: $border-width !default;\n$main-header-bottom-border-color: $gray-300 !default;\n$main-header-bottom-border: $main-header-bottom-border-width solid $main-header-bottom-border-color !default;\n$main-header-link-padding-y: $navbar-padding-y !default;\n$main-header-link-padding-x: $navbar-padding-x !default;\n$main-header-brand-padding-y: $navbar-brand-padding-y !default;\n$main-header-brand-padding-x: $navbar-padding-x !default;\n$main-header-height-inner: ($nav-link-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height: calc(#{$main-header-height-inner} + #{$main-header-bottom-border-width}) !default;\n$nav-link-sm-padding-y: .35rem !default;\n$nav-link-sm-height: ($font-size-sm * $line-height-sm + $nav-link-sm-padding-y * 1.785) !default;\n$main-header-height-sm-inner: ($nav-link-sm-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height-sm: calc(#{$main-header-height-sm-inner} + #{$main-header-bottom-border-width}) !default;\n\n\n// Main header skins\n$main-header-dark-form-control-bg: hsla(100, 100%, 100%, 0.2) !default;\n$main-header-dark-form-control-focused-bg: hsla(100, 100%, 100%, 0.6) !default;\n$main-header-dark-form-control-focused-color: $gray-800 !default;\n$main-header-dark-form-control-border: 0 !default;\n$main-header-dark-form-control-focused-border: 0 !default;\n$main-header-dark-placeholder-color: hsla(100, 100%, 100%, 0.6) !default;\n\n$main-header-light-form-control-bg: darken($gray-100, 2%) !default;\n$main-header-light-form-control-focused-bg: $gray-200 !default;\n$main-header-light-form-control-focused-color: $gray-800 !default;\n$main-header-light-form-control-border: 0 !default;\n$main-header-light-form-control-focused-border: 0 !default;\n$main-header-light-placeholder-color: hsla(0, 0%, 0%, 0.6) !default;\n\n// MAIN FOOTER\n// --------------------------------------------------------\n$main-footer-padding: 1rem !default;\n$main-footer-padding-sm: $main-footer-padding * .812 !default;\n$main-footer-border-top-width: 1px !default;\n$main-footer-border-top-color: $gray-300 !default;\n$main-footer-border-top: $main-footer-border-top-width solid $main-footer-border-top-color !default;\n$main-footer-height-inner: (($font-size-root * $line-height-base) + ($main-footer-padding * 2)) !default;\n$main-footer-height: calc(#{$main-footer-height-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-height-sm-inner: (($font-size-sm * $line-height-base) + ($main-footer-padding-sm * 2)) !default;\n$main-footer-height-sm: calc(#{$main-footer-height-sm-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-bg: $white;\n\n// SIDEBAR SKINS\n// --------------------------------------------------------\n\n// Dark sidebar\n$sidebar-dark-bg: $dark !default;\n$sidebar-dark-hover-bg: hsla(100, 100%, 100%, 0.1) !default;\n$sidebar-dark-color: #C2C7D0 !default;\n$sidebar-dark-hover-color: $white !default;\n$sidebar-dark-active-color: $white !default;\n$sidebar-dark-submenu-bg: transparent !default;\n$sidebar-dark-submenu-color: #C2C7D0 !default;\n$sidebar-dark-submenu-hover-color: $white !default;\n$sidebar-dark-submenu-hover-bg: $sidebar-dark-hover-bg !default;\n$sidebar-dark-submenu-active-color: $sidebar-dark-bg !default;\n$sidebar-dark-submenu-active-bg: hsla(100, 100%, 100%, 0.9) !default;\n$sidebar-dark-header-color: $white !default;\n\n// Light sidebar\n$sidebar-light-bg: $white !default;\n$sidebar-light-hover-bg: rgba($black, .1) !default;\n$sidebar-light-color: $gray-800 !default;\nLine truncated
|
||||||
|
"//\n// General: Mixins\n//\n\n@import 'mixins/cards';\n@import 'mixins/sidebar';\n@import 'mixins/navbar';\n@import 'mixins/accent';\n@import 'mixins/custom-forms';\n@import 'mixins/backgrounds';\n@import 'mixins/direct-chat';\n@import 'mixins/toasts';\n@import 'mixins/miscellaneous';\n",
|
||||||
|
"//\n// Mixins: Cards Variant\n//\n\n@mixin cards-variant($name, $color) {\n .card-#{$name} {\n &.card-tabs {\n &:not(.card-outline) {\n .card-header {\n background-color: $color;\n\n &,\n a {\n color: color-yiq($color);\n }\n\n a.active {\n color: color-yiq($white);\n }\n }\n }\n\n &.card-outline {\n border-top: 3px solid $color;\n }\n }\n\n &.card-outline-tabs {\n .card-header {\n a {\n &:hover {\n border-top: 3px solid $nav-tabs-border-color;\n }\n\n &.active {\n border-top: 3px solid $color;\n }\n }\n }\n }\n }\n\n .bg-#{$name},\n .bg-gradient-#{$name},\n .card-#{$name}:not(.card-outline) {\n .btn-tool {\n color: rgba(color-yiq($color), 0.8);\n\n &:hover {\n color: color-yiq($color);\n }\n }\n }\n\n .card.bg-#{$name},\n .card.bg-gradient-#{$name} {\n .bootstrap-datetimepicker-widget {\n .table td,\n .table th {\n border: none;\n }\n\n table thead tr:first-child th:hover,\n table td.day:hover,\n table td.hour:hover,\n table td.minute:hover,\n table td.second:hover {\n background: darken($color, 8%);\n color: color-yiq($color);\n }\n\n table td.today::before {\n border-bottom-color: color-yiq($color);\n }\n\n table td.active,\n table td.active:hover {\n background: lighten($color, 10%);\n color: color-yiq($color);\n }\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Sidebar\n//\n\n// Sidebar Color\n@mixin sidebar-color($color) {\n .nav-sidebar > .nav-item {\n & > .nav-link.active {\n background-color: $color;\n color: color-yiq($color);\n }\n }\n\n .nav-sidebar.nav-legacy > .nav-item {\n & > .nav-link.active {\n border-color: $color;\n }\n }\n}\n\n// Sidebar Mini Breakpoints\n@mixin sidebar-mini-breakpoint() {\n // A fix for text overflow while transitioning from sidebar mini to full sidebar\n .nav-sidebar,\n .nav-sidebar > .nav-header,\n .nav-sidebar .nav-link {\n white-space: nowrap;\n overflow: hidden;\n }\n\n // When the sidebar is collapsed...\n &.sidebar-collapse {\n .d-hidden-mini {\n display: none;\n }\n\n // Apply the new margins to the main content and footer\n .content-wrapper,\n .main-footer,\n .main-header {\n margin-left: $sidebar-mini-width !important;\n }\n\n // Make the sidebar headers\n .nav-sidebar .nav-header {\n display: none;\n }\n\n .nav-sidebar .nav-link p {\n width: 0;\n }\n\n .sidebar .user-panel > .info,\n .nav-sidebar .nav-link p,\n .brand-text {\n margin-left: -10px;\n opacity: 0;\n visibility: hidden;\n }\n\n .logo-xl {\n opacity: 0;\n visibility: hidden;\n }\n\n .logo-xs {\n display: inline-block;\n opacity: 1;\n visibility: visible;\n }\n\n // Modify the sidebar to shrink instead of disappearing\n .main-sidebar {\n overflow-x: hidden;\n\n &,\n &::before {\n // Don't go away! Just shrink\n margin-left: 0;\n width: $sidebar-mini-width;\n }\n\n .user-panel {\n .image {\n float: none;\n }\n }\n\n &:hover,\n &.sidebar-focused {\n width: $sidebar-width;\n\n .nav-sidebar.nav-child-indent .nav-treeview {\n padding-left: 1rem;\n }\n\n .brand-link {\n width: $sidebar-width;\n }\n\n .user-panel {\n text-align: left;\n\n .image {\n float: left;\n }\n }\n\n .user-panel > .info,\n .nav-sidebar .nav-link p,\n .brand-text,\n .logo-xl {\n display: inline-block;\n margin-left: 0;\n opacity: 1;\n visibility: visible;\n }\n\n .nav-flat {\n .nav-icon {\n margin-left: 0;\n }\n\n .nav-treeview {\n .nav-icon {\n margin-left: -.2rem;\n }\n }\n }\n\n .logo-xs {\n opacity: 0;\n visibility: hidden;\n }\n\n .brand-image {\n margin-right: .5rem;\n }\n\n // Make the sidebar links, menus, labels, badges\n // and angle icons disappear\n .sidebar-form,\n .user-panel > .info {\n display: block !important;\n -webkit-transform: translateZ(0);\n }\n\n .nav-sidebar > .nav-item > .nav-link > span {\n display: inline-block !important;\n }\n }\n }\n\n // Make an element visible only when sidebar mini is active\n .visible-sidebar-mini {\n display: block !important;\n }\n\n &.layout-fixed {\n .main-sidebar:hover {\n .brand-link {\n width: $sidebar-width;\n }\n }\n\n .brand-link {\n width: $sidebar-mini-width;\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Navbar\n//\n\n// Navbar Variant\n@mixin navbar-variant($color, $font-color: rgba(255, 255, 255, 0.8), $hover-color: #f6f6f6, $hover-bg: rgba(0, 0, 0, 0.1)) {\n background-color: $color;\n\n .nav > li > a {\n color: $font-color;\n }\n\n .nav > li > a:hover,\n .nav > li > a:active,\n .nav > li > a:focus,\n .nav .open > a,\n .nav .open > a:hover,\n .nav .open > a:focus,\n .nav > .active > a {\n background: $hover-bg;\n color: $hover-color;\n }\n\n // Add color to the sidebar toggle button\n .sidebar-toggle {\n color: $font-color;\n\n &:hover,\n &:focus {\n background: $hover-bg;\n color: $hover-color;\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Accent\n//\n\n// Accent Variant\n@mixin accent-variant($name, $color) {\n .accent-#{$name} {\n $link-color: $color;\n $link-hover-color: darken($color, 15%);\n $pagination-active-bg: $color;\n $pagination-active-border-color: $color;\n\n a {\n color: $link-color;\n\n @include hover {\n color: $link-hover-color;\n }\n }\n\n .page-item {\n &.active .page-link {\n background-color: $pagination-active-bg;\n border-color: $pagination-active-border-color;\n }\n\n &.disabled .page-link {\n background-color: $pagination-disabled-bg;\n border-color: $pagination-disabled-border-color;\n }\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Custom Forms\n//\n\n// Custom Switch Variant\n@mixin custom-switch-variant($name, $color) {\n &.custom-switch-off-#{$name} {\n & .custom-control-input ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input ~ .custom-control-label::after {\n background: darken($color, 25%);\n }\n }\n\n &.custom-switch-on-#{$name} {\n & .custom-control-input:checked ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:checked:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input:checked ~ .custom-control-label::after {\n background: lighten($color, 30%);\n }\n }\n}\n\n// Custom Range Variant\n@mixin custom-range-variant($name, $color) {\n &.custom-range-#{$name} {\n &:focus {\n outline: none;\n\n &::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-moz-range-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-ms-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n }\n\n &::-webkit-slider-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-moz-range-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-ms-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Backgrounds\n//\n\n// Background Variant\n@mixin background-variant($name, $color) {\n .bg-#{$name} {\n background-color: #{$color} !important;\n\n &,\n > a {\n color: color-yiq($color) !important;\n }\n\n &.btn {\n &:hover {\n border-color: darken($color, 10%);\n color: darken(color-yiq($color), 7.5%);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n &:active,\n &.active {\n background-color: darken($color, 10%) !important;\n border-color: darken($color, 12.5%);\n color: color-yiq(darken($color, 10%));\n }\n }\n }\n}\n\n// Background Gradient Variant\n@mixin background-gradient-variant($name, $color) {\n .bg-gradient-#{$name} {\n @include bg-gradient-variant('&', $color);\n color: color-yiq($color);\n\n &.btn {\n &.disabled,\n &:disabled,\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n background-image: none !important;\n }\n\n &:hover {\n @include bg-gradient-variant('&', darken($color, 7.5%));\n border-color: darken($color, 10%);\n color: darken(color-yiq($color), 7.5%);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n &:active,\n &.active {\n @include bg-gradient-variant('&', darken($color, 10%));\n border-color: darken($color, 12.5%);\n color: color-yiq(darken($color, 10%));\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Direct Chat\n//\n\n// Direct Chat Variant\n@mixin direct-chat-variant($bg-color, $color: #fff) {\n .right > .direct-chat-text {\n background: $bg-color;\n border-color: $bg-color;\n color: color-yiq($bg-color);\n\n &::after,\n &::before {\n border-left-color: $bg-color;\n }\n }\n}\n",
|
||||||
|
"//\n// Mixins: Toasts\n//\n\n// Toast Variant\n@mixin toast-variant($name, $color) {\n &.bg-#{$name} {\n background: rgba($color, .9) !important;\n @if (color-yiq($color) == $yiq-text-light) {\n\n .close {\n color: color-yiq($color);\n text-shadow: 0 1px 0 #000;\n }\n }\n\n .toast-header {\n background: rgba($color, .85);\n color: color-yiq($color);\n }\n }\n}\n\n",
|
||||||
|
"//\n// Mixins: Miscellaneous\n//\n\n// ETC\n@mixin translate($x, $y) {\n transform: translate($x, $y);\n}\n\n// Different radius each side\n@mixin border-radius-sides($top-left, $top-right, $bottom-left, $bottom-right) {\n border-radius: $top-left $top-right $bottom-left $bottom-right;\n}\n\n@mixin calc($property, $expression) {\n #{$property}: calc(#{$expression});\n}\n\n@mixin rotate($value) {\n transform: rotate($value);\n}\n\n@mixin animation($animation) {\n animation: $animation;\n}\n\n// Gradient background\n@mixin gradient($color: #F5F5F5, $start: #EEE, $stop: #FFF) {\n background: $color;\n background: -webkit-gradient(linear, left bottom, left top, color-stop(0, $start), color-stop(1, $stop));\n background: -ms-linear-gradient(bottom, $start, $stop);\n background: -moz-linear-gradient(center bottom, $start 0%, $stop 100%);\n background: -o-linear-gradient($stop, $start);\n}\n\n",
|
||||||
|
"//\n// Part: Plugins\n//\n\n@import '../plugins/mixins';\n@import '../plugins/fullcalendar';\n@import '../plugins/select2';\n@import '../plugins/bootstrap-slider';\n@import '../plugins/icheck-bootstrap';\n@import '../plugins/mapael';\n@import '../plugins/jqvmap';\n@import '../plugins/sweetalert2';\n@import '../plugins/toastr';\n@import '../plugins/pace';\n@import '../plugins/bootstrap-switch';\n@import '../plugins/miscellaneous';\n",
|
||||||
|
"//\n// General: Mixins\n//\n\n// Select2 Variant\n@mixin select2-variant($name, $color) {\n .select2-#{$name} {\n\n .select2-container--default &,\n .select2-container--default {\n &.select2-dropdown,\n .select2-dropdown,\n .select2-search--inline {\n .select2-search__field {\n &:focus {\n border: $input-border-width solid lighten($color, 25%);\n }\n }\n }\n\n .select2-results__option--highlighted {\n background-color: $color;\n color: color-yiq($color);\n\n &[aria-selected] {\n &,\n &:hover {\n background-color: darken($color, 3%);\n color: color-yiq(darken($color, 3%));\n }\n }\n }\n\n //Multiple select\n & {\n .select2-selection--multiple {\n &:focus {\n border-color: lighten($color, 25%);\n }\n\n .select2-selection__choice {\n background-color: $color;\n border-color: darken($color, 5%);\n color: color-yiq($color);\n }\n\n .select2-selection__choice__remove {\n color: rgba(color-yiq($color), 0.7);\n\n &:hover {\n color: color-yiq($color);\n }\n }\n }\n\n &.select2-container--focus .select2-selection--multiple {\n border-color: lighten($color, 25%);\n }\n }\n }\n }\n}\n",
|
||||||
|
"//\n// Plugin: Full Calendar\n//\n\n// Buttons\n.fc-button {\n background: $gray-100;\n background-image: none;\n border-bottom-color: #ddd;\n border-color: #ddd;\n color: $gray-700;\n\n &:hover,\n &:active,\n &.hover {\n background-color: #e9e9e9;\n }\n}\n\n// Calendar title\n.fc-header-title h2 {\n color: #666;\n font-size: 15px;\n line-height: 1.6em;\n margin-left: 10px;\n}\n\n.fc-header-right {\n padding-right: 10px;\n}\n\n.fc-header-left {\n padding-left: 10px;\n}\n\n// Calendar table header cells\n.fc-widget-header {\n background: #fafafa;\n}\n\n.fc-grid {\n border: 0;\n width: 100%;\n}\n\n.fc-widget-header:first-of-type,\n.fc-widget-content:first-of-type {\n border-left: 0;\n border-right: 0;\n}\n\n.fc-widget-header:last-of-type,\n.fc-widget-content:last-of-type {\n border-right: 0;\n}\n\n.fc-toolbar {\n margin: 0;\n padding: 1rem;\n}\n\n.fc-day-number {\n font-size: 20px;\n font-weight: 300;\n padding-right: 10px;\n}\n\n.fc-color-picker {\n list-style: none;\n margin: 0;\n padding: 0;\n\n > li {\n float: left;\n font-size: 30px;\n line-height: 30px;\n margin-right: 5px;\n\n .fa,\n .fas,\n .far,\n .fab,\n .glyphicon,\n .ion {\n transition: transform linear .3s;\n\n &:hover {\n @include rotate(30deg);\n }\n }\n }\n}\n\n#add-new-event {\n transition: all linear .3s;\n}\n\n.external-event {\n @include box-shadow($card-shadow);\n\n border-radius: $border-radius;\n cursor: move;\n font-weight: bold;\n margin-bottom: 4px;\n padding: 5px 10px;\n\n &:hover {\n @include box-shadow(inset 0 0 90px rgba(0, 0, 0, 0.2));\n }\n}\n",
|
||||||
|
"//\n// Plugin: Select2\n//\n\n//Signle select\n// .select2-container--default,\n// .select2-selection {\n// &.select2-container--focus,\n// &:focus,\n// &:active {\n// outline: none;\n// }\n// }\n\n.select2-container--default {\n .select2-selection--single {\n border: $input-border-width solid $input-border-color;\n //border-radius: $input-radius;\n padding: ($input-padding-y * 1.25) $input-padding-x;\n height: $input-height;\n }\n\n &.select2-container--open {\n border-color: $primary;\n }\n\n & .select2-dropdown {\n border: $input-border-width solid $input-border-color;\n //border-radius: $input-radius;\n }\n\n & .select2-results__option {\n padding: 6px 12px;\n user-select: none;\n -webkit-user-select: none;\n }\n\n & .select2-selection--single .select2-selection__rendered {\n padding-left: 0;\n //padding-right: 0;\n height: auto;\n margin-top: -3px;\n }\n\n &[dir=\"rtl\"] .select2-selection--single .select2-selection__rendered {\n padding-right: 6px;\n padding-left: 20px;\n }\n\n & .select2-selection--single .select2-selection__arrow {\n height: 31px;\n right: 6px;\n }\n\n & .select2-selection--single .select2-selection__arrow b {\n margin-top: 0;\n }\n\n .select2-dropdown,\n .select2-search--inline {\n .select2-search__field {\n border: $input-border-width solid $input-border-color;\n\n &:focus {\n outline: none;\n border: $input-border-width solid $input-focus-border-color;\n }\n }\n }\n\n .select2-dropdown {\n &.select2-dropdown--below {\n border-top: 0;\n }\n\n &.select2-dropdown--above {\n border-bottom: 0;\n }\n }\n\n .select2-results__option {\n &[aria-disabled='true'] {\n color: $gray-600;\n }\n\n &[aria-selected='true'] {\n $color: $gray-300;\n\n background-color: $color;\n\n &,\n &:hover {\n color: color-yiq($color);\n }\n }\n }\n\n .select2-results__option--highlighted {\n $color: $primary;\n background-color: $color;\n color: color-yiq($color);\n\n &[aria-selected] {\n $color: darken($color, 3%);\n\n &,\n &:hover {\n background-color: $color;\n color: color-yiq($color);\n }\n }\n }\n\n //Multiple select\n & {\n .select2-selection--multiple {\n border: $input-border-width solid $input-border-color;\n min-height: $input-height;\n\n &:focus {\n border-color: $input-focus-border-color;\n }\n\n .select2-selection__rendered {\n padding: 0 $input-padding-x / 2 $input-padding-y;\n margin-bottom: -$input-padding-x / 2;\n\n li:first-child.select2-search.select2-search--inline {\n width: 100%;\n margin-left: $input-padding-x / 2;\n\n .select2-search__field {\n width: 100% !important;\n }\n }\n\n\n .select2-search.select2-search--inline {\n .select2-search__field {\n border: 0;\n margin-top: 6px;\n }\n }\n }\n\n .select2-selection__choice {\n background-color: $primary;\n border-color: darken($primary, 5%);\n color: color-yiq($primary);\n padding: 0 10px;\n margin-top: .31rem;\n }\n\n .select2-selection__choice__remove {\n color: rgba(255, 255, 255, 0.7);\n float: right;\n margin-left: 5px;\n margin-right: -2px;\n\n &:hover {\n color: $white;\n }\n }\n\n .text-sm &,\n &.text-sm {\n .select2-search.select2-search--inline {\n .select2-search__field {\n margin-top: 8px;\n }\n }\n\n .select2-selection__choice {\n margin-top: .4rem;\n }\n }\n }\n\n &.select2-container--focus .select2-selection--multiple {\n border-color: $input-focus-border-color;\n\n .select2-search__field {\n border: 0;\n }\n }\n }\n\n & .select2-selection--single .select2-selection__rendered li {\n padding-right: 10px;\n }\n\n .input-group-prepend ~ & {\n .select2-selection {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n }\n\n .input-group > &:not(:last-child) {\n .select2-selection {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n }\n}\n\n// Select2 Bootstrap4 Theme overrides\n.select2-container--bootstrap4 {\n &.select2-container--focus .select2-selection {\n box-shadow: none;\n }\n}\n\n// Background colors (theme colors)\n@each $name, $color in $theme-colors {\n @include select2-variant($name, $color);\n}\n\n// Background colors (colors)\n@each $name, $color in $colors {\n @include select2-variant($name, $color);\n}\n",
|
||||||
|
"//\n// Plugin: Bootstrap Slider\n//\n\n// Style override\n.slider {\n &.slider-vertical {\n height: 100%;\n }\n &.slider-horizontal {\n width: 100%;\n }\n}\n\n// Colors\n@each $name, $color in $theme-colors {\n .slider-#{$name} .slider {\n .slider-selection {\n background: $color;\n }\n }\n}\n\n@each $name, $color in $colors {\n .slider-#{$name} .slider {\n .slider-selection {\n background: $color;\n }\n }\n}\n",
|
||||||
|
"//\n// Plugin: iCheck Bootstrap\n//\n\n// iCheck colors (theme colors)\n@each $name, $color in $theme-colors {\n .icheck-#{$name} > input:first-child:not(:checked):not(:disabled):hover + label::before,\n .icheck-#{$name} > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n border-color: #{$color};\n }\n\n .icheck-#{$name} > input:first-child:not(:checked):not(:disabled):focus + label::before,\n .icheck-#{$name} > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n border-color: #{$color};\n }\n\n .icheck-#{$name} > input:first-child:checked + label::before,\n .icheck-#{$name} > input:first-child:checked + input[type=\"hidden\"] + label::before {\n background-color: #{$color};\n border-color: #{$color};\n }\n}\n\n// iCheck colors (colors)\n@each $name, $color in $colors {\n .icheck-#{$name} > input:first-child:not(:checked):not(:disabled):hover + label::before,\n .icheck-#{$name} > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n border-color: #{$color};\n }\n\n .icheck-#{$name} > input:first-child:not(:checked):not(:disabled):focus + label::before,\n .icheck-#{$name} > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n border-color: #{$color};\n }\n\n .icheck-#{$name} > input:first-child:checked + label::before,\n .icheck-#{$name} > input:first-child:checked + input[type=\"hidden\"] + label::before {\n background-color: #{$color};\n border-color: #{$color};\n }\n}\n",
|
||||||
|
"//\n// Plugins: jQuery Mapael\n//\n\n.mapael {\n .map {\n position: relative;\n }\n\n .mapTooltip {\n @include reset-text();\n @include border-radius($tooltip-border-radius);\n @include font-size($tooltip-font-size);\n background-color: $tooltip-bg;\n color: $tooltip-color;\n display: block;\n max-width: $tooltip-max-width;\n padding: $tooltip-padding-y $tooltip-padding-x;\n position: absolute;\n text-align: center;\n word-wrap: break-word;\n z-index: $zindex-tooltip;\n }\n\n .myLegend {\n background-color: $gray-100;\n border: 1px solid $gray-500;\n padding: 10px;\n width: 600px;\n }\n\n .zoomButton {\n background-color: $button-default-background-color;\n border: 1px solid $button-default-border-color;\n border-radius: $btn-border-radius;\n color: $button-default-color;\n cursor: pointer;\n font-weight: bold;\n height: 16px;\n left: 10px;\n line-height: 14px;\n padding-left: 1px;\n position: absolute;\n text-align: center;\n top: 0;\n\n user-select: none;\n width: 16px;\n\n &:hover,\n &:active,\n &.hover {\n background-color: darken($button-default-background-color, 5%);\n color: darken($button-default-color, 10%);\n }\n }\n\n .zoomReset {\n line-height: 12px;\n top: 10px;\n }\n\n .zoomIn {\n top: 30px;\n }\n\n .zoomOut {\n top: 50px;\n }\n}\n",
|
||||||
|
"//\n// Plugins: JQVMap\n//\n\n// Zoom Button size fixes\n.jqvmap-zoomin,\n.jqvmap-zoomout {\n background-color: $button-default-background-color;\n border: 1px solid $button-default-border-color;\n border-radius: $btn-border-radius;\n color: $button-default-color;\n height: 15px;\n width: 15px;\n\n &:hover,\n &:active,\n &.hover {\n background-color: darken($button-default-background-color, 5%);\n color: darken($button-default-color, 10%);\n }\n}\n",
|
||||||
|
"//\n// Plugin: SweetAlert2\n//\n\n// Icon Colors\n.swal2-icon {\n &.swal2-info {\n border-color: ligthen($info, 20%);\n color: $info;\n }\n\n &.swal2-warning {\n border-color: ligthen($warning, 20%);\n color: $warning;\n }\n\n &.swal2-error {\n border-color: ligthen($danger, 20%);\n color: $danger;\n }\n\n &.swal2-question {\n border-color: ligthen($secondary, 20%);\n color: $secondary;\n }\n\n &.swal2-success {\n border-color: ligthen($success, 20%);\n color: $success;\n\n .swal2-success-ring {\n border-color: ligthen($success, 20%);\n }\n\n [class^='swal2-success-line'] {\n background-color: $success;\n }\n }\n\n}\n",
|
||||||
|
"//\n// Plugin: Toastr\n//\n\n// Background to FontAwesome Icons\n// #toast-container > .toast {\n// background-image: none !important;\n// }\n// #toast-container > .toast .toast-message:before {\n// font-family: 'Font Awesome 5 Free';\n// font-size: 24px;\n// font-weight: 900;\n// line-height: 18px;\n// float: left;\n// color: #FFF;\n// padding-right: 0.5em;\n// margin: auto 0.5em auto -1.5em;\n// } \n// #toast-container > .toast-warning .toast-message:before {\n// content: \"\\f06a\";\n// }\n// #toast-container > .toast-error .toast-message:before {\n// content: \"\\f071\";\n// }\n// #toast-container > .toast-info .toast-message:before {\n// content: \"\\f05a\";\n// }\n// #toast-container > .toast-success .toast-message:before {\n// content: \"\\f058\";\n// }\n\n\n#toast-container {\n // Background color\n .toast {\n background-color: $primary;\n }\n\n .toast-success {\n background-color: $success;\n }\n\n .toast-error {\n background-color: $danger;\n }\n\n .toast-info {\n background-color: $info;\n }\n\n .toast-warning {\n background-color: $warning;\n }\n}\n",
|
||||||
|
"//\n// Plugin: Pace\n//\n\n.pace {\n z-index: $zindex-main-sidebar + 10;\n\n .pace-progress {\n z-index: $zindex-main-sidebar + 11;\n }\n\n .pace-activity {\n z-index: $zindex-main-sidebar + 12;\n }\n}\n\n// Mixin \n@mixin pace-variant($name, $color) {\n .pace-#{$name} {\n .pace {\n .pace-progress {\n background: $color;\n }\n }\n }\n\n .pace-barber-shop-#{$name} {\n .pace {\n background: color-yiq($color);\n\n .pace-progress {\n background: $color;\n }\n\n .pace-activity {\n background-image: linear-gradient(45deg, rgba(color-yiq($color), 0.2) 25%, transparent 25%, transparent 50%, rgba(color-yiq($color), 0.2) 50%, rgba(color-yiq($color), 0.2) 75%, transparent 75%, transparent);\n }\n }\n }\n\n .pace-big-counter-#{$name} {\n .pace {\n .pace-progress::after {\n color: rgba($color, .19999999999999996);\n }\n }\n }\n\n .pace-bounce-#{$name} {\n .pace {\n .pace-activity {\n background: $color;\n }\n }\n }\n\n .pace-center-atom-#{$name} {\n .pace-progress {\n height: 100px;\n width: 80px;\n\n &::before {\n background: $color;\n color: color-yiq($color);\n font-size: .8rem;\n line-height: .7rem;\n padding-top: 17%;\n }\n }\n\n .pace-activity {\n border-color: $color;\n\n &::after,\n &::before {\n border-color: $color;\n }\n }\n }\n\n .pace-center-circle-#{$name} {\n .pace {\n .pace-progress {\n background: rgba($color, .8);\n color: color-yiq($color);\n }\n }\n }\n\n .pace-center-radar-#{$name} {\n .pace {\n .pace-activity {\n border-color: $color transparent transparent;\n }\n\n .pace-activity::before {\n border-color: $color transparent transparent;\n }\n }\n }\n\n .pace-center-simple-#{$name} {\n .pace {\n background: color-yiq($color);\n border-color: $color;\n\n .pace-progress {\n background: $color;\n }\n }\n }\n\n .pace-material-#{$name} {\n .pace {\n color: $color;\n }\n }\n\n .pace-corner-indicator-#{$name} {\n .pace {\n .pace-activity {\n background: $color;\n }\n\n .pace-activity::after,\n .pace-activity::before {\n border: 5px solid color-yiq($color);\n }\n\n\n .pace-activity::before {\n border-right-color: rgba($color, .2);\n border-left-color: rgba($color, .2);\n }\n\n .pace-activity::after {\n border-top-color: rgba($color, .2);\n border-bottom-color: rgba($color, .2);\n }\n }\n }\n\n .pace-fill-left-#{$name} {\n .pace {\n .pace-progress {\n background-color: rgba($color, 0.19999999999999996);\n }\n }\n }\n\n .pace-flash-#{$name} {\n .pace {\n .pace-progress {\n background: $color;\n }\n\n .pace-progress-inner {\n box-shadow: 0 0 10px $color, 0 0 5px $color;\n }\n\n .pace-activity {\n border-top-color: $color;\n border-left-color: $color;\n }\n }\n }\n\n .pace-loading-bar-#{$name} {\n .pace {\n .pace-progress {\n background: $color;\n color: $color;\n box-shadow: 120px 0 color-yiq($color), 240px 0 color-yiq($color);\n }\n\n .pace-activity {\n box-shadow: inset 0 0 0 2px $color, inset 0 0 0 7px color-yiq($color);\n }\n }\n }\n\n .pace-mac-osx-#{$name} {\n .pace {\n .pace-progress {\n background-color: $color;\n box-shadow: inset -1px 0 $color, inset 0 -1px $color, inset 0 2px rgba(color-yiq($color), 0.5), inset 0 6px rgba(color-yiq($color), .3);\n }\n\n .pace-activity {\n background-image: radial-gradient(rgba(color-yiq($color), .65) 0%, rgba(color-yiq($color), .15) 100%);\n height: 12px;\n }\n }\n }\n\n .pace-progress-color-#{$name} {\n .pace-progress {\n color: $color;\n }\n }\n}\n\n\n@each $name, $color in $theme-colors {\n @include pace-variant($name, $color);\n}\n\n@each $name, $color in $colors {\n @include pace-variant($name, $color);\n}\n\n",
|
||||||
|
"/**\n * bootstrap-switch - Turn checkboxes and radio buttons into toggle switches.\n *\n * @version v3.4 (MODDED)\n * @homepage https://bttstrp.github.io/bootstrap-switch\n * @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu)\n * @license MIT\n */\n\n$bootstrap-switch-border-radius: $btn-border-radius;\n$bootstrap-switch-handle-border-radius: .1rem;\n\n.bootstrap-switch {\n border: $input-border-width solid $input-border-color;\n border-radius: $bootstrap-switch-border-radius;\n cursor: pointer;\n direction: ltr;\n display: inline-block;\n line-height: .5rem;\n overflow: hidden;\n position: relative;\n text-align: left;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n user-select: none;\n vertical-align: middle;\n z-index: 0;\n\n .bootstrap-switch-container {\n border-radius: $bootstrap-switch-border-radius;\n display: inline-block;\n top: 0;\n transform: translate3d(0, 0, 0);\n\n }\n\n &:focus-within {\n box-shadow: $input-btn-focus-box-shadow;\n }\n\n .bootstrap-switch-handle-on,\n .bootstrap-switch-handle-off,\n .bootstrap-switch-label {\n box-sizing: border-box;\n cursor: pointer;\n display: table-cell;\n font-size: 1rem;\n font-weight: 500;\n line-height: 1.2rem;\n padding: .25rem .5rem;\n vertical-align: middle;\n }\n\n .bootstrap-switch-handle-on,\n .bootstrap-switch-handle-off {\n text-align: center;\n z-index: 1;\n\n &.bootstrap-switch-default {\n background: $gray-200;\n color: color-yiq($gray-200);\n }\n\n @each $name, $color in $theme-colors {\n &.bootstrap-switch-#{$name} {\n background: $color;\n color: color-yiq($color);\n }\n }\n\n @each $name, $color in $colors {\n &.bootstrap-switch-#{$name} {\n background: $color;\n color: color-yiq($color);\n }\n }\n }\n\n .bootstrap-switch-handle-on {\n border-bottom-left-radius: $bootstrap-switch-handle-border-radius;\n border-top-left-radius: $bootstrap-switch-handle-border-radius;\n }\n\n .bootstrap-switch-handle-off {\n border-bottom-right-radius: $bootstrap-switch-handle-border-radius;\n border-top-right-radius: $bootstrap-switch-handle-border-radius;\n }\n\n input[type='radio'],\n input[type='checkbox'] {\n filter: alpha(opacity=0);\n left: 0;\n margin: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n visibility: hidden;\n z-index: -1;\n }\n\n &.bootstrap-switch-mini {\n .bootstrap-switch-handle-on,\n .bootstrap-switch-handle-off,\n .bootstrap-switch-label {\n font-size: .875rem;\n line-height: 1.5;\n padding: .1rem .3rem;\n }\n }\n\n &.bootstrap-switch-small {\n .bootstrap-switch-handle-on,\n .bootstrap-switch-handle-off,\n .bootstrap-switch-label {\n font-size: .875rem;\n line-height: 1.5;\n padding: .2rem .4rem;\n }\n }\n\n &.bootstrap-switch-large {\n .bootstrap-switch-handle-on,\n .bootstrap-switch-handle-off,\n .bootstrap-switch-label {\n font-size: 1.25rem;\n line-height: 1.3333333rem;\n padding: .3rem .5rem;\n }\n }\n\n &.bootstrap-switch-disabled,\n &.bootstrap-switch-readonly,\n &.bootstrap-switch-indeterminate {\n cursor: default;\n\n .bootstrap-switch-handle-on,\n .bootstrap-switch-handle-off,\n .bootstrap-switch-label {\n cursor: default;\n filter: alpha(opacity=50);\n opacity: .5;\n }\n }\n\n &.bootstrap-switch-animate .bootstrap-switch-container {\n transition: margin-left .5s;\n }\n\n &.bootstrap-switch-inverse {\n .bootstrap-switch-handle-on {\n border-radius: 0 $bootstrap-switch-handle-border-radius $bootstrap-switch-handle-border-radius 0;\n }\n\n .bootstrap-switch-handle-off {\n border-radius: $bootstrap-switch-handle-border-radius 0 0 $bootstrap-switch-handle-border-radius;\n }\n }\n\n // &.bootstrap-switch-focused {\n // border-color: $input-btn-focus-color;\n // box-shadow: $input-btn-focus-box-shadow;\n // outline: 0;\n // }\n\n &.bootstrap-switch-on .bootstrap-switch-label,\n &.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label {\n border-bottom-right-radius: $bootstrap-switch-handle-border-radius;\n border-top-right-radius: $bootstrap-switch-handle-border-radius;\n }\n\n &.bootstrap-switch-off .bootstrap-switch-label,\n &.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label {\n border-bottom-left-radius: $bootstrap-switch-handle-border-radius;\n border-top-left-radius: $bootstrap-switch-handle-border-radius;\n }\n}\n",
|
||||||
|
"//\n// Plugins: Miscellaneous\n// Old plugin codes\n//\n\n// _fix for sparkline tooltip\n.jqstooltip {\n height: auto !important;\n padding: 5px !important;\n width: auto !important;\n}\n\n// jQueryUI\n.connectedSortable {\n min-height: 100px;\n}\n\n.ui-helper-hidden-accessible {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sort-highlight {\n background: $gray-100;\n border: 1px dashed $gray-300;\n margin-bottom: 10px;\n}\n\n// Charts\n.chart {\n overflow: hidden;\n position: relative;\n}\n"
|
||||||
|
],
|
||||||
|
"names": [],
|
||||||
|
"mappings": "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 truncated
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
@charset "UTF-8";/*!
|
||||||
|
* AdminLTE v3.0.0
|
||||||
|
* Only Plugins
|
||||||
|
* Author: Colorlib
|
||||||
|
* Website: AdminLTE.io <http://adminlte.io>
|
||||||
|
* License: Open source - MIT <http://opensource.org/licenses/MIT>
|
||||||
|
*/.fc-button{background:#f8f9fa;background-image:none;border-bottom-color:#ddd;border-color:#ddd;color:#495057}.fc-button.hover,.fc-button:active,.fc-button:hover{background-color:#e9e9e9}.fc-header-title h2{color:#666;font-size:15px;line-height:1.6em;margin-left:10px}.fc-header-right{padding-right:10px}.fc-header-left{padding-left:10px}.fc-widget-header{background:#fafafa}.fc-grid{border:0;width:100%}.fc-widget-content:first-of-type,.fc-widget-header:first-of-type{border-left:0;border-right:0}.fc-widget-content:last-of-type,.fc-widget-header:last-of-type{border-right:0}.fc-toolbar{margin:0;padding:1rem}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px}.fc-color-picker{list-style:none;margin:0;padding:0}.fc-color-picker>li{float:left;font-size:30px;line-height:30px;margin-right:5px}.fc-color-picker>li .fa,.fc-color-picker>li .fab,.fc-color-picker>li .far,.fc-color-picker>li .fas,.fc-color-picker>li .glyphicon,.fc-color-picker>li .ion{transition:transform linear .3s}.fc-color-picker>li .fa:hover,.fc-color-picker>li .fab:hover,.fc-color-picker>li .far:hover,.fc-color-picker>li .fas:hover,.fc-color-picker>li .glyphicon:hover,.fc-color-picker>li .ion:hover{transform:rotate(30deg)}#add-new-event{transition:all linear .3s}.external-event{box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);border-radius:.25rem;cursor:move;font-weight:700;margin-bottom:4px;padding:5px 10px}.external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,.2)}.select2-container--default .select2-selection--single{border:1px solid #ced4da;padding:.46875rem .75rem;height:calc(2.25rem + 2px)}.select2-container--default.select2-container--open{border-color:#007bff}.select2-container--default .select2-dropdown{border:1px solid #ced4da}.select2-container--default .select2-results__option{padding:6px 12px;user-select:none;-webkit-user-select:none}.select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:0;height:auto;margin-top:-3px}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:31px;right:6px}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0}.select2-container--default .select2-dropdown .select2-search__field,.select2-container--default .select2-search--inline .select2-search__field{border:1px solid #ced4da}.select2-container--default .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-search--inline .select2-search__field:focus{outline:0;border:1px solid #80bdff}.select2-container--default .select2-dropdown.select2-dropdown--below{border-top:0}.select2-container--default .select2-dropdown.select2-dropdown--above{border-bottom:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#6c757d}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#dee2e6}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#1f2d3d}.select2-container--default .select2-results__option--highlighted{background-color:#007bff;color:#fff}.select2-container--default .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#0074f0;color:#fff}.select2-container--default .select2-selection--multiple{border:1px solid #ced4da;min-height:calc(2.25rem + 2px)}.select2-container--default .select2-selection--multiple:focus{border-color:#80bdff}.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .375rem .375rem;margin-bottom:-.375rem}.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline{width:100%;margin-left:.375rem}.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline .select2-search__field{width:100%!important}.select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field{border:0;margin-top:6px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#007bff;border-color:#006fe6;color:#fff;padding:0 10px;margin-top:.31rem}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(255,255,255,.7);float:right;margin-left:5px;margin-right:-2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-selection--multiple.text-sm .select2-search.select2-search--inline .select2-search__field,.text-sm .select2-container--default .select2-selection--multiLine truncated
|
||||||
|
/*# sourceMappingURL=adminlte.plugins.min.css.map */
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":["../../../build/scss/AdminLTE-plugins.scss","../../../build/scss/plugins/_fullcalendar.scss","../../../build/scss/_bootstrap-variables.scss","../../../build/scss/mixins/_miscellaneous.scss","../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss","../../../build/scss/_variables.scss","../../../build/scss/plugins/_select2.scss","../../../build/scss/plugins/_mixins.scss","../../../build/scss/plugins/_bootstrap-slider.scss","../../../build/scss/plugins/_icheck-bootstrap.scss","../../../build/scss/plugins/_mapael.scss","../../../node_modules/bootstrap/scss/mixins/_reset-text.scss","../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../build/scss/plugins/_jqvmap.scss","../../../build/scss/plugins/_sweetalert2.scss","../../../build/scss/plugins/_toastr.scss","../../../build/scss/plugins/_pace.scss","../../../build/scss/plugins/_bootstrap-switch.scss","../../../build/scss/plugins/_miscellaneous.scss"],"names":[],"mappings":"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 truncated
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
+105
-201
@@ -1,13 +1,13 @@
|
|||||||
/*!
|
/*!
|
||||||
* AdminLTE v3.0.4 (https://adminlte.io)
|
* AdminLTE v3.0.0 (https://adminlte.io)
|
||||||
* Copyright 2014-2020 Colorlib <http://colorlib.com>
|
* Copyright 2014-2019 Colorlib <http://colorlib.com>
|
||||||
* Licensed under MIT (https://github.com/ColorlibHQ/AdminLTE/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/ColorlibHQ/AdminLTE/blob/master/LICENSE)
|
||||||
*/
|
*/
|
||||||
(function (global, factory) {
|
(function (global, factory) {
|
||||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||||
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
||||||
(global = global || self, factory(global.adminlte = {}));
|
(global = global || self, factory(global.adminlte = {}));
|
||||||
}(this, (function (exports) { 'use strict';
|
}(this, function (exports) { 'use strict';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------
|
* --------------------------------------------
|
||||||
@@ -52,17 +52,14 @@
|
|||||||
FOOTER_LG_FIXED: 'layout-lg-footer-fixed',
|
FOOTER_LG_FIXED: 'layout-lg-footer-fixed',
|
||||||
FOOTER_XL_FIXED: 'layout-xl-footer-fixed'
|
FOOTER_XL_FIXED: 'layout-xl-footer-fixed'
|
||||||
};
|
};
|
||||||
var Default = {
|
|
||||||
controlsidebarSlide: true,
|
|
||||||
scrollbarTheme: 'os-theme-light',
|
|
||||||
scrollbarAutoHide: 'l'
|
|
||||||
};
|
|
||||||
/**
|
/**
|
||||||
* Class Definition
|
* Class Definition
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var ControlSidebar = /*#__PURE__*/function () {
|
var ControlSidebar =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function ControlSidebar(element, config) {
|
function ControlSidebar(element, config) {
|
||||||
this._element = element;
|
this._element = element;
|
||||||
this._config = config;
|
this._config = config;
|
||||||
@@ -73,7 +70,7 @@
|
|||||||
|
|
||||||
var _proto = ControlSidebar.prototype;
|
var _proto = ControlSidebar.prototype;
|
||||||
|
|
||||||
_proto.collapse = function collapse() {
|
_proto.show = function show() {
|
||||||
// Show the control sidebar
|
// Show the control sidebar
|
||||||
if (this._config.controlsidebarSlide) {
|
if (this._config.controlsidebarSlide) {
|
||||||
$('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE);
|
$('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE);
|
||||||
@@ -86,11 +83,11 @@
|
|||||||
$('body').removeClass(ClassName.CONTROL_SIDEBAR_OPEN);
|
$('body').removeClass(ClassName.CONTROL_SIDEBAR_OPEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
var collapsedEvent = $.Event(Event.COLLAPSED);
|
var expandedEvent = $.Event(Event.EXPANDED);
|
||||||
$(this._element).trigger(collapsedEvent);
|
$(this._element).trigger(expandedEvent);
|
||||||
};
|
};
|
||||||
|
|
||||||
_proto.show = function show() {
|
_proto.collapse = function collapse() {
|
||||||
// Collapse the control sidebar
|
// Collapse the control sidebar
|
||||||
if (this._config.controlsidebarSlide) {
|
if (this._config.controlsidebarSlide) {
|
||||||
$('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE);
|
$('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE);
|
||||||
@@ -105,19 +102,19 @@
|
|||||||
$('body').addClass(ClassName.CONTROL_SIDEBAR_OPEN);
|
$('body').addClass(ClassName.CONTROL_SIDEBAR_OPEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
var expandedEvent = $.Event(Event.EXPANDED);
|
var collapsedEvent = $.Event(Event.COLLAPSED);
|
||||||
$(this._element).trigger(expandedEvent);
|
$(this._element).trigger(collapsedEvent);
|
||||||
};
|
};
|
||||||
|
|
||||||
_proto.toggle = function toggle() {
|
_proto.toggle = function toggle() {
|
||||||
var shouldClose = $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE);
|
var shouldOpen = $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE);
|
||||||
|
|
||||||
if (shouldClose) {
|
if (shouldOpen) {
|
||||||
// Close the control sidebar
|
|
||||||
this.collapse();
|
|
||||||
} else {
|
|
||||||
// Open the control sidebar
|
// Open the control sidebar
|
||||||
this.show();
|
this.show();
|
||||||
|
} else {
|
||||||
|
// Close the control sidebar
|
||||||
|
this.collapse();
|
||||||
}
|
}
|
||||||
} // Private
|
} // Private
|
||||||
;
|
;
|
||||||
@@ -233,10 +230,8 @@
|
|||||||
return this.each(function () {
|
return this.each(function () {
|
||||||
var data = $(this).data(DATA_KEY);
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
var _options = $.extend({}, Default, $(this).data());
|
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
data = new ControlSidebar(this, _options);
|
data = new ControlSidebar(this, $(this).data());
|
||||||
$(this).data(DATA_KEY, data);
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -301,8 +296,6 @@
|
|||||||
CONTENT_HEADER: '.content-header',
|
CONTENT_HEADER: '.content-header',
|
||||||
WRAPPER: '.wrapper',
|
WRAPPER: '.wrapper',
|
||||||
CONTROL_SIDEBAR: '.control-sidebar',
|
CONTROL_SIDEBAR: '.control-sidebar',
|
||||||
CONTROL_SIDEBAR_CONTENT: '.control-sidebar-content',
|
|
||||||
CONTROL_SIDEBAR_BTN: '[data-widget="control-sidebar"]',
|
|
||||||
LAYOUT_FIXED: '.layout-fixed',
|
LAYOUT_FIXED: '.layout-fixed',
|
||||||
FOOTER: '.main-footer',
|
FOOTER: '.main-footer',
|
||||||
PUSHMENU_BTN: '[data-widget="pushmenu"]',
|
PUSHMENU_BTN: '[data-widget="pushmenu"]',
|
||||||
@@ -318,22 +311,20 @@
|
|||||||
NAVBAR_FIXED: 'layout-navbar-fixed',
|
NAVBAR_FIXED: 'layout-navbar-fixed',
|
||||||
FOOTER_FIXED: 'layout-footer-fixed',
|
FOOTER_FIXED: 'layout-footer-fixed',
|
||||||
LOGIN_PAGE: 'login-page',
|
LOGIN_PAGE: 'login-page',
|
||||||
REGISTER_PAGE: 'register-page',
|
REGISTER_PAGE: 'register-page'
|
||||||
CONTROL_SIDEBAR_SLIDE_OPEN: 'control-sidebar-slide-open',
|
|
||||||
CONTROL_SIDEBAR_OPEN: 'control-sidebar-open'
|
|
||||||
};
|
};
|
||||||
var Default = {
|
var Default = {
|
||||||
scrollbarTheme: 'os-theme-light',
|
scrollbarTheme: 'os-theme-light',
|
||||||
scrollbarAutoHide: 'l',
|
scrollbarAutoHide: 'l'
|
||||||
panelAutoHeight: true,
|
|
||||||
loginRegisterAutoHeight: true
|
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* Class Definition
|
* Class Definition
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Layout = /*#__PURE__*/function () {
|
var Layout =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function Layout(element, config) {
|
function Layout(element, config) {
|
||||||
this._config = config;
|
this._config = config;
|
||||||
this._element = element;
|
this._element = element;
|
||||||
@@ -344,47 +335,24 @@
|
|||||||
|
|
||||||
var _proto = Layout.prototype;
|
var _proto = Layout.prototype;
|
||||||
|
|
||||||
_proto.fixLayoutHeight = function fixLayoutHeight(extra) {
|
_proto.fixLayoutHeight = function fixLayoutHeight() {
|
||||||
if (extra === void 0) {
|
|
||||||
extra = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var control_sidebar = 0;
|
|
||||||
|
|
||||||
if ($('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || extra == 'control_sidebar') {
|
|
||||||
control_sidebar = $(Selector.CONTROL_SIDEBAR_CONTENT).height();
|
|
||||||
}
|
|
||||||
|
|
||||||
var heights = {
|
var heights = {
|
||||||
window: $(window).height(),
|
window: $(window).height(),
|
||||||
header: $(Selector.HEADER).length !== 0 ? $(Selector.HEADER).outerHeight() : 0,
|
header: $(Selector.HEADER).length !== 0 ? $(Selector.HEADER).outerHeight() : 0,
|
||||||
footer: $(Selector.FOOTER).length !== 0 ? $(Selector.FOOTER).outerHeight() : 0,
|
footer: $(Selector.FOOTER).length !== 0 ? $(Selector.FOOTER).outerHeight() : 0,
|
||||||
sidebar: $(Selector.SIDEBAR).length !== 0 ? $(Selector.SIDEBAR).height() : 0,
|
sidebar: $(Selector.SIDEBAR).length !== 0 ? $(Selector.SIDEBAR).height() : 0
|
||||||
control_sidebar: control_sidebar
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var max = this._max(heights);
|
var max = this._max(heights);
|
||||||
|
|
||||||
var offset = this._config.panelAutoHeight;
|
if (max == heights.window) {
|
||||||
|
$(Selector.CONTENT).css('min-height', max - heights.header - heights.footer);
|
||||||
if (offset === true) {
|
|
||||||
offset = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (offset !== false) {
|
|
||||||
if (max == heights.control_sidebar) {
|
|
||||||
$(Selector.CONTENT).css('min-height', max + offset);
|
|
||||||
} else if (max == heights.window) {
|
|
||||||
$(Selector.CONTENT).css('min-height', max + offset - heights.header - heights.footer);
|
|
||||||
} else {
|
} else {
|
||||||
$(Selector.CONTENT).css('min-height', max + offset - heights.header);
|
$(Selector.CONTENT).css('min-height', max - heights.header);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($('body').hasClass(ClassName.LAYOUT_FIXED)) {
|
if ($('body').hasClass(ClassName.LAYOUT_FIXED)) {
|
||||||
if (offset !== false) {
|
$(Selector.CONTENT).css('min-height', max - heights.header - heights.footer);
|
||||||
$(Selector.CONTENT).css('min-height', max + offset - heights.header - heights.footer);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof $.fn.overlayScrollbars !== 'undefined') {
|
if (typeof $.fn.overlayScrollbars !== 'undefined') {
|
||||||
$(Selector.SIDEBAR).overlayScrollbars({
|
$(Selector.SIDEBAR).overlayScrollbars({
|
||||||
@@ -397,18 +365,6 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
_proto.fixLoginRegisterHeight = function fixLoginRegisterHeight() {
|
|
||||||
if ($(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).length === 0) {
|
|
||||||
$('body, html').css('height', 'auto');
|
|
||||||
} else if ($(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).length !== 0) {
|
|
||||||
var box_height = $(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).height();
|
|
||||||
|
|
||||||
if ($('body').css('min-height') !== box_height) {
|
|
||||||
$('body').css('min-height', box_height);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} // Private
|
} // Private
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -417,27 +373,23 @@
|
|||||||
|
|
||||||
// Activate layout height watcher
|
// Activate layout height watcher
|
||||||
this.fixLayoutHeight();
|
this.fixLayoutHeight();
|
||||||
|
|
||||||
if (this._config.loginRegisterAutoHeight === true) {
|
|
||||||
this.fixLoginRegisterHeight();
|
|
||||||
} else if (Number.isInteger(this._config.loginRegisterAutoHeight)) {
|
|
||||||
setInterval(this.fixLoginRegisterHeight, this._config.loginRegisterAutoHeight);
|
|
||||||
}
|
|
||||||
|
|
||||||
$(Selector.SIDEBAR).on('collapsed.lte.treeview expanded.lte.treeview', function () {
|
$(Selector.SIDEBAR).on('collapsed.lte.treeview expanded.lte.treeview', function () {
|
||||||
_this.fixLayoutHeight();
|
_this.fixLayoutHeight();
|
||||||
});
|
});
|
||||||
$(Selector.PUSHMENU_BTN).on('collapsed.lte.pushmenu shown.lte.pushmenu', function () {
|
$(Selector.PUSHMENU_BTN).on('collapsed.lte.pushmenu shown.lte.pushmenu', function () {
|
||||||
_this.fixLayoutHeight();
|
_this.fixLayoutHeight();
|
||||||
});
|
});
|
||||||
$(Selector.CONTROL_SIDEBAR_BTN).on('collapsed.lte.controlsidebar', function () {
|
|
||||||
_this.fixLayoutHeight();
|
|
||||||
}).on('expanded.lte.controlsidebar', function () {
|
|
||||||
_this.fixLayoutHeight('control_sidebar');
|
|
||||||
});
|
|
||||||
$(window).resize(function () {
|
$(window).resize(function () {
|
||||||
_this.fixLayoutHeight();
|
_this.fixLayoutHeight();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (!$('body').hasClass(ClassName.LOGIN_PAGE) && !$('body').hasClass(ClassName.REGISTER_PAGE)) {
|
||||||
|
$('body, html').css('height', 'auto');
|
||||||
|
} else if ($('body').hasClass(ClassName.LOGIN_PAGE) || $('body').hasClass(ClassName.REGISTER_PAGE)) {
|
||||||
|
var box_height = $(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).height();
|
||||||
|
$('body').css('min-height', box_height);
|
||||||
|
}
|
||||||
|
|
||||||
$('body.hold-transition').removeClass('hold-transition');
|
$('body.hold-transition').removeClass('hold-transition');
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -454,23 +406,17 @@
|
|||||||
;
|
;
|
||||||
|
|
||||||
Layout._jQueryInterface = function _jQueryInterface(config) {
|
Layout._jQueryInterface = function _jQueryInterface(config) {
|
||||||
if (config === void 0) {
|
|
||||||
config = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.each(function () {
|
return this.each(function () {
|
||||||
var data = $(this).data(DATA_KEY);
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
var _options = $.extend({}, Default, $(this).data());
|
var _config = $.extend({}, Default, $(this).data());
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
data = new Layout($(this), _options);
|
data = new Layout($(this), _config);
|
||||||
$(this).data(DATA_KEY, data);
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config === 'init' || config === '') {
|
if (config === 'init') {
|
||||||
data['_init']();
|
|
||||||
} else if (config === 'fixLayoutHeight' || config === 'fixLoginRegisterHeight') {
|
|
||||||
data[config]();
|
data[config]();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -542,16 +488,18 @@
|
|||||||
WRAPPER: '.wrapper'
|
WRAPPER: '.wrapper'
|
||||||
};
|
};
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
|
SIDEBAR_OPEN: 'sidebar-open',
|
||||||
COLLAPSED: 'sidebar-collapse',
|
COLLAPSED: 'sidebar-collapse',
|
||||||
OPEN: 'sidebar-open',
|
OPEN: 'sidebar-open'
|
||||||
CLOSED: 'sidebar-closed'
|
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* Class Definition
|
* Class Definition
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var PushMenu = /*#__PURE__*/function () {
|
var PushMenu =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function PushMenu(element, options) {
|
function PushMenu(element, options) {
|
||||||
this._element = element;
|
this._element = element;
|
||||||
this._options = $.extend({}, Default, options);
|
this._options = $.extend({}, Default, options);
|
||||||
@@ -566,14 +514,14 @@
|
|||||||
|
|
||||||
var _proto = PushMenu.prototype;
|
var _proto = PushMenu.prototype;
|
||||||
|
|
||||||
_proto.expand = function expand() {
|
_proto.show = function show() {
|
||||||
if (this._options.autoCollapseSize) {
|
if (this._options.autoCollapseSize) {
|
||||||
if ($(window).width() <= this._options.autoCollapseSize) {
|
if ($(window).width() <= this._options.autoCollapseSize) {
|
||||||
$(Selector.BODY).addClass(ClassName.OPEN);
|
$(Selector.BODY).addClass(ClassName.OPEN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$(Selector.BODY).removeClass(ClassName.COLLAPSED).removeClass(ClassName.CLOSED);
|
$(Selector.BODY).removeClass(ClassName.COLLAPSED);
|
||||||
|
|
||||||
if (this._options.enableRemember) {
|
if (this._options.enableRemember) {
|
||||||
localStorage.setItem("remember" + EVENT_KEY, ClassName.OPEN);
|
localStorage.setItem("remember" + EVENT_KEY, ClassName.OPEN);
|
||||||
@@ -586,7 +534,7 @@
|
|||||||
_proto.collapse = function collapse() {
|
_proto.collapse = function collapse() {
|
||||||
if (this._options.autoCollapseSize) {
|
if (this._options.autoCollapseSize) {
|
||||||
if ($(window).width() <= this._options.autoCollapseSize) {
|
if ($(window).width() <= this._options.autoCollapseSize) {
|
||||||
$(Selector.BODY).removeClass(ClassName.OPEN).addClass(ClassName.CLOSED);
|
$(Selector.BODY).removeClass(ClassName.OPEN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -604,7 +552,7 @@
|
|||||||
if (!$(Selector.BODY).hasClass(ClassName.COLLAPSED)) {
|
if (!$(Selector.BODY).hasClass(ClassName.COLLAPSED)) {
|
||||||
this.collapse();
|
this.collapse();
|
||||||
} else {
|
} else {
|
||||||
this.expand();
|
this.show();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -621,8 +569,6 @@
|
|||||||
} else if (resize == true) {
|
} else if (resize == true) {
|
||||||
if ($(Selector.BODY).hasClass(ClassName.OPEN)) {
|
if ($(Selector.BODY).hasClass(ClassName.OPEN)) {
|
||||||
$(Selector.BODY).removeClass(ClassName.OPEN);
|
$(Selector.BODY).removeClass(ClassName.OPEN);
|
||||||
} else if ($(Selector.BODY).hasClass(ClassName.CLOSED)) {
|
|
||||||
this.expand();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -689,7 +635,7 @@
|
|||||||
$(this).data(DATA_KEY, data);
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof operation === 'string' && operation.match(/collapse|expand|toggle/)) {
|
if (operation === 'toggle') {
|
||||||
data[operation]();
|
data[operation]();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -764,22 +710,21 @@
|
|||||||
LI: 'nav-item',
|
LI: 'nav-item',
|
||||||
LINK: 'nav-link',
|
LINK: 'nav-link',
|
||||||
TREEVIEW_MENU: 'nav-treeview',
|
TREEVIEW_MENU: 'nav-treeview',
|
||||||
OPEN: 'menu-open',
|
OPEN: 'menu-open'
|
||||||
SIDEBAR_COLLAPSED: 'sidebar-collapse'
|
|
||||||
};
|
};
|
||||||
var Default = {
|
var Default = {
|
||||||
trigger: Selector.DATA_WIDGET + " " + Selector.LINK,
|
trigger: Selector.DATA_WIDGET + " " + Selector.LINK,
|
||||||
animationSpeed: 300,
|
animationSpeed: 300,
|
||||||
accordion: true,
|
accordion: true
|
||||||
expandSidebar: false,
|
|
||||||
sidebarButtonSelector: '[data-widget="pushmenu"]'
|
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* Class Definition
|
* Class Definition
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Treeview = /*#__PURE__*/function () {
|
var Treeview =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function Treeview(element, config) {
|
function Treeview(element, config) {
|
||||||
this._config = config;
|
this._config = config;
|
||||||
this._element = element;
|
this._element = element;
|
||||||
@@ -807,10 +752,6 @@
|
|||||||
parentLi.addClass(ClassName.OPEN);
|
parentLi.addClass(ClassName.OPEN);
|
||||||
$(_this._element).trigger(expandedEvent);
|
$(_this._element).trigger(expandedEvent);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this._config.expandSidebar) {
|
|
||||||
this._expandSidebar();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
_proto.collapse = function collapse(treeviewMenu, parentLi) {
|
_proto.collapse = function collapse(treeviewMenu, parentLi) {
|
||||||
@@ -858,12 +799,6 @@
|
|||||||
$(document).on('click', this._config.trigger, function (event) {
|
$(document).on('click', this._config.trigger, function (event) {
|
||||||
_this3.toggle(event);
|
_this3.toggle(event);
|
||||||
});
|
});
|
||||||
};
|
|
||||||
|
|
||||||
_proto._expandSidebar = function _expandSidebar() {
|
|
||||||
if ($('body').hasClass(ClassName.SIDEBAR_COLLAPSED)) {
|
|
||||||
$(this._config.sidebarButtonSelector).PushMenu('expand');
|
|
||||||
}
|
|
||||||
} // Static
|
} // Static
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -871,10 +806,10 @@
|
|||||||
return this.each(function () {
|
return this.each(function () {
|
||||||
var data = $(this).data(DATA_KEY);
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
var _options = $.extend({}, Default, $(this).data());
|
var _config = $.extend({}, Default, $(this).data());
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
data = new Treeview($(this), _options);
|
data = new Treeview($(this), _config);
|
||||||
$(this).data(DATA_KEY, data);
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -942,7 +877,9 @@
|
|||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var DirectChat = /*#__PURE__*/function () {
|
var DirectChat =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function DirectChat(element, config) {
|
function DirectChat(element, config) {
|
||||||
this._element = element;
|
this._element = element;
|
||||||
}
|
}
|
||||||
@@ -1032,7 +969,9 @@
|
|||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var TodoList = /*#__PURE__*/function () {
|
var TodoList =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function TodoList(element, config) {
|
function TodoList(element, config) {
|
||||||
this._config = config;
|
this._config = config;
|
||||||
this._element = element;
|
this._element = element;
|
||||||
@@ -1076,10 +1015,10 @@
|
|||||||
return this.each(function () {
|
return this.each(function () {
|
||||||
var data = $(this).data(DATA_KEY);
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
var _options = $.extend({}, Default, $(this).data());
|
var _config = $.extend({}, Default, $(this).data());
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
data = new TodoList($(this), _options);
|
data = new TodoList($(this), _config);
|
||||||
$(this).data(DATA_KEY, data);
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1141,8 +1080,6 @@
|
|||||||
var ClassName = {
|
var ClassName = {
|
||||||
CARD: 'card',
|
CARD: 'card',
|
||||||
COLLAPSED: 'collapsed-card',
|
COLLAPSED: 'collapsed-card',
|
||||||
COLLAPSING: 'collapsing-card',
|
|
||||||
EXPANDING: 'expanding-card',
|
|
||||||
WAS_COLLAPSED: 'was-collapsed',
|
WAS_COLLAPSED: 'was-collapsed',
|
||||||
MAXIMIZED: 'maximized-card'
|
MAXIMIZED: 'maximized-card'
|
||||||
};
|
};
|
||||||
@@ -1167,7 +1104,9 @@
|
|||||||
minimizeIcon: 'fa-compress'
|
minimizeIcon: 'fa-compress'
|
||||||
};
|
};
|
||||||
|
|
||||||
var CardWidget = /*#__PURE__*/function () {
|
var CardWidget =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function CardWidget(element, settings) {
|
function CardWidget(element, settings) {
|
||||||
this._element = element;
|
this._element = element;
|
||||||
this._parent = element.parents(Selector.CARD).first();
|
this._parent = element.parents(Selector.CARD).first();
|
||||||
@@ -1184,11 +1123,11 @@
|
|||||||
_proto.collapse = function collapse() {
|
_proto.collapse = function collapse() {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
|
|
||||||
this._parent.addClass(ClassName.COLLAPSING).children(Selector.CARD_BODY + ", " + Selector.CARD_FOOTER).slideUp(this._settings.animationSpeed, function () {
|
this._parent.children(Selector.CARD_BODY + ", " + Selector.CARD_FOOTER).slideUp(this._settings.animationSpeed, function () {
|
||||||
_this._parent.addClass(ClassName.COLLAPSED).removeClass(ClassName.COLLAPSING);
|
_this._parent.addClass(ClassName.COLLAPSED);
|
||||||
});
|
});
|
||||||
|
|
||||||
this._parent.find('> ' + Selector.CARD_HEADER + ' ' + this._settings.collapseTrigger + ' .' + this._settings.collapseIcon).addClass(this._settings.expandIcon).removeClass(this._settings.collapseIcon);
|
this._parent.find(this._settings.collapseTrigger + ' .' + this._settings.collapseIcon).addClass(this._settings.expandIcon).removeClass(this._settings.collapseIcon);
|
||||||
|
|
||||||
var collapsed = $.Event(Event.COLLAPSED);
|
var collapsed = $.Event(Event.COLLAPSED);
|
||||||
|
|
||||||
@@ -1198,11 +1137,11 @@
|
|||||||
_proto.expand = function expand() {
|
_proto.expand = function expand() {
|
||||||
var _this2 = this;
|
var _this2 = this;
|
||||||
|
|
||||||
this._parent.addClass(ClassName.EXPANDING).children(Selector.CARD_BODY + ", " + Selector.CARD_FOOTER).slideDown(this._settings.animationSpeed, function () {
|
this._parent.children(Selector.CARD_BODY + ", " + Selector.CARD_FOOTER).slideDown(this._settings.animationSpeed, function () {
|
||||||
_this2._parent.removeClass(ClassName.COLLAPSED).removeClass(ClassName.EXPANDING);
|
_this2._parent.removeClass(ClassName.COLLAPSED);
|
||||||
});
|
});
|
||||||
|
|
||||||
this._parent.find('> ' + Selector.CARD_HEADER + ' ' + this._settings.collapseTrigger + ' .' + this._settings.expandIcon).addClass(this._settings.collapseIcon).removeClass(this._settings.expandIcon);
|
this._parent.find(this._settings.collapseTrigger + ' .' + this._settings.expandIcon).addClass(this._settings.collapseIcon).removeClass(this._settings.expandIcon);
|
||||||
|
|
||||||
var expanded = $.Event(Event.EXPANDED);
|
var expanded = $.Event(Event.EXPANDED);
|
||||||
|
|
||||||
@@ -1301,10 +1240,8 @@
|
|||||||
CardWidget._jQueryInterface = function _jQueryInterface(config) {
|
CardWidget._jQueryInterface = function _jQueryInterface(config) {
|
||||||
var data = $(this).data(DATA_KEY);
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
var _options = $.extend({}, Default, $(this).data());
|
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
data = new CardWidget($(this), _options);
|
data = new CardWidget($(this), data);
|
||||||
$(this).data(DATA_KEY, typeof config === 'string' ? data : config);
|
$(this).data(DATA_KEY, typeof config === 'string' ? data : config);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1403,7 +1340,9 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var CardRefresh = /*#__PURE__*/function () {
|
var CardRefresh =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function CardRefresh(element, settings) {
|
function CardRefresh(element, settings) {
|
||||||
this._element = element;
|
this._element = element;
|
||||||
this._parent = element.parents(Selector.CARD).first();
|
this._parent = element.parents(Selector.CARD).first();
|
||||||
@@ -1417,6 +1356,12 @@
|
|||||||
if (this._settings.source === '') {
|
if (this._settings.source === '') {
|
||||||
throw new Error('Source url was not defined. Please specify a url in your CardRefresh source option.');
|
throw new Error('Source url was not defined. Please specify a url in your CardRefresh source option.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._init();
|
||||||
|
|
||||||
|
if (this._settings.loadOnInit) {
|
||||||
|
this.load();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var _proto = CardRefresh.prototype;
|
var _proto = CardRefresh.prototype;
|
||||||
@@ -1464,26 +1409,21 @@
|
|||||||
$(this).find(this._settings.trigger).on('click', function () {
|
$(this).find(this._settings.trigger).on('click', function () {
|
||||||
_this.load();
|
_this.load();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this._settings.loadOnInit) {
|
|
||||||
this.load();
|
|
||||||
}
|
|
||||||
} // Static
|
} // Static
|
||||||
;
|
;
|
||||||
|
|
||||||
CardRefresh._jQueryInterface = function _jQueryInterface(config) {
|
CardRefresh._jQueryInterface = function _jQueryInterface(config) {
|
||||||
var data = $(this).data(DATA_KEY);
|
var data = $(this).data(DATA_KEY);
|
||||||
|
var options = $(this).data();
|
||||||
var _options = $.extend({}, Default, $(this).data());
|
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
data = new CardRefresh($(this), _options);
|
data = new CardRefresh($(this), options);
|
||||||
$(this).data(DATA_KEY, typeof config === 'string' ? data : config);
|
$(this).data(DATA_KEY, typeof config === 'string' ? data : config);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof config === 'string' && config.match(/load/)) {
|
if (typeof config === 'string' && config.match(/load/)) {
|
||||||
data[config]();
|
data[config]();
|
||||||
} else {
|
} else if (typeof config === 'object') {
|
||||||
data._init($(this));
|
data._init($(this));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1503,11 +1443,6 @@
|
|||||||
|
|
||||||
CardRefresh._jQueryInterface.call($(this), 'load');
|
CardRefresh._jQueryInterface.call($(this), 'load');
|
||||||
});
|
});
|
||||||
$(document).ready(function () {
|
|
||||||
$(Selector.DATA_REFRESH).each(function () {
|
|
||||||
CardRefresh._jQueryInterface.call($(this));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
/**
|
/**
|
||||||
* jQuery API
|
* jQuery API
|
||||||
* ====================================================
|
* ====================================================
|
||||||
@@ -1539,22 +1474,18 @@
|
|||||||
var DATA_KEY = 'lte.dropdown';
|
var DATA_KEY = 'lte.dropdown';
|
||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
var Selector = {
|
var Selector = {
|
||||||
NAVBAR: '.navbar',
|
DROPDOWN_MENU: 'ul.dropdown-menu',
|
||||||
DROPDOWN_MENU: '.dropdown-menu',
|
|
||||||
DROPDOWN_MENU_ACTIVE: '.dropdown-menu.show',
|
|
||||||
DROPDOWN_TOGGLE: '[data-toggle="dropdown"]'
|
DROPDOWN_TOGGLE: '[data-toggle="dropdown"]'
|
||||||
};
|
};
|
||||||
var ClassName = {
|
|
||||||
DROPDOWN_HOVER: 'dropdown-hover',
|
|
||||||
DROPDOWN_RIGHT: 'dropdown-menu-right'
|
|
||||||
};
|
|
||||||
var Default = {};
|
var Default = {};
|
||||||
/**
|
/**
|
||||||
* Class Definition
|
* Class Definition
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Dropdown = /*#__PURE__*/function () {
|
var Dropdown =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function Dropdown(element, config) {
|
function Dropdown(element, config) {
|
||||||
this._config = config;
|
this._config = config;
|
||||||
this._element = element;
|
this._element = element;
|
||||||
@@ -1573,35 +1504,6 @@
|
|||||||
this._element.parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function (e) {
|
this._element.parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function (e) {
|
||||||
$('.dropdown-submenu .show').removeClass("show").hide();
|
$('.dropdown-submenu .show').removeClass("show").hide();
|
||||||
});
|
});
|
||||||
};
|
|
||||||
|
|
||||||
_proto.fixPosition = function fixPosition() {
|
|
||||||
var elm = $(Selector.DROPDOWN_MENU_ACTIVE);
|
|
||||||
|
|
||||||
if (elm.length !== 0) {
|
|
||||||
if (elm.hasClass(ClassName.DROPDOWN_RIGHT)) {
|
|
||||||
elm.css('left', 'inherit');
|
|
||||||
elm.css('right', 0);
|
|
||||||
} else {
|
|
||||||
elm.css('left', 0);
|
|
||||||
elm.css('right', 'inherit');
|
|
||||||
}
|
|
||||||
|
|
||||||
var offset = elm.offset();
|
|
||||||
var width = elm.width();
|
|
||||||
var windowWidth = $(window).width();
|
|
||||||
var visiblePart = windowWidth - offset.left;
|
|
||||||
|
|
||||||
if (offset.left < 0) {
|
|
||||||
elm.css('left', 'inherit');
|
|
||||||
elm.css('right', offset.left - 5);
|
|
||||||
} else {
|
|
||||||
if (visiblePart < width) {
|
|
||||||
elm.css('left', 'inherit');
|
|
||||||
elm.css('right', 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} // Static
|
} // Static
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -1616,7 +1518,7 @@
|
|||||||
$(this).data(DATA_KEY, data);
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config === 'toggleSubmenu' || config == 'fixPosition') {
|
if (config === 'toggleSubmenu') {
|
||||||
data[config]();
|
data[config]();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -1635,13 +1537,13 @@
|
|||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
|
||||||
Dropdown._jQueryInterface.call($(this), 'toggleSubmenu');
|
Dropdown._jQueryInterface.call($(this), 'toggleSubmenu');
|
||||||
});
|
}); // $(Selector.SIDEBAR + ' a').on('focusin', () => {
|
||||||
$(Selector.NAVBAR + ' ' + Selector.DROPDOWN_TOGGLE).on("click", function (event) {
|
// $(Selector.MAIN_SIDEBAR).addClass(ClassName.SIDEBAR_FOCUSED);
|
||||||
event.preventDefault();
|
// })
|
||||||
setTimeout(function () {
|
// $(Selector.SIDEBAR + ' a').on('focusout', () => {
|
||||||
Dropdown._jQueryInterface.call($(this), 'fixPosition');
|
// $(Selector.MAIN_SIDEBAR).removeClass(ClassName.SIDEBAR_FOCUSED);
|
||||||
}, 1);
|
// })
|
||||||
});
|
|
||||||
/**
|
/**
|
||||||
* jQuery API
|
* jQuery API
|
||||||
* ====================================================
|
* ====================================================
|
||||||
@@ -1720,7 +1622,9 @@
|
|||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Toasts = /*#__PURE__*/function () {
|
var Toasts =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function Toasts(element, config) {
|
function Toasts(element, config) {
|
||||||
this._config = config;
|
this._config = config;
|
||||||
|
|
||||||
@@ -1840,9 +1744,9 @@
|
|||||||
|
|
||||||
Toasts._jQueryInterface = function _jQueryInterface(option, config) {
|
Toasts._jQueryInterface = function _jQueryInterface(option, config) {
|
||||||
return this.each(function () {
|
return this.each(function () {
|
||||||
var _options = $.extend({}, Default, config);
|
var _config = $.extend({}, Default, config);
|
||||||
|
|
||||||
var toast = new Toasts($(this), _options);
|
var toast = new Toasts($(this), _config);
|
||||||
|
|
||||||
if (option === 'create') {
|
if (option === 'create') {
|
||||||
toast[option]();
|
toast[option]();
|
||||||
@@ -1882,5 +1786,5 @@
|
|||||||
|
|
||||||
Object.defineProperty(exports, '__esModule', { value: true });
|
Object.defineProperty(exports, '__esModule', { value: true });
|
||||||
|
|
||||||
})));
|
}));
|
||||||
//# sourceMappingURL=adminlte.js.map
|
//# sourceMappingURL=adminlte.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"adminlte.js","sources":["../../build/js/ControlSidebar.js","../../build/js/Layout.js","../../build/js/PushMenu.js","../../build/js/Treeview.js","../../build/js/DirectChat.js","../../build/js/TodoList.js","../../build/js/CardWidget.js","../../build/js/CardRefresh.js","../../build/js/Dropdown.js","../../build/js/Toasts.js"],"sourcesContent":["/**\n * --------------------------------------------\n * AdminLTE ControlSidebar.js\n * License MIT\n * --------------------------------------------\n */\n\nconst ControlSidebar = (($) => {\n /**\n * Constants\n * ====================================================\n */\n\n const NAME = 'ControlSidebar'\n const DATA_KEY = 'lte.controlsidebar'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const DATA_API_KEY = '.data-api'\n\n const Event = {\n COLLAPSED: `collapsed${EVENT_KEY}`,\n EXPANDED: `expanded${EVENT_KEY}`,\n }\n\n const Selector = {\n CONTROL_SIDEBAR: '.control-sidebar',\n CONTROL_SIDEBAR_CONTENT: '.control-sidebar-content',\n DATA_TOGGLE: '[data-widget=\"control-sidebar\"]',\n CONTENT: '.content-wrapper',\n HEADER: '.main-header',\n FOOTER: '.main-footer',\n }\n\n const ClassName = {\n CONTROL_SIDEBAR_ANIMATE: 'control-sidebar-animate',\n CONTROL_SIDEBAR_OPEN: 'control-sidebar-open',\n CONTROL_SIDEBAR_SLIDE: 'control-sidebar-slide-open',\n LAYOUT_FIXED: 'layout-fixed',\n NAVBAR_FIXED: 'layout-navbar-fixed',\n NAVBAR_SM_FIXED: 'layout-sm-navbar-fixed',\n NAVBAR_MD_FIXED: 'layout-md-navbar-fixed',\n NAVBAR_LG_FIXED: 'layout-lg-navbar-fixed',\n NAVBAR_XL_FIXED: 'layout-xl-navbar-fixed',\n FOOTER_FIXED: 'layout-footer-fixed',\n FOOTER_SM_FIXED: 'layout-sm-footer-fixed',\n FOOTER_MD_FIXED: 'layout-md-footer-fixed',\n FOOTER_LG_FIXED: 'layout-lg-footer-fixed',\n FOOTER_XL_FIXED: 'layout-xl-footer-fixed',\n }\n\n const Default = {\n controlsidebarSlide: true,\n scrollbarTheme : 'os-theme-light',\n scrollbarAutoHide: 'l',\n }\n\n /**\n * Class Definition\n * ====================================================\n */\n\n class ControlSidebar {\n constructor(element, config) {\n this._element = element\n this._config = config\n\n this._init()\n }\n\n // Public\n\n collapse() {\n // Show the control sidebar\n if (this._config.controlsidebarSlide) {\n $('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE)\n $('body').removeClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function(){\n $(Selector.CONTROL_SIDEBAR).hide()\n $('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE)\n $(this).dequeue()\n })\n } else {\n $('body').removeClass(ClassName.CONTROL_SIDEBAR_OPEN)\n }\n\n const collapsedEvent = $.Event(Event.COLLAPSED)\n $(this._element).trigger(collapsedEvent)\n }\n\n show() {\n // Collapse the control sidebar\n if (this._config.controlsidebarSlide) {\n $('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE)\n $(Selector.CONTROL_SIDEBAR).show().delay(10).queue(function(){\n $('body').addClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function(){\n $('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE)\n $(this).dequeue()\n })\n $(this).dequeue()\n })\n } else {\n $('body').addClass(ClassName.CONTROL_SIDEBAR_OPEN)\n }\n\n const expandedEvent = $.Event(Event.EXPANDED)\n $(this._element).trigger(expandedEvent)\n }\n\n toggle() {\n const shouldClose = $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body')\n .hasClass(ClassName.CONTROL_SIDEBAR_SLIDE)\n if (shouldClose) {\n // Close the control sidebar\n this.collapse()\n } else {\n // Open the control sidebar\n this.show()\n }\n }\n\n // Private\n\n _init() {\n this._fixHeight()\n this._fixScrollHeight()\n\n $(window).resize(() => {\n this._fixHeight()\n this._fixScrollHeight()\n })\n\n $(window).scroll(() => {\n if ($('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE)) {\n this._fixScrollHeight()\n }\n })\n }\n\n _fixScrollHeight() {\n const heights = {\n scroll: $(document).height(),\n window: $(window).height(),\n header: $(Selector.HEADER).outerHeight(),\n footer: $(Selector.FOOTER).outerHeight(),\n }\n const positions = {\n bottom: Math.abs((heights.window + $(window).scrollTop()) - heights.scroll),\n top: $(window).scrollTop(),\n }\n\n let navbarFixed = false;\n let footerFixed = false;\n\n if ($('body').hasClass(ClassName.LAYOUT_FIXED)) {\n if (\n $('body').hasClass(ClassName.NAVBAR_FIXED)\n Line truncated
|
{"version":3,"file":"adminlte.js","sources":["../../build/js/ControlSidebar.js","../../build/js/Layout.js","../../build/js/PushMenu.js","../../build/js/Treeview.js","../../build/js/DirectChat.js","../../build/js/TodoList.js","../../build/js/CardWidget.js","../../build/js/CardRefresh.js","../../build/js/Dropdown.js","../../build/js/Toasts.js"],"sourcesContent":["/**\n * --------------------------------------------\n * AdminLTE ControlSidebar.js\n * License MIT\n * --------------------------------------------\n */\n\nconst ControlSidebar = (($) => {\n /**\n * Constants\n * ====================================================\n */\n\n const NAME = 'ControlSidebar'\n const DATA_KEY = 'lte.controlsidebar'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const DATA_API_KEY = '.data-api'\n\n const Event = {\n COLLAPSED: `collapsed${EVENT_KEY}`,\n EXPANDED: `expanded${EVENT_KEY}`,\n }\n\n const Selector = {\n CONTROL_SIDEBAR: '.control-sidebar',\n CONTROL_SIDEBAR_CONTENT: '.control-sidebar-content',\n DATA_TOGGLE: '[data-widget=\"control-sidebar\"]',\n CONTENT: '.content-wrapper',\n HEADER: '.main-header',\n FOOTER: '.main-footer',\n }\n\n const ClassName = {\n CONTROL_SIDEBAR_ANIMATE: 'control-sidebar-animate',\n CONTROL_SIDEBAR_OPEN: 'control-sidebar-open',\n CONTROL_SIDEBAR_SLIDE: 'control-sidebar-slide-open',\n LAYOUT_FIXED: 'layout-fixed',\n NAVBAR_FIXED: 'layout-navbar-fixed',\n NAVBAR_SM_FIXED: 'layout-sm-navbar-fixed',\n NAVBAR_MD_FIXED: 'layout-md-navbar-fixed',\n NAVBAR_LG_FIXED: 'layout-lg-navbar-fixed',\n NAVBAR_XL_FIXED: 'layout-xl-navbar-fixed',\n FOOTER_FIXED: 'layout-footer-fixed',\n FOOTER_SM_FIXED: 'layout-sm-footer-fixed',\n FOOTER_MD_FIXED: 'layout-md-footer-fixed',\n FOOTER_LG_FIXED: 'layout-lg-footer-fixed',\n FOOTER_XL_FIXED: 'layout-xl-footer-fixed',\n }\n\n const Default = {\n controlsidebarSlide: true,\n scrollbarTheme : 'os-theme-light',\n scrollbarAutoHide: 'l',\n }\n\n /**\n * Class Definition\n * ====================================================\n */\n\n class ControlSidebar {\n constructor(element, config) {\n this._element = element\n this._config = config\n\n this._init()\n }\n\n // Public\n\n show() {\n // Show the control sidebar\n if (this._config.controlsidebarSlide) {\n $('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE)\n $('body').removeClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function(){\n $(Selector.CONTROL_SIDEBAR).hide()\n $('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE)\n $(this).dequeue()\n })\n } else {\n $('body').removeClass(ClassName.CONTROL_SIDEBAR_OPEN)\n }\n\n const expandedEvent = $.Event(Event.EXPANDED)\n $(this._element).trigger(expandedEvent)\n }\n\n collapse() {\n // Collapse the control sidebar\n if (this._config.controlsidebarSlide) {\n $('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE)\n $(Selector.CONTROL_SIDEBAR).show().delay(10).queue(function(){\n $('body').addClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function(){\n $('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE)\n $(this).dequeue()\n })\n $(this).dequeue()\n })\n } else {\n $('body').addClass(ClassName.CONTROL_SIDEBAR_OPEN)\n }\n\n const collapsedEvent = $.Event(Event.COLLAPSED)\n $(this._element).trigger(collapsedEvent)\n }\n\n toggle() {\n const shouldOpen = $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body')\n .hasClass(ClassName.CONTROL_SIDEBAR_SLIDE)\n if (shouldOpen) {\n // Open the control sidebar\n this.show()\n } else {\n // Close the control sidebar\n this.collapse()\n }\n }\n\n // Private\n\n _init() {\n this._fixHeight()\n this._fixScrollHeight()\n\n $(window).resize(() => {\n this._fixHeight()\n this._fixScrollHeight()\n })\n\n $(window).scroll(() => {\n if ($('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE)) {\n this._fixScrollHeight()\n }\n })\n }\n\n _fixScrollHeight() {\n const heights = {\n scroll: $(document).height(),\n window: $(window).height(),\n header: $(Selector.HEADER).outerHeight(),\n footer: $(Selector.FOOTER).outerHeight(),\n }\n const positions = {\n bottom: Math.abs((heights.window + $(window).scrollTop()) - heights.scroll),\n top: $(window).scrollTop(),\n }\n\n let navbarFixed = false;\n let footerFixed = false;\n\n if ($('body').hasClass(ClassName.LAYOUT_FIXED)) {\n if (\n $('body').hasClass(ClassName.NAVBAR_FIXED)\n Line truncated
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/*!
|
/*!
|
||||||
* AdminLTE v3.0.4 (https://adminlte.io)
|
* AdminLTE v3.0.0 (https://adminlte.io)
|
||||||
* Copyright 2014-2020 Colorlib <http://colorlib.com>
|
* Copyright 2014-2019 Colorlib <http://colorlib.com>
|
||||||
* Licensed under MIT (https://github.com/ColorlibHQ/AdminLTE/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/ColorlibHQ/AdminLTE/blob/master/LICENSE)
|
||||||
*/
|
*/
|
||||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).adminlte={})}(this,(function(t){"use strict";var e=function(t){var e="ControlSidebar",i="lte.controlsidebar",n=t.fn[e],s={COLLAPSED:"collapsed.lte.controlsidebar",EXPANDED:"expanded.lte.controlsidebar"},o=".control-sidebar",a=".control-sidebar-content",r='[data-widget="control-sidebar"]',l=".main-header",c=".main-footer",d="control-sidebar-animate",h="control-sidebar-open",f="control-sidebar-slide-open",u="layout-fixed",g="layout-navbar-fixed",p="layout-sm-navbar-fixed",_="layout-md-navbar-fixed",m="layout-lg-navbar-fixed",v="layout-xl-navbar-fixed",C="layout-footer-fixed",y="layout-sm-footer-fixed",b="layout-md-footer-fixed",w="layout-lg-footer-fixed",x="layout-xl-footer-fixed",E={controlsidebarSlide:!0,scrollbarTheme:"os-theme-light",scrollbarAutoHide:"l"},A=function(){function e(t,e){this._element=t,this._config=e,this._init()}var n=e.prototype;return n.collapse=function(){this._config.controlsidebarSlide?(t("html").addClass(d),t("body").removeClass(f).delay(300).queue((function(){t(o).hide(),t("html").removeClass(d),t(this).dequeue()}))):t("body").removeClass(h);var e=t.Event(s.COLLAPSED);t(this._element).trigger(e)},n.show=function(){this._config.controlsidebarSlide?(t("html").addClass(d),t(o).show().delay(10).queue((function(){t("body").addClass(f).delay(300).queue((function(){t("html").removeClass(d),t(this).dequeue()})),t(this).dequeue()}))):t("body").addClass(h);var e=t.Event(s.EXPANDED);t(this._element).trigger(e)},n.toggle=function(){t("body").hasClass(h)||t("body").hasClass(f)?this.collapse():this.show()},n._init=function(){var e=this;this._fixHeight(),this._fixScrollHeight(),t(window).resize((function(){e._fixHeight(),e._fixScrollHeight()})),t(window).scroll((function(){(t("body").hasClass(h)||t("body").hasClass(f))&&e._fixScrollHeight()}))},n._fixScrollHeight=function(){var e={scroll:t(document).height(),window:t(window).height(),header:t(l).outerHeight(),footer:t(c).outerHeight()},i=Math.abs(e.window+t(window).scrollTop()-e.scroll),n=t(window).scrollTop(),s=!1,r=!1;t("body").hasClass(u)&&((t("body").hasClass(g)||t("body").hasClass(p)||t("body").hasClass(_)||t("body").hasClass(m)||t("body").hasClass(v))&&"fixed"===t(l).css("position")&&(s=!0),(t("body").hasClass(C)||t("body").hasClass(y)||t("body").hasClass(b)||t("body").hasClass(w)||t("body").hasClass(x))&&"fixed"===t(c).css("position")&&(r=!0),0===n&&0===i?(t(o).css("bottom",e.footer),t(o).css("top",e.header),t(o+", "+o+" "+a).css("height",e.window-(e.header+e.footer))):i<=e.footer?!1===r?(t(o).css("bottom",e.footer-i),t(o+", "+o+" "+a).css("height",e.window-(e.footer-i))):t(o).css("bottom",e.footer):n<=e.header?!1===s?(t(o).css("top",e.header-n),t(o+", "+o+" "+a).css("height",e.window-(e.header-n))):t(o).css("top",e.header):!1===s?(t(o).css("top",0),t(o+", "+o+" "+a).css("height",e.window)):t(o).css("top",e.header))},n._fixHeight=function(){var e=t(window).height(),i=t(l).outerHeight(),n=t(c).outerHeight();if(t("body").hasClass(u)){var s=e-i;(t("body").hasClass(C)||t("body").hasClass(y)||t("body").hasClass(b)||t("body").hasClass(w)||t("body").hasClass(x))&&"fixed"===t(c).css("position")&&(s=e-i-n),t(o+" "+a).css("height",s),"undefined"!=typeof t.fn.overlayScrollbars&&t(o+" "+a).overlayScrollbars({className:this._config.scrollbarTheme,sizeAutoCapable:!0,scrollbars:{autoHide:this._config.scrollbarAutoHide,clickScrolling:!0}})}},e._jQueryInterface=function(n){return this.each((function(){var s=t(this).data(i),o=t.extend({},E,t(this).data());if(s||(s=new e(this,o),t(this).data(i,s)),"undefined"===s[n])throw new Error(n+" is not a function");s[n]()}))},e}();return t(document).on("click",r,(function(e){e.preventDefault(),A._jQueryInterface.call(t(this),"toggle")})),t.fn[e]=A._jQueryInterface,t.fn[e].Constructor=A,t.fn[e].noConflict=function(){return t.fn[e]=n,A._jQueryInterface},A}(jQuery),i=function(t){var e="Layout",i=t.fn[e],n=".main-header",s=".main-sidebar",o=".main-sidebar .sidebar",a=".content-wrapper",r=".control-sidebar-content",l='[data-widget="control-sidebar"]',c=".main-footer",d='[data-widget="pushmenu"]',h=".login-box",f=".register-box",u="sidebar-focused",g="layout-fixed",p="control-sidebar-slide-open",_="control-sidebar-open",m={scrollbarTheme:"os-theme-light",scrollbarAutoHide:"l",panelAutoHeight:!0,loginRegisterAutoHeight:!0},v=function(){function e(t,e){this._config=e,this._element=t,this._init()}var i=e.prototype;return i.fixLayoutHeight=function(e){void 0===e&&(e=null);var i=0;(t("body").hasClass(p)||t("body").hasClass(_)||"control_sidebar"==e)&&(i=t(r).height());var s={window:t(window).height(),header:0!==t(n).length?t(n).outerHeight():0,footer:0!==t(c).length?t(c).outerHeight():0,sidebar:0!==t(o).length?t(o).height():0,control_sidebar:i},l=this._max(s),d=this._config.panelAutoHeight;!0===d&&(d=0),!1!==d&&(l==s.control_sidebar?t(a).css("min-height",l+d):l==s.window?t(a).cssLine truncated
|
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).adminlte={})}(this,(function(t){"use strict";var e=function(t){var e="ControlSidebar",i="lte.controlsidebar",n=t.fn[e],s={COLLAPSED:"collapsed.lte.controlsidebar",EXPANDED:"expanded.lte.controlsidebar"},o=".control-sidebar",a=".control-sidebar-content",r='[data-widget="control-sidebar"]',l=".main-header",c=".main-footer",d="control-sidebar-animate",h="control-sidebar-open",f="control-sidebar-slide-open",u="layout-fixed",g="layout-navbar-fixed",_="layout-sm-navbar-fixed",p="layout-md-navbar-fixed",m="layout-lg-navbar-fixed",C="layout-xl-navbar-fixed",v="layout-footer-fixed",y="layout-sm-footer-fixed",b="layout-md-footer-fixed",w="layout-lg-footer-fixed",D="layout-xl-footer-fixed",E=function(){function e(t,e){this._element=t,this._config=e,this._init()}var n=e.prototype;return n.show=function(){this._config.controlsidebarSlide?(t("html").addClass(d),t("body").removeClass(f).delay(300).queue((function(){t(o).hide(),t("html").removeClass(d),t(this).dequeue()}))):t("body").removeClass(h);var e=t.Event(s.EXPANDED);t(this._element).trigger(e)},n.collapse=function(){this._config.controlsidebarSlide?(t("html").addClass(d),t(o).show().delay(10).queue((function(){t("body").addClass(f).delay(300).queue((function(){t("html").removeClass(d),t(this).dequeue()})),t(this).dequeue()}))):t("body").addClass(h);var e=t.Event(s.COLLAPSED);t(this._element).trigger(e)},n.toggle=function(){t("body").hasClass(h)||t("body").hasClass(f)?this.show():this.collapse()},n._init=function(){var e=this;this._fixHeight(),this._fixScrollHeight(),t(window).resize((function(){e._fixHeight(),e._fixScrollHeight()})),t(window).scroll((function(){(t("body").hasClass(h)||t("body").hasClass(f))&&e._fixScrollHeight()}))},n._fixScrollHeight=function(){var e={scroll:t(document).height(),window:t(window).height(),header:t(l).outerHeight(),footer:t(c).outerHeight()},i=Math.abs(e.window+t(window).scrollTop()-e.scroll),n=t(window).scrollTop(),s=!1,r=!1;t("body").hasClass(u)&&((t("body").hasClass(g)||t("body").hasClass(_)||t("body").hasClass(p)||t("body").hasClass(m)||t("body").hasClass(C))&&"fixed"===t(l).css("position")&&(s=!0),(t("body").hasClass(v)||t("body").hasClass(y)||t("body").hasClass(b)||t("body").hasClass(w)||t("body").hasClass(D))&&"fixed"===t(c).css("position")&&(r=!0),0===n&&0===i?(t(o).css("bottom",e.footer),t(o).css("top",e.header),t(o+", "+o+" "+a).css("height",e.window-(e.header+e.footer))):i<=e.footer?!1===r?(t(o).css("bottom",e.footer-i),t(o+", "+o+" "+a).css("height",e.window-(e.footer-i))):t(o).css("bottom",e.footer):n<=e.header?!1===s?(t(o).css("top",e.header-n),t(o+", "+o+" "+a).css("height",e.window-(e.header-n))):t(o).css("top",e.header):!1===s?(t(o).css("top",0),t(o+", "+o+" "+a).css("height",e.window)):t(o).css("top",e.header))},n._fixHeight=function(){var e=t(window).height(),i=t(l).outerHeight(),n=t(c).outerHeight();if(t("body").hasClass(u)){var s=e-i;(t("body").hasClass(v)||t("body").hasClass(y)||t("body").hasClass(b)||t("body").hasClass(w)||t("body").hasClass(D))&&"fixed"===t(c).css("position")&&(s=e-i-n),t(o+" "+a).css("height",s),"undefined"!=typeof t.fn.overlayScrollbars&&t(o+" "+a).overlayScrollbars({className:this._config.scrollbarTheme,sizeAutoCapable:!0,scrollbars:{autoHide:this._config.scrollbarAutoHide,clickScrolling:!0}})}},e._jQueryInterface=function(n){return this.each((function(){var s=t(this).data(i);if(s||(s=new e(this,t(this).data()),t(this).data(i,s)),"undefined"===s[n])throw new Error(n+" is not a function");s[n]()}))},e}();return t(document).on("click",r,(function(e){e.preventDefault(),E._jQueryInterface.call(t(this),"toggle")})),t.fn[e]=E._jQueryInterface,t.fn[e].Constructor=E,t.fn[e].noConflict=function(){return t.fn[e]=n,E._jQueryInterface},E}(jQuery),i=function(t){var e="Layout",i=t.fn[e],n=".main-header",s=".main-sidebar",o=".main-sidebar .sidebar",a=".content-wrapper",r=".main-footer",l='[data-widget="pushmenu"]',c=".login-box",d=".register-box",h="sidebar-focused",f="layout-fixed",u="login-page",g="register-page",_={scrollbarTheme:"os-theme-light",scrollbarAutoHide:"l"},p=function(){function e(t,e){this._config=e,this._element=t,this._init()}var i=e.prototype;return i.fixLayoutHeight=function(){var e={window:t(window).height(),header:0!==t(n).length?t(n).outerHeight():0,footer:0!==t(r).length?t(r).outerHeight():0,sidebar:0!==t(o).length?t(o).height():0},i=this._max(e);i==e.window?t(a).css("min-height",i-e.header-e.footer):t(a).css("min-height",i-e.header),t("body").hasClass(f)&&(t(a).css("min-height",i-e.header-e.footer),"undefined"!=typeof t.fn.overlayScrollbars&&t(o).overlayScrollbars({className:this._config.scrollbarTheme,sizeAutoCapable:!0,scrollbars:{autoHide:this._config.scrollbarAutoHide,clickScrolling:!0}}))},i._init=function(){var e=this;if(this.fixLayoutHeight(),t(o).on("collapsed.lte.treeview expanded.lte.treeview",(function(){e.fixLayoutHeLine truncated
|
||||||
//# sourceMappingURL=adminlte.min.js.map
|
//# sourceMappingURL=adminlte.min.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"sources":["../../build/js/ControlSidebar.js","../../build/js/Layout.js","../../build/js/PushMenu.js","../../build/js/Treeview.js","../../build/js/DirectChat.js","../../build/js/TodoList.js","../../build/js/CardWidget.js","../../build/js/CardRefresh.js","../../build/js/Dropdown.js","../../build/js/Toasts.js"],"names":["ControlSidebar","$","NAME","DATA_KEY","JQUERY_NO_CONFLICT","fn","Event","COLLAPSED","EXPANDED","Selector","ClassName","Default","controlsidebarSlide","scrollbarTheme","scrollbarAutoHide","element","config","this","_element","_config","_init","_proto","prototype","collapse","addClass","removeClass","delay","queue","hide","dequeue","collapsedEvent","trigger","show","expandedEvent","toggle","hasClass","_this","_fixHeight","_fixScrollHeight","window","resize","scroll","heights","document","height","header","outerHeight","footer","positions","Math","abs","scrollTop","navbarFixed","footerFixed","css","sidebarHeight","overlayScrollbars","className","sizeAutoCapable","scrollbars","autoHide","clickScrolling","_jQueryInterface","operation","each","data","_options","extend","Error","on","event","preventDefault","call","Constructor","noConflict","jQuery","Layout","panelAutoHeight","loginRegisterAutoHeight","fixLayoutHeight","extra","control_sidebar","length","sidebar","max","_max","offset","fixLoginRegisterHeight","box_height","Number","isInteger","setInterval","numbers","Object","keys","forEach","key","PushMenu","EVENT_KEY","SHOWN","autoCollapseSize","enableRemember","noTransitionAfterReload","options","_addOverlay","expand","width","localStorage","setItem","shownEvent","autoCollapse","remember","getItem","_this2","overlay","id","append","match","button","currentTarget","closest","Treeview","SELECTED","LOAD_DATA_API","animationSpeed","accordion","expandSidebar","sidebarButtonSelector","init","_setupListeners","treeviewMenu","parentLi","openMenuLi","siblings","first","openTreeview","find","stop","slideDown","_expandSidebar","slideUp","$relativeTarget","$parent","parent","is","parents","_this3","DirectChat","toggleClass","toggledEvent","TodoList","onCheck","item","onUnCheck","prop","check","unCheck","that","target","CardWidget","MAXIMIZED","MINIMIZED","REMOVED","DATA_REMOVE","DATA_COLLAPSE","DATA_MAXIMIZE","CARD","CARD_HEADER","CARD_BODY","CARD_FOOTER","collapseTrigger","removeTrigger","maximizeTrigger","collapseIcon","expandIcon","maximizeIcon","minimizeIcon","settings","_parent","_settings","children","collapsed","expanded","remove","removed","maximize","transition","maximized","minimize","style","toggleMaximize","card","click","CardRefresh","LOADED","OVERLAY_ADDED","OVERLAY_REMOVED","DATA_REFRESH","source","sourceSelector","params","content","loadInContent","loadOnInit","responseType","overlayTemplate","onLoadStart","onLoadDone","response","_overlay","load","get","html","_removeOverlay","bind","loadedEvent","overlayAddedEvent","overlayRemovedEvent","ready","Dropdown","toggleSubmenu","next","e","fixPosition","elm","visiblePart","left","stopPropagation","setTimeout","Toasts","INIT","CREATED","Position","position","fixed","autohide","autoremove","fade","icon","image","imageAlt","imageHeight","title","subtitle","close","body","class","_prepareContainer","initEvent","create","toast","toast_header","toast_image","attr","toast_close","_getContainerId","prepend","createdEvent","removedEvent","container","replace","option"],"mappings":";;;;;sMAOA,IAAMA,EAAkB,SAACC,GAMvB,IAAMC,EAAqB,iBACrBC,EAAqB,qBAErBC,EAAqBH,EAAEI,GAAGH,GAG1BI,EAAQ,CACZC,UAAS,+BACTC,SAAQ,+BAGJC,EACa,mBADbA,EAEqB,2BAFrBA,EAGS,kCAHTA,EAKI,eALJA,EAMI,eAGJC,EACqB,0BADrBA,EAEkB,uBAFlBA,EAGmB,6BAHnBA,EAIU,eAJVA,EAKU,sBALVA,EAMa,yBANbA,EAOa,yBAPbA,EAQa,yBARbA,EASa,yBATbA,EAUU,sBAVVA,EAWa,yBAXbA,EAYa,yBAZbA,EAaa,yBAbbA,EAca,yBAGbC,EAAU,CACdC,qBAAqB,EACrBC,eAAiB,iBACjBC,kBAAmB,KAQfd,EAtDuB,WAuD3B,SAAAA,EAAYe,EAASC,GACnBC,KAAKC,SAAWH,EAChBE,KAAKE,QAAWH,EAEhBC,KAAKG,QA3DoB,IAAAC,EAAArB,EAAAsB,UAAA,OAAAD,EAgE3BE,SAAA,WAEMN,KAAKE,QAAQP,qBACfX,EAAE,QAAQuB,SAASd,GACnBT,EAAE,QAAQwB,YAAYf,GAAiCgB,MAAM,KAAKC,OAAM,WACtE1B,EAAEQ,GAA0BmB,OAC5B3B,EAAE,QAAQwB,YAAYf,GACtBT,EAAEgB,MAAMY,cAGV5B,EAAE,QAAQwB,YAAYf,GAGxB,IAAMoB,EAAiB7B,EAAEK,MAAMA,EAAMC,WACrCN,EAAEgB,KAAKC,UAAUa,QAAQD,IA9EAT,EAiF3BW,KAAA,WAEMf,KAAKE,QAAQP,qBACfX,EAAE,QAAQuB,SAASd,GACnBT,EAAEQ,GAA0BuB,OAAON,MAAM,IAAIC,OAAM,WACjD1B,EAAE,QAAQuB,SAASd,GAAiCgB,MAAM,KAAKC,OAAM,WACnE1B,EAAE,QAAQwB,YAAYf,GACtBT,EAAEgB,MAAMY,aAEV5B,EAAEgB,MAAMY,cAGV5B,EAAE,QAAQuB,SAASd,GAGrB,IAAMuB,EAAgBhC,EAAEK,MAAMA,EAAME,UACpCP,EAAEgB,KAAKC,UAAUa,QAAQE,IAjGAZ,EAoG3Ba,OAAA,WACsBjC,EAAE,QAAQkC,SAASzB,IAAmCT,EAAE,QACzEkC,SAASzB,GAGVO,KAAKM,WAGLN,KAAKe,QA5GkBX,EAkH3BD,MAAA,WAAQ,IAAAgB,EAAAnB,KACNA,KAAKoB,aACLpB,KAAKqB,mBAELrC,EAAEsC,QAAQC,QAAO,WACfJ,EAAKC,aACLD,EAAKE,sBAGPrC,EAAEsC,QAAQE,QAAO,YACXxC,EAAE,QAAQkC,SAASzB,IAAmCT,EAAE,QAAQkC,SAASzB,KACzE0B,EAAKE,uBA7HcjB,EAkI3BiB,iBAAA,WACE,IAAMI,EAAU,CACdD,OAAQxC,EAAE0C,UAAUC,SACpBL,OAAQtC,EAAEsC,QAAQK,SAClBC,OAAQ5C,EAAEQ,GAAiBqC,cAC3BC,OAAQ9C,EAAEQ,GAAiBqC,eAEvBE,EACIC,Line truncated
|
{"version":3,"sources":["../../build/js/ControlSidebar.js","../../build/js/Layout.js","../../build/js/PushMenu.js","../../build/js/Treeview.js","../../build/js/DirectChat.js","../../build/js/TodoList.js","../../build/js/CardWidget.js","../../build/js/CardRefresh.js","../../build/js/Dropdown.js","../../build/js/Toasts.js"],"names":["ControlSidebar","$","NAME","DATA_KEY","JQUERY_NO_CONFLICT","fn","Event","COLLAPSED","EXPANDED","Selector","ClassName","element","config","this","_element","_config","_init","_proto","prototype","show","controlsidebarSlide","addClass","removeClass","delay","queue","hide","dequeue","expandedEvent","trigger","collapse","collapsedEvent","toggle","hasClass","_this","_fixHeight","_fixScrollHeight","window","resize","scroll","heights","document","height","header","outerHeight","footer","positions","Math","abs","scrollTop","navbarFixed","footerFixed","css","sidebarHeight","overlayScrollbars","className","scrollbarTheme","sizeAutoCapable","scrollbars","autoHide","scrollbarAutoHide","clickScrolling","_jQueryInterface","operation","each","data","Error","on","event","preventDefault","call","Constructor","noConflict","jQuery","Layout","Default","fixLayoutHeight","length","sidebar","max","_max","box_height","numbers","Object","keys","forEach","key","extend","PushMenu","EVENT_KEY","SHOWN","autoCollapseSize","enableRemember","noTransitionAfterReload","TOGGLE_BUTTON","SIDEBAR_MINI","SIDEBAR_COLLAPSED","BODY","OVERLAY","WRAPPER","options","_options","_addOverlay","width","localStorage","setItem","shownEvent","autoCollapse","remember","getItem","_this2","overlay","id","append","button","currentTarget","closest","Treeview","SELECTED","LOAD_DATA_API","animationSpeed","accordion","init","_setupListeners","expand","treeviewMenu","parentLi","openMenuLi","siblings","first","openTreeview","find","stop","slideDown","slideUp","$relativeTarget","$parent","parent","is","parents","_this3","DirectChat","toggleClass","toggledEvent","TodoList","onCheck","item","onUnCheck","prop","check","unCheck","that","target","CardWidget","MAXIMIZED","MINIMIZED","REMOVED","CARD","WAS_COLLAPSED","DATA_REMOVE","DATA_COLLAPSE","DATA_MAXIMIZE","CARD_HEADER","CARD_BODY","CARD_FOOTER","collapseTrigger","removeTrigger","maximizeTrigger","collapseIcon","expandIcon","maximizeIcon","minimizeIcon","settings","_parent","_settings","children","collapsed","expanded","remove","removed","maximize","transition","maximized","minimize","style","toggleMaximize","card","click","match","CardRefresh","LOADED","OVERLAY_ADDED","OVERLAY_REMOVED","DATA_REFRESH","source","sourceSelector","params","content","loadInContent","loadOnInit","responseType","overlayTemplate","onLoadStart","onLoadDone","response","_overlay","load","get","html","_removeOverlay","bind","loadedEvent","overlayAddedEvent","overlayRemovedEvent","Dropdown","toggleSubmenu","next","e","stopPropagation","Toasts","INIT","CREATED","Position","position","fixed","autohide","autoremove","fade","icon","image","imageAlt","imageHeight","title","subtitle","close","body","class","_prepareContainer","initEvent","create","toast","toast_header","toast_image","attr","toast_close","_getContainerId","prepend","createdEvent","removedEvent","container","replace","option"],"mappings":";;;;;sMAOA,IAAMA,EAAkB,SAACC,GAMvB,IAAMC,EAAqB,iBACrBC,EAAqB,qBAErBC,EAAqBH,EAAEI,GAAGH,GAG1BI,EAAQ,CACZC,UAAS,+BACTC,SAAQ,+BAGJC,EACa,mBADbA,EAEqB,2BAFrBA,EAGS,kCAHTA,EAKI,eALJA,EAMI,eAGJC,EACqB,0BADrBA,EAEkB,uBAFlBA,EAGmB,6BAHnBA,EAIU,eAJVA,EAKU,sBALVA,EAMa,yBANbA,EAOa,yBAPbA,EAQa,yBARbA,EASa,yBATbA,EAUU,sBAVVA,EAWa,yBAXbA,EAYa,yBAZbA,EAaa,yBAbbA,EAca,yBAcbV,EAtDuB,WAuD3B,SAAAA,EAAYW,EAASC,GACnBC,KAAKC,SAAWH,EAChBE,KAAKE,QAAWH,EAEhBC,KAAKG,QA3DoB,IAAAC,EAAAjB,EAAAkB,UAAA,OAAAD,EAgE3BE,KAAA,WAEMN,KAAKE,QAAQK,qBACfnB,EAAE,QAAQoB,SAASX,GACnBT,EAAE,QAAQqB,YAAYZ,GAAiCa,MAAM,KAAKC,OAAM,WACtEvB,EAAEQ,GAA0BgB,OAC5BxB,EAAE,QAAQqB,YAAYZ,GACtBT,EAAEY,MAAMa,cAGVzB,EAAE,QAAQqB,YAAYZ,GAGxB,IAAMiB,EAAgB1B,EAAEK,MAAMA,EAAME,UACpCP,EAAEY,KAAKC,UAAUc,QAAQD,IA9EAV,EAiF3BY,SAAA,WAEMhB,KAAKE,QAAQK,qBACfnB,EAAE,QAAQoB,SAASX,GACnBT,EAAEQ,GAA0BU,OAAOI,MAAM,IAAIC,OAAM,WACjDvB,EAAE,QAAQoB,SAASX,GAAiCa,MAAM,KAAKC,OAAM,WACnEvB,EAAE,QAAQqB,YAAYZ,GACtBT,EAAEY,MAAMa,aAEVzB,EAAEY,MAAMa,cAGVzB,EAAE,QAAQoB,SAASX,GAGrB,IAAMoB,EAAiB7B,EAAEK,MAAMA,EAAMC,WACrCN,EAAEY,KAAKC,UAAUc,QAAQE,IAjGAb,EAoG3Bc,OAAA,WACqB9B,EAAE,QAAQ+B,SAAStB,IAAmCT,EAAE,QACxE+B,SAAStB,GAGVG,KAAKM,OAGLN,KAAKgB,YA5GkBZ,EAkH3BD,MAAA,WAAQ,IAAAiB,EAAApB,KACNA,KAAKqB,aACLrB,KAAKsB,mBAELlC,EAAEmC,QAAQC,QAAO,WACfJ,EAAKC,aACLD,EAAKE,sBAGPlC,EAAEmC,QAAQE,QAAO,YACXrC,EAAE,QAAQ+B,SAAStB,IAAmCT,EAAE,QAAQ+B,SAAStB,KACzEuB,EAAKE,uBA7HclB,EAkI3BkB,iBAAA,WACE,IAAMI,EAAU,CACdD,OAAQrC,EAAEuC,UAAUC,SACpBL,OAAQnC,EAAEmC,QAAQK,SAClBC,OAAQzC,EAAEQ,GAAiBkC,cAC3BC,OAAQ3C,EAAEQ,GAAiBkC,eAEvBE,EACIC,KAAKC,IAAKR,EAAQH,OAASnC,EAAEmC,QAAQY,YAAeT,EAAQD,QADhEO,EAEC5C,EAAEmC,QAAQY,YAGbC,GAAc,EACdC,GAAc,EAEdjD,EAAE,QAAQ+B,SAAStB,MAEnBT,EAAE,QAAQ+B,SAAStB,IAChBT,EAAE,QAAQ+B,SAAStB,IACnBT,EAAE,QAAQ+B,SAAStB,IACnBT,EAAE,QAAQ+Line truncated
|
||||||
+413
@@ -0,0 +1,413 @@
|
|||||||
|
/**
|
||||||
|
* AdminLTE Demo Menu
|
||||||
|
* ------------------
|
||||||
|
* You should not use this file in production.
|
||||||
|
* This file is for demo purposes only.
|
||||||
|
*/
|
||||||
|
(function ($) {
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
var $sidebar = $('.control-sidebar')
|
||||||
|
var $container = $('<div />', {
|
||||||
|
class: 'p-3 control-sidebar-content'
|
||||||
|
})
|
||||||
|
|
||||||
|
$sidebar.append($container)
|
||||||
|
|
||||||
|
var navbar_dark_skins = [
|
||||||
|
'navbar-primary',
|
||||||
|
'navbar-secondary',
|
||||||
|
'navbar-info',
|
||||||
|
'navbar-success',
|
||||||
|
'navbar-danger',
|
||||||
|
'navbar-indigo',
|
||||||
|
'navbar-purple',
|
||||||
|
'navbar-pink',
|
||||||
|
'navbar-teal',
|
||||||
|
'navbar-cyan',
|
||||||
|
'navbar-dark',
|
||||||
|
'navbar-gray-dark',
|
||||||
|
'navbar-gray',
|
||||||
|
]
|
||||||
|
|
||||||
|
var navbar_light_skins = [
|
||||||
|
'navbar-light',
|
||||||
|
'navbar-warning',
|
||||||
|
'navbar-white',
|
||||||
|
'navbar-orange',
|
||||||
|
]
|
||||||
|
|
||||||
|
$container.append(
|
||||||
|
'<h5>Customize AdminLTE</h5><hr class="mb-2"/>'
|
||||||
|
)
|
||||||
|
|
||||||
|
var $no_border_checkbox = $('<input />', {
|
||||||
|
type : 'checkbox',
|
||||||
|
value : 1,
|
||||||
|
checked: $('.main-header').hasClass('border-bottom-0'),
|
||||||
|
'class': 'mr-1'
|
||||||
|
}).on('click', function () {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('.main-header').addClass('border-bottom-0')
|
||||||
|
} else {
|
||||||
|
$('.main-header').removeClass('border-bottom-0')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var $no_border_container = $('<div />', {'class': 'mb-1'}).append($no_border_checkbox).append('<span>No Navbar border</span>')
|
||||||
|
$container.append($no_border_container)
|
||||||
|
|
||||||
|
var $text_sm_body_checkbox = $('<input />', {
|
||||||
|
type : 'checkbox',
|
||||||
|
value : 1,
|
||||||
|
checked: $('body').hasClass('text-sm'),
|
||||||
|
'class': 'mr-1'
|
||||||
|
}).on('click', function () {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('body').addClass('text-sm')
|
||||||
|
} else {
|
||||||
|
$('body').removeClass('text-sm')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var $text_sm_body_container = $('<div />', {'class': 'mb-1'}).append($text_sm_body_checkbox).append('<span>Body small text</span>')
|
||||||
|
$container.append($text_sm_body_container)
|
||||||
|
|
||||||
|
var $text_sm_header_checkbox = $('<input />', {
|
||||||
|
type : 'checkbox',
|
||||||
|
value : 1,
|
||||||
|
checked: $('.main-header').hasClass('text-sm'),
|
||||||
|
'class': 'mr-1'
|
||||||
|
}).on('click', function () {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('.main-header').addClass('text-sm')
|
||||||
|
} else {
|
||||||
|
$('.main-header').removeClass('text-sm')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var $text_sm_header_container = $('<div />', {'class': 'mb-1'}).append($text_sm_header_checkbox).append('<span>Navbar small text</span>')
|
||||||
|
$container.append($text_sm_header_container)
|
||||||
|
|
||||||
|
var $text_sm_sidebar_checkbox = $('<input />', {
|
||||||
|
type : 'checkbox',
|
||||||
|
value : 1,
|
||||||
|
checked: $('.nav-sidebar').hasClass('text-sm'),
|
||||||
|
'class': 'mr-1'
|
||||||
|
}).on('click', function () {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('.nav-sidebar').addClass('text-sm')
|
||||||
|
} else {
|
||||||
|
$('.nav-sidebar').removeClass('text-sm')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var $text_sm_sidebar_container = $('<div />', {'class': 'mb-1'}).append($text_sm_sidebar_checkbox).append('<span>Sidebar nav small text</span>')
|
||||||
|
$container.append($text_sm_sidebar_container)
|
||||||
|
|
||||||
|
var $text_sm_footer_checkbox = $('<input />', {
|
||||||
|
type : 'checkbox',
|
||||||
|
value : 1,
|
||||||
|
checked: $('.main-footer').hasClass('text-sm'),
|
||||||
|
'class': 'mr-1'
|
||||||
|
}).on('click', function () {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('.main-footer').addClass('text-sm')
|
||||||
|
} else {
|
||||||
|
$('.main-footer').removeClass('text-sm')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var $text_sm_footer_container = $('<div />', {'class': 'mb-1'}).append($text_sm_footer_checkbox).append('<span>Footer small text</span>')
|
||||||
|
$container.append($text_sm_footer_container)
|
||||||
|
|
||||||
|
var $flat_sidebar_checkbox = $('<input />', {
|
||||||
|
type : 'checkbox',
|
||||||
|
value : 1,
|
||||||
|
checked: $('.nav-sidebar').hasClass('nav-flat'),
|
||||||
|
'class': 'mr-1'
|
||||||
|
}).on('click', function () {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('.nav-sidebar').addClass('nav-flat')
|
||||||
|
} else {
|
||||||
|
$('.nav-sidebar').removeClass('nav-flat')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var $flat_sidebar_container = $('<div />', {'class': 'mb-1'}).append($flat_sidebar_checkbox).append('<span>Sidebar nav flat style</span>')
|
||||||
|
$container.append($flat_sidebar_container)
|
||||||
|
|
||||||
|
var $legacy_sidebar_checkbox = $('<input />', {
|
||||||
|
type : 'checkbox',
|
||||||
|
value : 1,
|
||||||
|
checked: $('.nav-sidebar').hasClass('nav-legacy'),
|
||||||
|
'class': 'mr-1'
|
||||||
|
}).on('click', function () {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('.nav-sidebar').addClass('nav-legacy')
|
||||||
|
} else {
|
||||||
|
$('.nav-sidebar').removeClass('nav-legacy')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var $legacy_sidebar_container = $('<div />', {'class': 'mb-1'}).append($legacy_sidebar_checkbox).append('<span>Sidebar nav legacy style</span>')
|
||||||
|
$container.append($legacy_sidebar_container)
|
||||||
|
|
||||||
|
var $compact_sidebar_checkbox = $('<input />', {
|
||||||
|
type : 'checkbox',
|
||||||
|
value : 1,
|
||||||
|
checked: $('.nav-sidebar').hasClass('nav-compact'),
|
||||||
|
'class': 'mr-1'
|
||||||
|
}).on('click', function () {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('.nav-sidebar').addClass('nav-compact')
|
||||||
|
} else {
|
||||||
|
$('.nav-sidebar').removeClass('nav-compact')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var $compact_sidebar_container = $('<div />', {'class': 'mb-1'}).append($compact_sidebar_checkbox).append('<span>Sidebar nav compact</span>')
|
||||||
|
$container.append($compact_sidebar_container)
|
||||||
|
|
||||||
|
var $child_indent_sidebar_checkbox = $('<input />', {
|
||||||
|
type : 'checkbox',
|
||||||
|
value : 1,
|
||||||
|
checked: $('.nav-sidebar').hasClass('nav-child-indent'),
|
||||||
|
'class': 'mr-1'
|
||||||
|
}).on('click', function () {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('.nav-sidebar').addClass('nav-child-indent')
|
||||||
|
} else {
|
||||||
|
$('.nav-sidebar').removeClass('nav-child-indent')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var $child_indent_sidebar_container = $('<div />', {'class': 'mb-1'}).append($child_indent_sidebar_checkbox).append('<span>Sidebar nav child indent</span>')
|
||||||
|
$container.append($child_indent_sidebar_container)
|
||||||
|
|
||||||
|
var $no_expand_sidebar_checkbox = $('<input />', {
|
||||||
|
type : 'checkbox',
|
||||||
|
value : 1,
|
||||||
|
checked: $('.main-sidebar').hasClass('sidebar-no-expand'),
|
||||||
|
'class': 'mr-1'
|
||||||
|
}).on('click', function () {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('.main-sidebar').addClass('sidebar-no-expand')
|
||||||
|
} else {
|
||||||
|
$('.main-sidebar').removeClass('sidebar-no-expand')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var $no_expand_sidebar_container = $('<div />', {'class': 'mb-1'}).append($no_expand_sidebar_checkbox).append('<span>Main Sidebar disable hover/focus auto expand</span>')
|
||||||
|
$container.append($no_expand_sidebar_container)
|
||||||
|
|
||||||
|
var $text_sm_brand_checkbox = $('<input />', {
|
||||||
|
type : 'checkbox',
|
||||||
|
value : 1,
|
||||||
|
checked: $('.brand-link').hasClass('text-sm'),
|
||||||
|
'class': 'mr-1'
|
||||||
|
}).on('click', function () {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('.brand-link').addClass('text-sm')
|
||||||
|
} else {
|
||||||
|
$('.brand-link').removeClass('text-sm')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var $text_sm_brand_container = $('<div />', {'class': 'mb-4'}).append($text_sm_brand_checkbox).append('<span>Brand small text</span>')
|
||||||
|
$container.append($text_sm_brand_container)
|
||||||
|
|
||||||
|
$container.append('<h6>Navbar Variants</h6>')
|
||||||
|
|
||||||
|
var $navbar_variants = $('<div />', {
|
||||||
|
'class': 'd-flex'
|
||||||
|
})
|
||||||
|
var navbar_all_colors = navbar_dark_skins.concat(navbar_light_skins)
|
||||||
|
var $navbar_variants_colors = createSkinBlock(navbar_all_colors, function (e) {
|
||||||
|
var color = $(this).data('color')
|
||||||
|
var $main_header = $('.main-header')
|
||||||
|
$main_header.removeClass('navbar-dark').removeClass('navbar-light')
|
||||||
|
navbar_all_colors.map(function (color) {
|
||||||
|
$main_header.removeClass(color)
|
||||||
|
})
|
||||||
|
|
||||||
|
if (navbar_dark_skins.indexOf(color) > -1) {
|
||||||
|
$main_header.addClass('navbar-dark')
|
||||||
|
} else {
|
||||||
|
$main_header.addClass('navbar-light')
|
||||||
|
}
|
||||||
|
|
||||||
|
$main_header.addClass(color)
|
||||||
|
})
|
||||||
|
|
||||||
|
$navbar_variants.append($navbar_variants_colors)
|
||||||
|
|
||||||
|
$container.append($navbar_variants)
|
||||||
|
|
||||||
|
var sidebar_colors = [
|
||||||
|
'bg-primary',
|
||||||
|
'bg-warning',
|
||||||
|
'bg-info',
|
||||||
|
'bg-danger',
|
||||||
|
'bg-success',
|
||||||
|
'bg-indigo',
|
||||||
|
'bg-navy',
|
||||||
|
'bg-purple',
|
||||||
|
'bg-fuchsia',
|
||||||
|
'bg-pink',
|
||||||
|
'bg-maroon',
|
||||||
|
'bg-orange',
|
||||||
|
'bg-lime',
|
||||||
|
'bg-teal',
|
||||||
|
'bg-olive'
|
||||||
|
]
|
||||||
|
|
||||||
|
var accent_colors = [
|
||||||
|
'accent-primary',
|
||||||
|
'accent-warning',
|
||||||
|
'accent-info',
|
||||||
|
'accent-danger',
|
||||||
|
'accent-success',
|
||||||
|
'accent-indigo',
|
||||||
|
'accent-navy',
|
||||||
|
'accent-purple',
|
||||||
|
'accent-fuchsia',
|
||||||
|
'accent-pink',
|
||||||
|
'accent-maroon',
|
||||||
|
'accent-orange',
|
||||||
|
'accent-lime',
|
||||||
|
'accent-teal',
|
||||||
|
'accent-olive'
|
||||||
|
]
|
||||||
|
|
||||||
|
var sidebar_skins = [
|
||||||
|
'sidebar-dark-primary',
|
||||||
|
'sidebar-dark-warning',
|
||||||
|
'sidebar-dark-info',
|
||||||
|
'sidebar-dark-danger',
|
||||||
|
'sidebar-dark-success',
|
||||||
|
'sidebar-dark-indigo',
|
||||||
|
'sidebar-dark-navy',
|
||||||
|
'sidebar-dark-purple',
|
||||||
|
'sidebar-dark-fuchsia',
|
||||||
|
'sidebar-dark-pink',
|
||||||
|
'sidebar-dark-maroon',
|
||||||
|
'sidebar-dark-orange',
|
||||||
|
'sidebar-dark-lime',
|
||||||
|
'sidebar-dark-teal',
|
||||||
|
'sidebar-dark-olive',
|
||||||
|
'sidebar-light-primary',
|
||||||
|
'sidebar-light-warning',
|
||||||
|
'sidebar-light-info',
|
||||||
|
'sidebar-light-danger',
|
||||||
|
'sidebar-light-success',
|
||||||
|
'sidebar-light-indigo',
|
||||||
|
'sidebar-light-navy',
|
||||||
|
'sidebar-light-purple',
|
||||||
|
'sidebar-light-fuchsia',
|
||||||
|
'sidebar-light-pink',
|
||||||
|
'sidebar-light-maroon',
|
||||||
|
'sidebar-light-orange',
|
||||||
|
'sidebar-light-lime',
|
||||||
|
'sidebar-light-teal',
|
||||||
|
'sidebar-light-olive'
|
||||||
|
]
|
||||||
|
|
||||||
|
$container.append('<h6>Accent Color Variants</h6>')
|
||||||
|
var $accent_variants = $('<div />', {
|
||||||
|
'class': 'd-flex'
|
||||||
|
})
|
||||||
|
$container.append($accent_variants)
|
||||||
|
$container.append(createSkinBlock(accent_colors, function () {
|
||||||
|
var color = $(this).data('color')
|
||||||
|
var accent_class = color
|
||||||
|
var $body = $('body')
|
||||||
|
accent_colors.map(function (skin) {
|
||||||
|
$body.removeClass(skin)
|
||||||
|
})
|
||||||
|
|
||||||
|
$body.addClass(accent_class)
|
||||||
|
}))
|
||||||
|
|
||||||
|
$container.append('<h6>Dark Sidebar Variants</h6>')
|
||||||
|
var $sidebar_variants = $('<div />', {
|
||||||
|
'class': 'd-flex'
|
||||||
|
})
|
||||||
|
$container.append($sidebar_variants)
|
||||||
|
$container.append(createSkinBlock(sidebar_colors, function () {
|
||||||
|
var color = $(this).data('color')
|
||||||
|
var sidebar_class = 'sidebar-dark-' + color.replace('bg-', '')
|
||||||
|
var $sidebar = $('.main-sidebar')
|
||||||
|
sidebar_skins.map(function (skin) {
|
||||||
|
$sidebar.removeClass(skin)
|
||||||
|
})
|
||||||
|
|
||||||
|
$sidebar.addClass(sidebar_class)
|
||||||
|
}))
|
||||||
|
|
||||||
|
$container.append('<h6>Light Sidebar Variants</h6>')
|
||||||
|
var $sidebar_variants = $('<div />', {
|
||||||
|
'class': 'd-flex'
|
||||||
|
})
|
||||||
|
$container.append($sidebar_variants)
|
||||||
|
$container.append(createSkinBlock(sidebar_colors, function () {
|
||||||
|
var color = $(this).data('color')
|
||||||
|
var sidebar_class = 'sidebar-light-' + color.replace('bg-', '')
|
||||||
|
var $sidebar = $('.main-sidebar')
|
||||||
|
sidebar_skins.map(function (skin) {
|
||||||
|
$sidebar.removeClass(skin)
|
||||||
|
})
|
||||||
|
|
||||||
|
$sidebar.addClass(sidebar_class)
|
||||||
|
}))
|
||||||
|
|
||||||
|
var logo_skins = navbar_all_colors
|
||||||
|
$container.append('<h6>Brand Logo Variants</h6>')
|
||||||
|
var $logo_variants = $('<div />', {
|
||||||
|
'class': 'd-flex'
|
||||||
|
})
|
||||||
|
$container.append($logo_variants)
|
||||||
|
var $clear_btn = $('<a />', {
|
||||||
|
href: 'javascript:void(0)'
|
||||||
|
}).text('clear').on('click', function () {
|
||||||
|
var $logo = $('.brand-link')
|
||||||
|
logo_skins.map(function (skin) {
|
||||||
|
$logo.removeClass(skin)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
$container.append(createSkinBlock(logo_skins, function () {
|
||||||
|
var color = $(this).data('color')
|
||||||
|
var $logo = $('.brand-link')
|
||||||
|
logo_skins.map(function (skin) {
|
||||||
|
$logo.removeClass(skin)
|
||||||
|
})
|
||||||
|
$logo.addClass(color)
|
||||||
|
}).append($clear_btn))
|
||||||
|
|
||||||
|
function createSkinBlock(colors, callback) {
|
||||||
|
var $block = $('<div />', {
|
||||||
|
'class': 'd-flex flex-wrap mb-3'
|
||||||
|
})
|
||||||
|
|
||||||
|
colors.map(function (color) {
|
||||||
|
var $color = $('<div />', {
|
||||||
|
'class': (typeof color === 'object' ? color.join(' ') : color).replace('navbar-', 'bg-').replace('accent-', 'bg-') + ' elevation-2'
|
||||||
|
})
|
||||||
|
|
||||||
|
$block.append($color)
|
||||||
|
|
||||||
|
$color.data('color', color)
|
||||||
|
|
||||||
|
$color.css({
|
||||||
|
width : '40px',
|
||||||
|
height : '20px',
|
||||||
|
borderRadius: '25px',
|
||||||
|
marginRight : 10,
|
||||||
|
marginBottom: 10,
|
||||||
|
opacity : 0.8,
|
||||||
|
cursor : 'pointer'
|
||||||
|
})
|
||||||
|
|
||||||
|
$color.hover(function () {
|
||||||
|
$(this).css({ opacity: 1 }).removeClass('elevation-2').addClass('elevation-4')
|
||||||
|
}, function () {
|
||||||
|
$(this).css({ opacity: 0.8 }).removeClass('elevation-4').addClass('elevation-2')
|
||||||
|
})
|
||||||
|
|
||||||
|
if (callback) {
|
||||||
|
$color.on('click', callback)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return $block
|
||||||
|
}
|
||||||
|
})(jQuery)
|
||||||
@@ -0,0 +1,264 @@
|
|||||||
|
/*
|
||||||
|
* Author: Abdullah A Almsaeed
|
||||||
|
* Date: 4 Jan 2014
|
||||||
|
* Description:
|
||||||
|
* This is a demo file used only for the main dashboard (index.html)
|
||||||
|
**/
|
||||||
|
|
||||||
|
$(function () {
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
// Make the dashboard widgets sortable Using jquery UI
|
||||||
|
$('.connectedSortable').sortable({
|
||||||
|
placeholder : 'sort-highlight',
|
||||||
|
connectWith : '.connectedSortable',
|
||||||
|
handle : '.card-header, .nav-tabs',
|
||||||
|
forcePlaceholderSize: true,
|
||||||
|
zIndex : 999999
|
||||||
|
})
|
||||||
|
$('.connectedSortable .card-header, .connectedSortable .nav-tabs-custom').css('cursor', 'move')
|
||||||
|
|
||||||
|
// jQuery UI sortable for the todo list
|
||||||
|
$('.todo-list').sortable({
|
||||||
|
placeholder : 'sort-highlight',
|
||||||
|
handle : '.handle',
|
||||||
|
forcePlaceholderSize: true,
|
||||||
|
zIndex : 999999
|
||||||
|
})
|
||||||
|
|
||||||
|
// bootstrap WYSIHTML5 - text editor
|
||||||
|
$('.textarea').summernote()
|
||||||
|
|
||||||
|
$('.daterange').daterangepicker({
|
||||||
|
ranges : {
|
||||||
|
'Today' : [moment(), moment()],
|
||||||
|
'Yesterday' : [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
|
||||||
|
'Last 7 Days' : [moment().subtract(6, 'days'), moment()],
|
||||||
|
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
|
||||||
|
'This Month' : [moment().startOf('month'), moment().endOf('month')],
|
||||||
|
'Last Month' : [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
|
||||||
|
},
|
||||||
|
startDate: moment().subtract(29, 'days'),
|
||||||
|
endDate : moment()
|
||||||
|
}, function (start, end) {
|
||||||
|
window.alert('You chose: ' + start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'))
|
||||||
|
})
|
||||||
|
|
||||||
|
/* jQueryKnob */
|
||||||
|
$('.knob').knob()
|
||||||
|
|
||||||
|
// jvectormap data
|
||||||
|
var visitorsData = {
|
||||||
|
'US': 398, //USA
|
||||||
|
'SA': 400, //Saudi Arabia
|
||||||
|
'CA': 1000, //Canada
|
||||||
|
'DE': 500, //Germany
|
||||||
|
'FR': 760, //France
|
||||||
|
'CN': 300, //China
|
||||||
|
'AU': 700, //Australia
|
||||||
|
'BR': 600, //Brazil
|
||||||
|
'IN': 800, //India
|
||||||
|
'GB': 320, //Great Britain
|
||||||
|
'RU': 3000 //Russia
|
||||||
|
}
|
||||||
|
// World map by jvectormap
|
||||||
|
$('#world-map').vectorMap({
|
||||||
|
map : 'usa_en',
|
||||||
|
backgroundColor : 'transparent',
|
||||||
|
regionStyle : {
|
||||||
|
initial: {
|
||||||
|
fill : 'rgba(255, 255, 255, 0.7)',
|
||||||
|
'fill-opacity' : 1,
|
||||||
|
stroke : 'rgba(0,0,0,.2)',
|
||||||
|
'stroke-width' : 1,
|
||||||
|
'stroke-opacity': 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series : {
|
||||||
|
regions: [{
|
||||||
|
values : visitorsData,
|
||||||
|
scale : ['#ffffff', '#0154ad'],
|
||||||
|
normalizeFunction: 'polynomial'
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
onRegionLabelShow: function (e, el, code) {
|
||||||
|
if (typeof visitorsData[code] != 'undefined')
|
||||||
|
el.html(el.html() + ': ' + visitorsData[code] + ' new visitors')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// Sparkline charts
|
||||||
|
var sparkline1 = new Sparkline($("#sparkline-1")[0], {width: 80, height: 50, lineColor: '#92c1dc', endColor: '#ebf4f9'});
|
||||||
|
var sparkline2 = new Sparkline($("#sparkline-2")[0], {width: 80, height: 50, lineColor: '#92c1dc', endColor: '#ebf4f9'});
|
||||||
|
var sparkline3 = new Sparkline($("#sparkline-3")[0], {width: 80, height: 50, lineColor: '#92c1dc', endColor: '#ebf4f9'});
|
||||||
|
|
||||||
|
sparkline1.draw([1000, 1200, 920, 927, 931, 1027, 819, 930, 1021]);
|
||||||
|
sparkline2.draw([515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921]);
|
||||||
|
sparkline3.draw([15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21]);
|
||||||
|
|
||||||
|
// The Calender
|
||||||
|
$('#calendar').datetimepicker({
|
||||||
|
format: 'L',
|
||||||
|
inline: true
|
||||||
|
})
|
||||||
|
|
||||||
|
// SLIMSCROLL FOR CHAT WIDGET
|
||||||
|
$('#chat-box').overlayScrollbars({
|
||||||
|
height: '250px'
|
||||||
|
})
|
||||||
|
|
||||||
|
/* Chart.js Charts */
|
||||||
|
// Sales chart
|
||||||
|
var salesChartCanvas = document.getElementById('revenue-chart-canvas').getContext('2d');
|
||||||
|
//$('#revenue-chart').get(0).getContext('2d');
|
||||||
|
|
||||||
|
var salesChartData = {
|
||||||
|
labels : ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
|
||||||
|
datasets: [
|
||||||
|
{
|
||||||
|
label : 'Digital Goods',
|
||||||
|
backgroundColor : 'rgba(60,141,188,0.9)',
|
||||||
|
borderColor : 'rgba(60,141,188,0.8)',
|
||||||
|
pointRadius : false,
|
||||||
|
pointColor : '#3b8bba',
|
||||||
|
pointStrokeColor : 'rgba(60,141,188,1)',
|
||||||
|
pointHighlightFill : '#fff',
|
||||||
|
pointHighlightStroke: 'rgba(60,141,188,1)',
|
||||||
|
data : [28, 48, 40, 19, 86, 27, 90]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label : 'Electronics',
|
||||||
|
backgroundColor : 'rgba(210, 214, 222, 1)',
|
||||||
|
borderColor : 'rgba(210, 214, 222, 1)',
|
||||||
|
pointRadius : false,
|
||||||
|
pointColor : 'rgba(210, 214, 222, 1)',
|
||||||
|
pointStrokeColor : '#c1c7d1',
|
||||||
|
pointHighlightFill : '#fff',
|
||||||
|
pointHighlightStroke: 'rgba(220,220,220,1)',
|
||||||
|
data : [65, 59, 80, 81, 56, 55, 40]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
var salesChartOptions = {
|
||||||
|
maintainAspectRatio : false,
|
||||||
|
responsive : true,
|
||||||
|
legend: {
|
||||||
|
display: false
|
||||||
|
},
|
||||||
|
scales: {
|
||||||
|
xAxes: [{
|
||||||
|
gridLines : {
|
||||||
|
display : false,
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
yAxes: [{
|
||||||
|
gridLines : {
|
||||||
|
display : false,
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This will get the first returned node in the jQuery collection.
|
||||||
|
var salesChart = new Chart(salesChartCanvas, {
|
||||||
|
type: 'line',
|
||||||
|
data: salesChartData,
|
||||||
|
options: salesChartOptions
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// Donut Chart
|
||||||
|
var pieChartCanvas = $('#sales-chart-canvas').get(0).getContext('2d')
|
||||||
|
var pieData = {
|
||||||
|
labels: [
|
||||||
|
'Instore Sales',
|
||||||
|
'Download Sales',
|
||||||
|
'Mail-Order Sales',
|
||||||
|
],
|
||||||
|
datasets: [
|
||||||
|
{
|
||||||
|
data: [30,12,20],
|
||||||
|
backgroundColor : ['#f56954', '#00a65a', '#f39c12'],
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
var pieOptions = {
|
||||||
|
legend: {
|
||||||
|
display: false
|
||||||
|
},
|
||||||
|
maintainAspectRatio : false,
|
||||||
|
responsive : true,
|
||||||
|
}
|
||||||
|
//Create pie or douhnut chart
|
||||||
|
// You can switch between pie and douhnut using the method below.
|
||||||
|
var pieChart = new Chart(pieChartCanvas, {
|
||||||
|
type: 'doughnut',
|
||||||
|
data: pieData,
|
||||||
|
options: pieOptions
|
||||||
|
});
|
||||||
|
|
||||||
|
// Sales graph chart
|
||||||
|
var salesGraphChartCanvas = $('#line-chart').get(0).getContext('2d');
|
||||||
|
//$('#revenue-chart').get(0).getContext('2d');
|
||||||
|
|
||||||
|
var salesGraphChartData = {
|
||||||
|
labels : ['2011 Q1', '2011 Q2', '2011 Q3', '2011 Q4', '2012 Q1', '2012 Q2', '2012 Q3', '2012 Q4', '2013 Q1', '2013 Q2'],
|
||||||
|
datasets: [
|
||||||
|
{
|
||||||
|
label : 'Digital Goods',
|
||||||
|
fill : false,
|
||||||
|
borderWidth : 2,
|
||||||
|
lineTension : 0,
|
||||||
|
spanGaps : true,
|
||||||
|
borderColor : '#efefef',
|
||||||
|
pointRadius : 3,
|
||||||
|
pointHoverRadius : 7,
|
||||||
|
pointColor : '#efefef',
|
||||||
|
pointBackgroundColor: '#efefef',
|
||||||
|
data : [2666, 2778, 4912, 3767, 6810, 5670, 4820, 15073, 10687, 8432]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
var salesGraphChartOptions = {
|
||||||
|
maintainAspectRatio : false,
|
||||||
|
responsive : true,
|
||||||
|
legend: {
|
||||||
|
display: false,
|
||||||
|
},
|
||||||
|
scales: {
|
||||||
|
xAxes: [{
|
||||||
|
ticks : {
|
||||||
|
fontColor: '#efefef',
|
||||||
|
},
|
||||||
|
gridLines : {
|
||||||
|
display : false,
|
||||||
|
color: '#efefef',
|
||||||
|
drawBorder: false,
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
yAxes: [{
|
||||||
|
ticks : {
|
||||||
|
stepSize: 5000,
|
||||||
|
fontColor: '#efefef',
|
||||||
|
},
|
||||||
|
gridLines : {
|
||||||
|
display : true,
|
||||||
|
color: '#efefef',
|
||||||
|
drawBorder: false,
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This will get the first returned node in the jQuery collection.
|
||||||
|
var salesGraphChart = new Chart(salesGraphChartCanvas, {
|
||||||
|
type: 'line',
|
||||||
|
data: salesGraphChartData,
|
||||||
|
options: salesGraphChartOptions
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
})
|
||||||
@@ -0,0 +1,267 @@
|
|||||||
|
$(function () {
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
/* ChartJS
|
||||||
|
* -------
|
||||||
|
* Here we will create a few charts using ChartJS
|
||||||
|
*/
|
||||||
|
|
||||||
|
//-----------------------
|
||||||
|
//- MONTHLY SALES CHART -
|
||||||
|
//-----------------------
|
||||||
|
|
||||||
|
// Get context with jQuery - using jQuery's .get() method.
|
||||||
|
var salesChartCanvas = $('#salesChart').get(0).getContext('2d')
|
||||||
|
|
||||||
|
var salesChartData = {
|
||||||
|
labels : ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
|
||||||
|
datasets: [
|
||||||
|
{
|
||||||
|
label : 'Digital Goods',
|
||||||
|
backgroundColor : 'rgba(60,141,188,0.9)',
|
||||||
|
borderColor : 'rgba(60,141,188,0.8)',
|
||||||
|
pointRadius : false,
|
||||||
|
pointColor : '#3b8bba',
|
||||||
|
pointStrokeColor : 'rgba(60,141,188,1)',
|
||||||
|
pointHighlightFill : '#fff',
|
||||||
|
pointHighlightStroke: 'rgba(60,141,188,1)',
|
||||||
|
data : [28, 48, 40, 19, 86, 27, 90]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label : 'Electronics',
|
||||||
|
backgroundColor : 'rgba(210, 214, 222, 1)',
|
||||||
|
borderColor : 'rgba(210, 214, 222, 1)',
|
||||||
|
pointRadius : false,
|
||||||
|
pointColor : 'rgba(210, 214, 222, 1)',
|
||||||
|
pointStrokeColor : '#c1c7d1',
|
||||||
|
pointHighlightFill : '#fff',
|
||||||
|
pointHighlightStroke: 'rgba(220,220,220,1)',
|
||||||
|
data : [65, 59, 80, 81, 56, 55, 40]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
var salesChartOptions = {
|
||||||
|
maintainAspectRatio : false,
|
||||||
|
responsive : true,
|
||||||
|
legend: {
|
||||||
|
display: false
|
||||||
|
},
|
||||||
|
scales: {
|
||||||
|
xAxes: [{
|
||||||
|
gridLines : {
|
||||||
|
display : false,
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
yAxes: [{
|
||||||
|
gridLines : {
|
||||||
|
display : false,
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This will get the first returned node in the jQuery collection.
|
||||||
|
var salesChart = new Chart(salesChartCanvas, {
|
||||||
|
type: 'line',
|
||||||
|
data: salesChartData,
|
||||||
|
options: salesChartOptions
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
//---------------------------
|
||||||
|
//- END MONTHLY SALES CHART -
|
||||||
|
//---------------------------
|
||||||
|
|
||||||
|
//-------------
|
||||||
|
//- PIE CHART -
|
||||||
|
//-------------
|
||||||
|
// Get context with jQuery - using jQuery's .get() method.
|
||||||
|
var pieChartCanvas = $('#pieChart').get(0).getContext('2d')
|
||||||
|
var pieData = {
|
||||||
|
labels: [
|
||||||
|
'Chrome',
|
||||||
|
'IE',
|
||||||
|
'FireFox',
|
||||||
|
'Safari',
|
||||||
|
'Opera',
|
||||||
|
'Navigator',
|
||||||
|
],
|
||||||
|
datasets: [
|
||||||
|
{
|
||||||
|
data: [700,500,400,600,300,100],
|
||||||
|
backgroundColor : ['#f56954', '#00a65a', '#f39c12', '#00c0ef', '#3c8dbc', '#d2d6de'],
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
var pieOptions = {
|
||||||
|
legend: {
|
||||||
|
display: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Create pie or douhnut chart
|
||||||
|
// You can switch between pie and douhnut using the method below.
|
||||||
|
var pieChart = new Chart(pieChartCanvas, {
|
||||||
|
type: 'doughnut',
|
||||||
|
data: pieData,
|
||||||
|
options: pieOptions
|
||||||
|
})
|
||||||
|
|
||||||
|
//-----------------
|
||||||
|
//- END PIE CHART -
|
||||||
|
//-----------------
|
||||||
|
|
||||||
|
/* jVector Maps
|
||||||
|
* ------------
|
||||||
|
* Create a world map with markers
|
||||||
|
*/
|
||||||
|
$('#world-map-markers').mapael({
|
||||||
|
map: {
|
||||||
|
name : "usa_states",
|
||||||
|
zoom: {
|
||||||
|
enabled: true,
|
||||||
|
maxLevel: 10
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// $('#world-map-markers').vectorMap({
|
||||||
|
// map : 'world_en',
|
||||||
|
// normalizeFunction: 'polynomial',
|
||||||
|
// hoverOpacity : 0.7,
|
||||||
|
// hoverColor : false,
|
||||||
|
// backgroundColor : 'transparent',
|
||||||
|
// regionStyle : {
|
||||||
|
// initial : {
|
||||||
|
// fill : 'rgba(210, 214, 222, 1)',
|
||||||
|
// 'fill-opacity' : 1,
|
||||||
|
// stroke : 'none',
|
||||||
|
// 'stroke-width' : 0,
|
||||||
|
// 'stroke-opacity': 1
|
||||||
|
// },
|
||||||
|
// hover : {
|
||||||
|
// 'fill-opacity': 0.7,
|
||||||
|
// cursor : 'pointer'
|
||||||
|
// },
|
||||||
|
// selected : {
|
||||||
|
// fill: 'yellow'
|
||||||
|
// },
|
||||||
|
// selectedHover: {}
|
||||||
|
// },
|
||||||
|
// markerStyle : {
|
||||||
|
// initial: {
|
||||||
|
// fill : '#00a65a',
|
||||||
|
// stroke: '#111'
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// markers : [
|
||||||
|
// {
|
||||||
|
// latLng: [41.90, 12.45],
|
||||||
|
// name : 'Vatican City'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [43.73, 7.41],
|
||||||
|
// name : 'Monaco'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [-0.52, 166.93],
|
||||||
|
// name : 'Nauru'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [-8.51, 179.21],
|
||||||
|
// name : 'Tuvalu'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [43.93, 12.46],
|
||||||
|
// name : 'San Marino'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [47.14, 9.52],
|
||||||
|
// name : 'Liechtenstein'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [7.11, 171.06],
|
||||||
|
// name : 'Marshall Islands'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [17.3, -62.73],
|
||||||
|
// name : 'Saint Kitts and Nevis'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [3.2, 73.22],
|
||||||
|
// name : 'Maldives'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [35.88, 14.5],
|
||||||
|
// name : 'Malta'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [12.05, -61.75],
|
||||||
|
// name : 'Grenada'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [13.16, -61.23],
|
||||||
|
// name : 'Saint Vincent and the Grenadines'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [13.16, -59.55],
|
||||||
|
// name : 'Barbados'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [17.11, -61.85],
|
||||||
|
// name : 'Antigua and Barbuda'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [-4.61, 55.45],
|
||||||
|
// name : 'Seychelles'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [7.35, 134.46],
|
||||||
|
// name : 'Palau'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [42.5, 1.51],
|
||||||
|
// name : 'Andorra'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [14.01, -60.98],
|
||||||
|
// name : 'Saint Lucia'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [6.91, 158.18],
|
||||||
|
// name : 'Federated States of Micronesia'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [1.3, 103.8],
|
||||||
|
// name : 'Singapore'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [1.46, 173.03],
|
||||||
|
// name : 'Kiribati'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [-21.13, -175.2],
|
||||||
|
// name : 'Tonga'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [15.3, -61.38],
|
||||||
|
// name : 'Dominica'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [-20.2, 57.5],
|
||||||
|
// name : 'Mauritius'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [26.02, 50.55],
|
||||||
|
// name : 'Bahrain'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// latLng: [0.33, 6.73],
|
||||||
|
// name : 'São Tomé and Príncipe'
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
// })
|
||||||
|
|
||||||
|
})
|
||||||
@@ -0,0 +1,140 @@
|
|||||||
|
$(function () {
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
var ticksStyle = {
|
||||||
|
fontColor: '#495057',
|
||||||
|
fontStyle: 'bold'
|
||||||
|
}
|
||||||
|
|
||||||
|
var mode = 'index'
|
||||||
|
var intersect = true
|
||||||
|
|
||||||
|
var $salesChart = $('#sales-chart')
|
||||||
|
var salesChart = new Chart($salesChart, {
|
||||||
|
type : 'bar',
|
||||||
|
data : {
|
||||||
|
labels : ['JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'],
|
||||||
|
datasets: [
|
||||||
|
{
|
||||||
|
backgroundColor: '#007bff',
|
||||||
|
borderColor : '#007bff',
|
||||||
|
data : [1000, 2000, 3000, 2500, 2700, 2500, 3000]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
backgroundColor: '#ced4da',
|
||||||
|
borderColor : '#ced4da',
|
||||||
|
data : [700, 1700, 2700, 2000, 1800, 1500, 2000]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
maintainAspectRatio: false,
|
||||||
|
tooltips : {
|
||||||
|
mode : mode,
|
||||||
|
intersect: intersect
|
||||||
|
},
|
||||||
|
hover : {
|
||||||
|
mode : mode,
|
||||||
|
intersect: intersect
|
||||||
|
},
|
||||||
|
legend : {
|
||||||
|
display: false
|
||||||
|
},
|
||||||
|
scales : {
|
||||||
|
yAxes: [{
|
||||||
|
// display: false,
|
||||||
|
gridLines: {
|
||||||
|
display : true,
|
||||||
|
lineWidth : '4px',
|
||||||
|
color : 'rgba(0, 0, 0, .2)',
|
||||||
|
zeroLineColor: 'transparent'
|
||||||
|
},
|
||||||
|
ticks : $.extend({
|
||||||
|
beginAtZero: true,
|
||||||
|
|
||||||
|
// Include a dollar sign in the ticks
|
||||||
|
callback: function (value, index, values) {
|
||||||
|
if (value >= 1000) {
|
||||||
|
value /= 1000
|
||||||
|
value += 'k'
|
||||||
|
}
|
||||||
|
return '$' + value
|
||||||
|
}
|
||||||
|
}, ticksStyle)
|
||||||
|
}],
|
||||||
|
xAxes: [{
|
||||||
|
display : true,
|
||||||
|
gridLines: {
|
||||||
|
display: false
|
||||||
|
},
|
||||||
|
ticks : ticksStyle
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
var $visitorsChart = $('#visitors-chart')
|
||||||
|
var visitorsChart = new Chart($visitorsChart, {
|
||||||
|
data : {
|
||||||
|
labels : ['18th', '20th', '22nd', '24th', '26th', '28th', '30th'],
|
||||||
|
datasets: [{
|
||||||
|
type : 'line',
|
||||||
|
data : [100, 120, 170, 167, 180, 177, 160],
|
||||||
|
backgroundColor : 'transparent',
|
||||||
|
borderColor : '#007bff',
|
||||||
|
pointBorderColor : '#007bff',
|
||||||
|
pointBackgroundColor: '#007bff',
|
||||||
|
fill : false
|
||||||
|
// pointHoverBackgroundColor: '#007bff',
|
||||||
|
// pointHoverBorderColor : '#007bff'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type : 'line',
|
||||||
|
data : [60, 80, 70, 67, 80, 77, 100],
|
||||||
|
backgroundColor : 'tansparent',
|
||||||
|
borderColor : '#ced4da',
|
||||||
|
pointBorderColor : '#ced4da',
|
||||||
|
pointBackgroundColor: '#ced4da',
|
||||||
|
fill : false
|
||||||
|
// pointHoverBackgroundColor: '#ced4da',
|
||||||
|
// pointHoverBorderColor : '#ced4da'
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
maintainAspectRatio: false,
|
||||||
|
tooltips : {
|
||||||
|
mode : mode,
|
||||||
|
intersect: intersect
|
||||||
|
},
|
||||||
|
hover : {
|
||||||
|
mode : mode,
|
||||||
|
intersect: intersect
|
||||||
|
},
|
||||||
|
legend : {
|
||||||
|
display: false
|
||||||
|
},
|
||||||
|
scales : {
|
||||||
|
yAxes: [{
|
||||||
|
// display: false,
|
||||||
|
gridLines: {
|
||||||
|
display : true,
|
||||||
|
lineWidth : '4px',
|
||||||
|
color : 'rgba(0, 0, 0, .2)',
|
||||||
|
zeroLineColor: 'transparent'
|
||||||
|
},
|
||||||
|
ticks : $.extend({
|
||||||
|
beginAtZero : true,
|
||||||
|
suggestedMax: 200
|
||||||
|
}, ticksStyle)
|
||||||
|
}],
|
||||||
|
xAxes: [{
|
||||||
|
display : true,
|
||||||
|
gridLines: {
|
||||||
|
display: false
|
||||||
|
},
|
||||||
|
ticks : ticksStyle
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
*
|
||||||
|
!/plugins/flot-old/
|
||||||
Vendored
+399
@@ -0,0 +1,399 @@
|
|||||||
|
/*!
|
||||||
|
* Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.
|
||||||
|
* @package bootstrap-colorpicker
|
||||||
|
* @version v3.1.2
|
||||||
|
* @license MIT
|
||||||
|
* @link https://farbelous.github.io/bootstrap-colorpicker/
|
||||||
|
* @link https://github.com/farbelous/bootstrap-colorpicker.git
|
||||||
|
*/
|
||||||
|
.colorpicker {
|
||||||
|
position: relative;
|
||||||
|
display: none;
|
||||||
|
font-size: inherit;
|
||||||
|
color: inherit;
|
||||||
|
text-align: left;
|
||||||
|
list-style: none;
|
||||||
|
background-color: #ffffff;
|
||||||
|
background-clip: padding-box;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||||
|
padding: .75rem .75rem;
|
||||||
|
width: 148px;
|
||||||
|
border-radius: 4px;
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-disabled,
|
||||||
|
.colorpicker.colorpicker-disabled * {
|
||||||
|
cursor: default !important; }
|
||||||
|
|
||||||
|
.colorpicker div {
|
||||||
|
position: relative; }
|
||||||
|
|
||||||
|
.colorpicker-popup {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
float: left;
|
||||||
|
margin-top: 1px;
|
||||||
|
z-index: 1060; }
|
||||||
|
|
||||||
|
.colorpicker-popup.colorpicker-bs-popover-content {
|
||||||
|
position: relative;
|
||||||
|
top: auto;
|
||||||
|
left: auto;
|
||||||
|
float: none;
|
||||||
|
margin: 0;
|
||||||
|
z-index: initial;
|
||||||
|
border: none;
|
||||||
|
padding: 0.25rem 0;
|
||||||
|
border-radius: 0;
|
||||||
|
background: none;
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
box-shadow: none; }
|
||||||
|
|
||||||
|
.colorpicker:before,
|
||||||
|
.colorpicker:after {
|
||||||
|
content: "";
|
||||||
|
display: table;
|
||||||
|
clear: both;
|
||||||
|
line-height: 0; }
|
||||||
|
|
||||||
|
.colorpicker-clear {
|
||||||
|
clear: both;
|
||||||
|
display: block; }
|
||||||
|
|
||||||
|
.colorpicker:before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border-left: 7px solid transparent;
|
||||||
|
border-right: 7px solid transparent;
|
||||||
|
border-bottom: 7px solid #ccc;
|
||||||
|
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||||
|
position: absolute;
|
||||||
|
top: -7px;
|
||||||
|
left: auto;
|
||||||
|
right: 6px; }
|
||||||
|
|
||||||
|
.colorpicker:after {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-bottom: 6px solid #ffffff;
|
||||||
|
position: absolute;
|
||||||
|
top: -6px;
|
||||||
|
left: auto;
|
||||||
|
right: 7px; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-with-alpha {
|
||||||
|
width: 170px; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-with-alpha .colorpicker-alpha {
|
||||||
|
display: block; }
|
||||||
|
|
||||||
|
.colorpicker-saturation {
|
||||||
|
position: relative;
|
||||||
|
width: 126px;
|
||||||
|
height: 126px;
|
||||||
|
/* FF3.6+ */
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
/* IE10+ */
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(black)), -webkit-gradient(linear, left top, right top, from(white), to(rgba(255, 255, 255, 0)));
|
||||||
|
background: linear-gradient(to bottom, transparent 0%, black 100%), linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* W3C */
|
||||||
|
cursor: crosshair;
|
||||||
|
float: left;
|
||||||
|
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
||||||
|
margin-bottom: 6px; }
|
||||||
|
.colorpicker-saturation .colorpicker-guide {
|
||||||
|
display: block;
|
||||||
|
height: 6px;
|
||||||
|
width: 6px;
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid #000;
|
||||||
|
-webkit-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);
|
||||||
|
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: -3px 0 0 -3px; }
|
||||||
|
|
||||||
|
.colorpicker-hue,
|
||||||
|
.colorpicker-alpha {
|
||||||
|
position: relative;
|
||||||
|
width: 16px;
|
||||||
|
height: 126px;
|
||||||
|
float: left;
|
||||||
|
cursor: row-resize;
|
||||||
|
margin-left: 6px;
|
||||||
|
margin-bottom: 6px; }
|
||||||
|
|
||||||
|
.colorpicker-alpha-color {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%; }
|
||||||
|
|
||||||
|
.colorpicker-hue,
|
||||||
|
.colorpicker-alpha-color {
|
||||||
|
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }
|
||||||
|
|
||||||
|
.colorpicker-hue .colorpicker-guide,
|
||||||
|
.colorpicker-alpha .colorpicker-guide {
|
||||||
|
display: block;
|
||||||
|
height: 4px;
|
||||||
|
background: rgba(255, 255, 255, 0.8);
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.4);
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
margin-left: -2px;
|
||||||
|
margin-top: -2px;
|
||||||
|
right: -2px;
|
||||||
|
z-index: 1; }
|
||||||
|
|
||||||
|
.colorpicker-hue {
|
||||||
|
/* FF3.6+ */
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
/* IE10+ */
|
||||||
|
background: -webkit-gradient(linear, left bottom, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));
|
||||||
|
background: linear-gradient(to top, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);
|
||||||
|
/* W3C */ }
|
||||||
|
|
||||||
|
.colorpicker-alpha {
|
||||||
|
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
||||||
|
background-size: 10px 10px;
|
||||||
|
background-position: 0 0, 5px 5px;
|
||||||
|
display: none; }
|
||||||
|
|
||||||
|
.colorpicker-bar {
|
||||||
|
min-height: 16px;
|
||||||
|
margin: 6px 0 0 0;
|
||||||
|
clear: both;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 10px;
|
||||||
|
line-height: normal;
|
||||||
|
max-width: 100%;
|
||||||
|
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }
|
||||||
|
.colorpicker-bar:before {
|
||||||
|
content: "";
|
||||||
|
display: table;
|
||||||
|
clear: both; }
|
||||||
|
|
||||||
|
.colorpicker-bar.colorpicker-bar-horizontal {
|
||||||
|
height: 126px;
|
||||||
|
width: 16px;
|
||||||
|
margin: 0 0 6px 0;
|
||||||
|
float: left; }
|
||||||
|
|
||||||
|
.colorpicker-input-addon {
|
||||||
|
position: relative; }
|
||||||
|
|
||||||
|
.colorpicker-input-addon i {
|
||||||
|
display: inline-block;
|
||||||
|
cursor: pointer;
|
||||||
|
vertical-align: text-top;
|
||||||
|
height: 16px;
|
||||||
|
width: 16px;
|
||||||
|
position: relative; }
|
||||||
|
|
||||||
|
.colorpicker-input-addon:before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: text-top;
|
||||||
|
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
||||||
|
background-size: 10px 10px;
|
||||||
|
background-position: 0 0, 5px 5px; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-inline {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
float: none;
|
||||||
|
z-index: auto;
|
||||||
|
vertical-align: text-bottom; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-horizontal {
|
||||||
|
width: 126px;
|
||||||
|
height: auto; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-horizontal .colorpicker-bar {
|
||||||
|
width: 126px; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-horizontal .colorpicker-saturation {
|
||||||
|
float: none;
|
||||||
|
margin-bottom: 0; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-horizontal .colorpicker-hue,
|
||||||
|
.colorpicker.colorpicker-horizontal .colorpicker-alpha {
|
||||||
|
float: none;
|
||||||
|
width: 126px;
|
||||||
|
height: 16px;
|
||||||
|
cursor: col-resize;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-top: 6px;
|
||||||
|
margin-bottom: 0; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide,
|
||||||
|
.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide {
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
bottom: -2px;
|
||||||
|
left: 0;
|
||||||
|
right: auto;
|
||||||
|
height: auto;
|
||||||
|
width: 4px; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-horizontal .colorpicker-hue {
|
||||||
|
/* FF3.6+ */
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
/* IE10+ */
|
||||||
|
background: -webkit-gradient(linear, right top, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));
|
||||||
|
background: linear-gradient(to left, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);
|
||||||
|
/* W3C */ }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-horizontal .colorpicker-alpha {
|
||||||
|
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
||||||
|
background-size: 10px 10px;
|
||||||
|
background-position: 0 0, 5px 5px; }
|
||||||
|
|
||||||
|
.colorpicker-inline:before,
|
||||||
|
.colorpicker-no-arrow:before,
|
||||||
|
.colorpicker-popup.colorpicker-bs-popover-content:before {
|
||||||
|
content: none;
|
||||||
|
display: none; }
|
||||||
|
|
||||||
|
.colorpicker-inline:after,
|
||||||
|
.colorpicker-no-arrow:after,
|
||||||
|
.colorpicker-popup.colorpicker-bs-popover-content:after {
|
||||||
|
content: none;
|
||||||
|
display: none; }
|
||||||
|
|
||||||
|
.colorpicker-alpha,
|
||||||
|
.colorpicker-saturation,
|
||||||
|
.colorpicker-hue {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-visible,
|
||||||
|
.colorpicker-alpha.colorpicker-visible,
|
||||||
|
.colorpicker-saturation.colorpicker-visible,
|
||||||
|
.colorpicker-hue.colorpicker-visible,
|
||||||
|
.colorpicker-bar.colorpicker-visible {
|
||||||
|
display: block; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-hidden,
|
||||||
|
.colorpicker-alpha.colorpicker-hidden,
|
||||||
|
.colorpicker-saturation.colorpicker-hidden,
|
||||||
|
.colorpicker-hue.colorpicker-hidden,
|
||||||
|
.colorpicker-bar.colorpicker-hidden {
|
||||||
|
display: none; }
|
||||||
|
|
||||||
|
.colorpicker-inline.colorpicker-visible {
|
||||||
|
display: inline-block; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-disabled:after {
|
||||||
|
border: none;
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: rgba(233, 236, 239, 0.33);
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: auto;
|
||||||
|
z-index: 2;
|
||||||
|
position: absolute; }
|
||||||
|
|
||||||
|
.colorpicker.colorpicker-disabled .colorpicker-guide {
|
||||||
|
display: none; }
|
||||||
|
|
||||||
|
/** EXTENSIONS **/
|
||||||
|
.colorpicker-preview {
|
||||||
|
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
||||||
|
background-size: 10px 10px;
|
||||||
|
background-position: 0 0, 5px 5px; }
|
||||||
|
|
||||||
|
.colorpicker-preview > div {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%; }
|
||||||
|
|
||||||
|
.colorpicker-bar.colorpicker-swatches {
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
height: auto; }
|
||||||
|
|
||||||
|
.colorpicker-swatches--inner {
|
||||||
|
clear: both;
|
||||||
|
margin-top: -6px; }
|
||||||
|
|
||||||
|
.colorpicker-swatch {
|
||||||
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
|
float: left;
|
||||||
|
height: 16px;
|
||||||
|
width: 16px;
|
||||||
|
margin-right: 6px;
|
||||||
|
margin-top: 6px;
|
||||||
|
margin-left: 0;
|
||||||
|
display: block;
|
||||||
|
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
||||||
|
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
||||||
|
background-size: 10px 10px;
|
||||||
|
background-position: 0 0, 5px 5px; }
|
||||||
|
|
||||||
|
.colorpicker-swatch--inner {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%; }
|
||||||
|
|
||||||
|
.colorpicker-swatch:nth-of-type(7n+0) {
|
||||||
|
margin-right: 0; }
|
||||||
|
|
||||||
|
.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0) {
|
||||||
|
margin-right: 6px; }
|
||||||
|
|
||||||
|
.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0) {
|
||||||
|
margin-right: 0; }
|
||||||
|
|
||||||
|
.colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0) {
|
||||||
|
margin-right: 0; }
|
||||||
|
|
||||||
|
.colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0) {
|
||||||
|
margin-right: 6px; }
|
||||||
|
|
||||||
|
.colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0) {
|
||||||
|
margin-right: 6px; }
|
||||||
|
|
||||||
|
.colorpicker-swatch:last-of-type:after {
|
||||||
|
content: "";
|
||||||
|
display: table;
|
||||||
|
clear: both; }
|
||||||
|
|
||||||
|
*[dir='rtl'] .colorpicker-element input,
|
||||||
|
.colorpicker-element[dir='rtl'] input,
|
||||||
|
.colorpicker-element input[dir='rtl'] {
|
||||||
|
direction: ltr;
|
||||||
|
text-align: right; }
|
||||||
|
|
||||||
|
/*# sourceMappingURL=bootstrap-colorpicker.css.map */
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":["colorpicker.scss"],"names":[],"mappings":"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","file":"bootstrap-colorpicker.css","sourcesContent":["$outline-color: rgba(0, 0, 0, 0.2);\n$box-shadow-outline: 0 0 0 1px $outline-color;\n$bar-size-short: 16px !default;\n$base-margin: 6px !default;\n$columns: 6 !default; // this affects the number of swatches per row and the width of the color picker, saturation, etc.\n$bar-size-large: ($bar-size-short * $columns) + ($base-margin * ($columns - 1));\n\n@mixin bgCheckerBox($size: 10px) {\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0),\n linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0),\n rgb(255, 255, 255);\n background-size: $size $size;\n background-position: 0 0, $size/2 $size/2;\n}\n\n@mixin bgSaturation() {\n background: -moz-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n -moz-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* FF3.6+ */\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 1))),\n -webkit-gradient(lineLine truncated
|
||||||
Vendored
+10
@@ -0,0 +1,10 @@
|
|||||||
|
/*!
|
||||||
|
* Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.
|
||||||
|
* @package bootstrap-colorpicker
|
||||||
|
* @version v3.1.2
|
||||||
|
* @license MIT
|
||||||
|
* @link https://farbelous.github.io/bootstrap-colorpicker/
|
||||||
|
* @link https://github.com/farbelous/bootstrap-colorpicker.git
|
||||||
|
*/
|
||||||
|
.colorpicker{position:relative;display:none;font-size:inherit;color:inherit;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);padding:.75rem .75rem;width:148px;border-radius:4px;-webkit-box-sizing:content-box;box-sizing:content-box}.colorpicker.colorpicker-disabled,.colorpicker.colorpicker-disabled *{cursor:default!important}.colorpicker div{position:relative}.colorpicker-popup{position:absolute;top:100%;left:0;float:left;margin-top:1px;z-index:1060}.colorpicker-popup.colorpicker-bs-popover-content{position:relative;top:auto;left:auto;float:none;margin:0;z-index:initial;border:none;padding:.25rem 0;border-radius:0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.colorpicker:after,.colorpicker:before{content:"";display:table;clear:both;line-height:0}.colorpicker-clear{clear:both;display:block}.colorpicker:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:auto;right:6px}.colorpicker:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:auto;right:7px}.colorpicker.colorpicker-with-alpha{width:170px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-saturation{position:relative;width:126px;height:126px;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(black)),-webkit-gradient(linear,left top,right top,from(white),to(rgba(255,255,255,0)));background:linear-gradient(to bottom,transparent 0,#000 100%),linear-gradient(to right,#fff 0,rgba(255,255,255,0) 100%);cursor:crosshair;float:left;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2);margin-bottom:6px}.colorpicker-saturation .colorpicker-guide{display:block;height:6px;width:6px;border-radius:6px;border:1px solid #000;-webkit-box-shadow:0 0 0 1px rgba(255,255,255,.8);box-shadow:0 0 0 1px rgba(255,255,255,.8);position:absolute;top:0;left:0;margin:-3px 0 0 -3px}.colorpicker-alpha,.colorpicker-hue{position:relative;width:16px;height:126px;float:left;cursor:row-resize;margin-left:6px;margin-bottom:6px}.colorpicker-alpha-color{position:absolute;top:0;left:0;width:100%;height:100%}.colorpicker-alpha-color,.colorpicker-hue{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.colorpicker-alpha .colorpicker-guide,.colorpicker-hue .colorpicker-guide{display:block;height:4px;background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.4);position:absolute;top:0;left:0;margin-left:-2px;margin-top:-2px;right:-2px;z-index:1}.colorpicker-hue{background:-webkit-gradient(linear,left bottom,left top,from(red),color-stop(8%,#ff8000),color-stop(17%,#ff0),color-stop(25%,#80ff00),color-stop(33%,#0f0),color-stop(42%,#00ff80),color-stop(50%,#0ff),color-stop(58%,#0080ff),color-stop(67%,#00f),color-stop(75%,#8000ff),color-stop(83%,#ff00ff),color-stop(92%,#ff0080),to(red));background:linear-gradient(to top,red 0,#ff8000 8%,#ff0 17%,#80ff00 25%,#0f0 33%,#00ff80 42%,#0ff 50%,#0080ff 58%,#00f 67%,#8000ff 75%,#ff00ff 83%,#ff0080 92%,red 100%)}.colorpicker-alpha{background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px;display:none}.colorpicker-bar{min-height:16px;margin:6px 0 0 0;clear:both;text-align:center;font-size:10px;line-height:normal;max-width:100%;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.colorpicker-bar:before{content:"";display:table;clear:both}.colorpicker-bar.colorpicker-bar-horizontal{height:126px;width:16px;margin:0 0 6px 0;float:left}.colorpicker-input-addon{position:relative}.colorpicker-input-addon i{display:inline-block;cursor:pointer;vertical-align:text-top;height:16px;width:16px;position:relative}.colorpicker-input-addon:before{content:"";position:absolute;width:16px;height:16px;display:inline-block;vertical-align:text-top;background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker.colorpicker-inline{position:relative;display:inline-block;float:none;z-index:auto;vertical-align:text-bottom}.colorpicker.colorpicker-horizontal{width:126px;height:auto}.colorpicker.colorpicker-horizontal .colorpicker-bar{width:126px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{float:none;margin-bottom:0}.colorpicker.colorpicker-horizontal .colorpicker-alpha,.colorpicker.colorpicker-horizontal .colorpicker-hue{float:none;wLine truncated
|
||||||
|
/*# sourceMappingURL=bootstrap-colorpicker.min.css.map */
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":["bootstrap-colorpicker.css","bootstrap-colorpicker.css"],"names":[],"mappings":"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","file":"bootstrap-colorpicker.min.css","sourcesContent":[".colorpicker {\n position: relative;\n display: none;\n font-size: inherit;\n color: inherit;\n text-align: left;\n list-style: none;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n padding: .75rem .75rem;\n width: 148px;\n border-radius: 4px;\n -webkit-box-sizing: content-box;\n box-sizing: content-box; }\n\n.colorpicker.colorpicker-disabled,\n.colorpicker.colorpicker-disabled * {\n cursor: default !important; }\n\n.colorpicker div {\n position: relative; }\n\n.colorpicker-popup {\n position: absolute;\n top: 100%;\n left: 0;\n float: left;\n margin-top: 1px;\n z-index: 1060; }\n\n.colorpicker-popup.colorpicker-bs-popover-content {\n position: relative;\n top: auto;\n left: auto;\n float: none;\n margin: 0;\n z-index: initial;\n border: none;\n padding: 0.25rem 0;\n border-radius: 0;\n background: none;\n -webkit-box-shadow: none;\n box-shadow: none; }\n\n.colorpicker:before,\n.colorpicker:after {\n content: \"\";\n display: table;\n clear: both;\n line-height: 0; }\n\n.colorpicker-clear {\n clear: both;\n display: block; }\n\n.colorpicker:before {\n content: '';\n display: inline-block;\n border-left: 7px solid transparent;\n border-right: 7px solid tranLine truncated
|
||||||
Vendored
+6212
File diff suppressed because it is too large.
Load diff
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap e5fc9649974c93b0b79b","webpack:///external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack:///./src/js/Extension.js","webpack:///./src/js/ColorItem.js","webpack:///./src/js/options.js","webpack:///./src/js/extensions/Palette.js","webpack:///./node_modules/color-name/index.js","webpack:///./node_modules/color-convert/conversions.js","webpack:///./src/js/plugin.js","webpack:///./src/js/Colorpicker.js","webpack:///./src/js/extensions/index.js","webpack:///./src/js/extensions/Debugger.js","webpack:///./src/js/extensions/Preview.js","webpack:///./src/js/extensions/Swatches.js","webpack:///./src/js/SliderHandler.js","webpack:///./src/js/PopupHandler.js","webpack:///./src/js/InputHandler.js","webpack:///./node_modules/color/index.js","webpack:///./node_modules/color-string/index.js","webpack:///./node_modules/simple-swizzle/index.js","webpack:///./node_modules/is-arrayish/index.js","webpack:///./node_modules/color-convert/index.js","webpack:///./node_modules/color-convert/route.js","webpack:///./src/js/ColorHandler.js","webpack:///./src/js/PickerHandler.js","webpack:///./src/js/AddonHandler.js"],"names":["Extension","colorpicker","options","element","length","Error","on","$","proxy","onCreate","onDestroy","onUpdate","onChange","onInvalid","onShow","onHide","onEnable","onDisable","color","realColor","event","off","HSVAColor","h","s","v","a","isNaN","ColorItem","fn","args","arguments","_color","result","apply","QixColor","format","_original","replace","sanitizeFormat","valid","parse","_format","isHex","model","hue","saturation","value","alpha","hasAlpha","toObject","string","round","undefined","str","isValid","isDark","isLight","formula","hues","Array","isArray","colorFormulas","hasOwnProperty","colors","mainColor","forEach","levels","saturationv","push","Math","sanitizeString","e","String","match","toLowerCase","complementary","triad","tetrad","splitcomplement","sassVars","sliderSize","bar_size_short","columns","base_margin","customClass","fallbackColor","horizontal","inline","container","popover","animation","placement","fallbackPlacement","debug","input","addon","autoInputFallback","useHashPrefix","useAlpha","template","extensions","name","showText","sliders","selector","maxLeft","maxTop","callLeft","callTop","childSelector","slidersHorz","defaults","namesAsValues","Palette","extend","Object","keys","getLength","indexOf","toUpperCase","getValue","getName","defaultValue","plugin","Colorpicker","option","fnArgs","prototype","slice","call","isSingleElement","returnValue","$elements","each","$this","inst","data","isFunction","constructor","colorPickerIdCounter","root","self","colorHandler","pickerHandler","picker","id","lastEvent","alias","addClass","attr","disabled","inputHandler","InputHandler","ColorHandler","sliderHandler","SliderHandler","popupHandler","PopupHandler","PickerHandler","addonHandler","AddonHandler","init","trigger","bind","initExtensions","attach","update","isDisabled","disable","ext","registerExtension","ExtensionClass","config","unbind","removeClass","removeData","show","hide","toggle","val","ch","hasColor","equals","createColor","assureColor","enable","eventName","type","coreExtensions","Debugger","Preview","Swatches","eventCounter","hasInput","onChangeInput","logMessage","debugger","logArgs","log","elementInner","find","append","css","html","toRgbString","barTemplate","swatchTemplate","isEnabled","load","swatchContainer","isAliased","empty","$swatch","$sw","setValue","currentSlider","mousePointer","left","top","onMove","defaultOnMove","slider","cp","getFallbackColor","getClone","guideStyle","focus","sliderClasses","sliderName","join","pressed","moved","released","pageX","pageY","originalEvent","touches","target","zone","closest","is","parent","guide","get","offset","style","preventDefault","max","min","popoverTarget","popoverTip","clicking","hidding","showing","hasAddon","createPopover","reposition","document","onClickingInside","isOrIsInside","currentTarget","isClickingInside","_defaults","content","tip","fireShow","fireHide","isVisible","stopPropagation","isPopover","isHidden","hasClass","_initValue","onkeyup","onchange","map","item","getFormattedColor","prop","inputVal","getColorString","resolveColorDelegate","isInvalidColor","fallbackOnInvalid","isAlphaEnabled","fallback","console","warn","extResolvedColor","resolveColor","hasTransparency","_supportsAlphaBar","pickerParent","appendTo","remove","vertical","saturationGuide","hueGuide","alphaGuide","hsva","toHsvaRatio","getCloneHueOnly","toHexString","hexColor","alphaBg","colorStr","styles","icn","eq"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAALine truncated
|
||||||
Vendored
+10
@@ -0,0 +1,10 @@
|
|||||||
|
/*!
|
||||||
|
* Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.
|
||||||
|
* @package bootstrap-colorpicker
|
||||||
|
* @version v3.1.2
|
||||||
|
* @license MIT
|
||||||
|
* @link https://farbelous.github.io/bootstrap-colorpicker/
|
||||||
|
* @link https://github.com/farbelous/bootstrap-colorpicker.git
|
||||||
|
*/
|
||||||
|
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define("bootstrap-colorpicker",["jquery"],t):"object"==typeof exports?exports["bootstrap-colorpicker"]=t(require("jquery")):e["bootstrap-colorpicker"]=t(e.jQuery)}("undefined"!=typeof self?self:this,function(e){return function(e){function t(r){if(o[r])return o[r].exports;var n=o[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var o={};return t.m=e,t.c=o,t.d=function(e,o,r){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,"a",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=7)}([function(t,o){t.exports=e},function(e,t,o){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),i=o(0),a=function(e){return e&&e.__esModule?e:{default:e}}(i),l=function(){function e(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(r(this,e),this.colorpicker=t,this.options=o,!this.colorpicker.element||!this.colorpicker.element.length)throw new Error("Extension: this.colorpicker.element is not valid");this.colorpicker.element.on("colorpickerCreate.colorpicker-ext",a.default.proxy(this.onCreate,this)),this.colorpicker.element.on("colorpickerDestroy.colorpicker-ext",a.default.proxy(this.onDestroy,this)),this.colorpicker.element.on("colorpickerUpdate.colorpicker-ext",a.default.proxy(this.onUpdate,this)),this.colorpicker.element.on("colorpickerChange.colorpicker-ext",a.default.proxy(this.onChange,this)),this.colorpicker.element.on("colorpickerInvalid.colorpicker-ext",a.default.proxy(this.onInvalid,this)),this.colorpicker.element.on("colorpickerShow.colorpicker-ext",a.default.proxy(this.onShow,this)),this.colorpicker.element.on("colorpickerHide.colorpicker-ext",a.default.proxy(this.onHide,this)),this.colorpicker.element.on("colorpickerEnable.colorpicker-ext",a.default.proxy(this.onEnable,this)),this.colorpicker.element.on("colorpickerDisable.colorpicker-ext",a.default.proxy(this.onDisable,this))}return n(e,[{key:"resolveColor",value:function(e){!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1}},{key:"onCreate",value:function(e){}},{key:"onDestroy",value:function(e){this.colorpicker.element.off(".colorpicker-ext")}},{key:"onUpdate",value:function(e){}},{key:"onChange",value:function(e){}},{key:"onInvalid",value:function(e){}},{key:"onHide",value:function(e){}},{key:"onShow",value:function(e){}},{key:"onDisable",value:function(e){}},{key:"onEnable",value:function(e){}}]),e}();t.default=l},function(e,t,o){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.ColorItem=t.HSVAColor=void 0;var n=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),i=o(16),a=function(e){return e&&e.__esModule?e:{default:e}}(i),l=function(){function e(t,o,n,i){r(this,e),this.h=isNaN(t)?0:t,this.s=isNaN(o)?0:o,this.v=isNaN(n)?0:n,this.a=isNaN(t)?1:i}return n(e,[{key:"toString",value:function(){return this.h+", "+this.s+"%, "+this.v+"%, "+this.a}}]),e}(),s=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;r(this,e),this.replace(t,o)}return n(e,[{key:"api",value:function(t){for(var o=arguments.length,r=Array(o>1?o-1:0),n=1;n<o;n++)r[n-1]=arguments[n];if(0===arguments.length)return this._color;var i=this._color[t].apply(this._color,r);return i instanceof a.default?new e(i,this.format):i}},{key:"original",get:function(){return this._original}}],[{key:"HSVAColor",get:function(){return l}}]),n(e,[{key:"replace",value:function(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(o=e.sanitizeFormat(o),this._original={color:t,format:o,valid:!0},this._color=e.parse(t),null===this._color)return this._color=(0,a.default)(),void(this._original.valid=!1);this._format=o||(e.isHex(t)?"hex":this._color.model)}},{key:"isValid",value:function(){return!0===this._original.valid}},{key:"setHueRatio",value:function(e){this.hue=360*(1-e)}},{key:"setSaturationRatio",value:function(e){this.saturation=100*e}},{key:"setValueRatio",value:function(e){this.value=100*(1-e)}},{key:"setAlphaRatio",value:function(e){this.alpha=1-e}},{key:"isDesaturated",value:function(){retLine truncated
|
||||||
|
//# sourceMappingURL=bootstrap-colorpicker.min.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///bootstrap-colorpicker.min.js","webpack:///webpack/bootstrap e5fc9649974c93b0b79b","webpack:///external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack:///./src/js/Extension.js","webpack:///./src/js/ColorItem.js","webpack:///./src/js/options.js","webpack:///./src/js/extensions/Palette.js","webpack:///./node_modules/color-name/index.js","webpack:///./node_modules/color-convert/conversions.js","webpack:///./src/js/plugin.js","webpack:///./src/js/Colorpicker.js","webpack:///./src/js/extensions/index.js","webpack:///./src/js/extensions/Debugger.js","webpack:///./src/js/extensions/Preview.js","webpack:///./src/js/extensions/Swatches.js","webpack:///./src/js/SliderHandler.js","webpack:///./src/js/PopupHandler.js","webpack:///./src/js/InputHandler.js","webpack:///./node_modules/color/index.js","webpack:///./node_modules/color-string/index.js","webpack:///./node_modules/simple-swizzle/index.js","webpack:///./node_modules/is-arrayish/index.js","webpack:///./node_modules/color-convert/index.js","webpack:///./node_modules/color-convert/route.js","webpack:///./src/js/ColorHandler.js","webpack:///./src/js/PickerHandler.js","webpack:///./src/js/AddonHandler.js"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE_0__","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_classCallCheck","instance","Constructor","TypeError","value","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","_jquery","_jquery2","obj","default","Extension","colorpicker","options","arguments","undefined","element","Error","on","$","proxy","onCreate","onDestroy","onUpdate","onChange","onInvalid","onShow","onHide","onEnable","onDisable","color","event","off","ColorItem","HSVAColor","_color","_color2","h","v","a","isNaN","format","replace","fn","_len","args","Array","_key","result","apply","QixColor","_original","sanitizeFormat","valid","parse","_format","isHex","model","hue","saturation","alpha","hasAlpha","toObject","string","round","str","isValid","isDark","isLight","formula","hues","isArray","colorFormulas","colors","mainColor","forEach","levels","saturationv","push","set","Math","sanitizeString","e","String","match","toLowerCase","complementary","triad","tetrad","splitcomplement","sassVars","bar_size_short","base_margin","columns","sliderSize","customClass","fallbackColor","horizontal","inline","container","popover","animation","placement","fallbackPlacement","debug","input","addon","autoInputFallback","useHashPrefix","useAlpha","template","extensions","showText","sliders","selector","maxLeft","maxTop","callLeft","callTop","childSelector","slidersHorz","_interopRequireDefault","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","constructor","setPrototypeOf","__proto__","_typeof","Symbol","iterator","_Extension2","_Extension3","defaults","namesAsValues","Palette","_Extension","_this","getPrototypeOf","extend","keys","realColor","getLength","indexOf","toUpperCase","getValue","getName","defaultValue","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slatebLine truncated
|
||||||
+2061
File diff suppressed because it is too large.
Load diff
+5
@@ -0,0 +1,5 @@
|
|||||||
|
/*! =======================================================
|
||||||
|
VERSION 10.6.2
|
||||||
|
========================================================= */
|
||||||
|
"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},windowIsDefined="object"===("undefined"==typeof window?"undefined":_typeof(window));!function(a){if("function"==typeof define&&define.amd)define(["jquery"],a);else if("object"===("undefined"==typeof module?"undefined":_typeof(module))&&module.exports){var b;try{b=require("jquery")}catch(c){b=null}module.exports=a(b)}else window&&(window.Slider=a(window.jQuery))}(function(a){var b="slider",c="bootstrapSlider";windowIsDefined&&!window.console&&(window.console={}),windowIsDefined&&!window.console.log&&(window.console.log=function(){}),windowIsDefined&&!window.console.warn&&(window.console.warn=function(){});var d;return function(a){function b(){}function c(a){function c(b){b.prototype.option||(b.prototype.option=function(b){a.isPlainObject(b)&&(this.options=a.extend(!0,this.options,b))})}function e(b,c){a.fn[b]=function(e){if("string"==typeof e){for(var g=d.call(arguments,1),h=0,i=this.length;i>h;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l&&l!==k)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}return this}var m=this.map(function(){var d=a.data(this,b);return d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d)),a(this)});return 1===m.length?m[0]:m}}if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}var d=Array.prototype.slice;c(a)}(a),function(a){function e(b,c){function d(a,b){var c="data-slider-"+b.replace(/_/g,"-"),d=a.getAttribute(c);try{return JSON.parse(d)}catch(e){return d}}this._state={value:null,enabled:null,offset:null,size:null,percentage:null,inDrag:!1,over:!1,tickIndex:null},this.ticksCallbackMap={},this.handleCallbackMap={},"string"==typeof b?this.element=document.querySelector(b):b instanceof HTMLElement&&(this.element=b),c=c?c:{};for(var e=Object.keys(this.defaultOptions),f=c.hasOwnProperty("min"),g=c.hasOwnProperty("max"),i=0;i<e.length;i++){var j=e[i],k=c[j];k="undefined"!=typeof k?k:d(this.element,j),k=null!==k?k:this.defaultOptions[j],this.options||(this.options={}),this.options[j]=k}if(this.ticksAreValid=Array.isArray(this.options.ticks)&&this.options.ticks.length>0,this.ticksAreValid||(this.options.lock_to_ticks=!1),"auto"===this.options.rtl){var l=window.getComputedStyle(this.element);null!=l?this.options.rtl="rtl"===l.direction:this.options.rtl="rtl"===this.element.style.direction}"vertical"!==this.options.orientation||"top"!==this.options.tooltip_position&&"bottom"!==this.options.tooltip_position?"horizontal"!==this.options.orientation||"left"!==this.options.tooltip_position&&"right"!==this.options.tooltip_position||(this.options.tooltip_position="top"):this.options.rtl?this.options.tooltip_position="left":this.options.tooltip_position="right";var m,n,o,p,q,r=this.element.style.width,s=!1,t=this.element.parentNode;if(this.sliderElem)s=!0;else{this.sliderElem=document.createElement("div"),this.sliderElem.className="slider";var u=document.createElement("div");u.className="slider-track",n=document.createElement("div"),n.className="slider-track-low",m=document.createElement("div"),m.className="slider-selection",o=document.createElement("div"),o.className="slider-track-high",p=document.createElement("div"),p.className="slider-handle min-slider-handle",p.setAttribute("role","slider"),p.setAttribute("aria-valuemin",this.options.min),p.setAttribute("aria-valuemax",this.options.max),q=document.createElement("div"),q.className="slider-handle max-slider-handle",q.setAttribute("role","slider"),q.setAttribute("aria-valuemin",this.options.min),q.setAttribute("aria-valuemax",this.options.max),u.appendChild(n),u.appendChild(m),u.appendChild(o),this.rangeHighlightElements=[];var v=this.options.rangeHighlights;if(Array.isArray(v)&&v.length>0)for(var w=0;w<v.length;w++){var x=document.createElement("div"),y=v[w]["class"]||"";x.className="slider-rangeHighlight slider-selection "+y,this.rangeHighlightElements.push(x),u.appendChild(x)}var z=Array.isArray(this.options.labelledby);if(z&&this.options.labelledby[0]&&p.setAttribute("aria-labelledby",this.options.labelledby[0]),z&&this.options.labelledby[1]&&q.setAttribute("aria-labelledby",this.options.labelledby[1]),!z&&this.options.labelledby&&(p.setAttribute("aria-labelledby",this.options.labelledby),q.setAttribute("aria-labelledby",this.options.labelledby)),this.ticks=[],Array.isArray(this.options.ticks)&&this.options.ticks.length>0){for(this.ticksContainer=document.createElement("div"),this.ticksContainer.className="slider-tick-container",i=0;i<this.options.ticks.length;i++){var A=document.createElement("div");if(A.className="slider-tick",this.options.ticks_tooltip){var B=this._adLine truncated
|
||||||
|
var b=this._getPercentage(a);this._adjustPercentageForRangeSliders(b),this._state.percentage[this._state.dragged]=b;var c=this._calculateValue(!0);return this.setValue(c,!0,!0),!1},_touchmove:function(a){void 0!==a.changedTouches&&a.preventDefault&&a.preventDefault()},_adjustPercentageForRangeSliders:function(a){if(this.options.range){var b=this._getNumDigitsAfterDecimalPlace(a);b=b?b-1:0;var c=this._applyToFixedAndParseFloat(a,b);0===this._state.dragged&&this._applyToFixedAndParseFloat(this._state.percentage[1],b)<c?(this._state.percentage[0]=this._state.percentage[1],this._state.dragged=1):1===this._state.dragged&&this._applyToFixedAndParseFloat(this._state.percentage[0],b)>c?(this._state.percentage[1]=this._state.percentage[0],this._state.dragged=0):0===this._state.keyCtrl&&this._toPercentage(this._state.value[1])<a?(this._state.percentage[0]=this._state.percentage[1],this._state.keyCtrl=1,this.handle2.focus()):1===this._state.keyCtrl&&this._toPercentage(this._state.value[0])>a&&(this._state.percentage[1]=this._state.percentage[0],this._state.keyCtrl=0,this.handle1.focus())}},_mouseup:function(a){if(!this._state.enabled)return!1;var b=this._getPercentage(a);this._adjustPercentageForRangeSliders(b),this._state.percentage[this._state.dragged]=b,this.touchCapable&&(document.removeEventListener("touchmove",this.mousemove,!1),document.removeEventListener("touchend",this.mouseup,!1)),document.removeEventListener("mousemove",this.mousemove,!1),document.removeEventListener("mouseup",this.mouseup,!1),this._state.inDrag=!1,this._state.over===!1&&this._hideTooltip();var c=this._calculateValue(!0);return this.setValue(c,!1,!0),this._trigger("slideStop",c),this._state.dragged=null,!1},_setValues:function(a,b){var c=0===a?0:100;this._state.percentage[a]!==c&&(b.data[a]=this._toValue(this._state.percentage[a]),b.data[a]=this._applyPrecision(b.data[a]))},_calculateValue:function(a){var b={};return this.options.range?(b.data=[this.options.min,this.options.max],this._setValues(0,b),this._setValues(1,b),a&&(b.data[0]=this._snapToClosestTick(b.data[0]),b.data[1]=this._snapToClosestTick(b.data[1]))):(b.data=this._toValue(this._state.percentage[0]),b.data=parseFloat(b.data),b.data=this._applyPrecision(b.data),a&&(b.data=this._snapToClosestTick(b.data))),b.data},_snapToClosestTick:function(a){for(var b=[a,1/0],c=0;c<this.options.ticks.length;c++){var d=Math.abs(this.options.ticks[c]-a);d<=b[1]&&(b=[this.options.ticks[c],d])}return b[1]<=this.options.ticks_snap_bounds?b[0]:a},_applyPrecision:function(a){var b=this.options.precision||this._getNumDigitsAfterDecimalPlace(this.options.step);return this._applyToFixedAndParseFloat(a,b)},_getNumDigitsAfterDecimalPlace:function(a){var b=(""+a).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return b?Math.max(0,(b[1]?b[1].length:0)-(b[2]?+b[2]:0)):0},_applyToFixedAndParseFloat:function(a,b){var c=a.toFixed(b);return parseFloat(c)},_getPercentage:function(a){!this.touchCapable||"touchstart"!==a.type&&"touchmove"!==a.type&&"touchend"!==a.type||(a=a.changedTouches[0]);var b=a[this.mousePos],c=this._state.offset[this.stylePos],d=b-c;"right"===this.stylePos&&(d=-d);var e=d/this._state.size*100;return e=Math.round(e/this._state.percentage[2])*this._state.percentage[2],this.options.reversed&&(e=100-e),Math.max(0,Math.min(100,e))},_validateInputValue:function(a){if(isNaN(+a)){if(Array.isArray(a))return this._validateArray(a),a;throw new Error(g.formatInvalidInputErrorMsg(a))}return+a},_validateArray:function(a){for(var b=0;b<a.length;b++){var c=a[b];if("number"!=typeof c)throw new Error(g.formatInvalidInputErrorMsg(c))}},_setDataVal:function(a){this.element.setAttribute("data-value",a),this.element.setAttribute("value",a),this.element.value=a},_trigger:function(b,c){c=c||0===c?c:void 0;var d=this.eventToCallbackMap[b];if(d&&d.length)for(var e=0;e<d.length;e++){var f=d[e];f(c)}a&&this._triggerJQueryEvent(b,c)},_triggerJQueryEvent:function(a,b){var c={type:a,value:b};this.$element.trigger(c),this.$sliderElem.trigger(c)},_unbindJQueryEventHandlers:function(){this.$element.off(),this.$sliderElem.off()},_setText:function(a,b){"undefined"!=typeof a.textContent?a.textContent=b:"undefined"!=typeof a.innerText&&(a.innerText=b)},_removeClass:function(a,b){for(var c=b.split(" "),d=a.className,e=0;e<c.length;e++){var f=c[e],g=new RegExp("(?:\\s|^)"+f+"(?:\\s|$)");d=d.replace(g," ")}a.className=d.trim()},_addClass:function(a,b){for(var c=b.split(" "),d=a.className,e=0;e<c.length;e++){var f=c[e],g=new RegExp("(?:\\s|^)"+f+"(?:\\s|$)"),h=g.test(d);h||(d+=" "+f)}a.className=d.trim()},_offsetLeft:function(a){return a.getBoundingClientRect().left},_offsetRight:function(a){return a.getBoundingClientRect().right},_offsetTop:function(a){for(var b=a.offsetTop;(a=a.offsetParent)&&!isNaN(a.offsetTop);)b+=a.offsetTop,"BODY"!==a.tagName&&(b-=a.scrollTop);return b},_offset:function(a){return{left:this._offsetLeft(a),right:this._offsetRight(a),top:this._offsetTop(a)}},_css:function(b,c,d){if(a)a.style(b,c,d);else{var e=c.replaLine truncated
|
||||||
+328
@@ -0,0 +1,328 @@
|
|||||||
|
/*! =======================================================
|
||||||
|
VERSION 10.6.2
|
||||||
|
========================================================= */
|
||||||
|
/*! =========================================================
|
||||||
|
* bootstrap-slider.js
|
||||||
|
*
|
||||||
|
* Maintainers:
|
||||||
|
* Kyle Kemp
|
||||||
|
* - Twitter: @seiyria
|
||||||
|
* - Github: seiyria
|
||||||
|
* Rohit Kalkur
|
||||||
|
* - Twitter: @Rovolutionary
|
||||||
|
* - Github: rovolution
|
||||||
|
*
|
||||||
|
* =========================================================
|
||||||
|
*
|
||||||
|
* bootstrap-slider is released under the MIT License
|
||||||
|
* Copyright (c) 2019 Kyle Kemp, Rohit Kalkur, and contributors
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without
|
||||||
|
* restriction, including without limitation the rights to use,
|
||||||
|
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following
|
||||||
|
* conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be
|
||||||
|
* included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
* ========================================================= */
|
||||||
|
.slider {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal {
|
||||||
|
width: 210px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal .slider-track {
|
||||||
|
height: 10px;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: -5px;
|
||||||
|
top: 50%;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal .slider-selection,
|
||||||
|
.slider.slider-horizontal .slider-track-low,
|
||||||
|
.slider.slider-horizontal .slider-track-high {
|
||||||
|
height: 100%;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal .slider-tick,
|
||||||
|
.slider.slider-horizontal .slider-handle {
|
||||||
|
margin-left: -10px;
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal .slider-tick.triangle,
|
||||||
|
.slider.slider-horizontal .slider-handle.triangle {
|
||||||
|
position: relative;
|
||||||
|
top: 50%;
|
||||||
|
-ms-transform: translateY(-50%);
|
||||||
|
transform: translateY(-50%);
|
||||||
|
border-width: 0 10px 10px 10px;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border-bottom-color: #2e6da4;
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal .slider-tick-container {
|
||||||
|
white-space: nowrap;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal .slider-tick-label-container {
|
||||||
|
white-space: nowrap;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal .slider-tick-label-container .slider-tick-label {
|
||||||
|
padding-top: 4px;
|
||||||
|
display: inline-block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal .tooltip {
|
||||||
|
-ms-transform: translateX(-50%);
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal.slider-rtl .slider-track {
|
||||||
|
left: initial;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal.slider-rtl .slider-tick,
|
||||||
|
.slider.slider-horizontal.slider-rtl .slider-handle {
|
||||||
|
margin-left: initial;
|
||||||
|
margin-right: -10px;
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal.slider-rtl .slider-tick-container {
|
||||||
|
left: initial;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
.slider.slider-horizontal.slider-rtl .tooltip {
|
||||||
|
-ms-transform: translateX(50%);
|
||||||
|
transform: translateX(50%);
|
||||||
|
}
|
||||||
|
.slider.slider-vertical {
|
||||||
|
height: 210px;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
.slider.slider-vertical .slider-track {
|
||||||
|
width: 10px;
|
||||||
|
height: 100%;
|
||||||
|
left: 25%;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.slider.slider-vertical .slider-selection {
|
||||||
|
width: 100%;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
.slider.slider-vertical .slider-track-low,
|
||||||
|
.slider.slider-vertical .slider-track-high {
|
||||||
|
width: 100%;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
.slider.slider-vertical .slider-tick,
|
||||||
|
.slider.slider-vertical .slider-handle {
|
||||||
|
margin-top: -10px;
|
||||||
|
}
|
||||||
|
.slider.slider-vertical .slider-tick.triangle,
|
||||||
|
.slider.slider-vertical .slider-handle.triangle {
|
||||||
|
border-width: 10px 0 10px 10px;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
border-left-color: #2e6da4;
|
||||||
|
border-right-color: #2e6da4;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
.slider.slider-vertical .slider-tick-label-container {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.slider.slider-vertical .slider-tick-label-container .slider-tick-label {
|
||||||
|
padding-left: 4px;
|
||||||
|
}
|
||||||
|
.slider.slider-vertical .tooltip {
|
||||||
|
-ms-transform: translateY(-50%);
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
.slider.slider-vertical.slider-rtl .slider-track {
|
||||||
|
left: initial;
|
||||||
|
right: 25%;
|
||||||
|
}
|
||||||
|
.slider.slider-vertical.slider-rtl .slider-selection {
|
||||||
|
left: initial;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
.slider.slider-vertical.slider-rtl .slider-tick.triangle,
|
||||||
|
.slider.slider-vertical.slider-rtl .slider-handle.triangle {
|
||||||
|
border-width: 10px 10px 10px 0;
|
||||||
|
}
|
||||||
|
.slider.slider-vertical.slider-rtl .slider-tick-label-container .slider-tick-label {
|
||||||
|
padding-left: initial;
|
||||||
|
padding-right: 4px;
|
||||||
|
}
|
||||||
|
.slider.slider-disabled .slider-handle {
|
||||||
|
background-image: -webkit-linear-gradient(top, #dfdfdf 0%, #bebebe 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #dfdfdf 0%, #bebebe 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #dfdfdf 0%, #bebebe 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf', endColorstr='#ffbebebe', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.slider.slider-disabled .slider-track {
|
||||||
|
background-image: -webkit-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #e5e5e5 0%, #e9e9e9 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5', endColorstr='#ffe9e9e9', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
.slider input {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.slider .tooltip {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.slider .tooltip.top {
|
||||||
|
margin-top: -36px;
|
||||||
|
}
|
||||||
|
.slider .tooltip-inner {
|
||||||
|
white-space: nowrap;
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
.slider .hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.slider-track {
|
||||||
|
position: absolute;
|
||||||
|
cursor: pointer;
|
||||||
|
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #f5f5f5 0%, #f9f9f9 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||||
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.slider-selection {
|
||||||
|
position: absolute;
|
||||||
|
background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
||||||
|
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.slider-selection.tick-slider-selection {
|
||||||
|
background-image: -webkit-linear-gradient(top, #8ac1ef 0%, #82b3de 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #8ac1ef 0%, #82b3de 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #8ac1ef 0%, #82b3de 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef', endColorstr='#ff82b3de', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.slider-track-low,
|
||||||
|
.slider-track-high {
|
||||||
|
position: absolute;
|
||||||
|
background: transparent;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.slider-handle {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
background-color: #337ab7;
|
||||||
|
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: none;
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
|
||||||
|
border: 0px solid transparent;
|
||||||
|
}
|
||||||
|
.slider-handle:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.slider-handle.round {
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
.slider-handle.triangle {
|
||||||
|
background: transparent none;
|
||||||
|
}
|
||||||
|
.slider-handle.custom {
|
||||||
|
background: transparent none;
|
||||||
|
}
|
||||||
|
.slider-handle.custom::before {
|
||||||
|
line-height: 20px;
|
||||||
|
font-size: 20px;
|
||||||
|
content: '\2605';
|
||||||
|
color: #726204;
|
||||||
|
}
|
||||||
|
.slider-tick {
|
||||||
|
position: absolute;
|
||||||
|
cursor: pointer;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
||||||
|
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
filter: none;
|
||||||
|
opacity: 0.8;
|
||||||
|
border: 0px solid transparent;
|
||||||
|
}
|
||||||
|
.slider-tick.round {
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
.slider-tick.triangle {
|
||||||
|
background: transparent none;
|
||||||
|
}
|
||||||
|
.slider-tick.custom {
|
||||||
|
background: transparent none;
|
||||||
|
}
|
||||||
|
.slider-tick.custom::before {
|
||||||
|
line-height: 20px;
|
||||||
|
font-size: 20px;
|
||||||
|
content: '\2605';
|
||||||
|
color: #726204;
|
||||||
|
}
|
||||||
|
.slider-tick.in-selection {
|
||||||
|
background-image: -webkit-linear-gradient(top, #8ac1ef 0%, #82b3de 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #8ac1ef 0%, #82b3de 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #8ac1ef 0%, #82b3de 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef', endColorstr='#ff82b3de', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
+41
@@ -0,0 +1,41 @@
|
|||||||
|
/*! =======================================================
|
||||||
|
VERSION 10.6.2
|
||||||
|
========================================================= */
|
||||||
|
/*! =========================================================
|
||||||
|
* bootstrap-slider.js
|
||||||
|
*
|
||||||
|
* Maintainers:
|
||||||
|
* Kyle Kemp
|
||||||
|
* - Twitter: @seiyria
|
||||||
|
* - Github: seiyria
|
||||||
|
* Rohit Kalkur
|
||||||
|
* - Twitter: @Rovolutionary
|
||||||
|
* - Github: rovolution
|
||||||
|
*
|
||||||
|
* =========================================================
|
||||||
|
*
|
||||||
|
* bootstrap-slider is released under the MIT License
|
||||||
|
* Copyright (c) 2019 Kyle Kemp, Rohit Kalkur, and contributors
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without
|
||||||
|
* restriction, including without limitation the rights to use,
|
||||||
|
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following
|
||||||
|
* conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be
|
||||||
|
* included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
* ========================================================= */.slider{display:inline-block;vertical-align:middle;position:relative}.slider.slider-horizontal{width:210px;height:20px}.slider.slider-horizontal .slider-track{height:10px;width:100%;margin-top:-5px;top:50%;left:0}.slider.slider-horizontal .slider-selection,.slider.slider-horizontal .slider-track-low,.slider.slider-horizontal .slider-track-high{height:100%;top:0;bottom:0}.slider.slider-horizontal .slider-tick,.slider.slider-horizontal .slider-handle{margin-left:-10px}.slider.slider-horizontal .slider-tick.triangle,.slider.slider-horizontal .slider-handle.triangle{position:relative;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%);border-width:0 10px 10px 10px;width:0;height:0;border-bottom-color:#2e6da4;margin-top:0}.slider.slider-horizontal .slider-tick-container{white-space:nowrap;position:absolute;top:0;left:0;width:100%}.slider.slider-horizontal .slider-tick-label-container{white-space:nowrap;margin-top:20px}.slider.slider-horizontal .slider-tick-label-container .slider-tick-label{padding-top:4px;display:inline-block;text-align:center}.slider.slider-horizontal .tooltip{-ms-transform:translateX(-50%);transform:translateX(-50%)}.slider.slider-horizontal.slider-rtl .slider-track{left:initial;right:0}.slider.slider-horizontal.slider-rtl .slider-tick,.slider.slider-horizontal.slider-rtl .slider-handle{margin-left:initial;margin-right:-10px}.slider.slider-horizontal.slider-rtl .slider-tick-container{left:initial;right:0}.slider.slider-horizontal.slider-rtl .tooltip{-ms-transform:translateX(50%);transform:translateX(50%)}.slider.slider-vertical{height:210px;width:20px}.slider.slider-vertical .slider-track{width:10px;height:100%;left:25%;top:0}.slider.slider-vertical .slider-selection{width:100%;left:0;top:0;bottom:0}.slider.slider-vertical .slider-track-low,.slider.slider-vertical .slider-track-high{width:100%;left:0;right:0}.slider.slider-vertical .slider-tick,.slider.slider-vertical .slider-handle{margin-top:-10px}.slider.slider-vertical .slider-tick.triangle,.slider.slider-vertical .slider-handle.triangle{border-width:10px 0 10px 10px;width:1px;height:1px;border-left-color:#2e6da4;border-right-color:#2e6da4;margin-left:0;margin-right:0}.slider.slider-vertical .slider-tick-label-container{white-space:nowrap}.slider.slider-vertical .slider-tick-label-container .slider-tick-label{padding-left:4px}.slider.slider-vertical .tooltip{-ms-transform:translateY(-50%);transform:translateY(-50%)}.slider.slider-vertical.slider-rtl .slider-track{left:initial;right:25%}.slider.slider-vertical.slider-rtl .slider-selection{left:initial;right:0}.slider.slider-vertical.slider-rtl .slider-tick.triangle,.slider.slider-vertical.slider-rtl .slider-handle.triangle{border-width:10px 10px 10px 0}.slider.slider-vertical.slider-rtl .slider-tick-label-container .slider-tick-label{padding-left:initial;padding-right:4px}.slider.slider-disabled .slider-handle{background-image:-webkit-linear-gradient(top,#dfdfdf 0,#bebebe 100%);background-image:-o-linear-gradient(top,#dfdfdf 0,#bebebe 100%);background-image:linear-gradient(to bottom,#dfdfdf 0,#bebebe 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf',endColorstr='#ffbebebe',GradientType=0);background-repeat:repeat-x}.slider.slider-disabled .slider-track{background-image:-webkit-linear-gradient(top,#e5e5e5 0,#e9e9e9 100%);background-image:-o-linear-gradient(top,#e5e5e5 0,#e9e9e9 100%);background-image:linear-gradient(to bottom,#e5e5e5 0,#e9e9e9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5',endColorstr='#ffe9e9e9',GradientType=0);background-repeat:repeat-x;cursor:not-allowed}.slider input{display:none}.slider .tooltip{pointer-events:none}.slider .tooltip.top{margin-top:-36px}.slider .tooltip-inner{white-space:nowrap;max-width:none}.slider .hide{display:none}.slider-track{position:absolute;cursor:pointer;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#f9f9f9 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#f9f9f9 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);border-radius:4px}.slider-selection{position:absolute;background-image:-webkit-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#f9f9f9 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9',endColorstr='#fff5f5f5',GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.slider-selection.tick-slider-selection{bLine truncated
|
||||||
Vendored
+510
@@ -0,0 +1,510 @@
|
|||||||
|
/**
|
||||||
|
* bootstrap-switch - Turn checkboxes and radio buttons into toggle switches.
|
||||||
|
*
|
||||||
|
* @version v3.4.0
|
||||||
|
* @homepage https://bttstrp.github.io/bootstrap-switch
|
||||||
|
* @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu)
|
||||||
|
* @license MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
.clearfix {
|
||||||
|
*zoom: 1;
|
||||||
|
}
|
||||||
|
.clearfix:before,
|
||||||
|
.clearfix:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
line-height: 0;
|
||||||
|
}
|
||||||
|
.clearfix:after {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.hide-text {
|
||||||
|
font: 0/0 a;
|
||||||
|
color: transparent;
|
||||||
|
text-shadow: none;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
.input-block-level {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 30px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.bootstrap-switch {
|
||||||
|
display: inline-block;
|
||||||
|
direction: ltr;
|
||||||
|
cursor: pointer;
|
||||||
|
-webkit-border-radius: 5px;
|
||||||
|
-moz-border-radius: 5px;
|
||||||
|
border-radius: 5px;
|
||||||
|
border: 1px solid;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
position: relative;
|
||||||
|
text-align: left;
|
||||||
|
overflow: hidden;
|
||||||
|
line-height: 8px;
|
||||||
|
z-index: 0;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
-o-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
vertical-align: middle;
|
||||||
|
-webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
||||||
|
-moz-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
||||||
|
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
||||||
|
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-container {
|
||||||
|
display: inline-block;
|
||||||
|
top: 0;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
|
-moz-transform: translate3d(0, 0, 0);
|
||||||
|
-o-transform: translate3d(0, 0, 0);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch .bootstrap-switch-label {
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block !important;
|
||||||
|
padding-top: 4px;
|
||||||
|
padding-bottom: 4px;
|
||||||
|
padding-left: 8px;
|
||||||
|
padding-right: 8px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off {
|
||||||
|
text-align: center;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary {
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
background-color: #005fcc;
|
||||||
|
background-image: -moz-linear-gradient(top, #0044cc, #08c);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0044cc), to(#08c));
|
||||||
|
background-image: -webkit-linear-gradient(top, #0044cc, #08c);
|
||||||
|
background-image: -o-linear-gradient(top, #0044cc, #08c);
|
||||||
|
background-image: linear-gradient(to bottom, #0044cc, #08c);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0044cc', endColorstr='#ff0088cc', GradientType=0);
|
||||||
|
border-color: #08c #08c #005580;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
*background-color: #08c;
|
||||||
|
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary[disabled],
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary[disabled] {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #08c;
|
||||||
|
*background-color: #0077b3;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active {
|
||||||
|
background-color: #006699 \9;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info {
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
background-color: #41a7c5;
|
||||||
|
background-image: -moz-linear-gradient(top, #2f96b4, #5bc0de);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2f96b4), to(#5bc0de));
|
||||||
|
background-image: -webkit-linear-gradient(top, #2f96b4, #5bc0de);
|
||||||
|
background-image: -o-linear-gradient(top, #2f96b4, #5bc0de);
|
||||||
|
background-image: linear-gradient(to bottom, #2f96b4, #5bc0de);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f96b4', endColorstr='#ff5bc0de', GradientType=0);
|
||||||
|
border-color: #5bc0de #5bc0de #28a1c5;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
*background-color: #5bc0de;
|
||||||
|
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info[disabled],
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info[disabled] {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #5bc0de;
|
||||||
|
*background-color: #46b8da;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.active {
|
||||||
|
background-color: #31b0d5 \9;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success {
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
background-color: #58b058;
|
||||||
|
background-image: -moz-linear-gradient(top, #51a351, #62c462);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#51a351), to(#62c462));
|
||||||
|
background-image: -webkit-linear-gradient(top, #51a351, #62c462);
|
||||||
|
background-image: -o-linear-gradient(top, #51a351, #62c462);
|
||||||
|
background-image: linear-gradient(to bottom, #51a351, #62c462);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff51a351', endColorstr='#ff62c462', GradientType=0);
|
||||||
|
border-color: #62c462 #62c462 #3b9e3b;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
*background-color: #62c462;
|
||||||
|
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success[disabled],
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success[disabled] {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #62c462;
|
||||||
|
*background-color: #4fbd4f;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.active {
|
||||||
|
background-color: #42b142 \9;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning {
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
background-color: #f9a123;
|
||||||
|
background-image: -moz-linear-gradient(top, #f89406, #fbb450);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f89406), to(#fbb450));
|
||||||
|
background-image: -webkit-linear-gradient(top, #f89406, #fbb450);
|
||||||
|
background-image: -o-linear-gradient(top, #f89406, #fbb450);
|
||||||
|
background-image: linear-gradient(to bottom, #f89406, #fbb450);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff89406', endColorstr='#fffbb450', GradientType=0);
|
||||||
|
border-color: #fbb450 #fbb450 #f89406;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
*background-color: #fbb450;
|
||||||
|
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning[disabled],
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning[disabled] {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #fbb450;
|
||||||
|
*background-color: #faa937;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.active {
|
||||||
|
background-color: #fa9f1e \9;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger {
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
background-color: #d14641;
|
||||||
|
background-image: -moz-linear-gradient(top, #bd362f, #ee5f5b);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bd362f), to(#ee5f5b));
|
||||||
|
background-image: -webkit-linear-gradient(top, #bd362f, #ee5f5b);
|
||||||
|
background-image: -o-linear-gradient(top, #bd362f, #ee5f5b);
|
||||||
|
background-image: linear-gradient(to bottom, #bd362f, #ee5f5b);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbd362f', endColorstr='#ffee5f5b', GradientType=0);
|
||||||
|
border-color: #ee5f5b #ee5f5b #e51d18;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
*background-color: #ee5f5b;
|
||||||
|
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger[disabled],
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger[disabled] {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #ee5f5b;
|
||||||
|
*background-color: #ec4844;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.active {
|
||||||
|
background-color: #e9322d \9;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {
|
||||||
|
color: #333;
|
||||||
|
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
background-image: -moz-linear-gradient(top, #e6e6e6, #fff);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#fff));
|
||||||
|
background-image: -webkit-linear-gradient(top, #e6e6e6, #fff);
|
||||||
|
background-image: -o-linear-gradient(top, #e6e6e6, #fff);
|
||||||
|
background-image: linear-gradient(to bottom, #e6e6e6, #fff);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffffffff', GradientType=0);
|
||||||
|
border-color: #fff #fff #d9d9d9;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
*background-color: #fff;
|
||||||
|
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default[disabled],
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default[disabled] {
|
||||||
|
color: #333;
|
||||||
|
background-color: #fff;
|
||||||
|
*background-color: #f2f2f2;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.active {
|
||||||
|
background-color: #e6e6e6 \9;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-label {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: -1px;
|
||||||
|
margin-bottom: -1px;
|
||||||
|
z-index: 100;
|
||||||
|
border-left: 1px solid #ccc;
|
||||||
|
border-right: 1px solid #ccc;
|
||||||
|
color: #333;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
background-image: -moz-linear-gradient(top, #fff, #e6e6e6);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#e6e6e6));
|
||||||
|
background-image: -webkit-linear-gradient(top, #fff, #e6e6e6);
|
||||||
|
background-image: -o-linear-gradient(top, #fff, #e6e6e6);
|
||||||
|
background-image: linear-gradient(to bottom, #fff, #e6e6e6);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
|
||||||
|
border-color: #e6e6e6 #e6e6e6 #bfbfbf;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
*background-color: #e6e6e6;
|
||||||
|
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-label:hover,
|
||||||
|
.bootstrap-switch .bootstrap-switch-label:focus,
|
||||||
|
.bootstrap-switch .bootstrap-switch-label:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-label.active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-label.disabled,
|
||||||
|
.bootstrap-switch .bootstrap-switch-label[disabled] {
|
||||||
|
color: #333;
|
||||||
|
background-color: #e6e6e6;
|
||||||
|
*background-color: #d9d9d9;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-label:active,
|
||||||
|
.bootstrap-switch .bootstrap-switch-label.active {
|
||||||
|
background-color: #cccccc \9;
|
||||||
|
}
|
||||||
|
.bootstrap-switch span::before {
|
||||||
|
content: "\200b";
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on {
|
||||||
|
-webkit-border-top-left-radius: 4px;
|
||||||
|
-moz-border-radius-topleft: 4px;
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
-webkit-border-bottom-left-radius: 4px;
|
||||||
|
-moz-border-radius-bottomleft: 4px;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off {
|
||||||
|
-webkit-border-top-right-radius: 4px;
|
||||||
|
-moz-border-radius-topright: 4px;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
-webkit-border-bottom-right-radius: 4px;
|
||||||
|
-moz-border-radius-bottomright: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch input[type='radio'],
|
||||||
|
.bootstrap-switch input[type='checkbox'] {
|
||||||
|
position: absolute !important;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
opacity: 0;
|
||||||
|
filter: alpha(opacity=0);
|
||||||
|
z-index: -1;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
.bootstrap-switch input[type='radio'].form-control,
|
||||||
|
.bootstrap-switch input[type='checkbox'].form-control {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-mini {
|
||||||
|
min-width: 71px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label {
|
||||||
|
padding: 3px 6px;
|
||||||
|
font-size: 10px;
|
||||||
|
line-height: 9px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-small {
|
||||||
|
min-width: 79px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label {
|
||||||
|
padding: 3px 6px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 18px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-large {
|
||||||
|
min-width: 120px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label {
|
||||||
|
padding: 9px 12px;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-disabled,
|
||||||
|
.bootstrap-switch.bootstrap-switch-readonly,
|
||||||
|
.bootstrap-switch.bootstrap-switch-indeterminate {
|
||||||
|
cursor: default !important;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,
|
||||||
|
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label,
|
||||||
|
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label {
|
||||||
|
opacity: 0.5;
|
||||||
|
filter: alpha(opacity=50);
|
||||||
|
cursor: default !important;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container {
|
||||||
|
-webkit-transition: margin-left 0.5s;
|
||||||
|
-moz-transition: margin-left 0.5s;
|
||||||
|
-o-transition: margin-left 0.5s;
|
||||||
|
transition: margin-left 0.5s;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on {
|
||||||
|
-webkit-border-top-left-radius: 0;
|
||||||
|
-moz-border-radius-topleft: 0;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
-webkit-border-bottom-left-radius: 0;
|
||||||
|
-moz-border-radius-bottomleft: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
-webkit-border-top-right-radius: 4px;
|
||||||
|
-moz-border-radius-topright: 4px;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
-webkit-border-bottom-right-radius: 4px;
|
||||||
|
-moz-border-radius-bottomright: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off {
|
||||||
|
-webkit-border-top-right-radius: 0;
|
||||||
|
-moz-border-radius-topright: 0;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
-webkit-border-bottom-right-radius: 0;
|
||||||
|
-moz-border-radius-bottomright: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
-webkit-border-top-left-radius: 4px;
|
||||||
|
-moz-border-radius-topleft: 4px;
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
-webkit-border-bottom-left-radius: 4px;
|
||||||
|
-moz-border-radius-bottomleft: 4px;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-focused {
|
||||||
|
border-color: rgba(82, 168, 236, 0.8);
|
||||||
|
outline: 0;
|
||||||
|
outline: thin dotted \9;
|
||||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82, 168, 236, .6);
|
||||||
|
-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82, 168, 236, .6);
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82, 168, 236, .6);
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label,
|
||||||
|
.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label {
|
||||||
|
-webkit-border-top-right-radius: 4px;
|
||||||
|
-moz-border-radius-topright: 4px;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
-webkit-border-bottom-right-radius: 4px;
|
||||||
|
-moz-border-radius-bottomright: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label,
|
||||||
|
.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label {
|
||||||
|
-webkit-border-top-left-radius: 4px;
|
||||||
|
-moz-border-radius-topleft: 4px;
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
-webkit-border-bottom-left-radius: 4px;
|
||||||
|
-moz-border-radius-bottomleft: 4px;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
}
|
||||||
Vendored
+10
@@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* bootstrap-switch - Turn checkboxes and radio buttons into toggle switches.
|
||||||
|
*
|
||||||
|
* @version v3.4.0
|
||||||
|
* @homepage https://bttstrp.github.io/bootstrap-switch
|
||||||
|
* @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu)
|
||||||
|
* @license MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-switch{display:inline-block;direction:ltr;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;border:1px solid;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);position:relative;text-align:left;overflow:hidden;line-height:8px;z-index:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-moz-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.bootstrap-switch .bootstrap-switch-container{display:inline-block;top:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:inline-block!important;font-size:14px;line-height:20px;padding:4px 8px}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on{text-align:center;z-index:1}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#005fcc;background-image:-moz-linear-gradient(top,#04c,#08c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#04c),to(#08c));background-image:-webkit-linear-gradient(top,#04c,#08c);background-image:-o-linear-gradient(top,#04c,#08c);background-image:linear-gradient(to bottom,#04c,#08c);background-repeat:repeat-x;border-color:#08c #08c #005580;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.disabled,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:focus,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:hover,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary[disabled],.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.disabled,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:focus,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:hover,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary[disabled]{color:#fff;background-color:#08c}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active{background-color:#069\9}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#41a7c5;background-image:-moz-linear-gradient(top,#2f96b4,#5bc0de);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2f96b4),to(#5bc0de));background-image:-webkit-linear-gradient(top,#2f96b4,#5bc0de);background-image:-o-linear-gradient(top,#2f96b4,#5bc0de);background-image:linear-gradient(to bottom,#2f96b4,#5bc0de);background-repeat:repeat-x;border-color:#5bc0de #5bc0de #28a1c5;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.disabled,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrLine truncated
|
||||||
Vendored
+187
@@ -0,0 +1,187 @@
|
|||||||
|
/**
|
||||||
|
* bootstrap-switch - Turn checkboxes and radio buttons into toggle switches.
|
||||||
|
*
|
||||||
|
* @version v3.4.0
|
||||||
|
* @homepage https://bttstrp.github.io/bootstrap-switch
|
||||||
|
* @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu)
|
||||||
|
* @license MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
.bootstrap-switch {
|
||||||
|
display: inline-block;
|
||||||
|
direction: ltr;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 1px solid;
|
||||||
|
border-color: #ccc;
|
||||||
|
position: relative;
|
||||||
|
text-align: left;
|
||||||
|
overflow: hidden;
|
||||||
|
line-height: 8px;
|
||||||
|
z-index: 0;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
vertical-align: middle;
|
||||||
|
-webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
||||||
|
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
||||||
|
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-container {
|
||||||
|
display: inline-block;
|
||||||
|
top: 0;
|
||||||
|
border-radius: 4px;
|
||||||
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch .bootstrap-switch-label {
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
cursor: pointer;
|
||||||
|
display: table-cell;
|
||||||
|
vertical-align: middle;
|
||||||
|
padding: 6px 12px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off {
|
||||||
|
text-align: center;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary {
|
||||||
|
color: #fff;
|
||||||
|
background: #337ab7;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info {
|
||||||
|
color: #fff;
|
||||||
|
background: #5bc0de;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success {
|
||||||
|
color: #fff;
|
||||||
|
background: #5cb85c;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning {
|
||||||
|
background: #f0ad4e;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger {
|
||||||
|
color: #fff;
|
||||||
|
background: #d9534f;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default,
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {
|
||||||
|
color: #000;
|
||||||
|
background: #eeeeee;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-label {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: -1px;
|
||||||
|
margin-bottom: -1px;
|
||||||
|
z-index: 100;
|
||||||
|
color: #333;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
.bootstrap-switch span::before {
|
||||||
|
content: "\200b";
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-on {
|
||||||
|
border-bottom-left-radius: 3px;
|
||||||
|
border-top-left-radius: 3px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch .bootstrap-switch-handle-off {
|
||||||
|
border-bottom-right-radius: 3px;
|
||||||
|
border-top-right-radius: 3px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch input[type='radio'],
|
||||||
|
.bootstrap-switch input[type='checkbox'] {
|
||||||
|
position: absolute !important;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: 0;
|
||||||
|
z-index: -1;
|
||||||
|
opacity: 0;
|
||||||
|
filter: alpha(opacity=0);
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label {
|
||||||
|
padding: 1px 5px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label {
|
||||||
|
padding: 5px 10px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label {
|
||||||
|
padding: 6px 16px;
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 1.3333333;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-disabled,
|
||||||
|
.bootstrap-switch.bootstrap-switch-readonly,
|
||||||
|
.bootstrap-switch.bootstrap-switch-indeterminate {
|
||||||
|
cursor: default !important;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,
|
||||||
|
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,
|
||||||
|
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,
|
||||||
|
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label,
|
||||||
|
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label {
|
||||||
|
opacity: 0.5;
|
||||||
|
filter: alpha(opacity=50);
|
||||||
|
cursor: default !important;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container {
|
||||||
|
-webkit-transition: margin-left 0.5s;
|
||||||
|
-o-transition: margin-left 0.5s;
|
||||||
|
transition: margin-left 0.5s;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on {
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 3px;
|
||||||
|
border-top-right-radius: 3px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off {
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 3px;
|
||||||
|
border-top-left-radius: 3px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-focused {
|
||||||
|
border-color: #66afe9;
|
||||||
|
outline: 0;
|
||||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label,
|
||||||
|
.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label {
|
||||||
|
border-bottom-right-radius: 3px;
|
||||||
|
border-top-right-radius: 3px;
|
||||||
|
}
|
||||||
|
.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label,
|
||||||
|
.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label {
|
||||||
|
border-bottom-left-radius: 3px;
|
||||||
|
border-top-left-radius: 3px;
|
||||||
|
}
|
||||||
Vendored
+10
@@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* bootstrap-switch - Turn checkboxes and radio buttons into toggle switches.
|
||||||
|
*
|
||||||
|
* @version v3.4.0
|
||||||
|
* @homepage https://bttstrp.github.io/bootstrap-switch
|
||||||
|
* @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu)
|
||||||
|
* @license MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
.bootstrap-switch{display:inline-block;direction:ltr;cursor:pointer;border-radius:4px;border:1px solid #ccc;position:relative;text-align:left;overflow:hidden;line-height:8px;z-index:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-switch .bootstrap-switch-container{display:inline-block;top:0;border-radius:4px;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:table-cell;vertical-align:middle;padding:6px 12px;font-size:14px;line-height:20px}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on{text-align:center;z-index:1}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary{color:#fff;background:#337ab7}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info{color:#fff;background:#5bc0de}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success{color:#fff;background:#5cb85c}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning{background:#f0ad4e;color:#fff}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger{color:#fff;background:#d9534f}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default{color:#000;background:#eee}.bootstrap-switch .bootstrap-switch-label{text-align:center;margin-top:-1px;margin-bottom:-1px;z-index:100;color:#333;background:#fff}.bootstrap-switch span::before{content:"\200b"}.bootstrap-switch .bootstrap-switch-handle-on{border-bottom-left-radius:3px;border-top-left-radius:3px}.bootstrap-switch .bootstrap-switch-handle-off{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch input[type=radio],.bootstrap-switch input[type=checkbox]{position:absolute!important;top:0;left:0;margin:0;z-index:-1;opacity:0;filter:alpha(opacity=0);visibility:hidden}.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label{padding:1px 5px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label{padding:5px 10px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label{padding:6px 16px;font-size:18px;line-height:1.3333333}.bootstrap-switch.bootstrap-switch-disabled,.bootstrap-switch.bootstrap-switch-indeterminate,.bootstrap-switch.bootstrap-switch-readonly{cursor:default!important}.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label{opacity:.5;filter:alpha(opacity=50);cursor:default!important}.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container{-webkit-transition:margin-left .5s;-o-transition:margin-left .5s;transition:margin-left .5s}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on{border-radius:0 3px 3px 0}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off{border-radius:3px 0 0 3px}.bootstrap-switch.bootstrap-switch-focused{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .boLine truncated
|
||||||
+767
@@ -0,0 +1,767 @@
|
|||||||
|
/**
|
||||||
|
* bootstrap-switch - Turn checkboxes and radio buttons into toggle switches.
|
||||||
|
*
|
||||||
|
* @version v3.4.0
|
||||||
|
* @homepage https://bttstrp.github.io/bootstrap-switch
|
||||||
|
* @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu)
|
||||||
|
* @license MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function (global, factory) {
|
||||||
|
if (typeof define === "function" && define.amd) {
|
||||||
|
define(['jquery'], factory);
|
||||||
|
} else if (typeof exports !== "undefined") {
|
||||||
|
factory(require('jquery'));
|
||||||
|
} else {
|
||||||
|
var mod = {
|
||||||
|
exports: {}
|
||||||
|
};
|
||||||
|
factory(global.jquery);
|
||||||
|
global.bootstrapSwitch = mod.exports;
|
||||||
|
}
|
||||||
|
})(this, function (_jquery) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var _jquery2 = _interopRequireDefault(_jquery);
|
||||||
|
|
||||||
|
function _interopRequireDefault(obj) {
|
||||||
|
return obj && obj.__esModule ? obj : {
|
||||||
|
default: obj
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
var _extends = Object.assign || function (target) {
|
||||||
|
for (var i = 1; i < arguments.length; i++) {
|
||||||
|
var source = arguments[i];
|
||||||
|
|
||||||
|
for (var key in source) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
||||||
|
target[key] = source[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return target;
|
||||||
|
};
|
||||||
|
|
||||||
|
function _classCallCheck(instance, Constructor) {
|
||||||
|
if (!(instance instanceof Constructor)) {
|
||||||
|
throw new TypeError("Cannot call a class as a function");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var _createClass = function () {
|
||||||
|
function defineProperties(target, props) {
|
||||||
|
for (var i = 0; i < props.length; i++) {
|
||||||
|
var descriptor = props[i];
|
||||||
|
descriptor.enumerable = descriptor.enumerable || false;
|
||||||
|
descriptor.configurable = true;
|
||||||
|
if ("value" in descriptor) descriptor.writable = true;
|
||||||
|
Object.defineProperty(target, descriptor.key, descriptor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return function (Constructor, protoProps, staticProps) {
|
||||||
|
if (protoProps) defineProperties(Constructor.prototype, protoProps);
|
||||||
|
if (staticProps) defineProperties(Constructor, staticProps);
|
||||||
|
return Constructor;
|
||||||
|
};
|
||||||
|
}();
|
||||||
|
|
||||||
|
var $ = _jquery2.default || window.jQuery || window.$;
|
||||||
|
|
||||||
|
function getClasses(options, id) {
|
||||||
|
var state = options.state,
|
||||||
|
size = options.size,
|
||||||
|
disabled = options.disabled,
|
||||||
|
readonly = options.readonly,
|
||||||
|
indeterminate = options.indeterminate,
|
||||||
|
inverse = options.inverse;
|
||||||
|
|
||||||
|
return [state ? 'on' : 'off', size, disabled ? 'disabled' : undefined, readonly ? 'readonly' : undefined, indeterminate ? 'indeterminate' : undefined, inverse ? 'inverse' : undefined, id ? 'id-' + id : undefined].filter(function (v) {
|
||||||
|
return v == null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function prvgetElementOptions() {
|
||||||
|
return {
|
||||||
|
state: this.$element.is(':checked'),
|
||||||
|
size: this.$element.data('size'),
|
||||||
|
animate: this.$element.data('animate'),
|
||||||
|
disabled: this.$element.is(':disabled'),
|
||||||
|
readonly: this.$element.is('[readonly]'),
|
||||||
|
indeterminate: this.$element.data('indeterminate'),
|
||||||
|
inverse: this.$element.data('inverse'),
|
||||||
|
radioAllOff: this.$element.data('radio-all-off'),
|
||||||
|
onColor: this.$element.data('on-color'),
|
||||||
|
offColor: this.$element.data('off-color'),
|
||||||
|
onText: this.$element.data('on-text'),
|
||||||
|
offText: this.$element.data('off-text'),
|
||||||
|
labelText: this.$element.data('label-text'),
|
||||||
|
handleWidth: this.$element.data('handle-width'),
|
||||||
|
labelWidth: this.$element.data('label-width'),
|
||||||
|
baseClass: this.$element.data('base-class'),
|
||||||
|
wrapperClass: this.$element.data('wrapper-class')
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function prvwidth() {
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
|
var $handles = this.$on.add(this.$off).add(this.$label).css('width', '');
|
||||||
|
var handleWidth = this.options.handleWidth === 'auto' ? Math.round(Math.max(this.$on.width(), this.$off.width())) : this.options.handleWidth;
|
||||||
|
$handles.width(handleWidth);
|
||||||
|
this.$label.width(function (index, width) {
|
||||||
|
if (_this.options.labelWidth !== 'auto') {
|
||||||
|
return _this.options.labelWidth;
|
||||||
|
}
|
||||||
|
if (width < handleWidth) {
|
||||||
|
return handleWidth;
|
||||||
|
}
|
||||||
|
return width;
|
||||||
|
});
|
||||||
|
this.privateHandleWidth = this.$on.outerWidth();
|
||||||
|
this.privateLabelWidth = this.$label.outerWidth();
|
||||||
|
this.$container.width(this.privateHandleWidth * 2 + this.privateLabelWidth);
|
||||||
|
return this.$wrapper.width(this.privateHandleWidth + this.privateLabelWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
function prvcontainerPosition() {
|
||||||
|
var _this2 = this;
|
||||||
|
|
||||||
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.ope;
|
||||||
|
|
||||||
|
this.$container.css('margin-left', function () {
|
||||||
|
var values = [0, '-' + _this2.privateHandleWidth + 'px'];
|
||||||
|
if (_this2.options.indeterminate) {
|
||||||
|
return '-' + _this2.privateHandleWidth / 2 + 'px';
|
||||||
|
}
|
||||||
|
if (state) {
|
||||||
|
if (_this2.options.inverse) {
|
||||||
|
return values[1];
|
||||||
|
}
|
||||||
|
return values[0];
|
||||||
|
}
|
||||||
|
if (_this2.options.inverse) {
|
||||||
|
return values[0];
|
||||||
|
}
|
||||||
|
return values[1];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function prvgetClass(name) {
|
||||||
|
return this.options.baseClass + '-' + name;
|
||||||
|
}
|
||||||
|
|
||||||
|
function prvinit() {
|
||||||
|
var _this3 = this;
|
||||||
|
|
||||||
|
var init = function init() {
|
||||||
|
_this3.setPrevOptions();
|
||||||
|
prvwidth.call(_this3);
|
||||||
|
prvcontainerPosition.call(_this3);
|
||||||
|
setTimeout(function () {
|
||||||
|
return _this3.options.animate && _this3.$wrapper.addClass(prvgetClass.call(_this3, 'animate'));
|
||||||
|
}, 50);
|
||||||
|
};
|
||||||
|
if (this.$wrapper.is(':visible')) {
|
||||||
|
init();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var initInterval = window.setInterval(function () {
|
||||||
|
return _this3.$wrapper.is(':visible') && (init() || true) && window.clearInterval(initInterval);
|
||||||
|
}, 50);
|
||||||
|
}
|
||||||
|
|
||||||
|
function prvelementHandlers() {
|
||||||
|
var _this4 = this;
|
||||||
|
|
||||||
|
return this.$element.on({
|
||||||
|
'setPreviousOptions.bootstrapSwitch': function setPreviousOptionsBootstrapSwitch() {
|
||||||
|
return _this4.setPrevOptions();
|
||||||
|
},
|
||||||
|
|
||||||
|
'previousState.bootstrapSwitch': function previousStateBootstrapSwitch() {
|
||||||
|
_this4.options = _this4.prevOptions;
|
||||||
|
if (_this4.options.indeterminate) {
|
||||||
|
_this4.$wrapper.addClass(prvgetClass.call(_this4, 'indeterminate'));
|
||||||
|
}
|
||||||
|
_this4.$element.prop('checked', _this4.options.state).trigger('change.bootstrapSwitch', true);
|
||||||
|
},
|
||||||
|
|
||||||
|
'change.bootstrapSwitch': function changeBootstrapSwitch(event, skip) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopImmediatePropagation();
|
||||||
|
var state = _this4.$element.is(':checked');
|
||||||
|
prvcontainerPosition.call(_this4, state);
|
||||||
|
if (state === _this4.options.state) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_this4.options.state = state;
|
||||||
|
_this4.$wrapper.toggleClass(prvgetClass.call(_this4, 'off')).toggleClass(prvgetClass.call(_this4, 'on'));
|
||||||
|
if (!skip) {
|
||||||
|
if (_this4.$element.is(':radio')) {
|
||||||
|
$('[name="' + _this4.$element.attr('name') + '"]').not(_this4.$element).prop('checked', false).trigger('change.bootstrapSwitch', true);
|
||||||
|
}
|
||||||
|
_this4.$element.trigger('switchChange.bootstrapSwitch', [state]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
'focus.bootstrapSwitch': function focusBootstrapSwitch(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
_this4.$wrapper.addClass(prvgetClass.call(_this4, 'focused'));
|
||||||
|
},
|
||||||
|
|
||||||
|
'blur.bootstrapSwitch': function blurBootstrapSwitch(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
_this4.$wrapper.removeClass(prvgetClass.call(_this4, 'focused'));
|
||||||
|
},
|
||||||
|
|
||||||
|
'keydown.bootstrapSwitch': function keydownBootstrapSwitch(event) {
|
||||||
|
if (!event.which || _this4.options.disabled || _this4.options.readonly) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (event.which === 37 || event.which === 39) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopImmediatePropagation();
|
||||||
|
_this4.state(event.which === 39);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function prvhandleHandlers() {
|
||||||
|
var _this5 = this;
|
||||||
|
|
||||||
|
this.$on.on('click.bootstrapSwitch', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
_this5.state(false);
|
||||||
|
return _this5.$element.trigger('focus.bootstrapSwitch');
|
||||||
|
});
|
||||||
|
return this.$off.on('click.bootstrapSwitch', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
_this5.state(true);
|
||||||
|
return _this5.$element.trigger('focus.bootstrapSwitch');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function prvlabelHandlers() {
|
||||||
|
var _this6 = this;
|
||||||
|
|
||||||
|
var dragStart = void 0;
|
||||||
|
var dragEnd = void 0;
|
||||||
|
var handlers = {
|
||||||
|
click: function click(event) {
|
||||||
|
event.stopPropagation();
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
'mousedown.bootstrapSwitch touchstart.bootstrapSwitch': function mousedownBootstrapSwitchTouchstartBootstrapSwitch(event) {
|
||||||
|
if (dragStart || _this6.options.disabled || _this6.options.readonly) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
dragStart = (event.pageX || event.originalEvent.touches[0].pageX) - parseInt(_this6.$container.css('margin-left'), 10);
|
||||||
|
if (_this6.options.animate) {
|
||||||
|
_this6.$wrapper.removeClass(prvgetClass.call(_this6, 'animate'));
|
||||||
|
}
|
||||||
|
_this6.$element.trigger('focus.bootstrapSwitch');
|
||||||
|
},
|
||||||
|
|
||||||
|
'mousemove.bootstrapSwitch touchmove.bootstrapSwitch': function mousemoveBootstrapSwitchTouchmoveBootstrapSwitch(event) {
|
||||||
|
if (dragStart == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var difference = (event.pageX || event.originalEvent.touches[0].pageX) - dragStart;
|
||||||
|
event.preventDefault();
|
||||||
|
if (difference < -_this6.privateHandleWidth || difference > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dragEnd = difference;
|
||||||
|
_this6.$container.css('margin-left', dragEnd + 'px');
|
||||||
|
},
|
||||||
|
|
||||||
|
'mouseup.bootstrapSwitch touchend.bootstrapSwitch': function mouseupBootstrapSwitchTouchendBootstrapSwitch(event) {
|
||||||
|
if (!dragStart) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
event.preventDefault();
|
||||||
|
if (_this6.options.animate) {
|
||||||
|
_this6.$wrapper.addClass(prvgetClass.call(_this6, 'animate'));
|
||||||
|
}
|
||||||
|
if (dragEnd) {
|
||||||
|
var state = dragEnd > -(_this6.privateHandleWidth / 2);
|
||||||
|
dragEnd = false;
|
||||||
|
_this6.state(_this6.options.inverse ? !state : state);
|
||||||
|
} else {
|
||||||
|
_this6.state(!_this6.options.state);
|
||||||
|
}
|
||||||
|
dragStart = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
'mouseleave.bootstrapSwitch': function mouseleaveBootstrapSwitch() {
|
||||||
|
_this6.$label.trigger('mouseup.bootstrapSwitch');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.$label.on(handlers);
|
||||||
|
}
|
||||||
|
|
||||||
|
function prvexternalLabelHandler() {
|
||||||
|
var _this7 = this;
|
||||||
|
|
||||||
|
var $externalLabel = this.$element.closest('label');
|
||||||
|
$externalLabel.on('click', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopImmediatePropagation();
|
||||||
|
if (event.target === $externalLabel[0]) {
|
||||||
|
_this7.toggleState();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function prvformHandler() {
|
||||||
|
function isBootstrapSwitch() {
|
||||||
|
return $(this).data('bootstrap-switch');
|
||||||
|
}
|
||||||
|
|
||||||
|
function performReset() {
|
||||||
|
return $(this).bootstrapSwitch('state', this.checked);
|
||||||
|
}
|
||||||
|
|
||||||
|
var $form = this.$element.closest('form');
|
||||||
|
if ($form.data('bootstrap-switch')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$form.on('reset.bootstrapSwitch', function () {
|
||||||
|
window.setTimeout(function () {
|
||||||
|
$form.find('input').filter(isBootstrapSwitch).each(performReset);
|
||||||
|
}, 1);
|
||||||
|
}).data('bootstrap-switch', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function prvgetClasses(classes) {
|
||||||
|
var _this8 = this;
|
||||||
|
|
||||||
|
if (!$.isArray(classes)) {
|
||||||
|
return [prvgetClass.call(this, classes)];
|
||||||
|
}
|
||||||
|
return classes.map(function (v) {
|
||||||
|
return prvgetClass.call(_this8, v);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var BootstrapSwitch = function () {
|
||||||
|
function BootstrapSwitch(element) {
|
||||||
|
var _this9 = this;
|
||||||
|
|
||||||
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||||
|
|
||||||
|
_classCallCheck(this, BootstrapSwitch);
|
||||||
|
|
||||||
|
this.$element = $(element);
|
||||||
|
this.options = $.extend({}, $.fn.bootstrapSwitch.defaults, prvgetElementOptions.call(this), options);
|
||||||
|
this.prevOptions = {};
|
||||||
|
this.$wrapper = $('<div>', {
|
||||||
|
class: function _class() {
|
||||||
|
return getClasses(_this9.options, _this9.$element.attr('id')).map(function (v) {
|
||||||
|
return prvgetClass.call(_this9, v);
|
||||||
|
}).concat([_this9.options.baseClass], prvgetClasses.call(_this9, _this9.options.wrapperClass)).join(' ');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$container = $('<div>', { class: prvgetClass.call(this, 'container') });
|
||||||
|
this.$on = $('<span>', {
|
||||||
|
html: this.options.onText,
|
||||||
|
class: prvgetClass.call(this, 'handle-on') + ' ' + prvgetClass.call(this, this.options.onColor)
|
||||||
|
});
|
||||||
|
this.$off = $('<span>', {
|
||||||
|
html: this.options.offText,
|
||||||
|
class: prvgetClass.call(this, 'handle-off') + ' ' + prvgetClass.call(this, this.options.offColor)
|
||||||
|
});
|
||||||
|
this.$label = $('<span>', {
|
||||||
|
html: this.options.labelText,
|
||||||
|
class: prvgetClass.call(this, 'label')
|
||||||
|
});
|
||||||
|
|
||||||
|
this.$element.on('init.bootstrapSwitch', function () {
|
||||||
|
return _this9.options.onInit(element);
|
||||||
|
});
|
||||||
|
this.$element.on('switchChange.bootstrapSwitch', function () {
|
||||||
|
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
||||||
|
args[_key] = arguments[_key];
|
||||||
|
}
|
||||||
|
|
||||||
|
var changeState = _this9.options.onSwitchChange.apply(element, args);
|
||||||
|
if (changeState === false) {
|
||||||
|
if (_this9.$element.is(':radio')) {
|
||||||
|
$('[name="' + _this9.$element.attr('name') + '"]').trigger('previousState.bootstrapSwitch', true);
|
||||||
|
} else {
|
||||||
|
_this9.$element.trigger('previousState.bootstrapSwitch', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.$container = this.$element.wrap(this.$container).parent();
|
||||||
|
this.$wrapper = this.$container.wrap(this.$wrapper).parent();
|
||||||
|
this.$element.before(this.options.inverse ? this.$off : this.$on).before(this.$label).before(this.options.inverse ? this.$on : this.$off);
|
||||||
|
|
||||||
|
if (this.options.indeterminate) {
|
||||||
|
this.$element.prop('indeterminate', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
prvinit.call(this);
|
||||||
|
prvelementHandlers.call(this);
|
||||||
|
prvhandleHandlers.call(this);
|
||||||
|
prvlabelHandlers.call(this);
|
||||||
|
prvformHandler.call(this);
|
||||||
|
prvexternalLabelHandler.call(this);
|
||||||
|
this.$element.trigger('init.bootstrapSwitch', this.options.state);
|
||||||
|
}
|
||||||
|
|
||||||
|
_createClass(BootstrapSwitch, [{
|
||||||
|
key: 'setPrevOptions',
|
||||||
|
value: function setPrevOptions() {
|
||||||
|
this.prevOptions = _extends({}, this.options);
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'state',
|
||||||
|
value: function state(value, skip) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.state;
|
||||||
|
}
|
||||||
|
if (this.options.disabled || this.options.readonly || this.options.state && !this.options.radioAllOff && this.$element.is(':radio')) {
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
if (this.$element.is(':radio')) {
|
||||||
|
$('[name="' + this.$element.attr('name') + '"]').trigger('setPreviousOptions.bootstrapSwitch');
|
||||||
|
} else {
|
||||||
|
this.$element.trigger('setPreviousOptions.bootstrapSwitch');
|
||||||
|
}
|
||||||
|
if (this.options.indeterminate) {
|
||||||
|
this.indeterminate(false);
|
||||||
|
}
|
||||||
|
this.$element.prop('checked', Boolean(value)).trigger('change.bootstrapSwitch', skip);
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'toggleState',
|
||||||
|
value: function toggleState(skip) {
|
||||||
|
if (this.options.disabled || this.options.readonly) {
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
if (this.options.indeterminate) {
|
||||||
|
this.indeterminate(false);
|
||||||
|
return this.state(true);
|
||||||
|
}
|
||||||
|
return this.$element.prop('checked', !this.options.state).trigger('change.bootstrapSwitch', skip);
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'size',
|
||||||
|
value: function size(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.size;
|
||||||
|
}
|
||||||
|
if (this.options.size != null) {
|
||||||
|
this.$wrapper.removeClass(prvgetClass.call(this, this.options.size));
|
||||||
|
}
|
||||||
|
if (value) {
|
||||||
|
this.$wrapper.addClass(prvgetClass.call(this, value));
|
||||||
|
}
|
||||||
|
prvwidth.call(this);
|
||||||
|
prvcontainerPosition.call(this);
|
||||||
|
this.options.size = value;
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'animate',
|
||||||
|
value: function animate(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.animate;
|
||||||
|
}
|
||||||
|
if (this.options.animate === Boolean(value)) {
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
return this.toggleAnimate();
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'toggleAnimate',
|
||||||
|
value: function toggleAnimate() {
|
||||||
|
this.options.animate = !this.options.animate;
|
||||||
|
this.$wrapper.toggleClass(prvgetClass.call(this, 'animate'));
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'disabled',
|
||||||
|
value: function disabled(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.disabled;
|
||||||
|
}
|
||||||
|
if (this.options.disabled === Boolean(value)) {
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
return this.toggleDisabled();
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'toggleDisabled',
|
||||||
|
value: function toggleDisabled() {
|
||||||
|
this.options.disabled = !this.options.disabled;
|
||||||
|
this.$element.prop('disabled', this.options.disabled);
|
||||||
|
this.$wrapper.toggleClass(prvgetClass.call(this, 'disabled'));
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'readonly',
|
||||||
|
value: function readonly(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.readonly;
|
||||||
|
}
|
||||||
|
if (this.options.readonly === Boolean(value)) {
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
return this.toggleReadonly();
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'toggleReadonly',
|
||||||
|
value: function toggleReadonly() {
|
||||||
|
this.options.readonly = !this.options.readonly;
|
||||||
|
this.$element.prop('readonly', this.options.readonly);
|
||||||
|
this.$wrapper.toggleClass(prvgetClass.call(this, 'readonly'));
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'indeterminate',
|
||||||
|
value: function indeterminate(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.indeterminate;
|
||||||
|
}
|
||||||
|
if (this.options.indeterminate === Boolean(value)) {
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
return this.toggleIndeterminate();
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'toggleIndeterminate',
|
||||||
|
value: function toggleIndeterminate() {
|
||||||
|
this.options.indeterminate = !this.options.indeterminate;
|
||||||
|
this.$element.prop('indeterminate', this.options.indeterminate);
|
||||||
|
this.$wrapper.toggleClass(prvgetClass.call(this, 'indeterminate'));
|
||||||
|
prvcontainerPosition.call(this);
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'inverse',
|
||||||
|
value: function inverse(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.inverse;
|
||||||
|
}
|
||||||
|
if (this.options.inverse === Boolean(value)) {
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
return this.toggleInverse();
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'toggleInverse',
|
||||||
|
value: function toggleInverse() {
|
||||||
|
this.$wrapper.toggleClass(prvgetClass.call(this, 'inverse'));
|
||||||
|
var $on = this.$on.clone(true);
|
||||||
|
var $off = this.$off.clone(true);
|
||||||
|
this.$on.replaceWith($off);
|
||||||
|
this.$off.replaceWith($on);
|
||||||
|
this.$on = $off;
|
||||||
|
this.$off = $on;
|
||||||
|
this.options.inverse = !this.options.inverse;
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'onColor',
|
||||||
|
value: function onColor(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.onColor;
|
||||||
|
}
|
||||||
|
if (this.options.onColor) {
|
||||||
|
this.$on.removeClass(prvgetClass.call(this, this.options.onColor));
|
||||||
|
}
|
||||||
|
this.$on.addClass(prvgetClass.call(this, value));
|
||||||
|
this.options.onColor = value;
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'offColor',
|
||||||
|
value: function offColor(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.offColor;
|
||||||
|
}
|
||||||
|
if (this.options.offColor) {
|
||||||
|
this.$off.removeClass(prvgetClass.call(this, this.options.offColor));
|
||||||
|
}
|
||||||
|
this.$off.addClass(prvgetClass.call(this, value));
|
||||||
|
this.options.offColor = value;
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'onText',
|
||||||
|
value: function onText(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.onText;
|
||||||
|
}
|
||||||
|
this.$on.html(value);
|
||||||
|
prvwidth.call(this);
|
||||||
|
prvcontainerPosition.call(this);
|
||||||
|
this.options.onText = value;
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'offText',
|
||||||
|
value: function offText(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.offText;
|
||||||
|
}
|
||||||
|
this.$off.html(value);
|
||||||
|
prvwidth.call(this);
|
||||||
|
prvcontainerPosition.call(this);
|
||||||
|
this.options.offText = value;
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'labelText',
|
||||||
|
value: function labelText(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.labelText;
|
||||||
|
}
|
||||||
|
this.$label.html(value);
|
||||||
|
prvwidth.call(this);
|
||||||
|
this.options.labelText = value;
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'handleWidth',
|
||||||
|
value: function handleWidth(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.handleWidth;
|
||||||
|
}
|
||||||
|
this.options.handleWidth = value;
|
||||||
|
prvwidth.call(this);
|
||||||
|
prvcontainerPosition.call(this);
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'labelWidth',
|
||||||
|
value: function labelWidth(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.labelWidth;
|
||||||
|
}
|
||||||
|
this.options.labelWidth = value;
|
||||||
|
prvwidth.call(this);
|
||||||
|
prvcontainerPosition.call(this);
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'baseClass',
|
||||||
|
value: function baseClass() {
|
||||||
|
return this.options.baseClass;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'wrapperClass',
|
||||||
|
value: function wrapperClass(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.wrapperClass;
|
||||||
|
}
|
||||||
|
var wrapperClass = value || $.fn.bootstrapSwitch.defaults.wrapperClass;
|
||||||
|
this.$wrapper.removeClass(prvgetClasses.call(this, this.options.wrapperClass).join(' '));
|
||||||
|
this.$wrapper.addClass(prvgetClasses.call(this, wrapperClass).join(' '));
|
||||||
|
this.options.wrapperClass = wrapperClass;
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'radioAllOff',
|
||||||
|
value: function radioAllOff(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.radioAllOff;
|
||||||
|
}
|
||||||
|
var val = Boolean(value);
|
||||||
|
if (this.options.radioAllOff === val) {
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
this.options.radioAllOff = val;
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'onInit',
|
||||||
|
value: function onInit(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.onInit;
|
||||||
|
}
|
||||||
|
this.options.onInit = value || $.fn.bootstrapSwitch.defaults.onInit;
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'onSwitchChange',
|
||||||
|
value: function onSwitchChange(value) {
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return this.options.onSwitchChange;
|
||||||
|
}
|
||||||
|
this.options.onSwitchChange = value || $.fn.bootstrapSwitch.defaults.onSwitchChange;
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'destroy',
|
||||||
|
value: function destroy() {
|
||||||
|
var $form = this.$element.closest('form');
|
||||||
|
if ($form.length) {
|
||||||
|
$form.off('reset.bootstrapSwitch').removeData('bootstrap-switch');
|
||||||
|
}
|
||||||
|
this.$container.children().not(this.$element).remove();
|
||||||
|
this.$element.unwrap().unwrap().off('.bootstrapSwitch').removeData('bootstrap-switch');
|
||||||
|
return this.$element;
|
||||||
|
}
|
||||||
|
}]);
|
||||||
|
|
||||||
|
return BootstrapSwitch;
|
||||||
|
}();
|
||||||
|
|
||||||
|
function bootstrapSwitch(option) {
|
||||||
|
for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
||||||
|
args[_key2 - 1] = arguments[_key2];
|
||||||
|
}
|
||||||
|
|
||||||
|
function reducer(ret, next) {
|
||||||
|
var $this = $(next);
|
||||||
|
var existingData = $this.data('bootstrap-switch');
|
||||||
|
var data = existingData || new BootstrapSwitch(next, option);
|
||||||
|
if (!existingData) {
|
||||||
|
$this.data('bootstrap-switch', data);
|
||||||
|
}
|
||||||
|
if (typeof option === 'string') {
|
||||||
|
return data[option].apply(data, args);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return Array.prototype.reduce.call(this, reducer, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
$.fn.bootstrapSwitch = bootstrapSwitch;
|
||||||
|
$.fn.bootstrapSwitch.Constructor = BootstrapSwitch;
|
||||||
|
$.fn.bootstrapSwitch.defaults = {
|
||||||
|
state: true,
|
||||||
|
size: null,
|
||||||
|
animate: true,
|
||||||
|
disabled: false,
|
||||||
|
readonly: false,
|
||||||
|
indeterminate: false,
|
||||||
|
inverse: false,
|
||||||
|
radioAllOff: false,
|
||||||
|
onColor: 'primary',
|
||||||
|
offColor: 'default',
|
||||||
|
onText: 'ON',
|
||||||
|
offText: 'OFF',
|
||||||
|
labelText: ' ',
|
||||||
|
handleWidth: 'auto',
|
||||||
|
labelWidth: 'auto',
|
||||||
|
baseClass: 'bootstrap-switch',
|
||||||
|
wrapperClass: 'wrapper',
|
||||||
|
onInit: function onInit() {},
|
||||||
|
onSwitchChange: function onSwitchChange() {}
|
||||||
|
};
|
||||||
|
});
|
||||||
Loaded 100 of 1773 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user