cleaned up the file hiearchy, added icons to asset types. fixed edit client net terms, added change photo for contacts, added some more options to settings
|
|
@ -1,49 +0,0 @@
|
|||
Akaunting to PittPC CRM Conversion
|
||||
|
||||
Exports
|
||||
|
||||
Accounts
|
||||
|
||||
SELECT id AS account_id, name AS account_name, opening_balance FROM c4v_accounts WHERE company_id = 1;
|
||||
|
||||
Categories
|
||||
|
||||
SELECT id AS category_id, name AS category_name, type AS category_type FROM c4v_categories WHERE company_id = 1;
|
||||
|
||||
Clients
|
||||
|
||||
SELECT id AS client_id, name AS client_name, address AS client_address, phone AS client_phone, email AS client_email, website AS client_website FROM c4v_customers WHERE company_id = 1;
|
||||
|
||||
UPDATE clients SET client_phone = replace(client_phone, '-', '');
|
||||
|
||||
Expenses
|
||||
|
||||
SELECT id AS expense_id, description AS expense_description, amount AS expense_amount, paid_at AS expense_date, reference AS expense_reference, vendor_id, category_id, account_id FROM c4v_payments WHERE company_id = 1 AND deleted_at IS NULL;
|
||||
|
||||
Invoices
|
||||
|
||||
SELECT id AS invoice_id, invoice_number, invoice_status_code AS invoice_status, invoiced_at AS invoice_date, due_at AS invoice_due, amount AS invoice_amount, notes AS invoice_note, category_id, customer_id AS client_id FROM c4v_invoices WHERE company_id = 1 AND deleted_at IS NULL;
|
||||
|
||||
Invoice History
|
||||
|
||||
SELECT id AS invoice_history_id, created_at AS invoice_history_date, status_code AS invoice_history_status, description AS invoice_history_description, invoice_id FROM c4v_invoice_histories WHERE company_id = 1 AND deleted_at IS NULL;
|
||||
|
||||
Invoice Items (Missing Subtotal Need calculated)
|
||||
|
||||
SELECT id AS invoice_item_id, name AS invoice_item_name, quantity AS invoice_item_quantity, price AS invoice_item_price, tax AS invoice_item_tax, total AS invoice_item_total, invoice_id FROM c4v_invoice_items WHERE company_id = 1 AND deleted_at IS NULL;
|
||||
|
||||
Payments
|
||||
|
||||
SELECT id AS payment_id, paid_at AS payment_date, amount AS payment_amount, payment_method, reference AS payment_reference, account_id, invoice_id FROM c4v_invoice_payments WHERE company_id = 1 AND deleted_at IS NULL;
|
||||
|
||||
Transfers
|
||||
|
||||
SELECT c4v_transfers.id AS transfer_id, c4v_payments.amount AS transfer_amount, c4v_transfers.created_at AS transfer_date, c4v_payments.account_id AS transfer_account_from, c4v_revenues.account_id AS transfer_account_to, payment_id AS expense_id, revenue_id AS payment_id FROM c4v_transfers, c4v_payments, c4v_revenues WHERE c4v_transfers.revenue_id = c4v_revenues.id AND c4v_transfers.payment_id = c4v_payments.id AND c4v_transfers.company_id = 1 AND c4v_transfers.deleted_at IS NULL;
|
||||
|
||||
Move Revenue to payments for Transfers only
|
||||
|
||||
SELECT c4v_revenues.id AS payment_id, paid_at AS payment_date, amount AS payment_amount, account_id FROM c4v_transfers, c4v_revenues WHERE c4v_transfers.revenue_id = c4v_revenues.id AND c4v_revenues.deleted_at IS NULL;
|
||||
|
||||
Vendors
|
||||
|
||||
SELECT id AS vendor_id, name AS vendor_name, address AS vendor_address, email AS vendor_email, website AS vendor_website FROM c4v_vendors WHERE company_id = 1 AND deleted_at IS NULL;
|
||||
|
|
@ -47,8 +47,8 @@
|
|||
</div>
|
||||
<select class="form-control selectpicker show-tick" data-live-search="true" name="type" required>
|
||||
<option value="">- Type -</option>
|
||||
<?php foreach($asset_types_array as $asset_type) { ?>
|
||||
<option><?php echo $asset_type; ?></option>
|
||||
<?php foreach($asset_types_array as $asset_type => $asset_icon) { ?>
|
||||
<option data-icon="text-secondary fa fa-fw <?php echo $asset_icon; ?>"><?php echo $asset_type; ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,86 +0,0 @@
|
|||
<?php include("header.php"); ?>
|
||||
|
||||
<?php
|
||||
|
||||
if(isset($_GET['calendar_id'])){
|
||||
$calendar_selected_id = intval($_GET['calendar_id']);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<nav class="nav flex-column mb-5">
|
||||
<h2 class="text-center">Calendars</h2>
|
||||
<a class="btn btn-primary btn-block" href="#">New Event</a>
|
||||
<a class="nav-link active" href="#">Jobs</a>
|
||||
<a class="nav-link" href="#">Domains</a>
|
||||
<a class="nav-link" href="#">Clients</a>
|
||||
<a class="nav-link" href="#">Invoices</a>
|
||||
<a class="nav-link" href="#">Recurring</a>
|
||||
<a class="nav-link" href="#">Payments</a>
|
||||
<a class="nav-link" href="#">Trips</a>
|
||||
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Expenses</a>
|
||||
</nav>
|
||||
<form>
|
||||
<div class="input-group mb-3">
|
||||
<input type="text" class="form-control" name="calendar" placeholder="Calendar name">
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary btn-sm" type="button"><i class="fa fa-fw fa-check"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<div id='calendar'></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include("add_calendar_event_modal.php"); ?>
|
||||
|
||||
<?php include("footer.php"); ?>
|
||||
|
||||
<script>
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var calendarEl = document.getElementById('calendar');
|
||||
|
||||
var calendar = new FullCalendar.Calendar(calendarEl, {
|
||||
plugins: [ 'interaction', 'dayGrid', 'timeGrid', 'list' ],
|
||||
defaultView: 'dayGridMonth',
|
||||
customButtons: {
|
||||
myCustomButton: {
|
||||
text: 'New',
|
||||
click: function() {
|
||||
$("#addCalendarEventModal").modal("show");
|
||||
}
|
||||
}
|
||||
},
|
||||
header: {
|
||||
left: 'prev,next today',
|
||||
center: 'title',
|
||||
right: 'dayGridMonth,timeGridWeek,timeGridDay,listMonth myCustomButton'
|
||||
},
|
||||
events: [
|
||||
<?php
|
||||
$sql = mysqli_query($mysqli,"SELECT * FROM calendar_events");
|
||||
while($row = mysqli_fetch_array($sql)){
|
||||
$calendar_event_id = $row['calendar_event_id'];
|
||||
$calendar_event_title = $row['calendar_event_title'];
|
||||
$calendar_event_start = $row['calendar_event_start'];
|
||||
$calendar_event_end = $row['calendar_event_end'];
|
||||
$calendar_id = $row['calendar_id'];
|
||||
$calendar_name = $row['calendar_name'];
|
||||
echo "{ id: '$calendar_event_id', title: '$calendar_event_title', start: '$calendar_event_start'},";
|
||||
}
|
||||
?>
|
||||
],
|
||||
eventClick: function(calEvent, jsEvent, view, resourceObj) {
|
||||
$("#addCalendarEventModal").modal("show");
|
||||
}
|
||||
});
|
||||
|
||||
calendar.render();
|
||||
});
|
||||
|
||||
</script>
|
||||
|
|
@ -109,9 +109,10 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php echo $asset_name; ?>
|
||||
|
||||
<?php
|
||||
}
|
||||
echo $asset_name;
|
||||
?>
|
||||
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
//DB Settings
|
||||
|
||||
$dbhost = "localhost";
|
||||
$dbusername = "root";
|
||||
$dbpassword = "password";
|
||||
$database = "pittpc";
|
||||
|
||||
$mysqli = mysqli_connect($dbhost, $dbusername, $dbpassword, $database);
|
||||
|
||||
include("get_settings.php");
|
||||
?>
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
$dbhost = "localhost";
|
||||
$dbusername = "root";
|
||||
$dbpassword = "password";
|
||||
$database="test";
|
||||
$database = "pittpc";
|
||||
|
||||
$mysqli = mysqli_connect($dbhost, $dbusername, $dbpassword, $database);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
|
||||
//DB Settings
|
||||
|
||||
$dbhost = "localhost";
|
||||
$dbusername = "root";
|
||||
$dbpassword = "password";
|
||||
$database = "test";
|
||||
|
||||
$mysqli = mysqli_connect($dbhost, $dbusername, $dbpassword, $database);
|
||||
|
||||
// Name of the file
|
||||
$filename = 'db.sql';
|
||||
// Temporary variable, used to store current query
|
||||
$templine = '';
|
||||
// Read in entire file
|
||||
$lines = file($filename);
|
||||
// Loop through each line
|
||||
foreach ($lines as $line){
|
||||
// Skip it if it's a comment
|
||||
if(substr($line, 0, 2) == '--' || $line == '')
|
||||
continue;
|
||||
|
||||
// Add this line to the current segment
|
||||
$templine .= $line;
|
||||
// If it has a semicolon at the end, it's the end of the query
|
||||
if(substr(trim($line), -1, 1) == ';'){
|
||||
// Perform the query
|
||||
mysqli_query($mysqli,$templine);
|
||||
// Reset temp variable to empty
|
||||
$templine = '';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
2
cron.php
|
|
@ -42,7 +42,7 @@ foreach ($domainAlertArray as $day) {
|
|||
|
||||
//PAST DUE INVOICES
|
||||
|
||||
$invoiceAlertArray = [1, 14, 30, 90];
|
||||
$invoiceAlertArray = [$config_invoice_overdue_reminders];
|
||||
|
||||
foreach ($invoiceAlertArray as $day) {
|
||||
|
||||
|
|
|
|||
59
db.sql
|
|
@ -29,7 +29,7 @@ CREATE TABLE `accounts` (
|
|||
`account_created_at` datetime NOT NULL,
|
||||
`account_updated_at` datetime NOT NULL,
|
||||
PRIMARY KEY (`account_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -46,7 +46,7 @@ CREATE TABLE `alerts` (
|
|||
`alert_date` datetime NOT NULL,
|
||||
`alert_ack_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`alert_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -75,7 +75,7 @@ CREATE TABLE `assets` (
|
|||
`contact_id` int(11) NOT NULL,
|
||||
`client_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`asset_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -92,7 +92,7 @@ CREATE TABLE `calendars` (
|
|||
`calendar_created_at` datetime NOT NULL,
|
||||
`calendar_updated_at` datetime NOT NULL,
|
||||
PRIMARY KEY (`calendar_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -110,7 +110,7 @@ CREATE TABLE `categories` (
|
|||
`category_created_at` datetime NOT NULL,
|
||||
`category_updated_at` datetime NOT NULL,
|
||||
PRIMARY KEY (`category_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -135,7 +135,7 @@ CREATE TABLE `clients` (
|
|||
`client_created_at` datetime NOT NULL,
|
||||
`client_updated_at` datetime NOT NULL,
|
||||
PRIMARY KEY (`client_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -173,7 +173,7 @@ CREATE TABLE `contacts` (
|
|||
`location_id` int(11) NOT NULL,
|
||||
`client_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`contact_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -193,7 +193,7 @@ CREATE TABLE `domains` (
|
|||
`domain_webhost` int(11) NOT NULL,
|
||||
`client_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`domain_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -214,7 +214,7 @@ CREATE TABLE `events` (
|
|||
`location_id` int(11) NOT NULL,
|
||||
`calendar_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`event_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -237,7 +237,7 @@ CREATE TABLE `expenses` (
|
|||
`category_id` int(11) NOT NULL,
|
||||
`account_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`expense_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -256,7 +256,7 @@ CREATE TABLE `files` (
|
|||
`file_updated_at` datetime NOT NULL,
|
||||
`client_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`file_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -276,7 +276,7 @@ CREATE TABLE `history` (
|
|||
`recurring_id` int(11) NOT NULL,
|
||||
`quote_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`history_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=272 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -301,7 +301,7 @@ CREATE TABLE `invoice_items` (
|
|||
`recurring_id` int(11) NOT NULL,
|
||||
`invoice_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`item_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=84 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -325,7 +325,7 @@ CREATE TABLE `invoices` (
|
|||
`category_id` int(11) NOT NULL,
|
||||
`client_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`invoice_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -348,7 +348,7 @@ CREATE TABLE `locations` (
|
|||
`location_updated_at` datetime NOT NULL,
|
||||
`client_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`location_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -372,7 +372,7 @@ CREATE TABLE `logins` (
|
|||
`application_id` int(11) NOT NULL,
|
||||
`client_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`login_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -388,7 +388,7 @@ CREATE TABLE `logs` (
|
|||
`log_description` varchar(200) NOT NULL,
|
||||
`log_created_at` datetime NOT NULL,
|
||||
PRIMARY KEY (`log_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -448,7 +448,7 @@ CREATE TABLE `payments` (
|
|||
`account_id` int(11) NOT NULL,
|
||||
`invoice_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`payment_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -466,7 +466,7 @@ CREATE TABLE `products` (
|
|||
`product_created_at` datetime NOT NULL,
|
||||
`product_updated_at` datetime NOT NULL,
|
||||
PRIMARY KEY (`product_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -489,7 +489,7 @@ CREATE TABLE `quotes` (
|
|||
`category_id` int(11) NOT NULL,
|
||||
`client_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`quote_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -512,7 +512,7 @@ CREATE TABLE `recurring` (
|
|||
`category_id` int(11) NOT NULL,
|
||||
`client_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`recurring_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -550,11 +550,14 @@ CREATE TABLE `settings` (
|
|||
`config_quote_email_subject` varchar(200) NOT NULL,
|
||||
`config_quote_email_body` varchar(200) NOT NULL,
|
||||
`config_next_invoice_number` int(11) NOT NULL,
|
||||
`config_recurring_email_auto_send` int(1) NOT NULL,
|
||||
`config_recurring_auto_send_invoice` int(1) NOT NULL,
|
||||
`config_base_url` varchar(200) NOT NULL,
|
||||
`config_api_key` varchar(200) NOT NULL,
|
||||
`config_invoice_prefix` varchar(200) NOT NULL,
|
||||
`config_send_invoice_reminders` int(1) NOT NULL,
|
||||
`config_invoice_overdue_reminders` varchar(200) NOT NULL,
|
||||
PRIMARY KEY (`company_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -573,7 +576,7 @@ CREATE TABLE `software` (
|
|||
`software_updated_at` datetime NOT NULL,
|
||||
`client_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`software_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -659,7 +662,7 @@ CREATE TABLE `trips` (
|
|||
`location_id` int(11) NOT NULL,
|
||||
`vendor_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`trip_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -679,7 +682,7 @@ CREATE TABLE `users` (
|
|||
`updated_at` datetime NOT NULL,
|
||||
`client_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`user_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
|
@ -705,7 +708,7 @@ CREATE TABLE `vendors` (
|
|||
`vendor_updated_at` int(11) NOT NULL,
|
||||
`client_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`vendor_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
|
|
@ -717,4 +720,4 @@ CREATE TABLE `vendors` (
|
|||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2019-06-10 0:28:38
|
||||
-- Dump completed on 2019-06-11 17:51:43
|
||||
|
|
|
|||
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
|
||||
$dbhost = "tiny";
|
||||
$dbusername = "tryme";
|
||||
$dbpassword = "overme";
|
||||
$database="what";
|
||||
|
||||
$mysqli = mysqli_connect($dbhost, $dbusername, $dbpassword, $database);
|
||||
|
||||
include("get_settings.php");
|
||||
|
||||
?>
|
||||
|
|
@ -52,8 +52,8 @@
|
|||
<span class="input-group-text"><i class="fa fa-fw fa-tags"></i></span>
|
||||
</div>
|
||||
<select class="form-control selectpicker show-tick" data-live-search="true" name="type" required>
|
||||
<?php foreach($asset_types_array as $asset_type_select) { ?>
|
||||
<option <?php if($asset_type_select == $asset_type) { echo "selected"; } ?>><?php echo $asset_type_select; ?></option>
|
||||
<?php foreach($asset_types_array as $asset_type_select => $asset_icon_select) { ?>
|
||||
<option data-icon="text-secondary fa fa-fw <?php echo $asset_icon_select; ?>" <?php if($asset_type_select == $asset_type) { echo "selected"; } ?>><?php echo $asset_type_select; ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@
|
|||
<select class="form-control selectpicker show-tick" name="net_terms">
|
||||
<option value="">- Net Terms -</option>
|
||||
<?php foreach($net_terms_array as $net_term_value => $net_term_name) { ?>
|
||||
<option <?php if($net_term_value == $client_net_term) { echo "selected"; } ?> value="<?php echo $net_term_value; ?>"><?php echo $net_term_name; ?></option>
|
||||
<option <?php if($net_term_value == $client_net_terms) { echo "selected"; } ?> value="<?php echo $net_term_value; ?>"><?php echo $net_term_name; ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -7,8 +7,9 @@
|
|||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="post.php" method="post" autocomplete="off">
|
||||
<form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off">
|
||||
<input type="hidden" name="contact_id" value="<?php echo $contact_id; ?>">
|
||||
<input type="hidden" name="current_avatar_path" value="<?php echo $contact_photo; ?>">
|
||||
<div class="modal-body bg-white">
|
||||
<center>
|
||||
<?php if(!empty($contact_photo)){ ?>
|
||||
|
|
@ -59,6 +60,10 @@
|
|||
<input type="email" class="form-control" name="email" placeholder="Email Address" value="<?php echo $contact_email; ?>" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Photo</label>
|
||||
<input type="file" class="form-control-file" name="file">
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer bg-white">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
<div class="modal" id="editInvoiceNoteModal" tabindex="-1">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title"><i class="fa fa-edit"></i> Invoice Note</h5>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="post.php" method="post" autocomplete="off">
|
||||
<input type="hidden" name="invoice_id" value="<?php echo $invoice_id; ?>">
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<textarea class="form-control" rows="8" name="invoice_note"><?php echo $invoice_note; ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
|
||||
<button type="submit" name="edit_invoice_note" class="btn btn-primary">Save</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -23,10 +23,10 @@
|
|||
<script src="vendor/chart.js/Chart.min.js"></script>
|
||||
<script src="vendor/datatables/jquery.dataTables.js"></script>
|
||||
<script src="vendor/datatables/dataTables.bootstrap4.js"></script>
|
||||
<script src="vendor/easy-markdown-editor-2.5.1/dist/easymde.min.js"></script>
|
||||
<script src="vendor/easy-markdown-editor/js/easymde.js"></script>
|
||||
<script src="vendor/Bootstrap-3-Typeahead/bootstrap3-typeahead.min.js"></script>
|
||||
<script src="vendor/moment/min/moment.min.js"></script>
|
||||
<script src="vendor/datepicker/build/js/tempusdominus-bootstrap-4.min.js"></script>
|
||||
<script src="vendor/moment/moment.min.js"></script>
|
||||
<script src="vendor/datepicker/js/tempusdominus-bootstrap-4.min.js"></script>
|
||||
<script src='vendor/fullcalendar/core/main.min.js'></script>
|
||||
<script src='vendor/fullcalendar/bootstrap/main.min.js'></script>
|
||||
<script src='vendor/fullcalendar/daygrid/main.min.js'></script>
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ $config_smtp_port = $row['config_smtp_port'];
|
|||
$config_mail_from_email = $row['config_mail_from_email'];
|
||||
$config_mail_from_name = $row['config_mail_from_name'];
|
||||
$config_account_balance_threshold = $row['config_account_balance_threshold'];
|
||||
$config_invoice_overdue_reminders = $row['config_invoice_overdue_reminders'];
|
||||
$config_invoice_prefix = $row['config_invoice_prefix'];
|
||||
|
||||
$config_quote_email_subject = $row['config_quote_email_subject'];
|
||||
|
||||
|
|
@ -129,19 +131,20 @@ $category_types_array = array(
|
|||
);
|
||||
|
||||
$asset_types_array = array(
|
||||
'Laptop',
|
||||
'Desktop',
|
||||
'Server',
|
||||
'Mobile Phone',
|
||||
'Tablet',
|
||||
'Firewall/Router',
|
||||
'Switch',
|
||||
'Access Point',
|
||||
'Printer',
|
||||
'Camera',
|
||||
'TV',
|
||||
'Virtual Machine',
|
||||
'Other'
|
||||
'Laptop'=>'fa-laptop',
|
||||
'Desktop'=>'fa-desktop',
|
||||
'Server'=>'fa-server',
|
||||
'Phone'=>'fa-phone',
|
||||
'Mobile Phone'=>'fa-mobile-alt',
|
||||
'Tablet'=>'fa-tablet-alt',
|
||||
'Firewall/Router'=>'fa-network-wired',
|
||||
'Switch'=>'fa-network-wired',
|
||||
'Access Point'=>'fa-wifi',
|
||||
'Printer'=>'fa-print',
|
||||
'Camera'=>'fa-video',
|
||||
'TV'=>'fa-tv',
|
||||
'Virtual Machine'=>'fa-cloud',
|
||||
'Other'=>'fa-tag'
|
||||
);
|
||||
|
||||
$software_types_array = array(
|
||||
|
|
|
|||
|
|
@ -1,446 +0,0 @@
|
|||
<?php
|
||||
|
||||
include("config.php");
|
||||
include("functions.php");
|
||||
|
||||
$mpdf_path = (getenv('MPDF_ROOT')) ? getenv('MPDF_ROOT') : __DIR__;
|
||||
require_once $mpdf_path . '/vendor/autoload.php';
|
||||
|
||||
if(isset($_GET['pdf_invoice'], $_GET['url_key'])){
|
||||
|
||||
$invoice_id = intval($_GET['pdf_invoice']);
|
||||
$url_key = $_GET['url_key'];
|
||||
|
||||
$sql = mysqli_query($mysqli,"SELECT * FROM invoices, clients
|
||||
WHERE invoices.client_id = clients.client_id
|
||||
AND invoices.invoice_id = $invoice_id
|
||||
AND invoices.invoice_url_key = '$url_key'"
|
||||
);
|
||||
|
||||
$row = mysqli_fetch_array($sql);
|
||||
$invoice_id = $row['invoice_id'];
|
||||
$invoice_number = $row['invoice_number'];
|
||||
$invoice_status = $row['invoice_status'];
|
||||
$invoice_date = $row['invoice_date'];
|
||||
$invoice_due = $row['invoice_due'];
|
||||
$invoice_amount = $row['invoice_amount'];
|
||||
$invoice_note = $row['invoice_note'];
|
||||
$invoice_category_id = $row['category_id'];
|
||||
$client_id = $row['client_id'];
|
||||
$client_name = $row['client_name'];
|
||||
$client_address = $row['client_address'];
|
||||
$client_city = $row['client_city'];
|
||||
$client_state = $row['client_state'];
|
||||
$client_zip = $row['client_zip'];
|
||||
$client_email = $row['client_email'];
|
||||
$client_phone = $row['client_phone'];
|
||||
if(strlen($client_phone)>2){
|
||||
$client_phone = substr($row['client_phone'],0,3)."-".substr($row['client_phone'],3,3)."-".substr($row['client_phone'],6,4);
|
||||
}
|
||||
$client_website = $row['client_website'];
|
||||
|
||||
if(mysqli_num_rows($sql) == 1){
|
||||
|
||||
//Mark downloaded in history
|
||||
mysqli_query($mysqli,"INSERT INTO history SET history_date = CURDATE(), history_status = '$invoice_status', history_description = 'Invoice downloaded', invoice_id = $invoice_id");
|
||||
|
||||
$sql_payments = mysqli_query($mysqli,"SELECT * FROM payments, accounts WHERE payments.account_id = accounts.account_id AND payments.invoice_id = $invoice_id ORDER BY payments.payment_id DESC");
|
||||
|
||||
//Add up all the payments for the invoice and get the total amount paid to the invoice
|
||||
$sql_amount_paid = mysqli_query($mysqli,"SELECT SUM(payment_amount) AS amount_paid FROM payments WHERE invoice_id = $invoice_id");
|
||||
$row = mysqli_fetch_array($sql_amount_paid);
|
||||
$amount_paid = $row['amount_paid'];
|
||||
|
||||
$balance = $invoice_amount - $amount_paid;
|
||||
|
||||
$sql_items = mysqli_query($mysqli,"SELECT * FROM invoice_items WHERE invoice_id = $invoice_id ORDER BY item_id ASC");
|
||||
|
||||
while($row = mysqli_fetch_array($sql_items)){
|
||||
$item_id = $row['item_id'];
|
||||
$item_name = $row['item_name'];
|
||||
$item_description = $row['item_description'];
|
||||
$item_quantity = $row['item_quantity'];
|
||||
$item_price = $row['item_price'];
|
||||
$item_subtotal = $row['item_price'];
|
||||
$item_tax = $row['item_tax'];
|
||||
$item_total = $row['item_total'];
|
||||
$total_tax = $item_tax + $total_tax;
|
||||
$sub_total = $item_price * $item_quantity + $sub_total;
|
||||
|
||||
$invoice_items .= "
|
||||
<tr>
|
||||
<td align='center'>$item_name</td>
|
||||
<td>$item_description</td>
|
||||
<td align='center'>$item_quantity</td>
|
||||
<td class='cost'>$$item_price</td>
|
||||
<td class='cost'>$$item_tax</td>
|
||||
<td class='cost'>$$item_total</td>
|
||||
</tr>
|
||||
";
|
||||
|
||||
}
|
||||
|
||||
$html = '
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
body {font-family: sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
p { margin: 0pt; }
|
||||
table.items {
|
||||
border: 0.1mm solid #000000;
|
||||
}
|
||||
td { vertical-align: top; }
|
||||
.items td {
|
||||
border-left: 0.1mm solid #000000;
|
||||
border-right: 0.1mm solid #000000;
|
||||
}
|
||||
table thead td { background-color: #EEEEEE;
|
||||
text-align: center;
|
||||
border: 0.1mm solid #000000;
|
||||
font-variant: small-caps;
|
||||
}
|
||||
.items td.blanktotal {
|
||||
background-color: #EEEEEE;
|
||||
border: 0.1mm solid #000000;
|
||||
background-color: #FFFFFF;
|
||||
border: 0mm none #000000;
|
||||
border-top: 0.1mm solid #000000;
|
||||
border-right: 0.1mm solid #000000;
|
||||
}
|
||||
.items td.totals {
|
||||
text-align: right;
|
||||
border: 0.1mm solid #000000;
|
||||
}
|
||||
.items td.cost {
|
||||
text-align: "." center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!--mpdf
|
||||
<htmlpageheader name="myheader">
|
||||
<table width="100%"><tr>
|
||||
<td width="15%"><img width="75" height="75" src=" '.$config_invoice_logo.' "></img></td>
|
||||
<td width="50%"><span style="font-weight: bold; font-size: 14pt;"> '.$config_company_name.' </span><br />' .$config_company_address.' <br /> '.$config_company_city.' '.$config_company_state.' '.$config_company_zip.'<br /> '.$config_company_phone.' </td>
|
||||
<td width="35%" style="text-align: right;">Invoice No.<br /><span style="font-weight: bold; font-size: 12pt;"> INV-'.$invoice_number.' </span></td>
|
||||
</tr></table>
|
||||
</htmlpageheader>
|
||||
<htmlpagefooter name="myfooter">
|
||||
<div style="border-top: 1px solid #000000; font-size: 9pt; text-align: center; padding-top: 3mm; ">
|
||||
Page {PAGENO} of {nb}
|
||||
</div>
|
||||
</htmlpagefooter>
|
||||
<sethtmlpageheader name="myheader" value="on" show-this-page="1" />
|
||||
<sethtmlpagefooter name="myfooter" value="on" />
|
||||
mpdf-->
|
||||
<div style="text-align: right">Date: '.$invoice_date.'</div>
|
||||
<div style="text-align: right">Due: '.$invoice_due.'</div>
|
||||
<table width="100%" style="font-family: serif;" cellpadding="10"><tr>
|
||||
<td width="45%" style="border: 0.1mm solid #888888; "><span style="font-size: 7pt; color: #555555; font-family: sans;">BILL TO:</span><br /><br /><b> '.$client_name.' </b><br />'.$client_address.'<br />'.$client_city.' '.$client_state.' '.$client_zip.' <br /><br> '.$client_email.' <br /> '.$client_phone.'</td>
|
||||
<td width="65%"> </td>
|
||||
|
||||
</tr></table>
|
||||
<br />
|
||||
<table class="items" width="100%" style="font-size: 9pt; border-collapse: collapse; " cellpadding="8">
|
||||
<thead>
|
||||
<tr>
|
||||
<td width="28%">Product</td>
|
||||
<td width="28%">Description</td>
|
||||
<td width="10%">Qty</td>
|
||||
<td width="10%">Price</td>
|
||||
<td width="12%">Tax</td>
|
||||
<td width="12%">Total</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
'.$invoice_items.'
|
||||
<tr>
|
||||
<td class="blanktotal" colspan="4" rowspan="5"><h4>Notes</h4> '.$invoice_note.' </td>
|
||||
<td class="totals">Subtotal:</td>
|
||||
<td class="totals cost">$ '.number_format($sub_total,2).' </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="totals">Tax:</td>
|
||||
<td class="totals cost">$ '.number_format($total_tax,2).' </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="totals">Total:</td>
|
||||
<td class="totals cost">$ '.number_format($invoice_amount,2).' </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="totals">Paid:</td>
|
||||
<td class="totals cost">$ '.number_format($amount_paid,2).' </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="totals"><b>Balance:</b></td>
|
||||
<td class="totals cost"><b>$ '.number_format($balance,2).' </b></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div style="text-align: center; font-style: italic;"> '.$config_invoice_footer.' </div>
|
||||
</body>
|
||||
</html>
|
||||
';
|
||||
|
||||
$mpdf = new \Mpdf\Mpdf([
|
||||
'margin_left' => 5,
|
||||
'margin_right' => 5,
|
||||
'margin_top' => 48,
|
||||
'margin_bottom' => 25,
|
||||
'margin_header' => 10,
|
||||
'margin_footer' => 10
|
||||
]);
|
||||
|
||||
$mpdf->SetProtection(array('print'));
|
||||
$mpdf->SetTitle("$config_company_name - Invoice");
|
||||
$mpdf->SetAuthor("$config_company_name");
|
||||
if($invoice_status == 'Paid'){
|
||||
$mpdf->SetWatermarkText("Paid");
|
||||
}
|
||||
$mpdf->showWatermarkText = true;
|
||||
$mpdf->watermark_font = 'DejaVuSansCondensed';
|
||||
$mpdf->watermarkTextAlpha = 0.1;
|
||||
$mpdf->SetDisplayMode('fullpage');
|
||||
$mpdf->WriteHTML($html);
|
||||
$mpdf->Output("$invoice_date-$config_company_name-Invoice$invoice_number.pdf",'D');
|
||||
|
||||
}else{
|
||||
echo "GTFO!!!";
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_GET['pdf_quote'], $_GET['url_key'])){
|
||||
|
||||
$quote_id = intval($_GET['pdf_quote']);
|
||||
$url_key = $_GET['url_key'];
|
||||
|
||||
$sql = mysqli_query($mysqli,"SELECT * FROM quotes, clients
|
||||
WHERE quotes.client_id = clients.client_id
|
||||
AND quotes.quote_id = $quote_id
|
||||
AND quotes.quote_url_key = '$url_key'"
|
||||
);
|
||||
|
||||
$row = mysqli_fetch_array($sql);
|
||||
$quote_id = $row['quote_id'];
|
||||
$quote_number = $row['quote_number'];
|
||||
$quote_status = $row['quote_status'];
|
||||
$quote_date = $row['quote_date'];
|
||||
$quote_amount = $row['quote_amount'];
|
||||
$quote_note = $row['quote_note'];
|
||||
$quote_url_key = $row['quote_url_key'];
|
||||
$client_id = $row['client_id'];
|
||||
$client_name = $row['client_name'];
|
||||
$client_address = $row['client_address'];
|
||||
$client_city = $row['client_city'];
|
||||
$client_state = $row['client_state'];
|
||||
$client_zip = $row['client_zip'];
|
||||
$client_email = $row['client_email'];
|
||||
$client_phone = $row['client_phone'];
|
||||
if(strlen($client_phone)>2){
|
||||
$client_phone = substr($row['client_phone'],0,3)."-".substr($row['client_phone'],3,3)."-".substr($row['client_phone'],6,4);
|
||||
}
|
||||
$client_website = $row['client_website'];
|
||||
|
||||
if(mysqli_num_rows($sql) == 1){
|
||||
|
||||
$sql_items = mysqli_query($mysqli,"SELECT * FROM invoice_items WHERE quote_id = $quote_id ORDER BY item_id ASC");
|
||||
|
||||
while($row = mysqli_fetch_array($sql_items)){
|
||||
$item_id = $row['item_id'];
|
||||
$item_name = $row['item_name'];
|
||||
$item_description = $row['item_description'];
|
||||
$item_quantity = $row['item_quantity'];
|
||||
$item_price = $row['item_price'];
|
||||
$item_subtotal = $row['item_price'];
|
||||
$item_tax = $row['item_tax'];
|
||||
$item_total = $row['item_total'];
|
||||
$total_tax = $item_tax + $total_tax;
|
||||
$sub_total = $item_price * $item_quantity + $sub_total;
|
||||
|
||||
|
||||
$items .= "
|
||||
<tr>
|
||||
<td align='center'>$item_name</td>
|
||||
<td>$item_description</td>
|
||||
<td align='center'>$item_quantity</td>
|
||||
<td class='cost'>$$item_price</td>
|
||||
<td class='cost'>$$item_tax</td>
|
||||
<td class='cost'>$$item_total</td>
|
||||
</tr>
|
||||
";
|
||||
|
||||
}
|
||||
|
||||
$html = '
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
body {font-family: sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
p { margin: 0pt; }
|
||||
table.items {
|
||||
border: 0.1mm solid #000000;
|
||||
}
|
||||
td { vertical-align: top; }
|
||||
.items td {
|
||||
border-left: 0.1mm solid #000000;
|
||||
border-right: 0.1mm solid #000000;
|
||||
}
|
||||
table thead td { background-color: #EEEEEE;
|
||||
text-align: center;
|
||||
border: 0.1mm solid #000000;
|
||||
font-variant: small-caps;
|
||||
}
|
||||
.items td.blanktotal {
|
||||
background-color: #EEEEEE;
|
||||
border: 0.1mm solid #000000;
|
||||
background-color: #FFFFFF;
|
||||
border: 0mm none #000000;
|
||||
border-top: 0.1mm solid #000000;
|
||||
border-right: 0.1mm solid #000000;
|
||||
}
|
||||
.items td.totals {
|
||||
text-align: right;
|
||||
border: 0.1mm solid #000000;
|
||||
}
|
||||
.items td.cost {
|
||||
text-align: "." center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!--mpdf
|
||||
<htmlpageheader name="myheader">
|
||||
<table width="100%"><tr>
|
||||
<td width="15%"><img width="75" height="75" src=" '.$config_invoice_logo.' "></img></td>
|
||||
<td width="50%"><span style="font-weight: bold; font-size: 14pt;"> '.$config_company_name.' </span><br />' .$config_company_address.' <br /> '.$config_company_city.' '.$config_company_state.' '.$config_company_zip.'<br /> '.$config_company_phone.' </td>
|
||||
<td width="35%" style="text-align: right;">Quote No.<br /><span style="font-weight: bold; font-size: 12pt;"> QUO-'.$quote_number.' </span></td>
|
||||
</tr></table>
|
||||
</htmlpageheader>
|
||||
<htmlpagefooter name="myfooter">
|
||||
<div style="border-top: 1px solid #000000; font-size: 9pt; text-align: center; padding-top: 3mm; ">
|
||||
Page {PAGENO} of {nb}
|
||||
</div>
|
||||
</htmlpagefooter>
|
||||
<sethtmlpageheader name="myheader" value="on" show-this-page="1" />
|
||||
<sethtmlpagefooter name="myfooter" value="on" />
|
||||
mpdf-->
|
||||
<div style="text-align: right">Date: '.$quote_date.'</div>
|
||||
<table width="100%" style="font-family: serif;" cellpadding="10"><tr>
|
||||
<td width="45%" style="border: 0.1mm solid #888888; "><span style="font-size: 7pt; color: #555555; font-family: sans;">TO:</span><br /><br /><b> '.$client_name.' </b><br />'.$client_address.'<br />'.$client_city.' '.$client_state.' '.$client_zip.' <br /><br> '.$client_email.' <br /> '.$client_phone.'</td>
|
||||
<td width="65%"> </td>
|
||||
|
||||
</tr></table>
|
||||
<br />
|
||||
<table class="items" width="100%" style="font-size: 9pt; border-collapse: collapse; " cellpadding="8">
|
||||
<thead>
|
||||
<tr>
|
||||
<td width="28%">Product</td>
|
||||
<td width="28%">Description</td>
|
||||
<td width="10%">Qty</td>
|
||||
<td width="10%">Price</td>
|
||||
<td width="12%">Tax</td>
|
||||
<td width="12%">Total</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
'.$items.'
|
||||
<tr>
|
||||
<td class="blanktotal" colspan="4" rowspan="3"><h4>Notes</h4> '.$quote_note.' </td>
|
||||
<td class="totals">Subtotal:</td>
|
||||
<td class="totals cost">$ '.number_format($sub_total,2).' </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="totals">Tax:</td>
|
||||
<td class="totals cost">$ '.number_format($total_tax,2).' </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="totals">Total:</td>
|
||||
<td class="totals cost">$ '.number_format($quote_amount,2).' </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div style="text-align: center; font-style: italic;"> '.$config_quote_footer.' </div>
|
||||
</body>
|
||||
</html>
|
||||
';
|
||||
|
||||
$mpdf = new \Mpdf\Mpdf([
|
||||
'margin_left' => 5,
|
||||
'margin_right' => 5,
|
||||
'margin_top' => 48,
|
||||
'margin_bottom' => 25,
|
||||
'margin_header' => 10,
|
||||
'margin_footer' => 10
|
||||
]);
|
||||
$mpdf->SetProtection(array('print'));
|
||||
$mpdf->SetTitle("$config_company_name - Quote");
|
||||
$mpdf->SetAuthor("$config_company_name");
|
||||
$mpdf->SetWatermarkText("Quote");
|
||||
$mpdf->showWatermarkText = true;
|
||||
$mpdf->watermark_font = 'DejaVuSansCondensed';
|
||||
$mpdf->watermarkTextAlpha = 0.1;
|
||||
$mpdf->SetDisplayMode('fullpage');
|
||||
$mpdf->WriteHTML($html);
|
||||
$mpdf->Output("$quote_date-$config_company_name-Quote$quote_number.pdf",'D');
|
||||
|
||||
}else{
|
||||
echo "GTFO!!!";
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_GET['approve_quote'], $_GET['url_key'])){
|
||||
|
||||
$quote_id = intval($_GET['approve_quote']);
|
||||
$url_key = $_GET['url_key'];
|
||||
|
||||
$sql = mysqli_query($mysqli,"SELECT * FROM quotes
|
||||
WHERE quotes.quote_id = $quote_id
|
||||
AND quotes.quote_url_key = '$url_key'"
|
||||
);
|
||||
|
||||
if(mysqli_num_rows($sql) == 1){
|
||||
|
||||
|
||||
mysqli_query($mysqli,"UPDATE quotes SET quote_status = 'Approved' WHERE quote_id = $quote_id");
|
||||
|
||||
mysqli_query($mysqli,"INSERT INTO history SET history_date = CURDATE(), history_status = 'Approved', history_description = 'Client approved Quote!', quote_id = $quote_id");
|
||||
|
||||
$_SESSION['alert_message'] = "Quote approved";
|
||||
|
||||
header("Location: " . $_SERVER["HTTP_REFERER"]);
|
||||
}else{
|
||||
echo "GTFO!!";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(isset($_GET['reject_quote'], $_GET['url_key'])){
|
||||
|
||||
$quote_id = intval($_GET['reject_quote']);
|
||||
$url_key = $_GET['url_key'];
|
||||
|
||||
$sql = mysqli_query($mysqli,"SELECT * FROM quotes
|
||||
WHERE quotes.quote_id = $quote_id
|
||||
AND quotes.quote_url_key = '$url_key'"
|
||||
);
|
||||
|
||||
if(mysqli_num_rows($sql) == 1){
|
||||
|
||||
mysqli_query($mysqli,"UPDATE quotes SET quote_status = 'Rejected' WHERE quote_id = $quote_id");
|
||||
|
||||
mysqli_query($mysqli,"INSERT INTO history SET history_date = CURDATE(), history_status = 'Rejected', history_description = 'Client rejected Quote!', quote_id = $quote_id");
|
||||
|
||||
$_SESSION['alert_message'] = "Quote rejected";
|
||||
|
||||
header("Location: " . $_SERVER["HTTP_REFERER"]);
|
||||
}else{
|
||||
echo "GTFO!!";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
<title><?php echo $config_company_name; ?></title>
|
||||
|
||||
<link href="vendor/easy-markdown-editor-2.5.1/dist/easymde.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="vendor/easy-markdown-editor/css/easymde.min.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Page level plugin CSS-->
|
||||
<link href="vendor/datatables/dataTables.bootstrap4.css" rel="stylesheet" type="text/css">
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
<!-- Custom styles for this template-->
|
||||
<link href="css/sb-admin.css" rel="stylesheet" type="text/css">
|
||||
<link href="vendor/datepicker/build/css/tempusdominus-bootstrap-4.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="vendor/datepicker/css/tempusdominus-bootstrap-4.min.css" rel="stylesheet" type="text/css">
|
||||
|
||||
|
||||
<!-- Custom Style Sheet -->
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><AddressBook>
|
||||
<Contact>
|
||||
|
||||
<LastName>PittPC</LastName>
|
||||
|
||||
<Phone>
|
||||
|
||||
<phonenumber>4125009434</phonenumber>
|
||||
|
||||
</Phone>
|
||||
|
||||
</Contact>
|
||||
<Contact>
|
||||
|
||||
<LastName>Matts Accounting Firm</LastName>
|
||||
|
||||
<Phone>
|
||||
|
||||
<phonenumber>4127716047</phonenumber>
|
||||
|
||||
</Phone>
|
||||
|
||||
</Contact>
|
||||
<Contact>
|
||||
|
||||
<LastName>poop</LastName>
|
||||
|
||||
<Phone>
|
||||
|
||||
<phonenumber>4443332222</phonenumber>
|
||||
|
||||
</Phone>
|
||||
|
||||
</Contact>
|
||||
</AddressBook>
|
||||
BIN
pittpc.tar.gz
15
post.php
|
|
@ -60,13 +60,15 @@ if(isset($_POST['edit_mail_settings'])){
|
|||
|
||||
if(isset($_POST['edit_invoice_settings'])){
|
||||
|
||||
$config_invoice_prefix = strip_tags(mysqli_real_escape_string($mysqli,$_POST['config_invoice_prefix']));
|
||||
$config_next_invoice_number = intval($_POST['config_next_invoice_number']);
|
||||
$config_mail_from_email = strip_tags(mysqli_real_escape_string($mysqli,$_POST['config_mail_from_email']));
|
||||
$config_mail_from_name = strip_tags(mysqli_real_escape_string($mysqli,$_POST['config_mail_from_name']));
|
||||
$config_invoice_footer = strip_tags(mysqli_real_escape_string($mysqli,$_POST['config_invoice_footer']));
|
||||
$config_quote_footer = strip_tags(mysqli_real_escape_string($mysqli,$_POST['config_quote_footer']));
|
||||
$config_invoice_overdue_reminders = strip_tags(mysqli_real_escape_string($mysqli,$_POST['config_invoice_overdue_reminders']));
|
||||
|
||||
mysqli_query($mysqli,"UPDATE settings SET config_next_invoice_number = '$config_next_invoice_number', config_mail_from_email = '$config_mail_from_email', config_mail_from_name = '$config_mail_from_name', config_invoice_footer = '$config_invoice_footer', config_quote_footer = '$config_quote_footer'");
|
||||
mysqli_query($mysqli,"UPDATE settings SET config_invoice_prefix = '$config_invoice_prefix', config_next_invoice_number = $config_next_invoice_number, config_mail_from_email = '$config_mail_from_email', config_mail_from_name = '$config_mail_from_name', config_invoice_footer = '$config_invoice_footer', config_invoice_overdue_reminders = '$config_invoice_overdue_reminders', config_quote_footer = '$config_quote_footer'");
|
||||
|
||||
header("Location: " . $_SERVER["HTTP_REFERER"]);
|
||||
|
||||
|
|
@ -2149,7 +2151,16 @@ if(isset($_POST['edit_contact'])){
|
|||
$phone = preg_replace("/[^0-9]/", '',$phone);
|
||||
$email = strip_tags(mysqli_real_escape_string($mysqli,$_POST['email']));
|
||||
|
||||
mysqli_query($mysqli,"UPDATE contacts SET contact_name = '$name', contact_title = '$title', contact_phone = '$phone', contact_email = '$email', contact_updated_at = NOW() WHERE contact_id = $contact_id");
|
||||
$path = strip_tags(mysqli_real_escape_string($mysqli,$_POST['current_avatar_path']));
|
||||
|
||||
if($_FILES['file']['tmp_name']!='') {
|
||||
$path = "uploads/clients/$client_id/";
|
||||
$path = $path . time() . basename( $_FILES['file']['name']);
|
||||
$file_name = basename($path);
|
||||
move_uploaded_file($_FILES['file']['tmp_name'], $path);
|
||||
}
|
||||
|
||||
mysqli_query($mysqli,"UPDATE contacts SET contact_name = '$name', contact_title = '$title', contact_phone = '$phone', contact_email = '$email', contact_photo = '$path', contact_updated_at = NOW() WHERE contact_id = $contact_id");
|
||||
|
||||
$_SESSION['alert_message'] = "Contact updated";
|
||||
|
||||
|
|
|
|||
|
|
@ -15,12 +15,12 @@
|
|||
<span class="input-group-text"><i class="fa fa-fw fa-plane-arrival"></i></span>
|
||||
</div>
|
||||
<select class="form-control selectpicker show-tick" name="config_start_page" required>
|
||||
<option value="dashboard.php">Dashboard</option>
|
||||
<option value="clients.php">Clients</option>
|
||||
<option value="invoices.php">Invoices</option>
|
||||
<option value="expenses.php">Expenses</option>
|
||||
<option value="calendar_events.php">Calendar</option>
|
||||
<option value="tickets.php">Tickets</option>
|
||||
<option <?php if($config_start_page == 'dashboard.php'){ echo 'selected'; } ?> value="dashboard.php">Dashboard</option>
|
||||
<option <?php if($config_start_page == 'clients.php'){ echo 'selected'; } ?> value="clients.php">Clients</option>
|
||||
<option <?php if($config_start_page == 'invoices.php'){ echo 'selected'; } ?> value="invoices.php">Invoices</option>
|
||||
<option <?php if($config_start_page == 'expenses.php'){ echo 'selected'; } ?> value="expenses.php">Expenses</option>
|
||||
<option <?php if($config_start_page == 'calendar_events.php'){ echo 'selected'; } ?> value="calendar_events.php">Calendar</option>
|
||||
<option <?php if($config_start_page == 'tickets.php'){ echo 'selected'; } ?> value="tickets.php">Tickets</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -9,13 +9,34 @@
|
|||
<div class="card-body">
|
||||
<form class="p-3" action="post.php" method="post" autocomplete="off">
|
||||
|
||||
<div class="form-group">
|
||||
<label>Invoice Prefix</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span>
|
||||
</div>
|
||||
<input type="text" class="form-control" name="config_invoice_prefix" placeholder="Invoice Prefix" value="<?php echo $config_invoice_prefix; ?>" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>Next Number</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span>
|
||||
</div>
|
||||
<input type="text" class="form-control" name="config_next_invoice_number" placeholder="Next Invoice Number" value="<?php echo $config_next_invoice_number; ?>" required autofocus>
|
||||
<input type="text" class="form-control" name="config_next_invoice_number" placeholder="Next Invoice Number" value="<?php echo $config_next_invoice_number; ?>" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Overdue Reminders</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span>
|
||||
</div>
|
||||
<input type="text" class="form-control" name="config_invoice_overdue_reminders" placeholder="Send After Due Days" value="<?php echo $config_invoice_overdue_reminders; ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -25,7 +46,7 @@
|
|||
<div class="input-group-prepend">
|
||||
<span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span>
|
||||
</div>
|
||||
<input type="email" class="form-control" name="config_mail_from_email" placeholder="Email Address" value="<?php echo $config_mail_from_email; ?>" required>
|
||||
<input type="email" class="form-control" name="config_mail_from_email" placeholder="Email Address" value="<?php echo $config_mail_from_email; ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -35,11 +56,11 @@
|
|||
<div class="input-group-prepend">
|
||||
<span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
|
||||
</div>
|
||||
<input type="text" class="form-control" name="config_mail_from_name" placeholder="Name" value="<?php echo $config_mail_from_name; ?>" required>
|
||||
<input type="text" class="form-control" name="config_mail_from_name" placeholder="Name" value="<?php echo $config_mail_from_name; ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group mb-5">
|
||||
<div class="form-group">
|
||||
<label>Invoice Footer</label>
|
||||
<textarea class="form-control" rows="4" name="config_invoice_footer"><?php echo $config_invoice_footer; ?></textarea>
|
||||
</div>
|
||||
|
|
|
|||
15
setup.php
|
|
@ -1,5 +1,7 @@
|
|||
<?php
|
||||
|
||||
include("functions.php");
|
||||
|
||||
if(isset($_POST['add_database'])){
|
||||
|
||||
$host = $_POST['host'];
|
||||
|
|
@ -111,8 +113,9 @@ if(isset($_POST['add_company_settings'])){
|
|||
$config_company_zip = strip_tags(mysqli_real_escape_string($mysqli,$_POST['config_company_zip']));
|
||||
$config_company_phone = strip_tags(mysqli_real_escape_string($mysqli,$_POST['config_company_phone']));
|
||||
$config_company_site = strip_tags(mysqli_real_escape_string($mysqli,$_POST['config_company_site']));
|
||||
$config_api_key = keygen();
|
||||
|
||||
mysqli_query($mysqli,"INSERT INTO settings SET config_company_name = '$config_company_name', config_company_address = '$config_company_address', config_company_city = '$config_company_city', config_company_state = '$config_company_state', config_company_zip = '$config_company_zip', config_company_phone = '$config_company_phone', config_company_site = '$config_company_site', config_start_page = 'dashboard.php'");
|
||||
mysqli_query($mysqli,"INSERT INTO settings SET config_company_name = '$config_company_name', config_company_address = '$config_company_address', config_company_city = '$config_company_city', config_company_state = '$config_company_state', config_company_zip = '$config_company_zip', config_company_phone = '$config_company_phone', config_company_site = '$config_company_site', config_start_page = 'dashboard.php', config_invoice_prefix = 'INV-', config_next_invoice_number = 1, config_invoice_overdue_reminders = '1,3,7', config_api_key = '$config_api_key', config_recurring_auto_send_invoice = 1, config_default_net_terms = 7, config_send_invoice_reminders = 0");
|
||||
|
||||
header("Location: login.php");
|
||||
|
||||
|
|
@ -375,20 +378,20 @@ if(isset($_POST['add_company_settings'])){
|
|||
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<h6 class="mt-1"><i class="fa fa-database"></i> Start Install <?php echo $database; ?></h6>
|
||||
<h6 class="mt-1"><i class="fa fa-download"></i> Start Install <?php echo $database; ?></h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>Click on the install button to start the install process, you must create a database before starting</p>
|
||||
<p>Click on the install button to start the install process, you must create a database before proceeding</p>
|
||||
<p>This process will accomplish the following</p>
|
||||
<ul class="mb-4">
|
||||
<li>Create a config.php</li>
|
||||
<li>Creates the following expense cataegories (Office Supplies, Advertising, Travel)</li>
|
||||
<li>Created the following payment methods (Cash, Check)</li>
|
||||
<li>Creates the following payment methods (Cash, Check)</li>
|
||||
<li>Creates an account named Cash</li>
|
||||
<li>Creates an income
|
||||
<li>Creates an income category</li>
|
||||
</ul>
|
||||
<p>After install add cron.php to your cron and set it to run once everyday at 12AM. This is so recurring invoices will automatically be sent out and created. This will also trigger late payment reminders, along with alerts such as domains expiration, etc.</p>
|
||||
<p>An API is present to allow integration with other third pary apps. To activate the API you must enter an api key under settings. The API will give you the following capabilities</p>
|
||||
<p>An API is present to allow integration with other third pary apps. An API Key will be auto generated, and can be changed at a later date. The API will give you the following capabilities</p>
|
||||
<ul class="mb-4">
|
||||
<li>Address book XML for VOIP Phones</li>
|
||||
<li>Caller ID Lookup</li>
|
||||
|
|
|
|||
|
|
@ -1,21 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2017 Javi Aguilar
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
@ -1,127 +0,0 @@
|
|||
<a class="readme-logo" href="https://farbelous.io/bootstrap-colorpicker">
|
||||
<img alt="Logo by @reallinfo" src="logo.png" width="128px" />
|
||||
</a>
|
||||
|
||||
# Bootstrap Colorpicker
|
||||
|
||||
<!--version-->
|
||||
|
||||
[Bootstrap Colorpicker](https://github.com/farbelous/bootstrap-colorpicker/) is a modular color picker plugin for Bootstrap 4.
|
||||
|
||||
[](https://travis-ci.org/farbelous/bootstrap-colorpicker)
|
||||
[](https://www.npmjs.com/package/bootstrap-colorpicker)
|
||||
|
||||
## Install
|
||||
You can get the latest version in many different ways:
|
||||
|
||||
- Downloading [a ZIP file from the releases](https://github.com/farbelous/bootstrap-colorpicker/releases)
|
||||
- Cloning using Git: `git clone https://github.com/farbelous/bootstrap-colorpicker.git`
|
||||
- Installing via NPM: `npm install bootstrap-colorpicker`
|
||||
- Installing via Yarn: `yarn add bootstrap-colorpicker`
|
||||
- Installing via Composer: `composer require itsjavi/bootstrap-colorpicker`
|
||||
|
||||
Note that the `dist` files are only distributed via the NPM and Yarn installations.
|
||||
|
||||
For the rest methods, you will need to generate the files initializing the project with `yarn install`
|
||||
and then building the code using `npm run build`.
|
||||
|
||||
## Versions
|
||||
|
||||
<table class="table table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Colorpicker version</th>
|
||||
<th>Compatible Bootstrap version</th>
|
||||
<th>Dependencies</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="https://github.com/farbelous/bootstrap-colorpicker/tree/v2.x">v2.x</a> <br>
|
||||
<a href="https://farbelous.github.io/bootstrap-colorpicker/v2">Documentation</a>
|
||||
</td>
|
||||
<td>(any)</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>jQuery >= 1.10</li>
|
||||
<li>Bootstrap CSS (input addon)</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="https://github.com/farbelous/bootstrap-colorpicker">v3.x</a> <br>
|
||||
<a href="https://farbelous.github.io/bootstrap-colorpicker">Documentation</a>
|
||||
</td>
|
||||
<td>Bootstrap 4</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>jQuery >= 2.1.0</li>
|
||||
<li>Bootstrap CSS (input addon, popover)</li>
|
||||
<li>Bootstrap JS Bundle (popover)</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
|
||||
|
||||
Note that the plugin may work without Bootstrap if your code is not using any of the mentioned Bootstrap
|
||||
dependencies.
|
||||
|
||||
|
||||
## Basic example
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link href="//cdn.rawgit.com/twbs/bootstrap/v4.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="dist/css/bootstrap-colorpicker.css" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<div class="jumbotron">
|
||||
<h1>Bootstrap Colorpicker Demo</h1>
|
||||
<input id="demo" type="text" class="form-control" value="rgb(255, 128, 0)" />
|
||||
</div>
|
||||
<script src="//code.jquery.com/jquery-3.3.1.js"></script>
|
||||
<script src="//cdn.rawgit.com/twbs/bootstrap/v4.1.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="dist/js/bootstrap-colorpicker.js"></script>
|
||||
<script>
|
||||
$(function () {
|
||||
// Basic instantiation:
|
||||
$('#demo').colorpicker();
|
||||
|
||||
// Example using an event, to change the color of the .jumbotron background:
|
||||
$('#demo').on('colorpickerChange', function(event) {
|
||||
$('.jumbotron').css('background-color', event.color.toString());
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
```
|
||||
|
||||
## Contributions
|
||||
* [Issues](https://github.com/farbelous/bootstrap-colorpicker/issues)
|
||||
* [Pull Requests](https://github.com/farbelous/bootstrap-colorpicker/pulls)
|
||||
* [Milestones](https://github.com/farbelous/bootstrap-colorpicker/milestones)
|
||||
* [Planned Features](https://github.com/farbelous/bootstrap-colorpicker/projects)
|
||||
|
||||
This project exists thanks to all the [people who contribute](https://github.com/farbelous/bootstrap-colorpicker/graphs/contributors).
|
||||
|
||||
Please read [CONTRIBUTING](https://github.com/farbelous/bootstrap-colorpicker/blob/master/.github/CONTRIBUTING.md)
|
||||
before sending a pull request or issue.
|
||||
|
||||
## License
|
||||
The MIT License (MIT).
|
||||
Please see the [License File](https://github.com/farbelous/bootstrap-colorpicker/blob/master/LICENSE) for more information.
|
||||
|
||||
## Credits
|
||||
|
||||
Written and maintained by [Javi Aguilar](https://itsjavi.com) and all other contributors.
|
||||
|
||||
*Based on Stefan Petre's color picker (2013).*
|
||||
|
||||
*Thanks to JetBrains for supporting this project.*
|
||||
|
|
@ -1,399 +0,0 @@
|
|||
/*!
|
||||
* Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.
|
||||
* @package bootstrap-colorpicker
|
||||
* @version v3.1.2
|
||||
* @license MIT
|
||||
* @link https://farbelous.github.io/bootstrap-colorpicker/
|
||||
* @link https://github.com/farbelous/bootstrap-colorpicker.git
|
||||
*/
|
||||
.colorpicker {
|
||||
position: relative;
|
||||
display: none;
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
text-align: left;
|
||||
list-style: none;
|
||||
background-color: #ffffff;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
padding: .75rem .75rem;
|
||||
width: 148px;
|
||||
border-radius: 4px;
|
||||
-webkit-box-sizing: content-box;
|
||||
box-sizing: content-box; }
|
||||
|
||||
.colorpicker.colorpicker-disabled,
|
||||
.colorpicker.colorpicker-disabled * {
|
||||
cursor: default !important; }
|
||||
|
||||
.colorpicker div {
|
||||
position: relative; }
|
||||
|
||||
.colorpicker-popup {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
float: left;
|
||||
margin-top: 1px;
|
||||
z-index: 1060; }
|
||||
|
||||
.colorpicker-popup.colorpicker-bs-popover-content {
|
||||
position: relative;
|
||||
top: auto;
|
||||
left: auto;
|
||||
float: none;
|
||||
margin: 0;
|
||||
z-index: initial;
|
||||
border: none;
|
||||
padding: 0.25rem 0;
|
||||
border-radius: 0;
|
||||
background: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none; }
|
||||
|
||||
.colorpicker:before,
|
||||
.colorpicker:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
line-height: 0; }
|
||||
|
||||
.colorpicker-clear {
|
||||
clear: both;
|
||||
display: block; }
|
||||
|
||||
.colorpicker:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
top: -7px;
|
||||
left: auto;
|
||||
right: 6px; }
|
||||
|
||||
.colorpicker:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #ffffff;
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
left: auto;
|
||||
right: 7px; }
|
||||
|
||||
.colorpicker.colorpicker-with-alpha {
|
||||
width: 170px; }
|
||||
|
||||
.colorpicker.colorpicker-with-alpha .colorpicker-alpha {
|
||||
display: block; }
|
||||
|
||||
.colorpicker-saturation {
|
||||
position: relative;
|
||||
width: 126px;
|
||||
height: 126px;
|
||||
/* FF3.6+ */
|
||||
/* Chrome,Safari4+ */
|
||||
/* Chrome10+,Safari5.1+ */
|
||||
/* Opera 11.10+ */
|
||||
/* IE10+ */
|
||||
background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(black)), -webkit-gradient(linear, left top, right top, from(white), to(rgba(255, 255, 255, 0)));
|
||||
background: linear-gradient(to bottom, transparent 0%, black 100%), linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%);
|
||||
/* W3C */
|
||||
cursor: crosshair;
|
||||
float: left;
|
||||
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
||||
margin-bottom: 6px; }
|
||||
.colorpicker-saturation .colorpicker-guide {
|
||||
display: block;
|
||||
height: 6px;
|
||||
width: 6px;
|
||||
border-radius: 6px;
|
||||
border: 1px solid #000;
|
||||
-webkit-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);
|
||||
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
margin: -3px 0 0 -3px; }
|
||||
|
||||
.colorpicker-hue,
|
||||
.colorpicker-alpha {
|
||||
position: relative;
|
||||
width: 16px;
|
||||
height: 126px;
|
||||
float: left;
|
||||
cursor: row-resize;
|
||||
margin-left: 6px;
|
||||
margin-bottom: 6px; }
|
||||
|
||||
.colorpicker-alpha-color {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%; }
|
||||
|
||||
.colorpicker-hue,
|
||||
.colorpicker-alpha-color {
|
||||
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }
|
||||
|
||||
.colorpicker-hue .colorpicker-guide,
|
||||
.colorpicker-alpha .colorpicker-guide {
|
||||
display: block;
|
||||
height: 4px;
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
border: 1px solid rgba(0, 0, 0, 0.4);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
margin-left: -2px;
|
||||
margin-top: -2px;
|
||||
right: -2px;
|
||||
z-index: 1; }
|
||||
|
||||
.colorpicker-hue {
|
||||
/* FF3.6+ */
|
||||
/* Chrome,Safari4+ */
|
||||
/* Chrome10+,Safari5.1+ */
|
||||
/* Opera 11.10+ */
|
||||
/* IE10+ */
|
||||
background: -webkit-gradient(linear, left bottom, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));
|
||||
background: linear-gradient(to top, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);
|
||||
/* W3C */ }
|
||||
|
||||
.colorpicker-alpha {
|
||||
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
||||
background-size: 10px 10px;
|
||||
background-position: 0 0, 5px 5px;
|
||||
display: none; }
|
||||
|
||||
.colorpicker-bar {
|
||||
min-height: 16px;
|
||||
margin: 6px 0 0 0;
|
||||
clear: both;
|
||||
text-align: center;
|
||||
font-size: 10px;
|
||||
line-height: normal;
|
||||
max-width: 100%;
|
||||
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }
|
||||
.colorpicker-bar:before {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both; }
|
||||
|
||||
.colorpicker-bar.colorpicker-bar-horizontal {
|
||||
height: 126px;
|
||||
width: 16px;
|
||||
margin: 0 0 6px 0;
|
||||
float: left; }
|
||||
|
||||
.colorpicker-input-addon {
|
||||
position: relative; }
|
||||
|
||||
.colorpicker-input-addon i {
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
vertical-align: text-top;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
position: relative; }
|
||||
|
||||
.colorpicker-input-addon:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
display: inline-block;
|
||||
vertical-align: text-top;
|
||||
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
||||
background-size: 10px 10px;
|
||||
background-position: 0 0, 5px 5px; }
|
||||
|
||||
.colorpicker.colorpicker-inline {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
float: none;
|
||||
z-index: auto;
|
||||
vertical-align: text-bottom; }
|
||||
|
||||
.colorpicker.colorpicker-horizontal {
|
||||
width: 126px;
|
||||
height: auto; }
|
||||
|
||||
.colorpicker.colorpicker-horizontal .colorpicker-bar {
|
||||
width: 126px; }
|
||||
|
||||
.colorpicker.colorpicker-horizontal .colorpicker-saturation {
|
||||
float: none;
|
||||
margin-bottom: 0; }
|
||||
|
||||
.colorpicker.colorpicker-horizontal .colorpicker-hue,
|
||||
.colorpicker.colorpicker-horizontal .colorpicker-alpha {
|
||||
float: none;
|
||||
width: 126px;
|
||||
height: 16px;
|
||||
cursor: col-resize;
|
||||
margin-left: 0;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 0; }
|
||||
|
||||
.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide,
|
||||
.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide {
|
||||
position: absolute;
|
||||
display: block;
|
||||
bottom: -2px;
|
||||
left: 0;
|
||||
right: auto;
|
||||
height: auto;
|
||||
width: 4px; }
|
||||
|
||||
.colorpicker.colorpicker-horizontal .colorpicker-hue {
|
||||
/* FF3.6+ */
|
||||
/* Chrome,Safari4+ */
|
||||
/* Chrome10+,Safari5.1+ */
|
||||
/* Opera 11.10+ */
|
||||
/* IE10+ */
|
||||
background: -webkit-gradient(linear, right top, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));
|
||||
background: linear-gradient(to left, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);
|
||||
/* W3C */ }
|
||||
|
||||
.colorpicker.colorpicker-horizontal .colorpicker-alpha {
|
||||
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
||||
background-size: 10px 10px;
|
||||
background-position: 0 0, 5px 5px; }
|
||||
|
||||
.colorpicker-inline:before,
|
||||
.colorpicker-no-arrow:before,
|
||||
.colorpicker-popup.colorpicker-bs-popover-content:before {
|
||||
content: none;
|
||||
display: none; }
|
||||
|
||||
.colorpicker-inline:after,
|
||||
.colorpicker-no-arrow:after,
|
||||
.colorpicker-popup.colorpicker-bs-popover-content:after {
|
||||
content: none;
|
||||
display: none; }
|
||||
|
||||
.colorpicker-alpha,
|
||||
.colorpicker-saturation,
|
||||
.colorpicker-hue {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none; }
|
||||
|
||||
.colorpicker.colorpicker-visible,
|
||||
.colorpicker-alpha.colorpicker-visible,
|
||||
.colorpicker-saturation.colorpicker-visible,
|
||||
.colorpicker-hue.colorpicker-visible,
|
||||
.colorpicker-bar.colorpicker-visible {
|
||||
display: block; }
|
||||
|
||||
.colorpicker.colorpicker-hidden,
|
||||
.colorpicker-alpha.colorpicker-hidden,
|
||||
.colorpicker-saturation.colorpicker-hidden,
|
||||
.colorpicker-hue.colorpicker-hidden,
|
||||
.colorpicker-bar.colorpicker-hidden {
|
||||
display: none; }
|
||||
|
||||
.colorpicker-inline.colorpicker-visible {
|
||||
display: inline-block; }
|
||||
|
||||
.colorpicker.colorpicker-disabled:after {
|
||||
border: none;
|
||||
content: '';
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(233, 236, 239, 0.33);
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: auto;
|
||||
z-index: 2;
|
||||
position: absolute; }
|
||||
|
||||
.colorpicker.colorpicker-disabled .colorpicker-guide {
|
||||
display: none; }
|
||||
|
||||
/** EXTENSIONS **/
|
||||
.colorpicker-preview {
|
||||
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
||||
background-size: 10px 10px;
|
||||
background-position: 0 0, 5px 5px; }
|
||||
|
||||
.colorpicker-preview > div {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%; }
|
||||
|
||||
.colorpicker-bar.colorpicker-swatches {
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
height: auto; }
|
||||
|
||||
.colorpicker-swatches--inner {
|
||||
clear: both;
|
||||
margin-top: -6px; }
|
||||
|
||||
.colorpicker-swatch {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
float: left;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin-right: 6px;
|
||||
margin-top: 6px;
|
||||
margin-left: 0;
|
||||
display: block;
|
||||
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
||||
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
||||
background-size: 10px 10px;
|
||||
background-position: 0 0, 5px 5px; }
|
||||
|
||||
.colorpicker-swatch--inner {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%; }
|
||||
|
||||
.colorpicker-swatch:nth-of-type(7n+0) {
|
||||
margin-right: 0; }
|
||||
|
||||
.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0) {
|
||||
margin-right: 6px; }
|
||||
|
||||
.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0) {
|
||||
margin-right: 0; }
|
||||
|
||||
.colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0) {
|
||||
margin-right: 0; }
|
||||
|
||||
.colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0) {
|
||||
margin-right: 6px; }
|
||||
|
||||
.colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0) {
|
||||
margin-right: 6px; }
|
||||
|
||||
.colorpicker-swatch:last-of-type:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both; }
|
||||
|
||||
*[dir='rtl'] .colorpicker-element input,
|
||||
.colorpicker-element[dir='rtl'] input,
|
||||
.colorpicker-element input[dir='rtl'] {
|
||||
direction: ltr;
|
||||
text-align: right; }
|
||||
|
||||
/*# sourceMappingURL=bootstrap-colorpicker.css.map */
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
Submitting Issues
|
||||
=================
|
||||
|
||||
If you are submitting a bug, please test and/or fork [this jsfiddle](https://jsfiddle.net/Eonasdan/bdxss6m8/) demonstrating the issue. Code issues and fringe case bugs that do not include a jsfiddle (or similar) will be closed.
|
||||
|
||||
Issues that are submitted without a description (title only) will be closed with no further explanation.
|
||||
|
||||
Contributing code
|
||||
=================
|
||||
|
||||
To contribute, fork the library and install grunt and dependencies. You need [node](http://nodejs.org/); use [nvm](https://github.com/creationix/nvm) or [nenv](https://github.com/ryuone/nenv) to install it.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/tempusdominus/bootstrap-4.git
|
||||
cd bootstrap-4
|
||||
npm install -g grunt-cli
|
||||
npm install
|
||||
git checkout development # all patches against development branch, please!
|
||||
grunt # this runs tests and jshint
|
||||
```
|
||||
|
||||
Very important notes
|
||||
====================
|
||||
|
||||
* **Pull requests to the `master` branch will be closed.** Please submit all pull requests to the `development` branch.
|
||||
* **Do not include the minified files in your pull request.** Don't worry, we'll build them when we cut a release.
|
||||
* Pull requests that do not include a description (title only) and the following will be closed:
|
||||
* What the change does
|
||||
* A use case (for new features or enhancements)
|
||||
|
||||
Grunt tasks
|
||||
===========
|
||||
|
||||
We use Grunt for managing the build. Here are some useful Grunt tasks:
|
||||
|
||||
* `grunt` The default task lints the code and runs the tests. You should make sure you do this before submitting a PR.
|
||||
* `grunt build` Compiles the less stylesheet and minifies the javascript source in build directory.
|
||||
* `grunt build:travis` Compliles and runs the jasmine/travis tests. **All PR's MUST pass tests in place**
|
||||
|
|
@ -1,188 +0,0 @@
|
|||
const sass = require('node-sass'), tildeImporter = require('grunt-sass-tilde-importer');
|
||||
|
||||
module.exports = function (grunt) {
|
||||
grunt.initConfig({
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
banner: '/*@preserve\n' +
|
||||
' * Tempus Dominus Bootstrap4 v<%= pkg.version %> (<%= pkg.homepage %>)\n' +
|
||||
' * Copyright 2016-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
|
||||
' * Licensed under MIT (https://github.com/tempusdominus/bootstrap-3/blob/master/LICENSE)\n' +
|
||||
' */\n',
|
||||
jqueryCheck: 'if (typeof jQuery === \'undefined\') {\n' +
|
||||
' throw new Error(\'Tempus Dominus Bootstrap4\\\'s requires jQuery. jQuery must be included before Tempus Dominus Bootstrap4\\\'s JavaScript.\');\n' +
|
||||
'}\n',
|
||||
jqueryVersionCheck: '+function ($) {\n' +
|
||||
' var version = $.fn.jquery.split(\' \')[0].split(\'.\');\n' +
|
||||
' if ((version[0] < 2 && version[1] < 9) || (version[0] === 1 && version[1] === 9 && version[2] < 1) || (version[0] >= 4)) {\n' +
|
||||
' throw new Error(\'Tempus Dominus Bootstrap4\\\'s requires at least jQuery v3.0.0 but less than v4.0.0\');\n' +
|
||||
' }\n' +
|
||||
'}(jQuery);\n\n',
|
||||
momentCheck: 'if (typeof moment === \'undefined\') {\n' +
|
||||
' throw new Error(\'Tempus Dominus Bootstrap4\\\'s requires moment.js. Moment.js must be included before Tempus Dominus Bootstrap4\\\'s JavaScript.\');\n' +
|
||||
'}\n',
|
||||
momentVersionCheck: 'var version = moment.version.split(\'.\')\n' +
|
||||
'if ((version[0] <= 2 && version[1] < 17) || (version[0] >= 3)) {\n' +
|
||||
' throw new Error(\'Tempus Dominus Bootstrap4\\\'s requires at least moment.js v2.17.0 but less than v3.0.0\');\n' +
|
||||
'}\n',
|
||||
uglify: {
|
||||
target: {
|
||||
files: {
|
||||
'build/js/<%= pkg.name %>.min.js': 'build/js/<%= pkg.name %>.js'
|
||||
}
|
||||
},
|
||||
options: {
|
||||
mangle: true,
|
||||
compress: {
|
||||
dead_code: false // eslint-disable-line
|
||||
},
|
||||
output: {
|
||||
ascii_only: true // eslint-disable-line
|
||||
},
|
||||
report: 'min',
|
||||
preserveComments: 'some'
|
||||
}
|
||||
},
|
||||
eslint: {
|
||||
options: {
|
||||
configFile: 'eslintrc.json'
|
||||
},
|
||||
target: ['Gruntfile.js', 'src/js/*.js', 'test/*.js']
|
||||
},
|
||||
babel: {
|
||||
dev: {
|
||||
options: {
|
||||
sourceMap: false,
|
||||
compact: false
|
||||
},
|
||||
files: {
|
||||
'build/js/<%= pkg.name %>.js': 'src/js/<%= pkg.name %>.js'
|
||||
}
|
||||
},
|
||||
dist: {
|
||||
options: {
|
||||
compact: false,
|
||||
'presets': [
|
||||
[
|
||||
'es2015',
|
||||
{
|
||||
'modules': false,
|
||||
'loose': true
|
||||
}
|
||||
]
|
||||
],
|
||||
'plugins': [
|
||||
'transform-es2015-modules-strip'
|
||||
]
|
||||
},
|
||||
files: {
|
||||
'build/js/<%= pkg.name %>.js': 'build/js/<%= pkg.name %>.js'
|
||||
}
|
||||
}
|
||||
},
|
||||
concat: {
|
||||
options: {
|
||||
// Custom function to remove all export and import statements
|
||||
process: function (src) {
|
||||
return src.replace(/^(export|import).*/gm, '');
|
||||
}
|
||||
},
|
||||
bootstrap: {
|
||||
src: [
|
||||
'node_modules/tempusdominus-core/src/js/tempusdominus-core.js',
|
||||
'src/js/<%= pkg.name %>.js'
|
||||
],
|
||||
dest: 'build/js/<%= pkg.name %>.js'
|
||||
}
|
||||
},
|
||||
sass: {
|
||||
production: {
|
||||
options: {
|
||||
cleancss: true,
|
||||
compress: true,
|
||||
implementation: sass,
|
||||
importer: tildeImporter
|
||||
},
|
||||
files: {
|
||||
'build/css/<%= pkg.name %>.min.css': 'src/sass/<%= pkg.name %>-build.scss'
|
||||
}
|
||||
},
|
||||
development: {
|
||||
options: {
|
||||
importer: tildeImporter,
|
||||
implementation: sass
|
||||
},
|
||||
files: {
|
||||
'build/css/<%= pkg.name %>.css': 'src/sass/<%= pkg.name %>-build.scss'
|
||||
}
|
||||
}
|
||||
},
|
||||
stamp: {
|
||||
bootstrap: {
|
||||
options: {
|
||||
banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>\n<%= momentCheck %>\n<%= momentVersionCheck %>\n+function () {\n',
|
||||
footer: '\n}();'
|
||||
},
|
||||
files: {
|
||||
src: '<%= concat.bootstrap.dest %>'
|
||||
}
|
||||
},
|
||||
css: {
|
||||
options: {
|
||||
banner: '<%= banner %>'
|
||||
},
|
||||
files: {
|
||||
src: 'build/css/*.css'
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
src: {
|
||||
files: '<%= concat.bootstrap.src %>',
|
||||
tasks: ['default']
|
||||
}
|
||||
},
|
||||
mkdocs: {
|
||||
dist: {
|
||||
src: '.',
|
||||
options: {
|
||||
clean: true
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
grunt.loadTasks('tasks');
|
||||
grunt.loadNpmTasks('grunt-mkdocs');
|
||||
|
||||
require('load-grunt-tasks')(grunt);
|
||||
grunt.registerTask('default', 'build:js');
|
||||
grunt.registerTask('build:travis', [
|
||||
'build:js', 'build:style'//,
|
||||
// tests
|
||||
//'env:paris', 'connect', 'jasmine'
|
||||
]);
|
||||
|
||||
// Task to be run when building
|
||||
grunt.registerTask('build:js', ['babel:dev', 'concat', 'eslint', 'babel:dist', 'stamp:bootstrap', 'uglify', 'copy']);
|
||||
|
||||
grunt.registerTask('build:style', ['sass', 'stamp:css', 'copy']);
|
||||
|
||||
grunt.registerTask('copy', 'Generate docs', function () {
|
||||
grunt.file.copy('build/js/tempusdominus-bootstrap-4.js', 'src/docs/theme/js/tempusdominus-bootstrap-4.js');
|
||||
grunt.file.copy('build/css/tempusdominus-bootstrap-4.css', 'src/docs/theme/css/tempusdominus-bootstrap-4.css');
|
||||
});
|
||||
|
||||
grunt.registerTask('docs', ['copy', 'mkdocs']);
|
||||
|
||||
grunt.registerTask('release', function (version) {
|
||||
if (!version || version.split('.').length !== 3) {
|
||||
grunt.fail.fatal('malformed version. Use grunt release:1.2.3');
|
||||
}
|
||||
|
||||
grunt.task.run([
|
||||
'bump_version:' + version,
|
||||
'build:travis',
|
||||
'docs'
|
||||
]);
|
||||
});
|
||||
};
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2016 Tempus Dominus
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
# Tempus Dominus Bootstrap 4
|
||||

|
||||
|
||||
# Version 5
|
||||
This is the Bootstrap 4 component of the new Version 5. This is a "scorched earth" version and there are **a lot** of breaking changes.
|
||||
|
||||
The new picker under the "Tempus Dominus" brand will be completely modular. The goal is to separate the core functions into its own library with specific modules for Bootstrap 3, Bootstrap 4, and possibly other UI frameworks.
|
||||
|
||||
This new version has been completely rewritten in ES6 and uses Babel to transpile the code down.
|
||||
|
||||
# Issues
|
||||
The issue tracker is solely for bug reports. Please ask your questions on Stack Overflow.
|
||||
|
||||
New issues that are requests for "how do I.." will be closed and redirected to Stack Overflow.
|
||||
|
||||
|
||||
## Submitting Issues
|
||||
If you have issues, please check the following first:
|
||||
* Have you read the docs?
|
||||
* Do you have the latest version of momentjs?
|
||||
* Do you have the latest version of jQuery?
|
||||
* Please test and/or fork [this jsfiddle](https://jsfiddle.net/Eonasdan/bdxss6m8/) with an example of your issue before you post an issue here.
|
||||
* Please indicate which version of the picker you are using (this can be found at the top of any included file)
|
||||
|
||||
## Where do you use this?
|
||||
I'd love to know if your public site is using this plugin and list your logo on the documentation site. Please email me `me at eonasdan dot com`.
|
||||
|
||||
## Priority support is available at an hourly rate.
|
||||
|
||||
If you have an urgent request, bug or need installation help, please contact me at `me at eonasdan dot com` for a quote.
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
{
|
||||
"name": "tempusdominus/bootstrap-4",
|
||||
"type": "component",
|
||||
"version": "5.1.2",
|
||||
"description": "Date/time picker widget based on twitter bootstrap",
|
||||
"keywords": [
|
||||
"bootstrap",
|
||||
"datetimepicker"
|
||||
],
|
||||
"homepage": "https://github.com/tempusdominus/bootstrap-4",
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"robloach/component-installer": "*",
|
||||
"components/jquery": ">=3.0.0",
|
||||
"moment/moment": ">=2.10.5",
|
||||
"tempusdominus/core": "5.0.*"
|
||||
},
|
||||
"extra": {
|
||||
"component": {
|
||||
"scripts": [
|
||||
"src/js/tempusdominus-bootstrap-4.js"
|
||||
],
|
||||
"files": [
|
||||
"build/js/tempusdominus-bootstrap-4.min.js",
|
||||
"build/css/tempusdominus-bootstrap-4.min.css"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,189 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../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">
|
||||
<title>Change Log - Tempus Dominus - Bootstrap 4</title>
|
||||
<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" />
|
||||
<link href="../theme/css/base.css" rel="stylesheet">
|
||||
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/github.min.css" rel="stylesheet">
|
||||
<link href="../theme/css/tempusdominus-bootstrap-4.css" rel="stylesheet">
|
||||
<!-- 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>
|
||||
<script>var base_url = '..';</script>
|
||||
|
||||
<script src="../theme/js/base.js"></script>
|
||||
|
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
|
||||
|
||||
|
||||
<script src="../theme/js/tempusdominus-bootstrap-4.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="..">Tempus Dominus Bootstrap 4</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Usage/">Usage</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Installing/">Installing</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Functions/">Functions</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Options/">Options</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Events/">Events</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./">Change Log</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../ContributorsGuide/">Dev Guide</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Extras/">Extras</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../FAQ/">FAQs</a>
|
||||
</li>
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-3 col-xl-2 bd-sidebar"><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">
|
||||
<li class="active bd-sidenav-active"><a href="#version-5">Version 5</a></li>
|
||||
<li><a href="#500-alpha">5.0.0-alpha</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav></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">Change Log</h1>
|
||||
|
||||
|
||||
<h1 id="version-5">Version 5</h1>
|
||||
<h2 id="500-alpha">5.0.0-alpha</h2>
|
||||
<h3 id="new-features">New Features</h3>
|
||||
<ul>
|
||||
<li>ES6 rewrite</li>
|
||||
<li>Stripped UI/UX related code and shunted it into its own module</li>
|
||||
<li>More configuration based setup</li>
|
||||
<li>Bootstrap 4-esk plugin creation style</li>
|
||||
<li>All events are namespaced properly <code>{event}.datetimepicker</code></li>
|
||||
<li>Added a jquery no conflict option</li>
|
||||
<li>Removed LESS files. Bootstrap 4 doesn't use LESS any more. Now using SASS to build CSS</li>
|
||||
<li>Picker will also look for window.debug and will keep the picker from closing</li>
|
||||
<li>Added support for setting global defaults</li>
|
||||
</ul>
|
||||
<h3 id="other-changes">Other changes</h3>
|
||||
<ul>
|
||||
<li>moved <code>showTodayButton</code>, <code>showClear</code> and <code>showClose</code> into <code>options.buttons</code></li>
|
||||
<li>manually merged #1946, #1939, #1921, #1913</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<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>
|
||||
|
|
@ -1,290 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../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">
|
||||
<title>Dev Guide - Tempus Dominus - Bootstrap 4</title>
|
||||
<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" />
|
||||
<link href="../theme/css/base.css" rel="stylesheet">
|
||||
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/github.min.css" rel="stylesheet">
|
||||
<link href="../theme/css/tempusdominus-bootstrap-4.css" rel="stylesheet">
|
||||
<!-- 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>
|
||||
<script>var base_url = '..';</script>
|
||||
|
||||
<script src="../theme/js/base.js"></script>
|
||||
|
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
|
||||
|
||||
|
||||
<script src="../theme/js/tempusdominus-bootstrap-4.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="..">Tempus Dominus Bootstrap 4</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Usage/">Usage</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Installing/">Installing</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Functions/">Functions</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Options/">Options</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Events/">Events</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Changelog/">Change Log</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./">Dev Guide</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Extras/">Extras</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../FAQ/">FAQs</a>
|
||||
</li>
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-3 col-xl-2 bd-sidebar"><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">
|
||||
<li class="active bd-sidenav-active"><a href="#introduction">Introduction</a></li>
|
||||
<li class=""><a href="#code">Code</a></li>
|
||||
<li><a href="#private-variables">Private variables</a></li>
|
||||
<li><a href="#private-functions">Private functions</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav></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">Dev Guide</h1>
|
||||
|
||||
|
||||
<p>This guide is aimed to contributors wishing to understand the internals of the code in order to change/evolve the component. </p>
|
||||
<p><strong>Note:</strong> this guide refers to <strong>version 5</strong> which is currently in alpha and will be updated as we progress</p>
|
||||
<h2 id="introduction">Introduction</h2>
|
||||
<p>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 <code>jQuery</code>, <code>moment.js</code> libraries.</p>
|
||||
<h2 id="code">Code</h2>
|
||||
<h3 id="private-variables">Private variables</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>element</code> - Holds the DOM element this instance is attached to</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>options</code> - 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.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>date</code> - Holds the moment object for the model value of the component. <strong>DON'T</strong> directly change this variable unless you <strong>REALLY</strong> know what you are doing. Use <code>setValue()</code> function to set it. It handles all component logic for updating the model value and emitting all the appropriate events</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>viewDate</code> - 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 <code>update()</code> function</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>unset</code> - A <code>boolean</code> variable that holds whether the components model value is set or not. Model's value starts as <code>unset = true</code> and if is either set by the user or programmatically through the api to a valid value then it is set to <code>false</code>. If subsequent events lead to an invalid value then this variable is set to <code>true</code> again. Setting this variable usually takes place in the <code>setValue()</code> function.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>input</code> - Hold the DOM input element this instance is attached to</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>component</code> - 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</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>widget</code> - Holds a reference to the DOM element containing the widget or <code>false</code> if the widget is hidden</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>use24hours</code> - Holds whether the component uses 24 hours format or not. This is initialized on the <code>format()</code> function</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>minViewModeNumber</code> - Holds the Numeric equivalent of the options.minViewMode parameter</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>format</code> - Holds the current format string that is used for formatting the date model value. Note this is not the same thing as the <code>options.format</code> as the second could be set to <code>false</code> in which case the first takes the locale's <code>L</code> or <code>LT</code> value</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>currentViewMode</code> - Hold the state of the current viewMode for the DatePicker subcomponent</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>datePickerModes</code> - An array of objects with configuration parameters for the different views of the DatePicker subcomponent</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>viewModes</code> - An array of strings containing all the possible strings that <code>options.viewMode</code> can take through <code>viewMode()</code> public api function</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>directionModes</code> - An array of strings containing all the possible strings that <code>options.direction</code> can take through <code>direction()</code> public api function</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>orientationModes</code> - An array of strings containing all the possible strings that <code>options.orientation</code> can take through <code>orientation()</code> public api function</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h3 id="private-functions">Private functions</h3>
|
||||
<h4 id="events-related">Events related</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>notifyEvent(e)</code> - Use this function when you want to send en event to listener this could be used as a filter later</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>stopEvent(e)</code> - Shortcut for stopping propagation of events</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>keydown(e)</code> - Function to trap </p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>change(e)</code> - Listener function to track change events occurring on the <code>input</code> dom element the component is attached to</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>attachDatePickerElementEvents()</code> - Attaches listeners to the existing DOM elements the component is attached to. Called upon construction of each datetimepicker instance</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>detachDatePickerElementEvents()</code> - Detaches listeners from the DOM element the component is attached to. Called on <code>destroy()</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>attachDatePickerWidgetEvents()</code> - Attaches listeners on the components widget. Called on <code>show()</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>detachDatePickerWidgetEvents()</code> - Detaches listeners on the components widget. Called on <code>hide()</code></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="model-related">Model related</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>setValue(targetMoment)</code> - Sets the model value of the component takes a moment object. An <code>error</code> event will be emmited if the <code>targetMoment</code> does not pass the configured validations. Otherwise the <code>date</code> variable will be set and the relevant events will be fired.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>isValid(targetMoment, granularity)</code> - returns <code>true</code> if the <code>targetMoment</code> moment object is valid according to the components set validation rules (<code>min/maxDates</code>, <code>disabled/enabledDates</code> and <code>daysOfWeekDisabled</code>). You may pass a second variable to check only up the the specific granularity <code>year, month, day, hour, minute, second</code></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="utilities">Utilities</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>indexGivenDates (givenDatesArray)</code> - Function that takes the array from <code>enabledDates()</code> and <code>disabledDates()</code> public functions and stores them as object keys to enable quick lookup</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>isInEnableDates(date)</code> - Checks whether if the given moment object exists in the <code>options.enabledDates</code> object</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>isInDisableDates(date)</code> - Checks whether if the given moment object exists in the <code>options.disabledDates</code> array</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>dataToOptions()</code> - Parses <code>data-date-*</code> options set on the input dom element the component is attached to and returns an object with them</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>isInFixed()</code> - Checks if the dom element or its parents has a fixed position css rule.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>parseInputDate(date)</code> - Parses a date parameter with moment using the component's <code>options.format</code> and <code>options.useStrict</code>. It returns a <code>moment</code> object or false if <code>parsedMoment#isValid()</code> returns <code>false</code>. Use this to parse date inputs from outside the component (public API calls).</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>init()</code> - Initializes the component. Called when the component instance is created</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<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>
|
||||
|
|
@ -1,244 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../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">
|
||||
<title>Events - Tempus Dominus - Bootstrap 4</title>
|
||||
<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" />
|
||||
<link href="../theme/css/base.css" rel="stylesheet">
|
||||
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/github.min.css" rel="stylesheet">
|
||||
<link href="../theme/css/tempusdominus-bootstrap-4.css" rel="stylesheet">
|
||||
<!-- 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>
|
||||
<script>var base_url = '..';</script>
|
||||
|
||||
<script src="../theme/js/base.js"></script>
|
||||
|
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
|
||||
|
||||
|
||||
<script src="../theme/js/tempusdominus-bootstrap-4.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="..">Tempus Dominus Bootstrap 4</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Usage/">Usage</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Installing/">Installing</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Functions/">Functions</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Options/">Options</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./">Events</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Changelog/">Change Log</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../ContributorsGuide/">Dev Guide</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Extras/">Extras</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../FAQ/">FAQs</a>
|
||||
</li>
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-3 col-xl-2 bd-sidebar"><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">
|
||||
<li class="active bd-sidenav-active"><a href="#events">Events</a></li>
|
||||
<li><a href="#hidedatetimepicker">hide.datetimepicker</a></li>
|
||||
<li><a href="#showdatetimepicker">show.datetimepicker</a></li>
|
||||
<li><a href="#changedatetimepicker">change.datetimepicker</a></li>
|
||||
<li><a href="#errordatetimepicker">error.datetimepicker</a></li>
|
||||
<li><a href="#updatedatetimepicker">update.datetimepicker</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav></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">Events</h1>
|
||||
|
||||
|
||||
<h2 id="events">Events</h2>
|
||||
<h3 id="hidedatetimepicker">hide.datetimepicker</h3>
|
||||
<p>Fired when the widget is hidden.</p>
|
||||
<p>Parameters:</p>
|
||||
<pre><code>e = {
|
||||
date //the currently set date. Type: moment object (clone)
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
<p>Emitted from:</p>
|
||||
<ul>
|
||||
<li>toggle()</li>
|
||||
<li>hide()</li>
|
||||
<li>disable()</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="showdatetimepicker">show.datetimepicker</h3>
|
||||
<p>Fired when the widget is shown.</p>
|
||||
<p>Parameters:</p>
|
||||
<p>No parameters are include, listen to <code>change.datetimepicker</code> instead</p>
|
||||
<p>Emitted from:</p>
|
||||
<ul>
|
||||
<li>toggle()</li>
|
||||
<li>show()</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="changedatetimepicker">change.datetimepicker</h3>
|
||||
<p>Fired when the date is changed, including when changed to a non-date (e.g. When keepInvalid=true).</p>
|
||||
<p>Parameters:</p>
|
||||
<pre><code>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
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
<p>Emitted from:</p>
|
||||
<ul>
|
||||
<li>toggle() <strong>Note</strong>: Only fired when using <code>useCurrent</code></li>
|
||||
<li>show() <strong>Note</strong>: Only fired when using <code>useCurrent</code> or when or the date is changed to comply with date rules (min/max etc)</li>
|
||||
<li>date(newDate)</li>
|
||||
<li>minDate(minDate)</li>
|
||||
<li>maxDate(maxDate)</li>
|
||||
<li>daysOfWeekDisabled()</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="errordatetimepicker">error.datetimepicker</h3>
|
||||
<p>Fired when a selected date fails to pass validation.</p>
|
||||
<p>Parameters:</p>
|
||||
<pre><code>e = {
|
||||
date //the invalid date. Type: moment object (clone)
|
||||
oldDate //previous date. Type: moment object (clone) or false in the event of a null
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
<p>Emmited from:</p>
|
||||
<ul>
|
||||
<li>minDate(minDate)</li>
|
||||
<li>maxDate(maxDate)</li>
|
||||
<li>daysOfWeekDisabled()</li>
|
||||
<li>setValue() <em>private function</em></li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="updatedatetimepicker">update.datetimepicker</h3>
|
||||
<p>Fired (in most cases) when the <code>viewDate</code> changes. E.g. Next and Previous buttons, selecting a year.</p>
|
||||
<p>Parameters:</p>
|
||||
<pre><code>e = {
|
||||
change, //Change type as a momentjs format token. Type: string e.g. yyyy on year change
|
||||
viewDate //new viewDate. Type: moment object
|
||||
}
|
||||
</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<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>
|
||||
|
|
@ -1,210 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../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">
|
||||
<title>Extras - Tempus Dominus - Bootstrap 4</title>
|
||||
<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" />
|
||||
<link href="../theme/css/base.css" rel="stylesheet">
|
||||
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/github.min.css" rel="stylesheet">
|
||||
<link href="../theme/css/tempusdominus-bootstrap-4.css" rel="stylesheet">
|
||||
<!-- 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>
|
||||
<script>var base_url = '..';</script>
|
||||
|
||||
<script src="../theme/js/base.js"></script>
|
||||
|
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
|
||||
|
||||
|
||||
<script src="../theme/js/tempusdominus-bootstrap-4.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="..">Tempus Dominus Bootstrap 4</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Usage/">Usage</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Installing/">Installing</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Functions/">Functions</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Options/">Options</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Events/">Events</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Changelog/">Change Log</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../ContributorsGuide/">Dev Guide</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./">Extras</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../FAQ/">FAQs</a>
|
||||
</li>
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-3 col-xl-2 bd-sidebar"><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">
|
||||
<li class="active bd-sidenav-active"><a href="#extras">Extras</a></li>
|
||||
<li><a href="#rails-3">Rails 3</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav></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">Extras</h1>
|
||||
|
||||
|
||||
<h1 id="extras">Extras</h1>
|
||||
<p>Guides for making the picker work better with rails, IE, etc. <strong>Note:</strong> I have no idea if these guides still apply for v5 or not.</p>
|
||||
<h2 id="rails-3">Rails 3</h2>
|
||||
<p>by <a href="https://github.com/dhulihan">dhulihan</a></p>
|
||||
<p>You can easily override the default rails form helpers (<code>date_select</code> and <code>datetime_select</code>) with bootstrap-datetimepicker for a much nicer experience. </p>
|
||||
<pre><code class="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
|
||||
</code></pre>
|
||||
|
||||
<p>The time format used here is ActiveRecord-friendly, which means it will be parsed correctly when passed in through <code>params</code> to your record.</p>
|
||||
<p>That's all there is to it! Now all of your forms that use <code>datetime_select</code> or <code>date_select</code> will be automatically updated:</p>
|
||||
<pre><code class="erb"><% form_for @post do |f| %>
|
||||
<div class="form-group">
|
||||
<label>Published At</label>
|
||||
<%= f.datetime_select :published_at %>
|
||||
</div>
|
||||
<% end %>
|
||||
</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<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>
|
||||
|
|
@ -1,186 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../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">
|
||||
<title>FAQs - Tempus Dominus - Bootstrap 4</title>
|
||||
<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" />
|
||||
<link href="../theme/css/base.css" rel="stylesheet">
|
||||
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/github.min.css" rel="stylesheet">
|
||||
<link href="../theme/css/tempusdominus-bootstrap-4.css" rel="stylesheet">
|
||||
<!-- 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>
|
||||
<script>var base_url = '..';</script>
|
||||
|
||||
<script src="../theme/js/base.js"></script>
|
||||
|
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
|
||||
|
||||
|
||||
<script src="../theme/js/tempusdominus-bootstrap-4.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="..">Tempus Dominus Bootstrap 4</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Usage/">Usage</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Installing/">Installing</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Functions/">Functions</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Options/">Options</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Events/">Events</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Changelog/">Change Log</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../ContributorsGuide/">Dev Guide</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Extras/">Extras</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./">FAQs</a>
|
||||
</li>
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-3 col-xl-2 bd-sidebar"><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">
|
||||
<li class="active bd-sidenav-active"><a href="#faqs">FAQs</a></li>
|
||||
<li class=""><a href="#how-do-i-disable-the-date-or-time-element">How do I disable the date or time element</a></li>
|
||||
<li class=""><a href="#how-do-i-change-the-languagelocale">How do I change the language/locale</a></li>
|
||||
<li class=""><a href="#how-do-i-change-the-styles-the-picker-closes">How do I change the styles? The picker closes.</a></li>
|
||||
<li class=""><a href="#how-do-i-change-the-start-of-the-week">How do I change the start of the week?</a></li>
|
||||
<li class=""><a href="#how-i-use-the-picker-as-birthday-picker">How I use the picker as birthday picker?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav></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">FAQs</h1>
|
||||
|
||||
|
||||
<h1 id="faqs">FAQs</h1>
|
||||
<h1 id="how-do-i-disable-the-date-or-time-element">How do I disable the date or time element</h1>
|
||||
<p><small>How do I format ...; How do I add seconds; etc.</small></p>
|
||||
<p>The picker uses the <code>format</code> option to decide what components to show. Set <code>format</code> to <code>LT</code>, <code>LTS</code> or another valid <a href="http://momentjs.com/docs/#/displaying/format/">MomentJs format string</a> to display certain components</p>
|
||||
<h1 id="how-do-i-change-the-languagelocale">How do I change the language/locale</h1>
|
||||
<p>The picker uses MomentJs to determine the language string. You can use <code>moment-with-locales</code> or you can include whatever local file you need. Set the picker's <code>locale</code> option to <code>de</code> or whatever the locale string is.</p>
|
||||
<h1 id="how-do-i-change-the-styles-the-picker-closes">How do I change the styles? The picker closes.</h1>
|
||||
<p>Set <code>debug:true</code> which will force the picker to stay open, even <code>onBlur</code>. You can hide the picker manually by calling <code>hide()</code></p>
|
||||
<h1 id="how-do-i-change-the-start-of-the-week">How do I change the start of the week?</h1>
|
||||
<p>Start of the week is based on the <a href="../Options/#locale"><code>locale</code> provided</a>. This is defined by moment's locales. If you want to change it, create your own locale file or override. <a href="http://momentjs.com/docs/#/i18n/">See moment's docs</a>.</p>
|
||||
<h1 id="how-i-use-the-picker-as-birthday-picker">How I use the picker as birthday picker?</h1>
|
||||
<p>Use the <a href="../Options/#viewmode"><code>viewMode</code></a> option to <code>'years'</code></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<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>
|
||||
|
|
@ -1,239 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../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">
|
||||
<title>Functions - Tempus Dominus - Bootstrap 4</title>
|
||||
<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" />
|
||||
<link href="../theme/css/base.css" rel="stylesheet">
|
||||
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/github.min.css" rel="stylesheet">
|
||||
<link href="../theme/css/tempusdominus-bootstrap-4.css" rel="stylesheet">
|
||||
<!-- 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>
|
||||
<script>var base_url = '..';</script>
|
||||
|
||||
<script src="../theme/js/base.js"></script>
|
||||
|
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
|
||||
|
||||
|
||||
<script src="../theme/js/tempusdominus-bootstrap-4.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="..">Tempus Dominus Bootstrap 4</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Usage/">Usage</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Installing/">Installing</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./">Functions</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Options/">Options</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Events/">Events</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Changelog/">Change Log</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../ContributorsGuide/">Dev Guide</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Extras/">Extras</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../FAQ/">FAQs</a>
|
||||
</li>
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-3 col-xl-2 bd-sidebar"><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">
|
||||
<li class="active bd-sidenav-active"><a href="#functions">Functions</a></li>
|
||||
<li><a href="#destroy">destroy</a></li>
|
||||
<li><a href="#toggle">toggle</a></li>
|
||||
<li><a href="#show">show</a></li>
|
||||
<li><a href="#hide">hide</a></li>
|
||||
<li><a href="#disable">disable</a></li>
|
||||
<li><a href="#enable">enable</a></li>
|
||||
<li><a href="#clear">clear</a></li>
|
||||
<li><a href="#viewdate">viewDate</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav></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">Functions</h1>
|
||||
|
||||
|
||||
<h2 id="functions">Functions</h2>
|
||||
<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>
|
||||
|
||||
<h3 id="destroy">destroy</h3>
|
||||
<p>Destroys the widget and removes all attached event listeners</p>
|
||||
<hr />
|
||||
<h3 id="toggle">toggle</h3>
|
||||
<p>Shows or hides the widget</p>
|
||||
<h4 id="emits">Emits</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>hide.datetimepicker</code> - if the widget is hidden after the toggle call</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>show.datetimepicker</code> - if the widget is show after the toggle call</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>change.datetimepicker</code> - if the widget is opened for the first time and the input element is empty and <code>options.useCurrent != false</code></p>
|
||||
</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="show">show</h3>
|
||||
<p>Shows the widget</p>
|
||||
<h4 id="emits_1">Emits</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>show.datetimepicker</code> - if the widget was hidden before that call</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>change.datetimepicker</code> - if the widget is opened for the first time and the <code>useCurrent</code> is set to true or to a granularity value and the input element the component is attached to has an empty value</p>
|
||||
</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="hide">hide</h3>
|
||||
<p>Hides the widget</p>
|
||||
<h4 id="emits_2">Emits</h4>
|
||||
<ul>
|
||||
<li><code>hide.datetimepicker</code> - if the widget was visible before that call</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="disable">disable</h3>
|
||||
<p>Disables the input element, the component is attached to, by adding a <code>disabled="true"</code> attribute to it. If the widget was visible before that call it is hidden.</p>
|
||||
<h4 id="emits_3">Emits</h4>
|
||||
<ul>
|
||||
<li><code>hide.datetimepicker</code> - if the widget was visible before that call</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="enable">enable</h3>
|
||||
<p>Enables the input element, the component is attached to, by removing <code>disabled</code> attribute from it.</p>
|
||||
<hr />
|
||||
<h3 id="clear">clear</h3>
|
||||
<p>Clears the date picker by setting the value to <code>null</code></p>
|
||||
<hr />
|
||||
<h3 id="viewdate">viewDate</h3>
|
||||
<h4 id="viewdate_1">viewDate</h4>
|
||||
<p>Returns a <code>moment</code> variable with the currently set <code>options.viewDate</code> option.</p>
|
||||
<h4 id="viewdateviewdate">viewDate(viewDate)</h4>
|
||||
<p>Takes a <code>string, moment or Date</code> value.</p>
|
||||
<p>This will change the <code>viewDate</code> without changing or setting the selected date.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<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>
|
||||
|
|
@ -1,233 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../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">
|
||||
<title>Installing - Tempus Dominus - Bootstrap 4</title>
|
||||
<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" />
|
||||
<link href="../theme/css/base.css" rel="stylesheet">
|
||||
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/github.min.css" rel="stylesheet">
|
||||
<link href="../theme/css/tempusdominus-bootstrap-4.css" rel="stylesheet">
|
||||
<!-- 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>
|
||||
<script>var base_url = '..';</script>
|
||||
|
||||
<script src="../theme/js/base.js"></script>
|
||||
|
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
|
||||
|
||||
|
||||
<script src="../theme/js/tempusdominus-bootstrap-4.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="..">Tempus Dominus Bootstrap 4</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Usage/">Usage</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./">Installing</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Functions/">Functions</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Options/">Options</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Events/">Events</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Changelog/">Change Log</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../ContributorsGuide/">Dev Guide</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Extras/">Extras</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../FAQ/">FAQs</a>
|
||||
</li>
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-3 col-xl-2 bd-sidebar"><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">
|
||||
<li class="active bd-sidenav-active"><a href="#minimal-requirements">Minimal Requirements</a></li>
|
||||
<li class=""><a href="#installation-guides">Installation Guides</a></li>
|
||||
<li><a href="#cdn">CDN</a></li>
|
||||
<li><a href="#package-managers">Package Managers</a></li>
|
||||
<li><a href="#manual">Manual</a></li>
|
||||
<li><a href="#knockout">Knockout</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav></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">Installing</h1>
|
||||
|
||||
|
||||
<div class="alert alert-warning">
|
||||
This guide still needs a lot of work
|
||||
</div>
|
||||
|
||||
<h1 id="minimal-requirements">Minimal Requirements</h1>
|
||||
<ol>
|
||||
<li>jQuery</li>
|
||||
<li>Moment.js</li>
|
||||
<li>Locales: Moment's locale files are <a href="https://github.com/moment/moment/tree/master/locale">here</a></li>
|
||||
</ol>
|
||||
<h1 id="installation-guides">Installation Guides</h1>
|
||||
<ul>
|
||||
<li><a href="#cdn">CDN</a></li>
|
||||
<li><a href="#rails">Rails</a></li>
|
||||
<li><a href="#django">Django</a></li>
|
||||
<li><a href="#angular-wrapper">Angular</a></li>
|
||||
<li><a href="#meteorjs">Meteor.js</a></li>
|
||||
<li><a href="#manual">Manual</a></li>
|
||||
</ul>
|
||||
<h2 id="cdn">CDN</h2>
|
||||
<pre><code class="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>
|
||||
</code></pre>
|
||||
|
||||
<h2 id="package-managers">Package Managers</h2>
|
||||
<h3 id="rails">Rails</h3>
|
||||
<p>Rails 5.1 Support - <a href="https://github.com/Bialogs/bootstrap4-datetime-picker-rails">Bootstrap 4 Datetime Picker Rails</a></p>
|
||||
<ol>
|
||||
<li>Add <code>gem 'bootstrap4-datetime-picker-rails'</code> to your <code>Gemfile</code></li>
|
||||
<li>Execute <code>bundle</code></li>
|
||||
<li>Add <code>//= require tempusdominus-bootstrap-4.js</code> to your <code>application.js</code></li>
|
||||
<li>Add <code>@import "tempusdominus-bootstrap-4.css"</code> to your <code>application.scss</code></li>
|
||||
</ol>
|
||||
<h3 id="django">Django</h3>
|
||||
<p>Python package for Django: <a href="https://pypi.org/project/django-tempus-dominus/">Django Tempus Dominus</a></p>
|
||||
<ol>
|
||||
<li>Install via pip: <code>pip install django-tempus-dominus</code></li>
|
||||
<li>Widgets are provided for Date, DateTime, and Time.</li>
|
||||
<li><a href="https://pypi.org/project/django-tempus-dominus/">Full examples are available with Django Forms, Widgets, and Templates</a>.</li>
|
||||
</ol>
|
||||
<h3 id="angular-wrapper">Angular Wrapper</h3>
|
||||
<p>Follow instructions at <a href="https://github.com/fetrarij/ngx-tempusdominus-bootstrap">ngx-tempusdominus-bootstrap</a> </p>
|
||||
<h3 id="meteorjs">Meteor.js</h3>
|
||||
<p>Need new wrapper for this version.</p>
|
||||
<h2 id="manual">Manual</h2>
|
||||
<ol>
|
||||
<li>Acquire <a href="http://jquery.com">jQuery</a></li>
|
||||
<li>Acquire <a href="https://github.com/moment/moment">Moment.js</a></li>
|
||||
<li>Acquire</li>
|
||||
</ol>
|
||||
<pre><code class="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>
|
||||
</code></pre>
|
||||
|
||||
<h2 id="knockout">Knockout</h2>
|
||||
<p>Need new wrapper for this version.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<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>
|
||||
|
|
@ -1,862 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../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">
|
||||
<title>Options - Tempus Dominus - Bootstrap 4</title>
|
||||
<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" />
|
||||
<link href="../theme/css/base.css" rel="stylesheet">
|
||||
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/github.min.css" rel="stylesheet">
|
||||
<link href="../theme/css/tempusdominus-bootstrap-4.css" rel="stylesheet">
|
||||
<!-- 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>
|
||||
<script>var base_url = '..';</script>
|
||||
|
||||
<script src="../theme/js/base.js"></script>
|
||||
|
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
|
||||
|
||||
|
||||
<script src="../theme/js/tempusdominus-bootstrap-4.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="..">Tempus Dominus Bootstrap 4</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Usage/">Usage</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Installing/">Installing</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Functions/">Functions</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./">Options</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Events/">Events</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Changelog/">Change Log</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../ContributorsGuide/">Dev Guide</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Extras/">Extras</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../FAQ/">FAQs</a>
|
||||
</li>
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-3 col-xl-2 bd-sidebar"><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">
|
||||
<li class="active bd-sidenav-active"><a href="#options">Options</a></li>
|
||||
<li><a href="#options_1">options</a></li>
|
||||
<li><a href="#options-options">options, [options]</a></li>
|
||||
<li><a href="#date">date</a></li>
|
||||
<li><a href="#format">format</a></li>
|
||||
<li><a href="#dayviewheaderformat">dayViewHeaderFormat</a></li>
|
||||
<li><a href="#extraformats">extraFormats</a></li>
|
||||
<li><a href="#stepping">stepping</a></li>
|
||||
<li><a href="#minmaxdate">min/maxDate</a></li>
|
||||
<li><a href="#usecurrent">useCurrent</a></li>
|
||||
<li><a href="#collapse">collapse</a></li>
|
||||
<li><a href="#locale">locale</a></li>
|
||||
<li><a href="#defaultdate">defaultDate</a></li>
|
||||
<li><a href="#endisableddates">en/disabledDates</a></li>
|
||||
<li><a href="#icons">icons</a></li>
|
||||
<li><a href="#usestrict">useStrict</a></li>
|
||||
<li><a href="#sidebyside">sideBySide</a></li>
|
||||
<li><a href="#daysofweekdisabled">daysOfWeekDisabled</a></li>
|
||||
<li><a href="#calendarweeks">calendarWeeks</a></li>
|
||||
<li><a href="#viewmode">viewMode</a></li>
|
||||
<li><a href="#toolbarplacement">toolbarPlacement</a></li>
|
||||
<li><a href="#buttons">buttons</a></li>
|
||||
<li><a href="#widgetpositioning">widgetPositioning</a></li>
|
||||
<li><a href="#widgetparent">widgetParent</a></li>
|
||||
<li><a href="#keepopen">keepOpen</a></li>
|
||||
<li><a href="#inline">inline</a></li>
|
||||
<li><a href="#keepinvalid">keepInvalid</a></li>
|
||||
<li><a href="#keybinds">keyBinds</a></li>
|
||||
<li><a href="#debug">debug</a></li>
|
||||
<li><a href="#ignorereadonly">ignoreReadonly</a></li>
|
||||
<li><a href="#disabledtimeintervals">disabledTimeIntervals</a></li>
|
||||
<li><a href="#allowinputtoggle">allowInputToggle</a></li>
|
||||
<li><a href="#focusonshow">focusOnShow</a></li>
|
||||
<li><a href="#endisabledhours">en/disabledHours</a></li>
|
||||
<li><a href="#viewdate">viewDate</a></li>
|
||||
<li><a href="#parseinputdate">parseInputDate</a></li>
|
||||
<li><a href="#tooltips">tooltips</a></li>
|
||||
<li><a href="#timezone">timeZone</a></li>
|
||||
<li><a href="#allowmultidate">allowMultidate</a></li>
|
||||
<li><a href="#multidateseparator">multidateSeparator</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav></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">Options</h1>
|
||||
|
||||
|
||||
<h2 id="options">Options</h2>
|
||||
<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>
|
||||
|
||||
<p>Global defaults can be get/set by <code>$.fn.datetimepicker.Constructor.Default</code></p>
|
||||
<p>e.g. To set icons to use Font Awesome 5</p>
|
||||
<pre><code>$.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'
|
||||
} });
|
||||
</code></pre>
|
||||
|
||||
<p>Do this <strong>before</strong> you init pickers.</p>
|
||||
<hr/>
|
||||
|
||||
<h3 id="options_1">options</h3>
|
||||
<p>Returns the components current options object. Note that the changing the values of the returned object does not change the components actual configuration. Use <code>options(options)</code> to set the components options massively or the other methods for setting config options individually.</p>
|
||||
<h3 id="options-options">options, [options]</h3>
|
||||
<p>Takes an object variable with option key:value properties and configures the component. Use this to update multiple options on the component.</p>
|
||||
<hr />
|
||||
<h3 id="date">date</h3>
|
||||
<p>Returns the component's model current date, a <code>moment</code> object or <code>null</code> if not set.</p>
|
||||
<h4 id="date-newdate">date, [newDate]</h4>
|
||||
<p>Takes <code>string, Date, moment, null</code> parameter and sets the components model current moment to it. Passing a <code>null</code> value unsets the components model current moment. Parsing of the <code>newDate</code> parameter is made using moment library with the <code>options.format</code> and <code>options.useStrict</code> components configuration.</p>
|
||||
<h5 id="throws">Throws</h5>
|
||||
<ul>
|
||||
<li><code>TypeError</code> - in case the <code>newDate</code> cannot be parsed</li>
|
||||
</ul>
|
||||
<h5 id="emits">Emits</h5>
|
||||
<ul>
|
||||
<li><code>change.datetimepicker</code> - In case <code>newDate</code> is different from current moment</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="format">format</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>See <a href="http://momentjs.com/docs/#/displaying/format/">momentjs' docs</a> for valid formats. Format also dictates what components are shown, e.g. <code>MM/dd/YYYY</code> will not display the time picker.</p>
|
||||
<h4 id="format_1">format</h4>
|
||||
<p>Returns the component's <code>options.format</code> <code>string</code></p>
|
||||
<h4 id="format-format">format, [format]</h4>
|
||||
<p>Takes a <a href="http://momentjs.com/docs/#/displaying/format/">moment.js</a> format <code>string</code> and sets the components <code>options.format</code>. This is used for displaying and also for parsing input strings either from the input element the component is attached to or the <code>date()</code> function.
|
||||
The parameter can also be a <code>boolean:false</code> in which case the format is set to the locale's <code>L LT</code>.</p>
|
||||
<p><strong>Note:</strong> this is also used to determine if the time picker sub component will display the hours in 12 or 24 format. (if <code>a</code> or <code>h</code> exists in the passed <code>string</code> then a 12 hour mode is set)</p>
|
||||
<hr />
|
||||
<h3 id="dayviewheaderformat">dayViewHeaderFormat</h3>
|
||||
<pre><code>Default: 'MMMM YYYY'
|
||||
</code></pre>
|
||||
<p>Changes the heading of the date picker when in "days" view.</p>
|
||||
<p><img alt="Datepicker Header" src="../img/dpheader.png" /></p>
|
||||
<h4 id="dayviewheaderformat_1">dayViewHeaderFormat</h4>
|
||||
<p>Returns a <code>string</code> variable with the currently set <code>options.dayViewHeaderFormat</code> option.</p>
|
||||
<h4 id="dayviewheaderformat-string">dayViewHeaderFormat, [string]</h4>
|
||||
<p>Takes a <code>string</code> value.</p>
|
||||
<p>Used to customize the header of the day view.</p>
|
||||
<hr />
|
||||
<h3 id="extraformats">extraFormats</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>Allows for several input formats to be valid. See <a href="https://github.com/Eonasdan/bootstrap-datetimepicker/pull/666">this PR</a>.</p>
|
||||
<h4 id="extraformats_1">extraFormats</h4>
|
||||
<p>Returns a <code>boolean</code> or array with the <code>options.extraFormats</code> option configuration</p>
|
||||
<h4 id="extraformats-formats">extraFormats, [formats]</h4>
|
||||
<p>Takes an array of valid input moment format options.</p>
|
||||
<hr />
|
||||
<h3 id="stepping">stepping</h3>
|
||||
<pre><code>Default: 1
|
||||
</code></pre>
|
||||
<p>Number of minutes the up/down arrow's will move the minutes value in the time picker</p>
|
||||
<h4 id="stepping_1">stepping</h4>
|
||||
<p>Returns a <code>number</code> with the <code>options.stepping</code> option configuration</p>
|
||||
<h4 id="stepping-number">stepping, [number]</h4>
|
||||
<p>Takes a <code>number</code>. This be the amount the up/down arrows move the minute value with a time picker.</p>
|
||||
<hr />
|
||||
<h3 id="minmaxdate">min/maxDate</h3>
|
||||
<pre><code>Default: false
|
||||
Accepts: date, moment, string
|
||||
</code></pre>
|
||||
<p>Prevents date/time selections before this date. Will override <code>defaultDate</code> and <code>useCurrent</code> if either of these settings are the same day since both options are invalid according to the rules you've selected.</p>
|
||||
<h4 id="mindate">minDate</h4>
|
||||
<p>Returns the currently set moment of the <code>options.minDate</code> or <code>false</code> if not set</p>
|
||||
<h4 id="mindate-mindate">minDate, [minDate]</h4>
|
||||
<p>Takes a <code>minDate</code> <code>string, Date, moment, boolean:false</code> parameter and disallows the user to select a moment that is before that moment. If a <code>boolean:false</code> value is passed the <code>options.minDate</code> parameter is cleared and there is no restriction to the minimum moment the user can select. </p>
|
||||
<p><strong>Note:</strong> If the <code>minDate</code> parameter is after the currently selected moment the currently selected moment changes to minDate parameter</p>
|
||||
<h5 id="throws_1">Throws</h5>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>TypeError</code> - if <code>minDate</code> parameter cannot be parsed using the <code>options.format</code> and <code>options.useStrict</code> configuration settings</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>TypeError</code> - if <code>minDate</code> parameter is after <code>options.maxDate</code></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h5 id="emits_1">Emits</h5>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>change.datetimepicker</code> - if the new <code>minDate</code> is after currently selected moment (waiting for #472 to close in order to finalize this part)</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>dp.error</code> - if the new <code>minDate</code> is after currently selected moment (waiting for #472 to close in order to finalize this part)</p>
|
||||
</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h4 id="maxdate">maxDate</h4>
|
||||
<p>Returns the currently set moment of the <code>options.maxDate</code> or <code>false</code> if not set</p>
|
||||
<h4 id="maxdate-maxdate">maxDate, [maxDate]</h4>
|
||||
<p>Takes a [maxDate] <code>string, Date, moment, boolean:false</code> parameter and disallows the user to select a moment that is after that moment. If a <code>boolean:false</code> value is passed <code>options.maxDate</code> is cleared and there is no restriction to the maximum moment the user can select.</p>
|
||||
<p><strong>Note:</strong> If [maxDate] is before the currently selected moment the currently selected moment changes to [maxDate]</p>
|
||||
<h5 id="throws_2">Throws</h5>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>TypeError</code> - if <code>maxDate</code> parameter cannot be parsed using the <code>options.format</code> and <code>options.useStrict</code> configuration settings</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>TypeError</code> - if <code>maxDate</code> parameter is before <code>options.minDate</code></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h5 id="emits_2">Emits</h5>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>change.datetimepicker</code> - if the new <code>maxDate</code> is after currently selected moment (waiting for #472 to close in order to finalize this part)</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>dp.error</code> - if the new <code>maxDate</code> is after currently selected moment (waiting for #472 to close in order to finalize this part)</p>
|
||||
</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="usecurrent">useCurrent</h3>
|
||||
<pre><code>Default: true
|
||||
</code></pre>
|
||||
<p>On <code>show</code>, will set the picker to the current date/time.</p>
|
||||
<h4 id="usecurrent_1">useCurrent</h4>
|
||||
<p>Returns a <code>boolean</code> or <code>string</code> with the <code>options.useCurrent</code> option configuration</p>
|
||||
<h4 id="usecurrent-boolean-or-string">useCurrent, boolean or string</h4>
|
||||
<p>Takes a <code>boolean</code> or <code>string</code>. If a <code>boolean</code> true is passed and the components model moment is not set (either through <code>setDate</code> 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 <code>boolean</code> 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 (<code>'year', 'month', 'day', 'hour', 'minute'</code>) in the variable.</p>
|
||||
<p>If for example you pass <code>'day'</code> to the <code>setUseCurrent</code> 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 = <code>2014-08-10 13:32:33</code> the input value will be initialized to <code>2014-08-10 00:00:00</code>)</p>
|
||||
<p><strong>Note:</strong> If the <code>options.defaultDate</code> is set or the input element the component is attached to has already a value that takes precedence and the functionality of <code>useCurrent</code> is not triggered!</p>
|
||||
<hr />
|
||||
<h3 id="collapse">collapse</h3>
|
||||
<pre><code>Default: true
|
||||
</code></pre>
|
||||
<p>Using a Bootstraps collapse to switch between date/time pickers.</p>
|
||||
<h4 id="collapse_1">collapse</h4>
|
||||
<p>Returns a <code>boolean</code> of the <code>options.sideBySide</code>.</p>
|
||||
<h4 id="collapse-collapse">collapse, [collapse]</h4>
|
||||
<p>Takes a <code>boolean</code>. If set to <code>false</code> the picker will display similar to <code>sideBySide</code> except vertical.</p>
|
||||
<hr />
|
||||
<h3 id="locale">locale</h3>
|
||||
<pre><code>Default: moment.locale()
|
||||
Accepts: string, moment.local('locale')
|
||||
</code></pre>
|
||||
<p>See <a href="https://github.com/moment/moment/tree/develop/locale">momentjs</a> for valid locales.</p>
|
||||
<p>You must include <code>moment-with-locales.js</code> or a local js file.</p>
|
||||
<h4 id="locale_1">locale</h4>
|
||||
<p>Returns the currently set locale of the <code>options.locale</code></p>
|
||||
<h4 id="locale-newlocale">locale, [newLocale]</h4>
|
||||
<p>Takes a <code>string</code> of any valid <a href="https://github.com/moment/moment/tree/develop/locale">moment locale</a> e.g. <code>de</code> for German.</p>
|
||||
<h5 id="throws_3">Throws</h5>
|
||||
<ul>
|
||||
<li><code>TypeError</code> - if the locale is not loaded via a separate script or <code>moment-with-locales</code></li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="defaultdate">defaultDate</h3>
|
||||
<pre><code>Default: false
|
||||
Accepts: date, moment, string
|
||||
</code></pre>
|
||||
<p>Sets the picker default date/time. Overrides <code>useCurrent</code></p>
|
||||
<h4 id="defaultdate_1">defaultDate</h4>
|
||||
<p>Returns a <code>moment</code> with the <code>options.defaultDate</code> option configuration or <code>false</code> if not set</p>
|
||||
<h4 id="defaultdate-defaultdate">defaultDate, [defaultDate]</h4>
|
||||
<p>Takes a <code>string, Date, moment, boolean:false</code>. Will set the picker's initial date. If a <code>boolean:false</code> value is passed the <code>options.defaultDate</code> parameter is cleared. </p>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>TypeError</code> - if the provided date pass validation, including <code>disabledDates</code>, <code>enabledDates</code>, <code>minDate</code>, <code>maxDate</code>, and <code>daysOfWeekDisabled</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>TypeError</code> - if the provided date cannot be parsed by moment.js</p>
|
||||
</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="endisableddates">en/disabledDates</h3>
|
||||
<pre><code>Default: false
|
||||
Accepts: array of [date, moment, string]
|
||||
</code></pre>
|
||||
<h4 id="disableddates">disabledDates</h4>
|
||||
<p>Returns an array with the currently set disabled dates on the component.</p>
|
||||
<h4 id="disableddates-dates">disabledDates, [dates]</h4>
|
||||
<p>Takes an <code>[</code> <code>string</code> or <code>Date</code> or <code>moment</code> <code>]</code> of values and disallows the user to select those days. Setting this takes precedence over <code>options.minDate</code>, <code>options.maxDate</code> configuration. Also calling this function removes the configuration of options.enabledDates if such exist.</p>
|
||||
<p><strong>Note:</strong> These values are matched with <code>Day</code> granularity.</p>
|
||||
<hr />
|
||||
<h4 id="enableddates">enabledDates</h4>
|
||||
<p>Returns an array with the currently set enabled dates on the component.</p>
|
||||
<h4 id="enableddates-dates">enabledDates, [dates]</h4>
|
||||
<p>Takes an <code>[</code> <code>string</code> or <code>Date</code> or <code>moment</code> <code>]</code> of values and allows the user to select only from those days. Setting this takes precedence over <code>options.minDate</code>, <code>options.maxDate</code> configuration. Also calling this function removes the configuration of <code>options.disabledDates</code> if such exist.</p>
|
||||
<p><strong>Note:</strong> These values are matched with <code>Day</code> granularity.</p>
|
||||
<hr />
|
||||
<h3 id="icons">icons</h3>
|
||||
<pre><code>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
|
||||
</code></pre>
|
||||
<p>Change the default icons for the pickers functions.</p>
|
||||
<h4 id="icons_1">icons</h4>
|
||||
<p>Returns an <code>Ojbect</code> of <code>options.icons</code> </p>
|
||||
<h4 id="icons-icons">icons, [icons]</h4>
|
||||
<p>Takes an <code>Ojbect</code> of <code>strings</code>.</p>
|
||||
<h5 id="throws_4">Throws</h5>
|
||||
<ul>
|
||||
<li><code>TypeError</code> - if icons parameter is not an <code>Ojbect</code></li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="usestrict">useStrict</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>Defines if moment should use strict date parsing when considering a date to be valid.</p>
|
||||
<h4 id="usestrict_1">useStrict</h4>
|
||||
<p>Returns a <code>boolean</code> of the <code>options.useStrict</code></p>
|
||||
<h4 id="usestrict-usestrict">useStrict, [useStrict]</h4>
|
||||
<p>Takes a <code>boolean</code>. If <code>useStrict</code> is <code>true</code>, moment.js parsing rules will be stricter when determining if a date is valid or not.</p>
|
||||
<hr />
|
||||
<h3 id="sidebyside">sideBySide</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>Shows the picker side by side when using the time and date together.</p>
|
||||
<p><img alt="SideBySide" src="../img/sideBySide.png" /></p>
|
||||
<h4 id="sidebyside_1">sideBySide</h4>
|
||||
<p>Returns a <code>boolean</code> of the <code>options.sideBySide</code>.</p>
|
||||
<h4 id="sidebyside-sidebyside">sideBySide, [sideBySide]</h4>
|
||||
<p>Takes a <code>boolean</code>. If <code>sideBySide</code> is <code>true</code> and the time picker is used, both components will display side by side instead of collapsing.</p>
|
||||
<hr />
|
||||
<h3 id="daysofweekdisabled">daysOfWeekDisabled</h3>
|
||||
<pre><code>Default: []
|
||||
Accepts: array of numbers from 0-6
|
||||
</code></pre>
|
||||
<p>Disables the section of days of the week, e.g. weekends.</p>
|
||||
<h4 id="daysofweekdisabled_1">daysOfWeekDisabled</h4>
|
||||
<p>Returns an array with the <code>options.daysOfWeekDisabled</code> configuration setting of the component.</p>
|
||||
<h4 id="daysofweekdisabled-daysofweek">daysOfWeekDisabled, [daysOfWeek]</h4>
|
||||
<p>Takes an <code>[</code> <code>Number</code>:<code>0</code> to <code>6</code> <code>]</code> and disallow the user to select weekdays that exist in this array. This has lower priority over the <code>options.minDate</code>, <code>options.maxDate</code>, <code>options.disabledDates</code> and <code>options.enabledDates</code> configuration settings.</p>
|
||||
<h5 id="emits_3">Emits</h5>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>change.datetimepicker</code> - 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)</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>dp.error</code> - 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)</p>
|
||||
</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="calendarweeks">calendarWeeks</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>Shows the week of the year to the left of first day of the week.</p>
|
||||
<p><img alt="calendarWeek" src="../img/calendarWeeks.png" /></p>
|
||||
<h4 id="calendarweeks_1">calendarWeeks</h4>
|
||||
<p>Returns a <code>boolean</code> with the current <code>options.calendarWeeks</code> option configuration</p>
|
||||
<h4 id="calendarweeks-boolean">calendarWeeks, [boolean]</h4>
|
||||
<p>Takes a <code>boolean</code> variable to set if the week numbers will appear to the left on the days view</p>
|
||||
<hr />
|
||||
<h3 id="viewmode">viewMode</h3>
|
||||
<pre><code>Default: 'days'
|
||||
Accepts: 'decades','years','months','days', 'times'
|
||||
</code></pre>
|
||||
<p>The default view to display when the picker is shown.</p>
|
||||
<p><strong>Note</strong>: To limit the picker to selecting, for instance the year and month, use <code>format: MM/YYYY</code>.</p>
|
||||
<h4 id="viewmode_1">viewMode</h4>
|
||||
<p>Returns a <code>string</code> of the <code>options.viewMode</code>.</p>
|
||||
<h4 id="viewmode-newviewmode">viewMode, [newViewMode]</h4>
|
||||
<p>Takes a <code>string</code>. Valid values are <code>'days'</code>, <code>'months'</code>, <code>'years'</code> and <code>'decades'</code></p>
|
||||
<h5 id="throws_5">Throws</h5>
|
||||
<ul>
|
||||
<li><code>TypeError</code> - if <code>newViewMode</code> parameter is not an a <code>string</code> or if <code>newViewMode</code> is not a valid value.</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="toolbarplacement">toolbarPlacement</h3>
|
||||
<pre><code>Default: 'default'
|
||||
Accepts: 'default', 'top', 'bottom'
|
||||
</code></pre>
|
||||
<p>Changes the placement of the icon toolbar.</p>
|
||||
<p><img alt="toolbarPlacement" src="../img/toolbarPlacement.png" /></p>
|
||||
<h4 id="toolbarplacement_1">toolbarplacement</h4>
|
||||
<p>Returns a <code>string</code> variable with the currently set <code>options.toolbarplacement</code> option.</p>
|
||||
<h4 id="toolbarplacement-string">toolbarplacement, [string]</h4>
|
||||
<p>Takes a <code>string</code> value. Valid values are <code>'default'</code>, <code>'top'</code> and <code>'bottom'</code>.</p>
|
||||
<p>Changes the placement of the toolbar where the today, clear, component switch icon are located.</p>
|
||||
<hr />
|
||||
<h3 id="buttons">buttons</h3>
|
||||
<pre><code>Default: {
|
||||
showToday: false,
|
||||
showClear: false,
|
||||
showClose: false
|
||||
}
|
||||
Accepts: object with all or some of the parameters above
|
||||
</code></pre>
|
||||
<p>Change the default toolbar buttons for the pickers functions.</p>
|
||||
<h4 id="buttons_1">buttons</h4>
|
||||
<p>Returns an <code>Ojbect</code> of <code>options.buttons</code> </p>
|
||||
<h4 id="buttons-buttons">buttons, [buttons]</h4>
|
||||
<p>Takes an <code>Ojbect</code> of <code>boolean</code>.</p>
|
||||
<h5 id="throws_6">Throws</h5>
|
||||
<ul>
|
||||
<li><code>TypeError</code> - if buttons parameter is not an <code>Ojbect</code></li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="widgetpositioning">widgetPositioning</h3>
|
||||
<pre><code>Default: {
|
||||
horizontal: 'auto'
|
||||
vertical: 'auto'
|
||||
}
|
||||
Accepts: object with the all or one of the parameters above
|
||||
horizontal: 'auto', 'left', 'right'
|
||||
vertical: 'auto', 'top', 'bottom'
|
||||
</code></pre>
|
||||
<h4 id="widgetpositioning_1">widgetPositioning</h4>
|
||||
<p>Returns the currently set <code>options.widgetPositioning</code> object containing two keys <code>horizontal</code> and <code>vertical</code></p>
|
||||
<h4 id="widgetpositioning-positioningobject">widgetPositioning, [positioningObject]</h4>
|
||||
<p>Takes an object parameter that can contain two keys <code>vertical</code> and <code>horizontal</code> each having a value of <code>'auto', 'top', 'bottom'</code> for <code>vertical</code> and <code>'auto', 'left', 'right'</code> for <code>horizontal</code> which defines where the dropdown with the widget will appear relative to the input element the component is attached to.</p>
|
||||
<p><code>'auto'</code> is the default value for both <code>horizontal</code> and <code>vertical</code> 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.</p>
|
||||
<hr />
|
||||
<h3 id="widgetparent">widgetParent</h3>
|
||||
<pre><code>Default: null
|
||||
Accepts: string or jQuery object
|
||||
</code></pre>
|
||||
<p>On picker show, places the widget at the identifier (string) or jQuery object <strong>if</strong> the element has css <code>position: 'relative'</code></p>
|
||||
<h4 id="widgetparent_1">widgetParent</h4>
|
||||
<p>Returns a <code>$(element)</code> variable with the currently set <code>options.widgetParent</code> option.</p>
|
||||
<h4 id="widgetparent-widgetparent">widgetParent, [widgetParent]</h4>
|
||||
<p>Takes a <code>string</code> or <code>$(element)</code> value.</p>
|
||||
<hr />
|
||||
<h3 id="keepopen">keepOpen</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>Will cause the date picker to stay open after selecting a date.</p>
|
||||
<h4 id="keepopen_1">keepOpen</h4>
|
||||
<p>Returns a <code>boolean</code> variable with the currently set <code>options.keepOpen</code> option.</p>
|
||||
<h4 id="keepopen-boolean">keepOpen, [boolean]</h4>
|
||||
<p>Takes a <code>boolean</code> value.</p>
|
||||
<hr />
|
||||
<h3 id="inline">inline</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>Will display the picker inline without the need of a input field. This will also hide borders and shadows.</p>
|
||||
<h4 id="inline_1">inline</h4>
|
||||
<p>Returns a <code>boolean</code> variable with the currently set <code>options.inline</code> option.</p>
|
||||
<h4 id="inline-boolean">inline, [boolean]</h4>
|
||||
<p>Takes a <code>boolean</code> value.</p>
|
||||
<hr />
|
||||
<h3 id="keepinvalid">keepInvalid</h3>
|
||||
<p><small>4.7.14</small></p>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>Will cause the date picker to <strong>not</strong> revert or overwrite invalid dates.</p>
|
||||
<h4 id="keepinvalid_1">keepInvalid</h4>
|
||||
<p>Returns a <code>string</code> variable with the currently set <code>options.keepInvalid</code> option.</p>
|
||||
<h4 id="keepinvalid-boolean">keepInvalid, [boolean]</h4>
|
||||
<p>Takes a <code>boolean</code> value.</p>
|
||||
<p>If <code>true</code>, invalid dates will not be reverted to a previous selection or changed.</p>
|
||||
<hr />
|
||||
<h3 id="keybinds">keyBinds</h3>
|
||||
<pre><code>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();
|
||||
}
|
||||
</code></pre>
|
||||
<p>Allows for custom events to fire on keyboard press.</p>
|
||||
<h4 id="keybinds_1">keyBinds</h4>
|
||||
<p>Returns a <code>string</code> variable with the currently set <code>options.keyBinds</code> option.</p>
|
||||
<h4 id="keybinds-object">keyBinds, [object]</h4>
|
||||
<p>Takes an <code>object</code> value.</p>
|
||||
<p>Allows for several <code>keyBinding</code> functions to be specified for ease of access or accessibility. See the options page for defaults.</p>
|
||||
<hr />
|
||||
<h3 id="debug">debug</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>Will cause the date picker to stay open after a <code>blur</code> event.</p>
|
||||
<hr />
|
||||
<h3 id="ignorereadonly">ignoreReadonly</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>Allow date picker show event to fire even when the associated input element has the <code>readonly="readonly"</code> property.</p>
|
||||
<h4 id="ignorereadonly_1">ignoreReadonly</h4>
|
||||
<p>Returns a <code>boolean</code> variable with the currently set <code>options.ignoreReadonly</code> option.</p>
|
||||
<h4 id="ignorereadonly-boolean">ignoreReadonly, [boolean]</h4>
|
||||
<p>Takes a <code>boolean</code> value.</p>
|
||||
<p>Set this to <code>true</code> to allow the picker to be used even if the input field is <code>readonly</code>. This will <strong>not</strong> bypass the <code>disabled</code> property</p>
|
||||
<hr />
|
||||
<h3 id="disabledtimeintervals">disabledTimeIntervals</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>Disables time selection between the given <code>moments</code>.</p>
|
||||
<h4 id="disabledtimeintervals_1">disabledTimeIntervals</h4>
|
||||
<p>Returns an <code>array</code> variable with the currently set <code>options.disabledTimeIntervals</code> option.</p>
|
||||
<h4 id="disabledtimeintervals-array">disabledTimeIntervals, [array]</h4>
|
||||
<p>Takes a <code>array</code> value.</p>
|
||||
<p>The array <strong>must</strong> be in the following format <code>[moment(),moment()]</code></p>
|
||||
<p>For example:</p>
|
||||
<pre><code>disabledTimeIntervals: [[moment({ h: 0 }), moment({ h: 8 })], [moment({ h: 18 }), moment({ h: 24 })]]
|
||||
</code></pre>
|
||||
<p>Will disable times between 12-8am and 6-12pm today</p>
|
||||
<hr />
|
||||
<h3 id="allowinputtoggle">allowInputToggle</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>If <code>true</code>, the picker will show on textbox focus and icon click when used in a button group.</p>
|
||||
<h4 id="allowinputtoggle_1">allowInputToggle</h4>
|
||||
<p>Returns a <code>boolean</code> variable with the currently set <code>options.allowInputToggle</code> option.</p>
|
||||
<h4 id="allowinputtoggle-boolean">allowInputToggle, [boolean]</h4>
|
||||
<p>Takes a <code>boolean</code> value.</p>
|
||||
<p>If <code>true</code>, the picker will show on textbox focus and icon click when used in a button group</p>
|
||||
<hr />
|
||||
<h3 id="focusonshow">focusOnShow</h3>
|
||||
<pre><code>Default: true
|
||||
</code></pre>
|
||||
<p>If <code>false</code>, the textbox will not be given focus when the picker is shown.</p>
|
||||
<h4 id="focusonshow_1">focusOnShow</h4>
|
||||
<p>Returns a <code>boolean</code> variable with the currently set <code>options.focusOnShow</code> option.</p>
|
||||
<h4 id="focusonshow-boolean">focusOnShow, [boolean]</h4>
|
||||
<p>Takes a <code>boolean</code> value.</p>
|
||||
<p>If <code>false</code>, the textbox will not be given focus when the picker is shown</p>
|
||||
<hr />
|
||||
<h3 id="endisabledhours">en/disabledHours</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<h4 id="disabledhours">disabledHours</h4>
|
||||
<p>Returns an <code>array</code> variable with the currently set <code>options.en/disabledHours</code> option.</p>
|
||||
<h4 id="disabledhours-boolean">disabledHours, boolean</h4>
|
||||
<p>Takes a <code>array</code> value.</p>
|
||||
<p>Must be in 24 hour format. Will allow or disallow hour selections (much like <code>disabledTimeIntervals</code>) but will affect all days.</p>
|
||||
<p>Like <code>en/disabledDates</code>, these options are mutually exclusive and will reset one of the options back to false.</p>
|
||||
<pre><code>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]
|
||||
</code></pre>
|
||||
<hr />
|
||||
<h3 id="viewdate">viewDate</h3>
|
||||
<pre><code>Default: false
|
||||
</code></pre>
|
||||
<p>This will change the <code>viewDate</code> without changing or setting the selected date.</p>
|
||||
<hr />
|
||||
<h3 id="parseinputdate">parseInputDate</h3>
|
||||
<h4 id="parseinputdate_1">parseInputDate</h4>
|
||||
<p>Returns a <code>function</code> with the currently set <code>options.parseInputDate</code></p>
|
||||
<h4 id="parseinputdate-function">parseInputDate, [function]</h4>
|
||||
<p>Takes a <code>function</code></p>
|
||||
<p>Allows custom input formatting For example: the user can enter 'yesterday' or '30 days ago.</p>
|
||||
<p>Example:</p>
|
||||
<pre><code>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;
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="tooltips">tooltips</h3>
|
||||
<pre><code>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'
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
<p>This will change the <code>tooltips</code> over each icon to a custom string.</p>
|
||||
<h4 id="tooltips_1">tooltips</h4>
|
||||
<p>Returns an <code>Ojbect</code> of <code>options.tooltips</code> </p>
|
||||
<h4 id="tooltips-tooltips">tooltips, [tooltips]</h4>
|
||||
<p>Takes an <code>Ojbect</code> of <code>strings</code>.</p>
|
||||
<h5 id="throws_7">Throws</h5>
|
||||
<ul>
|
||||
<li><code>TypeError</code> - if <code>tooltips</code> parameter is not an <code>Ojbect</code></li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="timezone">timeZone</h3>
|
||||
<pre><code>timeZone: ''
|
||||
</code></pre>
|
||||
<p>Allows the setting of the Time Zone. You must include <a href="http://momentjs.com/timezone/"><code>moment-timezone.js</code></a> and <code>moment-timzone</code> data. See moment timezone documentation for usage.</p>
|
||||
<h4 id="timezone_1">timeZone</h4>
|
||||
<p>Returns an <code>string</code> of <code>options.timeZone</code> </p>
|
||||
<h4 id="timezone-timezone">timeZone, [timeZone]</h4>
|
||||
<p>Takes an <code>string</code> of a valid timezone.</p>
|
||||
<h5 id="throws_8">Throws</h5>
|
||||
<ul>
|
||||
<li><code>TypeError</code> - if <code>tooltips</code> parameter is not an <code>string</code></li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="allowmultidate">allowMultidate</h3>
|
||||
<pre><code>allowMultidate: false
|
||||
</code></pre>
|
||||
<p>Allows the setting of multiple dates.</p>
|
||||
<h4 id="allowmultidate_1">allowMultidate</h4>
|
||||
<p>Returns an <code>boolean</code> of <code>options.allowMultidate</code> </p>
|
||||
<h4 id="allowmultidate-allowmultidate">allowMultidate, [allowMultidate]</h4>
|
||||
<p>Takes an <code>boolean</code>.</p>
|
||||
<h5 id="throws_9">Throws</h5>
|
||||
<ul>
|
||||
<li><code>TypeError</code> - if <code>allowMultidate</code> parameter is not an <code>boolean</code></li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h3 id="multidateseparator">multidateSeparator</h3>
|
||||
<pre><code>multidateSeparator: ','
|
||||
</code></pre>
|
||||
<p>Used with <code>allowMultidate</code>. E.g. <code>1/1/2017,1/2/2017</code></p>
|
||||
<h4 id="multidateseparator_1">multidateSeparator</h4>
|
||||
<p>Returns an <code>string</code> of <code>options.multidateSeparator</code> </p>
|
||||
<h4 id="multidateseparator-multidateseparator">multidateSeparator, [multidateSeparator]</h4>
|
||||
<p>Takes an <code>string</code> of a valid timezone.</p>
|
||||
<h5 id="throws_10">Throws</h5>
|
||||
<ul>
|
||||
<li><code>TypeError</code> - if <code>multidateSeparator</code> parameter is not an <code>string</code></li>
|
||||
<li><code>TypeError</code> - if <code>multidateSeparator</code> parameter is longer then 1 character</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<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>
|
||||
|
|
@ -1,853 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../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">
|
||||
<title>Usage - Tempus Dominus - Bootstrap 4</title>
|
||||
<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" />
|
||||
<link href="../theme/css/base.css" rel="stylesheet">
|
||||
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/github.min.css" rel="stylesheet">
|
||||
<link href="../theme/css/tempusdominus-bootstrap-4.css" rel="stylesheet">
|
||||
<!-- 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>
|
||||
<script>var base_url = '..';</script>
|
||||
|
||||
<script src="../theme/js/base.js"></script>
|
||||
|
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
|
||||
|
||||
|
||||
<script src="../theme/js/tempusdominus-bootstrap-4.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="..">Tempus Dominus Bootstrap 4</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./">Usage</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Installing/">Installing</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Functions/">Functions</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Options/">Options</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Events/">Events</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Changelog/">Change Log</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../ContributorsGuide/">Dev Guide</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../Extras/">Extras</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="../FAQ/">FAQs</a>
|
||||
</li>
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-3 col-xl-2 bd-sidebar"><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">
|
||||
<li class="active bd-sidenav-active"><a href="#bootstrap4-v5-docs">Bootstrap4 v5 Docs</a></li>
|
||||
<li><a href="#minimum-setup">Minimum Setup</a></li>
|
||||
<li><a href="#using-locales">Using Locales</a></li>
|
||||
<li><a href="#time-only">Time Only</a></li>
|
||||
<li><a href="#date-only">Date Only</a></li>
|
||||
<li><a href="#no-icon-input-field-only">No Icon (input field only):</a></li>
|
||||
<li><a href="#enableddisabled-dates">Enabled/Disabled Dates</a></li>
|
||||
<li><a href="#linked-pickers">Linked Pickers</a></li>
|
||||
<li><a href="#custom-icons">Custom Icons</a></li>
|
||||
<li><a href="#view-mode">View Mode</a></li>
|
||||
<li><a href="#min-view-mode">Min View Mode</a></li>
|
||||
<li><a href="#disabled-days-of-the-week">Disabled Days of the Week</a></li>
|
||||
<li><a href="#inline">Inline</a></li>
|
||||
<li><a href="#multidate">Multidate</a></li>
|
||||
<li><a href="#setting-options">Setting Options</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav></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">Usage</h1>
|
||||
|
||||
|
||||
<h1 id="bootstrap4-v5-docs">Bootstrap4 v5 Docs</h1>
|
||||
<div class="alert alert-info">
|
||||
<strong>Note</strong>
|
||||
All functions are accessed via the <code>$('#datetimepicker').datetimepicker(FUNCTION)</code>
|
||||
</div>
|
||||
|
||||
<h3 id="minimum-setup">Minimum Setup</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code">Code</h4>
|
||||
<pre><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>
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="using-locales">Using Locales</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code_1">Code</h4>
|
||||
<pre><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>
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="time-only">Time Only</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code_2">Code</h4>
|
||||
<pre><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>
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="date-only">Date Only</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code_3">Code</h4>
|
||||
<pre><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>
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="no-icon-input-field-only">No Icon (input field only):</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code_4">Code</h4>
|
||||
<pre><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>
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="enableddisabled-dates">Enabled/Disabled Dates</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code_5">Code</h4>
|
||||
<pre><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>
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="linked-pickers">Linked Pickers</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code_6">Code</h4>
|
||||
<pre><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>
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="custom-icons">Custom Icons</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code_7">Code</h4>
|
||||
<pre><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>
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="view-mode">View Mode</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code_8">Code</h4>
|
||||
<pre><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>
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="min-view-mode">Min View Mode</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code_9">Code</h4>
|
||||
<pre><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>
|
||||
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="disabled-days-of-the-week">Disabled Days of the Week</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code_10">Code</h4>
|
||||
<pre><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>
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="inline">Inline</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code_11">Code</h4>
|
||||
<pre><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>
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="multidate">Multidate</h3>
|
||||
<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>
|
||||
|
||||
<h4 id="code_12">Code</h4>
|
||||
<pre><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>
|
||||
</code></pre>
|
||||
|
||||
<hr />
|
||||
<h3 id="setting-options">Setting Options</h3>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<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>
|
||||
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/mstile-150x150.png"/>
|
||||
<TileColor>#2b5797</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
|
|
@ -1,206 +0,0 @@
|
|||
/*@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; }
|
||||
|
Before Width: | Height: | Size: 637 B |
|
Before Width: | Height: | Size: 901 B |
|
Before Width: | Height: | Size: 15 KiB |
|
|
@ -1,208 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<meta name="description" content="None">
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="./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">
|
||||
<title>Tempus Dominus - Bootstrap 4</title>
|
||||
<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" />
|
||||
<link href="./theme/css/base.css" rel="stylesheet">
|
||||
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/github.min.css" rel="stylesheet">
|
||||
<link href="./theme/css/tempusdominus-bootstrap-4.css" rel="stylesheet">
|
||||
<!-- 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>
|
||||
<script>var base_url = '.';</script>
|
||||
|
||||
<script src="./theme/js/base.js"></script>
|
||||
|
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
|
||||
|
||||
|
||||
<script src="./theme/js/tempusdominus-bootstrap-4.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body class="bd-home" >
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href=".">Tempus Dominus Bootstrap 4</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="Usage/">Usage</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="Installing/">Installing</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="Functions/">Functions</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="Options/">Options</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="Events/">Events</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="Changelog/">Change Log</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="ContributorsGuide/">Dev Guide</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="Extras/">Extras</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link " href="FAQ/">FAQs</a>
|
||||
</li>
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
|
||||
<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>
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.1/js/tempusdominus-bootstrap-4.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.1/css/tempusdominus-bootstrap-4.min.css" />
|
||||
</code>
|
||||
</pre>
|
||||
<hr class="half-rule"/>
|
||||
<a class="btn btn-outline-primary" href="/Functions">Explore the docs</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<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>
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
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();
|
||||
});
|
||||
});
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"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"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 3.1 KiB |
|
|
@ -1,18 +0,0 @@
|
|||
<?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>
|
||||
|
Before Width: | Height: | Size: 835 B |
|
|
@ -1,36 +0,0 @@
|
|||
/*
|
||||
RequireJS 2.1.16 Copyright (c) 2010-2015, The Dojo Foundation All Rights Reserved.
|
||||
Available via the MIT or new BSD license.
|
||||
see: http://github.com/jrburke/requirejs for details
|
||||
*/
|
||||
var requirejs,require,define;
|
||||
(function(ba){function G(b){return"[object Function]"===K.call(b)}function H(b){return"[object Array]"===K.call(b)}function v(b,c){if(b){var d;for(d=0;d<b.length&&(!b[d]||!c(b[d],d,b));d+=1);}}function T(b,c){if(b){var d;for(d=b.length-1;-1<d&&(!b[d]||!c(b[d],d,b));d-=1);}}function t(b,c){return fa.call(b,c)}function m(b,c){return t(b,c)&&b[c]}function B(b,c){for(var d in b)if(t(b,d)&&c(b[d],d))break}function U(b,c,d,e){c&&B(c,function(c,g){if(d||!t(b,g))e&&"object"===typeof c&&c&&!H(c)&&!G(c)&&!(c instanceof
|
||||
RegExp)?(b[g]||(b[g]={}),U(b[g],c,d,e)):b[g]=c});return b}function u(b,c){return function(){return c.apply(b,arguments)}}function ca(b){throw b;}function da(b){if(!b)return b;var c=ba;v(b.split("."),function(b){c=c[b]});return c}function C(b,c,d,e){c=Error(c+"\nhttp://requirejs.org/docs/errors.html#"+b);c.requireType=b;c.requireModules=e;d&&(c.originalError=d);return c}function ga(b){function c(a,k,b){var f,l,c,d,e,g,i,p,k=k&&k.split("/"),h=j.map,n=h&&h["*"];if(a){a=a.split("/");l=a.length-1;j.nodeIdCompat&&
|
||||
Q.test(a[l])&&(a[l]=a[l].replace(Q,""));"."===a[0].charAt(0)&&k&&(l=k.slice(0,k.length-1),a=l.concat(a));l=a;for(c=0;c<l.length;c++)if(d=l[c],"."===d)l.splice(c,1),c-=1;else if(".."===d&&!(0===c||1==c&&".."===l[2]||".."===l[c-1])&&0<c)l.splice(c-1,2),c-=2;a=a.join("/")}if(b&&h&&(k||n)){l=a.split("/");c=l.length;a:for(;0<c;c-=1){e=l.slice(0,c).join("/");if(k)for(d=k.length;0<d;d-=1)if(b=m(h,k.slice(0,d).join("/")))if(b=m(b,e)){f=b;g=c;break a}!i&&(n&&m(n,e))&&(i=m(n,e),p=c)}!f&&i&&(f=i,g=p);f&&(l.splice(0,
|
||||
g,f),a=l.join("/"))}return(f=m(j.pkgs,a))?f:a}function d(a){z&&v(document.getElementsByTagName("script"),function(k){if(k.getAttribute("data-requiremodule")===a&&k.getAttribute("data-requirecontext")===i.contextName)return k.parentNode.removeChild(k),!0})}function e(a){var k=m(j.paths,a);if(k&&H(k)&&1<k.length)return k.shift(),i.require.undef(a),i.makeRequire(null,{skipMap:!0})([a]),!0}function n(a){var k,c=a?a.indexOf("!"):-1;-1<c&&(k=a.substring(0,c),a=a.substring(c+1,a.length));return[k,a]}function p(a,
|
||||
k,b,f){var l,d,e=null,g=k?k.name:null,j=a,p=!0,h="";a||(p=!1,a="_@r"+(K+=1));a=n(a);e=a[0];a=a[1];e&&(e=c(e,g,f),d=m(r,e));a&&(e?h=d&&d.normalize?d.normalize(a,function(a){return c(a,g,f)}):-1===a.indexOf("!")?c(a,g,f):a:(h=c(a,g,f),a=n(h),e=a[0],h=a[1],b=!0,l=i.nameToUrl(h)));b=e&&!d&&!b?"_unnormalized"+(O+=1):"";return{prefix:e,name:h,parentMap:k,unnormalized:!!b,url:l,originalName:j,isDefine:p,id:(e?e+"!"+h:h)+b}}function s(a){var k=a.id,b=m(h,k);b||(b=h[k]=new i.Module(a));return b}function q(a,
|
||||
k,b){var f=a.id,c=m(h,f);if(t(r,f)&&(!c||c.defineEmitComplete))"defined"===k&&b(r[f]);else if(c=s(a),c.error&&"error"===k)b(c.error);else c.on(k,b)}function w(a,b){var c=a.requireModules,f=!1;if(b)b(a);else if(v(c,function(b){if(b=m(h,b))b.error=a,b.events.error&&(f=!0,b.emit("error",a))}),!f)g.onError(a)}function x(){R.length&&(ha.apply(A,[A.length,0].concat(R)),R=[])}function y(a){delete h[a];delete V[a]}function F(a,b,c){var f=a.map.id;a.error?a.emit("error",a.error):(b[f]=!0,v(a.depMaps,function(f,
|
||||
d){var e=f.id,g=m(h,e);g&&(!a.depMatched[d]&&!c[e])&&(m(b,e)?(a.defineDep(d,r[e]),a.check()):F(g,b,c))}),c[f]=!0)}function D(){var a,b,c=(a=1E3*j.waitSeconds)&&i.startTime+a<(new Date).getTime(),f=[],l=[],g=!1,h=!0;if(!W){W=!0;B(V,function(a){var i=a.map,j=i.id;if(a.enabled&&(i.isDefine||l.push(a),!a.error))if(!a.inited&&c)e(j)?g=b=!0:(f.push(j),d(j));else if(!a.inited&&(a.fetched&&i.isDefine)&&(g=!0,!i.prefix))return h=!1});if(c&&f.length)return a=C("timeout","Load timeout for modules: "+f,null,
|
||||
f),a.contextName=i.contextName,w(a);h&&v(l,function(a){F(a,{},{})});if((!c||b)&&g)if((z||ea)&&!X)X=setTimeout(function(){X=0;D()},50);W=!1}}function E(a){t(r,a[0])||s(p(a[0],null,!0)).init(a[1],a[2])}function I(a){var a=a.currentTarget||a.srcElement,b=i.onScriptLoad;a.detachEvent&&!Y?a.detachEvent("onreadystatechange",b):a.removeEventListener("load",b,!1);b=i.onScriptError;(!a.detachEvent||Y)&&a.removeEventListener("error",b,!1);return{node:a,id:a&&a.getAttribute("data-requiremodule")}}function J(){var a;
|
||||
for(x();A.length;){a=A.shift();if(null===a[0])return w(C("mismatch","Mismatched anonymous define() module: "+a[a.length-1]));E(a)}}var W,Z,i,L,X,j={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},h={},V={},$={},A=[],r={},S={},aa={},K=1,O=1;L={require:function(a){return a.require?a.require:a.require=i.makeRequire(a.map)},exports:function(a){a.usingExports=!0;if(a.map.isDefine)return a.exports?r[a.map.id]=a.exports:a.exports=r[a.map.id]={}},module:function(a){return a.module?
|
||||
a.module:a.module={id:a.map.id,uri:a.map.url,config:function(){return m(j.config,a.map.id)||{}},exports:a.exports||(a.exports={})}}};Z=function(a){this.events=m($,a.id)||{};this.map=a;this.shim=m(j.shim,a.id);this.depExports=[];this.depMaps=[];this.depMatched=[];this.pluginMaps={};this.depCount=0};Z.prototype={init:function(a,b,c,f){f=f||{};if(!this.inited){this.factory=b;if(c)this.on("error",c);else this.events.error&&(c=u(this,function(a){this.emit("error",a)}));this.depMaps=a&&a.slice(0);this.errback=
|
||||
c;this.inited=!0;this.ignore=f.ignore;f.enabled||this.enabled?this.enable():this.check()}},defineDep:function(a,b){this.depMatched[a]||(this.depMatched[a]=!0,this.depCount-=1,this.depExports[a]=b)},fetch:function(){if(!this.fetched){this.fetched=!0;i.startTime=(new Date).getTime();var a=this.map;if(this.shim)i.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],u(this,function(){return a.prefix?this.callPlugin():this.load()}));else return a.prefix?this.callPlugin():this.load()}},load:function(){var a=
|
||||
this.map.url;S[a]||(S[a]=!0,i.load(this.map.id,a))},check:function(){if(this.enabled&&!this.enabling){var a,b,c=this.map.id;b=this.depExports;var f=this.exports,l=this.factory;if(this.inited)if(this.error)this.emit("error",this.error);else{if(!this.defining){this.defining=!0;if(1>this.depCount&&!this.defined){if(G(l)){if(this.events.error&&this.map.isDefine||g.onError!==ca)try{f=i.execCb(c,l,b,f)}catch(d){a=d}else f=i.execCb(c,l,b,f);this.map.isDefine&&void 0===f&&((b=this.module)?f=b.exports:this.usingExports&&
|
||||
(f=this.exports));if(a)return a.requireMap=this.map,a.requireModules=this.map.isDefine?[this.map.id]:null,a.requireType=this.map.isDefine?"define":"require",w(this.error=a)}else f=l;this.exports=f;if(this.map.isDefine&&!this.ignore&&(r[c]=f,g.onResourceLoad))g.onResourceLoad(i,this.map,this.depMaps);y(c);this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else this.fetch()}},callPlugin:function(){var a=
|
||||
this.map,b=a.id,d=p(a.prefix);this.depMaps.push(d);q(d,"defined",u(this,function(f){var l,d;d=m(aa,this.map.id);var e=this.map.name,P=this.map.parentMap?this.map.parentMap.name:null,n=i.makeRequire(a.parentMap,{enableBuildCallback:!0});if(this.map.unnormalized){if(f.normalize&&(e=f.normalize(e,function(a){return c(a,P,!0)})||""),f=p(a.prefix+"!"+e,this.map.parentMap),q(f,"defined",u(this,function(a){this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),d=m(h,f.id)){this.depMaps.push(f);
|
||||
if(this.events.error)d.on("error",u(this,function(a){this.emit("error",a)}));d.enable()}}else d?(this.map.url=i.nameToUrl(d),this.load()):(l=u(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),l.error=u(this,function(a){this.inited=!0;this.error=a;a.requireModules=[b];B(h,function(a){0===a.map.id.indexOf(b+"_unnormalized")&&y(a.map.id)});w(a)}),l.fromText=u(this,function(f,c){var d=a.name,e=p(d),P=M;c&&(f=c);P&&(M=!1);s(e);t(j.config,b)&&(j.config[d]=j.config[b]);try{g.exec(f)}catch(h){return w(C("fromtexteval",
|
||||
"fromText eval for "+b+" failed: "+h,h,[b]))}P&&(M=!0);this.depMaps.push(e);i.completeLoad(d);n([d],l)}),f.load(a.name,n,l,j))}));i.enable(d,this);this.pluginMaps[d.id]=d},enable:function(){V[this.map.id]=this;this.enabling=this.enabled=!0;v(this.depMaps,u(this,function(a,b){var c,f;if("string"===typeof a){a=p(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=m(L,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;q(a,"defined",u(this,function(a){this.defineDep(b,
|
||||
a);this.check()}));this.errback?q(a,"error",u(this,this.errback)):this.events.error&&q(a,"error",u(this,function(a){this.emit("error",a)}))}c=a.id;f=h[c];!t(L,c)&&(f&&!f.enabled)&&i.enable(a,this)}));B(this.pluginMaps,u(this,function(a){var b=m(h,a.id);b&&!b.enabled&&i.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){v(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};i={config:j,contextName:b,
|
||||
registry:h,defined:r,urlFetched:S,defQueue:A,Module:Z,makeModuleMap:p,nextTick:g.nextTick,onError:w,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");var b=j.shim,c={paths:!0,bundles:!0,config:!0,map:!0};B(a,function(a,b){c[b]?(j[b]||(j[b]={}),U(j[b],a,!0,!0)):j[b]=a});a.bundles&&B(a.bundles,function(a,b){v(a,function(a){a!==b&&(aa[a]=b)})});a.shim&&(B(a.shim,function(a,c){H(a)&&(a={deps:a});if((a.exports||a.init)&&!a.exportsFn)a.exportsFn=i.makeShimExports(a);
|
||||
b[c]=a}),j.shim=b);a.packages&&v(a.packages,function(a){var b,a="string"===typeof a?{name:a}:a;b=a.name;a.location&&(j.paths[b]=a.location);j.pkgs[b]=a.name+"/"+(a.main||"main").replace(ia,"").replace(Q,"")});B(h,function(a,b){!a.inited&&!a.map.unnormalized&&(a.map=p(b))});if(a.deps||a.callback)i.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(ba,arguments));return b||a.exports&&da(a.exports)}},makeRequire:function(a,e){function j(c,d,m){var n,
|
||||
q;e.enableBuildCallback&&(d&&G(d))&&(d.__requireJsBuild=!0);if("string"===typeof c){if(G(d))return w(C("requireargs","Invalid require call"),m);if(a&&t(L,c))return L[c](h[a.id]);if(g.get)return g.get(i,c,a,j);n=p(c,a,!1,!0);n=n.id;return!t(r,n)?w(C("notloaded",'Module name "'+n+'" has not been loaded yet for context: '+b+(a?"":". Use require([])"))):r[n]}J();i.nextTick(function(){J();q=s(p(null,a));q.skipMap=e.skipMap;q.init(c,d,m,{enabled:!0});D()});return j}e=e||{};U(j,{isBrowser:z,toUrl:function(b){var d,
|
||||
e=b.lastIndexOf("."),k=b.split("/")[0];if(-1!==e&&(!("."===k||".."===k)||1<e))d=b.substring(e,b.length),b=b.substring(0,e);return i.nameToUrl(c(b,a&&a.id,!0),d,!0)},defined:function(b){return t(r,p(b,a,!1,!0).id)},specified:function(b){b=p(b,a,!1,!0).id;return t(r,b)||t(h,b)}});a||(j.undef=function(b){x();var c=p(b,a,!0),e=m(h,b);d(b);delete r[b];delete S[c.url];delete $[b];T(A,function(a,c){a[0]===b&&A.splice(c,1)});e&&(e.events.defined&&($[b]=e.events),y(b))});return j},enable:function(a){m(h,a.id)&&
|
||||
s(a).enable()},completeLoad:function(a){var b,c,d=m(j.shim,a)||{},g=d.exports;for(x();A.length;){c=A.shift();if(null===c[0]){c[0]=a;if(b)break;b=!0}else c[0]===a&&(b=!0);E(c)}c=m(h,a);if(!b&&!t(r,a)&&c&&!c.inited){if(j.enforceDefine&&(!g||!da(g)))return e(a)?void 0:w(C("nodefine","No define call for "+a,null,[a]));E([a,d.deps||[],d.exportsFn])}D()},nameToUrl:function(a,b,c){var d,e,h;(d=m(j.pkgs,a))&&(a=d);if(d=m(aa,a))return i.nameToUrl(d,b,c);if(g.jsExtRegExp.test(a))d=a+(b||"");else{d=j.paths;
|
||||
a=a.split("/");for(e=a.length;0<e;e-=1)if(h=a.slice(0,e).join("/"),h=m(d,h)){H(h)&&(h=h[0]);a.splice(0,e,h);break}d=a.join("/");d+=b||(/^data\:|\?/.test(d)||c?"":".js");d=("/"===d.charAt(0)||d.match(/^[\w\+\.\-]+:/)?"":j.baseUrl)+d}return j.urlArgs?d+((-1===d.indexOf("?")?"?":"&")+j.urlArgs):d},load:function(a,b){g.load(i,a,b)},execCb:function(a,b,c,d){return b.apply(d,c)},onScriptLoad:function(a){if("load"===a.type||ja.test((a.currentTarget||a.srcElement).readyState))N=null,a=I(a),i.completeLoad(a.id)},
|
||||
onScriptError:function(a){var b=I(a);if(!e(b.id))return w(C("scripterror","Script error for: "+b.id,a,[b.id]))}};i.require=i.makeRequire();return i}var g,x,y,D,I,E,N,J,s,O,ka=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,la=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,Q=/\.js$/,ia=/^\.\//;x=Object.prototype;var K=x.toString,fa=x.hasOwnProperty,ha=Array.prototype.splice,z=!!("undefined"!==typeof window&&"undefined"!==typeof navigator&&window.document),ea=!z&&"undefined"!==typeof importScripts,ja=
|
||||
z&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,Y="undefined"!==typeof opera&&"[object Opera]"===opera.toString(),F={},q={},R=[],M=!1;if("undefined"===typeof define){if("undefined"!==typeof requirejs){if(G(requirejs))return;q=requirejs;requirejs=void 0}"undefined"!==typeof require&&!G(require)&&(q=require,require=void 0);g=requirejs=function(b,c,d,e){var n,p="_";!H(b)&&"string"!==typeof b&&(n=b,H(c)?(b=c,c=d,d=e):b=[]);n&&n.context&&(p=n.context);(e=m(F,p))||(e=F[p]=g.s.newContext(p));
|
||||
n&&e.configure(n);return e.require(b,c,d)};g.config=function(b){return g(b)};g.nextTick="undefined"!==typeof setTimeout?function(b){setTimeout(b,4)}:function(b){b()};require||(require=g);g.version="2.1.16";g.jsExtRegExp=/^\/|:|\?|\.js$/;g.isBrowser=z;x=g.s={contexts:F,newContext:ga};g({});v(["toUrl","undef","defined","specified"],function(b){g[b]=function(){var c=F._;return c.require[b].apply(c,arguments)}});if(z&&(y=x.head=document.getElementsByTagName("head")[0],D=document.getElementsByTagName("base")[0]))y=
|
||||
x.head=D.parentNode;g.onError=ca;g.createNode=function(b){var c=b.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");c.type=b.scriptType||"text/javascript";c.charset="utf-8";c.async=!0;return c};g.load=function(b,c,d){var e=b&&b.config||{};if(z)return e=g.createNode(e,c,d),e.setAttribute("data-requirecontext",b.contextName),e.setAttribute("data-requiremodule",c),e.attachEvent&&!(e.attachEvent.toString&&0>e.attachEvent.toString().indexOf("[native code"))&&
|
||||
!Y?(M=!0,e.attachEvent("onreadystatechange",b.onScriptLoad)):(e.addEventListener("load",b.onScriptLoad,!1),e.addEventListener("error",b.onScriptError,!1)),e.src=d,J=e,D?y.insertBefore(e,D):y.appendChild(e),J=null,e;if(ea)try{importScripts(d),b.completeLoad(c)}catch(m){b.onError(C("importscripts","importScripts failed for "+c+" at "+d,m,[c]))}};z&&!q.skipDataMain&&T(document.getElementsByTagName("script"),function(b){y||(y=b.parentNode);if(I=b.getAttribute("data-main"))return s=I,q.baseUrl||(E=s.split("/"),
|
||||
s=E.pop(),O=E.length?E.join("/")+"/":"./",q.baseUrl=O),s=s.replace(Q,""),g.jsExtRegExp.test(s)&&(s=I),q.deps=q.deps?q.deps.concat(s):[s],!0});define=function(b,c,d){var e,g;"string"!==typeof b&&(d=c,c=b,b=null);H(c)||(d=c,c=null);!c&&G(d)&&(c=[],d.length&&(d.toString().replace(ka,"").replace(la,function(b,d){c.push(d)}),c=(1===d.length?["require"]:["require","exports","module"]).concat(c)));if(M){if(!(e=J))N&&"interactive"===N.readyState||T(document.getElementsByTagName("script"),function(b){if("interactive"===
|
||||
b.readyState)return N=b}),e=N;e&&(b||(b=e.getAttribute("data-requiremodule")),g=F[e.getAttribute("data-requirecontext")])}(g?g.defQueue:R).push([b,c,d])};define.amd={jQuery:!0};g.exec=function(b){return eval(b)};g(q)}})(this);
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<article>
|
||||
<h3><a href="{{location}}">{{title}}</a></h3>
|
||||
<p>{{summary}}</p>
|
||||
</article>
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
require.config({
|
||||
baseUrl: base_url + "/search/"
|
||||
});
|
||||
|
||||
require([
|
||||
'mustache.min',
|
||||
'lunr.min',
|
||||
'text!search-results-template.mustache',
|
||||
'text!search_index.json',
|
||||
], function (Mustache, lunr, results_template, data) {
|
||||
"use strict";
|
||||
|
||||
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 decodeURIComponent(sParameterName[1].replace(/\+/g, '%20'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var index = lunr(function () {
|
||||
this.field('title', {boost: 10});
|
||||
this.field('text');
|
||||
this.ref('location');
|
||||
});
|
||||
|
||||
data = JSON.parse(data);
|
||||
var documents = {};
|
||||
|
||||
for (var i=0; i < data.docs.length; i++){
|
||||
var doc = data.docs[i];
|
||||
doc.location = base_url + doc.location;
|
||||
index.add(doc);
|
||||
documents[doc.location] = doc;
|
||||
}
|
||||
|
||||
var search = function(){
|
||||
|
||||
var query = document.getElementById('mkdocs-search-query').value;
|
||||
var search_results = document.getElementById("mkdocs-search-results");
|
||||
while (search_results.firstChild) {
|
||||
search_results.removeChild(search_results.firstChild);
|
||||
}
|
||||
|
||||
if(query === ''){
|
||||
return;
|
||||
}
|
||||
|
||||
var results = index.search(query);
|
||||
|
||||
if (results.length > 0){
|
||||
for (var i=0; i < results.length; i++){
|
||||
var result = results[i];
|
||||
doc = documents[result.ref];
|
||||
doc.base_url = base_url;
|
||||
doc.summary = doc.text.substring(0, 200);
|
||||
var html = Mustache.to_html(results_template, doc);
|
||||
search_results.insertAdjacentHTML('beforeend', html);
|
||||
}
|
||||
} else {
|
||||
search_results.insertAdjacentHTML('beforeend', "<p>No results found</p>");
|
||||
}
|
||||
|
||||
if(jQuery){
|
||||
/*
|
||||
* We currently only automatically hide bootstrap models. This
|
||||
* requires jQuery to work.
|
||||
*/
|
||||
jQuery('#mkdocs_search_modal a').click(function(){
|
||||
jQuery('#mkdocs_search_modal').modal('hide');
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
var search_input = document.getElementById('mkdocs-search-query');
|
||||
|
||||
var term = getSearchTerm();
|
||||
if (term){
|
||||
search_input.value = term;
|
||||
search();
|
||||
}
|
||||
|
||||
if (search_input){search_input.addEventListener("keyup", search);}
|
||||
|
||||
});
|
||||
|
|
@ -1,390 +0,0 @@
|
|||
/**
|
||||
* @license RequireJS text 2.0.12 Copyright (c) 2010-2014, The Dojo Foundation All Rights Reserved.
|
||||
* Available via the MIT or new BSD license.
|
||||
* see: http://github.com/requirejs/text for details
|
||||
*/
|
||||
/*jslint regexp: true */
|
||||
/*global require, XMLHttpRequest, ActiveXObject,
|
||||
define, window, process, Packages,
|
||||
java, location, Components, FileUtils */
|
||||
|
||||
define(['module'], function (module) {
|
||||
'use strict';
|
||||
|
||||
var text, fs, Cc, Ci, xpcIsWindows,
|
||||
progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'],
|
||||
xmlRegExp = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,
|
||||
bodyRegExp = /<body[^>]*>\s*([\s\S]+)\s*<\/body>/im,
|
||||
hasLocation = typeof location !== 'undefined' && location.href,
|
||||
defaultProtocol = hasLocation && location.protocol && location.protocol.replace(/\:/, ''),
|
||||
defaultHostName = hasLocation && location.hostname,
|
||||
defaultPort = hasLocation && (location.port || undefined),
|
||||
buildMap = {},
|
||||
masterConfig = (module.config && module.config()) || {};
|
||||
|
||||
text = {
|
||||
version: '2.0.12',
|
||||
|
||||
strip: function (content) {
|
||||
//Strips <?xml ...?> declarations so that external SVG and XML
|
||||
//documents can be added to a document without worry. Also, if the string
|
||||
//is an HTML document, only the part inside the body tag is returned.
|
||||
if (content) {
|
||||
content = content.replace(xmlRegExp, "");
|
||||
var matches = content.match(bodyRegExp);
|
||||
if (matches) {
|
||||
content = matches[1];
|
||||
}
|
||||
} else {
|
||||
content = "";
|
||||
}
|
||||
return content;
|
||||
},
|
||||
|
||||
jsEscape: function (content) {
|
||||
return content.replace(/(['\\])/g, '\\$1')
|
||||
.replace(/[\f]/g, "\\f")
|
||||
.replace(/[\b]/g, "\\b")
|
||||
.replace(/[\n]/g, "\\n")
|
||||
.replace(/[\t]/g, "\\t")
|
||||
.replace(/[\r]/g, "\\r")
|
||||
.replace(/[\u2028]/g, "\\u2028")
|
||||
.replace(/[\u2029]/g, "\\u2029");
|
||||
},
|
||||
|
||||
createXhr: masterConfig.createXhr || function () {
|
||||
//Would love to dump the ActiveX crap in here. Need IE 6 to die first.
|
||||
var xhr, i, progId;
|
||||
if (typeof XMLHttpRequest !== "undefined") {
|
||||
return new XMLHttpRequest();
|
||||
} else if (typeof ActiveXObject !== "undefined") {
|
||||
for (i = 0; i < 3; i += 1) {
|
||||
progId = progIds[i];
|
||||
try {
|
||||
xhr = new ActiveXObject(progId);
|
||||
} catch (e) {}
|
||||
|
||||
if (xhr) {
|
||||
progIds = [progId]; // so faster next time
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return xhr;
|
||||
},
|
||||
|
||||
/**
|
||||
* Parses a resource name into its component parts. Resource names
|
||||
* look like: module/name.ext!strip, where the !strip part is
|
||||
* optional.
|
||||
* @param {String} name the resource name
|
||||
* @returns {Object} with properties "moduleName", "ext" and "strip"
|
||||
* where strip is a boolean.
|
||||
*/
|
||||
parseName: function (name) {
|
||||
var modName, ext, temp,
|
||||
strip = false,
|
||||
index = name.indexOf("."),
|
||||
isRelative = name.indexOf('./') === 0 ||
|
||||
name.indexOf('../') === 0;
|
||||
|
||||
if (index !== -1 && (!isRelative || index > 1)) {
|
||||
modName = name.substring(0, index);
|
||||
ext = name.substring(index + 1, name.length);
|
||||
} else {
|
||||
modName = name;
|
||||
}
|
||||
|
||||
temp = ext || modName;
|
||||
index = temp.indexOf("!");
|
||||
if (index !== -1) {
|
||||
//Pull off the strip arg.
|
||||
strip = temp.substring(index + 1) === "strip";
|
||||
temp = temp.substring(0, index);
|
||||
if (ext) {
|
||||
ext = temp;
|
||||
} else {
|
||||
modName = temp;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
moduleName: modName,
|
||||
ext: ext,
|
||||
strip: strip
|
||||
};
|
||||
},
|
||||
|
||||
xdRegExp: /^((\w+)\:)?\/\/([^\/\\]+)/,
|
||||
|
||||
/**
|
||||
* Is an URL on another domain. Only works for browser use, returns
|
||||
* false in non-browser environments. Only used to know if an
|
||||
* optimized .js version of a text resource should be loaded
|
||||
* instead.
|
||||
* @param {String} url
|
||||
* @returns Boolean
|
||||
*/
|
||||
useXhr: function (url, protocol, hostname, port) {
|
||||
var uProtocol, uHostName, uPort,
|
||||
match = text.xdRegExp.exec(url);
|
||||
if (!match) {
|
||||
return true;
|
||||
}
|
||||
uProtocol = match[2];
|
||||
uHostName = match[3];
|
||||
|
||||
uHostName = uHostName.split(':');
|
||||
uPort = uHostName[1];
|
||||
uHostName = uHostName[0];
|
||||
|
||||
return (!uProtocol || uProtocol === protocol) &&
|
||||
(!uHostName || uHostName.toLowerCase() === hostname.toLowerCase()) &&
|
||||
((!uPort && !uHostName) || uPort === port);
|
||||
},
|
||||
|
||||
finishLoad: function (name, strip, content, onLoad) {
|
||||
content = strip ? text.strip(content) : content;
|
||||
if (masterConfig.isBuild) {
|
||||
buildMap[name] = content;
|
||||
}
|
||||
onLoad(content);
|
||||
},
|
||||
|
||||
load: function (name, req, onLoad, config) {
|
||||
//Name has format: some.module.filext!strip
|
||||
//The strip part is optional.
|
||||
//if strip is present, then that means only get the string contents
|
||||
//inside a body tag in an HTML string. For XML/SVG content it means
|
||||
//removing the <?xml ...?> declarations so the content can be inserted
|
||||
//into the current doc without problems.
|
||||
|
||||
// Do not bother with the work if a build and text will
|
||||
// not be inlined.
|
||||
if (config && config.isBuild && !config.inlineText) {
|
||||
onLoad();
|
||||
return;
|
||||
}
|
||||
|
||||
masterConfig.isBuild = config && config.isBuild;
|
||||
|
||||
var parsed = text.parseName(name),
|
||||
nonStripName = parsed.moduleName +
|
||||
(parsed.ext ? '.' + parsed.ext : ''),
|
||||
url = req.toUrl(nonStripName),
|
||||
useXhr = (masterConfig.useXhr) ||
|
||||
text.useXhr;
|
||||
|
||||
// Do not load if it is an empty: url
|
||||
if (url.indexOf('empty:') === 0) {
|
||||
onLoad();
|
||||
return;
|
||||
}
|
||||
|
||||
//Load the text. Use XHR if possible and in a browser.
|
||||
if (!hasLocation || useXhr(url, defaultProtocol, defaultHostName, defaultPort)) {
|
||||
text.get(url, function (content) {
|
||||
text.finishLoad(name, parsed.strip, content, onLoad);
|
||||
}, function (err) {
|
||||
if (onLoad.error) {
|
||||
onLoad.error(err);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
//Need to fetch the resource across domains. Assume
|
||||
//the resource has been optimized into a JS module. Fetch
|
||||
//by the module name + extension, but do not include the
|
||||
//!strip part to avoid file system issues.
|
||||
req([nonStripName], function (content) {
|
||||
text.finishLoad(parsed.moduleName + '.' + parsed.ext,
|
||||
parsed.strip, content, onLoad);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
write: function (pluginName, moduleName, write, config) {
|
||||
if (buildMap.hasOwnProperty(moduleName)) {
|
||||
var content = text.jsEscape(buildMap[moduleName]);
|
||||
write.asModule(pluginName + "!" + moduleName,
|
||||
"define(function () { return '" +
|
||||
content +
|
||||
"';});\n");
|
||||
}
|
||||
},
|
||||
|
||||
writeFile: function (pluginName, moduleName, req, write, config) {
|
||||
var parsed = text.parseName(moduleName),
|
||||
extPart = parsed.ext ? '.' + parsed.ext : '',
|
||||
nonStripName = parsed.moduleName + extPart,
|
||||
//Use a '.js' file name so that it indicates it is a
|
||||
//script that can be loaded across domains.
|
||||
fileName = req.toUrl(parsed.moduleName + extPart) + '.js';
|
||||
|
||||
//Leverage own load() method to load plugin value, but only
|
||||
//write out values that do not have the strip argument,
|
||||
//to avoid any potential issues with ! in file names.
|
||||
text.load(nonStripName, req, function (value) {
|
||||
//Use own write() method to construct full module value.
|
||||
//But need to create shell that translates writeFile's
|
||||
//write() to the right interface.
|
||||
var textWrite = function (contents) {
|
||||
return write(fileName, contents);
|
||||
};
|
||||
textWrite.asModule = function (moduleName, contents) {
|
||||
return write.asModule(moduleName, fileName, contents);
|
||||
};
|
||||
|
||||
text.write(pluginName, nonStripName, textWrite, config);
|
||||
}, config);
|
||||
}
|
||||
};
|
||||
|
||||
if (masterConfig.env === 'node' || (!masterConfig.env &&
|
||||
typeof process !== "undefined" &&
|
||||
process.versions &&
|
||||
!!process.versions.node &&
|
||||
!process.versions['node-webkit'])) {
|
||||
//Using special require.nodeRequire, something added by r.js.
|
||||
fs = require.nodeRequire('fs');
|
||||
|
||||
text.get = function (url, callback, errback) {
|
||||
try {
|
||||
var file = fs.readFileSync(url, 'utf8');
|
||||
//Remove BOM (Byte Mark Order) from utf8 files if it is there.
|
||||
if (file.indexOf('\uFEFF') === 0) {
|
||||
file = file.substring(1);
|
||||
}
|
||||
callback(file);
|
||||
} catch (e) {
|
||||
if (errback) {
|
||||
errback(e);
|
||||
}
|
||||
}
|
||||
};
|
||||
} else if (masterConfig.env === 'xhr' || (!masterConfig.env &&
|
||||
text.createXhr())) {
|
||||
text.get = function (url, callback, errback, headers) {
|
||||
var xhr = text.createXhr(), header;
|
||||
xhr.open('GET', url, true);
|
||||
|
||||
//Allow plugins direct access to xhr headers
|
||||
if (headers) {
|
||||
for (header in headers) {
|
||||
if (headers.hasOwnProperty(header)) {
|
||||
xhr.setRequestHeader(header.toLowerCase(), headers[header]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Allow overrides specified in config
|
||||
if (masterConfig.onXhr) {
|
||||
masterConfig.onXhr(xhr, url);
|
||||
}
|
||||
|
||||
xhr.onreadystatechange = function (evt) {
|
||||
var status, err;
|
||||
//Do not explicitly handle errors, those should be
|
||||
//visible via console output in the browser.
|
||||
if (xhr.readyState === 4) {
|
||||
status = xhr.status || 0;
|
||||
if (status > 399 && status < 600) {
|
||||
//An http 4xx or 5xx error. Signal an error.
|
||||
err = new Error(url + ' HTTP status: ' + status);
|
||||
err.xhr = xhr;
|
||||
if (errback) {
|
||||
errback(err);
|
||||
}
|
||||
} else {
|
||||
callback(xhr.responseText);
|
||||
}
|
||||
|
||||
if (masterConfig.onXhrComplete) {
|
||||
masterConfig.onXhrComplete(xhr, url);
|
||||
}
|
||||
}
|
||||
};
|
||||
xhr.send(null);
|
||||
};
|
||||
} else if (masterConfig.env === 'rhino' || (!masterConfig.env &&
|
||||
typeof Packages !== 'undefined' && typeof java !== 'undefined')) {
|
||||
//Why Java, why is this so awkward?
|
||||
text.get = function (url, callback) {
|
||||
var stringBuffer, line,
|
||||
encoding = "utf-8",
|
||||
file = new java.io.File(url),
|
||||
lineSeparator = java.lang.System.getProperty("line.separator"),
|
||||
input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)),
|
||||
content = '';
|
||||
try {
|
||||
stringBuffer = new java.lang.StringBuffer();
|
||||
line = input.readLine();
|
||||
|
||||
// Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324
|
||||
// http://www.unicode.org/faq/utf_bom.html
|
||||
|
||||
// Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK:
|
||||
// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058
|
||||
if (line && line.length() && line.charAt(0) === 0xfeff) {
|
||||
// Eat the BOM, since we've already found the encoding on this file,
|
||||
// and we plan to concatenating this buffer with others; the BOM should
|
||||
// only appear at the top of a file.
|
||||
line = line.substring(1);
|
||||
}
|
||||
|
||||
if (line !== null) {
|
||||
stringBuffer.append(line);
|
||||
}
|
||||
|
||||
while ((line = input.readLine()) !== null) {
|
||||
stringBuffer.append(lineSeparator);
|
||||
stringBuffer.append(line);
|
||||
}
|
||||
//Make sure we return a JavaScript string and not a Java string.
|
||||
content = String(stringBuffer.toString()); //String
|
||||
} finally {
|
||||
input.close();
|
||||
}
|
||||
callback(content);
|
||||
};
|
||||
} else if (masterConfig.env === 'xpconnect' || (!masterConfig.env &&
|
||||
typeof Components !== 'undefined' && Components.classes &&
|
||||
Components.interfaces)) {
|
||||
//Avert your gaze!
|
||||
Cc = Components.classes;
|
||||
Ci = Components.interfaces;
|
||||
Components.utils['import']('resource://gre/modules/FileUtils.jsm');
|
||||
xpcIsWindows = ('@mozilla.org/windows-registry-key;1' in Cc);
|
||||
|
||||
text.get = function (url, callback) {
|
||||
var inStream, convertStream, fileObj,
|
||||
readData = {};
|
||||
|
||||
if (xpcIsWindows) {
|
||||
url = url.replace(/\//g, '\\');
|
||||
}
|
||||
|
||||
fileObj = new FileUtils.File(url);
|
||||
|
||||
//XPCOM, you so crazy
|
||||
try {
|
||||
inStream = Cc['@mozilla.org/network/file-input-stream;1']
|
||||
.createInstance(Ci.nsIFileInputStream);
|
||||
inStream.init(fileObj, 1, 0, false);
|
||||
|
||||
convertStream = Cc['@mozilla.org/intl/converter-input-stream;1']
|
||||
.createInstance(Ci.nsIConverterInputStream);
|
||||
convertStream.init(inStream, "utf-8", inStream.available(),
|
||||
Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
|
||||
|
||||
convertStream.readString(inStream.available(), readData);
|
||||
convertStream.close();
|
||||
inStream.close();
|
||||
callback(readData.value);
|
||||
} catch (e) {
|
||||
throw new Error((fileObj && fileObj.path || '') + ': ' + e);
|
||||
}
|
||||
};
|
||||
}
|
||||
return text;
|
||||
});
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
|
||||
|
||||
<url>
|
||||
<loc>/</loc>
|
||||
<lastmod>2018-10-06</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
|
||||
|
||||
|
||||
<url>
|
||||
<loc>/Usage/</loc>
|
||||
<lastmod>2018-10-06</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
|
||||
|
||||
|
||||
<url>
|
||||
<loc>/Installing/</loc>
|
||||
<lastmod>2018-10-06</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
|
||||
|
||||
|
||||
<url>
|
||||
<loc>/Functions/</loc>
|
||||
<lastmod>2018-10-06</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
|
||||
|
||||
|
||||
<url>
|
||||
<loc>/Options/</loc>
|
||||
<lastmod>2018-10-06</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
|
||||
|
||||
|
||||
<url>
|
||||
<loc>/Events/</loc>
|
||||
<lastmod>2018-10-06</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
|
||||
|
||||
|
||||
<url>
|
||||
<loc>/Changelog/</loc>
|
||||
<lastmod>2018-10-06</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
|
||||
|
||||
|
||||
<url>
|
||||
<loc>/ContributorsGuide/</loc>
|
||||
<lastmod>2018-10-06</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
|
||||
|
||||
|
||||
<url>
|
||||
<loc>/Extras/</loc>
|
||||
<lastmod>2018-10-06</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
|
||||
|
||||
|
||||
<url>
|
||||
<loc>/FAQ/</loc>
|
||||
<lastmod>2018-10-06</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
|
||||
|
||||
</urlset>
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
{% 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 %}
|
||||
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
|
@ -1,105 +0,0 @@
|
|||
<!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>
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/mstile-150x150.png"/>
|
||||
<TileColor>#2b5797</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
{% 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 }}
|
||||
|
|
@ -1,206 +0,0 @@
|
|||
/*@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; }
|
||||
|
Before Width: | Height: | Size: 637 B |
|
Before Width: | Height: | Size: 901 B |
|
Before Width: | Height: | Size: 15 KiB |
|
|
@ -1,62 +0,0 @@
|
|||
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();
|
||||
});
|
||||
});
|
||||
|
|
@ -1 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"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"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 3.1 KiB |
|
|
@ -1,32 +0,0 @@
|
|||
<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>
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
<?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>
|
||||
|
Before Width: | Height: | Size: 835 B |
|
|
@ -1,24 +0,0 @@
|
|||
<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">×</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>
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<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>
|
||||
|
|
@ -1,125 +0,0 @@
|
|||
{
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 6,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"env": {
|
||||
"browser": true,
|
||||
"jquery": true,
|
||||
"node": true
|
||||
},
|
||||
"globals": {
|
||||
"define": false,
|
||||
"moment": false,
|
||||
"jasmine": false,
|
||||
"describe": false,
|
||||
"xdescribe": false,
|
||||
"expect": false,
|
||||
"it": false,
|
||||
"xit": false,
|
||||
"spyOn": false,
|
||||
"beforeEach": false,
|
||||
"afterEach": false
|
||||
},
|
||||
"rules": {
|
||||
"no-cond-assign": 0,
|
||||
"curly": [
|
||||
2,
|
||||
"all"
|
||||
],
|
||||
"no-debugger": 0,
|
||||
"eqeqeq": 2,
|
||||
"no-bitwise": 2,
|
||||
"no-eq-null": 2,
|
||||
"no-eval": 0,
|
||||
"guard-for-in": 2,
|
||||
"wrap-iife": 2,
|
||||
"linebreak-style": 0,
|
||||
"new-cap": 2,
|
||||
"no-caller": 2,
|
||||
"no-empty": [
|
||||
2,
|
||||
{
|
||||
"allowEmptyCatch": true
|
||||
}
|
||||
],
|
||||
"no-new": 0,
|
||||
"no-plusplus": 0,
|
||||
"no-undef": 2,
|
||||
"dot-notation": 0,
|
||||
"strict": [
|
||||
2,
|
||||
"function"
|
||||
],
|
||||
"no-unused-vars": 2,
|
||||
"camelcase": [
|
||||
2,
|
||||
{
|
||||
"properties": "always"
|
||||
}
|
||||
],
|
||||
"quotes": [
|
||||
2,
|
||||
"single"
|
||||
],
|
||||
"keyword-spacing": [
|
||||
2,
|
||||
{}
|
||||
],
|
||||
"space-before-blocks": [
|
||||
2,
|
||||
"always"
|
||||
],
|
||||
"space-before-function-paren": [
|
||||
2,
|
||||
{
|
||||
"anonymous": "ignore",
|
||||
"named": "never"
|
||||
}
|
||||
],
|
||||
"one-var": [
|
||||
2,
|
||||
"always"
|
||||
],
|
||||
"padded-blocks": [
|
||||
2,
|
||||
"never"
|
||||
],
|
||||
"array-bracket-spacing": [
|
||||
2,
|
||||
"never",
|
||||
{}
|
||||
],
|
||||
"space-in-parens": [
|
||||
2,
|
||||
"never"
|
||||
],
|
||||
"comma-style": [
|
||||
2,
|
||||
"last"
|
||||
],
|
||||
"space-unary-ops": [
|
||||
2,
|
||||
{
|
||||
"words": false,
|
||||
"nonwords": false
|
||||
}
|
||||
],
|
||||
"space-infix-ops": 2,
|
||||
"no-with": 2,
|
||||
"no-multi-str": 2,
|
||||
"indent": [
|
||||
2,
|
||||
4,
|
||||
{
|
||||
"SwitchCase": 1
|
||||
}
|
||||
],
|
||||
"no-trailing-spaces": 2,
|
||||
"comma-dangle": [
|
||||
2,
|
||||
"never"
|
||||
],
|
||||
"eol-last": 2
|
||||
}
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
site_name: Tempus Dominus - Bootstrap 4
|
||||
repo_url: https://github.com/tempusdominus/bootstrap-4-datetimepicker
|
||||
edit_uri: edit/master/src/docs/
|
||||
extra_javascript: ['theme\js\base.js','//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js','theme\js\tempusdominus-bootstrap-4.js']
|
||||
extra_css: ['theme\css\base.css','//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/github.min.css','theme\css\tempusdominus-bootstrap-4.css']
|
||||
docs_dir: src/docs
|
||||
site_dir: docs
|
||||
theme_dir: src/docs/theme
|
||||
pages:
|
||||
- Tempus Dominus Bootstrap 4: 'index.md'
|
||||
- Usage: 'Usage.md'
|
||||
- Installing: 'Installing.md'
|
||||
- Functions: 'Functions.md'
|
||||
- Options: 'Options.md'
|
||||
- Events: 'Events.md'
|
||||
- Change Log: 'Changelog.md'
|
||||
- Dev Guide: 'ContributorsGuide.md'
|
||||
- Extras: 'Extras.md'
|
||||
- FAQs: 'FAQ.md'
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
{
|
||||
"license": "MIT",
|
||||
"main": "build/js/tempusdominus-bootstrap-4.js",
|
||||
"name": "tempusdominus-bootstrap-4",
|
||||
"author": "Jonathan Peterson",
|
||||
"bugs": {
|
||||
"url": "https://github.com/tempusdominus/bootstrap-4/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"bootstrap": ">=4.1.2",
|
||||
"jquery": "^3.0",
|
||||
"moment": "^2.22.2",
|
||||
"moment-timezone": "^0.5.11",
|
||||
"popper.js": "^1.14.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bootstrap": ">=4.1.2",
|
||||
"jquery": "^3.0",
|
||||
"popper.js": "^1.14.3",
|
||||
"moment": "^2.17",
|
||||
"moment-timezone": "^0.5.11",
|
||||
"tempusdominus-core": "5.0.3"
|
||||
},
|
||||
"scripts": {
|
||||
"change-version": "node grunt/change-version.js",
|
||||
"clean-css": "cleancss --skip-advanced --source-map --output dist/css/bootstrap.min.css dist/css/bootstrap.css && cleancss --skip-advanced --source-map --output dist/css/bootstrap-grid.min.css dist/css/bootstrap-grid.css && cleancss --skip-advanced --source-map --output dist/css/bootstrap-reboot.min.css dist/css/bootstrap-reboot.css",
|
||||
"clean-css-docs": "cleancss --skip-advanced --source-map --output docs/assets/css/docs.min.css docs/assets/css/docs.min.css",
|
||||
"eslint": "eslint --ignore-path .eslintignore js && eslint --config js/tests/.eslintrc.json --env node grunt Gruntfile.js && eslint --config js/tests/.eslintrc.json docs/assets/js/src docs/assets/js/ie-emulation-modes-warning.js docs/assets/js/ie10-viewport-bug-workaround.js",
|
||||
"htmlhint": "htmlhint --config docs/.htmlhintrc _gh_pages/",
|
||||
"postcss": "postcss --config grunt/postcss.js --replace dist/css/*.css",
|
||||
"postcss-docs": "postcss --config grunt/postcss.js --no-map --replace docs/assets/css/docs.min.css && postcss --config grunt/postcss.js --no-map --replace docs/examples/**/*.css",
|
||||
"scss-lint": "bundle exec scss-lint --config scss/.scss-lint.yml --exclude scss/_normalize.scss scss/*.scss",
|
||||
"scss-lint-docs": "bundle exec scss-lint --config scss/.scss-lint.yml --exclude docs/assets/scss/docs.scss docs/assets/scss/*.scss",
|
||||
"uglify": "uglifyjs --compress warnings=false --mangle --output build/js/tempusdominus-bootstrap-3.min.js build/js/tempusdominus-bootstrap-3.js",
|
||||
"uglify-docs": "uglifyjs --compress warnings=false --mangle --comments '/^!/' --output docs/assets/js/docs.min.js docs/assets/js/vendor/*.js docs/assets/js/src/application.js",
|
||||
"update-shrinkwrap": "npm shrinkwrap --dev && shx mv ./npm-shrinkwrap.json ./grunt/npm-shrinkwrap.json",
|
||||
"test": "npm run eslint && grunt test"
|
||||
},
|
||||
"description": "A date/time picker component designed to work with Bootstrap 4 and Momentjs. For usage, installation and demos see Project Site on GitHub",
|
||||
"devDependencies": {
|
||||
"babel-plugin-transform-es2015-modules-strip": "^0.1.0",
|
||||
"babel-preset-es2015": "^6.24.1",
|
||||
"grunt": "^1.0.3",
|
||||
"grunt-babel": "6.0.0",
|
||||
"grunt-contrib-concat": "^1.0.1",
|
||||
"grunt-contrib-uglify": "latest",
|
||||
"grunt-contrib-watch": "^1.1.0",
|
||||
"grunt-eslint": "^19.0.0",
|
||||
"grunt-jscs": "latest",
|
||||
"grunt-mkdocs": "^0.2.3",
|
||||
"grunt-sass": "3.0.0",
|
||||
"grunt-sass-tilde-importer": "^1.0.2",
|
||||
"grunt-stamp": "^0.3.0",
|
||||
"grunt-string-replace": "latest",
|
||||
"load-grunt-tasks": "latest",
|
||||
"node-sass": "^4.9.3",
|
||||
"tempusdominus-core": "^5.0.3",
|
||||
"uglify-js": "^2.7.5"
|
||||
},
|
||||
"homepage": "https://tempusdominus.github.io/bootstrap-4/",
|
||||
"keywords": [
|
||||
"bootstrap",
|
||||
"datepicker",
|
||||
"datetimepicker",
|
||||
"timepicker",
|
||||
"moment"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/tempusdominus/bootstrap-4.git"
|
||||
},
|
||||
"version": "5.1.2",
|
||||
"files": [
|
||||
"build",
|
||||
"src/js/**/*.js",
|
||||
"src/sass/**/*.scss",
|
||||
"Gruntfile.js"
|
||||
]
|
||||
}
|
||||