mirror of https://github.com/ColorlibHQ/gentelella
bump bootstrap to 3.4.1
parent
310a3d9204
commit
5e1e86bf3a
|
@ -24,7 +24,7 @@
|
|||
],
|
||||
"devDependencies": {
|
||||
"jquery": "^2.2.3",
|
||||
"bootstrap": "^3.3.7",
|
||||
"bootstrap": "^3.4.1",
|
||||
"font-awesome": "fontawesome#^4.6.1",
|
||||
"fastclick": "^1.0.6",
|
||||
"nprogress": "^0.2.0",
|
||||
|
@ -33,7 +33,7 @@
|
|||
"bootstrap-progressbar": "^0.9.0",
|
||||
"iCheck": "icheck#^1.0.2",
|
||||
"Flot": "flot#^0.8.3",
|
||||
"bootstrap-daterangepicker": "git@github.com:christianesperar/bootstrap-daterangepicker.git#master",
|
||||
"bootstrap-daterangepicker": "git@github.com:dangrossman/daterangepicker.git#master",
|
||||
"skycons": "https://github.com/darkskyapp/skycons.git",
|
||||
"jquery-sparkline": "^2.1.3",
|
||||
"morris.js": "^0.5.1",
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,3 +1,5 @@
|
|||
*.min.js
|
||||
!excanvas.min.js
|
||||
node_modules/
|
||||
debug.log
|
||||
coverage/**
|
||||
dist/
|
||||
.vscode
|
|
@ -1,3 +1,40 @@
|
|||
dist: trusty
|
||||
language: node_js
|
||||
node_js:
|
||||
- 0.8
|
||||
- '8'
|
||||
addons:
|
||||
firefox: latest
|
||||
chrome: stable
|
||||
cache:
|
||||
directories:
|
||||
- node_modules
|
||||
before_install:
|
||||
- export DISPLAY=:99.0
|
||||
- sh -e /etc/init.d/xvfb start
|
||||
- npm install -g greenkeeper-lockfile@1
|
||||
- npm config set //registry.npmjs.org/:_authToken=$NPM_TOKEN
|
||||
before_script:
|
||||
- greenkeeper-lockfile-update
|
||||
- sudo chown root /opt/google/chrome/chrome-sandbox
|
||||
- sudo chmod 4755 /opt/google/chrome/chrome-sandbox
|
||||
after_script:
|
||||
- greenkeeper-lockfile-upload
|
||||
before_deploy:
|
||||
- tar -tf $(npm pack)
|
||||
install:
|
||||
- npm install
|
||||
script:
|
||||
- npm test
|
||||
- npm run build
|
||||
- npm run coverage
|
||||
env:
|
||||
secure: mkyiKGXQ8wkx4kSi/x7kProXE76E2Ix5xP+xHAcTpMhsFJYsyFE8LR8wC7UWxg80nbww6P1mWpJkMPm2QnWW8OSuKh9pF2bluTU7VAf68JHROA55FZauO0NgLWxF1tog/RLaTXBzoqXBx5+Zlcp2jl4UdsDSIr/1TogSEC7hV3dMiqzTsiC09RnAgtGsUfzDjCGVgyz2yDBMCoi+kfzJiRz7f1dW5GxhUypuV4jjEXTt1V6XrIA0C/uD27LP+kswHadMT6HURPiWEJteKNFz6hnfXttF1XmTwW++kzahDoap607oLszz+g8ss/9F0ILyO3tffyKnoEOImJLogvLUm3slxfHvh9PYh7x8oyPHFtfs7QAJ5Q2Cr23VvwJNslkuNCphEsQJS/HQ70VuSF6MlGrhbsLGp8kEFZrXADqojkGQ/duPk3QykiXUaUxr0uPEllptOLh5TTKYarRM/IVv4kE5iC4egJXouKxwwL5LIglnyCTycEdTLv/IUfYap8ABqi20eBm+AJGk44Z72fl+G/xoPrzbtVosQfPbuLurVJHHDDExHM3bFqfUNnB9xIEwWTihSc6ycI7IhuMQlg1G1t5rRY5YyVQN/4oP4k6qNgYbJs9PrxfyMw7Z+dSg/L2SyJbc/ReNiFkvpTNDYGY/dULvx1uGM1NGdmC+z+nljfk=
|
||||
deploy:
|
||||
provider: npm
|
||||
skip_cleanup: true
|
||||
email: webapps.ops@ni.com
|
||||
api_key:
|
||||
secure: kJyDLyReYLVr01TidziatIzTk1GpTvGLQo7XLAQReDemRkN13905TaYPsrl5IMnkLfk6RaizbCscx7z1MGi3P/U+2DC10OE4pbnUVrcCZLX9RPqLmVgVWxX+pPH+Mu3Td/Ay7CYeNdo031Lufxbc+m0kGlVnMyPBwctU36ES+OI=
|
||||
on:
|
||||
tags: true
|
||||
repo: flot/flot
|
||||
|
|
|
@ -143,7 +143,7 @@ the plot, see below.
|
|||
|
||||
The rest of the options are all documented below as they are the same
|
||||
as the default options passed in via the options parameter in the plot
|
||||
commmand. When you specify them for a specific data series, they will
|
||||
command. When you specify them for a specific data series, they will
|
||||
override the default options for the plot for that data series.
|
||||
|
||||
Here's a complete example of a simple data specification:
|
||||
|
@ -531,14 +531,18 @@ calendars don't follow a simple base 10 system. For many cases, Flot
|
|||
abstracts most of this away, but it can still be a bit difficult to
|
||||
get the data into Flot. So we'll first discuss the data format.
|
||||
|
||||
The time series support in Flot is based on Javascript timestamps,
|
||||
i.e. everywhere a time value is expected or handed over, a Javascript
|
||||
timestamp number is used. This is a number, not a Date object. A
|
||||
Javascript timestamp is the number of milliseconds since January 1,
|
||||
1970 00:00:00 UTC. This is almost the same as Unix timestamps, except it's
|
||||
in milliseconds, so remember to multiply by 1000!
|
||||
The time series support in Flot is based on Epoch timestamps, i.e.,
|
||||
everywhere a time value is expected or handed over, a number is used.
|
||||
This is a number, not a Date object. Flot supports three different time
|
||||
bases in which the timestamps can be given: seconds, milliseconds and
|
||||
microseconds. The timestamp is therefore the number of microseconds,
|
||||
milliseconds or seconds since January 1, 1970 00:00:00 UTC.
|
||||
|
||||
You can see a timestamp like this
|
||||
The time base in which the timestamps are given to Flot can be selected
|
||||
by setting the "timeBase" option to "microseconds", "milliseconds"
|
||||
or "seconds" in axis options. If not set, it defaults to "seconds".
|
||||
|
||||
You can see a native Javascript timestamp (in milliseconds) like this
|
||||
|
||||
```js
|
||||
alert((new Date()).getTime())
|
||||
|
@ -645,6 +649,7 @@ this:
|
|||
```js
|
||||
xaxis: {
|
||||
mode: "time",
|
||||
timeBase: "milliseconds",
|
||||
timeformat: "%Y/%m/%d"
|
||||
}
|
||||
```
|
||||
|
@ -663,6 +668,7 @@ standard strftime specifiers are supported (plus the nonstandard %q):
|
|||
%M: minutes, zero-padded (00-59)
|
||||
%q: quarter (1-4)
|
||||
%S: seconds, zero-padded (00-59)
|
||||
%s: sub-seconds, accuracy can be denoted with a number (e.g., %3s)
|
||||
%y: year (two digits)
|
||||
%Y: year (four digits)
|
||||
%p: am/pm
|
||||
|
@ -694,6 +700,12 @@ applies if you have not set "timeformat". Use the "%I" and "%p" or
|
|||
"%P" options if you want to build your own format string with 12-hour
|
||||
times.
|
||||
|
||||
If you want to have ticks with a fixed sub-second accuracy, you can add
|
||||
a number in the subsecond specifier (e.g., "%3s" for millisecond
|
||||
accuracy) in the "timeformat" string". If the accuracy for the sub-second
|
||||
timestamps is not given, Flot will automatically determine the accuracy
|
||||
depending on the timespan of the axis and the number of ticks, to create.
|
||||
|
||||
If the Date object has a strftime property (and it is a function), it
|
||||
will be used instead of the built-in formatter. Thus you can include
|
||||
a strftime library such as http://hacks.bluesmoon.info/strftime/ for
|
||||
|
|
|
@ -1,40 +1,20 @@
|
|||
# Flot [![Build status](https://travis-ci.org/flot/flot.png)](https://travis-ci.org/flot/flot)
|
||||
# flot [![Build Status](https://travis-ci.org/flot/flot.svg?branch=master)](https://travis-ci.org/flot/flot) [![CircleCI](https://circleci.com/gh/flot/flot.svg?style=svg)](https://circleci.com/gh/flot/flot) [![Coverage Status](https://coveralls.io/repos/github/flot/flot/badge.svg?branch=master)](https://coveralls.io/github/flot/flot?branch=master) [![Greenkeeper badge](https://badges.greenkeeper.io/flot/flot.svg)](https://greenkeeper.io/)
|
||||
|
||||
## About ##
|
||||
|
||||
Flot is a Javascript plotting library for jQuery.
|
||||
Read more at the website: <http://www.flotcharts.org/>
|
||||
flot is a JavaScript plotting library for engineering and scientific
|
||||
applications derived from Flot: <http://www.flotcharts.org/>
|
||||
|
||||
Take a look at the the examples in examples/index.html; they should give a good
|
||||
impression of what Flot can do, and the source code of the examples is probably
|
||||
the fastest way to learn how to use Flot.
|
||||
impression of what flot can do, and the source code of the examples is probably
|
||||
the fastest way to learn how to use flot.
|
||||
|
||||
|
||||
## Installation ##
|
||||
|
||||
Just include the Javascript file after you've included jQuery.
|
||||
Just include the JavaScript file after you've included jQuery.
|
||||
|
||||
Generally, all browsers that support the HTML5 canvas tag are
|
||||
supported.
|
||||
|
||||
For support for Internet Explorer < 9, you can use [Excanvas]
|
||||
[excanvas], a canvas emulator; this is used in the examples bundled
|
||||
with Flot. You just include the excanvas script like this:
|
||||
|
||||
```html
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="excanvas.min.js"></script><![endif]-->
|
||||
```
|
||||
|
||||
If it's not working on your development IE 6.0, check that it has
|
||||
support for VML which Excanvas is relying on. It appears that some
|
||||
stripped down versions used for test environments on virtual machines
|
||||
lack the VML support.
|
||||
|
||||
You can also try using [Flashcanvas][flashcanvas], which uses Flash to
|
||||
do the emulation. Although Flash can be a bit slower to load than VML,
|
||||
if you've got a lot of points, the Flash version can be much faster
|
||||
overall. Flot contains some wrapper code for activating Excanvas which
|
||||
Flashcanvas is compatible with.
|
||||
Generally, all modern browsers are supported.
|
||||
|
||||
You need at least jQuery 1.2.6, but try at least 1.3.2 for interactive
|
||||
charts because of performance improvements in event handling.
|
||||
|
@ -71,8 +51,8 @@ $.plot($("#placeholder"), data, options);
|
|||
|
||||
Here, data is an array of data series and options is an object with
|
||||
settings if you want to customize the plot. Take a look at the
|
||||
examples for some ideas of what to put in or look at the
|
||||
[API reference](API.md). Here's a quick example that'll draw a line
|
||||
examples for some ideas of what to put in or look at the
|
||||
[API reference](API.md). Here's a quick example that'll draw a line
|
||||
from (0, 0) to (1, 1):
|
||||
|
||||
```js
|
||||
|
@ -82,29 +62,17 @@ $.plot($("#placeholder"), [ [[0, 0], [1, 1]] ], { yaxis: { max: 1 } });
|
|||
The plot function immediately draws the chart and then returns a plot
|
||||
object with a couple of methods.
|
||||
|
||||
## Documentation and examples
|
||||
|
||||
## What's with the name? ##
|
||||
API Documentation is available here: [API reference](docs/API.md)
|
||||
|
||||
First: it's pronounced with a short o, like "plot". Not like "flawed".
|
||||
About how the plugins work: [Plugins](docs/PLUGINS.md)
|
||||
|
||||
So "Flot" rhymes with "plot".
|
||||
High level overview on how interactions are handled internally: [Interactions](docs/interactions.md)
|
||||
|
||||
And if you look up "flot" in a Danish-to-English dictionary, some of
|
||||
the words that come up are "good-looking", "attractive", "stylish",
|
||||
"smart", "impressive", "extravagant". One of the main goals with Flot
|
||||
is pretty looks.
|
||||
Examples are included in the examples folder of this repository, but they can be tried out online as well: [Examples](https://rawgit.com/flot/flot/master/examples/index.html)
|
||||
|
||||
## CircleCI
|
||||
|
||||
## Notes about the examples ##
|
||||
|
||||
In order to have a useful, functional example of time-series plots using time
|
||||
zones, date.js from [timezone-js][timezone-js] (released under the Apache 2.0
|
||||
license) and the [Olson][olson] time zone database (released to the public
|
||||
domain) have been included in the examples directory. They are used in
|
||||
examples/axes-time-zones/index.html.
|
||||
|
||||
|
||||
[excanvas]: http://code.google.com/p/explorercanvas/
|
||||
[flashcanvas]: http://code.google.com/p/flashcanvas/
|
||||
[timezone-js]: https://github.com/mde/timezone-js
|
||||
[olson]: http://ftp.iana.org/time-zones
|
||||
[CircleCI](https://circleci.com/) is used in this repo to run [dont-break](https://www.npmjs.com/package/dont-break),
|
||||
which checks if the current version of flot breaks unit tests on specified dependent projects.
|
|
@ -4,19 +4,42 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: AJAX</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
||||
var options = {
|
||||
lines: {
|
||||
show: true
|
||||
},
|
||||
points: {
|
||||
show: true
|
||||
series: {
|
||||
lines: {
|
||||
show: true,
|
||||
lineWidth: 2
|
||||
},
|
||||
points: {
|
||||
show: true
|
||||
}
|
||||
},
|
||||
xaxis: {
|
||||
tickDecimals: 0,
|
||||
|
|
|
@ -1,87 +1,109 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Adding Annotations</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script type="text/javascript">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Adding Annotations</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
$(function() {
|
||||
|
||||
var d1 = [];
|
||||
for (var i = 0; i < 20; ++i) {
|
||||
d1.push([i, Math.sin(i)]);
|
||||
}
|
||||
var d1 = [];
|
||||
for (var i = 0; i < 20; ++i) {
|
||||
d1.push([i, Math.sin(i)]);
|
||||
}
|
||||
|
||||
var data = [{ data: d1, label: "Pressure", color: "#333" }];
|
||||
var data = [{ data: d1, label: "Pressure", color: "#333" }];
|
||||
|
||||
var markings = [
|
||||
{ color: "#f6f6f6", yaxis: { from: 1 } },
|
||||
{ color: "#f6f6f6", yaxis: { to: -1 } },
|
||||
{ color: "#000", lineWidth: 1, xaxis: { from: 2, to: 2 } },
|
||||
{ color: "#000", lineWidth: 1, xaxis: { from: 8, to: 8 } }
|
||||
];
|
||||
var markings = [
|
||||
{ color: "#f6f6f6", yaxis: { from: 1 } },
|
||||
{ color: "#f6f6f6", yaxis: { to: -1 } },
|
||||
{ color: "#000", lineWidth: 1, xaxis: { from: 2, to: 2 } },
|
||||
{ color: "#000", lineWidth: 1, xaxis: { from: 8, to: 8 } }
|
||||
];
|
||||
|
||||
var placeholder = $("#placeholder");
|
||||
var placeholder = $("#placeholder");
|
||||
|
||||
var plot = $.plot(placeholder, data, {
|
||||
bars: { show: true, barWidth: 0.5, fill: 0.9 },
|
||||
xaxis: { ticks: [], autoscaleMargin: 0.02 },
|
||||
yaxis: { min: -2, max: 2 },
|
||||
grid: { markings: markings }
|
||||
});
|
||||
var plot = $.plot(placeholder, data, {
|
||||
series: {
|
||||
bars: { show: true, barWidth: 0.5, fill: 0.9 }
|
||||
},
|
||||
xaxis: { show: false },
|
||||
yaxis: { min: -2, max: 2, autoScale: "none" },
|
||||
grid: { markings: markings }
|
||||
});
|
||||
|
||||
var o = plot.pointOffset({ x: 2, y: -1.2});
|
||||
var o = plot.pointOffset({ x: 2, y: -1.2});
|
||||
|
||||
// Append it to the placeholder that Flot already uses for positioning
|
||||
// Append it to the placeholder that Flot already uses for positioning
|
||||
|
||||
placeholder.append("<div style='position:absolute;left:" + (o.left + 4) + "px;top:" + o.top + "px;color:#666;font-size:smaller'>Warming up</div>");
|
||||
placeholder.append("<div style='position:absolute;left:" + (o.left + 4) + "px;top:" + o.top + "px;color:#666;font-size:smaller'>Warming up</div>");
|
||||
|
||||
o = plot.pointOffset({ x: 8, y: -1.2});
|
||||
placeholder.append("<div style='position:absolute;left:" + (o.left + 4) + "px;top:" + o.top + "px;color:#666;font-size:smaller'>Actual measurements</div>");
|
||||
o = plot.pointOffset({ x: 8, y: -1.2});
|
||||
placeholder.append("<div style='position:absolute;left:" + (o.left + 4) + "px;top:" + o.top + "px;color:#666;font-size:smaller'>Actual measurements</div>");
|
||||
|
||||
// Draw a little arrow on top of the last label to demonstrate canvas
|
||||
// drawing
|
||||
// Draw a little arrow on top of the last label to demonstrate canvas
|
||||
// drawing
|
||||
|
||||
var ctx = plot.getCanvas().getContext("2d");
|
||||
ctx.beginPath();
|
||||
o.left += 4;
|
||||
ctx.moveTo(o.left, o.top);
|
||||
ctx.lineTo(o.left, o.top - 10);
|
||||
ctx.lineTo(o.left + 10, o.top - 5);
|
||||
ctx.lineTo(o.left, o.top);
|
||||
ctx.fillStyle = "#000";
|
||||
ctx.fill();
|
||||
var ctx = plot.getCanvas().getContext("2d");
|
||||
ctx.beginPath();
|
||||
o.left += 4;
|
||||
ctx.moveTo(o.left, o.top);
|
||||
ctx.lineTo(o.left, o.top - 10);
|
||||
ctx.lineTo(o.left + 10, o.top - 5);
|
||||
ctx.lineTo(o.left, o.top);
|
||||
ctx.fillStyle = "#000";
|
||||
ctx.fill();
|
||||
|
||||
// Add the Flot version string to the footer
|
||||
// Add the Flot version string to the footer
|
||||
|
||||
$("#footer").prepend("Flot " + $.plot.version + " – ");
|
||||
});
|
||||
$("#footer").prepend("Flot " + $.plot.version + " – ");
|
||||
});
|
||||
|
||||
</script>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="header">
|
||||
<h2>Adding Annotations</h2>
|
||||
</div>
|
||||
<div id="header">
|
||||
<h2>Adding Annotations</h2>
|
||||
</div>
|
||||
|
||||
<div id="content">
|
||||
<div id="content">
|
||||
|
||||
<div class="demo-container">
|
||||
<div id="placeholder" class="demo-placeholder"></div>
|
||||
</div>
|
||||
<div class="demo-container">
|
||||
<div id="placeholder" class="demo-placeholder"></div>
|
||||
</div>
|
||||
|
||||
<p>Flot has support for simple background decorations such as lines and rectangles. They can be useful for marking up certain areas. You can easily add any HTML you need with standard DOM manipulation, e.g. for labels. For drawing custom shapes there is also direct access to the canvas.</p>
|
||||
<p>Flot has support for simple background decorations such as lines and rectangles. They can be useful for marking up certain areas. You can easily add any HTML you need with standard DOM manipulation, e.g. for labels. For drawing custom shapes there is also direct access to the canvas.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
Copyright © 2007 - 2014 IOLA and Ole Laursen
|
||||
</div>
|
||||
<div id="footer">
|
||||
Copyright © 2007 - 2014 IOLA and Ole Laursen
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -4,39 +4,62 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Interacting with axes</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
||||
function generate(start, end, fn) {
|
||||
var res = [];
|
||||
for (var i = 0; i <= 100; ++i) {
|
||||
var x = start + i / 100 * (end - start);
|
||||
for (var i = 0; i <= 40; ++i) {
|
||||
var x = start + i / 40 * (end - start);
|
||||
res.push([x, fn(x)]);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
var data = [
|
||||
{ data: generate(0, 10, function (x) { return Math.sqrt(x);}), xaxis: 1, yaxis:1 },
|
||||
{ data: generate(0, 10, function (x) { return Math.sin(x);}), xaxis: 1, yaxis:2 },
|
||||
{ data: generate(0, 10, function (x) { return Math.cos(x);}), xaxis: 1, yaxis:3 },
|
||||
{ data: generate(2, 10, function (x) { return Math.tan(x);}), xaxis: 2, yaxis: 4 }
|
||||
{ data: generate(0, 10, function (x) { return Math.sqrt(x);}), xaxis: 1, yaxis:1, lines: { show: true, fill: true }},
|
||||
{ data: generate(0, 10, function (x) { return Math.sin(x);}), xaxis: 1, yaxis:2, points: { show: true }},
|
||||
{ data: generate(0, 10, function (x) { return (x < 3 || x > 5) ? Math.cos(x) : null;}), xaxis: 1, yaxis:3 },
|
||||
{ data: generate(2, 10, function (x) { return Math.tan(x);}), xaxis: 2, yaxis: 4, lines: { show: true, steps: true }},
|
||||
{ data: generate(5, 15, function (x) { return 30 * Math.sin(x/2+3);}), xaxis: 3, yaxis: 5, bars: {show: true, fill: true, barWidth:0.1, align: "center"}}
|
||||
];
|
||||
|
||||
var plot = $.plot("#placeholder", data, {
|
||||
xaxes: [
|
||||
{ position: 'bottom' },
|
||||
{ position: 'bottom'},
|
||||
{ position: 'top'}
|
||||
],
|
||||
yaxes: [
|
||||
{ position: 'left' },
|
||||
{ position: 'left' },
|
||||
{ position: 'right' },
|
||||
{ position: 'left' }
|
||||
{ position: 'left' },
|
||||
{ position: 'right' }
|
||||
]
|
||||
});
|
||||
|
||||
|
|
|
@ -4,10 +4,31 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Multiple Axes</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../lib/globalize.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../lib/globalize.culture.en-US.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -25,7 +46,10 @@
|
|||
{ data: oilprices, label: "Oil price ($)" },
|
||||
{ data: exchangerates, label: "USD/EUR exchange rate", yaxis: 2 }
|
||||
], {
|
||||
xaxes: [ { mode: "time" } ],
|
||||
series: {
|
||||
lines: {lineWidth: 2}
|
||||
},
|
||||
xaxes: [ { mode: "time", timeBase: "milliseconds" } ],
|
||||
yaxes: [ { min: 0 }, {
|
||||
// align if we are to the right
|
||||
alignTicksWithAxis: position == "right" ? 1 : null,
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable */
|
||||
// -----
|
||||
// The `timezoneJS.Date` object gives you full-blown timezone support, independent from the timezone set on the end-user's machine running the browser. It uses the Olson zoneinfo files for its timezone data.
|
||||
//
|
||||
|
|
|
@ -4,10 +4,30 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Time zones</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../lib/globalize.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="date.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
|
@ -56,21 +76,24 @@
|
|||
|
||||
var plot = $.plot("#placeholderUTC", [d], {
|
||||
xaxis: {
|
||||
mode: "time"
|
||||
mode: "time",
|
||||
timeBase: "milliseconds"
|
||||
}
|
||||
});
|
||||
|
||||
var plot = $.plot("#placeholderLocal", [d], {
|
||||
xaxis: {
|
||||
mode: "time",
|
||||
timezone: "browser"
|
||||
timezone: "browser",
|
||||
timeBase: "milliseconds"
|
||||
}
|
||||
});
|
||||
|
||||
var plot = $.plot("#placeholderChicago", [d], {
|
||||
xaxis: {
|
||||
mode: "time",
|
||||
timezone: "America/Chicago"
|
||||
timezone: "America/Chicago",
|
||||
timeBase: "milliseconds"
|
||||
}
|
||||
});
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -4,9 +4,29 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Basic Options</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function () {
|
||||
|
@ -36,12 +56,14 @@
|
|||
points: { show: true }
|
||||
},
|
||||
xaxis: {
|
||||
autoScale: "exact",
|
||||
ticks: [
|
||||
0, [ Math.PI/2, "\u03c0/2" ], [ Math.PI, "\u03c0" ],
|
||||
[ Math.PI * 3/2, "3\u03c0/2" ], [ Math.PI * 2, "2\u03c0" ]
|
||||
]
|
||||
},
|
||||
yaxis: {
|
||||
autoScale: "none",
|
||||
ticks: 10,
|
||||
min: -2,
|
||||
max: 2,
|
||||
|
|
|
@ -4,9 +4,29 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Basic Usage</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
|
|
@ -4,10 +4,30 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Categories</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.categories.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.categories.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -24,7 +44,8 @@
|
|||
},
|
||||
xaxis: {
|
||||
mode: "categories",
|
||||
tickLength: 0
|
||||
showTicks: false,
|
||||
gridLines: false
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -57,8 +78,3 @@
|
|||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
body {
|
||||
background: url(background.png) repeat-x;
|
||||
font: 18px/1.5em "proxima-nova", Helvetica, Arial, sans-serif;
|
||||
font: 18px "proxima-nova", Helvetica, Arial, sans-serif;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
a { color: #069; }
|
||||
|
@ -83,15 +84,63 @@ input[type=checkbox] {
|
|||
-ms-box-shadow: 0 3px 10px rgba(0,0,0,0.1);
|
||||
-moz-box-shadow: 0 3px 10px rgba(0,0,0,0.1);
|
||||
-webkit-box-shadow: 0 3px 10px rgba(0,0,0,0.1);
|
||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.demo-placeholder {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-size: 14px;
|
||||
line-height: 1.2em;
|
||||
}
|
||||
|
||||
.legend table {
|
||||
border-spacing: 5px;
|
||||
}
|
||||
fieldset {
|
||||
display: block;
|
||||
-webkit-margin-start: 2px;
|
||||
-webkit-margin-end: 2px;
|
||||
-webkit-padding-before: 0.35em;
|
||||
-webkit-padding-start: 0.75em;
|
||||
-webkit-padding-end: 0.75em;
|
||||
-webkit-padding-after: 0.625em;
|
||||
min-width: -webkit-min-content;
|
||||
border-width: 2px;
|
||||
border-style: groove;
|
||||
border-color: threedface;
|
||||
border-image: initial;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.legend {
|
||||
display: block;
|
||||
-webkit-padding-start: 2px;
|
||||
-webkit-padding-end: 2px;
|
||||
border-width: initial;
|
||||
border-style: none;
|
||||
border-color: initial;
|
||||
border-image: initial;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.legendLayer .background {
|
||||
fill: rgba(255, 255, 255, 0.85);
|
||||
stroke: rgba(0, 0, 0, 0.85);
|
||||
stroke-width: 1;
|
||||
}
|
||||
|
||||
input[type="radio"] {
|
||||
margin-top: -1px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.tickLabel {
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
|
|
@ -4,10 +4,30 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Image Plots</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.image.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.image.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -21,12 +41,14 @@
|
|||
}
|
||||
},
|
||||
xaxis: {
|
||||
autoScale: "none",
|
||||
min: -8,
|
||||
max: 4
|
||||
max: 8
|
||||
},
|
||||
yaxis: {
|
||||
autoScale: "none",
|
||||
min: -8,
|
||||
max: 4
|
||||
max: 8
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -1,80 +1,119 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples</title>
|
||||
<link href="examples.css" rel="stylesheet" type="text/css">
|
||||
<style>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples</title>
|
||||
<link href="examples.css" rel="stylesheet" type="text/css">
|
||||
<style>
|
||||
|
||||
h3 {
|
||||
margin-top: 30px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
h3 {
|
||||
margin-top: 30px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
</style>
|
||||
<script language="javascript" type="text/javascript" src="../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../jquery.flot.js"></script>
|
||||
<script type="text/javascript">
|
||||
</style>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
$(function() {
|
||||
|
||||
// Add the Flot version string to the footer
|
||||
// Add the Flot version string to the footer
|
||||
|
||||
$("#footer").prepend("Flot " + $.plot.version + " – ");
|
||||
});
|
||||
$("#footer").prepend("Flot " + $.plot.version + " – ");
|
||||
});
|
||||
|
||||
</script>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="header">
|
||||
<h2>Flot Examples</h2>
|
||||
</div>
|
||||
<div id="header">
|
||||
<h2>Flot Examples</h2>
|
||||
</div>
|
||||
|
||||
<div id="content">
|
||||
<div id="content">
|
||||
|
||||
<p>Here are some examples for <a href="http://www.flotcharts.org">Flot</a>, the Javascript charting library for jQuery:</p>
|
||||
<p>Here are some examples for <a href="http://www.flotcharts.org">Flot</a>, the Javascript charting library for jQuery:</p>
|
||||
|
||||
<h3>Basic Usage</h3>
|
||||
<h3>Basic Usage</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="basic-usage/index.html">Basic example</a></li>
|
||||
<li><a href="series-types/index.html">Different graph types</a> and <a href="categories/index.html">simple categories/textual data</a></li>
|
||||
<li><a href="basic-options/index.html">Setting various options</a> and <a href="annotating/index.html">annotating a chart</a></li>
|
||||
<li><a href="ajax/index.html">Updating graphs with AJAX</a> and <a href="realtime/index.html">real-time updates</a></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="basic-usage/index.html">Basic example</a></li>
|
||||
<li><a href="series-types/index.html">Different graph types</a> and <a href="categories/index.html">simple categories/textual data</a></li>
|
||||
<li><a href="basic-options/index.html">Setting various options</a> and <a href="annotating/index.html">annotating a chart</a></li>
|
||||
<li><a href="ajax/index.html">Updating graphs with AJAX</a> and <a href="realtime/index.html">real-time updates</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>Interactivity</h3>
|
||||
<h3>Interactivity</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="series-toggle/index.html">Turning series on/off</a></li>
|
||||
<li><a href="selection/index.html">Rectangular selection support and zooming</a> and <a href="zooming/index.html">zooming with overview</a> (both with selection plugin)</li>
|
||||
<li><a href="interacting/index.html">Interacting with the data points</a></li>
|
||||
<li><a href="navigate/index.html">Panning and zooming</a> (with navigation plugin)</li>
|
||||
<li><a href="resize/index.html">Automatically redraw when window is resized</a> (with resize plugin)</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="series-toggle/index.html">Turning series on/off</a></li>
|
||||
<li><a href="selection/index.html">Rectangular selection support and zooming</a> and <a href="zooming/index.html">zooming with overview</a> (both with selection plugin)</li>
|
||||
<li><a href="interacting/index.html">Interacting with the data points</a></li>
|
||||
<li><a href="navigate/index.html">Panning and zooming</a> (with navigation plugin)</li>
|
||||
<li><a href="navigateTouch/index.html">Panning and zooming simple and log-axis charts with Touch</a> (with touchNavigation plugin)</li>
|
||||
<li><a href="resize/index.html">Automatically redraw when window is resized</a> (with resize plugin)</li>
|
||||
</ul>
|
||||
|
||||
<h3>Additional Features</h3>
|
||||
<h3>Axes</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="symbols/index.html">Using other symbols than circles for points</a> (with symbol plugin)</li>
|
||||
<li><a href="axes-time/index.html">Plotting time series</a>, <a href="visitors/index.html">visitors per day with zooming and weekends</a> (with selection plugin) and <a href="axes-time-zones/index.html">time zone support</a></li>
|
||||
<li><a href="axes-multiple/index.html">Multiple axes</a> and <a href="axes-interacting/index.html">interacting with the axes</a></li>
|
||||
<li><a href="threshold/index.html">Thresholding the data</a> (with threshold plugin)</li>
|
||||
<li><a href="stacking/index.html">Stacked charts</a> (with stacking plugin)</li>
|
||||
<li><a href="percentiles/index.html">Using filled areas to plot percentiles</a> (with fillbetween plugin)</li>
|
||||
<li><a href="tracking/index.html">Tracking curves with crosshair</a> (with crosshair plugin)</li>
|
||||
<li><a href="image/index.html">Plotting prerendered images</a> (with image plugin)</li>
|
||||
<li><a href="series-errorbars/index.html">Plotting error bars</a> (with errorbars plugin)</li>
|
||||
<li><a href="series-pie/index.html">Pie charts</a> (with pie plugin)</li>
|
||||
<li><a href="canvas/index.html">Rendering text with canvas instead of HTML</a> (with canvas plugin)</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="axes-time/index.html">Plotting time series</a>, <a href="visitors/index.html">visitors per day with zooming and weekends</a> (with selection plugin)</li>
|
||||
<li><a href="axes-time-zones/index.html">Time zone support</a></li>
|
||||
<li><a href="log-scale/index.html">Log scales</a></li>
|
||||
<li><a href="axes-multiple/index.html">Multiple axes</a></li>
|
||||
<li><a href="axes-interacting/index.html">Interacting with the axes</a></li>
|
||||
<li><a href="axes-autoscaling/index.html">Autoscaling options</a></li>
|
||||
<li><a href="axes-tickLabels/index.html">Tick labels options</a></li>
|
||||
<li><a href="axes-labels/index.html">Axis labels</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<h3>Additional Features</h3>
|
||||
|
||||
<div id="footer">
|
||||
Copyright © 2007 - 2013 IOLA and Ole Laursen
|
||||
</div>
|
||||
<ul>
|
||||
<li><a href="symbols/index.html">Using other symbols than circles for points</a> (with symbol plugin)</li>
|
||||
<li><a href="threshold/index.html">Thresholding the data</a> (with threshold plugin)</li>
|
||||
<li><a href="stacking/index.html">Stacked charts</a> (with stacking plugin)</li>
|
||||
<li><a href="percentiles/index.html">Using filled areas to plot percentiles</a> (with fillbetween plugin)</li>
|
||||
<li><a href="tracking/index.html">Tracking curves with crosshair</a> (with crosshair plugin)</li>
|
||||
<li><a href="image/index.html">Plotting prerendered images</a> (with image plugin)</li>
|
||||
<li><a href="series-errorbars/index.html">Plotting error bars</a> (with errorbars plugin)</li>
|
||||
<li><a href="plot-legend/index.html">Plot Legend</a> </li>
|
||||
<li><a href="series-pie/index.html">Pie charts</a> (with pie plugin)</li>
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
<p><i>
|
||||
Note that these examples use the non-minified source, so they will not work on older browsers such as Internet Explorer.
|
||||
Use the built source (which comes installed with the NPM package) if you need broader support.
|
||||
</i></p>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
Copyright © 2007 - 2013 IOLA and Ole Laursen
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -4,9 +4,31 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Interactivity</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../lib/jquery.event.drag.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../lib/jquery.mousewheel.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -38,6 +60,13 @@
|
|||
yaxis: {
|
||||
min: -1.2,
|
||||
max: 1.2
|
||||
},
|
||||
zoom: {
|
||||
interactive: true
|
||||
},
|
||||
pan: {
|
||||
interactive: true,
|
||||
enableTouch: true
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -71,6 +100,10 @@
|
|||
}
|
||||
});
|
||||
|
||||
$("#placeholder").bind("plothovercleanup", function (event, pos, item) {
|
||||
$("#tooltip").hide();
|
||||
});
|
||||
|
||||
$("#placeholder").bind("plotclick", function (event, pos, item) {
|
||||
if (item) {
|
||||
$("#clickdata").text(" - click point " + item.dataIndex + " in " + item.series.label);
|
||||
|
|
|
@ -22,11 +22,32 @@
|
|||
font-size: smaller;
|
||||
}
|
||||
|
||||
</style>
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.navigate.js"></script>
|
||||
</style>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../lib/jquery.event.drag.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../lib/jquery.mousewheel.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -52,17 +73,20 @@
|
|||
var plot = $.plot(placeholder, data, {
|
||||
series: {
|
||||
lines: {
|
||||
show: true
|
||||
},
|
||||
show: true
|
||||
},
|
||||
shadowSize: 0
|
||||
},
|
||||
xaxis: {
|
||||
zoomRange: [0.1, 10],
|
||||
panRange: [-10, 10]
|
||||
panRange: [-10, 10],
|
||||
gridLines: true
|
||||
},
|
||||
yaxis: {
|
||||
zoomRange: [0.1, 10],
|
||||
panRange: [-10, 10]
|
||||
panRange: [-10, 10],
|
||||
gridLines: true,
|
||||
autoScale: 'exact'
|
||||
},
|
||||
zoom: {
|
||||
interactive: true
|
||||
|
@ -72,7 +96,7 @@
|
|||
}
|
||||
});
|
||||
|
||||
// show pan/zoom messages to illustrate events
|
||||
// show pan/zoom messages to illustrate events
|
||||
|
||||
placeholder.bind("plotpan", function (event, plot) {
|
||||
var axes = plot.getAxes();
|
||||
|
@ -90,7 +114,7 @@
|
|||
+ " – " + axes.yaxis.max.toFixed(2));
|
||||
});
|
||||
|
||||
// add zoom out button
|
||||
// add zoom out button
|
||||
|
||||
$("<div class='button' style='right:20px;top:20px'>zoom out</div>")
|
||||
.appendTo(placeholder)
|
||||
|
|
|
@ -4,10 +4,30 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Percentiles</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
|
|
@ -3,10 +3,30 @@
|
|||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Real-time updates</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -66,7 +86,7 @@
|
|||
|
||||
var plot = $.plot("#placeholder", [ getRandomData() ], {
|
||||
series: {
|
||||
shadowSize: 0 // Drawing is faster without shadows
|
||||
shadowSize: 0 // Drawing is faster without shadows
|
||||
},
|
||||
yaxis: {
|
||||
min: 0,
|
||||
|
|
|
@ -5,11 +5,32 @@
|
|||
<title>Flot Examples: Resizing</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<link href="../shared/jquery-ui/jquery-ui.min.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../shared/jquery-ui/jquery-ui.min.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.resize.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../shared/jquery-ui/jquery-ui.min.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.resize.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -23,7 +44,7 @@
|
|||
var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]];
|
||||
|
||||
var placeholder = $("#placeholder");
|
||||
var plot = $.plot(placeholder, [d1, d2, d3]);
|
||||
var plot = $.plot(placeholder, [d1, d2, d3]);
|
||||
|
||||
// The plugin includes a jQuery plugin for adding resize events to any
|
||||
// element. Add a callback so we can display the placeholder size.
|
||||
|
|
|
@ -4,10 +4,29 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Selection</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -25,7 +44,7 @@
|
|||
label: "United States",
|
||||
data: [[1990, 18.9], [1991, 18.7], [1992, 18.4], [1993, 19.3], [1994, 19.5], [1995, 19.3], [1996, 19.4], [1997, 20.2], [1998, 19.8], [1999, 19.9], [2000, 20.4], [2001, 20.1], [2002, 20.0], [2003, 19.8], [2004, 20.4]]
|
||||
}, {
|
||||
label: "Russia",
|
||||
label: "Russia",
|
||||
data: [[1992, 13.4], [1993, 12.2], [1994, 10.6], [1995, 10.2], [1996, 10.1], [1997, 9.7], [1998, 9.5], [1999, 9.7], [2000, 9.9], [2001, 9.9], [2002, 9.9], [2003, 10.3], [2004, 10.5]]
|
||||
}, {
|
||||
label: "United Kingdom",
|
||||
|
@ -57,9 +76,12 @@
|
|||
noColumns: 2
|
||||
},
|
||||
xaxis: {
|
||||
autoScale: "exact",
|
||||
tickDecimals: 0
|
||||
},
|
||||
yaxis: {
|
||||
autoScale: "loose",
|
||||
autoScaleMargin: 0.2,
|
||||
min: 0
|
||||
},
|
||||
selection: {
|
||||
|
|
|
@ -5,10 +5,30 @@
|
|||
<title>Flot Examples: Error Bars</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../lib/jquery.mousewheel.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -41,9 +61,9 @@
|
|||
var data1_points = {
|
||||
show: true,
|
||||
radius: 5,
|
||||
fillColor: "blue",
|
||||
errorbars: "xy",
|
||||
xerr: {show: true, asymmetric: true, upperCap: "-", lowerCap: "-"},
|
||||
fillColor: "blue",
|
||||
errorbars: "xy",
|
||||
xerr: {show: true, asymmetric: true, upperCap: "-", lowerCap: "-"},
|
||||
yerr: {show: true, color: "red", upperCap: "-"}
|
||||
};
|
||||
|
||||
|
@ -56,7 +76,7 @@
|
|||
var data2_points = {
|
||||
show: true,
|
||||
radius: 5,
|
||||
errorbars: "y",
|
||||
errorbars: "y",
|
||||
yerr: {show:true, asymmetric:true, upperCap: drawArrow, lowerCap: drawSemiCircle}
|
||||
};
|
||||
|
||||
|
@ -69,7 +89,7 @@
|
|||
var data3_points = {
|
||||
//do not show points
|
||||
radius: 0,
|
||||
errorbars: "y",
|
||||
errorbars: "y",
|
||||
yerr: {show:true, upperCap: "-", lowerCap: "-", radius: 5}
|
||||
};
|
||||
|
||||
|
@ -85,7 +105,7 @@
|
|||
}
|
||||
|
||||
var data = [
|
||||
{color: "blue", points: data1_points, data: data1, label: "data1"},
|
||||
{color: "blue", points: data1_points, data: data1, label: "data1"},
|
||||
{color: "red", points: data2_points, data: data2, label: "data2"},
|
||||
{color: "green", lines: {show: true}, points: data3_points, data: data3, label: "data3"},
|
||||
// bars with errors
|
||||
|
@ -104,10 +124,12 @@
|
|||
}
|
||||
},
|
||||
xaxis: {
|
||||
autoScale: 'none',
|
||||
min: 0.6,
|
||||
max: 3.1
|
||||
},
|
||||
yaxis: {
|
||||
autoScale: 'none',
|
||||
min: 0,
|
||||
max: 3.5
|
||||
},
|
||||
|
|
|
@ -75,10 +75,30 @@
|
|||
}
|
||||
|
||||
</style>
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.pie.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.pie.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -131,7 +151,7 @@
|
|||
|
||||
$.plot(placeholder, data, {
|
||||
series: {
|
||||
pie: {
|
||||
pie: {
|
||||
show: true
|
||||
}
|
||||
}
|
||||
|
@ -157,7 +177,7 @@
|
|||
|
||||
$.plot(placeholder, data, {
|
||||
series: {
|
||||
pie: {
|
||||
pie: {
|
||||
show: true
|
||||
}
|
||||
},
|
||||
|
@ -189,7 +209,7 @@
|
|||
|
||||
$.plot(placeholder, data, {
|
||||
series: {
|
||||
pie: {
|
||||
pie: {
|
||||
show: true,
|
||||
radius: 1,
|
||||
label: {
|
||||
|
@ -239,7 +259,7 @@
|
|||
|
||||
$.plot(placeholder, data, {
|
||||
series: {
|
||||
pie: {
|
||||
pie: {
|
||||
show: true,
|
||||
radius: 1,
|
||||
label: {
|
||||
|
@ -289,14 +309,14 @@
|
|||
|
||||
$.plot(placeholder, data, {
|
||||
series: {
|
||||
pie: {
|
||||
pie: {
|
||||
show: true,
|
||||
radius: 1,
|
||||
label: {
|
||||
show: true,
|
||||
radius: 3/4,
|
||||
formatter: labelFormatter,
|
||||
background: {
|
||||
background: {
|
||||
opacity: 0.5,
|
||||
color: "#000"
|
||||
}
|
||||
|
@ -341,14 +361,14 @@
|
|||
|
||||
$.plot(placeholder, data, {
|
||||
series: {
|
||||
pie: {
|
||||
pie: {
|
||||
show: true,
|
||||
radius: 3/4,
|
||||
label: {
|
||||
show: true,
|
||||
radius: 3/4,
|
||||
formatter: labelFormatter,
|
||||
background: {
|
||||
background: {
|
||||
opacity: 0.5,
|
||||
color: "#000"
|
||||
}
|
||||
|
@ -393,7 +413,7 @@
|
|||
|
||||
$.plot(placeholder, data, {
|
||||
series: {
|
||||
pie: {
|
||||
pie: {
|
||||
show: true,
|
||||
radius: 1,
|
||||
label: {
|
||||
|
@ -439,7 +459,7 @@
|
|||
|
||||
$.plot(placeholder, data, {
|
||||
series: {
|
||||
pie: {
|
||||
pie: {
|
||||
show: true,
|
||||
combine: {
|
||||
color: "#999",
|
||||
|
@ -479,7 +499,7 @@
|
|||
|
||||
$.plot(placeholder, data, {
|
||||
series: {
|
||||
pie: {
|
||||
pie: {
|
||||
show: true,
|
||||
radius: 500,
|
||||
label: {
|
||||
|
@ -523,7 +543,7 @@
|
|||
|
||||
$.plot(placeholder, data, {
|
||||
series: {
|
||||
pie: {
|
||||
pie: {
|
||||
show: true,
|
||||
radius: 1,
|
||||
tilt: 0.5,
|
||||
|
@ -583,7 +603,7 @@
|
|||
|
||||
$.plot(placeholder, data, {
|
||||
series: {
|
||||
pie: {
|
||||
pie: {
|
||||
innerRadius: 0.5,
|
||||
show: true
|
||||
}
|
||||
|
@ -611,7 +631,7 @@
|
|||
|
||||
$.plot(placeholder, data, {
|
||||
series: {
|
||||
pie: {
|
||||
pie: {
|
||||
show: true
|
||||
}
|
||||
},
|
||||
|
@ -755,7 +775,7 @@
|
|||
<li><b>opacity:</b> <i>0.5</i> - Opacity of the highlight overlay on top of the current pie slice. Currently this just uses a white overlay, but support for changing the color of the overlay will also be added at a later date.
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes/Features</h2>
|
||||
<ul>
|
||||
<li style="list-style: none;"><i>v1.0 - November 20th, 2009 - Brian Medendorp</i></li>
|
||||
|
@ -800,7 +820,7 @@
|
|||
<li>Merged original pie modifications by Sergey Nosenko into the latest SVN version <i>(as of May 15th, 2009)</i> so that it will work with ie8.</li>
|
||||
<li>Pie graph will now be centered in the canvas unless moved because of the legend or manually via the options. Additionally it prevents the pie from being moved beyond the edge of the canvas.</li>
|
||||
<li>Modified the code related to the labelFormatter option to apply flot's legend labelFormatter first. This is so that the labels will be consistent, but still provide extra formatting for the positioned labels (such as adding the percentage value).</li>
|
||||
<li>Positioned labels now have their backgrounds applied as a seperate element (much like the legend background) so that the opacity value can be set independently from the label itself (foreground). Additionally, the background color defaults to that of the matching slice.</li>
|
||||
<li>Positioned labels now have their backgrounds applied as a separate element (much like the legend background) so that the opacity value can be set independently from the label itself (foreground). Additionally, the background color defaults to that of the matching slice.</li>
|
||||
<li>As long as the labelOffset and radiusLimit are not set to hard values, the pie will be shrunk if the labels will extend outside the edge of the canvas</li>
|
||||
<li>Added new options "radiusLimitFactor" and "radiusLimit" which limits how large the (visual) radius of the pie is in relation to the full radius (as calculated from the canvas dimensions) or a hard-pixel value (respectively). This allows for pushing the labels "outside" the pie.</li>
|
||||
<li>Added a new option "labelHidePercent" that does not show the positioned labels of slices smaller than the specified percentage. This is to help prevent a bunch of overlapping labels from small slices.</li>
|
||||
|
|
|
@ -4,9 +4,29 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Toggling Series</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -15,7 +35,7 @@
|
|||
"usa": {
|
||||
label: "USA",
|
||||
data: [[1988, 483994], [1989, 479060], [1990, 457648], [1991, 401949], [1992, 424705], [1993, 402375], [1994, 377867], [1995, 357382], [1996, 337946], [1997, 336185], [1998, 328611], [1999, 329421], [2000, 342172], [2001, 344932], [2002, 387303], [2003, 440813], [2004, 480451], [2005, 504638], [2006, 528692]]
|
||||
},
|
||||
},
|
||||
"russia": {
|
||||
label: "Russia",
|
||||
data: [[1988, 218000], [1989, 203000], [1990, 171000], [1992, 42500], [1993, 37600], [1994, 36600], [1995, 21700], [1996, 19200], [1997, 21300], [1998, 13600], [1999, 14000], [2000, 19100], [2001, 21300], [2002, 23600], [2003, 25100], [2004, 26100], [2005, 31100], [2006, 34700]]
|
||||
|
@ -51,7 +71,7 @@
|
|||
++i;
|
||||
});
|
||||
|
||||
// insert checkboxes
|
||||
// insert checkboxes
|
||||
var choiceContainer = $("#choices");
|
||||
$.each(datasets, function(key, val) {
|
||||
choiceContainer.append("<br/><input type='checkbox' name='" + key +
|
||||
|
@ -75,6 +95,9 @@
|
|||
|
||||
if (data.length > 0) {
|
||||
$.plot("#placeholder", data, {
|
||||
legend: {
|
||||
show: true
|
||||
},
|
||||
yaxis: {
|
||||
min: 0
|
||||
},
|
||||
|
|
|
@ -3,10 +3,30 @@
|
|||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Series Types</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
|
|
@ -4,10 +4,29 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Stacking</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -45,7 +64,10 @@
|
|||
show: bars,
|
||||
barWidth: 0.6
|
||||
}
|
||||
}
|
||||
},
|
||||
yaxis: {
|
||||
autoScale:"exact"
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -3,11 +3,31 @@
|
|||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Symbols</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.symbol.js"></script>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -27,17 +47,20 @@
|
|||
|
||||
var data = [
|
||||
{ data: generate(2, 1.8), points: { symbol: "circle" } },
|
||||
{ data: generate(3, 1.5), points: { symbol: "square" } },
|
||||
{ data: generate(4, 0.9), points: { symbol: "diamond" } },
|
||||
{ data: generate(6, 1.4), points: { symbol: "triangle" } },
|
||||
{ data: generate(7, 1.1), points: { symbol: "cross" } }
|
||||
{ data: generate(3, 1.5), points: { symbol: "square" } },
|
||||
{ data: generate(4, 0.9), points: { symbol: "diamond" } },
|
||||
{ data: generate(6, 1.4), points: { symbol: "triangle" } },
|
||||
{ data: generate(7, 1.1), points: { symbol: "cross" } },
|
||||
{ data: generate(8, 1.0), points: { symbol: "ellipse" } },
|
||||
{ data: generate(9, 1.3), points: { symbol: "plus" } }
|
||||
];
|
||||
|
||||
$.plot("#placeholder", data, {
|
||||
series: {
|
||||
points: {
|
||||
show: true,
|
||||
radius: 3
|
||||
radius: 3,
|
||||
lineWidth: 2
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
|
|
|
@ -4,10 +4,30 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Thresholds</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.threshold.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.threshold.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
|
|
@ -4,10 +4,30 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Tracking</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.crosshair.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.crosshair.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -22,16 +42,21 @@
|
|||
{ data: sin, label: "sin(x) = -0.00"},
|
||||
{ data: cos, label: "cos(x) = -0.00" }
|
||||
], {
|
||||
legend: {
|
||||
show: true
|
||||
},
|
||||
series: {
|
||||
lines: {
|
||||
show: true
|
||||
show: true,
|
||||
lineWidth: 2
|
||||
}
|
||||
},
|
||||
crosshair: {
|
||||
mode: "x"
|
||||
mode: "xy"
|
||||
},
|
||||
grid: {
|
||||
hoverable: true,
|
||||
clickable: true,
|
||||
autoHighlight: false
|
||||
},
|
||||
yaxis: {
|
||||
|
@ -40,7 +65,7 @@
|
|||
}
|
||||
});
|
||||
|
||||
var legends = $("#placeholder .legendLabel");
|
||||
var legends = $("#placeholder .legendLayer text tspan");
|
||||
|
||||
legends.each(function () {
|
||||
// fix the widths so they don't jump around
|
||||
|
@ -53,34 +78,28 @@
|
|||
function updateLegend() {
|
||||
|
||||
updateLegendTimeout = null;
|
||||
|
||||
var pos = latestPosition;
|
||||
|
||||
var axes = plot.getAxes();
|
||||
|
||||
if (pos.x < axes.xaxis.min || pos.x > axes.xaxis.max ||
|
||||
pos.y < axes.yaxis.min || pos.y > axes.yaxis.max) {
|
||||
return;
|
||||
}
|
||||
|
||||
var i, j, dataset = plot.getData();
|
||||
|
||||
for (i = 0; i < dataset.length; ++i) {
|
||||
|
||||
var series = dataset[i];
|
||||
|
||||
// Find the nearest points, x-wise
|
||||
|
||||
for (j = 0; j < series.data.length; ++j) {
|
||||
if (series.data[j][0] > pos.x) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Now Interpolate
|
||||
|
||||
var y,
|
||||
p1 = series.data[j - 1],
|
||||
p2 = series.data[j];
|
||||
|
||||
if (p1 == null) {
|
||||
y = p2[1];
|
||||
} else if (p2 == null) {
|
||||
|
@ -88,17 +107,18 @@
|
|||
} else {
|
||||
y = p1[1] + (p2[1] - p1[1]) * (pos.x - p1[0]) / (p2[0] - p1[0]);
|
||||
}
|
||||
|
||||
legends.eq(i).text(series.label.replace(/=.*/, "= " + y.toFixed(2)));
|
||||
}
|
||||
}
|
||||
|
||||
$("#placeholder").bind("plothover", function (event, pos, item) {
|
||||
$("#placeholder").bind("plothover", function (event, pos, item) {
|
||||
latestPosition = pos;
|
||||
if (!updateLegendTimeout) {
|
||||
updateLegendTimeout = setTimeout(updateLegend, 50);
|
||||
}
|
||||
});
|
||||
}).bind("plotclick", function (event, pos, item) {
|
||||
plot.lockCrosshair(pos);
|
||||
});;
|
||||
|
||||
// Add the Flot version string to the footer
|
||||
|
||||
|
|
|
@ -4,11 +4,30 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Visitors</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../lib/globalize.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -53,7 +72,9 @@
|
|||
var options = {
|
||||
xaxis: {
|
||||
mode: "time",
|
||||
tickLength: 5
|
||||
timeBase: "milliseconds",
|
||||
tickLength: 5,
|
||||
gridLines: false
|
||||
},
|
||||
selection: {
|
||||
mode: "x"
|
||||
|
@ -80,7 +101,7 @@
|
|||
yaxis: {
|
||||
ticks: [],
|
||||
min: 0,
|
||||
autoscaleMargin: 0.1
|
||||
autoScaleMargin: 0.1
|
||||
},
|
||||
selection: {
|
||||
mode: "x"
|
||||
|
|
|
@ -4,10 +4,29 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Flot Examples: Selection and zooming</title>
|
||||
<link href="../examples.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.canvaswrapper.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.colorhelpers.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.saturated.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.browser.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.drawSeries.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.errorbars.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.uiConstants.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.logaxis.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.symbol.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.flatdata.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.navigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.fillbetween.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.stack.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touchNavigate.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.hover.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.touch.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.time.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.selection.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.composeImages.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="../../source/jquery.flot.legend.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
@ -39,7 +58,11 @@
|
|||
show: true
|
||||
}
|
||||
},
|
||||
xaxis: {
|
||||
autoScale: "none"
|
||||
},
|
||||
yaxis: {
|
||||
autoScale:"none",
|
||||
ticks: 10
|
||||
},
|
||||
selection: {
|
||||
|
@ -65,9 +88,11 @@
|
|||
shadowSize: 0
|
||||
},
|
||||
xaxis: {
|
||||
autoScale: "none",
|
||||
ticks: 4
|
||||
},
|
||||
yaxis: {
|
||||
autoScale: "none",
|
||||
ticks: 3,
|
||||
min: -2,
|
||||
max: 2
|
||||
|
|
|
@ -1,11 +1,51 @@
|
|||
{
|
||||
"name": "Flot",
|
||||
"version": "0.8.3",
|
||||
"main": "jquery.flot.js",
|
||||
"scripts": {
|
||||
"test": "make test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"jshint": "0.9.1"
|
||||
}
|
||||
"name": "flot",
|
||||
"version": "3.0.2",
|
||||
"main": "dist/es5/jquery.flot.js",
|
||||
"scripts": {
|
||||
"test": "node node_modules/karma/bin/karma start --single-run --no-auto-watch --concurrency=1 --stopOnEsLintError",
|
||||
"coverage": "node node_modules/karma/bin/karma start --single-run --coverage --no-auto-watch --concurrency=1",
|
||||
"build": "node ./node_modules/gulp/bin/gulp.js build",
|
||||
"dont-break": "dont-break --timeout 300",
|
||||
"docs": "node ./update_docs.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/flot/flot.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/flot/flot/issues"
|
||||
},
|
||||
"homepage": "https://github.com/flot/flot#readme",
|
||||
"devDependencies": {
|
||||
"@babel/cli": "^7.2.3",
|
||||
"@babel/core": "^7.4.0",
|
||||
"@babel/plugin-external-helpers": "^7.2.0",
|
||||
"@babel/preset-env": "^7.2.3",
|
||||
"concat": "^1.0.3",
|
||||
"files-exist": "^1.1.0",
|
||||
"gulp": "^4.0.0",
|
||||
"gulp-babel": "^8.0.0",
|
||||
"gulp-concat": "^2.6.1",
|
||||
"gulp-sourcemaps": "^2.4.0",
|
||||
"gulp-uglify": "^3.0.0",
|
||||
"jasmine-core": "~2.7.0",
|
||||
"karma": "^1.3.0",
|
||||
"karma-chrome-launcher": "^2.0.0",
|
||||
"karma-coverage": "^1.1.2",
|
||||
"karma-coveralls": "^1.1.2",
|
||||
"karma-edge-launcher": "^0.4.2",
|
||||
"karma-eslint": "^2.2.0",
|
||||
"karma-firefox-launcher": "^1.0.0",
|
||||
"karma-jasmine": "^1.0.2",
|
||||
"karma-jasmine-html-reporter": "^0.2.2",
|
||||
"karma-jasmine-jquery": "^0.1.1",
|
||||
"karma-safari-launcher": "^1.0.0",
|
||||
"karma-spec-reporter": "0.0.32",
|
||||
"ljs": "^0.3.2",
|
||||
"tmp": "0.0.33",
|
||||
"webcharts-development-settings": "^1.0.9"
|
||||
},
|
||||
"dependencies": {}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "bootstrap-daterangepicker",
|
||||
"name": "daterangepicker",
|
||||
"main": [
|
||||
"daterangepicker.js",
|
||||
"daterangepicker.css"
|
||||
|
@ -17,14 +17,14 @@
|
|||
"jquery": "1.9.1 - 3",
|
||||
"moment": ">=2.9.0"
|
||||
},
|
||||
"homepage": "https://github.com/christianesperar/bootstrap-daterangepicker",
|
||||
"_release": "fc748970e8",
|
||||
"homepage": "https://github.com/dangrossman/daterangepicker",
|
||||
"_release": "bc645d93e8",
|
||||
"_resolution": {
|
||||
"type": "branch",
|
||||
"branch": "master",
|
||||
"commit": "fc748970e8228ab271ba9ca799f57d8f8c6a5013"
|
||||
"commit": "bc645d93e837905dcd38b04b8d9123978ea9f571"
|
||||
},
|
||||
"_source": "git@github.com:christianesperar/bootstrap-daterangepicker.git",
|
||||
"_source": "git@github.com:dangrossman/daterangepicker.git",
|
||||
"_target": "master",
|
||||
"_originalSource": "git@github.com:christianesperar/bootstrap-daterangepicker.git"
|
||||
"_originalSource": "git@github.com:dangrossman/daterangepicker.git"
|
||||
}
|
|
@ -1,14 +1,13 @@
|
|||
# Date Range Picker for Bootstrap
|
||||
# Date Range Picker
|
||||
|
||||
![Improvely.com](http://i.imgur.com/LbAMf3D.png)
|
||||
![Improvely.com](https://i.imgur.com/UTRlaar.png)
|
||||
|
||||
This date range picker component for Bootstrap creates a dropdown menu from which a user can
|
||||
This date range picker component creates a dropdown menu from which a user can
|
||||
select a range of dates. I created it while building the UI for [Improvely](http://www.improvely.com),
|
||||
which needed a way to select date ranges for reports.
|
||||
|
||||
Features include limiting the selectable date range, localizable strings and date formats,
|
||||
a single date picker mode, optional time picker (for e.g. making appointments or reservations),
|
||||
and styles that match the default Bootstrap 3 theme.
|
||||
a single date picker mode, a time picker, and predefined date ranges.
|
||||
|
||||
## [Documentation and Live Usage Examples](http://www.daterangepicker.com)
|
||||
|
||||
|
@ -16,14 +15,9 @@ and styles that match the default Bootstrap 3 theme.
|
|||
|
||||
## License
|
||||
|
||||
This code is made available under the same license as Bootstrap. Moment.js is included in this repository
|
||||
for convenience. It is available under the [MIT license](http://www.opensource.org/licenses/mit-license.php).
|
||||
|
||||
--
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2012-2016 Dan Grossman
|
||||
Copyright (c) 2012-2018 Dan Grossman
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "bootstrap-daterangepicker",
|
||||
"name": "daterangepicker",
|
||||
"main": [
|
||||
"daterangepicker.js",
|
||||
"daterangepicker.css"
|
||||
|
|
|
@ -1,261 +1,380 @@
|
|||
.daterangepicker {
|
||||
position: absolute;
|
||||
color: inherit;
|
||||
background: #fff;
|
||||
background-color: #fff;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #ddd;
|
||||
width: 278px;
|
||||
padding: 4px;
|
||||
margin-top: 1px;
|
||||
max-width: none;
|
||||
padding: 0;
|
||||
margin-top: 7px;
|
||||
top: 100px;
|
||||
left: 20px;
|
||||
/* Calendars */ }
|
||||
.daterangepicker:before, .daterangepicker:after {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
content: ''; }
|
||||
.daterangepicker:before {
|
||||
top: -7px;
|
||||
border-right: 7px solid transparent;
|
||||
border-left: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc; }
|
||||
.daterangepicker:after {
|
||||
top: -6px;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #fff;
|
||||
border-left: 6px solid transparent; }
|
||||
.daterangepicker.opensleft:before {
|
||||
right: 9px; }
|
||||
.daterangepicker.opensleft:after {
|
||||
right: 10px; }
|
||||
.daterangepicker.openscenter:before {
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 0;
|
||||
margin-left: auto;
|
||||
margin-right: auto; }
|
||||
.daterangepicker.openscenter:after {
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 0;
|
||||
margin-left: auto;
|
||||
margin-right: auto; }
|
||||
.daterangepicker.opensright:before {
|
||||
left: 9px; }
|
||||
.daterangepicker.opensright:after {
|
||||
left: 10px; }
|
||||
.daterangepicker.dropup {
|
||||
margin-top: -5px; }
|
||||
.daterangepicker.dropup:before {
|
||||
top: initial;
|
||||
bottom: -7px;
|
||||
border-bottom: initial;
|
||||
border-top: 7px solid #ccc; }
|
||||
.daterangepicker.dropup:after {
|
||||
top: initial;
|
||||
bottom: -6px;
|
||||
border-bottom: initial;
|
||||
border-top: 6px solid #fff; }
|
||||
.daterangepicker.dropdown-menu {
|
||||
max-width: none;
|
||||
z-index: 3001; }
|
||||
.daterangepicker.single .ranges, .daterangepicker.single .calendar {
|
||||
float: none; }
|
||||
.daterangepicker.show-calendar .calendar {
|
||||
display: block; }
|
||||
.daterangepicker .calendar {
|
||||
display: none;
|
||||
max-width: 270px;
|
||||
margin: 4px; }
|
||||
.daterangepicker .calendar.single .calendar-table {
|
||||
border: none; }
|
||||
.daterangepicker .calendar th, .daterangepicker .calendar td {
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
min-width: 32px; }
|
||||
.daterangepicker .calendar-table {
|
||||
border: 1px solid #fff;
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
background: #fff; }
|
||||
.daterangepicker table {
|
||||
width: 100%;
|
||||
margin: 0; }
|
||||
.daterangepicker td, .daterangepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid transparent;
|
||||
white-space: nowrap;
|
||||
cursor: pointer; }
|
||||
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
|
||||
background-color: #eee;
|
||||
border-color: transparent;
|
||||
color: inherit; }
|
||||
.daterangepicker td.week, .daterangepicker th.week {
|
||||
font-size: 80%;
|
||||
color: #ccc; }
|
||||
.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date {
|
||||
background-color: #fff;
|
||||
border-color: transparent;
|
||||
color: #999; }
|
||||
.daterangepicker td.in-range {
|
||||
background-color: #ebf4f8;
|
||||
border-color: transparent;
|
||||
color: #000;
|
||||
border-radius: 0; }
|
||||
.daterangepicker td.start-date {
|
||||
border-radius: 4px 0 0 4px; }
|
||||
.daterangepicker td.end-date {
|
||||
border-radius: 0 4px 4px 0; }
|
||||
.daterangepicker td.start-date.end-date {
|
||||
border-radius: 4px; }
|
||||
.daterangepicker td.active, .daterangepicker td.active:hover {
|
||||
background-color: #357ebd;
|
||||
border-color: transparent;
|
||||
color: #fff; }
|
||||
.daterangepicker th.month {
|
||||
width: auto; }
|
||||
.daterangepicker td.disabled, .daterangepicker option.disabled {
|
||||
color: #999;
|
||||
cursor: not-allowed;
|
||||
text-decoration: line-through; }
|
||||
.daterangepicker select.monthselect, .daterangepicker select.yearselect {
|
||||
font-size: 12px;
|
||||
padding: 1px;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
cursor: default; }
|
||||
.daterangepicker select.monthselect {
|
||||
margin-right: 2%;
|
||||
width: 56%; }
|
||||
.daterangepicker select.yearselect {
|
||||
width: 40%; }
|
||||
.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect {
|
||||
width: 50px;
|
||||
margin-bottom: 0; }
|
||||
.daterangepicker .input-mini {
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
color: #555;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
display: block;
|
||||
vertical-align: middle;
|
||||
margin: 0 0 5px 0;
|
||||
padding: 0 6px 0 28px;
|
||||
width: 100%; }
|
||||
.daterangepicker .input-mini.active {
|
||||
border: 1px solid #08c;
|
||||
border-radius: 4px; }
|
||||
.daterangepicker .daterangepicker_input {
|
||||
position: relative; }
|
||||
.daterangepicker .daterangepicker_input i {
|
||||
position: absolute;
|
||||
left: 8px;
|
||||
top: 8px; }
|
||||
.daterangepicker.rtl .input-mini {
|
||||
padding-right: 28px;
|
||||
padding-left: 6px; }
|
||||
.daterangepicker.rtl .daterangepicker_input i {
|
||||
left: auto;
|
||||
right: 8px; }
|
||||
.daterangepicker .calendar-time {
|
||||
text-align: center;
|
||||
margin: 5px auto;
|
||||
line-height: 30px;
|
||||
position: relative;
|
||||
padding-left: 28px; }
|
||||
.daterangepicker .calendar-time select.disabled {
|
||||
color: #ccc;
|
||||
cursor: not-allowed; }
|
||||
z-index: 3001;
|
||||
display: none;
|
||||
font-family: arial;
|
||||
font-size: 15px;
|
||||
line-height: 1em;
|
||||
}
|
||||
|
||||
.ranges {
|
||||
font-size: 11px;
|
||||
.daterangepicker:before, .daterangepicker:after {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
content: '';
|
||||
}
|
||||
|
||||
.daterangepicker:before {
|
||||
top: -7px;
|
||||
border-right: 7px solid transparent;
|
||||
border-left: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
}
|
||||
|
||||
.daterangepicker:after {
|
||||
top: -6px;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #fff;
|
||||
border-left: 6px solid transparent;
|
||||
}
|
||||
|
||||
.daterangepicker.opensleft:before {
|
||||
right: 9px;
|
||||
}
|
||||
|
||||
.daterangepicker.opensleft:after {
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.daterangepicker.openscenter:before {
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 0;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.daterangepicker.openscenter:after {
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 0;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.daterangepicker.opensright:before {
|
||||
left: 9px;
|
||||
}
|
||||
|
||||
.daterangepicker.opensright:after {
|
||||
left: 10px;
|
||||
}
|
||||
|
||||
.daterangepicker.drop-up {
|
||||
margin-top: -7px;
|
||||
}
|
||||
|
||||
.daterangepicker.drop-up:before {
|
||||
top: initial;
|
||||
bottom: -7px;
|
||||
border-bottom: initial;
|
||||
border-top: 7px solid #ccc;
|
||||
}
|
||||
|
||||
.daterangepicker.drop-up:after {
|
||||
top: initial;
|
||||
bottom: -6px;
|
||||
border-bottom: initial;
|
||||
border-top: 6px solid #fff;
|
||||
}
|
||||
|
||||
.daterangepicker.single .daterangepicker .ranges, .daterangepicker.single .drp-calendar {
|
||||
float: none;
|
||||
margin: 4px;
|
||||
text-align: left; }
|
||||
.ranges ul {
|
||||
list-style: none;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
width: 100%; }
|
||||
.ranges li {
|
||||
font-size: 13px;
|
||||
background: #f5f5f5;
|
||||
border: 1px solid #f5f5f5;
|
||||
border-radius: 4px;
|
||||
color: #08c;
|
||||
padding: 3px 12px;
|
||||
margin-bottom: 8px;
|
||||
cursor: pointer; }
|
||||
.ranges li:hover {
|
||||
background: #08c;
|
||||
border: 1px solid #08c;
|
||||
color: #fff; }
|
||||
.ranges li.active {
|
||||
background: #08c;
|
||||
border: 1px solid #08c;
|
||||
color: #fff; }
|
||||
}
|
||||
|
||||
.daterangepicker.single .drp-selected {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.daterangepicker.show-calendar .drp-calendar {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.daterangepicker.show-calendar .drp-buttons {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.daterangepicker.auto-apply .drp-buttons {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar {
|
||||
display: none;
|
||||
max-width: 270px;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar.left {
|
||||
padding: 8px 0 8px 8px;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar.right {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar.single .calendar-table {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span {
|
||||
color: #fff;
|
||||
border: solid black;
|
||||
border-width: 0 2px 2px 0;
|
||||
border-radius: 0;
|
||||
display: inline-block;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-table .next span {
|
||||
transform: rotate(-45deg);
|
||||
-webkit-transform: rotate(-45deg);
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-table .prev span {
|
||||
transform: rotate(135deg);
|
||||
-webkit-transform: rotate(135deg);
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-table th, .daterangepicker .calendar-table td {
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
min-width: 32px;
|
||||
width: 32px;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
font-size: 12px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid transparent;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-table {
|
||||
border: 1px solid #fff;
|
||||
border-radius: 4px;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-table table {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
border-spacing: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
|
||||
background-color: #eee;
|
||||
border-color: transparent;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.daterangepicker td.week, .daterangepicker th.week {
|
||||
font-size: 80%;
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date {
|
||||
background-color: #fff;
|
||||
border-color: transparent;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.daterangepicker td.in-range {
|
||||
background-color: #ebf4f8;
|
||||
border-color: transparent;
|
||||
color: #000;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.daterangepicker td.start-date {
|
||||
border-radius: 4px 0 0 4px;
|
||||
}
|
||||
|
||||
.daterangepicker td.end-date {
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
|
||||
.daterangepicker td.start-date.end-date {
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.daterangepicker td.active, .daterangepicker td.active:hover {
|
||||
background-color: #357ebd;
|
||||
border-color: transparent;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.daterangepicker th.month {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.daterangepicker td.disabled, .daterangepicker option.disabled {
|
||||
color: #999;
|
||||
cursor: not-allowed;
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.daterangepicker select.monthselect, .daterangepicker select.yearselect {
|
||||
font-size: 12px;
|
||||
padding: 1px;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.daterangepicker select.monthselect {
|
||||
margin-right: 2%;
|
||||
width: 56%;
|
||||
}
|
||||
|
||||
.daterangepicker select.yearselect {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect {
|
||||
width: 50px;
|
||||
margin: 0 auto;
|
||||
background: #eee;
|
||||
border: 1px solid #eee;
|
||||
padding: 2px;
|
||||
outline: 0;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-time {
|
||||
text-align: center;
|
||||
margin: 4px auto 0 auto;
|
||||
line-height: 30px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-time select.disabled {
|
||||
color: #ccc;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-buttons {
|
||||
clear: both;
|
||||
text-align: right;
|
||||
padding: 8px;
|
||||
border-top: 1px solid #ddd;
|
||||
display: none;
|
||||
line-height: 12px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-selected {
|
||||
display: inline-block;
|
||||
font-size: 12px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-buttons .btn {
|
||||
margin-left: 8px;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
|
||||
.daterangepicker.show-ranges .drp-calendar.left {
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges {
|
||||
float: none;
|
||||
text-align: left;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.daterangepicker.show-calendar .ranges {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges ul {
|
||||
list-style: none;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges li {
|
||||
font-size: 12px;
|
||||
padding: 8px 12px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges li:hover {
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges li.active {
|
||||
background-color: #08c;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/* Larger Screen Styling */
|
||||
@media (min-width: 564px) {
|
||||
.daterangepicker {
|
||||
width: auto; }
|
||||
.daterangepicker .ranges ul {
|
||||
width: 160px; }
|
||||
width: 140px; }
|
||||
.daterangepicker.single .ranges ul {
|
||||
width: 100%; }
|
||||
.daterangepicker.single .calendar.left {
|
||||
.daterangepicker.single .drp-calendar.left {
|
||||
clear: none; }
|
||||
.daterangepicker.single.ltr .ranges, .daterangepicker.single.ltr .calendar {
|
||||
.daterangepicker.single.ltr .ranges, .daterangepicker.single.ltr .drp-calendar {
|
||||
float: left; }
|
||||
.daterangepicker.single.rtl .ranges, .daterangepicker.single.rtl .calendar {
|
||||
.daterangepicker.single.rtl .ranges, .daterangepicker.single.rtl .drp-calendar {
|
||||
float: right; }
|
||||
.daterangepicker.ltr {
|
||||
direction: ltr;
|
||||
text-align: left; }
|
||||
.daterangepicker.ltr .calendar.left {
|
||||
.daterangepicker.ltr .drp-calendar.left {
|
||||
clear: left;
|
||||
margin-right: 0; }
|
||||
.daterangepicker.ltr .calendar.left .calendar-table {
|
||||
.daterangepicker.ltr .drp-calendar.left .calendar-table {
|
||||
border-right: none;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0; }
|
||||
.daterangepicker.ltr .calendar.right {
|
||||
.daterangepicker.ltr .drp-calendar.right {
|
||||
margin-left: 0; }
|
||||
.daterangepicker.ltr .calendar.right .calendar-table {
|
||||
.daterangepicker.ltr .drp-calendar.right .calendar-table {
|
||||
border-left: none;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0; }
|
||||
.daterangepicker.ltr .left .daterangepicker_input {
|
||||
padding-right: 12px; }
|
||||
.daterangepicker.ltr .calendar.left .calendar-table {
|
||||
padding-right: 12px; }
|
||||
.daterangepicker.ltr .ranges, .daterangepicker.ltr .calendar {
|
||||
.daterangepicker.ltr .drp-calendar.left .calendar-table {
|
||||
padding-right: 8px; }
|
||||
.daterangepicker.ltr .ranges, .daterangepicker.ltr .drp-calendar {
|
||||
float: left; }
|
||||
.daterangepicker.rtl {
|
||||
direction: rtl;
|
||||
text-align: right; }
|
||||
.daterangepicker.rtl .calendar.left {
|
||||
.daterangepicker.rtl .drp-calendar.left {
|
||||
clear: right;
|
||||
margin-left: 0; }
|
||||
.daterangepicker.rtl .calendar.left .calendar-table {
|
||||
.daterangepicker.rtl .drp-calendar.left .calendar-table {
|
||||
border-left: none;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0; }
|
||||
.daterangepicker.rtl .calendar.right {
|
||||
.daterangepicker.rtl .drp-calendar.right {
|
||||
margin-right: 0; }
|
||||
.daterangepicker.rtl .calendar.right .calendar-table {
|
||||
.daterangepicker.rtl .drp-calendar.right .calendar-table {
|
||||
border-right: none;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0; }
|
||||
.daterangepicker.rtl .left .daterangepicker_input {
|
||||
.daterangepicker.rtl .drp-calendar.left .calendar-table {
|
||||
padding-left: 12px; }
|
||||
.daterangepicker.rtl .calendar.left .calendar-table {
|
||||
padding-left: 12px; }
|
||||
.daterangepicker.rtl .ranges, .daterangepicker.rtl .calendar {
|
||||
.daterangepicker.rtl .ranges, .daterangepicker.rtl .drp-calendar {
|
||||
text-align: right;
|
||||
float: right; } }
|
||||
@media (min-width: 730px) {
|
||||
|
@ -265,5 +384,5 @@
|
|||
float: left; }
|
||||
.daterangepicker.rtl .ranges {
|
||||
float: right; }
|
||||
.daterangepicker .calendar.left {
|
||||
.daterangepicker .drp-calendar.left {
|
||||
clear: none !important; } }
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
/**
|
||||
* @version: 2.1.24
|
||||
* @version: 3.0.3
|
||||
* @author: Dan Grossman http://www.dangrossman.info/
|
||||
* @copyright: Copyright (c) 2012-2016 Dan Grossman. All rights reserved.
|
||||
* @copyright: Copyright (c) 2012-2018 Dan Grossman. All rights reserved.
|
||||
* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
|
||||
* @website: https://www.improvely.com/
|
||||
* @website: http://www.daterangepicker.com/
|
||||
*/
|
||||
// Follow the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js
|
||||
// Following the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Make globaly available as well
|
||||
define(['moment', 'jquery'], function (moment, jquery) {
|
||||
return (root.daterangepicker = factory(moment, jquery));
|
||||
if (!jquery.fn) jquery.fn = {}; // webpack server rendering
|
||||
if (typeof moment !== 'function' && moment.default) moment = moment.default
|
||||
return factory(moment, jquery);
|
||||
});
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// Node / Browserify
|
||||
|
@ -20,7 +22,8 @@
|
|||
jQuery = require('jquery');
|
||||
if (!jQuery.fn) jQuery.fn = {};
|
||||
}
|
||||
module.exports = factory(require('moment'), jQuery);
|
||||
var moment = (typeof window != 'undefined' && typeof window.moment != 'undefined') ? window.moment : require('moment');
|
||||
module.exports = factory(moment, jQuery);
|
||||
} else {
|
||||
// Browser globals
|
||||
root.daterangepicker = factory(root.moment, root.jQuery);
|
||||
|
@ -35,10 +38,12 @@
|
|||
this.endDate = moment().endOf('day');
|
||||
this.minDate = false;
|
||||
this.maxDate = false;
|
||||
this.dateLimit = false;
|
||||
this.maxSpan = false;
|
||||
this.autoApply = false;
|
||||
this.singleDatePicker = false;
|
||||
this.showDropdowns = false;
|
||||
this.minYear = moment().subtract(100, 'year').format('YYYY');
|
||||
this.maxYear = moment().add(100, 'year').format('YYYY');
|
||||
this.showWeekNumbers = false;
|
||||
this.showISOWeekNumbers = false;
|
||||
this.showCustomRangeLabel = true;
|
||||
|
@ -60,8 +65,8 @@
|
|||
this.drops = 'up';
|
||||
|
||||
this.buttonClasses = 'btn btn-sm';
|
||||
this.applyClass = 'btn-success';
|
||||
this.cancelClass = 'btn-default';
|
||||
this.applyButtonClasses = 'btn-primary';
|
||||
this.cancelButtonClasses = 'btn-default';
|
||||
|
||||
this.locale = {
|
||||
direction: 'ltr',
|
||||
|
@ -93,34 +98,21 @@
|
|||
|
||||
//html template for the picker UI
|
||||
if (typeof options.template !== 'string' && !(options.template instanceof $))
|
||||
options.template = '<div class="daterangepicker dropdown-menu">' +
|
||||
'<div class="calendar left">' +
|
||||
'<div class="daterangepicker_input">' +
|
||||
'<input class="input-mini form-control" type="text" name="daterangepicker_start" value="" />' +
|
||||
'<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' +
|
||||
'<div class="calendar-time">' +
|
||||
'<div></div>' +
|
||||
'<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
options.template =
|
||||
'<div class="daterangepicker">' +
|
||||
'<div class="ranges"></div>' +
|
||||
'<div class="drp-calendar left">' +
|
||||
'<div class="calendar-table"></div>' +
|
||||
'<div class="calendar-time"></div>' +
|
||||
'</div>' +
|
||||
'<div class="calendar right">' +
|
||||
'<div class="daterangepicker_input">' +
|
||||
'<input class="input-mini form-control" type="text" name="daterangepicker_end" value="" />' +
|
||||
'<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' +
|
||||
'<div class="calendar-time">' +
|
||||
'<div></div>' +
|
||||
'<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'<div class="drp-calendar right">' +
|
||||
'<div class="calendar-table"></div>' +
|
||||
'<div class="calendar-time"></div>' +
|
||||
'</div>' +
|
||||
'<div class="ranges">' +
|
||||
'<div class="range_inputs">' +
|
||||
'<button class="applyBtn" disabled="disabled" type="button"></button> ' +
|
||||
'<button class="cancelBtn" type="button"></button>' +
|
||||
'</div>' +
|
||||
'<div class="drp-buttons">' +
|
||||
'<span class="drp-selected"></span>' +
|
||||
'<button class="cancelBtn" type="button"></button>' +
|
||||
'<button class="applyBtn" disabled="disabled" type="button"></button> ' +
|
||||
'</div>' +
|
||||
'</div>';
|
||||
|
||||
|
@ -160,9 +152,13 @@
|
|||
if (typeof options.locale.weekLabel === 'string')
|
||||
this.locale.weekLabel = options.locale.weekLabel;
|
||||
|
||||
if (typeof options.locale.customRangeLabel === 'string')
|
||||
this.locale.customRangeLabel = options.locale.customRangeLabel;
|
||||
|
||||
if (typeof options.locale.customRangeLabel === 'string'){
|
||||
//Support unicode chars in the custom range name.
|
||||
var elem = document.createElement('textarea');
|
||||
elem.innerHTML = options.locale.customRangeLabel;
|
||||
var rangeHtml = elem.value;
|
||||
this.locale.customRangeLabel = rangeHtml;
|
||||
}
|
||||
}
|
||||
this.container.addClass(this.locale.direction);
|
||||
|
||||
|
@ -198,14 +194,23 @@
|
|||
if (this.maxDate && this.endDate.isAfter(this.maxDate))
|
||||
this.endDate = this.maxDate.clone();
|
||||
|
||||
if (typeof options.applyClass === 'string')
|
||||
this.applyClass = options.applyClass;
|
||||
if (typeof options.applyButtonClasses === 'string')
|
||||
this.applyButtonClasses = options.applyButtonClasses;
|
||||
|
||||
if (typeof options.cancelClass === 'string')
|
||||
this.cancelClass = options.cancelClass;
|
||||
if (typeof options.applyClass === 'string') //backwards compat
|
||||
this.applyButtonClasses = options.applyClass;
|
||||
|
||||
if (typeof options.dateLimit === 'object')
|
||||
this.dateLimit = options.dateLimit;
|
||||
if (typeof options.cancelButtonClasses === 'string')
|
||||
this.cancelButtonClasses = options.cancelButtonClasses;
|
||||
|
||||
if (typeof options.cancelClass === 'string') //backwards compat
|
||||
this.cancelButtonClasses = options.cancelClass;
|
||||
|
||||
if (typeof options.maxSpan === 'object')
|
||||
this.maxSpan = options.maxSpan;
|
||||
|
||||
if (typeof options.dateLimit === 'object') //backwards compat
|
||||
this.maxSpan = options.dateLimit;
|
||||
|
||||
if (typeof options.opens === 'string')
|
||||
this.opens = options.opens;
|
||||
|
@ -225,16 +230,15 @@
|
|||
if (typeof options.buttonClasses === 'object')
|
||||
this.buttonClasses = options.buttonClasses.join(' ');
|
||||
|
||||
if (typeof options.singleClasses === 'string')
|
||||
this.singleClasses = options.singleClasses;
|
||||
|
||||
if (typeof options.singleClasses === 'object')
|
||||
this.singleClasses = options.singleClasses.join(' ');
|
||||
|
||||
|
||||
if (typeof options.showDropdowns === 'boolean')
|
||||
this.showDropdowns = options.showDropdowns;
|
||||
|
||||
if (typeof options.minYear === 'number')
|
||||
this.minYear = options.minYear;
|
||||
|
||||
if (typeof options.maxYear === 'number')
|
||||
this.maxYear = options.maxYear;
|
||||
|
||||
if (typeof options.showCustomRangeLabel === 'boolean')
|
||||
this.showCustomRangeLabel = options.showCustomRangeLabel;
|
||||
|
||||
|
@ -287,7 +291,7 @@
|
|||
|
||||
//if no start/end dates set, check if an input element contains initial values
|
||||
if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {
|
||||
if ($(this.element).is('input[type=text]')) {
|
||||
if ($(this.element).is(':text')) {
|
||||
var val = $(this.element).val(),
|
||||
split = val.split(this.locale.separator);
|
||||
|
||||
|
@ -320,20 +324,20 @@
|
|||
else
|
||||
end = moment(options.ranges[range][1]);
|
||||
|
||||
// If the start or end date exceed those allowed by the minDate or dateLimit
|
||||
// If the start or end date exceed those allowed by the minDate or maxSpan
|
||||
// options, shorten the range to the allowable period.
|
||||
if (this.minDate && start.isBefore(this.minDate))
|
||||
start = this.minDate.clone();
|
||||
|
||||
var maxDate = this.maxDate;
|
||||
if (this.dateLimit && maxDate && start.clone().add(this.dateLimit).isAfter(maxDate))
|
||||
maxDate = start.clone().add(this.dateLimit);
|
||||
if (this.maxSpan && maxDate && start.clone().add(this.maxSpan).isAfter(maxDate))
|
||||
maxDate = start.clone().add(this.maxSpan);
|
||||
if (maxDate && end.isAfter(maxDate))
|
||||
end = maxDate.clone();
|
||||
|
||||
// If the end of the range is before the minimum or the start of the range is
|
||||
// after the maximum, don't display this range option at all.
|
||||
if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day'))
|
||||
if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day'))
|
||||
|| (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day')))
|
||||
continue;
|
||||
|
||||
|
@ -370,25 +374,20 @@
|
|||
if (this.timePicker && this.autoApply)
|
||||
this.autoApply = false;
|
||||
|
||||
if (this.autoApply && typeof options.ranges !== 'object') {
|
||||
this.container.find('.ranges').hide();
|
||||
} else if (this.autoApply) {
|
||||
this.container.find('.applyBtn, .cancelBtn').addClass('hide');
|
||||
if (this.autoApply) {
|
||||
this.container.addClass('auto-apply');
|
||||
}
|
||||
|
||||
if (typeof options.ranges === 'object')
|
||||
this.container.addClass('show-ranges');
|
||||
|
||||
if (this.singleDatePicker) {
|
||||
this.container.addClass('single');
|
||||
if (this.singleClasses) {
|
||||
this.container.addClass(this.singleClasses);
|
||||
}
|
||||
this.container.find('.calendar.left').addClass('single');
|
||||
this.container.find('.calendar.left').show();
|
||||
this.container.find('.calendar.right').hide();
|
||||
this.container.find('.daterangepicker_input input, .daterangepicker_input > i').hide();
|
||||
if (this.timePicker) {
|
||||
this.container.find('.ranges ul').hide();
|
||||
} else {
|
||||
this.container.find('.ranges').hide();
|
||||
this.container.find('.drp-calendar.left').addClass('single');
|
||||
this.container.find('.drp-calendar.left').show();
|
||||
this.container.find('.drp-calendar.right').hide();
|
||||
if (!this.timePicker) {
|
||||
this.container.addClass('auto-apply');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -398,17 +397,12 @@
|
|||
|
||||
this.container.addClass('opens' + this.opens);
|
||||
|
||||
//swap the position of the predefined ranges if opens right
|
||||
if (typeof options.ranges !== 'undefined' && this.opens == 'right') {
|
||||
this.container.find('.ranges').prependTo( this.container.find('.calendar.left').parent() );
|
||||
}
|
||||
|
||||
//apply CSS classes and labels to buttons
|
||||
this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);
|
||||
if (this.applyClass.length)
|
||||
this.container.find('.applyBtn').addClass(this.applyClass);
|
||||
if (this.cancelClass.length)
|
||||
this.container.find('.cancelBtn').addClass(this.cancelClass);
|
||||
if (this.applyButtonClasses.length)
|
||||
this.container.find('.applyBtn').addClass(this.applyButtonClasses);
|
||||
if (this.cancelButtonClasses.length)
|
||||
this.container.find('.cancelBtn').addClass(this.cancelButtonClasses);
|
||||
this.container.find('.applyBtn').html(this.locale.applyLabel);
|
||||
this.container.find('.cancelBtn').html(this.locale.cancelLabel);
|
||||
|
||||
|
@ -416,49 +410,39 @@
|
|||
// event listeners
|
||||
//
|
||||
|
||||
this.container.find('.calendar')
|
||||
this.container.find('.drp-calendar')
|
||||
.on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))
|
||||
.on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))
|
||||
.on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this))
|
||||
.on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))
|
||||
.on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this))
|
||||
.on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))
|
||||
.on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))
|
||||
.on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this))
|
||||
.on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this))
|
||||
.on('focus.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsFocused, this))
|
||||
.on('blur.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsBlurred, this))
|
||||
.on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this));
|
||||
|
||||
this.container.find('.ranges')
|
||||
.on('click.daterangepicker', 'li', $.proxy(this.clickRange, this))
|
||||
|
||||
this.container.find('.drp-buttons')
|
||||
.on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))
|
||||
.on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this))
|
||||
.on('click.daterangepicker', 'li', $.proxy(this.clickRange, this))
|
||||
.on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this))
|
||||
.on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this));
|
||||
|
||||
if (this.element.is('input') || this.element.is('button')) {
|
||||
this.element.on({
|
||||
'click.daterangepicker': $.proxy(this.show, this),
|
||||
'focus.daterangepicker': $.proxy(this.show, this),
|
||||
'keyup.daterangepicker': $.proxy(this.elementChanged, this),
|
||||
'keydown.daterangepicker': $.proxy(this.keydown, this)
|
||||
'keydown.daterangepicker': $.proxy(this.keydown, this) //IE 11 compatibility
|
||||
});
|
||||
} else {
|
||||
this.element.on('click.daterangepicker', $.proxy(this.toggle, this));
|
||||
this.element.on('keydown.daterangepicker', $.proxy(this.toggle, this));
|
||||
}
|
||||
|
||||
//
|
||||
// if attached to a text input, set the initial value
|
||||
//
|
||||
|
||||
if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {
|
||||
this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
|
||||
this.element.trigger('change');
|
||||
} else if (this.element.is('input') && this.autoUpdateInput) {
|
||||
this.element.val(this.startDate.format(this.locale.format));
|
||||
this.element.trigger('change');
|
||||
}
|
||||
this.updateElement();
|
||||
|
||||
};
|
||||
|
||||
|
@ -505,7 +489,7 @@
|
|||
this.endDate = moment(endDate);
|
||||
|
||||
if (!this.timePicker)
|
||||
this.endDate = this.endDate.endOf('day');
|
||||
this.endDate = this.endDate.add(1,'d').startOf('day').subtract(1,'second');
|
||||
|
||||
if (this.timePicker && this.timePickerIncrement)
|
||||
this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
|
||||
|
@ -516,11 +500,13 @@
|
|||
if (this.maxDate && this.endDate.isAfter(this.maxDate))
|
||||
this.endDate = this.maxDate.clone();
|
||||
|
||||
if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate))
|
||||
this.endDate = this.startDate.clone().add(this.dateLimit);
|
||||
if (this.maxSpan && this.startDate.clone().add(this.maxSpan).isBefore(this.endDate))
|
||||
this.endDate = this.startDate.clone().add(this.maxSpan);
|
||||
|
||||
this.previousRightTime = this.endDate.clone();
|
||||
|
||||
this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
|
||||
|
||||
if (!this.isShowing)
|
||||
this.updateElement();
|
||||
|
||||
|
@ -545,13 +531,8 @@
|
|||
this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled');
|
||||
}
|
||||
}
|
||||
if (this.endDate) {
|
||||
this.container.find('input[name="daterangepicker_end"]').removeClass('active');
|
||||
this.container.find('input[name="daterangepicker_start"]').addClass('active');
|
||||
} else {
|
||||
this.container.find('input[name="daterangepicker_end"]').addClass('active');
|
||||
this.container.find('input[name="daterangepicker_start"]').removeClass('active');
|
||||
}
|
||||
if (this.endDate)
|
||||
this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
|
||||
this.updateMonthsInView();
|
||||
this.updateCalendars();
|
||||
this.updateFormInputs();
|
||||
|
@ -712,7 +693,7 @@
|
|||
html += '<th></th>';
|
||||
|
||||
if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {
|
||||
html += '<th class="prev available"><i class="fa fa-' + arrow.left + ' glyphicon glyphicon-' + arrow.left + '"></i></th>';
|
||||
html += '<th class="prev available"><span></span></th>';
|
||||
} else {
|
||||
html += '<th></th>';
|
||||
}
|
||||
|
@ -722,8 +703,8 @@
|
|||
if (this.showDropdowns) {
|
||||
var currentMonth = calendar[1][1].month();
|
||||
var currentYear = calendar[1][1].year();
|
||||
var maxYear = (maxDate && maxDate.year()) || (currentYear + 5);
|
||||
var minYear = (minDate && minDate.year()) || (currentYear - 50);
|
||||
var maxYear = (maxDate && maxDate.year()) || (this.maxYear);
|
||||
var minYear = (minDate && minDate.year()) || (this.minYear);
|
||||
var inMinYear = currentYear == minYear;
|
||||
var inMaxYear = currentYear == maxYear;
|
||||
|
||||
|
@ -754,7 +735,7 @@
|
|||
|
||||
html += '<th colspan="5" class="month">' + dateHtml + '</th>';
|
||||
if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {
|
||||
html += '<th class="next available"><i class="fa fa-' + arrow.right + ' glyphicon glyphicon-' + arrow.right + '"></i></th>';
|
||||
html += '<th class="next available"><span></span></th>';
|
||||
} else {
|
||||
html += '<th></th>';
|
||||
}
|
||||
|
@ -774,10 +755,10 @@
|
|||
html += '</thead>';
|
||||
html += '<tbody>';
|
||||
|
||||
//adjust maxDate to reflect the dateLimit setting in order to
|
||||
//grey out end dates beyond the dateLimit
|
||||
if (this.endDate == null && this.dateLimit) {
|
||||
var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day');
|
||||
//adjust maxDate to reflect the maxSpan setting in order to
|
||||
//grey out end dates beyond the maxSpan
|
||||
if (this.endDate == null && this.maxSpan) {
|
||||
var maxLimit = this.startDate.clone().add(this.maxSpan).endOf('day');
|
||||
if (!maxDate || maxLimit.isBefore(maxDate)) {
|
||||
maxDate = maxLimit;
|
||||
}
|
||||
|
@ -859,7 +840,7 @@
|
|||
html += '</tbody>';
|
||||
html += '</table>';
|
||||
|
||||
this.container.find('.calendar.' + side + ' .calendar-table').html(html);
|
||||
this.container.find('.drp-calendar.' + side + ' .calendar-table').html(html);
|
||||
|
||||
},
|
||||
|
||||
|
@ -871,8 +852,8 @@
|
|||
|
||||
var html, selected, minDate, maxDate = this.maxDate;
|
||||
|
||||
if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate)))
|
||||
maxDate = this.startDate.clone().add(this.dateLimit);
|
||||
if (this.maxSpan && (!this.maxDate || this.startDate.clone().add(this.maxSpan).isAfter(this.maxDate)))
|
||||
maxDate = this.startDate.clone().add(this.maxSpan);
|
||||
|
||||
if (side == 'left') {
|
||||
selected = this.startDate.clone();
|
||||
|
@ -882,12 +863,12 @@
|
|||
minDate = this.startDate;
|
||||
|
||||
//Preserve the time already selected
|
||||
var timeSelector = this.container.find('.calendar.right .calendar-time div');
|
||||
if (!this.endDate && timeSelector.html() != '') {
|
||||
var timeSelector = this.container.find('.drp-calendar.right .calendar-time');
|
||||
if (timeSelector.html() != '') {
|
||||
|
||||
selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour());
|
||||
selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute());
|
||||
selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second());
|
||||
selected.hour(selected.hour() || timeSelector.find('.hourselect option:selected').val());
|
||||
selected.minute(selected.minute() || timeSelector.find('.minuteselect option:selected').val());
|
||||
selected.second(selected.second() || timeSelector.find('.secondselect option:selected').val());
|
||||
|
||||
if (!this.timePicker24Hour) {
|
||||
var ampm = timeSelector.find('.ampmselect option:selected').val();
|
||||
|
@ -1020,20 +1001,12 @@
|
|||
html += '</select>';
|
||||
}
|
||||
|
||||
this.container.find('.calendar.' + side + ' .calendar-time div').html(html);
|
||||
this.container.find('.drp-calendar.' + side + ' .calendar-time').html(html);
|
||||
|
||||
},
|
||||
|
||||
updateFormInputs: function() {
|
||||
|
||||
//ignore mouse movements while an above-calendar text input has focus
|
||||
if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
|
||||
return;
|
||||
|
||||
this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format));
|
||||
if (this.endDate)
|
||||
this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format));
|
||||
|
||||
if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {
|
||||
this.container.find('button.applyBtn').removeAttr('disabled');
|
||||
} else {
|
||||
|
@ -1058,7 +1031,7 @@
|
|||
containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;
|
||||
else
|
||||
containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;
|
||||
this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup');
|
||||
this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('drop-up');
|
||||
|
||||
if (this.opens == 'left') {
|
||||
this.container.css({
|
||||
|
@ -1141,7 +1114,7 @@
|
|||
|
||||
//if a new date range was selected, invoke the user callback function
|
||||
if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))
|
||||
this.callback(this.startDate, this.endDate, this.chosenLabel);
|
||||
this.callback(this.startDate.clone(), this.endDate.clone(), this.chosenLabel);
|
||||
|
||||
//if picker is attached to a text input, update it
|
||||
this.updateElement();
|
||||
|
@ -1187,24 +1160,6 @@
|
|||
this.element.trigger('hideCalendar.daterangepicker', this);
|
||||
},
|
||||
|
||||
hoverRange: function(e) {
|
||||
|
||||
//ignore mouse movements while an above-calendar text input has focus
|
||||
if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
|
||||
return;
|
||||
|
||||
var label = e.target.getAttribute('data-range-key');
|
||||
|
||||
if (label == this.locale.customRangeLabel) {
|
||||
this.updateView();
|
||||
} else {
|
||||
var dates = this.ranges[label];
|
||||
this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format));
|
||||
this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format));
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
clickRange: function(e) {
|
||||
var label = e.target.getAttribute('data-range-key');
|
||||
this.chosenLabel = label;
|
||||
|
@ -1227,7 +1182,7 @@
|
|||
},
|
||||
|
||||
clickPrev: function(e) {
|
||||
var cal = $(e.target).parents('.calendar');
|
||||
var cal = $(e.target).parents('.drp-calendar');
|
||||
if (cal.hasClass('left')) {
|
||||
this.leftCalendar.month.subtract(1, 'month');
|
||||
if (this.linkedCalendars)
|
||||
|
@ -1239,7 +1194,7 @@
|
|||
},
|
||||
|
||||
clickNext: function(e) {
|
||||
var cal = $(e.target).parents('.calendar');
|
||||
var cal = $(e.target).parents('.drp-calendar');
|
||||
if (cal.hasClass('left')) {
|
||||
this.leftCalendar.month.add(1, 'month');
|
||||
} else {
|
||||
|
@ -1252,32 +1207,21 @@
|
|||
|
||||
hoverDate: function(e) {
|
||||
|
||||
//ignore mouse movements while an above-calendar text input has focus
|
||||
//if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
|
||||
// return;
|
||||
|
||||
//ignore dates that can't be selected
|
||||
if (!$(e.target).hasClass('available')) return;
|
||||
|
||||
//have the text inputs above calendars reflect the date being hovered over
|
||||
var title = $(e.target).attr('data-title');
|
||||
var row = title.substr(1, 1);
|
||||
var col = title.substr(3, 1);
|
||||
var cal = $(e.target).parents('.calendar');
|
||||
var cal = $(e.target).parents('.drp-calendar');
|
||||
var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];
|
||||
|
||||
if (this.endDate && !this.container.find('input[name=daterangepicker_start]').is(":focus")) {
|
||||
this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format));
|
||||
} else if (!this.endDate && !this.container.find('input[name=daterangepicker_end]').is(":focus")) {
|
||||
this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format));
|
||||
}
|
||||
|
||||
//highlight the dates between the start date and the date being hovered as a potential end date
|
||||
var leftCalendar = this.leftCalendar;
|
||||
var rightCalendar = this.rightCalendar;
|
||||
var startDate = this.startDate;
|
||||
if (!this.endDate) {
|
||||
this.container.find('.calendar td').each(function(index, el) {
|
||||
this.container.find('.drp-calendar tbody td').each(function(index, el) {
|
||||
|
||||
//skip week numbers, only look at dates
|
||||
if ($(el).hasClass('week')) return;
|
||||
|
@ -1285,7 +1229,7 @@
|
|||
var title = $(el).attr('data-title');
|
||||
var row = title.substr(1, 1);
|
||||
var col = title.substr(3, 1);
|
||||
var cal = $(el).parents('.calendar');
|
||||
var cal = $(el).parents('.drp-calendar');
|
||||
var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];
|
||||
|
||||
if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) {
|
||||
|
@ -1306,7 +1250,7 @@
|
|||
var title = $(e.target).attr('data-title');
|
||||
var row = title.substr(1, 1);
|
||||
var col = title.substr(3, 1);
|
||||
var cal = $(e.target).parents('.calendar');
|
||||
var cal = $(e.target).parents('.drp-calendar');
|
||||
var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];
|
||||
|
||||
//
|
||||
|
@ -1376,17 +1320,19 @@
|
|||
var customRange = true;
|
||||
var i = 0;
|
||||
for (var range in this.ranges) {
|
||||
if (this.timePicker) {
|
||||
if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) {
|
||||
if (this.timePicker) {
|
||||
var format = this.timePickerSeconds ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD HH:mm";
|
||||
//ignore times when comparing dates if time picker seconds is not enabled
|
||||
if (this.startDate.format(format) == this.ranges[range][0].format(format) && this.endDate.format(format) == this.ranges[range][1].format(format)) {
|
||||
customRange = false;
|
||||
this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();
|
||||
this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key');
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
//ignore times when comparing dates if time picker is not enabled
|
||||
if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) {
|
||||
customRange = false;
|
||||
this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();
|
||||
this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1394,7 +1340,7 @@
|
|||
}
|
||||
if (customRange) {
|
||||
if (this.showCustomRangeLabel) {
|
||||
this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html();
|
||||
this.chosenLabel = this.container.find('.ranges li:last').addClass('active').attr('data-range-key');
|
||||
} else {
|
||||
this.chosenLabel = null;
|
||||
}
|
||||
|
@ -1415,9 +1361,9 @@
|
|||
},
|
||||
|
||||
monthOrYearChanged: function(e) {
|
||||
var isLeft = $(e.target).closest('.calendar').hasClass('left'),
|
||||
var isLeft = $(e.target).closest('.drp-calendar').hasClass('left'),
|
||||
leftOrRight = isLeft ? 'left' : 'right',
|
||||
cal = this.container.find('.calendar.'+leftOrRight);
|
||||
cal = this.container.find('.drp-calendar.'+leftOrRight);
|
||||
|
||||
// Month must be Number for new moment versions
|
||||
var month = parseInt(cal.find('.monthselect').val(), 10);
|
||||
|
@ -1458,7 +1404,7 @@
|
|||
|
||||
timeChanged: function(e) {
|
||||
|
||||
var cal = $(e.target).closest('.calendar'),
|
||||
var cal = $(e.target).closest('.drp-calendar'),
|
||||
isLeft = cal.hasClass('left');
|
||||
|
||||
var hour = parseInt(cal.find('.hourselect').val(), 10);
|
||||
|
@ -1504,72 +1450,9 @@
|
|||
|
||||
},
|
||||
|
||||
formInputsChanged: function(e) {
|
||||
var isRight = $(e.target).closest('.calendar').hasClass('right');
|
||||
var start = moment(this.container.find('input[name="daterangepicker_start"]').val(), this.locale.format);
|
||||
var end = moment(this.container.find('input[name="daterangepicker_end"]').val(), this.locale.format);
|
||||
|
||||
if (start.isValid() && end.isValid()) {
|
||||
|
||||
if (isRight && end.isBefore(start))
|
||||
start = end.clone();
|
||||
|
||||
this.setStartDate(start);
|
||||
this.setEndDate(end);
|
||||
|
||||
if (isRight) {
|
||||
this.container.find('input[name="daterangepicker_start"]').val(this.startDate.format(this.locale.format));
|
||||
} else {
|
||||
this.container.find('input[name="daterangepicker_end"]').val(this.endDate.format(this.locale.format));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.updateView();
|
||||
},
|
||||
|
||||
formInputsFocused: function(e) {
|
||||
|
||||
// Highlight the focused input
|
||||
this.container.find('input[name="daterangepicker_start"], input[name="daterangepicker_end"]').removeClass('active');
|
||||
$(e.target).addClass('active');
|
||||
|
||||
// Set the state such that if the user goes back to using a mouse,
|
||||
// the calendars are aware we're selecting the end of the range, not
|
||||
// the start. This allows someone to edit the end of a date range without
|
||||
// re-selecting the beginning, by clicking on the end date input then
|
||||
// using the calendar.
|
||||
var isRight = $(e.target).closest('.calendar').hasClass('right');
|
||||
if (isRight) {
|
||||
this.endDate = null;
|
||||
this.setStartDate(this.startDate.clone());
|
||||
this.updateView();
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
formInputsBlurred: function(e) {
|
||||
|
||||
// this function has one purpose right now: if you tab from the first
|
||||
// text input to the second in the UI, the endDate is nulled so that
|
||||
// you can click another, but if you tab out without clicking anything
|
||||
// or changing the input value, the old endDate should be retained
|
||||
|
||||
if (!this.endDate) {
|
||||
var val = this.container.find('input[name="daterangepicker_end"]').val();
|
||||
var end = moment(val, this.locale.format);
|
||||
if (end.isValid()) {
|
||||
this.setEndDate(end);
|
||||
this.updateView();
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
elementChanged: function() {
|
||||
if (!this.element.is('input')) return;
|
||||
if (!this.element.val().length) return;
|
||||
if (this.element.val().length < this.locale.format.length) return;
|
||||
|
||||
var dateString = this.element.val().split(this.locale.separator),
|
||||
start = null,
|
||||
|
@ -1597,15 +1480,25 @@
|
|||
if ((e.keyCode === 9) || (e.keyCode === 13)) {
|
||||
this.hide();
|
||||
}
|
||||
|
||||
//hide on esc and prevent propagation
|
||||
if (e.keyCode === 27) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
|
||||
this.hide();
|
||||
}
|
||||
},
|
||||
|
||||
updateElement: function() {
|
||||
if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {
|
||||
this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
|
||||
this.element.trigger('change');
|
||||
} else if (this.element.is('input') && this.autoUpdateInput) {
|
||||
this.element.val(this.startDate.format(this.locale.format));
|
||||
this.element.trigger('change');
|
||||
if (this.element.is('input') && this.autoUpdateInput) {
|
||||
var newValue = this.startDate.format(this.locale.format);
|
||||
if (!this.singleDatePicker) {
|
||||
newValue += this.locale.separator + this.endDate.format(this.locale.format);
|
||||
}
|
||||
if (newValue !== this.element.val()) {
|
||||
this.element.val(newValue).trigger('change');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -1618,11 +1511,12 @@
|
|||
};
|
||||
|
||||
$.fn.daterangepicker = function(options, callback) {
|
||||
var implementOptions = $.extend(true, {}, $.fn.daterangepicker.defaultOptions, options);
|
||||
this.each(function() {
|
||||
var el = $(this);
|
||||
if (el.data('daterangepicker'))
|
||||
el.data('daterangepicker').remove();
|
||||
el.data('daterangepicker', new DateRangePicker(el, options, callback));
|
||||
el.data('daterangepicker', new DateRangePicker(el, implementOptions, callback));
|
||||
});
|
||||
return this;
|
||||
};
|
||||
|
|
|
@ -1,611 +0,0 @@
|
|||
//
|
||||
// A stylesheet for use with Bootstrap 3.x
|
||||
// @author: Dan Grossman http://www.dangrossman.info/
|
||||
// @copyright: Copyright (c) 2012-2015 Dan Grossman. All rights reserved.
|
||||
// @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
|
||||
// @website: https://www.improvely.com/
|
||||
//
|
||||
|
||||
//
|
||||
// VARIABLES
|
||||
//
|
||||
|
||||
//
|
||||
// Settings
|
||||
|
||||
// The class name to contain everything within.
|
||||
$prefix-class: daterangepicker;
|
||||
$arrow-size: 7px !default;
|
||||
|
||||
//
|
||||
// Colors
|
||||
$daterangepicker-color: inherit !default;
|
||||
$daterangepicker-bg-color: #fff !default;
|
||||
|
||||
$daterangepicker-cell-color: $daterangepicker-color !default;
|
||||
$daterangepicker-cell-border-color: transparent !default;
|
||||
$daterangepicker-cell-bg-color: $daterangepicker-bg-color !default;
|
||||
|
||||
$daterangepicker-cell-hover-color: $daterangepicker-color !default;
|
||||
$daterangepicker-cell-hover-border-color: $daterangepicker-cell-border-color !default;
|
||||
$daterangepicker-cell-hover-bg-color: #eee !default;
|
||||
|
||||
$daterangepicker-in-range-color: #000 !default;
|
||||
$daterangepicker-in-range-border-color: transparent !default;
|
||||
$daterangepicker-in-range-bg-color: #ebf4f8 !default;
|
||||
|
||||
$daterangepicker-active-color: #fff !default;
|
||||
$daterangepicker-active-bg-color: #357ebd !default;
|
||||
$daterangepicker-active-border-color: transparent !default;
|
||||
|
||||
$daterangepicker-unselected-color: #999 !default;
|
||||
$daterangepicker-unselected-border-color: transparent !default;
|
||||
$daterangepicker-unselected-bg-color: #fff !default;
|
||||
|
||||
//
|
||||
// daterangepicker
|
||||
$daterangepicker-width: 278px !default;
|
||||
$daterangepicker-padding: 4px !default;
|
||||
$daterangepicker-z-index: 3000 !default;
|
||||
|
||||
$daterangepicker-border-size: 1px !default;
|
||||
$daterangepicker-border-color: #ccc !default;
|
||||
$daterangepicker-border-radius: 4px !default;
|
||||
|
||||
|
||||
//
|
||||
// Calendar
|
||||
$daterangepicker-calendar-margin: $daterangepicker-padding !default;
|
||||
$daterangepicker-calendar-bg-color: $daterangepicker-bg-color !default;
|
||||
|
||||
$daterangepicker-calendar-border-size: 1px !default;
|
||||
$daterangepicker-calendar-border-color: $daterangepicker-bg-color !default;
|
||||
$daterangepicker-calendar-border-radius: $daterangepicker-border-radius !default;
|
||||
|
||||
//
|
||||
// Calendar Cells
|
||||
$daterangepicker-cell-size: 20px !default;
|
||||
$daterangepicker-cell-width: $daterangepicker-cell-size !default;
|
||||
$daterangepicker-cell-height: $daterangepicker-cell-size !default;
|
||||
|
||||
$daterangepicker-cell-border-radius: $daterangepicker-calendar-border-radius !default;
|
||||
$daterangepicker-cell-border-size: 1px !default;
|
||||
|
||||
//
|
||||
// Dropdowns
|
||||
$daterangepicker-dropdown-z-index: $daterangepicker-z-index + 1 !default;
|
||||
|
||||
//
|
||||
// Controls
|
||||
$daterangepicker-control-height: 30px !default;
|
||||
$daterangepicker-control-line-height: $daterangepicker-control-height !default;
|
||||
$daterangepicker-control-color: #555 !default;
|
||||
|
||||
$daterangepicker-control-border-size: 1px !default;
|
||||
$daterangepicker-control-border-color: #ccc !default;
|
||||
$daterangepicker-control-border-radius: 4px !default;
|
||||
|
||||
$daterangepicker-control-active-border-size: 1px !default;
|
||||
$daterangepicker-control-active-border-color: #08c !default;
|
||||
$daterangepicker-control-active-border-radius: $daterangepicker-control-border-radius !default;
|
||||
|
||||
$daterangepicker-control-disabled-color: #ccc !default;
|
||||
|
||||
//
|
||||
// Ranges
|
||||
$daterangepicker-ranges-color: #08c !default;
|
||||
$daterangepicker-ranges-bg-color: #f5f5f5 !default;
|
||||
|
||||
$daterangepicker-ranges-border-size: 1px !default;
|
||||
$daterangepicker-ranges-border-color: $daterangepicker-ranges-bg-color !default;
|
||||
$daterangepicker-ranges-border-radius: $daterangepicker-border-radius !default;
|
||||
|
||||
$daterangepicker-ranges-hover-color: #fff !default;
|
||||
$daterangepicker-ranges-hover-bg-color: $daterangepicker-ranges-color !default;
|
||||
$daterangepicker-ranges-hover-border-size: $daterangepicker-ranges-border-size !default;
|
||||
$daterangepicker-ranges-hover-border-color: $daterangepicker-ranges-hover-bg-color !default;
|
||||
$daterangepicker-ranges-hover-border-radius: $daterangepicker-border-radius !default;
|
||||
|
||||
$daterangepicker-ranges-active-border-size: $daterangepicker-ranges-border-size !default;
|
||||
$daterangepicker-ranges-active-border-color: $daterangepicker-ranges-bg-color !default;
|
||||
$daterangepicker-ranges-active-border-radius: $daterangepicker-border-radius !default;
|
||||
|
||||
//
|
||||
// STYLESHEETS
|
||||
//
|
||||
.#{$prefix-class} {
|
||||
position: absolute;
|
||||
color: $daterangepicker-color;
|
||||
background: $daterangepicker-bg-color;
|
||||
border-radius: $daterangepicker-border-radius;
|
||||
width: $daterangepicker-width;
|
||||
padding: $daterangepicker-padding;
|
||||
margin-top: $daterangepicker-border-size;
|
||||
|
||||
// TODO: Should these be parameterized??
|
||||
top: 100px;
|
||||
left: 20px;
|
||||
|
||||
$arrow-prefix-size: $arrow-size;
|
||||
$arrow-suffix-size: ($arrow-size - $daterangepicker-border-size);
|
||||
|
||||
&:before, &:after {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
content: '';
|
||||
}
|
||||
|
||||
&:before {
|
||||
top: -$arrow-prefix-size;
|
||||
|
||||
border-right: $arrow-prefix-size solid transparent;
|
||||
border-left: $arrow-prefix-size solid transparent;
|
||||
border-bottom: $arrow-prefix-size solid $daterangepicker-border-color;
|
||||
}
|
||||
|
||||
&:after {
|
||||
top: -$arrow-suffix-size;
|
||||
|
||||
border-right: $arrow-suffix-size solid transparent;
|
||||
border-bottom: $arrow-suffix-size solid $daterangepicker-bg-color;
|
||||
border-left: $arrow-suffix-size solid transparent;
|
||||
}
|
||||
|
||||
&.opensleft {
|
||||
&:before {
|
||||
// TODO: Make this relative to prefix size.
|
||||
right: $arrow-prefix-size + 2px;
|
||||
}
|
||||
|
||||
&:after {
|
||||
// TODO: Make this relative to suffix size.
|
||||
right: $arrow-suffix-size + 4px;
|
||||
}
|
||||
}
|
||||
|
||||
&.openscenter {
|
||||
&:before {
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 0;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
&:after {
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 0;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
}
|
||||
|
||||
&.opensright {
|
||||
&:before {
|
||||
// TODO: Make this relative to prefix size.
|
||||
left: $arrow-prefix-size + 2px;
|
||||
}
|
||||
|
||||
&:after {
|
||||
// TODO: Make this relative to suffix size.
|
||||
left: $arrow-suffix-size + 4px;
|
||||
}
|
||||
}
|
||||
|
||||
&.dropup {
|
||||
margin-top: -5px;
|
||||
|
||||
// NOTE: Note sure why these are special-cased.
|
||||
&:before {
|
||||
top: initial;
|
||||
bottom: -$arrow-prefix-size;
|
||||
border-bottom: initial;
|
||||
border-top: $arrow-prefix-size solid $daterangepicker-border-color;
|
||||
}
|
||||
|
||||
&:after {
|
||||
top: initial;
|
||||
bottom:-$arrow-suffix-size;
|
||||
border-bottom: initial;
|
||||
border-top: $arrow-suffix-size solid $daterangepicker-bg-color;
|
||||
}
|
||||
}
|
||||
|
||||
&.dropdown-menu {
|
||||
max-width: none;
|
||||
z-index: $daterangepicker-dropdown-z-index;
|
||||
}
|
||||
|
||||
&.single {
|
||||
.ranges, .calendar {
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Calendars */
|
||||
&.show-calendar {
|
||||
.calendar {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.calendar {
|
||||
display: none;
|
||||
max-width: $daterangepicker-width - ($daterangepicker-calendar-margin * 2);
|
||||
margin: $daterangepicker-calendar-margin;
|
||||
|
||||
&.single {
|
||||
.calendar-table {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
th, td {
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
|
||||
// TODO: Should this actually be hard-coded?
|
||||
min-width: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
.calendar-table {
|
||||
border: $daterangepicker-calendar-border-size solid $daterangepicker-calendar-border-color;
|
||||
padding: $daterangepicker-calendar-margin;
|
||||
border-radius: $daterangepicker-calendar-border-radius;
|
||||
background: $daterangepicker-calendar-bg-color;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
td, th {
|
||||
text-align: center;
|
||||
width: $daterangepicker-cell-width;
|
||||
height: $daterangepicker-cell-height;
|
||||
border-radius: $daterangepicker-cell-border-radius;
|
||||
border: $daterangepicker-cell-border-size solid $daterangepicker-cell-border-color;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
|
||||
&.available {
|
||||
&:hover {
|
||||
background-color: $daterangepicker-cell-hover-bg-color;
|
||||
border-color: $daterangepicker-cell-hover-border-color;
|
||||
color: $daterangepicker-cell-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
&.week {
|
||||
font-size: 80%;
|
||||
color: #ccc;
|
||||
}
|
||||
}
|
||||
|
||||
td {
|
||||
&.off {
|
||||
&, &.in-range, &.start-date, &.end-date {
|
||||
background-color: $daterangepicker-unselected-bg-color;
|
||||
border-color: $daterangepicker-unselected-border-color;
|
||||
color: $daterangepicker-unselected-color;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Date Range
|
||||
&.in-range {
|
||||
background-color: $daterangepicker-in-range-bg-color;
|
||||
border-color: $daterangepicker-in-range-border-color;
|
||||
color: $daterangepicker-in-range-color;
|
||||
|
||||
// TODO: Should this be static or should it be parameterized?
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
&.start-date {
|
||||
border-radius: $daterangepicker-cell-border-radius 0 0 $daterangepicker-cell-border-radius;
|
||||
}
|
||||
|
||||
&.end-date {
|
||||
border-radius: 0 $daterangepicker-cell-border-radius $daterangepicker-cell-border-radius 0;
|
||||
}
|
||||
|
||||
&.start-date.end-date {
|
||||
border-radius: $daterangepicker-cell-border-radius;
|
||||
}
|
||||
|
||||
&.active {
|
||||
&, &:hover {
|
||||
background-color: $daterangepicker-active-bg-color;
|
||||
border-color: $daterangepicker-active-border-color;
|
||||
color: $daterangepicker-active-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
th {
|
||||
&.month {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Disabled Controls
|
||||
//
|
||||
td, option {
|
||||
&.disabled {
|
||||
color: #999;
|
||||
cursor: not-allowed;
|
||||
text-decoration: line-through;
|
||||
}
|
||||
}
|
||||
|
||||
select {
|
||||
&.monthselect, &.yearselect {
|
||||
font-size: 12px;
|
||||
padding: 1px;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
&.monthselect {
|
||||
margin-right: 2%;
|
||||
width: 56%;
|
||||
}
|
||||
|
||||
&.yearselect {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
&.hourselect, &.minuteselect, &.secondselect, &.ampmselect {
|
||||
width: 50px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Text Input Controls (above calendar)
|
||||
//
|
||||
.input-mini {
|
||||
border: $daterangepicker-control-border-size solid $daterangepicker-control-border-color;
|
||||
border-radius: $daterangepicker-control-border-radius;
|
||||
color: $daterangepicker-control-color;
|
||||
height: $daterangepicker-control-line-height;
|
||||
line-height: $daterangepicker-control-height;
|
||||
display: block;
|
||||
vertical-align: middle;
|
||||
|
||||
// TODO: Should these all be static, too??
|
||||
margin: 0 0 5px 0;
|
||||
padding: 0 6px 0 28px;
|
||||
width: 100%;
|
||||
|
||||
&.active {
|
||||
border: $daterangepicker-control-active-border-size solid $daterangepicker-control-active-border-color;
|
||||
border-radius: $daterangepicker-control-active-border-radius;
|
||||
}
|
||||
}
|
||||
|
||||
.daterangepicker_input {
|
||||
position: relative;
|
||||
|
||||
i {
|
||||
position: absolute;
|
||||
|
||||
// NOTE: These appear to be eyeballed to me...
|
||||
left: 8px;
|
||||
top: 8px;
|
||||
}
|
||||
}
|
||||
&.rtl {
|
||||
.input-mini {
|
||||
padding-right: 28px;
|
||||
padding-left: 6px;
|
||||
}
|
||||
.daterangepicker_input i {
|
||||
left: auto;
|
||||
right: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Time Picker
|
||||
//
|
||||
.calendar-time {
|
||||
text-align: center;
|
||||
margin: 5px auto;
|
||||
line-height: $daterangepicker-control-line-height;
|
||||
position: relative;
|
||||
padding-left: 28px;
|
||||
|
||||
select {
|
||||
&.disabled {
|
||||
color: $daterangepicker-control-disabled-color;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Predefined Ranges
|
||||
//
|
||||
|
||||
.ranges {
|
||||
font-size: 11px;
|
||||
float: none;
|
||||
margin: 4px;
|
||||
text-align: left;
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
li {
|
||||
font-size: 13px;
|
||||
background: $daterangepicker-ranges-bg-color;
|
||||
border: $daterangepicker-ranges-border-size solid $daterangepicker-ranges-border-color;
|
||||
border-radius: $daterangepicker-ranges-border-radius;
|
||||
color: $daterangepicker-ranges-color;
|
||||
padding: 3px 12px;
|
||||
margin-bottom: 8px;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
background: $daterangepicker-ranges-hover-bg-color;
|
||||
border: $daterangepicker-ranges-hover-border-size solid $daterangepicker-ranges-hover-border-color;
|
||||
color: $daterangepicker-ranges-hover-color;
|
||||
}
|
||||
|
||||
&.active {
|
||||
background: $daterangepicker-ranges-hover-bg-color;
|
||||
border: $daterangepicker-ranges-hover-border-size solid $daterangepicker-ranges-hover-border-color;
|
||||
color: $daterangepicker-ranges-hover-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Larger Screen Styling */
|
||||
@media (min-width: 564px) {
|
||||
.#{$prefix-class} {
|
||||
width: auto;
|
||||
|
||||
.ranges {
|
||||
ul {
|
||||
width: 160px;
|
||||
}
|
||||
}
|
||||
|
||||
&.single {
|
||||
.ranges {
|
||||
ul {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.calendar.left {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
&.ltr {
|
||||
.ranges, .calendar {
|
||||
float:left;
|
||||
}
|
||||
}
|
||||
&.rtl {
|
||||
.ranges, .calendar {
|
||||
float:right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.ltr {
|
||||
direction: ltr;
|
||||
text-align: left;
|
||||
.calendar{
|
||||
&.left {
|
||||
clear: left;
|
||||
margin-right: 0;
|
||||
|
||||
.calendar-table {
|
||||
border-right: none;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.right {
|
||||
margin-left: 0;
|
||||
|
||||
.calendar-table {
|
||||
border-left: none;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.left .daterangepicker_input {
|
||||
padding-right: 12px;
|
||||
}
|
||||
|
||||
.calendar.left .calendar-table {
|
||||
padding-right: 12px;
|
||||
}
|
||||
|
||||
.ranges, .calendar {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
&.rtl {
|
||||
direction: rtl;
|
||||
text-align: right;
|
||||
.calendar{
|
||||
&.left {
|
||||
clear: right;
|
||||
margin-left: 0;
|
||||
|
||||
.calendar-table {
|
||||
border-left: none;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.right {
|
||||
margin-right: 0;
|
||||
|
||||
.calendar-table {
|
||||
border-right: none;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.left .daterangepicker_input {
|
||||
padding-left: 12px;
|
||||
}
|
||||
|
||||
.calendar.left .calendar-table {
|
||||
padding-left: 12px;
|
||||
}
|
||||
|
||||
.ranges, .calendar {
|
||||
text-align: right;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 730px) {
|
||||
.#{$prefix-class} {
|
||||
.ranges {
|
||||
width: auto;
|
||||
}
|
||||
&.ltr {
|
||||
.ranges {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
&.rtl {
|
||||
.ranges {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
.calendar.left {
|
||||
clear: none !important;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -3,11 +3,15 @@
|
|||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>A date range picker for Bootstrap</title>
|
||||
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!--<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" />-->
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="all" href="daterangepicker.css" />
|
||||
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="moment.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>
|
||||
|
||||
<script type="text/javascript" src="daterangepicker.js"></script>
|
||||
|
||||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
|
@ -89,7 +93,7 @@
|
|||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" id="timePicker"> timePicker
|
||||
<input type="checkbox" id="timePicker" checked="checked"> timePicker
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
@ -118,7 +122,7 @@
|
|||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" id="ranges"> ranges (with example predefined ranges)
|
||||
<input type="checkbox" id="ranges" checked="checked"> ranges (with example predefined ranges)
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
@ -201,8 +205,9 @@
|
|||
|
||||
<div class="col-md-4 col-md-offset-2 demo">
|
||||
<h4>Your Date Range Picker</h4>
|
||||
<input type="text" id="config-demo" class="form-control">
|
||||
<i class="glyphicon glyphicon-calendar fa fa-calendar"></i>
|
||||
<center>
|
||||
<input type="text" id="config-demo" class="form-control">
|
||||
</center>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
|
@ -358,7 +363,7 @@
|
|||
|
||||
$('#config-text').val("$('#demo').daterangepicker(" + JSON.stringify(options, null, ' ') + ", function(start, end, label) {\n console.log(\"New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')\");\n});");
|
||||
|
||||
$('#config-demo').daterangepicker(options, function(start, end, label) { console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')'); });
|
||||
$('#config-demo').daterangepicker(options, function(start, end, label) { console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')'); }).click();;
|
||||
|
||||
}
|
||||
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 211 KiB After Width: | Height: | Size: 157 KiB |
|
@ -1,17 +1,16 @@
|
|||
Package.describe({
|
||||
name: 'dangrossman:bootstrap-daterangepicker',
|
||||
version: '2.1.24',
|
||||
summary: 'Date range picker component for Bootstrap',
|
||||
git: 'https://github.com/dangrossman/bootstrap-daterangepicker',
|
||||
version: '3.0.3',
|
||||
summary: 'Date range picker component',
|
||||
git: 'https://github.com/dangrossman/daterangepicker',
|
||||
documentation: 'README.md'
|
||||
});
|
||||
|
||||
Package.onUse(function(api) {
|
||||
api.versionsFrom('METEOR@0.9.0.1');
|
||||
|
||||
api.use('twbs:bootstrap@3.3.4', ["client"], {weak: true});
|
||||
api.use('momentjs:moment@2.10.3', ["client"]);
|
||||
api.use('jquery@1.11.3_2', ["client"]);
|
||||
api.use('momentjs:moment@2.22.1', ["client"]);
|
||||
api.use('jquery@3.3.1', ["client"]);
|
||||
|
||||
api.addFiles('daterangepicker.js', ["client"]);
|
||||
api.addFiles('daterangepicker.css', ["client"]);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "bootstrap-daterangepicker",
|
||||
"version": "2.1.24",
|
||||
"name": "daterangepicker",
|
||||
"version": "3.0.3",
|
||||
"description": "Date range picker component for Bootstrap",
|
||||
"main": "daterangepicker.js",
|
||||
"style": "daterangepicker.css",
|
||||
|
@ -10,7 +10,7 @@
|
|||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/dangrossman/bootstrap-daterangepicker.git"
|
||||
"url": "https://github.com/dangrossman/daterangepicker.git"
|
||||
},
|
||||
"author": {
|
||||
"name": "Dan Grossman",
|
||||
|
@ -19,9 +19,9 @@
|
|||
},
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/dangrossman/bootstrap-daterangepicker/issues"
|
||||
"url": "https://github.com/dangrossman/daterangepicker/issues"
|
||||
},
|
||||
"homepage": "https://github.com/dangrossman/bootstrap-daterangepicker",
|
||||
"homepage": "https://github.com/dangrossman/daterangepicker",
|
||||
"dependencies": {
|
||||
"jquery": ">=1.10",
|
||||
"moment": "^2.9.0"
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -4,90 +4,131 @@ body {
|
|||
position: relative;
|
||||
margin: 0;
|
||||
}
|
||||
.container {
|
||||
width: 95%;
|
||||
max-width: 1260px;
|
||||
|
||||
.navbar .nav-item {
|
||||
padding: 8px 0 8px 20px;
|
||||
}
|
||||
|
||||
.navbar .nav-link {
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.navbar-expand-sm .navbar-nav .nav-link {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.well {
|
||||
background: #f5f5f5;
|
||||
border-radius: 4px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 20px;
|
||||
margin-bottom: 1em;
|
||||
padding-bottom: 5px;
|
||||
border-bottom: 1px dotted #08c;
|
||||
}
|
||||
|
||||
h1:before {
|
||||
content: '#';
|
||||
color: #666;
|
||||
position: relative;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
padding: 0;
|
||||
margin: 20px 0 0 0;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
h2 a {
|
||||
color: #444;
|
||||
display: block;
|
||||
background: #eee;
|
||||
padding: 8px 12px;
|
||||
margin-bottom: 0;
|
||||
cursor: default;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
input.form-control {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.collapsable {
|
||||
border: 1px solid #eee;
|
||||
padding: 12px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
label {
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.gist {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.gist .blob-wrapper.data {
|
||||
max-height: 350px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.list-group-item {
|
||||
padding: 4px 0;
|
||||
border: 0;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.leftcol {
|
||||
position: absolute;
|
||||
top: 180px;
|
||||
}
|
||||
|
||||
.rightcol {
|
||||
max-width: 950px;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1300px;
|
||||
}
|
||||
|
||||
@media (min-width: 980px) {
|
||||
.rightcol {
|
||||
margin-left: 320px;
|
||||
}
|
||||
}
|
||||
|
||||
p, pre {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
.main h2 {
|
||||
font-weight: bold;
|
||||
margin: 60px 0 20px 0;
|
||||
}
|
||||
.main h3 {
|
||||
margin: 60px 0 20px 0;
|
||||
}
|
||||
.main h4 {
|
||||
margin: 0 0 10px 0;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.nobullets {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-position: inside;
|
||||
list-style: none;
|
||||
}
|
||||
li {
|
||||
ul.nobullets li {
|
||||
padding-bottom: 1em;
|
||||
margin-bottom: 1em;
|
||||
border-bottom: 1px dotted #ddd;
|
||||
}
|
||||
#sidebar {
|
||||
top: 20px;
|
||||
width: 300px;
|
||||
}
|
||||
#sidebar ul {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
#sidebar li {
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
#sidebar li ul {
|
||||
display: none;
|
||||
}
|
||||
#sidebar li.active ul {
|
||||
display: block;
|
||||
}
|
||||
#sidebar li li {
|
||||
padding: 4px 0;
|
||||
}
|
||||
|
||||
input[type="text"] {
|
||||
padding: 6px;
|
||||
width: 100%;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.navbar {
|
||||
text-align: left;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
.navbar-inverse {
|
||||
background: #222;
|
||||
}
|
||||
.navbar .container {
|
||||
padding: 0 20px;
|
||||
}
|
||||
.navbar-nav li a:link, .navbar-nav li a:visited {
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
}
|
||||
.navbar-nav li {
|
||||
background: #fff;
|
||||
}
|
||||
.navbar-nav li a:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
.navbar-nav li {
|
||||
padding: 0;
|
||||
}
|
||||
.navbar-inverse .navbar-text {
|
||||
margin: 18px 0 0 0;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
#footer {
|
||||
background: #222;
|
||||
margin-top: 80px;
|
||||
padding: 30px;
|
||||
padding: 10px;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
@ -96,32 +137,16 @@ input[type="text"] {
|
|||
border-bottom: 1px dotted #fff;
|
||||
}
|
||||
#jumbo {
|
||||
background: #f5f5f5 linear-gradient(to bottom,#eee 0,#f5f5f5 100%);
|
||||
background: #c1deef;
|
||||
color: #000;
|
||||
padding: 30px 0;
|
||||
margin-bottom: 30px;
|
||||
padding: 20px 0;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#jumbo h1 {
|
||||
font-size: 28px;
|
||||
}
|
||||
#jumbo .btn {
|
||||
border-radius: 0;
|
||||
}
|
||||
#config .demo { position: relative; }
|
||||
#config .demo i { position: absolute; bottom: 10px; right: 24px; top: auto; cursor: pointer; }
|
||||
|
||||
#rightcol {
|
||||
margin-left: 330px;
|
||||
}
|
||||
|
||||
#nav-spy {
|
||||
float: left;
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
@media (max-width: 980px) {
|
||||
#rightcol {
|
||||
margin-left: 0;
|
||||
}
|
||||
#nav-spy {
|
||||
float: none;
|
||||
position: relative;
|
||||
}
|
||||
font-size: 16px;
|
||||
}
|
|
@ -22,7 +22,7 @@ $(document).ready(function() {
|
|||
startDate: moment()
|
||||
});
|
||||
|
||||
updateConfig();
|
||||
//updateConfig();
|
||||
|
||||
function updateConfig() {
|
||||
var options = {};
|
||||
|
@ -33,6 +33,12 @@ $(document).ready(function() {
|
|||
if ($('#showDropdowns').is(':checked'))
|
||||
options.showDropdowns = true;
|
||||
|
||||
if ($('#minYear').val().length && $('#minYear').val() != 1)
|
||||
options.minYear = parseInt($('#minYear').val(), 10);
|
||||
|
||||
if ($('#maxYear').val().length && $('#maxYear').val() != 1)
|
||||
options.maxYear = parseInt($('#maxYear').val(), 10);
|
||||
|
||||
if ($('#showWeekNumbers').is(':checked'))
|
||||
options.showWeekNumbers = true;
|
||||
|
||||
|
@ -54,8 +60,8 @@ $(document).ready(function() {
|
|||
if ($('#autoApply').is(':checked'))
|
||||
options.autoApply = true;
|
||||
|
||||
if ($('#dateLimit').is(':checked'))
|
||||
options.dateLimit = { days: 7 };
|
||||
if ($('#maxSpan').is(':checked'))
|
||||
options.maxSpan = { days: 7 };
|
||||
|
||||
if ($('#ranges').is(':checked')) {
|
||||
options.ranges = {
|
||||
|
@ -120,27 +126,54 @@ $(document).ready(function() {
|
|||
if ($('#buttonClasses').val().length && $('#buttonClasses').val() != 'btn btn-sm')
|
||||
options.buttonClasses = $('#buttonClasses').val();
|
||||
|
||||
if ($('#applyClass').val().length && $('#applyClass').val() != 'btn-success')
|
||||
options.applyClass = $('#applyClass').val();
|
||||
if ($('#applyButtonClasses').val().length && $('#applyButtonClasses').val() != 'btn-primary')
|
||||
options.applyButtonClasses = $('#applyButtonClasses').val();
|
||||
|
||||
if ($('#cancelClass').val().length && $('#cancelClass').val() != 'btn-default')
|
||||
options.cancelClass = $('#cancelClass').val();
|
||||
|
||||
$('#config-text').val("$('#demo').daterangepicker(" + JSON.stringify(options, null, ' ') + ", function(start, end, label) {\n console.log(\"New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')\");\n});");
|
||||
if ($('#cancelButtonClasses').val().length && $('#cancelButtonClasses').val() != 'btn-default')
|
||||
options.cancelClass = $('#cancelButtonClasses').val();
|
||||
|
||||
$('#config-demo').daterangepicker(options, function(start, end, label) { console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')'); });
|
||||
|
||||
if (typeof options.ranges !== 'undefined') {
|
||||
options.ranges = {};
|
||||
}
|
||||
|
||||
var option_text = JSON.stringify(options, null, ' ');
|
||||
|
||||
var replacement = "ranges: {\n"
|
||||
+ " 'Today': [moment(), moment()],\n"
|
||||
+ " 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n"
|
||||
+ " 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n"
|
||||
+ " 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\n"
|
||||
+ " 'This Month': [moment().startOf('month'), moment().endOf('month')],\n"
|
||||
+ " 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]\n"
|
||||
+ " }";
|
||||
option_text = option_text.replace(new RegExp('"ranges"\: \{\}', 'g'), replacement);
|
||||
|
||||
$('#config-text').val("$('#demo').daterangepicker(" + option_text + ", function(start, end, label) {\n console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')');\n});");
|
||||
|
||||
}
|
||||
|
||||
if ($(window).width() > 980) {
|
||||
$('#sidebar').affix({
|
||||
offset: {
|
||||
top: 300,
|
||||
bottom: function () {
|
||||
return (this.bottom = $('.footer').outerHeight(true))
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
$('body').scrollspy({ target: '#nav-spy', offset: 20 });
|
||||
$(window).scroll(function (event) {
|
||||
var scroll = $(window).scrollTop();
|
||||
if (scroll > 180) {
|
||||
$('.leftcol').css('position', 'fixed');
|
||||
$('.leftcol').css('top', '10px');
|
||||
} else {
|
||||
$('.leftcol').css('position', 'absolute');
|
||||
$('.leftcol').css('top', '180px');
|
||||
}
|
||||
});
|
||||
|
||||
var bg = new Trianglify({
|
||||
x_colors: ["#e1f3fd", "#eeeeee", "#407dbf"],
|
||||
y_colors: 'match_x',
|
||||
width: document.body.clientWidth,
|
||||
height: 150,
|
||||
stroke_width: 0,
|
||||
cell_size: 20
|
||||
});
|
||||
|
||||
$('#jumbo').css('background-image', 'url(' + bg.png() + ')');
|
||||
|
||||
});
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
"framework",
|
||||
"web"
|
||||
],
|
||||
"homepage": "http://getbootstrap.com",
|
||||
"homepage": "https://getbootstrap.com/",
|
||||
"license": "MIT",
|
||||
"moduleType": "globals",
|
||||
"main": [
|
||||
|
@ -29,16 +29,16 @@
|
|||
"test-infra"
|
||||
],
|
||||
"dependencies": {
|
||||
"jquery": "1.9.1 - 2"
|
||||
"jquery": "1.9.1 - 3"
|
||||
},
|
||||
"version": "3.3.6",
|
||||
"_release": "3.3.6",
|
||||
"version": "3.4.1",
|
||||
"_release": "3.4.1",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v3.3.6",
|
||||
"commit": "81df608a40bf0629a1dc08e584849bb1e43e0b7a"
|
||||
"tag": "v3.4.1",
|
||||
"commit": "68b0d231a13201eb14acd3dc84e51543d16e5f7e"
|
||||
},
|
||||
"_source": "https://github.com/twbs/bootstrap.git",
|
||||
"_target": "^3.3.6",
|
||||
"_target": "^3.4.1",
|
||||
"_originalSource": "bootstrap"
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
Bootstrap uses [GitHub's Releases feature](https://github.com/blog/1547-release-your-software) for its changelogs.
|
||||
Bootstrap uses [GitHub's Releases feature](https://blog.github.com/2013-07-02-release-your-software/) for its changelogs.
|
||||
|
||||
See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap.
|
||||
|
||||
Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release.
|
||||
Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release.
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
source 'https://rubygems.org'
|
||||
|
||||
group :development, :test do
|
||||
gem 'jekyll', '~> 3.8.5'
|
||||
gem 'jekyll-redirect-from', '~> 0.14.0'
|
||||
gem 'jekyll-sitemap', '~> 1.2.0'
|
||||
gem 'wdm', '~> 0.1.1', :install_if => Gem.win_platform?
|
||||
end
|
|
@ -0,0 +1,74 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
addressable (2.6.0)
|
||||
public_suffix (>= 2.0.2, < 4.0)
|
||||
colorator (1.1.0)
|
||||
concurrent-ruby (1.1.4)
|
||||
em-websocket (0.5.1)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0.6.0)
|
||||
eventmachine (1.2.7)
|
||||
eventmachine (1.2.7-x64-mingw32)
|
||||
ffi (1.10.0)
|
||||
ffi (1.10.0-x64-mingw32)
|
||||
forwardable-extended (2.6.0)
|
||||
http_parser.rb (0.6.0)
|
||||
i18n (0.9.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (3.8.5)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 0.7)
|
||||
jekyll-sass-converter (~> 1.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
kramdown (~> 1.14)
|
||||
liquid (~> 4.0)
|
||||
mercenary (~> 0.3.3)
|
||||
pathutil (~> 0.9)
|
||||
rouge (>= 1.7, < 4)
|
||||
safe_yaml (~> 1.0)
|
||||
jekyll-redirect-from (0.14.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-sass-converter (1.5.2)
|
||||
sass (~> 3.4)
|
||||
jekyll-sitemap (1.2.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-watch (2.1.2)
|
||||
listen (~> 3.0)
|
||||
kramdown (1.17.0)
|
||||
liquid (4.0.1)
|
||||
listen (3.1.5)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
ruby_dep (~> 1.2)
|
||||
mercenary (0.3.6)
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (3.0.3)
|
||||
rb-fsevent (0.10.3)
|
||||
rb-inotify (0.10.0)
|
||||
ffi (~> 1.0)
|
||||
rouge (3.3.0)
|
||||
ruby_dep (1.5.0)
|
||||
safe_yaml (1.0.4)
|
||||
sass (3.7.3)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
wdm (0.1.1)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
x64-mingw32
|
||||
|
||||
DEPENDENCIES
|
||||
jekyll (~> 3.8.5)
|
||||
jekyll-redirect-from (~> 0.14.0)
|
||||
jekyll-sitemap (~> 1.2.0)
|
||||
wdm (~> 0.1.1)
|
||||
|
||||
BUNDLED WITH
|
||||
1.17.3
|
|
@ -1,7 +1,7 @@
|
|||
/*!
|
||||
* Bootstrap's Gruntfile
|
||||
* http://getbootstrap.com
|
||||
* Copyright 2013-2015 Twitter, Inc.
|
||||
* https://getbootstrap.com/
|
||||
* Copyright 2013-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
|
@ -17,7 +17,6 @@ module.exports = function (grunt) {
|
|||
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var npmShrinkwrap = require('npm-shrinkwrap');
|
||||
var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js');
|
||||
var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js');
|
||||
var getLessVarsData = function () {
|
||||
|
@ -105,7 +104,7 @@ module.exports = function (grunt) {
|
|||
banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>',
|
||||
stripBanners: false
|
||||
},
|
||||
bootstrap: {
|
||||
core: {
|
||||
src: [
|
||||
'js/transition.js',
|
||||
'js/alert.js',
|
||||
|
@ -126,78 +125,90 @@ module.exports = function (grunt) {
|
|||
|
||||
uglify: {
|
||||
options: {
|
||||
compress: {
|
||||
warnings: false
|
||||
},
|
||||
compress: true,
|
||||
mangle: true,
|
||||
preserveComments: 'some'
|
||||
ie8: true,
|
||||
output: {
|
||||
comments: /^!|@preserve|@license|@cc_on/i
|
||||
}
|
||||
},
|
||||
core: {
|
||||
src: '<%= concat.bootstrap.dest %>',
|
||||
src: '<%= concat.core.dest %>',
|
||||
dest: 'dist/js/<%= pkg.name %>.min.js'
|
||||
},
|
||||
customize: {
|
||||
src: configBridge.paths.customizerJs,
|
||||
dest: 'docs/assets/js/customize.min.js'
|
||||
},
|
||||
docsJs: {
|
||||
docs: {
|
||||
src: configBridge.paths.docsJs,
|
||||
dest: 'docs/assets/js/docs.min.js'
|
||||
}
|
||||
},
|
||||
|
||||
qunit: {
|
||||
options: {
|
||||
inject: 'js/tests/unit/phantom.js'
|
||||
},
|
||||
files: 'js/tests/index.html'
|
||||
},
|
||||
|
||||
less: {
|
||||
compileCore: {
|
||||
options: {
|
||||
ieCompat: true,
|
||||
strictMath: true,
|
||||
sourceMap: true,
|
||||
outputSourceFiles: true
|
||||
},
|
||||
core: {
|
||||
options: {
|
||||
strictMath: true,
|
||||
sourceMap: true,
|
||||
outputSourceFiles: true,
|
||||
sourceMapURL: '<%= pkg.name %>.css.map',
|
||||
sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map'
|
||||
},
|
||||
src: 'less/bootstrap.less',
|
||||
dest: 'dist/css/<%= pkg.name %>.css'
|
||||
},
|
||||
compileTheme: {
|
||||
theme: {
|
||||
options: {
|
||||
strictMath: true,
|
||||
sourceMap: true,
|
||||
outputSourceFiles: true,
|
||||
sourceMapURL: '<%= pkg.name %>-theme.css.map',
|
||||
sourceMapFilename: 'dist/css/<%= pkg.name %>-theme.css.map'
|
||||
},
|
||||
src: 'less/theme.less',
|
||||
dest: 'dist/css/<%= pkg.name %>-theme.css'
|
||||
},
|
||||
docs: {
|
||||
options: {
|
||||
sourceMapURL: 'docs.css.map',
|
||||
sourceMapFilename: 'docs/assets/css/docs.css.map'
|
||||
},
|
||||
src: 'docs/assets/less/docs.less',
|
||||
dest: 'docs/assets/css/docs.css'
|
||||
},
|
||||
docsIe: {
|
||||
options: {
|
||||
sourceMap: false
|
||||
},
|
||||
src: 'docs/assets/less/ie10-viewport-bug-workaround.less',
|
||||
dest: 'docs/assets/css/ie10-viewport-bug-workaround.css'
|
||||
}
|
||||
},
|
||||
|
||||
autoprefixer: {
|
||||
postcss: {
|
||||
options: {
|
||||
browsers: configBridge.config.autoprefixerBrowsers
|
||||
map: {
|
||||
inline: false,
|
||||
sourcesContent: true
|
||||
},
|
||||
processors: [
|
||||
require('autoprefixer')(configBridge.config.autoprefixer)
|
||||
]
|
||||
},
|
||||
core: {
|
||||
options: {
|
||||
map: true
|
||||
},
|
||||
src: 'dist/css/<%= pkg.name %>.css'
|
||||
},
|
||||
theme: {
|
||||
options: {
|
||||
map: true
|
||||
},
|
||||
src: 'dist/css/<%= pkg.name %>-theme.css'
|
||||
},
|
||||
docs: {
|
||||
src: ['docs/assets/css/src/docs.css']
|
||||
src: 'docs/assets/css/docs.css'
|
||||
},
|
||||
examples: {
|
||||
options: {
|
||||
map: false
|
||||
},
|
||||
expand: true,
|
||||
cwd: 'docs/examples/',
|
||||
src: ['**/*.css'],
|
||||
|
@ -205,79 +216,51 @@ module.exports = function (grunt) {
|
|||
}
|
||||
},
|
||||
|
||||
csslint: {
|
||||
stylelint: {
|
||||
options: {
|
||||
csslintrc: 'less/.csslintrc'
|
||||
configFile: 'grunt/.stylelintrc',
|
||||
reportNeedlessDisables: false
|
||||
},
|
||||
dist: [
|
||||
'dist/css/bootstrap.css',
|
||||
'dist/css/bootstrap-theme.css'
|
||||
'less/**/*.less'
|
||||
],
|
||||
docs: [
|
||||
'docs/assets/less/**/*.less'
|
||||
],
|
||||
examples: [
|
||||
'docs/examples/**/*.css'
|
||||
],
|
||||
docs: {
|
||||
options: {
|
||||
ids: false,
|
||||
'overqualified-elements': false
|
||||
},
|
||||
src: 'docs/assets/css/src/docs.css'
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
cssmin: {
|
||||
options: {
|
||||
// TODO: disable `zeroUnits` optimization once clean-css 3.2 is released
|
||||
// and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly
|
||||
compatibility: 'ie8',
|
||||
keepSpecialComments: '*',
|
||||
sourceMap: true,
|
||||
advanced: false
|
||||
sourceMapInlineSources: true,
|
||||
level: {
|
||||
1: {
|
||||
specialComments: 'all'
|
||||
}
|
||||
}
|
||||
},
|
||||
minifyCore: {
|
||||
core: {
|
||||
src: 'dist/css/<%= pkg.name %>.css',
|
||||
dest: 'dist/css/<%= pkg.name %>.min.css'
|
||||
},
|
||||
minifyTheme: {
|
||||
theme: {
|
||||
src: 'dist/css/<%= pkg.name %>-theme.css',
|
||||
dest: 'dist/css/<%= pkg.name %>-theme.min.css'
|
||||
},
|
||||
docs: {
|
||||
src: [
|
||||
'docs/assets/css/ie10-viewport-bug-workaround.css',
|
||||
'docs/assets/css/src/pygments-manni.css',
|
||||
'docs/assets/css/src/docs.css'
|
||||
],
|
||||
src: 'docs/assets/css/docs.css',
|
||||
dest: 'docs/assets/css/docs.min.css'
|
||||
}
|
||||
},
|
||||
|
||||
csscomb: {
|
||||
options: {
|
||||
config: 'less/.csscomb.json'
|
||||
},
|
||||
dist: {
|
||||
expand: true,
|
||||
cwd: 'dist/css/',
|
||||
src: ['*.css', '!*.min.css'],
|
||||
dest: 'dist/css/'
|
||||
},
|
||||
examples: {
|
||||
expand: true,
|
||||
cwd: 'docs/examples/',
|
||||
src: '**/*.css',
|
||||
dest: 'docs/examples/'
|
||||
},
|
||||
docs: {
|
||||
src: 'docs/assets/css/src/docs.css',
|
||||
dest: 'docs/assets/css/src/docs.css'
|
||||
}
|
||||
},
|
||||
|
||||
copy: {
|
||||
fonts: {
|
||||
expand: true,
|
||||
src: 'fonts/*',
|
||||
src: 'fonts/**',
|
||||
dest: 'dist/'
|
||||
},
|
||||
docs: {
|
||||
|
@ -301,7 +284,9 @@ module.exports = function (grunt) {
|
|||
|
||||
jekyll: {
|
||||
options: {
|
||||
config: '_config.yml'
|
||||
bundleExec: true,
|
||||
config: '_config.yml',
|
||||
incremental: false
|
||||
},
|
||||
docs: {},
|
||||
github: {
|
||||
|
@ -311,37 +296,17 @@ module.exports = function (grunt) {
|
|||
}
|
||||
},
|
||||
|
||||
htmlmin: {
|
||||
dist: {
|
||||
options: {
|
||||
collapseWhitespace: true,
|
||||
conservativeCollapse: true,
|
||||
minifyCSS: true,
|
||||
minifyJS: true,
|
||||
removeAttributeQuotes: true,
|
||||
removeComments: true
|
||||
},
|
||||
expand: true,
|
||||
cwd: '_gh_pages',
|
||||
dest: '_gh_pages',
|
||||
src: [
|
||||
'**/*.html',
|
||||
'!examples/**/*.html'
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
jade: {
|
||||
pug: {
|
||||
options: {
|
||||
pretty: true,
|
||||
data: getLessVarsData
|
||||
},
|
||||
customizerVars: {
|
||||
src: 'docs/_jade/customizer-variables.jade',
|
||||
src: 'docs/_pug/customizer-variables.pug',
|
||||
dest: 'docs/_includes/customizer-variables.html'
|
||||
},
|
||||
customizerNav: {
|
||||
src: 'docs/_jade/customizer-nav.jade',
|
||||
src: 'docs/_pug/customizer-nav.pug',
|
||||
dest: 'docs/_includes/nav/customize.html'
|
||||
}
|
||||
},
|
||||
|
@ -349,86 +314,40 @@ module.exports = function (grunt) {
|
|||
htmllint: {
|
||||
options: {
|
||||
ignore: [
|
||||
'Attribute "autocomplete" not allowed on element "button" at this point.',
|
||||
'Attribute "autocomplete" is only allowed when the input type is "color", "date", "datetime", "datetime-local", "email", "month", "number", "password", "range", "search", "tel", "text", "time", "url", or "week".',
|
||||
'Element "img" is missing required attribute "src".'
|
||||
]
|
||||
],
|
||||
noLangDetect: true
|
||||
},
|
||||
src: '_gh_pages/**/*.html'
|
||||
src: ['_gh_pages/**/*.html', 'js/tests/**/*.html']
|
||||
},
|
||||
|
||||
watch: {
|
||||
src: {
|
||||
files: '<%= jshint.core.src %>',
|
||||
tasks: ['jshint:core', 'qunit', 'concat']
|
||||
tasks: ['jshint:core', 'exec:karma', 'concat']
|
||||
},
|
||||
test: {
|
||||
files: '<%= jshint.test.src %>',
|
||||
tasks: ['jshint:test', 'qunit']
|
||||
tasks: ['jshint:test', 'exec:karma']
|
||||
},
|
||||
less: {
|
||||
files: 'less/**/*.less',
|
||||
tasks: 'less'
|
||||
}
|
||||
},
|
||||
|
||||
sed: {
|
||||
versionNumber: {
|
||||
pattern: (function () {
|
||||
var old = grunt.option('oldver');
|
||||
return old ? RegExp.quote(old) : old;
|
||||
})(),
|
||||
replacement: grunt.option('newver'),
|
||||
exclude: [
|
||||
'dist/fonts',
|
||||
'docs/assets',
|
||||
'fonts',
|
||||
'js/tests/vendor',
|
||||
'node_modules',
|
||||
'test-infra'
|
||||
],
|
||||
recursive: true
|
||||
}
|
||||
},
|
||||
|
||||
'saucelabs-qunit': {
|
||||
all: {
|
||||
options: {
|
||||
build: process.env.TRAVIS_JOB_ID,
|
||||
throttled: 10,
|
||||
maxRetries: 3,
|
||||
maxPollRetries: 4,
|
||||
urls: ['http://127.0.0.1:3000/js/tests/index.html?hidepassed'],
|
||||
browsers: grunt.file.readYAML('grunt/sauce_browsers.yml')
|
||||
}
|
||||
tasks: ['less', 'copy']
|
||||
},
|
||||
docs: {
|
||||
files: 'docs/assets/less/**/*.less',
|
||||
tasks: ['less']
|
||||
}
|
||||
},
|
||||
|
||||
exec: {
|
||||
npmUpdate: {
|
||||
command: 'npm update'
|
||||
}
|
||||
},
|
||||
|
||||
compress: {
|
||||
main: {
|
||||
options: {
|
||||
archive: 'bootstrap-<%= pkg.version %>-dist.zip',
|
||||
mode: 'zip',
|
||||
level: 9,
|
||||
pretty: true
|
||||
},
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'dist/',
|
||||
src: ['**'],
|
||||
dest: 'bootstrap-<%= pkg.version %>-dist'
|
||||
}
|
||||
]
|
||||
browserstack: {
|
||||
command: 'cross-env BROWSER=true karma start grunt/karma.conf.js'
|
||||
},
|
||||
karma: {
|
||||
command: 'karma start grunt/karma.conf.js'
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
@ -443,16 +362,14 @@ module.exports = function (grunt) {
|
|||
return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset;
|
||||
};
|
||||
var isUndefOrNonZero = function (val) {
|
||||
return val === undefined || val !== '0';
|
||||
return typeof val === 'undefined' || val !== '0';
|
||||
};
|
||||
|
||||
// Test task.
|
||||
var testSubtasks = [];
|
||||
// Skip core tests if running a different subset of the test suite
|
||||
if (runSubset('core') &&
|
||||
// Skip core tests if this is a Savage build
|
||||
process.env.TRAVIS_REPO_SLUG !== 'twbs-savage/bootstrap') {
|
||||
testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'csslint:dist', 'test-js', 'docs']);
|
||||
if (runSubset('core')) {
|
||||
testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'stylelint:dist', 'test-js', 'docs']);
|
||||
}
|
||||
// Skip HTML validation if running a different subset of the test suite
|
||||
if (runSubset('validate-html') &&
|
||||
|
@ -460,24 +377,23 @@ module.exports = function (grunt) {
|
|||
isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) {
|
||||
testSubtasks.push('validate-html');
|
||||
}
|
||||
// Only run Sauce Labs tests if there's a Sauce access key
|
||||
if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' &&
|
||||
// Skip Sauce if running a different subset of the test suite
|
||||
runSubset('sauce-js-unit') &&
|
||||
// Skip Sauce on Travis when [skip sauce] is in the commit message
|
||||
isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) {
|
||||
testSubtasks.push('connect');
|
||||
testSubtasks.push('saucelabs-qunit');
|
||||
// Only run BrowserStack tests if there's a BrowserStack access key
|
||||
if (typeof process.env.BROWSER_STACK_USERNAME !== 'undefined' &&
|
||||
// Skip BrowserStack if running a different subset of the test suite
|
||||
runSubset('browserstack') &&
|
||||
// Skip BrowserStack on Travis when [skip browserstack] is in the commit message
|
||||
isUndefOrNonZero(process.env.TWBS_DO_BROWSERSTACK)) {
|
||||
testSubtasks.push('exec:browserstack');
|
||||
}
|
||||
|
||||
grunt.registerTask('test', testSubtasks);
|
||||
grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']);
|
||||
grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'exec:karma']);
|
||||
|
||||
// JS distribution task.
|
||||
grunt.registerTask('dist-js', ['concat', 'uglify:core', 'commonjs']);
|
||||
|
||||
// CSS distribution task.
|
||||
grunt.registerTask('less-compile', ['less:compileCore', 'less:compileTheme']);
|
||||
grunt.registerTask('dist-css', ['less-compile', 'autoprefixer:core', 'autoprefixer:theme', 'csscomb:dist', 'cssmin:minifyCore', 'cssmin:minifyTheme']);
|
||||
grunt.registerTask('dist-css', ['less:core', 'less:theme', 'postcss:core', 'postcss:theme', 'cssmin:core', 'cssmin:theme']);
|
||||
|
||||
// Full distribution task.
|
||||
grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']);
|
||||
|
@ -485,49 +401,30 @@ module.exports = function (grunt) {
|
|||
// Default task.
|
||||
grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']);
|
||||
|
||||
// Version numbering task.
|
||||
// grunt change-version-number --oldver=A.B.C --newver=X.Y.Z
|
||||
// This can be overzealous, so its changes should always be manually reviewed!
|
||||
grunt.registerTask('change-version-number', 'sed');
|
||||
|
||||
grunt.registerTask('build-glyphicons-data', function () { generateGlyphiconsData.call(this, grunt); });
|
||||
grunt.registerTask('build-glyphicons-data', function () {
|
||||
generateGlyphiconsData.call(this, grunt);
|
||||
});
|
||||
|
||||
// task for building customizer
|
||||
grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']);
|
||||
grunt.registerTask('build-customizer-html', 'jade');
|
||||
grunt.registerTask('build-customizer-html', 'pug');
|
||||
grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () {
|
||||
var banner = grunt.template.process('<%= banner %>');
|
||||
generateRawFiles(grunt, banner);
|
||||
});
|
||||
|
||||
grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () {
|
||||
var srcFiles = grunt.config.get('concat.bootstrap.src');
|
||||
var srcFiles = grunt.config.get('concat.core.src');
|
||||
var destFilepath = 'dist/js/npm.js';
|
||||
generateCommonJSModule(grunt, srcFiles, destFilepath);
|
||||
});
|
||||
|
||||
// Docs task.
|
||||
grunt.registerTask('docs-css', ['autoprefixer:docs', 'autoprefixer:examples', 'csscomb:docs', 'csscomb:examples', 'cssmin:docs']);
|
||||
grunt.registerTask('lint-docs-css', ['csslint:docs', 'csslint:examples']);
|
||||
grunt.registerTask('docs-js', ['uglify:docsJs', 'uglify:customize']);
|
||||
grunt.registerTask('docs-css', ['less:docs', 'less:docsIe', 'postcss:docs', 'postcss:examples', 'cssmin:docs']);
|
||||
grunt.registerTask('lint-docs-css', ['stylelint:docs', 'stylelint:examples']);
|
||||
grunt.registerTask('docs-js', ['uglify:docs', 'uglify:customize']);
|
||||
grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']);
|
||||
grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']);
|
||||
|
||||
grunt.registerTask('prep-release', ['dist', 'docs', 'jekyll:github', 'htmlmin', 'compress']);
|
||||
|
||||
// Task for updating the cached npm packages used by the Travis build (which are controlled by test-infra/npm-shrinkwrap.json).
|
||||
// This task should be run and the updated file should be committed whenever Bootstrap's dependencies change.
|
||||
grunt.registerTask('update-shrinkwrap', ['exec:npmUpdate', '_update-shrinkwrap']);
|
||||
grunt.registerTask('_update-shrinkwrap', function () {
|
||||
var done = this.async();
|
||||
npmShrinkwrap({ dev: true, dirname: __dirname }, function (err) {
|
||||
if (err) {
|
||||
grunt.fail.warn(err);
|
||||
}
|
||||
var dest = 'test-infra/npm-shrinkwrap.json';
|
||||
fs.renameSync('npm-shrinkwrap.json', dest);
|
||||
grunt.log.writeln('File ' + dest.cyan + ' updated.');
|
||||
done();
|
||||
});
|
||||
});
|
||||
grunt.registerTask('prep-release', ['dist', 'docs', 'jekyll:github']);
|
||||
};
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
Before opening an issue:
|
||||
|
||||
- [Search for duplicate or closed issues](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue)
|
||||
- [Validate](https://validator.w3.org/nu/) and [lint](https://github.com/twbs/bootlint#in-the-browser) any HTML to avoid common problems
|
||||
- Prepare a [reduced test case](https://css-tricks.com/reduced-test-cases/) for any bugs
|
||||
- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md)
|
||||
|
||||
When asking general "how to" questions:
|
||||
|
||||
- Please do not open an issue here
|
||||
- Instead, ask for help on [StackOverflow, IRC, or Slack](https://github.com/twbs/bootstrap/blob/master/README.md#community)
|
||||
|
||||
When reporting a bug, include:
|
||||
|
||||
- Operating system and version (Windows, Mac OS X, Android, iOS, Win10 Mobile)
|
||||
- Browser and version (Chrome, Firefox, Safari, IE, MS Edge, Opera 15+, Android Browser)
|
||||
- Reduced test cases and potential fixes using [JS Bin](https://jsbin.com/)
|
||||
|
||||
When suggesting a feature, include:
|
||||
|
||||
- As much detail as possible for what we should add and why it's important to Bootstrap
|
||||
- Relevant links to prior art, screenshots, or live demos whenever possible
|
|
@ -1,6 +1,6 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2011-2015 Twitter, Inc
|
||||
Copyright (c) 2011-2019 Twitter, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
@ -1,16 +1,15 @@
|
|||
# [Bootstrap](http://getbootstrap.com)
|
||||
# [Bootstrap](https://getbootstrap.com/)
|
||||
|
||||
[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com)
|
||||
[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com/)
|
||||
![Bower version](https://img.shields.io/bower/v/bootstrap.svg)
|
||||
[![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap)
|
||||
[![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg)](https://travis-ci.org/twbs/bootstrap)
|
||||
[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies)
|
||||
[![NuGet](https://img.shields.io/nuget/v/bootstrap.svg)](https://www.nuget.org/packages/Bootstrap)
|
||||
[![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap)
|
||||
|
||||
Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community.
|
||||
|
||||
To get started, check out <http://getbootstrap.com>!
|
||||
To get started, check out <https://getbootstrap.com/>!
|
||||
|
||||
|
||||
## Table of contents
|
||||
|
@ -22,6 +21,7 @@ To get started, check out <http://getbootstrap.com>!
|
|||
* [Community](#community)
|
||||
* [Versioning](#versioning)
|
||||
* [Creators](#creators)
|
||||
* [Thanks](#thanks)
|
||||
* [Copyright and license](#copyright-and-license)
|
||||
|
||||
|
||||
|
@ -29,14 +29,14 @@ To get started, check out <http://getbootstrap.com>!
|
|||
|
||||
Several quick start options are available:
|
||||
|
||||
* [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.6.zip).
|
||||
* [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.4.1.zip).
|
||||
* Clone the repo: `git clone https://github.com/twbs/bootstrap.git`.
|
||||
* Install with [Bower](http://bower.io): `bower install bootstrap`.
|
||||
* Install with [npm](https://www.npmjs.com): `npm install bootstrap`.
|
||||
* Install with [Meteor](https://www.meteor.com): `meteor add twbs:bootstrap`.
|
||||
* Install with [Composer](https://getcomposer.org): `composer require twbs/bootstrap`.
|
||||
* Install with [Bower](https://bower.io/): `bower install bootstrap`.
|
||||
* Install with [npm](https://www.npmjs.com/): `npm install bootstrap@3`.
|
||||
* Install with [Meteor](https://www.meteor.com/): `meteor add twbs:bootstrap`.
|
||||
* Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap`.
|
||||
|
||||
Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more.
|
||||
Read the [Getting started page](https://getbootstrap.com/docs/3.4/getting-started/) for information on the framework contents, templates and examples, and more.
|
||||
|
||||
### What's included
|
||||
|
||||
|
@ -64,31 +64,32 @@ bootstrap/
|
|||
└── glyphicons-halflings-regular.woff2
|
||||
```
|
||||
|
||||
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developer.chrome.com/devtools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.
|
||||
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.
|
||||
|
||||
|
||||
## Bugs and feature requests
|
||||
|
||||
Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new).
|
||||
|
||||
Note that **feature requests must target [Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev),** because Bootstrap v3 is now in maintenance mode and is closed off to new features. This is so that we can focus our efforts on Bootstrap v4.
|
||||
|
||||
|
||||
## Documentation
|
||||
|
||||
Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](http://jekyllrb.com) and publicly hosted on GitHub Pages at <http://getbootstrap.com>. The docs may also be run locally.
|
||||
Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](https://jekyllrb.com/) and publicly hosted on GitHub Pages at <https://getbootstrap.com/>. The docs may also be run locally.
|
||||
|
||||
### Running documentation locally
|
||||
|
||||
1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v3.0.x).
|
||||
**Note for Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems.
|
||||
2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`.
|
||||
3. From the root `/bootstrap` directory, run `jekyll serve` in the command line.
|
||||
1. If necessary, [install Jekyll](https://jekyllrb.com/docs/installation/) and other Ruby dependencies with `bundle install`.
|
||||
**Note for Windows users:** Read [this guide](https://jekyllrb.com/docs/installation/windows/) to get Jekyll up and running without problems.
|
||||
2. From the root `/bootstrap` directory, run `bundle exec jekyll serve` in the command line.
|
||||
4. Open `http://localhost:9001` in your browser, and voilà.
|
||||
|
||||
Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/).
|
||||
Learn more about using Jekyll by reading its [documentation](https://jekyllrb.com/docs/).
|
||||
|
||||
### Documentation for previous releases
|
||||
|
||||
Documentation for v2.3.2 has been made available for the time being at <http://getbootstrap.com/2.3.2/> while folks transition to Bootstrap 3.
|
||||
Documentation for v2.3.2 has been made available for the time being at <https://getbootstrap.com/2.3.2/> while folks transition to Bootstrap 3.
|
||||
|
||||
[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
|
||||
|
||||
|
@ -99,7 +100,9 @@ Please read through our [contributing guidelines](https://github.com/twbs/bootst
|
|||
|
||||
Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/master/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
|
||||
|
||||
Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>.
|
||||
**Bootstrap v3 is now closed off to new features.** It has gone into maintenance mode so that we can focus our efforts on [Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev), the future of the framework. Pull requests which add new features (rather than fix bugs) should target [Bootstrap v4 (the `v4-dev` git branch)](https://github.com/twbs/bootstrap/tree/v4-dev) instead.
|
||||
|
||||
Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <https://editorconfig.org/>.
|
||||
|
||||
|
||||
## Community
|
||||
|
@ -107,18 +110,25 @@ Editor preferences are available in the [editor config](https://github.com/twbs/
|
|||
Get updates on Bootstrap's development and chat with the project maintainers and community members.
|
||||
|
||||
* Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
|
||||
* Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com).
|
||||
* Join [the official Slack room](https://bootstrap-slack.herokuapp.com).
|
||||
* Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/).
|
||||
* Join [the official Slack room](https://bootstrap-slack.herokuapp.com/).
|
||||
* Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
|
||||
* Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3)).
|
||||
* Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
|
||||
* Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/search?q=keywords:bootstrap) or similar delivery mechanisms for maximum discoverability.
|
||||
|
||||
|
||||
## Versioning
|
||||
|
||||
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
|
||||
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](https://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
|
||||
|
||||
See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release.
|
||||
See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release.
|
||||
|
||||
|
||||
## Thanks
|
||||
|
||||
<img src="https://live.browserstack.com/images/opensource/browserstack-logo.svg" alt="BrowserStack Logo" width="490" height="106">
|
||||
|
||||
Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers!
|
||||
|
||||
|
||||
## Creators
|
||||
|
@ -136,4 +146,4 @@ See [the Releases section of our GitHub project](https://github.com/twbs/bootstr
|
|||
|
||||
## Copyright and license
|
||||
|
||||
Code and documentation copyright 2011-2015 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE).
|
||||
Code and documentation copyright 2011-2019 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE).
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
"framework",
|
||||
"web"
|
||||
],
|
||||
"homepage": "http://getbootstrap.com",
|
||||
"homepage": "https://getbootstrap.com/",
|
||||
"license": "MIT",
|
||||
"moduleType": "globals",
|
||||
"main": [
|
||||
|
@ -29,6 +29,6 @@
|
|||
"test-infra"
|
||||
],
|
||||
"dependencies": {
|
||||
"jquery": "1.9.1 - 2"
|
||||
"jquery": "1.9.1 - 3"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Bootstrap v3.3.7 (http://getbootstrap.com)
|
||||
* Copyright 2011-2016 Twitter, Inc.
|
||||
* Bootstrap v3.4.1 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
.btn-default,
|
||||
|
@ -9,9 +9,9 @@
|
|||
.btn-info,
|
||||
.btn-warning,
|
||||
.btn-danger {
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
.btn-default:active,
|
||||
.btn-primary:active,
|
||||
|
@ -25,8 +25,8 @@
|
|||
.btn-info.active,
|
||||
.btn-warning.active,
|
||||
.btn-danger.active {
|
||||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
}
|
||||
.btn-default.disabled,
|
||||
.btn-primary.disabled,
|
||||
|
@ -47,7 +47,7 @@ fieldset[disabled] .btn-info,
|
|||
fieldset[disabled] .btn-warning,
|
||||
fieldset[disabled] .btn-danger {
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.btn-default .badge,
|
||||
.btn-primary .badge,
|
||||
|
@ -62,15 +62,15 @@ fieldset[disabled] .btn-danger {
|
|||
background-image: none;
|
||||
}
|
||||
.btn-default {
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
||||
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
||||
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
|
||||
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
|
||||
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dbdbdb;
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
border-color: #ccc;
|
||||
}
|
||||
.btn-default:hover,
|
||||
|
@ -106,9 +106,9 @@ fieldset[disabled] .btn-default.active {
|
|||
}
|
||||
.btn-primary {
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
|
@ -147,9 +147,9 @@ fieldset[disabled] .btn-primary.active {
|
|||
}
|
||||
.btn-success {
|
||||
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
||||
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
||||
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
|
||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
|
||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
|
@ -188,9 +188,9 @@ fieldset[disabled] .btn-success.active {
|
|||
}
|
||||
.btn-info {
|
||||
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
||||
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
||||
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
|
||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
|
||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
|
@ -229,9 +229,9 @@ fieldset[disabled] .btn-info.active {
|
|||
}
|
||||
.btn-warning {
|
||||
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
||||
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
||||
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
|
||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
|
||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
|
@ -270,9 +270,9 @@ fieldset[disabled] .btn-warning.active {
|
|||
}
|
||||
.btn-danger {
|
||||
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
||||
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
||||
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
|
||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
|
||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
|
@ -311,81 +311,81 @@ fieldset[disabled] .btn-danger.active {
|
|||
}
|
||||
.thumbnail,
|
||||
.img-thumbnail {
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
.dropdown-menu > li > a:hover,
|
||||
.dropdown-menu > li > a:focus {
|
||||
background-color: #e8e8e8;
|
||||
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
|
||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
background-color: #e8e8e8;
|
||||
}
|
||||
.dropdown-menu > .active > a,
|
||||
.dropdown-menu > .active > a:hover,
|
||||
.dropdown-menu > .active > a:focus {
|
||||
background-color: #2e6da4;
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
||||
background-image: linear-gradient(to bottom, #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;
|
||||
background-color: #2e6da4;
|
||||
}
|
||||
.navbar-default {
|
||||
background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
|
||||
background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
|
||||
background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
|
||||
background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
|
||||
background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f8f8f8));
|
||||
background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
.navbar-default .navbar-nav > .open > a,
|
||||
.navbar-default .navbar-nav > .active > a {
|
||||
background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
|
||||
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
|
||||
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
|
||||
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
|
||||
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
|
||||
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
|
||||
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
.navbar-brand,
|
||||
.navbar-nav > li > a {
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
|
||||
}
|
||||
.navbar-inverse {
|
||||
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
|
||||
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
|
||||
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
|
||||
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
|
||||
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
border-radius: 4px;
|
||||
}
|
||||
.navbar-inverse .navbar-nav > .open > a,
|
||||
.navbar-inverse .navbar-nav > .active > a {
|
||||
background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
|
||||
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
|
||||
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
|
||||
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
|
||||
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
|
||||
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
|
||||
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
|
||||
box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.navbar-inverse .navbar-brand,
|
||||
.navbar-inverse .navbar-nav > li > a {
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.navbar-static-top,
|
||||
.navbar-fixed-top,
|
||||
|
@ -398,120 +398,120 @@ fieldset[disabled] .btn-danger.active {
|
|||
.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
|
||||
color: #fff;
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
||||
background-image: linear-gradient(to bottom, #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;
|
||||
}
|
||||
}
|
||||
.alert {
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.alert-success {
|
||||
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
|
||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #b2dba1;
|
||||
}
|
||||
.alert-info {
|
||||
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
|
||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
|
||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #9acfea;
|
||||
}
|
||||
.alert-warning {
|
||||
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
|
||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #f5e79e;
|
||||
}
|
||||
.alert-danger {
|
||||
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
|
||||
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
|
||||
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dca7a7;
|
||||
}
|
||||
.progress {
|
||||
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
|
||||
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar {
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-success {
|
||||
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
|
||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
|
||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-info {
|
||||
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
|
||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
|
||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-warning {
|
||||
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
|
||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
|
||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-danger {
|
||||
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
|
||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
|
||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-striped {
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
.list-group {
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
.list-group-item.active,
|
||||
.list-group-item.active:hover,
|
||||
.list-group-item.active:focus {
|
||||
text-shadow: 0 -1px 0 #286090;
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #2b669a;
|
||||
|
@ -522,66 +522,66 @@ fieldset[disabled] .btn-danger.active {
|
|||
text-shadow: none;
|
||||
}
|
||||
.panel {
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.panel-default > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
|
||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-primary > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
||||
background-image: linear-gradient(to bottom, #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;
|
||||
}
|
||||
.panel-success > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
|
||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-info > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
|
||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-warning > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
|
||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-danger > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
|
||||
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
|
||||
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.well {
|
||||
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
|
||||
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dcdcdc;
|
||||
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
|
||||
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
|
||||
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-theme.css.map */
|
||||
/*# sourceMappingURL=bootstrap-theme.css.map */
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Bootstrap v3.3.6 (http://getbootstrap.com)
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Bootstrap v3.4.1 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under the MIT license
|
||||
*/
|
||||
|
||||
|
@ -11,16 +11,16 @@ if (typeof jQuery === 'undefined') {
|
|||
+function ($) {
|
||||
'use strict';
|
||||
var version = $.fn.jquery.split(' ')[0].split('.')
|
||||
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) {
|
||||
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3')
|
||||
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
|
||||
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
|
||||
}
|
||||
}(jQuery);
|
||||
|
||||
/* ========================================================================
|
||||
* Bootstrap: transition.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#transitions
|
||||
* Bootstrap: transition.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#transitions
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -28,7 +28,7 @@ if (typeof jQuery === 'undefined') {
|
|||
+function ($) {
|
||||
'use strict';
|
||||
|
||||
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
|
||||
// CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)
|
||||
// ============================================================
|
||||
|
||||
function transitionEnd() {
|
||||
|
@ -50,7 +50,7 @@ if (typeof jQuery === 'undefined') {
|
|||
return false // explicit for ie8 ( ._.)
|
||||
}
|
||||
|
||||
// http://blog.alexmaccaw.com/css-transitions
|
||||
// https://blog.alexmaccaw.com/css-transitions
|
||||
$.fn.emulateTransitionEnd = function (duration) {
|
||||
var called = false
|
||||
var $el = this
|
||||
|
@ -77,10 +77,10 @@ if (typeof jQuery === 'undefined') {
|
|||
}(jQuery);
|
||||
|
||||
/* ========================================================================
|
||||
* Bootstrap: alert.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#alerts
|
||||
* Bootstrap: alert.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#alerts
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -96,7 +96,7 @@ if (typeof jQuery === 'undefined') {
|
|||
$(el).on('click', dismiss, this.close)
|
||||
}
|
||||
|
||||
Alert.VERSION = '3.3.6'
|
||||
Alert.VERSION = '3.4.1'
|
||||
|
||||
Alert.TRANSITION_DURATION = 150
|
||||
|
||||
|
@ -109,7 +109,8 @@ if (typeof jQuery === 'undefined') {
|
|||
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
||||
}
|
||||
|
||||
var $parent = $(selector)
|
||||
selector = selector === '#' ? [] : selector
|
||||
var $parent = $(document).find(selector)
|
||||
|
||||
if (e) e.preventDefault()
|
||||
|
||||
|
@ -172,10 +173,10 @@ if (typeof jQuery === 'undefined') {
|
|||
}(jQuery);
|
||||
|
||||
/* ========================================================================
|
||||
* Bootstrap: button.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#buttons
|
||||
* Bootstrap: button.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#buttons
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -192,7 +193,7 @@ if (typeof jQuery === 'undefined') {
|
|||
this.isLoading = false
|
||||
}
|
||||
|
||||
Button.VERSION = '3.3.6'
|
||||
Button.VERSION = '3.4.1'
|
||||
|
||||
Button.DEFAULTS = {
|
||||
loadingText: 'loading...'
|
||||
|
@ -214,10 +215,10 @@ if (typeof jQuery === 'undefined') {
|
|||
|
||||
if (state == 'loadingText') {
|
||||
this.isLoading = true
|
||||
$el.addClass(d).attr(d, d)
|
||||
$el.addClass(d).attr(d, d).prop(d, true)
|
||||
} else if (this.isLoading) {
|
||||
this.isLoading = false
|
||||
$el.removeClass(d).removeAttr(d)
|
||||
$el.removeClass(d).removeAttr(d).prop(d, false)
|
||||
}
|
||||
}, this), 0)
|
||||
}
|
||||
|
@ -281,10 +282,15 @@ if (typeof jQuery === 'undefined') {
|
|||
|
||||
$(document)
|
||||
.on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
|
||||
var $btn = $(e.target)
|
||||
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
|
||||
var $btn = $(e.target).closest('.btn')
|
||||
Plugin.call($btn, 'toggle')
|
||||
if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault()
|
||||
if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
|
||||
// Prevent double click on radios, and the double selections (so cancellation) on checkboxes
|
||||
e.preventDefault()
|
||||
// The target component still receive the focus
|
||||
if ($btn.is('input,button')) $btn.trigger('focus')
|
||||
else $btn.find('input:visible,button:visible').first().trigger('focus')
|
||||
}
|
||||
})
|
||||
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
|
||||
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
|
||||
|
@ -293,10 +299,10 @@ if (typeof jQuery === 'undefined') {
|
|||
}(jQuery);
|
||||
|
||||
/* ========================================================================
|
||||
* Bootstrap: carousel.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#carousel
|
||||
* Bootstrap: carousel.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#carousel
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -324,7 +330,7 @@ if (typeof jQuery === 'undefined') {
|
|||
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
|
||||
}
|
||||
|
||||
Carousel.VERSION = '3.3.6'
|
||||
Carousel.VERSION = '3.4.1'
|
||||
|
||||
Carousel.TRANSITION_DURATION = 600
|
||||
|
||||
|
@ -438,7 +444,9 @@ if (typeof jQuery === 'undefined') {
|
|||
var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
|
||||
if ($.support.transition && this.$element.hasClass('slide')) {
|
||||
$next.addClass(type)
|
||||
$next[0].offsetWidth // force reflow
|
||||
if (typeof $next === 'object' && $next.length) {
|
||||
$next[0].offsetWidth // force reflow
|
||||
}
|
||||
$active.addClass(direction)
|
||||
$next.addClass(direction)
|
||||
$active
|
||||
|
@ -500,10 +508,17 @@ if (typeof jQuery === 'undefined') {
|
|||
// =================
|
||||
|
||||
var clickHandler = function (e) {
|
||||
var href
|
||||
var $this = $(this)
|
||||
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
|
||||
var href = $this.attr('href')
|
||||
if (href) {
|
||||
href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
|
||||
}
|
||||
|
||||
var target = $this.attr('data-target') || href
|
||||
var $target = $(document).find(target)
|
||||
|
||||
if (!$target.hasClass('carousel')) return
|
||||
|
||||
var options = $.extend({}, $target.data(), $this.data())
|
||||
var slideIndex = $this.attr('data-slide-to')
|
||||
if (slideIndex) options.interval = false
|
||||
|
@ -531,13 +546,14 @@ if (typeof jQuery === 'undefined') {
|
|||
}(jQuery);
|
||||
|
||||
/* ========================================================================
|
||||
* Bootstrap: collapse.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#collapse
|
||||
* Bootstrap: collapse.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#collapse
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
/* jshint latedef: false */
|
||||
|
||||
+function ($) {
|
||||
'use strict';
|
||||
|
@ -561,7 +577,7 @@ if (typeof jQuery === 'undefined') {
|
|||
if (this.options.toggle) this.toggle()
|
||||
}
|
||||
|
||||
Collapse.VERSION = '3.3.6'
|
||||
Collapse.VERSION = '3.4.1'
|
||||
|
||||
Collapse.TRANSITION_DURATION = 350
|
||||
|
||||
|
@ -668,7 +684,7 @@ if (typeof jQuery === 'undefined') {
|
|||
}
|
||||
|
||||
Collapse.prototype.getParent = function () {
|
||||
return $(this.options.parent)
|
||||
return $(document).find(this.options.parent)
|
||||
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
|
||||
.each($.proxy(function (i, element) {
|
||||
var $element = $(element)
|
||||
|
@ -691,7 +707,7 @@ if (typeof jQuery === 'undefined') {
|
|||
var target = $trigger.attr('data-target')
|
||||
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
|
||||
|
||||
return $(target)
|
||||
return $(document).find(target)
|
||||
}
|
||||
|
||||
|
||||
|
@ -743,10 +759,10 @@ if (typeof jQuery === 'undefined') {
|
|||
}(jQuery);
|
||||
|
||||
/* ========================================================================
|
||||
* Bootstrap: dropdown.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#dropdowns
|
||||
* Bootstrap: dropdown.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#dropdowns
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -763,7 +779,7 @@ if (typeof jQuery === 'undefined') {
|
|||
$(element).on('click.bs.dropdown', this.toggle)
|
||||
}
|
||||
|
||||
Dropdown.VERSION = '3.3.6'
|
||||
Dropdown.VERSION = '3.4.1'
|
||||
|
||||
function getParent($this) {
|
||||
var selector = $this.attr('data-target')
|
||||
|
@ -773,7 +789,7 @@ if (typeof jQuery === 'undefined') {
|
|||
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
||||
}
|
||||
|
||||
var $parent = selector && $(selector)
|
||||
var $parent = selector !== '#' ? $(document).find(selector) : null
|
||||
|
||||
return $parent && $parent.length ? $parent : $this.parent()
|
||||
}
|
||||
|
@ -909,10 +925,10 @@ if (typeof jQuery === 'undefined') {
|
|||
}(jQuery);
|
||||
|
||||
/* ========================================================================
|
||||
* Bootstrap: modal.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#modals
|
||||
* Bootstrap: modal.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#modals
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -924,15 +940,16 @@ if (typeof jQuery === 'undefined') {
|
|||
// ======================
|
||||
|
||||
var Modal = function (element, options) {
|
||||
this.options = options
|
||||
this.$body = $(document.body)
|
||||
this.$element = $(element)
|
||||
this.$dialog = this.$element.find('.modal-dialog')
|
||||
this.$backdrop = null
|
||||
this.isShown = null
|
||||
this.originalBodyPad = null
|
||||
this.scrollbarWidth = 0
|
||||
this.options = options
|
||||
this.$body = $(document.body)
|
||||
this.$element = $(element)
|
||||
this.$dialog = this.$element.find('.modal-dialog')
|
||||
this.$backdrop = null
|
||||
this.isShown = null
|
||||
this.originalBodyPad = null
|
||||
this.scrollbarWidth = 0
|
||||
this.ignoreBackdropClick = false
|
||||
this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
|
||||
|
||||
if (this.options.remote) {
|
||||
this.$element
|
||||
|
@ -943,7 +960,7 @@ if (typeof jQuery === 'undefined') {
|
|||
}
|
||||
}
|
||||
|
||||
Modal.VERSION = '3.3.6'
|
||||
Modal.VERSION = '3.4.1'
|
||||
|
||||
Modal.TRANSITION_DURATION = 300
|
||||
Modal.BACKDROP_TRANSITION_DURATION = 150
|
||||
|
@ -960,7 +977,7 @@ if (typeof jQuery === 'undefined') {
|
|||
|
||||
Modal.prototype.show = function (_relatedTarget) {
|
||||
var that = this
|
||||
var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
|
||||
var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
|
||||
|
||||
this.$element.trigger(e)
|
||||
|
||||
|
@ -1050,7 +1067,9 @@ if (typeof jQuery === 'undefined') {
|
|||
$(document)
|
||||
.off('focusin.bs.modal') // guard against infinite focus loop
|
||||
.on('focusin.bs.modal', $.proxy(function (e) {
|
||||
if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
|
||||
if (document !== e.target &&
|
||||
this.$element[0] !== e.target &&
|
||||
!this.$element.has(e.target).length) {
|
||||
this.$element.trigger('focus')
|
||||
}
|
||||
}, this))
|
||||
|
@ -1152,7 +1171,7 @@ if (typeof jQuery === 'undefined') {
|
|||
var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
|
||||
|
||||
this.$element.css({
|
||||
paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
|
||||
paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
|
||||
paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
|
||||
})
|
||||
}
|
||||
|
@ -1177,11 +1196,26 @@ if (typeof jQuery === 'undefined') {
|
|||
Modal.prototype.setScrollbar = function () {
|
||||
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
|
||||
this.originalBodyPad = document.body.style.paddingRight || ''
|
||||
if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
|
||||
var scrollbarWidth = this.scrollbarWidth
|
||||
if (this.bodyIsOverflowing) {
|
||||
this.$body.css('padding-right', bodyPad + scrollbarWidth)
|
||||
$(this.fixedContent).each(function (index, element) {
|
||||
var actualPadding = element.style.paddingRight
|
||||
var calculatedPadding = $(element).css('padding-right')
|
||||
$(element)
|
||||
.data('padding-right', actualPadding)
|
||||
.css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Modal.prototype.resetScrollbar = function () {
|
||||
this.$body.css('padding-right', this.originalBodyPad)
|
||||
$(this.fixedContent).each(function (index, element) {
|
||||
var padding = $(element).data('padding-right')
|
||||
$(element).removeData('padding-right')
|
||||
element.style.paddingRight = padding ? padding : ''
|
||||
})
|
||||
}
|
||||
|
||||
Modal.prototype.measureScrollbar = function () { // thx walsh
|
||||
|
@ -1199,8 +1233,8 @@ if (typeof jQuery === 'undefined') {
|
|||
|
||||
function Plugin(option, _relatedTarget) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
var data = $this.data('bs.modal')
|
||||
var $this = $(this)
|
||||
var data = $this.data('bs.modal')
|
||||
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
||||
|
||||
if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
|
||||
|
@ -1211,7 +1245,7 @@ if (typeof jQuery === 'undefined') {
|
|||
|
||||
var old = $.fn.modal
|
||||
|
||||
$.fn.modal = Plugin
|
||||
$.fn.modal = Plugin
|
||||
$.fn.modal.Constructor = Modal
|
||||
|
||||
|
||||
|
@ -1228,10 +1262,13 @@ if (typeof jQuery === 'undefined') {
|
|||
// ==============
|
||||
|
||||
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
|
||||
var $this = $(this)
|
||||
var href = $this.attr('href')
|
||||
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
|
||||
var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
|
||||
var $this = $(this)
|
||||
var href = $this.attr('href')
|
||||
var target = $this.attr('data-target') ||
|
||||
(href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
|
||||
|
||||
var $target = $(document).find(target)
|
||||
var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
|
||||
|
||||
if ($this.is('a')) e.preventDefault()
|
||||
|
||||
|
@ -1247,18 +1284,148 @@ if (typeof jQuery === 'undefined') {
|
|||
}(jQuery);
|
||||
|
||||
/* ========================================================================
|
||||
* Bootstrap: tooltip.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#tooltip
|
||||
* Bootstrap: tooltip.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#tooltip
|
||||
* Inspired by the original jQuery.tipsy by Jason Frame
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
||||
+function ($) {
|
||||
'use strict';
|
||||
|
||||
var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
|
||||
|
||||
var uriAttrs = [
|
||||
'background',
|
||||
'cite',
|
||||
'href',
|
||||
'itemtype',
|
||||
'longdesc',
|
||||
'poster',
|
||||
'src',
|
||||
'xlink:href'
|
||||
]
|
||||
|
||||
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
|
||||
|
||||
var DefaultWhitelist = {
|
||||
// Global attributes allowed on any supplied element below.
|
||||
'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
|
||||
a: ['target', 'href', 'title', 'rel'],
|
||||
area: [],
|
||||
b: [],
|
||||
br: [],
|
||||
col: [],
|
||||
code: [],
|
||||
div: [],
|
||||
em: [],
|
||||
hr: [],
|
||||
h1: [],
|
||||
h2: [],
|
||||
h3: [],
|
||||
h4: [],
|
||||
h5: [],
|
||||
h6: [],
|
||||
i: [],
|
||||
img: ['src', 'alt', 'title', 'width', 'height'],
|
||||
li: [],
|
||||
ol: [],
|
||||
p: [],
|
||||
pre: [],
|
||||
s: [],
|
||||
small: [],
|
||||
span: [],
|
||||
sub: [],
|
||||
sup: [],
|
||||
strong: [],
|
||||
u: [],
|
||||
ul: []
|
||||
}
|
||||
|
||||
/**
|
||||
* A pattern that recognizes a commonly useful subset of URLs that are safe.
|
||||
*
|
||||
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
|
||||
*/
|
||||
var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
|
||||
|
||||
/**
|
||||
* A pattern that matches safe data URLs. Only matches image, video and audio types.
|
||||
*
|
||||
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
|
||||
*/
|
||||
var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i
|
||||
|
||||
function allowedAttribute(attr, allowedAttributeList) {
|
||||
var attrName = attr.nodeName.toLowerCase()
|
||||
|
||||
if ($.inArray(attrName, allowedAttributeList) !== -1) {
|
||||
if ($.inArray(attrName, uriAttrs) !== -1) {
|
||||
return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
var regExp = $(allowedAttributeList).filter(function (index, value) {
|
||||
return value instanceof RegExp
|
||||
})
|
||||
|
||||
// Check if a regular expression validates the attribute.
|
||||
for (var i = 0, l = regExp.length; i < l; i++) {
|
||||
if (attrName.match(regExp[i])) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
|
||||
if (unsafeHtml.length === 0) {
|
||||
return unsafeHtml
|
||||
}
|
||||
|
||||
if (sanitizeFn && typeof sanitizeFn === 'function') {
|
||||
return sanitizeFn(unsafeHtml)
|
||||
}
|
||||
|
||||
// IE 8 and below don't support createHTMLDocument
|
||||
if (!document.implementation || !document.implementation.createHTMLDocument) {
|
||||
return unsafeHtml
|
||||
}
|
||||
|
||||
var createdDocument = document.implementation.createHTMLDocument('sanitization')
|
||||
createdDocument.body.innerHTML = unsafeHtml
|
||||
|
||||
var whitelistKeys = $.map(whiteList, function (el, i) { return i })
|
||||
var elements = $(createdDocument.body).find('*')
|
||||
|
||||
for (var i = 0, len = elements.length; i < len; i++) {
|
||||
var el = elements[i]
|
||||
var elName = el.nodeName.toLowerCase()
|
||||
|
||||
if ($.inArray(elName, whitelistKeys) === -1) {
|
||||
el.parentNode.removeChild(el)
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
var attributeList = $.map(el.attributes, function (el) { return el })
|
||||
var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
|
||||
|
||||
for (var j = 0, len2 = attributeList.length; j < len2; j++) {
|
||||
if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
|
||||
el.removeAttribute(attributeList[j].nodeName)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return createdDocument.body.innerHTML
|
||||
}
|
||||
|
||||
// TOOLTIP PUBLIC CLASS DEFINITION
|
||||
// ===============================
|
||||
|
||||
|
@ -1274,7 +1441,7 @@ if (typeof jQuery === 'undefined') {
|
|||
this.init('tooltip', element, options)
|
||||
}
|
||||
|
||||
Tooltip.VERSION = '3.3.6'
|
||||
Tooltip.VERSION = '3.4.1'
|
||||
|
||||
Tooltip.TRANSITION_DURATION = 150
|
||||
|
||||
|
@ -1291,7 +1458,10 @@ if (typeof jQuery === 'undefined') {
|
|||
viewport: {
|
||||
selector: 'body',
|
||||
padding: 0
|
||||
}
|
||||
},
|
||||
sanitize : true,
|
||||
sanitizeFn : null,
|
||||
whiteList : DefaultWhitelist
|
||||
}
|
||||
|
||||
Tooltip.prototype.init = function (type, element, options) {
|
||||
|
@ -1299,7 +1469,7 @@ if (typeof jQuery === 'undefined') {
|
|||
this.type = type
|
||||
this.$element = $(element)
|
||||
this.options = this.getOptions(options)
|
||||
this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
|
||||
this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
|
||||
this.inState = { click: false, hover: false, focus: false }
|
||||
|
||||
if (this.$element[0] instanceof document.constructor && !this.options.selector) {
|
||||
|
@ -1332,7 +1502,15 @@ if (typeof jQuery === 'undefined') {
|
|||
}
|
||||
|
||||
Tooltip.prototype.getOptions = function (options) {
|
||||
options = $.extend({}, this.getDefaults(), this.$element.data(), options)
|
||||
var dataAttributes = this.$element.data()
|
||||
|
||||
for (var dataAttr in dataAttributes) {
|
||||
if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {
|
||||
delete dataAttributes[dataAttr]
|
||||
}
|
||||
}
|
||||
|
||||
options = $.extend({}, this.getDefaults(), dataAttributes, options)
|
||||
|
||||
if (options.delay && typeof options.delay == 'number') {
|
||||
options.delay = {
|
||||
|
@ -1341,6 +1519,10 @@ if (typeof jQuery === 'undefined') {
|
|||
}
|
||||
}
|
||||
|
||||
if (options.sanitize) {
|
||||
options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)
|
||||
}
|
||||
|
||||
return options
|
||||
}
|
||||
|
||||
|
@ -1452,7 +1634,7 @@ if (typeof jQuery === 'undefined') {
|
|||
.addClass(placement)
|
||||
.data('bs.' + this.type, this)
|
||||
|
||||
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
|
||||
this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
|
||||
this.$element.trigger('inserted.bs.' + this.type)
|
||||
|
||||
var pos = this.getPosition()
|
||||
|
@ -1554,7 +1736,16 @@ if (typeof jQuery === 'undefined') {
|
|||
var $tip = this.tip()
|
||||
var title = this.getTitle()
|
||||
|
||||
$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
|
||||
if (this.options.html) {
|
||||
if (this.options.sanitize) {
|
||||
title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)
|
||||
}
|
||||
|
||||
$tip.find('.tooltip-inner').html(title)
|
||||
} else {
|
||||
$tip.find('.tooltip-inner').text(title)
|
||||
}
|
||||
|
||||
$tip.removeClass('fade in top bottom left right')
|
||||
}
|
||||
|
||||
|
@ -1565,9 +1756,11 @@ if (typeof jQuery === 'undefined') {
|
|||
|
||||
function complete() {
|
||||
if (that.hoverState != 'in') $tip.detach()
|
||||
that.$element
|
||||
.removeAttr('aria-describedby')
|
||||
.trigger('hidden.bs.' + that.type)
|
||||
if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
|
||||
that.$element
|
||||
.removeAttr('aria-describedby')
|
||||
.trigger('hidden.bs.' + that.type)
|
||||
}
|
||||
callback && callback()
|
||||
}
|
||||
|
||||
|
@ -1610,7 +1803,10 @@ if (typeof jQuery === 'undefined') {
|
|||
// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
|
||||
elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
|
||||
}
|
||||
var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()
|
||||
var isSvg = window.SVGElement && el instanceof window.SVGElement
|
||||
// Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
|
||||
// See https://github.com/twbs/bootstrap/issues/20280
|
||||
var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
|
||||
var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
|
||||
var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
|
||||
|
||||
|
@ -1726,9 +1922,13 @@ if (typeof jQuery === 'undefined') {
|
|||
that.$tip = null
|
||||
that.$arrow = null
|
||||
that.$viewport = null
|
||||
that.$element = null
|
||||
})
|
||||
}
|
||||
|
||||
Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {
|
||||
return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)
|
||||
}
|
||||
|
||||
// TOOLTIP PLUGIN DEFINITION
|
||||
// =========================
|
||||
|
@ -1762,10 +1962,10 @@ if (typeof jQuery === 'undefined') {
|
|||
}(jQuery);
|
||||
|
||||
/* ========================================================================
|
||||
* Bootstrap: popover.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#popovers
|
||||
* Bootstrap: popover.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#popovers
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -1782,7 +1982,7 @@ if (typeof jQuery === 'undefined') {
|
|||
|
||||
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
|
||||
|
||||
Popover.VERSION = '3.3.6'
|
||||
Popover.VERSION = '3.4.1'
|
||||
|
||||
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
|
||||
placement: 'right',
|
||||
|
@ -1808,10 +2008,25 @@ if (typeof jQuery === 'undefined') {
|
|||
var title = this.getTitle()
|
||||
var content = this.getContent()
|
||||
|
||||
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
|
||||
$tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
|
||||
this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
|
||||
](content)
|
||||
if (this.options.html) {
|
||||
var typeContent = typeof content
|
||||
|
||||
if (this.options.sanitize) {
|
||||
title = this.sanitizeHtml(title)
|
||||
|
||||
if (typeContent === 'string') {
|
||||
content = this.sanitizeHtml(content)
|
||||
}
|
||||
}
|
||||
|
||||
$tip.find('.popover-title').html(title)
|
||||
$tip.find('.popover-content').children().detach().end()[
|
||||
typeContent === 'string' ? 'html' : 'append'
|
||||
](content)
|
||||
} else {
|
||||
$tip.find('.popover-title').text(title)
|
||||
$tip.find('.popover-content').children().detach().end().text(content)
|
||||
}
|
||||
|
||||
$tip.removeClass('fade top bottom left right in')
|
||||
|
||||
|
@ -1830,8 +2045,8 @@ if (typeof jQuery === 'undefined') {
|
|||
|
||||
return $e.attr('data-content')
|
||||
|| (typeof o.content == 'function' ?
|
||||
o.content.call($e[0]) :
|
||||
o.content)
|
||||
o.content.call($e[0]) :
|
||||
o.content)
|
||||
}
|
||||
|
||||
Popover.prototype.arrow = function () {
|
||||
|
@ -1871,10 +2086,10 @@ if (typeof jQuery === 'undefined') {
|
|||
}(jQuery);
|
||||
|
||||
/* ========================================================================
|
||||
* Bootstrap: scrollspy.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#scrollspy
|
||||
* Bootstrap: scrollspy.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#scrollspy
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -1900,7 +2115,7 @@ if (typeof jQuery === 'undefined') {
|
|||
this.process()
|
||||
}
|
||||
|
||||
ScrollSpy.VERSION = '3.3.6'
|
||||
ScrollSpy.VERSION = '3.4.1'
|
||||
|
||||
ScrollSpy.DEFAULTS = {
|
||||
offset: 10
|
||||
|
@ -2044,10 +2259,10 @@ if (typeof jQuery === 'undefined') {
|
|||
}(jQuery);
|
||||
|
||||
/* ========================================================================
|
||||
* Bootstrap: tab.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#tabs
|
||||
* Bootstrap: tab.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#tabs
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -2064,7 +2279,7 @@ if (typeof jQuery === 'undefined') {
|
|||
// jscs:enable requireDollarBeforejQueryAssignment
|
||||
}
|
||||
|
||||
Tab.VERSION = '3.3.6'
|
||||
Tab.VERSION = '3.4.1'
|
||||
|
||||
Tab.TRANSITION_DURATION = 150
|
||||
|
||||
|
@ -2093,7 +2308,7 @@ if (typeof jQuery === 'undefined') {
|
|||
|
||||
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
|
||||
|
||||
var $target = $(selector)
|
||||
var $target = $(document).find(selector)
|
||||
|
||||
this.activate($this.closest('li'), $ul)
|
||||
this.activate($target, $target.parent(), function () {
|
||||
|
@ -2118,15 +2333,15 @@ if (typeof jQuery === 'undefined') {
|
|||
$active
|
||||
.removeClass('active')
|
||||
.find('> .dropdown-menu > .active')
|
||||
.removeClass('active')
|
||||
.removeClass('active')
|
||||
.end()
|
||||
.find('[data-toggle="tab"]')
|
||||
.attr('aria-expanded', false)
|
||||
.attr('aria-expanded', false)
|
||||
|
||||
element
|
||||
.addClass('active')
|
||||
.find('[data-toggle="tab"]')
|
||||
.attr('aria-expanded', true)
|
||||
.attr('aria-expanded', true)
|
||||
|
||||
if (transition) {
|
||||
element[0].offsetWidth // reflow for transition
|
||||
|
@ -2138,10 +2353,10 @@ if (typeof jQuery === 'undefined') {
|
|||
if (element.parent('.dropdown-menu').length) {
|
||||
element
|
||||
.closest('li.dropdown')
|
||||
.addClass('active')
|
||||
.addClass('active')
|
||||
.end()
|
||||
.find('[data-toggle="tab"]')
|
||||
.attr('aria-expanded', true)
|
||||
.attr('aria-expanded', true)
|
||||
}
|
||||
|
||||
callback && callback()
|
||||
|
@ -2200,10 +2415,10 @@ if (typeof jQuery === 'undefined') {
|
|||
}(jQuery);
|
||||
|
||||
/* ========================================================================
|
||||
* Bootstrap: affix.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#affix
|
||||
* Bootstrap: affix.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#affix
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -2217,7 +2432,9 @@ if (typeof jQuery === 'undefined') {
|
|||
var Affix = function (element, options) {
|
||||
this.options = $.extend({}, Affix.DEFAULTS, options)
|
||||
|
||||
this.$target = $(this.options.target)
|
||||
var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
|
||||
|
||||
this.$target = target
|
||||
.on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
|
||||
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
|
||||
|
||||
|
@ -2229,7 +2446,7 @@ if (typeof jQuery === 'undefined') {
|
|||
this.checkPosition()
|
||||
}
|
||||
|
||||
Affix.VERSION = '3.3.6'
|
||||
Affix.VERSION = '3.4.1'
|
||||
|
||||
Affix.RESET = 'affix affix-top affix-bottom'
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,289 @@
|
|||
{
|
||||
"extends": [
|
||||
"stylelint-config-standard"
|
||||
],
|
||||
"plugins": [
|
||||
"stylelint-order"
|
||||
],
|
||||
"rules": {
|
||||
"at-rule-empty-line-before": null,
|
||||
"at-rule-name-space-after": "always",
|
||||
"at-rule-no-vendor-prefix": true,
|
||||
"at-rule-semicolon-space-before": "never",
|
||||
"block-closing-brace-empty-line-before": null,
|
||||
"block-closing-brace-newline-after": null,
|
||||
"block-opening-brace-space-before": null,
|
||||
"color-named": "never",
|
||||
"declaration-block-semicolon-newline-after": "always-multi-line",
|
||||
"declaration-block-semicolon-newline-before": "never-multi-line",
|
||||
"declaration-block-semicolon-space-after": "always-single-line",
|
||||
"declaration-empty-line-before": null,
|
||||
"declaration-no-important": true,
|
||||
"font-family-name-quotes": "always-where-recommended",
|
||||
"font-weight-notation": [
|
||||
"numeric",
|
||||
{
|
||||
"ignore": [
|
||||
"relative"
|
||||
]
|
||||
}
|
||||
],
|
||||
"function-url-no-scheme-relative": true,
|
||||
"function-url-quotes": "always",
|
||||
"length-zero-no-unit": true,
|
||||
"max-empty-lines": 2,
|
||||
"max-line-length": null,
|
||||
"media-feature-name-no-unknown": [
|
||||
true,
|
||||
{
|
||||
"ignoreMediaFeatureNames": [
|
||||
"prefers-reduced-motion"
|
||||
]
|
||||
}
|
||||
],
|
||||
"media-feature-name-no-vendor-prefix": true,
|
||||
"media-feature-parentheses-space-inside": "never",
|
||||
"media-feature-range-operator-space-after": "always",
|
||||
"media-feature-range-operator-space-before": "never",
|
||||
"no-descending-specificity": null,
|
||||
"no-duplicate-selectors": true,
|
||||
"number-leading-zero": "never",
|
||||
"order/properties-order": [
|
||||
"position",
|
||||
"top",
|
||||
"right",
|
||||
"bottom",
|
||||
"left",
|
||||
"z-index",
|
||||
"box-sizing",
|
||||
"display",
|
||||
"flex",
|
||||
"flex-align",
|
||||
"flex-basis",
|
||||
"flex-direction",
|
||||
"flex-wrap",
|
||||
"flex-flow",
|
||||
"flex-shrink",
|
||||
"flex-grow",
|
||||
"flex-order",
|
||||
"flex-pack",
|
||||
"align-content",
|
||||
"align-items",
|
||||
"align-self",
|
||||
"justify-content",
|
||||
"order",
|
||||
"float",
|
||||
"width",
|
||||
"min-width",
|
||||
"max-width",
|
||||
"height",
|
||||
"min-height",
|
||||
"max-height",
|
||||
"padding",
|
||||
"padding-top",
|
||||
"padding-right",
|
||||
"padding-bottom",
|
||||
"padding-left",
|
||||
"margin",
|
||||
"margin-top",
|
||||
"margin-right",
|
||||
"margin-bottom",
|
||||
"margin-left",
|
||||
"overflow",
|
||||
"overflow-x",
|
||||
"overflow-y",
|
||||
"-webkit-overflow-scrolling",
|
||||
"-ms-overflow-x",
|
||||
"-ms-overflow-y",
|
||||
"-ms-overflow-style",
|
||||
"columns",
|
||||
"column-count",
|
||||
"column-fill",
|
||||
"column-gap",
|
||||
"column-rule",
|
||||
"column-rule-width",
|
||||
"column-rule-style",
|
||||
"column-rule-color",
|
||||
"column-span",
|
||||
"column-width",
|
||||
"orphans",
|
||||
"widows",
|
||||
"clip",
|
||||
"clear",
|
||||
"font",
|
||||
"font-family",
|
||||
"font-size",
|
||||
"font-style",
|
||||
"font-weight",
|
||||
"font-variant",
|
||||
"font-size-adjust",
|
||||
"font-stretch",
|
||||
"font-effect",
|
||||
"font-emphasize",
|
||||
"font-emphasize-position",
|
||||
"font-emphasize-style",
|
||||
"font-smooth",
|
||||
"src",
|
||||
"hyphens",
|
||||
"line-height",
|
||||
"color",
|
||||
"text-align",
|
||||
"text-align-last",
|
||||
"text-emphasis",
|
||||
"text-emphasis-color",
|
||||
"text-emphasis-style",
|
||||
"text-emphasis-position",
|
||||
"text-decoration",
|
||||
"text-indent",
|
||||
"text-justify",
|
||||
"text-outline",
|
||||
"-ms-text-overflow",
|
||||
"text-overflow",
|
||||
"text-overflow-ellipsis",
|
||||
"text-overflow-mode",
|
||||
"text-shadow",
|
||||
"text-transform",
|
||||
"text-wrap",
|
||||
"-webkit-text-size-adjust",
|
||||
"-ms-text-size-adjust",
|
||||
"letter-spacing",
|
||||
"-ms-word-break",
|
||||
"word-break",
|
||||
"word-spacing",
|
||||
"-ms-word-wrap",
|
||||
"word-wrap",
|
||||
"overflow-wrap",
|
||||
"tab-size",
|
||||
"white-space",
|
||||
"vertical-align",
|
||||
"direction",
|
||||
"unicode-bidi",
|
||||
"list-style",
|
||||
"list-style-position",
|
||||
"list-style-type",
|
||||
"list-style-image",
|
||||
"pointer-events",
|
||||
"-ms-touch-action",
|
||||
"touch-action",
|
||||
"cursor",
|
||||
"visibility",
|
||||
"zoom",
|
||||
"table-layout",
|
||||
"empty-cells",
|
||||
"caption-side",
|
||||
"border-spacing",
|
||||
"border-collapse",
|
||||
"content",
|
||||
"quotes",
|
||||
"counter-reset",
|
||||
"counter-increment",
|
||||
"resize",
|
||||
"user-select",
|
||||
"nav-index",
|
||||
"nav-up",
|
||||
"nav-right",
|
||||
"nav-down",
|
||||
"nav-left",
|
||||
"background",
|
||||
"background-color",
|
||||
"background-image",
|
||||
"filter",
|
||||
"background-repeat",
|
||||
"background-attachment",
|
||||
"background-position",
|
||||
"background-position-x",
|
||||
"background-position-y",
|
||||
"background-clip",
|
||||
"background-origin",
|
||||
"background-size",
|
||||
"border",
|
||||
"border-color",
|
||||
"border-style",
|
||||
"border-width",
|
||||
"border-top",
|
||||
"border-top-color",
|
||||
"border-top-style",
|
||||
"border-top-width",
|
||||
"border-right",
|
||||
"border-right-color",
|
||||
"border-right-style",
|
||||
"border-right-width",
|
||||
"border-bottom",
|
||||
"border-bottom-color",
|
||||
"border-bottom-style",
|
||||
"border-bottom-width",
|
||||
"border-left",
|
||||
"border-left-color",
|
||||
"border-left-style",
|
||||
"border-left-width",
|
||||
"border-radius",
|
||||
"border-top-left-radius",
|
||||
"border-top-right-radius",
|
||||
"border-bottom-right-radius",
|
||||
"border-bottom-left-radius",
|
||||
"border-image",
|
||||
"border-image-source",
|
||||
"border-image-slice",
|
||||
"border-image-width",
|
||||
"border-image-outset",
|
||||
"border-image-repeat",
|
||||
"outline",
|
||||
"outline-width",
|
||||
"outline-style",
|
||||
"outline-color",
|
||||
"outline-offset",
|
||||
"box-shadow",
|
||||
"opacity",
|
||||
"-ms-interpolation-mode",
|
||||
"page-break-after",
|
||||
"page-break-before",
|
||||
"page-break-inside",
|
||||
"transition",
|
||||
"transition-delay",
|
||||
"transition-timing-function",
|
||||
"transition-duration",
|
||||
"transition-property",
|
||||
"transform",
|
||||
"transform-origin",
|
||||
"perspective",
|
||||
"appearance",
|
||||
"animation",
|
||||
"animation-name",
|
||||
"animation-duration",
|
||||
"animation-play-state",
|
||||
"animation-timing-function",
|
||||
"animation-delay",
|
||||
"animation-iteration-count",
|
||||
"animation-direction",
|
||||
"animation-fill-mode",
|
||||
"fill",
|
||||
"stroke"
|
||||
],
|
||||
"property-no-vendor-prefix": true,
|
||||
"rule-empty-line-before": null,
|
||||
"selector-attribute-quotes": "always",
|
||||
"selector-pseudo-element-colon-notation": "single",
|
||||
"selector-list-comma-newline-after": "always",
|
||||
"selector-list-comma-newline-before": "never-multi-line",
|
||||
"selector-list-comma-space-after": "always-single-line",
|
||||
"selector-list-comma-space-before": "never-single-line",
|
||||
"selector-max-attribute": 2,
|
||||
"selector-max-class": 4,
|
||||
"selector-max-combinators": 4,
|
||||
"selector-max-compound-selectors": 4,
|
||||
"selector-max-empty-lines": 1,
|
||||
"selector-max-id": 0,
|
||||
"selector-max-specificity": null,
|
||||
"selector-max-type": 2,
|
||||
"selector-max-universal": 1,
|
||||
"selector-no-qualifying-type": true,
|
||||
"selector-no-vendor-prefix": true,
|
||||
"shorthand-property-no-redundant-values": true,
|
||||
"string-quotes": "double",
|
||||
"value-keyword-case": "lower",
|
||||
"value-list-comma-newline-after": "never-multi-line",
|
||||
"value-list-comma-newline-before": "never-multi-line",
|
||||
"value-list-comma-space-after": "always",
|
||||
"value-no-vendor-prefix": true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
|
||||
|
||||
var browsers = {
|
||||
safariMac: {
|
||||
base: 'BrowserStack',
|
||||
os: 'OS X',
|
||||
os_version: 'Yosemite',
|
||||
browser: 'Safari',
|
||||
browser_version: '8.0'
|
||||
},
|
||||
chromeMac: {
|
||||
base: 'BrowserStack',
|
||||
os: 'OS X',
|
||||
os_version: 'Yosemite',
|
||||
browser : 'Chrome',
|
||||
browser_version : 'latest'
|
||||
},
|
||||
firefoxMac: {
|
||||
base: 'BrowserStack',
|
||||
os: 'OS X',
|
||||
os_version: 'Yosemite',
|
||||
browser: 'Firefox',
|
||||
browser_version: 'latest'
|
||||
},
|
||||
'ie11Win8.1': {
|
||||
base: 'BrowserStack',
|
||||
os: 'Windows',
|
||||
os_version: '8.1',
|
||||
browser: 'IE',
|
||||
browser_version: '11.0'
|
||||
},
|
||||
ie10Win8: {
|
||||
base: 'BrowserStack',
|
||||
os: 'Windows',
|
||||
os_version: '8',
|
||||
browser: 'IE',
|
||||
browser_version: '10.0'
|
||||
},
|
||||
ie9Win7: {
|
||||
base: 'BrowserStack',
|
||||
os: 'Windows',
|
||||
os_version: '7',
|
||||
browser: 'IE',
|
||||
browser_version: '9.0'
|
||||
},
|
||||
ie8Win7: {
|
||||
base: 'BrowserStack',
|
||||
os: 'Windows',
|
||||
os_version: '7',
|
||||
browser: 'IE',
|
||||
browser_version: '8.0'
|
||||
},
|
||||
'chromeWin8.1': {
|
||||
base: 'BrowserStack',
|
||||
os: 'Windows',
|
||||
os_version: '8.1',
|
||||
browser: 'Chrome',
|
||||
browser_version: 'latest'
|
||||
},
|
||||
'firefoxWin8.1': {
|
||||
base: 'BrowserStack',
|
||||
os: 'Windows',
|
||||
os_version: '8.1',
|
||||
browser: 'Firefox',
|
||||
browser_version: 'latest'
|
||||
},
|
||||
iphone6: {
|
||||
base: 'BrowserStack',
|
||||
os: 'ios',
|
||||
os_version: '11.2',
|
||||
device: 'iPhone 6',
|
||||
real_mobile: true
|
||||
},
|
||||
nexus5: {
|
||||
base: 'BrowserStack',
|
||||
os: 'android',
|
||||
os_version: '4.4',
|
||||
device: 'Google Nexus 5',
|
||||
real_mobile: true
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
list: browsers,
|
||||
keys: Object.keys(browsers)
|
||||
};
|
|
@ -1,7 +1,7 @@
|
|||
/*!
|
||||
* Bootstrap Grunt task for the CommonJS module generation
|
||||
* http://getbootstrap.com
|
||||
* Copyright 2014-2015 Twitter, Inc.
|
||||
* https://getbootstrap.com/
|
||||
* Copyright 2014-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
|
@ -16,7 +16,7 @@ module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath)
|
|||
var destDir = path.dirname(destFilepath);
|
||||
|
||||
function srcPathToDestRequire(srcFilepath) {
|
||||
var requirePath = path.relative(destDir, srcFilepath).replace(/\\/g, '/');
|
||||
var requirePath = path.posix.relative(destDir, srcFilepath);
|
||||
return 'require(\'' + requirePath + '\')';
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*!
|
||||
* Bootstrap Grunt task for Glyphicons data generation
|
||||
* http://getbootstrap.com
|
||||
* Copyright 2014-2015 Twitter, Inc.
|
||||
* https://getbootstrap.com/
|
||||
* Copyright 2014-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*!
|
||||
* Bootstrap Grunt task for parsing Less docstrings
|
||||
* http://getbootstrap.com
|
||||
* Copyright 2014-2015 Twitter, Inc.
|
||||
* https://getbootstrap.com/
|
||||
* Copyright 2014-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*!
|
||||
* Bootstrap Grunt task for generating raw-files.min.js for the Customizer
|
||||
* http://getbootstrap.com
|
||||
* Copyright 2014-2015 Twitter, Inc.
|
||||
* https://getbootstrap.com/
|
||||
* Copyright 2014-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
|
|
|
@ -0,0 +1,109 @@
|
|||
#!/usr/bin/env node
|
||||
'use strict';
|
||||
|
||||
/* globals Set */
|
||||
/*!
|
||||
* Script to update version number references in the project.
|
||||
* Copyright 2015-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var sh = require('shelljs');
|
||||
sh.config.fatal = true;
|
||||
var sed = sh.sed;
|
||||
|
||||
// Blame TC39... https://github.com/benjamingr/RegExp.escape/issues/37
|
||||
RegExp.quote = function (string) {
|
||||
return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
|
||||
};
|
||||
RegExp.quoteReplacement = function (string) {
|
||||
return string.replace(/[$]/g, '$$');
|
||||
};
|
||||
|
||||
var DRY_RUN = false;
|
||||
|
||||
function walkAsync(directory, excludedDirectories, fileCallback, errback) {
|
||||
if (excludedDirectories.has(path.parse(directory).base)) {
|
||||
return;
|
||||
}
|
||||
fs.readdir(directory, function (err, names) {
|
||||
if (err) {
|
||||
errback(err);
|
||||
return;
|
||||
}
|
||||
names.forEach(function (name) {
|
||||
var filepath = path.join(directory, name);
|
||||
fs.lstat(filepath, function (err, stats) {
|
||||
if (err) {
|
||||
process.nextTick(errback, err);
|
||||
return;
|
||||
}
|
||||
if (stats.isSymbolicLink()) {
|
||||
return;
|
||||
}
|
||||
else if (stats.isDirectory()) {
|
||||
process.nextTick(walkAsync, filepath, excludedDirectories, fileCallback, errback);
|
||||
}
|
||||
else if (stats.isFile()) {
|
||||
process.nextTick(fileCallback, filepath);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function replaceRecursively(directory, excludedDirectories, allowedExtensions, original, replacement) {
|
||||
original = new RegExp(RegExp.quote(original), 'g');
|
||||
replacement = RegExp.quoteReplacement(replacement);
|
||||
var updateFile = !DRY_RUN ? function (filepath) {
|
||||
if (allowedExtensions.has(path.parse(filepath).ext)) {
|
||||
sed('-i', original, replacement, filepath);
|
||||
}
|
||||
} : function (filepath) {
|
||||
if (allowedExtensions.has(path.parse(filepath).ext)) {
|
||||
console.log('FILE: ' + filepath);
|
||||
}
|
||||
else {
|
||||
console.log('EXCLUDED:' + filepath);
|
||||
}
|
||||
};
|
||||
walkAsync(directory, excludedDirectories, updateFile, function (err) {
|
||||
console.error('ERROR while traversing directory!:');
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
||||
}
|
||||
|
||||
function main(args) {
|
||||
if (args.length !== 2) {
|
||||
console.error('USAGE: change-version old_version new_version');
|
||||
console.error('Got arguments:', args);
|
||||
process.exit(1);
|
||||
}
|
||||
var oldVersion = args[0];
|
||||
var newVersion = args[1];
|
||||
var EXCLUDED_DIRS = new Set([
|
||||
'.git',
|
||||
'node_modules',
|
||||
'vendor'
|
||||
]);
|
||||
var INCLUDED_EXTENSIONS = new Set([
|
||||
// This extension whitelist is how we avoid modifying binary files
|
||||
'',
|
||||
'.css',
|
||||
'.html',
|
||||
'.js',
|
||||
'.json',
|
||||
'.less',
|
||||
'.md',
|
||||
'.nuspec',
|
||||
'.ps1',
|
||||
'.scss',
|
||||
'.txt',
|
||||
'.yml'
|
||||
]);
|
||||
replaceRecursively('.', EXCLUDED_DIRS, INCLUDED_EXTENSIONS, oldVersion, newVersion);
|
||||
}
|
||||
|
||||
main(process.argv.slice(2));
|
|
@ -11,23 +11,31 @@
|
|||
"../assets/js/src/customizer.js"
|
||||
],
|
||||
"docsJs": [
|
||||
"../assets/js/vendor/requestAnimationFrame-polyfill.js",
|
||||
"../assets/js/vendor/base64.js",
|
||||
"../assets/js/vendor/holder.min.js",
|
||||
"../assets/js/vendor/ZeroClipboard.min.js",
|
||||
"../assets/js/vendor/anchor.js",
|
||||
"../assets/js/src/application.js"
|
||||
"../assets/js/vendor/clipboard.min.js",
|
||||
"../assets/js/vendor/anchor.min.js",
|
||||
"../assets/js/src/application.js",
|
||||
"../assets/js/src/search.js",
|
||||
"../assets/js/ie10-viewport-bug-workaround.js",
|
||||
"../assets/js/ie-emulation-modes-warning.js"
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"autoprefixerBrowsers": [
|
||||
"Android 2.3",
|
||||
"Android >= 4",
|
||||
"Chrome >= 20",
|
||||
"Firefox >= 24",
|
||||
"Explorer >= 8",
|
||||
"iOS >= 6",
|
||||
"Opera >= 12",
|
||||
"Safari >= 6"
|
||||
],
|
||||
"autoprefixer": {
|
||||
"browsers": [
|
||||
"Android 2.3",
|
||||
"Android >= 4",
|
||||
"Chrome >= 20",
|
||||
"Firefox >= 24",
|
||||
"Explorer >= 8",
|
||||
"iOS >= 6",
|
||||
"Opera >= 12",
|
||||
"Safari >= 6"
|
||||
],
|
||||
"cascade": false
|
||||
},
|
||||
"jqueryCheck": [
|
||||
"if (typeof jQuery === 'undefined') {",
|
||||
" throw new Error('Bootstrap\\'s JavaScript requires jQuery')",
|
||||
|
@ -37,8 +45,8 @@
|
|||
"+function ($) {",
|
||||
" 'use strict';",
|
||||
" var version = $.fn.jquery.split(' ')[0].split('.')",
|
||||
" if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) {",
|
||||
" throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3')",
|
||||
" if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {",
|
||||
" throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')",
|
||||
" }",
|
||||
"}(jQuery);\n\n"
|
||||
]
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
|
||||
/*!
|
||||
* Script to generate SRI hashes for use in our docs.
|
||||
* Remember to use the same vendor files as the CDN ones,
|
||||
* otherwise the hashes won't match!
|
||||
*
|
||||
* Copyright 2017-2019 The Bootstrap Authors
|
||||
* Copyright 2017-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
var crypto = require('crypto');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var replace = require('replace-in-file');
|
||||
|
||||
var configFile = path.join(__dirname, '../_config.yml');
|
||||
|
||||
// Array of objects which holds the files to generate SRI hashes for.
|
||||
// `file` is the path from the root folder
|
||||
// `configPropertyName` is the _config.yml variable's name of the file
|
||||
var files = [
|
||||
{
|
||||
file: 'dist/css/bootstrap.min.css',
|
||||
configPropertyName: 'css_hash'
|
||||
},
|
||||
{
|
||||
file: 'dist/css/bootstrap-theme.min.css',
|
||||
configPropertyName: 'css_theme_hash'
|
||||
},
|
||||
{
|
||||
file: 'dist/js/bootstrap.min.js',
|
||||
configPropertyName: 'js_hash'
|
||||
}
|
||||
];
|
||||
|
||||
files.forEach(function (file) {
|
||||
fs.readFile(file.file, 'utf8', function (err, data) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
var algo = 'sha384';
|
||||
var hash = crypto.createHash(algo).update(data, 'utf8').digest('base64');
|
||||
var integrity = algo + '-' + hash;
|
||||
|
||||
console.log(file.configPropertyName + ': ' + integrity);
|
||||
|
||||
try {
|
||||
replace.sync({
|
||||
files: configFile,
|
||||
from: new RegExp('(\\s' + file.configPropertyName + ':\\s+"|\')(\\S+)("|\')'),
|
||||
to: '$1' + integrity + '$3'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Error occurred:', error);
|
||||
}
|
||||
});
|
||||
});
|
|
@ -0,0 +1,79 @@
|
|||
'use strict';
|
||||
|
||||
var ip = require('ip');
|
||||
var browserConfig = require('./browsers');
|
||||
var browserStack = process.env.BROWSER === 'true';
|
||||
|
||||
module.exports = function (config) {
|
||||
var conf = {
|
||||
basePath: '../',
|
||||
frameworks: ['qunit'],
|
||||
plugins: ['karma-qunit'],
|
||||
// list of files / patterns to load in the browser
|
||||
files: [
|
||||
'js/tests/vendor/jquery.min.js',
|
||||
'js/tooltip.js',
|
||||
'js/!(tooltip).js',
|
||||
'js/tests/unit/*.js'
|
||||
],
|
||||
reporters: ['dots'],
|
||||
port: 9876,
|
||||
colors: true,
|
||||
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
|
||||
logLevel: config.LOG_ERROR || config.LOG_WARN,
|
||||
autoWatch: false,
|
||||
singleRun: true,
|
||||
concurrency: Infinity,
|
||||
client: {
|
||||
qunit: {
|
||||
showUI: true
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (browserStack) {
|
||||
conf.hostname = ip.address();
|
||||
conf.browserStack = {
|
||||
username: process.env.BROWSER_STACK_USERNAME,
|
||||
accessKey: process.env.BROWSER_STACK_ACCESS_KEY,
|
||||
build: 'bootstrap-v3-' + new Date().toISOString(),
|
||||
project: 'Bootstrap v3',
|
||||
retryLimit: 1
|
||||
};
|
||||
conf.plugins.push('karma-browserstack-launcher');
|
||||
conf.customLaunchers = browserConfig.list;
|
||||
conf.browsers = browserConfig.keys;
|
||||
conf.reporters.push('BrowserStack');
|
||||
} else {
|
||||
conf.frameworks.push('detectBrowsers');
|
||||
conf.plugins.push(
|
||||
'karma-chrome-launcher',
|
||||
'karma-firefox-launcher',
|
||||
'karma-detect-browsers'
|
||||
);
|
||||
|
||||
conf.detectBrowsers = {
|
||||
usePhantomJS: false,
|
||||
postDetection: function (availableBrowser) {
|
||||
if (typeof process.env.TRAVIS_JOB_ID !== 'undefined' || availableBrowser.includes('Chrome')) {
|
||||
return ['ChromeHeadless'];
|
||||
}
|
||||
|
||||
if (availableBrowser.includes('Firefox')) {
|
||||
return ['FirefoxHeadless'];
|
||||
}
|
||||
|
||||
throw new Error('Please install Firefox or Chrome');
|
||||
}
|
||||
};
|
||||
|
||||
conf.customLaunchers = {
|
||||
FirefoxHeadless: {
|
||||
base: 'Firefox',
|
||||
flags: ['-headless']
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
config.set(conf);
|
||||
};
|
|
@ -1,82 +0,0 @@
|
|||
[
|
||||
# Docs: https://saucelabs.com/docs/platforms/webdriver
|
||||
|
||||
{
|
||||
browserName: "safari",
|
||||
platform: "OS X 10.10"
|
||||
},
|
||||
{
|
||||
browserName: "chrome",
|
||||
platform: "OS X 10.10"
|
||||
},
|
||||
{
|
||||
browserName: "firefox",
|
||||
platform: "OS X 10.10"
|
||||
},
|
||||
|
||||
# Mac Opera not currently supported by Sauce Labs
|
||||
|
||||
{
|
||||
browserName: "internet explorer",
|
||||
version: "11",
|
||||
platform: "Windows 8.1"
|
||||
},
|
||||
{
|
||||
browserName: "internet explorer",
|
||||
version: "10",
|
||||
platform: "Windows 8"
|
||||
},
|
||||
{
|
||||
browserName: "internet explorer",
|
||||
version: "9",
|
||||
platform: "Windows 7"
|
||||
},
|
||||
{
|
||||
browserName: "internet explorer",
|
||||
version: "8",
|
||||
platform: "Windows 7"
|
||||
},
|
||||
|
||||
# { # Unofficial
|
||||
# browserName: "internet explorer",
|
||||
# version: "7",
|
||||
# platform: "Windows XP"
|
||||
# },
|
||||
|
||||
{
|
||||
browserName: "chrome",
|
||||
platform: "Windows 8.1"
|
||||
},
|
||||
{
|
||||
browserName: "firefox",
|
||||
platform: "Windows 8.1"
|
||||
},
|
||||
|
||||
# Win Opera 15+ not currently supported by Sauce Labs
|
||||
|
||||
{
|
||||
browserName: "iphone",
|
||||
platform: "OS X 10.10",
|
||||
version: "8.2"
|
||||
},
|
||||
|
||||
# iOS Chrome not currently supported by Sauce Labs
|
||||
|
||||
# Linux (unofficial)
|
||||
{
|
||||
browserName: "chrome",
|
||||
platform: "Linux"
|
||||
},
|
||||
{
|
||||
browserName: "firefox",
|
||||
platform: "Linux"
|
||||
}
|
||||
|
||||
# Android Chrome not currently supported by Sauce Labs
|
||||
|
||||
# { # Android Browser (super-unofficial)
|
||||
# browserName: "android",
|
||||
# version: "4.0",
|
||||
# platform: "Linux"
|
||||
# }
|
||||
]
|
|
@ -1,8 +1,8 @@
|
|||
/* ========================================================================
|
||||
* Bootstrap: affix.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#affix
|
||||
* Bootstrap: affix.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#affix
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -16,7 +16,9 @@
|
|||
var Affix = function (element, options) {
|
||||
this.options = $.extend({}, Affix.DEFAULTS, options)
|
||||
|
||||
this.$target = $(this.options.target)
|
||||
var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
|
||||
|
||||
this.$target = target
|
||||
.on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
|
||||
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
|
||||
|
||||
|
@ -28,7 +30,7 @@
|
|||
this.checkPosition()
|
||||
}
|
||||
|
||||
Affix.VERSION = '3.3.6'
|
||||
Affix.VERSION = '3.4.1'
|
||||
|
||||
Affix.RESET = 'affix affix-top affix-bottom'
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* ========================================================================
|
||||
* Bootstrap: alert.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#alerts
|
||||
* Bootstrap: alert.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#alerts
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
|||
$(el).on('click', dismiss, this.close)
|
||||
}
|
||||
|
||||
Alert.VERSION = '3.3.6'
|
||||
Alert.VERSION = '3.4.1'
|
||||
|
||||
Alert.TRANSITION_DURATION = 150
|
||||
|
||||
|
@ -31,7 +31,8 @@
|
|||
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
||||
}
|
||||
|
||||
var $parent = $(selector)
|
||||
selector = selector === '#' ? [] : selector
|
||||
var $parent = $(document).find(selector)
|
||||
|
||||
if (e) e.preventDefault()
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* ========================================================================
|
||||
* Bootstrap: button.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#buttons
|
||||
* Bootstrap: button.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#buttons
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
|||
this.isLoading = false
|
||||
}
|
||||
|
||||
Button.VERSION = '3.3.6'
|
||||
Button.VERSION = '3.4.1'
|
||||
|
||||
Button.DEFAULTS = {
|
||||
loadingText: 'loading...'
|
||||
|
@ -41,10 +41,10 @@
|
|||
|
||||
if (state == 'loadingText') {
|
||||
this.isLoading = true
|
||||
$el.addClass(d).attr(d, d)
|
||||
$el.addClass(d).attr(d, d).prop(d, true)
|
||||
} else if (this.isLoading) {
|
||||
this.isLoading = false
|
||||
$el.removeClass(d).removeAttr(d)
|
||||
$el.removeClass(d).removeAttr(d).prop(d, false)
|
||||
}
|
||||
}, this), 0)
|
||||
}
|
||||
|
@ -108,10 +108,15 @@
|
|||
|
||||
$(document)
|
||||
.on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
|
||||
var $btn = $(e.target)
|
||||
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
|
||||
var $btn = $(e.target).closest('.btn')
|
||||
Plugin.call($btn, 'toggle')
|
||||
if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault()
|
||||
if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
|
||||
// Prevent double click on radios, and the double selections (so cancellation) on checkboxes
|
||||
e.preventDefault()
|
||||
// The target component still receive the focus
|
||||
if ($btn.is('input,button')) $btn.trigger('focus')
|
||||
else $btn.find('input:visible,button:visible').first().trigger('focus')
|
||||
}
|
||||
})
|
||||
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
|
||||
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* ========================================================================
|
||||
* Bootstrap: carousel.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#carousel
|
||||
* Bootstrap: carousel.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#carousel
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
|||
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
|
||||
}
|
||||
|
||||
Carousel.VERSION = '3.3.6'
|
||||
Carousel.VERSION = '3.4.1'
|
||||
|
||||
Carousel.TRANSITION_DURATION = 600
|
||||
|
||||
|
@ -144,7 +144,9 @@
|
|||
var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
|
||||
if ($.support.transition && this.$element.hasClass('slide')) {
|
||||
$next.addClass(type)
|
||||
$next[0].offsetWidth // force reflow
|
||||
if (typeof $next === 'object' && $next.length) {
|
||||
$next[0].offsetWidth // force reflow
|
||||
}
|
||||
$active.addClass(direction)
|
||||
$next.addClass(direction)
|
||||
$active
|
||||
|
@ -206,10 +208,17 @@
|
|||
// =================
|
||||
|
||||
var clickHandler = function (e) {
|
||||
var href
|
||||
var $this = $(this)
|
||||
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
|
||||
var href = $this.attr('href')
|
||||
if (href) {
|
||||
href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
|
||||
}
|
||||
|
||||
var target = $this.attr('data-target') || href
|
||||
var $target = $(document).find(target)
|
||||
|
||||
if (!$target.hasClass('carousel')) return
|
||||
|
||||
var options = $.extend({}, $target.data(), $this.data())
|
||||
var slideIndex = $this.attr('data-slide-to')
|
||||
if (slideIndex) options.interval = false
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
/* ========================================================================
|
||||
* Bootstrap: collapse.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#collapse
|
||||
* Bootstrap: collapse.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#collapse
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
/* jshint latedef: false */
|
||||
|
||||
+function ($) {
|
||||
'use strict';
|
||||
|
@ -29,7 +30,7 @@
|
|||
if (this.options.toggle) this.toggle()
|
||||
}
|
||||
|
||||
Collapse.VERSION = '3.3.6'
|
||||
Collapse.VERSION = '3.4.1'
|
||||
|
||||
Collapse.TRANSITION_DURATION = 350
|
||||
|
||||
|
@ -136,7 +137,7 @@
|
|||
}
|
||||
|
||||
Collapse.prototype.getParent = function () {
|
||||
return $(this.options.parent)
|
||||
return $(document).find(this.options.parent)
|
||||
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
|
||||
.each($.proxy(function (i, element) {
|
||||
var $element = $(element)
|
||||
|
@ -159,7 +160,7 @@
|
|||
var target = $trigger.attr('data-target')
|
||||
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
|
||||
|
||||
return $(target)
|
||||
return $(document).find(target)
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* ========================================================================
|
||||
* Bootstrap: dropdown.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#dropdowns
|
||||
* Bootstrap: dropdown.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#dropdowns
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
|||
$(element).on('click.bs.dropdown', this.toggle)
|
||||
}
|
||||
|
||||
Dropdown.VERSION = '3.3.6'
|
||||
Dropdown.VERSION = '3.4.1'
|
||||
|
||||
function getParent($this) {
|
||||
var selector = $this.attr('data-target')
|
||||
|
@ -29,7 +29,7 @@
|
|||
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
||||
}
|
||||
|
||||
var $parent = selector && $(selector)
|
||||
var $parent = selector !== '#' ? $(document).find(selector) : null
|
||||
|
||||
return $parent && $parent.length ? $parent : $this.parent()
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* ========================================================================
|
||||
* Bootstrap: modal.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#modals
|
||||
* Bootstrap: modal.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#modals
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -14,15 +14,16 @@
|
|||
// ======================
|
||||
|
||||
var Modal = function (element, options) {
|
||||
this.options = options
|
||||
this.$body = $(document.body)
|
||||
this.$element = $(element)
|
||||
this.$dialog = this.$element.find('.modal-dialog')
|
||||
this.$backdrop = null
|
||||
this.isShown = null
|
||||
this.originalBodyPad = null
|
||||
this.scrollbarWidth = 0
|
||||
this.options = options
|
||||
this.$body = $(document.body)
|
||||
this.$element = $(element)
|
||||
this.$dialog = this.$element.find('.modal-dialog')
|
||||
this.$backdrop = null
|
||||
this.isShown = null
|
||||
this.originalBodyPad = null
|
||||
this.scrollbarWidth = 0
|
||||
this.ignoreBackdropClick = false
|
||||
this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
|
||||
|
||||
if (this.options.remote) {
|
||||
this.$element
|
||||
|
@ -33,7 +34,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
Modal.VERSION = '3.3.6'
|
||||
Modal.VERSION = '3.4.1'
|
||||
|
||||
Modal.TRANSITION_DURATION = 300
|
||||
Modal.BACKDROP_TRANSITION_DURATION = 150
|
||||
|
@ -50,7 +51,7 @@
|
|||
|
||||
Modal.prototype.show = function (_relatedTarget) {
|
||||
var that = this
|
||||
var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
|
||||
var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
|
||||
|
||||
this.$element.trigger(e)
|
||||
|
||||
|
@ -140,7 +141,9 @@
|
|||
$(document)
|
||||
.off('focusin.bs.modal') // guard against infinite focus loop
|
||||
.on('focusin.bs.modal', $.proxy(function (e) {
|
||||
if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
|
||||
if (document !== e.target &&
|
||||
this.$element[0] !== e.target &&
|
||||
!this.$element.has(e.target).length) {
|
||||
this.$element.trigger('focus')
|
||||
}
|
||||
}, this))
|
||||
|
@ -242,7 +245,7 @@
|
|||
var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
|
||||
|
||||
this.$element.css({
|
||||
paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
|
||||
paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
|
||||
paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
|
||||
})
|
||||
}
|
||||
|
@ -267,11 +270,26 @@
|
|||
Modal.prototype.setScrollbar = function () {
|
||||
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
|
||||
this.originalBodyPad = document.body.style.paddingRight || ''
|
||||
if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
|
||||
var scrollbarWidth = this.scrollbarWidth
|
||||
if (this.bodyIsOverflowing) {
|
||||
this.$body.css('padding-right', bodyPad + scrollbarWidth)
|
||||
$(this.fixedContent).each(function (index, element) {
|
||||
var actualPadding = element.style.paddingRight
|
||||
var calculatedPadding = $(element).css('padding-right')
|
||||
$(element)
|
||||
.data('padding-right', actualPadding)
|
||||
.css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Modal.prototype.resetScrollbar = function () {
|
||||
this.$body.css('padding-right', this.originalBodyPad)
|
||||
$(this.fixedContent).each(function (index, element) {
|
||||
var padding = $(element).data('padding-right')
|
||||
$(element).removeData('padding-right')
|
||||
element.style.paddingRight = padding ? padding : ''
|
||||
})
|
||||
}
|
||||
|
||||
Modal.prototype.measureScrollbar = function () { // thx walsh
|
||||
|
@ -289,8 +307,8 @@
|
|||
|
||||
function Plugin(option, _relatedTarget) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
var data = $this.data('bs.modal')
|
||||
var $this = $(this)
|
||||
var data = $this.data('bs.modal')
|
||||
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
||||
|
||||
if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
|
||||
|
@ -301,7 +319,7 @@
|
|||
|
||||
var old = $.fn.modal
|
||||
|
||||
$.fn.modal = Plugin
|
||||
$.fn.modal = Plugin
|
||||
$.fn.modal.Constructor = Modal
|
||||
|
||||
|
||||
|
@ -318,10 +336,13 @@
|
|||
// ==============
|
||||
|
||||
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
|
||||
var $this = $(this)
|
||||
var href = $this.attr('href')
|
||||
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
|
||||
var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
|
||||
var $this = $(this)
|
||||
var href = $this.attr('href')
|
||||
var target = $this.attr('data-target') ||
|
||||
(href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
|
||||
|
||||
var $target = $(document).find(target)
|
||||
var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
|
||||
|
||||
if ($this.is('a')) e.preventDefault()
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* ========================================================================
|
||||
* Bootstrap: popover.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#popovers
|
||||
* Bootstrap: popover.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#popovers
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
|||
|
||||
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
|
||||
|
||||
Popover.VERSION = '3.3.6'
|
||||
Popover.VERSION = '3.4.1'
|
||||
|
||||
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
|
||||
placement: 'right',
|
||||
|
@ -45,10 +45,25 @@
|
|||
var title = this.getTitle()
|
||||
var content = this.getContent()
|
||||
|
||||
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
|
||||
$tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
|
||||
this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
|
||||
](content)
|
||||
if (this.options.html) {
|
||||
var typeContent = typeof content
|
||||
|
||||
if (this.options.sanitize) {
|
||||
title = this.sanitizeHtml(title)
|
||||
|
||||
if (typeContent === 'string') {
|
||||
content = this.sanitizeHtml(content)
|
||||
}
|
||||
}
|
||||
|
||||
$tip.find('.popover-title').html(title)
|
||||
$tip.find('.popover-content').children().detach().end()[
|
||||
typeContent === 'string' ? 'html' : 'append'
|
||||
](content)
|
||||
} else {
|
||||
$tip.find('.popover-title').text(title)
|
||||
$tip.find('.popover-content').children().detach().end().text(content)
|
||||
}
|
||||
|
||||
$tip.removeClass('fade top bottom left right in')
|
||||
|
||||
|
@ -67,8 +82,8 @@
|
|||
|
||||
return $e.attr('data-content')
|
||||
|| (typeof o.content == 'function' ?
|
||||
o.content.call($e[0]) :
|
||||
o.content)
|
||||
o.content.call($e[0]) :
|
||||
o.content)
|
||||
}
|
||||
|
||||
Popover.prototype.arrow = function () {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* ========================================================================
|
||||
* Bootstrap: scrollspy.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#scrollspy
|
||||
* Bootstrap: scrollspy.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#scrollspy
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
|||
this.process()
|
||||
}
|
||||
|
||||
ScrollSpy.VERSION = '3.3.6'
|
||||
ScrollSpy.VERSION = '3.4.1'
|
||||
|
||||
ScrollSpy.DEFAULTS = {
|
||||
offset: 10
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* ========================================================================
|
||||
* Bootstrap: tab.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#tabs
|
||||
* Bootstrap: tab.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#tabs
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
|||
// jscs:enable requireDollarBeforejQueryAssignment
|
||||
}
|
||||
|
||||
Tab.VERSION = '3.3.6'
|
||||
Tab.VERSION = '3.4.1'
|
||||
|
||||
Tab.TRANSITION_DURATION = 150
|
||||
|
||||
|
@ -48,7 +48,7 @@
|
|||
|
||||
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
|
||||
|
||||
var $target = $(selector)
|
||||
var $target = $(document).find(selector)
|
||||
|
||||
this.activate($this.closest('li'), $ul)
|
||||
this.activate($target, $target.parent(), function () {
|
||||
|
@ -73,15 +73,15 @@
|
|||
$active
|
||||
.removeClass('active')
|
||||
.find('> .dropdown-menu > .active')
|
||||
.removeClass('active')
|
||||
.removeClass('active')
|
||||
.end()
|
||||
.find('[data-toggle="tab"]')
|
||||
.attr('aria-expanded', false)
|
||||
.attr('aria-expanded', false)
|
||||
|
||||
element
|
||||
.addClass('active')
|
||||
.find('[data-toggle="tab"]')
|
||||
.attr('aria-expanded', true)
|
||||
.attr('aria-expanded', true)
|
||||
|
||||
if (transition) {
|
||||
element[0].offsetWidth // reflow for transition
|
||||
|
@ -93,10 +93,10 @@
|
|||
if (element.parent('.dropdown-menu').length) {
|
||||
element
|
||||
.closest('li.dropdown')
|
||||
.addClass('active')
|
||||
.addClass('active')
|
||||
.end()
|
||||
.find('[data-toggle="tab"]')
|
||||
.attr('aria-expanded', true)
|
||||
.attr('aria-expanded', true)
|
||||
}
|
||||
|
||||
callback && callback()
|
||||
|
|
|
@ -1,16 +1,146 @@
|
|||
/* ========================================================================
|
||||
* Bootstrap: tooltip.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#tooltip
|
||||
* Bootstrap: tooltip.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#tooltip
|
||||
* Inspired by the original jQuery.tipsy by Jason Frame
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
||||
+function ($) {
|
||||
'use strict';
|
||||
|
||||
var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
|
||||
|
||||
var uriAttrs = [
|
||||
'background',
|
||||
'cite',
|
||||
'href',
|
||||
'itemtype',
|
||||
'longdesc',
|
||||
'poster',
|
||||
'src',
|
||||
'xlink:href'
|
||||
]
|
||||
|
||||
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
|
||||
|
||||
var DefaultWhitelist = {
|
||||
// Global attributes allowed on any supplied element below.
|
||||
'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
|
||||
a: ['target', 'href', 'title', 'rel'],
|
||||
area: [],
|
||||
b: [],
|
||||
br: [],
|
||||
col: [],
|
||||
code: [],
|
||||
div: [],
|
||||
em: [],
|
||||
hr: [],
|
||||
h1: [],
|
||||
h2: [],
|
||||
h3: [],
|
||||
h4: [],
|
||||
h5: [],
|
||||
h6: [],
|
||||
i: [],
|
||||
img: ['src', 'alt', 'title', 'width', 'height'],
|
||||
li: [],
|
||||
ol: [],
|
||||
p: [],
|
||||
pre: [],
|
||||
s: [],
|
||||
small: [],
|
||||
span: [],
|
||||
sub: [],
|
||||
sup: [],
|
||||
strong: [],
|
||||
u: [],
|
||||
ul: []
|
||||
}
|
||||
|
||||
/**
|
||||
* A pattern that recognizes a commonly useful subset of URLs that are safe.
|
||||
*
|
||||
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
|
||||
*/
|
||||
var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
|
||||
|
||||
/**
|
||||
* A pattern that matches safe data URLs. Only matches image, video and audio types.
|
||||
*
|
||||
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
|
||||
*/
|
||||
var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i
|
||||
|
||||
function allowedAttribute(attr, allowedAttributeList) {
|
||||
var attrName = attr.nodeName.toLowerCase()
|
||||
|
||||
if ($.inArray(attrName, allowedAttributeList) !== -1) {
|
||||
if ($.inArray(attrName, uriAttrs) !== -1) {
|
||||
return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
var regExp = $(allowedAttributeList).filter(function (index, value) {
|
||||
return value instanceof RegExp
|
||||
})
|
||||
|
||||
// Check if a regular expression validates the attribute.
|
||||
for (var i = 0, l = regExp.length; i < l; i++) {
|
||||
if (attrName.match(regExp[i])) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
|
||||
if (unsafeHtml.length === 0) {
|
||||
return unsafeHtml
|
||||
}
|
||||
|
||||
if (sanitizeFn && typeof sanitizeFn === 'function') {
|
||||
return sanitizeFn(unsafeHtml)
|
||||
}
|
||||
|
||||
// IE 8 and below don't support createHTMLDocument
|
||||
if (!document.implementation || !document.implementation.createHTMLDocument) {
|
||||
return unsafeHtml
|
||||
}
|
||||
|
||||
var createdDocument = document.implementation.createHTMLDocument('sanitization')
|
||||
createdDocument.body.innerHTML = unsafeHtml
|
||||
|
||||
var whitelistKeys = $.map(whiteList, function (el, i) { return i })
|
||||
var elements = $(createdDocument.body).find('*')
|
||||
|
||||
for (var i = 0, len = elements.length; i < len; i++) {
|
||||
var el = elements[i]
|
||||
var elName = el.nodeName.toLowerCase()
|
||||
|
||||
if ($.inArray(elName, whitelistKeys) === -1) {
|
||||
el.parentNode.removeChild(el)
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
var attributeList = $.map(el.attributes, function (el) { return el })
|
||||
var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
|
||||
|
||||
for (var j = 0, len2 = attributeList.length; j < len2; j++) {
|
||||
if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
|
||||
el.removeAttribute(attributeList[j].nodeName)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return createdDocument.body.innerHTML
|
||||
}
|
||||
|
||||
// TOOLTIP PUBLIC CLASS DEFINITION
|
||||
// ===============================
|
||||
|
||||
|
@ -26,7 +156,7 @@
|
|||
this.init('tooltip', element, options)
|
||||
}
|
||||
|
||||
Tooltip.VERSION = '3.3.6'
|
||||
Tooltip.VERSION = '3.4.1'
|
||||
|
||||
Tooltip.TRANSITION_DURATION = 150
|
||||
|
||||
|
@ -43,7 +173,10 @@
|
|||
viewport: {
|
||||
selector: 'body',
|
||||
padding: 0
|
||||
}
|
||||
},
|
||||
sanitize : true,
|
||||
sanitizeFn : null,
|
||||
whiteList : DefaultWhitelist
|
||||
}
|
||||
|
||||
Tooltip.prototype.init = function (type, element, options) {
|
||||
|
@ -51,7 +184,7 @@
|
|||
this.type = type
|
||||
this.$element = $(element)
|
||||
this.options = this.getOptions(options)
|
||||
this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
|
||||
this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
|
||||
this.inState = { click: false, hover: false, focus: false }
|
||||
|
||||
if (this.$element[0] instanceof document.constructor && !this.options.selector) {
|
||||
|
@ -84,7 +217,15 @@
|
|||
}
|
||||
|
||||
Tooltip.prototype.getOptions = function (options) {
|
||||
options = $.extend({}, this.getDefaults(), this.$element.data(), options)
|
||||
var dataAttributes = this.$element.data()
|
||||
|
||||
for (var dataAttr in dataAttributes) {
|
||||
if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {
|
||||
delete dataAttributes[dataAttr]
|
||||
}
|
||||
}
|
||||
|
||||
options = $.extend({}, this.getDefaults(), dataAttributes, options)
|
||||
|
||||
if (options.delay && typeof options.delay == 'number') {
|
||||
options.delay = {
|
||||
|
@ -93,6 +234,10 @@
|
|||
}
|
||||
}
|
||||
|
||||
if (options.sanitize) {
|
||||
options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)
|
||||
}
|
||||
|
||||
return options
|
||||
}
|
||||
|
||||
|
@ -204,7 +349,7 @@
|
|||
.addClass(placement)
|
||||
.data('bs.' + this.type, this)
|
||||
|
||||
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
|
||||
this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
|
||||
this.$element.trigger('inserted.bs.' + this.type)
|
||||
|
||||
var pos = this.getPosition()
|
||||
|
@ -306,7 +451,16 @@
|
|||
var $tip = this.tip()
|
||||
var title = this.getTitle()
|
||||
|
||||
$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
|
||||
if (this.options.html) {
|
||||
if (this.options.sanitize) {
|
||||
title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)
|
||||
}
|
||||
|
||||
$tip.find('.tooltip-inner').html(title)
|
||||
} else {
|
||||
$tip.find('.tooltip-inner').text(title)
|
||||
}
|
||||
|
||||
$tip.removeClass('fade in top bottom left right')
|
||||
}
|
||||
|
||||
|
@ -317,9 +471,11 @@
|
|||
|
||||
function complete() {
|
||||
if (that.hoverState != 'in') $tip.detach()
|
||||
that.$element
|
||||
.removeAttr('aria-describedby')
|
||||
.trigger('hidden.bs.' + that.type)
|
||||
if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
|
||||
that.$element
|
||||
.removeAttr('aria-describedby')
|
||||
.trigger('hidden.bs.' + that.type)
|
||||
}
|
||||
callback && callback()
|
||||
}
|
||||
|
||||
|
@ -362,7 +518,10 @@
|
|||
// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
|
||||
elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
|
||||
}
|
||||
var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()
|
||||
var isSvg = window.SVGElement && el instanceof window.SVGElement
|
||||
// Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
|
||||
// See https://github.com/twbs/bootstrap/issues/20280
|
||||
var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
|
||||
var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
|
||||
var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
|
||||
|
||||
|
@ -478,9 +637,13 @@
|
|||
that.$tip = null
|
||||
that.$arrow = null
|
||||
that.$viewport = null
|
||||
that.$element = null
|
||||
})
|
||||
}
|
||||
|
||||
Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {
|
||||
return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)
|
||||
}
|
||||
|
||||
// TOOLTIP PLUGIN DEFINITION
|
||||
// =========================
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* ========================================================================
|
||||
* Bootstrap: transition.js v3.3.6
|
||||
* http://getbootstrap.com/javascript/#transitions
|
||||
* Bootstrap: transition.js v3.4.1
|
||||
* https://getbootstrap.com/docs/3.4/javascript/#transitions
|
||||
* ========================================================================
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* ======================================================================== */
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
|||
+function ($) {
|
||||
'use strict';
|
||||
|
||||
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
|
||||
// CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)
|
||||
// ============================================================
|
||||
|
||||
function transitionEnd() {
|
||||
|
@ -32,7 +32,7 @@
|
|||
return false // explicit for ie8 ( ._.)
|
||||
}
|
||||
|
||||
// http://blog.alexmaccaw.com/css-transitions
|
||||
// https://blog.alexmaccaw.com/css-transitions
|
||||
$.fn.emulateTransitionEnd = function (duration) {
|
||||
var called = false
|
||||
var $el = this
|
||||
|
|
|
@ -1,304 +0,0 @@
|
|||
{
|
||||
"always-semicolon": true,
|
||||
"block-indent": 2,
|
||||
"color-case": "lower",
|
||||
"color-shorthand": true,
|
||||
"element-case": "lower",
|
||||
"eof-newline": true,
|
||||
"leading-zero": false,
|
||||
"remove-empty-rulesets": true,
|
||||
"space-after-colon": 1,
|
||||
"space-after-combinator": 1,
|
||||
"space-before-selector-delimiter": 0,
|
||||
"space-between-declarations": "\n",
|
||||
"space-after-opening-brace": "\n",
|
||||
"space-before-closing-brace": "\n",
|
||||
"space-before-colon": 0,
|
||||
"space-before-combinator": 1,
|
||||
"space-before-opening-brace": 1,
|
||||
"strip-spaces": true,
|
||||
"unitless-zero": true,
|
||||
"vendor-prefix-align": true,
|
||||
"sort-order": [
|
||||
[
|
||||
"position",
|
||||
"top",
|
||||
"right",
|
||||
"bottom",
|
||||
"left",
|
||||
"z-index",
|
||||
"display",
|
||||
"float",
|
||||
"width",
|
||||
"min-width",
|
||||
"max-width",
|
||||
"height",
|
||||
"min-height",
|
||||
"max-height",
|
||||
"-webkit-box-sizing",
|
||||
"-moz-box-sizing",
|
||||
"box-sizing",
|
||||
"-webkit-appearance",
|
||||
"padding",
|
||||
"padding-top",
|
||||
"padding-right",
|
||||
"padding-bottom",
|
||||
"padding-left",
|
||||
"margin",
|
||||
"margin-top",
|
||||
"margin-right",
|
||||
"margin-bottom",
|
||||
"margin-left",
|
||||
"overflow",
|
||||
"overflow-x",
|
||||
"overflow-y",
|
||||
"-webkit-overflow-scrolling",
|
||||
"-ms-overflow-x",
|
||||
"-ms-overflow-y",
|
||||
"-ms-overflow-style",
|
||||
"clip",
|
||||
"clear",
|
||||
"font",
|
||||
"font-family",
|
||||
"font-size",
|
||||
"font-style",
|
||||
"font-weight",
|
||||
"font-variant",
|
||||
"font-size-adjust",
|
||||
"font-stretch",
|
||||
"font-effect",
|
||||
"font-emphasize",
|
||||
"font-emphasize-position",
|
||||
"font-emphasize-style",
|
||||
"font-smooth",
|
||||
"-webkit-hyphens",
|
||||
"-moz-hyphens",
|
||||
"hyphens",
|
||||
"line-height",
|
||||
"color",
|
||||
"text-align",
|
||||
"-webkit-text-align-last",
|
||||
"-moz-text-align-last",
|
||||
"-ms-text-align-last",
|
||||
"text-align-last",
|
||||
"text-emphasis",
|
||||
"text-emphasis-color",
|
||||
"text-emphasis-style",
|
||||
"text-emphasis-position",
|
||||
"text-decoration",
|
||||
"text-indent",
|
||||
"text-justify",
|
||||
"text-outline",
|
||||
"-ms-text-overflow",
|
||||
"text-overflow",
|
||||
"text-overflow-ellipsis",
|
||||
"text-overflow-mode",
|
||||
"text-shadow",
|
||||
"text-transform",
|
||||
"text-wrap",
|
||||
"-webkit-text-size-adjust",
|
||||
"-ms-text-size-adjust",
|
||||
"letter-spacing",
|
||||
"-ms-word-break",
|
||||
"word-break",
|
||||
"word-spacing",
|
||||
"-ms-word-wrap",
|
||||
"word-wrap",
|
||||
"-moz-tab-size",
|
||||
"-o-tab-size",
|
||||
"tab-size",
|
||||
"white-space",
|
||||
"vertical-align",
|
||||
"list-style",
|
||||
"list-style-position",
|
||||
"list-style-type",
|
||||
"list-style-image",
|
||||
"pointer-events",
|
||||
"-ms-touch-action",
|
||||
"touch-action",
|
||||
"cursor",
|
||||
"visibility",
|
||||
"zoom",
|
||||
"flex-direction",
|
||||
"flex-order",
|
||||
"flex-pack",
|
||||
"flex-align",
|
||||
"table-layout",
|
||||
"empty-cells",
|
||||
"caption-side",
|
||||
"border-spacing",
|
||||
"border-collapse",
|
||||
"content",
|
||||
"quotes",
|
||||
"counter-reset",
|
||||
"counter-increment",
|
||||
"resize",
|
||||
"-webkit-user-select",
|
||||
"-moz-user-select",
|
||||
"-ms-user-select",
|
||||
"-o-user-select",
|
||||
"user-select",
|
||||
"nav-index",
|
||||
"nav-up",
|
||||
"nav-right",
|
||||
"nav-down",
|
||||
"nav-left",
|
||||
"background",
|
||||
"background-color",
|
||||
"background-image",
|
||||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient",
|
||||
"filter:progid:DXImageTransform.Microsoft.gradient",
|
||||
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
|
||||
"filter",
|
||||
"background-repeat",
|
||||
"background-attachment",
|
||||
"background-position",
|
||||
"background-position-x",
|
||||
"background-position-y",
|
||||
"-webkit-background-clip",
|
||||
"-moz-background-clip",
|
||||
"background-clip",
|
||||
"background-origin",
|
||||
"-webkit-background-size",
|
||||
"-moz-background-size",
|
||||
"-o-background-size",
|
||||
"background-size",
|
||||
"border",
|
||||
"border-color",
|
||||
"border-style",
|
||||
"border-width",
|
||||
"border-top",
|
||||
"border-top-color",
|
||||
"border-top-style",
|
||||
"border-top-width",
|
||||
"border-right",
|
||||
"border-right-color",
|
||||
"border-right-style",
|
||||
"border-right-width",
|
||||
"border-bottom",
|
||||
"border-bottom-color",
|
||||
"border-bottom-style",
|
||||
"border-bottom-width",
|
||||
"border-left",
|
||||
"border-left-color",
|
||||
"border-left-style",
|
||||
"border-left-width",
|
||||
"border-radius",
|
||||
"border-top-left-radius",
|
||||
"border-top-right-radius",
|
||||
"border-bottom-right-radius",
|
||||
"border-bottom-left-radius",
|
||||
"-webkit-border-image",
|
||||
"-moz-border-image",
|
||||
"-o-border-image",
|
||||
"border-image",
|
||||
"-webkit-border-image-source",
|
||||
"-moz-border-image-source",
|
||||
"-o-border-image-source",
|
||||
"border-image-source",
|
||||
"-webkit-border-image-slice",
|
||||
"-moz-border-image-slice",
|
||||
"-o-border-image-slice",
|
||||
"border-image-slice",
|
||||
"-webkit-border-image-width",
|
||||
"-moz-border-image-width",
|
||||
"-o-border-image-width",
|
||||
"border-image-width",
|
||||
"-webkit-border-image-outset",
|
||||
"-moz-border-image-outset",
|
||||
"-o-border-image-outset",
|
||||
"border-image-outset",
|
||||
"-webkit-border-image-repeat",
|
||||
"-moz-border-image-repeat",
|
||||
"-o-border-image-repeat",
|
||||
"border-image-repeat",
|
||||
"outline",
|
||||
"outline-width",
|
||||
"outline-style",
|
||||
"outline-color",
|
||||
"outline-offset",
|
||||
"-webkit-box-shadow",
|
||||
"-moz-box-shadow",
|
||||
"box-shadow",
|
||||
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity",
|
||||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha",
|
||||
"opacity",
|
||||
"-ms-interpolation-mode",
|
||||
"-webkit-transition",
|
||||
"-moz-transition",
|
||||
"-ms-transition",
|
||||
"-o-transition",
|
||||
"transition",
|
||||
"-webkit-transition-delay",
|
||||
"-moz-transition-delay",
|
||||
"-ms-transition-delay",
|
||||
"-o-transition-delay",
|
||||
"transition-delay",
|
||||
"-webkit-transition-timing-function",
|
||||
"-moz-transition-timing-function",
|
||||
"-ms-transition-timing-function",
|
||||
"-o-transition-timing-function",
|
||||
"transition-timing-function",
|
||||
"-webkit-transition-duration",
|
||||
"-moz-transition-duration",
|
||||
"-ms-transition-duration",
|
||||
"-o-transition-duration",
|
||||
"transition-duration",
|
||||
"-webkit-transition-property",
|
||||
"-moz-transition-property",
|
||||
"-ms-transition-property",
|
||||
"-o-transition-property",
|
||||
"transition-property",
|
||||
"-webkit-transform",
|
||||
"-moz-transform",
|
||||
"-ms-transform",
|
||||
"-o-transform",
|
||||
"transform",
|
||||
"-webkit-transform-origin",
|
||||
"-moz-transform-origin",
|
||||
"-ms-transform-origin",
|
||||
"-o-transform-origin",
|
||||
"transform-origin",
|
||||
"-webkit-animation",
|
||||
"-moz-animation",
|
||||
"-ms-animation",
|
||||
"-o-animation",
|
||||
"animation",
|
||||
"-webkit-animation-name",
|
||||
"-moz-animation-name",
|
||||
"-ms-animation-name",
|
||||
"-o-animation-name",
|
||||
"animation-name",
|
||||
"-webkit-animation-duration",
|
||||
"-moz-animation-duration",
|
||||
"-ms-animation-duration",
|
||||
"-o-animation-duration",
|
||||
"animation-duration",
|
||||
"-webkit-animation-play-state",
|
||||
"-moz-animation-play-state",
|
||||
"-ms-animation-play-state",
|
||||
"-o-animation-play-state",
|
||||
"animation-play-state",
|
||||
"-webkit-animation-timing-function",
|
||||
"-moz-animation-timing-function",
|
||||
"-ms-animation-timing-function",
|
||||
"-o-animation-timing-function",
|
||||
"animation-timing-function",
|
||||
"-webkit-animation-delay",
|
||||
"-moz-animation-delay",
|
||||
"-ms-animation-delay",
|
||||
"-o-animation-delay",
|
||||
"animation-delay",
|
||||
"-webkit-animation-iteration-count",
|
||||
"-moz-animation-iteration-count",
|
||||
"-ms-animation-iteration-count",
|
||||
"-o-animation-iteration-count",
|
||||
"animation-iteration-count",
|
||||
"-webkit-animation-direction",
|
||||
"-moz-animation-direction",
|
||||
"-ms-animation-direction",
|
||||
"-o-animation-direction",
|
||||
"animation-direction"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
{
|
||||
"adjoining-classes": false,
|
||||
"box-sizing": false,
|
||||
"box-model": false,
|
||||
"compatible-vendor-prefixes": false,
|
||||
"floats": false,
|
||||
"font-sizes": false,
|
||||
"gradients": false,
|
||||
"important": false,
|
||||
"known-properties": false,
|
||||
"outline-none": false,
|
||||
"qualified-headings": false,
|
||||
"regex-selectors": false,
|
||||
"shorthand": false,
|
||||
"text-indent": false,
|
||||
"unique-headings": false,
|
||||
"universal-selector": false,
|
||||
"unqualified-attributes": false
|
||||
}
|
|
@ -15,8 +15,7 @@
|
|||
// Headings for larger alerts
|
||||
h4 {
|
||||
margin-top: 0;
|
||||
// Specified for the h4 to prevent conflicts of changing @headings-color
|
||||
color: inherit;
|
||||
color: inherit; // Specified for the h4 to prevent conflicts of changing @headings-color
|
||||
}
|
||||
|
||||
// Provide class for links that match alerts
|
||||
|
@ -39,7 +38,8 @@
|
|||
//
|
||||
// Expand the right padding and account for the close button's positioning.
|
||||
|
||||
.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.
|
||||
// The misspelled .alert-dismissable was deprecated in 3.2.0.
|
||||
.alert-dismissable,
|
||||
.alert-dismissible {
|
||||
padding-right: (@alert-padding + 20);
|
||||
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
padding: 3px 7px;
|
||||
font-size: @font-size-small;
|
||||
font-weight: @badge-font-weight;
|
||||
color: @badge-color;
|
||||
line-height: @badge-line-height;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
color: @badge-color;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
background-color: @badge-bg;
|
||||
border-radius: @badge-border-radius;
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Bootstrap v3.3.6 (http://getbootstrap.com)
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Bootstrap v3.4.1 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@
|
|||
display: inline-block;
|
||||
|
||||
+ li:before {
|
||||
content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space
|
||||
padding: 0 5px;
|
||||
color: @breadcrumb-color;
|
||||
content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// stylelint-disable selector-no-qualifying-type */
|
||||
|
||||
//
|
||||
// Button groups
|
||||
// --------------------------------------------------
|
||||
|
@ -59,7 +61,7 @@
|
|||
.border-right-radius(0);
|
||||
}
|
||||
}
|
||||
// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
|
||||
// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it
|
||||
.btn-group > .btn:last-child:not(:first-child),
|
||||
.btn-group > .dropdown-toggle:not(:first-child) {
|
||||
.border-left-radius(0);
|
||||
|
@ -103,18 +105,18 @@
|
|||
|
||||
// Give the line between buttons some depth
|
||||
.btn-group > .btn + .dropdown-toggle {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
padding-left: 8px;
|
||||
}
|
||||
.btn-group > .btn-lg + .dropdown-toggle {
|
||||
padding-left: 12px;
|
||||
padding-right: 12px;
|
||||
padding-left: 12px;
|
||||
}
|
||||
|
||||
// The clickable button for toggling the menu
|
||||
// Remove the gradient and set the same inset shadow as the :active state
|
||||
.btn-group.open .dropdown-toggle {
|
||||
.box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
|
||||
.box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));
|
||||
|
||||
// Show no shadow for `.btn-link` since it has no other button styles.
|
||||
&.btn-link {
|
||||
|
@ -205,8 +207,8 @@
|
|||
border-collapse: separate;
|
||||
> .btn,
|
||||
> .btn-group {
|
||||
float: none;
|
||||
display: table-cell;
|
||||
float: none;
|
||||
width: 1%;
|
||||
}
|
||||
> .btn-group .btn {
|
||||
|
@ -237,7 +239,7 @@
|
|||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
clip: rect(0,0,0,0);
|
||||
clip: rect(0, 0, 0, 0);
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// stylelint-disable selector-no-qualifying-type
|
||||
|
||||
//
|
||||
// Buttons
|
||||
// --------------------------------------------------
|
||||
|
@ -11,12 +13,12 @@
|
|||
margin-bottom: 0; // For input.btn
|
||||
font-weight: @btn-font-weight;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
touch-action: manipulation;
|
||||
cursor: pointer;
|
||||
background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
|
||||
border: 1px solid transparent;
|
||||
white-space: nowrap;
|
||||
.button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);
|
||||
.user-select(none);
|
||||
|
||||
|
@ -38,9 +40,9 @@
|
|||
|
||||
&:active,
|
||||
&.active {
|
||||
outline: 0;
|
||||
background-image: none;
|
||||
.box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
|
||||
outline: 0;
|
||||
.box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
|
@ -92,8 +94,8 @@
|
|||
|
||||
// Make a button look and behave like a link
|
||||
.btn-link {
|
||||
font-weight: 400;
|
||||
color: @link-color;
|
||||
font-weight: normal;
|
||||
border-radius: 0;
|
||||
|
||||
&,
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// stylelint-disable media-feature-name-no-unknown
|
||||
|
||||
//
|
||||
// Carousel
|
||||
// --------------------------------------------------
|
||||
|
@ -10,12 +12,12 @@
|
|||
|
||||
.carousel-inner {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
|
||||
> .item {
|
||||
display: none;
|
||||
position: relative;
|
||||
display: none;
|
||||
.transition(.6s ease-in-out left);
|
||||
|
||||
// Account for jankitude on images
|
||||
|
@ -27,8 +29,8 @@
|
|||
|
||||
// WebKit CSS3 transforms for supported devices
|
||||
@media all and (transform-3d), (-webkit-transform-3d) {
|
||||
.transition-transform(~'0.6s ease-in-out');
|
||||
.backface-visibility(~'hidden');
|
||||
.transition-transform(~"0.6s ease-in-out");
|
||||
.backface-visibility(~"hidden");
|
||||
.perspective(1000px);
|
||||
|
||||
&.next,
|
||||
|
@ -93,34 +95,34 @@
|
|||
.carousel-control {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: @carousel-control-width;
|
||||
.opacity(@carousel-control-opacity);
|
||||
font-size: @carousel-control-font-size;
|
||||
color: @carousel-control-color;
|
||||
text-align: center;
|
||||
text-shadow: @carousel-text-shadow;
|
||||
background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug
|
||||
.opacity(@carousel-control-opacity);
|
||||
// We can't have this transition here because WebKit cancels the carousel
|
||||
// animation if you trip this while in the middle of another animation.
|
||||
|
||||
// Set gradients for backgrounds
|
||||
&.left {
|
||||
#gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));
|
||||
#gradient > .horizontal(@start-color: rgba(0, 0, 0, .5); @end-color: rgba(0, 0, 0, .0001));
|
||||
}
|
||||
&.right {
|
||||
left: auto;
|
||||
right: 0;
|
||||
#gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));
|
||||
left: auto;
|
||||
#gradient > .horizontal(@start-color: rgba(0, 0, 0, .0001); @end-color: rgba(0, 0, 0, .5));
|
||||
}
|
||||
|
||||
// Hover/focus state
|
||||
&:hover,
|
||||
&:focus {
|
||||
outline: 0;
|
||||
color: @carousel-control-color;
|
||||
text-decoration: none;
|
||||
outline: 0;
|
||||
.opacity(.9);
|
||||
}
|
||||
|
||||
|
@ -131,9 +133,9 @@
|
|||
.glyphicon-chevron-right {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -10px;
|
||||
z-index: 5;
|
||||
display: inline-block;
|
||||
margin-top: -10px;
|
||||
}
|
||||
.icon-prev,
|
||||
.glyphicon-chevron-left {
|
||||
|
@ -147,21 +149,20 @@
|
|||
}
|
||||
.icon-prev,
|
||||
.icon-next {
|
||||
width: 20px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
line-height: 1;
|
||||
font-family: serif;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
|
||||
.icon-prev {
|
||||
&:before {
|
||||
content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
|
||||
content: "\2039";// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
|
||||
}
|
||||
}
|
||||
.icon-next {
|
||||
&:before {
|
||||
content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
|
||||
content: "\203a";// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -177,21 +178,18 @@
|
|||
left: 50%;
|
||||
z-index: 15;
|
||||
width: 60%;
|
||||
margin-left: -30%;
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
margin-left: -30%;
|
||||
text-align: center;
|
||||
list-style: none;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin: 1px;
|
||||
text-indent: -999px;
|
||||
border: 1px solid @carousel-indicator-border-color;
|
||||
border-radius: 10px;
|
||||
cursor: pointer;
|
||||
|
||||
// IE8-9 hack for event handling
|
||||
//
|
||||
// Internet Explorer 8-9 does not support clicks on elements without a set
|
||||
|
@ -202,12 +200,16 @@
|
|||
// For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
|
||||
// set alpha transparency for the best results possible.
|
||||
background-color: #000 \9; // IE8
|
||||
background-color: rgba(0,0,0,0); // IE9
|
||||
background-color: rgba(0, 0, 0, 0); // IE9
|
||||
|
||||
border: 1px solid @carousel-indicator-border-color;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.active {
|
||||
margin: 0;
|
||||
width: 12px;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
margin: 0;
|
||||
background-color: @carousel-indicator-active-bg;
|
||||
}
|
||||
}
|
||||
|
@ -217,15 +219,16 @@
|
|||
// Hidden by default for smaller viewports
|
||||
.carousel-caption {
|
||||
position: absolute;
|
||||
left: 15%;
|
||||
right: 15%;
|
||||
bottom: 20px;
|
||||
left: 15%;
|
||||
z-index: 10;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
color: @carousel-caption-color;
|
||||
text-align: center;
|
||||
text-shadow: @carousel-text-shadow;
|
||||
|
||||
& .btn {
|
||||
text-shadow: none; // No shadow for button elements in carousel-caption
|
||||
}
|
||||
|
@ -258,8 +261,8 @@
|
|||
|
||||
// Show and left align the captions
|
||||
.carousel-caption {
|
||||
left: 20%;
|
||||
right: 20%;
|
||||
left: 20%;
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue