diff --git a/dashboard-ui/bower_components/doc-ready/.bower.json b/dashboard-ui/bower_components/doc-ready/.bower.json index adda4287b4..d4d75eca65 100644 --- a/dashboard-ui/bower_components/doc-ready/.bower.json +++ b/dashboard-ui/bower_components/doc-ready/.bower.json @@ -39,6 +39,6 @@ "commit": "cec8e49744a1e18b14a711eea77e201bb70de544" }, "_source": "git://github.com/desandro/doc-ready.git", - "_target": "1.0.x", + "_target": "~1.0.4", "_originalSource": "doc-ready" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/eventie/.bower.json b/dashboard-ui/bower_components/eventie/.bower.json index 6b5b662fdc..917d217ea8 100644 --- a/dashboard-ui/bower_components/eventie/.bower.json +++ b/dashboard-ui/bower_components/eventie/.bower.json @@ -30,6 +30,6 @@ "commit": "14d2ca3df97da64c820829a8310f9198fbafbcfa" }, "_source": "git://github.com/desandro/eventie.git", - "_target": "~1.0.3", + "_target": "^1", "_originalSource": "eventie" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/iron-meta/.bower.json b/dashboard-ui/bower_components/iron-meta/.bower.json index e1304d174b..f4bfef4a7c 100644 --- a/dashboard-ui/bower_components/iron-meta/.bower.json +++ b/dashboard-ui/bower_components/iron-meta/.bower.json @@ -26,14 +26,14 @@ "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" }, "main": "iron-meta.html", - "homepage": "https://github.com/PolymerElements/iron-meta", + "homepage": "https://github.com/polymerelements/iron-meta", "_release": "1.1.1", "_resolution": { "type": "version", "tag": "v1.1.1", "commit": "e171ee234b482219c9514e6f9551df48ef48bd9f" }, - "_source": "git://github.com/PolymerElements/iron-meta.git", + "_source": "git://github.com/polymerelements/iron-meta.git", "_target": "^1.0.0", - "_originalSource": "PolymerElements/iron-meta" + "_originalSource": "polymerelements/iron-meta" } \ No newline at end of file diff --git a/dashboard-ui/scripts/channelitems.js b/dashboard-ui/scripts/channelitems.js index e83f8b9ed1..2ad5c61aa1 100644 --- a/dashboard-ui/scripts/channelitems.js +++ b/dashboard-ui/scripts/channelitems.js @@ -223,7 +223,7 @@ $('.alphabetPicker', page).alphaValue(query.NameStartsWith); } - $(document).on('pageinit', "#channelItemsPage", function () { + pageIdOn.on('pageinit', "channelItemsPage", function () { var page = this; @@ -261,7 +261,9 @@ reloadItems(page); }); - }).on('pagebeforeshow', "#channelItemsPage", function () { + }); + + pageIdOn('pagebeforeshow', "channelItemsPage", function () { var page = this; reloadFeatures(page); diff --git a/dashboard-ui/scripts/channels.js b/dashboard-ui/scripts/channels.js index 20a09b189f..668e620b1e 100644 --- a/dashboard-ui/scripts/channels.js +++ b/dashboard-ui/scripts/channels.js @@ -70,7 +70,7 @@ } } - $(document).on('pageinit', "#channelsPage", function () { + pageIdOn.on('pageinit', "channelsPage", function () { var page = this; @@ -79,8 +79,8 @@ LibraryBrowser.configurePaperLibraryTabs(page, tabs, pages, 'channels.html'); - $(pages).on('tabchange', function () { - loadTab(page, parseInt(this.selected)); + pages.addEventListener('tabchange', function (e) { + loadTab(page, parseInt(e.target.selected)); }); }); diff --git a/dashboard-ui/scripts/channelslatest.js b/dashboard-ui/scripts/channelslatest.js index 980c24ad8b..5faeeabade 100644 --- a/dashboard-ui/scripts/channelslatest.js +++ b/dashboard-ui/scripts/channelslatest.js @@ -21,13 +21,13 @@ } } - $(document).on('pageinit', "#channelsPage", function () { + pageIdOn('pageinit', "channelsPage", function () { var page = this; var pages = page.querySelector('neon-animated-pages'); - $(pages).on('tabchange', function () { - loadTab(page, parseInt(this.selected)); + pages.addEventListener('tabchange', function (e) { + loadTab(page, parseInt(e.target.selected)); }); }); diff --git a/dashboard-ui/scripts/indexpage.js b/dashboard-ui/scripts/indexpage.js index 7d1726886e..5407fb5d40 100644 --- a/dashboard-ui/scripts/indexpage.js +++ b/dashboard-ui/scripts/indexpage.js @@ -266,11 +266,11 @@ LibraryBrowser.configurePaperLibraryTabs(page, tabs, pages, 'index.html'); - $(pages).on('tabchange', function () { - loadTab(page, parseInt(this.selected)); + pages.addEventListener('tabchange', function (e) { + loadTab(page, parseInt(e.target.selected)); }); - Events.on(page.querySelector('.btnTakeTour'), 'click', function () { + page.querySelector('.btnTakeTour').addEventListener('click', function () { takeTour(page, Dashboard.getCurrentUserId()); }); @@ -301,7 +301,7 @@ var page = $($.mobile.activePage)[0]; var pages = page.querySelector('neon-animated-pages'); - $(pages).trigger('tabchange'); + pages.dispatchEvent(new CustomEvent("tabchange", {})); } } diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js index a7d19cc564..7065ed2075 100644 --- a/dashboard-ui/scripts/itemdetailpage.js +++ b/dashboard-ui/scripts/itemdetailpage.js @@ -1945,31 +1945,31 @@ }); } - $(document).on('pageinit', "#itemDetailPage", function () { + pageIdOn('pageinit', "itemDetailPage", function() { var page = this; - $('.btnPlay', page).on('click', function () { + $('.btnPlay', page).on('click', function() { playCurrentItem(this); }); - $('.btnPlayTrailer', page).on('click', function () { + $('.btnPlayTrailer', page).on('click', function() { playTrailer(page); }); - $('.btnSplitVersions', page).on('click', function () { + $('.btnSplitVersions', page).on('click', function() { splitVersions(page); }); - $('.btnSync', page).on('click', function () { + $('.btnSync', page).on('click', function() { SyncManager.showMenu({ items: [currentItem] }); }); - $('.btnRecord,.btnFloatingRecord', page).on('click', function () { + $('.btnRecord,.btnFloatingRecord', page).on('click', function() { var id = getParameterByName('id'); @@ -1977,48 +1977,48 @@ }); - $('.btnCancelRecording', page).on('click', function () { + $('.btnCancelRecording', page).on('click', function() { deleteTimer(page, currentItem.TimerId); }); - $('.btnMoreCommands', page).on('click', function () { + $('.btnMoreCommands', page).on('click', function() { var button = this; - Dashboard.getCurrentUser().done(function (user) { + Dashboard.getCurrentUser().done(function(user) { LibraryBrowser.showMoreCommands(button, currentItem.Id, LibraryBrowser.getMoreCommands(currentItem, user)); }); }); - $('.childrenItemsContainer', page).on('playallfromhere', function (e, index) { + $('.childrenItemsContainer', page).on('playallfromhere', function(e, index) { LibraryBrowser.playAllFromHere(_childrenItemsFunction, index); - }).on('queueallfromhere', function (e, index) { + }).on('queueallfromhere', function(e, index) { LibraryBrowser.queueAllFromHere(_childrenItemsFunction, index); }); - $(page).on("click", ".moreScenes", function () { + $(page).on("click", ".moreScenes", function() { - Dashboard.getCurrentUser().done(function (user) { + Dashboard.getCurrentUser().done(function(user) { renderScenes(page, currentItem, user); }); - }).on("click", ".morePeople", function () { + }).on("click", ".morePeople", function() { renderCast(page, currentItem, getContext(currentItem)); - }).on("click", ".moreSpecials", function () { + }).on("click", ".moreSpecials", function() { - Dashboard.getCurrentUser().done(function (user) { + Dashboard.getCurrentUser().done(function(user) { renderSpecials(page, currentItem, user); }); - }).on("click", ".moreCriticReviews", function () { + }).on("click", ".moreCriticReviews", function() { renderCriticReviews(page, currentItem); }); @@ -2028,7 +2028,9 @@ // btnMore[i].icon = AppInfo.moreIcon; //} - }).on('pagebeforeshow', "#itemDetailPage", function () { + }); + + pageIdOn('pagebeforeshow', "itemDetailPage", function() { var page = this; @@ -2038,7 +2040,10 @@ Events.on(LibraryBrowser, 'itemdeleting', onItemDeleted); - }).on('pagebeforehide', "#itemDetailPage", function () { + }); + + + pageIdOn('pagebeforehide', "itemDetailPage", function () { Events.off(LibraryBrowser, 'itemdeleting', onItemDeleted); diff --git a/dashboard-ui/scripts/itemlistpage.js b/dashboard-ui/scripts/itemlistpage.js index 27f192c703..45b70bc4fc 100644 --- a/dashboard-ui/scripts/itemlistpage.js +++ b/dashboard-ui/scripts/itemlistpage.js @@ -236,7 +236,7 @@ } } - $(document).on('pageinit', "#itemListPage", function () { + pageIdOn('pageinit', "itemListPage", function () { var page = this; @@ -276,7 +276,9 @@ $(page).on('click', '.mediaItem', onListItemClick); - }).on('pagebeforeshow', "#itemListPage", function () { + }); + + pageIdOn('pagebeforeshow', "itemListPage", function () { var page = this; @@ -284,7 +286,9 @@ updateFilterControls(page); LibraryMenu.setBackButtonVisible(getParameterByName('context')); - }).on('pagebeforehide', "#itemListPage", function () { + }); + + pageIdOn('pagebeforehide', "itemListPage", function () { currentItem = null; diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index f7b6cd84ee..9c1a34b963 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -264,7 +264,7 @@ var delay = LibraryBrowser.animatePaperTabs() || !tabs.noSlide ? 500 : 0; setTimeout(function () { - $(pgs).trigger('tabchange'); + pgs.dispatchEvent(new CustomEvent("tabchange", {})); }, delay); }); @@ -361,7 +361,7 @@ return; } } - Events.trigger(pages, 'tabchange'); + pages.dispatchEvent(new CustomEvent("tabchange", {})); } }, diff --git a/dashboard-ui/scripts/librarylist.js b/dashboard-ui/scripts/librarylist.js index 735853982e..7ca124fff8 100644 --- a/dashboard-ui/scripts/librarylist.js +++ b/dashboard-ui/scripts/librarylist.js @@ -1208,6 +1208,7 @@ MediaController.instantMix(itemId); } + e.stopPropagation(); e.preventDefault(); return false; } diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index 0536d07341..0e79ca6c4e 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -52,7 +52,7 @@ ImageLoader.lazyChildren(document.querySelector('.viewMenuBar')); - Events.trigger(document, 'headercreated'); + document.dispatchEvent(new CustomEvent("headercreated", {})); bindMenuEvents(); } diff --git a/dashboard-ui/scripts/livetvitems.js b/dashboard-ui/scripts/livetvitems.js index df28007321..54debd31c8 100644 --- a/dashboard-ui/scripts/livetvitems.js +++ b/dashboard-ui/scripts/livetvitems.js @@ -85,7 +85,7 @@ }); } - $(document).on('pagebeforeshow', "#liveTvItemsPage", function () { + pageIdOn('pagebeforeshow', "liveTvItemsPage", function () { query.ParentId = LibraryMenu.getTopParentId(); diff --git a/dashboard-ui/scripts/livetvsuggested.js b/dashboard-ui/scripts/livetvsuggested.js index 2cd87eb866..23fd2a3caf 100644 --- a/dashboard-ui/scripts/livetvsuggested.js +++ b/dashboard-ui/scripts/livetvsuggested.js @@ -191,7 +191,7 @@ }); } - $(document).on('pageinit', "#liveTvSuggestedPage", function () { + pageIdOn('pageinit', "liveTvSuggestedPage", function () { var page = this; @@ -200,8 +200,8 @@ LibraryBrowser.configurePaperLibraryTabs(page, tabs, pages, 'livetv.html'); - $(pages).on('tabchange', function () { - loadTab(page, parseInt(this.selected)); + pages.addEventListener('tabchange', function (e) { + loadTab(page, parseInt(e.target.selected)); }); }); diff --git a/dashboard-ui/scripts/mediacontroller.js b/dashboard-ui/scripts/mediacontroller.js index cd8e37e291..ba5bc202e9 100644 --- a/dashboard-ui/scripts/mediacontroller.js +++ b/dashboard-ui/scripts/mediacontroller.js @@ -1012,17 +1012,21 @@ showPlayerSelection(); } - $(document).on('headercreated', function () { + document.addEventListener('headercreated', function () { $('.btnCast').off('click', onCastButtonClicked).on('click', onCastButtonClicked); - }).on('pagebeforeshow', ".page", function () { + }); + + pageClassOn('pagebeforeshow', "page", function () { var page = this; currentDisplayInfo = null; - }).on('displayingitem', ".libraryPage", function (e, info) { + }); + + pageClassOn('displayingitem', "libraryPage", function (e, info) { currentDisplayInfo = info; diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js index add177513b..87e96b8306 100644 --- a/dashboard-ui/scripts/mediaplayer-video.js +++ b/dashboard-ui/scripts/mediaplayer-video.js @@ -880,9 +880,9 @@ var itemVideo = document.querySelector('.itemVideo'); if (itemVideo) { //Events.on(itemVideo, 'mousemove', onMouseMove); - Events.on(itemVideo, 'keydown', idleHandler); - Events.on(itemVideo, 'scroll', idleHandler); - Events.on(itemVideo, 'mousedown', idleHandler); + itemVideo.addEventListener('keydown', idleHandler); + itemVideo.addEventListener('scroll', idleHandler); + itemVideo.addEventListener('mousedown', idleHandler); idleHandler(); } } @@ -914,9 +914,9 @@ var itemVideo = document.querySelector('.itemVideo'); if (itemVideo) { //Events.off(itemVideo, 'mousemove', onMouseMove); - Events.off(itemVideo, 'keydown', idleHandler); - Events.off(itemVideo, 'scroll', idleHandler); - Events.off(itemVideo, 'mousedown', idleHandler); + itemVideo.removeEventListener('keydown', idleHandler); + itemVideo.removeEventListener('scroll', idleHandler); + itemVideo.removeEventListener('mousedown', idleHandler); } } diff --git a/dashboard-ui/scripts/moviecollections.js b/dashboard-ui/scripts/moviecollections.js index 54c97e45ff..07fda3b1fe 100644 --- a/dashboard-ui/scripts/moviecollections.js +++ b/dashboard-ui/scripts/moviecollections.js @@ -202,21 +202,23 @@ }); } - $(document).on('pageinit', "#boxsetsPage", function () { - + pageIdOn('pageinit', 'boxsetsPage', function () { + var page = this; var content = page; initPage(content); - }).on('pagebeforeshow', "#boxsetsPage", function () { + }); + pageIdOn('pagebeforeshow', 'boxsetsPage', function () { var page = this; var content = page; reloadItems(content); + }); window.MoviesPage = window.MoviesPage || {}; diff --git a/dashboard-ui/scripts/moviesrecommended.js b/dashboard-ui/scripts/moviesrecommended.js index 4a3a9e3f13..65642be6b8 100644 --- a/dashboard-ui/scripts/moviesrecommended.js +++ b/dashboard-ui/scripts/moviesrecommended.js @@ -340,8 +340,8 @@ LibraryBrowser.configurePaperLibraryTabs(page, tabs, pages, baseUrl); - $(pages).on('tabchange', function () { - loadTab(page, parseInt(this.selected)); + pages.addEventListener('tabchange', function (e) { + loadTab(page, parseInt(e.target.selected)); }); }); @@ -383,7 +383,7 @@ var page = $($.mobile.activePage)[0]; var pages = page.querySelector('neon-animated-pages'); - $(pages).trigger('tabchange'); + pages.dispatchEvent(new CustomEvent("tabchange", {})); } } diff --git a/dashboard-ui/scripts/musicrecommended.js b/dashboard-ui/scripts/musicrecommended.js index fa359944e7..a7e1091f04 100644 --- a/dashboard-ui/scripts/musicrecommended.js +++ b/dashboard-ui/scripts/musicrecommended.js @@ -302,8 +302,8 @@ LibraryBrowser.configurePaperLibraryTabs(page, tabs, pages, baseUrl); - $(pages).on('tabchange', function () { - loadTab(page, parseInt(this.selected)); + pages.addEventListener('tabchange', function (e) { + loadTab(page, parseInt(e.target.selected)); }); }).on('pageshow', "#musicRecommendedPage", function () { diff --git a/dashboard-ui/scripts/notifications.js b/dashboard-ui/scripts/notifications.js index 30c761629a..ffb0a2dac9 100644 --- a/dashboard-ui/scripts/notifications.js +++ b/dashboard-ui/scripts/notifications.js @@ -178,7 +178,7 @@ $(apiClient).off("websocketmessage", onWebSocketMessage).on("websocketmessage", onWebSocketMessage); } - $(document).on('headercreated', function (e, apiClient) { + document.addEventListener('headercreated', function () { $('.btnNotifications').on('click', function () { Dashboard.navigate('notificationlist.html'); }); diff --git a/dashboard-ui/scripts/photos.js b/dashboard-ui/scripts/photos.js index a577adb191..80398726ec 100644 --- a/dashboard-ui/scripts/photos.js +++ b/dashboard-ui/scripts/photos.js @@ -201,7 +201,7 @@ } } - $(document).on('pageinit', "#photosPage", function () { + pageIdOn('pageinit', "photosPage", function () { var page = this; @@ -215,8 +215,8 @@ LibraryBrowser.configurePaperLibraryTabs(page, tabs, page.querySelector('neon-animated-pages'), baseUrl); - $(page.querySelector('neon-animated-pages')).on('tabchange', function () { - loadTab(page, parseInt(this.selected)); + page.querySelector('neon-animated-pages').addEventListener('tabchange', function (e) { + loadTab(page, parseInt(e.target.selected)); }); $(page).on('click', '.mediaItem', onListItemClick); diff --git a/dashboard-ui/scripts/playlists.js b/dashboard-ui/scripts/playlists.js index 96fd453502..d6742cbc3e 100644 --- a/dashboard-ui/scripts/playlists.js +++ b/dashboard-ui/scripts/playlists.js @@ -162,7 +162,7 @@ }); } - $(document).on('pagebeforeshow', "#playlistsPage", function () { + pageIdOn('pagebeforeshow', "playlistsPage", function () { var page = this; reloadItems(page); diff --git a/dashboard-ui/scripts/search.js b/dashboard-ui/scripts/search.js index 2f3499a660..2c6da4557f 100644 --- a/dashboard-ui/scripts/search.js +++ b/dashboard-ui/scripts/search.js @@ -217,7 +217,7 @@ $(document).on('pagecontainerbeforehide', closeSearchResults); - $(document).on('headercreated', function () { + document.addEventListener('headercreated', function () { bindSearchEvents(); }); diff --git a/dashboard-ui/scripts/secondaryitems.js b/dashboard-ui/scripts/secondaryitems.js index e923aa62f3..3ce6b67934 100644 --- a/dashboard-ui/scripts/secondaryitems.js +++ b/dashboard-ui/scripts/secondaryitems.js @@ -161,13 +161,15 @@ }); } - $(document).on('pageinit', "#secondaryItemsPage", function () { + pageIdOn('pageinit', "secondaryItemsPage", function () { var page = this; $(page).on('click', '.mediaItem', onListItemClick); - }).on('pagebeforeshow', "#secondaryItemsPage", function () { + }); + + pageIdOn('pagebeforeshow', "secondaryItemsPage", function () { var page = this; diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index d145f2faaa..c304ef936d 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -12,12 +12,17 @@ cache: false }); } + + $.support.cors = true; + + function onOneDocumentClick() { + document.removeEventListener('click', onOneDocumentClick); + WebNotifications.requestPermission(); + } + document.addEventListener('click', onOneDocumentClick); + })(); -$.support.cors = true; - -$(document).one('click', WebNotifications.requestPermission); - var Dashboard = { jQueryMobileInit: function () { @@ -2226,8 +2231,6 @@ var AppInfo = {}; }); define("jqmpanel", ["thirdparty/jquerymobile-1.4.5/jqm.panel"], function () { - $.mobile.panel.prototype.options.classes.modalOpen = "largePanelModalOpen ui-panel-dismiss-open"; - $.mobile.panel.prototype.options.classes.panel = "largePanel ui-panel"; Dashboard.importCss('thirdparty/jquerymobile-1.4.5/jqm.panel.css'); return {}; diff --git a/dashboard-ui/scripts/tvrecommended.js b/dashboard-ui/scripts/tvrecommended.js index a05a320529..7e83c2b6b3 100644 --- a/dashboard-ui/scripts/tvrecommended.js +++ b/dashboard-ui/scripts/tvrecommended.js @@ -270,7 +270,7 @@ LibraryBrowser.configurePaperLibraryTabs(page, tabs, pages, baseUrl); - $(pages).on('tabchange', function () { + pages.addEventListener('tabchange', function (e) { loadTab(page, parseInt(this.selected)); }); }); @@ -313,7 +313,7 @@ var page = $($.mobile.activePage)[0]; var pages = page.querySelector('neon-animated-pages'); - $(pages).trigger('tabchange'); + pages.dispatchEvent(new CustomEvent("tabchange", {})); } } diff --git a/dashboard-ui/thirdparty/jquerymobile-1.4.5/custombuild.txt b/dashboard-ui/thirdparty/jquerymobile-1.4.5/custombuild.txt deleted file mode 100644 index bfcbad3dde..0000000000 --- a/dashboard-ui/thirdparty/jquerymobile-1.4.5/custombuild.txt +++ /dev/null @@ -1,21 +0,0 @@ -removed: -text input clear -flip -flow -pop -slide -slidedown -slidefade -slideup -turn -nojs -listview auto-dividers -listview hide-dividers -zoom handling -ios orientation -grid layouts -accordions -filterable -tabs -toolbars:fixed -selects: custom menus \ No newline at end of file diff --git a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.checkbox.js b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.checkbox.js index d3b258a8d5..2d610b4cd2 100644 --- a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.checkbox.js +++ b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.checkbox.js @@ -22,8 +22,8 @@ var input = this.element, o = this.options, inheritAttr = function (input, dataAttr) { - return input.jqmData(dataAttr) || - input.closest("form, fieldset").jqmData(dataAttr); + return input.data(dataAttr) || + input.closest("form, fieldset").data(dataAttr); }, label = this.options.enhanced ? { @@ -44,7 +44,7 @@ } o.iconpos = inheritAttr(input, "iconpos") || - label.element.attr("data-" + $.mobile.ns + "iconpos") || o.iconpos, + label.element.attr("data-iconpos") || o.iconpos, // Establish options o.mini = inheritAttr(input, "mini") || o.mini; @@ -183,7 +183,7 @@ _cacheVals: function () { this._getInputSet().each(function () { - $(this).attr("data-" + $.mobile.ns + "cacheVal", this.checked); + $(this).attr("data-cacheVal", this.checked); }); }, @@ -272,7 +272,7 @@ return ((controlgroupWidget ? controlgroupWidget.options.type : // ... otherwise decide based on the "type" data attribute. - controlgroup.attr("data-" + $.mobile.ns + "type")) !== "horizontal"); + controlgroup.attr("data-type")) !== "horizontal"); } } diff --git a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.collapsible.js b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.collapsible.js index 72af2eedce..988b1dadcb 100644 --- a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.collapsible.js +++ b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.collapsible.js @@ -1,4 +1,41 @@ -(function ($, undefined) { +(function ($, window, undefined) { + var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/; + + $.extend($.mobile, { + + // Namespace used framework-wide for data-attrs. Default is no namespace + + // Retrieve an attribute from an element and perform some massaging of the value + + getAttribute: function (element, key) { + var data; + + element = element.jquery ? element[0] : element; + + if (element && element.getAttribute) { + data = element.getAttribute("data-" + key); + } + + // Copied from core's src/data.js:dataAttr() + // Convert from a string to a proper data type + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test(data) ? JSON.parse(data) : + data; + } catch (err) { } + + return data; + } + + }); + +})(jQuery, this); + +(function ($, undefined) { var rInitialLetter = /([A-Z])/g, diff --git a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.listview.js b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.listview.js index 2a32f2aa6f..7a8e0c3123 100644 --- a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.listview.js +++ b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.listview.js @@ -1,4 +1,41 @@ -(function ($, undefined) { +(function ($, window, undefined) { + var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/; + + $.extend($.mobile, { + + // Namespace used framework-wide for data-attrs. Default is no namespace + + // Retrieve an attribute from an element and perform some massaging of the value + + getAttribute: function (element, key) { + var data; + + element = element.jquery ? element[0] : element; + + if (element && element.getAttribute) { + data = element.getAttribute("data-" + key); + } + + // Copied from core's src/data.js:dataAttr() + // Convert from a string to a proper data type + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test(data) ? JSON.parse(data) : + data; + } catch (err) { } + + return data; + } + + }); + +})(jQuery, this); + +(function ($, undefined) { var uiScreenHiddenRegex = /\bui-screen-hidden\b/; function noHiddenClass(elements) { diff --git a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.panel.js b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.panel.js index 7368e389cf..a4e47c49bc 100644 --- a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.panel.js +++ b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.panel.js @@ -82,27 +82,13 @@ $.widget("mobile.panel", { options: { - classes: { - panel: "ui-panel", - panelOpen: "ui-panel-open", - panelClosed: "ui-panel-closed", - panelFixed: "ui-panel-fixed", - panelInner: "ui-panel-inner", - modal: "ui-panel-dismiss", - modalOpen: "ui-panel-dismiss-open", - pageContainer: "ui-panel-page-container", - pageWrapper: "ui-panel-wrapper", - pageFixedToolbar: "ui-panel-fixed-toolbar", - pageContentPrefix: "ui-panel-page-content", /* Used for wrapper and fixed toolbars position, display and open classes. */ - animate: "ui-panel-animate" - }, animate: true, theme: null, position: "left", dismissible: true, - display: "reveal", //accepts reveal, push, overlay + display: "overlay", //accepts reveal, push, overlay swipeClose: true, - positionFixed: false + positionFixed: true }, _parentPage: null, @@ -129,7 +115,7 @@ // if animating, add the class to do so if (!!this.options.animate) { - this.element.addClass(this.options.classes.animate); + this.element.addClass("ui-panel-animate"); } this._bindUpdateLayout(); @@ -145,9 +131,9 @@ }, _getPanelInner: function () { - var panelInner = this.element[0].querySelector("." + this.options.classes.panelInner); + var panelInner = this.element[0].querySelector("." + "ui-panel-inner"); if (!panelInner) { - panelInner = this.element.children().wrapAll("
").parent(); + panelInner = this.element.children().wrapAll("
").parent(); } else { panelInner = $(panelInner); } @@ -159,7 +145,7 @@ var self = this, target = self._parentPage ? self._parentPage.parent() : self.element.parent(); - self._modal = $("
") + self._modal = $("
") .on("mousedown", function () { self.close(); }) @@ -167,16 +153,16 @@ }, _getPage: function () { - var page = this._openedPage || this._parentPage || $("." + $.mobile.activePageClass); + var page = this._openedPage || this._parentPage || $(".ui-page-active"); return page; }, _getWrapper: function () { - var wrapper = this._page().find("." + this.options.classes.pageWrapper); + var wrapper = this._page().find("." + "ui-panel-wrapper"); if (wrapper.length === 0) { wrapper = this._page().children(".ui-header:not(.ui-header-fixed), .ui-content:not(.ui-popup), .ui-footer:not(.ui-footer-fixed)") - .wrapAll("
") + .wrapAll("
") .parent(); } @@ -184,17 +170,17 @@ }, _getPosDisplayClasses: function (prefix) { - return prefix + "-position-" + this.options.position + " " + prefix + "-display-" + this.options.display; + return prefix + "-position-right " + prefix + "-display-" + this.options.display; }, _getPanelClasses: function () { - var panelClasses = this.options.classes.panel + - " " + this._getPosDisplayClasses(this.options.classes.panel) + - " " + this.options.classes.panelClosed + + var panelClasses = "ui-panel" + + " " + this._getPosDisplayClasses("ui-panel") + + " " + "ui-panel-closed" + " " + "ui-body-" + (this.options.theme ? this.options.theme : "inherit"); if (!!this.options.positionFixed) { - panelClasses += " " + this.options.classes.panelFixed; + panelClasses += " " + "ui-panel-fixed"; } return panelClasses; @@ -239,14 +225,14 @@ }, _unfixPanel: function () { - if (!!this.options.positionFixed && $.support.fixedPosition) { - this.element.removeClass(this.options.classes.panelFixed); + if (!!this.options.positionFixed) { + this.element.removeClass("ui-panel-fixed"); } }, _fixPanel: function () { - if (!!this.options.positionFixed && $.support.fixedPosition) { - this.element.addClass(this.options.classes.panelFixed); + if (!!this.options.positionFixed) { + this.element.addClass("ui-panel-fixed"); } }, @@ -355,10 +341,10 @@ _openPanel = function () { self._off(self.document, "panelclose"); - self._page().jqmData("panel", "open"); + self._page().data("panel", "open"); if (!!o.animate && o.display !== "overlay") { - self._wrapper.addClass(o.classes.animate); + self._wrapper.addClass("ui-panel-animate"); } if (!immediate && !!o.animate) { @@ -370,23 +356,23 @@ if (o.theme && o.display !== "overlay") { self._page().parent() - .addClass(o.classes.pageContainer + "-themed " + o.classes.pageContainer + "-" + o.theme); + .addClass("ui-panel-page-container" + "-themed " + "ui-panel-page-container" + "-" + o.theme); } self.element - .removeClass(o.classes.panelClosed) - .addClass(o.classes.panelOpen); + .removeClass("ui-panel-closed") + .addClass("ui-panel-open"); self._positionPanel(true); - self._pageContentOpenClasses = self._getPosDisplayClasses(o.classes.pageContentPrefix); + self._pageContentOpenClasses = self._getPosDisplayClasses("ui-panel-page-content"); if (o.display !== "overlay") { - self._page().parent().addClass(o.classes.pageContainer); + self._page().parent().addClass("ui-panel-page-container"); self._wrapper.addClass(self._pageContentOpenClasses); } - self._modalOpenClasses = self._getPosDisplayClasses(o.classes.modal) + " " + o.classes.modalOpen; + self._modalOpenClasses = self._getPosDisplayClasses("ui-panel-dismiss") + " " + "ui-panel-dismiss-open"; if (self._modal) { self._modal .addClass(self._modalOpenClasses) @@ -401,7 +387,7 @@ } if (o.display !== "overlay") { - self._wrapper.addClass(o.classes.pageContentPrefix + "-open"); + self._wrapper.addClass("ui-panel-page-content" + "-open"); } self._bindFixListener(); @@ -413,7 +399,7 @@ self._trigger("beforeopen"); - if (self._page().jqmData("panel") === "open") { + if (self._page().data("panel") === "open") { self._on(self.document, { "panelclose": _openPanel }); @@ -432,7 +418,7 @@ _closePanel = function () { - self.element.removeClass(o.classes.panelOpen); + self.element.removeClass("ui-panel-open"); if (o.display !== "overlay") { self._wrapper.removeClass(self._pageContentOpenClasses); @@ -453,24 +439,24 @@ }, complete = function () { if (o.theme && o.display !== "overlay") { - self._page().parent().removeClass(o.classes.pageContainer + "-themed " + o.classes.pageContainer + "-" + o.theme); + self._page().parent().removeClass("ui-panel-page-container" + "-themed " + "ui-panel-page-container" + "-" + o.theme); } - self.element.addClass(o.classes.panelClosed); + self.element.addClass("ui-panel-closed"); if (o.display !== "overlay") { - self._page().parent().removeClass(o.classes.pageContainer); - self._wrapper.removeClass(o.classes.pageContentPrefix + "-open"); + self._page().parent().removeClass("ui-panel-page-container"); + self._wrapper.removeClass("ui-panel-page-content" + "-open"); } if (!!o.animate && o.display !== "overlay") { - self._wrapper.removeClass(o.classes.animate); + self._wrapper.removeClass("ui-panel-animate"); } self._fixPanel(); self._unbindFixListener(); - self._page().jqmRemoveData("panel"); + self._page().removeData("panel"); self._trigger("close"); @@ -504,10 +490,10 @@ if (this._open) { - this._page().parent().removeClass(o.classes.pageContainer); + this._page().parent().removeClass("ui-panel-page-container"); if (o.theme) { - this._page().parent().removeClass(o.classes.pageContainer + "-themed " + o.classes.pageContainer + "-" + o.theme); + this._page().parent().removeClass("ui-panel-page-container" + "-themed " + "ui-panel-page-container" + "-" + o.theme); } } } @@ -519,13 +505,13 @@ } if (this._open) { - this._page().jqmRemoveData("panel"); + this._page().removeData("panel"); } this._panelInner.children().unwrap(); this.element - .removeClass([this._getPanelClasses(), o.classes.panelOpen, o.classes.animate].join(" ")) + .removeClass([this._getPanelClasses(), "ui-panel-open", "ui-panel-animate"].join(" ")) .off("swipeleft.panel swiperight.panel") .off("panelbeforeopen") .off("panelhide") diff --git a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.popup.js b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.popup.js index 07debfe022..d6a47c187c 100644 --- a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.popup.js +++ b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.popup.js @@ -894,7 +894,7 @@ if (typeof data.toPage === "string") { parsedDst = data.toPage; } else { - parsedDst = data.toPage.jqmData("url"); + parsedDst = data.toPage.data("url"); } parsedDst = $.mobile.path.parseUrl(parsedDst); toUrl = parsedDst.pathname + parsedDst.search + parsedDst.hash; @@ -1030,8 +1030,8 @@ popup.popup("open", { x: offset.left + $link.outerWidth() / 2, y: offset.top + $link.outerHeight() / 2, - transition: $link.jqmData("transition"), - positionTo: $link.jqmData("position-to") + transition: $link.data("transition"), + positionTo: $link.data("position-to") }); } @@ -1042,7 +1042,7 @@ }; // TODO move inside _create - $.mobile.document.on("pagebeforechange", function (theEvent, data) { + $(document).on("pagebeforechange", function (theEvent, data) { if (data.options.role === "popup") { $.mobile.popup.handleLink(data.options.link); theEvent.preventDefault(); diff --git a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.slider.js b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.slider.js index 61e55119a1..d36632ebf2 100644 --- a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.slider.js +++ b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.slider.js @@ -1,4 +1,41 @@ -(function ($, undefined) { +(function ($, window, undefined) { + var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/; + + $.extend($.mobile, { + + // Namespace used framework-wide for data-attrs. Default is no namespace + + // Retrieve an attribute from an element and perform some massaging of the value + + getAttribute: function (element, key) { + var data; + + element = element.jquery ? element[0] : element; + + if (element && element.getAttribute) { + data = element.getAttribute("data-" + key); + } + + // Copied from core's src/data.js:dataAttr() + // Convert from a string to a proper data type + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test(data) ? JSON.parse(data) : + data; + } catch (err) { } + + return data; + } + + }); + +})(jQuery, this); + +(function ($, undefined) { /*! * jQuery UI Core c0ab71056b936627e8a7821f03c044aec6280a40 @@ -63,8 +100,8 @@ control = this.element, trackTheme = this.options.trackTheme || $.mobile.getAttribute(control[0], "theme"), trackThemeClass = trackTheme ? " ui-bar-" + trackTheme : " ui-bar-inherit", - cornerClass = (this.options.corners || control.jqmData("corners")) ? " ui-corner-all" : "", - miniClass = (this.options.mini || control.jqmData("mini")) ? " ui-mini" : "", + cornerClass = (this.options.corners || control.data("corners")) ? " ui-corner-all" : "", + miniClass = (this.options.mini || control.data("mini")) ? " ui-mini" : "", cType = control[0].nodeName.toLowerCase(), isToggleSwitch = (cType === "select"), isRangeslider = control.parent().is(":jqmData(role='rangeslider')"), diff --git a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.table.js b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.table.js index b194ec764f..40721ffa71 100644 --- a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.table.js +++ b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.table.js @@ -1,16 +1,50 @@ -(function ($, undefined) { +(function ($, window, undefined) { + var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/; + + $.extend($.mobile, { + + // Namespace used framework-wide for data-attrs. Default is no namespace + + // Retrieve an attribute from an element and perform some massaging of the value + + getAttribute: function (element, key) { + var data; + + element = element.jquery ? element[0] : element; + + if (element && element.getAttribute) { + data = element.getAttribute("data-" + key); + } + + // Copied from core's src/data.js:dataAttr() + // Convert from a string to a proper data type + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test(data) ? JSON.parse(data) : + data; + } catch (err) { } + + return data; + } + + }); + +})(jQuery, this); + +(function ($, undefined) { $.widget("mobile.table", { options: { - classes: { - table: "ui-table" - }, enhanced: false }, _create: function () { if (!this.options.enhanced) { - this.element.addClass(this.options.classes.table); + this.element.addClass("ui-table"); } // extend here, assign on refresh > _setHeaders @@ -58,7 +92,7 @@ selector = ":nth-child(" + (columnCount + 1) + ")", j; - this.setAttribute("data-" + $.mobile.ns + "colstart", columnCount + 1); + this.setAttribute("data-colstart", columnCount + 1); if (span) { for (j = 0; j < span - 1; j++) { @@ -69,7 +103,7 @@ // Store "cells" data on header as a reference to all cells in the // same column as this TH - $(this).jqmData("cells", table.find("tr").not(trs.eq(0)).not(this).children(selector)); + $(this).data("cells", table.find("tr").not(trs.eq(0)).not(this).children(selector)); columnCount++; }); @@ -84,11 +118,7 @@ $.widget("mobile.table", $.mobile.table, { options: { - mode: "reflow", - classes: $.extend($.mobile.table.prototype.options.classes, { - reflowTable: "ui-table-reflow", - cellLabels: "ui-table-cell-label" - }) + mode: "reflow" }, _create: function () { @@ -100,7 +130,7 @@ } if (!this.options.enhanced) { - this.element.addClass(this.options.classes.reflowTable); + this.element.addClass("ui-table-reflow"); this._updateReflow(); } @@ -127,7 +157,7 @@ // get headers in reverse order so that top-level headers are appended last $(table.allHeaders.get().reverse()).each(function () { - var cells = $(this).jqmData("cells"), + var cells = $(this).data("cells"), colstart = $.mobile.getAttribute(this, "colstart"), hierarchyClass = cells.not(this).filter("thead th").length && " ui-table-cell-label-top", contents = $(this).clone().contents(), @@ -144,9 +174,9 @@ } table._addLabels(cells.filter(filter), - opts.classes.cellLabels + hierarchyClass, contents); + "ui-table-cell-label" + hierarchyClass, contents); } else { - table._addLabels(cells, opts.classes.cellLabels, contents); + table._addLabels(cells, "ui-table-cell-label", contents); } } diff --git a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js index 4bc347110a..4943069a9a 100644 --- a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js +++ b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js @@ -20,84 +20,6 @@ * http://benalman.com/about/license/ */ - // Script: jQuery hashchange event - // - // *Version: 1.3, Last updated: 7/21/2010* - // - // Project Home - http://benalman.com/projects/jquery-hashchange-plugin/ - // GitHub - http://github.com/cowboy/jquery-hashchange/ - // Source - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js - // (Minified) - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped) - // - // About: License - // - // Copyright (c) 2010 "Cowboy" Ben Alman, - // Dual licensed under the MIT and GPL licenses. - // http://benalman.com/about/license/ - // - // About: Examples - // - // These working examples, complete with fully commented code, illustrate a few - // ways in which this plugin can be used. - // - // hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/ - // document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/ - // - // About: Support and Testing - // - // Information about what version or versions of jQuery this plugin has been - // tested with, what browsers it has been tested in, and where the unit tests - // reside (so you can test it yourself). - // - // jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2 - // Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5, - // Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5. - // Unit Tests - http://benalman.com/code/projects/jquery-hashchange/unit/ - // - // About: Known issues - // - // While this jQuery hashchange event implementation is quite stable and - // robust, there are a few unfortunate browser bugs surrounding expected - // hashchange event-based behaviors, independent of any JavaScript - // window.onhashchange abstraction. See the following examples for more - // information: - // - // Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/ - // Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/ - // WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/ - // Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/ - // - // Also note that should a browser natively support the window.onhashchange - // event, but not report that it does, the fallback polling loop will be used. - // - // About: Release History - // - // 1.3 - (7/21/2010) Reorganized IE6/7 Iframe code to make it more - // "removable" for mobile-only development. Added IE6/7 document.title - // support. Attempted to make Iframe as hidden as possible by using - // techniques from http://www.paciellogroup.com/blog/?p=604. Added - // support for the "shortcut" format $(window).hashchange( fn ) and - // $(window).hashchange() like jQuery provides for built-in events. - // Renamed jQuery.hashchangeDelay to and - // lowered its default value to 50. Added - // and properties plus document-domain.html - // file to address access denied issues when setting document.domain in - // IE6/7. - // 1.2 - (2/11/2010) Fixed a bug where coming back to a page using this plugin - // from a page on another domain would cause an error in Safari 4. Also, - // IE6/7 Iframe is now inserted after the body (this actually works), - // which prevents the page from scrolling when the event is first bound. - // Event can also now be bound before DOM ready, but it won't be usable - // before then in IE6/7. - // 1.1 - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug - // where browser version is incorrectly reported as 8.0, despite - // inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag. - // 1.0 - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special - // window.onhashchange functionality into a separate plugin for users - // who want just the basic event & back button support, without all the - // extra awesomeness that BBQ provides. This plugin will be included as - // part of jQuery BBQ, but also be available separately. - (function ($, window, undefined) { // Reused string. @@ -138,119 +60,16 @@ })(jQuery, this); - (function ($, window, undefined) { - $.extend($.mobile, { - - // Version of the jQuery Mobile Framework - version: "1.4.5", - - hideUrlBar: true, - - // Deprecated in 1.4 remove in 1.5 - // Class assigned to page currently in view, and during transitions - activePageClass: "ui-page-active", - - // disable the alteration of the dynamic base tag or links in the case - // that a dynamic base tag isn't supported - dynamicBaseEnabled: true, - - // default the property to remove dependency on assignment in init module - pageContainer: $(), - - dialogHashKey: "&ui-state=dialog" - }); - })(jQuery, this); + // default the property to remove dependency on assignment in init module + jQuery.mobile.pageContainer = $(); (function ($, window, undefined) { - var nsNormalizeDict = {}, - oldFind = $.find, - rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + var oldFind = $.find, jqmDataRE = /:jqmData\(([^)]*)\)/g; - $.extend($.mobile, { - - // Namespace used framework-wide for data-attrs. Default is no namespace - - ns: "", - - // Retrieve an attribute from an element and perform some massaging of the value - - getAttribute: function (element, key) { - var data; - - element = element.jquery ? element[0] : element; - - if (element && element.getAttribute) { - data = element.getAttribute("data-" + $.mobile.ns + key); - } - - // Copied from core's src/data.js:dataAttr() - // Convert from a string to a proper data type - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test(data) ? JSON.parse(data) : - data; - } catch (err) { } - - return data; - }, - - // Expose our cache for testing purposes. - nsNormalizeDict: nsNormalizeDict, - - // Take a data attribute property, prepend the namespace - // and then camel case the attribute string. Add the result - // to our nsNormalizeDict so we don't have to do this again. - nsNormalize: function (prop) { - return nsNormalizeDict[prop] || - (nsNormalizeDict[prop] = $.camelCase($.mobile.ns + prop)); - } - - }); - - // Mobile version of data and removeData and hasData methods - // ensures all data is set and retrieved using jQuery Mobile's data namespace - $.fn.jqmData = function (prop, value) { - var result; - if (typeof prop !== "undefined") { - if (prop) { - prop = $.mobile.nsNormalize(prop); - } - - // undefined is permitted as an explicit input for the second param - // in this case it returns the value and does not set it to undefined - if (arguments.length < 2 || value === undefined) { - result = this.data(prop); - } else { - result = this.data(prop, value); - } - } - return result; - }; - - $.jqmData = function (elem, prop, value) { - var result; - if (typeof prop !== "undefined") { - result = $.data(elem, prop ? $.mobile.nsNormalize(prop) : prop, value); - } - return result; - }; - - $.fn.jqmRemoveData = function (prop) { - return this.removeData($.mobile.nsNormalize(prop)); - }; - - $.jqmRemoveData = function (elem, prop) { - return $.removeData(elem, $.mobile.nsNormalize(prop)); - }; - $.find = function (selector, context, ret, extra) { if (selector.indexOf(":jqmData") > -1) { - selector = selector.replace(jqmDataRE, "[data-" + ($.mobile.ns || "") + "$1]"); + selector = selector.replace(jqmDataRE, "[data-$1]"); } return oldFind.call(this, selector, context, ret, extra); @@ -276,9 +95,6 @@ } $.extend($.mobile, { - // define the window and the document objects - window: $(window), - document: $(document), // Place to store various widget extensions behaviors: {}, @@ -291,7 +107,7 @@ var url = (page ? page.getAttribute("data-url") : null), base = $.mobile.path.documentBase.hrefNoHash; - if (!$.mobile.dynamicBaseEnabled || !url || !$.mobile.path.isPath(url)) { + if (!url || !$.mobile.path.isPath(url)) { url = base; } @@ -342,68 +158,7 @@ })(jQuery, this); (function ($, undefined) { - - // thx Modernizr - function propExists(prop) { - var uc_prop = prop.charAt(0).toUpperCase() + prop.substr(1), - props = (prop + " " + vendors.join(uc_prop + " ") + uc_prop).split(" "), - v; - - for (v in props) { - if (fbCSS[props[v]] !== undefined) { - return true; - } - } - } - - var fakeBody = $("").prependTo("html"), - fbCSS = fakeBody[0].style, - vendors = ["Webkit", "Moz", "O"], - webos = "palmGetResource" in window, //only used to rule out scrollTop - operamini = window.operamini && ({}).toString.call(window.operamini) === "[object OperaMini]"; - - // Test for dynamic-updating base tag support ( allows us to avoid href,src attr rewriting ) - function baseTagTest() { - var fauxBase = location.protocol + "//" + location.host + location.pathname + "ui-dir/", - base = $("head base"), - fauxEle = null, - href = "", - link, rebase; - - if (!base.length) { - base = fauxEle = $("", { "href": fauxBase }).appendTo("head"); - } else { - href = base.attr("href"); - } - - link = $("").prependTo(fakeBody); - rebase = link[0].href; - base[0].href = href || location.pathname; - - if (fauxEle) { - fauxEle.remove(); - } - return rebase.indexOf(fauxBase) === 0; - } - - $.extend($.support, { - cssPseudoElement: !!propExists("content"), - touchOverflow: !!propExists("overflowScrolling"), - fixedPosition: true, - scrollTop: ("pageXOffset" in window || - "scrollTop" in document.documentElement || - "scrollTop" in fakeBody[0]) && !webos && !operamini, - - dynamicBaseTag: baseTagTest() - }); - - fakeBody.remove(); - - })(jQuery); - - - (function ($, undefined) { - var $win = $.mobile.window, self; + var $win = $(window), self; $.event.special.navigate = self = { bound: false, @@ -944,9 +699,10 @@ options = {}; // - if (!$.mobile.getAttribute(elem, "defaults")) { + if (!this.element.data("defaults")) { for (option in this.options) { - value = $.mobile.getAttribute(elem, option.replace(rcapitals, replaceFunction)); + + value = this.element.data(option); if (value != null) { options[option] = value; @@ -983,7 +739,7 @@ $.extend($.widget, originalWidget); // For backcompat remove in 1.5 - $.mobile.document.on("create", function (event) { + $(document).on("create", function (event) { $(event.target).enhanceWithin(); }); @@ -1020,13 +776,13 @@ }, _enhance: function () { - var attrPrefix = "data-" + $.mobile.ns, + var attrPrefix = "data-", self = this; var element = this.element[0]; if (this.options.role) { - element.setAttribute("data-" + $.mobile.ns + "role", this.options.role); + element.setAttribute("data-role", this.options.role); } element.setAttribute("tabindex", "0"); @@ -1038,7 +794,7 @@ for (var i = 0, length = contents.length; i < length; i++) { var content = contents[i]; var theme = content.getAttribute(attrPrefix + "theme") || undefined; - self.options.contentTheme = theme || self.options.contentTheme || (self.options.dialog && self.options.theme) || (self.element.jqmData("role") === "dialog" && self.options.theme); + self.options.contentTheme = theme || self.options.contentTheme || (self.options.dialog && self.options.theme) || (self.element.data("role") === "dialog" && self.options.theme); content.classList.add("ui-content"); if (self.options.contentTheme) { content.classList.add("ui-body-" + (self.options.contentTheme)); @@ -1058,7 +814,7 @@ } if (o.contentTheme !== undefined) { - var elems = elem.querySelectorAll("*[data-" + $.mobile.ns + "='content']"); + var elems = elem.querySelectorAll("*[data-" + "" + "='content']"); for (var i = 0, length = elems.length; i < length; i++) { var el = elems[i]; el.classList.remove("ui-body-" + this.options.contentTheme); @@ -1084,7 +840,7 @@ (function ($, undefined) { - var path, $base, dialogHashKey = "&ui-state=dialog"; + var path, $base; $.mobile.path = path = { uiStateKey: "&ui-state", @@ -1285,11 +1041,10 @@ // For embedded pages, remove the dialog hash key as in getFilePath(), // and remove otherwise the Data Url won't match the id of the embedded Page. result = u.hash - .split(dialogHashKey)[0] .replace(/^#/, "") .replace(/\?.*$/, ""); } else if (path.isSameDomain(u, this.documentBase)) { - result = u.hrefNoHash.replace(this.documentBase.domain, "").split(dialogHashKey)[0]; + result = u.hrefNoHash.replace(this.documentBase.domain, ""); } return window.decodeURIComponent(result); @@ -1330,7 +1085,7 @@ //remove the preceding hash, any query params, and dialog notations cleanHash: function (hash) { - return path.stripHash(hash.replace(/\?.*$/, "").replace(dialogHashKey, "")); + return path.stripHash(hash.replace(/\?.*$/, "")); }, isHashValid: function (hash) { @@ -1452,12 +1207,6 @@ return (hasHash ? "#" : "") + hash.replace(/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g, "\\$1"); }, - // return the substring of a filepath before the dialogHashKey, for making a server - // request - getFilePath: function (path) { - return path && path.split(dialogHashKey)[0]; - }, - // check if the specified url refers to the first page in the main // application document. isFirstPageUrl: function (url) { @@ -1641,7 +1390,7 @@ this.history = history; this.ignoreInitialHashChange = true; - $.mobile.window.bind({ + $(window).bind({ "popstate.history": $.proxy(this.popstate, this) }); }; @@ -1756,7 +1505,7 @@ // caught that was triggered by the hash setting above. if (!noEvents) { this.ignorePopState = true; - $.mobile.window.trigger(popstateEvent); + $(window).window.trigger(popstateEvent); } // record the history entry so that the information can be included @@ -1869,56 +1618,6 @@ $.mobile.navigate.history.add(loc.href, { hash: loc.hash }); })(jQuery); - - - (function ($, undefined) { - - // existing base tag? - var baseElement = document.querySelector('head base'); - - if (!baseElement) { - baseElement = $("", { href: $.mobile.path.documentBase.hrefNoHash }).prependTo($("head")); - baseElement = baseElement[0]; - } - // base element management, defined depending on dynamic base tag support - // TODO move to external widget - var base = { - - // define base element, for use in routing asset urls that are referenced - // in Ajax-requested markup - element: baseElement, - - linkSelector: "*[src], link[href], a[rel='external'], *[data-ajax='false'], a[target]", - - // set the generated BASE element's href to a new page's base path - set: function (href) { - - // we should do nothing if the user wants to manage their url base - // manually - if (!$.mobile.dynamicBaseEnabled) { - return; - } - - // we should use the base tag if we can manipulate it dynamically - if ($.support.dynamicBaseTag) { - base.element.setAttribute("href", - $.mobile.path.makeUrlAbsolute(href, $.mobile.path.documentBase)); - } - }, - - rewrite: function (href, page) { - }, - - // set the generated BASE element's href to a new page's base path - reset: function (/* href */) { - base.element.setAttribute("href", $.mobile.path.documentBase.hrefNoSearch); - } - }; - - $.mobile.base = base; - - })(jQuery); - (function ($, undefined) { var pageCache = {}; @@ -2037,45 +1736,6 @@ return (entry && entry.transition) || defaultTransition; }, - _handleDialog: function (changePageOptions, data) { - var to, active, activeContent = this.getActivePage(); - - // If current active page is not a dialog skip the dialog and continue - // in the same direction - // Note: The dialog widget is deprecated as of 1.4.0 and will be removed in 1.5.0. - // Thus, as of 1.5.0 activeContent.data( "mobile-dialog" ) will always evaluate to - // falsy, so the second condition in the if-statement below can be removed altogether. - if (activeContent && !activeContent.data("mobile-dialog")) { - // determine if we're heading forward or backward and continue - // accordingly past the current dialog - if (data.direction === "back") { - this.back(); - } else { - this.forward(); - } - - // prevent changePage call - return false; - } else { - // if the current active page is a dialog and we're navigating - // to a dialog use the dialog objected saved in the stack - to = data.pageUrl; - active = this._getActiveHistory(); - - // make sure to set the role, transition and reversal - // as most of this is lost by the domCache cleaning - $.extend(changePageOptions, { - role: active.role, - transition: this._transitionFromHistory( - data.direction, - changePageOptions.transition), - reverse: data.direction === "back" - }); - } - - return to; - }, - _handleNavigate: function (url, data) { //find first page via hash // TODO stripping the hash twice with handleUrl @@ -2099,20 +1759,6 @@ transition: transition }); - // TODO move to _handleDestination ? - // If this isn't the first page, if the current url is a dialog hash - // key, and the initial destination isn't equal to the current target - // page, use the special dialog handling - if (history.activeIndex > 0 && - to.indexOf($.mobile.dialogHashKey) > -1) { - - to = this._handleDialog(changePageOptions, data); - - if (to === false) { - return; - } - } - this._changeContent(this._handleDestination(to), changePageOptions); }, @@ -2120,10 +1766,6 @@ $.mobile.changePage(to, opts); }, - _getBase: function () { - return $.mobile.base; - }, - _enhance: function (content, role) { // TODO consider supporting a custom callback, and passing in // the settings which includes the role @@ -2143,24 +1785,26 @@ _find: function (absUrl) { // TODO consider supporting a custom callback - var fileUrl = this._createFileUrl(absUrl), + var fileUrl = absUrl, dataUrl = this._createDataUrl(absUrl), page, initialContent = this._getInitialContent(); // Check to see if the page already exists in the DOM. // NOTE do _not_ use the :jqmData pseudo selector because parenthesis // are a valid url char and it breaks on the first occurence - page = this.element - .children("[data-url='" + $.mobile.path.hashToSelector(dataUrl) + "']"); + page = this.element[0].querySelector("[data-url='" + $.mobile.path.hashToSelector(dataUrl) + "']"); // If we failed to find the page, check to see if the url is a // reference to an embedded page. If so, it may have been dynamically // injected by a developer, in which case it would be lacking a // data-url attribute and in need of enhancement. - if (page.length === 0 && dataUrl && !$.mobile.path.isPath(dataUrl)) { - page = this.element.children($.mobile.path.hashToSelector("#" + dataUrl)) - .attr("data-url", dataUrl) - .jqmData("url", dataUrl); + if (!page && dataUrl && !$.mobile.path.isPath(dataUrl)) { + page = this.element[0].querySelector($.mobile.path.hashToSelector("#" + dataUrl)); + + if (page) { + $(page).attr("data-url", dataUrl) + .data("url", dataUrl); + } } // If we failed to find a page in the DOM, check the URL to see if it @@ -2169,14 +1813,14 @@ // apps are pruning the first page from the DOM for various reasons. // We check for this case here because we don't want a first-page with // an id falling through to the non-existent embedded page error case. - if (page.length === 0 && + if (!page && $.mobile.path.isFirstPageUrl(fileUrl) && initialContent && initialContent.parent().length) { - page = $(initialContent); + page = initialContent; } - return page; + return page ? $(page) : $(); }, _parse: function (html, fileUrl) { @@ -2206,28 +1850,20 @@ _setLoadedTitle: function (page, html) { //page title regexp - if (!page.jqmData("title")) { + if (!page.data("title")) { var newPageTitle = html.match(/]*>([^<]*)/) && RegExp.$1; if (newPageTitle) { - page.jqmData("title", newPageTitle); + page.data("title", newPageTitle); } } }, - _isRewritableBaseTag: function () { - return $.mobile.dynamicBaseEnabled && !$.support.dynamicBaseTag; - }, - _createDataUrl: function (absoluteUrl) { return $.mobile.path.convertUrlToDataUrl(absoluteUrl); }, - _createFileUrl: function (absoluteUrl) { - return $.mobile.path.getFilePath(absoluteUrl); - }, - _triggerWithDeprecated: function (name, data, page) { var deprecatedEvent = $.Event("page" + name), newEvent = $.Event(this.widgetName + name); @@ -2258,7 +1894,7 @@ // could be abstracted out as a group _loadSuccess: function (absUrl, triggerData, settings, deferred) { - var fileUrl = this._createFileUrl(absUrl); + var fileUrl = absUrl; var currentSelf = this; return function (html, wasCached) { @@ -2272,11 +1908,6 @@ } } - //dont update the base tag if we are prefetching - if (settings.prefetch === undefined) { - currentSelf._getBase().set(fileUrl); - } - var contentElem = currentSelf._parse(html, fileUrl); var content = $(contentElem); @@ -2289,11 +1920,6 @@ triggerData.toPage = content; - // rewrite src and href attrs to use a base url if the base tag won't work - if (currentSelf._isRewritableBaseTag() && content) { - currentSelf._getBase().rewrite(fileUrl, content); - } - var dependencies = contentElem.getAttribute('data-require'); dependencies = dependencies ? dependencies.split(',') : null; @@ -2365,7 +1991,7 @@ // The absolute version of the URL minus any dialog/subcontent params. // In otherwords the real URL of the content to be loaded. - fileUrl = this._createFileUrl(absUrl); + fileUrl = absUrl; // The version of the Url actually stored in the data-url attribute of // the content. For embedded content, it is just the id of the page. For @@ -2385,10 +2011,6 @@ return deferred.promise(); } - // Reset base to the default document base - // TODO figure out why we doe this - this._getBase().reset(); - // If the content we are interested in is already in the DOM, // and the caller did not indicate that we should force a // reload of the file, we are done. Resolve the deferrred so that @@ -2397,12 +2019,6 @@ this._enhance(content, settings.role); deferred.resolve(absUrl, settings, content); - //if we are reloading the content make sure we update - // the base if its not a prefetch - if (!settings.prefetch) { - this._getBase().set(url); - } - return deferred.promise(); } @@ -2416,12 +2032,6 @@ options: settings }; - // Reset base to the default document base. - // only reset if we are not prefetching - if (settings.prefetch === undefined) { - this._getBase().reset(); - } - var successFn = this._loadSuccess(absUrl, triggerData, settings, deferred); var cachedResult = pageCache[absUrl.split('?')[0]]; if (cachedResult) { @@ -2572,7 +2182,7 @@ transition: function (toPage, triggerData, settings) { var fromPage, url, pageUrl, fileUrl, active, activeIsInitialPage, - historyDir, pageTitle, isDialog, + historyDir, pageTitle, alreadyThere, newPageTitle, params; @@ -2590,19 +2200,16 @@ // internal state and then trigger a transition to the page. fromPage = settings.fromPage; url = (settings.dataUrl && $.mobile.path.convertUrlToDataUrl(settings.dataUrl)) || - toPage.jqmData("url"); + toPage.data("url"); // The pageUrl var is usually the same as url, except when url is obscured // as a dialog url. pageUrl always contains the file path pageUrl = url; - fileUrl = $.mobile.path.getFilePath(url); + fileUrl = url; active = $.mobile.navigate.history.getActive(); activeIsInitialPage = $.mobile.navigate.history.activeIndex === 0; historyDir = 0; pageTitle = document.title; - isDialog = (settings.role === "dialog" || - toPage.jqmData("role") === "dialog") && - toPage.jqmData("dialog") !== true; // By default, we prevent changePage requests when the fromPage and toPage // are the same element, but folks that generate content @@ -2644,52 +2251,15 @@ // if so, do not add a new history entry and do not change the hash either alreadyThere = false; - // If we're displaying the page as a dialog, we don't want the url - // for the dialog content to be used in the hash. Instead, we want - // to append the dialogHashKey to the url of the current page. - if (isDialog && active) { - // on the initial page load active.url is undefined and in that case - // should be an empty string. Moving the undefined -> empty string back - // into urlHistory.addNew seemed imprudent given undefined better - // represents the url state - - // If we are at a place in history that once belonged to a dialog, reuse - // this state without adding to urlHistory and without modifying the - // hash. However, if a dialog is already displayed at this point, and - // we're about to display another dialog, then we must add another hash - // and history entry on top so that one may navigate back to the - // original dialog - if (active.url && - active.url.indexOf($.mobile.dialogHashKey) > -1 && - this.activePage && - !this.activePage.hasClass("ui-dialog") && - $.mobile.navigate.history.activeIndex > 0) { - - settings.changeHash = false; - alreadyThere = true; - } - - // Normally, we tack on a dialog hash key, but if this is the location - // of a stale dialog, we reuse the URL from the entry - url = (active.url || ""); - - // account for absolute urls instead of just relative urls use as hashes - if (!alreadyThere && url.indexOf("#") > -1) { - url += $.mobile.dialogHashKey; - } else { - url += "#" + $.mobile.dialogHashKey; - } - } - // if title element wasn't found, try the page div data attr too // If this is a deep-link or a reload ( active === undefined ) then just // use pageTitle - newPageTitle = (!active) ? pageTitle : toPage.jqmData("title"); + newPageTitle = (!active) ? pageTitle : toPage.data("title"); if (!!newPageTitle && pageTitle === document.title) { pageTitle = newPageTitle; } - if (!toPage.jqmData("title")) { - toPage.jqmData("title", pageTitle); + if (!toPage.data("title")) { + toPage.data("title", pageTitle); } //add page to history stack if it's not back or forward @@ -2861,12 +2431,12 @@ } //use ajax - reverse = $link.jqmData("direction") === "reverse" || + reverse = $link.data("direction") === "reverse" || // deprecated - remove by 1.0 - $link.jqmData("back"); + $link.data("back"); //this may need to be more specific as we use data-rel more - role = link.getAttribute("data-" + $.mobile.ns + "rel") || undefined; + role = link.getAttribute("data-rel") || undefined; $.mobile.changePage(href, { reverse: reverse, role: role, link: $link }); event.preventDefault(); @@ -2934,8 +2504,8 @@ var $this = $(this); // unless the data url is already set set it to the pathname - if (!$this[0].getAttribute("data-" + $.mobile.ns + "url")) { - $this.attr("data-" + $.mobile.ns + "url", $this.attr("id") || + if (!$this[0].getAttribute("data-url")) { + $this.attr("data-url", $this.attr("id") || path.convertUrlToDataUrl(theLocation.pathname + theLocation.search)); } }); @@ -2957,8 +2527,7 @@ // Remember, however, that the hash can also be a path! if (!($.mobile.path.isHashValid(location.hash) && ($(hashPage).is("[data-role='page']") || - $.mobile.path.isPath(hash) || - hash === $.mobile.dialogHashKey))) { + $.mobile.path.isPath(hash)))) { // make sure to set initial popstate state if it exists // so that navigation back to the initial page works properly