Fixed up client files can now download and delete files, added web link to client logins added payments, quotes and recurring to client print and lots of little ui cleanups here and there

This commit is contained in:
root
2019-05-11 20:06:01 -04:00
parent f5377409b0
commit 5c55358841
750 changed files with 225007 additions and 177 deletions

20
vendor/datepicker/src/docs/ChangeLog.md vendored Normal file
View File

@@ -0,0 +1,20 @@
# Version 5
## 5.0.0-alpha
### New Features
* ES6 rewrite
* Stripped UI/UX related code and shunted it into its own module
* More configuration based setup
* Bootstrap 4-esk plugin creation style
* All events are namespaced properly `{event}.datetimepicker`
* Added a jquery no conflict option
* Removed LESS files. Bootstrap 4 doesn't use LESS any more. Now using SASS to build CSS
* Picker will also look for window.debug and will keep the picker from closing
* Added support for setting global defaults
### Other changes
* moved `showTodayButton`, `showClear` and `showClose` into `options.buttons`
* manually merged #1946, #1939, #1921, #1913

View File

@@ -0,0 +1,85 @@
This guide is aimed to contributors wishing to understand the internals of the code in order to change/evolve the component.
**Note:** this guide refers to **version 5** which is currently in alpha and will be updated as we progress
## Introduction
This component consists actually of 2 subcomponent UI widgets one for the date and one for the time selection process. The developers can configure which of those are needed and also the granularity that the component will allow the users to select a date/time. Developers also choose the format that the selected date/time will be displayed in the input field.
The component uses on `jQuery`, `moment.js` libraries.
## Code
### Private variables
* `element` - Holds the DOM element this instance is attached to
* `options` - Holds an object with the currently set options for the specific instance of the component. Don't directly change the properties of that object use the public API methods instead. DO NOT expose this object or its properties outside of the component.
* `date` - Holds the moment object for the model value of the component. **DON'T** directly change this variable unless you **REALLY** know what you are doing. Use `setValue()` function to set it. It handles all component logic for updating the model value and emitting all the appropriate events
* `viewDate` - Holds the currently selected value that the user has selected through the widget. This is not the model value this is the view value. Changing this usually requires a subsequent call to `update()` function
* `unset` - A `boolean` variable that holds whether the components model value is set or not. Model's value starts as `unset = true` and if is either set by the user or programmatically through the api to a valid value then it is set to `false`. If subsequent events lead to an invalid value then this variable is set to `true` again. Setting this variable usually takes place in the `setValue()` function.
* `input` - Hold the DOM input element this instance is attached to
* `component` - Holds a reference to the .input-group DOM element that the widget is attached or false if it is attached directly on an input field
* `widget` - Holds a reference to the DOM element containing the widget or `false` if the widget is hidden
* `use24hours` - Holds whether the component uses 24 hours format or not. This is initialized on the `format()` function
* `minViewModeNumber` - Holds the Numeric equivalent of the options.minViewMode parameter
* `format` - Holds the current format string that is used for formatting the date model value. Note this is not the same thing as the `options.format` as the second could be set to `false` in which case the first takes the locale's `L` or `LT` value
* `currentViewMode` - Hold the state of the current viewMode for the DatePicker subcomponent
* `datePickerModes` - An array of objects with configuration parameters for the different views of the DatePicker subcomponent
* `viewModes` - An array of strings containing all the possible strings that `options.viewMode` can take through `viewMode()` public api function
* `directionModes` - An array of strings containing all the possible strings that `options.direction` can take through `direction()` public api function
* `orientationModes` - An array of strings containing all the possible strings that `options.orientation` can take through `orientation()` public api function
### Private functions
#### Events related
* `notifyEvent(e)` - Use this function when you want to send en event to listener this could be used as a filter later
* `stopEvent(e)` - Shortcut for stopping propagation of events
* `keydown(e)` - Function to trap
* `change(e)` - Listener function to track change events occurring on the `input` dom element the component is attached to
* `attachDatePickerElementEvents()` - Attaches listeners to the existing DOM elements the component is attached to. Called upon construction of each datetimepicker instance
* `detachDatePickerElementEvents()` - Detaches listeners from the DOM element the component is attached to. Called on `destroy()`
* `attachDatePickerWidgetEvents()` - Attaches listeners on the components widget. Called on `show()`
* `detachDatePickerWidgetEvents()` - Detaches listeners on the components widget. Called on `hide()`
#### Model related
* `setValue(targetMoment)` - Sets the model value of the component takes a moment object. An `error` event will be emmited if the `targetMoment` does not pass the configured validations. Otherwise the `date` variable will be set and the relevant events will be fired.
* `isValid(targetMoment, granularity)` - returns `true` if the `targetMoment` moment object is valid according to the components set validation rules (`min/maxDates`, `disabled/enabledDates` and `daysOfWeekDisabled`). You may pass a second variable to check only up the the specific granularity `year, month, day, hour, minute, second`
#### Utilities
* `indexGivenDates (givenDatesArray)` - Function that takes the array from `enabledDates()` and `disabledDates()` public functions and stores them as object keys to enable quick lookup
* `isInEnableDates(date)` - Checks whether if the given moment object exists in the `options.enabledDates` object
* `isInDisableDates(date)` - Checks whether if the given moment object exists in the `options.disabledDates` array
* `dataToOptions()` - Parses `data-date-*` options set on the input dom element the component is attached to and returns an object with them
* `isInFixed()` - Checks if the dom element or its parents has a fixed position css rule.
* `parseInputDate(date)` - Parses a date parameter with moment using the component's `options.format` and `options.useStrict`. It returns a `moment` object or false if `parsedMoment#isValid()` returns `false`. Use this to parse date inputs from outside the component (public API calls).
* `init()` - Initializes the component. Called when the component instance is created

95
vendor/datepicker/src/docs/Events.md vendored Normal file
View File

@@ -0,0 +1,95 @@
## Events
### hide.datetimepicker
Fired when the widget is hidden.
Parameters:
```
e = {
date //the currently set date. Type: moment object (clone)
}
```
Emitted from:
* toggle()
* hide()
* disable()
----------------------
### show.datetimepicker
Fired when the widget is shown.
Parameters:
No parameters are include, listen to `change.datetimepicker` instead
Emitted from:
* toggle()
* show()
----------------------
### change.datetimepicker
Fired when the date is changed, including when changed to a non-date (e.g. When keepInvalid=true).
Parameters:
```
e = {
date, //date the picker changed to. Type: moment object (clone)
oldDate //previous date. Type: moment object (clone) or false in the event of a null
}
```
Emitted from:
* toggle() **Note**: Only fired when using `useCurrent`
* show() **Note**: Only fired when using `useCurrent` or when or the date is changed to comply with date rules (min/max etc)
* date(newDate)
* minDate(minDate)
* maxDate(maxDate)
* daysOfWeekDisabled()
----------------------
### error.datetimepicker
Fired when a selected date fails to pass validation.
Parameters:
```
e = {
date //the invalid date. Type: moment object (clone)
oldDate //previous date. Type: moment object (clone) or false in the event of a null
}
```
Emmited from:
* minDate(minDate)
* maxDate(maxDate)
* daysOfWeekDisabled()
* setValue() *private function*
----------------------
### update.datetimepicker
Fired (in most cases) when the `viewDate` changes. E.g. Next and Previous buttons, selecting a year.
Parameters:
```
e = {
change, //Change type as a momentjs format token. Type: string e.g. yyyy on year change
viewDate //new viewDate. Type: moment object
}
```

49
vendor/datepicker/src/docs/Extras.md vendored Normal file
View File

@@ -0,0 +1,49 @@
# Extras
Guides for making the picker work better with rails, IE, etc. **Note:** I have no idea if these guides still apply for v5 or not.
## Rails 3
by [dhulihan](https://github.com/dhulihan)
You can easily override the default rails form helpers (`date_select` and `datetime_select`) with bootstrap-datetimepicker for a much nicer experience.
```rb
# Add to config/initializers/form.rb or the end of app/helpers/application_helper.rb
module ActionView
module Helpers
class FormBuilder
def date_select(method, options = {}, html_options = {})
existing_date = @object.send(method)
formatted_date = existing_date.to_date.strftime("%F") if existing_date.present?
@template.content_tag(:div, :class => "input-group") do
text_field(method, :value => formatted_date, :class => "form-control datepicker", :"data-date-format" => "YYYY-MM-DD") +
@template.content_tag(:span, @template.content_tag(:span, "", :class => "glyphicon glyphicon-calendar") ,:class => "input-group-addon")
end
end
def datetime_select(method, options = {}, html_options = {})
existing_time = @object.send(method)
formatted_time = existing_time.to_time.strftime("%F %I:%M %p") if existing_time.present?
@template.content_tag(:div, :class => "input-group") do
text_field(method, :value => formatted_time, :class => "form-control datetimepicker", :"data-date-format" => "YYYY-MM-DD hh:mm A") +
@template.content_tag(:span, @template.content_tag(:span, "", :class => "glyphicon glyphicon-calendar") ,:class => "input-group-addon")
end
end
end
end
end
```
The time format used here is ActiveRecord-friendly, which means it will be parsed correctly when passed in through `params` to your record.
That's all there is to it! Now all of your forms that use `datetime_select` or `date_select` will be automatically updated:
```erb
<% form_for @post do |f| %>
<div class="form-group">
<label>Published At</label>
<%= f.datetime_select :published_at %>
</div>
<% end %>
```

22
vendor/datepicker/src/docs/FAQ.md vendored Normal file
View File

@@ -0,0 +1,22 @@
# FAQs
# How do I disable the date or time element
<small>How do I format ...; How do I add seconds; etc.</small>
The picker uses the `format` option to decide what components to show. Set `format` to `LT`, `LTS` or another valid [MomentJs format string](http://momentjs.com/docs/#/displaying/format/) to display certain components
# How do I change the language/locale
The picker uses MomentJs to determine the language string. You can use `moment-with-locales` or you can include whatever local file you need. Set the picker's `locale` option to `de` or whatever the locale string is.
# How do I change the styles? The picker closes.
Set `debug:true` which will force the picker to stay open, even `onBlur`. You can hide the picker manually by calling `hide()`
# How do I change the start of the week?
Start of the week is based on the [`locale` provided](Options.md#locale). This is defined by moment's locales. If you want to change it, create your own locale file or override. [See moment's docs](http://momentjs.com/docs/#/i18n/).
# How I use the picker as birthday picker?
Use the [`viewMode`](Options.md#viewmode) option to `'years'`

82
vendor/datepicker/src/docs/Functions.md vendored Normal file
View File

@@ -0,0 +1,82 @@
## Functions
<div class="alert alert-info">
<strong>Note</strong>
All functions are accessed via the <code>data</code> attribute e.g. <code>$('#datetimepicker').datetimepicker(FUNCTION)</code>
</div>
### destroy
Destroys the widget and removes all attached event listeners
----------------------
### toggle
Shows or hides the widget
#### Emits
* `hide.datetimepicker` - if the widget is hidden after the toggle call
* `show.datetimepicker` - if the widget is show after the toggle call
* `change.datetimepicker` - if the widget is opened for the first time and the input element is empty and `options.useCurrent != false`
----------------------
### show
Shows the widget
#### Emits
* `show.datetimepicker` - if the widget was hidden before that call
* `change.datetimepicker` - if the widget is opened for the first time and the `useCurrent` is set to true or to a granularity value and the input element the component is attached to has an empty value
----------------------
### hide
Hides the widget
#### Emits
* `hide.datetimepicker` - if the widget was visible before that call
----------------------
### disable
Disables the input element, the component is attached to, by adding a `disabled="true"` attribute to it. If the widget was visible before that call it is hidden.
#### Emits
* `hide.datetimepicker` - if the widget was visible before that call
----------------------
### enable
Enables the input element, the component is attached to, by removing `disabled` attribute from it.
----------------------
### clear
Clears the date picker by setting the value to `null`
----------------------
### viewDate
#### viewDate
Returns a `moment` variable with the currently set `options.viewDate` option.
#### viewDate(viewDate)
Takes a `string, moment or Date` value.
This will change the `viewDate` without changing or setting the selected date.

View File

@@ -0,0 +1,67 @@
<div class="alert alert-warning">
This guide still needs a lot of work
</div>
# Minimal Requirements
1. jQuery
2. Moment.js
3. Locales: Moment's locale files are [here](https://github.com/moment/moment/tree/master/locale)
# Installation Guides
* [CDN](#cdn)
* [Rails](#rails)
* [Django](#django)
* [Angular](#angular-wrapper)
* [Meteor.js](#meteorjs)
* [Manual](#manual)
## CDN
```html
<head>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.0-alpha14/js/tempusdominus-bootstrap-4.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.0-alpha14/css/tempusdominus-bootstrap-4.min.css" />
</head>
```
## Package Managers
### Rails
Rails 5.1 Support - [Bootstrap 4 Datetime Picker Rails](https://github.com/Bialogs/bootstrap4-datetime-picker-rails)
1. Add `gem 'bootstrap4-datetime-picker-rails'` to your `Gemfile`
2. Execute `bundle`
3. Add `//= require tempusdominus-bootstrap-4.js` to your `application.js`
4. Add `@import "tempusdominus-bootstrap-4.css"` to your `application.scss`
### Django
Python package for Django: [Django Tempus Dominus](https://pypi.org/project/django-tempus-dominus/)
1. Install via pip: `pip install django-tempus-dominus`
2. Widgets are provided for Date, DateTime, and Time.
3. [Full examples are available with Django Forms, Widgets, and Templates](https://pypi.org/project/django-tempus-dominus/).
### Angular Wrapper
Follow instructions at [ngx-tempusdominus-bootstrap](https://github.com/fetrarij/ngx-tempusdominus-bootstrap)
### Meteor.js
Need new wrapper for this version.
## Manual
1. Acquire [jQuery](http://jquery.com)
2. Acquire [Moment.js](https://github.com/moment/moment)
3. Acquire
```html
<script type="text/javascript" src="/path/to/jquery.js"></script>
<script type="text/javascript" src="/path/to/moment.js"></script>
<script type="text/javascript" src="/path/to/tempusdominus-bootstrap-4.min.js"></script>
```
## Knockout
Need new wrapper for this version.

940
vendor/datepicker/src/docs/Options.md vendored Normal file
View File

@@ -0,0 +1,940 @@
## Options
<div class="alert alert-info">
<strong>Note</strong>
Initialize options as
<code>$('#datetimepicker').datetimepicker({
sideBySide: true,
debug: true
})</code>
</div>
<div class="alert alert-info">
<strong>Note</strong>
To set options use <code>$('#datetimepicker').datetimepicker('sideBySide', true)</code>
</div>
<div class="alert alert-info">
<strong>Note</strong>
To get option value use <code>$('#datetimepicker').datetimepicker('sideBySide')</code>
</div>
Global defaults can be get/set by <code>$.fn.datetimepicker.Constructor.Default</code>
e.g. To set icons to use Font Awesome 5
```
$.fn.datetimepicker.Constructor.Default = $.extend({}, $.fn.datetimepicker.Constructor.Default, {
icons: {
time: 'far fa-clock',
date: 'far fa-calendar',
up: 'far fa-arrow-up',
down: 'far fa-arrow-down',
previous: 'far fa-chevron-left',
next: 'far fa-chevron-right',
today: 'far fa-calendar-check-o',
clear: 'far fa-trash',
close: 'far fa-times'
} });
```
Do this <strong>before</strong> you init pickers.
<hr/>
### options
Returns the components current options object. Note that the changing the values of the returned object does not change the components actual configuration. Use `options(options)` to set the components options massively or the other methods for setting config options individually.
### options, [options]
Takes an object variable with option key:value properties and configures the component. Use this to update multiple options on the component.
----------------------
### date
Returns the component's model current date, a `moment` object or `null` if not set.
#### date, [newDate]
Takes `string, Date, moment, null` parameter and sets the components model current moment to it. Passing a `null` value unsets the components model current moment. Parsing of the `newDate` parameter is made using moment library with the `options.format` and `options.useStrict` components configuration.
##### Throws
* `TypeError` - in case the `newDate` cannot be parsed
##### Emits
* `change.datetimepicker` - In case `newDate` is different from current moment
----------------------
### format
Default: false
See [momentjs' docs](http://momentjs.com/docs/#/displaying/format/) for valid formats. Format also dictates what components are shown, e.g. `MM/dd/YYYY` will not display the time picker.
#### format
Returns the component's `options.format` `string`
#### format, [format]
Takes a [moment.js](http://momentjs.com/docs/#/displaying/format/) format `string` and sets the components `options.format`. This is used for displaying and also for parsing input strings either from the input element the component is attached to or the `date()` function.
The parameter can also be a `boolean:false` in which case the format is set to the locale's `L LT`.
**Note:** this is also used to determine if the time picker sub component will display the hours in 12 or 24 format. (if `a` or `h` exists in the passed `string` then a 12 hour mode is set)
----------------------
### dayViewHeaderFormat
Default: 'MMMM YYYY'
Changes the heading of the date picker when in "days" view.
![Datepicker Header](img/dpheader.png)
#### dayViewHeaderFormat
Returns a `string` variable with the currently set `options.dayViewHeaderFormat` option.
#### dayViewHeaderFormat, [string]
Takes a `string` value.
Used to customize the header of the day view.
----------------------
### extraFormats
Default: false
Allows for several input formats to be valid. See [this PR](https://github.com/Eonasdan/bootstrap-datetimepicker/pull/666).
#### extraFormats
Returns a `boolean` or array with the `options.extraFormats` option configuration
#### extraFormats, [formats]
Takes an array of valid input moment format options.
----------------------
### stepping
Default: 1
Number of minutes the up/down arrow's will move the minutes value in the time picker
#### stepping
Returns a `number` with the `options.stepping` option configuration
#### stepping, [number]
Takes a `number`. This be the amount the up/down arrows move the minute value with a time picker.
----------------------
### min/maxDate
Default: false
Accepts: date, moment, string
Prevents date/time selections before this date. Will override `defaultDate` and `useCurrent` if either of these settings are the same day since both options are invalid according to the rules you've selected.
#### minDate
Returns the currently set moment of the `options.minDate` or `false` if not set
#### minDate, [minDate]
Takes a `minDate` `string, Date, moment, boolean:false` parameter and disallows the user to select a moment that is before that moment. If a `boolean:false` value is passed the `options.minDate` parameter is cleared and there is no restriction to the minimum moment the user can select.
**Note:** If the `minDate` parameter is after the currently selected moment the currently selected moment changes to minDate parameter
##### Throws
* `TypeError` - if `minDate` parameter cannot be parsed using the `options.format` and `options.useStrict` configuration settings
* `TypeError` - if `minDate` parameter is after `options.maxDate`
##### Emits
* `change.datetimepicker` - if the new `minDate` is after currently selected moment (waiting for #472 to close in order to finalize this part)
* `dp.error` - if the new `minDate` is after currently selected moment (waiting for #472 to close in order to finalize this part)
----------------------
#### maxDate
Returns the currently set moment of the `options.maxDate` or `false` if not set
#### maxDate, [maxDate]
Takes a [maxDate] `string, Date, moment, boolean:false` parameter and disallows the user to select a moment that is after that moment. If a `boolean:false` value is passed `options.maxDate` is cleared and there is no restriction to the maximum moment the user can select.
**Note:** If [maxDate] is before the currently selected moment the currently selected moment changes to [maxDate]
##### Throws
* `TypeError` - if `maxDate` parameter cannot be parsed using the `options.format` and `options.useStrict` configuration settings
* `TypeError` - if `maxDate` parameter is before `options.minDate`
##### Emits
* `change.datetimepicker` - if the new `maxDate` is after currently selected moment (waiting for #472 to close in order to finalize this part)
* `dp.error` - if the new `maxDate` is after currently selected moment (waiting for #472 to close in order to finalize this part)
----------------------
### useCurrent
Default: true
On `show`, will set the picker to the current date/time.
#### useCurrent
Returns a `boolean` or `string` with the `options.useCurrent` option configuration
#### useCurrent, boolean or string
Takes a `boolean` or `string`. If a `boolean` true is passed and the components model moment is not set (either through `setDate` or through a valid value on the input element the component is attached to) then the first time the user opens the datetimepicker widget the value is initialized to the current moment of the action. If a false `boolean` is passed then no initialization happens on the input element. You can select the granularity on the initialized moment by passing one of the following strings (`'year', 'month', 'day', 'hour', 'minute'`) in the variable.
If for example you pass `'day'` to the `setUseCurrent` function and the input field is empty the first time the user opens the datetimepicker widget the input text will be initialized to the current date time with day granularity (e.g. if current time = `2014-08-10 13:32:33` the input value will be initialized to `2014-08-10 00:00:00`)
**Note:** If the `options.defaultDate` is set or the input element the component is attached to has already a value that takes precedence and the functionality of `useCurrent` is not triggered!
----------------------
### collapse
Default: true
Using a Bootstraps collapse to switch between date/time pickers.
#### collapse
Returns a `boolean` of the `options.sideBySide`.
#### collapse, [collapse]
Takes a `boolean`. If set to `false` the picker will display similar to `sideBySide` except vertical.
----------------------
### locale
Default: moment.locale()
Accepts: string, moment.local('locale')
See [momentjs](https://github.com/moment/moment/tree/develop/locale) for valid locales.
You must include `moment-with-locales.js` or a local js file.
#### locale
Returns the currently set locale of the `options.locale`
#### locale, [newLocale]
Takes a `string` of any valid [moment locale](https://github.com/moment/moment/tree/develop/locale) e.g. `de` for German.
##### Throws
* `TypeError` - if the locale is not loaded via a separate script or `moment-with-locales`
----------------------
### defaultDate
Default: false
Accepts: date, moment, string
Sets the picker default date/time. Overrides `useCurrent`
#### defaultDate
Returns a `moment` with the `options.defaultDate` option configuration or `false` if not set
#### defaultDate, [defaultDate]
Takes a `string, Date, moment, boolean:false`. Will set the picker's initial date. If a `boolean:false` value is passed the `options.defaultDate` parameter is cleared.
* `TypeError` - if the provided date pass validation, including `disabledDates`, `enabledDates`, `minDate`, `maxDate`, and `daysOfWeekDisabled`
* `TypeError` - if the provided date cannot be parsed by moment.js
----------------------
### en/disabledDates
Default: false
Accepts: array of [date, moment, string]
#### disabledDates
Returns an array with the currently set disabled dates on the component.
#### disabledDates, [dates]
Takes an `[` `string` or `Date` or `moment` `]` of values and disallows the user to select those days. Setting this takes precedence over `options.minDate`, `options.maxDate` configuration. Also calling this function removes the configuration of options.enabledDates if such exist.
**Note:** These values are matched with `Day` granularity.
----------------------
#### enabledDates
Returns an array with the currently set enabled dates on the component.
#### enabledDates, [dates]
Takes an `[` `string` or `Date` or `moment` `]` of values and allows the user to select only from those days. Setting this takes precedence over `options.minDate`, `options.maxDate` configuration. Also calling this function removes the configuration of `options.disabledDates` if such exist.
**Note:** These values are matched with `Day` granularity.
----------------------
### icons
Default: {
time: 'fa fa-clock-o',
date: 'fa fa-calendar',
up: 'fa fa-arrow-up',
down: 'fa fa-arrow-down',
previous: 'fa fa-chevron-left',
next: 'fa fa-chevron-right',
today: 'fa fa-calendar-check-o',
clear: 'fa fa-delete',
close: 'fa fa-times'
}
Accepts: object with all or some of the parameters above
Change the default icons for the pickers functions.
#### icons
Returns an `Ojbect` of `options.icons`
#### icons, [icons]
Takes an `Ojbect` of `strings`.
##### Throws
* `TypeError` - if icons parameter is not an `Ojbect`
----------------------
### useStrict
Default: false
Defines if moment should use strict date parsing when considering a date to be valid.
#### useStrict
Returns a `boolean` of the `options.useStrict`
#### useStrict, [useStrict]
Takes a `boolean`. If `useStrict` is `true`, moment.js parsing rules will be stricter when determining if a date is valid or not.
----------------------
### sideBySide
Default: false
Shows the picker side by side when using the time and date together.
![SideBySide](img/sideBySide.png)
#### sideBySide
Returns a `boolean` of the `options.sideBySide`.
#### sideBySide, [sideBySide]
Takes a `boolean`. If `sideBySide` is `true` and the time picker is used, both components will display side by side instead of collapsing.
----------------------
### daysOfWeekDisabled
Default: []
Accepts: array of numbers from 0-6
Disables the section of days of the week, e.g. weekends.
#### daysOfWeekDisabled
Returns an array with the `options.daysOfWeekDisabled` configuration setting of the component.
#### daysOfWeekDisabled, [daysOfWeek]
Takes an `[` `Number`:`0` to `6` `]` and disallow the user to select weekdays that exist in this array. This has lower priority over the `options.minDate`, `options.maxDate`, `options.disabledDates` and `options.enabledDates` configuration settings.
##### Emits
* `change.datetimepicker` - if the currently selected moment falls in the values passed on the daysOfWeek parameter. (waiting for #472 to close in order to finalize this part)
* `dp.error` - if the currently selected moment falls in the values passed on the daysOfWeek parameter. (waiting for #472 to close in order to finalize this part)
----------------------
### calendarWeeks
Default: false
Shows the week of the year to the left of first day of the week.
![calendarWeek](img/calendarWeeks.png)
#### calendarWeeks
Returns a `boolean` with the current `options.calendarWeeks` option configuration
#### calendarWeeks, [boolean]
Takes a `boolean` variable to set if the week numbers will appear to the left on the days view
----------------------
### viewMode
Default: 'days'
Accepts: 'decades','years','months','days', 'times'
The default view to display when the picker is shown.
**Note**: To limit the picker to selecting, for instance the year and month, use `format: MM/YYYY`.
#### viewMode
Returns a `string` of the `options.viewMode`.
#### viewMode, [newViewMode]
Takes a `string`. Valid values are `'days'`, `'months'`, `'years'` and `'decades'`
##### Throws
* `TypeError` - if `newViewMode` parameter is not an a `string` or if `newViewMode` is not a valid value.
----------------------
### toolbarPlacement
Default: 'default'
Accepts: 'default', 'top', 'bottom'
Changes the placement of the icon toolbar.
![toolbarPlacement](img/toolbarPlacement.png)
#### toolbarplacement
Returns a `string` variable with the currently set `options.toolbarplacement` option.
#### toolbarplacement, [string]
Takes a `string` value. Valid values are `'default'`, `'top'` and `'bottom'`.
Changes the placement of the toolbar where the today, clear, component switch icon are located.
----------------------
### buttons
Default: {
showToday: false,
showClear: false,
showClose: false
}
Accepts: object with all or some of the parameters above
Change the default toolbar buttons for the pickers functions.
#### buttons
Returns an `Ojbect` of `options.buttons`
#### buttons, [buttons]
Takes an `Ojbect` of `boolean`.
##### Throws
* `TypeError` - if buttons parameter is not an `Ojbect`
----------------------
### widgetPositioning
Default: {
horizontal: 'auto'
vertical: 'auto'
}
Accepts: object with the all or one of the parameters above
horizontal: 'auto', 'left', 'right'
vertical: 'auto', 'top', 'bottom'
#### widgetPositioning
Returns the currently set `options.widgetPositioning` object containing two keys `horizontal` and `vertical`
#### widgetPositioning, [positioningObject]
Takes an object parameter that can contain two keys `vertical` and `horizontal` each having a value of `'auto', 'top', 'bottom'` for `vertical` and `'auto', 'left', 'right'` for `horizontal` which defines where the dropdown with the widget will appear relative to the input element the component is attached to.
`'auto'` is the default value for both `horizontal` and `vertical` keys and it tries to automatically place the dropdown in a position that is visible to the user. Usually you should not override those options unless you have a special need in your layout.
----------------------
### widgetParent
Default: null
Accepts: string or jQuery object
On picker show, places the widget at the identifier (string) or jQuery object **if** the element has css `position: 'relative'`
#### widgetParent
Returns a `$(element)` variable with the currently set `options.widgetParent` option.
#### widgetParent, [widgetParent]
Takes a `string` or `$(element)` value.
----------------------
### keepOpen
Default: false
Will cause the date picker to stay open after selecting a date.
#### keepOpen
Returns a `boolean` variable with the currently set `options.keepOpen` option.
#### keepOpen, [boolean]
Takes a `boolean` value.
----------------------
### inline
Default: false
Will display the picker inline without the need of a input field. This will also hide borders and shadows.
#### inline
Returns a `boolean` variable with the currently set `options.inline` option.
#### inline, [boolean]
Takes a `boolean` value.
----------------------
### keepInvalid
<small>4.7.14</small>
Default: false
Will cause the date picker to **not** revert or overwrite invalid dates.
#### keepInvalid
Returns a `string` variable with the currently set `options.keepInvalid` option.
#### keepInvalid, [boolean]
Takes a `boolean` value.
If `true`, invalid dates will not be reverted to a previous selection or changed.
----------------------
### keyBinds
Default: up: function (widget) {
if (widget.find('.datepicker').is(':visible')) {
this.date(this.date().clone().subtract(7, 'd'));
} else {
this.date(this.date().clone().add(1, 'm'));
}
},
down: function (widget) {
if (!widget) {
this.show();
}
else if (widget.find('.datepicker').is(':visible')) {
this.date(this.date().clone().add(7, 'd'));
} else {
this.date(this.date().clone().subtract(1, 'm'));
}
},
'control up': function (widget) {
if (widget.find('.datepicker').is(':visible')) {
this.date(this.date().clone().subtract(1, 'y'));
} else {
this.date(this.date().clone().add(1, 'h'));
}
},
'control down': function (widget) {
if (widget.find('.datepicker').is(':visible')) {
this.date(this.date().clone().add(1, 'y'));
} else {
this.date(this.date().clone().subtract(1, 'h'));
}
},
left: function (widget) {
if (widget.find('.datepicker').is(':visible')) {
this.date(this.date().clone().subtract(1, 'd'));
}
},
right: function (widget) {
if (widget.find('.datepicker').is(':visible')) {
this.date(this.date().clone().add(1, 'd'));
}
},
pageUp: function (widget) {
if (widget.find('.datepicker').is(':visible')) {
this.date(this.date().clone().subtract(1, 'M'));
}
},
pageDown: function (widget) {
if (widget.find('.datepicker').is(':visible')) {
this.date(this.date().clone().add(1, 'M'));
}
},
enter: function () {
this.hide();
},
escape: function () {
this.hide();
},
'control space': function (widget) {
if (widget.find('.timepicker').is(':visible')) {
widget.find('.btn[data-action="togglePeriod"]').click();
}
},
t: function () {
this.date(moment());
},
'delete': function () {
this.clear();
}
Allows for custom events to fire on keyboard press.
#### keyBinds
Returns a `string` variable with the currently set `options.keyBinds` option.
#### keyBinds, [object]
Takes an `object` value.
Allows for several `keyBinding` functions to be specified for ease of access or accessibility. See the options page for defaults.
----------------------
### debug
Default: false
Will cause the date picker to stay open after a `blur` event.
----------------------
### ignoreReadonly
Default: false
Allow date picker show event to fire even when the associated input element has the `readonly="readonly"` property.
#### ignoreReadonly
Returns a `boolean` variable with the currently set `options.ignoreReadonly` option.
#### ignoreReadonly, [boolean]
Takes a `boolean` value.
Set this to `true` to allow the picker to be used even if the input field is `readonly`. This will **not** bypass the `disabled` property
----------------------
### disabledTimeIntervals
Default: false
Disables time selection between the given `moments`.
#### disabledTimeIntervals
Returns an `array` variable with the currently set `options.disabledTimeIntervals` option.
#### disabledTimeIntervals, [array]
Takes a `array` value.
The array **must** be in the following format `[moment(),moment()]`
For example:
disabledTimeIntervals: [[moment({ h: 0 }), moment({ h: 8 })], [moment({ h: 18 }), moment({ h: 24 })]]
Will disable times between 12-8am and 6-12pm today
----------------------
### allowInputToggle
Default: false
If `true`, the picker will show on textbox focus and icon click when used in a button group.
#### allowInputToggle
Returns a `boolean` variable with the currently set `options.allowInputToggle` option.
#### allowInputToggle, [boolean]
Takes a `boolean` value.
If `true`, the picker will show on textbox focus and icon click when used in a button group
----------------------
### focusOnShow
Default: true
If `false`, the textbox will not be given focus when the picker is shown.
#### focusOnShow
Returns a `boolean` variable with the currently set `options.focusOnShow` option.
#### focusOnShow, [boolean]
Takes a `boolean` value.
If `false`, the textbox will not be given focus when the picker is shown
----------------------
### en/disabledHours
Default: false
#### disabledHours
Returns an `array` variable with the currently set `options.en/disabledHours` option.
#### disabledHours, boolean
Takes a `array` value.
Must be in 24 hour format. Will allow or disallow hour selections (much like `disabledTimeIntervals`) but will affect all days.
Like `en/disabledDates`, these options are mutually exclusive and will reset one of the options back to false.
disabledHours: [0, 1, 2, 3, 4, 5, 6, 7, 8, 18, 19, 20, 21, 22, 23, 24]
enabledHours: [9, 10, 11, 12, 13, 14, 15, 16]
----------------------
### viewDate
Default: false
This will change the `viewDate` without changing or setting the selected date.
----------------------
### parseInputDate
#### parseInputDate
Returns a `function` with the currently set `options.parseInputDate`
#### parseInputDate, [function]
Takes a `function`
Allows custom input formatting For example: the user can enter 'yesterday' or '30 days ago.
Example:
```
var parseRelativeDate = function(relativeDate) {
switch (relativeDate) {
case 'today':
return moment()
case 'yesterday':
return moment().subtract(1, 'day');
default:
return moment()
.subtract(Number(relativeDate.replace("days ago", "").trim()), 'days');
}
}
var parseInputDate = function(inputDate) {
var relativeDatePattern = /today|yesterday|[0-9]+\s+(days ago)/,
resultDate;
if (moment.isMoment(inputDate) || inputDate instanceof Date) {
resultDate = moment(inputDate);
} else {
var relativeDate = inputDate.match(relativeDatePattern),
parseDate = null;
if (relativeDate !== null)
parseDate = this.parseRelativeDate(inputDate.match(relativeDatePattern)[0]);
else
parseDate = moment();
resultDate = moment(parseDate, "YYYY-MM-DD");
}
return resultDate;
}
```
----------------------
### tooltips
```
tooltips: {
today: 'Go to today',
clear: 'Clear selection',
close: 'Close the picker',
selectMonth: 'Select Month',
prevMonth: 'Previous Month',
nextMonth: 'Next Month',
selectYear: 'Select Year',
prevYear: 'Previous Year',
nextYear: 'Next Year',
selectDecade: 'Select Decade',
prevDecade: 'Previous Decade',
nextDecade: 'Next Decade',
prevCentury: 'Previous Century',
nextCentury: 'Next Century',,
incrementHour: 'Increment Hour',
pickHour: 'Pick Hour',
decrementHour:'Decrement Hour',
incrementMinute: 'Increment Minute',
pickMinute: 'Pick Minute',
decrementMinute:'Decrement Minute',
incrementSecond: 'Increment Second',
pickSecond: 'Pick Second',
decrementSecond:'Decrement Second'
}
```
This will change the `tooltips` over each icon to a custom string.
#### tooltips
Returns an `Ojbect` of `options.tooltips`
#### tooltips, [tooltips]
Takes an `Ojbect` of `strings`.
##### Throws
* `TypeError` - if `tooltips` parameter is not an `Ojbect`
----------------------
### timeZone
timeZone: ''
Allows the setting of the Time Zone. You must include [`moment-timezone.js`](http://momentjs.com/timezone/) and `moment-timzone` data. See moment timezone documentation for usage.
#### timeZone
Returns an `string` of `options.timeZone`
#### timeZone, [timeZone]
Takes an `string` of a valid timezone.
##### Throws
* `TypeError` - if `tooltips` parameter is not an `string`
----------------------
### allowMultidate
allowMultidate: false
Allows the setting of multiple dates.
#### allowMultidate
Returns an `boolean` of `options.allowMultidate`
#### allowMultidate, [allowMultidate]
Takes an `boolean`.
##### Throws
* `TypeError` - if `allowMultidate` parameter is not an `boolean`
----------------------
### multidateSeparator
multidateSeparator: ','
Used with `allowMultidate`. E.g. `1/1/2017,1/2/2017`
#### multidateSeparator
Returns an `string` of `options.multidateSeparator`
#### multidateSeparator, [multidateSeparator]
Takes an `string` of a valid timezone.
##### Throws
* `TypeError` - if `multidateSeparator` parameter is not an `string`
* `TypeError` - if `multidateSeparator` parameter is longer then 1 character

724
vendor/datepicker/src/docs/Usage.md vendored Normal file
View File

@@ -0,0 +1,724 @@
# Bootstrap4 v5 Docs
<div class="alert alert-info">
<strong>Note</strong>
All functions are accessed via the <code>$('#datetimepicker').datetimepicker(FUNCTION)</code>
</div>
### Minimum Setup
<div class="container">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker1" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker1"/>
<div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker1').datetimepicker();
});
</script>
</div>
</div>
#### Code
```
<div class="container">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker1" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker1"/>
<div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker1').datetimepicker();
});
</script>
</div>
</div>
```
----------------------
### Using Locales
<div class="container">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker2" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker2"/>
<div class="input-group-append" data-target="#datetimepicker2" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker2').datetimepicker({
locale: 'ru'
});
});
</script>
</div>
</div>
#### Code
```
<div class="container">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker2" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker2"/>
<div class="input-group-append" data-target="#datetimepicker2" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker2').datetimepicker({
locale: 'ru'
});
});
</script>
</div>
</div>
```
----------------------
### Time Only
<div class="container">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker3" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker3"/>
<div class="input-group-append" data-target="#datetimepicker3" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-clock-o"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker3').datetimepicker({
format: 'LT'
});
});
</script>
</div>
</div>
#### Code
```
<div class="container">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker3" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker3"/>
<div class="input-group-append" data-target="#datetimepicker3" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-clock-o"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker3').datetimepicker({
format: 'LT'
});
});
</script>
</div>
</div>
```
----------------------
### Date Only
<div class="container">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker4" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker4"/>
<div class="input-group-append" data-target="#datetimepicker4" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker4').datetimepicker({
format: 'L'
});
});
</script>
</div>
</div>
#### Code
```
<div class="container">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker4" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker4"/>
<div class="input-group-append" data-target="#datetimepicker4" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker4').datetimepicker({
format: 'L'
});
});
</script>
</div>
</div>
```
----------------------
### No Icon (input field only):
<div class="container">
<div class="row">
<div class="col-sm-6">
<input type="text" class="form-control datetimepicker-input" id="datetimepicker5" data-toggle="datetimepicker" data-target="#datetimepicker5"/>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker5').datetimepicker();
});
</script>
</div>
</div>
#### Code
```
<div class="container">
<div class="row">
<div class="col-sm-6">
<input type="text" class="form-control datetimepicker-input" id="datetimepicker5" data-toggle="datetimepicker" data-target="#datetimepicker5"/>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker5').datetimepicker();
});
</script>
</div>
</div>
```
----------------------
### Enabled/Disabled Dates
<div class="container">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker6" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker6"/>
<div class="input-group-append" data-target="#datetimepicker6" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker6').datetimepicker({
defaultDate: "11/1/2013",
disabledDates: [
moment("12/25/2013"),
new Date(2013, 11 - 1, 21),
"11/22/2013 00:53"
]
});
});
</script>
</div>
</div>
#### Code
```
<div class="container">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker6" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker6"/>
<div class="input-group-append" data-target="#datetimepicker6" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker6').datetimepicker({
defaultDate: "11/1/2013",
disabledDates: [
moment("12/25/2013"),
new Date(2013, 11 - 1, 21),
"11/22/2013 00:53"
]
});
});
</script>
</div>
</div>
```
----------------------
### Linked Pickers
<div class="container">
<div class='col-md-5'>
<div class="form-group">
<div class="input-group date" id="datetimepicker7" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker7"/>
<div class="input-group-append" data-target="#datetimepicker7" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<div class='col-md-5'>
<div class="form-group">
<div class="input-group date" id="datetimepicker8" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker8"/>
<div class="input-group-append" data-target="#datetimepicker8" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker7').datetimepicker();
$('#datetimepicker8').datetimepicker({
useCurrent: false
});
$("#datetimepicker7").on("change.datetimepicker", function (e) {
$('#datetimepicker8').datetimepicker('minDate', e.date);
});
$("#datetimepicker8").on("change.datetimepicker", function (e) {
$('#datetimepicker7').datetimepicker('maxDate', e.date);
});
});
</script>
#### Code
```
<div class="container">
<div class='col-md-5'>
<div class="form-group">
<div class="input-group date" id="datetimepicker7" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker7"/>
<div class="input-group-append" data-target="#datetimepicker7" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<div class='col-md-5'>
<div class="form-group">
<div class="input-group date" id="datetimepicker8" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker8"/>
<div class="input-group-append" data-target="#datetimepicker8" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker7').datetimepicker();
$('#datetimepicker8').datetimepicker({
useCurrent: false
});
$("#datetimepicker7").on("change.datetimepicker", function (e) {
$('#datetimepicker8').datetimepicker('minDate', e.date);
});
$("#datetimepicker8").on("change.datetimepicker", function (e) {
$('#datetimepicker7').datetimepicker('maxDate', e.date);
});
});
</script>
```
----------------------
### Custom Icons
<div class="container">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker9" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker9"/>
<div class="input-group-append" data-target="#datetimepicker9" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker9').datetimepicker({
icons: {
time: "fa fa-clock-o",
date: "fa fa-calendar",
up: "fa fa-arrow-up",
down: "fa fa-arrow-down"
}
});
});
</script>
</div>
#### Code
```
<div class="container">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker9" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker9"/>
<div class="input-group-append" data-target="#datetimepicker9" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker9').datetimepicker({
icons: {
time: "fa fa-clock-o",
date: "fa fa-calendar",
up: "fa fa-arrow-up",
down: "fa fa-arrow-down"
}
});
});
</script>
</div>
```
----------------------
### View Mode
<div class="container">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker10" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker10"/>
<div class="input-group-append" data-target="#datetimepicker10" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker10').datetimepicker({
viewMode: 'years'
});
});
</script>
</div>
#### Code
```
<div class="container">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker10" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker10"/>
<div class="input-group-append" data-target="#datetimepicker10" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker10').datetimepicker({
viewMode: 'years'
});
});
</script>
</div>
```
----------------------
### Min View Mode
<div class="container">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker11" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker11"/>
<div class="input-group-append" data-target="#datetimepicker11" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker11').datetimepicker({
viewMode: 'years',
format: 'MM/YYYY'
});
});
</script>
</div>
#### Code
```
<div class="container">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker11" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker11"/>
<div class="input-group-append" data-target="#datetimepicker11" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker11').datetimepicker({
viewMode: 'years',
format: 'MM/YYYY'
});
});
</script>
</div>
```
----------------------
### Disabled Days of the Week
<div class="container">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker12" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker12"/>
<div class="input-group-append" data-target="#datetimepicker12" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker12').datetimepicker({
daysOfWeekDisabled: [0, 6]
});
});
</script>
</div>
#### Code
```
<div class="container">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker12" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker12"/>
<div class="input-group-append" data-target="#datetimepicker12" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker12').datetimepicker({
daysOfWeekDisabled: [0, 6]
});
});
</script>
</div>
```
----------------------
### Inline
<div style="overflow:hidden;">
<div class="form-group">
<div class="row">
<div class="col-md-8">
<div id="datetimepicker13"></div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker13').datetimepicker({
inline: true,
sideBySide: true,
buttons:{
showToday:true
}
});
});
</script>
</div>
#### Code
```
<div style="overflow:hidden;">
<div class="form-group">
<div class="row">
<div class="col-md-8">
<div id="datetimepicker13"></div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker13').datetimepicker({
inline: true,
sideBySide: true
});
});
</script>
</div>
```
----------------------
### Multidate
<div class="container">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker14" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker14"/>
<div class="input-group-append" data-target="#datetimepicker14" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker14').datetimepicker({
allowMultidate: true,
multidateSeparator: ',',
format: 'L' //this is here just to make the demo prettier.
});
});
</script>
</div>
</div>
#### Code
```
<div class="container">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker14" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker14"/>
<div class="input-group-append" data-target="#datetimepicker14" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker14').datetimepicker({
allowMultidate: true,
multidateSeparator: ','
});
});
</script>
</div>
</div>
```
----------------------
### Setting Options
<div class="container">
<div class="col-sm-6">
<div class="form-group">
<div class="input-group date" id="datetimepicker15" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker15"/>
<div class="input-group-append" data-target="#datetimepicker15" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
<div class="form-group">
<button class="btn btn-default" id="setOption">Set Option</button>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker15').datetimepicker();
$('#setOption').click(function () {
$('#datetimepicker15').datetimepicker('daysOfWeekDisabled', [0, 6]);
});
});
</script>
</div>

53
vendor/datepicker/src/docs/index.md vendored Normal file
View File

@@ -0,0 +1,53 @@
<main class="bd-masthead" id="content" role="main">
<div class="container">
<div class="row align-items-center">
<div class="col-6 mx-auto col-md-6 order-md-2">
<img class="img-fluid mb-3 mb-md-0" src="android-chrome-256x256.png" alt="" width="256" height="256">
</div>
<div class="col-md-6 order-md-1 text-center text-md-left pr-md-5">
<h1 class="mb-3">Tempus Dominus</h1>
<p class="lead">
Tempus Dominus is the successor to the very popular Eonasdan/bootstrap-datetimepicker.
The plugin provide a robust date and time picker designed to integrate into your Bootstrap project.
</p>
<div class="d-flex flex-column flex-md-row lead mb-3">
<a href="Usage/" class="btn btn-lg mb-3 mb-md-0 mr-md-3" id="getstarted">Get started</a>
<a href="Installing/" class="btn btn-lg btn-outline-secondary">Download</a>
</div>
<p class="text-muted mb-0">
Currently v5.0.1
<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CK7DC5QN&placement=eonasdangithubio" id="_carbonads_js"></script>
</p>
</div>
</div>
</div>
</main>
<div class="masthead-followup row m-0 border border-white">
<div class="col-12 col-md-6 p-3 p-md-5 bg-light border border-white">
<span class="fa fa-download"></span>
<h3>Installation</h3>
<p>Include Tempus Dominus's source Sass and JavaScript files via npm</p>
<pre>
<code>
npm i tempusdominus-bootstrap-4
</code>
</pre>
<hr class="half-rule"/>
<a class="btn btn-outline-primary" href="Installing/">Read installation docs</a>
</div>
<div class="col-12 col-md-6 p-3 p-md-5 bg-light border border-white">
<span class="fa fa-cloud-download"></span>
<h3>CDNJS</h3>
<p>When you only need to include Tempus Dominus's compiled CSS or JS, you can use CDNJS.</p>
<pre>
<code>
&lt;script type=&quot;text/javascript&quot; src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.1/js/tempusdominus-bootstrap-4.min.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.1/css/tempusdominus-bootstrap-4.min.css&quot; /&gt;
</code>
</pre>
<hr class="half-rule"/>
<a class="btn btn-outline-primary" href="/Functions">Explore the docs</a>
</div>
</div>

View File

@@ -0,0 +1,12 @@
{% extends "base.html" %}
{% block content %}
<div class="row-fluid">
<div id="main-content" class="span12">
<h1 id="404-page-not-found" style="text-align: center">404</h1>
<p style="text-align: center"><strong>Page not found</strong></p>
</div>
</div>
{% endblock %}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="en">
<head>
{%- block site_meta %}
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% if page and page.is_homepage %}
<meta name="description" content="{{ config['site_description'] }}">{% endif %}
{% if config.site_author %}
<meta name="author" content="{{ config.site_author }}">{% endif %}
{% if page and page.canonical_url %}
<link rel="canonical" href="{{ page.canonical_url }}">{% endif %}
<link rel="shortcut icon" href="{{ base_url }}/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/manifest.json">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#144287">
<meta name="theme-color" content="#ffffff">
{%- endblock %}
{%- block htmltitle %}
<title>{% if page and page.title and not page.is_homepage %}{{ page.title }} - {% endif %}{{ config.site_name }}</title>
{%- endblock %}
{%- block styles %}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha256-Md8eaeo67OiouuXAi8t/Xpd8t2+IaJezATVTWbZqSOw=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css" />
{%- for path in extra_css %}
<link href="{{ path }}" rel="stylesheet">
{%- endfor %}
{%- endblock %}
{%- block libs %}
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha256-98vAGjEDGN79TjHkYWVD4s87rvWkdWLHPs5MC3FvFX4=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/js/bootstrap.min.js" integrity="sha256-xaF9RpdtRxzwYMWg4ldJoyPWqyDPCRD0Cv7YEEe6Ie8=" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment-with-locales.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.21/moment-timezone-with-data-2012-2022.min.js"></script>
{%- endblock %}
{%- block scripts %}
<script>var base_url = '{{ base_url }}';</script>
{%- for path in extra_javascript %}
{% if 'search' in path %}
{% else %}
<script src="{{ path }}"></script>
{% endif %}
{%- endfor %}
{%- endblock %}
{%- block extrahead %} {% endblock %}
</head>
<body{% if page and page.is_homepage %} class="bd-home" {% endif %}>
{% include "nav.html" %}
{% if not page.is_homepage %}
<div class="container-fluid">
<div class="row">
{%- block content %}
<div class="col-12 col-md-3 col-xl-2 bd-sidebar">{% include "toc.html" %}</div>
<div class="col-12 col-md-9 col-xl-8 py-md-3 pl-md-5 bd-content" role="main">
<h1 class="bd-title">{{page.title}}</h1>
{% if page and page.meta.lead %}
<p class="bd-lead">
{{page.meta.lead[0]}}
</p>
{% endif %}
{% include "content.html" %}
</div>
{%- endblock %}
</div>
</div>
{% else %}
{% include "content.html" %}
{% endif %}
<script>
if (top !== self) { top.location.replace(self.location.href); }
if (location.hostname !== "localhost" && location.hostname !== "127.0.0.1") {
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] ||
function () {
(i[r].q = i[r].q || []).push(arguments);
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-47462200-1', 'eonasdan.github.io');
ga('send', 'pageview');
}
</script>
</body>
</html>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#2b5797</TileColor>
</tile>
</msapplication>
</browserconfig>

View File

@@ -0,0 +1,8 @@
{% if page.meta.source %}
<div class="source-links">
{% for filename in page.meta.source %}
<span class="label label-primary">{{ filename }}</span>
{% endfor %}
</div>
{% endif %}
{{ page.content }}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,206 @@
/*@preserve
* Tempus Dominus Bootstrap4 v5.1.2 (https://tempusdominus.github.io/bootstrap-4/)
* Copyright 2016-2018 Jonathan Peterson
* Licensed under MIT (https://github.com/tempusdominus/bootstrap-3/blob/master/LICENSE)
*/
.sr-only, .bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after, .bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after, .bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after, .bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after, .bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after, .bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after, .bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after, .bootstrap-datetimepicker-widget .btn[data-action="clear"]::after, .bootstrap-datetimepicker-widget .btn[data-action="today"]::after, .bootstrap-datetimepicker-widget .picker-switch::after, .bootstrap-datetimepicker-widget table th.prev::after, .bootstrap-datetimepicker-widget table th.next::after {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
padding: 0;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0; }
.bootstrap-datetimepicker-widget {
list-style: none; }
.bootstrap-datetimepicker-widget.dropdown-menu {
display: block;
margin: 2px 0;
padding: 4px;
width: 14rem; }
@media (min-width: 576px) {
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
width: 38em; } }
@media (min-width: 768px) {
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
width: 38em; } }
@media (min-width: 992px) {
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
width: 38em; } }
.bootstrap-datetimepicker-widget.dropdown-menu:before, .bootstrap-datetimepicker-widget.dropdown-menu:after {
content: '';
display: inline-block;
position: absolute; }
.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before {
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-bottom-color: rgba(0, 0, 0, 0.2);
top: -7px;
left: 7px; }
.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after {
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid white;
top: -6px;
left: 8px; }
.bootstrap-datetimepicker-widget.dropdown-menu.top:before {
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-top: 7px solid #ccc;
border-top-color: rgba(0, 0, 0, 0.2);
bottom: -7px;
left: 6px; }
.bootstrap-datetimepicker-widget.dropdown-menu.top:after {
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-top: 6px solid white;
bottom: -6px;
left: 7px; }
.bootstrap-datetimepicker-widget.dropdown-menu.float-right:before {
left: auto;
right: 6px; }
.bootstrap-datetimepicker-widget.dropdown-menu.float-right:after {
left: auto;
right: 7px; }
.bootstrap-datetimepicker-widget.dropdown-menu.wider {
width: 16rem; }
.bootstrap-datetimepicker-widget .list-unstyled {
margin: 0; }
.bootstrap-datetimepicker-widget a[data-action] {
padding: 6px 0; }
.bootstrap-datetimepicker-widget a[data-action]:active {
box-shadow: none; }
.bootstrap-datetimepicker-widget .timepicker-hour, .bootstrap-datetimepicker-widget .timepicker-minute, .bootstrap-datetimepicker-widget .timepicker-second {
width: 54px;
font-weight: bold;
font-size: 1.2em;
margin: 0; }
.bootstrap-datetimepicker-widget button[data-action] {
padding: 6px; }
.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after {
content: "Increment Hours"; }
.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after {
content: "Increment Minutes"; }
.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after {
content: "Decrement Hours"; }
.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after {
content: "Decrement Minutes"; }
.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after {
content: "Show Hours"; }
.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after {
content: "Show Minutes"; }
.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after {
content: "Toggle AM/PM"; }
.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after {
content: "Clear the picker"; }
.bootstrap-datetimepicker-widget .btn[data-action="today"]::after {
content: "Set the date to today"; }
.bootstrap-datetimepicker-widget .picker-switch {
text-align: center; }
.bootstrap-datetimepicker-widget .picker-switch::after {
content: "Toggle Date and Time Screens"; }
.bootstrap-datetimepicker-widget .picker-switch td {
padding: 0;
margin: 0;
height: auto;
width: auto;
line-height: inherit; }
.bootstrap-datetimepicker-widget .picker-switch td span {
line-height: 2.5;
height: 2.5em;
width: 100%; }
.bootstrap-datetimepicker-widget table {
width: 100%;
margin: 0; }
.bootstrap-datetimepicker-widget table td,
.bootstrap-datetimepicker-widget table th {
text-align: center;
border-radius: 0.25rem; }
.bootstrap-datetimepicker-widget table th {
height: 20px;
line-height: 20px;
width: 20px; }
.bootstrap-datetimepicker-widget table th.picker-switch {
width: 145px; }
.bootstrap-datetimepicker-widget table th.disabled, .bootstrap-datetimepicker-widget table th.disabled:hover {
background: none;
color: #6c757d;
cursor: not-allowed; }
.bootstrap-datetimepicker-widget table th.prev::after {
content: "Previous Month"; }
.bootstrap-datetimepicker-widget table th.next::after {
content: "Next Month"; }
.bootstrap-datetimepicker-widget table thead tr:first-child th {
cursor: pointer; }
.bootstrap-datetimepicker-widget table thead tr:first-child th:hover {
background: #e9ecef; }
.bootstrap-datetimepicker-widget table td {
height: 54px;
line-height: 54px;
width: 54px; }
.bootstrap-datetimepicker-widget table td.cw {
font-size: .8em;
height: 20px;
line-height: 20px;
color: #6c757d; }
.bootstrap-datetimepicker-widget table td.day {
height: 20px;
line-height: 20px;
width: 20px; }
.bootstrap-datetimepicker-widget table td.day:hover, .bootstrap-datetimepicker-widget table td.hour:hover, .bootstrap-datetimepicker-widget table td.minute:hover, .bootstrap-datetimepicker-widget table td.second:hover {
background: #e9ecef;
cursor: pointer; }
.bootstrap-datetimepicker-widget table td.old, .bootstrap-datetimepicker-widget table td.new {
color: #6c757d; }
.bootstrap-datetimepicker-widget table td.today {
position: relative; }
.bootstrap-datetimepicker-widget table td.today:before {
content: '';
display: inline-block;
border: solid transparent;
border-width: 0 0 7px 7px;
border-bottom-color: #007bff;
border-top-color: rgba(0, 0, 0, 0.2);
position: absolute;
bottom: 4px;
right: 4px; }
.bootstrap-datetimepicker-widget table td.active, .bootstrap-datetimepicker-widget table td.active:hover {
background-color: #007bff;
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
.bootstrap-datetimepicker-widget table td.active.today:before {
border-bottom-color: #fff; }
.bootstrap-datetimepicker-widget table td.disabled, .bootstrap-datetimepicker-widget table td.disabled:hover {
background: none;
color: #6c757d;
cursor: not-allowed; }
.bootstrap-datetimepicker-widget table td span {
display: inline-block;
width: 54px;
height: 54px;
line-height: 54px;
margin: 2px 1.5px;
cursor: pointer;
border-radius: 0.25rem; }
.bootstrap-datetimepicker-widget table td span:hover {
background: #e9ecef; }
.bootstrap-datetimepicker-widget table td span.active {
background-color: #007bff;
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
.bootstrap-datetimepicker-widget table td span.old {
color: #6c757d; }
.bootstrap-datetimepicker-widget table td span.disabled, .bootstrap-datetimepicker-widget table td span.disabled:hover {
background: none;
color: #6c757d;
cursor: not-allowed; }
.bootstrap-datetimepicker-widget.usetwentyfour td.hour {
height: 27px;
line-height: 27px; }
.input-group [data-toggle="datetimepicker"] {
cursor: pointer; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 901 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,62 @@
function getSearchTerm()
{
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++)
{
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == 'q')
{
return sParameterName[1];
}
}
}
$(function() {
var search_term = getSearchTerm(),
$search_modal = $('#mkdocs_search_modal');
if(search_term){
$search_modal.modal();
}
// make sure search input gets autofocus everytime modal opens.
$search_modal.on('shown.bs.modal', function () {
$search_modal.find('#mkdocs-search-query').focus();
});
// Highlight.js
$('pre code').each(function (i, block) {
hljs.highlightBlock(block);
});
$('table').addClass('table table-striped table-hover');
// Improve the scrollspy behaviour when users click on a TOC item.
$(".bs-sidenav a").on("click", function() {
var clicked = this;
setTimeout(function() {
var active = $('.nav li.active a');
active = active[active.length - 1];
if (clicked !== active) {
$(active).parent().removeClass("active");
$(clicked).parent().addClass("active");
}
}, 50);
});
$('body').scrollspy({
target: '.bs-sidebar',
});
/* Toggle the `clicky` class on the body when clicking links to let us
retrigger CSS animations. See ../css/base.css for more details. */
$('a').click(function (e) {
$('body').toggleClass('clicky');
});
/* Prevent disabled links from causing a page reload */
$("li.disabled a").click(function () {
event.preventDefault();
});
});

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
{% extends "base.html" %}

View File

@@ -0,0 +1,18 @@
{
"name": "",
"icons": [
{
"src": "/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/android-chrome-256x256.png",
"sizes": "256x256",
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,32 @@
<header class="navbar navbar-expand navbar-dark flex-column flex-md-row bd-navbar">
<a class="navbar-brand" href="https://tempusdominus.github.io/bootstrap-4/"><img src="https://tempusdominus.github.io/bootstrap-4/favicon-32x32.png" alt="home" /></a>
<div class="navbar-nav-scroll">
<ul class="navbar-nav bd-navbar-nav flex-row">
{% for nav_item in nav %}
{% if nav_item.children %}
<li class="nav-item dropdown">
<a href="#" class="nav-item nav-link dropdown-toggle mr-md-2" data-toggle="dropdown" id="{{ nav_item.title }}">{{ nav_item.title }}</a>
<div class="dropdown-menu dropdown-menu-right show" aria-labelledby="{{ nav_item.title }}">
{% for nav_item in nav_item.children %}
<a class="dropdown-item {% if nav_item.active %}active{% endif %}" href="{{ nav_item.url }}">{{ nav_item.title }}</a>
{% endfor %}
</div>
</li>
{% else %}
<li class="nav-item">
<a class="nav-link {% if nav_item.active %}active{% endif %}" href="{{ nav_item.url }}">{{ nav_item.title }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
<ul class="navbar-nav flex-row ml-md-auto d-none d-md-flex">
<li class="nav-item">
<a class="nav-link p-2" href="https://github.com/tempusdominus/bootstrap-4" target="_blank" rel="noopener" aria-label="GitHub">
<span class="fa fa-github"></span>
</a>
</li>
</ul>
</header>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="293.000000pt" height="293.000000pt" viewBox="0 0 293.000000 293.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,293.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M9 2808 c-1 -2 -2 -66 -3 -144 l-1 -141 360 -1 c198 0 370 -1 383 -1
l22 -1 0 -1201 0 -1201 473 5 c259 2 488 7 507 11 241 46 354 81 500 157 236
121 436 327 550 564 51 107 78 188 105 320 21 100 23 131 21 345 -4 258 -6
279 -42 425 -110 441 -421 725 -899 820 -201 40 -259 42 -1127 44 -467 1 -848
1 -849 -1z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 835 B

View File

@@ -0,0 +1,24 @@
<div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="Search Modal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h4 class="modal-title" id="exampleModalLabel">Search</h4>
</div>
<div class="modal-body">
<p>
From here you can search these documents. Enter
your search terms below.
</p>
<form role="form">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search..." id="mkdocs-search-query">
</div>
</form>
<div id="mkdocs-search-results"></div>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,13 @@
<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CK7DC5QN&placement=eonasdangithubio" id="_carbonads_js"></script>
<nav class="bd-links" id="docsNavbarContent">
<div class="bd-toc-item active">
<ul class="nav bd-sidenav">
{%- for toc_item in page.toc %}
<li class="{% if toc_item.active %}active bd-sidenav-active{% endif %}"><a href="{{ toc_item.url }}">{{ toc_item.title }}</a></li>
{%- for toc_item in toc_item.children %}
<li><a href="{{ toc_item.url }}">{{ toc_item.title }}</a></li>
{%- endfor %}
{%- endfor %}
</ul>
</div>
</nav>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,342 @@
$bs-datetimepicker-timepicker-font-size: 1.2em !default;
$bs-datetimepicker-active-bg: $blue !default;
$bs-datetimepicker-active-color: $white !default;
$bs-datetimepicker-border-radius: $border-radius !default;
$bs-datetimepicker-btn-hover-bg: $gray-200 !default;
$bs-datetimepicker-disabled-color: $gray-600 !default;
$bs-datetimepicker-alternate-color: $gray-600 !default;
$bs-datetimepicker-secondary-border-color: #ccc !default;
$bs-datetimepicker-secondary-border-color-rgba: rgba(0, 0, 0, 0.2) !default;
$bs-datetimepicker-primary-border-color: white !default;
$bs-datetimepicker-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !default;
.bootstrap-datetimepicker-widget {
list-style: none;
&.dropdown-menu {
display: block;
margin: 2px 0;
padding: 4px;
width: 14rem;
&.timepicker-sbs {
@media (min-width: map-get($grid-breakpoints, 'sm')) {
width: 38em;
}
@media (min-width: map-get($grid-breakpoints, 'md')) {
width: 38em;
}
@media (min-width: map-get($grid-breakpoints, 'lg')) {
width: 38em;
}
}
&:before, &:after {
content: '';
display: inline-block;
position: absolute;
}
&.bottom {
&:before {
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid $bs-datetimepicker-secondary-border-color;
border-bottom-color: $bs-datetimepicker-secondary-border-color-rgba;
top: -7px;
left: 7px;
}
&:after {
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid $bs-datetimepicker-primary-border-color;
top: -6px;
left: 8px;
}
}
&.top {
&:before {
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-top: 7px solid $bs-datetimepicker-secondary-border-color;
border-top-color: $bs-datetimepicker-secondary-border-color-rgba;
bottom: -7px;
left: 6px;
}
&:after {
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-top: 6px solid $bs-datetimepicker-primary-border-color;
bottom: -6px;
left: 7px;
}
}
&.float-right {
&:before {
left: auto;
right: 6px;
}
&:after {
left: auto;
right: 7px;
}
}
&.wider {
width: 16rem;
}
}
.list-unstyled {
margin: 0;
}
a[data-action] {
padding: 6px 0;
}
a[data-action]:active {
box-shadow: none;
}
.timepicker-hour, .timepicker-minute, .timepicker-second {
width: 54px;
font-weight: bold;
font-size: $bs-datetimepicker-timepicker-font-size;
margin: 0;
}
button[data-action] {
padding: 6px;
}
.btn[data-action="incrementHours"]::after {
@extend .sr-only;
content: "Increment Hours";
}
.btn[data-action="incrementMinutes"]::after {
@extend .sr-only;
content: "Increment Minutes";
}
.btn[data-action="decrementHours"]::after {
@extend .sr-only;
content: "Decrement Hours";
}
.btn[data-action="decrementMinutes"]::after {
@extend .sr-only;
content: "Decrement Minutes";
}
.btn[data-action="showHours"]::after {
@extend .sr-only;
content: "Show Hours";
}
.btn[data-action="showMinutes"]::after {
@extend .sr-only;
content: "Show Minutes";
}
.btn[data-action="togglePeriod"]::after {
@extend .sr-only;
content: "Toggle AM/PM";
}
.btn[data-action="clear"]::after {
@extend .sr-only;
content: "Clear the picker";
}
.btn[data-action="today"]::after {
@extend .sr-only;
content: "Set the date to today";
}
.picker-switch {
text-align: center;
&::after {
@extend .sr-only;
content: "Toggle Date and Time Screens";
}
td {
padding: 0;
margin: 0;
height: auto;
width: auto;
line-height: inherit;
span {
line-height: 2.5;
height: 2.5em;
width: 100%;
}
}
}
table {
width: 100%;
margin: 0;
& td,
& th {
text-align: center;
border-radius: $bs-datetimepicker-border-radius;
}
& th {
height: 20px;
line-height: 20px;
width: 20px;
&.picker-switch {
width: 145px;
}
&.disabled,
&.disabled:hover {
background: none;
color: $bs-datetimepicker-disabled-color;
cursor: not-allowed;
}
&.prev::after {
@extend .sr-only;
content: "Previous Month";
}
&.next::after {
@extend .sr-only;
content: "Next Month";
}
}
& thead tr:first-child th {
cursor: pointer;
&:hover {
background: $bs-datetimepicker-btn-hover-bg;
}
}
& td {
height: 54px;
line-height: 54px;
width: 54px;
&.cw {
font-size: .8em;
height: 20px;
line-height: 20px;
color: $bs-datetimepicker-alternate-color;
}
&.day {
height: 20px;
line-height: 20px;
width: 20px;
}
&.day:hover,
&.hour:hover,
&.minute:hover,
&.second:hover {
background: $bs-datetimepicker-btn-hover-bg;
cursor: pointer;
}
&.old,
&.new {
color: $bs-datetimepicker-alternate-color;
}
&.today {
position: relative;
&:before {
content: '';
display: inline-block;
border: solid transparent;
border-width: 0 0 7px 7px;
border-bottom-color: $bs-datetimepicker-active-bg;
border-top-color: $bs-datetimepicker-secondary-border-color-rgba;
position: absolute;
bottom: 4px;
right: 4px;
}
}
&.active,
&.active:hover {
background-color: $bs-datetimepicker-active-bg;
color: $bs-datetimepicker-active-color;
text-shadow: $bs-datetimepicker-text-shadow;
}
&.active.today:before {
border-bottom-color: #fff;
}
&.disabled,
&.disabled:hover {
background: none;
color: $bs-datetimepicker-disabled-color;
cursor: not-allowed;
}
span {
display: inline-block;
width: 54px;
height: 54px;
line-height: 54px;
margin: 2px 1.5px;
cursor: pointer;
border-radius: $bs-datetimepicker-border-radius;
&:hover {
background: $bs-datetimepicker-btn-hover-bg;
}
&.active {
background-color: $bs-datetimepicker-active-bg;
color: $bs-datetimepicker-active-color;
text-shadow: $bs-datetimepicker-text-shadow;
}
&.old {
color: $bs-datetimepicker-alternate-color;
}
&.disabled,
&.disabled:hover {
background: none;
color: $bs-datetimepicker-disabled-color;
cursor: not-allowed;
}
}
}
}
&.usetwentyfour {
td.hour {
height: 27px;
line-height: 27px;
}
}
}
.input-group [data-toggle="datetimepicker"] {
cursor: pointer;
}

View File

@@ -0,0 +1,17 @@
// Import bootstrap variables including default color palette and fonts
@import "~bootstrap/scss/_functions.scss";
@import "~bootstrap/scss/_variables.scss";
.sr-only {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
padding: 0;
overflow: hidden;
clip: rect(0,0,0,0);
border: 0;
}
// Import datepicker component
@import "_tempusdominus-bootstrap-4";