diff --git a/wire/core/AdminTheme.php b/wire/core/AdminTheme.php index 7e6a9fa4..d1f4ec69 100644 --- a/wire/core/AdminTheme.php +++ b/wire/core/AdminTheme.php @@ -62,6 +62,22 @@ abstract class AdminTheme extends WireData implements Module { */ protected $bodyClasses = array(); + /** + * Extra markup regions + * + * @var array + * + */ + protected $extraMarkup = array( + 'head' => '', + 'notices' => '', + 'body' => '', + 'masthead' => '', + 'content' => '', + 'footer' => '', + 'sidebar' => '', // sidebar not used in all admin themes + ); + /** * URLs to place in link prerender tags * @@ -161,15 +177,7 @@ abstract class AdminTheme extends WireData implements Module { * */ public function ___getExtraMarkup() { - $parts = array( - 'head' => '', - 'notices' => '', - 'body' => '', - 'masthead' => '', - 'content' => '', - 'footer' => '', - 'sidebar' => '', // sidebar not used in all admin themes - ); + $parts = $this->extraMarkup; $isLoggedin = $this->wire('user')->isLoggedin(); if($isLoggedin && $this->wire('modules')->isInstalled('InputfieldCKEditor') && $this->wire('process') instanceof WirePageEditor) { @@ -186,11 +194,38 @@ abstract class AdminTheme extends WireData implements Module { } return $parts; } - + + /** + * Add extra markup to a region in the admin theme + * + * @param string $name + * @param string $value + * + */ + public function addExtraMarkup($name, $value) { + if(!empty($this->extraMarkup[$name])) { + $this->extraMarkup[$name] .= "\n$value"; + } else { + $this->extraMarkup[$name] = $value; + } + } + + /** + * Add a class to the admin theme + * + * @param string $className + * + */ public function addBodyClass($className) { $this->bodyClasses[$className] = $className; } - + + /** + * Get the body[class] attribute string + * + * @return string + * + */ public function getBodyClass() { return trim(implode(' ', $this->bodyClasses)); } @@ -244,6 +279,8 @@ abstract class AdminTheme extends WireData implements Module { /** * Set a pre-render URL or get currently pre-render URL(s) * + * #pw-internal + * * @param string $url * @return array * diff --git a/wire/core/LanguageFunctions.php b/wire/core/LanguageFunctions.php index a13d991a..5881dac7 100644 --- a/wire/core/LanguageFunctions.php +++ b/wire/core/LanguageFunctions.php @@ -36,6 +36,9 @@ function __($text, $textdomain = null, $context = '') { $textdomain = $traces[1]['file']; } if(is_null($textdomain)) $textdomain = 'site'; + } else if($textdomain === 'common') { + // common translation + $textdomain = 'wire/modules/LanguageSupport/LanguageTranslator.php'; } $value = htmlspecialchars($language->translator()->getTranslation($textdomain, $text, $context), ENT_QUOTES, 'UTF-8'); if($value === "=") { diff --git a/wire/core/Modules.php b/wire/core/Modules.php index d2504aa5..307afcaf 100644 --- a/wire/core/Modules.php +++ b/wire/core/Modules.php @@ -34,7 +34,7 @@ * @method bool|int delete($class) * @method bool uninstall($class) * @method bool saveModuleConfigData($className, array $configData) Alias of saveConfig() method #pw-internal - * @method bool saveConfig($class, array $data) + * @method bool saveConfig($class, $data, $value = null) * @method InputfieldWrapper|null getModuleConfigInputfields($moduleName, InputfieldWrapper $form = null) #pw-internal * @method void moduleVersionChanged(Module $module, $fromVersion, $toVersion) #pw-internal * diff --git a/wire/core/PagesEditor.php b/wire/core/PagesEditor.php index 2f021bd0..53380e09 100644 --- a/wire/core/PagesEditor.php +++ b/wire/core/PagesEditor.php @@ -1062,23 +1062,27 @@ class PagesEditor extends Wire { if(is_string($options)) $options = Selectors::keyValueStringToArray($options); if(!isset($options['recursionLevel'])) $options['recursionLevel'] = 0; // recursion level - // if parent is not changing, we have to modify name now - if(is_null($parent)) { - $parent = $page->parent; - $n = 1; - $name = $page->name . '-' . $n; + if(isset($options['set']) && isset($options['set']['name'])) { + $name = $options['set']['name']; + } else { - $name = $page->name; - $n = 0; - } + // if parent is not changing, we have to modify name now + if(is_null($parent) || $parent->id == $page->parent->id) { + $parent = $page->parent; + $n = 1; + $name = $page->name . '-' . $n; + } else { + $name = $page->name; + $n = 0; + } - // make sure that we have a unique name - - while(count($parent->children("name=$name, include=all"))) { - $name = $page->name; - $nStr = "-" . (++$n); - if(strlen($name) + strlen($nStr) > Pages::nameMaxLength) $name = substr($name, 0, Pages::nameMaxLength - strlen($nStr)); - $name .= $nStr; + // make sure that we have a unique name + while(count($parent->children("name=$name, include=all"))) { + $name = $page->name; + $nStr = "-" . (++$n); + if(strlen($name) + strlen($nStr) > Pages::nameMaxLength) $name = substr($name, 0, Pages::nameMaxLength - strlen($nStr)); + $name .= $nStr; + } } // Ensure all data is loaded for the page @@ -1144,7 +1148,7 @@ class PagesEditor extends Wire { $page->filesManager->copyFiles($copy->filesManager->path()); } - // if there are children, then recurisvely clone them too + // if there are children, then recursively clone them too if($page->numChildren && $recursive) { $start = 0; $limit = 200; diff --git a/wire/modules/Fieldtype/FieldtypeRepeater/FieldtypeRepeater.module b/wire/modules/Fieldtype/FieldtypeRepeater/FieldtypeRepeater.module index cb568159..ef4badcb 100644 --- a/wire/modules/Fieldtype/FieldtypeRepeater/FieldtypeRepeater.module +++ b/wire/modules/Fieldtype/FieldtypeRepeater/FieldtypeRepeater.module @@ -468,7 +468,7 @@ class FieldtypeRepeater extends Fieldtype implements ConfigurableModule { * @return string * */ - protected function getUniqueRepeaterPageName() { + public function getUniqueRepeaterPageName() { static $cnt = 0; return str_replace('.', '-', microtime(true)) . '-' . (++$cnt); } @@ -496,7 +496,8 @@ class FieldtypeRepeater extends Fieldtype implements ConfigurableModule { $inputfield = $this->wire('modules')->get($this->getInputfieldClass()); $inputfield->set('page', $page); $inputfield->set('field', $field); - $inputfield->set('repeaterMaxItems', $field->get('repeaterMaxItems')); + $inputfield->set('repeaterMaxItems', (int) $field->get('repeaterMaxItems')); + $inputfield->set('repeaterDepth', (int) $field->get('repeaterDepth')); $inputfield->set('repeaterReadyItems', 0); // ready items deprecated $pageArray = $page->getUnformatted($field->name); @@ -533,6 +534,7 @@ class FieldtypeRepeater extends Fieldtype implements ConfigurableModule { if($item->hasStatus(Page::statusUnpublished) && $item->hasStatus(Page::statusHidden) && $item->id + && substr($item->name, -1) !== 'c' // cloned item && !in_array($item->id, $notIDs)) { // existing/unused ready item that we will reuse $readyPage = $item; @@ -638,7 +640,7 @@ class FieldtypeRepeater extends Fieldtype implements ConfigurableModule { // load the repeater pages $a = $this->wire('pages')->find($selector); - $class = $this->getPageArrayClass(true); + $class = $this->getPageArrayClass(); $pageArray = $this->wire(new $class($page, $field)); $pageArray->import($a); $pageArray->resetTrackChanges(true); @@ -667,6 +669,8 @@ class FieldtypeRepeater extends Fieldtype implements ConfigurableModule { // if $value isn't a PageArray, then abort if(!$value instanceof PageArray) return array(); + + /** @var PageArray $value */ $count = 0; $ids = array(); @@ -957,8 +961,10 @@ class FieldtypeRepeater extends Fieldtype implements ConfigurableModule { * */ public function ___formatValue(Page $page, Field $field, $value) { + + $maxItems = (int) $field->get('repeaterMaxItems'); - if(!$value instanceof PageArray) return $this->getBlankValue($page, $field); + if(!$value instanceof PageArray) $value = $this->getBlankValue($page, $field); /* TBA if($field->repeaterMaxItems == 1) { @@ -969,29 +975,19 @@ class FieldtypeRepeater extends Fieldtype implements ConfigurableModule { // used as a clone if a formatted version of $value is different from non-formatted $formatted = null; + $cnt = 0; // remove unpublished and ready items that shouldn't be here foreach($value as $p) { - - /* - if($p->status < Page::statusHidden) continue; - $remove = false; - if($p->isHidden()) { - // hidden pages (assumed to be a ready page) should never be included when page is being viewed (outputFormatting) - $remove = true; - } else if($p->isUnpublished() && !$page->isUnpublished()) { - // unpublished items may only be included if the page is also unpublished (and presumably being previewed) - $remove = true; - } - if($remove) { - */ - - if($p->isHidden() || $p->isUnpublished()) { + $cnt++; + if($p->isHidden() || $p->isUnpublished() || ($maxItems && $cnt > $maxItems)) { if(is_null($formatted)) $formatted = clone $value; + /** @var Page $formatted */ $trackChanges = $formatted->trackChanges(); $formatted->setTrackChanges(false); $formatted->remove($p); $formatted->setTrackChanges($trackChanges); + $cnt--; } } diff --git a/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.css b/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.css index 79760e81..7edcc08e 100644 --- a/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.css +++ b/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.css @@ -6,13 +6,15 @@ .Inputfields .InputfieldRepeater .InputfieldRepeaterItem > .InputfieldHeader .toggle-icon { line-height: 1em; margin-right: 0.5em; } - .Inputfields .InputfieldRepeater .InputfieldRepeaterItem > .InputfieldHeader > .InputfieldRepeaterToggle, .Inputfields .InputfieldRepeater .InputfieldRepeaterItem > .InputfieldHeader > .InputfieldRepeaterTrash { + .Inputfields .InputfieldRepeater .InputfieldRepeaterItem > .InputfieldHeader > .InputfieldRepeaterClone, .Inputfields .InputfieldRepeater .InputfieldRepeaterItem > .InputfieldHeader > .InputfieldRepeaterToggle, .Inputfields .InputfieldRepeater .InputfieldRepeaterItem > .InputfieldHeader > .InputfieldRepeaterTrash { cursor: pointer; float: right; } .Inputfields .InputfieldRepeater .InputfieldRepeaterItem > .InputfieldHeader > .InputfieldRepeaterTrash { padding-right: 3px; } .Inputfields .InputfieldRepeater .InputfieldRepeaterItem > .InputfieldHeader > .InputfieldRepeaterToggle { margin-right: 1em; } + .Inputfields .InputfieldRepeater .InputfieldRepeaterItem > .InputfieldHeader > .InputfieldRepeaterClone { + margin-right: 1em; } .Inputfields .InputfieldRepeater .InputfieldRepeaterItem:not(.InputfieldRepeaterDeletePending).InputfieldStateCollapsed > .InputfieldHeader { opacity: 0.90; } .Inputfields .InputfieldRepeater .InputfieldRepeaterItem:not(.InputfieldRepeaterDeletePending).InputfieldStateCollapsed > .InputfieldHeader:hover { diff --git a/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.js b/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.js index bec93919..66819de9 100644 --- a/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.js +++ b/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.js @@ -8,7 +8,14 @@ * */ +var InputfieldRepeaterDepthSize = 50; + +/** + * Delete click event (single item) + * + */ function InputfieldRepeaterDeleteClick(e) { + var $parent = $(this).parent('label').parent('li'); if($parent.is('.InputfieldRepeaterNewItem')) { @@ -33,9 +40,52 @@ function InputfieldRepeaterDeleteClick(e) { $parent.addClass('InputfieldRepeaterDeletePending'); } } + + InputfieldRepeaterCheckMax($parent.closest('.InputfieldRepeater')); + e.stopPropagation(); } +/** + * Delete double-click event (multi-item) + * + */ +function InputfieldRepeaterDeleteDblClick(e) { + + var $li = $(this).closest('li'); + var undelete = $li.hasClass('InputfieldRepeaterDeletePending'); + + function selectAll() { + $li.parent().children('li').each(function() { + var $item = $(this); + var $trashLink = $item.children('.InputfieldHeader').children('.InputfieldRepeaterTrash'); + if($item.hasClass('InputfieldRepeaterDeletePending')) { + if(undelete) $trashLink.click(); + } else { + if(!undelete) $trashLink.click(); + } + }); + } + + if(undelete) { + selectAll(); + } else { + ProcessWire.confirm(ProcessWire.config.InputfieldRepeater.labels.removeAll, selectAll); + } +} + +function InputfieldRepeaterCloneClick(e) { + var $item = $(this).closest('.InputfieldRepeaterItem'); + ProcessWire.confirm(ProcessWire.config.InputfieldRepeater.labels.clone, function() { + var itemID = $item.attr('data-page'); + var $addLink = $item.closest('.InputfieldRepeater').children('.InputfieldContent') + .children('.InputfieldRepeaterAddItem').find('.InputfieldRepeaterAddLink:eq(0)'); + $addLink.attr('data-clone', itemID).click(); + $('html, body').animate({ scrollTop: $addLink.offset().top - 100}, 250, 'swing'); + }); + return false; +} + /** * Event handler for the "publish" toggle in the header of each repeater item * @@ -74,19 +124,46 @@ function InputfieldRepeaterItemOpenReady(e) { * */ function InputfieldRepeaterUpdateState($item) { - - if(!$item.closest('.InputfieldRepeaterRememberOpen').length) return; - - var val = ''; - - $(".InputfieldRepeaterItem:not(.InputfieldStateCollapsed)").each(function() { - var id = parseInt($(this).attr('data-page')); - if(id > 0) { - val += id + '|'; + if($item.closest('.InputfieldRepeaterRememberOpen').length) { + var val = ''; + $(".InputfieldRepeaterItem:not(.InputfieldStateCollapsed)").each(function() { + var id = parseInt($(this).attr('data-page')); + if(id > 0) { + val += id + '|'; + } + }); + $.cookie('repeaters_open', val); + } +} + +function InputfieldRepeaterCheckMax($inputfield) { + if(!$inputfield.hasClass('InputfieldRepeaterMax')) return; + var max = parseInt($inputfield.attr('data-max')); + if(max <= 0) return; + var $content = $inputfield.children('.InputfieldContent'); + var num = $content.children('.Inputfields').children('li:not(.InputfieldRepeaterDeletePending)').length; + var $addItem = $content.children('.InputfieldRepeaterAddItem'); + if(num > max) { + $addItem.hide(); + } else if(!$addItem.is(":visible")) { + $addItem.show(); + } +} + +function InputfieldRepeaterCheckDepths($inputfield) { + $inputfield.find('.InputfieldRepeaterDepth').each(function() { + var $depth = $(this); + var depth = $depth.val(); + var $item = $depth.closest('.InputfieldRepeaterItem'); + var currentLeft = $item.css('margin-left'); + if(currentLeft == 'auto') currentLeft = 0; + currentLeft = parseInt(currentLeft); + var targetLeft = depth * InputfieldRepeaterDepthSize; + if(targetLeft != currentLeft) { + $item.css('margin-left', targetLeft + 'px'); + $item.data('lastLeft', targetLeft); } }); - - $.cookie('repeaters_open', val); } /** @@ -184,10 +261,12 @@ function InputfieldRepeaterInit($this) { if($this.hasClass('InputfieldRepeaterItem')) { // single repeater item var $inputfields = $this; + var $inputfieldRepeater = $this.closest('.InputfieldRepeater'); var isItem = true; } else { // enter repeater var $inputfields = $this.find('.Inputfields:eq(0)'); + var $inputfieldRepeater = $this; var isItem = false; } @@ -196,13 +275,16 @@ function InputfieldRepeaterInit($this) { $inputfields.addClass('InputfieldRepeaterInit'); var renderValueMode = $inputfields.closest('.InputfieldRenderValueMode').length > 0; - var $delete = $("").css('display', 'block'); + var $clone = $("").css('display', 'block'); + var $delete = $(""); var $toggle = $(""); var cfg = ProcessWire.config.InputfieldRepeater; - + var allowClone = !$inputfieldRepeater.hasClass('InputfieldRepeaterNoAjaxAdd'); + if(cfg) { $toggle.attr('title', cfg.labels.toggle); $delete.attr('title', cfg.labels.remove); + $clone.attr('title', cfg.labels.clone); } $("input.InputfieldRepeaterDelete", $this).parents('.InputfieldCheckbox').hide(); @@ -221,6 +303,7 @@ function InputfieldRepeaterInit($this) { $t.addClass('ui-state-default InputfieldRepeaterHeaderInit'); $t.prepend("") if(!renderValueMode) { + if(allowClone) $t.prepend($clone.clone(true)); $t.prepend($toggle.clone(true).addClass($t.parent().hasClass('InputfieldRepeaterOff') ? 'fa-toggle-off' : 'fa-toggle-on')); $t.prepend($delete.clone(true)); } @@ -255,9 +338,8 @@ function InputfieldRepeaterInit($this) { $inputfields = $this.closest('.InputfieldRepeater').find('.Inputfields:eq(0)'); } - $inputfields.sortable({ + var sortableOptions = { items: '> li:not(.InputfieldRepeaterNewItem)', - axis: 'y', handle: '.InputfieldRepeaterDrag', start: function(e, ui) { ui.item.find('.InputfieldHeader').addClass("ui-state-highlight"); @@ -275,7 +357,9 @@ function InputfieldRepeaterInit($this) { tinyMCE.execCommand('mceRemoveControl', false, $(this).attr('id')); }); }, + stop: function(e, ui) { + ui.item.find('.InputfieldHeader').removeClass("ui-state-highlight"); $(this).children().each(function(n) { $(this).find('.InputfieldRepeaterSort').slice(0,1).attr('value', n); @@ -291,8 +375,47 @@ function InputfieldRepeaterInit($this) { tinyMCE.execCommand('mceAddControl', false, $(this).attr('id')); }); } - }); + }; + var maxDepth = parseInt($inputfieldRepeater.attr('data-depth')); + if(maxDepth > 0) { + InputfieldRepeaterCheckDepths($inputfieldRepeater); + sortableOptions.grid = [ InputfieldRepeaterDepthSize, 1 ]; + sortableOptions.beforeStop = function(event, ui) { + var lastLeft = ui.item.data('lastLeft'); + if(!lastLeft) lastLeft = 0; + var left = lastLeft + ui.position.left; + left -= InputfieldRepeaterDepthSize / 2; + if(left > 10 && left < InputfieldRepeaterDepthSize) left = InputfieldRepeaterDepthSize; + var depth = Math.round(left / InputfieldRepeaterDepthSize); + if(depth < 1) depth = 0; + if(depth > maxDepth) depth = maxDepth; + if(depth) { + ui.item.css('margin-left', (depth * InputfieldRepeaterDepthSize) + 'px'); + } else { + ui.item.css('margin-left', 0); + } + ui.item.find('.InputfieldRepeaterDepth').val(depth); + ui.item.data('lastLeft', left); + ui.item.children('.InputfieldHeader').removeClass('ui-state-error'); + }; + sortableOptions.sort = function(event, ui) { + var lastLeft = ui.item.data('lastLeft'); + if(!lastLeft) lastLeft = 0; + var left = lastLeft + ui.position.left; + var $header = ui.item.children('.InputfieldHeader'); + if(left > (InputfieldRepeaterDepthSize * maxDepth) + (InputfieldRepeaterDepthSize / 2)) { + // beyond max depth allowed + $header.addClass('ui-state-error'); + } else if($header.hasClass('ui-state-error')) { + $header.removeClass('ui-state-error'); + } + }; + } else { + sortableOptions.axis = 'y'; + } + + $inputfields.sortable(sortableOptions); var $addLinks = $(".InputfieldRepeaterAddLink:not(.InputfieldRepeaterAddLinkInit)", $this); $addLinks.addClass('InputfieldRepeaterAddLinkInit'); @@ -302,20 +425,31 @@ function InputfieldRepeaterInit($this) { var $inputfields = $(this).parent('p').prev('ul.Inputfields'); var $numAddInput = $(this).parent().children('input'); var newItemTotal = 0; // for noAjaxAdd mode + var useAjax = $addLink.attr('data-noajax').length == 0; + var cloneID = $addLink.attr('data-clone'); function addRepeaterItem($addItem) { // make sure it has a unique ID var id = $addItem.attr('id') + '_'; - while($('#' + id).size() > 0) id += '_'; + while($('#' + id).length > 0) id += '_'; $addItem.attr('id', id); $inputfields.append($addItem); $addItem.css('display', 'block'); //$addItem.find('.InputfieldRepeaterTrash').click(InputfieldRepeaterDeleteClick); InputfieldRepeaterAdjustLabel($addItem, true); + /* + $nestedItems = $addItem.find('.InputfieldRepeater').find('.InputfieldRepeaterItem'); + if($nestedItems.length) { + $nestedItems.each(function() { + InputfieldRepeaterAdjustLabel($(this)); + }); + } + */ $addLink.trigger('repeateradd', [ $addItem ]); } - var useAjax = $addLink.attr('data-noajax').length == 0; + if(typeof cloneID == "undefined" || !cloneID) cloneID = null; + if(cloneID) $addLink.removeAttr('data-clone'); if(!useAjax) { var $newItem = $inputfields.children('.InputfieldRepeaterNewItem'); // for noAjaxAdd mode, non-editable new item @@ -325,31 +459,42 @@ function InputfieldRepeaterInit($this) { var $addItem = $newItem.clone(true) addRepeaterItem($addItem); $numAddInput.attr('value', newItemTotal); + InputfieldRepeaterCheckMax($inputfieldRepeater); } } else { // get addItem from ajax var pageID = $addLink.closest('.InputfieldRepeater').attr('data-page'); // $("#Inputfield_id").val(); var fieldName = $addLink.closest('.InputfieldRepeater').attr('id').replace('wrap_Inputfield_', ''); - var ajaxURL = ProcessWire.config.InputfieldRepeater.editorUrl + '?id=' + pageID + '&field=' + fieldName + '&repeater_add=' + $addLink.attr('data-type') + '&repeater_not='; var $spinner = $addLink.parent().find('.InputfieldRepeaterSpinner'); + var ajaxURL = ProcessWire.config.InputfieldRepeater.editorUrl + '?id=' + pageID + '&field=' + fieldName; $spinner.removeClass($spinner.attr('data-off')).addClass($spinner.attr('data-on')); + + if(cloneID) { + ajaxURL += '&repeater_clone=' + cloneID; + } else { + ajaxURL += '&repeater_add=' + $addLink.attr('data-type'); + } // determine which page IDs we don't accept for new items (because we already have them rendered) - $inputfields.find('.InputfieldRepeaterUnpublished').each(function() { - ajaxURL += $(this).attr('data-page') + ','; - }); + var $unpublishedItems = $inputfields.find('.InputfieldRepeaterUnpublished'); + if($unpublishedItems.length) { + ajaxURL += '&repeater_not='; + $unpublishedItems.each(function() { + ajaxURL += $(this).attr('data-page') + ','; + }); + } $.get(ajaxURL, function(data) { + //console.log(data); $spinner.removeClass($spinner.attr('data-on')).addClass($spinner.attr('data-off')); - var $addItem = $(data).find(".InputfieldRepeaterItem.InputfieldRepeaterUnpublished"); + var $addItem = $(data).find(".InputfieldRepeaterItemRequested"); if(!$addItem.length) { // error // console.log("Can't find item: .InputfieldRepeaterItem.InputfieldRepeaterUnpublished"); return; } - //console.log($addItem); addRepeaterItem($addItem); $addItem.wrap("
"); // wrap for inputfields.js $target InputfieldsInit($addItem.parent()); @@ -360,8 +505,15 @@ function InputfieldRepeaterInit($this) { $addItem.find('.InputfieldRepeaterSort').val($inputfields.children().length); $('html, body').animate({ scrollTop: $addItem.offset().top - }, 500); + }, 500, 'swing'); InputfieldRepeaterUpdateState($addItem); + InputfieldRepeaterCheckMax($inputfieldRepeater); + $nestedRepeaters = $addItem.find('.InputfieldRepeater'); + if($nestedRepeaters.length) { + $nestedRepeaters.each(function() { + InputfieldRepeaterInit($(this)); + }); + } }); } @@ -369,13 +521,17 @@ function InputfieldRepeaterInit($this) { }); //$(".InputfieldRepeaterUnpublished").children('.InputfieldHeader').addClass('ui-priority-secondary'); + + if($inputfieldRepeater.hasClass('InputfieldRepeaterMax')) InputfieldRepeaterCheckMax($inputfieldRepeater); } $(document).ready(function() { + $(".InputfieldRepeater").each(function() { InputfieldRepeaterInit($(this)); }); + $(document).on('reloaded', '.InputfieldRepeater', function(event, source) { if(typeof source != "undefined") { if(source == 'InputfieldRepeaterItemEdit' || source == 'InputfieldRepeaterItemAdd') { @@ -387,11 +543,14 @@ $(document).ready(function() { } InputfieldRepeaterInit($(this)); }); - $(document).on('click', '.InputfieldRepeaterTrash', InputfieldRepeaterDeleteClick); - $(document).on('click', '.InputfieldRepeaterToggle', InputfieldRepeaterToggleClick); - $(document).on('opened', '.InputfieldRepeaterItem', InputfieldRepeaterItemOpened); - $(document).on('closed', '.InputfieldRepeaterItem', InputfieldRepeaterItemClosed); - $(document).on('openReady', '.InputfieldRepeaterItem', InputfieldRepeaterItemOpenReady); - + + $(document) + .on('click', '.InputfieldRepeaterTrash', InputfieldRepeaterDeleteClick) + .on('dblclick', '.InputfieldRepeaterTrash', InputfieldRepeaterDeleteDblClick) + .on('click', '.InputfieldRepeaterClone', InputfieldRepeaterCloneClick) + .on('click', '.InputfieldRepeaterToggle', InputfieldRepeaterToggleClick) + .on('opened', '.InputfieldRepeaterItem', InputfieldRepeaterItemOpened) + .on('closed', '.InputfieldRepeaterItem', InputfieldRepeaterItemClosed) + .on('openReady', '.InputfieldRepeaterItem', InputfieldRepeaterItemOpenReady); }); diff --git a/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.min.js b/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.min.js index ae21454f..08c76923 100644 --- a/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.min.js +++ b/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.min.js @@ -1 +1 @@ -function InputfieldRepeaterDeleteClick(d){var c=$(this).parent("label").parent("li");if(c.is(".InputfieldRepeaterNewItem")){var a=c.parent().parent().find(".InputfieldRepeaterAddItem").children("input");a.attr("value",parseInt(a.attr("value")-1));c.remove()}else{var b=c.find(".InputfieldRepeaterDelete");if(b.is(":checked")){b.removeAttr("checked");c.children("label").removeClass("ui-state-error").addClass("ui-state-default");c.removeClass("InputfieldRepeaterDeletePending")}else{b.attr("checked","checked");c.children("label").removeClass("ui-state-default").addClass("ui-state-error");if(!c.hasClass("InputfieldStateCollapsed")){c.toggleClass("InputfieldStateCollapsed",100)}c.addClass("InputfieldRepeaterDeletePending")}}d.stopPropagation()}function InputfieldRepeaterToggleClick(f){var d=$(this);var c=d.attr("data-on");var a=d.attr("data-off");var b=d.closest(".InputfieldRepeaterItem");var g=b.find(".InputfieldRepeaterPublish");if(d.hasClass(c)){d.removeClass(c).addClass(a);b.addClass("InputfieldRepeaterUnpublished InputfieldRepeaterOff");g.val("-1")}else{d.removeClass(a).addClass(c);b.removeClass("InputfieldRepeaterUnpublished InputfieldRepeaterOff");g.val("1")}f.stopPropagation()}function InputfieldRepeaterItemOpenReady(c){var a=$(this);var b=a.find(".InputfieldRepeaterLoaded");if(parseInt(b.val())>0){return}a.addClass("InputfieldRepeaterItemLoading")}function InputfieldRepeaterUpdateState(a){if(!a.closest(".InputfieldRepeaterRememberOpen").length){return}var b="";$(".InputfieldRepeaterItem:not(.InputfieldStateCollapsed)").each(function(){var c=parseInt($(this).attr("data-page"));if(c>0){b+=c+"|"}});$.cookie("repeaters_open",b)}function InputfieldRepeaterItemClosed(a){InputfieldRepeaterUpdateState($(this))}function InputfieldRepeaterItemOpened(h){var j=$(this);var m=j.find(".InputfieldRepeaterLoaded");InputfieldRepeaterUpdateState(j);if(parseInt(m.val())>0){return}m.val("1");var b=j.find(".InputfieldContent").hide();var d=j.closest(".InputfieldRepeater");var i=d.attr("data-page");var c=parseInt(j.attr("data-page"));var l=d.attr("id");var k=l.replace("wrap_Inputfield_","");var a=ProcessWire.config.InputfieldRepeater.editorUrl+"?id="+i+"&field="+k+"&repeater_edit="+c;var f=j.find(".InputfieldRepeaterDrag");var g=m.closest(".Inputfields");f.removeClass("fa-arrows").addClass("fa-spin fa-spinner");l=l.replace(/_repeater\d+$/,"");$.get(a,function(o){var e=$(o).find("#"+l+" > .InputfieldContent > .Inputfields > .InputfieldRepeaterItem > .InputfieldContent > .Inputfields > .InputfieldWrapper > .Inputfields > .Inputfield");g.append(e);j.removeClass("InputfieldRepeaterItemLoading");InputfieldsInit(g);var n=e.filter(".InputfieldRepeater");if(n.length){n.each(function(){InputfieldRepeaterInit($(this))})}b.slideDown("fast",function(){f.removeClass("fa-spin fa-spinner").addClass("fa-arrows")});setTimeout(function(){g.find(".Inputfield").trigger("reloaded",["InputfieldRepeaterItemEdit"])},50)})}function InputfieldRepeaterAdjustLabel(c,d){var b=c.children("label");var e=b.html();var a=e;if(d&&e.indexOf("#")>-1){num=c.siblings(".InputfieldRepeaterItem:visible").length+1;e=e.replace(/#[0-9]+/,"#"+num)}if(e.indexOf("{")>-1){e=e.replace(/\{/,'');e=e.replace(/}/,"")}if(e!=a){b.html(e)}}function InputfieldRepeaterInit(g){if(g.hasClass("InputfieldRepeaterItem")){var d=g;var c=true}else{var d=g.find(".Inputfields:eq(0)");var c=false}if(d.hasClass("InputfieldRepeaterInit")){return}d.addClass("InputfieldRepeaterInit");var b=d.closest(".InputfieldRenderValueMode").length>0;var e=$("").css("display","block");var a=$("");var f=ProcessWire.config.InputfieldRepeater;if(f){a.attr("title",f.labels.toggle);e.attr("title",f.labels.remove)}$("input.InputfieldRepeaterDelete",g).parents(".InputfieldCheckbox").hide();function h(j){j.each(function(){var m=$(this);if(m.hasClass("InputfieldRepeaterHeaderInit")){return}var l="fa-arrows";var k=m.parent();if(k.hasClass("InputfieldRepeaterNewItem")){l="fa-plus";m.addClass("ui-priority-secondary")}m.addClass("ui-state-default InputfieldRepeaterHeaderInit");m.prepend("");if(!b){m.prepend(a.clone(true).addClass(m.parent().hasClass("InputfieldRepeaterOff")?"fa-toggle-off":"fa-toggle-on"));m.prepend(e.clone(true))}InputfieldRepeaterAdjustLabel(k,false)})}if(c){h(g.children(".InputfieldHeader"))}else{h($(".InputfieldRepeaterItem > .InputfieldHeader",g))}if(b){return}$(".InputfieldRepeaterDrag",g).hover(function(){$(this).parent("label").addClass("ui-state-focus")},function(){$(this).parent("label").removeClass("ui-state-focus")});$(".InputfieldRepeaterTrash",g).hover(function(){var j=$(this).parent("label");if(!j.parent().is(".InputfieldRepeaterDeletePending")){j.addClass("ui-state-error")}},function(){var j=$(this).parent("label");if(!j.parent().is(".InputfieldRepeaterDeletePending")){j.removeClass("ui-state-error")}});if(c){d=g.closest(".InputfieldRepeater").find(".Inputfields:eq(0)")}d.sortable({items:"> li:not(.InputfieldRepeaterNewItem)",axis:"y",handle:".InputfieldRepeaterDrag",start:function(k,j){j.item.find(".InputfieldHeader").addClass("ui-state-highlight");j.item.find("textarea.InputfieldCKEditorNormal.InputfieldCKEditorLoaded").each(function(){$(this).removeClass("InputfieldCKEditorLoaded");var l=CKEDITOR.instances[$(this).attr("id")];l.destroy();CKEDITOR.remove($(this).attr("id"))});j.item.find(".InputfieldTinyMCE textarea").each(function(){tinyMCE.execCommand("mceRemoveControl",false,$(this).attr("id"))})},stop:function(k,j){j.item.find(".InputfieldHeader").removeClass("ui-state-highlight");$(this).children().each(function(l){$(this).find(".InputfieldRepeaterSort").slice(0,1).attr("value",l)});j.item.find("textarea.InputfieldCKEditorNormal:not(.InputfieldCKEditorLoaded)").each(function(){$(this).closest(".InputfieldCKEditor").trigger("reloaded",["InputfieldRepeaterSort"])});j.item.find(".InputfieldTinyMCE textarea").each(function(){tinyMCE.execCommand("mceAddControl",false,$(this).attr("id"))})}});var i=$(".InputfieldRepeaterAddLink:not(.InputfieldRepeaterAddLinkInit)",g);i.addClass("InputfieldRepeaterAddLinkInit");i.click(function(){var k=$(this);var q=$(this).parent("p").prev("ul.Inputfields");var l=$(this).parent().children("input");var p=0;function s(v){var w=v.attr("id")+"_";while($("#"+w).size()>0){w+="_"}v.attr("id",w);q.append(v);v.css("display","block");InputfieldRepeaterAdjustLabel(v,true);k.trigger("repeateradd",[v])}var u=k.attr("data-noajax").length==0;if(!u){var m=q.children(".InputfieldRepeaterNewItem");p=m.length;if(p>0){if(p>1){m=m.slice(0,1)}var o=m.clone(true);s(o);l.attr("value",p)}}else{var r=k.closest(".InputfieldRepeater").attr("data-page");var t=k.closest(".InputfieldRepeater").attr("id").replace("wrap_Inputfield_","");var j=ProcessWire.config.InputfieldRepeater.editorUrl+"?id="+r+"&field="+t+"&repeater_add="+k.attr("data-type")+"&repeater_not=";var n=k.parent().find(".InputfieldRepeaterSpinner");n.removeClass(n.attr("data-off")).addClass(n.attr("data-on"));q.find(".InputfieldRepeaterUnpublished").each(function(){j+=$(this).attr("data-page")+","});$.get(j,function(w){n.removeClass(n.attr("data-on")).addClass(n.attr("data-off"));var v=$(w).find(".InputfieldRepeaterItem.InputfieldRepeaterUnpublished");if(!v.length){return}s(v);v.wrap("
");InputfieldsInit(v.parent());InputfieldRepeaterInit(v);v.unwrap();v.find(".Inputfield").trigger("reloaded",["InputfieldRepeaterItemAdd"]);v.find(".InputfieldRepeaterSort").val(q.children().length);$("html, body").animate({scrollTop:v.offset().top},500);InputfieldRepeaterUpdateState(v)})}return false})}$(document).ready(function(){$(".InputfieldRepeater").each(function(){InputfieldRepeaterInit($(this))});$(document).on("reloaded",".InputfieldRepeater",function(b,c){if(typeof c!="undefined"){if(c=="InputfieldRepeaterItemEdit"||c=="InputfieldRepeaterItemAdd"){b.stopPropagation();var a=$(this).find(".InputfieldRepeater");if(a.length){InputfieldRepeaterInit(a)}return}}InputfieldRepeaterInit($(this))});$(document).on("click",".InputfieldRepeaterTrash",InputfieldRepeaterDeleteClick);$(document).on("click",".InputfieldRepeaterToggle",InputfieldRepeaterToggleClick);$(document).on("opened",".InputfieldRepeaterItem",InputfieldRepeaterItemOpened);$(document).on("closed",".InputfieldRepeaterItem",InputfieldRepeaterItemClosed);$(document).on("openReady",".InputfieldRepeaterItem",InputfieldRepeaterItemOpenReady)}); \ No newline at end of file +var InputfieldRepeaterDepthSize=50;function InputfieldRepeaterDeleteClick(d){var c=$(this).parent("label").parent("li");if(c.is(".InputfieldRepeaterNewItem")){var a=c.parent().parent().find(".InputfieldRepeaterAddItem").children("input");a.attr("value",parseInt(a.attr("value")-1));c.remove()}else{var b=c.find(".InputfieldRepeaterDelete");if(b.is(":checked")){b.removeAttr("checked");c.children("label").removeClass("ui-state-error").addClass("ui-state-default");c.removeClass("InputfieldRepeaterDeletePending")}else{b.attr("checked","checked");c.children("label").removeClass("ui-state-default").addClass("ui-state-error");if(!c.hasClass("InputfieldStateCollapsed")){c.toggleClass("InputfieldStateCollapsed",100)}c.addClass("InputfieldRepeaterDeletePending")}}InputfieldRepeaterCheckMax(c.closest(".InputfieldRepeater"));d.stopPropagation()}function InputfieldRepeaterDeleteDblClick(c){var d=$(this).closest("li");var a=d.hasClass("InputfieldRepeaterDeletePending");function b(){d.parent().children("li").each(function(){var e=$(this);var f=e.children(".InputfieldHeader").children(".InputfieldRepeaterTrash");if(e.hasClass("InputfieldRepeaterDeletePending")){if(a){f.click()}}else{if(!a){f.click()}}})}if(a){b()}else{ProcessWire.confirm(ProcessWire.config.InputfieldRepeater.labels.removeAll,b)}}function InputfieldRepeaterCloneClick(b){var a=$(this).closest(".InputfieldRepeaterItem");ProcessWire.confirm(ProcessWire.config.InputfieldRepeater.labels.clone,function(){var d=a.attr("data-page");var c=a.closest(".InputfieldRepeater").children(".InputfieldContent").children(".InputfieldRepeaterAddItem").find(".InputfieldRepeaterAddLink:eq(0)");c.attr("data-clone",d).click();$("html, body").animate({scrollTop:c.offset().top-100},250,"swing")});return false}function InputfieldRepeaterToggleClick(f){var d=$(this);var c=d.attr("data-on");var a=d.attr("data-off");var b=d.closest(".InputfieldRepeaterItem");var g=b.find(".InputfieldRepeaterPublish");if(d.hasClass(c)){d.removeClass(c).addClass(a);b.addClass("InputfieldRepeaterUnpublished InputfieldRepeaterOff");g.val("-1")}else{d.removeClass(a).addClass(c);b.removeClass("InputfieldRepeaterUnpublished InputfieldRepeaterOff");g.val("1")}f.stopPropagation()}function InputfieldRepeaterItemOpenReady(c){var a=$(this);var b=a.find(".InputfieldRepeaterLoaded");if(parseInt(b.val())>0){return}a.addClass("InputfieldRepeaterItemLoading")}function InputfieldRepeaterUpdateState(a){if(a.closest(".InputfieldRepeaterRememberOpen").length){var b="";$(".InputfieldRepeaterItem:not(.InputfieldStateCollapsed)").each(function(){var c=parseInt($(this).attr("data-page"));if(c>0){b+=c+"|"}});$.cookie("repeaters_open",b)}}function InputfieldRepeaterCheckMax(d){if(!d.hasClass("InputfieldRepeaterMax")){return}var a=parseInt(d.attr("data-max"));if(a<=0){return}var c=d.children(".InputfieldContent");var b=c.children(".Inputfields").children("li:not(.InputfieldRepeaterDeletePending)").length;var e=c.children(".InputfieldRepeaterAddItem");if(b>a){e.hide()}else{if(!e.is(":visible")){e.show()}}}function InputfieldRepeaterCheckDepths(a){a.find(".InputfieldRepeaterDepth").each(function(){var d=$(this);var e=d.val();var b=d.closest(".InputfieldRepeaterItem");var c=b.css("margin-left");if(c=="auto"){c=0}c=parseInt(c);var f=e*InputfieldRepeaterDepthSize;if(f!=c){b.css("margin-left",f+"px");b.data("lastLeft",f)}})}function InputfieldRepeaterItemClosed(a){InputfieldRepeaterUpdateState($(this))}function InputfieldRepeaterItemOpened(h){var j=$(this);var m=j.find(".InputfieldRepeaterLoaded");InputfieldRepeaterUpdateState(j);if(parseInt(m.val())>0){return}m.val("1");var b=j.find(".InputfieldContent").hide();var d=j.closest(".InputfieldRepeater");var i=d.attr("data-page");var c=parseInt(j.attr("data-page"));var l=d.attr("id");var k=l.replace("wrap_Inputfield_","");var a=ProcessWire.config.InputfieldRepeater.editorUrl+"?id="+i+"&field="+k+"&repeater_edit="+c;var f=j.find(".InputfieldRepeaterDrag");var g=m.closest(".Inputfields");f.removeClass("fa-arrows").addClass("fa-spin fa-spinner");l=l.replace(/_repeater\d+$/,"");$.get(a,function(o){var e=$(o).find("#"+l+" > .InputfieldContent > .Inputfields > .InputfieldRepeaterItem > .InputfieldContent > .Inputfields > .InputfieldWrapper > .Inputfields > .Inputfield");g.append(e);j.removeClass("InputfieldRepeaterItemLoading");InputfieldsInit(g);var n=e.filter(".InputfieldRepeater");if(n.length){n.each(function(){InputfieldRepeaterInit($(this))})}b.slideDown("fast",function(){f.removeClass("fa-spin fa-spinner").addClass("fa-arrows")});setTimeout(function(){g.find(".Inputfield").trigger("reloaded",["InputfieldRepeaterItemEdit"])},50)})}function InputfieldRepeaterAdjustLabel(c,d){var b=c.children("label");var e=b.html();var a=e;if(d&&e.indexOf("#")>-1){num=c.siblings(".InputfieldRepeaterItem:visible").length+1;e=e.replace(/#[0-9]+/,"#"+num)}if(e.indexOf("{")>-1){e=e.replace(/\{/,'');e=e.replace(/}/,"")}if(e!=a){b.html(e)}}function InputfieldRepeaterInit(l){if(l.hasClass("InputfieldRepeaterItem")){var h=l;var b=l.closest(".InputfieldRepeater");var g=true}else{var h=l.find(".Inputfields:eq(0)");var b=l;var g=false}if(h.hasClass("InputfieldRepeaterInit")){return}h.addClass("InputfieldRepeaterInit");var f=h.closest(".InputfieldRenderValueMode").length>0;var k=$("").css("display","block");var i=$("");var a=$("");var j=ProcessWire.config.InputfieldRepeater;var e=!b.hasClass("InputfieldRepeaterNoAjaxAdd");if(j){a.attr("title",j.labels.toggle);i.attr("title",j.labels.remove);k.attr("title",j.labels.clone)}$("input.InputfieldRepeaterDelete",l).parents(".InputfieldCheckbox").hide();function m(o){o.each(function(){var r=$(this);if(r.hasClass("InputfieldRepeaterHeaderInit")){return}var q="fa-arrows";var p=r.parent();if(p.hasClass("InputfieldRepeaterNewItem")){q="fa-plus";r.addClass("ui-priority-secondary")}r.addClass("ui-state-default InputfieldRepeaterHeaderInit");r.prepend("");if(!f){if(e){r.prepend(k.clone(true))}r.prepend(a.clone(true).addClass(r.parent().hasClass("InputfieldRepeaterOff")?"fa-toggle-off":"fa-toggle-on"));r.prepend(i.clone(true))}InputfieldRepeaterAdjustLabel(p,false)})}if(g){m(l.children(".InputfieldHeader"))}else{m($(".InputfieldRepeaterItem > .InputfieldHeader",l))}if(f){return}$(".InputfieldRepeaterDrag",l).hover(function(){$(this).parent("label").addClass("ui-state-focus")},function(){$(this).parent("label").removeClass("ui-state-focus")});$(".InputfieldRepeaterTrash",l).hover(function(){var o=$(this).parent("label");if(!o.parent().is(".InputfieldRepeaterDeletePending")){o.addClass("ui-state-error")}},function(){var o=$(this).parent("label");if(!o.parent().is(".InputfieldRepeaterDeletePending")){o.removeClass("ui-state-error")}});if(g){h=l.closest(".InputfieldRepeater").find(".Inputfields:eq(0)")}var d={items:"> li:not(.InputfieldRepeaterNewItem)",handle:".InputfieldRepeaterDrag",start:function(p,o){o.item.find(".InputfieldHeader").addClass("ui-state-highlight");o.item.find("textarea.InputfieldCKEditorNormal.InputfieldCKEditorLoaded").each(function(){$(this).removeClass("InputfieldCKEditorLoaded");var q=CKEDITOR.instances[$(this).attr("id")];q.destroy();CKEDITOR.remove($(this).attr("id"))});o.item.find(".InputfieldTinyMCE textarea").each(function(){tinyMCE.execCommand("mceRemoveControl",false,$(this).attr("id"))})},stop:function(p,o){o.item.find(".InputfieldHeader").removeClass("ui-state-highlight");$(this).children().each(function(q){$(this).find(".InputfieldRepeaterSort").slice(0,1).attr("value",q)});o.item.find("textarea.InputfieldCKEditorNormal:not(.InputfieldCKEditorLoaded)").each(function(){$(this).closest(".InputfieldCKEditor").trigger("reloaded",["InputfieldRepeaterSort"])});o.item.find(".InputfieldTinyMCE textarea").each(function(){tinyMCE.execCommand("mceAddControl",false,$(this).attr("id"))})}};var c=parseInt(b.attr("data-depth"));if(c>0){InputfieldRepeaterCheckDepths(b);d.grid=[InputfieldRepeaterDepthSize,1];d.beforeStop=function(o,p){var r=p.item.data("lastLeft");if(!r){r=0}var q=r+p.position.left;q-=InputfieldRepeaterDepthSize/2;if(q>10&&qc){s=c}if(s){p.item.css("margin-left",(s*InputfieldRepeaterDepthSize)+"px")}else{p.item.css("margin-left",0)}p.item.find(".InputfieldRepeaterDepth").val(s);p.item.data("lastLeft",q);p.item.children(".InputfieldHeader").removeClass("ui-state-error")};d.sort=function(p,q){var s=q.item.data("lastLeft");if(!s){s=0}var r=s+q.position.left;var o=q.item.children(".InputfieldHeader");if(r>(InputfieldRepeaterDepthSize*c)+(InputfieldRepeaterDepthSize/2)){o.addClass("ui-state-error")}else{if(o.hasClass("ui-state-error")){o.removeClass("ui-state-error")}}}}else{d.axis="y"}h.sortable(d);var n=$(".InputfieldRepeaterAddLink:not(.InputfieldRepeaterAddLinkInit)",l);n.addClass("InputfieldRepeaterAddLinkInit");n.click(function(){var q=$(this);var w=$(this).parent("p").prev("ul.Inputfields");var r=$(this).parent().children("input");var v=0;var B=q.attr("data-noajax").length==0;var p=q.attr("data-clone");function z(C){var D=C.attr("id")+"_";while($("#"+D).length>0){D+="_"}C.attr("id",D);w.append(C);C.css("display","block");InputfieldRepeaterAdjustLabel(C,true);q.trigger("repeateradd",[C])}if(typeof p=="undefined"||!p){p=null}if(p){q.removeAttr("data-clone")}if(!B){var s=w.children(".InputfieldRepeaterNewItem");v=s.length;if(v>0){if(v>1){s=s.slice(0,1)}var u=s.clone(true);z(u);r.attr("value",v);InputfieldRepeaterCheckMax(b)}}else{var x=q.closest(".InputfieldRepeater").attr("data-page");var A=q.closest(".InputfieldRepeater").attr("id").replace("wrap_Inputfield_","");var t=q.parent().find(".InputfieldRepeaterSpinner");var o=ProcessWire.config.InputfieldRepeater.editorUrl+"?id="+x+"&field="+A;t.removeClass(t.attr("data-off")).addClass(t.attr("data-on"));if(p){o+="&repeater_clone="+p}else{o+="&repeater_add="+q.attr("data-type")}var y=w.find(".InputfieldRepeaterUnpublished");if(y.length){o+="&repeater_not=";y.each(function(){o+=$(this).attr("data-page")+","})}$.get(o,function(D){t.removeClass(t.attr("data-on")).addClass(t.attr("data-off"));var C=$(D).find(".InputfieldRepeaterItemRequested");if(!C.length){return}z(C);C.wrap("
");InputfieldsInit(C.parent());InputfieldRepeaterInit(C);C.unwrap();C.find(".Inputfield").trigger("reloaded",["InputfieldRepeaterItemAdd"]);C.find(".InputfieldRepeaterSort").val(w.children().length);$("html, body").animate({scrollTop:C.offset().top},500,"swing");InputfieldRepeaterUpdateState(C);InputfieldRepeaterCheckMax(b);$nestedRepeaters=C.find(".InputfieldRepeater");if($nestedRepeaters.length){$nestedRepeaters.each(function(){InputfieldRepeaterInit($(this))})}})}return false});if(b.hasClass("InputfieldRepeaterMax")){InputfieldRepeaterCheckMax(b)}}$(document).ready(function(){$(".InputfieldRepeater").each(function(){InputfieldRepeaterInit($(this))});$(document).on("reloaded",".InputfieldRepeater",function(b,c){if(typeof c!="undefined"){if(c=="InputfieldRepeaterItemEdit"||c=="InputfieldRepeaterItemAdd"){b.stopPropagation();var a=$(this).find(".InputfieldRepeater");if(a.length){InputfieldRepeaterInit(a)}return}}InputfieldRepeaterInit($(this))});$(document).on("click",".InputfieldRepeaterTrash",InputfieldRepeaterDeleteClick).on("dblclick",".InputfieldRepeaterTrash",InputfieldRepeaterDeleteDblClick).on("click",".InputfieldRepeaterClone",InputfieldRepeaterCloneClick).on("click",".InputfieldRepeaterToggle",InputfieldRepeaterToggleClick).on("opened",".InputfieldRepeaterItem",InputfieldRepeaterItemOpened).on("closed",".InputfieldRepeaterItem",InputfieldRepeaterItemClosed).on("openReady",".InputfieldRepeaterItem",InputfieldRepeaterItemOpenReady)}); \ No newline at end of file diff --git a/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.module b/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.module index 6d27be25..209d23f9 100644 --- a/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.module +++ b/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.module @@ -9,6 +9,7 @@ * https://processwire.com * * @property int $repeaterMaxItems + * @property int $repeaterDepth * * @method string renderRepeaterLabel($label, $cnt, Page $page) * @@ -86,6 +87,7 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { parent::__construct(); // these are part of the Fieldtype's config, and automatically set from it $this->set('repeaterMaxItems', 0); + $this->set('repeaterDepth', 0); } /** @@ -112,7 +114,8 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { static $allowRender = null; if(is_null($allowRender)) { $allowRender = true; - if($this->wire('input')->get('repeater_edit')) { + $repeaterEditID = (int) $this->wire('input')->get('repeater_edit'); + if($repeaterEditID && $repeaterEditID == $page->id) { $allowRender = false; } else if(count($_POST) && !$this->wire('config')->ajax) { $allowRender = false; @@ -257,7 +260,7 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { /** @var InputfieldWrapper $form */ $form = $this->wire(new InputfieldWrapper()); $form->name = 'repeater_form_' . $this->name . ($itemID ? "_$itemID" : ""); - $this->wrapAttr('data-page', $this->page->id); + /** @var PageArray $value */ $value = $this->attr('value'); @@ -277,17 +280,19 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { $repeaterCollapse = (int) $this->field->get('repeaterCollapse'); $cnt = 0; + $numVisible = 0; // create field for each repeater iteration foreach($value as $key => $page) { if($itemID && $page->id != $itemID) continue; - /** @var Page $page */ + /** @var RepeaterPage $page */ $isUnpublished = $page->isUnpublished(); $isHidden = $page->isHidden(); $isOn = $page->hasStatus(Page::statusOn); $isReadyItem = $isHidden && $isUnpublished; - $isOpen = in_array($page->id, $openIDs); + $isClone = $page->get('_repeater_clone'); + $isOpen = in_array($page->id, $openIDs) || $isClone; // get the inputfields for the repeater page if(is_null($loadInputsForIDs) || in_array($page->id, $loadInputsForIDs) || $isOpen) { @@ -312,6 +317,17 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { $sort->class = 'InputfieldRepeaterSort'; $sort->label = $this->_('Sort'); $sort->attr('value', $cnt); + + if($this->repeaterDepth > 0) { + $depth = $this->wire('modules')->get('InputfieldHidden'); + $depth->attr('id+name', "depth_repeater{$page->id}"); + $depth->class = 'InputfieldRepeaterDepth'; + $depth->label = $this->_('Depth'); + $depthValue = $page->getDepth(); + $depth->attr('value', $depthValue); + } else { + $depth = null; + } $loaded = $this->wire('modules')->get('InputfieldHidden'); $loaded->attr('id+name', "loaded_repeater{$page->id}"); @@ -324,9 +340,14 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { $wrap->name = "repeater_item_{$page->id}"; $wrap->wrapAttr('data-page', $page->id); $wrap->wrapAttr('data-type', $this->getRepeaterItemType($page)); + //$wrap->wrapAttr('data-editorPage', $this->page->id); + //$wrap->wrapAttr('data-parentPage', $page->parent->id); $wrap->wrapAttr('data-editUrl', $page->editUrl()); // if needed by any Inputfields within like InputfieldFile/InputfieldImage $wrap->set('useDependencies', false); + if($isClone) $wrap->addClass('InputfieldRepeaterItemClone'); + if($itemID) $wrap->addClass('InputfieldRepeaterItemRequested'); + if($isOpen) { $wrap->collapsed = Inputfield::collapsedNo; } else if($repeaterCollapse == FieldtypeRepeater::collapseExisting && !$page->get('_repeater_new') && !$isHidden) { @@ -365,19 +386,35 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { $wrap->add($inputfields); $wrap->prepend($delete); $wrap->prepend($sort); + if($depth) $wrap->prepend($depth); $wrap->prepend($loaded); - if(!$isReadyItem) $form->add($wrap); + if(!$isReadyItem) { + $form->add($wrap); + $numVisible++; + } + $this->labels[$page->id] = $wrap->getSetting('label'); + if($itemID) break; } // create a new/blank item to be used as a template for any new items added - $wrap = $this->wire('modules')->get('InputfieldFieldset'); - $wrap->label = $this->renderRepeaterLabel($label, ++$cnt, new NullPage()); - $wrap->class = 'InputfieldRepeaterItem InputfieldRepeaterNewItem'; - $wrap->collapsed = Inputfield::collapsedNo; - $form->add($wrap); + if(!$itemID) { + $wrap = $this->wire('modules')->get('InputfieldFieldset'); + $wrap->label = $this->renderRepeaterLabel($label, ++$cnt, new NullPage()); + $wrap->class = 'InputfieldRepeaterItem InputfieldRepeaterNewItem'; + $wrap->collapsed = Inputfield::collapsedNo; + $form->add($wrap); + } + // max items warning + if($this->repeaterMaxItems && $numVisible > $this->repeaterMaxItems) { + $this->prependMarkup .= + "

" . + sprintf($this->_('Warning: only the first %d item(s) will be used.'), $this->repeaterMaxItems) . + "

"; + } + // cache $this->form = $form; @@ -403,23 +440,52 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { /** * Render a new item for ajax after 'add new' link clicked * + * @param int $cloneItemID * @return string * */ - public function renderAjaxNewItem() { + public function renderAjaxNewItem($cloneItemID = 0) { /** @var PageArray $value */ $value = $this->attr('value'); - $notIDs = $this->wire('sanitizer')->intArray(explode(',', trim($this->wire('input')->get('repeater_not'), ','))); - $readyPage = $this->getNextReadyPage($notIDs); - $readyPage->removeStatus(Page::statusHidden); + $clonePage = null; + $readyPage = null; + + if($cloneItemID) { + foreach($value as $item) { + if($item->id == $cloneItemID) { + $clonePage = $item; + break; + } + } + } - // ensure editing page doesn't get saved (just in case) since we're removing all items - $this->page->addStatus(Page::statusCorrupted); - - $value->add($readyPage); - - return $this->buildForm($readyPage->id)->render(); + if($clonePage && $clonePage->id) { + /** @var FieldtypeRepeater $fieldtype */ + $fieldtype = $this->field->type; + $readyPage = $this->wire('pages')->clone($clonePage, null, true, + array('set' => array( + 'name' => $fieldtype->getUniqueRepeaterPageName() . 'c', // trailing "c" indicates clone + 'sort' => count($value)+1, + 'status' => $clonePage->status | Page::statusUnpublished + ) + ) + ); + $readyPage->set('_repeater_clone', $clonePage->id); + } else if(!$cloneItemID) { + $notIDs = $this->wire('sanitizer')->intArray(explode(',', trim($this->wire('input')->get('repeater_not'), ','))); + $readyPage = $this->getNextReadyPage($notIDs); + $readyPage->removeStatus(Page::statusHidden); + } + + if($readyPage) { + // ensure editing page doesn't get saved (just in case) since we're removing all items + $this->page->addStatus(Page::statusCorrupted); + $value->add($readyPage); + return $this->buildForm($readyPage->id)->render(); + } else { + return ''; + } } /** @@ -450,8 +516,37 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { * */ public function renderReady(Inputfield $parent = null, $renderValueMode = false) { + $this->wire('modules')->get('JqueryCore')->use('cookie'); - $this->preloadInputfieldAssets(); + $this->wire('modules')->get('JqueryUI')->use('vex'); + $this->preloadInputfieldAssets(); + + if($this->field->get('repeaterLoading') == FieldtypeRepeater::loadingOff) { + $this->addClass('InputfieldRepeaterNoAjaxAdd', 'wrapClass'); + } + if($this->repeaterMaxItems > 0) { + $this->addClass('InputfieldRepeaterMax', 'wrapClass'); + } + if($this->repeaterDepth > 0) { + $this->addClass('InputfieldRepeaterDepth', 'wrapClass'); + } + $this->wrapAttr('data-page', $this->page->id); + $this->wrapAttr('data-max', (int) $this->repeaterMaxItems); + $this->wrapAttr('data-depth', (int) $this->repeaterDepth); + + list($editorUrl, $queryString) = explode('?', $this->page->editUrl()); + if($queryString) {} + + $this->wire('config')->js('InputfieldRepeater', array( + 'editorUrl' => $editorUrl, + 'labels' => array( + 'remove' => $this->_x('Delete this item', 'repeater-item-action'), + 'removeAll' => $this->_x('Delete all items?', 'repeater-item-action'), + 'toggle' => $this->_x('Toggle published/unpublished', 'repeater-item-action'), + 'clone' => $this->_x('Clone this item?', 'repeater-item-action') + ) + )); + return parent::renderReady($parent, $renderValueMode); } @@ -491,7 +586,10 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { if($ajax && $input->get('field') == $this->attr('name')) { $repeaterAdd = $input->get('repeater_add'); $repeaterEdit = (int) $input->get('repeater_edit'); - if($repeaterAdd !== null && !$noAjaxAdd) { + $repeaterClone = (int) $input->get('repeater_clone'); + if($repeaterClone) { + return $this->renderValueMode ? '' : $this->renderAjaxNewItem($repeaterClone); + } else if($repeaterAdd !== null && !$noAjaxAdd) { return $this->renderValueMode ? '' : $this->renderAjaxNewItem(); } else if($repeaterEdit) { if($this->renderValueMode) { @@ -508,17 +606,7 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { $collapse = $this->field->get('repeaterCollapse'); $forIDs = null; if($loading == FieldtypeRepeater::loadingAll && $collapse != FieldtypeRepeater::collapseNone) $forIDs = array(); - list($editorUrl, $queryString) = explode('?', $this->page->editUrl()); - if($queryString) {} - - $this->wire('config')->js('InputfieldRepeater', array( - 'editorUrl' => $editorUrl, - 'labels' => array( - 'remove' => $this->_x('Delete this item', 'repeater-item-action'), - 'toggle' => $this->_x('Toggle published/unpublished', 'repeater-item-action') - ) - )); - + return $this->buildForm(0, $forIDs)->render() . $out; } @@ -569,7 +657,7 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { // existing items foreach($value as $key => $page) { - /** @var Page $page */ + /** @var RepeaterPage $page */ $pageIDs[] = $page->id; $isHidden = $page->isHidden(); @@ -579,6 +667,7 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { $deleteName = "delete_repeater{$page->id}"; $sortName = "sort_repeater{$page->id}"; $publishName = "publish_repeater{$page->id}"; + $depthName = "depth_repeater{$page->id}"; if($input->$deleteName == $page->id) { $value->remove($page); @@ -596,6 +685,14 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { $sortChanged = true; } + if($this->repeaterDepth > 0) { + $depth = (int) $input->$depthName; + if($page->getDepth() != $depth) { + $page->setDepth($depth); + $numChanges++; + } + } + /** @var InputfieldWrapper $wrapper */ $wrapper = $this->wrappers[$page->id]; $wrapper->resetTrackChanges(true); @@ -640,7 +737,7 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { for($n = 0; $n < $numNewItems; $n++) { $page = $this->getNextReadyPage($pageIDs); $page->removeStatus(Page::statusHidden); - $page->sort = count($value); + $page->sort = count($value)+1; $value->add($page); $numChanges++; } @@ -722,7 +819,7 @@ class InputfieldRepeater extends Inputfield implements InputfieldItemList { * * @param string $key * @param mixed $value - * @return $this + * @return Inputfield|InputfieldRepeater * */ public function set($key, $value) { diff --git a/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.scss b/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.scss index bb52c949..74a1293c 100644 --- a/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.scss +++ b/wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.scss @@ -14,6 +14,7 @@ margin-right: 0.5em; } + & > .InputfieldRepeaterClone, & > .InputfieldRepeaterToggle, & > .InputfieldRepeaterTrash { cursor: pointer; @@ -25,6 +26,9 @@ & > .InputfieldRepeaterToggle { margin-right: 1em; } + & > .InputfieldRepeaterClone { + margin-right: 1em; + } } .InputfieldRepeaterItem:not(.InputfieldRepeaterDeletePending) { diff --git a/wire/modules/Fieldtype/FieldtypeRepeater/RepeaterPage.php b/wire/modules/Fieldtype/FieldtypeRepeater/RepeaterPage.php index 728a3f86..30277ade 100644 --- a/wire/modules/Fieldtype/FieldtypeRepeater/RepeaterPage.php +++ b/wire/modules/Fieldtype/FieldtypeRepeater/RepeaterPage.php @@ -20,13 +20,21 @@ class RepeaterPage extends Page { * Field instance that contains this repeater item * */ - protected $forField = null; + protected $forField = null; + + /** + * Depth of this item + * + * @var int|null + * + */ + protected $depth = null; /** * Set the page that owns this repeater item * * @param Page $forPage - * @return this + * @return $this * */ public function setForPage(Page $forPage) { @@ -55,7 +63,10 @@ class RepeaterPage extends Page { // but if this repeater was loaded from somewhere else, that won't // have happened, so we have to determine it from it's location - $parentName = $this->parent()->name; + + /** @var Page $parent */ + $parent = $this->parent(); + $parentName = $parent->name; $prefix = FieldtypeRepeater::repeaterPageNamePrefix; // for-page- if(strpos($parentName, $prefix) === 0) { @@ -74,7 +85,7 @@ class RepeaterPage extends Page { * Set the field that owns this repeater item * * @param Field $forField - * @return this + * @return $this * */ public function setForField(Field $forField) { @@ -91,7 +102,8 @@ class RepeaterPage extends Page { public function getForField() { if(!is_null($this->forField)) return $this->forField; - $grandparentName = $this->parent()->parent()->name; + $grandparent = $this->parent()->parent(); + $grandparentName = $grandparent->name; $prefix = FieldtypeRepeater::fieldPageNamePrefix; // for-field- if(strpos($grandparentName, $prefix) === 0) { @@ -102,6 +114,31 @@ class RepeaterPage extends Page { return $this->forField; } + + public function get($key) { + $value = parent::get($key); + if($key === 'depth' && is_null($value)) { + $value = $this->getDepth(); + } + return $value; + } + + public function getDepth() { + if(is_null($this->depth)) { + $this->depth = 0; + $name = $this->name; + while($name[$this->depth] === '-') $this->depth++; + } + return $this->depth; + } + + public function setDepth($depth) { + $name = $this->name; + $_name = $name; + $name = ltrim($name, '-'); + if($depth > 0) $name = str_repeat('-', $depth) . $name; + if($name !== $_name) $this->name = $name; + } /** * Is this page public? diff --git a/wire/modules/Fieldtype/FieldtypeRepeater/config.php b/wire/modules/Fieldtype/FieldtypeRepeater/config.php index 936c0bf6..6d40d333 100644 --- a/wire/modules/Fieldtype/FieldtypeRepeater/config.php +++ b/wire/modules/Fieldtype/FieldtypeRepeater/config.php @@ -53,6 +53,7 @@ class FieldtypeRepeaterConfigHelper extends Wire { $this->message($this->_('Please add fields to this repeater from the "details" tab.')); } + /** @var InputfieldHidden $f */ $f = $this->modules->get('InputfieldHidden'); $f->attr('name', 'template_id'); $f->label = 'Repeater Template ID'; @@ -80,6 +81,7 @@ class FieldtypeRepeaterConfigHelper extends Wire { $select->setAsmSelectOption('hideDeleted', false); foreach($template->fieldgroup as $f) { + /** @var Field $f */ $f = $template->fieldgroup->getField($f->id, true); // get in context $columnWidth = (int) $f->get('columnWidth'); @@ -146,6 +148,7 @@ class FieldtypeRepeaterConfigHelper extends Wire { // ------------------------------------------------- + /** @var InputfieldRadios $f */ $f = $this->wire('modules')->get('InputfieldRadios'); $f->attr('name', 'repeaterCollapse'); $f->label = $this->_('Repeater item visibility in editor'); @@ -191,8 +194,37 @@ class FieldtypeRepeaterConfigHelper extends Wire { $inputfields->add($f); // ------------------------------------------------- + + $value = (int) $field->get('repeaterMaxItems'); + $f = $this->wire('modules')->get('InputfieldInteger'); + $f->attr('name', 'repeaterMaxItems'); + $f->attr('value', $value > 0 ? $value : ''); + $f->label = $this->_('Maximum number of items'); + $f->collapsed = Inputfield::collapsedBlank; + $f->description = $this->_('If you need to limit the number of items allowed, enter the limit here (0=no limit).'); + $f->icon = 'hand-stop-o'; + $inputfields->add($f); + + // ------------------------------------------------- + + $value = (int) $field->get('repeaterDepth'); + $f = $this->wire('modules')->get('InputfieldInteger'); + $f->attr('name', 'repeaterDepth'); + $f->attr('value', $value > 0 ? $value : ''); + $f->label = $this->_('Item depth'); + $f->collapsed = Inputfield::collapsedBlank; + $f->description = $this->_('To support items with depth, enter the max allowed depth, or leave blank to disable.'); + $f->description .= ' ' . $this->_('When editing a repeater, you can change item depth by clicking the repeater item drag arrows and dragging the item right or left.'); + $f->notes = $this->_('Depths are zero-based, meaning a depth of 3 allows depths 0, 1, 2 and 3.'); + $f->notes .= ' ' . $this->_('Depth can be accessed from a repeater page item via `$item->depth`.'); + $f->icon = 'indent'; + $inputfields->add($f); - $numOldReady = $this->field->type->countOldReadyPages($field); + // ------------------------------------------------- + + /** @var FieldtypeRepeater $fieldtype */ + $fieldtype = $this->field->type; + $numOldReady = $fieldtype->countOldReadyPages($field); if($numOldReady) { // @todo: should we just do this automatically? $f = $this->wire('modules')->get('InputfieldCheckbox'); @@ -206,42 +238,6 @@ class FieldtypeRepeaterConfigHelper extends Wire { // ------------------------------------------------- - /* - $f = $this->wire('modules')->get('InputfieldCheckbox'); - $f->attr('name', 'noAjaxAdd'); - $f->label = $this->_('Disable AJAX for adding items in editor'); - $f->description = $this->_('By default, clicking the "Add Item" link will load the new repeater item via AJAX, which provides a more seamless experience. But some fields may not be compatible with this. Check this box to disable AJAX for adding items.'); // Description for noAjaxAdd option - $f->icon = 'frown-o'; - $f->columnWidth = 50; - if($field->get('noAjaxAdd')) { - $f->attr('checked', 'checked'); - } else { - $f->collapsed = Inputfield::collapsedYes; - } - $inputfields->add($f); - */ - - // ------------------------------------------------- - - /* - if(is_null($field->repeaterReadyItems)) $field->repeaterReadyItems = self::defaultRepeaterReadyItems; - if($field->noAjaxAdd) $field->repeaterReadyItems = 0; - $input = $this->wire('modules')->get('InputfieldInteger'); - $input->attr('id+name', 'repeaterReadyItems'); - $input->attr('value', (int) abs($field->repeaterReadyItems)); - $input->label = $this->_('Ready-To-Edit New Repeater Items') . " ({$field->repeaterReadyItems})"; - $input->description = $this->_('The number of ready-to-edit (unpublished) items per page to keep rendered for use as new items.'); - $input->notes = - $this->_('If set to 0, new items will only be created as needed. This is the most efficient setting.') . " \n" . - $this->_('If set to 1 or above, that many new items will be ready to edit as soon as you click "add item". This makes for faster additions.'); - $input->collapsed = Inputfield::collapsedYes; - $input->showIf = 'noAjaxAdd=1'; - $inputfields->add($input); - */ - - // ------------------------------------------------- - - /** TBA if(is_null($field->repeaterMaxItems)) $field->repeaterMaxItems = self::defaultRepeaterMaxItems; $input = wire('modules')->get('InputfieldInteger'); @@ -303,7 +299,9 @@ class FieldtypeRepeaterConfigHelper extends Wire { $fieldgroup->save(); if($this->wire('input')->post('_deleteOldReady')) { - $cnt = $this->field->type->countOldReadyPages($field, true); + /** @var FieldtypeRepeater $fieldtype */ + $fieldtype = $this->field->type; + $cnt = $fieldtype->countOldReadyPages($field, true); $this->message(sprintf($this->_('Deleted %d old/unused repeater item(s)'), $cnt)); } diff --git a/wire/modules/Inputfield/InputfieldImage/InputfieldImage.js b/wire/modules/Inputfield/InputfieldImage/InputfieldImage.js index 769ee18e..444a3fc2 100755 --- a/wire/modules/Inputfield/InputfieldImage/InputfieldImage.js +++ b/wire/modules/Inputfield/InputfieldImage/InputfieldImage.js @@ -546,7 +546,7 @@ function InputfieldImage($) { var $button = $(this); var $list = $button.closest('.gridImages'); if(!$list.hasClass('gridImagesAlerted')) { - alert(ProcessWire.config.InputfieldImage.labels.changes); + ProcessWire.alert(ProcessWire.config.InputfieldImage.labels.changes); $list.addClass('gridImagesAlerted'); } setTimeout(function() { diff --git a/wire/modules/Inputfield/InputfieldImage/InputfieldImage.min.js b/wire/modules/Inputfield/InputfieldImage/InputfieldImage.min.js index a5766602..eb5db758 100644 --- a/wire/modules/Inputfield/InputfieldImage/InputfieldImage.min.js +++ b/wire/modules/Inputfield/InputfieldImage/InputfieldImage.min.js @@ -1 +1 @@ -function InputfieldImage(u){var k=null;var b={file:"",item:null,edit:null};var E={type:"image",closeOnContentClick:true,closeBtnInside:true};var c=null;var q=[];function r(){var L=window.File&&window.FileList&&window.FileReader;var K=u(".InputfieldAllowAjaxUpload").length>0;var M=u("#PageIDIndicator").length>0;return(L&&(M||K))}function x(M,K,L){K||(K=250);var N,O;return function(){var R=L||this;var Q=+new Date(),P=arguments;if(N&&Q .gridImage",start:function(P,O){var N=D(L.closest(".Inputfield"),"size");O.placeholder.append(u("
").css({display:"block",height:N+"px",width:N+"px"}));M=window.setTimeout(function(){F(L,null)},100);L.addClass("InputfieldImageSorting")},stop:function(P,N){var O=u(this);if(M!==null){N.item.find(".InputfieldImageEdit__edit").click();clearTimeout(M)}O.children("li").each(function(R){var Q=u(this).find(".InputfieldFileSort");if(Q.val()!=R){Q.val(R).change()}});L.removeClass("InputfieldImageSorting")},cancel:".InputfieldImageEdit"};L.sortable(K)}function o(L){var K=u.extend(true,{},E);K.callbacks={elementParse:function(M){var N=u(M.el).attr("data-original");if(typeof N=="undefined"||!N){N=u(M.el).attr("src")}M.src=N}};K.gallery={enabled:true};L.find("img").magnificPopup(K)}function s(L){var K=u.extend(true,{},E);K.callbacks={elementParse:function(M){M.src=u(M.el).attr("src")}};K.gallery={enabled:false};L.find("img").magnificPopup(K)}function B(K){return K.find(".InputfieldImageEdit--active")}function t(K){return u("#"+K.find(".InputfieldImageEdit__edit").attr("data-current"))}function C(M){var K=M.is(":checked");var L=M.parents(".gridImages").find(".gridImage__deletebox");if(K){L.prop("checked","checked").change()}else{L.removeAttr("checked").change()}}function I(L){if(typeof L=="undefined"){var K=u(".gridImages")}else{var K=L.find(".gridImages")}K.each(function(){var M=u(this),N=B(M);if(N.length){i(t(N),N)}})}function v(Q){var M=[];var P=[];var O=0,K=0;var N;if(typeof Q=="undefined"){N=u(".InputfieldImage.Inputfield")}else{N=Q}N.removeClass("InputfieldImageNarrow");N.each(function(){var S=u(this);var T=S.width();if(T<1){return}if(T<=500){M[O]=S;O++}});for(var R=0;R=P){N.attr("height",L).removeAttr("width")}else{if(P>K){N.attr("width",L).removeAttr("height")}else{N.removeAttr("width").attr("height",L)}}}var K=N.width();if(K){M.css({width:(O?K+"px":L+"px"),height:L+"px"})}else{var Q=M.attr("data-tries");if(!Q){Q=0}if(typeof Q=="undefined"){Q=0}Q=parseInt(Q);if(Q>3){M.css({width:L+"px",height:L+"px"})}else{q.push(M);M.attr("data-tries",Q+1)}}}function z(L){if(L.find(".InputfieldImageListToggle").length){return}var O=u("").append("");var Q=u("").append("");var K=u("").append("");var P="InputfieldImageListToggle--active";var N="";var M=function(V){var U=u(this);var T=U.closest(".Inputfield");var R=U.attr("href");var S;U.parent().children("."+P).removeClass(P);U.addClass(P);if(R=="list"){if(!T.hasClass("InputfieldImageEditAll")){T.find(".InputfieldImageEdit--active .InputfieldImageEdit__close").click();T.addClass("InputfieldImageEditAll")}S=D(T,"listSize");l(T,S);e(T,"mode","list")}else{if(R=="left"){T.removeClass("InputfieldImageEditAll");S=D(T,"size");j(T,S,true);e(T,"mode","left");I()}else{if(R=="grid"){T.removeClass("InputfieldImageEditAll");S=D(T,"size");j(T,S,false);e(T,"mode","grid")}}}A(T.find(".gridImages"));U.blur();return false};O.click(M);Q.click(M);K.click(M);if(L.hasClass("InputfieldImage")){L.find(".InputfieldHeader").append(O).append(Q).append(K);N=D(L,"mode")}else{u(".InputfieldImage .InputfieldHeader",L).append(O).append(Q).append(K)}if(N=="list"){O.click()}else{if(N=="left"){Q.click()}else{}}}function y(P){var M=P.children(".InputfieldHeader");if(M.children(".InputfieldImageSizeSlider").length){return}var O=P.find(".gridImages");var L=O.attr("data-gridsize");var N=L/2;var K=L*2;var Q=u('');M.append(Q);Q.slider({min:N,max:K,value:D(P,"size"),range:"min",slide:function(T,V){var U=V.value;var W=15;var X=Math.floor(L/W);var R=U-N;var S=Math.floor(W+(R/X));if(P.hasClass("InputfieldImageEditAll")){e(P,"size",U);l(P,S)}else{e(P,"listSize",S);j(P,U)}},start:function(R,S){if(P.find(".InputfieldImageEdit:visible").length){P.find(".InputfieldImageEdit__close").click()}},stop:function(R,S){I(P)}})}function e(L,O,N){var M=D(L);var P=L.attr("id");var K=P?P.replace("wrap_Inputfield_",""):"";if(!K.length||typeof N=="undefined"){return}if(M[K][O]==N){return}M[K][O]=N;u.cookie("InputfieldImage",M);c=M}function D(L,O){if(c&&typeof O=="undefined"){return c}var P=L.attr("id");var K=P?P.replace("wrap_Inputfield_",""):"na";var N=c?c:u.cookie("InputfieldImage");var M=null;if(!N){var N={}}if(typeof N[K]=="undefined"){N[K]={}}if(typeof N[K].size=="undefined"){N[K].size=parseInt(L.find(".gridImages").attr("data-size"))}if(typeof N[K].listSize=="undefined"){N[K].listSize=23}if(typeof N[K].mode=="undefined"){N[K].mode=L.find(".gridImages").attr("data-gridMode")}if(c==null){c=N}if(typeof O=="undefined"){M=N}else{if(O===true){M=N[K]}else{if(typeof N[K][O]!="undefined"){M=N[K][O]}}}return M}function a(O){if(O.hasClass("InputfieldStateCollapsed")){return}var P=parseInt(O.find(".InputfieldImageMaxFiles").val());var N=O.find(".gridImages");var M=D(O,"size");var Q=D(O,"mode");var L=Q=="left"?true:false;if(!M){M=N.attr("data-gridsize")}M=parseInt(M);j(O,M,L);if(O.hasClass("InputfieldImageEditAll")||Q=="list"){var K=D(O,"listSize");l(O,K)}if(!O.hasClass("InputfieldImageInit")){O.addClass("InputfieldImageInit");if(O.hasClass("InputfieldRenderValueMode")){return o(O)}else{if(P==1){O.addClass("InputfieldImageMax1");s(O)}else{A(N)}}z(O);y(O)}v(O)}function H(){u("body").addClass("ie-no-drop");u(".InputfieldImage.InputfieldFileMultiple").each(function(){var L=u(this),N=parseInt(L.find(".InputfieldFileMaxFiles").val()),K=L.find(".gridImages"),M=L.find(".InputfieldImageUpload");M.on("change","input[type=file]",function(){var R=u(this),P=R.parent(".InputMask");if(R.val().length>1){P.addClass("ui-state-disabled")}else{P.removeClass("ui-state-disabled")}if(R.next("input.InputfieldFile").length>0){return}var O=K.children("li").length+M.find("input[type=file]").length+1;if(N>0&&O>=N){return}M.find(".InputMask").not(":last").each(function(){var S=u(this);if(S.find("input[type=file]").val()<1){S.remove()}});var Q=P.clone().removeClass("ui-state-disabled");Q.children("input[type=file]").val("");Q.insertAfter(P)})})}function J(M){var L;if(M.length>0){L=M.find(".InputfieldImageUpload")}else{L=u(".InputfieldImageUpload")}L.each(function(P){var Q=u(this);var O=Q.closest(".InputfieldContent");if(Q.hasClass("InputfieldImageInitUpload")){return}N(O,P);Q.addClass("InputfieldImageInitUpload")});function N(X,ai){var W=X.parents("form");var O=X.closest(".InputfieldRepeaterItem");var S=O.length?O.attr("data-editUrl"):W.attr("action");S+=(S.indexOf("?")>-1?"&":"?")+"InputfieldFileAjax=1";var am=W.find("input._post_token");var V=am.attr("name");var aa=am.val();var Z=X.find(".InputfieldImageErrors").first();var R=X.find(".InputfieldImageUpload").data("fieldname");R=R.slice(0,-2);var ah=X.closest(".Inputfield.InputfieldImage");var al=X.find(".InputfieldImageUpload").data("extensions").toLowerCase();var ag=X.find(".InputfieldImageUpload").data("maxfilesize");var Y=X.find("input[type=file]").get(0);var Q=X.find(".gridImages");var aj=Q.get(0);var ac=Q.data("gridsize");var ad=null;var ab=parseInt(X.find(".InputfieldImageMaxFiles").val());ak(X);if(ab!=1){af(Q)}Q.children().addClass("InputfieldFileItemExisting");function U(ao,an){if(typeof an!=="undefined"){ao=""+an+": "+ao}return"
  • "+ao+"
  • "}function P(ao){var an=new String(ao).substring(ao.lastIndexOf("/")+1);if(an.lastIndexOf(".")!=-1){an=an.substring(0,an.lastIndexOf("."))}return an}function ak(an){if(an.hasClass("InputfieldImageDropzoneInit")){return}var ao=an.get(0);ao.addEventListener("dragleave",function(){an.removeClass("ui-state-hover")},false);ao.addEventListener("dragenter",function(){an.addClass("ui-state-hover")},false);ao.addEventListener("dragover",function(ap){if(!an.is("ui-state-hover")){an.addClass("ui-state-hover")}ap.preventDefault();ap.stopPropagation();return false},false);ao.addEventListener("drop",function(ap){ae(ap.dataTransfer.files);an.removeClass("ui-state-hover");ap.preventDefault();ap.stopPropagation();return false},false);an.addClass("InputfieldImageDropzoneInit")}function af(au){var ax=null;var aw=false;var an=null;function aq(az){var aD=az.offset();var aA=az.width();var ay=az.height();var aC=aD.left+aA/2;var aB=aD.top+ay/2;return{clientX:aC,clientY:aB}}function at(){return au.find(".InputfieldImageEdit--active").length>0}function ar(az){if(at()){return}az.preventDefault();az.stopPropagation();aw=false;if(ax==null){var ay=au.attr("data-size")+"px";var aA=u("
    ").addClass("gridImage__overflow");if(au.closest(".InputfieldImageEditAll").length){aA.css({width:"100%",height:ay})}else{aA.css({width:ay,height:ay})}ax=u("
  • ").addClass("ImageOuter gridImage gridImagePlaceholder").append(aA);au.append(ax)}var aB=aq(ax);ax.simulate("mousedown",aB)}function av(ay){if(at()){return}ay.preventDefault();ay.stopPropagation();aw=false;if(ax==null){return}var az={clientX:ay.originalEvent.clientX,clientY:ay.originalEvent.clientY};ax.simulate("mousemove",az)}function ap(ay){if(at()){return}ay.preventDefault();ay.stopPropagation();if(ax==null){return false}aw=true;if(an){clearTimeout(an)}an=setTimeout(function(){if(!aw||ax==null){return}ax.remove();ax=null},1000)}function ao(ay){if(at()){return}aw=false;var az={clientX:ay.clientX,clientY:ay.clientY};ax.simulate("mouseup",az);k=ax.next(".gridImage");ax.remove();ax=null}if(au.length&&!au.hasClass("gridImagesInitDropInPlace")){au.on("dragenter",ar);au.on("dragover",av);au.on("dragleave",ap);au.on("drop",ao);au.addClass("gridImagesInitDropInPlace")}}function T(aI){var aG=ProcessWire.config.InputfieldImage.labels;var au=parseInt(aI.size/1024,10)+" kB";var aH='
    '+aG.dimensions+''+aG.na+"
    "+aG.filesize+""+au+"
    "+aG.variations+"0
    ";var aK=u('
  • '),aD=u(aH),aw=u('
    '),an=u('
    '),aA=u("
    "),aC=u(""),aF=u(' '),aE=u('
    '),ao,ay,aJ,az=URL.createObjectURL(aI),ap=ah.find(".gridImages"),ar=ab==1,aB=D(ah,"size"),at=D(ah,"listSize"),aq=ah.hasClass("InputfieldImageEditAll"),ax=u('');aw.append(ax);aA.find(".gridImage__inner").append(aF);aA.find(".gridImage__inner").append(aE.css("display","none"));aA.find(".gridImage__inner").append(aC);an.append(u('

    '+aI.name+'

    '+au+""));if(aq){aw.css("width",at+"%");an.css("width",(100-at)+"%")}else{aw.css({width:aB+"px",height:aB+"px"})}aK.append(aD).append(aw).append(aA).append(an);ax.attr({src:az,"data-original":az});img=new Image();img.addEventListener("load",function(){aD.find(".dimensions").html(this.width+" × "+this.height);var aL=Math.min(this.width,this.height)/aB;ax.attr({width:this.width/aL,height:this.height/aL})},false);img.src=az;ay=new XMLHttpRequest();ay.upload.addEventListener("progress",function(aL){if(!aL.lengthComputable){return}u("body").addClass("pw-uploading");aC.attr("value",parseInt((aL.loaded/aL.total)*100));aE.css("display","block")},false);ay.addEventListener("load",function(){var aM=u.parseJSON(ay.responseText),aP=aM.length>1;if(aM.error!==undefined){aM=[aM]}for(var aR=0;aR1){ah.removeClass("InputfieldFileEmpty").removeClass("InputfieldFileSingle").addClass("InputfieldFileMultiple")}}}function ae(ar){var ao=function(aw){return parseInt(aw/1024,10)};if(typeof ar==="undefined"){aj.innerHTML="No support for the File API in this web browser";return}for(var ap=0,an=ar.length;apag&&ag>2000000){var au=ao(ar[ap].size),at=ao(ag);aq="Filesize "+au+" kb is too big. Maximum allowed is "+at+" kb";Z.append(U(aq,ar[ap].name))}else{T(ar[ap])}}if(ab==1){break}}}Y.addEventListener("change",function(an){ae(this.files);an.preventDefault();an.stopPropagation();this.value=""},false)}function K(){var O=".InputfieldImageEdit__imagewrapper img";u(document).on("dragenter",O,function(){var R=u(this);if(R.closest(".InputfieldImageMax1").length){return}var S=R.attr("src");var P=R.closest(".InputfieldImageEdit");var Q=R.closest(".InputfieldImageEdit__imagewrapper");Q.addClass("InputfieldImageEdit__replace");b.file=new String(S).substring(S.lastIndexOf("/")+1);b.item=u("#"+P.attr("data-for"));b.edit=P}).on("dragleave",O,function(){var Q=u(this);if(Q.closest(".InputfieldImageMax1").length){return}var P=Q.closest(".InputfieldImageEdit__imagewrapper");P.removeClass("InputfieldImageEdit__replace");b.file="";b.item=null;b.edit=null})}K()}function G(){u(".InputfieldImage.Inputfield").each(function(){a(u(this))});w();if(r()){J("")}else{H()}u(document).on("reloaded",".InputfieldImage",function(){var K=u(this);a(K);J(K)}).on("wiretabclick",function(M,L,K){L.find(".InputfieldImage").each(function(){a(u(this))})}).on("opened",".InputfieldImage",function(){a(u(this))})}G()}jQuery(document).ready(function(a){InputfieldImage(a)}); \ No newline at end of file +function InputfieldImage(u){var k=null;var b={file:"",item:null,edit:null};var E={type:"image",closeOnContentClick:true,closeBtnInside:true};var c=null;var q=[];function r(){var L=window.File&&window.FileList&&window.FileReader;var K=u(".InputfieldAllowAjaxUpload").length>0;var M=u("#PageIDIndicator").length>0;return(L&&(M||K))}function x(M,K,L){K||(K=250);var N,O;return function(){var R=L||this;var Q=+new Date(),P=arguments;if(N&&Q .gridImage",start:function(P,O){var N=D(L.closest(".Inputfield"),"size");O.placeholder.append(u("
    ").css({display:"block",height:N+"px",width:N+"px"}));M=window.setTimeout(function(){F(L,null)},100);L.addClass("InputfieldImageSorting")},stop:function(P,N){var O=u(this);if(M!==null){N.item.find(".InputfieldImageEdit__edit").click();clearTimeout(M)}O.children("li").each(function(R){var Q=u(this).find(".InputfieldFileSort");if(Q.val()!=R){Q.val(R).change()}});L.removeClass("InputfieldImageSorting")},cancel:".InputfieldImageEdit"};L.sortable(K)}function o(L){var K=u.extend(true,{},E);K.callbacks={elementParse:function(M){var N=u(M.el).attr("data-original");if(typeof N=="undefined"||!N){N=u(M.el).attr("src")}M.src=N}};K.gallery={enabled:true};L.find("img").magnificPopup(K)}function s(L){var K=u.extend(true,{},E);K.callbacks={elementParse:function(M){M.src=u(M.el).attr("src")}};K.gallery={enabled:false};L.find("img").magnificPopup(K)}function B(K){return K.find(".InputfieldImageEdit--active")}function t(K){return u("#"+K.find(".InputfieldImageEdit__edit").attr("data-current"))}function C(M){var K=M.is(":checked");var L=M.parents(".gridImages").find(".gridImage__deletebox");if(K){L.prop("checked","checked").change()}else{L.removeAttr("checked").change()}}function I(L){if(typeof L=="undefined"){var K=u(".gridImages")}else{var K=L.find(".gridImages")}K.each(function(){var M=u(this),N=B(M);if(N.length){i(t(N),N)}})}function v(Q){var M=[];var P=[];var O=0,K=0;var N;if(typeof Q=="undefined"){N=u(".InputfieldImage.Inputfield")}else{N=Q}N.removeClass("InputfieldImageNarrow");N.each(function(){var S=u(this);var T=S.width();if(T<1){return}if(T<=500){M[O]=S;O++}});for(var R=0;R=P){N.attr("height",L).removeAttr("width")}else{if(P>K){N.attr("width",L).removeAttr("height")}else{N.removeAttr("width").attr("height",L)}}}var K=N.width();if(K){M.css({width:(O?K+"px":L+"px"),height:L+"px"})}else{var Q=M.attr("data-tries");if(!Q){Q=0}if(typeof Q=="undefined"){Q=0}Q=parseInt(Q);if(Q>3){M.css({width:L+"px",height:L+"px"})}else{q.push(M);M.attr("data-tries",Q+1)}}}function z(L){if(L.find(".InputfieldImageListToggle").length){return}var O=u("").append("");var Q=u("").append("");var K=u("").append("");var P="InputfieldImageListToggle--active";var N="";var M=function(V){var U=u(this);var T=U.closest(".Inputfield");var R=U.attr("href");var S;U.parent().children("."+P).removeClass(P);U.addClass(P);if(R=="list"){if(!T.hasClass("InputfieldImageEditAll")){T.find(".InputfieldImageEdit--active .InputfieldImageEdit__close").click();T.addClass("InputfieldImageEditAll")}S=D(T,"listSize");l(T,S);e(T,"mode","list")}else{if(R=="left"){T.removeClass("InputfieldImageEditAll");S=D(T,"size");j(T,S,true);e(T,"mode","left");I()}else{if(R=="grid"){T.removeClass("InputfieldImageEditAll");S=D(T,"size");j(T,S,false);e(T,"mode","grid")}}}A(T.find(".gridImages"));U.blur();return false};O.click(M);Q.click(M);K.click(M);if(L.hasClass("InputfieldImage")){L.find(".InputfieldHeader").append(O).append(Q).append(K);N=D(L,"mode")}else{u(".InputfieldImage .InputfieldHeader",L).append(O).append(Q).append(K)}if(N=="list"){O.click()}else{if(N=="left"){Q.click()}else{}}}function y(P){var M=P.children(".InputfieldHeader");if(M.children(".InputfieldImageSizeSlider").length){return}var O=P.find(".gridImages");var L=O.attr("data-gridsize");var N=L/2;var K=L*2;var Q=u('');M.append(Q);Q.slider({min:N,max:K,value:D(P,"size"),range:"min",slide:function(T,V){var U=V.value;var W=15;var X=Math.floor(L/W);var R=U-N;var S=Math.floor(W+(R/X));if(P.hasClass("InputfieldImageEditAll")){e(P,"size",U);l(P,S)}else{e(P,"listSize",S);j(P,U)}},start:function(R,S){if(P.find(".InputfieldImageEdit:visible").length){P.find(".InputfieldImageEdit__close").click()}},stop:function(R,S){I(P)}})}function e(L,O,N){var M=D(L);var P=L.attr("id");var K=P?P.replace("wrap_Inputfield_",""):"";if(!K.length||typeof N=="undefined"){return}if(M[K][O]==N){return}M[K][O]=N;u.cookie("InputfieldImage",M);c=M}function D(L,O){if(c&&typeof O=="undefined"){return c}var P=L.attr("id");var K=P?P.replace("wrap_Inputfield_",""):"na";var N=c?c:u.cookie("InputfieldImage");var M=null;if(!N){var N={}}if(typeof N[K]=="undefined"){N[K]={}}if(typeof N[K].size=="undefined"){N[K].size=parseInt(L.find(".gridImages").attr("data-size"))}if(typeof N[K].listSize=="undefined"){N[K].listSize=23}if(typeof N[K].mode=="undefined"){N[K].mode=L.find(".gridImages").attr("data-gridMode")}if(c==null){c=N}if(typeof O=="undefined"){M=N}else{if(O===true){M=N[K]}else{if(typeof N[K][O]!="undefined"){M=N[K][O]}}}return M}function a(O){if(O.hasClass("InputfieldStateCollapsed")){return}var P=parseInt(O.find(".InputfieldImageMaxFiles").val());var N=O.find(".gridImages");var M=D(O,"size");var Q=D(O,"mode");var L=Q=="left"?true:false;if(!M){M=N.attr("data-gridsize")}M=parseInt(M);j(O,M,L);if(O.hasClass("InputfieldImageEditAll")||Q=="list"){var K=D(O,"listSize");l(O,K)}if(!O.hasClass("InputfieldImageInit")){O.addClass("InputfieldImageInit");if(O.hasClass("InputfieldRenderValueMode")){return o(O)}else{if(P==1){O.addClass("InputfieldImageMax1");s(O)}else{A(N)}}z(O);y(O)}v(O)}function H(){u("body").addClass("ie-no-drop");u(".InputfieldImage.InputfieldFileMultiple").each(function(){var L=u(this),N=parseInt(L.find(".InputfieldFileMaxFiles").val()),K=L.find(".gridImages"),M=L.find(".InputfieldImageUpload");M.on("change","input[type=file]",function(){var R=u(this),P=R.parent(".InputMask");if(R.val().length>1){P.addClass("ui-state-disabled")}else{P.removeClass("ui-state-disabled")}if(R.next("input.InputfieldFile").length>0){return}var O=K.children("li").length+M.find("input[type=file]").length+1;if(N>0&&O>=N){return}M.find(".InputMask").not(":last").each(function(){var S=u(this);if(S.find("input[type=file]").val()<1){S.remove()}});var Q=P.clone().removeClass("ui-state-disabled");Q.children("input[type=file]").val("");Q.insertAfter(P)})})}function J(M){var L;if(M.length>0){L=M.find(".InputfieldImageUpload")}else{L=u(".InputfieldImageUpload")}L.each(function(P){var Q=u(this);var O=Q.closest(".InputfieldContent");if(Q.hasClass("InputfieldImageInitUpload")){return}N(O,P);Q.addClass("InputfieldImageInitUpload")});function N(X,ai){var W=X.parents("form");var O=X.closest(".InputfieldRepeaterItem");var S=O.length?O.attr("data-editUrl"):W.attr("action");S+=(S.indexOf("?")>-1?"&":"?")+"InputfieldFileAjax=1";var am=W.find("input._post_token");var V=am.attr("name");var aa=am.val();var Z=X.find(".InputfieldImageErrors").first();var R=X.find(".InputfieldImageUpload").data("fieldname");R=R.slice(0,-2);var ah=X.closest(".Inputfield.InputfieldImage");var al=X.find(".InputfieldImageUpload").data("extensions").toLowerCase();var ag=X.find(".InputfieldImageUpload").data("maxfilesize");var Y=X.find("input[type=file]").get(0);var Q=X.find(".gridImages");var aj=Q.get(0);var ac=Q.data("gridsize");var ad=null;var ab=parseInt(X.find(".InputfieldImageMaxFiles").val());ak(X);if(ab!=1){af(Q)}Q.children().addClass("InputfieldFileItemExisting");function U(ao,an){if(typeof an!=="undefined"){ao=""+an+": "+ao}return"
  • "+ao+"
  • "}function P(ao){var an=new String(ao).substring(ao.lastIndexOf("/")+1);if(an.lastIndexOf(".")!=-1){an=an.substring(0,an.lastIndexOf("."))}return an}function ak(an){if(an.hasClass("InputfieldImageDropzoneInit")){return}var ao=an.get(0);ao.addEventListener("dragleave",function(){an.removeClass("ui-state-hover")},false);ao.addEventListener("dragenter",function(){an.addClass("ui-state-hover")},false);ao.addEventListener("dragover",function(ap){if(!an.is("ui-state-hover")){an.addClass("ui-state-hover")}ap.preventDefault();ap.stopPropagation();return false},false);ao.addEventListener("drop",function(ap){ae(ap.dataTransfer.files);an.removeClass("ui-state-hover");ap.preventDefault();ap.stopPropagation();return false},false);an.addClass("InputfieldImageDropzoneInit")}function af(au){var ax=null;var aw=false;var an=null;function aq(az){var aD=az.offset();var aA=az.width();var ay=az.height();var aC=aD.left+aA/2;var aB=aD.top+ay/2;return{clientX:aC,clientY:aB}}function at(){return au.find(".InputfieldImageEdit--active").length>0}function ar(az){if(at()){return}az.preventDefault();az.stopPropagation();aw=false;if(ax==null){var ay=au.attr("data-size")+"px";var aA=u("
    ").addClass("gridImage__overflow");if(au.closest(".InputfieldImageEditAll").length){aA.css({width:"100%",height:ay})}else{aA.css({width:ay,height:ay})}ax=u("
  • ").addClass("ImageOuter gridImage gridImagePlaceholder").append(aA);au.append(ax)}var aB=aq(ax);ax.simulate("mousedown",aB)}function av(ay){if(at()){return}ay.preventDefault();ay.stopPropagation();aw=false;if(ax==null){return}var az={clientX:ay.originalEvent.clientX,clientY:ay.originalEvent.clientY};ax.simulate("mousemove",az)}function ap(ay){if(at()){return}ay.preventDefault();ay.stopPropagation();if(ax==null){return false}aw=true;if(an){clearTimeout(an)}an=setTimeout(function(){if(!aw||ax==null){return}ax.remove();ax=null},1000)}function ao(ay){if(at()){return}aw=false;var az={clientX:ay.clientX,clientY:ay.clientY};ax.simulate("mouseup",az);k=ax.next(".gridImage");ax.remove();ax=null}if(au.length&&!au.hasClass("gridImagesInitDropInPlace")){au.on("dragenter",ar);au.on("dragover",av);au.on("dragleave",ap);au.on("drop",ao);au.addClass("gridImagesInitDropInPlace")}}function T(aI){var aG=ProcessWire.config.InputfieldImage.labels;var au=parseInt(aI.size/1024,10)+" kB";var aH='
    '+aG.dimensions+''+aG.na+"
    "+aG.filesize+""+au+"
    "+aG.variations+"0
    ";var aK=u('
  • '),aD=u(aH),aw=u('
    '),an=u('
    '),aA=u("
    "),aC=u(""),aF=u(' '),aE=u('
    '),ao,ay,aJ,az=URL.createObjectURL(aI),ap=ah.find(".gridImages"),ar=ab==1,aB=D(ah,"size"),at=D(ah,"listSize"),aq=ah.hasClass("InputfieldImageEditAll"),ax=u('');aw.append(ax);aA.find(".gridImage__inner").append(aF);aA.find(".gridImage__inner").append(aE.css("display","none"));aA.find(".gridImage__inner").append(aC);an.append(u('

    '+aI.name+'

    '+au+""));if(aq){aw.css("width",at+"%");an.css("width",(100-at)+"%")}else{aw.css({width:aB+"px",height:aB+"px"})}aK.append(aD).append(aw).append(aA).append(an);ax.attr({src:az,"data-original":az});img=new Image();img.addEventListener("load",function(){aD.find(".dimensions").html(this.width+" × "+this.height);var aL=Math.min(this.width,this.height)/aB;ax.attr({width:this.width/aL,height:this.height/aL})},false);img.src=az;ay=new XMLHttpRequest();ay.upload.addEventListener("progress",function(aL){if(!aL.lengthComputable){return}u("body").addClass("pw-uploading");aC.attr("value",parseInt((aL.loaded/aL.total)*100));aE.css("display","block")},false);ay.addEventListener("load",function(){var aM=u.parseJSON(ay.responseText),aP=aM.length>1;if(aM.error!==undefined){aM=[aM]}for(var aR=0;aR1){ah.removeClass("InputfieldFileEmpty").removeClass("InputfieldFileSingle").addClass("InputfieldFileMultiple")}}}function ae(ar){var ao=function(aw){return parseInt(aw/1024,10)};if(typeof ar==="undefined"){aj.innerHTML="No support for the File API in this web browser";return}for(var ap=0,an=ar.length;apag&&ag>2000000){var au=ao(ar[ap].size),at=ao(ag);aq="Filesize "+au+" kb is too big. Maximum allowed is "+at+" kb";Z.append(U(aq,ar[ap].name))}else{T(ar[ap])}}if(ab==1){break}}}Y.addEventListener("change",function(an){ae(this.files);an.preventDefault();an.stopPropagation();this.value=""},false)}function K(){var O=".InputfieldImageEdit__imagewrapper img";u(document).on("dragenter",O,function(){var R=u(this);if(R.closest(".InputfieldImageMax1").length){return}var S=R.attr("src");var P=R.closest(".InputfieldImageEdit");var Q=R.closest(".InputfieldImageEdit__imagewrapper");Q.addClass("InputfieldImageEdit__replace");b.file=new String(S).substring(S.lastIndexOf("/")+1);b.item=u("#"+P.attr("data-for"));b.edit=P}).on("dragleave",O,function(){var Q=u(this);if(Q.closest(".InputfieldImageMax1").length){return}var P=Q.closest(".InputfieldImageEdit__imagewrapper");P.removeClass("InputfieldImageEdit__replace");b.file="";b.item=null;b.edit=null})}K()}function G(){u(".InputfieldImage.Inputfield").each(function(){a(u(this))});w();if(r()){J("")}else{H()}u(document).on("reloaded",".InputfieldImage",function(){var K=u(this);a(K);J(K)}).on("wiretabclick",function(M,L,K){L.find(".InputfieldImage").each(function(){a(u(this))})}).on("opened",".InputfieldImage",function(){a(u(this))})}G()}jQuery(document).ready(function(a){InputfieldImage(a)}); \ No newline at end of file diff --git a/wire/modules/Jquery/JqueryUI/JqueryUI.module b/wire/modules/Jquery/JqueryUI/JqueryUI.module index c7709c5e..756f04f2 100644 --- a/wire/modules/Jquery/JqueryUI/JqueryUI.module +++ b/wire/modules/Jquery/JqueryUI/JqueryUI.module @@ -29,7 +29,26 @@ class JqueryUI extends ModuleJS { public function ___use($name) { if($name == 'panel') { // also add stylesheet when panel component requested - $this->config->styles->add($this->config->urls->JqueryUI . "panel.css"); + $this->config->styles->add($this->config->urls('JqueryUI') . "panel.css"); + } else if($name == 'vex') { + // custom loader for vex + static $vexLoaded = false; + if(!$vexLoaded) { + $vexLoaded = true; + $url = $this->config->urls('JqueryUI') . 'vex/'; + $this->config->styles->add($url . 'css/vex.css'); + $this->config->styles->add($url . 'styles/vex-theme-default.css'); + $this->config->scripts->add($url . 'scripts/vex.combined.min.js'); + $adminTheme = $this->wire('adminTheme'); + if($adminTheme) $adminTheme->addExtraMarkup('head', + "" + ); + } + return $this; } return parent::___use($name); } diff --git a/wire/modules/Jquery/JqueryUI/vex/LICENSE b/wire/modules/Jquery/JqueryUI/vex/LICENSE new file mode 100755 index 00000000..d746b044 --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/LICENSE @@ -0,0 +1,8 @@ +Copyright (c) 2013 HubSpot, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/wire/modules/Jquery/JqueryUI/vex/README.md b/wire/modules/Jquery/JqueryUI/vex/README.md new file mode 100755 index 00000000..e96ddb4b --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/README.md @@ -0,0 +1,24 @@ +## vex + +### [Demo](http://github.hubspot.com/vex/docs/welcome/)    [Documentation](http://github.hubspot.com/vex/) + +vex is a modern dialog library which is highly configurable, easily stylable, and gets out of the way. You'll love vex because it's tiny (`5.5kb` minified and gzipped), has a clear and simple API, works on mobile devices, and can be customized to match your style in seconds. + +![](https://raw.github.com/HubSpot/vex/master/docs/vex.gif) + +### Features + +- Drop-in replacement for `alert`, `confirm`, and `prompt` +- Easily configurable animations which are smooth as butter +- Lightweight with no external dependencies +- Looks and behaves great on mobile devices +- Open multiple dialogs at once and close them individually or all at once +- Built in CSS spinner for asynchronous dialogs (TODO) +- UMD support + +### Documentation +- [Getting started](/docs/intro.md) +- [API Docs](/docs/api/1-Basic.md) +- [Plugins](/docs/api/4-Plugins.md) + +[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard) diff --git a/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-bottom-right-corner.css b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-bottom-right-corner.css new file mode 100755 index 00000000..cac710d8 --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-bottom-right-corner.css @@ -0,0 +1,437 @@ +@keyframes vex-slideup { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 0; } + 1% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); + opacity: 0; } + 2% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); + opacity: 1; } + 100% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 1; } } + +@-webkit-keyframes vex-slideup { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 0; } + 1% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); + opacity: 0; } + 2% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); + opacity: 1; } + 100% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 1; } } + +@-moz-keyframes vex-slideup { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 0; } + 1% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); + opacity: 0; } + 2% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); + opacity: 1; } + 100% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 1; } } + +@-ms-keyframes vex-slideup { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 0; } + 1% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); + opacity: 0; } + 2% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); + opacity: 1; } + 100% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 1; } } + +@-o-keyframes vex-slideup { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 0; } + 1% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); + opacity: 0; } + 2% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); + opacity: 1; } + 100% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 1; } } + +@keyframes vex-slidedown { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); } } + +@-webkit-keyframes vex-slidedown { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); } } + +@-moz-keyframes vex-slidedown { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); } } + +@-ms-keyframes vex-slidedown { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); } } + +@-o-keyframes vex-slidedown { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + transform: translateY(800px); + -webkit-transform: translateY(800px); + -moz-transform: translateY(800px); + -ms-transform: translateY(800px); + -o-transform: translateY(800px); } } + +@keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-webkit-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-moz-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-ms-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-o-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +.vex.vex-theme-bottom-right-corner { + top: auto; + bottom: 0; + right: 0; + overflow: visible; } + .vex.vex-theme-bottom-right-corner .vex-overlay { + display: none; } + .vex.vex-theme-bottom-right-corner.vex-closing .vex-content { + animation: vex-slidedown 0.5s; + -webkit-animation: vex-slidedown 0.5s; + -moz-animation: vex-slidedown 0.5s; + -ms-animation: vex-slidedown 0.5s; + -o-animation: vex-slidedown 0.5s; + -webkit-backface-visibility: hidden; } + .vex.vex-theme-bottom-right-corner .vex-content { + animation: vex-slideup 0.5s; + -webkit-animation: vex-slideup 0.5s; + -moz-animation: vex-slideup 0.5s; + -ms-animation: vex-slideup 0.5s; + -o-animation: vex-slideup 0.5s; + -webkit-backface-visibility: hidden; } + .vex.vex-theme-bottom-right-corner .vex-content { + -moz-border-radius: 5px 0 0 0; + -webkit-border-radius: 5px 0 0 0; + border-radius: 5px 0 0 0; + font-family: "Helvetica Neue", sans-serif; + background: #f0f0f0; + color: #444; + padding: 1em; + max-width: 100%; + width: 450px; + font-size: 1.1em; + line-height: 1.5em; + position: fixed; + bottom: 0; + right: 0; + left: auto; } + .vex.vex-theme-bottom-right-corner .vex-content h1, .vex.vex-theme-bottom-right-corner .vex-content h2, .vex.vex-theme-bottom-right-corner .vex-content h3, .vex.vex-theme-bottom-right-corner .vex-content h4, .vex.vex-theme-bottom-right-corner .vex-content h5, .vex.vex-theme-bottom-right-corner .vex-content h6, .vex.vex-theme-bottom-right-corner .vex-content p, .vex.vex-theme-bottom-right-corner .vex-content ul, .vex.vex-theme-bottom-right-corner .vex-content li { + color: inherit; } + .vex.vex-theme-bottom-right-corner .vex-close { + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + position: absolute; + top: 0; + right: 0; + cursor: pointer; } + .vex.vex-theme-bottom-right-corner .vex-close:before { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + position: absolute; + content: "\00D7"; + font-size: 26px; + font-weight: normal; + line-height: 31px; + height: 30px; + width: 30px; + text-align: center; + top: 3px; + right: 3px; + color: #bbb; + background: transparent; } + .vex.vex-theme-bottom-right-corner .vex-close:hover:before, .vex.vex-theme-bottom-right-corner .vex-close:active:before { + color: #777; + background: #e0e0e0; } + .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-message { + margin-bottom: .5em; } + .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input { + margin-bottom: 1em; } + .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="week"] { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: #fff; + width: 100%; + padding: .25em .67em; + border: 0; + font-family: inherit; + font-weight: inherit; + font-size: inherit; + min-height: 2.5em; + margin: 0 0 .25em; } + .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-input input[type="week"]:focus { + -moz-box-shadow: inset 0 0 0 2px #8dbdf1; + -webkit-box-shadow: inset 0 0 0 2px #8dbdf1; + box-shadow: inset 0 0 0 2px #8dbdf1; + outline: none; } + .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-buttons { + *zoom: 1; } + .vex.vex-theme-bottom-right-corner .vex-dialog-form .vex-dialog-buttons:after { + content: ""; + display: table; + clear: both; } + .vex.vex-theme-bottom-right-corner .vex-dialog-button { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 0; + float: right; + margin: 0 0 0 .5em; + font-family: inherit; + text-transform: uppercase; + letter-spacing: .1em; + font-size: .8em; + line-height: 1em; + padding: .75em 2em; } + .vex.vex-theme-bottom-right-corner .vex-dialog-button.vex-last { + margin-left: 0; } + .vex.vex-theme-bottom-right-corner .vex-dialog-button:focus { + animation: vex-pulse 1.1s infinite; + -webkit-animation: vex-pulse 1.1s infinite; + -moz-animation: vex-pulse 1.1s infinite; + -ms-animation: vex-pulse 1.1s infinite; + -o-animation: vex-pulse 1.1s infinite; + -webkit-backface-visibility: hidden; + outline: none; } + @media (max-width: 568px) { + .vex.vex-theme-bottom-right-corner .vex-dialog-button:focus { + animation: none; + -webkit-animation: none; + -moz-animation: none; + -ms-animation: none; + -o-animation: none; + -webkit-backface-visibility: hidden; } } + .vex.vex-theme-bottom-right-corner .vex-dialog-button.vex-dialog-button-primary { + background: #3288e6; + color: #fff; } + .vex.vex-theme-bottom-right-corner .vex-dialog-button.vex-dialog-button-secondary { + background: #e0e0e0; + color: #777; } + +.vex-loading-spinner.vex-theme-bottom-right-corner { + -moz-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3); + box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3); + -moz-border-radius: 100%; + -webkit-border-radius: 100%; + border-radius: 100%; + background: #f0f0f0; + border: .2em solid transparent; + border-top-color: #bbb; + top: -1.1em; + bottom: auto; } + +body.vex-open { + overflow: initial; } diff --git a/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-default.css b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-default.css new file mode 100755 index 00000000..d4a213d1 --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-default.css @@ -0,0 +1,368 @@ +@keyframes vex-flyin { + 0% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } + 100% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } } + +@-webkit-keyframes vex-flyin { + 0% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } + 100% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } } + +@-moz-keyframes vex-flyin { + 0% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } + 100% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } } + +@-ms-keyframes vex-flyin { + 0% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } + 100% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } } + +@-o-keyframes vex-flyin { + 0% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } + 100% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } } + +@keyframes vex-flyout { + 0% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } } + +@-webkit-keyframes vex-flyout { + 0% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } } + +@-moz-keyframes vex-flyout { + 0% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } } + +@-ms-keyframes vex-flyout { + 0% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } } + +@-o-keyframes vex-flyout { + 0% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } } + +@keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-webkit-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-moz-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-ms-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-o-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +.vex.vex-theme-default { + padding-top: 160px; + padding-bottom: 160px; } + .vex.vex-theme-default.vex-closing .vex-content { + animation: vex-flyout 0.5s; + -webkit-animation: vex-flyout 0.5s; + -moz-animation: vex-flyout 0.5s; + -ms-animation: vex-flyout 0.5s; + -o-animation: vex-flyout 0.5s; + -webkit-backface-visibility: hidden; } + .vex.vex-theme-default .vex-content { + animation: vex-flyin 0.5s; + -webkit-animation: vex-flyin 0.5s; + -moz-animation: vex-flyin 0.5s; + -ms-animation: vex-flyin 0.5s; + -o-animation: vex-flyin 0.5s; + -webkit-backface-visibility: hidden; } + .vex.vex-theme-default .vex-content { + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + font-family: "Helvetica Neue", sans-serif; + background: #f0f0f0; + color: #444; + padding: 1em; + position: relative; + margin: 0 auto; + max-width: 100%; + width: 450px; + font-size: 1.1em; + line-height: 1.5em; } + .vex.vex-theme-default .vex-content h1, .vex.vex-theme-default .vex-content h2, .vex.vex-theme-default .vex-content h3, .vex.vex-theme-default .vex-content h4, .vex.vex-theme-default .vex-content h5, .vex.vex-theme-default .vex-content h6, .vex.vex-theme-default .vex-content p, .vex.vex-theme-default .vex-content ul, .vex.vex-theme-default .vex-content li { + color: inherit; } + .vex.vex-theme-default .vex-close { + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + position: absolute; + top: 0; + right: 0; + cursor: pointer; } + .vex.vex-theme-default .vex-close:before { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + position: absolute; + content: "\00D7"; + font-size: 26px; + font-weight: normal; + line-height: 31px; + height: 30px; + width: 30px; + text-align: center; + top: 3px; + right: 3px; + color: #bbb; + background: transparent; } + .vex.vex-theme-default .vex-close:hover:before, .vex.vex-theme-default .vex-close:active:before { + color: #777; + background: #e0e0e0; } + .vex.vex-theme-default .vex-dialog-form .vex-dialog-message { + margin-bottom: .5em; } + .vex.vex-theme-default .vex-dialog-form .vex-dialog-input { + margin-bottom: 1em; } + .vex.vex-theme-default .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="week"] { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: #fff; + width: 100%; + padding: .25em .67em; + border: 0; + font-family: inherit; + font-weight: inherit; + font-size: inherit; + min-height: 2.5em; + margin: 0 0 .25em; } + .vex.vex-theme-default .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="week"]:focus { + -moz-box-shadow: inset 0 0 0 2px #8dbdf1; + -webkit-box-shadow: inset 0 0 0 2px #8dbdf1; + box-shadow: inset 0 0 0 2px #8dbdf1; + outline: none; } + .vex.vex-theme-default .vex-dialog-form .vex-dialog-buttons { + *zoom: 1; } + .vex.vex-theme-default .vex-dialog-form .vex-dialog-buttons:after { + content: ""; + display: table; + clear: both; } + .vex.vex-theme-default .vex-dialog-button { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 0; + float: right; + margin: 0 0 0 .5em; + font-family: inherit; + text-transform: uppercase; + letter-spacing: .1em; + font-size: .8em; + line-height: 1em; + padding: .75em 2em; } + .vex.vex-theme-default .vex-dialog-button.vex-last { + margin-left: 0; } + .vex.vex-theme-default .vex-dialog-button:focus { + animation: vex-pulse 1.1s infinite; + -webkit-animation: vex-pulse 1.1s infinite; + -moz-animation: vex-pulse 1.1s infinite; + -ms-animation: vex-pulse 1.1s infinite; + -o-animation: vex-pulse 1.1s infinite; + -webkit-backface-visibility: hidden; + outline: none; } + @media (max-width: 568px) { + .vex.vex-theme-default .vex-dialog-button:focus { + animation: none; + -webkit-animation: none; + -moz-animation: none; + -ms-animation: none; + -o-animation: none; + -webkit-backface-visibility: hidden; } } + .vex.vex-theme-default .vex-dialog-button.vex-dialog-button-primary { + background: #3288e6; + color: #fff; } + .vex.vex-theme-default .vex-dialog-button.vex-dialog-button-secondary { + background: #e0e0e0; + color: #777; } + +.vex-loading-spinner.vex-theme-default { + -moz-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3); + box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3); + -moz-border-radius: 100%; + -webkit-border-radius: 100%; + border-radius: 100%; + background: #f0f0f0; + border: .2em solid transparent; + border-top-color: #bbb; + top: -1.1em; + bottom: auto; } diff --git a/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-flat-attack.css b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-flat-attack.css new file mode 100755 index 00000000..47658924 --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-flat-attack.css @@ -0,0 +1,325 @@ +@keyframes vex-flipin-horizontal { + 0% { + opacity: 0; + transform: rotateY(-90deg); + -webkit-transform: rotateY(-90deg); + -moz-transform: rotateY(-90deg); + -ms-transform: rotateY(-90deg); + -o-transform: rotateY(-90deg); } + 100% { + opacity: 1; + transform: rotateY(0deg); + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); } } + +@-webkit-keyframes vex-flipin-horizontal { + 0% { + opacity: 0; + transform: rotateY(-90deg); + -webkit-transform: rotateY(-90deg); + -moz-transform: rotateY(-90deg); + -ms-transform: rotateY(-90deg); + -o-transform: rotateY(-90deg); } + 100% { + opacity: 1; + transform: rotateY(0deg); + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); } } + +@-moz-keyframes vex-flipin-horizontal { + 0% { + opacity: 0; + transform: rotateY(-90deg); + -webkit-transform: rotateY(-90deg); + -moz-transform: rotateY(-90deg); + -ms-transform: rotateY(-90deg); + -o-transform: rotateY(-90deg); } + 100% { + opacity: 1; + transform: rotateY(0deg); + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); } } + +@-ms-keyframes vex-flipin-horizontal { + 0% { + opacity: 0; + transform: rotateY(-90deg); + -webkit-transform: rotateY(-90deg); + -moz-transform: rotateY(-90deg); + -ms-transform: rotateY(-90deg); + -o-transform: rotateY(-90deg); } + 100% { + opacity: 1; + transform: rotateY(0deg); + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); } } + +@-o-keyframes vex-flipin-horizontal { + 0% { + opacity: 0; + transform: rotateY(-90deg); + -webkit-transform: rotateY(-90deg); + -moz-transform: rotateY(-90deg); + -ms-transform: rotateY(-90deg); + -o-transform: rotateY(-90deg); } + 100% { + opacity: 1; + transform: rotateY(0deg); + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); } } + +@keyframes vex-flipout-horizontal { + 0% { + opacity: 1; + transform: rotateY(0deg); + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); } + 100% { + opacity: 0; + transform: rotateY(90deg); + -webkit-transform: rotateY(90deg); + -moz-transform: rotateY(90deg); + -ms-transform: rotateY(90deg); + -o-transform: rotateY(90deg); } } + +@-webkit-keyframes vex-flipout-horizontal { + 0% { + opacity: 1; + transform: rotateY(0deg); + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); } + 100% { + opacity: 0; + transform: rotateY(90deg); + -webkit-transform: rotateY(90deg); + -moz-transform: rotateY(90deg); + -ms-transform: rotateY(90deg); + -o-transform: rotateY(90deg); } } + +@-moz-keyframes vex-flipout-horizontal { + 0% { + opacity: 1; + transform: rotateY(0deg); + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); } + 100% { + opacity: 0; + transform: rotateY(90deg); + -webkit-transform: rotateY(90deg); + -moz-transform: rotateY(90deg); + -ms-transform: rotateY(90deg); + -o-transform: rotateY(90deg); } } + +@-ms-keyframes vex-flipout-horizontal { + 0% { + opacity: 1; + transform: rotateY(0deg); + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); } + 100% { + opacity: 0; + transform: rotateY(90deg); + -webkit-transform: rotateY(90deg); + -moz-transform: rotateY(90deg); + -ms-transform: rotateY(90deg); + -o-transform: rotateY(90deg); } } + +@-o-keyframes vex-flipout-horizontal { + 0% { + opacity: 1; + transform: rotateY(0deg); + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); } + 100% { + opacity: 0; + transform: rotateY(90deg); + -webkit-transform: rotateY(90deg); + -moz-transform: rotateY(90deg); + -ms-transform: rotateY(90deg); + -o-transform: rotateY(90deg); } } + +.vex.vex-theme-flat-attack { + -moz-perspective: 1300px; + -webkit-perspective: 1300px; + perspective: 1300px; + -moz-perspective-origin: 50% 150px; + -webkit-perspective-origin: 50% 150px; + perspective-origin: 50% 150px; + padding-top: 100px; + padding-bottom: 100px; + font-size: 1.5em; } + .vex.vex-theme-flat-attack.vex-closing .vex-content { + animation: vex-flipout-horizontal 0.5s; + -webkit-animation: vex-flipout-horizontal 0.5s; + -moz-animation: vex-flipout-horizontal 0.5s; + -ms-animation: vex-flipout-horizontal 0.5s; + -o-animation: vex-flipout-horizontal 0.5s; + -webkit-backface-visibility: hidden; } + .vex.vex-theme-flat-attack .vex-content { + -webkit-transform-style: preserve-3d; + -moz-transform-style: preserve-3d; + transform-style: preserve-3d; + animation: vex-flipin-horizontal 0.5s; + -webkit-animation: vex-flipin-horizontal 0.5s; + -moz-animation: vex-flipin-horizontal 0.5s; + -ms-animation: vex-flipin-horizontal 0.5s; + -o-animation: vex-flipin-horizontal 0.5s; + -webkit-backface-visibility: hidden; } + .vex.vex-theme-flat-attack .vex-content { + font-family: "Helvetica Neue", sans-serif; + font-weight: 200; + background: #fff; + color: #444; + padding: 2em 2em 3em 2em; + line-height: 1.5em; + position: relative; + margin: 0 auto; + max-width: 100%; + width: 600px; } + .vex.vex-theme-flat-attack .vex-content h1, .vex.vex-theme-flat-attack .vex-content h2, .vex.vex-theme-flat-attack .vex-content h3, .vex.vex-theme-flat-attack .vex-content h4, .vex.vex-theme-flat-attack .vex-content h5, .vex.vex-theme-flat-attack .vex-content h6, .vex.vex-theme-flat-attack .vex-content p, .vex.vex-theme-flat-attack .vex-content ul, .vex.vex-theme-flat-attack .vex-content li { + color: inherit; } + .vex.vex-theme-flat-attack .vex-close { + position: absolute; + top: 0; + right: 0; + cursor: pointer; } + .vex.vex-theme-flat-attack .vex-close:before { + font-family: "Helvetica Neue", sans-serif; + font-weight: 100; + line-height: 1px; + padding-top: .5em; + display: block; + font-size: 2em; + text-indent: 1px; + overflow: hidden; + height: 1.25em; + width: 1.25em; + text-align: center; + top: 0; + right: 0; + color: #fff; + background: #666; } + .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-message { + margin-bottom: .5em; } + .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input { + margin-bottom: .5em; } + .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="week"] { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: #f0f0f0; + width: 100%; + padding: .25em .67em; + border: 0; + font-family: inherit; + font-weight: inherit; + font-size: inherit; + min-height: 2.5em; + margin: 0 0 .25em; } + .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-input input[type="week"]:focus { + -moz-box-shadow: inset 0 0 0 2px #666; + -webkit-box-shadow: inset 0 0 0 2px #666; + box-shadow: inset 0 0 0 2px #666; + outline: none; } + .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-buttons { + *zoom: 1; + padding-top: 1em; + margin-bottom: -3em; + margin-left: -2em; + margin-right: -2em; } + .vex.vex-theme-flat-attack .vex-dialog-form .vex-dialog-buttons:after { + content: ""; + display: table; + clear: both; } + .vex.vex-theme-flat-attack .vex-dialog-button { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + margin: 0; + float: right; + padding: .5em 1em; + font-size: 1.13em; + text-transform: uppercase; + font-weight: 200; + letter-spacing: .1em; + line-height: 1em; + font-family: inherit; } + .vex.vex-theme-flat-attack .vex-dialog-button.vex-last { + margin-left: 0; } + .vex.vex-theme-flat-attack .vex-dialog-button:focus { + outline: none; } + .vex.vex-theme-flat-attack .vex-dialog-button.vex-dialog-button-primary { + background: #666; + color: #fff; } + .vex.vex-theme-flat-attack .vex-dialog-button.vex-dialog-button-primary:focus { + -moz-box-shadow: inset 0 3px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 3px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 3px rgba(0, 0, 0, 0.2); } + .vex.vex-theme-flat-attack .vex-dialog-button.vex-dialog-button-secondary { + background: #fff; + color: #ccc; } + .vex.vex-theme-flat-attack .vex-dialog-button.vex-dialog-button-secondary:focus { + -moz-box-shadow: inset 0 3px #aaa; + -webkit-box-shadow: inset 0 3px #aaa; + box-shadow: inset 0 3px #aaa; + background: #eee; + color: #777; } + .vex.vex-theme-flat-attack .vex-dialog-button.vex-dialog-button-secondary:hover, .vex.vex-theme-flat-attack .vex-dialog-button.vex-dialog-button-secondary:active { + color: #777; } + .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-close:before { + background: #ff7ea7; } + .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-input input[type="week"]:focus { + -moz-box-shadow: inset 0 0 0 2px #ff7ea7; + -webkit-box-shadow: inset 0 0 0 2px #ff7ea7; + box-shadow: inset 0 0 0 2px #ff7ea7; } + .vex.vex-theme-flat-attack.vex-theme-flat-attack-pink .vex-dialog-form .vex-dialog-buttons .vex-dialog-button.vex-dialog-button-primary { + background: #ff7ea7; } + .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-close:before { + background: #ce4a55; } + .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-input input[type="week"]:focus { + -moz-box-shadow: inset 0 0 0 2px #ce4a55; + -webkit-box-shadow: inset 0 0 0 2px #ce4a55; + box-shadow: inset 0 0 0 2px #ce4a55; } + .vex.vex-theme-flat-attack.vex-theme-flat-attack-red .vex-dialog-form .vex-dialog-buttons .vex-dialog-button.vex-dialog-button-primary { + background: #ce4a55; } + .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-close:before { + background: #34b989; } + .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-input input[type="week"]:focus { + -moz-box-shadow: inset 0 0 0 2px #34b989; + -webkit-box-shadow: inset 0 0 0 2px #34b989; + box-shadow: inset 0 0 0 2px #34b989; } + .vex.vex-theme-flat-attack.vex-theme-flat-attack-green .vex-dialog-form .vex-dialog-buttons .vex-dialog-button.vex-dialog-button-primary { + background: #34b989; } + .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-close:before { + background: #477FA5; } + .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-input input[type="week"]:focus { + -moz-box-shadow: inset 0 0 0 2px #477FA5; + -webkit-box-shadow: inset 0 0 0 2px #477FA5; + box-shadow: inset 0 0 0 2px #477FA5; } + .vex.vex-theme-flat-attack.vex-theme-flat-attack-blue .vex-dialog-form .vex-dialog-buttons .vex-dialog-button.vex-dialog-button-primary { + background: #477FA5; } + +.vex-loading-spinner.vex-theme-flat-attack { + height: 4em; + width: 4em; } diff --git a/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-os.css b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-os.css new file mode 100755 index 00000000..a3c71884 --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-os.css @@ -0,0 +1,373 @@ +@keyframes vex-flyin { + 0% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } + 100% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } } + +@-webkit-keyframes vex-flyin { + 0% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } + 100% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } } + +@-moz-keyframes vex-flyin { + 0% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } + 100% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } } + +@-ms-keyframes vex-flyin { + 0% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } + 100% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } } + +@-o-keyframes vex-flyin { + 0% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } + 100% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } } + +@keyframes vex-flyout { + 0% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } } + +@-webkit-keyframes vex-flyout { + 0% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } } + +@-moz-keyframes vex-flyout { + 0% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } } + +@-ms-keyframes vex-flyout { + 0% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } } + +@-o-keyframes vex-flyout { + 0% { + opacity: 1; + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + opacity: 0; + transform: translateY(-40px); + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); } } + +@keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-webkit-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-moz-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-ms-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-o-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +.vex.vex-theme-os { + padding-top: 160px; + padding-bottom: 160px; } + .vex.vex-theme-os.vex-closing .vex-content { + animation: vex-flyout 0.5s; + -webkit-animation: vex-flyout 0.5s; + -moz-animation: vex-flyout 0.5s; + -ms-animation: vex-flyout 0.5s; + -o-animation: vex-flyout 0.5s; + -webkit-backface-visibility: hidden; } + .vex.vex-theme-os .vex-content { + animation: vex-flyin 0.5s; + -webkit-animation: vex-flyin 0.5s; + -moz-animation: vex-flyin 0.5s; + -ms-animation: vex-flyin 0.5s; + -o-animation: vex-flyin 0.5s; + -webkit-backface-visibility: hidden; } + .vex.vex-theme-os .vex-content { + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + -moz-box-shadow: inset 0 1px #a6a6a6, 0 0 0 1px rgba(0, 0, 0, 0.08); + -webkit-box-shadow: inset 0 1px #a6a6a6, 0 0 0 1px rgba(0, 0, 0, 0.08); + box-shadow: inset 0 1px #a6a6a6, 0 0 0 1px rgba(0, 0, 0, 0.08); + font-family: "Helvetica Neue", sans-serif; + border-top: 20px solid #bbb; + background: #f0f0f0; + color: #444; + padding: 1em; + position: relative; + margin: 0 auto; + max-width: 100%; + width: 450px; + font-size: 1.1em; + line-height: 1.5em; } + .vex.vex-theme-os .vex-content h1, .vex.vex-theme-os .vex-content h2, .vex.vex-theme-os .vex-content h3, .vex.vex-theme-os .vex-content h4, .vex.vex-theme-os .vex-content h5, .vex.vex-theme-os .vex-content h6, .vex.vex-theme-os .vex-content p, .vex.vex-theme-os .vex-content ul, .vex.vex-theme-os .vex-content li { + color: inherit; } + .vex.vex-theme-os .vex-close { + -moz-border-radius: 0 5px 0 0; + -webkit-border-radius: 0 5px 0 0; + border-radius: 0 5px 0 0; + position: absolute; + top: 0; + right: 0; + cursor: pointer; } + .vex.vex-theme-os .vex-close:before { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + position: absolute; + content: "\00D7"; + font-size: 26px; + font-weight: normal; + line-height: 31px; + height: 30px; + width: 30px; + text-align: center; + top: 3px; + right: 3px; + color: #bbb; + background: transparent; } + .vex.vex-theme-os .vex-close:hover:before, .vex.vex-theme-os .vex-close:active:before { + color: #777; + background: #e0e0e0; } + .vex.vex-theme-os .vex-dialog-form .vex-dialog-message { + margin-bottom: .5em; } + .vex.vex-theme-os .vex-dialog-form .vex-dialog-input { + margin-bottom: 1em; } + .vex.vex-theme-os .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="week"] { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: #fff; + width: 100%; + padding: .25em .67em; + border: 0; + font-family: inherit; + font-weight: inherit; + font-size: inherit; + min-height: 2.5em; + margin: 0 0 .25em; } + .vex.vex-theme-os .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-os .vex-dialog-form .vex-dialog-input input[type="week"]:focus { + -moz-box-shadow: inset 0 0 0 1px #3288e6; + -webkit-box-shadow: inset 0 0 0 1px #3288e6; + box-shadow: inset 0 0 0 1px #3288e6; + outline: none; } + .vex.vex-theme-os .vex-dialog-form .vex-dialog-buttons { + *zoom: 1; } + .vex.vex-theme-os .vex-dialog-form .vex-dialog-buttons:after { + content: ""; + display: table; + clear: both; } + .vex.vex-theme-os .vex-dialog-button { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 0; + float: right; + margin: 0 0 0 .5em; + font-family: inherit; + text-transform: uppercase; + letter-spacing: .1em; + font-size: .8em; + line-height: 1em; + padding: .75em 2em; } + .vex.vex-theme-os .vex-dialog-button.vex-last { + margin-left: 0; } + .vex.vex-theme-os .vex-dialog-button:focus { + animation: vex-pulse 1.1s infinite; + -webkit-animation: vex-pulse 1.1s infinite; + -moz-animation: vex-pulse 1.1s infinite; + -ms-animation: vex-pulse 1.1s infinite; + -o-animation: vex-pulse 1.1s infinite; + -webkit-backface-visibility: hidden; + outline: none; } + @media (max-width: 568px) { + .vex.vex-theme-os .vex-dialog-button:focus { + animation: none; + -webkit-animation: none; + -moz-animation: none; + -ms-animation: none; + -o-animation: none; + -webkit-backface-visibility: hidden; } } + .vex.vex-theme-os .vex-dialog-button.vex-dialog-button-primary { + background: #3288e6; + color: #fff; } + .vex.vex-theme-os .vex-dialog-button.vex-dialog-button-secondary { + background: #e0e0e0; + color: #777; } + +.vex-loading-spinner.vex-theme-os { + -moz-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2), 0 0 0.5em rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2), 0 0 0.5em rgba(0, 0, 0, 0.2); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2), 0 0 0.5em rgba(0, 0, 0, 0.2); + -moz-border-radius: 100%; + -webkit-border-radius: 100%; + border-radius: 100%; + background: rgba(255, 255, 255, 0.2); + width: 0; + height: 0; + border: 1.2em solid #bbb; + border-top-color: #f0f0f0; + border-bottom-color: #f0f0f0; } diff --git a/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-plain.css b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-plain.css new file mode 100755 index 00000000..9b3bc0d6 --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-plain.css @@ -0,0 +1,173 @@ +@keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-webkit-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-moz-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-ms-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-o-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +.vex.vex-theme-plain { + padding-top: 160px; + padding-bottom: 160px; } + .vex.vex-theme-plain .vex-content { + font-family: "Helvetica Neue", sans-serif; + background: #fff; + color: #444; + padding: 1em; + position: relative; + margin: 0 auto; + max-width: 100%; + width: 450px; + font-size: 1.1em; + line-height: 1.5em; } + .vex.vex-theme-plain .vex-content h1, .vex.vex-theme-plain .vex-content h2, .vex.vex-theme-plain .vex-content h3, .vex.vex-theme-plain .vex-content h4, .vex.vex-theme-plain .vex-content h5, .vex.vex-theme-plain .vex-content h6, .vex.vex-theme-plain .vex-content p, .vex.vex-theme-plain .vex-content ul, .vex.vex-theme-plain .vex-content li { + color: inherit; } + .vex.vex-theme-plain .vex-close { + position: absolute; + top: 0; + right: 0; + cursor: pointer; } + .vex.vex-theme-plain .vex-close:before { + position: absolute; + content: "\00D7"; + font-size: 26px; + font-weight: normal; + line-height: 31px; + height: 30px; + width: 30px; + text-align: center; + top: 3px; + right: 3px; + color: #bbb; + background: transparent; } + .vex.vex-theme-plain .vex-close:hover:before, .vex.vex-theme-plain .vex-close:active:before { + color: #777; + background: #e0e0e0; } + .vex.vex-theme-plain .vex-dialog-form .vex-dialog-message { + margin-bottom: .5em; } + .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input { + margin-bottom: 1em; } + .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="week"] { + background: #f0f0f0; + width: 100%; + padding: .25em .67em; + border: 0; + font-family: inherit; + font-weight: inherit; + font-size: inherit; + min-height: 2.5em; + margin: 0 0 .25em; } + .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="week"]:focus { + -moz-box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.2); + outline: none; } + .vex.vex-theme-plain .vex-dialog-form .vex-dialog-buttons { + *zoom: 1; } + .vex.vex-theme-plain .vex-dialog-form .vex-dialog-buttons:after { + content: ""; + display: table; + clear: both; } + .vex.vex-theme-plain .vex-dialog-button { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + float: right; + margin: 0 0 0 .5em; + font-family: inherit; + text-transform: uppercase; + letter-spacing: .1em; + font-size: .8em; + line-height: 1em; + padding: .75em 2em; } + .vex.vex-theme-plain .vex-dialog-button.vex-last { + margin-left: 0; } + .vex.vex-theme-plain .vex-dialog-button:focus { + animation: vex-pulse 1.1s infinite; + -webkit-animation: vex-pulse 1.1s infinite; + -moz-animation: vex-pulse 1.1s infinite; + -ms-animation: vex-pulse 1.1s infinite; + -o-animation: vex-pulse 1.1s infinite; + -webkit-backface-visibility: hidden; + outline: none; } + @media (max-width: 568px) { + .vex.vex-theme-plain .vex-dialog-button:focus { + animation: none; + -webkit-animation: none; + -moz-animation: none; + -ms-animation: none; + -o-animation: none; + -webkit-backface-visibility: hidden; } } + .vex.vex-theme-plain .vex-dialog-button.vex-dialog-button-primary { + background: #3288e6; + color: #fff; } + .vex.vex-theme-plain .vex-dialog-button.vex-dialog-button-secondary { + background: #e0e0e0; + color: #777; } + +.vex-loading-spinner.vex-theme-plain { + height: 2.5em; + width: 2.5em; } diff --git a/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-top.css b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-top.css new file mode 100755 index 00000000..8ca3ae7d --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-top.css @@ -0,0 +1,432 @@ +@keyframes vex-dropin { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 0; } + 1% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); + opacity: 0; } + 2% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); + opacity: 1; } + 100% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 1; } } + +@-webkit-keyframes vex-dropin { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 0; } + 1% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); + opacity: 0; } + 2% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); + opacity: 1; } + 100% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 1; } } + +@-moz-keyframes vex-dropin { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 0; } + 1% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); + opacity: 0; } + 2% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); + opacity: 1; } + 100% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 1; } } + +@-ms-keyframes vex-dropin { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 0; } + 1% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); + opacity: 0; } + 2% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); + opacity: 1; } + 100% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 1; } } + +@-o-keyframes vex-dropin { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 0; } + 1% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); + opacity: 0; } + 2% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); + opacity: 1; } + 100% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + opacity: 1; } } + +@keyframes vex-dropout { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); } } + +@-webkit-keyframes vex-dropout { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); } } + +@-moz-keyframes vex-dropout { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); } } + +@-ms-keyframes vex-dropout { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); } } + +@-o-keyframes vex-dropout { + 0% { + transform: translateY(0); + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); } + 100% { + transform: translateY(-800px); + -webkit-transform: translateY(-800px); + -moz-transform: translateY(-800px); + -ms-transform: translateY(-800px); + -o-transform: translateY(-800px); } } + +@keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-webkit-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-moz-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-ms-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-o-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +.vex.vex-theme-top.vex-closing .vex-content { + animation: vex-dropout 0.5s; + -webkit-animation: vex-dropout 0.5s; + -moz-animation: vex-dropout 0.5s; + -ms-animation: vex-dropout 0.5s; + -o-animation: vex-dropout 0.5s; + -webkit-backface-visibility: hidden; } + +.vex.vex-theme-top .vex-content { + animation: vex-dropin 0.5s; + -webkit-animation: vex-dropin 0.5s; + -moz-animation: vex-dropin 0.5s; + -ms-animation: vex-dropin 0.5s; + -o-animation: vex-dropin 0.5s; + -webkit-backface-visibility: hidden; } + +.vex.vex-theme-top .vex-content { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + font-family: "Helvetica Neue", sans-serif; + background: #f0f0f0; + color: #444; + padding: 1em; + position: relative; + margin: 0 auto; + max-width: 100%; + width: 450px; + font-size: 1.1em; + line-height: 1.5em; } + .vex.vex-theme-top .vex-content h1, .vex.vex-theme-top .vex-content h2, .vex.vex-theme-top .vex-content h3, .vex.vex-theme-top .vex-content h4, .vex.vex-theme-top .vex-content h5, .vex.vex-theme-top .vex-content h6, .vex.vex-theme-top .vex-content p, .vex.vex-theme-top .vex-content ul, .vex.vex-theme-top .vex-content li { + color: inherit; } + +.vex.vex-theme-top .vex-close { + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + position: absolute; + top: 0; + right: 0; + cursor: pointer; } + .vex.vex-theme-top .vex-close:before { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + position: absolute; + content: "\00D7"; + font-size: 26px; + font-weight: normal; + line-height: 31px; + height: 30px; + width: 30px; + text-align: center; + top: 3px; + right: 3px; + color: #bbb; + background: transparent; } + .vex.vex-theme-top .vex-close:hover:before, .vex.vex-theme-top .vex-close:active:before { + color: #777; + background: #e0e0e0; } + +.vex.vex-theme-top .vex-dialog-form .vex-dialog-message { + margin-bottom: .5em; } + +.vex.vex-theme-top .vex-dialog-form .vex-dialog-input { + margin-bottom: 1em; } + .vex.vex-theme-top .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="week"] { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: #fff; + width: 100%; + padding: .25em .67em; + border: 0; + font-family: inherit; + font-weight: inherit; + font-size: inherit; + min-height: 2.5em; + margin: 0 0 .25em; } + .vex.vex-theme-top .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-top .vex-dialog-form .vex-dialog-input input[type="week"]:focus { + -moz-box-shadow: inset 0 0 0 2px #8dbdf1; + -webkit-box-shadow: inset 0 0 0 2px #8dbdf1; + box-shadow: inset 0 0 0 2px #8dbdf1; + outline: none; } + +.vex.vex-theme-top .vex-dialog-form .vex-dialog-buttons { + *zoom: 1; } + .vex.vex-theme-top .vex-dialog-form .vex-dialog-buttons:after { + content: ""; + display: table; + clear: both; } + +.vex.vex-theme-top .vex-dialog-button { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 0; + float: right; + margin: 0 0 0 .5em; + font-family: inherit; + text-transform: uppercase; + letter-spacing: .1em; + font-size: .8em; + line-height: 1em; + padding: .75em 2em; } + .vex.vex-theme-top .vex-dialog-button.vex-last { + margin-left: 0; } + .vex.vex-theme-top .vex-dialog-button:focus { + animation: vex-pulse 1.1s infinite; + -webkit-animation: vex-pulse 1.1s infinite; + -moz-animation: vex-pulse 1.1s infinite; + -ms-animation: vex-pulse 1.1s infinite; + -o-animation: vex-pulse 1.1s infinite; + -webkit-backface-visibility: hidden; + outline: none; } + @media (max-width: 568px) { + .vex.vex-theme-top .vex-dialog-button:focus { + animation: none; + -webkit-animation: none; + -moz-animation: none; + -ms-animation: none; + -o-animation: none; + -webkit-backface-visibility: hidden; } } + .vex.vex-theme-top .vex-dialog-button.vex-dialog-button-primary { + background: #3288e6; + color: #fff; } + .vex.vex-theme-top .vex-dialog-button.vex-dialog-button-secondary { + background: #e0e0e0; + color: #777; } + +.vex-loading-spinner.vex-theme-top { + -moz-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3); + box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3); + -moz-border-radius: 100%; + -webkit-border-radius: 100%; + border-radius: 100%; + background: #f0f0f0; + border: .2em solid transparent; + border-top-color: #bbb; + top: -1.1em; + bottom: auto; } diff --git a/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-wireframe.css b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-wireframe.css new file mode 100755 index 00000000..f5ebf785 --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/css/vex-theme-wireframe.css @@ -0,0 +1,174 @@ +@keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-webkit-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-moz-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-ms-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +@-o-keyframes vex-pulse { + 0% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } + 70% { + -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); } + 100% { + -moz-box-shadow: inset 0 0 0 300px transparent; + -webkit-box-shadow: inset 0 0 0 300px transparent; + box-shadow: inset 0 0 0 300px transparent; } } + +.vex.vex-theme-wireframe { + padding-top: 160px; + padding-bottom: 160px; } + .vex.vex-theme-wireframe .vex-overlay { + background: rgba(255, 255, 255, 0.4); } + .vex.vex-theme-wireframe .vex-content { + font-family: "Helvetica Neue", sans-serif; + background: #fff; + color: #000; + border: 2px solid #000; + padding: 2em; + position: relative; + margin: 0 auto; + max-width: 100%; + width: 400px; + font-size: 1.1em; + line-height: 1.5em; } + .vex.vex-theme-wireframe .vex-content h1, .vex.vex-theme-wireframe .vex-content h2, .vex.vex-theme-wireframe .vex-content h3, .vex.vex-theme-wireframe .vex-content h4, .vex.vex-theme-wireframe .vex-content h5, .vex.vex-theme-wireframe .vex-content h6, .vex.vex-theme-wireframe .vex-content p, .vex.vex-theme-wireframe .vex-content ul, .vex.vex-theme-wireframe .vex-content li { + color: inherit; } + .vex.vex-theme-wireframe .vex-close { + position: absolute; + top: 0; + right: 0; + cursor: pointer; } + .vex.vex-theme-wireframe .vex-close:before { + position: absolute; + content: "\00D7"; + font-size: 40px; + font-weight: normal; + line-height: 80px; + height: 80px; + width: 80px; + text-align: center; + top: 3px; + right: 3px; + color: #000; } + .vex.vex-theme-wireframe .vex-close:hover:before, .vex.vex-theme-wireframe .vex-close:active:before { + color: #000; } + .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-message { + margin-bottom: .5em; } + .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input { + margin-bottom: 1em; } + .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="week"] { + background: #fff; + width: 100%; + padding: .25em .67em; + font-family: inherit; + font-weight: inherit; + font-size: inherit; + min-height: 2.5em; + margin: 0 0 .25em; + border: 2px solid #000; } + .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-input input[type="week"]:focus { + border-style: dashed; + outline: none; } + .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-buttons { + *zoom: 1; } + .vex.vex-theme-wireframe .vex-dialog-form .vex-dialog-buttons:after { + content: ""; + display: table; + clear: both; } + .vex.vex-theme-wireframe .vex-dialog-button { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + float: right; + margin: 0 0 0 .5em; + font-family: inherit; + text-transform: uppercase; + letter-spacing: .1em; + font-size: .8em; + line-height: 1em; + padding: .75em 2em; } + .vex.vex-theme-wireframe .vex-dialog-button.vex-last { + margin-left: 0; } + .vex.vex-theme-wireframe .vex-dialog-button:focus { + animation: vex-pulse 1.1s infinite; + -webkit-animation: vex-pulse 1.1s infinite; + -moz-animation: vex-pulse 1.1s infinite; + -ms-animation: vex-pulse 1.1s infinite; + -o-animation: vex-pulse 1.1s infinite; + -webkit-backface-visibility: hidden; + outline: none; } + @media (max-width: 568px) { + .vex.vex-theme-wireframe .vex-dialog-button:focus { + animation: none; + -webkit-animation: none; + -moz-animation: none; + -ms-animation: none; + -o-animation: none; + -webkit-backface-visibility: hidden; } } + .vex.vex-theme-wireframe .vex-dialog-button.vex-dialog-button-primary { + background: #000; + color: #fff; + border: 2px solid transparent; } + .vex.vex-theme-wireframe .vex-dialog-button.vex-dialog-button-secondary { + background: #fff; + color: #000; + border: 2px solid #000; } + +.vex-loading-spinner.vex-theme-wireframe { + height: 2.5em; + width: 2.5em; } diff --git a/wire/modules/Jquery/JqueryUI/vex/css/vex.css b/wire/modules/Jquery/JqueryUI/vex/css/vex.css new file mode 100755 index 00000000..8dd38c1a --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/css/vex.css @@ -0,0 +1,231 @@ +@keyframes vex-fadein { + 0% { + opacity: 0; } + 100% { + opacity: 1; } } + +@-webkit-keyframes vex-fadein { + 0% { + opacity: 0; } + 100% { + opacity: 1; } } + +@-moz-keyframes vex-fadein { + 0% { + opacity: 0; } + 100% { + opacity: 1; } } + +@-ms-keyframes vex-fadein { + 0% { + opacity: 0; } + 100% { + opacity: 1; } } + +@-o-keyframes vex-fadein { + 0% { + opacity: 0; } + 100% { + opacity: 1; } } + +@keyframes vex-fadeout { + 0% { + opacity: 1; } + 100% { + opacity: 0; } } + +@-webkit-keyframes vex-fadeout { + 0% { + opacity: 1; } + 100% { + opacity: 0; } } + +@-moz-keyframes vex-fadeout { + 0% { + opacity: 1; } + 100% { + opacity: 0; } } + +@-ms-keyframes vex-fadeout { + 0% { + opacity: 1; } + 100% { + opacity: 0; } } + +@-o-keyframes vex-fadeout { + 0% { + opacity: 1; } + 100% { + opacity: 0; } } + +@keyframes vex-rotation { + 0% { + transform: rotate(0deg); + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -o-transform: rotate(0deg); } + 100% { + transform: rotate(359deg); + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -ms-transform: rotate(359deg); + -o-transform: rotate(359deg); } } + +@-webkit-keyframes vex-rotation { + 0% { + transform: rotate(0deg); + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -o-transform: rotate(0deg); } + 100% { + transform: rotate(359deg); + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -ms-transform: rotate(359deg); + -o-transform: rotate(359deg); } } + +@-moz-keyframes vex-rotation { + 0% { + transform: rotate(0deg); + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -o-transform: rotate(0deg); } + 100% { + transform: rotate(359deg); + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -ms-transform: rotate(359deg); + -o-transform: rotate(359deg); } } + +@-ms-keyframes vex-rotation { + 0% { + transform: rotate(0deg); + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -o-transform: rotate(0deg); } + 100% { + transform: rotate(359deg); + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -ms-transform: rotate(359deg); + -o-transform: rotate(359deg); } } + +@-o-keyframes vex-rotation { + 0% { + transform: rotate(0deg); + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -o-transform: rotate(0deg); } + 100% { + transform: rotate(359deg); + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -ms-transform: rotate(359deg); + -o-transform: rotate(359deg); } } + +.vex, .vex *, .vex *:before, .vex *:after { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; } + +.vex { + position: fixed; + overflow: auto; + -webkit-overflow-scrolling: touch; + z-index: 1111; + top: 0; + right: 0; + bottom: 0; + left: 0; } + +.vex-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; } + +.vex-overlay { + background: #000; + filter: alpha(opacity=40); + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; } + +.vex-overlay { + animation: vex-fadein 0.5s; + -webkit-animation: vex-fadein 0.5s; + -moz-animation: vex-fadein 0.5s; + -ms-animation: vex-fadein 0.5s; + -o-animation: vex-fadein 0.5s; + -webkit-backface-visibility: hidden; + position: fixed; + background: rgba(0, 0, 0, 0.4); + top: 0; + right: 0; + bottom: 0; + left: 0; } + .vex.vex-closing .vex-overlay { + animation: vex-fadeout 0.5s; + -webkit-animation: vex-fadeout 0.5s; + -moz-animation: vex-fadeout 0.5s; + -ms-animation: vex-fadeout 0.5s; + -o-animation: vex-fadeout 0.5s; + -webkit-backface-visibility: hidden; } + +.vex-content { + animation: vex-fadein 0.5s; + -webkit-animation: vex-fadein 0.5s; + -moz-animation: vex-fadein 0.5s; + -ms-animation: vex-fadein 0.5s; + -o-animation: vex-fadein 0.5s; + -webkit-backface-visibility: hidden; + background: #fff; } + .vex.vex-closing .vex-content { + animation: vex-fadeout 0.5s; + -webkit-animation: vex-fadeout 0.5s; + -moz-animation: vex-fadeout 0.5s; + -ms-animation: vex-fadeout 0.5s; + -o-animation: vex-fadeout 0.5s; + -webkit-backface-visibility: hidden; } + +.vex-close:before { + font-family: Arial, sans-serif; + content: "\00D7"; } + +.vex-dialog-form { + margin: 0; } + +.vex-dialog-button { + text-rendering: optimizeLegibility; + -moz-appearance: none; + -webkit-appearance: none; + cursor: pointer; + -webkit-tap-highlight-color: transparent; } + +.vex-loading-spinner { + animation: vex-rotation 0.7s linear infinite; + -webkit-animation: vex-rotation 0.7s linear infinite; + -moz-animation: vex-rotation 0.7s linear infinite; + -ms-animation: vex-rotation 0.7s linear infinite; + -o-animation: vex-rotation 0.7s linear infinite; + -webkit-backface-visibility: hidden; + -moz-box-shadow: 0 0 1em rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 0 1em rgba(0, 0, 0, 0.1); + box-shadow: 0 0 1em rgba(0, 0, 0, 0.1); + position: fixed; + z-index: 1112; + margin: auto; + top: 0; + right: 0; + bottom: 0; + left: 0; + height: 2em; + width: 2em; + background: #fff; } + +body.vex-open { + overflow: hidden; } diff --git a/wire/modules/Jquery/JqueryUI/vex/scripts/vex.combined.js b/wire/modules/Jquery/JqueryUI/vex/scripts/vex.combined.js new file mode 100755 index 00000000..65e59e1b --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/scripts/vex.combined.js @@ -0,0 +1,1612 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.vex = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o', ''], + tr: [2, '', '
    '], + col: [2, '', '
    '], + // for script/link/style tags to work in IE6-8, you have to wrap + // in a div with a non-whitespace character in front, ha! + _default: innerHTMLBug ? [1, 'X
    ', '
    '] : [0, '', ''] +}; + +map.td = +map.th = [3, '', '
    ']; + +map.option = +map.optgroup = [1, '']; + +map.thead = +map.tbody = +map.colgroup = +map.caption = +map.tfoot = [1, '', '
    ']; + +map.polyline = +map.ellipse = +map.polygon = +map.circle = +map.text = +map.line = +map.path = +map.rect = +map.g = [1, '','']; + +/** + * Parse `html` and return a DOM Node instance, which could be a TextNode, + * HTML DOM Node of some kind (
    for example), or a DocumentFragment + * instance, depending on the contents of the `html` string. + * + * @param {String} html - HTML string to "domify" + * @param {Document} doc - The `document` instance to create the Node for + * @return {DOMNode} the TextNode, DOM Node, or DocumentFragment instance + * @api private + */ + +function parse(html, doc) { + if ('string' != typeof html) throw new TypeError('String expected'); + + // default to the global `document` object + if (!doc) doc = document; + + // tag name + var m = /<([\w:]+)/.exec(html); + if (!m) return doc.createTextNode(html); + + html = html.replace(/^\s+|\s+$/g, ''); // Remove leading/trailing whitespace + + var tag = m[1]; + + // body support + if (tag == 'body') { + var el = doc.createElement('html'); + el.innerHTML = html; + return el.removeChild(el.lastChild); + } + + // wrap map + var wrap = map[tag] || map._default; + var depth = wrap[0]; + var prefix = wrap[1]; + var suffix = wrap[2]; + var el = doc.createElement('div'); + el.innerHTML = prefix + html + suffix; + while (depth--) el = el.lastChild; + + // one element + if (el.firstChild == el.lastChild) { + return el.removeChild(el.firstChild); + } + + // several elements + var fragment = doc.createDocumentFragment(); + while (el.firstChild) { + fragment.appendChild(el.removeChild(el.firstChild)); + } + + return fragment; +} + +},{}],3:[function(require,module,exports){ +/** + * Code refactored from Mozilla Developer Network: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign + */ + +'use strict'; + +function assign(target, firstSource) { + if (target === undefined || target === null) { + throw new TypeError('Cannot convert first argument to object'); + } + + var to = Object(target); + for (var i = 1; i < arguments.length; i++) { + var nextSource = arguments[i]; + if (nextSource === undefined || nextSource === null) { + continue; + } + + var keysArray = Object.keys(Object(nextSource)); + for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) { + var nextKey = keysArray[nextIndex]; + var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + to[nextKey] = nextSource[nextKey]; + } + } + } + return to; +} + +function polyfill() { + if (!Object.assign) { + Object.defineProperty(Object, 'assign', { + enumerable: false, + configurable: true, + writable: true, + value: assign + }); + } +} + +module.exports = { + assign: assign, + polyfill: polyfill +}; + +},{}],4:[function(require,module,exports){ +// get successful control from form and assemble into object +// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2 + +// types which indicate a submit action and are not successful controls +// these will be ignored +var k_r_submitter = /^(?:submit|button|image|reset|file)$/i; + +// node names which could be successful controls +var k_r_success_contrls = /^(?:input|select|textarea|keygen)/i; + +// Matches bracket notation. +var brackets = /(\[[^\[\]]*\])/g; + +// serializes form fields +// @param form MUST be an HTMLForm element +// @param options is an optional argument to configure the serialization. Default output +// with no options specified is a url encoded string +// - hash: [true | false] Configure the output type. If true, the output will +// be a js object. +// - serializer: [function] Optional serializer function to override the default one. +// The function takes 3 arguments (result, key, value) and should return new result +// hash and url encoded str serializers are provided with this module +// - disabled: [true | false]. If true serialize disabled fields. +// - empty: [true | false]. If true serialize empty fields +function serialize(form, options) { + if (typeof options != 'object') { + options = { hash: !!options }; + } + else if (options.hash === undefined) { + options.hash = true; + } + + var result = (options.hash) ? {} : ''; + var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize); + + var elements = form && form.elements ? form.elements : []; + + //Object store each radio and set if it's empty or not + var radio_store = Object.create(null); + + for (var i=0 ; i', ''], + tr: [2, '', '
    '], + col: [2, '', '
    '], + // for script/link/style tags to work in IE6-8, you have to wrap + // in a div with a non-whitespace character in front, ha! + _default: innerHTMLBug ? [1, 'X
    ', '
    '] : [0, '', ''] +}; + +map.td = +map.th = [3, '', '
    ']; + +map.option = +map.optgroup = [1, '']; + +map.thead = +map.tbody = +map.colgroup = +map.caption = +map.tfoot = [1, '', '
    ']; + +map.polyline = +map.ellipse = +map.polygon = +map.circle = +map.text = +map.line = +map.path = +map.rect = +map.g = [1, '','']; + +/** + * Parse `html` and return a DOM Node instance, which could be a TextNode, + * HTML DOM Node of some kind (
    for example), or a DocumentFragment + * instance, depending on the contents of the `html` string. + * + * @param {String} html - HTML string to "domify" + * @param {Document} doc - The `document` instance to create the Node for + * @return {DOMNode} the TextNode, DOM Node, or DocumentFragment instance + * @api private + */ + +function parse(html, doc) { + if ('string' != typeof html) throw new TypeError('String expected'); + + // default to the global `document` object + if (!doc) doc = document; + + // tag name + var m = /<([\w:]+)/.exec(html); + if (!m) return doc.createTextNode(html); + + html = html.replace(/^\s+|\s+$/g, ''); // Remove leading/trailing whitespace + + var tag = m[1]; + + // body support + if (tag == 'body') { + var el = doc.createElement('html'); + el.innerHTML = html; + return el.removeChild(el.lastChild); + } + + // wrap map + var wrap = map[tag] || map._default; + var depth = wrap[0]; + var prefix = wrap[1]; + var suffix = wrap[2]; + var el = doc.createElement('div'); + el.innerHTML = prefix + html + suffix; + while (depth--) el = el.lastChild; + + // one element + if (el.firstChild == el.lastChild) { + return el.removeChild(el.firstChild); + } + + // several elements + var fragment = doc.createDocumentFragment(); + while (el.firstChild) { + fragment.appendChild(el.removeChild(el.firstChild)); + } + + return fragment; +} + +},{}],2:[function(require,module,exports){ +// get successful control from form and assemble into object +// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2 + +// types which indicate a submit action and are not successful controls +// these will be ignored +var k_r_submitter = /^(?:submit|button|image|reset|file)$/i; + +// node names which could be successful controls +var k_r_success_contrls = /^(?:input|select|textarea|keygen)/i; + +// Matches bracket notation. +var brackets = /(\[[^\[\]]*\])/g; + +// serializes form fields +// @param form MUST be an HTMLForm element +// @param options is an optional argument to configure the serialization. Default output +// with no options specified is a url encoded string +// - hash: [true | false] Configure the output type. If true, the output will +// be a js object. +// - serializer: [function] Optional serializer function to override the default one. +// The function takes 3 arguments (result, key, value) and should return new result +// hash and url encoded str serializers are provided with this module +// - disabled: [true | false]. If true serialize disabled fields. +// - empty: [true | false]. If true serialize empty fields +function serialize(form, options) { + if (typeof options != 'object') { + options = { hash: !!options }; + } + else if (options.hash === undefined) { + options.hash = true; + } + + var result = (options.hash) ? {} : ''; + var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize); + + var elements = form && form.elements ? form.elements : []; + + //Object store each radio and set if it's empty or not + var radio_store = Object.create(null); + + for (var i=0 ; i' + vex._escapeHtml(options.label || defaults.label) + '', + input: '' + } + options = Object.assign(defaults, dynamicDefaults, options) + // Pluck the value of the "vex" input field as the return value for prompt's callback + // More closely mimics "window.prompt" in that a single string is returned + var callback = options.callback + options.callback = function promptCallback (value) { + value = value[Object.keys(value)[0]] + callback(value) + } + return this.open(options) + } + } + + // Now define any additional data that's not the direct dialog API + dialog.buttons = { + YES: { + text: 'OK', + type: 'submit', + className: 'vex-dialog-button-primary', + click: function yesClick () { + this.value = true + } + }, + + NO: { + text: 'Cancel', + type: 'button', + className: 'vex-dialog-button-secondary', + click: function noClick () { + this.value = false + this.close() + } + } + } + + dialog.defaultOptions = { + callback: function () {}, + afterOpen: function () {}, + message: '', + input: '', + buttons: [ + dialog.buttons.YES, + dialog.buttons.NO + ], + showCloseButton: false, + onSubmit: function onDialogSubmit (e) { + e.preventDefault() + if (this.options.input) { + this.value = serialize(this.form, { hash: true }) + } + return this.close() + }, + focusFirstInput: true + } + + dialog.defaultAlertOptions = { + buttons: [ + dialog.buttons.YES + ] + } + + dialog.defaultPromptOptions = { + label: 'Prompt:', + placeholder: '', + value: '' + } + + dialog.defaultConfirmOptions = {} + + return dialog +} + +module.exports = plugin + +},{"domify":1,"form-serialize":2}]},{},[3])(3) +}); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"domify":2,"form-serialize":4}],6:[function(require,module,exports){ +var vex = require('./vex') +vex.registerPlugin(require('vex-dialog')) +module.exports = vex + +},{"./vex":7,"vex-dialog":5}],7:[function(require,module,exports){ +// classList polyfill for old browsers +require('classlist-polyfill') +// Object.assign polyfill +require('es6-object-assign').polyfill() + +// String to DOM function +var domify = require('domify') + +// Use the DOM's HTML parsing to escape any dangerous strings +var escapeHtml = function escapeHtml (str) { + if (typeof str !== 'undefined') { + var div = document.createElement('div') + div.appendChild(document.createTextNode(str)) + return div.innerHTML + } else { + return '' + } +} + +// Utility function to add space-delimited class strings to a DOM element's classList +var addClasses = function addClasses (el, classStr) { + if (typeof classStr !== 'string' || classStr.length === 0) { + return + } + var classes = classStr.split(' ') + for (var i = 0; i < classes.length; i++) { + var className = classes[i] + if (className.length) { + el.classList.add(className) + } + } +} + +// Detect CSS Animation End Support +// https://github.com/limonte/sweetalert2/blob/99bd539f85e15ac170f69d35001d12e092ef0054/src/utils/dom.js#L194 +var animationEndEvent = (function detectAnimationEndEvent () { + var el = document.createElement('div') + var eventNames = { + 'WebkitAnimation': 'webkitAnimationEnd', + 'MozAnimation': 'animationend', + 'OAnimation': 'oanimationend', + 'msAnimation': 'MSAnimationEnd', + 'animation': 'animationend' + } + for (var i in eventNames) { + if (el.style[i] !== undefined) { + return eventNames[i] + } + } + return false +})() + +// vex base CSS classes +var baseClassNames = { + vex: 'vex', + content: 'vex-content', + overlay: 'vex-overlay', + close: 'vex-close', + closing: 'vex-closing', + open: 'vex-open' +} + +// Private lookup table of all open vex objects, keyed by id +var vexes = {} +var globalId = 1 + +// Private boolean to assist the escapeButtonCloses option +var isEscapeActive = false + +// vex itself is an object that exposes a simple API to open and close vex objects in various ways +var vex = { + open: function open (opts) { + // Check for usage of deprecated options, and log a warning + var warnDeprecated = function warnDeprecated (prop) { + console.warn('The "' + prop + '" property is deprecated in vex 3. Use CSS classes and the appropriate "ClassName" options, instead.') + console.warn('See http://github.hubspot.com/vex/api/advanced/#options') + } + if (opts.css) { + warnDeprecated('css') + } + if (opts.overlayCSS) { + warnDeprecated('overlayCSS') + } + if (opts.contentCSS) { + warnDeprecated('contentCSS') + } + if (opts.closeCSS) { + warnDeprecated('closeCSS') + } + + // The dialog instance + var vexInstance = {} + + // Set id + vexInstance.id = globalId++ + + // Store internally + vexes[vexInstance.id] = vexInstance + + // Set state + vexInstance.isOpen = true + + // Close function on the vex instance + // This is how all API functions should close individual vexes + vexInstance.close = function instanceClose () { + // Check state + if (!this.isOpen) { + return true + } + + var options = this.options + + // escapeButtonCloses is checked first + if (isEscapeActive && !options.escapeButtonCloses) { + return false + } + + // Allow the user to validate any info or abort the close with the beforeClose callback + var shouldClose = (function shouldClose () { + // Call before close callback + if (options.beforeClose) { + return options.beforeClose.call(this) + } + // Otherwise indicate that it's ok to continue with close + return true + }.bind(this)()) + + // If beforeClose() fails, abort the close + if (shouldClose === false) { + return false + } + + // Update state + this.isOpen = false + + // Detect if the content el has any CSS animations defined + var style = window.getComputedStyle(this.contentEl) + function hasAnimationPre (prefix) { + return style.getPropertyValue(prefix + 'animation-name') !== 'none' && style.getPropertyValue(prefix + 'animation-duration') !== '0s' + } + var hasAnimation = hasAnimationPre('') || hasAnimationPre('-webkit-') || hasAnimationPre('-moz-') || hasAnimationPre('-o-') + + // Define the function that will actually close the instance + var close = function close () { + if (!this.rootEl.parentNode) { + return + } + // Run once + this.rootEl.removeEventListener(animationEndEvent, close) + // Remove from lookup table (prevent memory leaks) + delete vexes[this.id] + // Remove the dialog from the DOM + this.rootEl.parentNode.removeChild(this.rootEl) + // Call after close callback + if (options.afterClose) { + options.afterClose.call(this) + } + // Remove styling from the body, if no more vexes are open + if (Object.keys(vexes).length === 0) { + document.body.classList.remove(baseClassNames.open) + } + }.bind(this) + + // Close the vex + if (animationEndEvent && hasAnimation) { + // Setup the end event listener, to remove the el from the DOM + this.rootEl.addEventListener(animationEndEvent, close) + // Add the closing class to the dialog, showing the close animation + this.rootEl.classList.add(baseClassNames.closing) + } else { + close() + } + + return true + } + + // Allow strings as content + if (typeof opts === 'string') { + opts = { + content: opts + } + } + + // `content` is unsafe internally, so translate + // safe default: HTML-escape the content before passing it through + if (opts.unsafeContent && !opts.content) { + opts.content = opts.unsafeContent + } else if (opts.content) { + opts.content = escapeHtml(opts.content) + } + + // Store options on instance for future reference + var options = vexInstance.options = Object.assign({}, vex.defaultOptions, opts) + + // vex root + var rootEl = vexInstance.rootEl = document.createElement('div') + rootEl.classList.add(baseClassNames.vex) + addClasses(rootEl, options.className) + + // Overlay + var overlayEl = vexInstance.overlayEl = document.createElement('div') + overlayEl.classList.add(baseClassNames.overlay) + addClasses(overlayEl, options.overlayClassName) + if (options.overlayClosesOnClick) { + overlayEl.addEventListener('click', function overlayClickListener (e) { + if (e.target === overlayEl) { + vexInstance.close() + } + }) + } + rootEl.appendChild(overlayEl) + + // Content + var contentEl = vexInstance.contentEl = document.createElement('div') + contentEl.classList.add(baseClassNames.content) + addClasses(contentEl, options.contentClassName) + contentEl.appendChild(options.content instanceof window.Node ? options.content : domify(options.content)) + rootEl.appendChild(contentEl) + + // Close button + if (options.showCloseButton) { + var closeEl = vexInstance.closeEl = document.createElement('div') + closeEl.classList.add(baseClassNames.close) + addClasses(closeEl, options.closeClassName) + closeEl.addEventListener('click', vexInstance.close.bind(vexInstance)) + contentEl.appendChild(closeEl) + } + + // Add to DOM + document.querySelector(options.appendLocation).appendChild(rootEl) + + // Call after open callback + if (options.afterOpen) { + options.afterOpen.call(vexInstance) + } + + // Apply styling to the body + document.body.classList.add(baseClassNames.open) + + // Return the created vex instance + return vexInstance + }, + + // A top-level vex.close function to close dialogs by reference or id + close: function close (vexOrId) { + var id + if (vexOrId.id) { + id = vexOrId.id + } else if (typeof vexOrId === 'string') { + id = vexOrId + } else { + throw new TypeError('close requires a vex object or id string') + } + if (!vexes[id]) { + return false + } + return vexes[id].close() + }, + + // Close the most recently created/opened vex + closeTop: function closeTop () { + var ids = Object.keys(vexes) + if (!ids.length) { + return false + } + return vexes[ids[ids.length - 1]].close() + }, + + // Close every vex! + closeAll: function closeAll () { + for (var id in vexes) { + this.close(id) + } + return true + }, + + // A getter for the internal lookup table + getAll: function getAll () { + return vexes + }, + + // A getter for the internal lookup table + getById: function getById (id) { + return vexes[id] + } +} + +// Close top vex on escape +window.addEventListener('keyup', function vexKeyupListener (e) { + if (e.keyCode === 27) { + isEscapeActive = true + vex.closeTop() + isEscapeActive = false + } +}) +// Close all vexes on history pop state (useful in single page apps) +window.addEventListener('popstate', vex.closeAll) + +vex.defaultOptions = { + content: '', + showCloseButton: true, + escapeButtonCloses: true, + overlayClosesOnClick: true, + appendLocation: 'body', + className: '', + overlayClassName: '', + contentClassName: '', + closeClassName: '' +} + +// TODO Loading symbols? + +// Include escapeHtml function on the library object +Object.defineProperty(vex, '_escapeHtml', { + configurable: false, + enumerable: false, + writable: false, + value: escapeHtml +}) + +// Plugin system! +vex.registerPlugin = function registerPlugin (pluginFn, name) { + var plugin = pluginFn(vex) + var pluginName = name || plugin.name + if (vex[pluginName]) { + throw new Error('Plugin ' + name + ' is already registered.') + } + vex[pluginName] = plugin +} + +module.exports = vex + +},{"classlist-polyfill":1,"domify":2,"es6-object-assign":3}]},{},[6])(6) +}); \ No newline at end of file diff --git a/wire/modules/Jquery/JqueryUI/vex/scripts/vex.combined.min.js b/wire/modules/Jquery/JqueryUI/vex/scripts/vex.combined.min.js new file mode 100755 index 00000000..db685c5c --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/scripts/vex.combined.min.js @@ -0,0 +1,3 @@ +(function(b){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=b()}else{if(typeof define==="function"&&define.amd){define([],b)}else{var a;if(typeof window!=="undefined"){a=window}else{if(typeof global!=="undefined"){a=global}else{if(typeof self!=="undefined"){a=self}else{a=this}}}a.vex=b()}}})(function(){var d,b,a;return(function c(f,k,h){function g(q,n){if(!k[q]){if(!f[q]){var m=typeof require=="function"&&require;if(!n&&m){return m(q,!0)}if(e){return e(q,!0)}var p=new Error("Cannot find module '"+q+"'");throw p.code="MODULE_NOT_FOUND",p}var i=k[q]={exports:{}};f[q][0].call(i.exports,function(l){var o=f[q][1][l];return g(o?o:l)},i,i.exports,c,f,k,h)}return k[q].exports}var e=typeof require=="function"&&require;for(var j=0;j
    a';h=!j.getElementsByTagName("link").length;j=undefined}var i={legend:[1,"
    ","
    "],tr:[2,"","
    "],col:[2,"","
    "],_default:h?[1,"X
    ","
    "]:[0,"",""]};i.td=i.th=[3,"","
    "];i.option=i.optgroup=[1,'"];i.thead=i.tbody=i.colgroup=i.caption=i.tfoot=[1,"","
    "];i.polyline=i.ellipse=i.polygon=i.circle=i.text=i.line=i.path=i.rect=i.g=[1,'',""];function k(q,t){if("string"!=typeof q){throw new TypeError("String expected")}if(!t){t=document}var o=/<([\w:]+)/.exec(q);if(!o){return t.createTextNode(q)}q=q.replace(/^\s+|\s+$/g,"");var v=o[1];if(v=="body"){var n=t.createElement("html");n.innerHTML=q;return n.removeChild(n.lastChild)}var l=i[v]||i._default;var p=l[0];var r=l[1];var u=l[2];var n=t.createElement("div");n.innerHTML=r+q+u;while(p--){n=n.lastChild}if(n.firstChild==n.lastChild){return n.removeChild(n.firstChild)}var s=t.createDocumentFragment();while(n.firstChild){s.appendChild(n.removeChild(n.firstChild))}return s}},{}],3:[function(g,h,f){function e(q,j){if(q===undefined||q===null){throw new TypeError("Cannot convert first argument to object")}var s=Object(q);for(var k=1;k
    a';p=!r.getElementsByTagName("link").length;r=undefined}var q={legend:[1,"
    ","
    "],tr:[2,"","
    "],col:[2,"","
    "],_default:p?[1,"X
    ","
    "]:[0,"",""]};q.td=q.th=[3,"","
    "];q.option=q.optgroup=[1,'"];q.thead=q.tbody=q.colgroup=q.caption=q.tfoot=[1,"","
    "];q.polyline=q.ellipse=q.polygon=q.circle=q.text=q.line=q.path=q.rect=q.g=[1,'',""];function s(x,A){if("string"!=typeof x){throw new TypeError("String expected")}if(!A){A=document}var v=/<([\w:]+)/.exec(x);if(!v){return A.createTextNode(x)}x=x.replace(/^\s+|\s+$/g,"");var C=v[1];if(C=="body"){var u=A.createElement("html");u.innerHTML=x;return u.removeChild(u.lastChild)}var t=q[C]||q._default;var w=t[0];var y=t[1];var B=t[2];var u=A.createElement("div");u.innerHTML=y+x+B;while(w--){u=u.lastChild}if(u.firstChild==u.lastChild){return u.removeChild(u.firstChild)}var z=A.createDocumentFragment();while(u.firstChild){z.appendChild(u.removeChild(u.firstChild))}return z}},{}],2:[function(o,m,p){var t=/^(?:submit|button|image|reset|file)$/i;var q=/^(?:input|select|textarea|keygen)/i;var v=/(\[[^\[\]]*\])/g;function w(z,L){if(typeof L!="object"){L={hash:!!L}}else{if(L.hash===undefined){L.hash=true}}var M=(L.hash)?{}:"";var I=L.serializer||((L.hash)?u:s);var x=z&&z.elements?z.elements:[];var H=Object.create(null);for(var E=0;E'+y._escapeHtml(B.label||D.label)+"",input:''};B=Object.assign(D,A,B);var E=B.callback;B.callback=function C(F){F=F[Object.keys(F)[0]];E(F)};return this.open(B)}};w.buttons={YES:{text:"OK",type:"submit",className:"vex-dialog-button-primary",click:function z(){this.value=true}},NO:{text:"Cancel",type:"button",className:"vex-dialog-button-secondary",click:function v(){this.value=false;this.close()}}};w.defaultOptions={callback:function(){},afterOpen:function(){},message:"",input:"",buttons:[w.buttons.YES,w.buttons.NO],showCloseButton:false,onSubmit:function x(A){A.preventDefault();if(this.options.input){this.value=r(this.form,{hash:true})}return this.close()},focusFirstInput:true};w.defaultAlertOptions={buttons:[w.buttons.YES]};w.defaultPromptOptions={label:"Prompt:",placeholder:"",value:""};w.defaultConfirmOptions={};return w};p.exports=s},{domify:1,"form-serialize":2}]},{},[3])(3)})}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{domify:2,"form-serialize":4}],6:[function(f,g,e){var h=f("./vex");h.registerPlugin(f("vex-dialog"));g.exports=h},{"./vex":7,"vex-dialog":5}],7:[function(k,f,y){k("classlist-polyfill");k("es6-object-assign").polyfill();var i=k("domify");var r=function r(z){if(typeof z!=="undefined"){var A=document.createElement("div");A.appendChild(document.createTextNode(z));return A.innerHTML}else{return""}};var h=function h(C,D){if(typeof D!=="string"||D.length===0){return}var A=D.split(" ");for(var z=0;z', ''], + tr: [2, '', '
    '], + col: [2, '', '
    '], + // for script/link/style tags to work in IE6-8, you have to wrap + // in a div with a non-whitespace character in front, ha! + _default: innerHTMLBug ? [1, 'X
    ', '
    '] : [0, '', ''] +}; + +map.td = +map.th = [3, '', '
    ']; + +map.option = +map.optgroup = [1, '']; + +map.thead = +map.tbody = +map.colgroup = +map.caption = +map.tfoot = [1, '', '
    ']; + +map.polyline = +map.ellipse = +map.polygon = +map.circle = +map.text = +map.line = +map.path = +map.rect = +map.g = [1, '','']; + +/** + * Parse `html` and return a DOM Node instance, which could be a TextNode, + * HTML DOM Node of some kind (
    for example), or a DocumentFragment + * instance, depending on the contents of the `html` string. + * + * @param {String} html - HTML string to "domify" + * @param {Document} doc - The `document` instance to create the Node for + * @return {DOMNode} the TextNode, DOM Node, or DocumentFragment instance + * @api private + */ + +function parse(html, doc) { + if ('string' != typeof html) throw new TypeError('String expected'); + + // default to the global `document` object + if (!doc) doc = document; + + // tag name + var m = /<([\w:]+)/.exec(html); + if (!m) return doc.createTextNode(html); + + html = html.replace(/^\s+|\s+$/g, ''); // Remove leading/trailing whitespace + + var tag = m[1]; + + // body support + if (tag == 'body') { + var el = doc.createElement('html'); + el.innerHTML = html; + return el.removeChild(el.lastChild); + } + + // wrap map + var wrap = map[tag] || map._default; + var depth = wrap[0]; + var prefix = wrap[1]; + var suffix = wrap[2]; + var el = doc.createElement('div'); + el.innerHTML = prefix + html + suffix; + while (depth--) el = el.lastChild; + + // one element + if (el.firstChild == el.lastChild) { + return el.removeChild(el.firstChild); + } + + // several elements + var fragment = doc.createDocumentFragment(); + while (el.firstChild) { + fragment.appendChild(el.removeChild(el.firstChild)); + } + + return fragment; +} + +},{}],3:[function(require,module,exports){ +/** + * Code refactored from Mozilla Developer Network: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign + */ + +'use strict'; + +function assign(target, firstSource) { + if (target === undefined || target === null) { + throw new TypeError('Cannot convert first argument to object'); + } + + var to = Object(target); + for (var i = 1; i < arguments.length; i++) { + var nextSource = arguments[i]; + if (nextSource === undefined || nextSource === null) { + continue; + } + + var keysArray = Object.keys(Object(nextSource)); + for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) { + var nextKey = keysArray[nextIndex]; + var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + to[nextKey] = nextSource[nextKey]; + } + } + } + return to; +} + +function polyfill() { + if (!Object.assign) { + Object.defineProperty(Object, 'assign', { + enumerable: false, + configurable: true, + writable: true, + value: assign + }); + } +} + +module.exports = { + assign: assign, + polyfill: polyfill +}; + +},{}],4:[function(require,module,exports){ +// classList polyfill for old browsers +require('classlist-polyfill') +// Object.assign polyfill +require('es6-object-assign').polyfill() + +// String to DOM function +var domify = require('domify') + +// Use the DOM's HTML parsing to escape any dangerous strings +var escapeHtml = function escapeHtml (str) { + if (typeof str !== 'undefined') { + var div = document.createElement('div') + div.appendChild(document.createTextNode(str)) + return div.innerHTML + } else { + return '' + } +} + +// Utility function to add space-delimited class strings to a DOM element's classList +var addClasses = function addClasses (el, classStr) { + if (typeof classStr !== 'string' || classStr.length === 0) { + return + } + var classes = classStr.split(' ') + for (var i = 0; i < classes.length; i++) { + var className = classes[i] + if (className.length) { + el.classList.add(className) + } + } +} + +// Detect CSS Animation End Support +// https://github.com/limonte/sweetalert2/blob/99bd539f85e15ac170f69d35001d12e092ef0054/src/utils/dom.js#L194 +var animationEndEvent = (function detectAnimationEndEvent () { + var el = document.createElement('div') + var eventNames = { + 'WebkitAnimation': 'webkitAnimationEnd', + 'MozAnimation': 'animationend', + 'OAnimation': 'oanimationend', + 'msAnimation': 'MSAnimationEnd', + 'animation': 'animationend' + } + for (var i in eventNames) { + if (el.style[i] !== undefined) { + return eventNames[i] + } + } + return false +})() + +// vex base CSS classes +var baseClassNames = { + vex: 'vex', + content: 'vex-content', + overlay: 'vex-overlay', + close: 'vex-close', + closing: 'vex-closing', + open: 'vex-open' +} + +// Private lookup table of all open vex objects, keyed by id +var vexes = {} +var globalId = 1 + +// Private boolean to assist the escapeButtonCloses option +var isEscapeActive = false + +// vex itself is an object that exposes a simple API to open and close vex objects in various ways +var vex = { + open: function open (opts) { + // Check for usage of deprecated options, and log a warning + var warnDeprecated = function warnDeprecated (prop) { + console.warn('The "' + prop + '" property is deprecated in vex 3. Use CSS classes and the appropriate "ClassName" options, instead.') + console.warn('See http://github.hubspot.com/vex/api/advanced/#options') + } + if (opts.css) { + warnDeprecated('css') + } + if (opts.overlayCSS) { + warnDeprecated('overlayCSS') + } + if (opts.contentCSS) { + warnDeprecated('contentCSS') + } + if (opts.closeCSS) { + warnDeprecated('closeCSS') + } + + // The dialog instance + var vexInstance = {} + + // Set id + vexInstance.id = globalId++ + + // Store internally + vexes[vexInstance.id] = vexInstance + + // Set state + vexInstance.isOpen = true + + // Close function on the vex instance + // This is how all API functions should close individual vexes + vexInstance.close = function instanceClose () { + // Check state + if (!this.isOpen) { + return true + } + + var options = this.options + + // escapeButtonCloses is checked first + if (isEscapeActive && !options.escapeButtonCloses) { + return false + } + + // Allow the user to validate any info or abort the close with the beforeClose callback + var shouldClose = (function shouldClose () { + // Call before close callback + if (options.beforeClose) { + return options.beforeClose.call(this) + } + // Otherwise indicate that it's ok to continue with close + return true + }.bind(this)()) + + // If beforeClose() fails, abort the close + if (shouldClose === false) { + return false + } + + // Update state + this.isOpen = false + + // Detect if the content el has any CSS animations defined + var style = window.getComputedStyle(this.contentEl) + function hasAnimationPre (prefix) { + return style.getPropertyValue(prefix + 'animation-name') !== 'none' && style.getPropertyValue(prefix + 'animation-duration') !== '0s' + } + var hasAnimation = hasAnimationPre('') || hasAnimationPre('-webkit-') || hasAnimationPre('-moz-') || hasAnimationPre('-o-') + + // Define the function that will actually close the instance + var close = function close () { + if (!this.rootEl.parentNode) { + return + } + // Run once + this.rootEl.removeEventListener(animationEndEvent, close) + // Remove from lookup table (prevent memory leaks) + delete vexes[this.id] + // Remove the dialog from the DOM + this.rootEl.parentNode.removeChild(this.rootEl) + // Call after close callback + if (options.afterClose) { + options.afterClose.call(this) + } + // Remove styling from the body, if no more vexes are open + if (Object.keys(vexes).length === 0) { + document.body.classList.remove(baseClassNames.open) + } + }.bind(this) + + // Close the vex + if (animationEndEvent && hasAnimation) { + // Setup the end event listener, to remove the el from the DOM + this.rootEl.addEventListener(animationEndEvent, close) + // Add the closing class to the dialog, showing the close animation + this.rootEl.classList.add(baseClassNames.closing) + } else { + close() + } + + return true + } + + // Allow strings as content + if (typeof opts === 'string') { + opts = { + content: opts + } + } + + // `content` is unsafe internally, so translate + // safe default: HTML-escape the content before passing it through + if (opts.unsafeContent && !opts.content) { + opts.content = opts.unsafeContent + } else if (opts.content) { + opts.content = escapeHtml(opts.content) + } + + // Store options on instance for future reference + var options = vexInstance.options = Object.assign({}, vex.defaultOptions, opts) + + // vex root + var rootEl = vexInstance.rootEl = document.createElement('div') + rootEl.classList.add(baseClassNames.vex) + addClasses(rootEl, options.className) + + // Overlay + var overlayEl = vexInstance.overlayEl = document.createElement('div') + overlayEl.classList.add(baseClassNames.overlay) + addClasses(overlayEl, options.overlayClassName) + if (options.overlayClosesOnClick) { + overlayEl.addEventListener('click', function overlayClickListener (e) { + if (e.target === overlayEl) { + vexInstance.close() + } + }) + } + rootEl.appendChild(overlayEl) + + // Content + var contentEl = vexInstance.contentEl = document.createElement('div') + contentEl.classList.add(baseClassNames.content) + addClasses(contentEl, options.contentClassName) + contentEl.appendChild(options.content instanceof window.Node ? options.content : domify(options.content)) + rootEl.appendChild(contentEl) + + // Close button + if (options.showCloseButton) { + var closeEl = vexInstance.closeEl = document.createElement('div') + closeEl.classList.add(baseClassNames.close) + addClasses(closeEl, options.closeClassName) + closeEl.addEventListener('click', vexInstance.close.bind(vexInstance)) + contentEl.appendChild(closeEl) + } + + // Add to DOM + document.querySelector(options.appendLocation).appendChild(rootEl) + + // Call after open callback + if (options.afterOpen) { + options.afterOpen.call(vexInstance) + } + + // Apply styling to the body + document.body.classList.add(baseClassNames.open) + + // Return the created vex instance + return vexInstance + }, + + // A top-level vex.close function to close dialogs by reference or id + close: function close (vexOrId) { + var id + if (vexOrId.id) { + id = vexOrId.id + } else if (typeof vexOrId === 'string') { + id = vexOrId + } else { + throw new TypeError('close requires a vex object or id string') + } + if (!vexes[id]) { + return false + } + return vexes[id].close() + }, + + // Close the most recently created/opened vex + closeTop: function closeTop () { + var ids = Object.keys(vexes) + if (!ids.length) { + return false + } + return vexes[ids[ids.length - 1]].close() + }, + + // Close every vex! + closeAll: function closeAll () { + for (var id in vexes) { + this.close(id) + } + return true + }, + + // A getter for the internal lookup table + getAll: function getAll () { + return vexes + }, + + // A getter for the internal lookup table + getById: function getById (id) { + return vexes[id] + } +} + +// Close top vex on escape +window.addEventListener('keyup', function vexKeyupListener (e) { + if (e.keyCode === 27) { + isEscapeActive = true + vex.closeTop() + isEscapeActive = false + } +}) +// Close all vexes on history pop state (useful in single page apps) +window.addEventListener('popstate', vex.closeAll) + +vex.defaultOptions = { + content: '', + showCloseButton: true, + escapeButtonCloses: true, + overlayClosesOnClick: true, + appendLocation: 'body', + className: '', + overlayClassName: '', + contentClassName: '', + closeClassName: '' +} + +// TODO Loading symbols? + +// Include escapeHtml function on the library object +Object.defineProperty(vex, '_escapeHtml', { + configurable: false, + enumerable: false, + writable: false, + value: escapeHtml +}) + +// Plugin system! +vex.registerPlugin = function registerPlugin (pluginFn, name) { + var plugin = pluginFn(vex) + var pluginName = name || plugin.name + if (vex[pluginName]) { + throw new Error('Plugin ' + name + ' is already registered.') + } + vex[pluginName] = plugin +} + +module.exports = vex + +},{"classlist-polyfill":1,"domify":2,"es6-object-assign":3}]},{},[4])(4) +}); \ No newline at end of file diff --git a/wire/modules/Jquery/JqueryUI/vex/scripts/vex.min.js b/wire/modules/Jquery/JqueryUI/vex/scripts/vex.min.js new file mode 100755 index 00000000..f5fc5b11 --- /dev/null +++ b/wire/modules/Jquery/JqueryUI/vex/scripts/vex.min.js @@ -0,0 +1,3 @@ +(function(b){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=b()}else{if(typeof define==="function"&&define.amd){define([],b)}else{var a;if(typeof window!=="undefined"){a=window}else{if(typeof global!=="undefined"){a=global}else{if(typeof self!=="undefined"){a=self}else{a=this}}}a.vex=b()}}})(function(){var d,b,a;return(function c(f,k,h){function g(q,n){if(!k[q]){if(!f[q]){var m=typeof require=="function"&&require;if(!n&&m){return m(q,!0)}if(e){return e(q,!0)}var p=new Error("Cannot find module '"+q+"'");throw p.code="MODULE_NOT_FOUND",p}var i=k[q]={exports:{}};f[q][0].call(i.exports,function(l){var o=f[q][1][l];return g(o?o:l)},i,i.exports,c,f,k,h)}return k[q].exports}var e=typeof require=="function"&&require;for(var j=0;j
    a';h=!j.getElementsByTagName("link").length;j=undefined}var i={legend:[1,"
    ","
    "],tr:[2,"","
    "],col:[2,"","
    "],_default:h?[1,"X
    ","
    "]:[0,"",""]};i.td=i.th=[3,"","
    "];i.option=i.optgroup=[1,'"];i.thead=i.tbody=i.colgroup=i.caption=i.tfoot=[1,"","
    "];i.polyline=i.ellipse=i.polygon=i.circle=i.text=i.line=i.path=i.rect=i.g=[1,'',""];function k(q,t){if("string"!=typeof q){throw new TypeError("String expected")}if(!t){t=document}var o=/<([\w:]+)/.exec(q);if(!o){return t.createTextNode(q)}q=q.replace(/^\s+|\s+$/g,"");var v=o[1];if(v=="body"){var n=t.createElement("html");n.innerHTML=q;return n.removeChild(n.lastChild)}var l=i[v]||i._default;var p=l[0];var r=l[1];var u=l[2];var n=t.createElement("div");n.innerHTML=r+q+u;while(p--){n=n.lastChild}if(n.firstChild==n.lastChild){return n.removeChild(n.firstChild)}var s=t.createDocumentFragment();while(n.firstChild){s.appendChild(n.removeChild(n.firstChild))}return s}},{}],3:[function(g,h,f){function e(q,j){if(q===undefined||q===null){throw new TypeError("Cannot convert first argument to object")}var s=Object(q);for(var k=1;k