From bdb9cfaa4927ff1bf73e2725974c98a9561d59d8 Mon Sep 17 00:00:00 2001 From: Jasmin Savard Date: Sat, 11 Jan 2025 04:13:48 -0500 Subject: [PATCH] Add common frontend workspace --- package.json | 2 +- .../ts => Frontend/components}/strength.ts | 36 ++- src/Frontend/package.json | 5 + .../wwwroot/Styles/bootstrap-select.css | 3 +- .../wwwroot/Styles/bootstrap-select.map | 2 +- .../OrchardCore.Setup/Assets/ts/setup.ts | 223 +++++++++--------- .../wwwroot/Scripts/setup.js | 2 +- .../TheAgencyTheme/Assets/package.json | 1 + .../TheBlogTheme/Assets/package.json | 103 ++++---- .../TheComingSoonTheme/Assets/package.json | 103 ++++---- yarn.lock | 9 + 11 files changed, 264 insertions(+), 225 deletions(-) rename src/{OrchardCore.Modules/OrchardCore.Setup/Assets/ts => Frontend/components}/strength.ts (56%) create mode 100644 src/Frontend/package.json diff --git a/package.json b/package.json index b6b3cf00ba1..4608174f35f 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ }, "workspaces": [ ".scripts/assets-build-tool", - "src/lib/", + "src/Frontend/", "src/OrchardCore.Modules/*", "src/OrchardCore.Modules/*/Assets/", "src/OrchardCore.Themes/*", diff --git a/src/OrchardCore.Modules/OrchardCore.Setup/Assets/ts/strength.ts b/src/Frontend/components/strength.ts similarity index 56% rename from src/OrchardCore.Modules/OrchardCore.Setup/Assets/ts/strength.ts rename to src/Frontend/components/strength.ts index b15d794d7b6..9179ccf22aa 100644 --- a/src/OrchardCore.Modules/OrchardCore.Setup/Assets/ts/strength.ts +++ b/src/Frontend/components/strength.ts @@ -1,4 +1,20 @@ -export default function strength(element, options) { +/** + * This function initializes a password strength checker on a given input element. + * It evaluates the password based on specified requirements such as minimum length, + * presence of uppercase, lowercase, digits, and special characters. + * A visual progress bar is displayed to indicate the strength level of the password. + * + * @param {HTMLElement} element - The input element to which the strength checker is applied. + * @param {Object} options - Configuration options for password requirements and display settings. + * @param {number} options.requiredLength - Minimum required length of the password. + * @param {boolean} options.requireUppercase - Whether an uppercase letter is required. + * @param {boolean} options.requireLowercase - Whether a lowercase letter is required. + * @param {boolean} options.requireDigit - Whether a digit is required. + * @param {boolean} options.requireNonAlphanumeric - Whether a special character is required. + * @param {string} options.target - CSS selector for the element where the strength progress bar is displayed. + * @param {string} options.style - CSS style string for the progress bar. + */ +export default function strength(element: HTMLInputElement, options: any) { const settings = Object.assign({ requiredLength: 8, @@ -22,11 +38,11 @@ export default function strength(element, options) { let valid = false; - function getPercentage(a, b) { + function getPercentage(a: number, b: number) { return (b / a) * 100; } - function getLevel(value) { + function getLevel(value: number) { if (value >= 100) { return "bg-success"; @@ -43,7 +59,7 @@ export default function strength(element, options) { return "bg-danger"; } - function checkStrength(value) { + function checkStrength(value: string) { const minLength = value.length >= settings.requiredLength ? 1 : 0; capitalletters = !settings.requireUppercase || value.match(upperCase) ? 1 : 0; @@ -59,7 +75,7 @@ export default function strength(element, options) { createProgressBar(percentage, getLevel(percentage)); } - function createProgressBar(percentage, level) { + function createProgressBar(percentage: string | number, level: string) { const el = document.createElement("div"); el.className = "progress"; el.setAttribute("value", percentage.toString()); @@ -75,15 +91,15 @@ export default function strength(element, options) { target.appendChild(el); } - element.addEventListener("keyup", (event) => checkStrength(element.value)); - element.addEventListener("keydown", (event) => checkStrength(element.value)); - element.addEventListener("change", (event) => checkStrength(element.value)); + element.addEventListener("keyup", () => checkStrength(element.value)); + element.addEventListener("keydown", () => checkStrength(element.value)); + element.addEventListener("change", () => checkStrength(element.value)); element.addEventListener("drop", (event) => { event.preventDefault(); - checkStrength(event.dataTransfer.getData("text")); + checkStrength(event.dataTransfer?.getData("text") ?? ""); }); - element.form.addEventListener("submit", (event) => { + element.form?.addEventListener("submit", (event) => { checkStrength(element.value); if (!valid) { event.preventDefault(); diff --git a/src/Frontend/package.json b/src/Frontend/package.json new file mode 100644 index 00000000000..d84d0b22e8b --- /dev/null +++ b/src/Frontend/package.json @@ -0,0 +1,5 @@ +{ + "name": "@orchardcore/frontend", + "version": "1.0.0", + "type": "module" +} diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Styles/bootstrap-select.css b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Styles/bootstrap-select.css index 7c1c0a20da6..7ef678bb181 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Styles/bootstrap-select.css +++ b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Styles/bootstrap-select.css @@ -725,4 +725,5 @@ select.selectpicker { margin-bottom: 0; width: 100%; float: none; -} \ No newline at end of file +} +/*# sourceMappingURL=node_modules\bootstrap-select\dist\css\bootstrap-select.css.map */ \ No newline at end of file diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Styles/bootstrap-select.map b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Styles/bootstrap-select.map index 3450b71e9b9..fea44712a76 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Styles/bootstrap-select.map +++ b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Styles/bootstrap-select.map @@ -1 +1 @@ -{"version":3,"sourceRoot":null,"mappings":"qPAOA,sLA8BA,6GAMA,oDAKA,0OAkBA,8DAIA,6DAIA,yDAIA,sOAOA,8jDA2BA,yMAYA,4CAIA,6CAIA,8GAOA,wDAIA,yDAIA,4NAOA,gIAKA,iDAIA,kGAIA,kNAOA,iFAOA,gFAIA,uEAKA,yGAKA,uGAMA,yGAKA,0GAKA,2LAMA,0LAMA,gHAMA,sGAKA,sMAQA,kKAOA,wEAIA,sEAIA,wDAIA,0EAKA,0FAKA,8FAOA,gDAIA,iDAIA,2DAIA,kLAYA,8FAMA,iGAMA,sFAIA,qFAIA,qJAOA,4GAIA,yNAQA,iIAIA,8EAIA,wGAMA,uEAIA,wEAIA,0GAOA,+DAIA,8DAIA,+GAMA,wFAIA,uFAIA,iGAIA,gGAIA,0KAOA,+EAIA,yFAIA,mFAIA,2DAIA,+HAOA,qEAIA,sJAWA,sDAIA,2EAIA,kEAIA,0IAQA,4DAIA,wEAIA,yEAIA,mEAIA,qEAIA,sEAIA,uEAIA,wWAkBA,2NAMA,6FAOA,qGAMA,yJAKA,2EAIA,6FAMA,oHAMA,0FAIA,yFAIA,sFAIA,qFAIA,yKAUA,6LAQA,iMAQA,6HAKA,sNAUA,4FAIA,6FAIA,oNAUA,4FAIA,6FAIA,gJAOA,8IAOA,mHAKA,mHAKA,kHAKA,kHAKA,oUAOA,4DAMA,yGAOA,wCAIA,2CAIA,yGAOA,oCAIA,qCAIA,wCAIA,4CAIA,+CAIA","sources":[""],"sourcesContent":["/*!\n * Bootstrap-select v1.14.0-beta3 (https://developer.snapappointments.com/bootstrap-select)\n *\n * Copyright 2012-2022 SnapAppointments, LLC\n * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE)\n */\n@-webkit-keyframes bs-notify-fadeOut {\n 0% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n }\n}\n@-o-keyframes bs-notify-fadeOut {\n 0% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n }\n}\n@keyframes bs-notify-fadeOut {\n 0% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n }\n}\nselect.bs-select-hidden,\n.bootstrap-select > select.bs-select-hidden,\nselect.selectpicker {\n display: none !important;\n}\n.bootstrap-select {\n width: 220px;\n vertical-align: middle;\n}\n.bootstrap-select > .dropdown-toggle {\n position: relative;\n width: 100%;\n white-space: nowrap;\n display: -webkit-inline-box;\n display: -webkit-inline-flex;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -webkit-align-items: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -webkit-justify-content: space-between;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n[dir=\"ltr\"] .bootstrap-select > .dropdown-toggle {\n text-align: right;\n}\n[dir=\"rtl\"] .bootstrap-select > .dropdown-toggle {\n text-align: left;\n}\n.bootstrap-select > .dropdown-toggle:after {\n margin-top: -1px;\n}\n.bootstrap-select > .dropdown-toggle.bs-placeholder,\n.bootstrap-select > .dropdown-toggle.bs-placeholder:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder:active {\n color: #999;\n}\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:active {\n color: rgba(255, 255, 255, 0.5);\n}\n.bootstrap-select > select {\n position: absolute !important;\n bottom: 0;\n display: block !important;\n width: 0.5px !important;\n height: 100% !important;\n padding: 0 !important;\n opacity: 0 !important;\n border: none;\n z-index: 0 !important;\n}\n[dir=\"ltr\"] .bootstrap-select > select {\n left: 50%;\n}\n[dir=\"rtl\"] .bootstrap-select > select {\n right: 50%;\n}\n.bootstrap-select > select.mobile-device {\n top: 0;\n display: block !important;\n width: 100% !important;\n z-index: 2 !important;\n}\n[dir=\"ltr\"] .bootstrap-select > select.mobile-device {\n left: 0;\n}\n[dir=\"rtl\"] .bootstrap-select > select.mobile-device {\n right: 0;\n}\n.has-error .bootstrap-select .dropdown-toggle,\n.error .bootstrap-select .dropdown-toggle,\n.bootstrap-select.is-invalid .dropdown-toggle,\n.was-validated .bootstrap-select select:invalid + .dropdown-toggle {\n border-color: #b94a48;\n}\n.bootstrap-select.is-valid .dropdown-toggle,\n.was-validated .bootstrap-select select:valid + .dropdown-toggle {\n border-color: #28a745;\n}\n.bootstrap-select.fit-width {\n width: auto !important;\n}\n.bootstrap-select:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: 220px;\n}\n.bootstrap-select > select.mobile-device:focus + .dropdown-toggle,\n.bootstrap-select .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n}\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n height: auto;\n}\n:not(.input-group) > .bootstrap-select.form-control:not([class*=\"col-\"]) {\n width: 100%;\n}\n.bootstrap-select.form-control.input-group-btn {\n float: none;\n z-index: auto;\n}\n.form-inline .bootstrap-select,\n.form-inline .bootstrap-select.form-control:not([class*=\"col-\"]) {\n width: auto;\n}\n.bootstrap-select:not(.input-group-btn),\n.bootstrap-select[class*=\"col-\"] {\n float: none;\n display: inline-block;\n}\n[dir=\"ltr\"] .bootstrap-select:not(.input-group-btn),\n[dir=\"ltr\"] .bootstrap-select[class*=\"col-\"] {\n margin-left: 0;\n}\n[dir=\"rtl\"] .bootstrap-select:not(.input-group-btn),\n[dir=\"rtl\"] .bootstrap-select[class*=\"col-\"] {\n margin-right: 0;\n}\n[dir=\"ltr\"] .bootstrap-select.dropdown-menu-right,\n[dir=\"ltr\"] .bootstrap-select[class*=\"col-\"].dropdown-menu-right,\n[dir=\"ltr\"] .row .bootstrap-select[class*=\"col-\"].dropdown-menu-right {\n float: right;\n}\n[dir=\"rtl\"] .bootstrap-select.dropdown-menu-right,\n[dir=\"rtl\"] .bootstrap-select[class*=\"col-\"].dropdown-menu-right,\n[dir=\"rtl\"] .row .bootstrap-select[class*=\"col-\"].dropdown-menu-right {\n float: left;\n}\n.form-inline .bootstrap-select,\n.form-horizontal .bootstrap-select,\n.form-group .bootstrap-select {\n margin-bottom: 0;\n}\n.form-group-lg .bootstrap-select.form-control,\n.form-group-sm .bootstrap-select.form-control {\n padding: 0;\n}\n.form-group-lg .bootstrap-select.form-control .dropdown-toggle,\n.form-group-sm .bootstrap-select.form-control .dropdown-toggle {\n height: 100%;\n font-size: inherit;\n line-height: inherit;\n border-radius: inherit;\n}\n.bootstrap-select.form-control-sm .dropdown-toggle,\n.bootstrap-select.form-control-lg .dropdown-toggle {\n font-size: inherit;\n line-height: inherit;\n border-radius: inherit;\n}\n.bootstrap-select.form-control-sm .dropdown-toggle {\n padding: 0.25rem 0.5rem;\n}\n.bootstrap-select.form-control-lg .dropdown-toggle {\n padding: 0.5rem 1rem;\n}\n.form-inline .bootstrap-select .form-control {\n width: 100%;\n}\n.bootstrap-select.disabled,\n.bootstrap-select > .disabled {\n cursor: not-allowed;\n}\n.bootstrap-select.disabled:focus,\n.bootstrap-select > .disabled:focus {\n outline: none !important;\n}\n.bootstrap-select.bs-container {\n position: absolute;\n top: 0;\n height: 0 !important;\n padding: 0 !important;\n}\n[dir=\"ltr\"] .bootstrap-select.bs-container {\n left: 0;\n}\n[dir=\"rtl\"] .bootstrap-select.bs-container {\n right: 0;\n}\n.bootstrap-select.bs-container .dropdown-menu {\n z-index: 1060;\n}\n.bootstrap-select .dropdown-toggle .filter-option {\n position: static;\n top: 0;\n height: 100%;\n width: 100%;\n overflow: hidden;\n -webkit-box-flex: 0;\n -webkit-flex: 0 1 auto;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n}\n[dir=\"ltr\"] .bootstrap-select .dropdown-toggle .filter-option {\n left: 0;\n float: left;\n text-align: left;\n}\n[dir=\"rtl\"] .bootstrap-select .dropdown-toggle .filter-option {\n right: 0;\n float: right;\n text-align: right;\n}\n[dir=\"ltr\"] .bs3.bootstrap-select .dropdown-toggle .filter-option {\n padding-right: inherit;\n}\n[dir=\"rtl\"] .bs3.bootstrap-select .dropdown-toggle .filter-option {\n padding-left: inherit;\n}\n.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option {\n position: absolute;\n padding-top: inherit;\n padding-bottom: inherit;\n float: none;\n}\n[dir=\"ltr\"] .input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option {\n padding-left: inherit;\n}\n[dir=\"rtl\"] .input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option {\n padding-right: inherit;\n}\n[dir=\"ltr\"] .input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner {\n padding-right: inherit;\n}\n[dir=\"rtl\"] .input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner {\n padding-left: inherit;\n}\n.bootstrap-select .dropdown-toggle .filter-option-inner-inner {\n overflow: hidden;\n}\n.bootstrap-select .dropdown-toggle .filter-expand {\n width: 0 !important;\n opacity: 0 !important;\n overflow: hidden;\n}\n[dir=\"ltr\"] .bootstrap-select .dropdown-toggle .filter-expand {\n float: left;\n}\n[dir=\"rtl\"] .bootstrap-select .dropdown-toggle .filter-expand {\n float: right;\n}\n.bootstrap-select .dropdown-toggle .caret {\n position: absolute;\n top: 50%;\n margin-top: -2px;\n vertical-align: middle;\n}\n[dir=\"ltr\"] .bootstrap-select .dropdown-toggle .caret {\n right: 12px;\n}\n[dir=\"rtl\"] .bootstrap-select .dropdown-toggle .caret {\n left: 12px;\n}\n.bootstrap-select .dropdown-toggle .bs-select-clear-selected {\n position: relative;\n display: block;\n text-align: center;\n}\n[dir=\"ltr\"] .bootstrap-select .dropdown-toggle .bs-select-clear-selected {\n margin-right: 5px;\n}\n[dir=\"rtl\"] .bootstrap-select .dropdown-toggle .bs-select-clear-selected {\n margin-left: 5px;\n}\n[dir=\"ltr\"] .bs3.bootstrap-select .dropdown-toggle .bs-select-clear-selected {\n padding-right: inherit;\n}\n[dir=\"rtl\"] .bs3.bootstrap-select .dropdown-toggle .bs-select-clear-selected {\n padding-left: inherit;\n}\n.bootstrap-select .dropdown-toggle .bs-select-clear-selected span {\n position: relative;\n top: -webkit-calc(((-1em / 1.5) + 1ex) / 2);\n top: calc(((-1em / 1.5) + 1ex) / 2);\n pointer-events: none;\n}\n.bs3.bootstrap-select .dropdown-toggle .bs-select-clear-selected span {\n top: auto;\n}\n.bootstrap-select .dropdown-toggle.bs-placeholder .bs-select-clear-selected {\n display: none;\n}\n.input-group .bootstrap-select.form-control .dropdown-toggle {\n border-radius: inherit;\n}\n.bootstrap-select[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n}\n.bootstrap-select .dropdown-menu {\n min-width: 100%;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n.bootstrap-select .dropdown-menu > .inner:focus {\n outline: none !important;\n}\n.bootstrap-select .dropdown-menu.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.bootstrap-select .dropdown-menu li {\n position: relative;\n}\n.bootstrap-select .dropdown-menu li.active small {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n.bootstrap-select .dropdown-menu li.disabled a {\n cursor: not-allowed;\n}\n.bootstrap-select .dropdown-menu li a {\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.bootstrap-select .dropdown-menu li a.opt {\n position: relative;\n}\n[dir=\"ltr\"] .bootstrap-select .dropdown-menu li a.opt {\n padding-left: 2.25em;\n}\n[dir=\"rtl\"] .bootstrap-select .dropdown-menu li a.opt {\n padding-right: 2.25em;\n}\n.bootstrap-select .dropdown-menu li a span.check-mark {\n display: none;\n}\n.bootstrap-select .dropdown-menu li a span.text {\n display: inline-block;\n}\n[dir=\"ltr\"] .bootstrap-select .dropdown-menu li small {\n padding-left: 0.5em;\n}\n[dir=\"rtl\"] .bootstrap-select .dropdown-menu li small {\n padding-right: 0.5em;\n}\n.bootstrap-select .dropdown-menu .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: #f5f5f5;\n border: 1px solid #e3e3e3;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n pointer-events: none;\n opacity: 0.9;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n.bootstrap-select .dropdown-menu .notify.fadeOut {\n -webkit-animation: 300ms linear 750ms forwards bs-notify-fadeOut;\n -o-animation: 300ms linear 750ms forwards bs-notify-fadeOut;\n animation: 300ms linear 750ms forwards bs-notify-fadeOut;\n}\n.bootstrap-select .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n}\n.bootstrap-select.fit-width .dropdown-toggle .filter-option {\n position: static;\n display: inline;\n padding: 0;\n}\n.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,\n.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner {\n display: inline;\n}\n.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before {\n content: '\\00a0';\n}\n.bootstrap-select.fit-width .dropdown-toggle .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n}\n.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark {\n position: absolute;\n display: inline-block;\n top: 5px;\n}\n[dir=\"ltr\"] .bootstrap-select.show-tick .dropdown-menu .selected span.check-mark {\n right: 15px;\n}\n[dir=\"rtl\"] .bootstrap-select.show-tick .dropdown-menu .selected span.check-mark {\n left: 15px;\n}\n[dir=\"ltr\"] .bootstrap-select.show-tick .dropdown-menu li a span.text {\n margin-right: 34px;\n}\n[dir=\"rtl\"] .bootstrap-select.show-tick .dropdown-menu li a span.text {\n margin-left: 34px;\n}\n.bootstrap-select .bs-ok-default:after {\n content: '';\n display: block;\n width: 0.5em;\n height: 1em;\n border-style: solid;\n -webkit-transform-style: preserve-3d;\n transform-style: preserve-3d;\n}\n[dir=\"ltr\"] .bootstrap-select .bs-ok-default:after {\n border-width: 0 0.26em 0.26em 0;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n[dir=\"rtl\"] .bootstrap-select .bs-ok-default:after {\n border-width: 0 0 0.26em 0.26em;\n -webkit-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle,\n.bootstrap-select.show-menu-arrow.show > .dropdown-toggle {\n z-index: 1061;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid rgba(204, 204, 204, 0.2);\n position: absolute;\n bottom: -4px;\n display: none;\n}\n[dir=\"ltr\"] .bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before {\n left: 9px;\n}\n[dir=\"rtl\"] .bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before {\n right: 9px;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n display: none;\n}\n[dir=\"ltr\"] .bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after {\n left: 10px;\n}\n[dir=\"rtl\"] .bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after {\n right: 10px;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before {\n bottom: auto;\n top: -4px;\n border-top: 7px solid rgba(204, 204, 204, 0.2);\n border-bottom: 0;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after {\n bottom: auto;\n top: -4px;\n border-top: 6px solid white;\n border-bottom: 0;\n}\n[dir=\"ltr\"] .bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before {\n right: 12px;\n left: auto;\n}\n[dir=\"rtl\"] .bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before {\n left: 12px;\n right: auto;\n}\n[dir=\"ltr\"] .bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after {\n right: 13px;\n left: auto;\n}\n[dir=\"rtl\"] .bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after {\n left: 13px;\n right: auto;\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:before,\n.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:before,\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:after,\n.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:after {\n display: block;\n}\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n.bs-actionsbox {\n width: 100%;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n.bs-actionsbox .btn-group {\n display: block;\n}\n.bs-actionsbox .btn-group button {\n width: 50%;\n}\n.bs-donebutton {\n width: 100%;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n[dir=\"ltr\"] .bs-donebutton {\n float: left;\n}\n[dir=\"rtl\"] .bs-donebutton {\n float: right;\n}\n.bs-donebutton .btn-group {\n display: block;\n}\n.bs-donebutton .btn-group button {\n width: 100%;\n}\n.bs-searchbox + .bs-actionsbox {\n padding: 0 8px 4px;\n}\n.bs-searchbox .form-control {\n margin-bottom: 0;\n width: 100%;\n float: none;\n}"],"names":[]} +{"version":3,"sourceRoot":null,"mappings":"qPAOA,sLA8BA,6GAMA,oDAKA,0OAkBA,8DAIA,6DAIA,yDAIA,sOAOA,8jDA2BA,yMAYA,4CAIA,6CAIA,8GAOA,wDAIA,yDAIA,4NAOA,gIAKA,iDAIA,kGAIA,kNAOA,iFAOA,gFAIA,uEAKA,yGAKA,uGAMA,yGAKA,0GAKA,2LAMA,0LAMA,gHAMA,sGAKA,sMAQA,kKAOA,wEAIA,sEAIA,wDAIA,0EAKA,0FAKA,8FAOA,gDAIA,iDAIA,2DAIA,kLAYA,8FAMA,iGAMA,sFAIA,qFAIA,qJAOA,4GAIA,yNAQA,iIAIA,8EAIA,wGAMA,uEAIA,wEAIA,0GAOA,+DAIA,8DAIA,+GAMA,wFAIA,uFAIA,iGAIA,gGAIA,0KAOA,+EAIA,yFAIA,mFAIA,2DAIA,+HAOA,qEAIA,sJAWA,sDAIA,2EAIA,kEAIA,0IAQA,4DAIA,wEAIA,yEAIA,mEAIA,qEAIA,sEAIA,uEAIA,wWAkBA,2NAMA,6FAOA,qGAMA,yJAKA,2EAIA,6FAMA,oHAMA,0FAIA,yFAIA,sFAIA,qFAIA,yKAUA,6LAQA,iMAQA,6HAKA,sNAUA,4FAIA,6FAIA,oNAUA,4FAIA,6FAIA,gJAOA,8IAOA,mHAKA,mHAKA,kHAKA,kHAKA,oUAOA,4DAMA,yGAOA,wCAIA,2CAIA,yGAOA,oCAIA,qCAIA,wCAIA,4CAIA,+CAIA","sources":[""],"sourcesContent":["/*!\n * Bootstrap-select v1.14.0-beta3 (https://developer.snapappointments.com/bootstrap-select)\n *\n * Copyright 2012-2022 SnapAppointments, LLC\n * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE)\n */\n@-webkit-keyframes bs-notify-fadeOut {\n 0% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n }\n}\n@-o-keyframes bs-notify-fadeOut {\n 0% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n }\n}\n@keyframes bs-notify-fadeOut {\n 0% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n }\n}\nselect.bs-select-hidden,\n.bootstrap-select > select.bs-select-hidden,\nselect.selectpicker {\n display: none !important;\n}\n.bootstrap-select {\n width: 220px;\n vertical-align: middle;\n}\n.bootstrap-select > .dropdown-toggle {\n position: relative;\n width: 100%;\n white-space: nowrap;\n display: -webkit-inline-box;\n display: -webkit-inline-flex;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -webkit-align-items: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -webkit-justify-content: space-between;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n[dir=\"ltr\"] .bootstrap-select > .dropdown-toggle {\n text-align: right;\n}\n[dir=\"rtl\"] .bootstrap-select > .dropdown-toggle {\n text-align: left;\n}\n.bootstrap-select > .dropdown-toggle:after {\n margin-top: -1px;\n}\n.bootstrap-select > .dropdown-toggle.bs-placeholder,\n.bootstrap-select > .dropdown-toggle.bs-placeholder:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder:active {\n color: #999;\n}\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:active {\n color: rgba(255, 255, 255, 0.5);\n}\n.bootstrap-select > select {\n position: absolute !important;\n bottom: 0;\n display: block !important;\n width: 0.5px !important;\n height: 100% !important;\n padding: 0 !important;\n opacity: 0 !important;\n border: none;\n z-index: 0 !important;\n}\n[dir=\"ltr\"] .bootstrap-select > select {\n left: 50%;\n}\n[dir=\"rtl\"] .bootstrap-select > select {\n right: 50%;\n}\n.bootstrap-select > select.mobile-device {\n top: 0;\n display: block !important;\n width: 100% !important;\n z-index: 2 !important;\n}\n[dir=\"ltr\"] .bootstrap-select > select.mobile-device {\n left: 0;\n}\n[dir=\"rtl\"] .bootstrap-select > select.mobile-device {\n right: 0;\n}\n.has-error .bootstrap-select .dropdown-toggle,\n.error .bootstrap-select .dropdown-toggle,\n.bootstrap-select.is-invalid .dropdown-toggle,\n.was-validated .bootstrap-select select:invalid + .dropdown-toggle {\n border-color: #b94a48;\n}\n.bootstrap-select.is-valid .dropdown-toggle,\n.was-validated .bootstrap-select select:valid + .dropdown-toggle {\n border-color: #28a745;\n}\n.bootstrap-select.fit-width {\n width: auto !important;\n}\n.bootstrap-select:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: 220px;\n}\n.bootstrap-select > select.mobile-device:focus + .dropdown-toggle,\n.bootstrap-select .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n}\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n height: auto;\n}\n:not(.input-group) > .bootstrap-select.form-control:not([class*=\"col-\"]) {\n width: 100%;\n}\n.bootstrap-select.form-control.input-group-btn {\n float: none;\n z-index: auto;\n}\n.form-inline .bootstrap-select,\n.form-inline .bootstrap-select.form-control:not([class*=\"col-\"]) {\n width: auto;\n}\n.bootstrap-select:not(.input-group-btn),\n.bootstrap-select[class*=\"col-\"] {\n float: none;\n display: inline-block;\n}\n[dir=\"ltr\"] .bootstrap-select:not(.input-group-btn),\n[dir=\"ltr\"] .bootstrap-select[class*=\"col-\"] {\n margin-left: 0;\n}\n[dir=\"rtl\"] .bootstrap-select:not(.input-group-btn),\n[dir=\"rtl\"] .bootstrap-select[class*=\"col-\"] {\n margin-right: 0;\n}\n[dir=\"ltr\"] .bootstrap-select.dropdown-menu-right,\n[dir=\"ltr\"] .bootstrap-select[class*=\"col-\"].dropdown-menu-right,\n[dir=\"ltr\"] .row .bootstrap-select[class*=\"col-\"].dropdown-menu-right {\n float: right;\n}\n[dir=\"rtl\"] .bootstrap-select.dropdown-menu-right,\n[dir=\"rtl\"] .bootstrap-select[class*=\"col-\"].dropdown-menu-right,\n[dir=\"rtl\"] .row .bootstrap-select[class*=\"col-\"].dropdown-menu-right {\n float: left;\n}\n.form-inline .bootstrap-select,\n.form-horizontal .bootstrap-select,\n.form-group .bootstrap-select {\n margin-bottom: 0;\n}\n.form-group-lg .bootstrap-select.form-control,\n.form-group-sm .bootstrap-select.form-control {\n padding: 0;\n}\n.form-group-lg .bootstrap-select.form-control .dropdown-toggle,\n.form-group-sm .bootstrap-select.form-control .dropdown-toggle {\n height: 100%;\n font-size: inherit;\n line-height: inherit;\n border-radius: inherit;\n}\n.bootstrap-select.form-control-sm .dropdown-toggle,\n.bootstrap-select.form-control-lg .dropdown-toggle {\n font-size: inherit;\n line-height: inherit;\n border-radius: inherit;\n}\n.bootstrap-select.form-control-sm .dropdown-toggle {\n padding: 0.25rem 0.5rem;\n}\n.bootstrap-select.form-control-lg .dropdown-toggle {\n padding: 0.5rem 1rem;\n}\n.form-inline .bootstrap-select .form-control {\n width: 100%;\n}\n.bootstrap-select.disabled,\n.bootstrap-select > .disabled {\n cursor: not-allowed;\n}\n.bootstrap-select.disabled:focus,\n.bootstrap-select > .disabled:focus {\n outline: none !important;\n}\n.bootstrap-select.bs-container {\n position: absolute;\n top: 0;\n height: 0 !important;\n padding: 0 !important;\n}\n[dir=\"ltr\"] .bootstrap-select.bs-container {\n left: 0;\n}\n[dir=\"rtl\"] .bootstrap-select.bs-container {\n right: 0;\n}\n.bootstrap-select.bs-container .dropdown-menu {\n z-index: 1060;\n}\n.bootstrap-select .dropdown-toggle .filter-option {\n position: static;\n top: 0;\n height: 100%;\n width: 100%;\n overflow: hidden;\n -webkit-box-flex: 0;\n -webkit-flex: 0 1 auto;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n}\n[dir=\"ltr\"] .bootstrap-select .dropdown-toggle .filter-option {\n left: 0;\n float: left;\n text-align: left;\n}\n[dir=\"rtl\"] .bootstrap-select .dropdown-toggle .filter-option {\n right: 0;\n float: right;\n text-align: right;\n}\n[dir=\"ltr\"] .bs3.bootstrap-select .dropdown-toggle .filter-option {\n padding-right: inherit;\n}\n[dir=\"rtl\"] .bs3.bootstrap-select .dropdown-toggle .filter-option {\n padding-left: inherit;\n}\n.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option {\n position: absolute;\n padding-top: inherit;\n padding-bottom: inherit;\n float: none;\n}\n[dir=\"ltr\"] .input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option {\n padding-left: inherit;\n}\n[dir=\"rtl\"] .input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option {\n padding-right: inherit;\n}\n[dir=\"ltr\"] .input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner {\n padding-right: inherit;\n}\n[dir=\"rtl\"] .input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner {\n padding-left: inherit;\n}\n.bootstrap-select .dropdown-toggle .filter-option-inner-inner {\n overflow: hidden;\n}\n.bootstrap-select .dropdown-toggle .filter-expand {\n width: 0 !important;\n opacity: 0 !important;\n overflow: hidden;\n}\n[dir=\"ltr\"] .bootstrap-select .dropdown-toggle .filter-expand {\n float: left;\n}\n[dir=\"rtl\"] .bootstrap-select .dropdown-toggle .filter-expand {\n float: right;\n}\n.bootstrap-select .dropdown-toggle .caret {\n position: absolute;\n top: 50%;\n margin-top: -2px;\n vertical-align: middle;\n}\n[dir=\"ltr\"] .bootstrap-select .dropdown-toggle .caret {\n right: 12px;\n}\n[dir=\"rtl\"] .bootstrap-select .dropdown-toggle .caret {\n left: 12px;\n}\n.bootstrap-select .dropdown-toggle .bs-select-clear-selected {\n position: relative;\n display: block;\n text-align: center;\n}\n[dir=\"ltr\"] .bootstrap-select .dropdown-toggle .bs-select-clear-selected {\n margin-right: 5px;\n}\n[dir=\"rtl\"] .bootstrap-select .dropdown-toggle .bs-select-clear-selected {\n margin-left: 5px;\n}\n[dir=\"ltr\"] .bs3.bootstrap-select .dropdown-toggle .bs-select-clear-selected {\n padding-right: inherit;\n}\n[dir=\"rtl\"] .bs3.bootstrap-select .dropdown-toggle .bs-select-clear-selected {\n padding-left: inherit;\n}\n.bootstrap-select .dropdown-toggle .bs-select-clear-selected span {\n position: relative;\n top: -webkit-calc(((-1em / 1.5) + 1ex) / 2);\n top: calc(((-1em / 1.5) + 1ex) / 2);\n pointer-events: none;\n}\n.bs3.bootstrap-select .dropdown-toggle .bs-select-clear-selected span {\n top: auto;\n}\n.bootstrap-select .dropdown-toggle.bs-placeholder .bs-select-clear-selected {\n display: none;\n}\n.input-group .bootstrap-select.form-control .dropdown-toggle {\n border-radius: inherit;\n}\n.bootstrap-select[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n}\n.bootstrap-select .dropdown-menu {\n min-width: 100%;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n.bootstrap-select .dropdown-menu > .inner:focus {\n outline: none !important;\n}\n.bootstrap-select .dropdown-menu.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.bootstrap-select .dropdown-menu li {\n position: relative;\n}\n.bootstrap-select .dropdown-menu li.active small {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n.bootstrap-select .dropdown-menu li.disabled a {\n cursor: not-allowed;\n}\n.bootstrap-select .dropdown-menu li a {\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.bootstrap-select .dropdown-menu li a.opt {\n position: relative;\n}\n[dir=\"ltr\"] .bootstrap-select .dropdown-menu li a.opt {\n padding-left: 2.25em;\n}\n[dir=\"rtl\"] .bootstrap-select .dropdown-menu li a.opt {\n padding-right: 2.25em;\n}\n.bootstrap-select .dropdown-menu li a span.check-mark {\n display: none;\n}\n.bootstrap-select .dropdown-menu li a span.text {\n display: inline-block;\n}\n[dir=\"ltr\"] .bootstrap-select .dropdown-menu li small {\n padding-left: 0.5em;\n}\n[dir=\"rtl\"] .bootstrap-select .dropdown-menu li small {\n padding-right: 0.5em;\n}\n.bootstrap-select .dropdown-menu .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: #f5f5f5;\n border: 1px solid #e3e3e3;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n pointer-events: none;\n opacity: 0.9;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n.bootstrap-select .dropdown-menu .notify.fadeOut {\n -webkit-animation: 300ms linear 750ms forwards bs-notify-fadeOut;\n -o-animation: 300ms linear 750ms forwards bs-notify-fadeOut;\n animation: 300ms linear 750ms forwards bs-notify-fadeOut;\n}\n.bootstrap-select .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n}\n.bootstrap-select.fit-width .dropdown-toggle .filter-option {\n position: static;\n display: inline;\n padding: 0;\n}\n.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,\n.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner {\n display: inline;\n}\n.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before {\n content: '\\00a0';\n}\n.bootstrap-select.fit-width .dropdown-toggle .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n}\n.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark {\n position: absolute;\n display: inline-block;\n top: 5px;\n}\n[dir=\"ltr\"] .bootstrap-select.show-tick .dropdown-menu .selected span.check-mark {\n right: 15px;\n}\n[dir=\"rtl\"] .bootstrap-select.show-tick .dropdown-menu .selected span.check-mark {\n left: 15px;\n}\n[dir=\"ltr\"] .bootstrap-select.show-tick .dropdown-menu li a span.text {\n margin-right: 34px;\n}\n[dir=\"rtl\"] .bootstrap-select.show-tick .dropdown-menu li a span.text {\n margin-left: 34px;\n}\n.bootstrap-select .bs-ok-default:after {\n content: '';\n display: block;\n width: 0.5em;\n height: 1em;\n border-style: solid;\n -webkit-transform-style: preserve-3d;\n transform-style: preserve-3d;\n}\n[dir=\"ltr\"] .bootstrap-select .bs-ok-default:after {\n border-width: 0 0.26em 0.26em 0;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n[dir=\"rtl\"] .bootstrap-select .bs-ok-default:after {\n border-width: 0 0 0.26em 0.26em;\n -webkit-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle,\n.bootstrap-select.show-menu-arrow.show > .dropdown-toggle {\n z-index: 1061;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid rgba(204, 204, 204, 0.2);\n position: absolute;\n bottom: -4px;\n display: none;\n}\n[dir=\"ltr\"] .bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before {\n left: 9px;\n}\n[dir=\"rtl\"] .bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before {\n right: 9px;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n display: none;\n}\n[dir=\"ltr\"] .bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after {\n left: 10px;\n}\n[dir=\"rtl\"] .bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after {\n right: 10px;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before {\n bottom: auto;\n top: -4px;\n border-top: 7px solid rgba(204, 204, 204, 0.2);\n border-bottom: 0;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after {\n bottom: auto;\n top: -4px;\n border-top: 6px solid white;\n border-bottom: 0;\n}\n[dir=\"ltr\"] .bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before {\n right: 12px;\n left: auto;\n}\n[dir=\"rtl\"] .bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before {\n left: 12px;\n right: auto;\n}\n[dir=\"ltr\"] .bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after {\n right: 13px;\n left: auto;\n}\n[dir=\"rtl\"] .bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after {\n left: 13px;\n right: auto;\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:before,\n.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:before,\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:after,\n.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:after {\n display: block;\n}\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n.bs-actionsbox {\n width: 100%;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n.bs-actionsbox .btn-group {\n display: block;\n}\n.bs-actionsbox .btn-group button {\n width: 50%;\n}\n.bs-donebutton {\n width: 100%;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n[dir=\"ltr\"] .bs-donebutton {\n float: left;\n}\n[dir=\"rtl\"] .bs-donebutton {\n float: right;\n}\n.bs-donebutton .btn-group {\n display: block;\n}\n.bs-donebutton .btn-group button {\n width: 100%;\n}\n.bs-searchbox + .bs-actionsbox {\n padding: 0 8px 4px;\n}\n.bs-searchbox .form-control {\n margin-bottom: 0;\n width: 100%;\n float: none;\n}\n/*# sourceMappingURL=node_modules\\bootstrap-select\\dist\\css\\bootstrap-select.css.map */"],"names":[]} diff --git a/src/OrchardCore.Modules/OrchardCore.Setup/Assets/ts/setup.ts b/src/OrchardCore.Modules/OrchardCore.Setup/Assets/ts/setup.ts index f0e6c70f55f..4e73a259403 100644 --- a/src/OrchardCore.Modules/OrchardCore.Setup/Assets/ts/setup.ts +++ b/src/OrchardCore.Modules/OrchardCore.Setup/Assets/ts/setup.ts @@ -1,103 +1,7 @@ -import strenght from "./strength"; - -document.addEventListener("DOMContentLoaded", function () { - toggleConnectionStringAndPrefix(); - - // Show hide the connection string when a provider is selected - document - .getElementById("DatabaseProvider") - ?.addEventListener("change", function () { - toggleConnectionStringAndPrefix(); - }); - - // Refresh the recipe description - document.querySelectorAll("#recipes div a").forEach(function (element) { - element.addEventListener("click", function () { - refreshDescription(this); - }); - }); - - const passwordElement = document.getElementById("Password"); - const options = JSON.parse(passwordElement?.dataset.strength ?? "") ?? { - requiredLength: 6, - requiredUniqueChars: 1, - requireNonAlphanumeric: true, - requireLowercase: true, - requireUppercase: true, - requireDigit: true, - }; - - strenght(passwordElement, options); - - if (passwordElement) { - passwordElement.addEventListener("focus", function () { - const popover = document.createElement("div"); - popover.className = "popover bs-popover-top"; - popover.role = "tooltip"; - popover.innerHTML = `
Password requirements:
`; - - const rect = passwordElement.getBoundingClientRect(); - popover.style.position = "absolute"; - popover.style.top = `${rect.top + 53}px`; - popover.style.left = `${rect.left}px`; - document.body.appendChild(popover); - - function removePopover() { - popover.remove(); - passwordElement?.removeEventListener("blur", removePopover); - } - - passwordElement.addEventListener("blur", removePopover); - }); - } - - const toggleConnectionString = document.querySelector( - "#toggleConnectionString" - ); - if (toggleConnectionString) { - toggleConnectionString.addEventListener("click", function (e) { - togglePasswordVisibility( - document.querySelector("#ConnectionString"), - document.querySelector("#toggleConnectionString") - ); - }); - } - - const togglePassword = document.querySelector("#togglePassword"); - togglePassword?.addEventListener("click", function (e) { - togglePasswordVisibility( - document.querySelector("#Password"), - document.querySelector("#togglePassword") - ); - }); - - const togglePasswordConfirmation = document.querySelector( - "#togglePasswordConfirmation" - ); - togglePasswordConfirmation?.addEventListener("click", function (e) { - togglePasswordVisibility( - document.querySelector("#PasswordConfirmation"), - document.querySelector("#togglePasswordConfirmation") - ); - }); - - setLocalizationUrl(); -}); +import strenght from "@orchardcore/frontend/components/strength"; // Show or hide the connection string or table prefix section when the database provider is selected -function toggleConnectionStringAndPrefix() { +const toggleConnectionStringAndPrefix = () => { const selectedOption = document.querySelector( "#DatabaseProvider option:checked" ); @@ -139,10 +43,9 @@ function toggleConnectionStringAndPrefix() { ""; } } -} +}; -// Show the recipe description -function refreshDescription(target: Element) { +const refreshDescription = (target: Element) => { const recipeName = target.getAttribute("data-recipe-name"); const recipeDisplayName = target.getAttribute("data-recipe-display-name"); const recipeDescription = target.getAttribute("data-recipe-description"); @@ -158,9 +61,9 @@ function refreshDescription(target: Element) { recipeButton.setAttribute("title", recipeDescription || ""); recipeButton.focus(); } -} +}; -function setLocalizationUrl() { +const setLocalizationUrl = () => { const culturesList = document.getElementById( "culturesList" ) as HTMLSelectElement; @@ -170,14 +73,13 @@ function setLocalizationUrl() { if (selectedOption) { window.location.href = selectedOption.dataset.url || ""; } - }) - -} + }); +}; -function togglePasswordVisibility( +const togglePasswordVisibility = ( passwordCtl: HTMLInputElement | null, togglePasswordCtl: HTMLElement | null -) { +) => { if (!passwordCtl || !togglePasswordCtl) { return; } @@ -202,4 +104,107 @@ function togglePasswordVisibility( icon.classList.toggle("fa-eye-slash", type !== "password"); } } -} +}; + +const init = () => { + toggleConnectionStringAndPrefix(); + + // Show hide the connection string when a provider is selected + document + .getElementById("DatabaseProvider") + ?.addEventListener("change", function () { + toggleConnectionStringAndPrefix(); + }); + + // Refresh the recipe description + document.querySelectorAll("#recipes div a").forEach(function (element) { + element.addEventListener("click", function () { + refreshDescription(this); + }); + }); + + const passwordElement = ( + document.getElementById("Password") + ); + + const options = JSON.parse(passwordElement?.dataset.strength ?? "") ?? { + requiredLength: 6, + requiredUniqueChars: 1, + requireNonAlphanumeric: true, + requireLowercase: true, + requireUppercase: true, + requireDigit: true, + }; + + if (passwordElement) { + strenght(passwordElement, options); + } + + if (passwordElement) { + passwordElement.addEventListener("focus", function () { + const popover = document.createElement("div"); + popover.className = "popover bs-popover-top"; + popover.role = "tooltip"; + popover.innerHTML = `
Password requirements:
  • Minimum length: ${ + options.requiredLength + }
  • Unique Chars: ${ + options.requiredUniqueChars + }
  • Uppercase: ${ + options.requireUppercase ? "required" : "not required" + }
  • Lowercase: ${ + options.requireLowercase ? "required" : "not required" + }
  • Digit: ${ + options.requireDigit ? "required" : "not required" + }
  • Non alphanumeric: ${ + options.requireNonAlphanumeric ? "required" : "not required" + }
`; + + const rect = passwordElement.getBoundingClientRect(); + popover.style.position = "absolute"; + popover.style.top = `${rect.top + 53}px`; + popover.style.left = `${rect.left}px`; + document.body.appendChild(popover); + + function removePopover() { + popover.remove(); + passwordElement?.removeEventListener("blur", removePopover); + } + + passwordElement.addEventListener("blur", removePopover); + }); + } + + const toggleConnectionString = document.querySelector( + "#toggleConnectionString" + ); + if (toggleConnectionString) { + toggleConnectionString.addEventListener("click", function (e) { + togglePasswordVisibility( + document.querySelector("#ConnectionString"), + document.querySelector("#toggleConnectionString") + ); + }); + } + + const togglePassword = document.querySelector("#togglePassword"); + togglePassword?.addEventListener("click", function (e) { + togglePasswordVisibility( + document.querySelector("#Password"), + document.querySelector("#togglePassword") + ); + }); + + const togglePasswordConfirmation = document.querySelector( + "#togglePasswordConfirmation" + ); + togglePasswordConfirmation?.addEventListener("click", function (e) { + togglePasswordVisibility( + document.querySelector("#PasswordConfirmation"), + document.querySelector("#togglePasswordConfirmation") + ); + }); + + setLocalizationUrl(); +}; + +init(); \ No newline at end of file diff --git a/src/OrchardCore.Modules/OrchardCore.Setup/wwwroot/Scripts/setup.js b/src/OrchardCore.Modules/OrchardCore.Setup/wwwroot/Scripts/setup.js index f0a3429d96b..e5d454ea071 100644 --- a/src/OrchardCore.Modules/OrchardCore.Setup/wwwroot/Scripts/setup.js +++ b/src/OrchardCore.Modules/OrchardCore.Setup/wwwroot/Scripts/setup.js @@ -1 +1 @@ -!function(e,t,r,n){var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i="function"==typeof o[n]&&o[n],u=i.cache||{},c="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(t,r){if(!u[t]){if(!e[t]){var a="function"==typeof o[n]&&o[n];if(!r&&a)return a(t,!0);if(i)return i(t,!0);if(c&&"string"==typeof t)return c(t);var d=new Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},p.cache={};var l=u[t]=new s.Module(t);e[t][0].call(l.exports,p,l,l.exports,o)}return u[t].exports;function p(e){var t=p.resolve(e);return!1===t?{}:s(t)}}s.isParcelRequire=!0,s.Module=function(e){this.id=e,this.bundle=s,this.exports={}},s.modules=e,s.cache=u,s.parent=i,s.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(s,"root",{get:function(){return o[n]}}),o[n]=s;for(var a=0;ae.style.display=t?"block":"none"));document.querySelectorAll(".tablePrefix").forEach((e=>e.style.display=r?"block":"none")),document.querySelectorAll(".pwd").forEach((e=>{t?e.setAttribute("required","required"):e.removeAttribute("required")}));const n=document.getElementById("connectionStringHint");n&&(n.textContent=e.getAttribute("data-connection-string-sample")||"")}}function s(e,t){if(!e||!t)return;const r="password"===e.getAttribute("type")?"text":"password";e.setAttribute("type",r);const n=t.getElementsByClassName("icon")[0];n&&(n.getAttribute("data-icon")?n.setAttribute("data-icon","password"===r?"eye":"eye-slash"):(n.classList.toggle("fa-eye","password"===r),n.classList.toggle("fa-eye-slash","password"!==r)))}document.addEventListener("DOMContentLoaded",(function(){c(),document.getElementById("DatabaseProvider")?.addEventListener("change",(function(){c()})),document.querySelectorAll("#recipes div a").forEach((function(e){e.addEventListener("click",(function(){!function(e){const t=e.getAttribute("data-recipe-name"),r=e.getAttribute("data-recipe-display-name"),n=e.getAttribute("data-recipe-description"),o=document.getElementById("recipeButton"),i=document.getElementById("RecipeName");o&&i&&(o.textContent=r||"",i.value=t||"",o.setAttribute("title",n||""),o.focus())}(this)}))}));const e=document.getElementById("Password"),t=JSON.parse(e?.dataset.strength??"")??{requiredLength:6,requiredUniqueChars:1,requireNonAlphanumeric:!0,requireLowercase:!0,requireUppercase:!0,requireDigit:!0};(0,u.default)(e,t),e&&e.addEventListener("focus",(function(){const r=document.createElement("div");r.className="popover bs-popover-top",r.role="tooltip",r.innerHTML=`
Password requirements:
  • Minimum length: ${t.requiredLength}
  • Unique Chars: ${t.requiredUniqueChars}
  • Uppercase: ${t.requireUppercase?"required":"not required"}
  • Lowercase: ${t.requireLowercase?"required":"not required"}
  • Digit: ${t.requireDigit?"required":"not required"}
  • Non alphanumeric: ${t.requireNonAlphanumeric?"required":"not required"}
`;const n=e.getBoundingClientRect();r.style.position="absolute",r.style.top=`${n.top+53}px`,r.style.left=`${n.left}px`,document.body.appendChild(r),e.addEventListener("blur",(function t(){r.remove(),e?.removeEventListener("blur",t)}))}));const r=document.querySelector("#toggleConnectionString");r&&r.addEventListener("click",(function(e){s(document.querySelector("#ConnectionString"),document.querySelector("#toggleConnectionString"))}));const n=document.querySelector("#togglePassword");n?.addEventListener("click",(function(e){s(document.querySelector("#Password"),document.querySelector("#togglePassword"))}));const o=document.querySelector("#togglePasswordConfirmation");o?.addEventListener("click",(function(e){s(document.querySelector("#PasswordConfirmation"),document.querySelector("#togglePasswordConfirmation"))})),function(){const e=document.getElementById("culturesList");e.addEventListener("change",(()=>{const t=e.options[e.selectedIndex];t&&(window.location.href=t.dataset.url||"")}))}()}))},{"./strength":"3hpWj","@parcel/transformer-js/src/esmodule-helpers.js":"2Cr9l"}],"3hpWj":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){const r=Object.assign({requiredLength:8,requireUppercase:!1,requireLowercase:!1,requireDigit:!1,requireNonAlphanumeric:!1,target:"#passwordStrength",style:"margin-top: 7px; height: 7px; border-radius: 5px"},t);let n=0,o=0,i=0,u=0;const c=/[A-Z]/,s=/[a-z]/,a=/[0-9]/,d=/[^\da-zA-Z]/;let l=!1;function p(e){const t=e.length>=r.requiredLength?1:0;n=!r.requireUppercase||e.match(c)?1:0,o=!r.requireLowercase||e.match(s)?1:0,i=!r.requireDigit||e.match(a)?1:0,u=!r.requireNonAlphanumeric||e.match(d)?1:0;const p=(t+n+o+i+u)/5*100;l=p>=100,function(e,t){const n=document.createElement("div");n.className="progress",n.setAttribute("value",e.toString()),n.setAttribute("style",r.style),n.setAttribute("max","100"),n.setAttribute("aria-describedby","");const o=document.createElement("div");o.className="progress-bar "+t,o.style.width=e+"%",n.appendChild(o);const i=document.querySelector(r.target);i.innerHTML="",i.appendChild(n)}(p,function(e){return e>=100?"bg-success":e>=50?"bg-warning":0==e?"":"bg-danger"}(p))}e.addEventListener("keyup",(t=>p(e.value))),e.addEventListener("keydown",(t=>p(e.value))),e.addEventListener("change",(t=>p(e.value))),e.addEventListener("drop",(e=>{e.preventDefault(),p(e.dataTransfer.getData("text"))})),e.form.addEventListener("submit",(t=>{p(e.value),l||t.preventDefault()}))}o.defineInteropFlag(r),o.export(r,"default",(()=>i))},{"@parcel/transformer-js/src/esmodule-helpers.js":"2Cr9l"}],"2Cr9l":[function(e,t,r,n){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach((function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})})),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["7SRNq"],"7SRNq","parcelRequire94c2"); \ No newline at end of file +!function(e,t,r,n){var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i="function"==typeof o[n]&&o[n],u=i.cache||{},s="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!u[t]){if(!e[t]){var a="function"==typeof o[n]&&o[n];if(!r&&a)return a(t,!0);if(i)return i(t,!0);if(s&&"string"==typeof t)return s(t);var d=new Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},p.cache={};var l=u[t]=new c.Module(t);e[t][0].call(l.exports,p,l,l.exports,o)}return u[t].exports;function p(e){var t=p.resolve(e);return!1===t?{}:c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.exports={}},c.modules=e,c.cache=u,c.parent=i,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return o[n]}}),o[n]=c;for(var a=0;a{const e=document.querySelector("#DatabaseProvider option:checked");if(e){const t="true"===e.getAttribute("data-connection-string")?.toLowerCase(),r="true"===e.getAttribute("data-table-prefix")?.toLowerCase();document.querySelectorAll(".connectionString").forEach((e=>e.style.display=t?"block":"none"));document.querySelectorAll(".tablePrefix").forEach((e=>e.style.display=r?"block":"none")),document.querySelectorAll(".pwd").forEach((e=>{t?e.setAttribute("required","required"):e.removeAttribute("required")}));const n=document.getElementById("connectionStringHint");n&&(n.textContent=e.getAttribute("data-connection-string-sample")||"")}},c=(e,t)=>{if(!e||!t)return;const r="password"===e.getAttribute("type")?"text":"password";e.setAttribute("type",r);const n=t.getElementsByClassName("icon")[0];n&&(n.getAttribute("data-icon")?n.setAttribute("data-icon","password"===r?"eye":"eye-slash"):(n.classList.toggle("fa-eye","password"===r),n.classList.toggle("fa-eye-slash","password"!==r)))};(()=>{s(),document.getElementById("DatabaseProvider")?.addEventListener("change",(function(){s()})),document.querySelectorAll("#recipes div a").forEach((function(e){e.addEventListener("click",(function(){(e=>{const t=e.getAttribute("data-recipe-name"),r=e.getAttribute("data-recipe-display-name"),n=e.getAttribute("data-recipe-description"),o=document.getElementById("recipeButton"),i=document.getElementById("RecipeName");o&&i&&(o.textContent=r||"",i.value=t||"",o.setAttribute("title",n||""),o.focus())})(this)}))}));const e=document.getElementById("Password"),t=JSON.parse(e?.dataset.strength??"")??{requiredLength:6,requiredUniqueChars:1,requireNonAlphanumeric:!0,requireLowercase:!0,requireUppercase:!0,requireDigit:!0};e&&(0,u.default)(e,t),e&&e.addEventListener("focus",(function(){const r=document.createElement("div");r.className="popover bs-popover-top",r.role="tooltip",r.innerHTML=`
Password requirements:
  • Minimum length: ${t.requiredLength}
  • Unique Chars: ${t.requiredUniqueChars}
  • Uppercase: ${t.requireUppercase?"required":"not required"}
  • Lowercase: ${t.requireLowercase?"required":"not required"}
  • Digit: ${t.requireDigit?"required":"not required"}
  • Non alphanumeric: ${t.requireNonAlphanumeric?"required":"not required"}
`;const n=e.getBoundingClientRect();r.style.position="absolute",r.style.top=`${n.top+53}px`,r.style.left=`${n.left}px`,document.body.appendChild(r),e.addEventListener("blur",(function t(){r.remove(),e?.removeEventListener("blur",t)}))}));const r=document.querySelector("#toggleConnectionString");r&&r.addEventListener("click",(function(e){c(document.querySelector("#ConnectionString"),document.querySelector("#toggleConnectionString"))}));const n=document.querySelector("#togglePassword");n?.addEventListener("click",(function(e){c(document.querySelector("#Password"),document.querySelector("#togglePassword"))}));const o=document.querySelector("#togglePasswordConfirmation");o?.addEventListener("click",(function(e){c(document.querySelector("#PasswordConfirmation"),document.querySelector("#togglePasswordConfirmation"))})),(()=>{const e=document.getElementById("culturesList");e.addEventListener("change",(()=>{const t=e.options[e.selectedIndex];t&&(window.location.href=t.dataset.url||"")}))})()})()},{"@orchardcore/frontend/components/strength":"4C8NG","@parcel/transformer-js/src/esmodule-helpers.js":"2Cr9l"}],"4C8NG":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){const r=Object.assign({requiredLength:8,requireUppercase:!1,requireLowercase:!1,requireDigit:!1,requireNonAlphanumeric:!1,target:"#passwordStrength",style:"margin-top: 7px; height: 7px; border-radius: 5px"},t);let n=0,o=0,i=0,u=0;const s=/[A-Z]/,c=/[a-z]/,a=/[0-9]/,d=/[^\da-zA-Z]/;let l=!1;function p(e){const t=e.length>=r.requiredLength?1:0;n=!r.requireUppercase||e.match(s)?1:0,o=!r.requireLowercase||e.match(c)?1:0,i=!r.requireDigit||e.match(a)?1:0,u=!r.requireNonAlphanumeric||e.match(d)?1:0;const p=(t+n+o+i+u)/5*100;l=p>=100,function(e,t){const n=document.createElement("div");n.className="progress",n.setAttribute("value",e.toString()),n.setAttribute("style",r.style),n.setAttribute("max","100"),n.setAttribute("aria-describedby","");const o=document.createElement("div");o.className="progress-bar "+t,o.style.width=e+"%",n.appendChild(o);const i=document.querySelector(r.target);i.innerHTML="",i.appendChild(n)}(p,function(e){return e>=100?"bg-success":e>=50?"bg-warning":0==e?"":"bg-danger"}(p))}e.addEventListener("keyup",(()=>p(e.value))),e.addEventListener("keydown",(()=>p(e.value))),e.addEventListener("change",(()=>p(e.value))),e.addEventListener("drop",(e=>{e.preventDefault(),p(e.dataTransfer?.getData("text")??"")})),e.form?.addEventListener("submit",(t=>{p(e.value),l||t.preventDefault()}))}o.defineInteropFlag(r),o.export(r,"default",(()=>i))},{"@parcel/transformer-js/src/esmodule-helpers.js":"2Cr9l"}],"2Cr9l":[function(e,t,r,n){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach((function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})})),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["7SRNq"],"7SRNq","parcelRequire94c2"); \ No newline at end of file diff --git a/src/OrchardCore.Themes/TheAgencyTheme/Assets/package.json b/src/OrchardCore.Themes/TheAgencyTheme/Assets/package.json index 75987decae6..0f1554f66f4 100644 --- a/src/OrchardCore.Themes/TheAgencyTheme/Assets/package.json +++ b/src/OrchardCore.Themes/TheAgencyTheme/Assets/package.json @@ -36,6 +36,7 @@ "url": "https://github.com/StartBootstrap/startbootstrap-agency.git" }, "dependencies": { + "@popperjs/core": "2.11.8", "bootstrap": "5.1.3" }, "devDependencies": { diff --git a/src/OrchardCore.Themes/TheBlogTheme/Assets/package.json b/src/OrchardCore.Themes/TheBlogTheme/Assets/package.json index ed497367f96..89f3022033f 100644 --- a/src/OrchardCore.Themes/TheBlogTheme/Assets/package.json +++ b/src/OrchardCore.Themes/TheBlogTheme/Assets/package.json @@ -1,53 +1,54 @@ { - "title": "Clean Blog", - "name": "startbootstrap-clean-blog", - "version": "6.0.8", - "scripts": { - "build": "npm run clean && npm run build:pug && npm run build:scss && npm run build:scripts && npm run build:assets", - "build:assets": "node scripts/build-assets.js", - "build:pug": "node scripts/build-pug.js", - "build:scripts": "node scripts/build-scripts.js", - "build:scss": "node scripts/build-scss.js", - "clean": "node scripts/clean.js", - "start": "npm run build && node scripts/start.js", - "start:debug": "npm run build && node scripts/start-debug.js" - }, - "description": "Clean Blog is a Medium inspired blog theme for Bootstrap.", - "keywords": [ - "css", - "sass", - "html", - "responsive", - "theme", - "template" - ], - "homepage": "https://startbootstrap.com/theme/clean-blog", - "bugs": { - "url": "https://github.com/StartBootstrap/startbootstrap-clean-blog/issues", - "email": "feedback@startbootstrap.com" - }, - "license": "MIT", - "author": "Start Bootstrap", - "contributors": [ - "David Miller (https://davidmiller.io/)" - ], - "repository": { - "type": "git", - "url": "https://github.com/StartBootstrap/startbootstrap-clean-blog.git" - }, - "dependencies": { - "bootstrap": "5.1.3" - }, - "devDependencies": { - "autoprefixer": "10.4.4", - "browser-sync": "2.27.9", - "chokidar": "3.5.3", - "concurrently": "6.3.0", - "postcss": "8.4.12", - "prettier": "2.6.0", - "pug": "3.0.2", - "sass": "1.49.9", - "shelljs": "0.8.5", - "upath": "2.0.1" - } + "title": "Clean Blog", + "name": "startbootstrap-clean-blog", + "version": "6.0.8", + "scripts": { + "build": "npm run clean && npm run build:pug && npm run build:scss && npm run build:scripts && npm run build:assets", + "build:assets": "node scripts/build-assets.js", + "build:pug": "node scripts/build-pug.js", + "build:scripts": "node scripts/build-scripts.js", + "build:scss": "node scripts/build-scss.js", + "clean": "node scripts/clean.js", + "start": "npm run build && node scripts/start.js", + "start:debug": "npm run build && node scripts/start-debug.js" + }, + "description": "Clean Blog is a Medium inspired blog theme for Bootstrap.", + "keywords": [ + "css", + "sass", + "html", + "responsive", + "theme", + "template" + ], + "homepage": "https://startbootstrap.com/theme/clean-blog", + "bugs": { + "url": "https://github.com/StartBootstrap/startbootstrap-clean-blog/issues", + "email": "feedback@startbootstrap.com" + }, + "license": "MIT", + "author": "Start Bootstrap", + "contributors": [ + "David Miller (https://davidmiller.io/)" + ], + "repository": { + "type": "git", + "url": "https://github.com/StartBootstrap/startbootstrap-clean-blog.git" + }, + "dependencies": { + "@popperjs/core": "2.11.8", + "bootstrap": "5.1.3" + }, + "devDependencies": { + "autoprefixer": "10.4.4", + "browser-sync": "2.27.9", + "chokidar": "3.5.3", + "concurrently": "6.3.0", + "postcss": "8.4.12", + "prettier": "2.6.0", + "pug": "3.0.2", + "sass": "1.49.9", + "shelljs": "0.8.5", + "upath": "2.0.1" + } } diff --git a/src/OrchardCore.Themes/TheComingSoonTheme/Assets/package.json b/src/OrchardCore.Themes/TheComingSoonTheme/Assets/package.json index 642d8f648eb..a504f2cde63 100644 --- a/src/OrchardCore.Themes/TheComingSoonTheme/Assets/package.json +++ b/src/OrchardCore.Themes/TheComingSoonTheme/Assets/package.json @@ -1,53 +1,54 @@ { - "title": "Coming Soon", - "name": "startbootstrap-coming-soon", - "version": "6.0.6", - "scripts": { - "build": "npm run clean && npm run build:pug && npm run build:scss && npm run build:scripts && npm run build:assets", - "build:assets": "node scripts/build-assets.js", - "build:pug": "node scripts/build-pug.js", - "build:scripts": "node scripts/build-scripts.js", - "build:scss": "node scripts/build-scss.js", - "clean": "node scripts/clean.js", - "start": "npm run build && node scripts/start.js", - "start:debug": "npm run build && node scripts/start-debug.js" - }, - "description": "Coming Soon is a Bootstrap 4 coming soon page theme.", - "keywords": [ - "css", - "sass", - "html", - "responsive", - "theme", - "template" - ], - "homepage": "https://startbootstrap.com/theme/coming-soon", - "bugs": { - "url": "https://github.com/StartBootstrap/startbootstrap-coming-soon/issues", - "email": "feedback@startbootstrap.com" - }, - "license": "MIT", - "author": "Start Bootstrap", - "contributors": [ - "David Miller (https://davidmiller.io/)" - ], - "repository": { - "type": "git", - "url": "https://github.com/StartBootstrap/startbootstrap-coming-soon.git" - }, - "dependencies": { - "bootstrap": "5.1.3" - }, - "devDependencies": { - "autoprefixer": "10.4.4", - "browser-sync": "2.27.9", - "chokidar": "3.5.3", - "concurrently": "6.3.0", - "postcss": "8.4.12", - "prettier": "2.6.0", - "pug": "3.0.2", - "sass": "1.49.9", - "shelljs": "0.8.5", - "upath": "2.0.1" - } + "title": "Coming Soon", + "name": "startbootstrap-coming-soon", + "version": "6.0.6", + "scripts": { + "build": "npm run clean && npm run build:pug && npm run build:scss && npm run build:scripts && npm run build:assets", + "build:assets": "node scripts/build-assets.js", + "build:pug": "node scripts/build-pug.js", + "build:scripts": "node scripts/build-scripts.js", + "build:scss": "node scripts/build-scss.js", + "clean": "node scripts/clean.js", + "start": "npm run build && node scripts/start.js", + "start:debug": "npm run build && node scripts/start-debug.js" + }, + "description": "Coming Soon is a Bootstrap 4 coming soon page theme.", + "keywords": [ + "css", + "sass", + "html", + "responsive", + "theme", + "template" + ], + "homepage": "https://startbootstrap.com/theme/coming-soon", + "bugs": { + "url": "https://github.com/StartBootstrap/startbootstrap-coming-soon/issues", + "email": "feedback@startbootstrap.com" + }, + "license": "MIT", + "author": "Start Bootstrap", + "contributors": [ + "David Miller (https://davidmiller.io/)" + ], + "repository": { + "type": "git", + "url": "https://github.com/StartBootstrap/startbootstrap-coming-soon.git" + }, + "dependencies": { + "@popperjs/core": "2.11.8", + "bootstrap": "5.1.3" + }, + "devDependencies": { + "autoprefixer": "10.4.4", + "browser-sync": "2.27.9", + "chokidar": "3.5.3", + "concurrently": "6.3.0", + "postcss": "8.4.12", + "prettier": "2.6.0", + "pug": "3.0.2", + "sass": "1.49.9", + "shelljs": "0.8.5", + "upath": "2.0.1" + } } diff --git a/yarn.lock b/yarn.lock index c515a5c591a..1f5cd53f446 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1972,6 +1972,12 @@ __metadata: languageName: unknown linkType: soft +"@orchardcore/frontend@workspace:src/Frontend": + version: 0.0.0-use.local + resolution: "@orchardcore/frontend@workspace:src/Frontend" + languageName: unknown + linkType: soft + "@orchardcore/liquid@workspace:src/OrchardCore.Modules/OrchardCore.Liquid": version: 0.0.0-use.local resolution: "@orchardcore/liquid@workspace:src/OrchardCore.Modules/OrchardCore.Liquid" @@ -12905,6 +12911,7 @@ __metadata: version: 0.0.0-use.local resolution: "startbootstrap-agency@workspace:src/OrchardCore.Themes/TheAgencyTheme/Assets" dependencies: + "@popperjs/core": "npm:2.11.8" autoprefixer: "npm:10.4.4" bootstrap: "npm:5.1.3" browser-sync: "npm:2.27.9" @@ -12923,6 +12930,7 @@ __metadata: version: 0.0.0-use.local resolution: "startbootstrap-clean-blog@workspace:src/OrchardCore.Themes/TheBlogTheme/Assets" dependencies: + "@popperjs/core": "npm:2.11.8" autoprefixer: "npm:10.4.4" bootstrap: "npm:5.1.3" browser-sync: "npm:2.27.9" @@ -12941,6 +12949,7 @@ __metadata: version: 0.0.0-use.local resolution: "startbootstrap-coming-soon@workspace:src/OrchardCore.Themes/TheComingSoonTheme/Assets" dependencies: + "@popperjs/core": "npm:2.11.8" autoprefixer: "npm:10.4.4" bootstrap: "npm:5.1.3" browser-sync: "npm:2.27.9"