diff --git a/phpgwapi/js/jquery/chosen/chosen-sprite.png b/phpgwapi/js/jquery/chosen/chosen-sprite.png index 113dc9885a..3611ae4ace 100644 Binary files a/phpgwapi/js/jquery/chosen/chosen-sprite.png and b/phpgwapi/js/jquery/chosen/chosen-sprite.png differ diff --git a/phpgwapi/js/jquery/chosen/chosen.css b/phpgwapi/js/jquery/chosen/chosen.css index 301b218e84..303721e3cc 100644 --- a/phpgwapi/js/jquery/chosen/chosen.css +++ b/phpgwapi/js/jquery/chosen/chosen.css @@ -1,362 +1,328 @@ /* @group Base */ .chzn-container { - position: static; + position: relative; display: inline-block; + vertical-align: middle; + font-size: 13px; zoom: 1; *display: inline; - min-width: 8ex; } .chzn-container .chzn-drop { - background: #fff; + position: absolute; + top: 100%; + left: -9999px; + z-index: 1010; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; border: 1px solid #aaa; border-top: 0; - position: fixed; - top: 29px; - left: 0; - -webkit-box-shadow: 0 4px 5px rgba(0,0,0,.15); - -moz-box-shadow : 0 4px 5px rgba(0,0,0,.15); - box-shadow : 0 4px 5px rgba(0,0,0,.15); - z-index: 1010; - min-width: 4ex; + background: #fff; + box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15); +} +.chzn-container.chzn-with-drop .chzn-drop { + left: 0; } -/* @end */ +/* @end */ /* @group Single Chosen */ .chzn-container-single .chzn-single { - background-color: #ffffff; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0 ); - background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4)); - background-image: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background-image: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background-image: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background-image: linear-gradient(#ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - -moz-background-clip : padding; - -webkit-background-clip: padding-box; - background-clip : padding-box; - border: 1px solid #BBB; - -webkit-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1); - -moz-box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1); - box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1); + position: relative; display: block; overflow: hidden; - white-space: nowrap; - position: relative; - height: 16px; - line-height: 17px; padding: 0 0 0 8px; + height: 23px; + border: 1px solid #aaa; + border-radius: 5px; + background-color: #fff; + background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4)); + background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); + background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); + background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); + background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); + background-clip: padding-box; + box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1); + color: #444; text-decoration: none; + white-space: nowrap; + line-height: 24px; } .chzn-container-single .chzn-default { color: #999; } .chzn-container-single .chzn-single span { - margin-right: 26px; display: block; overflow: hidden; - white-space: nowrap; - -o-text-overflow: ellipsis; - -ms-text-overflow: ellipsis; + margin-right: 26px; text-overflow: ellipsis; + white-space: nowrap; +} +.chzn-container-single .chzn-single-with-deselect span { + margin-right: 38px; } .chzn-container-single .chzn-single abbr { - display: block; position: absolute; - right: 26px; top: 6px; + right: 26px; + display: block; width: 12px; - height: 13px; + height: 12px; + background: url('chosen-sprite.png') -42px 1px no-repeat; font-size: 1px; - background: url('chosen-sprite.png') right top no-repeat; } .chzn-container-single .chzn-single abbr:hover { - background-position: right -11px; + background-position: -42px -10px; } .chzn-container-single.chzn-disabled .chzn-single abbr:hover { - background-position: right top; + background-position: -42px -10px; } .chzn-container-single .chzn-single div { position: absolute; - right: 0; top: 0; + right: 0; display: block; - height: 100%; width: 18px; - margin-top: -4px; + height: 100%; } .chzn-container-single .chzn-single div b { - background: url('chosen-sprite.png') no-repeat 0 0; display: block; width: 100%; height: 100%; + background: url('chosen-sprite.png') no-repeat 0px 2px; } .chzn-container-single .chzn-search { - padding: 3px 4px; position: relative; - margin: 0; - white-space: nowrap; z-index: 1010; + margin: 0; + padding: 3px 4px; + white-space: nowrap; } .chzn-container-single .chzn-search input { - background: #fff url('chosen-sprite.png') no-repeat 100% -22px; - background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-gradient(linear, 0 0, 0 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); - background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat 100% -22px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat 100% -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat 100% -22px, linear-gradient(#eeeeee 1%, #ffffff 15%); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; margin: 1px 0; padding: 4px 20px 4px 5px; + width: 100%; outline: 0; border: 1px solid #aaa; - font-family: sans-serif; + background: white url('chosen-sprite.png') no-repeat 100% -20px; + background: url('chosen-sprite.png') no-repeat 100% -20px, -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); + background: url('chosen-sprite.png') no-repeat 100% -20px, -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%); + background: url('chosen-sprite.png') no-repeat 100% -20px, -moz-linear-gradient(#eeeeee 1%, #ffffff 15%); + background: url('chosen-sprite.png') no-repeat 100% -20px, -o-linear-gradient(#eeeeee 1%, #ffffff 15%); + background: url('chosen-sprite.png') no-repeat 100% -20px, linear-gradient(#eeeeee 1%, #ffffff 15%); font-size: 1em; + font-family: sans-serif; } .chzn-container-single .chzn-drop { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius : 0 0 4px 4px; - border-radius : 0 0 4px 4px; - -moz-background-clip : padding; - -webkit-background-clip: padding-box; - background-clip : padding-box; + margin-top: -1px; + border-radius: 0 0 4px 4px; + background-clip: padding-box; } -/* @end */ - -.chzn-container-single-nosearch .chzn-search input { +.chzn-container-single.chzn-container-single-nosearch .chzn-search { position: absolute; - left: -9000px; - display: none; + left: -9999px; } +/* @end */ +/* @group Results */ +.chzn-container .chzn-results { + position: relative; + overflow-x: hidden; + overflow-y: auto; + margin: 0 4px 4px 0; + padding: 0 0 0 4px; + max-height: 240px; + -webkit-overflow-scrolling: touch; +} +.chzn-container .chzn-results li { + display: none; + margin: 0; + padding: 5px 6px; + list-style: none; + line-height: 15px; +} +.chzn-container .chzn-results li.active-result { + display: list-item; + cursor: pointer; +} +.chzn-container .chzn-results li.disabled-result { + display: list-item; + color: #ccc; + cursor: default; +} +.chzn-container .chzn-results li.highlighted { + background-color: #3875d7; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc)); + background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%); + background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%); + background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%); + background-image: linear-gradient(#3875d7 20%, #2a62bc 90%); + color: #fff; +} +.chzn-container .chzn-results li.no-results { + display: list-item; + background: #f4f4f4; +} +.chzn-container .chzn-results li.group-result { + display: list-item; + color: #999; + font-weight: bold; + cursor: default; +} +.chzn-container .chzn-results li.group-option { + padding-left: 15px; +} +.chzn-container .chzn-results li em { + font-style: normal; + text-decoration: underline; +} + +/* @end */ /* @group Multi Chosen */ .chzn-container-multi .chzn-choices { - background-color: #fff; - background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); - background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background-image: linear-gradient(#eeeeee 1%, #ffffff 15%); - border: 1px solid #aaa; + position: relative; + overflow: hidden; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; margin: 0; padding: 0; - cursor: text; - overflow: hidden; + width: 100%; height: auto !important; height: 1%; - position: relative; + border: 1px solid #aaa; + background-color: #fff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); + background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%); + background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%); + background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%); + background-image: linear-gradient(#eeeeee 1%, #ffffff 15%); + cursor: text; } .chzn-container-multi .chzn-choices li { float: left; list-style: none; } -.chzn-container-multi .chzn-choices .search-field { - white-space: nowrap; +.chzn-container-multi .chzn-choices li.search-field { margin: 0; padding: 0; + white-space: nowrap; } -.chzn-container-multi .chzn-choices .search-field input { - color: #666; - background: transparent !important; - border: 0 !important; - font-family: sans-serif; - font-size: 100%; - height: 12px; - padding: 5px; +.chzn-container-multi .chzn-choices li.search-field input { margin: 1px 0; + padding: 5px; + height: 15px; outline: 0; - -webkit-box-shadow: none; - -moz-box-shadow : none; - box-shadow : none; + border: 0 !important; + background: transparent !important; + box-shadow: none; + color: #666; + font-size: 100%; + font-family: sans-serif; } -.chzn-container-multi .chzn-choices .search-field .default { +.chzn-container-multi .chzn-choices li.search-field .default { color: #999; } -.chzn-container-multi .chzn-choices .search-choice { - -webkit-border-radius: 3px; - -moz-border-radius : 3px; - border-radius : 3px; - -moz-background-clip : padding; - -webkit-background-clip: padding-box; - background-clip : padding-box; - background-color: #e4e4e4; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f4f4', endColorstr='#eeeeee', GradientType=0 ); - background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); - background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05); - -moz-box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05); - box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05); - color: #333; - border: 1px solid #aaaaaa; - line-height: 12px; - padding: 3px 20px 3px 5px; - margin: 2px 0 2px 1px; +.chzn-container-multi .chzn-choices li.search-choice { position: relative; + margin: 3px 0 3px 5px; + padding: 3px 20px 3px 5px; + border: 1px solid #aaa; + border-radius: 3px; + background-color: #e4e4e4; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); + background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-clip: padding-box; + box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05); + color: #333; + line-height: 13px; cursor: default; } -.chzn-container-multi .chzn-choices .search-choice.search-choice-disabled { +.chzn-container-multi .chzn-choices li.search-choice .search-choice-close { + position: absolute; + top: 4px; + right: 3px; + display: block; + width: 12px; + height: 12px; + background: url('chosen-sprite.png') -42px 1px no-repeat; + font-size: 1px; +} +.chzn-container-multi .chzn-choices li.search-choice .search-choice-close:hover { + background-position: -42px -10px; +} +.chzn-container-multi .chzn-choices li.search-choice-disabled { + padding-right: 5px; + border: 1px solid #ccc; background-color: #e4e4e4; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f4f4', endColorstr='#eeeeee', GradientType=0 ); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -ms-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); color: #666; - border: 1px solid #cccccc; - padding-right: 5px; } -.chzn-container-multi .chzn-choices .search-choice-focus { +.chzn-container-multi .chzn-choices li.search-choice-focus { background: #d4d4d4; } -.chzn-container-multi .chzn-choices .search-choice .search-choice-close { - display: block; - position: absolute; - right: 3px; - top: 4px; - width: 12px; - height: 13px; - font-size: 1px; - background: url('chosen-sprite.png') right top no-repeat; -} -.chzn-container-multi .chzn-choices .search-choice .search-choice-close:hover { - background-position: right -11px; -} -.chzn-container-multi .chzn-choices .search-choice-focus .search-choice-close { - background-position: right -11px; -} -/* @end */ - -/* @group Results */ -.chzn-container .chzn-results { - margin: 0 4px 4px 0; - max-height: 240px; - padding: 0 0 0 4px; - position: relative; - overflow-x: hidden; - overflow-y: auto; - -webkit-overflow-scrolling: touch; +.chzn-container-multi .chzn-choices li.search-choice-focus .search-choice-close { + background-position: -42px -10px; } .chzn-container-multi .chzn-results { - margin: -1px 0 0; + margin: 0; padding: 0; } -.chzn-container .chzn-results li { - display: none; - padding: 3px 6px; - margin: 0; - list-style: none; -} -.chzn-container .chzn-results .active-result { - cursor: pointer; - display: list-item; -} -.chzn-container .chzn-results .highlighted { - background-color: #3875d7; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3875d7', endColorstr='#2a62bc', GradientType=0 ); - background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc)); - background-image: -webkit-linear-gradient(top, #3875d7 20%, #2a62bc 90%); - background-image: -moz-linear-gradient(top, #3875d7 20%, #2a62bc 90%); - background-image: -o-linear-gradient(top, #3875d7 20%, #2a62bc 90%); - background-image: linear-gradient(#3875d7 20%, #2a62bc 90%); - color: #fff; -} -.chzn-container .chzn-results li em { - background: #feffde; - font-style: normal; -} -.chzn-container .chzn-results .highlighted em { - background: transparent; -} -.chzn-container .chzn-results .no-results { - background: #f4f4f4; - display: list-item; -} -.chzn-container .chzn-results .group-result { - cursor: default; - color: #999; - font-weight: bold; -} -.chzn-container .chzn-results .group-option { - padding-left: 15px; -} .chzn-container-multi .chzn-drop .result-selected { - display: none; + display: list-item; + color: #ccc; + cursor: default; } -.chzn-container .chzn-results-scroll { - background: white; - margin: 0 4px; - position: absolute; - text-align: center; - width: 321px; /* This should by dynamic with js */ - z-index: 1; -} -.chzn-container .chzn-results-scroll span { - display: inline-block; - height: 17px; - text-indent: -5000px; - width: 9px; -} -.chzn-container .chzn-results-scroll-down { - bottom: 0; -} -.chzn-container .chzn-results-scroll-down span { - background: url('chosen-sprite.png') no-repeat -4px -3px; -} -.chzn-container .chzn-results-scroll-up span { - background: url('chosen-sprite.png') no-repeat -22px -3px; -} -/* @end */ +/* @end */ /* @group Active */ .chzn-container-active .chzn-single { - -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3); - -moz-box-shadow : 0 0 5px rgba(0,0,0,.3); - box-shadow : 0 0 5px rgba(0,0,0,.3); border: 1px solid #5897fb; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); } -.chzn-container-active .chzn-single-with-drop { +.chzn-container-active.chzn-with-drop .chzn-single { border: 1px solid #aaa; - -webkit-box-shadow: 0 1px 0 #fff inset; - -moz-box-shadow : 0 1px 0 #fff inset; - box-shadow : 0 1px 0 #fff inset; - background-color: #eee; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0 ); - background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff)); - background-image: -webkit-linear-gradient(top, #eeeeee 20%, #ffffff 80%); - background-image: -moz-linear-gradient(top, #eeeeee 20%, #ffffff 80%); - background-image: -o-linear-gradient(top, #eeeeee 20%, #ffffff 80%); - background-image: linear-gradient(#eeeeee 20%, #ffffff 80%); - -webkit-border-bottom-left-radius : 0; - -webkit-border-bottom-right-radius: 0; - -moz-border-radius-bottomleft : 0; -moz-border-radius-bottomright: 0; - border-bottom-left-radius : 0; border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + border-bottom-left-radius: 0; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff)); + background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%); + background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%); + background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%); + background-image: linear-gradient(#eeeeee 20%, #ffffff 80%); + box-shadow: 0 1px 0 #fff inset; } -.chzn-container-active .chzn-single-with-drop div { - background: transparent; +.chzn-container-active.chzn-with-drop .chzn-single div { border-left: none; + background: transparent; } -.chzn-container-active .chzn-single-with-drop div b { - background-position: -18px 1px; +.chzn-container-active.chzn-with-drop .chzn-single div b { + background-position: -18px 2px; } .chzn-container-active .chzn-choices { - -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3); - -moz-box-shadow : 0 0 5px rgba(0,0,0,.3); - box-shadow : 0 0 5px rgba(0,0,0,.3); border: 1px solid #5897fb; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); } -.chzn-container-active .chzn-choices .search-field input { +.chzn-container-active .chzn-choices li.search-field input { color: #111 !important; } -/* @end */ +/* @end */ /* @group Disabled Support */ .chzn-disabled { + opacity: 0.5 !important; cursor: default; - opacity:0.5 !important; } .chzn-disabled .chzn-single { cursor: default; @@ -365,31 +331,90 @@ cursor: default; } +/* @end */ /* @group Right to Left */ -.chzn-rtl { text-align: right; } -.chzn-rtl .chzn-single { padding: 0 8px 0 0; overflow: visible; } -.chzn-rtl .chzn-single span { margin-left: 26px; margin-right: 0; direction: rtl; } - -.chzn-rtl .chzn-single div { left: 3px; right: auto; } -.chzn-rtl .chzn-single abbr { - left: 26px; - right: auto; +.chzn-rtl { + text-align: right; } -.chzn-rtl .chzn-choices .search-field input { direction: rtl; } -.chzn-rtl .chzn-choices li { float: right; } -.chzn-rtl .chzn-choices .search-choice { padding: 3px 5px 3px 19px; margin: 3px 5px 3px 0; } -.chzn-rtl .chzn-choices .search-choice .search-choice-close { left: 4px; right: auto; background-position: right top;} -.chzn-rtl.chzn-container-single .chzn-results { margin: 0 0 4px 4px; padding: 0 4px 0 0; } -.chzn-rtl .chzn-results .group-option { padding-left: 0; padding-right: 15px; } -.chzn-rtl.chzn-container-active .chzn-single-with-drop div { border-right: none; } -.chzn-rtl .chzn-search input { - background: #fff url('chosen-sprite.png') no-repeat -38px -22px; - background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-gradient(linear, 0 0, 0 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); - background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat -38px -22px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat -38px -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat -38px -22px, linear-gradient(#eeeeee 1%, #ffffff 15%); - padding: 4px 5px 4px 20px; +.chzn-rtl .chzn-single { + overflow: visible; + padding: 0 8px 0 0; +} +.chzn-rtl .chzn-single span { + margin-right: 0; + margin-left: 26px; direction: rtl; } +.chzn-rtl .chzn-single-with-deselect span { + margin-left: 38px; +} +.chzn-rtl .chzn-single div { + right: auto; + left: 3px; +} +.chzn-rtl .chzn-single abbr { + right: auto; + left: 26px; +} +.chzn-rtl .chzn-choices li { + float: right; +} +.chzn-rtl .chzn-choices li.search-field input { + direction: rtl; +} +.chzn-rtl .chzn-choices li.search-choice { + margin: 3px 5px 3px 0; + padding: 3px 5px 3px 19px; +} +.chzn-rtl .chzn-choices li.search-choice .search-choice-close { + right: auto; + left: 4px; +} +.chzn-rtl.chzn-container-single-nosearch .chzn-search, +.chzn-rtl .chzn-drop { + left: 9999px; +} +.chzn-rtl.chzn-container-single .chzn-results { + margin: 0 0 4px 4px; + padding: 0 4px 0 0; +} +.chzn-rtl .chzn-results li.group-option { + padding-right: 15px; + padding-left: 0; +} +.chzn-rtl.chzn-container-active.chzn-with-drop .chzn-single div { + border-right: none; +} +.chzn-rtl .chzn-search input { + padding: 4px 5px 4px 20px; + background: white url('chosen-sprite.png') no-repeat -30px -20px; + background: url('chosen-sprite.png') no-repeat -30px -20px, -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); + background: url('chosen-sprite.png') no-repeat -30px -20px, -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%); + background: url('chosen-sprite.png') no-repeat -30px -20px, -moz-linear-gradient(#eeeeee 1%, #ffffff 15%); + background: url('chosen-sprite.png') no-repeat -30px -20px, -o-linear-gradient(#eeeeee 1%, #ffffff 15%); + background: url('chosen-sprite.png') no-repeat -30px -20px, linear-gradient(#eeeeee 1%, #ffffff 15%); + direction: rtl; +} +.chzn-rtl.chzn-container-single .chzn-single div b { + background-position: 6px 2px; +} +.chzn-rtl.chzn-container-single.chzn-with-drop .chzn-single div b { + background-position: -12px 2px; +} + +/* @end */ +/* @group Retina compatibility */ +@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) { + .chzn-rtl .chzn-search input, + .chzn-container-single .chzn-single abbr, + .chzn-container-single .chzn-single div b, + .chzn-container-single .chzn-search input, + .chzn-container-multi .chzn-choices .search-choice .search-choice-close, + .chzn-container .chzn-results-scroll-down span, + .chzn-container .chzn-results-scroll-up span { + background-image: url('chosen-sprite@2x.png') !important; + background-size: 52px 37px !important; + background-repeat: no-repeat !important; + } +} /* @end */ diff --git a/phpgwapi/js/jquery/chosen/chosen.jquery.js b/phpgwapi/js/jquery/chosen/chosen.jquery.js index 21c5c4347c..c7cc018674 100644 --- a/phpgwapi/js/jquery/chosen/chosen.jquery.js +++ b/phpgwapi/js/jquery/chosen/chosen.jquery.js @@ -1,17 +1,16 @@ -// Chosen, a Select Box Enhancer for jQuery and Protoype +// Chosen, a Select Box Enhancer for jQuery and Prototype // by Patrick Filler for Harvest, http://getharvest.com -// -// Version 0.9.8 +// +// Version 0.13.0 // Full source at https://github.com/harvesthq/chosen // Copyright (c) 2011 Harvest http://getharvest.com // MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md -// This file is generated by `cake build`, do not edit it by hand. +// This file is generated by `grunt build`, do not edit it by hand. (function() { var SelectParser; SelectParser = (function() { - function SelectParser() { this.options_index = 0; this.parsed = []; @@ -27,11 +26,12 @@ SelectParser.prototype.add_group = function(group) { var group_position, option, _i, _len, _ref, _results; + group_position = this.parsed.length; this.parsed.push({ array_index: group_position, group: true, - label: group.label, + label: this.escapeExpression(group.label), children: 0, disabled: group.disabled }); @@ -73,12 +73,35 @@ } }; + SelectParser.prototype.escapeExpression = function(text) { + var map, unsafe_chars; + + if ((text == null) || text === false) { + return ""; + } + if (!/[\&\<\>\"\'\`]/.test(text)) { + return text; + } + map = { + "<": "<", + ">": ">", + '"': """, + "'": "'", + "`": "`" + }; + unsafe_chars = /&(?!\w+;)|[\<\>\"\'\`]/g; + return text.replace(unsafe_chars, function(chr) { + return map[chr] || "&"; + }); + }; + return SelectParser; })(); SelectParser.select_to_array = function(select) { var child, parser, _i, _len, _ref; + parser = new SelectParser(); _ref = select.childNodes; for (_i = 0, _len = _ref.length; _i < _len; _i++) { @@ -92,25 +115,21 @@ }).call(this); -/* -Chosen source: generate output using 'cake build' -Copyright (c) 2011 by Harvest -*/ - - (function() { var AbstractChosen, root; root = this; AbstractChosen = (function() { - function AbstractChosen(form_field, options) { this.form_field = form_field; this.options = options != null ? options : {}; - this.set_default_values(); + if (!AbstractChosen.browser_is_supported()) { + return; + } this.is_multiple = this.form_field.multiple; this.set_default_text(); + this.set_default_values(); this.setup(); this.set_up_html(); this.register_observers(); @@ -119,6 +138,7 @@ Copyright (c) 2011 by Harvest AbstractChosen.prototype.set_default_values = function() { var _this = this; + this.click_test_action = function(evt) { return _this.test_active_click(evt); }; @@ -133,22 +153,23 @@ Copyright (c) 2011 by Harvest this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false; this.disable_search_threshold = this.options.disable_search_threshold || 0; this.disable_search = this.options.disable_search || false; + this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true; + this.group_search = this.options.group_search != null ? this.options.group_search : true; this.search_contains = this.options.search_contains || false; - this.choices = 0; this.single_backstroke_delete = this.options.single_backstroke_delete || false; this.max_selected_options = this.options.max_selected_options || Infinity; - return this.overflow_container = this.options.overflow_container; + return this.inherit_select_classes = this.options.inherit_select_classes || false; }; AbstractChosen.prototype.set_default_text = function() { if (this.form_field.getAttribute("data-placeholder")) { this.default_text = this.form_field.getAttribute("data-placeholder"); } else if (this.is_multiple) { - this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || "Select Some Options"; + this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text; } else { - this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || "Select an Option"; + this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text; } - return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || "No results match"; + return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text; }; AbstractChosen.prototype.mouse_enter = function() { @@ -161,15 +182,23 @@ Copyright (c) 2011 by Harvest AbstractChosen.prototype.input_focus = function(evt) { var _this = this; - if (!this.active_field) { - return setTimeout((function() { - return _this.container_mousedown(); - }), 50); + + if (this.is_multiple) { + if (!this.active_field) { + return setTimeout((function() { + return _this.container_mousedown(); + }), 50); + } + } else { + if (!this.active_field) { + return this.activate_field(); + } } }; AbstractChosen.prototype.input_blur = function(evt) { var _this = this; + if (!this.mouse_on_container) { this.active_field = false; return setTimeout((function() { @@ -178,34 +207,67 @@ Copyright (c) 2011 by Harvest } }; + AbstractChosen.prototype.results_option_build = function(options) { + var content, data, _i, _len, _ref; + + content = ''; + _ref = this.results_data; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + data = _ref[_i]; + if (data.group && (data.search_match || data.group_match)) { + content += this.result_add_group(data); + } else if (!data.empty && data.search_match) { + content += this.result_add_option(data); + } + if (options != null ? options.first : void 0) { + if (data.selected && this.is_multiple) { + this.choice_build(data); + } else if (data.selected && !this.is_multiple) { + this.single_set_selected_text(data.text); + } + } + } + return content; + }; + AbstractChosen.prototype.result_add_option = function(option) { var classes, style; - if (!option.disabled) { - option.dom_id = this.container_id + "_o_" + option.array_index; - classes = option.selected && this.is_multiple ? [] : ["active-result"]; - if (option.selected) { - classes.push("result-selected"); - } - if (option.group_array_index != null) { - classes.push("group-option"); - } - if (option.classes !== "") { - classes.push(option.classes); - } - style = option.style.cssText !== "" ? " style=\"" + option.style + "\"" : ""; - return '
  • ' + option.html + '
  • '; - } else { - return ""; + + classes = []; + if (!option.disabled && !(option.selected && this.is_multiple)) { + classes.push("active-result"); } + if (option.disabled && !(option.selected && this.is_multiple)) { + classes.push("disabled-result"); + } + if (option.selected) { + classes.push("result-selected"); + } + if (option.group_array_index != null) { + classes.push("group-option"); + } + if (option.classes !== "") { + classes.push(option.classes); + } + style = option.style.cssText !== "" ? " style=\"" + option.style + "\"" : ""; + return "
  • " + option.search_text + "
  • "; + }; + + AbstractChosen.prototype.result_add_group = function(group) { + return "
  • " + group.search_text + "
  • "; }; AbstractChosen.prototype.results_update_field = function() { + this.set_default_text(); if (!this.is_multiple) { this.results_reset_cleanup(); } this.result_clear_highlight(); this.result_single_selected = null; - return this.results_build(); + this.results_build(); + if (this.results_showing) { + return this.winnow_results(); + } }; AbstractChosen.prototype.results_toggle = function() { @@ -224,13 +286,104 @@ Copyright (c) 2011 by Harvest } }; + AbstractChosen.prototype.winnow_results = function() { + var option, regex, regexAnchor, results, searchText, startpos, text, zregex, _i, _len, _ref; + + this.no_results_clear(); + results = 0; + searchText = this.get_search_text(); + regexAnchor = this.search_contains ? "" : "^"; + regex = new RegExp(regexAnchor + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i'); + zregex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i'); + _ref = this.results_data; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + option = _ref[_i]; + if (!option.empty) { + if (option.group) { + option.group_match = false; + } + if (!(option.group && !this.group_search)) { + option.search_match = false; + option.search_text = option.group ? option.label : option.html; + option.search_match = this.search_string_match(option.search_text, regex); + if (option.search_match) { + results += 1; + } + if (option.search_match) { + if (searchText.length) { + startpos = option.search_text.search(zregex); + text = option.search_text.substr(0, startpos + searchText.length) + '' + option.search_text.substr(startpos + searchText.length); + option.search_text = text.substr(0, startpos) + '' + text.substr(startpos); + } + if (option.group_array_index != null) { + this.results_data[option.group_array_index].group_match = true; + } + } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) { + option.search_match = true; + } + } + } + } + if (results < 1 && searchText.length) { + this.update_results_content(""); + this.result_clear_highlight(); + return this.no_results(searchText); + } else { + this.update_results_content(this.results_option_build()); + return this.winnow_results_set_highlight(); + } + }; + + AbstractChosen.prototype.search_string_match = function(search_string, regex) { + var part, parts, _i, _len; + + if (regex.test(search_string)) { + return true; + } else if (this.enable_split_word_search && (search_string.indexOf(" ") >= 0 || search_string.indexOf("[") === 0)) { + parts = search_string.replace(/\[|\]/g, "").split(" "); + if (parts.length) { + for (_i = 0, _len = parts.length; _i < _len; _i++) { + part = parts[_i]; + if (regex.test(part)) { + return true; + } + } + } + } + }; + + AbstractChosen.prototype.choices_count = function() { + var option, _i, _len, _ref; + + if (this.selected_option_count != null) { + return this.selected_option_count; + } + this.selected_option_count = 0; + _ref = this.form_field.options; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + option = _ref[_i]; + if (option.selected) { + this.selected_option_count += 1; + } + } + return this.selected_option_count; + }; + + AbstractChosen.prototype.choices_click = function(evt) { + evt.preventDefault(); + if (!(this.results_showing || this.is_disabled)) { + return this.results_show(); + } + }; + AbstractChosen.prototype.keyup_checker = function(evt) { var stroke, _ref; + stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; this.search_field_scale(); switch (stroke) { case 8: - if (this.is_multiple && this.backstroke_length < 1 && this.choices > 0) { + if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) { return this.keydown_backstroke(); } else if (!this.pending_backstroke) { this.result_clear_highlight(); @@ -260,20 +413,29 @@ Copyright (c) 2011 by Harvest } }; - AbstractChosen.prototype.generate_field_id = function() { - var new_id; - new_id = this.generate_random_id(); - this.form_field.id = new_id; - return new_id; + AbstractChosen.prototype.container_width = function() { + if (this.options.width != null) { + return this.options.width; + } else { + return "" + this.form_field.offsetWidth + "px"; + } }; - AbstractChosen.prototype.generate_random_char = function() { - var chars, newchar, rand; - chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - rand = Math.floor(Math.random() * chars.length); - return newchar = chars.substring(rand, rand + 1); + AbstractChosen.browser_is_supported = function() { + var _ref; + + if (window.navigator.appName === "Microsoft Internet Explorer") { + return (null !== (_ref = document.documentMode) && _ref >= 8); + } + return true; }; + AbstractChosen.default_multiple_text = "Select Some Options"; + + AbstractChosen.default_single_text = "Select an Option"; + + AbstractChosen.default_no_result_text = "No results match"; + return AbstractChosen; })(); @@ -282,14 +444,8 @@ Copyright (c) 2011 by Harvest }).call(this); -/* -Chosen source: generate output using 'cake build' -Copyright (c) 2011 by Harvest -*/ - - (function() { - var $, Chosen, get_side_border_padding, root, + var $, Chosen, root, _ref, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; @@ -299,44 +455,32 @@ Copyright (c) 2011 by Harvest $.fn.extend({ chosen: function(options) { - if ($.browser.msie && ($.browser.version === "6.0" || ($.browser.version === "7.0" && document.documentMode === 7))) { + if (!AbstractChosen.browser_is_supported()) { return this; } return this.each(function(input_field) { var $this; + $this = $(this); if (!$this.hasClass("chzn-done")) { return $this.data('chosen', new Chosen(this, options)); } }); - }, - unchosen: function() { - return $(this).each(function(input_field) { - var chosen, element; - element = $(this); - chosen = element.data("chosen"); - if (chosen) { - chosen.remove(); - element.data("chosen", null); - } - return element; - }); } }); Chosen = (function(_super) { - __extends(Chosen, _super); function Chosen() { - return Chosen.__super__.constructor.apply(this, arguments); + _ref = Chosen.__super__.constructor.apply(this, arguments); + return _ref; } Chosen.prototype.setup = function() { this.form_field_jq = $(this.form_field); - this.current_value = this.form_field_jq.val(); - this.is_rtl = this.form_field_jq.hasClass("chzn-rtl"); - return this.overflow_container = typeof this.overflow_container === "undefined" ? this.form_field_jq.parent() : this.overflow_container; + this.current_selectedIndex = this.form_field.selectedIndex; + return this.is_rtl = this.form_field_jq.hasClass("chzn-rtl"); }; Chosen.prototype.finish_setup = function() { @@ -344,37 +488,32 @@ Copyright (c) 2011 by Harvest }; Chosen.prototype.set_up_html = function() { - var container_div, dd_top, dd_width, sf_width, - _this = this; - this.container_id = this.form_field.id.length ? this.form_field.id.replace(/[^\w]/g, '_') : this.generate_field_id(); - this.container_id += "_chzn"; - this.f_width = egw.getHiddenDimensions ? egw.getHiddenDimensions(this.form_field,true)['w'] : this.form_field_jq.outerWidth(); + var container_classes, container_props; - container_div = $("
    ", { - id: this.container_id, - "class": "chzn-container" + (this.is_rtl ? ' chzn-rtl' : ''), - style: 'width: ' + this.f_width + 'px;' - }); + container_classes = ["chzn-container"]; + container_classes.push("chzn-container-" + (this.is_multiple ? "multi" : "single")); + if (this.inherit_select_classes && this.form_field.className) { + container_classes.push(this.form_field.className); + } + if (this.is_rtl) { + container_classes.push("chzn-rtl"); + } + container_props = { + 'class': container_classes.join(' '), + 'style': "width: " + (this.container_width()) + ";", + 'title': this.form_field.title + }; + if (this.form_field.id.length) { + container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chzn"; + } + this.container = $("
    ", container_props); if (this.is_multiple) { - container_div.html('
    '); + this.container.html('
      '); } else { - container_div.html('' + this.default_text + '
      '); + this.container.html('' + this.default_text + '
        '); } - this.form_field_jq.hide().after(container_div); - this.container = $('#' + this.container_id); - this.container.addClass("chzn-container-" + (this.is_multiple ? "multi" : "single")); + this.form_field_jq.hide().after(this.container); this.dropdown = this.container.find('div.chzn-drop').first(); - dd_top = this.container.height(); - dd_width = this.f_width - get_side_border_padding(this.dropdown); - this.dropdown.css({ - "width": dd_width + "px", - "top": dd_top + "px" - }); - if (this.overflow_container) { - $(this.overflow_container).add(document).bind("scroll", function(evt) { - return _this.update_position(evt); - }); - } this.search_field = this.container.find('input').first(); this.search_results = this.container.find('ul.chzn-results').first(); this.search_field_scale(); @@ -385,13 +524,10 @@ Copyright (c) 2011 by Harvest } else { this.search_container = this.container.find('div.chzn-search').first(); this.selected_item = this.container.find('.chzn-single').first(); - sf_width = dd_width - get_side_border_padding(this.search_container) - get_side_border_padding(this.search_field); - this.search_field.css({ - "width": sf_width + "px" - }); } this.results_build(); this.set_tab_index(); + this.set_label_behavior(); return this.form_field_jq.trigger("liszt:ready", { chosen: this }); @@ -399,61 +535,59 @@ Copyright (c) 2011 by Harvest Chosen.prototype.register_observers = function() { var _this = this; + this.container.mousedown(function(evt) { - return _this.container_mousedown(evt); + _this.container_mousedown(evt); }); this.container.mouseup(function(evt) { - return _this.container_mouseup(evt); + _this.container_mouseup(evt); }); this.container.mouseenter(function(evt) { - return _this.mouse_enter(evt); + _this.mouse_enter(evt); }); this.container.mouseleave(function(evt) { - return _this.mouse_leave(evt); - }); - this.container.find(".chzn-single").bind("focus", function(evt) { - _this.dropdown.css({ - "display": "block" - }); - return _this.search_field.focus(); + _this.mouse_leave(evt); }); this.search_results.mouseup(function(evt) { - return _this.search_results_mouseup(evt); + _this.search_results_mouseup(evt); }); this.search_results.mouseover(function(evt) { - return _this.search_results_mouseover(evt); + _this.search_results_mouseover(evt); }); this.search_results.mouseout(function(evt) { - return _this.search_results_mouseout(evt); + _this.search_results_mouseout(evt); + }); + this.search_results.bind('mousewheel DOMMouseScroll', function(evt) { + _this.search_results_mousewheel(evt); }); this.form_field_jq.bind("liszt:updated", function(evt) { - return _this.results_update_field(evt); + _this.results_update_field(evt); }); this.form_field_jq.bind("liszt:activate", function(evt) { - return _this.activate_field(evt); + _this.activate_field(evt); }); this.form_field_jq.bind("liszt:open", function(evt) { - return _this.container_mousedown(evt); + _this.container_mousedown(evt); }); this.search_field.blur(function(evt) { - return _this.input_blur(evt); + _this.input_blur(evt); }); this.search_field.keyup(function(evt) { - return _this.keyup_checker(evt); + _this.keyup_checker(evt); }); this.search_field.keydown(function(evt) { - return _this.keydown_checker(evt); + _this.keydown_checker(evt); + }); + this.search_field.focus(function(evt) { + _this.input_focus(evt); }); if (this.is_multiple) { - this.search_choices.click(function(evt) { - return _this.choices_click(evt); - }); - return this.search_field.focus(function(evt) { - return _this.input_focus(evt); + return this.search_choices.click(function(evt) { + _this.choices_click(evt); }); } else { return this.container.click(function(evt) { - return evt.preventDefault(); + evt.preventDefault(); }); } }; @@ -485,13 +619,11 @@ Copyright (c) 2011 by Harvest }; Chosen.prototype.container_mousedown = function(evt) { - var target_closelink; if (!this.is_disabled) { - target_closelink = evt != null ? ($(evt.target)).hasClass("search-choice-close") : false; if (evt && evt.type === "mousedown" && !this.results_showing) { - evt.stopPropagation(); + evt.preventDefault(); } - if (!this.pending_destroy_click && !target_closelink) { + if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) { if (!this.active_field) { if (this.is_multiple) { this.search_field.val(""); @@ -503,8 +635,6 @@ Copyright (c) 2011 by Harvest this.results_toggle(); } return this.activate_field(); - } else { - return this.pending_destroy_click = false; } } }; @@ -515,6 +645,19 @@ Copyright (c) 2011 by Harvest } }; + Chosen.prototype.search_results_mousewheel = function(evt) { + var delta, _ref1, _ref2; + + delta = -((_ref1 = evt.originalEvent) != null ? _ref1.wheelDelta : void 0) || ((_ref2 = evt.originialEvent) != null ? _ref2.detail : void 0); + if (delta != null) { + evt.preventDefault(); + if (evt.type === 'DOMMouseScroll') { + delta = delta * 40; + } + return this.search_results.scrollTop(delta + this.search_results.scrollTop()); + } + }; + Chosen.prototype.blur_test = function(evt) { if (!this.active_field && this.container.hasClass("chzn-container-active")) { return this.close_field(); @@ -523,24 +666,15 @@ Copyright (c) 2011 by Harvest Chosen.prototype.close_field = function() { $(document).unbind("click", this.click_test_action); - if (!this.is_multiple) { - this.selected_item.attr("tabindex", this.search_field.attr("tabindex")); - this.search_field.attr("tabindex", -1); - } this.active_field = false; this.results_hide(); this.container.removeClass("chzn-container-active"); - this.winnow_results_clear(); this.clear_backstroke(); this.show_search_field_default(); return this.search_field_scale(); }; Chosen.prototype.activate_field = function() { - if (!this.is_multiple && !this.active_field) { - this.search_field.attr("tabindex", this.selected_item.attr("tabindex")); - this.selected_item.attr("tabindex", -1); - } this.container.addClass("chzn-container-active"); this.active_field = true; this.search_field.val(this.search_field.val()); @@ -548,7 +682,7 @@ Copyright (c) 2011 by Harvest }; Chosen.prototype.test_active_click = function(evt) { - if ($(evt.target).parents('#' + this.container_id).length) { + if (this.container.is($(evt.target).closest('.chzn-container'))) { return this.active_field = true; } else { return this.close_field(); @@ -556,56 +690,33 @@ Copyright (c) 2011 by Harvest }; Chosen.prototype.results_build = function() { - var content, data, _i, _len, _ref; this.parsing = true; + this.selected_option_count = null; this.results_data = root.SelectParser.select_to_array(this.form_field); - if (this.is_multiple && this.choices > 0) { + if (this.is_multiple) { this.search_choices.find("li.search-choice").remove(); - this.choices = 0; } else if (!this.is_multiple) { - this.selected_item.addClass("chzn-default").find("span").text(this.default_text); + this.single_set_selected_text(); if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) { + this.search_field[0].readOnly = true; this.container.addClass("chzn-container-single-nosearch"); } else { + this.search_field[0].readOnly = false; this.container.removeClass("chzn-container-single-nosearch"); } } - content = ''; - _ref = this.results_data; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - data = _ref[_i]; - if (data.group) { - content += this.result_add_group(data); - } else if (!data.empty) { - content += this.result_add_option(data); - if (data.selected && this.is_multiple) { - this.choice_build(data); - } else if (data.selected && !this.is_multiple) { - this.selected_item.removeClass("chzn-default").find("span").text(data.text); - if (this.allow_single_deselect) { - this.single_deselect_control_build(); - } - } - } - } + this.update_results_content(this.results_option_build({ + first: true + })); this.search_field_disabled(); this.show_search_field_default(); this.search_field_scale(); - this.search_results.html(content); return this.parsing = false; }; - Chosen.prototype.result_add_group = function(group) { - if (!group.disabled) { - group.dom_id = this.container_id + "_g_" + group.array_index; - return '
      • ' + $("
        ").text(group.label).html() + '
      • '; - } else { - return ""; - } - }; - Chosen.prototype.result_do_highlight = function(el) { var high_bottom, high_top, maxHeight, visible_bottom, visible_top; + if (el.length) { this.result_clear_highlight(); this.result_highlight = el; @@ -631,67 +742,34 @@ Copyright (c) 2011 by Harvest }; Chosen.prototype.results_show = function() { - if (!this.is_multiple) { - this.selected_item.addClass("chzn-single-with-drop"); - if (this.result_single_selected) { - this.result_do_highlight(this.result_single_selected); - } - } else if (this.max_selected_options <= this.choices) { + if (this.is_multiple && this.max_selected_options <= this.choices_count()) { this.form_field_jq.trigger("liszt:maxselected", { chosen: this }); return false; } + this.container.addClass("chzn-with-drop"); + this.form_field_jq.trigger("liszt:showing_dropdown", { + chosen: this + }); this.results_showing = true; - this.update_position(); this.search_field.focus(); this.search_field.val(this.search_field.val()); return this.winnow_results(); }; - Chosen.prototype.update_position = function() { - var dd_top, maxHeight, offset, realDropdownTop, window_scroll; - if (this.results_showing) { - dd_top = this.is_multiple ? this.container.height() : this.container.height() - 1; - offset = this.container.offset(); - window_scroll = $(window).scrollTop(); - this.form_field_jq.trigger("liszt:showing_dropdown", { - chosen: this - }); - this.dropdown.css({ - "top": (offset.top + dd_top - window_scroll) + "px", - "left": offset.left + "px", - "width": (this.container.outerWidth(true) - 2) + "px", - "maxHeight": "99999px", - "display": "block" - }); - this.search_results.css("maxHeight", "240px"); - realDropdownTop = this.dropdown.offset().top - window_scroll; - maxHeight = $(window).height() - realDropdownTop; - if (maxHeight > 240) { - maxHeight = 240; - } - if (maxHeight < 100) { - maxHeight = 100; - } - this.dropdown.css("maxHeight", maxHeight + "px"); - return this.search_results.css("maxHeight", (maxHeight - this.search_container.height() - 10) + "px"); - } + Chosen.prototype.update_results_content = function(content) { + return this.search_results.html(content); }; Chosen.prototype.results_hide = function() { - if (!this.is_multiple) { - this.selected_item.removeClass("chzn-single-with-drop"); + if (this.results_showing) { + this.result_clear_highlight(); + this.container.removeClass("chzn-with-drop"); + this.form_field_jq.trigger("liszt:hiding_dropdown", { + chosen: this + }); } - this.result_clear_highlight(); - this.search_results.scrollTop(0); - this.form_field_jq.trigger("liszt:hiding_dropdown", { - chosen: this - }); - this.dropdown.css({ - "left": "-9000px", - "display": "none" - }); return this.results_showing = false; }; @@ -704,20 +782,34 @@ Copyright (c) 2011 by Harvest Chosen.prototype.set_tab_index = function(el) { var ti; + if (this.form_field_jq.attr("tabindex")) { ti = this.form_field_jq.attr("tabindex"); this.form_field_jq.attr("tabindex", -1); - if (this.is_multiple) { - return this.search_field.attr("tabindex", ti); - } else { - this.selected_item.attr("tabindex", ti); - return this.search_field.attr("tabindex", -1); - } + return this.search_field.attr("tabindex", ti); + } + }; + + Chosen.prototype.set_label_behavior = function() { + var _this = this; + + this.form_field_label = this.form_field_jq.parents("label"); + if (!this.form_field_label.length && this.form_field.id.length) { + this.form_field_label = $("label[for='" + this.form_field.id + "']"); + } + if (this.form_field_label.length > 0) { + return this.form_field_label.click(function(evt) { + if (_this.is_multiple) { + return _this.container_mousedown(evt); + } else { + return _this.activate_field(); + } + }); } }; Chosen.prototype.show_search_field_default = function() { - if (this.is_multiple && this.choices < 1 && !this.active_field) { + if (this.is_multiple && this.choices_count() < 1 && !this.active_field) { this.search_field.val(this.default_text); return this.search_field.addClass("default"); } else { @@ -728,15 +820,18 @@ Copyright (c) 2011 by Harvest Chosen.prototype.search_results_mouseup = function(evt) { var target; + target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); if (target.length) { this.result_highlight = target; - return this.result_select(evt); + this.result_select(evt); + return this.search_field.focus(); } }; Chosen.prototype.search_results_mouseover = function(evt) { var target; + target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); if (target) { return this.result_do_highlight(target); @@ -749,63 +844,52 @@ Copyright (c) 2011 by Harvest } }; - Chosen.prototype.choices_click = function(evt) { - evt.preventDefault(); - if (this.active_field && !($(evt.target).hasClass("search-choice" || $(evt.target).parents('.search-choice').first)) && !this.results_showing) { - return this.results_show(); - } - }; - Chosen.prototype.choice_build = function(item) { - var choice_id, html, link, + var choice, close_link, _this = this; - if (this.is_multiple && this.max_selected_options <= this.choices) { - this.form_field_jq.trigger("liszt:maxselected", { - chosen: this - }); - return false; - } - choice_id = this.container_id + "_c_" + item.array_index; - this.choices += 1; + + choice = $('
      • ', { + "class": "search-choice" + }).html("" + item.html + ""); if (item.disabled) { - html = '
      • ' + item.html + '
      • '; + choice.addClass('search-choice-disabled'); } else { - html = '
      • ' + item.html + '
      • '; + close_link = $('', { + href: '#', + "class": 'search-choice-close', + rel: item.array_index + }); + close_link.click(function(evt) { + return _this.choice_destroy_link_click(evt); + }); + choice.append(close_link); } - this.search_container.before(html); - link = $('#' + choice_id).find("a").first(); - return link.click(function(evt) { - return _this.choice_destroy_link_click(evt); - }); + return this.search_container.before(choice); }; Chosen.prototype.choice_destroy_link_click = function(evt) { evt.preventDefault(); + evt.stopPropagation(); if (!this.is_disabled) { - this.pending_destroy_click = true; return this.choice_destroy($(evt.target)); - } else { - return evt.stopPropagation; } }; Chosen.prototype.choice_destroy = function(link) { if (this.result_deselect(link.attr("rel"))) { - this.choices -= 1; this.show_search_field_default(); - if (this.is_multiple && this.choices > 0 && this.search_field.val().length < 1) { + if (this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) { this.results_hide(); } - return link.parents('li').first().remove(); + link.parents('li').first().remove(); + return this.search_field_scale(); } }; Chosen.prototype.results_reset = function() { this.form_field.options[0].selected = true; - this.selected_item.find("span").text(this.default_text); - if (!this.is_multiple) { - this.selected_item.addClass("chzn-default"); - } + this.selected_option_count = null; + this.single_set_selected_text(); this.show_search_field_default(); this.results_reset_cleanup(); this.form_field_jq.trigger("change"); @@ -815,68 +899,77 @@ Copyright (c) 2011 by Harvest }; Chosen.prototype.results_reset_cleanup = function() { - this.current_value = this.form_field_jq.val(); + this.current_selectedIndex = this.form_field.selectedIndex; return this.selected_item.find("abbr").remove(); }; Chosen.prototype.result_select = function(evt) { - var high, high_id, item, position; + var high, item; + if (this.result_highlight) { high = this.result_highlight; - high_id = high.attr("id"); this.result_clear_highlight(); + if (this.is_multiple && this.max_selected_options <= this.choices_count()) { + this.form_field_jq.trigger("liszt:maxselected", { + chosen: this + }); + return false; + } if (this.is_multiple) { - this.result_deactivate(high); + high.removeClass("active-result"); } else { this.search_results.find(".result-selected").removeClass("result-selected"); this.result_single_selected = high; - this.selected_item.removeClass("chzn-default"); } high.addClass("result-selected"); - position = high_id.substr(high_id.lastIndexOf("_") + 1); - item = this.results_data[position]; + item = this.results_data[high[0].getAttribute("data-option-array-index")]; item.selected = true; this.form_field.options[item.options_index].selected = true; + this.selected_option_count = null; if (this.is_multiple) { this.choice_build(item); } else { - this.selected_item.find("span").first().text(item.text); - if (this.allow_single_deselect) { - this.single_deselect_control_build(); - } + this.single_set_selected_text(item.text); } - if (!(evt.metaKey && this.is_multiple)) { + if (!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) { this.results_hide(); } this.search_field.val(""); - if (this.is_multiple || this.form_field_jq.val() !== this.current_value) { + if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) { this.form_field_jq.trigger("change", { 'selected': this.form_field.options[item.options_index].value }); } - this.current_value = this.form_field_jq.val(); + this.current_selectedIndex = this.form_field.selectedIndex; return this.search_field_scale(); } }; - Chosen.prototype.result_activate = function(el) { - return el.addClass("active-result"); - }; - - Chosen.prototype.result_deactivate = function(el) { - return el.removeClass("active-result"); + Chosen.prototype.single_set_selected_text = function(text) { + if (text == null) { + text = this.default_text; + } + if (text === this.default_text) { + this.selected_item.addClass("chzn-default"); + } else { + this.single_deselect_control_build(); + this.selected_item.removeClass("chzn-default"); + } + return this.selected_item.find("span").text(text); }; Chosen.prototype.result_deselect = function(pos) { - var result, result_data; + var result_data; + result_data = this.results_data[pos]; if (!this.form_field.options[result_data.options_index].disabled) { result_data.selected = false; this.form_field.options[result_data.options_index].selected = false; - result = $("#" + this.container_id + "_o_" + pos); - result.removeClass("result-selected").addClass("active-result").show(); + this.selected_option_count = null; this.result_clear_highlight(); - this.winnow_results(); + if (this.results_showing) { + this.winnow_results(); + } this.form_field_jq.trigger("change", { deselected: this.form_field.options[result_data.options_index].value }); @@ -888,105 +981,36 @@ Copyright (c) 2011 by Harvest }; Chosen.prototype.single_deselect_control_build = function() { - if (this.allow_single_deselect && this.selected_item.find("abbr").length < 1) { - return this.selected_item.find("span").first().after(""); + if (!this.allow_single_deselect) { + return; } + if (!this.selected_item.find("abbr").length) { + this.selected_item.find("span").first().after(""); + } + return this.selected_item.addClass("chzn-single-with-deselect"); }; - Chosen.prototype.winnow_results = function() { - var found, option, part, parts, regex, regexAnchor, result, result_id, results, searchText, startpos, text, zregex, _i, _j, _len, _len1, _ref; - this.no_results_clear(); - results = 0; - searchText = this.search_field.val() === this.default_text ? "" : $('
        ').text($.trim(this.search_field.val())).html(); - regexAnchor = this.search_contains ? "" : "^"; - regex = new RegExp(regexAnchor + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i'); - zregex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i'); - _ref = this.results_data; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - option = _ref[_i]; - if (!option.disabled && !option.empty) { - if (option.group) { - $('#' + option.dom_id).css('display', 'none'); - } else if (!(this.is_multiple && option.selected)) { - found = false; - result_id = option.dom_id; - result = $("#" + result_id); - if (regex.test(option.html)) { - found = true; - results += 1; - } else if (option.html.indexOf(" ") >= 0 || option.html.indexOf("[") === 0) { - parts = option.html.replace(/\[|\]/g, "").split(" "); - if (parts.length) { - for (_j = 0, _len1 = parts.length; _j < _len1; _j++) { - part = parts[_j]; - if (regex.test(part)) { - found = true; - results += 1; - } - } - } - } - if (found) { - if (searchText.length) { - startpos = option.html.search(zregex); - text = option.html.substr(0, startpos + searchText.length) + '' + option.html.substr(startpos + searchText.length); - text = text.substr(0, startpos) + '' + text.substr(startpos); - } else { - text = option.html; - } - result.html(text); - this.result_activate(result); - if (option.group_array_index != null) { - $("#" + this.results_data[option.group_array_index].dom_id).css('display', 'list-item'); - } - } else { - if (this.result_highlight && result_id === this.result_highlight.attr('id')) { - this.result_clear_highlight(); - } - this.result_deactivate(result); - } - } - } - } - if (results < 1 && searchText.length) { - return this.no_results(searchText); + Chosen.prototype.get_search_text = function() { + if (this.search_field.val() === this.default_text) { + return ""; } else { - return this.winnow_results_set_highlight(); + return $('
        ').text($.trim(this.search_field.val())).html(); } }; - Chosen.prototype.winnow_results_clear = function() { - var li, lis, _i, _len, _results; - this.search_field.val(""); - lis = this.search_results.find("li"); - _results = []; - for (_i = 0, _len = lis.length; _i < _len; _i++) { - li = lis[_i]; - li = $(li); - if (li.hasClass("group-result")) { - _results.push(li.css('display', 'auto')); - } else if (!this.is_multiple || !li.hasClass("result-selected")) { - _results.push(this.result_activate(li)); - } else { - _results.push(void 0); - } - } - return _results; - }; - Chosen.prototype.winnow_results_set_highlight = function() { var do_high, selected_results; - if (!this.result_highlight) { - selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : []; - do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first(); - if (do_high != null) { - return this.result_do_highlight(do_high); - } + + selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : []; + do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first(); + if (do_high != null) { + return this.result_do_highlight(do_high); } }; Chosen.prototype.no_results = function(terms) { var no_results_html; + no_results_html = $('
      • ' + this.results_none_found + ' ""
      • '); no_results_html.find("span").first().html(terms); return this.search_results.append(no_results_html); @@ -1003,25 +1027,21 @@ Copyright (c) 2011 by Harvest }; Chosen.prototype.keydown_arrow = function() { - var first_active, next_sib; - if (!this.result_highlight) { - first_active = this.search_results.find("li.active-result").first(); - if (first_active) { - this.result_do_highlight($(first_active)); - } - } else if (this.results_showing) { + var next_sib; + + if (this.results_showing && this.result_highlight) { next_sib = this.result_highlight.nextAll("li.active-result").first(); if (next_sib) { - this.result_do_highlight(next_sib); + return this.result_do_highlight(next_sib); } - } - if (!this.results_showing) { + } else { return this.results_show(); } }; Chosen.prototype.keyup_arrow = function() { var prev_sibs; + if (!this.results_showing && !this.is_multiple) { return this.results_show(); } else if (this.result_highlight) { @@ -1029,7 +1049,7 @@ Copyright (c) 2011 by Harvest if (prev_sibs.length) { return this.result_do_highlight(prev_sibs.first()); } else { - if (this.choices > 0) { + if (this.choices_count() > 0) { this.results_hide(); } return this.result_clear_highlight(); @@ -1039,6 +1059,7 @@ Copyright (c) 2011 by Harvest Chosen.prototype.keydown_backstroke = function() { var next_available_destroy; + if (this.pending_backstroke) { this.choice_destroy(this.pending_backstroke.find("a").first()); return this.clear_backstroke(); @@ -1063,8 +1084,9 @@ Copyright (c) 2011 by Harvest }; Chosen.prototype.keydown_checker = function(evt) { - var stroke, _ref; - stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; + var stroke, _ref1; + + stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode; this.search_field_scale(); if (stroke !== 8 && this.pending_backstroke) { this.clear_backstroke(); @@ -1087,13 +1109,15 @@ Copyright (c) 2011 by Harvest this.keyup_arrow(); break; case 40: + evt.preventDefault(); this.keydown_arrow(); break; } }; Chosen.prototype.search_field_scale = function() { - var div, h, style, style_block, styles, w, _i, _len; + var div, f_width, h, style, style_block, styles, w, _i, _len; + if (this.is_multiple) { h = 0; w = 0; @@ -1110,34 +1134,20 @@ Copyright (c) 2011 by Harvest $('body').append(div); w = div.width() + 25; div.remove(); - if (w > this.f_width - 10) { - w = this.f_width - 10; + f_width = this.container.outerWidth(); + if (w > f_width - 10) { + w = f_width - 10; } - this.search_field.css({ + return this.search_field.css({ 'width': w + 'px' }); - return this.update_position(); } }; - Chosen.prototype.generate_random_id = function() { - var string; - string = "sel" + this.generate_random_char() + this.generate_random_char() + this.generate_random_char(); - while ($("#" + string).length > 0) { - string += this.generate_random_char(); - } - return string; - }; - return Chosen; })(AbstractChosen); - get_side_border_padding = function(elmt) { - var side_border_padding; - return side_border_padding = elmt.outerWidth() - elmt.width(); - }; - - root.get_side_border_padding = get_side_border_padding; + root.Chosen = Chosen; }).call(this);