diff --git a/build/npm/Plugins.js b/build/npm/Plugins.js
index 62869fe16..010f7d3a2 100644
--- a/build/npm/Plugins.js
+++ b/build/npm/Plugins.js
@@ -395,6 +395,11 @@ const Plugins = [
{
from: 'node_modules/bs-custom-file-input/dist/',
to: 'plugins/bs-custom-file-input'
+ },
+ // bs-stepper
+ {
+ from: 'node_modules/bs-stepper/dist/',
+ to: 'plugins/bs-stepper'
}
]
diff --git a/docs/dependencies.md b/docs/dependencies.md
index 1f8cdb765..b7ca73ecb 100644
--- a/docs/dependencies.md
+++ b/docs/dependencies.md
@@ -52,6 +52,7 @@ AdminLTE makes use of the following plugins. For documentation, updates or licen
Tempus Dominus
Bootstrap4 Duallistbox
bs-custom-file-input
+ bs-stepper
diff --git a/package-lock.json b/package-lock.json
index 2948161a4..e290332d1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2107,6 +2107,11 @@
"integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=",
"dev": true
},
+ "bs-stepper": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/bs-stepper/-/bs-stepper-1.7.0.tgz",
+ "integrity": "sha512-+DX7UKKgw2GI6ucsSCRd19VHYrxf/8znRCLs1lQVVLxz+h7EqgIOxoHcJ0/QTaaNoR9Cwg78ydo6hXIasyd3LA=="
+ },
"buffer-equal": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
diff --git a/package.json b/package.json
index 31285049a..970f7e916 100644
--- a/package.json
+++ b/package.json
@@ -82,6 +82,7 @@
"bootstrap-switch": "3.3.4",
"bootstrap4-duallistbox": "^4.0.2",
"bs-custom-file-input": "^1.3.4",
+ "bs-stepper": "^1.7.0",
"chart.js": "^2.9.3",
"datatables.net": "^1.10.21",
"datatables.net-autofill-bs4": "^2.3.5",
diff --git a/plugins/bs-stepper/css/bs-stepper.css b/plugins/bs-stepper/css/bs-stepper.css
new file mode 100644
index 000000000..1093abb2a
--- /dev/null
+++ b/plugins/bs-stepper/css/bs-stepper.css
@@ -0,0 +1,194 @@
+/*!
+ * bsStepper v1.7.0 (https://github.com/Johann-S/bs-stepper)
+ * Copyright 2018 - 2019 Johann-S
+ * Licensed under MIT (https://github.com/Johann-S/bs-stepper/blob/master/LICENSE)
+ */
+
+.bs-stepper .step-trigger {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ padding: 20px;
+ font-size: 1rem;
+ font-weight: 700;
+ line-height: 1.5;
+ color: #6c757d;
+ text-align: center;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-color: transparent;
+ border: none;
+ border-radius: .25rem;
+ transition: background-color .15s ease-out, color .15s ease-out;
+}
+
+.bs-stepper .step-trigger:not(:disabled):not(.disabled) {
+ cursor: pointer;
+}
+
+.bs-stepper .step-trigger:disabled,
+.bs-stepper .step-trigger.disabled {
+ pointer-events: none;
+ opacity: .65;
+}
+
+.bs-stepper .step-trigger:focus {
+ color: #007bff;
+ outline: none;
+}
+
+.bs-stepper .step-trigger:hover {
+ text-decoration: none;
+ background-color: rgba(0, 0, 0, .06);
+}
+
+@media (max-width: 520px) {
+ .bs-stepper .step-trigger {
+ -ms-flex-direction: column;
+ flex-direction: column;
+ padding: 10px;
+ }
+}
+
+.bs-stepper-label {
+ display: inline-block;
+ margin: .25rem;
+}
+
+.bs-stepper-header {
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+@media (max-width: 520px) {
+ .bs-stepper-header {
+ margin: 0 -10px;
+ text-align: center;
+ }
+}
+
+.bs-stepper-line,
+.bs-stepper .line {
+ -ms-flex: 1 0 32px;
+ flex: 1 0 32px;
+ min-width: 1px;
+ min-height: 1px;
+ margin: auto;
+ background-color: rgba(0, 0, 0, .12);
+}
+
+@media (max-width: 400px) {
+ .bs-stepper-line,
+ .bs-stepper .line {
+ -ms-flex-preferred-size: 20px;
+ flex-basis: 20px;
+ }
+}
+
+.bs-stepper-circle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-line-pack: center;
+ align-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ width: 2em;
+ height: 2em;
+ padding: .5em 0;
+ margin: .25rem;
+ line-height: 1em;
+ color: #fff;
+ background-color: #6c757d;
+ border-radius: 1em;
+}
+
+.active .bs-stepper-circle {
+ background-color: #007bff;
+}
+
+.bs-stepper-content {
+ padding: 0 20px 20px;
+}
+
+@media (max-width: 520px) {
+ .bs-stepper-content {
+ padding: 0;
+ }
+}
+
+.bs-stepper.vertical {
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.bs-stepper.vertical .bs-stepper-header {
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ margin: 0;
+}
+
+.bs-stepper.vertical .bs-stepper-pane,
+.bs-stepper.vertical .content {
+ display: block;
+}
+
+.bs-stepper.vertical .bs-stepper-pane:not(.fade),
+.bs-stepper.vertical .content:not(.fade) {
+ display: block;
+ visibility: hidden;
+}
+
+.bs-stepper-pane:not(.fade),
+.bs-stepper .content:not(.fade) {
+ display: none;
+}
+
+.bs-stepper .content.fade,
+.bs-stepper-pane.fade {
+ visibility: hidden;
+ transition-duration: .3s;
+ transition-property: opacity;
+}
+
+.bs-stepper-pane.fade.active,
+.bs-stepper .content.fade.active {
+ visibility: visible;
+ opacity: 1;
+}
+
+.bs-stepper-pane.active:not(.fade),
+.bs-stepper .content.active:not(.fade) {
+ display: block;
+ visibility: visible;
+}
+
+.bs-stepper-pane.dstepper-block,
+.bs-stepper .content.dstepper-block {
+ display: block;
+}
+
+.bs-stepper:not(.vertical) .bs-stepper-pane.dstepper-none,
+.bs-stepper:not(.vertical) .content.dstepper-none {
+ display: none;
+}
+
+.vertical .bs-stepper-pane.fade.dstepper-none,
+.vertical .content.fade.dstepper-none {
+ visibility: hidden;
+}
+
+/*# sourceMappingURL=bs-stepper.css.map */
\ No newline at end of file
diff --git a/plugins/bs-stepper/css/bs-stepper.css.map b/plugins/bs-stepper/css/bs-stepper.css.map
new file mode 100644
index 000000000..fc231a58c
--- /dev/null
+++ b/plugins/bs-stepper/css/bs-stepper.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/css/bs-stepper.css"],"names":[],"mappings":"AAAA;;;;EAIE;;AAEF;EACE,2BAAoB;EAApB,oBAAoB;EACpB,mBAAe;MAAf,eAAe;EACf,sBAAmB;MAAnB,mBAAmB;EACnB,qBAAuB;MAAvB,uBAAuB;EACvB,aAAa;EACb,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,cAAc;EACd,kBAAkB;EAClB,qBAAqB;EACrB,mBAAmB;EACnB,sBAAsB;EACtB,yBAAiB;KAAjB,sBAAiB;MAAjB,qBAAiB;UAAjB,iBAAiB;EACjB,6BAA6B;EAC7B,YAAY;EACZ,qBAAqB;EACrB,+DAA+D;AACjE;;AAEA;EACE,eAAe;AACjB;;AAEA;;EAEE,oBAAoB;EACpB,YAAY;AACd;;AAEA;EACE,cAAc;EACd,aAAa;AACf;;AAEA;EACE,qBAAqB;EACrB,oCAAoC;AACtC;;AAEA;EACE;IACE,0BAAsB;QAAtB,sBAAsB;IACtB,aAAa;EACf;AACF;;AAEA;EACE,qBAAqB;EACrB,cAAc;AAChB;;AAEA;EACE,oBAAa;EAAb,aAAa;EACb,sBAAmB;MAAnB,mBAAmB;AACrB;;AAEA;EACE;IACE,eAAe;IACf,kBAAkB;EACpB;AACF;;AAEA;;EAEE,kBAAc;MAAd,cAAc;EACd,cAAc;EACd,eAAe;EACf,YAAY;EACZ,oCAAoC;AACtC;;AAEA;EACE;;IAEE,6BAAgB;QAAhB,gBAAgB;EAClB;AACF;;AAEA;EACE,2BAAoB;EAApB,oBAAoB;EACpB,0BAAqB;MAArB,qBAAqB;EACrB,qBAAuB;MAAvB,uBAAuB;EACvB,UAAU;EACV,WAAW;EACX,eAAe;EACf,cAAc;EACd,gBAAgB;EAChB,WAAW;EACX,yBAAyB;EACzB,kBAAkB;AACpB;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,oBAAoB;AACtB;;AAEA;EACE;IACE,UAAU;EACZ;AACF;;AAEA;EACE,oBAAa;EAAb,aAAa;AACf;;AAEA;EACE,0BAAsB;MAAtB,sBAAsB;EACtB,uBAAoB;MAApB,oBAAoB;EACpB,SAAS;AACX;;AAEA;;EAEE,cAAc;AAChB;;AAEA;;EAEE,cAAc;EACd,kBAAkB;AACpB;;AAEA;;EAEE,aAAa;AACf;;AAEA;;EAEE,kBAAkB;EAClB,wBAAwB;EACxB,4BAA4B;AAC9B;;AAEA;;EAEE,mBAAmB;EACnB,UAAU;AACZ;;AAEA;;EAEE,cAAc;EACd,mBAAmB;AACrB;;AAEA;;EAEE,cAAc;AAChB;;AAEA;;EAEE,aAAa;AACf;;AAEA;;EAEE,kBAAkB;AACpB","file":"bs-stepper.css","sourcesContent":["/*!\r\n * bsStepper v1.7.0 (https://github.com/Johann-S/bs-stepper)\r\n * Copyright 2018 - 2019 Johann-S \r\n * Licensed under MIT (https://github.com/Johann-S/bs-stepper/blob/master/LICENSE)\r\n */\r\n\r\n.bs-stepper .step-trigger {\r\n display: inline-flex;\r\n flex-wrap: wrap;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 20px;\r\n font-size: 1rem;\r\n font-weight: 700;\r\n line-height: 1.5;\r\n color: #6c757d;\r\n text-align: center;\r\n text-decoration: none;\r\n white-space: nowrap;\r\n vertical-align: middle;\r\n user-select: none;\r\n background-color: transparent;\r\n border: none;\r\n border-radius: .25rem;\r\n transition: background-color .15s ease-out, color .15s ease-out;\r\n}\r\n\r\n.bs-stepper .step-trigger:not(:disabled):not(.disabled) {\r\n cursor: pointer;\r\n}\r\n\r\n.bs-stepper .step-trigger:disabled,\r\n.bs-stepper .step-trigger.disabled {\r\n pointer-events: none;\r\n opacity: .65;\r\n}\r\n\r\n.bs-stepper .step-trigger:focus {\r\n color: #007bff;\r\n outline: none;\r\n}\r\n\r\n.bs-stepper .step-trigger:hover {\r\n text-decoration: none;\r\n background-color: rgba(0, 0, 0, .06);\r\n}\r\n\r\n@media (max-width: 520px) {\r\n .bs-stepper .step-trigger {\r\n flex-direction: column;\r\n padding: 10px;\r\n }\r\n}\r\n\r\n.bs-stepper-label {\r\n display: inline-block;\r\n margin: .25rem;\r\n}\r\n\r\n.bs-stepper-header {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n@media (max-width: 520px) {\r\n .bs-stepper-header {\r\n margin: 0 -10px;\r\n text-align: center;\r\n }\r\n}\r\n\r\n.bs-stepper-line,\r\n.bs-stepper .line {\r\n flex: 1 0 32px;\r\n min-width: 1px;\r\n min-height: 1px;\r\n margin: auto;\r\n background-color: rgba(0, 0, 0, .12);\r\n}\r\n\r\n@media (max-width: 400px) {\r\n .bs-stepper-line,\r\n .bs-stepper .line {\r\n flex-basis: 20px;\r\n }\r\n}\r\n\r\n.bs-stepper-circle {\r\n display: inline-flex;\r\n align-content: center;\r\n justify-content: center;\r\n width: 2em;\r\n height: 2em;\r\n padding: .5em 0;\r\n margin: .25rem;\r\n line-height: 1em;\r\n color: #fff;\r\n background-color: #6c757d;\r\n border-radius: 1em;\r\n}\r\n\r\n.active .bs-stepper-circle {\r\n background-color: #007bff;\r\n}\r\n\r\n.bs-stepper-content {\r\n padding: 0 20px 20px;\r\n}\r\n\r\n@media (max-width: 520px) {\r\n .bs-stepper-content {\r\n padding: 0;\r\n }\r\n}\r\n\r\n.bs-stepper.vertical {\r\n display: flex;\r\n}\r\n\r\n.bs-stepper.vertical .bs-stepper-header {\r\n flex-direction: column;\r\n align-items: stretch;\r\n margin: 0;\r\n}\r\n\r\n.bs-stepper.vertical .bs-stepper-pane,\r\n.bs-stepper.vertical .content {\r\n display: block;\r\n}\r\n\r\n.bs-stepper.vertical .bs-stepper-pane:not(.fade),\r\n.bs-stepper.vertical .content:not(.fade) {\r\n display: block;\r\n visibility: hidden;\r\n}\r\n\r\n.bs-stepper-pane:not(.fade),\r\n.bs-stepper .content:not(.fade) {\r\n display: none;\r\n}\r\n\r\n.bs-stepper .content.fade,\r\n.bs-stepper-pane.fade {\r\n visibility: hidden;\r\n transition-duration: .3s;\r\n transition-property: opacity;\r\n}\r\n\r\n.bs-stepper-pane.fade.active,\r\n.bs-stepper .content.fade.active {\r\n visibility: visible;\r\n opacity: 1;\r\n}\r\n\r\n.bs-stepper-pane.active:not(.fade),\r\n.bs-stepper .content.active:not(.fade) {\r\n display: block;\r\n visibility: visible;\r\n}\r\n\r\n.bs-stepper-pane.dstepper-block,\r\n.bs-stepper .content.dstepper-block {\r\n display: block;\r\n}\r\n\r\n.bs-stepper:not(.vertical) .bs-stepper-pane.dstepper-none,\r\n.bs-stepper:not(.vertical) .content.dstepper-none {\r\n display: none;\r\n}\r\n\r\n.vertical .bs-stepper-pane.fade.dstepper-none,\r\n.vertical .content.fade.dstepper-none {\r\n visibility: hidden;\r\n}\r\n"]}
\ No newline at end of file
diff --git a/plugins/bs-stepper/css/bs-stepper.min.css b/plugins/bs-stepper/css/bs-stepper.min.css
new file mode 100644
index 000000000..349708d0a
--- /dev/null
+++ b/plugins/bs-stepper/css/bs-stepper.min.css
@@ -0,0 +1,6 @@
+/*!
+ * bsStepper v1.7.0 (https://github.com/Johann-S/bs-stepper)
+ * Copyright 2018 - 2019 Johann-S
+ * Licensed under MIT (https://github.com/Johann-S/bs-stepper/blob/master/LICENSE)
+ */.bs-stepper .step-trigger{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:20px;font-size:1rem;font-weight:700;line-height:1.5;color:#6c757d;text-align:center;text-decoration:none;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:none;border-radius:.25rem;transition:background-color .15s ease-out,color .15s ease-out}.bs-stepper .step-trigger:not(:disabled):not(.disabled){cursor:pointer}.bs-stepper .step-trigger.disabled,.bs-stepper .step-trigger:disabled{pointer-events:none;opacity:.65}.bs-stepper .step-trigger:focus{color:#007bff;outline:0}.bs-stepper .step-trigger:hover{text-decoration:none;background-color:rgba(0,0,0,.06)}@media (max-width:520px){.bs-stepper .step-trigger{-ms-flex-direction:column;flex-direction:column;padding:10px}}.bs-stepper-label{display:inline-block;margin:.25rem}.bs-stepper-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}@media (max-width:520px){.bs-stepper-header{margin:0 -10px;text-align:center}}.bs-stepper .line,.bs-stepper-line{-ms-flex:1 0 32px;flex:1 0 32px;min-width:1px;min-height:1px;margin:auto;background-color:rgba(0,0,0,.12)}@media (max-width:400px){.bs-stepper .line,.bs-stepper-line{-ms-flex-preferred-size:20px;flex-basis:20px}}.bs-stepper-circle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;-ms-flex-pack:center;justify-content:center;width:2em;height:2em;padding:.5em 0;margin:.25rem;line-height:1em;color:#fff;background-color:#6c757d;border-radius:1em}.active .bs-stepper-circle{background-color:#007bff}.bs-stepper-content{padding:0 20px 20px}@media (max-width:520px){.bs-stepper-content{padding:0}}.bs-stepper.vertical{display:-ms-flexbox;display:flex}.bs-stepper.vertical .bs-stepper-header{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch;margin:0}.bs-stepper.vertical .bs-stepper-pane,.bs-stepper.vertical .content{display:block}.bs-stepper.vertical .bs-stepper-pane:not(.fade),.bs-stepper.vertical .content:not(.fade){display:block;visibility:hidden}.bs-stepper .content:not(.fade),.bs-stepper-pane:not(.fade){display:none}.bs-stepper .content.fade,.bs-stepper-pane.fade{visibility:hidden;transition-duration:.3s;transition-property:opacity}.bs-stepper .content.fade.active,.bs-stepper-pane.fade.active{visibility:visible;opacity:1}.bs-stepper .content.active:not(.fade),.bs-stepper-pane.active:not(.fade){display:block;visibility:visible}.bs-stepper .content.dstepper-block,.bs-stepper-pane.dstepper-block{display:block}.bs-stepper:not(.vertical) .bs-stepper-pane.dstepper-none,.bs-stepper:not(.vertical) .content.dstepper-none{display:none}.vertical .bs-stepper-pane.fade.dstepper-none,.vertical .content.fade.dstepper-none{visibility:hidden}
+/*# sourceMappingURL=bs-stepper.min.css.map */
\ No newline at end of file
diff --git a/plugins/bs-stepper/css/bs-stepper.min.css.map b/plugins/bs-stepper/css/bs-stepper.min.css.map
new file mode 100644
index 000000000..b58d51c5a
--- /dev/null
+++ b/plugins/bs-stepper/css/bs-stepper.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["..\\..\\src\\css\\bs-stepper.css","dist\\css\\bs-stepper.css"],"names":[],"mappings":"AAAA;;;;AAMA,0BACE,QAAA,mBAAA,QAAA,YACA,cAAA,KAAA,UAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,OAAA,gBAAA,OACA,QAAA,KACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,OACA,gBAAA,KACA,YAAA,OACA,eAAA,OACA,oBAAA,KAAA,iBAAA,KAAA,gBAAA,KAAA,YAAA,KACA,iBAAA,YACA,OAAA,KACA,cAAA,OACA,WAAA,iBAAA,KAAA,QAAA,CAAA,MAAA,KAAA,SAGF,wDACE,OAAA,QCWF,mCDRA,mCAEE,eAAA,KACA,QAAA,IAGF,gCACE,MAAA,QACA,QAAA,EAGF,gCACE,gBAAA,KACA,iBAAA,gBAGF,yBACE,0BACE,mBAAA,OAAA,eAAA,OACA,QAAA,MAIJ,kBACE,QAAA,aACA,OAAA,OAGF,mBACE,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OAGF,yBACE,mBACE,OAAA,EAAA,MACA,WAAA,QCeJ,kBDXA,iBAEE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,UAAA,IACA,WAAA,IACA,OAAA,KACA,iBAAA,gBAGF,yBCaE,kBDZA,iBAEE,wBAAA,KAAA,WAAA,MAIJ,mBACE,QAAA,mBAAA,QAAA,YACA,mBAAA,OAAA,cAAA,OACA,cAAA,OAAA,gBAAA,OACA,MAAA,IACA,OAAA,IACA,QAAA,KAAA,EACA,OAAA,OACA,YAAA,IACA,MAAA,KACA,iBAAA,QACA,cAAA,IAGF,2BACE,iBAAA,QAGF,oBACE,QAAA,EAAA,KAAA,KAGF,yBACE,oBACE,QAAA,GAIJ,qBACE,QAAA,YAAA,QAAA,KAGF,wCACE,mBAAA,OAAA,eAAA,OACA,eAAA,QAAA,YAAA,QACA,OAAA,EAGF,sCCmBA,8BDjBE,QAAA,MAGF,iDCmBA,yCDjBE,QAAA,MACA,WAAA,OCsBF,gCDnBA,4BAEE,QAAA,KAGF,0BCmBA,sBDjBE,WAAA,OACA,oBAAA,IACA,oBAAA,QCsBF,iCDnBA,6BAEE,WAAA,QACA,QAAA,ECsBF,uCDnBA,mCAEE,QAAA,MACA,WAAA,QCsBF,oCDnBA,gCAEE,QAAA,MAGF,0DCmBA,kDDjBE,QAAA,KAGF,8CCmBA,sCDjBE,WAAA","sourcesContent":["/*!\r\n * bsStepper v1.7.0 (https://github.com/Johann-S/bs-stepper)\r\n * Copyright 2018 - 2019 Johann-S \r\n * Licensed under MIT (https://github.com/Johann-S/bs-stepper/blob/master/LICENSE)\r\n */\r\n\r\n.bs-stepper .step-trigger {\r\n display: inline-flex;\r\n flex-wrap: wrap;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 20px;\r\n font-size: 1rem;\r\n font-weight: 700;\r\n line-height: 1.5;\r\n color: #6c757d;\r\n text-align: center;\r\n text-decoration: none;\r\n white-space: nowrap;\r\n vertical-align: middle;\r\n user-select: none;\r\n background-color: transparent;\r\n border: none;\r\n border-radius: .25rem;\r\n transition: background-color .15s ease-out, color .15s ease-out;\r\n}\r\n\r\n.bs-stepper .step-trigger:not(:disabled):not(.disabled) {\r\n cursor: pointer;\r\n}\r\n\r\n.bs-stepper .step-trigger:disabled,\r\n.bs-stepper .step-trigger.disabled {\r\n pointer-events: none;\r\n opacity: .65;\r\n}\r\n\r\n.bs-stepper .step-trigger:focus {\r\n color: #007bff;\r\n outline: none;\r\n}\r\n\r\n.bs-stepper .step-trigger:hover {\r\n text-decoration: none;\r\n background-color: rgba(0, 0, 0, .06);\r\n}\r\n\r\n@media (max-width: 520px) {\r\n .bs-stepper .step-trigger {\r\n flex-direction: column;\r\n padding: 10px;\r\n }\r\n}\r\n\r\n.bs-stepper-label {\r\n display: inline-block;\r\n margin: .25rem;\r\n}\r\n\r\n.bs-stepper-header {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n@media (max-width: 520px) {\r\n .bs-stepper-header {\r\n margin: 0 -10px;\r\n text-align: center;\r\n }\r\n}\r\n\r\n.bs-stepper-line,\r\n.bs-stepper .line {\r\n flex: 1 0 32px;\r\n min-width: 1px;\r\n min-height: 1px;\r\n margin: auto;\r\n background-color: rgba(0, 0, 0, .12);\r\n}\r\n\r\n@media (max-width: 400px) {\r\n .bs-stepper-line,\r\n .bs-stepper .line {\r\n flex-basis: 20px;\r\n }\r\n}\r\n\r\n.bs-stepper-circle {\r\n display: inline-flex;\r\n align-content: center;\r\n justify-content: center;\r\n width: 2em;\r\n height: 2em;\r\n padding: .5em 0;\r\n margin: .25rem;\r\n line-height: 1em;\r\n color: #fff;\r\n background-color: #6c757d;\r\n border-radius: 1em;\r\n}\r\n\r\n.active .bs-stepper-circle {\r\n background-color: #007bff;\r\n}\r\n\r\n.bs-stepper-content {\r\n padding: 0 20px 20px;\r\n}\r\n\r\n@media (max-width: 520px) {\r\n .bs-stepper-content {\r\n padding: 0;\r\n }\r\n}\r\n\r\n.bs-stepper.vertical {\r\n display: flex;\r\n}\r\n\r\n.bs-stepper.vertical .bs-stepper-header {\r\n flex-direction: column;\r\n align-items: stretch;\r\n margin: 0;\r\n}\r\n\r\n.bs-stepper.vertical .bs-stepper-pane,\r\n.bs-stepper.vertical .content {\r\n display: block;\r\n}\r\n\r\n.bs-stepper.vertical .bs-stepper-pane:not(.fade),\r\n.bs-stepper.vertical .content:not(.fade) {\r\n display: block;\r\n visibility: hidden;\r\n}\r\n\r\n.bs-stepper-pane:not(.fade),\r\n.bs-stepper .content:not(.fade) {\r\n display: none;\r\n}\r\n\r\n.bs-stepper .content.fade,\r\n.bs-stepper-pane.fade {\r\n visibility: hidden;\r\n transition-duration: .3s;\r\n transition-property: opacity;\r\n}\r\n\r\n.bs-stepper-pane.fade.active,\r\n.bs-stepper .content.fade.active {\r\n visibility: visible;\r\n opacity: 1;\r\n}\r\n\r\n.bs-stepper-pane.active:not(.fade),\r\n.bs-stepper .content.active:not(.fade) {\r\n display: block;\r\n visibility: visible;\r\n}\r\n\r\n.bs-stepper-pane.dstepper-block,\r\n.bs-stepper .content.dstepper-block {\r\n display: block;\r\n}\r\n\r\n.bs-stepper:not(.vertical) .bs-stepper-pane.dstepper-none,\r\n.bs-stepper:not(.vertical) .content.dstepper-none {\r\n display: none;\r\n}\r\n\r\n.vertical .bs-stepper-pane.fade.dstepper-none,\r\n.vertical .content.fade.dstepper-none {\r\n visibility: hidden;\r\n}\r\n","/*!\r\n * bsStepper v1.7.0 (https://github.com/Johann-S/bs-stepper)\r\n * Copyright 2018 - 2019 Johann-S \r\n * Licensed under MIT (https://github.com/Johann-S/bs-stepper/blob/master/LICENSE)\r\n */\r\n\r\n.bs-stepper .step-trigger {\r\n display: -ms-inline-flexbox;\r\n display: inline-flex;\r\n -ms-flex-wrap: wrap;\r\n flex-wrap: wrap;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n padding: 20px;\r\n font-size: 1rem;\r\n font-weight: 700;\r\n line-height: 1.5;\r\n color: #6c757d;\r\n text-align: center;\r\n text-decoration: none;\r\n white-space: nowrap;\r\n vertical-align: middle;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n background-color: transparent;\r\n border: none;\r\n border-radius: .25rem;\r\n transition: background-color .15s ease-out, color .15s ease-out;\r\n}\r\n\r\n.bs-stepper .step-trigger:not(:disabled):not(.disabled) {\r\n cursor: pointer;\r\n}\r\n\r\n.bs-stepper .step-trigger:disabled,\r\n.bs-stepper .step-trigger.disabled {\r\n pointer-events: none;\r\n opacity: .65;\r\n}\r\n\r\n.bs-stepper .step-trigger:focus {\r\n color: #007bff;\r\n outline: none;\r\n}\r\n\r\n.bs-stepper .step-trigger:hover {\r\n text-decoration: none;\r\n background-color: rgba(0, 0, 0, .06);\r\n}\r\n\r\n@media (max-width: 520px) {\r\n .bs-stepper .step-trigger {\r\n -ms-flex-direction: column;\r\n flex-direction: column;\r\n padding: 10px;\r\n }\r\n}\r\n\r\n.bs-stepper-label {\r\n display: inline-block;\r\n margin: .25rem;\r\n}\r\n\r\n.bs-stepper-header {\r\n display: -ms-flexbox;\r\n display: flex;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n@media (max-width: 520px) {\r\n .bs-stepper-header {\r\n margin: 0 -10px;\r\n text-align: center;\r\n }\r\n}\r\n\r\n.bs-stepper-line,\r\n.bs-stepper .line {\r\n -ms-flex: 1 0 32px;\r\n flex: 1 0 32px;\r\n min-width: 1px;\r\n min-height: 1px;\r\n margin: auto;\r\n background-color: rgba(0, 0, 0, .12);\r\n}\r\n\r\n@media (max-width: 400px) {\r\n .bs-stepper-line,\r\n .bs-stepper .line {\r\n -ms-flex-preferred-size: 20px;\r\n flex-basis: 20px;\r\n }\r\n}\r\n\r\n.bs-stepper-circle {\r\n display: -ms-inline-flexbox;\r\n display: inline-flex;\r\n -ms-flex-line-pack: center;\r\n align-content: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n width: 2em;\r\n height: 2em;\r\n padding: .5em 0;\r\n margin: .25rem;\r\n line-height: 1em;\r\n color: #fff;\r\n background-color: #6c757d;\r\n border-radius: 1em;\r\n}\r\n\r\n.active .bs-stepper-circle {\r\n background-color: #007bff;\r\n}\r\n\r\n.bs-stepper-content {\r\n padding: 0 20px 20px;\r\n}\r\n\r\n@media (max-width: 520px) {\r\n .bs-stepper-content {\r\n padding: 0;\r\n }\r\n}\r\n\r\n.bs-stepper.vertical {\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.bs-stepper.vertical .bs-stepper-header {\r\n -ms-flex-direction: column;\r\n flex-direction: column;\r\n -ms-flex-align: stretch;\r\n align-items: stretch;\r\n margin: 0;\r\n}\r\n\r\n.bs-stepper.vertical .bs-stepper-pane,\r\n.bs-stepper.vertical .content {\r\n display: block;\r\n}\r\n\r\n.bs-stepper.vertical .bs-stepper-pane:not(.fade),\r\n.bs-stepper.vertical .content:not(.fade) {\r\n display: block;\r\n visibility: hidden;\r\n}\r\n\r\n.bs-stepper-pane:not(.fade),\r\n.bs-stepper .content:not(.fade) {\r\n display: none;\r\n}\r\n\r\n.bs-stepper .content.fade,\r\n.bs-stepper-pane.fade {\r\n visibility: hidden;\r\n transition-duration: .3s;\r\n transition-property: opacity;\r\n}\r\n\r\n.bs-stepper-pane.fade.active,\r\n.bs-stepper .content.fade.active {\r\n visibility: visible;\r\n opacity: 1;\r\n}\r\n\r\n.bs-stepper-pane.active:not(.fade),\r\n.bs-stepper .content.active:not(.fade) {\r\n display: block;\r\n visibility: visible;\r\n}\r\n\r\n.bs-stepper-pane.dstepper-block,\r\n.bs-stepper .content.dstepper-block {\r\n display: block;\r\n}\r\n\r\n.bs-stepper:not(.vertical) .bs-stepper-pane.dstepper-none,\r\n.bs-stepper:not(.vertical) .content.dstepper-none {\r\n display: none;\r\n}\r\n\r\n.vertical .bs-stepper-pane.fade.dstepper-none,\r\n.vertical .content.fade.dstepper-none {\r\n visibility: hidden;\r\n}\r\n\r\n/*# sourceMappingURL=bs-stepper.css.map */"]}
\ No newline at end of file
diff --git a/plugins/bs-stepper/js/bs-stepper.js b/plugins/bs-stepper/js/bs-stepper.js
new file mode 100644
index 000000000..69f932180
--- /dev/null
+++ b/plugins/bs-stepper/js/bs-stepper.js
@@ -0,0 +1,428 @@
+/*!
+ * bsStepper v1.7.0 (https://github.com/Johann-S/bs-stepper)
+ * Copyright 2018 - 2019 Johann-S
+ * Licensed under MIT (https://github.com/Johann-S/bs-stepper/blob/master/LICENSE)
+ */
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.Stepper = factory());
+}(this, function () { 'use strict';
+
+ function _extends() {
+ _extends = Object.assign || function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+ }
+
+ var matches = window.Element.prototype.matches;
+
+ var closest = function closest(element, selector) {
+ return element.closest(selector);
+ };
+
+ var WinEvent = function WinEvent(inType, params) {
+ return new window.Event(inType, params);
+ };
+
+ var createCustomEvent = function createCustomEvent(eventName, params) {
+ var cEvent = new window.CustomEvent(eventName, params);
+ return cEvent;
+ };
+ /* istanbul ignore next */
+
+
+ function polyfill() {
+ if (!window.Element.prototype.matches) {
+ matches = window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;
+ }
+
+ if (!window.Element.prototype.closest) {
+ closest = function closest(element, selector) {
+ if (!document.documentElement.contains(element)) {
+ return null;
+ }
+
+ do {
+ if (matches.call(element, selector)) {
+ return element;
+ }
+
+ element = element.parentElement || element.parentNode;
+ } while (element !== null && element.nodeType === 1);
+
+ return null;
+ };
+ }
+
+ if (!window.Event || typeof window.Event !== 'function') {
+ WinEvent = function WinEvent(inType, params) {
+ params = params || {};
+ var e = document.createEvent('Event');
+ e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable));
+ return e;
+ };
+ }
+
+ if (typeof window.CustomEvent !== 'function') {
+ var originPreventDefault = window.Event.prototype.preventDefault;
+
+ createCustomEvent = function createCustomEvent(eventName, params) {
+ var evt = document.createEvent('CustomEvent');
+ params = params || {
+ bubbles: false,
+ cancelable: false,
+ detail: null
+ };
+ evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail);
+
+ evt.preventDefault = function () {
+ if (!this.cancelable) {
+ return;
+ }
+
+ originPreventDefault.call(this);
+ Object.defineProperty(this, 'defaultPrevented', {
+ get: function get() {
+ return true;
+ }
+ });
+ };
+
+ return evt;
+ };
+ }
+ }
+
+ polyfill();
+
+ var MILLISECONDS_MULTIPLIER = 1000;
+ var ClassName = {
+ ACTIVE: 'active',
+ LINEAR: 'linear',
+ BLOCK: 'dstepper-block',
+ NONE: 'dstepper-none',
+ FADE: 'fade',
+ VERTICAL: 'vertical'
+ };
+ var transitionEndEvent = 'transitionend';
+ var customProperty = 'bsStepper';
+
+ var show = function show(stepperNode, indexStep, options, done) {
+ var stepper = stepperNode[customProperty];
+
+ if (stepper._steps[indexStep].classList.contains(ClassName.ACTIVE) || stepper._stepsContents[indexStep].classList.contains(ClassName.ACTIVE)) {
+ return;
+ }
+
+ var showEvent = createCustomEvent('show.bs-stepper', {
+ cancelable: true,
+ detail: {
+ from: stepper._currentIndex,
+ to: indexStep,
+ indexStep: indexStep
+ }
+ });
+ stepperNode.dispatchEvent(showEvent);
+
+ var activeStep = stepper._steps.filter(function (step) {
+ return step.classList.contains(ClassName.ACTIVE);
+ });
+
+ var activeContent = stepper._stepsContents.filter(function (content) {
+ return content.classList.contains(ClassName.ACTIVE);
+ });
+
+ if (showEvent.defaultPrevented) {
+ return;
+ }
+
+ if (activeStep.length) {
+ activeStep[0].classList.remove(ClassName.ACTIVE);
+ }
+
+ if (activeContent.length) {
+ activeContent[0].classList.remove(ClassName.ACTIVE);
+
+ if (!stepperNode.classList.contains(ClassName.VERTICAL) && !stepper.options.animation) {
+ activeContent[0].classList.remove(ClassName.BLOCK);
+ }
+ }
+
+ showStep(stepperNode, stepper._steps[indexStep], stepper._steps, options);
+ showContent(stepperNode, stepper._stepsContents[indexStep], stepper._stepsContents, activeContent, done);
+ };
+
+ var showStep = function showStep(stepperNode, step, stepList, options) {
+ stepList.forEach(function (step) {
+ var trigger = step.querySelector(options.selectors.trigger);
+ trigger.setAttribute('aria-selected', 'false'); // if stepper is in linear mode, set disabled attribute on the trigger
+
+ if (stepperNode.classList.contains(ClassName.LINEAR)) {
+ trigger.setAttribute('disabled', 'disabled');
+ }
+ });
+ step.classList.add(ClassName.ACTIVE);
+ var currentTrigger = step.querySelector(options.selectors.trigger);
+ currentTrigger.setAttribute('aria-selected', 'true'); // if stepper is in linear mode, remove disabled attribute on current
+
+ if (stepperNode.classList.contains(ClassName.LINEAR)) {
+ currentTrigger.removeAttribute('disabled');
+ }
+ };
+
+ var showContent = function showContent(stepperNode, content, contentList, activeContent, done) {
+ var stepper = stepperNode[customProperty];
+ var toIndex = contentList.indexOf(content);
+ var shownEvent = createCustomEvent('shown.bs-stepper', {
+ cancelable: true,
+ detail: {
+ from: stepper._currentIndex,
+ to: toIndex,
+ indexStep: toIndex
+ }
+ });
+
+ function complete() {
+ content.classList.add(ClassName.BLOCK);
+ content.removeEventListener(transitionEndEvent, complete);
+ stepperNode.dispatchEvent(shownEvent);
+ done();
+ }
+
+ if (content.classList.contains(ClassName.FADE)) {
+ content.classList.remove(ClassName.NONE);
+ var duration = getTransitionDurationFromElement(content);
+ content.addEventListener(transitionEndEvent, complete);
+
+ if (activeContent.length) {
+ activeContent[0].classList.add(ClassName.NONE);
+ }
+
+ content.classList.add(ClassName.ACTIVE);
+ emulateTransitionEnd(content, duration);
+ } else {
+ content.classList.add(ClassName.ACTIVE);
+ content.classList.add(ClassName.BLOCK);
+ stepperNode.dispatchEvent(shownEvent);
+ done();
+ }
+ };
+
+ var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
+ if (!element) {
+ return 0;
+ } // Get transition-duration of the element
+
+
+ var transitionDuration = window.getComputedStyle(element).transitionDuration;
+ var floatTransitionDuration = parseFloat(transitionDuration); // Return 0 if element or transition duration is not found
+
+ if (!floatTransitionDuration) {
+ return 0;
+ } // If multiple durations are defined, take the first
+
+
+ transitionDuration = transitionDuration.split(',')[0];
+ return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER;
+ };
+
+ var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {
+ var called = false;
+ var durationPadding = 5;
+ var emulatedDuration = duration + durationPadding;
+
+ function listener() {
+ called = true;
+ element.removeEventListener(transitionEndEvent, listener);
+ }
+
+ element.addEventListener(transitionEndEvent, listener);
+ window.setTimeout(function () {
+ if (!called) {
+ element.dispatchEvent(WinEvent(transitionEndEvent));
+ }
+
+ element.removeEventListener(transitionEndEvent, listener);
+ }, emulatedDuration);
+ };
+
+ var detectAnimation = function detectAnimation(contentList, options) {
+ if (options.animation) {
+ contentList.forEach(function (content) {
+ content.classList.add(ClassName.FADE);
+ content.classList.add(ClassName.NONE);
+ });
+ }
+ };
+
+ var buildClickStepLinearListener = function buildClickStepLinearListener() {
+ return function clickStepLinearListener(event) {
+ event.preventDefault();
+ };
+ };
+
+ var buildClickStepNonLinearListener = function buildClickStepNonLinearListener(options) {
+ return function clickStepNonLinearListener(event) {
+ event.preventDefault();
+ var step = closest(event.target, options.selectors.steps);
+ var stepperNode = closest(step, options.selectors.stepper);
+ var stepper = stepperNode[customProperty];
+
+ var stepIndex = stepper._steps.indexOf(step);
+
+ show(stepperNode, stepIndex, options, function () {
+ stepper._currentIndex = stepIndex;
+ });
+ };
+ };
+
+ var DEFAULT_OPTIONS = {
+ linear: true,
+ animation: false,
+ selectors: {
+ steps: '.step',
+ trigger: '.step-trigger',
+ stepper: '.bs-stepper'
+ }
+ };
+
+ var Stepper =
+ /*#__PURE__*/
+ function () {
+ function Stepper(element, _options) {
+ var _this = this;
+
+ if (_options === void 0) {
+ _options = {};
+ }
+
+ this._element = element;
+ this._currentIndex = 0;
+ this._stepsContents = [];
+ this.options = _extends({}, DEFAULT_OPTIONS, {}, _options);
+ this.options.selectors = _extends({}, DEFAULT_OPTIONS.selectors, {}, this.options.selectors);
+
+ if (this.options.linear) {
+ this._element.classList.add(ClassName.LINEAR);
+ }
+
+ this._steps = [].slice.call(this._element.querySelectorAll(this.options.selectors.steps));
+
+ this._steps.filter(function (step) {
+ return step.hasAttribute('data-target');
+ }).forEach(function (step) {
+ _this._stepsContents.push(_this._element.querySelector(step.getAttribute('data-target')));
+ });
+
+ detectAnimation(this._stepsContents, this.options);
+
+ this._setLinkListeners();
+
+ Object.defineProperty(this._element, customProperty, {
+ value: this,
+ writable: true
+ });
+
+ if (this._steps.length) {
+ show(this._element, this._currentIndex, this.options, function () {});
+ }
+ } // Private
+
+
+ var _proto = Stepper.prototype;
+
+ _proto._setLinkListeners = function _setLinkListeners() {
+ var _this2 = this;
+
+ this._steps.forEach(function (step) {
+ var trigger = step.querySelector(_this2.options.selectors.trigger);
+
+ if (_this2.options.linear) {
+ _this2._clickStepLinearListener = buildClickStepLinearListener(_this2.options);
+ trigger.addEventListener('click', _this2._clickStepLinearListener);
+ } else {
+ _this2._clickStepNonLinearListener = buildClickStepNonLinearListener(_this2.options);
+ trigger.addEventListener('click', _this2._clickStepNonLinearListener);
+ }
+ });
+ } // Public
+ ;
+
+ _proto.next = function next() {
+ var _this3 = this;
+
+ var nextStep = this._currentIndex + 1 <= this._steps.length - 1 ? this._currentIndex + 1 : this._steps.length - 1;
+ show(this._element, nextStep, this.options, function () {
+ _this3._currentIndex = nextStep;
+ });
+ };
+
+ _proto.previous = function previous() {
+ var _this4 = this;
+
+ var previousStep = this._currentIndex - 1 >= 0 ? this._currentIndex - 1 : 0;
+ show(this._element, previousStep, this.options, function () {
+ _this4._currentIndex = previousStep;
+ });
+ };
+
+ _proto.to = function to(stepNumber) {
+ var _this5 = this;
+
+ var tempIndex = stepNumber - 1;
+ var nextStep = tempIndex >= 0 && tempIndex < this._steps.length ? tempIndex : 0;
+ show(this._element, nextStep, this.options, function () {
+ _this5._currentIndex = nextStep;
+ });
+ };
+
+ _proto.reset = function reset() {
+ var _this6 = this;
+
+ show(this._element, 0, this.options, function () {
+ _this6._currentIndex = 0;
+ });
+ };
+
+ _proto.destroy = function destroy() {
+ var _this7 = this;
+
+ this._steps.forEach(function (step) {
+ var trigger = step.querySelector(_this7.options.selectors.trigger);
+
+ if (_this7.options.linear) {
+ trigger.removeEventListener('click', _this7._clickStepLinearListener);
+ } else {
+ trigger.removeEventListener('click', _this7._clickStepNonLinearListener);
+ }
+ });
+
+ this._element[customProperty] = undefined;
+ this._element = undefined;
+ this._currentIndex = undefined;
+ this._steps = undefined;
+ this._stepsContents = undefined;
+ this._clickStepLinearListener = undefined;
+ this._clickStepNonLinearListener = undefined;
+ };
+
+ return Stepper;
+ }();
+
+ return Stepper;
+
+}));
+//# sourceMappingURL=bs-stepper.js.map
diff --git a/plugins/bs-stepper/js/bs-stepper.js.map b/plugins/bs-stepper/js/bs-stepper.js.map
new file mode 100644
index 000000000..014d353d5
--- /dev/null
+++ b/plugins/bs-stepper/js/bs-stepper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"bs-stepper.js","sources":["../../src/js/polyfill.js","../../src/js/util.js","../../src/js/listeners.js","../../src/js/index.js"],"sourcesContent":["let matches = window.Element.prototype.matches\nlet closest = (element, selector) => element.closest(selector)\nlet WinEvent = (inType, params) => new window.Event(inType, params)\nlet createCustomEvent = (eventName, params) => {\n const cEvent = new window.CustomEvent(eventName, params)\n\n return cEvent\n}\n\n/* istanbul ignore next */\nfunction polyfill () {\n if (!window.Element.prototype.matches) {\n matches = window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector\n }\n\n if (!window.Element.prototype.closest) {\n closest = (element, selector) => {\n if (!document.documentElement.contains(element)) {\n return null\n }\n\n do {\n if (matches.call(element, selector)) {\n return element\n }\n\n element = element.parentElement || element.parentNode\n } while (element !== null && element.nodeType === 1)\n\n return null\n }\n }\n\n if (!window.Event || typeof window.Event !== 'function') {\n WinEvent = (inType, params) => {\n params = params || {}\n const e = document.createEvent('Event')\n e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable))\n return e\n }\n }\n\n if (typeof window.CustomEvent !== 'function') {\n const originPreventDefault = window.Event.prototype.preventDefault\n\n createCustomEvent = (eventName, params) => {\n const evt = document.createEvent('CustomEvent')\n\n params = params || { bubbles: false, cancelable: false, detail: null }\n evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail)\n evt.preventDefault = function () {\n if (!this.cancelable) {\n return\n }\n\n originPreventDefault.call(this)\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () { return true }\n })\n }\n\n return evt\n }\n }\n}\n\npolyfill()\n\nexport {\n closest,\n WinEvent,\n createCustomEvent\n}\n","import { WinEvent, createCustomEvent } from './polyfill'\n\nconst MILLISECONDS_MULTIPLIER = 1000\n\nconst ClassName = {\n ACTIVE: 'active',\n LINEAR: 'linear',\n BLOCK: 'dstepper-block',\n NONE: 'dstepper-none',\n FADE: 'fade',\n VERTICAL: 'vertical'\n}\n\nconst transitionEndEvent = 'transitionend'\nconst customProperty = 'bsStepper'\n\nconst show = (stepperNode, indexStep, options, done) => {\n const stepper = stepperNode[customProperty]\n\n if (stepper._steps[indexStep].classList.contains(ClassName.ACTIVE) || stepper._stepsContents[indexStep].classList.contains(ClassName.ACTIVE)) {\n return\n }\n\n const showEvent = createCustomEvent('show.bs-stepper', {\n cancelable: true,\n detail: {\n from: stepper._currentIndex,\n to: indexStep,\n indexStep\n }\n })\n stepperNode.dispatchEvent(showEvent)\n\n const activeStep = stepper._steps.filter(step => step.classList.contains(ClassName.ACTIVE))\n const activeContent = stepper._stepsContents.filter(content => content.classList.contains(ClassName.ACTIVE))\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n if (activeStep.length) {\n activeStep[0].classList.remove(ClassName.ACTIVE)\n }\n if (activeContent.length) {\n activeContent[0].classList.remove(ClassName.ACTIVE)\n\n if (!stepperNode.classList.contains(ClassName.VERTICAL) && !stepper.options.animation) {\n activeContent[0].classList.remove(ClassName.BLOCK)\n }\n }\n\n showStep(stepperNode, stepper._steps[indexStep], stepper._steps, options)\n showContent(stepperNode, stepper._stepsContents[indexStep], stepper._stepsContents, activeContent, done)\n}\n\nconst showStep = (stepperNode, step, stepList, options) => {\n stepList.forEach(step => {\n const trigger = step.querySelector(options.selectors.trigger)\n\n trigger.setAttribute('aria-selected', 'false')\n // if stepper is in linear mode, set disabled attribute on the trigger\n if (stepperNode.classList.contains(ClassName.LINEAR)) {\n trigger.setAttribute('disabled', 'disabled')\n }\n })\n\n step.classList.add(ClassName.ACTIVE)\n const currentTrigger = step.querySelector(options.selectors.trigger)\n\n currentTrigger.setAttribute('aria-selected', 'true')\n // if stepper is in linear mode, remove disabled attribute on current\n if (stepperNode.classList.contains(ClassName.LINEAR)) {\n currentTrigger.removeAttribute('disabled')\n }\n}\n\nconst showContent = (stepperNode, content, contentList, activeContent, done) => {\n const stepper = stepperNode[customProperty]\n const toIndex = contentList.indexOf(content)\n const shownEvent = createCustomEvent('shown.bs-stepper', {\n cancelable: true,\n detail: {\n from: stepper._currentIndex,\n to: toIndex,\n indexStep: toIndex\n }\n })\n\n function complete () {\n content.classList.add(ClassName.BLOCK)\n content.removeEventListener(transitionEndEvent, complete)\n stepperNode.dispatchEvent(shownEvent)\n done()\n }\n\n if (content.classList.contains(ClassName.FADE)) {\n content.classList.remove(ClassName.NONE)\n const duration = getTransitionDurationFromElement(content)\n\n content.addEventListener(transitionEndEvent, complete)\n if (activeContent.length) {\n activeContent[0].classList.add(ClassName.NONE)\n }\n\n content.classList.add(ClassName.ACTIVE)\n emulateTransitionEnd(content, duration)\n } else {\n content.classList.add(ClassName.ACTIVE)\n content.classList.add(ClassName.BLOCK)\n stepperNode.dispatchEvent(shownEvent)\n done()\n }\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = window.getComputedStyle(element).transitionDuration\n const floatTransitionDuration = parseFloat(transitionDuration)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n\n return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER\n}\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n function listener () {\n called = true\n element.removeEventListener(transitionEndEvent, listener)\n }\n\n element.addEventListener(transitionEndEvent, listener)\n window.setTimeout(() => {\n if (!called) {\n element.dispatchEvent(WinEvent(transitionEndEvent))\n }\n\n element.removeEventListener(transitionEndEvent, listener)\n }, emulatedDuration)\n}\n\nconst detectAnimation = (contentList, options) => {\n if (options.animation) {\n contentList.forEach(content => {\n content.classList.add(ClassName.FADE)\n content.classList.add(ClassName.NONE)\n })\n }\n}\n\nexport {\n show,\n ClassName,\n customProperty,\n detectAnimation\n}\n","import { closest } from './polyfill'\r\nimport { customProperty, show } from './util'\r\n\r\nconst buildClickStepLinearListener = () => function clickStepLinearListener (event) {\r\n event.preventDefault()\r\n}\r\n\r\nconst buildClickStepNonLinearListener = options => function clickStepNonLinearListener (event) {\r\n event.preventDefault()\r\n\r\n const step = closest(event.target, options.selectors.steps)\r\n const stepperNode = closest(step, options.selectors.stepper)\r\n const stepper = stepperNode[customProperty]\r\n const stepIndex = stepper._steps.indexOf(step)\r\n\r\n show(stepperNode, stepIndex, options, () => {\r\n stepper._currentIndex = stepIndex\r\n })\r\n}\r\n\r\nexport {\r\n buildClickStepLinearListener,\r\n buildClickStepNonLinearListener\r\n}\r\n","import { show, customProperty, detectAnimation, ClassName } from './util'\r\nimport { buildClickStepLinearListener, buildClickStepNonLinearListener } from './listeners'\r\n\r\nconst DEFAULT_OPTIONS = {\r\n linear: true,\r\n animation: false,\r\n selectors: {\r\n steps: '.step',\r\n trigger: '.step-trigger',\r\n stepper: '.bs-stepper'\r\n }\r\n}\r\n\r\nclass Stepper {\r\n constructor (element, _options = {}) {\r\n this._element = element\r\n this._currentIndex = 0\r\n this._stepsContents = []\r\n\r\n this.options = {\r\n ...DEFAULT_OPTIONS,\r\n ..._options\r\n }\r\n\r\n this.options.selectors = {\r\n ...DEFAULT_OPTIONS.selectors,\r\n ...this.options.selectors\r\n }\r\n\r\n if (this.options.linear) {\r\n this._element.classList.add(ClassName.LINEAR)\r\n }\r\n\r\n this._steps = [].slice.call(this._element.querySelectorAll(this.options.selectors.steps))\r\n\r\n this._steps.filter(step => step.hasAttribute('data-target'))\r\n .forEach(step => {\r\n this._stepsContents.push(\r\n this._element.querySelector(step.getAttribute('data-target'))\r\n )\r\n })\r\n\r\n detectAnimation(this._stepsContents, this.options)\r\n this._setLinkListeners()\r\n Object.defineProperty(this._element, customProperty, {\r\n value: this,\r\n writable: true\r\n })\r\n\r\n if (this._steps.length) {\r\n show(this._element, this._currentIndex, this.options, () => {})\r\n }\r\n }\r\n\r\n // Private\r\n\r\n _setLinkListeners () {\r\n this._steps.forEach(step => {\r\n const trigger = step.querySelector(this.options.selectors.trigger)\r\n\r\n if (this.options.linear) {\r\n this._clickStepLinearListener = buildClickStepLinearListener(this.options)\r\n trigger.addEventListener('click', this._clickStepLinearListener)\r\n } else {\r\n this._clickStepNonLinearListener = buildClickStepNonLinearListener(this.options)\r\n trigger.addEventListener('click', this._clickStepNonLinearListener)\r\n }\r\n })\r\n }\r\n\r\n // Public\r\n\r\n next () {\r\n const nextStep = (this._currentIndex + 1) <= this._steps.length - 1 ? this._currentIndex + 1 : (this._steps.length - 1)\r\n\r\n show(this._element, nextStep, this.options, () => {\r\n this._currentIndex = nextStep\r\n })\r\n }\r\n\r\n previous () {\r\n const previousStep = (this._currentIndex - 1) >= 0 ? this._currentIndex - 1 : 0\r\n\r\n show(this._element, previousStep, this.options, () => {\r\n this._currentIndex = previousStep\r\n })\r\n }\r\n\r\n to (stepNumber) {\r\n const tempIndex = stepNumber - 1\r\n const nextStep = tempIndex >= 0 && tempIndex < this._steps.length\r\n ? tempIndex\r\n : 0\r\n\r\n show(this._element, nextStep, this.options, () => {\r\n this._currentIndex = nextStep\r\n })\r\n }\r\n\r\n reset () {\r\n show(this._element, 0, this.options, () => {\r\n this._currentIndex = 0\r\n })\r\n }\r\n\r\n destroy () {\r\n this._steps.forEach(step => {\r\n const trigger = step.querySelector(this.options.selectors.trigger)\r\n\r\n if (this.options.linear) {\r\n trigger.removeEventListener('click', this._clickStepLinearListener)\r\n } else {\r\n trigger.removeEventListener('click', this._clickStepNonLinearListener)\r\n }\r\n })\r\n\r\n this._element[customProperty] = undefined\r\n this._element = undefined\r\n this._currentIndex = undefined\r\n this._steps = undefined\r\n this._stepsContents = undefined\r\n this._clickStepLinearListener = undefined\r\n this._clickStepNonLinearListener = undefined\r\n }\r\n}\r\n\r\nexport default Stepper\r\n"],"names":["matches","window","Element","prototype","closest","element","selector","WinEvent","inType","params","Event","createCustomEvent","eventName","cEvent","CustomEvent","polyfill","msMatchesSelector","webkitMatchesSelector","document","documentElement","contains","call","parentElement","parentNode","nodeType","e","createEvent","initEvent","Boolean","bubbles","cancelable","originPreventDefault","preventDefault","evt","detail","initCustomEvent","Object","defineProperty","get","MILLISECONDS_MULTIPLIER","ClassName","ACTIVE","LINEAR","BLOCK","NONE","FADE","VERTICAL","transitionEndEvent","customProperty","show","stepperNode","indexStep","options","done","stepper","_steps","classList","_stepsContents","showEvent","from","_currentIndex","to","dispatchEvent","activeStep","filter","step","activeContent","content","defaultPrevented","length","remove","animation","showStep","showContent","stepList","forEach","trigger","querySelector","selectors","setAttribute","add","currentTrigger","removeAttribute","contentList","toIndex","indexOf","shownEvent","complete","removeEventListener","duration","getTransitionDurationFromElement","addEventListener","emulateTransitionEnd","transitionDuration","getComputedStyle","floatTransitionDuration","parseFloat","split","called","durationPadding","emulatedDuration","listener","setTimeout","detectAnimation","buildClickStepLinearListener","clickStepLinearListener","event","buildClickStepNonLinearListener","clickStepNonLinearListener","target","steps","stepIndex","DEFAULT_OPTIONS","linear","Stepper","_options","_element","slice","querySelectorAll","hasAttribute","push","getAttribute","_setLinkListeners","value","writable","_clickStepLinearListener","_clickStepNonLinearListener","next","nextStep","previous","previousStep","stepNumber","tempIndex","reset","destroy","undefined"],"mappings":"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"}
\ No newline at end of file
diff --git a/plugins/bs-stepper/js/bs-stepper.min.js b/plugins/bs-stepper/js/bs-stepper.min.js
new file mode 100644
index 000000000..1b657e39b
--- /dev/null
+++ b/plugins/bs-stepper/js/bs-stepper.min.js
@@ -0,0 +1,7 @@
+/*!
+ * bsStepper v1.7.0 (https://github.com/Johann-S/bs-stepper)
+ * Copyright 2018 - 2019 Johann-S
+ * Licensed under MIT (https://github.com/Johann-S/bs-stepper/blob/master/LICENSE)
+ */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Stepper=e()}(this,function(){"use strict";function t(){return(t=Object.assign||function(t){for(var e=1;e=0?this._currentIndex-1:0;a(this._element,e,this.options,function(){t._currentIndex=e})},s.to=function(t){var e=this,n=t-1,s=n>=0&&n element.closest(selector)\nlet WinEvent = (inType, params) => new window.Event(inType, params)\nlet createCustomEvent = (eventName, params) => {\n const cEvent = new window.CustomEvent(eventName, params)\n\n return cEvent\n}\n\n/* istanbul ignore next */\nfunction polyfill () {\n if (!window.Element.prototype.matches) {\n matches = window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector\n }\n\n if (!window.Element.prototype.closest) {\n closest = (element, selector) => {\n if (!document.documentElement.contains(element)) {\n return null\n }\n\n do {\n if (matches.call(element, selector)) {\n return element\n }\n\n element = element.parentElement || element.parentNode\n } while (element !== null && element.nodeType === 1)\n\n return null\n }\n }\n\n if (!window.Event || typeof window.Event !== 'function') {\n WinEvent = (inType, params) => {\n params = params || {}\n const e = document.createEvent('Event')\n e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable))\n return e\n }\n }\n\n if (typeof window.CustomEvent !== 'function') {\n const originPreventDefault = window.Event.prototype.preventDefault\n\n createCustomEvent = (eventName, params) => {\n const evt = document.createEvent('CustomEvent')\n\n params = params || { bubbles: false, cancelable: false, detail: null }\n evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail)\n evt.preventDefault = function () {\n if (!this.cancelable) {\n return\n }\n\n originPreventDefault.call(this)\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () { return true }\n })\n }\n\n return evt\n }\n }\n}\n\npolyfill()\n\nexport {\n closest,\n WinEvent,\n createCustomEvent\n}\n","import { WinEvent, createCustomEvent } from './polyfill'\n\nconst MILLISECONDS_MULTIPLIER = 1000\n\nconst ClassName = {\n ACTIVE: 'active',\n LINEAR: 'linear',\n BLOCK: 'dstepper-block',\n NONE: 'dstepper-none',\n FADE: 'fade',\n VERTICAL: 'vertical'\n}\n\nconst transitionEndEvent = 'transitionend'\nconst customProperty = 'bsStepper'\n\nconst show = (stepperNode, indexStep, options, done) => {\n const stepper = stepperNode[customProperty]\n\n if (stepper._steps[indexStep].classList.contains(ClassName.ACTIVE) || stepper._stepsContents[indexStep].classList.contains(ClassName.ACTIVE)) {\n return\n }\n\n const showEvent = createCustomEvent('show.bs-stepper', {\n cancelable: true,\n detail: {\n from: stepper._currentIndex,\n to: indexStep,\n indexStep\n }\n })\n stepperNode.dispatchEvent(showEvent)\n\n const activeStep = stepper._steps.filter(step => step.classList.contains(ClassName.ACTIVE))\n const activeContent = stepper._stepsContents.filter(content => content.classList.contains(ClassName.ACTIVE))\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n if (activeStep.length) {\n activeStep[0].classList.remove(ClassName.ACTIVE)\n }\n if (activeContent.length) {\n activeContent[0].classList.remove(ClassName.ACTIVE)\n\n if (!stepperNode.classList.contains(ClassName.VERTICAL) && !stepper.options.animation) {\n activeContent[0].classList.remove(ClassName.BLOCK)\n }\n }\n\n showStep(stepperNode, stepper._steps[indexStep], stepper._steps, options)\n showContent(stepperNode, stepper._stepsContents[indexStep], stepper._stepsContents, activeContent, done)\n}\n\nconst showStep = (stepperNode, step, stepList, options) => {\n stepList.forEach(step => {\n const trigger = step.querySelector(options.selectors.trigger)\n\n trigger.setAttribute('aria-selected', 'false')\n // if stepper is in linear mode, set disabled attribute on the trigger\n if (stepperNode.classList.contains(ClassName.LINEAR)) {\n trigger.setAttribute('disabled', 'disabled')\n }\n })\n\n step.classList.add(ClassName.ACTIVE)\n const currentTrigger = step.querySelector(options.selectors.trigger)\n\n currentTrigger.setAttribute('aria-selected', 'true')\n // if stepper is in linear mode, remove disabled attribute on current\n if (stepperNode.classList.contains(ClassName.LINEAR)) {\n currentTrigger.removeAttribute('disabled')\n }\n}\n\nconst showContent = (stepperNode, content, contentList, activeContent, done) => {\n const stepper = stepperNode[customProperty]\n const toIndex = contentList.indexOf(content)\n const shownEvent = createCustomEvent('shown.bs-stepper', {\n cancelable: true,\n detail: {\n from: stepper._currentIndex,\n to: toIndex,\n indexStep: toIndex\n }\n })\n\n function complete () {\n content.classList.add(ClassName.BLOCK)\n content.removeEventListener(transitionEndEvent, complete)\n stepperNode.dispatchEvent(shownEvent)\n done()\n }\n\n if (content.classList.contains(ClassName.FADE)) {\n content.classList.remove(ClassName.NONE)\n const duration = getTransitionDurationFromElement(content)\n\n content.addEventListener(transitionEndEvent, complete)\n if (activeContent.length) {\n activeContent[0].classList.add(ClassName.NONE)\n }\n\n content.classList.add(ClassName.ACTIVE)\n emulateTransitionEnd(content, duration)\n } else {\n content.classList.add(ClassName.ACTIVE)\n content.classList.add(ClassName.BLOCK)\n stepperNode.dispatchEvent(shownEvent)\n done()\n }\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = window.getComputedStyle(element).transitionDuration\n const floatTransitionDuration = parseFloat(transitionDuration)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n\n return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER\n}\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n function listener () {\n called = true\n element.removeEventListener(transitionEndEvent, listener)\n }\n\n element.addEventListener(transitionEndEvent, listener)\n window.setTimeout(() => {\n if (!called) {\n element.dispatchEvent(WinEvent(transitionEndEvent))\n }\n\n element.removeEventListener(transitionEndEvent, listener)\n }, emulatedDuration)\n}\n\nconst detectAnimation = (contentList, options) => {\n if (options.animation) {\n contentList.forEach(content => {\n content.classList.add(ClassName.FADE)\n content.classList.add(ClassName.NONE)\n })\n }\n}\n\nexport {\n show,\n ClassName,\n customProperty,\n detectAnimation\n}\n","import { show, customProperty, detectAnimation, ClassName } from './util'\r\nimport { buildClickStepLinearListener, buildClickStepNonLinearListener } from './listeners'\r\n\r\nconst DEFAULT_OPTIONS = {\r\n linear: true,\r\n animation: false,\r\n selectors: {\r\n steps: '.step',\r\n trigger: '.step-trigger',\r\n stepper: '.bs-stepper'\r\n }\r\n}\r\n\r\nclass Stepper {\r\n constructor (element, _options = {}) {\r\n this._element = element\r\n this._currentIndex = 0\r\n this._stepsContents = []\r\n\r\n this.options = {\r\n ...DEFAULT_OPTIONS,\r\n ..._options\r\n }\r\n\r\n this.options.selectors = {\r\n ...DEFAULT_OPTIONS.selectors,\r\n ...this.options.selectors\r\n }\r\n\r\n if (this.options.linear) {\r\n this._element.classList.add(ClassName.LINEAR)\r\n }\r\n\r\n this._steps = [].slice.call(this._element.querySelectorAll(this.options.selectors.steps))\r\n\r\n this._steps.filter(step => step.hasAttribute('data-target'))\r\n .forEach(step => {\r\n this._stepsContents.push(\r\n this._element.querySelector(step.getAttribute('data-target'))\r\n )\r\n })\r\n\r\n detectAnimation(this._stepsContents, this.options)\r\n this._setLinkListeners()\r\n Object.defineProperty(this._element, customProperty, {\r\n value: this,\r\n writable: true\r\n })\r\n\r\n if (this._steps.length) {\r\n show(this._element, this._currentIndex, this.options, () => {})\r\n }\r\n }\r\n\r\n // Private\r\n\r\n _setLinkListeners () {\r\n this._steps.forEach(step => {\r\n const trigger = step.querySelector(this.options.selectors.trigger)\r\n\r\n if (this.options.linear) {\r\n this._clickStepLinearListener = buildClickStepLinearListener(this.options)\r\n trigger.addEventListener('click', this._clickStepLinearListener)\r\n } else {\r\n this._clickStepNonLinearListener = buildClickStepNonLinearListener(this.options)\r\n trigger.addEventListener('click', this._clickStepNonLinearListener)\r\n }\r\n })\r\n }\r\n\r\n // Public\r\n\r\n next () {\r\n const nextStep = (this._currentIndex + 1) <= this._steps.length - 1 ? this._currentIndex + 1 : (this._steps.length - 1)\r\n\r\n show(this._element, nextStep, this.options, () => {\r\n this._currentIndex = nextStep\r\n })\r\n }\r\n\r\n previous () {\r\n const previousStep = (this._currentIndex - 1) >= 0 ? this._currentIndex - 1 : 0\r\n\r\n show(this._element, previousStep, this.options, () => {\r\n this._currentIndex = previousStep\r\n })\r\n }\r\n\r\n to (stepNumber) {\r\n const tempIndex = stepNumber - 1\r\n const nextStep = tempIndex >= 0 && tempIndex < this._steps.length\r\n ? tempIndex\r\n : 0\r\n\r\n show(this._element, nextStep, this.options, () => {\r\n this._currentIndex = nextStep\r\n })\r\n }\r\n\r\n reset () {\r\n show(this._element, 0, this.options, () => {\r\n this._currentIndex = 0\r\n })\r\n }\r\n\r\n destroy () {\r\n this._steps.forEach(step => {\r\n const trigger = step.querySelector(this.options.selectors.trigger)\r\n\r\n if (this.options.linear) {\r\n trigger.removeEventListener('click', this._clickStepLinearListener)\r\n } else {\r\n trigger.removeEventListener('click', this._clickStepNonLinearListener)\r\n }\r\n })\r\n\r\n this._element[customProperty] = undefined\r\n this._element = undefined\r\n this._currentIndex = undefined\r\n this._steps = undefined\r\n this._stepsContents = undefined\r\n this._clickStepLinearListener = undefined\r\n this._clickStepNonLinearListener = undefined\r\n }\r\n}\r\n\r\nexport default Stepper\r\n","import { closest } from './polyfill'\r\nimport { customProperty, show } from './util'\r\n\r\nconst buildClickStepLinearListener = () => function clickStepLinearListener (event) {\r\n event.preventDefault()\r\n}\r\n\r\nconst buildClickStepNonLinearListener = options => function clickStepNonLinearListener (event) {\r\n event.preventDefault()\r\n\r\n const step = closest(event.target, options.selectors.steps)\r\n const stepperNode = closest(step, options.selectors.stepper)\r\n const stepper = stepperNode[customProperty]\r\n const stepIndex = stepper._steps.indexOf(step)\r\n\r\n show(stepperNode, stepIndex, options, () => {\r\n stepper._currentIndex = stepIndex\r\n })\r\n}\r\n\r\nexport {\r\n buildClickStepLinearListener,\r\n buildClickStepNonLinearListener\r\n}\r\n"],"names":["matches","window","Element","prototype","closest","element","selector","WinEvent","inType","params","Event","createCustomEvent","eventName","CustomEvent","msMatchesSelector","webkitMatchesSelector","document","documentElement","contains","call","parentElement","parentNode","nodeType","e","createEvent","initEvent","Boolean","bubbles","cancelable","originPreventDefault","preventDefault","evt","detail","initCustomEvent","this","Object","defineProperty","get","polyfill","ClassName","ACTIVE","LINEAR","BLOCK","NONE","FADE","VERTICAL","transitionEndEvent","customProperty","show","stepperNode","indexStep","options","done","stepper","_steps","classList","_stepsContents","showEvent","from","_currentIndex","to","dispatchEvent","activeStep","filter","step","activeContent","content","defaultPrevented","length","remove","animation","showStep","showContent","stepList","forEach","trigger","querySelector","selectors","setAttribute","add","currentTrigger","removeAttribute","contentList","toIndex","indexOf","shownEvent","duration","getTransitionDurationFromElement","addEventListener","complete","removeEventListener","emulateTransitionEnd","transitionDuration","getComputedStyle","parseFloat","split","called","emulatedDuration","listener","setTimeout","detectAnimation","DEFAULT_OPTIONS","linear","steps","_options","_element","slice","querySelectorAll","hasAttribute","_this","push","getAttribute","_setLinkListeners","value","writable","_this2","_clickStepLinearListener","event","_clickStepNonLinearListener","target","stepIndex","next","nextStep","_this3","previous","previousStep","_this4","stepNumber","tempIndex","_this5","reset","_this6","destroy","_this7","undefined"],"mappings":"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"}
\ No newline at end of file