From 46927d3259df60100f7cc24b526786438f614b1c Mon Sep 17 00:00:00 2001 From: REJack Date: Thu, 23 Jul 2020 23:12:42 +0200 Subject: [PATCH] add bs-stepper plugin --- build/npm/Plugins.js | 5 + docs/dependencies.md | 1 + package-lock.json | 5 + package.json | 1 + plugins/bs-stepper/css/bs-stepper.css | 194 ++++++++ plugins/bs-stepper/css/bs-stepper.css.map | 1 + plugins/bs-stepper/css/bs-stepper.min.css | 6 + plugins/bs-stepper/css/bs-stepper.min.css.map | 1 + plugins/bs-stepper/js/bs-stepper.js | 428 ++++++++++++++++++ plugins/bs-stepper/js/bs-stepper.js.map | 1 + plugins/bs-stepper/js/bs-stepper.min.js | 7 + plugins/bs-stepper/js/bs-stepper.min.js.map | 1 + 12 files changed, 651 insertions(+) create mode 100644 plugins/bs-stepper/css/bs-stepper.css create mode 100644 plugins/bs-stepper/css/bs-stepper.css.map create mode 100644 plugins/bs-stepper/css/bs-stepper.min.css create mode 100644 plugins/bs-stepper/css/bs-stepper.min.css.map create mode 100644 plugins/bs-stepper/js/bs-stepper.js create mode 100644 plugins/bs-stepper/js/bs-stepper.js.map create mode 100644 plugins/bs-stepper/js/bs-stepper.min.js create mode 100644 plugins/bs-stepper/js/bs-stepper.min.js.map 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