mirror of
https://github.com/tenrok/bootstrap.git
synced 2026-06-20 20:00:36 +03:00
Merge branch 'v4-dev' into form-tweaks
This commit is contained in:
@@ -25,6 +25,7 @@
|
|||||||
"composer.json",
|
"composer.json",
|
||||||
"CONTRIBUTING.md",
|
"CONTRIBUTING.md",
|
||||||
"docs",
|
"docs",
|
||||||
|
"Gruntfile.js",
|
||||||
"js/tests",
|
"js/tests",
|
||||||
"test-infra"
|
"test-infra"
|
||||||
],
|
],
|
||||||
|
|||||||
Vendored
-5
@@ -256,11 +256,6 @@ input[type="checkbox"] {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="radio"]:disabled,
|
|
||||||
input[type="checkbox"]:disabled {
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="date"],
|
input[type="date"],
|
||||||
input[type="time"],
|
input[type="time"],
|
||||||
input[type="datetime-local"],
|
input[type="datetime-local"],
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1 +1 @@
|
|||||||
html{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0275d8;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}/*# sourceMappingURL=bootstrap-reboot.min.css.map */
|
html{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0275d8;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}/*# sourceMappingURL=bootstrap-reboot.min.css.map */
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
{"version":3,"sources":["../../scss/_reboot.scss","dist/css/bootstrap-reboot.css","bootstrap-reboot.css","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAoBA,KACE,mBAAA,WAAA,WAAA,WACA,YAAA,WACA,YAAA,KACA,yBAAA,KACA,qBAAA,KACA,mBAAA,UACA,4BAAA,YAGF,ECjBA,QADA,SDqBE,mBAAA,QAAA,WAAA,QAKA,cAAgB,MAAA,aASlB,KACE,OAAA,EACA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KExBF,sBFiCE,QAAA,YASF,GACE,mBAAA,YAAA,WAAA,YACA,OAAA,EACA,SAAA,QAYF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAOF,EACE,WAAA,EACA,cAAA,KC5CF,0BDsDA,YAEE,gBAAA,UACA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QClDF,GDqDA,GCtDA,GDyDE,WAAA,EACA,cAAA,KAGF,MCrDA,MACA,MAFA,MD0DE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,IACE,WAAA,OAGF,ECtDA,ODwDE,YAAA,OAGF,MACE,UAAA,IAQF,IC3DA,ID6DE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YACA,6BAAA,QGhLE,QHmLA,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KGrLE,oCAAA,oCHwLA,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,EC7DJ,KACA,IDqEA,ICpEA,KDwEE,YAAA,SAAA,CAAA,UACA,UAAA,IAGF,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,eACE,SAAA,OC/EF,cD6FA,EC/FA,KACA,OAEA,MACA,MACA,OACA,QACA,SDiGE,iBAAA,aAAA,aAAA,aAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAEE,WAAA,KAQF,MAEE,QAAA,aACA,cAAA,MAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBC3GF,OD8GA,MC5GA,SADA,OAEA,SDgHE,OAAA,EACA,YAAA,QACA,UAAA,QACA,YAAA,QAGF,OC9GA,MDgHE,SAAA,QAGF,OC9GA,ODgHE,eAAA,KC1GF,aACA,cD+GA,OCjHA,mBDqHE,mBAAA,OC9GF,gCACA,+BACA,gCDgHA,yBAIE,QAAA,EACA,aAAA,KC/GF,qBDkHA,kBAEE,mBAAA,WAAA,WAAA,WACA,QAAA,EC9GF,8BD2GA,2BASI,OAAA,YAKJ,iBCnHA,2BACA,kBAFA,iBD6HE,mBAAA,QAGF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,MACA,UAAA,OACA,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SErIF,yCDMA,yCDqIE,OAAA,KEtIF,cF8IE,eAAA,KACA,mBAAA,KE1IF,4CDMA,yCD6IE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACE,QAAA,aAGF,QACE,QAAA,UAGF,SACE,QAAA,KEvJF,SF6JE,QAAA"}
|
{"version":3,"sources":["../../scss/_reboot.scss","dist/css/bootstrap-reboot.css","bootstrap-reboot.css","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAoBA,KACE,mBAAA,WAAA,WAAA,WACA,YAAA,WACA,YAAA,KACA,yBAAA,KACA,qBAAA,KACA,mBAAA,UACA,4BAAA,YAGF,ECjBA,QADA,SDqBE,mBAAA,QAAA,WAAA,QAKA,cAAgB,MAAA,aASlB,KACE,OAAA,EACA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KExBF,sBFiCE,QAAA,YASF,GACE,mBAAA,YAAA,WAAA,YACA,OAAA,EACA,SAAA,QAYF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAOF,EACE,WAAA,EACA,cAAA,KC5CF,0BDsDA,YAEE,gBAAA,UACA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QClDF,GDqDA,GCtDA,GDyDE,WAAA,EACA,cAAA,KAGF,MCrDA,MACA,MAFA,MD0DE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,IACE,WAAA,OAGF,ECtDA,ODwDE,YAAA,OAGF,MACE,UAAA,IAQF,IC3DA,ID6DE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YACA,6BAAA,QGhLE,QHmLA,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KGrLE,oCAAA,oCHwLA,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,EC7DJ,KACA,IDqEA,ICpEA,KDwEE,YAAA,SAAA,CAAA,UACA,UAAA,IAGF,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,eACE,SAAA,OC/EF,cD6FA,EC/FA,KACA,OAEA,MACA,MACA,OACA,QACA,SDiGE,iBAAA,aAAA,aAAA,aAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAEE,WAAA,KAQF,MAEE,QAAA,aACA,cAAA,MAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBC3GF,OD8GA,MC5GA,SADA,OAEA,SDgHE,OAAA,EACA,YAAA,QACA,UAAA,QACA,YAAA,QAGF,OC9GA,MDgHE,SAAA,QAGF,OC9GA,ODgHE,eAAA,KC1GF,aACA,cD+GA,OCjHA,mBDqHE,mBAAA,OC9GF,gCACA,+BACA,gCDgHA,yBAIE,QAAA,EACA,aAAA,KC/GF,qBDkHA,kBAEE,mBAAA,WAAA,WAAA,WACA,QAAA,EAIF,iBCjHA,2BACA,kBAFA,iBD2HE,mBAAA,QAGF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,MACA,UAAA,OACA,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SEnIF,yCDMA,yCDmIE,OAAA,KEpIF,cF4IE,eAAA,KACA,mBAAA,KExIF,4CDMA,yCD2IE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACE,QAAA,aAGF,QACE,QAAA,UAGF,SACE,QAAA,KErJF,SF2JE,QAAA"}
|
||||||
+64
-92
@@ -329,11 +329,6 @@ input[type="checkbox"] {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="radio"]:disabled,
|
|
||||||
input[type="checkbox"]:disabled {
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="date"],
|
input[type="date"],
|
||||||
input[type="time"],
|
input[type="time"],
|
||||||
input[type="datetime-local"],
|
input[type="datetime-local"],
|
||||||
@@ -1966,10 +1961,6 @@ pre code {
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-control:disabled {
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
|
|
||||||
select.form-control:not([size]):not([multiple]) {
|
select.form-control:not([size]):not([multiple]) {
|
||||||
height: calc(2.25rem + 2px);
|
height: calc(2.25rem + 2px);
|
||||||
}
|
}
|
||||||
@@ -2074,7 +2065,6 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
|
|||||||
|
|
||||||
.form-check.disabled .form-check-label {
|
.form-check.disabled .form-check-label {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-check-label {
|
.form-check-label {
|
||||||
@@ -2344,7 +2334,6 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn.disabled, .btn:disabled {
|
.btn.disabled, .btn:disabled {
|
||||||
cursor: not-allowed;
|
|
||||||
opacity: .65;
|
opacity: .65;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2831,6 +2820,10 @@ tbody.collapse.show {
|
|||||||
border-left: 0.3em solid transparent;
|
border-left: 0.3em solid transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropdown-toggle:empty::after {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.dropup .dropdown-toggle::after {
|
.dropup .dropdown-toggle::after {
|
||||||
border-top: 0;
|
border-top: 0;
|
||||||
border-bottom: 0.3em solid;
|
border-bottom: 0.3em solid;
|
||||||
@@ -2867,7 +2860,7 @@ tbody.collapse.show {
|
|||||||
.dropdown-item {
|
.dropdown-item {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 3px 1.5rem;
|
padding: 0.25rem 1.5rem;
|
||||||
clear: both;
|
clear: both;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
color: #292b2c;
|
color: #292b2c;
|
||||||
@@ -2891,7 +2884,6 @@ tbody.collapse.show {
|
|||||||
|
|
||||||
.dropdown-item.disabled, .dropdown-item:disabled {
|
.dropdown-item.disabled, .dropdown-item:disabled {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
cursor: not-allowed;
|
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2922,15 +2914,6 @@ tbody.collapse.show {
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-backdrop {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 990;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropup .dropdown-menu {
|
.dropup .dropdown-menu {
|
||||||
top: auto;
|
top: auto;
|
||||||
bottom: 100%;
|
bottom: 100%;
|
||||||
@@ -3036,11 +3019,6 @@ tbody.collapse.show {
|
|||||||
border-bottom-left-radius: 0;
|
border-bottom-left-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-group .dropdown-toggle:active,
|
|
||||||
.btn-group.open .dropdown-toggle {
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn + .dropdown-toggle-split {
|
.btn + .dropdown-toggle-split {
|
||||||
padding-right: 0.75rem;
|
padding-right: 0.75rem;
|
||||||
padding-left: 0.75rem;
|
padding-left: 0.75rem;
|
||||||
@@ -3313,13 +3291,11 @@ tbody.collapse.show {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.custom-control-input:disabled ~ .custom-control-indicator {
|
.custom-control-input:disabled ~ .custom-control-indicator {
|
||||||
cursor: not-allowed;
|
|
||||||
background-color: #eceeef;
|
background-color: #eceeef;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-control-input:disabled ~ .custom-control-description {
|
.custom-control-input:disabled ~ .custom-control-description {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-control-indicator {
|
.custom-control-indicator {
|
||||||
@@ -3412,7 +3388,6 @@ tbody.collapse.show {
|
|||||||
|
|
||||||
.custom-select:disabled {
|
.custom-select:disabled {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
cursor: not-allowed;
|
|
||||||
background-color: #eceeef;
|
background-color: #eceeef;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3510,22 +3485,16 @@ tbody.collapse.show {
|
|||||||
|
|
||||||
.nav-link.disabled {
|
.nav-link.disabled {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-tabs {
|
.nav-tabs {
|
||||||
border-bottom: 1px solid #ddd;
|
border-bottom: 1px solid #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-tabs .nav-item,
|
.nav-tabs .nav-item {
|
||||||
.nav-tabs .nav-link {
|
|
||||||
margin-bottom: -1px;
|
margin-bottom: -1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-tabs .nav-item .nav-link {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-tabs .nav-link {
|
.nav-tabs .nav-link {
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
border-top-left-radius: 0.25rem;
|
border-top-left-radius: 0.25rem;
|
||||||
@@ -4023,9 +3992,9 @@ tbody.collapse.show {
|
|||||||
color: rgba(0, 0, 0, 0.3);
|
color: rgba(0, 0, 0, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-light .navbar-nav .open > .nav-link,
|
.navbar-light .navbar-nav .show > .nav-link,
|
||||||
.navbar-light .navbar-nav .active > .nav-link,
|
.navbar-light .navbar-nav .active > .nav-link,
|
||||||
.navbar-light .navbar-nav .nav-link.open,
|
.navbar-light .navbar-nav .nav-link.show,
|
||||||
.navbar-light .navbar-nav .nav-link.active {
|
.navbar-light .navbar-nav .nav-link.active {
|
||||||
color: rgba(0, 0, 0, 0.9);
|
color: rgba(0, 0, 0, 0.9);
|
||||||
}
|
}
|
||||||
@@ -4063,9 +4032,9 @@ tbody.collapse.show {
|
|||||||
color: rgba(255, 255, 255, 0.25);
|
color: rgba(255, 255, 255, 0.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-inverse .navbar-nav .open > .nav-link,
|
.navbar-inverse .navbar-nav .show > .nav-link,
|
||||||
.navbar-inverse .navbar-nav .active > .nav-link,
|
.navbar-inverse .navbar-nav .active > .nav-link,
|
||||||
.navbar-inverse .navbar-nav .nav-link.open,
|
.navbar-inverse .navbar-nav .nav-link.show,
|
||||||
.navbar-inverse .navbar-nav .nav-link.active {
|
.navbar-inverse .navbar-nav .nav-link.active {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
@@ -4226,31 +4195,67 @@ tbody.collapse.show {
|
|||||||
border-color: #0275d8;
|
border-color: #0275d8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-outline-primary .card-header,
|
||||||
|
.card-outline-primary .card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #0275d8;
|
||||||
|
}
|
||||||
|
|
||||||
.card-outline-secondary {
|
.card-outline-secondary {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-color: #ccc;
|
border-color: #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-outline-secondary .card-header,
|
||||||
|
.card-outline-secondary .card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
.card-outline-info {
|
.card-outline-info {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-color: #5bc0de;
|
border-color: #5bc0de;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-outline-info .card-header,
|
||||||
|
.card-outline-info .card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #5bc0de;
|
||||||
|
}
|
||||||
|
|
||||||
.card-outline-success {
|
.card-outline-success {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-color: #5cb85c;
|
border-color: #5cb85c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-outline-success .card-header,
|
||||||
|
.card-outline-success .card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #5cb85c;
|
||||||
|
}
|
||||||
|
|
||||||
.card-outline-warning {
|
.card-outline-warning {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-color: #f0ad4e;
|
border-color: #f0ad4e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-outline-warning .card-header,
|
||||||
|
.card-outline-warning .card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #f0ad4e;
|
||||||
|
}
|
||||||
|
|
||||||
.card-outline-danger {
|
.card-outline-danger {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-color: #d9534f;
|
border-color: #d9534f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-outline-danger .card-header,
|
||||||
|
.card-outline-danger .card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #d9534f;
|
||||||
|
}
|
||||||
|
|
||||||
.card-inverse {
|
.card-inverse {
|
||||||
color: rgba(255, 255, 255, 0.65);
|
color: rgba(255, 255, 255, 0.65);
|
||||||
}
|
}
|
||||||
@@ -4395,6 +4400,10 @@ tbody.collapse.show {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-columns .card {
|
||||||
|
margin-bottom: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
@media (min-width: 576px) {
|
@media (min-width: 576px) {
|
||||||
.card-columns {
|
.card-columns {
|
||||||
-webkit-column-count: 3;
|
-webkit-column-count: 3;
|
||||||
@@ -4407,7 +4416,6 @@ tbody.collapse.show {
|
|||||||
.card-columns .card {
|
.card-columns .card {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-bottom: 0.75rem;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4480,7 +4488,6 @@ tbody.collapse.show {
|
|||||||
.page-item.disabled .page-link {
|
.page-item.disabled .page-link {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
cursor: not-allowed;
|
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border-color: #ddd;
|
border-color: #ddd;
|
||||||
}
|
}
|
||||||
@@ -4627,10 +4634,6 @@ a.badge:focus, a.badge:hover {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.jumbotron-hr {
|
|
||||||
border-top-color: #d0d5d8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.jumbotron-fluid {
|
.jumbotron-fluid {
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
@@ -4761,6 +4764,9 @@ a.badge:focus, a.badge:hover {
|
|||||||
line-height: 1rem;
|
line-height: 1rem;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: #0275d8;
|
background-color: #0275d8;
|
||||||
|
-webkit-transition: width 0.6s ease;
|
||||||
|
-o-transition: width 0.6s ease;
|
||||||
|
transition: width 0.6s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.progress-bar-striped {
|
.progress-bar-striped {
|
||||||
@@ -4852,7 +4858,6 @@ a.badge:focus, a.badge:hover {
|
|||||||
|
|
||||||
.list-group-item.disabled, .list-group-item:disabled {
|
.list-group-item.disabled, .list-group-item:disabled {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
cursor: not-allowed;
|
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5391,7 +5396,7 @@ button.close {
|
|||||||
.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {
|
.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {
|
||||||
top: -10px;
|
top: -10px;
|
||||||
margin-left: -10px;
|
margin-left: -10px;
|
||||||
border-bottom-color: #f7f7f7;
|
border-bottom-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {
|
.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {
|
||||||
@@ -5479,36 +5484,21 @@ button.close {
|
|||||||
.carousel-item {
|
.carousel-item {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: none;
|
display: none;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-webkit-align-items: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
-webkit-transition: -webkit-transform 0.6s ease;
|
||||||
|
transition: -webkit-transform 0.6s ease;
|
||||||
@media (-webkit-transform-3d) {
|
-o-transition: -o-transform 0.6s ease;
|
||||||
.carousel-item {
|
transition: transform 0.6s ease;
|
||||||
-webkit-transition: -webkit-transform 0.6s ease-in-out;
|
transition: transform 0.6s ease, -webkit-transform 0.6s ease, -o-transform 0.6s ease;
|
||||||
transition: -webkit-transform 0.6s ease-in-out;
|
|
||||||
-o-transition: -o-transform 0.6s ease-in-out;
|
|
||||||
transition: transform 0.6s ease-in-out;
|
|
||||||
transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out;
|
|
||||||
-webkit-backface-visibility: hidden;
|
-webkit-backface-visibility: hidden;
|
||||||
backface-visibility: hidden;
|
backface-visibility: hidden;
|
||||||
-webkit-perspective: 1000px;
|
-webkit-perspective: 1000px;
|
||||||
perspective: 1000px;
|
perspective: 1000px;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@supports ((-webkit-transform: translate3d(0, 0, 0)) or (transform: translate3d(0, 0, 0))) {
|
|
||||||
.carousel-item {
|
|
||||||
-webkit-transition: -webkit-transform 0.6s ease-in-out;
|
|
||||||
transition: -webkit-transform 0.6s ease-in-out;
|
|
||||||
-o-transition: -o-transform 0.6s ease-in-out;
|
|
||||||
transition: transform 0.6s ease-in-out;
|
|
||||||
transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out;
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
backface-visibility: hidden;
|
|
||||||
-webkit-perspective: 1000px;
|
|
||||||
perspective: 1000px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.carousel-item.active,
|
.carousel-item.active,
|
||||||
.carousel-item-next,
|
.carousel-item-next,
|
||||||
@@ -5525,41 +5515,23 @@ button.close {
|
|||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (-webkit-transform-3d) {
|
|
||||||
.carousel-item-next.carousel-item-left,
|
.carousel-item-next.carousel-item-left,
|
||||||
.carousel-item-prev.carousel-item-right {
|
.carousel-item-prev.carousel-item-right {
|
||||||
-webkit-transform: translate3d(0, 0, 0);
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
transform: translate3d(0, 0, 0);
|
transform: translate3d(0, 0, 0);
|
||||||
}
|
}
|
||||||
.carousel-item-next,
|
|
||||||
.active.carousel-item-right {
|
|
||||||
-webkit-transform: translate3d(100%, 0, 0);
|
|
||||||
transform: translate3d(100%, 0, 0);
|
|
||||||
}
|
|
||||||
.carousel-item-prev,
|
|
||||||
.active.carousel-item-left {
|
|
||||||
-webkit-transform: translate3d(-100%, 0, 0);
|
|
||||||
transform: translate3d(-100%, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@supports ((-webkit-transform: translate3d(0, 0, 0)) or (transform: translate3d(0, 0, 0))) {
|
|
||||||
.carousel-item-next.carousel-item-left,
|
|
||||||
.carousel-item-prev.carousel-item-right {
|
|
||||||
-webkit-transform: translate3d(0, 0, 0);
|
|
||||||
transform: translate3d(0, 0, 0);
|
|
||||||
}
|
|
||||||
.carousel-item-next,
|
.carousel-item-next,
|
||||||
.active.carousel-item-right {
|
.active.carousel-item-right {
|
||||||
-webkit-transform: translate3d(100%, 0, 0);
|
-webkit-transform: translate3d(100%, 0, 0);
|
||||||
transform: translate3d(100%, 0, 0);
|
transform: translate3d(100%, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.carousel-item-prev,
|
.carousel-item-prev,
|
||||||
.active.carousel-item-left {
|
.active.carousel-item-left {
|
||||||
-webkit-transform: translate3d(-100%, 0, 0);
|
-webkit-transform: translate3d(-100%, 0, 0);
|
||||||
transform: translate3d(-100%, 0, 0);
|
transform: translate3d(-100%, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.carousel-control-prev,
|
.carousel-control-prev,
|
||||||
.carousel-control-next {
|
.carousel-control-next {
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+25
-28
@@ -420,6 +420,7 @@ var Button = function ($) {
|
|||||||
|
|
||||||
Button.prototype.toggle = function toggle() {
|
Button.prototype.toggle = function toggle() {
|
||||||
var triggerChangeEvent = true;
|
var triggerChangeEvent = true;
|
||||||
|
var addAriaPressed = true;
|
||||||
var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
|
var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
|
||||||
|
|
||||||
if (rootElement) {
|
if (rootElement) {
|
||||||
@@ -444,10 +445,13 @@ var Button = function ($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input.focus();
|
input.focus();
|
||||||
|
addAriaPressed = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (addAriaPressed) {
|
||||||
this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
|
this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
|
||||||
|
}
|
||||||
|
|
||||||
if (triggerChangeEvent) {
|
if (triggerChangeEvent) {
|
||||||
$(this._element).toggleClass(ClassName.ACTIVE);
|
$(this._element).toggleClass(ClassName.ACTIVE);
|
||||||
@@ -1154,7 +1158,6 @@ var Collapse = function ($) {
|
|||||||
$(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
|
$(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
|
||||||
|
|
||||||
this._element.style[dimension] = 0;
|
this._element.style[dimension] = 0;
|
||||||
this._element.setAttribute('aria-expanded', true);
|
|
||||||
|
|
||||||
if (this._triggerArray.length) {
|
if (this._triggerArray.length) {
|
||||||
$(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
|
$(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
|
||||||
@@ -1206,8 +1209,6 @@ var Collapse = function ($) {
|
|||||||
|
|
||||||
$(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
|
$(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
|
||||||
|
|
||||||
this._element.setAttribute('aria-expanded', false);
|
|
||||||
|
|
||||||
if (this._triggerArray.length) {
|
if (this._triggerArray.length) {
|
||||||
$(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
|
$(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
|
||||||
}
|
}
|
||||||
@@ -1273,7 +1274,6 @@ var Collapse = function ($) {
|
|||||||
Collapse.prototype._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
|
Collapse.prototype._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
|
||||||
if (element) {
|
if (element) {
|
||||||
var isOpen = $(element).hasClass(ClassName.SHOW);
|
var isOpen = $(element).hasClass(ClassName.SHOW);
|
||||||
element.setAttribute('aria-expanded', isOpen);
|
|
||||||
|
|
||||||
if (triggerArray.length) {
|
if (triggerArray.length) {
|
||||||
$(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
$(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
||||||
@@ -1384,10 +1384,11 @@ var Dropdown = function ($) {
|
|||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
||||||
var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
|
var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
|
||||||
|
var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
|
||||||
var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
|
var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
|
||||||
var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
|
var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
|
||||||
var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
|
var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
|
||||||
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + '|' + ARROW_DOWN_KEYCODE + '|' + ESCAPE_KEYCODE + '|' + SPACE_KEYCODE);
|
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + '|' + ARROW_DOWN_KEYCODE + '|' + ESCAPE_KEYCODE);
|
||||||
|
|
||||||
var Event = {
|
var Event = {
|
||||||
HIDE: 'hide' + EVENT_KEY,
|
HIDE: 'hide' + EVENT_KEY,
|
||||||
@@ -1396,24 +1397,21 @@ var Dropdown = function ($) {
|
|||||||
SHOWN: 'shown' + EVENT_KEY,
|
SHOWN: 'shown' + EVENT_KEY,
|
||||||
CLICK: 'click' + EVENT_KEY,
|
CLICK: 'click' + EVENT_KEY,
|
||||||
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
|
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
|
||||||
FOCUSIN_DATA_API: 'focusin' + EVENT_KEY + DATA_API_KEY,
|
KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY,
|
||||||
KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY
|
KEYUP_DATA_API: 'keyup' + EVENT_KEY + DATA_API_KEY
|
||||||
};
|
};
|
||||||
|
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
BACKDROP: 'dropdown-backdrop',
|
|
||||||
DISABLED: 'disabled',
|
DISABLED: 'disabled',
|
||||||
SHOW: 'show'
|
SHOW: 'show'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
BACKDROP: '.dropdown-backdrop',
|
|
||||||
DATA_TOGGLE: '[data-toggle="dropdown"]',
|
DATA_TOGGLE: '[data-toggle="dropdown"]',
|
||||||
FORM_CHILD: '.dropdown form',
|
FORM_CHILD: '.dropdown form',
|
||||||
ROLE_MENU: '[role="menu"]',
|
MENU: '.dropdown-menu',
|
||||||
ROLE_LISTBOX: '[role="listbox"]',
|
|
||||||
NAVBAR_NAV: '.navbar-nav',
|
NAVBAR_NAV: '.navbar-nav',
|
||||||
VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a'
|
VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1460,14 +1458,12 @@ var Dropdown = function ($) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the backdrop only if the dropdown menu will be opened
|
// if this is a touch-enabled device we add extra
|
||||||
|
// empty mouseover listeners to the body's immediate children;
|
||||||
|
// only needed because of broken event delegation on iOS
|
||||||
|
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
|
||||||
if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
|
if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
|
||||||
|
$('body').children().on('mouseover', '*', $.noop);
|
||||||
// if mobile we use a backdrop because click events don't delegate
|
|
||||||
var dropdown = document.createElement('div');
|
|
||||||
dropdown.className = ClassName.BACKDROP;
|
|
||||||
$(dropdown).insertBefore(this);
|
|
||||||
$(dropdown).on('click', Dropdown._clearMenus);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.focus();
|
this.focus();
|
||||||
@@ -1512,7 +1508,7 @@ var Dropdown = function ($) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Dropdown._clearMenus = function _clearMenus(event) {
|
Dropdown._clearMenus = function _clearMenus(event) {
|
||||||
if (event && event.which === RIGHT_MOUSE_BUTTON_WHICH) {
|
if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1528,7 +1524,7 @@ var Dropdown = function ($) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'focusin') && $.contains(parent, event.target)) {
|
if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1538,10 +1534,10 @@ var Dropdown = function ($) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove backdrop only if the dropdown menu will be hidden
|
// if this is a touch-enabled device we remove the extra
|
||||||
var backdrop = $(parent).find(Selector.BACKDROP)[0];
|
// empty mouseover listeners we added for iOS support
|
||||||
if (backdrop) {
|
if ('ontouchstart' in document.documentElement) {
|
||||||
backdrop.parentNode.removeChild(backdrop);
|
$('body').children().off('mouseover', '*', $.noop);
|
||||||
}
|
}
|
||||||
|
|
||||||
toggles[i].setAttribute('aria-expanded', 'false');
|
toggles[i].setAttribute('aria-expanded', 'false');
|
||||||
@@ -1562,7 +1558,7 @@ var Dropdown = function ($) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
|
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
|
||||||
if (!REGEXP_KEYDOWN.test(event.which) || /input|textarea/i.test(event.target.tagName)) {
|
if (!REGEXP_KEYDOWN.test(event.which) || /button/i.test(event.target.tagName) && event.which === SPACE_KEYCODE || /input|textarea/i.test(event.target.tagName)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1576,7 +1572,7 @@ var Dropdown = function ($) {
|
|||||||
var parent = Dropdown._getParentFromElement(this);
|
var parent = Dropdown._getParentFromElement(this);
|
||||||
var isActive = $(parent).hasClass(ClassName.SHOW);
|
var isActive = $(parent).hasClass(ClassName.SHOW);
|
||||||
|
|
||||||
if (!isActive && event.which !== ESCAPE_KEYCODE || isActive && event.which === ESCAPE_KEYCODE) {
|
if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
|
||||||
|
|
||||||
if (event.which === ESCAPE_KEYCODE) {
|
if (event.which === ESCAPE_KEYCODE) {
|
||||||
var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
|
var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
|
||||||
@@ -1628,7 +1624,7 @@ var Dropdown = function ($) {
|
|||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + ' ' + Event.FOCUSIN_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
|
$(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + ' ' + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1928,6 +1924,7 @@ var Modal = function ($) {
|
|||||||
if (this._isShown && this._config.keyboard) {
|
if (this._isShown && this._config.keyboard) {
|
||||||
$(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
|
$(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
|
||||||
if (event.which === ESCAPE_KEYCODE) {
|
if (event.which === ESCAPE_KEYCODE) {
|
||||||
|
event.preventDefault();
|
||||||
_this13.hide();
|
_this13.hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
@@ -55,9 +55,16 @@
|
|||||||
|
|
||||||
// Insert copy to clipboard button before .highlight
|
// Insert copy to clipboard button before .highlight
|
||||||
$('.highlight').each(function () {
|
$('.highlight').each(function () {
|
||||||
var btnHtml = '<div class="bd-clipboard"><span class="btn-clipboard" title="Copy to clipboard">Copy</span></div>'
|
var btnHtml = '<div class="bd-clipboard"><button class="btn-clipboard" title="Copy to clipboard">Copy</button></div>'
|
||||||
$(this).before(btnHtml)
|
$(this).before(btnHtml)
|
||||||
$('.btn-clipboard').tooltip()
|
$('.btn-clipboard')
|
||||||
|
.tooltip()
|
||||||
|
.on('mouseleave', function () {
|
||||||
|
// explicitly hide tooltip, since after clicking it remains
|
||||||
|
// focused (as it's a button), so tooltip would otherwise
|
||||||
|
// remain visible until focus is moved away
|
||||||
|
$(this).tooltip('hide')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
var clipboard = new Clipboard('.btn-clipboard', {
|
var clipboard = new Clipboard('.btn-clipboard', {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
color: #818a91;
|
color: #818a91;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
border-radius: .25rem;
|
border-radius: .25rem;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ Feel free to mix input groups with button groups in your toolbars. Similar to th
|
|||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<span class="input-group-addon" id="btnGroupAddon">@</span>
|
<span class="input-group-addon" id="btnGroupAddon">@</span>
|
||||||
<input type="text" class="form-control" placeholder="Input group example" aria-describedby="btnGroupAddon">
|
<input type="text" class="form-control" placeholder="Input group example" aria-label="Input group example" aria-describedby="btnGroupAddon">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ Feel free to mix input groups with button groups in your toolbars. Similar to th
|
|||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<span class="input-group-addon" id="btnGroupAddon2">@</span>
|
<span class="input-group-addon" id="btnGroupAddon2">@</span>
|
||||||
<input type="text" class="form-control" placeholder="Input group example" aria-describedby="btnGroupAddon2">
|
<input type="text" class="form-control" placeholder="Input group example" aria-label="Input group example" aria-describedby="btnGroupAddon2">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endexample %}
|
{% endexample %}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ Here's a carousel with slides only. Note the presence of the `.d-block` and `.im
|
|||||||
|
|
||||||
{% example html %}
|
{% example html %}
|
||||||
<div id="carouselExampleSlidesOnly" class="carousel slide" data-ride="carousel">
|
<div id="carouselExampleSlidesOnly" class="carousel slide" data-ride="carousel">
|
||||||
<div class="carousel-inner" role="listbox">
|
<div class="carousel-inner">
|
||||||
<div class="carousel-item active">
|
<div class="carousel-item active">
|
||||||
<img class="d-block w-100" data-src="holder.js/800x400?auto=yes&bg=777&fg=555&text=First slide" alt="First slide">
|
<img class="d-block w-100" data-src="holder.js/800x400?auto=yes&bg=777&fg=555&text=First slide" alt="First slide">
|
||||||
</div>
|
</div>
|
||||||
@@ -48,7 +48,7 @@ Adding in the previous and next controls:
|
|||||||
|
|
||||||
{% example html %}
|
{% example html %}
|
||||||
<div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
|
<div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
|
||||||
<div class="carousel-inner" role="listbox">
|
<div class="carousel-inner">
|
||||||
<div class="carousel-item active">
|
<div class="carousel-item active">
|
||||||
<img class="d-block w-100" data-src="holder.js/800x400?auto=yes&bg=777&fg=555&text=First slide" alt="First slide">
|
<img class="d-block w-100" data-src="holder.js/800x400?auto=yes&bg=777&fg=555&text=First slide" alt="First slide">
|
||||||
</div>
|
</div>
|
||||||
@@ -81,7 +81,7 @@ You can also add the indicators to the carousel, alongside the controls, too.
|
|||||||
<li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
|
<li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
|
||||||
<li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
|
<li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
|
||||||
</ol>
|
</ol>
|
||||||
<div class="carousel-inner" role="listbox">
|
<div class="carousel-inner">
|
||||||
<div class="carousel-item active">
|
<div class="carousel-item active">
|
||||||
<img class="d-block w-100" data-src="holder.js/800x400?auto=yes&bg=777&fg=555&text=First slide" alt="First slide">
|
<img class="d-block w-100" data-src="holder.js/800x400?auto=yes&bg=777&fg=555&text=First slide" alt="First slide">
|
||||||
</div>
|
</div>
|
||||||
@@ -120,7 +120,7 @@ Add captions to your slides easily with the `.carousel-caption` element within a
|
|||||||
<li data-target="#carouselExampleCaptions" data-slide-to="1"></li>
|
<li data-target="#carouselExampleCaptions" data-slide-to="1"></li>
|
||||||
<li data-target="#carouselExampleCaptions" data-slide-to="2"></li>
|
<li data-target="#carouselExampleCaptions" data-slide-to="2"></li>
|
||||||
</ol>
|
</ol>
|
||||||
<div class="carousel-inner" role="listbox">
|
<div class="carousel-inner">
|
||||||
<div class="carousel-item active">
|
<div class="carousel-item active">
|
||||||
<img class="d-block w-100" data-src="holder.js/800x400?auto=yes&bg=777&fg=555&text=First slide" alt="First slide">
|
<img class="d-block w-100" data-src="holder.js/800x400?auto=yes&bg=777&fg=555&text=First slide" alt="First slide">
|
||||||
<div class="carousel-caption d-none d-md-block">
|
<div class="carousel-caption d-none d-md-block">
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ You can also create accordions with custom markup. Add the `data-children` attri
|
|||||||
|
|
||||||
## Accessibility
|
## Accessibility
|
||||||
|
|
||||||
Be sure to add `aria-expanded` to the control element. This attribute explicitly defines the current state of the collapsible element to screen readers and similar assistive technologies. If the collapsible element is closed by default, it should have a value of `aria-expanded="false"`. If you've set the collapsible element to be open by default using the `show` class, set `aria-expanded="true"` on the control instead. The plugin will automatically toggle this attribute based on whether or not the collapsible element has been opened or closed.
|
Be sure to add `aria-expanded` to the control element. This attribute explicitly conveys the current state of the collapsible element tied to the control to screen readers and similar assistive technologies. If the collapsible element is closed by default, the attribute on the control element should have a value of `aria-expanded="false"`. If you've set the collapsible element to be open by default using the `show` class, set `aria-expanded="true"` on the control instead. The plugin will automatically toggle this attribute on the control based on whether or not the collapsible element has been opened or closed (via JavaScript, or because the user triggered another control element also tied to the same collapsbile element).
|
||||||
|
|
||||||
Additionally, if your control element is targeting a single collapsible element – i.e. the `data-target` attribute is pointing to an `id` selector – you may add an additional `aria-controls` attribute to the control element, containing the `id` of the collapsible element. Modern screen readers and similar assistive technologies make use of this attribute to provide users with additional shortcuts to navigate directly to the collapsible element itself.
|
Additionally, if your control element is targeting a single collapsible element – i.e. the `data-target` attribute is pointing to an `id` selector – you may add an additional `aria-controls` attribute to the control element, containing the `id` of the collapsible element. Modern screen readers and similar assistive technologies make use of this attribute to provide users with additional shortcuts to navigate directly to the collapsible element itself.
|
||||||
|
|
||||||
|
|||||||
@@ -480,7 +480,9 @@ Add `.disabled` to items in the dropdown to **style them as disabled**.
|
|||||||
|
|
||||||
Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the `.show` class on the parent list item.
|
Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the `.show` class on the parent list item.
|
||||||
|
|
||||||
On mobile devices, opening a dropdown adds a `.dropdown-backdrop` as a tap area for closing dropdown menus when tapping outside the menu, a requirement for proper iOS support. **This means that switching from an open dropdown menu to a different dropdown menu requires an extra tap on mobile.**
|
{% callout info %}
|
||||||
|
On touch-enabled devices, opening a dropdown adds empty (`$.noop`) `mouseover` handlers to the immediate children of the `<body>` element. This admittedly ugly hack is necessary to work around a [quirk in iOS' event delegation](https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html), which would otherwise prevent a tap anywhere outside of the dropdown from triggering the code that closes the dropdown. Once the dropdown is closed, these additional empty `mouseover` handlers are removed.
|
||||||
|
{% endcallout %}
|
||||||
|
|
||||||
Note: The `data-toggle="dropdown"` attribute is relied on for closing dropdown menus at an application level, so it's a good idea to always use it.
|
Note: The `data-toggle="dropdown"` attribute is relied on for closing dropdown menus at an application level, so it's a good idea to always use it.
|
||||||
|
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ Place one add-on or button on either side of an input. You may also place one on
|
|||||||
{% example html %}
|
{% example html %}
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<span class="input-group-addon" id="basic-addon1">@</span>
|
<span class="input-group-addon" id="basic-addon1">@</span>
|
||||||
<input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
|
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" class="form-control" placeholder="Recipient's username" aria-describedby="basic-addon2">
|
<input type="text" class="form-control" placeholder="Recipient's username" aria-label="Recipient's username" aria-describedby="basic-addon2">
|
||||||
<span class="input-group-addon" id="basic-addon2">@example.com</span>
|
<span class="input-group-addon" id="basic-addon2">@example.com</span>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
@@ -53,12 +53,12 @@ Add the relative form sizing classes to the `.input-group` itself and contents w
|
|||||||
{% example html %}
|
{% example html %}
|
||||||
<div class="input-group input-group-lg">
|
<div class="input-group input-group-lg">
|
||||||
<span class="input-group-addon" id="sizing-addon1">@</span>
|
<span class="input-group-addon" id="sizing-addon1">@</span>
|
||||||
<input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon1">
|
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="sizing-addon1">
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<span class="input-group-addon" id="sizing-addon2">@</span>
|
<span class="input-group-addon" id="sizing-addon2">@</span>
|
||||||
<input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon2">
|
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="sizing-addon2">
|
||||||
</div>
|
</div>
|
||||||
{% endexample %}
|
{% endexample %}
|
||||||
|
|
||||||
@@ -124,12 +124,12 @@ Buttons in input groups must wrapped in a `.input-group-btn` for proper alignmen
|
|||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button class="btn btn-secondary" type="button">Go!</button>
|
<button class="btn btn-secondary" type="button">Go!</button>
|
||||||
</span>
|
</span>
|
||||||
<input type="text" class="form-control" placeholder="Search for...">
|
<input type="text" class="form-control" placeholder="Search for..." aria-label="Search for...">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" class="form-control" placeholder="Search for...">
|
<input type="text" class="form-control" placeholder="Search for..." aria-label="Search for...>
|
||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button class="btn btn-secondary" type="button">Go!</button>
|
<button class="btn btn-secondary" type="button">Go!</button>
|
||||||
</span>
|
</span>
|
||||||
@@ -143,7 +143,7 @@ Buttons in input groups must wrapped in a `.input-group-btn` for proper alignmen
|
|||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button class="btn btn-secondary" type="button">Hate it</button>
|
<button class="btn btn-secondary" type="button">Hate it</button>
|
||||||
</span>
|
</span>
|
||||||
<input type="text" class="form-control" placeholder="Product name">
|
<input type="text" class="form-control" placeholder="Product name" aria-label="Product name">
|
||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button class="btn btn-secondary" type="button">Love it</button>
|
<button class="btn btn-secondary" type="button">Love it</button>
|
||||||
</span>
|
</span>
|
||||||
@@ -240,4 +240,4 @@ Buttons in input groups must wrapped in a `.input-group-btn` for proper alignmen
|
|||||||
|
|
||||||
Screen readers will have trouble with your forms if you don't include a label for every input. For these input groups, ensure that any additional label or functionality is conveyed to assistive technologies.
|
Screen readers will have trouble with your forms if you don't include a label for every input. For these input groups, ensure that any additional label or functionality is conveyed to assistive technologies.
|
||||||
|
|
||||||
The exact technique to be used (`<label>` elements hidden using the `.sr-only` class, or use of the `aria-label`, `aria-labelledby`, `aria-describedby`, `title` or `placeholder` attribute) and what additional information will need to be conveyed will vary depending on the exact type of interface widget you're implementing. The examples in this section provide a few suggested, case-specific approaches.
|
The exact technique to be used (`<label>` elements hidden using the `.sr-only` class, or use of the `aria-label` and `aria-labelledby` attributes, possibly in combination with `aria-describedby`) and what additional information will need to be conveyed will vary depending on the exact type of interface widget you're implementing. The examples in this section provide a few suggested, case-specific approaches.
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ Here's an example of all the sub-components included in a responsive light-theme
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline my-2 my-lg-0">
|
<form class="form-inline my-2 my-lg-0">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@@ -192,7 +192,7 @@ Place various form controls and components within a navbar with `.form-inline`.
|
|||||||
{% example html %}
|
{% example html %}
|
||||||
<nav class="navbar navbar-light bg-faded">
|
<nav class="navbar navbar-light bg-faded">
|
||||||
<form class="form-inline">
|
<form class="form-inline">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -204,7 +204,7 @@ Align the contents of your inline forms with utilities as needed.
|
|||||||
<nav class="navbar navbar-light bg-faded justify-content-between">
|
<nav class="navbar navbar-light bg-faded justify-content-between">
|
||||||
<a class="navbar-brand">Navbar</a>
|
<a class="navbar-brand">Navbar</a>
|
||||||
<form class="form-inline">
|
<form class="form-inline">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -217,7 +217,7 @@ Input groups work, too:
|
|||||||
<form class="form-inline">
|
<form class="form-inline">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<span class="input-group-addon" id="basic-addon1">@</span>
|
<span class="input-group-addon" id="basic-addon1">@</span>
|
||||||
<input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
|
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -300,7 +300,7 @@ Theming the navbar has never been easier thanks to the combination of theming cl
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline">
|
<form class="form-inline">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-info my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-info my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@@ -328,7 +328,7 @@ Theming the navbar has never been easier thanks to the combination of theming cl
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline">
|
<form class="form-inline">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-secondary my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-secondary my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@@ -356,7 +356,7 @@ Theming the navbar has never been easier thanks to the combination of theming cl
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline">
|
<form class="form-inline">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-primary my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-primary my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@@ -458,7 +458,7 @@ With no `.navbar-brand` shown in lowest breakpoint:
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline my-2 my-lg-0">
|
<form class="form-inline my-2 my-lg-0">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@@ -516,7 +516,7 @@ With a toggler on the left and brand name on the right:
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline my-2 my-lg-0">
|
<form class="form-inline my-2 my-lg-0">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -295,7 +295,7 @@ Add dropdown menus with a little extra HTML and the [dropdowns JavaScript plugin
|
|||||||
|
|
||||||
Use the tab JavaScript plugin—include it individually or through the compiled `bootstrap.js` file—to extend our navigational tabs and pills to create tabbable panes of local content, even via dropdown menus.
|
Use the tab JavaScript plugin—include it individually or through the compiled `bootstrap.js` file—to extend our navigational tabs and pills to create tabbable panes of local content, even via dropdown menus.
|
||||||
|
|
||||||
<div class="bd-example bd-example-tabs" role="tabpanel">
|
<div class="bd-example bd-example-tabs">
|
||||||
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-expanded="true">Home</a>
|
<a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-expanded="true">Home</a>
|
||||||
@@ -357,7 +357,7 @@ Use the tab JavaScript plugin—include it individually or through the compiled
|
|||||||
|
|
||||||
To help fit your needs, this works with `<ul>`-based markup, as shown above, as well as `<nav>`-based markup shown below.
|
To help fit your needs, this works with `<ul>`-based markup, as shown above, as well as `<nav>`-based markup shown below.
|
||||||
|
|
||||||
<div class="bd-example bd-example-tabs" role="tabpanel">
|
<div class="bd-example bd-example-tabs">
|
||||||
<nav class="nav nav-tabs" id="nav-tab" role="tablist">
|
<nav class="nav nav-tabs" id="nav-tab" role="tablist">
|
||||||
<a class="nav-item nav-link active" id="nav-home-tab" data-toggle="tab" href="#nav-home" role="tab" aria-controls="home" aria-expanded="true">Home</a>
|
<a class="nav-item nav-link active" id="nav-home-tab" data-toggle="tab" href="#nav-home" role="tab" aria-controls="home" aria-expanded="true">Home</a>
|
||||||
<a class="nav-item nav-link" id="nav-profile-tab" data-toggle="tab" href="#nav-profile" role="tab" aria-controls="profile">Profile</a>
|
<a class="nav-item nav-link" id="nav-profile-tab" data-toggle="tab" href="#nav-profile" role="tab" aria-controls="profile">Profile</a>
|
||||||
@@ -411,7 +411,7 @@ To help fit your needs, this works with `<ul>`-based markup, as shown above, as
|
|||||||
|
|
||||||
The tabs plugin also works with pills.
|
The tabs plugin also works with pills.
|
||||||
|
|
||||||
<div class="bd-example bd-example-tabs" role="tabpanel">
|
<div class="bd-example bd-example-tabs">
|
||||||
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
|
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link active" id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-expanded="true">Home</a>
|
<a class="nav-link active" id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-expanded="true">Home</a>
|
||||||
@@ -469,7 +469,7 @@ The tabs plugin also works with pills.
|
|||||||
|
|
||||||
And with vertical pills.
|
And with vertical pills.
|
||||||
|
|
||||||
<div class="bd-example bd-example-tabs" role="tabpanel">
|
<div class="bd-example bd-example-tabs">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-3">
|
<div class="col-3">
|
||||||
<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist">
|
<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist">
|
||||||
@@ -517,7 +517,6 @@ And with vertical pills.
|
|||||||
|
|
||||||
You can activate a tab or pill navigation without writing any JavaScript by simply specifying `data-toggle="tab"` or `data-toggle="pill"` on an element. Use these data attributes on `.nav-tabs` or `.nav-pills`.
|
You can activate a tab or pill navigation without writing any JavaScript by simply specifying `data-toggle="tab"` or `data-toggle="pill"` on an element. Use these data attributes on `.nav-tabs` or `.nav-pills`.
|
||||||
|
|
||||||
<div role="tabpanel">
|
|
||||||
{% highlight html %}
|
{% highlight html %}
|
||||||
<!-- Nav tabs -->
|
<!-- Nav tabs -->
|
||||||
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
||||||
@@ -543,7 +542,6 @@ You can activate a tab or pill navigation without writing any JavaScript by simp
|
|||||||
<div class="tab-pane" id="settings" role="tabpanel">...</div>
|
<div class="tab-pane" id="settings" role="tabpanel">...</div>
|
||||||
</div>
|
</div>
|
||||||
{% endhighlight %}
|
{% endhighlight %}
|
||||||
</div>
|
|
||||||
|
|
||||||
### Via JavaScript
|
### Via JavaScript
|
||||||
|
|
||||||
|
|||||||
Vendored
-5
@@ -256,11 +256,6 @@ input[type="checkbox"] {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="radio"]:disabled,
|
|
||||||
input[type="checkbox"]:disabled {
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="date"],
|
input[type="date"],
|
||||||
input[type="time"],
|
input[type="time"],
|
||||||
input[type="datetime-local"],
|
input[type="datetime-local"],
|
||||||
|
|||||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
|||||||
html{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0275d8;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}/*# sourceMappingURL=bootstrap-reboot.min.css.map */
|
html{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0275d8;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}/*# sourceMappingURL=bootstrap-reboot.min.css.map */
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
{"version":3,"sources":["../../scss/_reboot.scss","dist/css/bootstrap-reboot.css","bootstrap-reboot.css","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAoBA,KACE,mBAAA,WAAA,WAAA,WACA,YAAA,WACA,YAAA,KACA,yBAAA,KACA,qBAAA,KACA,mBAAA,UACA,4BAAA,YAGF,ECjBA,QADA,SDqBE,mBAAA,QAAA,WAAA,QAKA,cAAgB,MAAA,aASlB,KACE,OAAA,EACA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KExBF,sBFiCE,QAAA,YASF,GACE,mBAAA,YAAA,WAAA,YACA,OAAA,EACA,SAAA,QAYF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAOF,EACE,WAAA,EACA,cAAA,KC5CF,0BDsDA,YAEE,gBAAA,UACA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QClDF,GDqDA,GCtDA,GDyDE,WAAA,EACA,cAAA,KAGF,MCrDA,MACA,MAFA,MD0DE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,IACE,WAAA,OAGF,ECtDA,ODwDE,YAAA,OAGF,MACE,UAAA,IAQF,IC3DA,ID6DE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YACA,6BAAA,QGhLE,QHmLA,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KGrLE,oCAAA,oCHwLA,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,EC7DJ,KACA,IDqEA,ICpEA,KDwEE,YAAA,SAAA,CAAA,UACA,UAAA,IAGF,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,eACE,SAAA,OC/EF,cD6FA,EC/FA,KACA,OAEA,MACA,MACA,OACA,QACA,SDiGE,iBAAA,aAAA,aAAA,aAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAEE,WAAA,KAQF,MAEE,QAAA,aACA,cAAA,MAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBC3GF,OD8GA,MC5GA,SADA,OAEA,SDgHE,OAAA,EACA,YAAA,QACA,UAAA,QACA,YAAA,QAGF,OC9GA,MDgHE,SAAA,QAGF,OC9GA,ODgHE,eAAA,KC1GF,aACA,cD+GA,OCjHA,mBDqHE,mBAAA,OC9GF,gCACA,+BACA,gCDgHA,yBAIE,QAAA,EACA,aAAA,KC/GF,qBDkHA,kBAEE,mBAAA,WAAA,WAAA,WACA,QAAA,EC9GF,8BD2GA,2BASI,OAAA,YAKJ,iBCnHA,2BACA,kBAFA,iBD6HE,mBAAA,QAGF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,MACA,UAAA,OACA,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SErIF,yCDMA,yCDqIE,OAAA,KEtIF,cF8IE,eAAA,KACA,mBAAA,KE1IF,4CDMA,yCD6IE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACE,QAAA,aAGF,QACE,QAAA,UAGF,SACE,QAAA,KEvJF,SF6JE,QAAA"}
|
{"version":3,"sources":["../../scss/_reboot.scss","dist/css/bootstrap-reboot.css","bootstrap-reboot.css","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAoBA,KACE,mBAAA,WAAA,WAAA,WACA,YAAA,WACA,YAAA,KACA,yBAAA,KACA,qBAAA,KACA,mBAAA,UACA,4BAAA,YAGF,ECjBA,QADA,SDqBE,mBAAA,QAAA,WAAA,QAKA,cAAgB,MAAA,aASlB,KACE,OAAA,EACA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KExBF,sBFiCE,QAAA,YASF,GACE,mBAAA,YAAA,WAAA,YACA,OAAA,EACA,SAAA,QAYF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAOF,EACE,WAAA,EACA,cAAA,KC5CF,0BDsDA,YAEE,gBAAA,UACA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QClDF,GDqDA,GCtDA,GDyDE,WAAA,EACA,cAAA,KAGF,MCrDA,MACA,MAFA,MD0DE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,IACE,WAAA,OAGF,ECtDA,ODwDE,YAAA,OAGF,MACE,UAAA,IAQF,IC3DA,ID6DE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YACA,6BAAA,QGhLE,QHmLA,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KGrLE,oCAAA,oCHwLA,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,EC7DJ,KACA,IDqEA,ICpEA,KDwEE,YAAA,SAAA,CAAA,UACA,UAAA,IAGF,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,eACE,SAAA,OC/EF,cD6FA,EC/FA,KACA,OAEA,MACA,MACA,OACA,QACA,SDiGE,iBAAA,aAAA,aAAA,aAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAEE,WAAA,KAQF,MAEE,QAAA,aACA,cAAA,MAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBC3GF,OD8GA,MC5GA,SADA,OAEA,SDgHE,OAAA,EACA,YAAA,QACA,UAAA,QACA,YAAA,QAGF,OC9GA,MDgHE,SAAA,QAGF,OC9GA,ODgHE,eAAA,KC1GF,aACA,cD+GA,OCjHA,mBDqHE,mBAAA,OC9GF,gCACA,+BACA,gCDgHA,yBAIE,QAAA,EACA,aAAA,KC/GF,qBDkHA,kBAEE,mBAAA,WAAA,WAAA,WACA,QAAA,EAIF,iBCjHA,2BACA,kBAFA,iBD2HE,mBAAA,QAGF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,MACA,UAAA,OACA,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SEnIF,yCDMA,yCDmIE,OAAA,KEpIF,cF4IE,eAAA,KACA,mBAAA,KExIF,4CDMA,yCD2IE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACE,QAAA,aAGF,QACE,QAAA,UAGF,SACE,QAAA,KErJF,SF2JE,QAAA"}
|
||||||
+64
-92
@@ -329,11 +329,6 @@ input[type="checkbox"] {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="radio"]:disabled,
|
|
||||||
input[type="checkbox"]:disabled {
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="date"],
|
input[type="date"],
|
||||||
input[type="time"],
|
input[type="time"],
|
||||||
input[type="datetime-local"],
|
input[type="datetime-local"],
|
||||||
@@ -1966,10 +1961,6 @@ pre code {
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-control:disabled {
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
|
|
||||||
select.form-control:not([size]):not([multiple]) {
|
select.form-control:not([size]):not([multiple]) {
|
||||||
height: calc(2.25rem + 2px);
|
height: calc(2.25rem + 2px);
|
||||||
}
|
}
|
||||||
@@ -2074,7 +2065,6 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
|
|||||||
|
|
||||||
.form-check.disabled .form-check-label {
|
.form-check.disabled .form-check-label {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-check-label {
|
.form-check-label {
|
||||||
@@ -2344,7 +2334,6 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn.disabled, .btn:disabled {
|
.btn.disabled, .btn:disabled {
|
||||||
cursor: not-allowed;
|
|
||||||
opacity: .65;
|
opacity: .65;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2831,6 +2820,10 @@ tbody.collapse.show {
|
|||||||
border-left: 0.3em solid transparent;
|
border-left: 0.3em solid transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropdown-toggle:empty::after {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.dropup .dropdown-toggle::after {
|
.dropup .dropdown-toggle::after {
|
||||||
border-top: 0;
|
border-top: 0;
|
||||||
border-bottom: 0.3em solid;
|
border-bottom: 0.3em solid;
|
||||||
@@ -2867,7 +2860,7 @@ tbody.collapse.show {
|
|||||||
.dropdown-item {
|
.dropdown-item {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 3px 1.5rem;
|
padding: 0.25rem 1.5rem;
|
||||||
clear: both;
|
clear: both;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
color: #292b2c;
|
color: #292b2c;
|
||||||
@@ -2891,7 +2884,6 @@ tbody.collapse.show {
|
|||||||
|
|
||||||
.dropdown-item.disabled, .dropdown-item:disabled {
|
.dropdown-item.disabled, .dropdown-item:disabled {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
cursor: not-allowed;
|
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2922,15 +2914,6 @@ tbody.collapse.show {
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-backdrop {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 990;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropup .dropdown-menu {
|
.dropup .dropdown-menu {
|
||||||
top: auto;
|
top: auto;
|
||||||
bottom: 100%;
|
bottom: 100%;
|
||||||
@@ -3036,11 +3019,6 @@ tbody.collapse.show {
|
|||||||
border-bottom-left-radius: 0;
|
border-bottom-left-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-group .dropdown-toggle:active,
|
|
||||||
.btn-group.open .dropdown-toggle {
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn + .dropdown-toggle-split {
|
.btn + .dropdown-toggle-split {
|
||||||
padding-right: 0.75rem;
|
padding-right: 0.75rem;
|
||||||
padding-left: 0.75rem;
|
padding-left: 0.75rem;
|
||||||
@@ -3313,13 +3291,11 @@ tbody.collapse.show {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.custom-control-input:disabled ~ .custom-control-indicator {
|
.custom-control-input:disabled ~ .custom-control-indicator {
|
||||||
cursor: not-allowed;
|
|
||||||
background-color: #eceeef;
|
background-color: #eceeef;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-control-input:disabled ~ .custom-control-description {
|
.custom-control-input:disabled ~ .custom-control-description {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-control-indicator {
|
.custom-control-indicator {
|
||||||
@@ -3412,7 +3388,6 @@ tbody.collapse.show {
|
|||||||
|
|
||||||
.custom-select:disabled {
|
.custom-select:disabled {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
cursor: not-allowed;
|
|
||||||
background-color: #eceeef;
|
background-color: #eceeef;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3510,22 +3485,16 @@ tbody.collapse.show {
|
|||||||
|
|
||||||
.nav-link.disabled {
|
.nav-link.disabled {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-tabs {
|
.nav-tabs {
|
||||||
border-bottom: 1px solid #ddd;
|
border-bottom: 1px solid #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-tabs .nav-item,
|
.nav-tabs .nav-item {
|
||||||
.nav-tabs .nav-link {
|
|
||||||
margin-bottom: -1px;
|
margin-bottom: -1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-tabs .nav-item .nav-link {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-tabs .nav-link {
|
.nav-tabs .nav-link {
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
border-top-left-radius: 0.25rem;
|
border-top-left-radius: 0.25rem;
|
||||||
@@ -4023,9 +3992,9 @@ tbody.collapse.show {
|
|||||||
color: rgba(0, 0, 0, 0.3);
|
color: rgba(0, 0, 0, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-light .navbar-nav .open > .nav-link,
|
.navbar-light .navbar-nav .show > .nav-link,
|
||||||
.navbar-light .navbar-nav .active > .nav-link,
|
.navbar-light .navbar-nav .active > .nav-link,
|
||||||
.navbar-light .navbar-nav .nav-link.open,
|
.navbar-light .navbar-nav .nav-link.show,
|
||||||
.navbar-light .navbar-nav .nav-link.active {
|
.navbar-light .navbar-nav .nav-link.active {
|
||||||
color: rgba(0, 0, 0, 0.9);
|
color: rgba(0, 0, 0, 0.9);
|
||||||
}
|
}
|
||||||
@@ -4063,9 +4032,9 @@ tbody.collapse.show {
|
|||||||
color: rgba(255, 255, 255, 0.25);
|
color: rgba(255, 255, 255, 0.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-inverse .navbar-nav .open > .nav-link,
|
.navbar-inverse .navbar-nav .show > .nav-link,
|
||||||
.navbar-inverse .navbar-nav .active > .nav-link,
|
.navbar-inverse .navbar-nav .active > .nav-link,
|
||||||
.navbar-inverse .navbar-nav .nav-link.open,
|
.navbar-inverse .navbar-nav .nav-link.show,
|
||||||
.navbar-inverse .navbar-nav .nav-link.active {
|
.navbar-inverse .navbar-nav .nav-link.active {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
@@ -4226,31 +4195,67 @@ tbody.collapse.show {
|
|||||||
border-color: #0275d8;
|
border-color: #0275d8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-outline-primary .card-header,
|
||||||
|
.card-outline-primary .card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #0275d8;
|
||||||
|
}
|
||||||
|
|
||||||
.card-outline-secondary {
|
.card-outline-secondary {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-color: #ccc;
|
border-color: #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-outline-secondary .card-header,
|
||||||
|
.card-outline-secondary .card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
.card-outline-info {
|
.card-outline-info {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-color: #5bc0de;
|
border-color: #5bc0de;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-outline-info .card-header,
|
||||||
|
.card-outline-info .card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #5bc0de;
|
||||||
|
}
|
||||||
|
|
||||||
.card-outline-success {
|
.card-outline-success {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-color: #5cb85c;
|
border-color: #5cb85c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-outline-success .card-header,
|
||||||
|
.card-outline-success .card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #5cb85c;
|
||||||
|
}
|
||||||
|
|
||||||
.card-outline-warning {
|
.card-outline-warning {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-color: #f0ad4e;
|
border-color: #f0ad4e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-outline-warning .card-header,
|
||||||
|
.card-outline-warning .card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #f0ad4e;
|
||||||
|
}
|
||||||
|
|
||||||
.card-outline-danger {
|
.card-outline-danger {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-color: #d9534f;
|
border-color: #d9534f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-outline-danger .card-header,
|
||||||
|
.card-outline-danger .card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #d9534f;
|
||||||
|
}
|
||||||
|
|
||||||
.card-inverse {
|
.card-inverse {
|
||||||
color: rgba(255, 255, 255, 0.65);
|
color: rgba(255, 255, 255, 0.65);
|
||||||
}
|
}
|
||||||
@@ -4395,6 +4400,10 @@ tbody.collapse.show {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-columns .card {
|
||||||
|
margin-bottom: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
@media (min-width: 576px) {
|
@media (min-width: 576px) {
|
||||||
.card-columns {
|
.card-columns {
|
||||||
-webkit-column-count: 3;
|
-webkit-column-count: 3;
|
||||||
@@ -4407,7 +4416,6 @@ tbody.collapse.show {
|
|||||||
.card-columns .card {
|
.card-columns .card {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-bottom: 0.75rem;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4480,7 +4488,6 @@ tbody.collapse.show {
|
|||||||
.page-item.disabled .page-link {
|
.page-item.disabled .page-link {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
cursor: not-allowed;
|
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border-color: #ddd;
|
border-color: #ddd;
|
||||||
}
|
}
|
||||||
@@ -4627,10 +4634,6 @@ a.badge:focus, a.badge:hover {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.jumbotron-hr {
|
|
||||||
border-top-color: #d0d5d8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.jumbotron-fluid {
|
.jumbotron-fluid {
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
@@ -4761,6 +4764,9 @@ a.badge:focus, a.badge:hover {
|
|||||||
line-height: 1rem;
|
line-height: 1rem;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: #0275d8;
|
background-color: #0275d8;
|
||||||
|
-webkit-transition: width 0.6s ease;
|
||||||
|
-o-transition: width 0.6s ease;
|
||||||
|
transition: width 0.6s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.progress-bar-striped {
|
.progress-bar-striped {
|
||||||
@@ -4852,7 +4858,6 @@ a.badge:focus, a.badge:hover {
|
|||||||
|
|
||||||
.list-group-item.disabled, .list-group-item:disabled {
|
.list-group-item.disabled, .list-group-item:disabled {
|
||||||
color: #636c72;
|
color: #636c72;
|
||||||
cursor: not-allowed;
|
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5391,7 +5396,7 @@ button.close {
|
|||||||
.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {
|
.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {
|
||||||
top: -10px;
|
top: -10px;
|
||||||
margin-left: -10px;
|
margin-left: -10px;
|
||||||
border-bottom-color: #f7f7f7;
|
border-bottom-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {
|
.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {
|
||||||
@@ -5479,36 +5484,21 @@ button.close {
|
|||||||
.carousel-item {
|
.carousel-item {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: none;
|
display: none;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-webkit-align-items: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
-webkit-transition: -webkit-transform 0.6s ease;
|
||||||
|
transition: -webkit-transform 0.6s ease;
|
||||||
@media (-webkit-transform-3d) {
|
-o-transition: -o-transform 0.6s ease;
|
||||||
.carousel-item {
|
transition: transform 0.6s ease;
|
||||||
-webkit-transition: -webkit-transform 0.6s ease-in-out;
|
transition: transform 0.6s ease, -webkit-transform 0.6s ease, -o-transform 0.6s ease;
|
||||||
transition: -webkit-transform 0.6s ease-in-out;
|
|
||||||
-o-transition: -o-transform 0.6s ease-in-out;
|
|
||||||
transition: transform 0.6s ease-in-out;
|
|
||||||
transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out;
|
|
||||||
-webkit-backface-visibility: hidden;
|
-webkit-backface-visibility: hidden;
|
||||||
backface-visibility: hidden;
|
backface-visibility: hidden;
|
||||||
-webkit-perspective: 1000px;
|
-webkit-perspective: 1000px;
|
||||||
perspective: 1000px;
|
perspective: 1000px;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@supports ((-webkit-transform: translate3d(0, 0, 0)) or (transform: translate3d(0, 0, 0))) {
|
|
||||||
.carousel-item {
|
|
||||||
-webkit-transition: -webkit-transform 0.6s ease-in-out;
|
|
||||||
transition: -webkit-transform 0.6s ease-in-out;
|
|
||||||
-o-transition: -o-transform 0.6s ease-in-out;
|
|
||||||
transition: transform 0.6s ease-in-out;
|
|
||||||
transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out;
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
backface-visibility: hidden;
|
|
||||||
-webkit-perspective: 1000px;
|
|
||||||
perspective: 1000px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.carousel-item.active,
|
.carousel-item.active,
|
||||||
.carousel-item-next,
|
.carousel-item-next,
|
||||||
@@ -5525,41 +5515,23 @@ button.close {
|
|||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (-webkit-transform-3d) {
|
|
||||||
.carousel-item-next.carousel-item-left,
|
.carousel-item-next.carousel-item-left,
|
||||||
.carousel-item-prev.carousel-item-right {
|
.carousel-item-prev.carousel-item-right {
|
||||||
-webkit-transform: translate3d(0, 0, 0);
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
transform: translate3d(0, 0, 0);
|
transform: translate3d(0, 0, 0);
|
||||||
}
|
}
|
||||||
.carousel-item-next,
|
|
||||||
.active.carousel-item-right {
|
|
||||||
-webkit-transform: translate3d(100%, 0, 0);
|
|
||||||
transform: translate3d(100%, 0, 0);
|
|
||||||
}
|
|
||||||
.carousel-item-prev,
|
|
||||||
.active.carousel-item-left {
|
|
||||||
-webkit-transform: translate3d(-100%, 0, 0);
|
|
||||||
transform: translate3d(-100%, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@supports ((-webkit-transform: translate3d(0, 0, 0)) or (transform: translate3d(0, 0, 0))) {
|
|
||||||
.carousel-item-next.carousel-item-left,
|
|
||||||
.carousel-item-prev.carousel-item-right {
|
|
||||||
-webkit-transform: translate3d(0, 0, 0);
|
|
||||||
transform: translate3d(0, 0, 0);
|
|
||||||
}
|
|
||||||
.carousel-item-next,
|
.carousel-item-next,
|
||||||
.active.carousel-item-right {
|
.active.carousel-item-right {
|
||||||
-webkit-transform: translate3d(100%, 0, 0);
|
-webkit-transform: translate3d(100%, 0, 0);
|
||||||
transform: translate3d(100%, 0, 0);
|
transform: translate3d(100%, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.carousel-item-prev,
|
.carousel-item-prev,
|
||||||
.active.carousel-item-left {
|
.active.carousel-item-left {
|
||||||
-webkit-transform: translate3d(-100%, 0, 0);
|
-webkit-transform: translate3d(-100%, 0, 0);
|
||||||
transform: translate3d(-100%, 0, 0);
|
transform: translate3d(-100%, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.carousel-control-prev,
|
.carousel-control-prev,
|
||||||
.carousel-control-next {
|
.carousel-control-next {
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+25
-28
@@ -420,6 +420,7 @@ var Button = function ($) {
|
|||||||
|
|
||||||
Button.prototype.toggle = function toggle() {
|
Button.prototype.toggle = function toggle() {
|
||||||
var triggerChangeEvent = true;
|
var triggerChangeEvent = true;
|
||||||
|
var addAriaPressed = true;
|
||||||
var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
|
var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
|
||||||
|
|
||||||
if (rootElement) {
|
if (rootElement) {
|
||||||
@@ -444,10 +445,13 @@ var Button = function ($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input.focus();
|
input.focus();
|
||||||
|
addAriaPressed = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (addAriaPressed) {
|
||||||
this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
|
this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
|
||||||
|
}
|
||||||
|
|
||||||
if (triggerChangeEvent) {
|
if (triggerChangeEvent) {
|
||||||
$(this._element).toggleClass(ClassName.ACTIVE);
|
$(this._element).toggleClass(ClassName.ACTIVE);
|
||||||
@@ -1154,7 +1158,6 @@ var Collapse = function ($) {
|
|||||||
$(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
|
$(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
|
||||||
|
|
||||||
this._element.style[dimension] = 0;
|
this._element.style[dimension] = 0;
|
||||||
this._element.setAttribute('aria-expanded', true);
|
|
||||||
|
|
||||||
if (this._triggerArray.length) {
|
if (this._triggerArray.length) {
|
||||||
$(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
|
$(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
|
||||||
@@ -1206,8 +1209,6 @@ var Collapse = function ($) {
|
|||||||
|
|
||||||
$(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
|
$(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
|
||||||
|
|
||||||
this._element.setAttribute('aria-expanded', false);
|
|
||||||
|
|
||||||
if (this._triggerArray.length) {
|
if (this._triggerArray.length) {
|
||||||
$(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
|
$(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
|
||||||
}
|
}
|
||||||
@@ -1273,7 +1274,6 @@ var Collapse = function ($) {
|
|||||||
Collapse.prototype._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
|
Collapse.prototype._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
|
||||||
if (element) {
|
if (element) {
|
||||||
var isOpen = $(element).hasClass(ClassName.SHOW);
|
var isOpen = $(element).hasClass(ClassName.SHOW);
|
||||||
element.setAttribute('aria-expanded', isOpen);
|
|
||||||
|
|
||||||
if (triggerArray.length) {
|
if (triggerArray.length) {
|
||||||
$(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
$(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
||||||
@@ -1384,10 +1384,11 @@ var Dropdown = function ($) {
|
|||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
||||||
var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
|
var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
|
||||||
|
var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
|
||||||
var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
|
var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
|
||||||
var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
|
var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
|
||||||
var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
|
var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
|
||||||
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + '|' + ARROW_DOWN_KEYCODE + '|' + ESCAPE_KEYCODE + '|' + SPACE_KEYCODE);
|
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + '|' + ARROW_DOWN_KEYCODE + '|' + ESCAPE_KEYCODE);
|
||||||
|
|
||||||
var Event = {
|
var Event = {
|
||||||
HIDE: 'hide' + EVENT_KEY,
|
HIDE: 'hide' + EVENT_KEY,
|
||||||
@@ -1396,24 +1397,21 @@ var Dropdown = function ($) {
|
|||||||
SHOWN: 'shown' + EVENT_KEY,
|
SHOWN: 'shown' + EVENT_KEY,
|
||||||
CLICK: 'click' + EVENT_KEY,
|
CLICK: 'click' + EVENT_KEY,
|
||||||
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
|
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
|
||||||
FOCUSIN_DATA_API: 'focusin' + EVENT_KEY + DATA_API_KEY,
|
KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY,
|
||||||
KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY
|
KEYUP_DATA_API: 'keyup' + EVENT_KEY + DATA_API_KEY
|
||||||
};
|
};
|
||||||
|
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
BACKDROP: 'dropdown-backdrop',
|
|
||||||
DISABLED: 'disabled',
|
DISABLED: 'disabled',
|
||||||
SHOW: 'show'
|
SHOW: 'show'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
BACKDROP: '.dropdown-backdrop',
|
|
||||||
DATA_TOGGLE: '[data-toggle="dropdown"]',
|
DATA_TOGGLE: '[data-toggle="dropdown"]',
|
||||||
FORM_CHILD: '.dropdown form',
|
FORM_CHILD: '.dropdown form',
|
||||||
ROLE_MENU: '[role="menu"]',
|
MENU: '.dropdown-menu',
|
||||||
ROLE_LISTBOX: '[role="listbox"]',
|
|
||||||
NAVBAR_NAV: '.navbar-nav',
|
NAVBAR_NAV: '.navbar-nav',
|
||||||
VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a'
|
VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1460,14 +1458,12 @@ var Dropdown = function ($) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the backdrop only if the dropdown menu will be opened
|
// if this is a touch-enabled device we add extra
|
||||||
|
// empty mouseover listeners to the body's immediate children;
|
||||||
|
// only needed because of broken event delegation on iOS
|
||||||
|
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
|
||||||
if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
|
if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
|
||||||
|
$('body').children().on('mouseover', '*', $.noop);
|
||||||
// if mobile we use a backdrop because click events don't delegate
|
|
||||||
var dropdown = document.createElement('div');
|
|
||||||
dropdown.className = ClassName.BACKDROP;
|
|
||||||
$(dropdown).insertBefore(this);
|
|
||||||
$(dropdown).on('click', Dropdown._clearMenus);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.focus();
|
this.focus();
|
||||||
@@ -1512,7 +1508,7 @@ var Dropdown = function ($) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Dropdown._clearMenus = function _clearMenus(event) {
|
Dropdown._clearMenus = function _clearMenus(event) {
|
||||||
if (event && event.which === RIGHT_MOUSE_BUTTON_WHICH) {
|
if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1528,7 +1524,7 @@ var Dropdown = function ($) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'focusin') && $.contains(parent, event.target)) {
|
if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1538,10 +1534,10 @@ var Dropdown = function ($) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove backdrop only if the dropdown menu will be hidden
|
// if this is a touch-enabled device we remove the extra
|
||||||
var backdrop = $(parent).find(Selector.BACKDROP)[0];
|
// empty mouseover listeners we added for iOS support
|
||||||
if (backdrop) {
|
if ('ontouchstart' in document.documentElement) {
|
||||||
backdrop.parentNode.removeChild(backdrop);
|
$('body').children().off('mouseover', '*', $.noop);
|
||||||
}
|
}
|
||||||
|
|
||||||
toggles[i].setAttribute('aria-expanded', 'false');
|
toggles[i].setAttribute('aria-expanded', 'false');
|
||||||
@@ -1562,7 +1558,7 @@ var Dropdown = function ($) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
|
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
|
||||||
if (!REGEXP_KEYDOWN.test(event.which) || /input|textarea/i.test(event.target.tagName)) {
|
if (!REGEXP_KEYDOWN.test(event.which) || /button/i.test(event.target.tagName) && event.which === SPACE_KEYCODE || /input|textarea/i.test(event.target.tagName)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1576,7 +1572,7 @@ var Dropdown = function ($) {
|
|||||||
var parent = Dropdown._getParentFromElement(this);
|
var parent = Dropdown._getParentFromElement(this);
|
||||||
var isActive = $(parent).hasClass(ClassName.SHOW);
|
var isActive = $(parent).hasClass(ClassName.SHOW);
|
||||||
|
|
||||||
if (!isActive && event.which !== ESCAPE_KEYCODE || isActive && event.which === ESCAPE_KEYCODE) {
|
if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
|
||||||
|
|
||||||
if (event.which === ESCAPE_KEYCODE) {
|
if (event.which === ESCAPE_KEYCODE) {
|
||||||
var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
|
var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
|
||||||
@@ -1628,7 +1624,7 @@ var Dropdown = function ($) {
|
|||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + ' ' + Event.FOCUSIN_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
|
$(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + ' ' + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1928,6 +1924,7 @@ var Modal = function ($) {
|
|||||||
if (this._isShown && this._config.keyboard) {
|
if (this._isShown && this._config.keyboard) {
|
||||||
$(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
|
$(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
|
||||||
if (event.which === ESCAPE_KEYCODE) {
|
if (event.which === ESCAPE_KEYCODE) {
|
||||||
|
event.preventDefault();
|
||||||
_this13.hide();
|
_this13.hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
@@ -35,7 +35,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline mt-2 mt-md-0">
|
<form class="form-inline mt-2 mt-md-0">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
<li data-target="#myCarousel" data-slide-to="1"></li>
|
<li data-target="#myCarousel" data-slide-to="1"></li>
|
||||||
<li data-target="#myCarousel" data-slide-to="2"></li>
|
<li data-target="#myCarousel" data-slide-to="2"></li>
|
||||||
</ol>
|
</ol>
|
||||||
<div class="carousel-inner" role="listbox">
|
<div class="carousel-inner">
|
||||||
<div class="carousel-item active">
|
<div class="carousel-item active">
|
||||||
<img class="first-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="First slide">
|
<img class="first-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="First slide">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline mt-2 mt-md-0">
|
<form class="form-inline mt-2 mt-md-0">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline my-2 my-lg-0">
|
<form class="form-inline my-2 my-lg-0">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline mt-2 mt-md-0">
|
<form class="form-inline mt-2 mt-md-0">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline mt-2 mt-md-0">
|
<form class="form-inline mt-2 mt-md-0">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline my-2 my-md-0">
|
<form class="form-inline my-2 my-md-0">
|
||||||
<input class="form-control" type="text" placeholder="Search">
|
<input class="form-control" type="text" placeholder="Search" aria-label="Search">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -238,7 +238,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline my-2 my-md-0">
|
<form class="form-inline my-2 my-md-0">
|
||||||
<input class="form-control" type="text" placeholder="Search">
|
<input class="form-control" type="text" placeholder="Search" aria-label="Search">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -300,7 +300,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline my-2 my-md-0">
|
<form class="form-inline my-2 my-md-0">
|
||||||
<input class="form-control" type="text" placeholder="Search">
|
<input class="form-control" type="text" placeholder="Search" aria-label="Search">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline my-2 my-lg-0">
|
<form class="form-inline my-2 my-lg-0">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline my-2 my-lg-0">
|
<form class="form-inline my-2 my-lg-0">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline mt-2 mt-md-0">
|
<form class="form-inline mt-2 mt-md-0">
|
||||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Vendored
+4
@@ -62,6 +62,7 @@ var Button = function ($) {
|
|||||||
|
|
||||||
Button.prototype.toggle = function toggle() {
|
Button.prototype.toggle = function toggle() {
|
||||||
var triggerChangeEvent = true;
|
var triggerChangeEvent = true;
|
||||||
|
var addAriaPressed = true;
|
||||||
var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
|
var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
|
||||||
|
|
||||||
if (rootElement) {
|
if (rootElement) {
|
||||||
@@ -86,10 +87,13 @@ var Button = function ($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input.focus();
|
input.focus();
|
||||||
|
addAriaPressed = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (addAriaPressed) {
|
||||||
this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
|
this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
|
||||||
|
}
|
||||||
|
|
||||||
if (triggerChangeEvent) {
|
if (triggerChangeEvent) {
|
||||||
$(this._element).toggleClass(ClassName.ACTIVE);
|
$(this._element).toggleClass(ClassName.ACTIVE);
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
-4
@@ -150,7 +150,6 @@ var Collapse = function ($) {
|
|||||||
$(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
|
$(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
|
||||||
|
|
||||||
this._element.style[dimension] = 0;
|
this._element.style[dimension] = 0;
|
||||||
this._element.setAttribute('aria-expanded', true);
|
|
||||||
|
|
||||||
if (this._triggerArray.length) {
|
if (this._triggerArray.length) {
|
||||||
$(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
|
$(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
|
||||||
@@ -202,8 +201,6 @@ var Collapse = function ($) {
|
|||||||
|
|
||||||
$(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
|
$(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
|
||||||
|
|
||||||
this._element.setAttribute('aria-expanded', false);
|
|
||||||
|
|
||||||
if (this._triggerArray.length) {
|
if (this._triggerArray.length) {
|
||||||
$(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
|
$(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
|
||||||
}
|
}
|
||||||
@@ -269,7 +266,6 @@ var Collapse = function ($) {
|
|||||||
Collapse.prototype._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
|
Collapse.prototype._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
|
||||||
if (element) {
|
if (element) {
|
||||||
var isOpen = $(element).hasClass(ClassName.SHOW);
|
var isOpen = $(element).hasClass(ClassName.SHOW);
|
||||||
element.setAttribute('aria-expanded', isOpen);
|
|
||||||
|
|
||||||
if (triggerArray.length) {
|
if (triggerArray.length) {
|
||||||
$(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
$(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+20
-24
@@ -25,10 +25,11 @@ var Dropdown = function ($) {
|
|||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
||||||
var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
|
var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
|
||||||
|
var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
|
||||||
var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
|
var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
|
||||||
var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
|
var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
|
||||||
var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
|
var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
|
||||||
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + '|' + ARROW_DOWN_KEYCODE + '|' + ESCAPE_KEYCODE + '|' + SPACE_KEYCODE);
|
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + '|' + ARROW_DOWN_KEYCODE + '|' + ESCAPE_KEYCODE);
|
||||||
|
|
||||||
var Event = {
|
var Event = {
|
||||||
HIDE: 'hide' + EVENT_KEY,
|
HIDE: 'hide' + EVENT_KEY,
|
||||||
@@ -37,24 +38,21 @@ var Dropdown = function ($) {
|
|||||||
SHOWN: 'shown' + EVENT_KEY,
|
SHOWN: 'shown' + EVENT_KEY,
|
||||||
CLICK: 'click' + EVENT_KEY,
|
CLICK: 'click' + EVENT_KEY,
|
||||||
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
|
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
|
||||||
FOCUSIN_DATA_API: 'focusin' + EVENT_KEY + DATA_API_KEY,
|
KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY,
|
||||||
KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY
|
KEYUP_DATA_API: 'keyup' + EVENT_KEY + DATA_API_KEY
|
||||||
};
|
};
|
||||||
|
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
BACKDROP: 'dropdown-backdrop',
|
|
||||||
DISABLED: 'disabled',
|
DISABLED: 'disabled',
|
||||||
SHOW: 'show'
|
SHOW: 'show'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
BACKDROP: '.dropdown-backdrop',
|
|
||||||
DATA_TOGGLE: '[data-toggle="dropdown"]',
|
DATA_TOGGLE: '[data-toggle="dropdown"]',
|
||||||
FORM_CHILD: '.dropdown form',
|
FORM_CHILD: '.dropdown form',
|
||||||
ROLE_MENU: '[role="menu"]',
|
MENU: '.dropdown-menu',
|
||||||
ROLE_LISTBOX: '[role="listbox"]',
|
|
||||||
NAVBAR_NAV: '.navbar-nav',
|
NAVBAR_NAV: '.navbar-nav',
|
||||||
VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a'
|
VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -101,14 +99,12 @@ var Dropdown = function ($) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the backdrop only if the dropdown menu will be opened
|
// if this is a touch-enabled device we add extra
|
||||||
|
// empty mouseover listeners to the body's immediate children;
|
||||||
|
// only needed because of broken event delegation on iOS
|
||||||
|
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
|
||||||
if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
|
if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
|
||||||
|
$('body').children().on('mouseover', '*', $.noop);
|
||||||
// if mobile we use a backdrop because click events don't delegate
|
|
||||||
var dropdown = document.createElement('div');
|
|
||||||
dropdown.className = ClassName.BACKDROP;
|
|
||||||
$(dropdown).insertBefore(this);
|
|
||||||
$(dropdown).on('click', Dropdown._clearMenus);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.focus();
|
this.focus();
|
||||||
@@ -153,7 +149,7 @@ var Dropdown = function ($) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Dropdown._clearMenus = function _clearMenus(event) {
|
Dropdown._clearMenus = function _clearMenus(event) {
|
||||||
if (event && event.which === RIGHT_MOUSE_BUTTON_WHICH) {
|
if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,7 +165,7 @@ var Dropdown = function ($) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'focusin') && $.contains(parent, event.target)) {
|
if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,10 +175,10 @@ var Dropdown = function ($) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove backdrop only if the dropdown menu will be hidden
|
// if this is a touch-enabled device we remove the extra
|
||||||
var backdrop = $(parent).find(Selector.BACKDROP)[0];
|
// empty mouseover listeners we added for iOS support
|
||||||
if (backdrop) {
|
if ('ontouchstart' in document.documentElement) {
|
||||||
backdrop.parentNode.removeChild(backdrop);
|
$('body').children().off('mouseover', '*', $.noop);
|
||||||
}
|
}
|
||||||
|
|
||||||
toggles[i].setAttribute('aria-expanded', 'false');
|
toggles[i].setAttribute('aria-expanded', 'false');
|
||||||
@@ -203,7 +199,7 @@ var Dropdown = function ($) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
|
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
|
||||||
if (!REGEXP_KEYDOWN.test(event.which) || /input|textarea/i.test(event.target.tagName)) {
|
if (!REGEXP_KEYDOWN.test(event.which) || /button/i.test(event.target.tagName) && event.which === SPACE_KEYCODE || /input|textarea/i.test(event.target.tagName)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,7 +213,7 @@ var Dropdown = function ($) {
|
|||||||
var parent = Dropdown._getParentFromElement(this);
|
var parent = Dropdown._getParentFromElement(this);
|
||||||
var isActive = $(parent).hasClass(ClassName.SHOW);
|
var isActive = $(parent).hasClass(ClassName.SHOW);
|
||||||
|
|
||||||
if (!isActive && event.which !== ESCAPE_KEYCODE || isActive && event.which === ESCAPE_KEYCODE) {
|
if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
|
||||||
|
|
||||||
if (event.which === ESCAPE_KEYCODE) {
|
if (event.which === ESCAPE_KEYCODE) {
|
||||||
var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
|
var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
|
||||||
@@ -269,7 +265,7 @@ var Dropdown = function ($) {
|
|||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + ' ' + Event.FOCUSIN_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
|
$(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + ' ' + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
@@ -284,6 +284,7 @@ var Modal = function ($) {
|
|||||||
if (this._isShown && this._config.keyboard) {
|
if (this._isShown && this._config.keyboard) {
|
||||||
$(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
|
$(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
|
||||||
if (event.which === ESCAPE_KEYCODE) {
|
if (event.which === ESCAPE_KEYCODE) {
|
||||||
|
event.preventDefault();
|
||||||
_this5.hide();
|
_this5.hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -66,6 +66,7 @@ const Button = (($) => {
|
|||||||
|
|
||||||
toggle() {
|
toggle() {
|
||||||
let triggerChangeEvent = true
|
let triggerChangeEvent = true
|
||||||
|
let addAriaPressed = true
|
||||||
const rootElement = $(this._element).closest(
|
const rootElement = $(this._element).closest(
|
||||||
Selector.DATA_TOGGLE
|
Selector.DATA_TOGGLE
|
||||||
)[0]
|
)[0]
|
||||||
@@ -94,12 +95,15 @@ const Button = (($) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input.focus()
|
input.focus()
|
||||||
|
addAriaPressed = false
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (addAriaPressed) {
|
||||||
this._element.setAttribute('aria-pressed',
|
this._element.setAttribute('aria-pressed',
|
||||||
!$(this._element).hasClass(ClassName.ACTIVE))
|
!$(this._element).hasClass(ClassName.ACTIVE))
|
||||||
|
}
|
||||||
|
|
||||||
if (triggerChangeEvent) {
|
if (triggerChangeEvent) {
|
||||||
$(this._element).toggleClass(ClassName.ACTIVE)
|
$(this._element).toggleClass(ClassName.ACTIVE)
|
||||||
|
|||||||
@@ -162,7 +162,6 @@ const Collapse = (($) => {
|
|||||||
.addClass(ClassName.COLLAPSING)
|
.addClass(ClassName.COLLAPSING)
|
||||||
|
|
||||||
this._element.style[dimension] = 0
|
this._element.style[dimension] = 0
|
||||||
this._element.setAttribute('aria-expanded', true)
|
|
||||||
|
|
||||||
if (this._triggerArray.length) {
|
if (this._triggerArray.length) {
|
||||||
$(this._triggerArray)
|
$(this._triggerArray)
|
||||||
@@ -223,8 +222,6 @@ const Collapse = (($) => {
|
|||||||
.removeClass(ClassName.COLLAPSE)
|
.removeClass(ClassName.COLLAPSE)
|
||||||
.removeClass(ClassName.SHOW)
|
.removeClass(ClassName.SHOW)
|
||||||
|
|
||||||
this._element.setAttribute('aria-expanded', false)
|
|
||||||
|
|
||||||
if (this._triggerArray.length) {
|
if (this._triggerArray.length) {
|
||||||
$(this._triggerArray)
|
$(this._triggerArray)
|
||||||
.addClass(ClassName.COLLAPSED)
|
.addClass(ClassName.COLLAPSED)
|
||||||
@@ -300,7 +297,6 @@ const Collapse = (($) => {
|
|||||||
_addAriaAndCollapsedClass(element, triggerArray) {
|
_addAriaAndCollapsedClass(element, triggerArray) {
|
||||||
if (element) {
|
if (element) {
|
||||||
const isOpen = $(element).hasClass(ClassName.SHOW)
|
const isOpen = $(element).hasClass(ClassName.SHOW)
|
||||||
element.setAttribute('aria-expanded', isOpen)
|
|
||||||
|
|
||||||
if (triggerArray.length) {
|
if (triggerArray.length) {
|
||||||
$(triggerArray)
|
$(triggerArray)
|
||||||
|
|||||||
+23
-28
@@ -25,10 +25,11 @@ const Dropdown = (($) => {
|
|||||||
const JQUERY_NO_CONFLICT = $.fn[NAME]
|
const JQUERY_NO_CONFLICT = $.fn[NAME]
|
||||||
const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key
|
const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key
|
||||||
const SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key
|
const SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key
|
||||||
|
const TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key
|
||||||
const ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key
|
const ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key
|
||||||
const ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key
|
const ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key
|
||||||
const RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)
|
const RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)
|
||||||
const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}|${SPACE_KEYCODE}`)
|
const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)
|
||||||
|
|
||||||
const Event = {
|
const Event = {
|
||||||
HIDE : `hide${EVENT_KEY}`,
|
HIDE : `hide${EVENT_KEY}`,
|
||||||
@@ -37,25 +38,21 @@ const Dropdown = (($) => {
|
|||||||
SHOWN : `shown${EVENT_KEY}`,
|
SHOWN : `shown${EVENT_KEY}`,
|
||||||
CLICK : `click${EVENT_KEY}`,
|
CLICK : `click${EVENT_KEY}`,
|
||||||
CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,
|
CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,
|
||||||
FOCUSIN_DATA_API : `focusin${EVENT_KEY}${DATA_API_KEY}`,
|
KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,
|
||||||
KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`
|
KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`
|
||||||
}
|
}
|
||||||
|
|
||||||
const ClassName = {
|
const ClassName = {
|
||||||
BACKDROP : 'dropdown-backdrop',
|
|
||||||
DISABLED : 'disabled',
|
DISABLED : 'disabled',
|
||||||
SHOW : 'show'
|
SHOW : 'show'
|
||||||
}
|
}
|
||||||
|
|
||||||
const Selector = {
|
const Selector = {
|
||||||
BACKDROP : '.dropdown-backdrop',
|
|
||||||
DATA_TOGGLE : '[data-toggle="dropdown"]',
|
DATA_TOGGLE : '[data-toggle="dropdown"]',
|
||||||
FORM_CHILD : '.dropdown form',
|
FORM_CHILD : '.dropdown form',
|
||||||
ROLE_MENU : '[role="menu"]',
|
MENU : '.dropdown-menu',
|
||||||
ROLE_LISTBOX : '[role="listbox"]',
|
|
||||||
NAVBAR_NAV : '.navbar-nav',
|
NAVBAR_NAV : '.navbar-nav',
|
||||||
VISIBLE_ITEMS : '[role="menu"] li:not(.disabled) a, '
|
VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled)'
|
||||||
+ '[role="listbox"] li:not(.disabled) a'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -108,15 +105,13 @@ const Dropdown = (($) => {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the backdrop only if the dropdown menu will be opened
|
// if this is a touch-enabled device we add extra
|
||||||
|
// empty mouseover listeners to the body's immediate children;
|
||||||
|
// only needed because of broken event delegation on iOS
|
||||||
|
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
|
||||||
if ('ontouchstart' in document.documentElement &&
|
if ('ontouchstart' in document.documentElement &&
|
||||||
!$(parent).closest(Selector.NAVBAR_NAV).length) {
|
!$(parent).closest(Selector.NAVBAR_NAV).length) {
|
||||||
|
$('body').children().on('mouseover', '*', $.noop)
|
||||||
// if mobile we use a backdrop because click events don't delegate
|
|
||||||
const dropdown = document.createElement('div')
|
|
||||||
dropdown.className = ClassName.BACKDROP
|
|
||||||
$(dropdown).insertBefore(this)
|
|
||||||
$(dropdown).on('click', Dropdown._clearMenus)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.focus()
|
this.focus()
|
||||||
@@ -163,7 +158,8 @@ const Dropdown = (($) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static _clearMenus(event) {
|
static _clearMenus(event) {
|
||||||
if (event && event.which === RIGHT_MOUSE_BUTTON_WHICH) {
|
if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||
|
||||||
|
event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,7 +176,7 @@ const Dropdown = (($) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (event && (event.type === 'click' &&
|
if (event && (event.type === 'click' &&
|
||||||
/input|textarea/i.test(event.target.tagName) || event.type === 'focusin')
|
/input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE)
|
||||||
&& $.contains(parent, event.target)) {
|
&& $.contains(parent, event.target)) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -191,10 +187,10 @@ const Dropdown = (($) => {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove backdrop only if the dropdown menu will be hidden
|
// if this is a touch-enabled device we remove the extra
|
||||||
const backdrop = $(parent).find(Selector.BACKDROP)[0]
|
// empty mouseover listeners we added for iOS support
|
||||||
if (backdrop) {
|
if ('ontouchstart' in document.documentElement) {
|
||||||
backdrop.parentNode.removeChild(backdrop)
|
$('body').children().off('mouseover', '*', $.noop)
|
||||||
}
|
}
|
||||||
|
|
||||||
toggles[i].setAttribute('aria-expanded', 'false')
|
toggles[i].setAttribute('aria-expanded', 'false')
|
||||||
@@ -217,7 +213,7 @@ const Dropdown = (($) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static _dataApiKeydownHandler(event) {
|
static _dataApiKeydownHandler(event) {
|
||||||
if (!REGEXP_KEYDOWN.test(event.which) ||
|
if (!REGEXP_KEYDOWN.test(event.which) || /button/i.test(event.target.tagName) && event.which === SPACE_KEYCODE ||
|
||||||
/input|textarea/i.test(event.target.tagName)) {
|
/input|textarea/i.test(event.target.tagName)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -232,8 +228,8 @@ const Dropdown = (($) => {
|
|||||||
const parent = Dropdown._getParentFromElement(this)
|
const parent = Dropdown._getParentFromElement(this)
|
||||||
const isActive = $(parent).hasClass(ClassName.SHOW)
|
const isActive = $(parent).hasClass(ClassName.SHOW)
|
||||||
|
|
||||||
if (!isActive && event.which !== ESCAPE_KEYCODE ||
|
if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) ||
|
||||||
isActive && event.which === ESCAPE_KEYCODE) {
|
isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
|
||||||
|
|
||||||
if (event.which === ESCAPE_KEYCODE) {
|
if (event.which === ESCAPE_KEYCODE) {
|
||||||
const toggle = $(parent).find(Selector.DATA_TOGGLE)[0]
|
const toggle = $(parent).find(Selector.DATA_TOGGLE)[0]
|
||||||
@@ -278,9 +274,8 @@ const Dropdown = (($) => {
|
|||||||
|
|
||||||
$(document)
|
$(document)
|
||||||
.on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)
|
.on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)
|
||||||
.on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler)
|
.on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)
|
||||||
.on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler)
|
.on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)
|
||||||
.on(`${Event.CLICK_DATA_API} ${Event.FOCUSIN_DATA_API}`, Dropdown._clearMenus)
|
|
||||||
.on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle)
|
.on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle)
|
||||||
.on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {
|
.on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
|
|||||||
@@ -289,6 +289,7 @@ const Modal = (($) => {
|
|||||||
if (this._isShown && this._config.keyboard) {
|
if (this._isShown && this._config.keyboard) {
|
||||||
$(this._element).on(Event.KEYDOWN_DISMISS, (event) => {
|
$(this._element).on(Event.KEYDOWN_DISMISS, (event) => {
|
||||||
if (event.which === ESCAPE_KEYCODE) {
|
if (event.which === ESCAPE_KEYCODE) {
|
||||||
|
event.preventDefault()
|
||||||
this.hide()
|
this.hide()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -138,4 +138,22 @@ $(function () {
|
|||||||
assert.ok($btn2.find('input').prop('checked'), 'btn2 is checked')
|
assert.ok($btn2.find('input').prop('checked'), 'btn2 is checked')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
QUnit.test('should not add aria-pressed on labels for radio/checkbox inputs in a data-toggle="buttons" group', function (assert) {
|
||||||
|
assert.expect(2)
|
||||||
|
var groupHTML = '<div class="btn-group" data-toggle="buttons">'
|
||||||
|
+ '<label class="btn btn-primary"><input type="checkbox" autocomplete="off"> Checkbox</label>'
|
||||||
|
+ '<label class="btn btn-primary"><input type="radio" name="options" autocomplete="off"> Radio</label>'
|
||||||
|
+ '</div>'
|
||||||
|
var $group = $(groupHTML).appendTo('#qunit-fixture')
|
||||||
|
|
||||||
|
var $btn1 = $group.children().eq(0)
|
||||||
|
var $btn2 = $group.children().eq(1)
|
||||||
|
|
||||||
|
$btn1.find('input').trigger('click')
|
||||||
|
assert.ok($btn1.is(':not([aria-pressed])'), 'label for nested checkbox input has not been given an aria-pressed attribute')
|
||||||
|
|
||||||
|
$btn2.find('input').trigger('click')
|
||||||
|
assert.ok($btn2.is(':not([aria-pressed])'), 'label for nested radio input has not been given an aria-pressed attribute')
|
||||||
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
+16
-16
@@ -322,7 +322,7 @@ $(function () {
|
|||||||
$target3.trigger('click')
|
$target3.trigger('click')
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should set aria-expanded="true" on target when collapse is shown', function (assert) {
|
QUnit.test('should set aria-expanded="true" on trigger/control when collapse is shown', function (assert) {
|
||||||
assert.expect(1)
|
assert.expect(1)
|
||||||
var done = assert.async()
|
var done = assert.async()
|
||||||
|
|
||||||
@@ -338,7 +338,7 @@ $(function () {
|
|||||||
$target.trigger('click')
|
$target.trigger('click')
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should set aria-expanded="false" on target when collapse is hidden', function (assert) {
|
QUnit.test('should set aria-expanded="false" on trigger/control when collapse is hidden', function (assert) {
|
||||||
assert.expect(1)
|
assert.expect(1)
|
||||||
var done = assert.async()
|
var done = assert.async()
|
||||||
|
|
||||||
@@ -364,8 +364,8 @@ $(function () {
|
|||||||
$('<div id="test1"/>')
|
$('<div id="test1"/>')
|
||||||
.appendTo('#qunit-fixture')
|
.appendTo('#qunit-fixture')
|
||||||
.on('shown.bs.collapse', function () {
|
.on('shown.bs.collapse', function () {
|
||||||
assert.strictEqual($target.attr('aria-expanded'), 'true', 'aria-expanded on target is "true"')
|
assert.strictEqual($target.attr('aria-expanded'), 'true', 'aria-expanded on trigger/control is "true"')
|
||||||
assert.strictEqual($alt.attr('aria-expanded'), 'true', 'aria-expanded on alt is "true"')
|
assert.strictEqual($alt.attr('aria-expanded'), 'true', 'aria-expanded on alternative trigger/control is "true"')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -382,15 +382,15 @@ $(function () {
|
|||||||
$('<div id="test1" class="show"/>')
|
$('<div id="test1" class="show"/>')
|
||||||
.appendTo('#qunit-fixture')
|
.appendTo('#qunit-fixture')
|
||||||
.on('hidden.bs.collapse', function () {
|
.on('hidden.bs.collapse', function () {
|
||||||
assert.strictEqual($target.attr('aria-expanded'), 'false', 'aria-expanded on target is "false"')
|
assert.strictEqual($target.attr('aria-expanded'), 'false', 'aria-expanded on trigger/control is "false"')
|
||||||
assert.strictEqual($alt.attr('aria-expanded'), 'false', 'aria-expanded on alt is "false"')
|
assert.strictEqual($alt.attr('aria-expanded'), 'false', 'aria-expanded on alternative trigger/control is "false"')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
||||||
$target.trigger('click')
|
$target.trigger('click')
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should change aria-expanded from active accordion target to "false" and set the newly active one to "true"', function (assert) {
|
QUnit.test('should change aria-expanded from active accordion trigger/control to "false" and set the trigger/control for the newly active one to "true"', function (assert) {
|
||||||
assert.expect(3)
|
assert.expect(3)
|
||||||
var done = assert.async()
|
var done = assert.async()
|
||||||
|
|
||||||
@@ -401,22 +401,22 @@ $(function () {
|
|||||||
+ '</div>'
|
+ '</div>'
|
||||||
var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.card')
|
var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.card')
|
||||||
|
|
||||||
var $target1 = $('<a role="button" data-toggle="collapse" href="#body1"/>').appendTo($groups.eq(0))
|
var $target1 = $('<a role="button" data-toggle="collapse" aria-expanded="true" href="#body1"/>').appendTo($groups.eq(0))
|
||||||
|
|
||||||
$('<div id="body1" aria-expanded="true" class="show" data-parent="#accordion"/>').appendTo($groups.eq(0))
|
$('<div id="body1" class="show" data-parent="#accordion"/>').appendTo($groups.eq(0))
|
||||||
|
|
||||||
var $target2 = $('<a role="button" data-toggle="collapse" href="#body2" class="collapsed" aria-expanded="false" />').appendTo($groups.eq(1))
|
var $target2 = $('<a role="button" data-toggle="collapse" aria-expanded="false" href="#body2" class="collapsed" aria-expanded="false" />').appendTo($groups.eq(1))
|
||||||
|
|
||||||
$('<div id="body2" aria-expanded="false" data-parent="#accordion"/>').appendTo($groups.eq(1))
|
$('<div id="body2" data-parent="#accordion"/>').appendTo($groups.eq(1))
|
||||||
|
|
||||||
var $target3 = $('<a class="collapsed" data-toggle="collapse" role="button" href="#body3"/>').appendTo($groups.eq(2))
|
var $target3 = $('<a class="collapsed" data-toggle="collapse" aria-expanded="false" role="button" href="#body3"/>').appendTo($groups.eq(2))
|
||||||
|
|
||||||
$('<div id="body3" aria-expanded="false" data-parent="#accordion"/>')
|
$('<div id="body3" data-parent="#accordion"/>')
|
||||||
.appendTo($groups.eq(2))
|
.appendTo($groups.eq(2))
|
||||||
.on('shown.bs.collapse', function () {
|
.on('shown.bs.collapse', function () {
|
||||||
assert.strictEqual($target1.attr('aria-expanded'), 'false', 'inactive target 1 has aria-expanded="false"')
|
assert.strictEqual($target1.attr('aria-expanded'), 'false', 'inactive trigger/control 1 has aria-expanded="false"')
|
||||||
assert.strictEqual($target2.attr('aria-expanded'), 'false', 'inactive target 2 has aria-expanded="false"')
|
assert.strictEqual($target2.attr('aria-expanded'), 'false', 'inactive trigger/control 2 has aria-expanded="false"')
|
||||||
assert.strictEqual($target3.attr('aria-expanded'), 'true', 'active target 3 has aria-expanded="false"')
|
assert.strictEqual($target3.attr('aria-expanded'), 'true', 'active trigger/control 3 has aria-expanded="true"')
|
||||||
|
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|||||||
+293
-177
@@ -45,58 +45,62 @@ $(function () {
|
|||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should not open dropdown if target is disabled via attribute', function (assert) {
|
QUnit.test('should not open dropdown if target is disabled via attribute', function (assert) {
|
||||||
assert.expect(1)
|
assert.expect(0)
|
||||||
var dropdownHTML = '<ul class="tabs">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
+ '<li class="dropdown">'
|
+ '<div class="dropdown">'
|
||||||
+ '<button disabled href="#" class="btn dropdown-toggle" data-toggle="dropdown">Dropdown</button>'
|
+ '<button disabled href="#" class="btn dropdown-toggle" data-toggle="dropdown">Dropdown</button>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#">Secondary link</a></li>'
|
+ '<a class="dropdown-item" href="#">Secondary link</a>'
|
||||||
+ '<li><a href="#">Something else here</a></li>'
|
+ '<a class="dropdown-item" href="#">Something else here</a>'
|
||||||
+ '<li class="divider"/>'
|
+ '<div class="divider"/>'
|
||||||
+ '<li><a href="#">Another link</a></li>'
|
+ '<a class="dropdown-item" href="#">Another link</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().trigger('click')
|
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown()
|
||||||
|
setTimeout(function () {
|
||||||
assert.ok(!$dropdown.parent('.dropdown').hasClass('show'), '"show" class added on click')
|
assert.ok(!$dropdown.parent('.dropdown').hasClass('show'), '"show" class added on click')
|
||||||
|
}, 300)
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should set aria-expanded="true" on target when dropdown menu is shown', function (assert) {
|
QUnit.test('should set aria-expanded="true" on target when dropdown menu is shown', function (assert) {
|
||||||
assert.expect(1)
|
assert.expect(1)
|
||||||
var dropdownHTML = '<ul class="tabs">'
|
var done = assert.async()
|
||||||
+ '<li class="dropdown">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
|
+ '<div class="dropdown">'
|
||||||
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Dropdown</a>'
|
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Dropdown</a>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#">Secondary link</a></li>'
|
+ '<a class="dropdown-item" href="#">Secondary link</a>'
|
||||||
+ '<li><a href="#">Something else here</a></li>'
|
+ '<a class="dropdown-item" href="#">Something else here</a>'
|
||||||
+ '<li class="divider"/>'
|
+ '<div class="divider"/>'
|
||||||
+ '<li><a href="#">Another link</a></li>'
|
+ '<a class="dropdown-item" href="#">Another link</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML)
|
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown()
|
||||||
.find('[data-toggle="dropdown"]')
|
$dropdown
|
||||||
.bootstrapDropdown()
|
.parent('.dropdown')
|
||||||
.trigger('click')
|
.on('shown.bs.dropdown', function () {
|
||||||
|
|
||||||
assert.strictEqual($dropdown.attr('aria-expanded'), 'true', 'aria-expanded is set to string "true" on click')
|
assert.strictEqual($dropdown.attr('aria-expanded'), 'true', 'aria-expanded is set to string "true" on click')
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
$dropdown.trigger('click')
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should set aria-expanded="false" on target when dropdown menu is hidden', function (assert) {
|
QUnit.test('should set aria-expanded="false" on target when dropdown menu is hidden', function (assert) {
|
||||||
assert.expect(1)
|
assert.expect(1)
|
||||||
var done = assert.async()
|
var done = assert.async()
|
||||||
var dropdownHTML = '<ul class="tabs">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
+ '<li class="dropdown">'
|
+ '<div class="dropdown">'
|
||||||
+ '<a href="#" class="dropdown-toggle" aria-expanded="false" data-toggle="dropdown">Dropdown</a>'
|
+ '<a href="#" class="dropdown-toggle" aria-expanded="false" data-toggle="dropdown">Dropdown</a>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#">Secondary link</a></li>'
|
+ '<a class="dropdown-item" href="#">Secondary link</a>'
|
||||||
+ '<li><a href="#">Something else here</a></li>'
|
+ '<a class="dropdown-item" href="#">Something else here</a>'
|
||||||
+ '<li class="divider"/>'
|
+ '<div class="divider"/>'
|
||||||
+ '<li><a href="#">Another link</a></li>'
|
+ '<a class="dropdown-item" href="#">Another link</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML)
|
var $dropdown = $(dropdownHTML)
|
||||||
.appendTo('#qunit-fixture')
|
.appendTo('#qunit-fixture')
|
||||||
.find('[data-toggle="dropdown"]')
|
.find('[data-toggle="dropdown"]')
|
||||||
@@ -114,86 +118,107 @@ $(function () {
|
|||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should not open dropdown if target is disabled via class', function (assert) {
|
QUnit.test('should not open dropdown if target is disabled via class', function (assert) {
|
||||||
assert.expect(1)
|
assert.expect(0)
|
||||||
var dropdownHTML = '<ul class="tabs">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
+ '<li class="dropdown">'
|
+ '<div class="dropdown">'
|
||||||
+ '<button href="#" class="btn dropdown-toggle disabled" data-toggle="dropdown">Dropdown</button>'
|
+ '<button href="#" class="btn dropdown-toggle disabled" data-toggle="dropdown">Dropdown</button>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#">Secondary link</a></li>'
|
+ '<a class="dropdown-item" href="#">Secondary link</a>'
|
||||||
+ '<li><a href="#">Something else here</a></li>'
|
+ '<a class="dropdown-item" href="#">Something else here</a>'
|
||||||
+ '<li class="divider"/>'
|
+ '<div class="divider"/>'
|
||||||
+ '<li><a href="#">Another link</a></li>'
|
+ '<a class="dropdown-item" href="#">Another link</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().trigger('click')
|
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().trigger('click')
|
||||||
|
setTimeout(function () {
|
||||||
assert.ok(!$dropdown.parent('.dropdown').hasClass('show'), '"show" class added on click')
|
assert.ok(!$dropdown.parent('.dropdown').hasClass('show'), '"show" class added on click')
|
||||||
|
}, 300)
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should add class show to menu if clicked', function (assert) {
|
QUnit.test('should add class show to menu if clicked', function (assert) {
|
||||||
assert.expect(1)
|
assert.expect(1)
|
||||||
var dropdownHTML = '<ul class="tabs">'
|
var done = assert.async()
|
||||||
+ '<li class="dropdown">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
|
+ '<div class="dropdown">'
|
||||||
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#">Secondary link</a></li>'
|
+ '<a class="dropdown-item" href="#">Secondary link</a>'
|
||||||
+ '<li><a href="#">Something else here</a></li>'
|
+ '<a class="dropdown-item" href="#">Something else here</a>'
|
||||||
+ '<li class="divider"/>'
|
+ '<div class="divider"/>'
|
||||||
+ '<li><a href="#">Another link</a></li>'
|
+ '<a class="dropdown-item" href="#">Another link</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().trigger('click')
|
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown()
|
||||||
|
$dropdown
|
||||||
|
.parent('.dropdown')
|
||||||
|
.on('shown.bs.dropdown', function () {
|
||||||
assert.ok($dropdown.parent('.dropdown').hasClass('show'), '"show" class added on click')
|
assert.ok($dropdown.parent('.dropdown').hasClass('show'), '"show" class added on click')
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
$dropdown.trigger('click')
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should test if element has a # before assuming it\'s a selector', function (assert) {
|
QUnit.test('should test if element has a # before assuming it\'s a selector', function (assert) {
|
||||||
assert.expect(1)
|
assert.expect(1)
|
||||||
var dropdownHTML = '<ul class="tabs">'
|
var done = assert.async()
|
||||||
+ '<li class="dropdown">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
|
+ '<div class="dropdown">'
|
||||||
+ '<a href="/foo/" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
+ '<a href="/foo/" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#">Secondary link</a></li>'
|
+ '<a class="dropdown-item" href="#">Secondary link</a>'
|
||||||
+ '<li><a href="#">Something else here</a></li>'
|
+ '<a class="dropdown-item" href="#">Something else here</a>'
|
||||||
+ '<li class="divider"/>'
|
+ '<div class="divider"/>'
|
||||||
+ '<li><a href="#">Another link</a></li>'
|
+ '<a class="dropdown-item" href="#">Another link</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().trigger('click')
|
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown()
|
||||||
|
$dropdown
|
||||||
|
.parent('.dropdown')
|
||||||
|
.on('shown.bs.dropdown', function () {
|
||||||
assert.ok($dropdown.parent('.dropdown').hasClass('show'), '"show" class added on click')
|
assert.ok($dropdown.parent('.dropdown').hasClass('show'), '"show" class added on click')
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
$dropdown.trigger('click')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
QUnit.test('should remove "show" class if body is clicked', function (assert) {
|
QUnit.test('should remove "show" class if body is clicked', function (assert) {
|
||||||
assert.expect(2)
|
assert.expect(2)
|
||||||
var dropdownHTML = '<ul class="tabs">'
|
var done = assert.async()
|
||||||
+ '<li class="dropdown">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
|
+ '<div class="dropdown">'
|
||||||
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#">Secondary link</a></li>'
|
+ '<a class="dropdown-item" href="#">Secondary link</a>'
|
||||||
+ '<li><a href="#">Something else here</a></li>'
|
+ '<a class="dropdown-item" href="#">Something else here</a>'
|
||||||
+ '<li class="divider"/>'
|
+ '<div class="divider"/>'
|
||||||
+ '<li><a href="#">Another link</a></li>'
|
+ '<a class="dropdown-item" href="#">Another link</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML)
|
var $dropdown = $(dropdownHTML)
|
||||||
.appendTo('#qunit-fixture')
|
.appendTo('#qunit-fixture')
|
||||||
.find('[data-toggle="dropdown"]')
|
.find('[data-toggle="dropdown"]')
|
||||||
.bootstrapDropdown()
|
.bootstrapDropdown()
|
||||||
.trigger('click')
|
|
||||||
|
|
||||||
|
$dropdown
|
||||||
|
.parent('.dropdown')
|
||||||
|
.on('shown.bs.dropdown', function () {
|
||||||
assert.ok($dropdown.parent('.dropdown').hasClass('show'), '"show" class added on click')
|
assert.ok($dropdown.parent('.dropdown').hasClass('show'), '"show" class added on click')
|
||||||
$(document.body).trigger('click')
|
$(document.body).trigger('click')
|
||||||
|
}).on('hidden.bs.dropdown', function () {
|
||||||
assert.ok(!$dropdown.parent('.dropdown').hasClass('show'), '"show" class removed')
|
assert.ok(!$dropdown.parent('.dropdown').hasClass('show'), '"show" class removed')
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
$dropdown.trigger('click')
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should remove "show" class if body is focused', function (assert) {
|
QUnit.test('should remove "show" class if tabbing outside of menu', function (assert) {
|
||||||
assert.expect(2)
|
assert.expect(2)
|
||||||
|
var done = assert.async()
|
||||||
var dropdownHTML = '<div class="tabs">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
+ '<div class="dropdown">'
|
+ '<div class="dropdown">'
|
||||||
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
||||||
@@ -209,30 +234,37 @@ $(function () {
|
|||||||
.appendTo('#qunit-fixture')
|
.appendTo('#qunit-fixture')
|
||||||
.find('[data-toggle="dropdown"]')
|
.find('[data-toggle="dropdown"]')
|
||||||
.bootstrapDropdown()
|
.bootstrapDropdown()
|
||||||
.trigger('click')
|
$dropdown
|
||||||
|
.parent('.dropdown')
|
||||||
|
.on('shown.bs.dropdown', function () {
|
||||||
assert.ok($dropdown.parent('.dropdown').hasClass('show'), '"show" class added on click')
|
assert.ok($dropdown.parent('.dropdown').hasClass('show'), '"show" class added on click')
|
||||||
$(document.body).trigger('focusin')
|
var e = $.Event('keyup')
|
||||||
|
e.which = 9 // Tab
|
||||||
|
$(document.body).trigger(e)
|
||||||
|
}).on('hidden.bs.dropdown', function () {
|
||||||
assert.ok(!$dropdown.parent('.dropdown').hasClass('show'), '"show" class removed')
|
assert.ok(!$dropdown.parent('.dropdown').hasClass('show'), '"show" class removed')
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
$dropdown.trigger('click')
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should remove "show" class if body is clicked, with multiple dropdowns', function (assert) {
|
QUnit.test('should remove "show" class if body is clicked, with multiple dropdowns', function (assert) {
|
||||||
assert.expect(7)
|
assert.expect(7)
|
||||||
var dropdownHTML = '<ul class="nav">'
|
var done = assert.async()
|
||||||
+ '<li><a href="#menu1">Menu 1</a></li>'
|
var dropdownHTML = '<div class="nav">'
|
||||||
+ '<li class="dropdown" id="testmenu">'
|
+ '<div class="dropdown" id="testmenu">'
|
||||||
+ '<a class="dropdown-toggle" data-toggle="dropdown" href="#testmenu">Test menu <span class="caret"/></a>'
|
+ '<a class="dropdown-toggle" data-toggle="dropdown" href="#testmenu">Test menu <span class="caret"/></a>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#sub1">Submenu 1</a></li>'
|
+ '<a class="dropdown-item" href="#sub1">Submenu 1</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '<div class="btn-group">'
|
+ '<div class="btn-group">'
|
||||||
+ '<button class="btn">Actions</button>'
|
+ '<button class="btn">Actions</button>'
|
||||||
+ '<button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"/></button>'
|
+ '<button class="btn dropdown-toggle" data-toggle="dropdown"></button>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#">Action 1</a></li>'
|
+ '<a class="dropdown-item" href="#">Action 1</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</div>'
|
+ '</div>'
|
||||||
var $dropdowns = $(dropdownHTML).appendTo('#qunit-fixture').find('[data-toggle="dropdown"]')
|
var $dropdowns = $(dropdownHTML).appendTo('#qunit-fixture').find('[data-toggle="dropdown"]')
|
||||||
var $first = $dropdowns.first()
|
var $first = $dropdowns.first()
|
||||||
@@ -240,21 +272,31 @@ $(function () {
|
|||||||
|
|
||||||
assert.strictEqual($dropdowns.length, 2, 'two dropdowns')
|
assert.strictEqual($dropdowns.length, 2, 'two dropdowns')
|
||||||
|
|
||||||
$first.trigger('click')
|
$first.parent('.dropdown')
|
||||||
|
.on('shown.bs.dropdown', function () {
|
||||||
assert.strictEqual($first.parents('.show').length, 1, '"show" class added on click')
|
assert.strictEqual($first.parents('.show').length, 1, '"show" class added on click')
|
||||||
assert.strictEqual($('#qunit-fixture .show').length, 1, 'only one dropdown is shown')
|
assert.strictEqual($('#qunit-fixture .show').length, 1, 'only one dropdown is shown')
|
||||||
$(document.body).trigger('click')
|
$(document.body).trigger('click')
|
||||||
|
}).on('hidden.bs.dropdown', function () {
|
||||||
assert.strictEqual($('#qunit-fixture .show').length, 0, '"show" class removed')
|
assert.strictEqual($('#qunit-fixture .show').length, 0, '"show" class removed')
|
||||||
|
|
||||||
$last.trigger('click')
|
$last.trigger('click')
|
||||||
|
})
|
||||||
|
|
||||||
|
$last.parent('.btn-group')
|
||||||
|
.on('shown.bs.dropdown', function () {
|
||||||
assert.strictEqual($last.parent('.show').length, 1, '"show" class added on click')
|
assert.strictEqual($last.parent('.show').length, 1, '"show" class added on click')
|
||||||
assert.strictEqual($('#qunit-fixture .show').length, 1, 'only one dropdown is shown')
|
assert.strictEqual($('#qunit-fixture .show').length, 1, 'only one dropdown is shown')
|
||||||
$(document.body).trigger('click')
|
$(document.body).trigger('click')
|
||||||
|
}).on('hidden.bs.dropdown', function () {
|
||||||
assert.strictEqual($('#qunit-fixture .show').length, 0, '"show" class removed')
|
assert.strictEqual($('#qunit-fixture .show').length, 0, '"show" class removed')
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
$first.trigger('click')
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should remove "show" class if body is focused, with multiple dropdowns', function (assert) {
|
QUnit.test('should remove "show" class if body if tabbing outside of menu, with multiple dropdowns', function (assert) {
|
||||||
assert.expect(7)
|
assert.expect(7)
|
||||||
|
var done = assert.async()
|
||||||
var dropdownHTML = '<div class="nav">'
|
var dropdownHTML = '<div class="nav">'
|
||||||
+ '<div class="dropdown" id="testmenu">'
|
+ '<div class="dropdown" id="testmenu">'
|
||||||
+ '<a class="dropdown-toggle" data-toggle="dropdown" href="#testmenu">Test menu <span class="caret"/></a>'
|
+ '<a class="dropdown-toggle" data-toggle="dropdown" href="#testmenu">Test menu <span class="caret"/></a>'
|
||||||
@@ -276,32 +318,45 @@ $(function () {
|
|||||||
|
|
||||||
assert.strictEqual($dropdowns.length, 2, 'two dropdowns')
|
assert.strictEqual($dropdowns.length, 2, 'two dropdowns')
|
||||||
|
|
||||||
$first.trigger('click')
|
$first.parent('.dropdown')
|
||||||
|
.on('shown.bs.dropdown', function () {
|
||||||
assert.strictEqual($first.parents('.show').length, 1, '"show" class added on click')
|
assert.strictEqual($first.parents('.show').length, 1, '"show" class added on click')
|
||||||
assert.strictEqual($('#qunit-fixture .show').length, 1, 'only one dropdown is show')
|
assert.strictEqual($('#qunit-fixture .show').length, 1, 'only one dropdown is shown')
|
||||||
$(document.body).trigger('focusin')
|
var e = $.Event('keyup')
|
||||||
|
e.which = 9 // Tab
|
||||||
|
$(document.body).trigger(e)
|
||||||
|
}).on('hidden.bs.dropdown', function () {
|
||||||
assert.strictEqual($('#qunit-fixture .show').length, 0, '"show" class removed')
|
assert.strictEqual($('#qunit-fixture .show').length, 0, '"show" class removed')
|
||||||
|
|
||||||
$last.trigger('click')
|
$last.trigger('click')
|
||||||
|
})
|
||||||
|
|
||||||
|
$last.parent('.btn-group')
|
||||||
|
.on('shown.bs.dropdown', function () {
|
||||||
assert.strictEqual($last.parent('.show').length, 1, '"show" class added on click')
|
assert.strictEqual($last.parent('.show').length, 1, '"show" class added on click')
|
||||||
assert.strictEqual($('#qunit-fixture .show').length, 1, 'only one dropdown is show')
|
assert.strictEqual($('#qunit-fixture .show').length, 1, 'only one dropdown is shown')
|
||||||
$(document.body).trigger('focusin')
|
var e = $.Event('keyup')
|
||||||
|
e.which = 9 // Tab
|
||||||
|
$(document.body).trigger(e)
|
||||||
|
}).on('hidden.bs.dropdown', function () {
|
||||||
assert.strictEqual($('#qunit-fixture .show').length, 0, '"show" class removed')
|
assert.strictEqual($('#qunit-fixture .show').length, 0, '"show" class removed')
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
$first.trigger('click')
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should fire show and hide event', function (assert) {
|
QUnit.test('should fire show and hide event', function (assert) {
|
||||||
assert.expect(2)
|
assert.expect(2)
|
||||||
var dropdownHTML = '<ul class="tabs">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
+ '<li class="dropdown">'
|
+ '<div class="dropdown">'
|
||||||
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#">Secondary link</a></li>'
|
+ '<a class="dropdown-item" href="#">Secondary link</a>'
|
||||||
+ '<li><a href="#">Something else here</a></li>'
|
+ '<a class="dropdown-item" href="#">Something else here</a>'
|
||||||
+ '<li class="divider"/>'
|
+ '<div class="divider"/>'
|
||||||
+ '<li><a href="#">Another link</a></li>'
|
+ '<a class="dropdown-item" href="#">Another link</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML)
|
var $dropdown = $(dropdownHTML)
|
||||||
.appendTo('#qunit-fixture')
|
.appendTo('#qunit-fixture')
|
||||||
.find('[data-toggle="dropdown"]')
|
.find('[data-toggle="dropdown"]')
|
||||||
@@ -326,17 +381,17 @@ $(function () {
|
|||||||
|
|
||||||
QUnit.test('should fire shown and hidden event', function (assert) {
|
QUnit.test('should fire shown and hidden event', function (assert) {
|
||||||
assert.expect(2)
|
assert.expect(2)
|
||||||
var dropdownHTML = '<ul class="tabs">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
+ '<li class="dropdown">'
|
+ '<div class="dropdown">'
|
||||||
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#">Secondary link</a></li>'
|
+ '<a class="dropdown-item" href="#">Secondary link</a>'
|
||||||
+ '<li><a href="#">Something else here</a></li>'
|
+ '<a class="dropdown-item" href="#">Something else here</a>'
|
||||||
+ '<li class="divider"/>'
|
+ '<div class="divider"/>'
|
||||||
+ '<li><a href="#">Another link</a></li>'
|
+ '<a class="dropdown-item" href="#">Another link</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML)
|
var $dropdown = $(dropdownHTML)
|
||||||
.appendTo('#qunit-fixture')
|
.appendTo('#qunit-fixture')
|
||||||
.find('[data-toggle="dropdown"]')
|
.find('[data-toggle="dropdown"]')
|
||||||
@@ -360,17 +415,17 @@ $(function () {
|
|||||||
|
|
||||||
QUnit.test('should fire shown and hidden event with a relatedTarget', function (assert) {
|
QUnit.test('should fire shown and hidden event with a relatedTarget', function (assert) {
|
||||||
assert.expect(2)
|
assert.expect(2)
|
||||||
var dropdownHTML = '<ul class="tabs">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
+ '<li class="dropdown">'
|
+ '<div class="dropdown">'
|
||||||
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#">Secondary link</a></li>'
|
+ '<a class="dropdown-item" href="#">Secondary link</a>'
|
||||||
+ '<li><a href="#">Something else here</a></li>'
|
+ '<a class="dropdown-item" href="#">Something else here</a>'
|
||||||
+ '<li class="divider"/>'
|
+ '<div class="divider"/>'
|
||||||
+ '<li><a href="#">Another link</a></li>'
|
+ '<a class="dropdown-item" href="#">Another link</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML)
|
var $dropdown = $(dropdownHTML)
|
||||||
.appendTo('#qunit-fixture')
|
.appendTo('#qunit-fixture')
|
||||||
.find('[data-toggle="dropdown"]')
|
.find('[data-toggle="dropdown"]')
|
||||||
@@ -394,19 +449,19 @@ $(function () {
|
|||||||
assert.expect(3)
|
assert.expect(3)
|
||||||
var done = assert.async()
|
var done = assert.async()
|
||||||
|
|
||||||
var dropdownHTML = '<ul class="tabs">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
+ '<li class="dropdown">'
|
+ '<div class="dropdown">'
|
||||||
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><a href="#">Secondary link</a></li>'
|
+ '<a class="dropdown-item" href="#">Secondary link</a>'
|
||||||
+ '<li><a href="#">Something else here</a></li>'
|
+ '<a class="dropdown-item" href="#">Something else here</a>'
|
||||||
+ '<li class="divider"/>'
|
+ '<div class="divider"/>'
|
||||||
+ '<li><a href="#">Another link</a></li>'
|
+ '<a class="dropdown-item" href="#">Another link</a>'
|
||||||
+ '<li><input type="text" id="input"></li>'
|
+ '<input type="text" id="input">'
|
||||||
+ '<li><textarea id="textarea"/></li>'
|
+ '<textarea id="textarea"/>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML)
|
var $dropdown = $(dropdownHTML)
|
||||||
.appendTo('#qunit-fixture')
|
.appendTo('#qunit-fixture')
|
||||||
.find('[data-toggle="dropdown"]')
|
.find('[data-toggle="dropdown"]')
|
||||||
@@ -433,63 +488,124 @@ $(function () {
|
|||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should skip disabled element when using keyboard navigation', function (assert) {
|
QUnit.test('should skip disabled element when using keyboard navigation', function (assert) {
|
||||||
assert.expect(1)
|
assert.expect(2)
|
||||||
var dropdownHTML = '<ul class="tabs">'
|
var done = assert.async()
|
||||||
+ '<li class="dropdown">'
|
var dropdownHTML = '<div class="tabs">'
|
||||||
|
+ '<div class="dropdown">'
|
||||||
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li class="disabled"><a href="#">Disabled link</a></li>'
|
+ '<a class="dropdown-item disabled" href="#">Disabled link</a>'
|
||||||
+ '<li><a href="#">Another link</a></li>'
|
+ '<a class="dropdown-item" href="#">Another link</a>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</li>'
|
+ '</div>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML)
|
var $dropdown = $(dropdownHTML)
|
||||||
.appendTo('#qunit-fixture')
|
.appendTo('#qunit-fixture')
|
||||||
.find('[data-toggle="dropdown"]')
|
.find('[data-toggle="dropdown"]')
|
||||||
.bootstrapDropdown()
|
.bootstrapDropdown()
|
||||||
.trigger('click')
|
|
||||||
|
|
||||||
|
$dropdown
|
||||||
|
.parent('.dropdown')
|
||||||
|
.on('shown.bs.dropdown', function () {
|
||||||
|
assert.ok(true, 'shown was fired')
|
||||||
$dropdown.trigger($.Event('keydown', { which: 40 }))
|
$dropdown.trigger($.Event('keydown', { which: 40 }))
|
||||||
$dropdown.trigger($.Event('keydown', { which: 40 }))
|
$dropdown.trigger($.Event('keydown', { which: 40 }))
|
||||||
|
assert.ok(!$(document.activeElement).is('.disabled'), '.disabled is not focused')
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
$dropdown.trigger('click')
|
||||||
|
})
|
||||||
|
|
||||||
|
QUnit.test('should focus next/previous element when using keyboard navigation', function (assert) {
|
||||||
|
assert.expect(4)
|
||||||
|
var done = assert.async()
|
||||||
|
var dropdownHTML = '<div class="tabs">'
|
||||||
|
+ '<div class="dropdown">'
|
||||||
|
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
|
||||||
|
+ '<div class="dropdown-menu">'
|
||||||
|
+ '<a id="item1" class="dropdown-item" href="#">A link</a>'
|
||||||
|
+ '<a id="item2" class="dropdown-item" href="#">Another link</a>'
|
||||||
|
+ '</div>'
|
||||||
|
+ '</div>'
|
||||||
|
+ '</div>'
|
||||||
|
var $dropdown = $(dropdownHTML)
|
||||||
|
.appendTo('#qunit-fixture')
|
||||||
|
.find('[data-toggle="dropdown"]')
|
||||||
|
.bootstrapDropdown()
|
||||||
|
|
||||||
|
$dropdown
|
||||||
|
.parent('.dropdown')
|
||||||
|
.on('shown.bs.dropdown', function () {
|
||||||
|
assert.ok(true, 'shown was fired')
|
||||||
|
$dropdown.trigger($.Event('keydown', { which: 40 }))
|
||||||
|
assert.ok($(document.activeElement).is($('#item1')), 'item1 is focused')
|
||||||
|
|
||||||
|
$(document.activeElement).trigger($.Event('keydown', { which: 40 }))
|
||||||
|
assert.ok($(document.activeElement).is($('#item2')), 'item2 is focused')
|
||||||
|
|
||||||
|
$(document.activeElement).trigger($.Event('keydown', { which: 38 }))
|
||||||
|
assert.ok($(document.activeElement).is($('#item1')), 'item1 is focused')
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
$dropdown.trigger('click')
|
||||||
|
|
||||||
assert.ok(!$(document.activeElement).parent().is('.disabled'), '.disabled is not focused')
|
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should not close the dropdown if the user clicks on a text field', function (assert) {
|
QUnit.test('should not close the dropdown if the user clicks on a text field', function (assert) {
|
||||||
assert.expect(1)
|
assert.expect(1)
|
||||||
var dropdownHTML = '<div class="btn-group">'
|
var done = assert.async()
|
||||||
|
var dropdownHTML = '<div class="dropdown">'
|
||||||
+ '<button type="button" data-toggle="dropdown">Dropdown</button>'
|
+ '<button type="button" data-toggle="dropdown">Dropdown</button>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><input id="textField" type="text" /></li>'
|
+ '<input id="textField" type="text" />'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</div>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML)
|
var $dropdown = $(dropdownHTML)
|
||||||
.appendTo('#qunit-fixture')
|
.appendTo('#qunit-fixture')
|
||||||
.find('[data-toggle="dropdown"]')
|
.find('[data-toggle="dropdown"]')
|
||||||
.bootstrapDropdown()
|
.bootstrapDropdown()
|
||||||
.trigger('click')
|
|
||||||
|
|
||||||
|
$dropdown
|
||||||
|
.parent('.dropdown')
|
||||||
|
.on('shown.bs.dropdown', function () {
|
||||||
$('#textField').trigger('click')
|
$('#textField').trigger('click')
|
||||||
|
assert.ok($dropdown.parent('.dropdown').hasClass('show'), 'dropdown menu is shown')
|
||||||
assert.ok($dropdown.parent('.btn-group').hasClass('show'), 'dropdown menu is shown')
|
setTimeout(function () {
|
||||||
|
done()
|
||||||
|
}, 300)
|
||||||
|
})
|
||||||
|
.on('hidden.bs.dropdown', function () {
|
||||||
|
assert.ok($dropdown.parent('.dropdown').hasClass('show'), 'dropdown menu is shown')
|
||||||
|
})
|
||||||
|
$dropdown.trigger('click')
|
||||||
})
|
})
|
||||||
|
|
||||||
QUnit.test('should not close the dropdown if the user clicks on a textarea', function (assert) {
|
QUnit.test('should not close the dropdown if the user clicks on a textarea', function (assert) {
|
||||||
assert.expect(1)
|
assert.expect(1)
|
||||||
var dropdownHTML = '<div class="btn-group">'
|
var done = assert.async()
|
||||||
|
var dropdownHTML = '<div class="dropdown">'
|
||||||
+ '<button type="button" data-toggle="dropdown">Dropdown</button>'
|
+ '<button type="button" data-toggle="dropdown">Dropdown</button>'
|
||||||
+ '<ul class="dropdown-menu">'
|
+ '<div class="dropdown-menu">'
|
||||||
+ '<li><textarea id="textArea"></textarea></li>'
|
+ '<textarea id="textArea"></textarea>'
|
||||||
+ '</ul>'
|
+ '</div>'
|
||||||
+ '</div>'
|
+ '</div>'
|
||||||
var $dropdown = $(dropdownHTML)
|
var $dropdown = $(dropdownHTML)
|
||||||
.appendTo('#qunit-fixture')
|
.appendTo('#qunit-fixture')
|
||||||
.find('[data-toggle="dropdown"]')
|
.find('[data-toggle="dropdown"]')
|
||||||
.bootstrapDropdown()
|
.bootstrapDropdown()
|
||||||
.trigger('click')
|
|
||||||
|
|
||||||
|
$dropdown
|
||||||
|
.parent('.dropdown')
|
||||||
|
.on('shown.bs.dropdown', function () {
|
||||||
$('#textArea').trigger('click')
|
$('#textArea').trigger('click')
|
||||||
|
assert.ok($dropdown.parent('.dropdown').hasClass('show'), 'dropdown menu is shown')
|
||||||
assert.ok($dropdown.parent('.btn-group').hasClass('show'), 'dropdown menu is shown')
|
setTimeout(function () {
|
||||||
|
done()
|
||||||
|
}, 300)
|
||||||
|
})
|
||||||
|
.on('hidden.bs.dropdown', function () {
|
||||||
|
assert.ok($dropdown.parent('.dropdown').hasClass('show'), 'dropdown menu is shown')
|
||||||
|
})
|
||||||
|
$dropdown.trigger('click')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<li data-target="#carousel-example-generic" data-slide-to="1"></li>
|
<li data-target="#carousel-example-generic" data-slide-to="1"></li>
|
||||||
<li data-target="#carousel-example-generic" data-slide-to="2"></li>
|
<li data-target="#carousel-example-generic" data-slide-to="2"></li>
|
||||||
</ol>
|
</ol>
|
||||||
<div class="carousel-inner" role="listbox">
|
<div class="carousel-inner">
|
||||||
<div class="carousel-item active">
|
<div class="carousel-item active">
|
||||||
<img src="https://37.media.tumblr.com/tumblr_m8tay0JcfG1qa42jro1_1280.jpg" alt="First slide">
|
<img src="https://37.media.tumblr.com/tumblr_m8tay0JcfG1qa42jro1_1280.jpg" alt="First slide">
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -88,10 +88,8 @@
|
|||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist",
|
"dist",
|
||||||
"grunt",
|
|
||||||
"js/**/*.js",
|
"js/**/*.js",
|
||||||
"scss/**/*.scss",
|
"scss/**/*.scss",
|
||||||
"Gruntfile.js",
|
|
||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"jspm": {
|
"jspm": {
|
||||||
|
|||||||
@@ -28,7 +28,6 @@
|
|||||||
// Disabled comes first so active can properly restyle
|
// Disabled comes first so active can properly restyle
|
||||||
&.disabled,
|
&.disabled,
|
||||||
&:disabled {
|
&:disabled {
|
||||||
cursor: $cursor-disabled;
|
|
||||||
opacity: .65;
|
opacity: .65;
|
||||||
@include box-shadow(none);
|
@include box-shadow(none);
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-2
@@ -262,15 +262,18 @@
|
|||||||
// Columns
|
// Columns
|
||||||
//
|
//
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
.card-columns {
|
.card-columns {
|
||||||
|
.card {
|
||||||
|
margin-bottom: $card-columns-margin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include media-breakpoint-up(sm) {
|
||||||
column-count: $card-columns-count;
|
column-count: $card-columns-count;
|
||||||
column-gap: $card-columns-gap;
|
column-gap: $card-columns-gap;
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
display: inline-block; // Don't let them vertically span multiple columns
|
display: inline-block; // Don't let them vertically span multiple columns
|
||||||
width: 100%; // Don't let their width change
|
width: 100%; // Don't let their width change
|
||||||
margin-bottom: $card-columns-margin;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,13 +41,11 @@
|
|||||||
|
|
||||||
&:disabled {
|
&:disabled {
|
||||||
~ .custom-control-indicator {
|
~ .custom-control-indicator {
|
||||||
cursor: $custom-control-disabled-cursor;
|
|
||||||
background-color: $custom-control-disabled-indicator-bg;
|
background-color: $custom-control-disabled-indicator-bg;
|
||||||
}
|
}
|
||||||
|
|
||||||
~ .custom-control-description {
|
~ .custom-control-description {
|
||||||
color: $custom-control-disabled-description-color;
|
color: $custom-control-disabled-description-color;
|
||||||
cursor: $custom-control-disabled-cursor;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -169,7 +167,6 @@
|
|||||||
|
|
||||||
&:disabled {
|
&:disabled {
|
||||||
color: $custom-select-disabled-color;
|
color: $custom-select-disabled-color;
|
||||||
cursor: $cursor-disabled;
|
|
||||||
background-color: $custom-select-disabled-bg;
|
background-color: $custom-select-disabled-bg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -90,7 +90,6 @@
|
|||||||
&.disabled,
|
&.disabled,
|
||||||
&:disabled {
|
&:disabled {
|
||||||
color: $dropdown-link-disabled-color;
|
color: $dropdown-link-disabled-color;
|
||||||
cursor: $cursor-disabled;
|
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
// Remove CSS gradients if they're enabled
|
// Remove CSS gradients if they're enabled
|
||||||
@if $enable-gradients {
|
@if $enable-gradients {
|
||||||
@@ -136,16 +135,6 @@
|
|||||||
white-space: nowrap; // as with > li > a
|
white-space: nowrap; // as with > li > a
|
||||||
}
|
}
|
||||||
|
|
||||||
// Backdrop to catch body clicks on mobile, etc.
|
|
||||||
.dropdown-backdrop {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: $zindex-dropdown-backdrop;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Allow for dropdowns to go bottom up (aka, dropup-menu)
|
// Allow for dropdowns to go bottom up (aka, dropup-menu)
|
||||||
//
|
//
|
||||||
// Just add .dropup after the standard .dropdown class and you're set.
|
// Just add .dropup after the standard .dropdown class and you're set.
|
||||||
|
|||||||
@@ -58,10 +58,6 @@
|
|||||||
// iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
|
// iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:disabled {
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
select.form-control {
|
select.form-control {
|
||||||
@@ -212,7 +208,6 @@ select.form-control-lg {
|
|||||||
&.disabled {
|
&.disabled {
|
||||||
.form-check-label {
|
.form-check-label {
|
||||||
color: $text-muted;
|
color: $text-muted;
|
||||||
cursor: $cursor-disabled;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,6 @@
|
|||||||
&.disabled,
|
&.disabled,
|
||||||
&:disabled {
|
&:disabled {
|
||||||
color: $list-group-disabled-color;
|
color: $list-group-disabled-color;
|
||||||
cursor: $cursor-disabled;
|
|
||||||
background-color: $list-group-disabled-bg;
|
background-color: $list-group-disabled-bg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -19,10 +19,9 @@
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disabled state lightens text and removes hover/tab effects
|
// Disabled state lightens text
|
||||||
&.disabled {
|
&.disabled {
|
||||||
color: $nav-disabled-link-color;
|
color: $nav-disabled-link-color;
|
||||||
cursor: $cursor-disabled;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,6 @@
|
|||||||
&.disabled .page-link {
|
&.disabled .page-link {
|
||||||
color: $pagination-disabled-color;
|
color: $pagination-disabled-color;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
cursor: $cursor-disabled; // While `pointer-events: none` removes the cursor in modern browsers, we provide a disabled cursor as a fallback.
|
|
||||||
background-color: $pagination-disabled-bg;
|
background-color: $pagination-disabled-bg;
|
||||||
border-color: $pagination-disabled-border;
|
border-color: $pagination-disabled-border;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -86,7 +86,7 @@
|
|||||||
&::after {
|
&::after {
|
||||||
top: -($popover-arrow-outer-width - 1);
|
top: -($popover-arrow-outer-width - 1);
|
||||||
margin-left: -$popover-arrow-width;
|
margin-left: -$popover-arrow-width;
|
||||||
border-bottom-color: $popover-title-bg;
|
border-bottom-color: $popover-arrow-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This will remove the popover-title's border just below the arrow
|
// This will remove the popover-title's border just below the arrow
|
||||||
|
|||||||
@@ -368,13 +368,6 @@ input[type="radio"],
|
|||||||
input[type="checkbox"] {
|
input[type="checkbox"] {
|
||||||
box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
|
box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
|
||||||
padding: 0; // 2. Remove the padding in IE 10-
|
padding: 0; // 2. Remove the padding in IE 10-
|
||||||
|
|
||||||
// Apply a disabled cursor for radios and checkboxes.
|
|
||||||
//
|
|
||||||
// Note: Neither radios nor checkboxes can be readonly.
|
|
||||||
&:disabled {
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -433,8 +433,6 @@ $form-group-margin-bottom: 1rem !default;
|
|||||||
$input-group-addon-bg: $gray-lighter !default;
|
$input-group-addon-bg: $gray-lighter !default;
|
||||||
$input-group-addon-border-color: $input-border-color !default;
|
$input-group-addon-border-color: $input-border-color !default;
|
||||||
|
|
||||||
$cursor-disabled: not-allowed !default;
|
|
||||||
|
|
||||||
$custom-control-gutter: 1.5rem !default;
|
$custom-control-gutter: 1.5rem !default;
|
||||||
$custom-control-spacer-y: .25rem !default;
|
$custom-control-spacer-y: .25rem !default;
|
||||||
$custom-control-spacer-x: 1rem !default;
|
$custom-control-spacer-x: 1rem !default;
|
||||||
@@ -444,7 +442,6 @@ $custom-control-indicator-bg: #ddd !default;
|
|||||||
$custom-control-indicator-bg-size: 50% 50% !default;
|
$custom-control-indicator-bg-size: 50% 50% !default;
|
||||||
$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black,.1) !default;
|
$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black,.1) !default;
|
||||||
|
|
||||||
$custom-control-disabled-cursor: $cursor-disabled !default;
|
|
||||||
$custom-control-disabled-indicator-bg: $gray-lighter !default;
|
$custom-control-disabled-indicator-bg: $gray-lighter !default;
|
||||||
$custom-control-disabled-description-color: $gray-light !default;
|
$custom-control-disabled-description-color: $gray-light !default;
|
||||||
|
|
||||||
@@ -558,7 +555,6 @@ $dropdown-header-color: $gray-light !default;
|
|||||||
// Warning: Avoid customizing these values. They're used for a bird's eye view
|
// Warning: Avoid customizing these values. They're used for a bird's eye view
|
||||||
// of components dependent on the z-axis and are designed to all work together.
|
// of components dependent on the z-axis and are designed to all work together.
|
||||||
|
|
||||||
$zindex-dropdown-backdrop: 990 !default;
|
|
||||||
$zindex-dropdown: 1000 !default;
|
$zindex-dropdown: 1000 !default;
|
||||||
$zindex-sticky: 1020 !default;
|
$zindex-sticky: 1020 !default;
|
||||||
$zindex-fixed: 1030 !default;
|
$zindex-fixed: 1030 !default;
|
||||||
|
|||||||
@@ -13,6 +13,12 @@
|
|||||||
@mixin card-outline-variant($color) {
|
@mixin card-outline-variant($color) {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-color: $color;
|
border-color: $color;
|
||||||
|
|
||||||
|
.card-header,
|
||||||
|
.card-footer {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: $color;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user