diff --git a/.wappler/migrations/DB/20241203212948_ADD - signature data field.js b/.wappler/migrations/DB/20241203212948_ADD - signature data field.js
new file mode 100644
index 0000000..e699290
--- /dev/null
+++ b/.wappler/migrations/DB/20241203212948_ADD - signature data field.js
@@ -0,0 +1,15 @@
+
+exports.up = function(knex) {
+ return knex.schema
+ .table('da', async function (table) {
+ table.string('db_SignatureData');
+ })
+
+};
+
+exports.down = function(knex) {
+ return knex.schema
+ .table('da', async function (table) {
+ table.dropColumn('db_SignatureData');
+ })
+};
diff --git a/.wappler/targets/Development/databases/DB.json b/.wappler/targets/Development/databases/DB.json
index 0b4987c..26ebae5 100644
--- a/.wappler/targets/Development/databases/DB.json
+++ b/.wappler/targets/Development/databases/DB.json
@@ -59,6 +59,20 @@
"unique": false,
"nullable": true
}
+ },
+ "db_SignatureData": {
+ "ui": {
+ "label": "Signature",
+ "help": "Base64 encoded image "
+ },
+ "meta": [],
+ "db": {
+ "type": "string",
+ "maxLength": 255,
+ "primary": false,
+ "unique": false,
+ "nullable": true
+ }
}
}
},
@@ -218,4 +232,4 @@
},
"views": {}
}
-}
\ No newline at end of file
+}
diff --git a/app/api/s3ListBuckets.json b/app/api/s3ListBuckets.json
deleted file mode 100644
index 343fb34..0000000
--- a/app/api/s3ListBuckets.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "listBuckets",
- "module": "s3",
- "action": "listBuckets",
- "options": {
- "provider": "s3"
- },
- "outputType": "object",
- "meta": [
- {
- "name": "Buckets",
- "type": "array",
- "sub": [
- {
- "name": "Name",
- "type": "text"
- },
- {
- "name": "CreationDate",
- "type": "date"
- }
- ]
- },
- {
- "name": "Owner",
- "type": "object",
- "sub": [
- {
- "name": "DisplayName",
- "type": "text"
- },
- {
- "name": "ID",
- "type": "text"
- }
- ]
- }
- ],
- "output": true
-}
\ No newline at end of file
diff --git a/app/api/s3ListFiles.json b/app/api/s3ListFiles.json
deleted file mode 100644
index 18cca0a..0000000
--- a/app/api/s3ListFiles.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "exec": {}
-}
\ No newline at end of file
diff --git a/app/api/s3PutFile.json b/app/api/s3PutFile.json
deleted file mode 100644
index 18cca0a..0000000
--- a/app/api/s3PutFile.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "exec": {}
-}
\ No newline at end of file
diff --git a/app/api/signatureUpload.json b/app/api/signatureUpload.json
deleted file mode 100644
index 0660f87..0000000
--- a/app/api/signatureUpload.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "meta": {
- "$_POST": [
- {
- "type": "text",
- "name": "imageData"
- }
- ]
- },
- "exec": {
- "steps": {
- "name": "fileUpload",
- "module": "upload",
- "action": "upload",
- "options": {
- "fields": "{{$_POST.imageData}}",
- "path": "/uploads",
- "replaceSpace": true,
- "replaceDiacritics": true,
- "asciiOnly": true
- },
- "meta": [
- {
- "name": "name",
- "type": "text"
- },
- {
- "name": "path",
- "type": "text"
- },
- {
- "name": "url",
- "type": "text"
- },
- {
- "name": "type",
- "type": "text"
- },
- {
- "name": "size",
- "type": "text"
- },
- {
- "name": "error",
- "type": "number"
- }
- ],
- "outputType": "array",
- "output": true
- }
- }
-}
\ No newline at end of file
diff --git a/app/api/uploadSignature.json b/app/api/uploadSignature.json
index e797a20..c646ec0 100644
--- a/app/api/uploadSignature.json
+++ b/app/api/uploadSignature.json
@@ -1,61 +1,50 @@
-{
- "meta": {
- "$_POST": [
- {
- "type": "text",
- "name": "imageData"
- }
- ]
+[
+ {
+ "name": "decodedImage",
+ "module": "core",
+ "action": "setvalue",
+ "options": {
+ "value": "image.replace(/^data:image\\/\\w+;base64,/, \"\")"
+ },
+ "meta": [],
+ "outputType": "text",
+ "output": true
},
- "exec": {
- "steps": [
+ {
+ "name": "upload",
+ "module": "upload",
+ "action": "upload",
+ "options": {
+ "fields": "{{decodedImage}}",
+ "path": "/uploads/signatures",
+ "template": "{guid}"
+ },
+ "meta": [
{
- "name": "decodedImage",
- "module": "core",
- "action": "setvalue",
- "options": {
- "value": "{{$_POST.imageData.replace(/^data:image\\/\\w+;base64,/, \"\")}}"
- },
- "meta": [],
- "outputType": "text"
+ "name": "name",
+ "type": "text"
},
{
- "name": "saveSignatureBinary",
- "module": "upload",
- "action": "upload",
- "options": {
- "fields": "{{decodedImage}}",
- "path": "/",
- "template": "{guid}"
- },
- "meta": [
- {
- "name": "name",
- "type": "text"
- },
- {
- "name": "path",
- "type": "text"
- },
- {
- "name": "url",
- "type": "text"
- },
- {
- "name": "type",
- "type": "text"
- },
- {
- "name": "size",
- "type": "text"
- },
- {
- "name": "error",
- "type": "number"
- }
- ],
- "outputType": "text"
+ "name": "path",
+ "type": "text"
+ },
+ {
+ "name": "url",
+ "type": "text"
+ },
+ {
+ "name": "type",
+ "type": "text"
+ },
+ {
+ "name": "size",
+ "type": "text"
+ },
+ {
+ "name": "error",
+ "type": "number"
}
- ]
+ ],
+ "outputType": "text"
}
-}
\ No newline at end of file
+]
\ No newline at end of file
diff --git a/app/config/modules.json b/app/config/modules.json
new file mode 100644
index 0000000..28b6c2f
--- /dev/null
+++ b/app/config/modules.json
@@ -0,0 +1,5 @@
+{
+ "dependencies": {
+ "sharp": "^0.29.3"
+ }
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index 70918a5..ebf2b03 100644
--- a/package.json
+++ b/package.json
@@ -43,7 +43,8 @@
"socket.io": "^4.7.5",
"sqlite3": "^5.1.6",
"unzipper": "^0.12.1",
- "uuid": "^10.0.0"
+ "uuid": "^10.0.0",
+ "sharp": "^0.32.6"
},
"nodemonConfig": {
"watch": [
@@ -55,4 +56,4 @@
],
"ext": "ejs,js,json"
}
-}
+}
\ No newline at end of file
diff --git a/public/ERTSQlite.db b/public/ERTSQlite.db
index 6ea19b6..40eb347 100644
Binary files a/public/ERTSQlite.db and b/public/ERTSQlite.db differ
diff --git a/public/PDF/pdfLibSignature.js b/public/PDF/pdfLibSignature.js
index 1501776..066afbf 100644
--- a/public/PDF/pdfLibSignature.js
+++ b/public/PDF/pdfLibSignature.js
@@ -1,8 +1,12 @@
// JavaScript Document v1.3
console.log("LIBRARY: pdfLibSignature.js")
//let dynamicSignatureElementId = dmx.global.data.signatureElementName // Gets the DYNAMIC ID for the canvas ID
+
const canvas = document.getElementById('signatureCanvas'); // const canvas = document.getElementById('signatureCanvasIndex');
const ctx = canvas.getContext('2d');
+// pull the id fromthe active canvas by detecting the canvas.target
+//and pulling the canvas.id from that -- FUTURE for more than 1 canvas on same page (i.e in a modal)
+//let activeCanvasId = null
let drawing = false;
diff --git a/public/dmxAppConnect/dmxDatePicker/bgthemes/bootstrap.css b/public/dmxAppConnect/dmxDatePicker/bgthemes/bootstrap.css
new file mode 100644
index 0000000..cbbaea6
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/bgthemes/bootstrap.css
@@ -0,0 +1,94 @@
+/* Bootstrap 5.3 Theme */
+
+.daterangepicker {
+ background-color: var(--bs-body-bg);
+ border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color);
+ border-radius: var(--bs-border-radius-sm);
+}
+
+.daterangepicker:before {
+ border-bottom: 7px solid var(--bs-border-color);
+}
+
+.daterangepicker:after {
+ border-bottom: 6px solid var(--bs-body-bg);
+}
+
+.daterangepicker .calendar-table {
+ background-color: var(--bs-body-bg);
+ border: none;
+ color: var(--bs-body-color);
+}
+
+.daterangepicker .calendar-table .next span,
+.daterangepicker .calendar-table .prev span {
+ color: var(--bs-emphasis-color);
+ border: solid var(--bs-emphasis-color);
+ border-width: 0 2px 2px 0;
+}
+
+.daterangepicker td.available:not(.in-range):hover,
+.daterangepicker th.available:not(.in-range):hover {
+ background-color: var(--bs-secondary-bg) !important;
+ color: var(--bs-emphasis-color);
+}
+
+.daterangepicker td.off,
+.daterangepicker td.off.end-date,
+.daterangepicker td.off.in-range,
+.daterangepicker td.off.start-date {
+ background-color: var(--bs-body-bg);
+ color: rgba(var(--bs-body-color-rgb), 0.5);
+}
+
+.daterangepicker td.in-range {
+ background-color: var(--bs-primary-bg-subtle);
+ color: var(--bs-body-color);
+}
+
+.daterangepicker td.in-range:hover {
+ background-color: var(--bs-primary-bg-subtle);
+ color: var(--bs-emphasis-color);
+}
+
+.daterangepicker td.active,
+.daterangepicker td.active:hover {
+ background-color: var(--bs-primary);
+ color: var(--bs-white);
+}
+
+.daterangepicker .drp-buttons {
+ border-top: var(--bs-border-width) var(--bs-border-style)
+ var(--bs-border-color);
+}
+
+.daterangepicker .drp-selected {
+ color: var(--bs-body-color);
+}
+
+.applyBtn {
+ color: var(--bs-white);
+ background-color: var(--bs-primary);
+}
+
+.applyBtn:hover {
+ background-color: var(--bs-primary);
+}
+
+.cancelBtn {
+ color: var(--bs-secondary-color);
+ background-color: var(--bs-secondary-bg);
+}
+
+.cancelBtn:hover {
+ background-color: var(--bs-secondary-bg);
+}
+
+.daterangepicker select.hourselect,
+.daterangepicker select.minuteselect,
+.daterangepicker select.secondsselect,
+.daterangepicker select.ampmselect {
+ background: var(--bs-secondary-bg);
+ border-color: var(--bs-secondary-bg);
+ color: var(--bs-secondary-color);
+}
diff --git a/public/dmxAppConnect/dmxDatePicker/bgthemes/dark-calendar.css b/public/dmxAppConnect/dmxDatePicker/bgthemes/dark-calendar.css
new file mode 100644
index 0000000..1e18b3e
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/bgthemes/dark-calendar.css
@@ -0,0 +1,60 @@
+.daterangepicker {
+ background-color: #343a40;
+ border: 1px solid #111;
+ }
+ .daterangepicker:before {
+ border-bottom: 7px solid #111;
+ }
+ .daterangepicker:after {
+ border-bottom: 6px solid #343a40;
+ }
+ .daterangepicker .calendar-table {
+ background-color: #343a40;
+ border: none;
+ color: #f8f9fa;
+ }
+ .daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span {
+ color: #f8f9fa;
+ border: solid #f8f9fa;
+ border-width: 0 2px 2px 0;
+ }
+ .daterangepicker td.available:not(.in-range):hover, .daterangepicker th.available:not(.in-range):hover {
+ background-color: #495057 !important;
+ }
+ .daterangepicker td.off, .daterangepicker td.off.end-date, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date {
+ background-color: #394046;
+ color: #777;
+ }
+
+ .daterangepicker td.in-range {
+ background-color: #2b2e31;
+ color: #eee;
+ }
+ .daterangepicker td.in-range:hover {
+ background-color: #3c4044;
+
+ }
+ .daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #22262a;
+ color: #f8f9fa;
+ }
+ .daterangepicker .drp-buttons {
+ border-top: 1px solid #3c4044;
+ }
+ .daterangepicker .drp-selected {
+ color: #f8f9fa;
+ }
+ .applyBtn {
+ color: #f8f9fa;
+ background-color: #22262a;
+ }
+ .applyBtn:hover {
+ background-color: #0b0d0e;
+ }
+ .cancelBtn {
+ color: #f8f9fa;
+ background-color: #394046;
+ }
+ .cancelBtn:hover {
+ background-color: #272c2f;
+ }
\ No newline at end of file
diff --git a/public/dmxAppConnect/dmxDatePicker/daterangepicker.min.css b/public/dmxAppConnect/dmxDatePicker/daterangepicker.min.css
new file mode 100644
index 0000000..72f7acd
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/daterangepicker.min.css
@@ -0,0 +1,410 @@
+.daterangepicker {
+ position: absolute;
+ color: inherit;
+ background-color: #fff;
+ border-radius: 4px;
+ border: 1px solid #ddd;
+ width: 278px;
+ max-width: none;
+ padding: 0;
+ margin-top: 7px;
+ top: 100px;
+ left: 20px;
+ z-index: 3001;
+ display: none;
+ font-family: arial;
+ font-size: 15px;
+ line-height: 1em;
+}
+
+.daterangepicker:before, .daterangepicker:after {
+ position: absolute;
+ display: inline-block;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ content: '';
+}
+
+.daterangepicker:before {
+ top: -7px;
+ border-right: 7px solid transparent;
+ border-left: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+}
+
+.daterangepicker:after {
+ top: -6px;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #fff;
+ border-left: 6px solid transparent;
+}
+
+.daterangepicker.opensleft:before {
+ right: 9px;
+}
+
+.daterangepicker.opensleft:after {
+ right: 10px;
+}
+
+.daterangepicker.openscenter:before {
+ left: 0;
+ right: 0;
+ width: 0;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.daterangepicker.openscenter:after {
+ left: 0;
+ right: 0;
+ width: 0;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.daterangepicker.opensright:before {
+ left: 9px;
+}
+
+.daterangepicker.opensright:after {
+ left: 10px;
+}
+
+.daterangepicker.drop-up {
+ margin-top: -7px;
+}
+
+.daterangepicker.drop-up:before {
+ top: initial;
+ bottom: -7px;
+ border-bottom: initial;
+ border-top: 7px solid #ccc;
+}
+
+.daterangepicker.drop-up:after {
+ top: initial;
+ bottom: -6px;
+ border-bottom: initial;
+ border-top: 6px solid #fff;
+}
+
+.daterangepicker.single .daterangepicker .ranges, .daterangepicker.single .drp-calendar {
+ float: none;
+}
+
+.daterangepicker.single .drp-selected {
+ display: none;
+}
+
+.daterangepicker.show-calendar .drp-calendar {
+ display: block;
+}
+
+.daterangepicker.show-calendar .drp-buttons {
+ display: block;
+}
+
+.daterangepicker.auto-apply .drp-buttons {
+ display: none;
+}
+
+.daterangepicker .drp-calendar {
+ display: none;
+ max-width: 270px;
+}
+
+.daterangepicker .drp-calendar.left {
+ padding: 8px 0 8px 8px;
+}
+
+.daterangepicker .drp-calendar.right {
+ padding: 8px;
+}
+
+.daterangepicker .drp-calendar.single .calendar-table {
+ border: none;
+}
+
+.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span {
+ color: #fff;
+ border: solid black;
+ border-width: 0 2px 2px 0;
+ border-radius: 0;
+ display: inline-block;
+ padding: 3px;
+}
+
+.daterangepicker .calendar-table .next span {
+ transform: rotate(-45deg);
+ -webkit-transform: rotate(-45deg);
+}
+
+.daterangepicker .calendar-table .prev span {
+ transform: rotate(135deg);
+ -webkit-transform: rotate(135deg);
+}
+
+.daterangepicker .calendar-table th, .daterangepicker .calendar-table td {
+ white-space: nowrap;
+ text-align: center;
+ vertical-align: middle;
+ min-width: 32px;
+ width: 32px;
+ height: 24px;
+ line-height: 24px;
+ font-size: 12px;
+ border-radius: 4px;
+ border: 1px solid transparent;
+ white-space: nowrap;
+ cursor: pointer;
+}
+
+.daterangepicker .calendar-table {
+ border: 1px solid #fff;
+ border-radius: 4px;
+ background-color: #fff;
+}
+
+.daterangepicker .calendar-table table {
+ width: 100%;
+ margin: 0;
+ border-spacing: 0;
+ border-collapse: collapse;
+}
+
+.daterangepicker td.available:hover, .daterangepicker th.available:hover {
+ background-color: #eee;
+ border-color: transparent;
+ color: inherit;
+}
+
+.daterangepicker td.week, .daterangepicker th.week {
+ font-size: 80%;
+ color: #ccc;
+}
+
+.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date {
+ background-color: #fff;
+ border-color: transparent;
+ color: #999;
+}
+
+.daterangepicker td.in-range {
+ background-color: #ebf4f8;
+ border-color: transparent;
+ color: #000;
+ border-radius: 0;
+}
+
+.daterangepicker td.start-date {
+ border-radius: 4px 0 0 4px;
+}
+
+.daterangepicker td.end-date {
+ border-radius: 0 4px 4px 0;
+}
+
+.daterangepicker td.start-date.end-date {
+ border-radius: 4px;
+}
+
+.daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #357ebd;
+ border-color: transparent;
+ color: #fff;
+}
+
+.daterangepicker th.month {
+ width: auto;
+}
+
+.daterangepicker td.disabled, .daterangepicker option.disabled {
+ color: #999;
+ cursor: not-allowed;
+ text-decoration: line-through;
+}
+
+.daterangepicker select.monthselect, .daterangepicker select.yearselect {
+ font-size: 12px;
+ padding: 1px;
+ height: auto;
+ margin: 0;
+ cursor: default;
+}
+
+.daterangepicker select.monthselect {
+ margin-right: 2%;
+ width: 56%;
+}
+
+.daterangepicker select.yearselect {
+ width: 40%;
+}
+
+.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect {
+ width: 50px;
+ margin: 0 auto;
+ background: #eee;
+ border: 1px solid #eee;
+ padding: 2px;
+ outline: 0;
+ font-size: 12px;
+}
+
+.daterangepicker .calendar-time {
+ text-align: center;
+ margin: 4px auto 0 auto;
+ line-height: 30px;
+ position: relative;
+}
+
+.daterangepicker .calendar-time select.disabled {
+ color: #ccc;
+ cursor: not-allowed;
+}
+
+.daterangepicker .drp-buttons {
+ clear: both;
+ text-align: right;
+ padding: 8px;
+ border-top: 1px solid #ddd;
+ display: none;
+ line-height: 12px;
+ vertical-align: middle;
+}
+
+.daterangepicker .drp-selected {
+ display: inline-block;
+ font-size: 12px;
+ padding-right: 8px;
+}
+
+.daterangepicker .drp-buttons .btn {
+ margin-left: 8px;
+ font-size: 12px;
+ font-weight: bold;
+ padding: 4px 8px;
+}
+
+.daterangepicker.show-ranges.single.rtl .drp-calendar.left {
+ border-right: 1px solid #ddd;
+}
+
+.daterangepicker.show-ranges.single.ltr .drp-calendar.left {
+ border-left: 1px solid #ddd;
+}
+
+.daterangepicker.show-ranges.rtl .drp-calendar.right {
+ border-right: 1px solid #ddd;
+}
+
+.daterangepicker.show-ranges.ltr .drp-calendar.left {
+ border-left: 1px solid #ddd;
+}
+
+.daterangepicker .ranges {
+ float: none;
+ text-align: left;
+ margin: 0;
+}
+
+.daterangepicker.show-calendar .ranges {
+ margin-top: 8px;
+}
+
+.daterangepicker .ranges ul {
+ list-style: none;
+ margin: 0 auto;
+ padding: 0;
+ width: 100%;
+}
+
+.daterangepicker .ranges li {
+ font-size: 12px;
+ padding: 8px 12px;
+ cursor: pointer;
+}
+
+.daterangepicker .ranges li:hover {
+ background-color: #eee;
+}
+
+.daterangepicker .ranges li.active {
+ background-color: #08c;
+ color: #fff;
+}
+
+/* Larger Screen Styling */
+@media (min-width: 564px) {
+ .daterangepicker {
+ width: auto;
+ }
+
+ .daterangepicker .ranges ul {
+ width: 140px;
+ }
+
+ .daterangepicker.single .ranges ul {
+ width: 100%;
+ }
+
+ .daterangepicker.single .drp-calendar.left {
+ clear: none;
+ }
+
+ .daterangepicker.single .ranges, .daterangepicker.single .drp-calendar {
+ float: left;
+ }
+
+ .daterangepicker {
+ direction: ltr;
+ text-align: left;
+ }
+
+ .daterangepicker .drp-calendar.left {
+ clear: left;
+ margin-right: 0;
+ }
+
+ .daterangepicker .drp-calendar.left .calendar-table {
+ border-right: none;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+
+ .daterangepicker .drp-calendar.right {
+ margin-left: 0;
+ }
+
+ .daterangepicker .drp-calendar.right .calendar-table {
+ border-left: none;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+
+ .daterangepicker .drp-calendar.left .calendar-table {
+ padding-right: 8px;
+ }
+
+ .daterangepicker .ranges, .daterangepicker .drp-calendar {
+ float: left;
+ }
+}
+
+@media (min-width: 730px) {
+ .daterangepicker .ranges {
+ width: auto;
+ }
+
+ .daterangepicker .ranges {
+ float: left;
+ }
+
+ .daterangepicker.rtl .ranges {
+ float: right;
+ }
+
+ .daterangepicker .drp-calendar.left {
+ clear: none !important;
+ }
+}
diff --git a/public/dmxAppConnect/dmxDatePicker/daterangepicker.min.js b/public/dmxAppConnect/dmxDatePicker/daterangepicker.min.js
new file mode 100644
index 0000000..7acd02f
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/daterangepicker.min.js
@@ -0,0 +1,8 @@
+/**
+ * Minified by jsDelivr using Terser v3.14.1.
+ * Original file: /npm/daterangepicker@3.1.0/daterangepicker.js
+ *
+ * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
+ */
+!function(t,e){if("function"==typeof define&&define.amd)define(["moment","jquery"],function(t,a){return a.fn||(a.fn={}),"function"!=typeof t&&t.hasOwnProperty("default")&&(t=t.default),e(t,a)});else if("object"==typeof module&&module.exports){var a="undefined"!=typeof window?window.jQuery:void 0;a||(a=require("jquery")).fn||(a.fn={});var i="undefined"!=typeof window&&void 0!==window.moment?window.moment:require("moment");module.exports=e(i,a)}else t.daterangepicker=e(t.moment,t.jQuery)}(this,function(t,e){var a=function(a,i,s){if(this.parentEl="body",this.element=e(a),this.startDate=t().startOf("day"),this.endDate=t().endOf("day"),this.minDate=!1,this.maxDate=!1,this.maxSpan=!1,this.autoApply=!1,this.singleDatePicker=!1,this.showDropdowns=!1,this.minYear=t().subtract(100,"year").format("YYYY"),this.maxYear=t().add(100,"year").format("YYYY"),this.showWeekNumbers=!1,this.showISOWeekNumbers=!1,this.showCustomRangeLabel=!0,this.timePicker=!1,this.timePicker24Hour=!1,this.timePickerIncrement=1,this.timePickerSeconds=!1,this.linkedCalendars=!0,this.autoUpdateInput=!0,this.alwaysShowCalendars=!1,this.ranges={},this.opens="right",this.element.hasClass("pull-right")&&(this.opens="left"),this.drops="down",this.element.hasClass("dropup")&&(this.drops="up"),this.buttonClasses="btn btn-sm",this.applyButtonClasses="btn-primary",this.cancelButtonClasses="btn-default",this.locale={direction:"ltr",format:t.localeData().longDateFormat("L"),separator:" - ",applyLabel:"Apply",cancelLabel:"Cancel",weekLabel:"W",customRangeLabel:"Custom Range",daysOfWeek:t.weekdaysMin(),monthNames:t.monthsShort(),firstDay:t.localeData().firstDayOfWeek()},this.callback=function(){},this.isShowing=!1,this.leftCalendar={},this.rightCalendar={},"object"==typeof i&&null!==i||(i={}),"string"==typeof(i=e.extend(this.element.data(),i)).template||i.template instanceof e||(i.template='
'),this.parentEl=i.parentEl&&e(i.parentEl).length?e(i.parentEl):e(this.parentEl),this.container=e(i.template).appendTo(this.parentEl),"object"==typeof i.locale&&("string"==typeof i.locale.direction&&(this.locale.direction=i.locale.direction),"string"==typeof i.locale.format&&(this.locale.format=i.locale.format),"string"==typeof i.locale.separator&&(this.locale.separator=i.locale.separator),"object"==typeof i.locale.daysOfWeek&&(this.locale.daysOfWeek=i.locale.daysOfWeek.slice()),"object"==typeof i.locale.monthNames&&(this.locale.monthNames=i.locale.monthNames.slice()),"number"==typeof i.locale.firstDay&&(this.locale.firstDay=i.locale.firstDay),"string"==typeof i.locale.applyLabel&&(this.locale.applyLabel=i.locale.applyLabel),"string"==typeof i.locale.cancelLabel&&(this.locale.cancelLabel=i.locale.cancelLabel),"string"==typeof i.locale.weekLabel&&(this.locale.weekLabel=i.locale.weekLabel),"string"==typeof i.locale.customRangeLabel)){(p=document.createElement("textarea")).innerHTML=i.locale.customRangeLabel;var n=p.value;this.locale.customRangeLabel=n}if(this.container.addClass(this.locale.direction),"string"==typeof i.startDate&&(this.startDate=t(i.startDate,this.locale.format)),"string"==typeof i.endDate&&(this.endDate=t(i.endDate,this.locale.format)),"string"==typeof i.minDate&&(this.minDate=t(i.minDate,this.locale.format)),"string"==typeof i.maxDate&&(this.maxDate=t(i.maxDate,this.locale.format)),"object"==typeof i.startDate&&(this.startDate=t(i.startDate)),"object"==typeof i.endDate&&(this.endDate=t(i.endDate)),"object"==typeof i.minDate&&(this.minDate=t(i.minDate)),"object"==typeof i.maxDate&&(this.maxDate=t(i.maxDate)),this.minDate&&this.startDate.isBefore(this.minDate)&&(this.startDate=this.minDate.clone()),this.maxDate&&this.endDate.isAfter(this.maxDate)&&(this.endDate=this.maxDate.clone()),"string"==typeof i.applyButtonClasses&&(this.applyButtonClasses=i.applyButtonClasses),"string"==typeof i.applyClass&&(this.applyButtonClasses=i.applyClass),"string"==typeof i.cancelButtonClasses&&(this.cancelButtonClasses=i.cancelButtonClasses),"string"==typeof i.cancelClass&&(this.cancelButtonClasses=i.cancelClass),"object"==typeof i.maxSpan&&(this.maxSpan=i.maxSpan),"object"==typeof i.dateLimit&&(this.maxSpan=i.dateLimit),"string"==typeof i.opens&&(this.opens=i.opens),"string"==typeof i.drops&&(this.drops=i.drops),"boolean"==typeof i.showWeekNumbers&&(this.showWeekNumbers=i.showWeekNumbers),"boolean"==typeof i.showISOWeekNumbers&&(this.showISOWeekNumbers=i.showISOWeekNumbers),"string"==typeof i.buttonClasses&&(this.buttonClasses=i.buttonClasses),"object"==typeof i.buttonClasses&&(this.buttonClasses=i.buttonClasses.join(" ")),"boolean"==typeof i.showDropdowns&&(this.showDropdowns=i.showDropdowns),"number"==typeof i.minYear&&(this.minYear=i.minYear),"number"==typeof i.maxYear&&(this.maxYear=i.maxYear),"boolean"==typeof i.showCustomRangeLabel&&(this.showCustomRangeLabel=i.showCustomRangeLabel),"boolean"==typeof i.singleDatePicker&&(this.singleDatePicker=i.singleDatePicker,this.singleDatePicker&&(this.endDate=this.startDate.clone())),"boolean"==typeof i.timePicker&&(this.timePicker=i.timePicker),"boolean"==typeof i.timePickerSeconds&&(this.timePickerSeconds=i.timePickerSeconds),"number"==typeof i.timePickerIncrement&&(this.timePickerIncrement=i.timePickerIncrement),"boolean"==typeof i.timePicker24Hour&&(this.timePicker24Hour=i.timePicker24Hour),"boolean"==typeof i.autoApply&&(this.autoApply=i.autoApply),"boolean"==typeof i.autoUpdateInput&&(this.autoUpdateInput=i.autoUpdateInput),"boolean"==typeof i.linkedCalendars&&(this.linkedCalendars=i.linkedCalendars),"function"==typeof i.isInvalidDate&&(this.isInvalidDate=i.isInvalidDate),"function"==typeof i.isCustomDate&&(this.isCustomDate=i.isCustomDate),"boolean"==typeof i.alwaysShowCalendars&&(this.alwaysShowCalendars=i.alwaysShowCalendars),0!=this.locale.firstDay)for(var r=this.locale.firstDay;r>0;)this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()),r--;var o,h,l;if(void 0===i.startDate&&void 0===i.endDate&&e(this.element).is(":text")){var c=e(this.element).val(),d=c.split(this.locale.separator);o=h=null,2==d.length?(o=t(d[0],this.locale.format),h=t(d[1],this.locale.format)):this.singleDatePicker&&""!==c&&(o=t(c,this.locale.format),h=t(c,this.locale.format)),null!==o&&null!==h&&(this.setStartDate(o),this.setEndDate(h))}if("object"==typeof i.ranges){for(l in i.ranges){o="string"==typeof i.ranges[l][0]?t(i.ranges[l][0],this.locale.format):t(i.ranges[l][0]),h="string"==typeof i.ranges[l][1]?t(i.ranges[l][1],this.locale.format):t(i.ranges[l][1]),this.minDate&&o.isBefore(this.minDate)&&(o=this.minDate.clone());var m=this.maxDate;if(this.maxSpan&&m&&o.clone().add(this.maxSpan).isAfter(m)&&(m=o.clone().add(this.maxSpan)),m&&h.isAfter(m)&&(h=m.clone()),!(this.minDate&&h.isBefore(this.minDate,this.timepicker?"minute":"day")||m&&o.isAfter(m,this.timepicker?"minute":"day"))){var p;(p=document.createElement("textarea")).innerHTML=l;n=p.value;this.ranges[n]=[o,h]}}var f="";for(l in this.ranges)f+='- '+l+"
";this.showCustomRangeLabel&&(f+='- '+this.locale.customRangeLabel+"
"),f+="
",this.container.find(".ranges").prepend(f)}"function"==typeof s&&(this.callback=s),this.timePicker||(this.startDate=this.startDate.startOf("day"),this.endDate=this.endDate.endOf("day"),this.container.find(".calendar-time").hide()),this.timePicker&&this.autoApply&&(this.autoApply=!1),this.autoApply&&this.container.addClass("auto-apply"),"object"==typeof i.ranges&&this.container.addClass("show-ranges"),this.singleDatePicker&&(this.container.addClass("single"),this.container.find(".drp-calendar.left").addClass("single"),this.container.find(".drp-calendar.left").show(),this.container.find(".drp-calendar.right").hide(),!this.timePicker&&this.autoApply&&this.container.addClass("auto-apply")),(void 0===i.ranges&&!this.singleDatePicker||this.alwaysShowCalendars)&&this.container.addClass("show-calendar"),this.container.addClass("opens"+this.opens),this.container.find(".applyBtn, .cancelBtn").addClass(this.buttonClasses),this.applyButtonClasses.length&&this.container.find(".applyBtn").addClass(this.applyButtonClasses),this.cancelButtonClasses.length&&this.container.find(".cancelBtn").addClass(this.cancelButtonClasses),this.container.find(".applyBtn").html(this.locale.applyLabel),this.container.find(".cancelBtn").html(this.locale.cancelLabel),this.container.find(".drp-calendar").on("click.daterangepicker",".prev",e.proxy(this.clickPrev,this)).on("click.daterangepicker",".next",e.proxy(this.clickNext,this)).on("mousedown.daterangepicker","td.available",e.proxy(this.clickDate,this)).on("mouseenter.daterangepicker","td.available",e.proxy(this.hoverDate,this)).on("change.daterangepicker","select.yearselect",e.proxy(this.monthOrYearChanged,this)).on("change.daterangepicker","select.monthselect",e.proxy(this.monthOrYearChanged,this)).on("change.daterangepicker","select.hourselect,select.minuteselect,select.secondselect,select.ampmselect",e.proxy(this.timeChanged,this)),this.container.find(".ranges").on("click.daterangepicker","li",e.proxy(this.clickRange,this)),this.container.find(".drp-buttons").on("click.daterangepicker","button.applyBtn",e.proxy(this.clickApply,this)).on("click.daterangepicker","button.cancelBtn",e.proxy(this.clickCancel,this)),this.element.is("input")||this.element.is("button")?this.element.on({"click.daterangepicker":e.proxy(this.show,this),"focus.daterangepicker":e.proxy(this.show,this),"keyup.daterangepicker":e.proxy(this.elementChanged,this),"keydown.daterangepicker":e.proxy(this.keydown,this)}):(this.element.on("click.daterangepicker",e.proxy(this.toggle,this)),this.element.on("keydown.daterangepicker",e.proxy(this.toggle,this))),this.updateElement()};return a.prototype={constructor:a,setStartDate:function(e){"string"==typeof e&&(this.startDate=t(e,this.locale.format)),"object"==typeof e&&(this.startDate=t(e)),this.timePicker||(this.startDate=this.startDate.startOf("day")),this.timePicker&&this.timePickerIncrement&&this.startDate.minute(Math.round(this.startDate.minute()/this.timePickerIncrement)*this.timePickerIncrement),this.minDate&&this.startDate.isBefore(this.minDate)&&(this.startDate=this.minDate.clone(),this.timePicker&&this.timePickerIncrement&&this.startDate.minute(Math.round(this.startDate.minute()/this.timePickerIncrement)*this.timePickerIncrement)),this.maxDate&&this.startDate.isAfter(this.maxDate)&&(this.startDate=this.maxDate.clone(),this.timePicker&&this.timePickerIncrement&&this.startDate.minute(Math.floor(this.startDate.minute()/this.timePickerIncrement)*this.timePickerIncrement)),this.isShowing||this.updateElement(),this.updateMonthsInView()},setEndDate:function(e){"string"==typeof e&&(this.endDate=t(e,this.locale.format)),"object"==typeof e&&(this.endDate=t(e)),this.timePicker||(this.endDate=this.endDate.endOf("day")),this.timePicker&&this.timePickerIncrement&&this.endDate.minute(Math.round(this.endDate.minute()/this.timePickerIncrement)*this.timePickerIncrement),this.endDate.isBefore(this.startDate)&&(this.endDate=this.startDate.clone()),this.maxDate&&this.endDate.isAfter(this.maxDate)&&(this.endDate=this.maxDate.clone()),this.maxSpan&&this.startDate.clone().add(this.maxSpan).isBefore(this.endDate)&&(this.endDate=this.startDate.clone().add(this.maxSpan)),this.previousRightTime=this.endDate.clone(),this.container.find(".drp-selected").html(this.startDate.format(this.locale.format)+this.locale.separator+this.endDate.format(this.locale.format)),this.isShowing||this.updateElement(),this.updateMonthsInView()},isInvalidDate:function(){return!1},isCustomDate:function(){return!1},updateView:function(){this.timePicker&&(this.renderTimePicker("left"),this.renderTimePicker("right"),this.endDate?this.container.find(".right .calendar-time select").prop("disabled",!1).removeClass("disabled"):this.container.find(".right .calendar-time select").prop("disabled",!0).addClass("disabled")),this.endDate&&this.container.find(".drp-selected").html(this.startDate.format(this.locale.format)+this.locale.separator+this.endDate.format(this.locale.format)),this.updateMonthsInView(),this.updateCalendars(),this.updateFormInputs()},updateMonthsInView:function(){if(this.endDate){if(!this.singleDatePicker&&this.leftCalendar.month&&this.rightCalendar.month&&(this.startDate.format("YYYY-MM")==this.leftCalendar.month.format("YYYY-MM")||this.startDate.format("YYYY-MM")==this.rightCalendar.month.format("YYYY-MM"))&&(this.endDate.format("YYYY-MM")==this.leftCalendar.month.format("YYYY-MM")||this.endDate.format("YYYY-MM")==this.rightCalendar.month.format("YYYY-MM")))return;this.leftCalendar.month=this.startDate.clone().date(2),this.linkedCalendars||this.endDate.month()==this.startDate.month()&&this.endDate.year()==this.startDate.year()?this.rightCalendar.month=this.startDate.clone().date(2).add(1,"month"):this.rightCalendar.month=this.endDate.clone().date(2)}else this.leftCalendar.month.format("YYYY-MM")!=this.startDate.format("YYYY-MM")&&this.rightCalendar.month.format("YYYY-MM")!=this.startDate.format("YYYY-MM")&&(this.leftCalendar.month=this.startDate.clone().date(2),this.rightCalendar.month=this.startDate.clone().date(2).add(1,"month"));this.maxDate&&this.linkedCalendars&&!this.singleDatePicker&&this.rightCalendar.month>this.maxDate&&(this.rightCalendar.month=this.maxDate.clone().date(2),this.leftCalendar.month=this.maxDate.clone().date(2).subtract(1,"month"))},updateCalendars:function(){if(this.timePicker){var t,e,a,i;if(this.endDate){if(t=parseInt(this.container.find(".left .hourselect").val(),10),e=parseInt(this.container.find(".left .minuteselect").val(),10),isNaN(e)&&(e=parseInt(this.container.find(".left .minuteselect option:last").val(),10)),a=this.timePickerSeconds?parseInt(this.container.find(".left .secondselect").val(),10):0,!this.timePicker24Hour)"PM"===(i=this.container.find(".left .ampmselect").val())&&t<12&&(t+=12),"AM"===i&&12===t&&(t=0)}else if(t=parseInt(this.container.find(".right .hourselect").val(),10),e=parseInt(this.container.find(".right .minuteselect").val(),10),isNaN(e)&&(e=parseInt(this.container.find(".right .minuteselect option:last").val(),10)),a=this.timePickerSeconds?parseInt(this.container.find(".right .secondselect").val(),10):0,!this.timePicker24Hour)"PM"===(i=this.container.find(".right .ampmselect").val())&&t<12&&(t+=12),"AM"===i&&12===t&&(t=0);this.leftCalendar.month.hour(t).minute(e).second(a),this.rightCalendar.month.hour(t).minute(e).second(a)}this.renderCalendar("left"),this.renderCalendar("right"),this.container.find(".ranges li").removeClass("active"),null!=this.endDate&&this.calculateChosenLabel()},renderCalendar:function(a){var i,s=(i="left"==a?this.leftCalendar:this.rightCalendar).month.month(),n=i.month.year(),r=i.month.hour(),o=i.month.minute(),h=i.month.second(),l=t([n,s]).daysInMonth(),c=t([n,s,1]),d=t([n,s,l]),m=t(c).subtract(1,"month").month(),p=t(c).subtract(1,"month").year(),f=t([p,m]).daysInMonth(),u=c.day();(i=[]).firstDay=c,i.lastDay=d;for(var D=0;D<6;D++)i[D]=[];var g=f-u+this.locale.firstDay+1;g>f&&(g-=7),u==this.locale.firstDay&&(g=f-6);for(var y=t([p,m,g,12,o,h]),k=(D=0,0),b=0;D<42;D++,k++,y=t(y).add(24,"hour"))D>0&&k%7==0&&(k=0,b++),i[b][k]=y.clone().hour(r).minute(o).second(h),y.hour(12),this.minDate&&i[b][k].format("YYYY-MM-DD")==this.minDate.format("YYYY-MM-DD")&&i[b][k].isBefore(this.minDate)&&"left"==a&&(i[b][k]=this.minDate.clone()),this.maxDate&&i[b][k].format("YYYY-MM-DD")==this.maxDate.format("YYYY-MM-DD")&&i[b][k].isAfter(this.maxDate)&&"right"==a&&(i[b][k]=this.maxDate.clone());"left"==a?this.leftCalendar.calendar=i:this.rightCalendar.calendar=i;var v="left"==a?this.minDate:this.startDate,C=this.maxDate,Y=("left"==a?this.startDate:this.endDate,this.locale.direction,'');Y+="",Y+="",(this.showWeekNumbers||this.showISOWeekNumbers)&&(Y+=" | "),v&&!v.isBefore(i.firstDay)||this.linkedCalendars&&"left"!=a?Y+=" | ":Y+=' | ';var w=this.locale.monthNames[i[1][1].month()]+i[1][1].format(" YYYY");if(this.showDropdowns){for(var P=i[1][1].month(),x=i[1][1].year(),M=C&&C.year()||this.maxYear,I=v&&v.year()||this.minYear,S=x==I,B=x==M,A='";for(var N='")}if(Y+=''+w+" | ",C&&!C.isAfter(i.lastDay)||this.linkedCalendars&&"right"!=a&&!this.singleDatePicker?Y+=" | ":Y+=' | ',Y+="
",Y+="",(this.showWeekNumbers||this.showISOWeekNumbers)&&(Y+='| '+this.locale.weekLabel+" | "),e.each(this.locale.daysOfWeek,function(t,e){Y+=""+e+" | "}),Y+="
",Y+="",Y+="",null==this.endDate&&this.maxSpan){var O=this.startDate.clone().add(this.maxSpan).endOf("day");C&&!O.isBefore(C)||(C=O)}for(b=0;b<6;b++){Y+="",this.showWeekNumbers?Y+='| '+i[b][0].week()+" | ":this.showISOWeekNumbers&&(Y+=''+i[b][0].isoWeek()+" | ");for(k=0;k<7;k++){var W=[];i[b][k].isSame(new Date,"day")&&W.push("today"),i[b][k].isoWeekday()>5&&W.push("weekend"),i[b][k].month()!=i[1][1].month()&&W.push("off","ends"),this.minDate&&i[b][k].isBefore(this.minDate,"day")&&W.push("off","disabled"),C&&i[b][k].isAfter(C,"day")&&W.push("off","disabled"),this.isInvalidDate(i[b][k])&&W.push("off","disabled"),i[b][k].format("YYYY-MM-DD")==this.startDate.format("YYYY-MM-DD")&&W.push("active","start-date"),null!=this.endDate&&i[b][k].format("YYYY-MM-DD")==this.endDate.format("YYYY-MM-DD")&&W.push("active","end-date"),null!=this.endDate&&i[b][k]>this.startDate&&i[b][k]'+i[b][k].date()+""}Y+="
"}Y+="",Y+="
",this.container.find(".drp-calendar."+a+" .calendar-table").html(Y)},renderTimePicker:function(t){if("right"!=t||this.endDate){var e,a,i,s=this.maxDate;if(!this.maxSpan||this.maxDate&&!this.startDate.clone().add(this.maxSpan).isBefore(this.maxDate)||(s=this.startDate.clone().add(this.maxSpan)),"left"==t)a=this.startDate.clone(),i=this.minDate;else if("right"==t){a=this.endDate.clone(),i=this.startDate;var n=this.container.find(".drp-calendar.right .calendar-time");if(""!=n.html()&&(a.hour(isNaN(a.hour())?n.find(".hourselect option:selected").val():a.hour()),a.minute(isNaN(a.minute())?n.find(".minuteselect option:selected").val():a.minute()),a.second(isNaN(a.second())?n.find(".secondselect option:selected").val():a.second()),!this.timePicker24Hour)){var r=n.find(".ampmselect option:selected").val();"PM"===r&&a.hour()<12&&a.hour(a.hour()+12),"AM"===r&&12===a.hour()&&a.hour(0)}a.isBefore(this.startDate)&&(a=this.startDate.clone()),s&&a.isAfter(s)&&(a=s.clone())}e=' ",e+=': ",this.timePickerSeconds){e+=': "}if(!this.timePicker24Hour){e+='"}this.container.find(".drp-calendar."+t+" .calendar-time").html(e)}},updateFormInputs:function(){this.singleDatePicker||this.endDate&&(this.startDate.isBefore(this.endDate)||this.startDate.isSame(this.endDate))?this.container.find("button.applyBtn").prop("disabled",!1):this.container.find("button.applyBtn").prop("disabled",!0)},move:function(){var t,a={top:0,left:0},i=this.drops,s=e(window).width();switch(this.parentEl.is("body")||(a={top:this.parentEl.offset().top-this.parentEl.scrollTop(),left:this.parentEl.offset().left-this.parentEl.scrollLeft()},s=this.parentEl[0].clientWidth+this.parentEl.offset().left),i){case"auto":(t=this.element.offset().top+this.element.outerHeight()-a.top)+this.container.outerHeight()>=this.parentEl[0].scrollHeight&&(t=this.element.offset().top-this.container.outerHeight()-a.top,i="up");break;case"up":t=this.element.offset().top-this.container.outerHeight()-a.top;break;default:t=this.element.offset().top+this.element.outerHeight()-a.top}this.container.css({top:0,left:0,right:"auto"});var n=this.container.outerWidth();if(this.container.toggleClass("drop-up","up"==i),"left"==this.opens){var r=s-this.element.offset().left-this.element.outerWidth();n+r>e(window).width()?this.container.css({top:t,right:"auto",left:9}):this.container.css({top:t,right:r,left:"auto"})}else if("center"==this.opens){(o=this.element.offset().left-a.left+this.element.outerWidth()/2-n/2)<0?this.container.css({top:t,right:"auto",left:9}):o+n>e(window).width()?this.container.css({top:t,left:"auto",right:0}):this.container.css({top:t,left:o,right:"auto"})}else{var o;(o=this.element.offset().left-a.left)+n>e(window).width()?this.container.css({top:t,left:"auto",right:0}):this.container.css({top:t,left:o,right:"auto"})}},show:function(t){this.isShowing||(this._outsideClickProxy=e.proxy(function(t){this.outsideClick(t)},this),e(document).on("mousedown.daterangepicker",this._outsideClickProxy).on("touchend.daterangepicker",this._outsideClickProxy).on("click.daterangepicker","[data-toggle=dropdown]",this._outsideClickProxy).on("focusin.daterangepicker",this._outsideClickProxy),e(window).on("resize.daterangepicker",e.proxy(function(t){this.move(t)},this)),this.oldStartDate=this.startDate.clone(),this.oldEndDate=this.endDate.clone(),this.previousRightTime=this.endDate.clone(),this.updateView(),this.container.show(),this.move(),this.element.trigger("show.daterangepicker",this),this.isShowing=!0)},hide:function(t){this.isShowing&&(this.endDate||(this.startDate=this.oldStartDate.clone(),this.endDate=this.oldEndDate.clone()),this.startDate.isSame(this.oldStartDate)&&this.endDate.isSame(this.oldEndDate)||this.callback(this.startDate.clone(),this.endDate.clone(),this.chosenLabel),this.updateElement(),e(document).off(".daterangepicker"),e(window).off(".daterangepicker"),this.container.hide(),this.element.trigger("hide.daterangepicker",this),this.isShowing=!1)},toggle:function(t){this.isShowing?this.hide():this.show()},outsideClick:function(t){var a=e(t.target);"focusin"==t.type||a.closest(this.element).length||a.closest(this.container).length||a.closest(".calendar-table").length||(this.hide(),this.element.trigger("outsideClick.daterangepicker",this))},showCalendars:function(){this.container.addClass("show-calendar"),this.move(),this.element.trigger("showCalendar.daterangepicker",this)},hideCalendars:function(){this.container.removeClass("show-calendar"),this.element.trigger("hideCalendar.daterangepicker",this)},clickRange:function(t){var e=t.target.getAttribute("data-range-key");if(this.chosenLabel=e,e==this.locale.customRangeLabel)this.showCalendars();else{var a=this.ranges[e];this.startDate=a[0],this.endDate=a[1],this.timePicker||(this.startDate.startOf("day"),this.endDate.endOf("day")),this.alwaysShowCalendars||this.hideCalendars(),this.clickApply()}},clickPrev:function(t){e(t.target).parents(".drp-calendar").hasClass("left")?(this.leftCalendar.month.subtract(1,"month"),this.linkedCalendars&&this.rightCalendar.month.subtract(1,"month")):this.rightCalendar.month.subtract(1,"month"),this.updateCalendars()},clickNext:function(t){e(t.target).parents(".drp-calendar").hasClass("left")?this.leftCalendar.month.add(1,"month"):(this.rightCalendar.month.add(1,"month"),this.linkedCalendars&&this.leftCalendar.month.add(1,"month")),this.updateCalendars()},hoverDate:function(t){if(e(t.target).hasClass("available")){var a=e(t.target).attr("data-title"),i=a.substr(1,1),s=a.substr(3,1),n=e(t.target).parents(".drp-calendar").hasClass("left")?this.leftCalendar.calendar[i][s]:this.rightCalendar.calendar[i][s],r=this.leftCalendar,o=this.rightCalendar,h=this.startDate;this.endDate||this.container.find(".drp-calendar tbody td").each(function(t,a){if(!e(a).hasClass("week")){var i=e(a).attr("data-title"),s=i.substr(1,1),l=i.substr(3,1),c=e(a).parents(".drp-calendar").hasClass("left")?r.calendar[s][l]:o.calendar[s][l];c.isAfter(h)&&c.isBefore(n)||c.isSame(n,"day")?e(a).addClass("in-range"):e(a).removeClass("in-range")}})}},clickDate:function(t){if(e(t.target).hasClass("available")){var a=e(t.target).attr("data-title"),i=a.substr(1,1),s=a.substr(3,1),n=e(t.target).parents(".drp-calendar").hasClass("left")?this.leftCalendar.calendar[i][s]:this.rightCalendar.calendar[i][s];if(this.endDate||n.isBefore(this.startDate,"day")){if(this.timePicker){var r=parseInt(this.container.find(".left .hourselect").val(),10);if(!this.timePicker24Hour)"PM"===(l=this.container.find(".left .ampmselect").val())&&r<12&&(r+=12),"AM"===l&&12===r&&(r=0);var o=parseInt(this.container.find(".left .minuteselect").val(),10);isNaN(o)&&(o=parseInt(this.container.find(".left .minuteselect option:last").val(),10));var h=this.timePickerSeconds?parseInt(this.container.find(".left .secondselect").val(),10):0;n=n.clone().hour(r).minute(o).second(h)}this.endDate=null,this.setStartDate(n.clone())}else if(!this.endDate&&n.isBefore(this.startDate))this.setEndDate(this.startDate.clone());else{if(this.timePicker){var l;r=parseInt(this.container.find(".right .hourselect").val(),10);if(!this.timePicker24Hour)"PM"===(l=this.container.find(".right .ampmselect").val())&&r<12&&(r+=12),"AM"===l&&12===r&&(r=0);o=parseInt(this.container.find(".right .minuteselect").val(),10);isNaN(o)&&(o=parseInt(this.container.find(".right .minuteselect option:last").val(),10));h=this.timePickerSeconds?parseInt(this.container.find(".right .secondselect").val(),10):0;n=n.clone().hour(r).minute(o).second(h)}this.setEndDate(n.clone()),this.autoApply&&(this.calculateChosenLabel(),this.clickApply())}this.singleDatePicker&&(this.setEndDate(this.startDate),!this.timePicker&&this.autoApply&&this.clickApply()),this.updateView(),t.stopPropagation()}},calculateChosenLabel:function(){var t=!0,e=0;for(var a in this.ranges){if(this.timePicker){var i=this.timePickerSeconds?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD HH:mm";if(this.startDate.format(i)==this.ranges[a][0].format(i)&&this.endDate.format(i)==this.ranges[a][1].format(i)){t=!1,this.chosenLabel=this.container.find(".ranges li:eq("+e+")").addClass("active").attr("data-range-key");break}}else if(this.startDate.format("YYYY-MM-DD")==this.ranges[a][0].format("YYYY-MM-DD")&&this.endDate.format("YYYY-MM-DD")==this.ranges[a][1].format("YYYY-MM-DD")){t=!1,this.chosenLabel=this.container.find(".ranges li:eq("+e+")").addClass("active").attr("data-range-key");break}e++}t&&(this.showCustomRangeLabel?this.chosenLabel=this.container.find(".ranges li:last").addClass("active").attr("data-range-key"):this.chosenLabel=null,this.showCalendars())},clickApply:function(t){this.hide(),this.element.trigger("apply.daterangepicker",this)},clickCancel:function(t){this.startDate=this.oldStartDate,this.endDate=this.oldEndDate,this.hide(),this.element.trigger("cancel.daterangepicker",this)},monthOrYearChanged:function(t){var a=e(t.target).closest(".drp-calendar").hasClass("left"),i=a?"left":"right",s=this.container.find(".drp-calendar."+i),n=parseInt(s.find(".monthselect").val(),10),r=s.find(".yearselect").val();a||(rthis.maxDate.year()||r==this.maxDate.year()&&n>this.maxDate.month())&&(n=this.maxDate.month(),r=this.maxDate.year()),a?(this.leftCalendar.month.month(n).year(r),this.linkedCalendars&&(this.rightCalendar.month=this.leftCalendar.month.clone().add(1,"month"))):(this.rightCalendar.month.month(n).year(r),this.linkedCalendars&&(this.leftCalendar.month=this.rightCalendar.month.clone().subtract(1,"month"))),this.updateCalendars()},timeChanged:function(t){var a=e(t.target).closest(".drp-calendar"),i=a.hasClass("left"),s=parseInt(a.find(".hourselect").val(),10),n=parseInt(a.find(".minuteselect").val(),10);isNaN(n)&&(n=parseInt(a.find(".minuteselect option:last").val(),10));var r=this.timePickerSeconds?parseInt(a.find(".secondselect").val(),10):0;if(!this.timePicker24Hour){var o=a.find(".ampmselect").val();"PM"===o&&s<12&&(s+=12),"AM"===o&&12===s&&(s=0)}if(i){var h=this.startDate.clone();h.hour(s),h.minute(n),h.second(r),this.setStartDate(h),this.singleDatePicker?this.endDate=this.startDate.clone():this.endDate&&this.endDate.format("YYYY-MM-DD")==h.format("YYYY-MM-DD")&&this.endDate.isBefore(h)&&this.setEndDate(h.clone())}else if(this.endDate){var l=this.endDate.clone();l.hour(s),l.minute(n),l.second(r),this.setEndDate(l)}this.updateCalendars(),this.updateFormInputs(),this.renderTimePicker("left"),this.renderTimePicker("right")},elementChanged:function(){if(this.element.is("input")&&this.element.val().length){var e=this.element.val().split(this.locale.separator),a=null,i=null;2===e.length&&(a=t(e[0],this.locale.format),i=t(e[1],this.locale.format)),(this.singleDatePicker||null===a||null===i)&&(i=a=t(this.element.val(),this.locale.format)),a.isValid()&&i.isValid()&&(this.setStartDate(a),this.setEndDate(i),this.updateView())}},keydown:function(t){9!==t.keyCode&&13!==t.keyCode||this.hide(),27===t.keyCode&&(t.preventDefault(),t.stopPropagation(),this.hide())},updateElement:function(){if(this.element.is("input")&&this.autoUpdateInput){var t=this.startDate.format(this.locale.format);this.singleDatePicker||(t+=this.locale.separator+this.endDate.format(this.locale.format)),t!==this.element.val()&&this.element.val(t).trigger("change")}},remove:function(){this.container.remove(),this.element.off(".daterangepicker"),this.element.removeData()}},e.fn.daterangepicker=function(t,i){var s=e.extend(!0,{},e.fn.daterangepicker.defaultOptions,t);return this.each(function(){var t=e(this);t.data("daterangepicker")&&t.data("daterangepicker").remove(),t.data("daterangepicker",new a(t,s,i))}),this},a});
+//# sourceMappingURL=/sm/f07d8d7b2652873f485707eab4f3d300bf1f6f3b42912e189c8933b1b9b3dfde.map
\ No newline at end of file
diff --git a/public/dmxAppConnect/dmxDatePicker/dmxDatePicker.css b/public/dmxAppConnect/dmxDatePicker/dmxDatePicker.css
new file mode 100644
index 0000000..b4691fa
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/dmxDatePicker.css
@@ -0,0 +1,33 @@
+.drp-buttons button {
+ display: inline-block;
+ font-weight: 400;
+ text-align: center;
+ padding: 10px 12px;
+ border: none;
+ border-radius: 4px;
+ margin: 0 5px;
+}
+
+.drp-buttons button:hover, .drp-buttons button:focus {
+ text-decoration: none;
+}
+.drp-buttons button:not(:disabled):not(.disabled) {
+ cursor: pointer;
+}
+.drp-buttons button:focus {
+ outline: none;
+}
+.cancelBtn {
+ color: #212529;
+ background-color: #f8f9fa;
+}
+.cancelBtn:hover {
+ background-color: #e4e4e4;
+}
+.applyBtn {
+ color: #fff;
+ background-color: #357ebd;
+}
+.applyBtn:hover {
+ background-color: #275d8b;
+}
diff --git a/public/dmxAppConnect/dmxDatePicker/dmxDatePicker.js b/public/dmxAppConnect/dmxDatePicker/dmxDatePicker.js
new file mode 100644
index 0000000..c055b0c
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/dmxDatePicker.js
@@ -0,0 +1,8 @@
+/*!
+ Wappler Date Picker
+ Version: 3.0.3
+ (c) 2024 Wappler.io
+ @build 2024-11-20 10:21:37
+ */
+(()=>{const t=daterangepicker.prototype.clickDate;daterangepicker.prototype.clickDate=function(e){if(!this.container.find(".in-range:not(.available)").length)return t.call(this,e)}})(),dmx.Component("date-picker",{extends:"form-element",attributes:{name:{type:String,default:""},showdropdowns:{type:Boolean,default:!1},minyear:{type:Number,default:void 0},maxyear:{type:Number,default:void 0},autoapply:{type:Boolean,default:!0},opens:{type:String,default:"right",enum:["left","right","center"]},drops:{type:String,default:"down",enum:["down","up","auto"]},dropsup:{type:Boolean,default:!1},showweeknumbers:{type:Boolean,default:!1},mindate:{type:String,default:""},maxdate:{type:String,default:""},format:{type:String,default:null},invaliddates:{type:Array,default:[]},invaliddatesStart:{type:String,default:"start"},invaliddatesEnd:{type:String,default:"end"},customdates:{type:Array,default:[]},customdatesStart:{type:String,default:"start"},customdatesEnd:{type:String,default:"end"},customdatesClass:{type:String,default:"class"},disableweekends:{type:Boolean,default:!1},direction:{type:String,default:"ltr",enum:["ltr","rtl"]},weeklabel:{type:String,default:"W"},applylabel:{type:String,default:"Apply"},cancellabel:{type:String,default:"Cancel"},timepicker:{type:Boolean,default:!1},use24hours:{type:Boolean,default:!1},minutesIncrement:{type:Number,default:1},utc:{type:Boolean,default:!1}},events:{show:Event,hide:Event,apply:Event,cancel:Event},init(t){this._isCustomDate=this._isCustomDate.bind(this),this._isInvalidDate=this._isInvalidDate.bind(this),this._updateValue=this._updateValue.bind(this),this._applyHandler=this._applyHandler.bind(this),this._changeHandler=this._changeHandler.bind(this),dmx.Component("form-element").prototype.init.call(this,t),this.props.format||(this.props.format=this.props.timepicker?"L LT":"L"),this._createHiddenInput(),t.removeAttribute("name"),t.autocomplete="off",t.value=this._formatDate(this.props.value)||"",t.defaultValue=t.value,this._createDaterangePicker()},destroy(){this._daterangepicker&&this._daterangepicker.remove(),this._input&&this._input.remove()},performUpdate(t){t.has("name")&&(this._input.name=this.props.name,1===t.size)||t.has("disabled")&&(this.$node.disabled=this.props.disabled,this._input.disabled=this.props.disabled,1===t.size)||t.has("value")&&(this._setValue(this.props.value,!0),1===t.size)||(this.props.format||(this.props.format=this.props.timepicker?"L LT":"L"),this._createDaterangePicker())},_createHiddenInput(){this._input=document.createElement("input"),this._input.type="hidden",this._input.name=this.props.name,this._input.value=this.props.value,this._input.defaultValue=this.props.value,this.$node.parentNode.insertBefore(this._input,this.$node)},_createDaterangePicker(){const t=$(this.$node);t.daterangepicker({parentEl:t.closest(".modal, .offcanvas, .offcanvas-sm, .offcanvas-md, .offcanvas-lg, .offcanvas-xl, .offcanvas-xxl")[0]||document.body,singleDatePicker:!0,autoUpdateInput:!1,autoApply:this.props.autoapply,showWeekNumbers:this.props.showweeknumbers,showDropdowns:this.props.showdropdowns,minYear:this.props.minyear,maxYear:this.props.maxyear,opens:this.props.opens,drops:this.props.dropsup?"up":this.props.drops,minDate:this._formatDate(this.props.mindate),maxDate:this._formatDate(this.props.maxdate),locale:{format:this.props.format,direction:this.props.direction,weekLabel:this.props.weeklabel,applyLabel:this.props.applylabel,cancelLabel:this.props.cancellabel},buttonClasses:"",applyButtonClasses:"",cancelButtonClasses:"",isCustomDate:this._isCustomDate,isInvalidDate:this._isInvalidDate,timePicker:this.props.timepicker,timePicker24Hour:this.props.use24hours,timePickerIncrement:this.props.minutesIncrement},this._updateValue),t.on("apply.daterangepicker",this._applyHandler),t.on("change.daterangepicker",this._changeHandler),t.on("show.daterangepicker",this.dispatchEvent.bind(this,"show")),t.on("hide.daterangepicker",this.dispatchEvent.bind(this,"hide")),t.on("apply.daterangepicker",this.dispatchEvent.bind(this,"apply")),t.on("cancel.daterangepicker",this.dispatchEvent.bind(this,"cancel")),this._daterangepicker=t.data("daterangepicker")},_formatDate(t){if(!t)return;if("now"==t||"today"==t)return moment().format(this.props.format);const e=moment(t);return e.isValid()?e.format(this.props.format):void 0},_isInvalidDate(t){return!(!this.props.disableweekends||0!==t.day()&&6!==t.day())||this.props.invaliddates.some((e=>this._isInRange(t,e,this.props.invaliddatesStart,this.props.invaliddatesEnd)))},_isCustomDate(t){return this.props.customdates.filter((e=>this._isInRange(t,e,this.props.customdatesStart,this.props.customdatesEnd))).map((t=>t[this.props.customdatesClass]))},_isInRange:(t,e,a,s)=>e[a]&&e[s]?t.isSameOrAfter(e[a])&&t.isSameOrBefore(e[s]):e[a]?t.isSameOrAfter(e[a]):!!e[s]&&t.isSameOrBefore(e[s]),_updateValue(t){let e=this.props.timepicker?this.props.utc?t.toISOString():t.format("YYYY-MM-DD HH:mm:ss"):t.format("YYYY-MM-DD"),a=this.data.value;this._setValue(e),a!==this.data.value&&(this.dispatchEvent("change"),this.dispatchEvent("changed"))},_updateData(t){t&&this.$node.dirty&&dmx.validate(this.$node),this.set("disabled",this.$node.disabled),this._input.value!==this.data.value&&(this.set("value",this._input.value),dmx.nextTick((()=>this.dispatchEvent("updated")))),this.$node.dirty&&(this.set("invalid",!this.$node.validity.valid),this.set("validationMessage",this.$node.validationMessage))},_setValue(t,e){"string"!=typeof t&&(t=""),"now"!=t&&"today"!=t||(t=this.props.timepicker?this.props.utc?moment().toISOString():moment().format("YYYY-MM-DD HH:mm:ss"):moment().format("YYYY-MM-DD")),this._daterangepicker.setStartDate(this._formatDate(t)||new Date),this._daterangepicker.setEndDate(this._formatDate(t)||new Date),this.$node.value=this._formatDate(t)||"",this._input.value=t||"",e&&(this.$node.defaultValue=this.$node.value,this._input.defaultValue=this._input.value),this._updateData(!0)},_applyHandler(t){this._updateValue(this._daterangepicker.startDate)},_changeHandler(t){this.$node.value&&moment(this.$node.value,this.props.format).isValid()?this.props.timepicker?this.props.utc?this._setValue(moment(this.$node.value,this.props.format).toISOString()):this._setValue(moment(this.$node.value,this.props.format).format("YYYY-MM-DD HH:mm:ss")):this._setValue(moment(this.$node.value,this.props.format).format("YYYY-MM-DD")):this._setValue("")},_resetHandler(t){this.$node&&(this.$node.dirty=!1,this.set({invalid:!1,validationMessage:""}),dmx.nextTick((()=>{this.$node&&this._changeHandler()})))}}),dmx.Component("date-range-picker",{extends:"date-picker",initialData:{start:"",end:""},attributes:{startdate:{type:String,default:""},enddate:{type:String,default:""},autoapply:{type:Boolean,default:!1},separator:{type:String,default:" - "},unlinked:{type:Boolean,default:!1},maxspanYears:{type:Number,default:null},maxspanMonths:{type:Number,default:null},maxspanWeeks:{type:Number,default:null},maxspanDays:{type:Number,default:null}},methods:{setValue(t,e){this._setValue(t,e)}},init(t){dmx.Component("date-picker").prototype.init.call(this,t),this._setValue({start:this.props.startdate,end:this.props.enddate},!0)},destroy(){this._daterangepicker&&this._daterangepicker.remove(),this._input&&this._input.remove(),this._input_start&&this._input_start.remove(),this._input_end&&this._input_end.remove()},performUpdate(t){if(!(t.has("name")&&(this._input.name=this.props.name,this._input_start.name=this._getName("_start"),this._input_end.name=this._getName("_end"),1===t.size)||t.has("disabled")&&(this.$node.disabled=this.props.disabled,this._input.disabled=this.props.disabled,this._input_start.disabled=this.props.disabled,this._input_end.disabled=this.props.disabled,1===t.size))){if(t.has("startdate")||t.has("enddate")){if(this._setValue({start:this.props.startdate,end:this.props.enddate},!0),t.has("startdate")&&t.has("enddate")&&2===t.size)return;if(1===t.size)return}this.props.format||(this.props.format=this.props.timepicker?"L LT":"L"),this._createDaterangePicker()}},_createHiddenInput(){dmx.Component("date-picker").prototype._createHiddenInput.call(this),this._input_start=document.createElement("input"),this._input_start.type="hidden",this._input_start.name=this._getName("_start"),this.$node.parentNode.insertBefore(this._input_start,this.$node),this._input_end=document.createElement("input"),this._input_end.type="hidden",this._input_end.name=this._getName("_end"),this.$node.parentNode.insertBefore(this._input_end,this.$node)},_getName(t){return this.props.name.endsWith("]")?this.props.name.slice(0,-1)+t+"]":this.props.name+t},_createDaterangePicker(){const t=$(this.$node);t.daterangepicker({parentEl:t.closest(".modal, .offcanvas")[0]||document.body,autoUpdateInput:!1,autoApply:this.props.autoapply,linkedCalendars:!this.props.unlinked,showWeekNumbers:this.props.showweeknumbers,showDropdowns:this.props.showdropdowns,minYear:this.props.minyear,maxYear:this.props.maxyear,opens:this.props.opens,drops:this.props.dropsup?"up":this.props.drops,minDate:this._formatDate(this.props.mindate),maxDate:this._formatDate(this.props.maxdate),maxSpan:this._getMaxSpan(),locale:{format:this.props.format,separator:this.props.separator,direction:this.props.direction,weekLabel:this.props.weeklabel,applyLabel:this.props.applylabel,cancelLabel:this.props.cancellabel},buttonClasses:"",applyButtonClasses:"",cancelButtonClasses:"",isCustomDate:this._isCustomDate,isInvalidDate:this._isInvalidDate,timePicker:this.props.timepicker,timePicker24Hour:this.props.use24hours,timePickerIncrement:this.props.minutesIncrement},this._updateValue),t.on("apply.daterangepicker",this._applyHandler),t.on("change.daterangepicker",this._changeHandler),t.on("show.daterangepicker",this.dispatchEvent.bind(this,"show")),t.on("hide.daterangepicker",this.dispatchEvent.bind(this,"hide")),t.on("apply.daterangepicker",this.dispatchEvent.bind(this,"apply")),t.on("cancel.daterangepicker",this.dispatchEvent.bind(this,"cancel")),this._daterangepicker=t.data("daterangepicker")},_updateValue(t,e){let a=this.props.timepicker?this.props.utc?t.toISOString():t.format("YYYY-MM-DD HH:mm:ss"):this.props.utc?t.toISOString():t.format("YYYY-MM-DD"),s=this.props.timepicker?this.props.utc?e.toISOString():e.format("YYYY-MM-DD HH:mm:ss"):this.props.utc?e.toISOString():e.format("YYYY-MM-DD"),i=this.data.start,n=this.data.end;this._setValue({start:a,end:s}),this.data.value===i&&this.data.value===n||(this.dispatchEvent("change"),this.dispatchEvent("changed"))},_updateData(t){t&&this.$node.dirty&&dmx.validate(this.$node),this.set("disabled",this.$node.disabled),this._input.value===this.data.value&&this._input_start===this.data.start&&this._input_end===this.data.end||(this.set({value:this._input.value,start:this._input_start.value,end:this._input_end.value}),dmx.nextTick((()=>this.dispatchEvent("updated")))),this.$node.dirty&&(this.set("invalid",!this.$node.validity.valid),this.set("validationMessage",this.$node.validationMessage))},_setValue(t,e){let{start:a="",end:s=""}=t;"string"!=typeof a&&(a=""),"string"!=typeof s&&(s=""),"now"!=a&&"today"!=a||(a=this.props.timepicker?this.props.utc?moment().toISOString():moment().format("YYYY-MM-DD HH:mm:ss"):moment().format("YYYY-MM-DD")),"now"!=s&&"today"!=s||(s=this.props.timepicker?this.props.utc?moment().toISOString():moment().format("YYYY-MM-DD HH:mm:ss"):moment().format("YYYY-MM-DD")),a&&this._daterangepicker.setStartDate(this._formatDate(a)),s&&this._daterangepicker.setEndDate(this._formatDate(s)),this.$node.value=a&&s?this._formatDate(a)+this.props.separator+this._formatDate(s):"",this._input.value=a&&s?a+"/"+s:"",this._input_start.value=a||"",this._input_end.value=s||"",e&&(this.$node.defaultValue=this.$node.value,this._input.defaultValue=this._input.value,this._input_start.defaultValue=this._input_start.value,this._input_end.defaultValue=this._input_end.value),this._updateData(!0)},_getMaxSpan(){const{maxspanYears:t,maxspanMonths:e,maxspanWeeks:a,maxspanDays:s}=this.props;if(t||e||a||s)return{years:t,months:e,weeks:a,days:s}},_applyHandler(t){const e=this.data.start,a=this.data.end;this._updateValue(this._daterangepicker.startDate,this._daterangepicker.endDate),this._input_start.value===e&&this._input_end.value===a||this.dispatchEvent("changed")}});
+//# sourceMappingURL=dmxDatePicker.js.map
diff --git a/public/dmxAppConnect/dmxDatePicker/dmxDatePicker.js.map b/public/dmxAppConnect/dmxDatePicker/dmxDatePicker.js.map
new file mode 100644
index 0000000..5176566
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/dmxDatePicker.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["patch/dateRangePicker.js","components/datePicker.js","components/dateRangePicker.js"],"names":["clickDate","daterangepicker","prototype","event","this","container","find","length","call","dmx","Component","extends","attributes","name","type","String","default","showdropdowns","Boolean","minyear","Number","undefined","maxyear","autoapply","opens","enum","drops","dropsup","showweeknumbers","mindate","maxdate","format","invaliddates","Array","invaliddatesStart","invaliddatesEnd","customdates","customdatesStart","customdatesEnd","customdatesClass","disableweekends","direction","weeklabel","applylabel","cancellabel","timepicker","use24hours","minutesIncrement","utc","events","show","Event","hide","apply","cancel","init","node","_isCustomDate","bind","_isInvalidDate","_updateValue","_applyHandler","_changeHandler","props","_createHiddenInput","removeAttribute","autocomplete","value","_formatDate","defaultValue","_createDaterangePicker","destroy","_daterangepicker","remove","_input","performUpdate","updatedProps","has","size","$node","disabled","_setValue","document","createElement","parentNode","insertBefore","$","parentEl","closest","body","singleDatePicker","autoUpdateInput","autoApply","showWeekNumbers","showDropdowns","minYear","maxYear","minDate","maxDate","locale","weekLabel","applyLabel","cancelLabel","buttonClasses","applyButtonClasses","cancelButtonClasses","isCustomDate","isInvalidDate","timePicker","timePicker24Hour","timePickerIncrement","on","dispatchEvent","data","str","moment","date","isValid","day","some","range","_isInRange","filter","map","start","end","isSameOrAfter","isSameOrBefore","toISOString","prevValue","_updateData","dirty","validate","set","nextTick","validity","valid","validationMessage","setStartDate","Date","setEndDate","startDate","_resetHandler","invalid","initialData","startdate","enddate","separator","unlinked","maxspanYears","maxspanMonths","maxspanWeeks","maxspanDays","methods","setValue","endDate","_input_start","_input_end","_getName","suffix","endsWith","slice","linkedCalendars","maxSpan","_getMaxSpan","prevStart","prevEnd","years","months","weeks","days"],"mappings":";;;;;;AAAA,MAEA,MAAAA,EAAAC,gBAAAC,UAAAF,UACAC,gBAAAC,UAAAF,UAAA,SAAAG,GACA,IAAAC,KAAAC,UAAAC,KAAA,6BAAAC,OACA,OAAAP,EAAAQ,KAAAJ,KAAAD,EACA,CACA,EAPA,GCAAM,IAAAC,UAAA,cAAA,CAEAC,QAAA,eAEAC,WAAA,CACAC,KAAA,CACAC,KAAAC,OACAC,QAAA,IAGAC,cAAA,CACAH,KAAAI,QACAF,SAAA,GAGAG,QAAA,CACAL,KAAAM,OACAJ,aAAAK,GAGAC,QAAA,CACAR,KAAAM,OACAJ,aAAAK,GAGAE,UAAA,CACAT,KAAAI,QACAF,SAAA,GAGAQ,MAAA,CACAV,KAAAC,OACAC,QAAA,QACAS,KAAA,CAAA,OAAA,QAAA,WAGAC,MAAA,CACAZ,KAAAC,OACAC,QAAA,OACAS,KAAA,CAAA,OAAA,KAAA,SAGAE,QAAA,CACAb,KAAAI,QACAF,SAAA,GAGAY,gBAAA,CACAd,KAAAI,QACAF,SAAA,GAGAa,QAAA,CACAf,KAAAC,OACAC,QAAA,IAGAc,QAAA,CACAhB,KAAAC,OACAC,QAAA,IAGAe,OAAA,CACAjB,KAAAC,OACAC,QAAA,MAGAgB,aAAA,CACAlB,KAAAmB,MACAjB,QAAA,IAGAkB,kBAAA,CACApB,KAAAC,OACAC,QAAA,SAGAmB,gBAAA,CACArB,KAAAC,OACAC,QAAA,OAGAoB,YAAA,CACAtB,KAAAmB,MACAjB,QAAA,IAGAqB,iBAAA,CACAvB,KAAAC,OACAC,QAAA,SAGAsB,eAAA,CACAxB,KAAAC,OACAC,QAAA,OAGAuB,iBAAA,CACAzB,KAAAC,OACAC,QAAA,SAGAwB,gBAAA,CACA1B,KAAAI,QACAF,SAAA,GAGAyB,UAAA,CACA3B,KAAAC,OACAC,QAAA,MACAS,KAAA,CAAA,MAAA,QAGAiB,UAAA,CACA5B,KAAAC,OACAC,QAAA,KAGA2B,WAAA,CACA7B,KAAAC,OACAC,QAAA,SAGA4B,YAAA,CACA9B,KAAAC,OACAC,QAAA,UAGA6B,WAAA,CACA/B,KAAAI,QACAF,SAAA,GAGA8B,WAAA,CACAhC,KAAAI,QACAF,SAAA,GAGA+B,iBAAA,CACAjC,KAAAM,OACAJ,QAAA,GAGAgC,IAAA,CACAlC,KAAAI,QACAF,SAAA,IAIAiC,OAAA,CACAC,KAAAC,MACAC,KAAAD,MACAE,MAAAF,MACAG,OAAAH,OAGAI,KAAAC,GACApD,KAAAqD,cAAArD,KAAAqD,cAAAC,KAAAtD,MACAA,KAAAuD,eAAAvD,KAAAuD,eAAAD,KAAAtD,MACAA,KAAAwD,aAAAxD,KAAAwD,aAAAF,KAAAtD,MACAA,KAAAyD,cAAAzD,KAAAyD,cAAAH,KAAAtD,MACAA,KAAA0D,eAAA1D,KAAA0D,eAAAJ,KAAAtD,MAEAK,IAAAC,UAAA,gBAAAR,UAAAqD,KAAA/C,KAAAJ,KAAAoD,GAEApD,KAAA2D,MAAAhC,SACA3B,KAAA2D,MAAAhC,OAAA3B,KAAA2D,MAAAlB,WAAA,OAAA,KAGAzC,KAAA4D,qBAEAR,EAAAS,gBAAA,QACAT,EAAAU,aAAA,MACAV,EAAAW,MAAA/D,KAAAgE,YAAAhE,KAAA2D,MAAAI,QAAA,GACAX,EAAAa,aAAAb,EAAAW,MAEA/D,KAAAkE,wBACA,EAEAC,UACAnE,KAAAoE,kBACApE,KAAAoE,iBAAAC,SAGArE,KAAAsE,QACAtE,KAAAsE,OAAAD,QAEA,EAEAE,cAAAC,GACAA,EAAAC,IAAA,UACAzE,KAAAsE,OAAA7D,KAAAT,KAAA2D,MAAAlD,KACA,IAAA+D,EAAAE,OAGAF,EAAAC,IAAA,cACAzE,KAAA2E,MAAAC,SAAA5E,KAAA2D,MAAAiB,SACA5E,KAAAsE,OAAAM,SAAA5E,KAAA2D,MAAAiB,SACA,IAAAJ,EAAAE,OAGAF,EAAAC,IAAA,WACAzE,KAAA6E,UAAA7E,KAAA2D,MAAAI,OAAA,GACA,IAAAS,EAAAE,QAGA1E,KAAA2D,MAAAhC,SACA3B,KAAA2D,MAAAhC,OAAA3B,KAAA2D,MAAAlB,WAAA,OAAA,KAGAzC,KAAAkE,yBACA,EAEAN,qBACA5D,KAAAsE,OAAAQ,SAAAC,cAAA,SACA/E,KAAAsE,OAAA5D,KAAA,SACAV,KAAAsE,OAAA7D,KAAAT,KAAA2D,MAAAlD,KACAT,KAAAsE,OAAAP,MAAA/D,KAAA2D,MAAAI,MACA/D,KAAAsE,OAAAL,aAAAjE,KAAA2D,MAAAI,MACA/D,KAAA2E,MAAAK,WAAAC,aAAAjF,KAAAsE,OAAAtE,KAAA2E,MACA,EAEAT,yBACA,MAAAS,EAAAO,EAAAlF,KAAA2E,OAEAA,EAAA9E,gBAAA,CACAsF,SAAAR,EAAAS,QAAA,kGAAA,IAAAN,SAAAO,KACAC,kBAAA,EACAC,iBAAA,EACAC,UAAAxF,KAAA2D,MAAAxC,UACAsE,gBAAAzF,KAAA2D,MAAAnC,gBACAkE,cAAA1F,KAAA2D,MAAA9C,cACA8E,QAAA3F,KAAA2D,MAAA5C,QACA6E,QAAA5F,KAAA2D,MAAAzC,QACAE,MAAApB,KAAA2D,MAAAvC,MACAE,MAAAtB,KAAA2D,MAAApC,QAAA,KAAAvB,KAAA2D,MAAArC,MACAuE,QAAA7F,KAAAgE,YAAAhE,KAAA2D,MAAAlC,SACAqE,QAAA9F,KAAAgE,YAAAhE,KAAA2D,MAAAjC,SACAqE,OAAA,CACApE,OAAA3B,KAAA2D,MAAAhC,OACAU,UAAArC,KAAA2D,MAAAtB,UACA2D,UAAAhG,KAAA2D,MAAArB,UACA2D,WAAAjG,KAAA2D,MAAApB,WACA2D,YAAAlG,KAAA2D,MAAAnB,aAEA2D,cAAA,GACAC,mBAAA,GACAC,oBAAA,GACAC,aAAAtG,KAAAqD,cACAkD,cAAAvG,KAAAuD,eACAiD,WAAAxG,KAAA2D,MAAAlB,WACAgE,iBAAAzG,KAAA2D,MAAAjB,WACAgE,oBAAA1G,KAAA2D,MAAAhB,kBACA3C,KAAAwD,cAEAmB,EAAAgC,GAAA,wBAAA3G,KAAAyD,eACAkB,EAAAgC,GAAA,yBAAA3G,KAAA0D,gBAEAiB,EAAAgC,GAAA,uBAAA3G,KAAA4G,cAAAtD,KAAAtD,KAAA,SACA2E,EAAAgC,GAAA,uBAAA3G,KAAA4G,cAAAtD,KAAAtD,KAAA,SACA2E,EAAAgC,GAAA,wBAAA3G,KAAA4G,cAAAtD,KAAAtD,KAAA,UACA2E,EAAAgC,GAAA,yBAAA3G,KAAA4G,cAAAtD,KAAAtD,KAAA,WAEAA,KAAAoE,iBAAAO,EAAAkC,KAAA,kBACA,EAEA7C,YAAA8C,GACA,IAAAA,EAAA,OACA,GAAA,OAAAA,GAAA,SAAAA,EAAA,OAAAC,SAAApF,OAAA3B,KAAA2D,MAAAhC,QACA,MAAAqF,EAAAD,OAAAD,GACA,OAAAE,EAAAC,UAAAD,EAAArF,OAAA3B,KAAA2D,MAAAhC,aAAAV,CACA,EAEAsC,eAAAyD,GACA,SAAAhH,KAAA2D,MAAAvB,iBAAA,IAAA4E,EAAAE,OAAA,IAAAF,EAAAE,QACAlH,KAAA2D,MAAA/B,aAAAuF,MAAAC,GAAApH,KAAAqH,WAAAL,EAAAI,EAAApH,KAAA2D,MAAA7B,kBAAA9B,KAAA2D,MAAA5B,kBACA,EAEAsB,cAAA2D,GACA,OAAAhH,KAAA2D,MAAA3B,YAAAsF,QAAAF,GAAApH,KAAAqH,WAAAL,EAAAI,EAAApH,KAAA2D,MAAA1B,iBAAAjC,KAAA2D,MAAAzB,kBAAAqF,KAAAH,GAAAA,EAAApH,KAAA2D,MAAAxB,mBACA,EAEAkF,WAAA,CAAAL,EAAAI,EAAAI,EAAAC,IACAL,EAAAI,IAAAJ,EAAAK,GAAAT,EAAAU,cAAAN,EAAAI,KAAAR,EAAAW,eAAAP,EAAAK,IACAL,EAAAI,GAAAR,EAAAU,cAAAN,EAAAI,MACAJ,EAAAK,IAAAT,EAAAW,eAAAP,EAAAK,IAIAjE,aAAAwD,GACA,IAAAjD,EAAA/D,KAAA2D,MAAAlB,WAAAzC,KAAA2D,MAAAf,IAAAoE,EAAAY,cAAAZ,EAAArF,OAAA,uBAAAqF,EAAArF,OAAA,cACAkG,EAAA7H,KAAA6G,KAAA9C,MACA/D,KAAA6E,UAAAd,GAEA8D,IAAA7H,KAAA6G,KAAA9C,QACA/D,KAAA4G,cAAA,UACA5G,KAAA4G,cAAA,WAEA,EAEAkB,YAAA/H,GACAA,GAAAC,KAAA2E,MAAAoD,OACA1H,IAAA2H,SAAAhI,KAAA2E,OAGA3E,KAAAiI,IAAA,WAAAjI,KAAA2E,MAAAC,UACA5E,KAAAsE,OAAAP,QAAA/D,KAAA6G,KAAA9C,QACA/D,KAAAiI,IAAA,QAAAjI,KAAAsE,OAAAP,OACA1D,IAAA6H,UAAA,IAAAlI,KAAA4G,cAAA,cAGA5G,KAAA2E,MAAAoD,QACA/H,KAAAiI,IAAA,WAAAjI,KAAA2E,MAAAwD,SAAAC,OACApI,KAAAiI,IAAA,oBAAAjI,KAAA2E,MAAA0D,mBAEA,EAEAxD,UAAAd,EAAAE,GACA,iBAAAF,IAAAA,EAAA,IAEA,OAAAA,GAAA,SAAAA,IAEAA,EADA/D,KAAA2D,MAAAlB,WACAzC,KAAA2D,MAAAf,IAAAmE,SAAAa,cAAAb,SAAApF,OAAA,uBAEAoF,SAAApF,OAAA,eAIA3B,KAAAoE,iBAAAkE,aAAAtI,KAAAgE,YAAAD,IAAA,IAAAwE,MACAvI,KAAAoE,iBAAAoE,WAAAxI,KAAAgE,YAAAD,IAAA,IAAAwE,MAEAvI,KAAA2E,MAAAZ,MAAA/D,KAAAgE,YAAAD,IAAA,GACA/D,KAAAsE,OAAAP,MAAAA,GAAA,GAEAE,IACAjE,KAAA2E,MAAAV,aAAAjE,KAAA2E,MAAAZ,MACA/D,KAAAsE,OAAAL,aAAAjE,KAAAsE,OAAAP,OAGA/D,KAAA8H,aAAA,EACA,EAEArE,cAAA1D,GACAC,KAAAwD,aAAAxD,KAAAoE,iBAAAqE,UACA,EAEA/E,eAAA3D,GACAC,KAAA2E,MAAAZ,OAAAgD,OAAA/G,KAAA2E,MAAAZ,MAAA/D,KAAA2D,MAAAhC,QAAAsF,UAGAjH,KAAA2D,MAAAlB,WACAzC,KAAA2D,MAAAf,IACA5C,KAAA6E,UAAAkC,OAAA/G,KAAA2E,MAAAZ,MAAA/D,KAAA2D,MAAAhC,QAAAiG,eAEA5H,KAAA6E,UAAAkC,OAAA/G,KAAA2E,MAAAZ,MAAA/D,KAAA2D,MAAAhC,QAAAA,OAAA,wBAGA3B,KAAA6E,UAAAkC,OAAA/G,KAAA2E,MAAAZ,MAAA/D,KAAA2D,MAAAhC,QAAAA,OAAA,eATA3B,KAAA6E,UAAA,GAYA,EAEA6D,cAAA3I,GACAC,KAAA2E,QACA3E,KAAA2E,MAAAoD,OAAA,EACA/H,KAAAiI,IAAA,CACAU,SAAA,EACAN,kBAAA,KAEAhI,IAAA6H,UAAA,KACAlI,KAAA2E,OACA3E,KAAA0D,gBAAA,IAEA,ICrXArD,IAAAC,UAAA,oBAAA,CAEAC,QAAA,cAEAqI,YAAA,CACApB,MAAA,GACAC,IAAA,IAGAjH,WAAA,CACAqI,UAAA,CACAnI,KAAAC,OACAC,QAAA,IAGAkI,QAAA,CACApI,KAAAC,OACAC,QAAA,IAGAO,UAAA,CACAT,KAAAI,QACAF,SAAA,GAGAmI,UAAA,CACArI,KAAAC,OACAC,QAAA,OAGAoI,SAAA,CACAtI,KAAAI,QACAF,SAAA,GAGAqI,aAAA,CACAvI,KAAAM,OACAJ,QAAA,MAGAsI,cAAA,CACAxI,KAAAM,OACAJ,QAAA,MAGAuI,aAAA,CACAzI,KAAAM,OACAJ,QAAA,MAGAwI,YAAA,CACA1I,KAAAM,OACAJ,QAAA,OAIAyI,QAAA,CACAC,SAAAb,EAAAc,GACAvJ,KAAA6E,UAAA4D,EAAAc,EACA,GAGApG,KAAAC,GACA/C,IAAAC,UAAA,eAAAR,UAAAqD,KAAA/C,KAAAJ,KAAAoD,GAEApD,KAAA6E,UAAA,CAAA2C,MAAAxH,KAAA2D,MAAAkF,UAAApB,IAAAzH,KAAA2D,MAAAmF,UAAA,EACA,EAEA3E,UACAnE,KAAAoE,kBACApE,KAAAoE,iBAAAC,SAGArE,KAAAsE,QACAtE,KAAAsE,OAAAD,SAGArE,KAAAwJ,cACAxJ,KAAAwJ,aAAAnF,SAGArE,KAAAyJ,YACAzJ,KAAAyJ,WAAApF,QAEA,EAEAE,cAAAC,GACA,KAAAA,EAAAC,IAAA,UACAzE,KAAAsE,OAAA7D,KAAAT,KAAA2D,MAAAlD,KACAT,KAAAwJ,aAAA/I,KAAAT,KAAA0J,SAAA,UACA1J,KAAAyJ,WAAAhJ,KAAAT,KAAA0J,SAAA,QACA,IAAAlF,EAAAE,OAGAF,EAAAC,IAAA,cACAzE,KAAA2E,MAAAC,SAAA5E,KAAA2D,MAAAiB,SACA5E,KAAAsE,OAAAM,SAAA5E,KAAA2D,MAAAiB,SACA5E,KAAAwJ,aAAA5E,SAAA5E,KAAA2D,MAAAiB,SACA5E,KAAAyJ,WAAA7E,SAAA5E,KAAA2D,MAAAiB,SACA,IAAAJ,EAAAE,OALA,CAQA,GAAAF,EAAAC,IAAA,cAAAD,EAAAC,IAAA,WAAA,CAEA,GADAzE,KAAA6E,UAAA,CAAA2C,MAAAxH,KAAA2D,MAAAkF,UAAApB,IAAAzH,KAAA2D,MAAAmF,UAAA,GACAtE,EAAAC,IAAA,cAAAD,EAAAC,IAAA,YAAA,IAAAD,EAAAE,KAAA,OACA,GAAA,IAAAF,EAAAE,KAAA,MACA,CAEA1E,KAAA2D,MAAAhC,SACA3B,KAAA2D,MAAAhC,OAAA3B,KAAA2D,MAAAlB,WAAA,OAAA,KAGAzC,KAAAkE,wBAZA,CAaA,EAEAN,qBACAvD,IAAAC,UAAA,eAAAR,UAAA8D,mBAAAxD,KAAAJ,MAEAA,KAAAwJ,aAAA1E,SAAAC,cAAA,SACA/E,KAAAwJ,aAAA9I,KAAA,SACAV,KAAAwJ,aAAA/I,KAAAT,KAAA0J,SAAA,UACA1J,KAAA2E,MAAAK,WAAAC,aAAAjF,KAAAwJ,aAAAxJ,KAAA2E,OAEA3E,KAAAyJ,WAAA3E,SAAAC,cAAA,SACA/E,KAAAyJ,WAAA/I,KAAA,SACAV,KAAAyJ,WAAAhJ,KAAAT,KAAA0J,SAAA,QACA1J,KAAA2E,MAAAK,WAAAC,aAAAjF,KAAAyJ,WAAAzJ,KAAA2E,MACA,EAEA+E,SAAAC,GACA,OAAA3J,KAAA2D,MAAAlD,KAAAmJ,SAAA,KACA5J,KAAA2D,MAAAlD,KAAAoJ,MAAA,GAAA,GAAAF,EAAA,IAEA3J,KAAA2D,MAAAlD,KAAAkJ,CACA,EAEAzF,yBACA,MAAAS,EAAAO,EAAAlF,KAAA2E,OAEAA,EAAA9E,gBAAA,CACAsF,SAAAR,EAAAS,QAAA,sBAAA,IAAAN,SAAAO,KACAE,iBAAA,EACAC,UAAAxF,KAAA2D,MAAAxC,UACA2I,iBAAA9J,KAAA2D,MAAAqF,SACAvD,gBAAAzF,KAAA2D,MAAAnC,gBACAkE,cAAA1F,KAAA2D,MAAA9C,cACA8E,QAAA3F,KAAA2D,MAAA5C,QACA6E,QAAA5F,KAAA2D,MAAAzC,QACAE,MAAApB,KAAA2D,MAAAvC,MACAE,MAAAtB,KAAA2D,MAAApC,QAAA,KAAAvB,KAAA2D,MAAArC,MACAuE,QAAA7F,KAAAgE,YAAAhE,KAAA2D,MAAAlC,SACAqE,QAAA9F,KAAAgE,YAAAhE,KAAA2D,MAAAjC,SACAqI,QAAA/J,KAAAgK,cACAjE,OAAA,CACApE,OAAA3B,KAAA2D,MAAAhC,OACAoH,UAAA/I,KAAA2D,MAAAoF,UACA1G,UAAArC,KAAA2D,MAAAtB,UACA2D,UAAAhG,KAAA2D,MAAArB,UACA2D,WAAAjG,KAAA2D,MAAApB,WACA2D,YAAAlG,KAAA2D,MAAAnB,aAEA2D,cAAA,GACAC,mBAAA,GACAC,oBAAA,GACAC,aAAAtG,KAAAqD,cACAkD,cAAAvG,KAAAuD,eACAiD,WAAAxG,KAAA2D,MAAAlB,WACAgE,iBAAAzG,KAAA2D,MAAAjB,WACAgE,oBAAA1G,KAAA2D,MAAAhB,kBACA3C,KAAAwD,cAEAmB,EAAAgC,GAAA,wBAAA3G,KAAAyD,eACAkB,EAAAgC,GAAA,yBAAA3G,KAAA0D,gBAEAiB,EAAAgC,GAAA,uBAAA3G,KAAA4G,cAAAtD,KAAAtD,KAAA,SACA2E,EAAAgC,GAAA,uBAAA3G,KAAA4G,cAAAtD,KAAAtD,KAAA,SACA2E,EAAAgC,GAAA,wBAAA3G,KAAA4G,cAAAtD,KAAAtD,KAAA,UACA2E,EAAAgC,GAAA,yBAAA3G,KAAA4G,cAAAtD,KAAAtD,KAAA,WAEAA,KAAAoE,iBAAAO,EAAAkC,KAAA,kBACA,EAEArD,aAAAiF,EAAAc,GACA,IAAA/B,EAAAxH,KAAA2D,MAAAlB,WAAAzC,KAAA2D,MAAAf,IAAA6F,EAAAb,cAAAa,EAAA9G,OAAA,uBAAA3B,KAAA2D,MAAAf,IAAA6F,EAAAb,cAAAa,EAAA9G,OAAA,cACA8F,EAAAzH,KAAA2D,MAAAlB,WAAAzC,KAAA2D,MAAAf,IAAA2G,EAAA3B,cAAA2B,EAAA5H,OAAA,uBAAA3B,KAAA2D,MAAAf,IAAA2G,EAAA3B,cAAA2B,EAAA5H,OAAA,cACAsI,EAAAjK,KAAA6G,KAAAW,MACA0C,EAAAlK,KAAA6G,KAAAY,IAEAzH,KAAA6E,UAAA,CAAA2C,QAAAC,QAEAzH,KAAA6G,KAAA9C,QAAAkG,GAAAjK,KAAA6G,KAAA9C,QAAAmG,IACAlK,KAAA4G,cAAA,UACA5G,KAAA4G,cAAA,WAEA,EAEAkB,YAAA/H,GACAA,GAAAC,KAAA2E,MAAAoD,OACA1H,IAAA2H,SAAAhI,KAAA2E,OAGA3E,KAAAiI,IAAA,WAAAjI,KAAA2E,MAAAC,UACA5E,KAAAsE,OAAAP,QAAA/D,KAAA6G,KAAA9C,OAAA/D,KAAAwJ,eAAAxJ,KAAA6G,KAAAW,OAAAxH,KAAAyJ,aAAAzJ,KAAA6G,KAAAY,MACAzH,KAAAiI,IAAA,CACAlE,MAAA/D,KAAAsE,OAAAP,MACAyD,MAAAxH,KAAAwJ,aAAAzF,MACA0D,IAAAzH,KAAAyJ,WAAA1F,QAEA1D,IAAA6H,UAAA,IAAAlI,KAAA4G,cAAA,cAGA5G,KAAA2E,MAAAoD,QACA/H,KAAAiI,IAAA,WAAAjI,KAAA2E,MAAAwD,SAAAC,OACApI,KAAAiI,IAAA,oBAAAjI,KAAA2E,MAAA0D,mBAEA,EAEAxD,UAAAd,EAAAE,GACA,IAAAuD,MAAAA,EAAA,GAAAC,IAAAA,EAAA,IAAA1D,EAEA,iBAAAyD,IAAAA,EAAA,IACA,iBAAAC,IAAAA,EAAA,IAEA,OAAAD,GAAA,SAAAA,IACAA,EAAAxH,KAAA2D,MAAAlB,WAAAzC,KAAA2D,MAAAf,IAAAmE,SAAAa,cAAAb,SAAApF,OAAA,uBAAAoF,SAAApF,OAAA,eAGA,OAAA8F,GAAA,SAAAA,IACAA,EAAAzH,KAAA2D,MAAAlB,WAAAzC,KAAA2D,MAAAf,IAAAmE,SAAAa,cAAAb,SAAApF,OAAA,uBAAAoF,SAAApF,OAAA,eAGA6F,GACAxH,KAAAoE,iBAAAkE,aAAAtI,KAAAgE,YAAAwD,IAGAC,GACAzH,KAAAoE,iBAAAoE,WAAAxI,KAAAgE,YAAAyD,IAGAzH,KAAA2E,MAAAZ,MAAAyD,GAAAC,EAAAzH,KAAAgE,YAAAwD,GAAAxH,KAAA2D,MAAAoF,UAAA/I,KAAAgE,YAAAyD,GAAA,GACAzH,KAAAsE,OAAAP,MAAAyD,GAAAC,EAAAD,EAAA,IAAAC,EAAA,GACAzH,KAAAwJ,aAAAzF,MAAAyD,GAAA,GACAxH,KAAAyJ,WAAA1F,MAAA0D,GAAA,GAEAxD,IACAjE,KAAA2E,MAAAV,aAAAjE,KAAA2E,MAAAZ,MACA/D,KAAAsE,OAAAL,aAAAjE,KAAAsE,OAAAP,MACA/D,KAAAwJ,aAAAvF,aAAAjE,KAAAwJ,aAAAzF,MACA/D,KAAAyJ,WAAAxF,aAAAjE,KAAAyJ,WAAA1F,OAGA/D,KAAA8H,aAAA,EACA,EAEAkC,cACA,MAAAf,aAAAkB,EAAAjB,cAAAkB,EAAAjB,aAAAkB,EAAAjB,YAAAkB,GAAAtK,KAAA2D,MAEA,GAAAwG,GAAAC,GAAAC,GAAAC,EACA,MAAA,CAAAH,QAAAC,SAAAC,QAAAC,OAEA,EAEA7G,cAAA1D,GACA,MAAAkK,EAAAjK,KAAA6G,KAAAW,MACA0C,EAAAlK,KAAA6G,KAAAY,IAEAzH,KAAAwD,aAAAxD,KAAAoE,iBAAAqE,UAAAzI,KAAAoE,iBAAAmF,SAEAvJ,KAAAwJ,aAAAzF,QAAAkG,GAAAjK,KAAAyJ,WAAA1F,QAAAmG,GACAlK,KAAA4G,cAAA,UAEA","file":"dmxDatePicker.js","sourcesContent":["(() => {\r\n // patch original clickDate method to disallow selecting range with invalid dates in it\r\n const clickDate = daterangepicker.prototype.clickDate;\r\n daterangepicker.prototype.clickDate = function (event) {\r\n if (this.container.find('.in-range:not(.available)').length) return;\r\n return clickDate.call(this, event);\r\n };\r\n})();","dmx.Component('date-picker', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n name: {\r\n type: String,\r\n default: '',\r\n },\r\n\r\n showdropdowns: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n minyear: {\r\n type: Number,\r\n default: undefined,\r\n },\r\n\r\n maxyear: {\r\n type: Number,\r\n default: undefined,\r\n },\r\n\t\r\n\t autoapply: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\t\r\n opens: {\r\n type: String,\r\n default: 'right',\r\n enum: ['left', 'right', 'center'],\r\n },\r\n\r\n drops: {\r\n type: String,\r\n default: 'down',\r\n enum: ['down', 'up', 'auto'],\r\n },\r\n\r\n dropsup: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n showweeknumbers: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n mindate: {\r\n type: String,\r\n default: '',\r\n },\r\n\r\n maxdate: {\r\n type: String,\r\n default: '',\r\n },\r\n\r\n format: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n invaliddates: {\r\n type: Array,\r\n default: [],\r\n },\r\n\r\n invaliddatesStart: {\r\n type: String,\r\n default: 'start',\r\n },\r\n\r\n invaliddatesEnd: {\r\n type: String,\r\n default: 'end',\r\n },\r\n\r\n customdates: {\r\n type: Array,\r\n default: [],\r\n },\r\n\r\n customdatesStart: {\r\n type: String,\r\n default: 'start',\r\n },\r\n\r\n customdatesEnd: {\r\n type: String,\r\n default: 'end',\r\n },\r\n\r\n customdatesClass: {\r\n type: String,\r\n default: 'class',\r\n },\r\n\r\n disableweekends: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n direction: {\r\n type: String,\r\n default: 'ltr',\r\n enum: ['ltr', 'rtl'],\r\n },\r\n\r\n weeklabel: {\r\n type: String,\r\n default: 'W',\r\n },\r\n\r\n applylabel: {\r\n type: String,\r\n default: 'Apply',\r\n },\r\n\r\n cancellabel: {\r\n type: String,\r\n default: 'Cancel',\r\n },\r\n\r\n timepicker: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n use24hours: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n minutesIncrement: {\r\n type: Number,\r\n default: 1,\r\n },\r\n\r\n utc: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n events: {\r\n show: Event,\r\n hide: Event,\r\n apply: Event,\r\n cancel: Event,\r\n },\r\n\r\n init (node) {\r\n this._isCustomDate = this._isCustomDate.bind(this);\r\n this._isInvalidDate = this._isInvalidDate.bind(this);\r\n this._updateValue = this._updateValue.bind(this);\r\n this._applyHandler = this._applyHandler.bind(this);\r\n this._changeHandler = this._changeHandler.bind(this);\r\n\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n\r\n if (!this.props.format) {\r\n this.props.format = this.props.timepicker ? 'L LT' : 'L';\r\n }\r\n\r\n this._createHiddenInput();\r\n\r\n node.removeAttribute('name');\r\n node.autocomplete = 'off';\r\n node.value = this._formatDate(this.props.value) || '';\r\n node.defaultValue = node.value;\r\n \r\n this._createDaterangePicker();\r\n },\r\n\r\n destroy () {\r\n if (this._daterangepicker) {\r\n this._daterangepicker.remove();\r\n }\r\n\r\n if (this._input) {\r\n this._input.remove();\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('name')) {\r\n this._input.name = this.props.name;\r\n if (updatedProps.size === 1) return;\r\n }\r\n\r\n if (updatedProps.has('disabled')) {\r\n this.$node.disabled = this.props.disabled;\r\n this._input.disabled = this.props.disabled;\r\n if (updatedProps.size === 1) return;\r\n }\r\n\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n if (updatedProps.size === 1) return;\r\n }\r\n\r\n if (!this.props.format) {\r\n this.props.format = this.props.timepicker ? 'L LT' : 'L';\r\n }\r\n\r\n this._createDaterangePicker();\r\n },\r\n\r\n _createHiddenInput () {\r\n this._input = document.createElement('input');\r\n this._input.type = 'hidden';\r\n this._input.name = this.props.name;\r\n this._input.value = this.props.value;\r\n this._input.defaultValue = this.props.value;\r\n this.$node.parentNode.insertBefore(this._input, this.$node);\r\n },\r\n\r\n _createDaterangePicker () {\r\n const $node = $(this.$node);\r\n\r\n $node.daterangepicker({\r\n parentEl: $node.closest('.modal, .offcanvas, .offcanvas-sm, .offcanvas-md, .offcanvas-lg, .offcanvas-xl, .offcanvas-xxl')[0] || document.body,\r\n singleDatePicker: true,\r\n autoUpdateInput: false,\r\n\t autoApply: this.props.autoapply,\r\n showWeekNumbers: this.props.showweeknumbers,\r\n showDropdowns: this.props.showdropdowns,\r\n minYear: this.props.minyear,\r\n maxYear: this.props.maxyear,\r\n opens: this.props.opens,\r\n drops: this.props.dropsup ? 'up' : this.props.drops,\r\n minDate: this._formatDate(this.props.mindate),\r\n maxDate: this._formatDate(this.props.maxdate),\r\n locale: {\r\n format: this.props.format,\r\n direction: this.props.direction,\r\n weekLabel: this.props.weeklabel,\r\n applyLabel: this.props.applylabel,\r\n cancelLabel: this.props.cancellabel,\r\n },\r\n buttonClasses: '',\r\n applyButtonClasses: '',\r\n cancelButtonClasses: '',\r\n isCustomDate: this._isCustomDate,\r\n isInvalidDate: this._isInvalidDate,\r\n timePicker: this.props.timepicker,\r\n timePicker24Hour: this.props.use24hours,\r\n timePickerIncrement: this.props.minutesIncrement,\r\n }, this._updateValue);\r\n\r\n $node.on('apply.daterangepicker', this._applyHandler);\r\n $node.on('change.daterangepicker', this._changeHandler);\r\n\r\n $node.on('show.daterangepicker', this.dispatchEvent.bind(this, 'show'));\r\n $node.on('hide.daterangepicker', this.dispatchEvent.bind(this, 'hide'));\r\n $node.on('apply.daterangepicker', this.dispatchEvent.bind(this, 'apply'));\r\n $node.on('cancel.daterangepicker', this.dispatchEvent.bind(this, 'cancel'));\r\n\r\n this._daterangepicker = $node.data('daterangepicker');\r\n },\r\n\r\n _formatDate (str) {\r\n if (!str) return undefined;\r\n if (str == 'now' || str == 'today') return moment().format(this.props.format);\r\n const date = moment(str);\r\n return date.isValid() ? date.format(this.props.format) : undefined;\r\n },\r\n\r\n _isInvalidDate (date) {\r\n if (this.props.disableweekends && (date.day() === 0 || date.day() === 6)) return true;\r\n return this.props.invaliddates.some(range => this._isInRange(date, range, this.props.invaliddatesStart, this.props.invaliddatesEnd));\r\n },\r\n\r\n _isCustomDate (date) {\r\n return this.props.customdates.filter(range => this._isInRange(date, range, this.props.customdatesStart, this.props.customdatesEnd)).map(range => range[this.props.customdatesClass]);\r\n }, \r\n\r\n _isInRange (date, range, start, end) {\r\n if (range[start] && range[end]) return date.isSameOrAfter(range[start]) && date.isSameOrBefore(range[end]);\r\n if (range[start]) return date.isSameOrAfter(range[start]);\r\n if (range[end]) return date.isSameOrBefore(range[end]);\r\n return false;\r\n },\r\n\r\n _updateValue (date) {\r\n let value = this.props.timepicker ? this.props.utc ? date.toISOString() : date.format('YYYY-MM-DD HH:mm:ss') : date.format('YYYY-MM-DD');\r\n let prevValue = this.data.value;\r\n this._setValue(value);\r\n\r\n if (prevValue !== this.data.value) {\r\n this.dispatchEvent('change');\r\n this.dispatchEvent('changed');\r\n }\r\n },\r\n\r\n _updateData (event) {\r\n if (event && this.$node.dirty) {\r\n dmx.validate(this.$node);\r\n }\r\n\r\n this.set('disabled', this.$node.disabled);\r\n if (this._input.value !== this.data.value) {\r\n this.set('value', this._input.value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n\r\n if (this.$node.dirty) {\r\n this.set('invalid', !this.$node.validity.valid);\r\n this.set('validationMessage', this.$node.validationMessage);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (typeof value !== 'string') value = '';\r\n \r\n if (value == 'now' || value == 'today') {\r\n if (this.props.timepicker) {\r\n value = this.props.utc ? moment().toISOString() : moment().format('YYYY-MM-DD HH:mm:ss');\r\n } else {\r\n value = moment().format('YYYY-MM-DD');\r\n }\r\n }\r\n\r\n this._daterangepicker.setStartDate(this._formatDate(value) || new Date());\r\n this._daterangepicker.setEndDate(this._formatDate(value) || new Date());\r\n\r\n this.$node.value = this._formatDate(value) || '';\r\n this._input.value = value || '';\r\n\r\n if (defaultValue) {\r\n this.$node.defaultValue = this.$node.value;\r\n this._input.defaultValue = this._input.value;\r\n } \r\n\r\n this._updateData(true);\r\n },\r\n\r\n _applyHandler (event) {\r\n this._updateValue(this._daterangepicker.startDate);\r\n },\r\n\r\n _changeHandler (event) {\r\n if (!this.$node.value || !moment(this.$node.value, this.props.format).isValid()) {\r\n this._setValue('');\r\n } else {\r\n if (this.props.timepicker) {\r\n if (this.props.utc) {\r\n this._setValue(moment(this.$node.value, this.props.format).toISOString());\r\n } else {\r\n this._setValue(moment(this.$node.value, this.props.format).format('YYYY-MM-DD HH:mm:ss'));\r\n }\r\n } else {\r\n this._setValue(moment(this.$node.value, this.props.format).format('YYYY-MM-DD'));\r\n }\r\n }\r\n },\r\n\r\n _resetHandler (event) {\r\n if (!this.$node) return;\r\n this.$node.dirty = false;\r\n this.set({\r\n invalid: false,\r\n validationMessage: '',\r\n });\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n this._changeHandler()\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('date-range-picker', {\r\n\r\n extends: 'date-picker',\r\n\r\n initialData: {\r\n start: '',\r\n end: '',\r\n },\r\n\r\n attributes: {\r\n startdate: {\r\n type: String,\r\n default: '',\r\n },\r\n\r\n enddate: {\r\n type: String,\r\n default: '',\r\n },\r\n\r\n autoapply: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n separator: {\r\n type: String,\r\n default: ' - ',\r\n },\r\n\r\n unlinked: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n maxspanYears: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n maxspanMonths: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n maxspanWeeks: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n maxspanDays: {\r\n type: Number,\r\n default: null,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (startDate, endDate) {\r\n this._setValue(startDate, endDate);\r\n },\r\n },\r\n\r\n init (node) {\r\n dmx.Component('date-picker').prototype.init.call(this, node);\r\n \r\n this._setValue({ start: this.props.startdate, end: this.props.enddate }, true);\r\n },\r\n\r\n destroy () {\r\n if (this._daterangepicker) {\r\n this._daterangepicker.remove();\r\n }\r\n\r\n if (this._input) {\r\n this._input.remove();\r\n }\r\n\r\n if (this._input_start) {\r\n this._input_start.remove();\r\n }\r\n\r\n if (this._input_end) {\r\n this._input_end.remove();\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('name')) {\r\n this._input.name = this.props.name;\r\n this._input_start.name = this._getName('_start');\r\n this._input_end.name = this._getName('_end');\r\n if (updatedProps.size === 1) return;\r\n }\r\n\r\n if (updatedProps.has('disabled')) {\r\n this.$node.disabled = this.props.disabled;\r\n this._input.disabled = this.props.disabled;\r\n this._input_start.disabled = this.props.disabled;\r\n this._input_end.disabled = this.props.disabled;\r\n if (updatedProps.size === 1) return;\r\n }\r\n\r\n if (updatedProps.has('startdate') || updatedProps.has('enddate')) {\r\n this._setValue({ start: this.props.startdate, end: this.props.enddate }, true);\r\n if (updatedProps.has('startdate') && updatedProps.has('enddate') && updatedProps.size === 2) return;\r\n if (updatedProps.size === 1) return;\r\n }\r\n\r\n if (!this.props.format) {\r\n this.props.format = this.props.timepicker ? 'L LT' : 'L';\r\n }\r\n\r\n this._createDaterangePicker();\r\n },\r\n\r\n _createHiddenInput () {\r\n dmx.Component('date-picker').prototype._createHiddenInput.call(this);\r\n\r\n this._input_start = document.createElement('input');\r\n this._input_start.type = 'hidden';\r\n this._input_start.name = this._getName('_start');\r\n this.$node.parentNode.insertBefore(this._input_start, this.$node);\r\n\r\n this._input_end = document.createElement('input');\r\n this._input_end.type = 'hidden';\r\n this._input_end.name = this._getName('_end');\r\n this.$node.parentNode.insertBefore(this._input_end, this.$node);\r\n },\r\n\r\n _getName (suffix) {\r\n if (this.props.name.endsWith(']')) {\r\n return this.props.name.slice(0, -1) + suffix + ']';\r\n }\r\n return this.props.name + suffix;\r\n },\r\n\r\n _createDaterangePicker () {\r\n const $node = $(this.$node);\r\n\r\n $node.daterangepicker({\r\n parentEl: $node.closest('.modal, .offcanvas')[0] || document.body,\r\n autoUpdateInput: false,\r\n autoApply: this.props.autoapply,\r\n linkedCalendars: !this.props.unlinked,\r\n showWeekNumbers: this.props.showweeknumbers,\r\n showDropdowns: this.props.showdropdowns,\r\n minYear: this.props.minyear,\r\n maxYear: this.props.maxyear,\r\n opens: this.props.opens,\r\n drops: this.props.dropsup ? 'up' : this.props.drops,\r\n minDate: this._formatDate(this.props.mindate),\r\n maxDate: this._formatDate(this.props.maxdate),\r\n maxSpan: this._getMaxSpan(),\r\n locale: {\r\n format: this.props.format,\r\n separator: this.props.separator,\r\n direction: this.props.direction,\r\n weekLabel: this.props.weeklabel,\r\n applyLabel: this.props.applylabel,\r\n cancelLabel: this.props.cancellabel,\r\n },\r\n buttonClasses: '',\r\n applyButtonClasses: '',\r\n cancelButtonClasses: '',\r\n isCustomDate: this._isCustomDate,\r\n isInvalidDate: this._isInvalidDate,\r\n timePicker: this.props.timepicker,\r\n timePicker24Hour: this.props.use24hours,\r\n timePickerIncrement: this.props.minutesIncrement,\r\n }, this._updateValue);\r\n\r\n $node.on('apply.daterangepicker', this._applyHandler);\r\n $node.on('change.daterangepicker', this._changeHandler);\r\n\r\n $node.on('show.daterangepicker', this.dispatchEvent.bind(this, 'show'));\r\n $node.on('hide.daterangepicker', this.dispatchEvent.bind(this, 'hide'));\r\n $node.on('apply.daterangepicker', this.dispatchEvent.bind(this, 'apply'));\r\n $node.on('cancel.daterangepicker', this.dispatchEvent.bind(this, 'cancel'));\r\n\r\n this._daterangepicker = $node.data('daterangepicker');\r\n },\r\n\r\n _updateValue (startDate, endDate) {\r\n let start = this.props.timepicker ? this.props.utc ? startDate.toISOString() : startDate.format('YYYY-MM-DD HH:mm:ss') : this.props.utc ? startDate.toISOString() : startDate.format('YYYY-MM-DD');\r\n let end = this.props.timepicker ? this.props.utc ? endDate.toISOString() : endDate.format('YYYY-MM-DD HH:mm:ss') : this.props.utc ? endDate.toISOString() : endDate.format('YYYY-MM-DD');\r\n let prevStart = this.data.start;\r\n let prevEnd = this.data.end;\r\n\r\n this._setValue({ start, end });\r\n\r\n if (this.data.value !== prevStart || this.data.value !== prevEnd) {\r\n this.dispatchEvent('change');\r\n this.dispatchEvent('changed');\r\n }\r\n },\r\n\r\n _updateData (event) {\r\n if (event && this.$node.dirty) {\r\n dmx.validate(this.$node);\r\n }\r\n\r\n this.set('disabled', this.$node.disabled);\r\n if (this._input.value !== this.data.value || this._input_start !== this.data.start || this._input_end !== this.data.end) {\r\n this.set({\r\n value: this._input.value,\r\n start: this._input_start.value,\r\n end: this._input_end.value,\r\n });\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n\r\n if (this.$node.dirty) {\r\n this.set('invalid', !this.$node.validity.valid);\r\n this.set('validationMessage', this.$node.validationMessage);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n let { start = '', end = '' } = value;\r\n\r\n if (typeof start !== 'string') start = '';\r\n if (typeof end !== 'string') end = '';\r\n \r\n if (start == 'now' || start == 'today') {\r\n start = this.props.timepicker ? this.props.utc ? moment().toISOString() : moment().format('YYYY-MM-DD HH:mm:ss') : moment().format('YYYY-MM-DD');\r\n }\r\n\r\n if (end == 'now' || end == 'today') {\r\n end = this.props.timepicker ? this.props.utc ? moment().toISOString() : moment().format('YYYY-MM-DD HH:mm:ss') : moment().format('YYYY-MM-DD');\r\n }\r\n\r\n if (start) {\r\n this._daterangepicker.setStartDate(this._formatDate(start));\r\n }\r\n\r\n if (end) {\r\n this._daterangepicker.setEndDate(this._formatDate(end));\r\n }\r\n\r\n this.$node.value = start && end ? this._formatDate(start) + this.props.separator + this._formatDate(end) : '';\r\n this._input.value = start && end ? start + '/' + end : '';\r\n this._input_start.value = start || '';\r\n this._input_end.value = end || '';\r\n\r\n if (defaultValue) {\r\n this.$node.defaultValue = this.$node.value;\r\n this._input.defaultValue = this._input.value;\r\n this._input_start.defaultValue = this._input_start.value;\r\n this._input_end.defaultValue = this._input_end.value;\r\n }\r\n\r\n this._updateData(true);\r\n },\r\n\r\n _getMaxSpan () {\r\n const { maxspanYears: years, maxspanMonths: months, maxspanWeeks: weeks, maxspanDays: days } = this.props;\r\n\r\n if (years || months || weeks || days) {\r\n return { years, months, weeks, days };\r\n }\r\n },\r\n\r\n _applyHandler (event) {\r\n const prevStart = this.data.start;\r\n const prevEnd = this.data.end;\r\n\r\n this._updateValue(this._daterangepicker.startDate, this._daterangepicker.endDate);\r\n \r\n if (this._input_start.value !== prevStart || this._input_end.value !== prevEnd) {\r\n this.dispatchEvent('changed');\r\n }\r\n },\r\n\r\n});\r\n"]}
\ No newline at end of file
diff --git a/public/dmxAppConnect/dmxDatePicker/themes/blue.css b/public/dmxAppConnect/dmxDatePicker/themes/blue.css
new file mode 100644
index 0000000..b37c8a2
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/themes/blue.css
@@ -0,0 +1,22 @@
+.daterangepicker td.available:hover, .daterangepicker th.available:hover {
+ background-color: #eee;
+}
+.daterangepicker td.in-range {
+ background-color: #e5f2ff !important;
+ color: #000 !important;
+}
+.daterangepicker td.in-range:hover {
+ background-color: #b3d7ff !important;
+
+}
+.daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #007bff !important;
+ color: #fff !important;
+}
+.applyBtn {
+ color: #fff !important;
+ background-color: #007bff !important;
+}
+.applyBtn:hover {
+ background-color: #006fe6 !important;
+}
\ No newline at end of file
diff --git a/public/dmxAppConnect/dmxDatePicker/themes/cyan.css b/public/dmxAppConnect/dmxDatePicker/themes/cyan.css
new file mode 100644
index 0000000..36d03b0
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/themes/cyan.css
@@ -0,0 +1,22 @@
+.daterangepicker td.available:hover, .daterangepicker th.available:hover {
+ background-color: #eee;
+}
+.daterangepicker td.in-range {
+ background-color: #e8f9fc !important;
+ color: #000 !important;
+}
+.daterangepicker td.in-range:hover {
+ background-color: #bbeef6 !important;
+
+}
+.daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #17a2b8 !important;
+ color: #fff !important;
+}
+.applyBtn {
+ color: #fff !important;
+ background-color: #17a2b8 !important;
+}
+.applyBtn:hover {
+ background-color: #148c9f !important;
+}
\ No newline at end of file
diff --git a/public/dmxAppConnect/dmxDatePicker/themes/dark-gray.css b/public/dmxAppConnect/dmxDatePicker/themes/dark-gray.css
new file mode 100644
index 0000000..50c8183
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/themes/dark-gray.css
@@ -0,0 +1,22 @@
+.daterangepicker td.available:hover, .daterangepicker th.available:hover {
+ background-color: #dadada;
+}
+.daterangepicker td.in-range {
+ background-color: #f1f2f4 !important;
+ color: #000 !important;
+}
+.daterangepicker td.in-range:hover {
+ background-color: #d5d9dd !important;
+
+}
+.daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #343a40 !important;
+ color: #fff !important;
+}
+.applyBtn {
+ color: #fff !important;
+ background-color: #343a40 !important;
+}
+.applyBtn:hover {
+ background-color: #505962 !important;
+}
\ No newline at end of file
diff --git a/public/dmxAppConnect/dmxDatePicker/themes/gray.css b/public/dmxAppConnect/dmxDatePicker/themes/gray.css
new file mode 100644
index 0000000..2f4a086
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/themes/gray.css
@@ -0,0 +1,22 @@
+.daterangepicker td.available:hover, .daterangepicker th.available:hover {
+ background-color: #eee;
+}
+.daterangepicker td.in-range {
+ background-color: #d6d9dc !important;
+ color: #000 !important;
+}
+.daterangepicker td.in-range:hover {
+ background-color: #bbc0c4 !important;
+
+}
+.daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #6c757d !important;
+ color: #fff !important;
+}
+.applyBtn {
+ color: #fff !important;
+ background-color: #6c757d !important;
+}
+.applyBtn:hover {
+ background-color: #6a737b !important;
+}
\ No newline at end of file
diff --git a/public/dmxAppConnect/dmxDatePicker/themes/green.css b/public/dmxAppConnect/dmxDatePicker/themes/green.css
new file mode 100644
index 0000000..4430ffc
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/themes/green.css
@@ -0,0 +1,22 @@
+.daterangepicker td.available:hover, .daterangepicker th.available:hover {
+ background-color: #eee;
+}
+.daterangepicker td.in-range {
+ background-color: #eafaee !important;
+ color: #24292e !important;
+}
+.daterangepicker td.in-range:hover {
+ background-color: #c1f0cc !important;
+
+}
+.daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #28a745 !important;
+ color: #fff !important;
+}
+.applyBtn {
+ color: #fff !important;
+ background-color: #28a745 !important;
+}
+.applyBtn:hover {
+ background-color: #22903c !important;
+}
\ No newline at end of file
diff --git a/public/dmxAppConnect/dmxDatePicker/themes/orange.css b/public/dmxAppConnect/dmxDatePicker/themes/orange.css
new file mode 100644
index 0000000..459729a
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/themes/orange.css
@@ -0,0 +1,22 @@
+.daterangepicker td.available:hover, .daterangepicker th.available:hover {
+ background-color: #eee;
+}
+.daterangepicker td.in-range {
+ background-color: #fff1e6 !important;
+ color: #000 !important;
+}
+.daterangepicker td.in-range:hover {
+ background-color: #fed5b3 !important;
+
+}
+.daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #fd7e14 !important;
+ color: #fff !important;
+}
+.applyBtn {
+ color: #fff !important;
+ background-color: #6c757d !important;
+}
+.applyBtn:hover {
+ background-color: #e46902 !important;
+}
\ No newline at end of file
diff --git a/public/dmxAppConnect/dmxDatePicker/themes/pink.css b/public/dmxAppConnect/dmxDatePicker/themes/pink.css
new file mode 100644
index 0000000..7f7e4bc
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/themes/pink.css
@@ -0,0 +1,22 @@
+.daterangepicker td.available:hover, .daterangepicker th.available:hover {
+ background-color: #eee;
+}
+.daterangepicker td.in-range {
+ background-color: #fce8f1 !important;
+ color: #000 !important;
+}
+.daterangepicker td.in-range:hover {
+ background-color: #f7bbd6 !important;
+
+}
+.daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #e83e8c !important;
+ color: #fff !important;
+}
+.applyBtn {
+ color: #fff !important;
+ background-color: #e83e8c !important;
+}
+.applyBtn:hover {
+ background-color: #cd186b !important;
+}
\ No newline at end of file
diff --git a/public/dmxAppConnect/dmxDatePicker/themes/purple.css b/public/dmxAppConnect/dmxDatePicker/themes/purple.css
new file mode 100644
index 0000000..f3e88e8
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/themes/purple.css
@@ -0,0 +1,22 @@
+.daterangepicker td.available:hover, .daterangepicker th.available:hover {
+ background-color: #eee;
+}
+.daterangepicker td.in-range {
+ background-color: #f0ecf9 !important;
+ color: #000 !important;
+}
+.daterangepicker td.in-range:hover {
+ background-color: #d3c5ec !important;
+
+}
+.daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #6f42c1 !important;
+ color: #fff !important;
+}
+.applyBtn {
+ color: #fff !important;
+ background-color: #6f42c1 !important;
+}
+.applyBtn:hover {
+ background-color: #6239ad !important;
+}
\ No newline at end of file
diff --git a/public/dmxAppConnect/dmxDatePicker/themes/red.css b/public/dmxAppConnect/dmxDatePicker/themes/red.css
new file mode 100644
index 0000000..8b12d67
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/themes/red.css
@@ -0,0 +1,22 @@
+.daterangepicker td.available:hover, .daterangepicker th.available:hover {
+ background-color: #eee;
+}
+.daterangepicker td.in-range {
+ background-color: #fbe9eb !important;
+ color: #24292e !important;
+}
+.daterangepicker td.in-range:hover {
+ background-color: #f4bec3 !important;
+
+}
+.daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #dc3545 !important;
+ color: #fff !important;
+}
+.applyBtn {
+ color: #fff !important;
+ background-color: #dc3545 !important;
+}
+.applyBtn:hover {
+ background-color: #c42231 !important;
+}
\ No newline at end of file
diff --git a/public/dmxAppConnect/dmxDatePicker/themes/teal.css b/public/dmxAppConnect/dmxDatePicker/themes/teal.css
new file mode 100644
index 0000000..b1fd8f9
--- /dev/null
+++ b/public/dmxAppConnect/dmxDatePicker/themes/teal.css
@@ -0,0 +1,22 @@
+.daterangepicker td.available:hover, .daterangepicker th.available:hover {
+ background-color: #eee;
+}
+.daterangepicker td.in-range {
+ background-color: #e9fbf6 !important;
+ color: #000 !important;
+}
+.daterangepicker td.in-range:hover {
+ background-color: #bdf4e4 !important;
+
+}
+.daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #20c997 !important;
+ color: #fff !important;
+}
+.applyBtn {
+ color: #fff !important;
+ background-color: #20c997 !important;
+}
+.applyBtn:hover {
+ background-color: #199a74 !important;
+}
\ No newline at end of file
diff --git a/public/js/libProcessScript.js b/public/js/libProcessScript.js
index b5a50e2..1c8b01a 100644
--- a/public/js/libProcessScript.js
+++ b/public/js/libProcessScript.js
@@ -138,7 +138,8 @@ function createDebugLogger(debug, prefix = "DD") {
};
}
-function saveSignature() {
+
+function saveSignature_OFF() { //Testing a new function under dummyfunctions section
const canvas = document.getElementById('signatureCanvas');
const imageData = canvas.toDataURL('image/png');
dd(imageData.length)
@@ -173,3 +174,36 @@ function runMyFunction() {
function generateRandomIdentifier(v) {
return generateRandomFilename(v)
}
+
+
+function saveSignature() {
+ const canvas = document.getElementById('signatureCanvas');
+ const imageData = canvas.toDataURL('image/png'); // Convert the canvas to a Base64 image string
+ dd("Got Signature:", imageData)
+
+ dmx.parse('serverconnect_sign.load({image: "' + imageData + '"})').then((response) => {
+ const uploadedSignature = document.getElementById('uploadedSignature');
+ dd(uploadedSignature)
+ dd("Response:", response.fileUrl)
+ uploadedSignature.src = response.fileUrl; // Set the uploaded file URL to the image element
+
+ }).catch((error) => {
+ console.error("Error uploading signature:", error);
+ });
+}
+
+
+function saveSignatureNew() {
+ const canvas = document.getElementById('signatureCanvas');
+ const imageData = canvas.toDataURL('image/png'); // Convert the canvas to a Base64 image string
+ dd("Got Signature:", imageData)
+ dmx.app.data.content.serverconnect_sign.__load({ imageData: imageData }).then((response) => {
+ dd("Success:", response);
+ const uploadedSignature = document.getElementById('uploadedSignature');
+ dd(uploadedSignature, "Response:", response.fileUrl)
+ uploadedSignature.src = response.fileUrl; // Set the uploaded file URL to the image element
+ }).catch((error) => {
+ console.error("Error:", error);
+ });
+}
+
diff --git a/views/index0.ejs b/views/index0.ejs
index 7650eda..a734753 100644
--- a/views/index0.ejs
+++ b/views/index0.ejs
@@ -1,5 +1,4 @@
-
-
+
+
@@ -44,6 +46,13 @@
+
+
+
+
+
+
+