js dependencies update

This commit is contained in:
Athou
2013-10-13 10:49:03 +02:00
parent 3fec1c6890
commit 94f469a6b1
22 changed files with 878 additions and 510 deletions

View File

@@ -3,22 +3,24 @@
<group name="lib">
<js minimize="false">/vendor/jquery/*.js</js>
<js minimize="false">/vendor/select2/*.js</js>
<js minimize="false">/vendor/lodash/*.js</js>
<js minimize="false">/vendor/jqueryui/*.js</js>
<js minimize="false">/vendor/jquery-mousewheel/*.js</js>
<js minimize="false">/vendor/bootstrap/*.js</js>
<js minimize="false">/vendor/angularjs/*.js</js>
<js minimize="false">/vendor/angularui/*.js</js>
<js minimize="false">/vendor/angularui-bootstrap/*.js</js>
<js minimize="false">/vendor/angularui-state/*.js</js>
<js minimize="false">/vendor/ui-utils/*.js</js>
<js minimize="false">/vendor/ui-select2/*.js</js>
<js minimize="false">/vendor/ui-bootstrap/*.js</js>
<js minimize="false">/vendor/ui-state/*.js</js>
<js minimize="false">/vendor/mousetrap/*.js</js>
<js minimize="false">/vendor/nggrid/*.js</js>
<js minimize="false">/vendor/nginfinitescroll/*.js</js>
<js minimize="false">/vendor/spinjs/*.js</js>
<js minimize="false">/vendor/momentjs/*.js</js>
<css minimize="false">/vendor/select2/*.css</css>
<css minimize="false">/vendor/bootstrap/*.css</css>
<css minimize="false">/vendor/angularui/*.css</css>
<css minimize="false">/vendor/fontawesome/css/*.css</css>
<css minimize="false">/vendor/zocial/*.css</css>
<css minimize="false">/vendor/nggrid/*.css</css>

View File

@@ -1,4 +1,4 @@
var app = angular.module('commafeed', ['ui', 'ui.bootstrap', 'ui.state', 'commafeed.directives', 'commafeed.controllers',
var app = angular.module('commafeed', ['ui.utils', 'ui.bootstrap', 'ui.state', 'ui.select2', 'commafeed.directives', 'commafeed.controllers',
'commafeed.services', 'commafeed.filters', 'ngSanitize', 'infinite-scroll', 'ngGrid']);
app.config(['$routeProvider', '$stateProvider', '$urlRouterProvider', '$httpProvider', '$compileProvider',

View File

@@ -1,5 +1,5 @@
<li>
<div class="pointer tree-item" ui-if="showLabel" ng-class="getClass(level - 1)" droppable="node">
<div class="pointer tree-item" ng-if="showLabel" ng-class="getClass(level - 1)" droppable="node">
<div class="dropdown pull-right">
<div class="pull-right" ng-click="showCategoryDetails(node)">
<i class="icon-wrench config pointer"></i>

View File

@@ -1,3 +1,3 @@
<div ng-controller="FooterController">
<iframe ui-if="subToMeUrl" style="display:none;" ng-src='https://www.subtome.com/register-no-ui.html?name={{subToMeName}}&url={{subToMeUrl}}'></iframe>
<iframe ng-if="subToMeUrl" style="display:none;" ng-src='https://www.subtome.com/register-no-ui.html?name={{subToMeName}}&url={{subToMeUrl}}'></iframe>
</div>

View File

@@ -16,7 +16,7 @@
<input type="button" class="btn" ng-click="autoMerge()" value="Auto merge selected" />
</div>
<table class="table table-condensed table-hover" ui-if="counts">
<table class="table table-condensed table-hover" ng-if="counts">
<thead>
<tr>
<th></th>
@@ -33,7 +33,7 @@
</tbody>
</table>
<div ui-if="current">
<div ng-if="current">
<div>
Merge
<select ng-model="mergeData.feedIds" size="30" multiple="multiple" class="input-block-level"

View File

@@ -3,7 +3,7 @@
<h3>${details.category_details}</h3>
</div>
<form name="form" class="form-horizontal" ng-submit="save()">
<div class="control-group" ng-class="{error : !form.name.$valid}" ui-if="!isMeta()">
<div class="control-group" ng-class="{error : !form.name.$valid}" ng-if="!isMeta()">
<label class="control-label">${details.name}</label>
<div class="controls">
<input type="text" name="name" ng-model="category.name" class="input-block-level" required></input>
@@ -11,7 +11,7 @@
</div>
</div>
<div class="control-group" ng-class="{error : !form.category.$valid}" ui-if="!isMeta()">
<div class="control-group" ng-class="{error : !form.category.$valid}" ng-if="!isMeta()">
<label class="control-label">${details.parent_category}</label>
<div class="controls">
<select name="category" class="input-block-level" ng-model="category.parentId"
@@ -21,7 +21,7 @@
</div>
</div>
<div class="control-group" ui-if="!isMeta()">
<div class="control-group" ng-if="!isMeta()">
<label class="control-label">${details.position}</label>
<div class="controls">
<input type="number" min="0" ng-model="category.position" />
@@ -37,9 +37,9 @@
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary" ui-if="!isMeta()">${global.save}</button>
<button type="submit" class="btn btn-primary" ng-if="!isMeta()">${global.save}</button>
<button type="button" class="btn" ng-click="back()">${global.cancel}</button>
<button type="button" class="btn btn-danger" ng-click="deleteCategory()" ui-if="!isMeta()">${global.delete}</button>
<button type="button" class="btn btn-danger" ng-click="deleteCategory()" ng-if="!isMeta()">${global.delete}</button>
</div>
</form>

View File

@@ -1,5 +1,5 @@
<div ng-class="{expanded: settingsService.settings.viewMode == 'expanded'}">
<div class="entrylist-header" ui-if="name">
<div class="entrylist-header" ng-if="name">
<h3>
<span ng-switch on="selectedId">
<span ng-switch-when="all">${tree.all}</span>
@@ -36,17 +36,17 @@
<i class="icon-external-link"></i>
</a>
</div>
<div class="entry-body" ui-if="settingsService.settings.viewMode == 'expanded' || (isOpen && current == entry)" ng-mouseup="bodyClicked(entry, $event)"
<div class="entry-body" ng-if="settingsService.settings.viewMode == 'expanded' || (isOpen && current == entry)" ng-mouseup="bodyClicked(entry, $event)"
ng-class="{rtl: entry.rtl}">
<div class="entry-header">
<div class="entry-title">
<a href="{{entry.url}}" target="_blank" ng-bind-html-unsafe="entry.title | highlight:keywords"></a>
<div class="entry-subtitle">
<span class="entry-source" ui-if="selectedType == 'category'">
<span class="entry-source" ng-if="selectedType == 'category'">
<span class="entry-source-prefix">${view.entry_source}</span>
<a ng-click="goToFeed(entry.feedId)" class="pointer bidi-embed"><span>{{entry.feedName}}</span></a>
</span>
<span class="entry-author" ui-if="entry.author">
<span class="entry-author" ng-if="entry.author">
<span class="entry-author-prefix">${view.entry_author}</span>
<span class="entry-author-name">{{entry.author}}</span>
</span>
@@ -56,17 +56,17 @@
<div class="entry-body-content">
<div ng-bind-html-unsafe="entry.content | highlight:keywords"></div>
<div class="entry-enclosure" ui-if="entry.enclosureType">
<video controls ui-if="entry.enclosureType && entry.enclosureType.indexOf('video') == 0">
<div class="entry-enclosure" ng-if="entry.enclosureType">
<video controls ng-if="entry.enclosureType && entry.enclosureType.indexOf('video') == 0">
<source src="{{entry.enclosureUrl}}" type="{{entry.enclosureType}}" />
</video>
<audio controls ui-if="entry.enclosureType && entry.enclosureType.indexOf('audio') == 0">
<audio controls ng-if="entry.enclosureType && entry.enclosureType.indexOf('audio') == 0">
<source src="{{entry.enclosureUrl}}" type="{{entry.enclosureType}}" />
</audio>
<div ui-if="entry.enclosureType && entry.enclosureType.indexOf('image') == 0">
<div ng-if="entry.enclosureType && entry.enclosureType.indexOf('image') == 0">
<img ng-src="{{entry.enclosureUrl}}" />
</div>
<a href="{{entry.enclosureUrl}}" target="_blank" ui-if="entry.enclosureType" download>
<a href="{{entry.enclosureUrl}}" target="_blank" ng-if="entry.enclosureType" download>
${global.download}
</a>
</div>
@@ -77,12 +77,12 @@
<i ng-class="{'icon-star icon-star-yellow': entry.starred, 'icon-star-empty': !entry.starred}"
class="pointer"></i>
</span>
<label class="checkbox inline" ui-if="entry.markable">
<label class="checkbox inline" ng-if="entry.markable">
<input type="checkbox" ng-checked="!entry.read" ng-click="mark(entry, !entry.read)" class="mousetrap"></input>
${view.keep_unread}
</label>
<span class="share-buttons" ui-if="settingsService.settings.socialButtons">
<span class="share-buttons" ng-if="settingsService.settings.socialButtons">
<a href="mailto:?subject={{entry.title|escape}}&body={{entry.url|escape}}" title="E-mail" popup>
<i class="icon-envelope"></i>
</a>
@@ -127,6 +127,6 @@
<div ng-include="'templates/_shortcuts.html'"></div>
</div>
</div>
<div style="height: 30px" ui-if="settingsService.settings.viewMode != 'expanded' && entries.length != 0"></div>
<div style="height: 1000px" ui-if="settingsService.settings.viewMode == 'expanded' && entries.length != 0"></div>
<div style="height: 30px" ng-if="settingsService.settings.viewMode != 'expanded' && entries.length != 0"></div>
<div style="height: 1000px" ng-if="settingsService.settings.viewMode == 'expanded' && entries.length != 0"></div>
</div>

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
.ui-resetwrap{position:relative;display:inline-block}.ui-reset{position:absolute;top:0;right:0;z-index:2;display:none;height:100%;cursor:pointer}.ui-resetwrap:hover .ui-reset{display:block}.ui-currency-pos{color:green}.ui-currency-neg{color:red}.ui-currency-zero{color:blue}.ui-currency-pos.ui-bignum,.ui-currency-neg.ui-smallnum{font-size:110%}.ui-match{background:yellow}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,472 +0,0 @@
/******** Grid Global ********/
.nglabel {
display: block;
float: left;
font-weight: bold;
padding-right: 5px;
}
/******** Grid ********/
.ngGrid{
background-color: rgb(253, 253, 253);
}
/******** Header ********/
.ngGroupPanel{
background-color: rgb(234, 234, 234);
overflow: hidden;
border-bottom: 1px solid rgb(212,212,212);
}
.ngGroupPanelDescription{
margin-top: 5px;
margin-left: 5px;
}
.ngGroupList {
list-style-type: none;
margin: 0;
padding: 0;
}
.ngGroupItem {
float: left;
}
.ngGroupElement {
float: left;
height: 100%;
width: 100%;
}
.ngGroupName {
background-color: rgb(247,247,247);
border: 1px solid rgb(212,212,212);
padding: 3px 10px;
float: left;
margin-left: 0;
margin-top: 2px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
font-weight: bold;
}
.ngGroupItem:first-child{
margin-left: 2px;
}
.ngRemoveGroup {
width: 5px;
-moz-opacity: 0.4;
opacity: 0.4;
margin-top: -1px;
margin-left: 5px;
}
.ngRemoveGroup:hover {
color: black;
text-decoration: none;
cursor: pointer;
-moz-opacity: 0.7;
opacity: 0.7;
}
.ngGroupArrow {
width: 0;
height: 0;
border-top: 6px solid transparent;
border-bottom: 6px solid transparent;
border-left: 6px solid black;
margin-top: 10px;
margin-left: 5px;
margin-right: 5px;
float: right;
}
.ngTopPanel {
position: relative;
z-index:5;
background-color: rgb(234, 234, 234);
border-bottom: 1px solid rgb(212,212,212);
}
.ngHeaderContainer {
position: relative;
overflow: hidden;
font-weight: bold;
background-color: inherit;
}
.ngHeaderScroller {
position:absolute;
background-color: inherit;
}
.ngHeaderSortColumn{
position:absolute;
overflow: hidden;
}
.ngHeaderCell{
border-right: 1px solid rgb(212,212,212);
border-left: 1px solid rgb(212,212,212);
position: absolute;
top: 0;
bottom: 0;
background-color: inherit;
}
.ngHeaderCell:first-child{
border-left: 0;
}
.ngSortButtonUp {
position: absolute;
top: 3px;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
border-color: gray transparent;
border-style: solid;
border-width: 0 5px 5px 5px;
height: 0;
width: 0;
}
.ngSortButtonDown {
position: absolute;
top: 3px;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
border-color: gray transparent;
border-style: solid;
border-width: 5px 5px 0 5px;
height: 0;
width: 0;
}
.ngSortPriority {
position: absolute;
top: -5px;
left: 1px;
font-size: 6pt;
font-weight: bold;
}
.ngHeaderGrip {
cursor: col-resize;
width: 10px;
right: -5px;
top: 0;
height: 100%;
position: absolute;
background-color: transparent;
}
.ngHeaderText {
padding: 5px;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
white-space: nowrap;
-ms-text-overflow: ellipsis;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
overflow: hidden;
}
/******** Viewport ********/
.ngViewport{
overflow: auto;
min-height: 20px;
}
.ngCanvas{
position: relative;
}
/******** Rows ********/
.ngRow {
position: absolute;
border-bottom: 1px solid rgb(229, 229, 229);
}
.ngRow.even {
background-color: rgb(243, 243, 243);
}
.ngRow.odd {
background-color: rgb(253, 253, 253);
}
.ngRow.selected {
background-color: rgb(201, 221, 225);
}
.ngRow.canSelect {
cursor: pointer;
}
/******** Cells ********/
.ngCell {
overflow: hidden;
position: absolute;
border-right: 1px solid rgb(212,212,212);
border-left: 1px solid rgb(212,212,212);
top: 0;
bottom: 0;
background-color: inherit;
}
.ngCell:first-child{
border-left: 0;
}
.ngCellElement:focus {
outline: 0;
background-color: rgb(179, 196, 199);
}
.ngCellText {
padding: 5px;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
white-space: nowrap;
-ms-text-overflow: ellipsis;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
overflow: hidden;
}
.ngSelectionHeader {
position: absolute;
top: 11px;
left: 6px;
}
.ngGrid input[type="checkbox"] {
margin: 0;
padding: 0;
}
.ngGrid input {
vertical-align:top;
}
.ngSelectionCell{
margin-top: 9px;
margin-left: 6px;
}
.ngSelectionCheckbox{
margin-top: 9px;
margin-left: 6px;
}
.ngNoSort {
cursor:default;
}
/******** Footer ********/
.ngFooterPanel{
background-color: rgb(234, 234, 234);
padding: 0;
border-top: 1px solid rgb(212,212,212);
position: relative;
}
.ngTotalSelectContainer {
float: left;
margin: 5px;
margin-top: 7px;
}
.ngFooterSelectedItems {
padding: 2px;
}
.ngFooterTotalItems {
padding: 2px;
}
.ngFooterTotalItems.ngnoMultiSelect {
padding: 0 !important;
}
/* Aggregates */
.ngAggHeader {
position: absolute;
border: none;
}
.ngAggregate {
position: absolute;
background-color: rgb(201, 221, 225);
border-bottom: 1px solid beige;
overflow: hidden;
top: 0;
bottom: 0;
right: -1px;
left: 0;
}
.ngAggregateText {
position: absolute;
left: 27px;
top: 5px;
line-height: 20px;
white-space:nowrap;
}
.ngAggArrowExpanded {
position: absolute;
left: 8px;
bottom: 10px;
width: 0;
height: 0;
border-style: solid;
border-width: 0 0 9px 9px;
border-color: transparent transparent #000000 transparent;
}
.ngAggArrowCollapsed {
position: absolute;
left: 8px;
bottom: 10px;
width: 0;
height: 0;
border-style: solid;
border-width: 5px 0 5px 8.7px;
border-color: transparent transparent transparent #000000;
}
.ngHeaderButton {
position: absolute;
right: 2px;
top: 8px;
-moz-border-radius: 50%;
-webkit-border-radius: 50%;
border-radius: 50%;
width: 14px;
height: 14px;
z-index: 5;
background-color: rgb(179, 191, 188);
cursor: pointer;
/* width and height can be anything, as long as they're equal */
}
.ngHeaderButtonArrow {
position: absolute;
top: 4px;
left: 3px;
width: 0;
height: 0;
border-style: solid;
border-width: 6.5px 4.5px 0 4.5px;
border-color: #000 transparent transparent transparent;
/* width and height can be anything, as long as they're equal */
}
.ngColMenu {
right: 2px;
padding: 5px;
top: 25px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
background-color: #BDD0CB;
position: absolute;
border: 2px solid rgb(212,212,212);
z-index: 5;
}
.ngMenuText {
position: relative;
top: 2px;
left: 2px;
}
.ngColList {
list-style-type: none;
}
.ngColListItem {
position: relative;
right: 17px;
top: 2px;
white-space:nowrap;
}
.ngColListCheckbox {
position: relative;
right: 3px;
top: 4px;
}
/********Paging Styles **********/
.ngPagerButton{
height: 25px;
min-width: 26px;
}
.ngPagerFirstTriangle{
width: 0;
height: 0;
border-style: solid;
border-width: 5px 8.7px 5px 0;
border-color: transparent #000000 transparent transparent;
margin-left: 2px;
}
.ngPagerFirstBar{
width: 10px;
border-left: 2px solid black;
margin-top: -6px;
height: 12px;
margin-left: -3px;
}
.ngPagerLastTriangle{
width: 0;
height: 0;
border-style: solid;
border-width: 5px 0 5px 8.7px;
border-color: transparent transparent transparent #000000;
margin-left: -1px;
}
.ngPagerLastBar{
width: 10px;
border-left: 2px solid black;
margin-top: -6px;
height: 12px;
margin-left: 1px;
}
.ngPagerPrevTriangle{
margin-left: 0;
}
.ngPagerNextTriangle{
margin-left: 1px;
}
.ngGroupIcon {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAANCAYAAACZ3F9/AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAEFJREFUKFNjoAhISkr+h2J5JDZODNXGwGBsbPwfhIGAA8bGh6HaGBiAGhxAGJmND4M1gQCSM0adCsVQbcPcqQwMALWDGyDvWPefAAAAAElFTkSuQmCC);
background-repeat:no-repeat;
height: 15px;
width: 15px;
position: absolute;
right: -2px;
top: 2px;
}
.ngGroupedByIcon {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAANCAYAAACZ3F9/AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAElJREFUKFNjoAhISkr+R8LyaHwMDNXGwGBsbPwfhoGAA5mPDUO1oWpE52PDYE0gALTFAYbR+dgwWBMIoPlh1I9ADNU2NPzIwAAAFQYI9E4OLvEAAAAASUVORK5CYII=);
background-repeat:no-repeat;
height: 15px;
width: 15px;
position: absolute;
right: -2px;
top: 2px;
}
.ngPinnedIcon {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAmElEQVQoU33PQapBURjA8UtkwJuaWYGSgfQWYBMvczPmTCzAAGVuaA228BZhRCkDGSmE31FucuRfvzq3vr5zT/JSjSU7DsypEPXDkDVn2hSIytJhw4kWGaLCxgHh2gt/RBuLzNhz5caWPjnSqqw4EraFfwznf8qklWjwy4IRTerkiQoPGtPl40OehcEJvcfXl8LglLfBJLkDcMgbgHlHhK8AAAAASUVORK5CYII=);
background-repeat: no-repeat;
position: absolute;
right: 5px;
top: 5px;
height: 10px;
width: 10px;
}
.ngUnPinnedIcon {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAmElEQVQoU33PQapBURjA8UtkwJuaWYGSgfQWYBMvczPmTCzAAGVuaA228BZhRCkDGSmE31FucuRfvzq3vr5zT/JSjSU7DsypEPXDkDVn2hSIytJhw4kWGaLCxgHh2gt/RBuLzNhz5caWPjnSqqw4EraFfwznf8qklWjwy4IRTerkiQoPGtPl40OehcEJvcfXl8LglLfBJLkDcMgbgHlHhK8AAAAASUVORK5CYII=);
background-repeat: no-repeat;
position: absolute;
height: 10px;
width: 10px;
right: 5px;
top: 5px;
}
.ngGroupingNumber {
position: absolute;
right: -10px;
top: -2px;
}

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,615 @@
/*
Version: 3.4.3 Timestamp: Tue Sep 17 06:47:14 PDT 2013
*/
.select2-container {
margin: 0;
position: relative;
display: inline-block;
/* inline-block for ie7 */
zoom: 1;
*display: inline;
vertical-align: middle;
}
.select2-container,
.select2-drop,
.select2-search,
.select2-search input {
/*
Force border-box so that % widths fit the parent
container without overlap because of margin/padding.
More Info : http://www.quirksmode.org/css/box.html
*/
-webkit-box-sizing: border-box; /* webkit */
-moz-box-sizing: border-box; /* firefox */
box-sizing: border-box; /* css3 */
}
.select2-container .select2-choice {
display: block;
height: 26px;
padding: 0 0 0 8px;
overflow: hidden;
position: relative;
border: 1px solid #aaa;
white-space: nowrap;
line-height: 26px;
color: #444;
text-decoration: none;
border-radius: 4px;
background-clip: padding-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-color: #fff;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));
background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);
background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);
background-image: linear-gradient(top, #fff 0%, #eee 50%);
}
.select2-container.select2-drop-above .select2-choice {
border-bottom-color: #aaa;
border-radius: 0 0 4px 4px;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));
background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);
background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);
background-image: linear-gradient(top, #eee 0%, #fff 90%);
}
.select2-container.select2-allowclear .select2-choice .select2-chosen {
margin-right: 42px;
}
.select2-container .select2-choice > .select2-chosen {
margin-right: 26px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.select2-container .select2-choice abbr {
display: none;
width: 12px;
height: 12px;
position: absolute;
right: 24px;
top: 8px;
font-size: 1px;
text-decoration: none;
border: 0;
background: url('select2.png') right top no-repeat;
cursor: pointer;
outline: 0;
}
.select2-container.select2-allowclear .select2-choice abbr {
display: inline-block;
}
.select2-container .select2-choice abbr:hover {
background-position: right -11px;
cursor: pointer;
}
.select2-drop-mask {
border: 0;
margin: 0;
padding: 0;
position: fixed;
left: 0;
top: 0;
min-height: 100%;
min-width: 100%;
height: auto;
width: auto;
opacity: 0;
z-index: 9998;
/* styles required for IE to work */
background-color: #fff;
filter: alpha(opacity=0);
}
.select2-drop {
width: 100%;
margin-top: -1px;
position: absolute;
z-index: 9999;
top: 100%;
background: #fff;
color: #000;
border: 1px solid #aaa;
border-top: 0;
border-radius: 0 0 4px 4px;
-webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
}
.select2-drop-auto-width {
border-top: 1px solid #aaa;
width: auto;
}
.select2-drop-auto-width .select2-search {
padding-top: 4px;
}
.select2-drop.select2-drop-above {
margin-top: 1px;
border-top: 1px solid #aaa;
border-bottom: 0;
border-radius: 4px 4px 0 0;
-webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
}
.select2-drop-active {
border: 1px solid #5897fb;
border-top: none;
}
.select2-drop.select2-drop-above.select2-drop-active {
border-top: 1px solid #5897fb;
}
.select2-container .select2-choice .select2-arrow {
display: inline-block;
width: 18px;
height: 100%;
position: absolute;
right: 0;
top: 0;
border-left: 1px solid #aaa;
border-radius: 0 4px 4px 0;
background-clip: padding-box;
background: #ccc;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);
background-image: linear-gradient(top, #ccc 0%, #eee 60%);
}
.select2-container .select2-choice .select2-arrow b {
display: block;
width: 100%;
height: 100%;
background: url('select2.png') no-repeat 0 1px;
}
.select2-search {
display: inline-block;
width: 100%;
min-height: 26px;
margin: 0;
padding-left: 4px;
padding-right: 4px;
position: relative;
z-index: 10000;
white-space: nowrap;
}
.select2-search input {
width: 100%;
height: auto !important;
min-height: 26px;
padding: 4px 20px 4px 5px;
margin: 0;
outline: 0;
font-family: sans-serif;
font-size: 1em;
border: 1px solid #aaa;
border-radius: 0;
-webkit-box-shadow: none;
box-shadow: none;
background: #fff url('select2.png') no-repeat 100% -22px;
background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
background: url('select2.png') no-repeat 100% -22px, linear-gradient(top, #fff 85%, #eee 99%);
}
.select2-drop.select2-drop-above .select2-search input {
margin-top: 4px;
}
.select2-search input.select2-active {
background: #fff url('select2-spinner.gif') no-repeat 100%;
background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(top, #fff 85%, #eee 99%);
}
.select2-container-active .select2-choice,
.select2-container-active .select2-choices {
border: 1px solid #5897fb;
outline: none;
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
box-shadow: 0 0 5px rgba(0, 0, 0, .3);
}
.select2-dropdown-open .select2-choice {
border-bottom-color: transparent;
-webkit-box-shadow: 0 1px 0 #fff inset;
box-shadow: 0 1px 0 #fff inset;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
background-color: #eee;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));
background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);
background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
background-image: linear-gradient(top, #fff 0%, #eee 50%);
}
.select2-dropdown-open.select2-drop-above .select2-choice,
.select2-dropdown-open.select2-drop-above .select2-choices {
border: 1px solid #5897fb;
border-top-color: transparent;
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));
background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);
background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
background-image: linear-gradient(bottom, #fff 0%, #eee 50%);
}
.select2-dropdown-open .select2-choice .select2-arrow {
background: transparent;
border-left: none;
filter: none;
}
.select2-dropdown-open .select2-choice .select2-arrow b {
background-position: -18px 1px;
}
/* results */
.select2-results {
max-height: 200px;
padding: 0 0 0 4px;
margin: 4px 4px 4px 0;
position: relative;
overflow-x: hidden;
overflow-y: auto;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
.select2-results ul.select2-result-sub {
margin: 0;
padding-left: 0;
}
.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px }
.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px }
.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px }
.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px }
.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px }
.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px }
.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px }
.select2-results li {
list-style: none;
display: list-item;
background-image: none;
}
.select2-results li.select2-result-with-children > .select2-result-label {
font-weight: bold;
}
.select2-results .select2-result-label {
padding: 3px 7px 4px;
margin: 0;
cursor: pointer;
min-height: 1em;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.select2-results .select2-highlighted {
background: #3875d7;
color: #fff;
}
.select2-results li em {
background: #feffde;
font-style: normal;
}
.select2-results .select2-highlighted em {
background: transparent;
}
.select2-results .select2-highlighted ul {
background: #fff;
color: #000;
}
.select2-results .select2-no-results,
.select2-results .select2-searching,
.select2-results .select2-selection-limit {
background: #f4f4f4;
display: list-item;
}
/*
disabled look for disabled choices in the results dropdown
*/
.select2-results .select2-disabled.select2-highlighted {
color: #666;
background: #f4f4f4;
display: list-item;
cursor: default;
}
.select2-results .select2-disabled {
background: #f4f4f4;
display: list-item;
cursor: default;
}
.select2-results .select2-selected {
display: none;
}
.select2-more-results.select2-active {
background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;
}
.select2-more-results {
background: #f4f4f4;
display: list-item;
}
/* disabled styles */
.select2-container.select2-container-disabled .select2-choice {
background-color: #f4f4f4;
background-image: none;
border: 1px solid #ddd;
cursor: default;
}
.select2-container.select2-container-disabled .select2-choice .select2-arrow {
background-color: #f4f4f4;
background-image: none;
border-left: 0;
}
.select2-container.select2-container-disabled .select2-choice abbr {
display: none;
}
/* multiselect */
.select2-container-multi .select2-choices {
height: auto !important;
height: 1%;
margin: 0;
padding: 0;
position: relative;
border: 1px solid #aaa;
cursor: text;
overflow: hidden;
background-color: #fff;
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));
background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);
background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);
background-image: linear-gradient(top, #eee 1%, #fff 15%);
}
.select2-locked {
padding: 3px 5px 3px 5px !important;
}
.select2-container-multi .select2-choices {
min-height: 26px;
}
.select2-container-multi.select2-container-active .select2-choices {
border: 1px solid #5897fb;
outline: none;
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
box-shadow: 0 0 5px rgba(0, 0, 0, .3);
}
.select2-container-multi .select2-choices li {
float: left;
list-style: none;
}
.select2-container-multi .select2-choices .select2-search-field {
margin: 0;
padding: 0;
white-space: nowrap;
}
.select2-container-multi .select2-choices .select2-search-field input {
padding: 5px;
margin: 1px 0;
font-family: sans-serif;
font-size: 100%;
color: #666;
outline: 0;
border: 0;
-webkit-box-shadow: none;
box-shadow: none;
background: transparent !important;
}
.select2-container-multi .select2-choices .select2-search-field input.select2-active {
background: #fff url('select2-spinner.gif') no-repeat 100% !important;
}
.select2-default {
color: #999 !important;
}
.select2-container-multi .select2-choices .select2-search-choice {
padding: 3px 5px 3px 18px;
margin: 3px 0 3px 5px;
position: relative;
line-height: 13px;
color: #333;
cursor: default;
border: 1px solid #aaaaaa;
border-radius: 3px;
-webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
background-clip: padding-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-color: #e4e4e4;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', 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%, #eee));
background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
}
.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {
cursor: default;
}
.select2-container-multi .select2-choices .select2-search-choice-focus {
background: #d4d4d4;
}
.select2-search-choice-close {
display: block;
width: 12px;
height: 13px;
position: absolute;
right: 3px;
top: 4px;
font-size: 1px;
outline: none;
background: url('select2.png') right top no-repeat;
}
.select2-container-multi .select2-search-choice-close {
left: 3px;
}
.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {
background-position: right -11px;
}
.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {
background-position: right -11px;
}
/* disabled styles */
.select2-container-multi.select2-container-disabled .select2-choices {
background-color: #f4f4f4;
background-image: none;
border: 1px solid #ddd;
cursor: default;
}
.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
padding: 3px 5px 3px 5px;
border: 1px solid #ddd;
background-image: none;
background-color: #f4f4f4;
}
.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;
background: none;
}
/* end multiselect */
.select2-result-selectable .select2-match,
.select2-result-unselectable .select2-match {
text-decoration: underline;
}
.select2-offscreen, .select2-offscreen:focus {
clip: rect(0 0 0 0) !important;
width: 1px !important;
height: 1px !important;
border: 0 !important;
margin: 0 !important;
padding: 0 !important;
overflow: hidden !important;
position: absolute !important;
outline: 0 !important;
left: 0px !important;
top: 0px !important;
}
.select2-display-none {
display: none;
}
.select2-measure-scrollbar {
position: absolute;
top: -10000px;
left: -10000px;
width: 100px;
height: 100px;
overflow: scroll;
}
/* Retina-ize icons */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) {
.select2-search input, .select2-search-choice-close, .select2-container .select2-choice abbr, .select2-container .select2-choice .select2-arrow b {
background-image: url('select2x2.png') !important;
background-repeat: no-repeat !important;
background-size: 60px 40px !important;
}
.select2-search input {
background-position: 100% -21px !important;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

View File

@@ -0,0 +1,201 @@
/**
* Enhanced Select2 Dropmenus
*
* @AJAX Mode - When in this mode, your value will be an object (or array of objects) of the data used by Select2
* This change is so that you do not have to do an additional query yourself on top of Select2's own query
* @params [options] {object} The configuration options passed to $.fn.select2(). Refer to the documentation
*/
angular.module('ui.select2', []).value('uiSelect2Config', {}).directive('uiSelect2', ['uiSelect2Config', '$timeout', function (uiSelect2Config, $timeout) {
var options = {};
if (uiSelect2Config) {
angular.extend(options, uiSelect2Config);
}
return {
require: 'ngModel',
compile: function (tElm, tAttrs) {
var watch,
repeatOption,
repeatAttr,
isSelect = tElm.is('select'),
isMultiple = angular.isDefined(tAttrs.multiple);
// Enable watching of the options dataset if in use
if (tElm.is('select')) {
repeatOption = tElm.find('option[ng-repeat], option[data-ng-repeat]');
if (repeatOption.length) {
repeatAttr = repeatOption.attr('ng-repeat') || repeatOption.attr('data-ng-repeat');
watch = jQuery.trim(repeatAttr.split('|')[0]).split(' ').pop();
}
}
return function (scope, elm, attrs, controller) {
// instance-specific options
var opts = angular.extend({}, options, scope.$eval(attrs.uiSelect2));
/*
Convert from Select2 view-model to Angular view-model.
*/
var convertToAngularModel = function(select2_data) {
var model;
if (opts.simple_tags) {
model = [];
angular.forEach(select2_data, function(value, index) {
model.push(value.id);
});
} else {
model = select2_data;
}
return model;
};
/*
Convert from Angular view-model to Select2 view-model.
*/
var convertToSelect2Model = function(angular_data) {
var model = [];
if (!angular_data) {
return model;
}
if (opts.simple_tags) {
model = [];
angular.forEach(
angular_data,
function(value, index) {
model.push({'id': value, 'text': value});
});
} else {
model = angular_data;
}
return model;
};
if (isSelect) {
// Use <select multiple> instead
delete opts.multiple;
delete opts.initSelection;
} else if (isMultiple) {
opts.multiple = true;
}
if (controller) {
// Watch the model for programmatic changes
scope.$watch(tAttrs.ngModel, function(current, old) {
if (!current) {
return;
}
if (current === old) {
return;
}
controller.$render();
}, true);
controller.$render = function () {
if (isSelect) {
elm.select2('val', controller.$viewValue);
} else {
if (opts.multiple) {
elm.select2(
'data', convertToSelect2Model(controller.$viewValue));
} else {
if (angular.isObject(controller.$viewValue)) {
elm.select2('data', controller.$viewValue);
} else if (!controller.$viewValue) {
elm.select2('data', null);
} else {
elm.select2('val', controller.$viewValue);
}
}
}
};
// Watch the options dataset for changes
if (watch) {
scope.$watch(watch, function (newVal, oldVal, scope) {
if (!newVal) {
return;
}
// Delayed so that the options have time to be rendered
$timeout(function () {
elm.select2('val', controller.$viewValue);
// Refresh angular to remove the superfluous option
elm.trigger('change');
});
});
}
// Update valid and dirty statuses
controller.$parsers.push(function (value) {
var div = elm.prev();
div
.toggleClass('ng-invalid', !controller.$valid)
.toggleClass('ng-valid', controller.$valid)
.toggleClass('ng-invalid-required', !controller.$valid)
.toggleClass('ng-valid-required', controller.$valid)
.toggleClass('ng-dirty', controller.$dirty)
.toggleClass('ng-pristine', controller.$pristine);
return value;
});
if (!isSelect) {
// Set the view and model value and update the angular template manually for the ajax/multiple select2.
elm.bind("change", function () {
if (scope.$$phase) {
return;
}
scope.$apply(function () {
controller.$setViewValue(
convertToAngularModel(elm.select2('data')));
});
});
if (opts.initSelection) {
var initSelection = opts.initSelection;
opts.initSelection = function (element, callback) {
initSelection(element, function (value) {
controller.$setViewValue(convertToAngularModel(value));
callback(value);
});
};
}
}
}
elm.bind("$destroy", function() {
elm.select2("destroy");
});
attrs.$observe('disabled', function (value) {
elm.select2('enable', !value);
});
attrs.$observe('readonly', function (value) {
elm.select2('readonly', !!value);
});
if (attrs.ngMultiple) {
scope.$watch(attrs.ngMultiple, function(newVal) {
elm.select2(opts);
});
}
// Initialize the plugin late so that the injected DOM does not disrupt the template compiler
$timeout(function () {
elm.select2(opts);
// Set initial value - I'm not sure about this but it seems to need to be there
elm.val(controller.$viewValue);
// important!
controller.$render();
// Not sure if I should just check for !isSelect OR if I should check for 'tags' key
if (!opts.initSelection && !isSelect) {
controller.$setViewValue(
convertToAngularModel(elm.select2('data'))
);
}
});
};
}
};
}]);

File diff suppressed because one or more lines are too long