diff options
author | Thomas Tanghus <thomas@tanghus.net> | 2012-02-15 09:41:33 +0100 |
---|---|---|
committer | Thomas Tanghus <thomas@tanghus.net> | 2012-02-16 10:38:00 +0100 |
commit | fa7fabf024cf52798a52cd2406a53c333f9ec3ca (patch) | |
tree | f0553afd2dd31eb70a5756ea7b7c51e9d274cf7d | |
parent | 20553c1afe035b2e020409fd516d0288b748dc7f (diff) | |
download | nextcloud-server-fa7fabf024cf52798a52cd2406a53c333f9ec3ca.tar.gz nextcloud-server-fa7fabf024cf52798a52cd2406a53c333f9ec3ca.zip |
Minor tweaks
-rw-r--r-- | apps/contacts/css/contacts.css | 39 | ||||
-rw-r--r-- | apps/contacts/js/contacts.js | 17 | ||||
-rw-r--r-- | apps/contacts/js/jquery.jec-1.3.3.js | 863 |
3 files changed, 7 insertions, 912 deletions
diff --git a/apps/contacts/css/contacts.css b/apps/contacts/css/contacts.css index 460859fae17..8a85dd51c1e 100644 --- a/apps/contacts/css/contacts.css +++ b/apps/contacts/css/contacts.css @@ -7,8 +7,8 @@ #chooseaddressbook {margin-right: 170px; float: right;} #contacts_deletecard {position:absolute;top:15px;right:25px;} #contacts_downloadcard {position:absolute;top:15px;right:50px;} -#contacts_propertymenu_button { position:absolute;top:15px;right:150px; height: 20px; width: 150px; background:url('../../../core/img/actions/add.svg') no-repeat center; } -#contacts_propertymenu { position:absolute;top:40px;right:150px; overflow:hidden; text-overflow:ellipsis; /*border: thin solid #1d2d44;*/ -moz-box-shadow:0 0 10px #000; -webkit-box-shadow:0 0 10px #000; box-shadow:0 0 10px #000; -moz-border-radius:0.5em; -webkit-border-radius:0.5em; border-radius:0.5em; -moz-border-radius:0.5em; -webkit-border-radius:0.5em; border-radius:0.5em; } +#contacts_propertymenu_button { position:absolute;top:15px;right:150px; background:url('../../../core/img/actions/add.svg') no-repeat center; } +#contacts_propertymenu { background-color: #fff; position:absolute;top:40px;right:150px; overflow:hidden; text-overflow:ellipsis; /*border: thin solid #1d2d44;*/ -moz-box-shadow:0 0 10px #000; -webkit-box-shadow:0 0 10px #000; box-shadow:0 0 10px #000; -moz-border-radius:0.5em; -webkit-border-radius:0.5em; border-radius:0.5em; -moz-border-radius:0.5em; -webkit-border-radius:0.5em; border-radius:0.5em; } #contacts_propertymenu li { display: block; font-weight: bold; height: 20px; width: 100px; } /*#contacts_propertymenu li:first-child { border-top: thin solid #1d2d44; -moz-border-radius-topleft:0.5em; -webkit-border-top-left-radius:0.5em; border-top-left-radius:0.5em; -moz-border-radius-topright:0.5em; -webkit-border-top-right-radius:0.5em; border-top-right-radius:0.5em; } #contacts_propertymenu li:last-child { border-bottom: thin solid #1d2d44; -moz-border-radius-bottomleft:0.5em; -webkit-border-bottom-left-radius:0.5em; border-bottom-left-radius:0.5em; -moz-border-radius-bottomright:0.5em; -webkit-border-bottom-right-radius:0.5em; border-bottom-right-radius:0.5em; }*/ @@ -97,21 +97,8 @@ dl.form #edit_address_dialog > input { width: 15em; } -#edit_photo_dialog_img { - display: block; - width: 150; - height: 200; - border: thin solid black; -} -#fn { - float: left; -} -.jecEditableOption { - margin: 2px; - border-radius: 0.5em; - border: thin solid #bbb; - content: 'Custom'; -} +#edit_photo_dialog_img { display: block; width: 150; height: 200; border: thin solid black; } +#fn { float: left; } /** * Create classes form, floateven and floatodd which flows left and right respectively. */ @@ -162,13 +149,8 @@ width:auto; padding:.3em; border:1px solid #ddd; font-weight:bold; cursor:pointe background: url(../../../core/img/loading.gif) no-repeat center center; clear: right; } -#contacts_details_photo:hover { - background: #fff; -} -#contacts_details_photo_progress { - margin: 0.3em 0.3em 0.3em 7em; - clear: left; -} +#contacts_details_photo:hover { background: #fff; } +#contacts_details_photo_progress { margin: 0.3em 0.3em 0.3em 7em; clear: left; } /* Address editor */ #addressdisplay { padding: 0.5em; } dl.addresscard { background-color: #fff; float: left; width: 45%; margin: 0 0.3em 0.3em 0.3em; padding: 0; border: thin solid lightgray; } @@ -188,15 +170,6 @@ dl.addresscard dd > ul { margin: 0.3em; padding: 0.3em; } height: 10px; clear: both; } -.updatebar { - height: 30px; - clear: both; - padding-right: 170px; - border: thin solid lightgray; -} -.updatebar button { - float: left; margin: 1em; -} /*input[type="text"] { float: left; max-width: 15em; } input[type="radio"] { float: left; -khtml-appearance: none; width: 20px; height: 20px; vertical-align: middle; }*/ diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js index 9e3faec192a..30793625746 100644 --- a/apps/contacts/js/contacts.js +++ b/apps/contacts/js/contacts.js @@ -3,21 +3,6 @@ function ucwords (str) { return $1.toUpperCase(); }); } -/* TODO: Test this. - * http://snipplr.com/view/45323/remove-duplicate-values-from-array/ -Array.prototype.unique = function unique() { - var i = 0; - while (i < this.length) { - var current = this[i]; - for (k = this.length; k > i; k--) { - if (this[k] === current) { - this.splice(k,1); - } - } i++; - } - return this; -} -*/ String.prototype.strip_tags = function(){ tags = this; @@ -1337,7 +1322,7 @@ $(document).ready(function(){ } $('#contacts_propertymenu_button').live('click',function(){ - $('#contacts_propertymenu').is(':hidden') && $('#contacts_propertymenu').show() || $('#contacts_propertymenu').hide(); + $('#contacts_propertymenu').is(':hidden') && $('#contacts_propertymenu').slideDown() || $('#contacts_propertymenu').slideUp(); }); $('#contacts_propertymenu a').live('click',function(){ Contacts.UI.Card.addProperty(this); diff --git a/apps/contacts/js/jquery.jec-1.3.3.js b/apps/contacts/js/jquery.jec-1.3.3.js deleted file mode 100644 index a0367dac2ae..00000000000 --- a/apps/contacts/js/jquery.jec-1.3.3.js +++ /dev/null @@ -1,863 +0,0 @@ -/** - * jQuery jEC (jQuery Editable Combobox) 1.3.3 - * http://code.google.com/p/jquery-jec - * - * Copyright (c) 2008-2009 Lukasz Rajchel (lukasz@rajchel.pl | http://rajchel.pl) - * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) - * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. - * - * Documentation : http://code.google.com/p/jquery-jec/wiki/Documentation - * Changelog : http://code.google.com/p/jquery-jec/wiki/Changelog - * - * Contributors : Lukasz Rajchel, Artem Orlov - */ - -/*jslint maxerr: 50, indent: 4, maxlen: 120*/ -/*global Array, Math, String, clearInterval, document, jQuery, setInterval*/ -/*members ':', Handle, Remove, Set, acceptedKeys, addClass, all, append, appendTo, array, attr, before, bind, -blinkingCursor, blinkingCursorInterval, blur, bool, browser, ceil, change, charCode, classes, clearCursor, click, css, -cursorState, data, destroy, disable, each, editable, enable, eq, expr, extend, filter, find, floor, fn, focus, -focusOnNewOption, fromCharCode, get, getId, handleCursor, ignoredKeys, ignoreOptGroups, inArray, init, initJS, integer, -isArray, isPlainObject, jEC, jECTimer, jec, jecKill, jecOff, jecOn, jecPref, jecValue, keyCode, keyDown, keyPress, -keyRange, keyUp, keys, length, max, maxLength, min, msie, object, openedState, optionClasses, optionStyles, parent, -position, pref, prop, push, random, remove, removeAttr, removeClass, removeData, removeProp, safari, setEditableOption, -styles, substring, text, trigger, triggerChangeEvent, unbind, uneditable, useExistingOptions, val, value, -valueIsEditable, which*/ -(function ($) { - 'use strict'; - - $.jEC = (function () { - var pluginClass = 'jecEditableOption', cursorClass = 'hasCursor', options = {}, values = {}, lastKeyCode, - defaults, Validators, EventHandlers, Combobox, activeCombobox; - - if ($.fn.prop === undefined) { - $.fn.extend({ - 'prop': function (key, valueSet) { - if (valueSet) { - $(this).attr(key, key); - } else { - $(this).removeAttr(key); - } - }, - 'removeProp': function (key) { - $(this).removeAttr(key); - } - }); - } - - defaults = { - position: 0, - ignoreOptGroups: false, - maxLength: 255, - classes: [], - styles: {}, - optionClasses: [], - optionStyles: {}, - triggerChangeEvent: false, - focusOnNewOption: false, - useExistingOptions: false, - blinkingCursor: false, - blinkingCursorInterval: 1000, - ignoredKeys: [], - acceptedKeys: [[32, 126], [191, 382]] - }; - - Validators = (function () { - return { - integer: function (value) { - return typeof value === 'number' && Math.ceil(value) === Math.floor(value); - }, - - keyRange: function (value) { - var min, max; - if ($.isPlainObject(value)) { - min = value.min; - max = value.max; - } else if ($.isArray(value) && value.length === 2) { - min = value[0]; - max = value[1]; - } - return Validators.integer(min) && Validators.integer(max) && min <= max; - } - }; - }()); - - EventHandlers = (function () { - var getKeyCode; - - getKeyCode = function (event) { - var charCode = event.charCode; - if (charCode !== undefined && charCode !== 0) { - return charCode; - } else { - return event.keyCode; - } - }; - - return { - // focus event handler - // enables blinking cursor - focus: function () { - var opt = options[Combobox.getId($(this))]; - if (opt.blinkingCursor && $.jECTimer === undefined) { - activeCombobox = $(this); - $.jECTimer = setInterval($.jEC.handleCursor, opt.blinkingCursorInterval); - } - }, - - // blur event handler - // disables blinking cursor - blur: function () { - if ($.jECTimer !== undefined) { - clearInterval($.jECTimer); - $.jECTimer = undefined; - activeCombobox = undefined; - Combobox.clearCursor($(this)); - } - Combobox.openedState($(this), false); - }, - - // keydown event handler - // handles keys pressed on select (backspace and delete must be handled - // in keydown event in order to work in IE) - keyDown: function (event) { - var keyCode = getKeyCode(event), option, value; - - lastKeyCode = keyCode; - - switch (keyCode) { - case 8: // backspace - case 46: // delete - option = $(this).find('option.' + pluginClass); - if (option.val().length >= 1) { - value = option.text().substring(0, option.text().length - 1); - option.val(value).text(value).prop('selected', true); - } - return (keyCode !== 8); - default: - break; - } - }, - - // keypress event handler - // handles the rest of the keys (keypress event gives more informations - // about pressed keys) - keyPress: function (event) { - var keyCode = getKeyCode(event), opt = options[Combobox.getId($(this))], - option, value, specialKeys, exit = false, text; - - Combobox.clearCursor($(this)); - if (keyCode !== 9 && keyCode !== 13 && keyCode !== 27) { - // special keys codes - specialKeys = [37, 38, 39, 40, 46]; - // handle special keys - $.each(specialKeys, function (i, val) { - if (keyCode === val && keyCode === lastKeyCode) { - exit = true; - } - }); - - // don't handle ignored keys - if (!exit && $.inArray(keyCode, opt.ignoredKeys) === -1) { - // remove selection from all options - $(this).find('option:selected').removeProp('selected'); - - if ($.inArray(keyCode, opt.acceptedKeys) !== -1) { - option = $(this).find('option.' + pluginClass); - text = option.text(); - - if (text.length < opt.maxLength) { - value = text + String.fromCharCode(getKeyCode(event)); - option.val(value).text(value); - } - - option.prop('selected', true); - } - } - - return false; - } - }, - - keyUp: function () { - var opt = options[Combobox.getId($(this))]; - if (opt.triggerChangeEvent) { - $(this).trigger('change'); - } - }, - - // change event handler - // handles editable option changing based on a pre-existing values - change: function () { - var opt = options[Combobox.getId($(this))]; - if (opt.useExistingOptions) { - Combobox.setEditableOption($(this)); - } - }, - - click: function () { - if (!$.browser.safari) { - Combobox.openedState($(this), !Combobox.openedState($(this))); - } - } - }; - }()); - - // Combobox - Combobox = (function () { - var Parameters, EditableOption, generateId, setup; - - // validates and set combobox parameters - Parameters = (function () { - var Set, Remove, Handle; - - Set = (function () { - var parseKeys, Handles; - - parseKeys = function (value) { - var keys = []; - if ($.isArray(value)) { - $.each(value, function (i, val) { - var j, min, max; - if (Validators.keyRange(val)) { - if ($.isArray(val)) { - min = val[0]; - max = val[1]; - } else { - min = val.min; - max = val.max; - } - for (j = min; j <= max; j += 1) { - keys.push(j); - } - } else if (typeof val === 'number' && Validators.integer(val)) { - keys.push(val); - } - }); - } - return keys; - }; - - Handles = (function () { - return { - integer: function (elem, name, value) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined && Validators.integer(value)) { - opt[name] = value; - return true; - } - return false; - }, - bool: function (elem, name, value) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined && typeof value === 'boolean') { - opt[name] = value; - return true; - } - return false; - }, - array: function (elem, name, value) { - if (typeof value === 'string') { - value = [value]; - } - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined && $.isArray(value)) { - opt[name] = value; - return true; - } - return false; - }, - object: function (elem, name, value) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined && value !== null && $.isPlainObject(value)) { - opt[name] = value; - } - }, - keys: function (elem, name, value) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined && $.isArray(value)) { - opt[name] = parseKeys(value); - } - } - }; - }()); - - return { - position: function (elem, value) { - if (Handles.integer(elem, 'position', value)) { - var id = Combobox.getId(elem), opt = options[id], optionsCount; - optionsCount = - elem.find('option:not(.' + pluginClass + ')').length; - if (value > optionsCount) { - opt.position = optionsCount; - } - } - }, - - ignoreOptGroups: function (elem, value) { - Handles.bool(elem, 'ignoreOptGroups', value); - }, - - maxLength: function (elem, value) { - if (Handles.integer(elem, 'maxLength', value)) { - var id = Combobox.getId(elem), opt = options[id]; - if (value < 0 || value > 255) { - opt.maxLength = 255; - } - } - }, - - classes: function (elem, value) { - Handles.array(elem, 'classes', value); - }, - - optionClasses: function (elem, value) { - Handles.array(elem, 'optionClasses', value); - }, - - styles: function (elem, value) { - Handles.object(elem, 'styles', value); - }, - - optionStyles: function (elem, value) { - Handles.object(elem, 'optionStyles', value); - }, - - triggerChangeEvent: function (elem, value) { - Handles.bool(elem, 'triggerChangeEvent', value); - }, - - focusOnNewOption: function (elem, value) { - Handles.bool(elem, 'focusOnNewOption', value); - }, - - useExistingOptions: function (elem, value) { - Handles.bool(elem, 'useExistingOptions', value); - }, - - blinkingCursor: function (elem, value) { - Handles.bool(elem, 'blinkingCursor', value); - }, - - blinkingCursorInterval: function (elem, value) { - Handles.integer(elem, 'blinkingCursorInterval', value); - }, - - ignoredKeys: function (elem, value) { - Handles.keys(elem, 'ignoredKeys', value); - }, - - acceptedKeys: function (elem, value) { - Handles.keys(elem, 'acceptedKeys', value); - } - }; - }()); - - Remove = (function () { - var removeClasses, removeStyles; - - removeClasses = function (elem, classes) { - $.each(classes, function (i, val) { - elem.removeClass(val); - }); - }; - - removeStyles = function (elem, styles) { - $.each(styles, function (key) { - elem.css(key, ''); - }); - }; - - return { - classes: function (elem) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined) { - removeClasses(elem, opt.classes); - } - }, - - optionClasses: function (elem) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined) { - removeClasses(elem.find('option.' + pluginClass), - opt.optionClasses); - } - }, - - styles: function (elem) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined) { - removeStyles(elem, opt.styles); - } - }, - - optionStyles: function (elem) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined) { - removeStyles(elem.find('option.' + pluginClass), - opt.optionStyles); - } - }, - - all: function (elem) { - Remove.classes(elem); - Remove.optionClasses(elem); - Remove.styles(elem); - Remove.optionStyles(elem); - } - }; - }()); - - Handle = (function () { - var setClasses, setStyles; - - setClasses = function (elem, classes) { - $.each(classes, function (i, val) { - elem.addClass(String(val)); - }); - }; - - setStyles = function (elem, styles) { - $.each(styles, function (key, val) { - elem.css(key, val); - }); - }; - - return { - position: function (elem) { - var opt = options[Combobox.getId(elem)], option, uneditableOptions, container; - option = elem.find('option.' + pluginClass); - - uneditableOptions = elem.find('option:not(.' + pluginClass + ')'); - if (opt.position < uneditableOptions.length) { - container = uneditableOptions.eq(opt.position); - - if (!opt.ignoreOptGroups && container.parent('optgroup').length > 0) { - uneditableOptions.eq(opt.position).parent().before(option); - } else { - uneditableOptions.eq(opt.position).before(option); - } - } else { - elem.append(option); - } - }, - - classes: function (elem) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined) { - setClasses(elem, opt.classes); - } - }, - - optionClasses: function (elem) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined) { - setClasses(elem.find('option.' + pluginClass), opt.optionClasses); - } - }, - - styles: function (elem) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined) { - setStyles(elem, opt.styles); - } - }, - - optionStyles: function (elem) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined) { - setStyles(elem.find('option.' + pluginClass), opt.optionStyles); - } - }, - - focusOnNewOption: function (elem) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined && opt.focusOnNewOption) { - elem.find(':not(option.' + pluginClass + ')').removeProp('selected'); - elem.find('option.' + pluginClass).prop('selected', true); - } - }, - - useExistingOptions: function (elem) { - var id = Combobox.getId(elem), opt = options[id]; - if (opt !== undefined && opt.useExistingOptions) { - Combobox.setEditableOption(elem); - } - }, - - all: function (elem) { - Handle.position(elem); - Handle.classes(elem); - Handle.optionClasses(elem); - Handle.styles(elem); - Handle.optionStyles(elem); - Handle.focusOnNewOption(elem); - Handle.useExistingOptions(elem); - } - }; - }()); - - return { - Set: Set, - Remove: Remove, - Handle: Handle - }; - }()); - - EditableOption = (function () { - return { - init: function (elem) { - if (!elem.find('option.' + pluginClass).length) { - var editableOption = $('<option>'); - editableOption.addClass(pluginClass); - elem.append(editableOption); - } - - elem.bind('keydown', EventHandlers.keyDown); - elem.bind('keypress', EventHandlers.keyPress); - elem.bind('keyup', EventHandlers.keyUp); - elem.bind('change', EventHandlers.change); - elem.bind('focus', EventHandlers.focus); - elem.bind('blur', EventHandlers.blur); - elem.bind('click', EventHandlers.click); - }, - - destroy: function (elem) { - elem.find('option.' + pluginClass).remove(); - - elem.unbind('keydown', EventHandlers.keyDown); - elem.unbind('keypress', EventHandlers.keyPress); - elem.unbind('keyup', EventHandlers.keyUp); - elem.unbind('change', EventHandlers.change); - elem.unbind('focus', EventHandlers.focus); - elem.unbind('blur', EventHandlers.blur); - elem.unbind('click', EventHandlers.click); - } - }; - }()); - - // generates unique identifier - generateId = function () { - while (true) { - var random = Math.floor(Math.random() * 100000); - - if (options[random] === undefined) { - return random; - } - } - }; - - // sets combobox - setup = function (elem) { - EditableOption.init(elem); - Parameters.Handle.all(elem); - }; - - // Combobox public members - return { - // create editable combobox - init: function (settings) { - return $(this).filter(':uneditable').each(function () { - var id = generateId(), elem = $(this); - - elem.data('jecId', id); - - // override passed default options - options[id] = $.extend(true, {}, defaults); - - // parse keys - Parameters.Set.ignoredKeys(elem, options[id].ignoredKeys); - Parameters.Set.acceptedKeys(elem, options[id].acceptedKeys); - - if ($.isPlainObject(settings)) { - $.each(settings, function (key, val) { - if (val !== undefined) { - switch (key) { - case 'position': - Parameters.Set.position(elem, val); - break; - case 'ignoreOptGroups': - Parameters.Set.ignoreOptGroups(elem, val); - break; - case 'maxLength': - Parameters.Set.maxLength(elem, val); - break; - case 'classes': - Parameters.Set.classes(elem, val); - break; - case 'optionClasses': - Parameters.Set.optionClasses(elem, val); - break; - case 'styles': - Parameters.Set.styles(elem, val); - break; - case 'optionStyles': - Parameters.Set.optionStyles(elem, val); - break; - case 'triggerChangeEvent': - Parameters.Set.triggerChangeEvent(elem, val); - break; - case 'focusOnNewOption': - Parameters.Set.focusOnNewOption(elem, val); - break; - case 'useExistingOptions': - Parameters.Set.useExistingOptions(elem, val); - break; - case 'blinkingCursor': - Parameters.Set.blinkingCursor(elem, val); - break; - case 'blinkingCursorInterval': - Parameters.Set.blinkingCursorInterval(elem, val); - break; - case 'ignoredKeys': - Parameters.Set.ignoredKeys(elem, val); - break; - case 'acceptedKeys': - Parameters.Set.acceptedKeys(elem, val); - break; - } - } - }); - } - - setup($(this)); - }); - }, - - // creates editable combobox without using existing select elements - initJS: function (options, settings) { - var select, addOptions; - - select = $('<select>'); - - addOptions = function (elem, options) { - if ($.isArray(options)) { - $.each(options, function (i, val) { - if ($.isPlainObject(val)) { - $.each(val, function (key, value) { - if ($.isArray(value)) { - var og = $('<optgroup>').attr('label', key); - addOptions(og, value); - og.appendTo(select); - } else if (typeof value === 'number' || typeof value === 'string') { - $('<option>').text(value).attr('value', key) - .appendTo(elem); - } - }); - } else if (typeof val === 'string' || typeof val === 'number') { - $('<option>').text(val).attr('value', val).appendTo(elem); - } - }); - } - }; - - addOptions(select, options); - - return select.jec(settings); - }, - - // destroys editable combobox - destroy: function () { - return $(this).filter(':editable').each(function () { - $(this).jecOff(); - $.removeData($(this).get(0), 'jecId'); - $.removeData($(this).get(0), 'jecCursorState'); - $.removeData($(this).get(0), 'jecOpenedState'); - }); - }, - - // enable editablecombobox - enable: function () { - return $(this).filter(':editable').each(function () { - var id = Combobox.getId($(this)), value = values[id]; - - setup($(this)); - - if (value !== undefined) { - $(this).jecValue(value); - } - }); - }, - - // disable editable combobox - disable: function () { - return $(this).filter(':editable').each(function () { - var val = $(this).find('option.' + pluginClass).val(); - values[Combobox.getId($(this))] = val; - Parameters.Remove.all($(this)); - EditableOption.destroy($(this)); - }); - }, - - // gets or sets editable option's value - value: function (value, setFocus) { - if ($(this).filter(':editable').length > 0) { - if (value === null || value === undefined) { - // get value - return $(this).find('option.' + pluginClass).val(); - } else if (typeof value === 'string' || typeof value === 'number') { - // set value - return $(this).filter(':editable').each(function () { - var option = $(this).find('option.' + pluginClass); - option.val(value).text(value); - if (typeof setFocus !== 'boolean' || setFocus) { - option.prop('selected', true); - } - }); - } - } - }, - - // gets or sets editable option's preference - pref: function (name, value) { - if ($(this).filter(':editable').length > 0) { - if (typeof name === 'string') { - if (value === null || value === undefined) { - // get preference - return options[Combobox.getId($(this))][name]; - } else { - // set preference - return $(this).filter(':editable').each(function () { - switch (name) { - case 'position': - Parameters.Set.position($(this), value); - Parameters.Handle.position($(this)); - break; - case 'classes': - Parameters.Remove.classes($(this)); - Parameters.Set.classes($(this), value); - Parameters.Handle.position($(this)); - break; - case 'optionClasses': - Parameters.Remove.optionClasses($(this)); - Parameters.Set.optionClasses($(this), value); - Parameters.Set.optionClasses($(this)); - break; - case 'styles': - Parameters.Remove.styles($(this)); - Parameters.Set.styles($(this), value); - Parameters.Set.styles($(this)); - break; - case 'optionStyles': - Parameters.Remove.optionStyles($(this)); - Parameters.Set.optionStyles($(this), value); - Parameters.Handle.optionStyles($(this)); - break; - case 'focusOnNewOption': - Parameters.Set.focusOnNewOption($(this), value); - Parameters.Handle.focusOnNewOption($(this)); - break; - case 'useExistingOptions': - Parameters.Set.useExistingOptions($(this), value); - Parameters.Handle.useExistingOptions($(this)); - break; - case 'blinkingCursor': - Parameters.Set.blinkingCursor($(this), value); - break; - case 'blinkingCursorInterval': - Parameters.Set.blinkingCursorInterval($(this), value); - break; - case 'ignoredKeys': - Parameters.Set.ignoredKeys($(this), value); - break; - case 'acceptedKeys': - Parameters.Set.acceptedKeys($(this), value); - break; - } - }); - } - } - } - }, - - // sets editable option to the value of currently selected option - setEditableOption: function (elem) { - var value = elem.find('option:selected').text(); - elem.find('option.' + pluginClass).attr('value', elem.val()).text(value).prop('selected', true); - }, - - // get combobox id - getId: function (elem) { - return elem.data('jecId'); - }, - - valueIsEditable: function (elem) { - return elem.find('option.' + pluginClass).get(0) === elem.find('option:selected').get(0); - }, - - clearCursor: function (elem) { - $(elem).find('option.' + cursorClass).each(function () { - var text = $(this).text(); - $(this).removeClass(cursorClass).text(text.substring(0, text.length - 1)); - }); - }, - - cursorState: function (elem, state) { - return elem.data('jecCursorState', state); - }, - - openedState: function (elem, state) { - return elem.data('jecOpenedState', state); - }, - - //handles editable cursor - handleCursor: function () { - if (activeCombobox !== undefined && activeCombobox !== null) { - if ($.browser.msie && Combobox.openedState(activeCombobox)) { - return; - } - - var state = Combobox.cursorState(activeCombobox), elem; - if (state) { - Combobox.clearCursor(activeCombobox); - } else if (Combobox.valueIsEditable(activeCombobox)) { - elem = activeCombobox.find('option:selected'); - elem.addClass(cursorClass).text(elem.text() + '|'); - } - Combobox.cursorState(activeCombobox, !state); - } - } - }; - }()); - - // jEC public members - return { - init: Combobox.init, - enable: Combobox.enable, - disable: Combobox.disable, - destroy: Combobox.destroy, - value: Combobox.value, - pref: Combobox.pref, - initJS: Combobox.initJS, - handleCursor: Combobox.handleCursor - }; - }()); - - // register functions - $.fn.extend({ - jec: $.jEC.init, - jecOn: $.jEC.enable, - jecOff: $.jEC.disable, - jecKill: $.jEC.destroy, - jecValue: $.jEC.value, - jecPref: $.jEC.pref - }); - - $.extend({ - jec: $.jEC.initJS - }); - - // register selectors - $.extend($.expr[':'], { - editable: function (a) { - var data = $(a).data('jecId'); - return data !== null && data !== undefined; - }, - - uneditable: function (a) { - var data = $(a).data('jecId'); - return data === null || data === undefined; - } - }); - -}(jQuery));
\ No newline at end of file |