Commit graph

254 commits

Author SHA1 Message Date
Kin Blas
963a84cb18 IE7 returns an empty string for regexp submatches while all other browsers return undefined. Modified the parseUrl() function to normalize all non-matches to an empty string and replaced all strict checks for undefined to strict checks for an empty string. 2011-06-10 15:31:09 -07:00
Kin Blas
244385b9f9 Merge branch 'master' into path-fixes 2011-06-10 10:02:11 -07:00
Kin Blas
b7bcf93620 - We were missing a changepage notification in the case where we were transitioning to the same page.
- Added changepagefailed notification for the case where the load fails. Note we still need beforeloadpage/loadpage notifications.

- Misc fixes to stop the navigation unit tests from seemingly random failures. It seems that the hash resets in setup/teardown of the test modules sometimes interferes with the changePage() requests in the tests. Added code to the setup/teardown functions to wait for the reset to complete before moving on to the tests.
2011-06-10 10:00:25 -07:00
frietsch
d99d096ab7 Bugfix: ":jqmData(ajax='false')" might also match forms, which have neither of "src" or "href". In that case, thisUrl is undefined, and the following replace results in an error. 2011-06-09 08:21:21 -07:00
Kin Blas
3d6bd402a2 - Changes to get the navigation_helpers.js unit tests green.
- Modified isExternal so that it returns true/false to help with unit tests.
2011-06-08 17:20:01 -07:00
Kin Blas
8e1e77badf Get deep linking to internal pages working again. We can now also deep link to nested list sub-pages that are contained within internal pages. 2011-06-08 15:06:41 -07:00
Kin Blas
33b9ee8052 Changes to make sure the data-url are either an id, site relative path (for same domain), or absolute Url (for cross-domain Phone Gap). 2011-06-08 14:47:24 -07:00
Kin Blas
a99728d178 - Added addSearchParams() utility function.
- Removed unused path functions: setOrigin(), makeAbsolute(), and isQuery().
- Modified loadPage() so that it uses addSearchParams() instead of naively appending it to the URL.
- Switched the global "click" handler back to using the link @href attribute and manually converting it to an absolute URL. This was necessary because it turns out that the href property on a link is dynamically calculated at the time of access based on the *CURRENT* base tag setting. This means the same link can return a different href value if the the base tag is different each time you access it.
2011-06-06 15:58:21 -07:00
Kin Blas
19f1a775b9 Missed a couple of places I should've used hrefNoHash when I converted documentBase to an urlObject. 2011-06-04 10:51:41 -07:00
Kin Blas
f9dd767528 Switched form handler over to processing absolute urls. 2011-06-04 01:22:16 -07:00
Kin Blas
ba502f0aff Changes to switch the global link click handler over to processing absolute urls. 2011-06-04 00:26:25 -07:00
Kin Blas
b148ee424a Added isSameDomain() Utility function. 2011-06-03 13:57:25 -07:00
Kin Blas
b31825a1d7 Fixed issue 1767 - loadPage/changePage broken in trunk (latest build)
- Not sure how/why I added that extra absUrl, but its gone now.
2011-06-02 10:41:55 -07:00
Kin Blas
a2182dafa9 - Added a getClosestBaseUrl() utility function for calculating the correct base URL to use for a given element.
- We should be using makeUrlAbsolute() instead of makePathAbsolute() when calculating the documentBase.
- Removed bogus code in pathname calculatino in makeUrlAbsolute().
- Reworked calculation of search in makeUrlAbsolute() to prevent an undefined in the case where rel and abs urls have no search.
2011-06-01 17:15:18 -07:00
Kin Blas
3ca5dd854a - Added URL parsing and relative to absolute path and url utility methods.
- Switched the base tag management code over to using new utilities.
2011-06-01 11:59:13 -07:00
Kin Blas
ef9d55f4b6 Hopefully the last set of fixes for issue 1712 - $.mobile.changePage broken in latest
- The test case calls changePage() with a hash ("#b"). In our normal processing of clicks/form submits we strip it before calling. The old code did a strip in changePage() just in case, so I added it back in to fix the last bug.
2011-05-27 10:53:19 -07:00
Kin Blas
6fdb90df17 Fixed a typo in $.mobile.loadPage.defaults. The default for the data property should be undefined, not the string "undefined". 2011-05-26 17:04:27 -07:00
Kin Blas
7befe9087a The signature of changePage() has changed but folks need some time to transition to using the new signature. I added code to changePage() that maps any old signature calls to changePage() into a new call. This should fix issue 1712 ($.mobile.changePage broken in latest). This code should be removed before shipping 1.0. 2011-05-26 16:39:09 -07:00
Kin Blas
bee8549a18 Fixed a bad typo caught by @johnbender and @gseguin.
- Replaced an un-intentional semi-colon with a comma.
2011-05-25 15:13:44 -07:00
scottjehl
8929ac33b9 Removed the ajaxLinksEnabled and ajaxFormsEnabled settings. These were deprecated in a4 and scheduled for removal. Automated link and form ajax handling can still be globally disabled via the ajaxEnabled option. 2011-05-24 16:08:30 -04:00
Kin Blas
786ef25e0a Changes to get the navigation unit tests green again.
- Modified changePage() to set isPageTransitioning earlier.
- Modified pageSequence() to allow the current changepage callback stack to unwind before firing off the next function in the sequence.
2011-05-23 14:30:40 -07:00
John Bender
dc530ea751 page sequence helper added, nav tests in a somewhat better state. the event trigger spot, namespace, and general setup are all up for debate 2011-05-21 22:15:12 -07:00
Kin Blas
5ba2cc975e Inverted the logic around ignoreNextHashChange so that it actually matches the name of the variable.
Modified the hashchange callback so that it specifies a "none" transition, instead of a false boolean, for the case where the hash changed and there is nothing on the urlHistory stack.
2011-05-20 15:19:54 -07:00
Kin Blas
edc94fb6ec The dialog "pop" unit test was failing because the active variable in changePage() was being dereferenced. The unit test clears the urlHistory.stack array manually so we just need to make sure we don't dereference active if it doesn't exist. 2011-05-19 17:01:26 -07:00
Kin Blas
59afbda49b Added a pageContainer option to changePage and loadPage. 2011-05-18 18:06:15 -07:00
Kin Blas
3a047112a0 Removed debug try/catch block I accidentally checked in.
Made lots of whitespace changes to bring file up to jquery core style guidelines.
2011-05-18 16:38:04 -07:00
Kin Blas
cafb6acef9 Separated changePage() into 2 functions:
- loadPage() now loads all pages into the DOM.
	- changePage() only functions on pages that are in the DOM. If you call it with a URL instead of an element, it will call loadPage() which will then trigger a call to changePage() with the resulting page at a later time.
2011-05-18 15:58:15 -07:00
Kin Blas
b96310eedf - Externalize some of the nested functions in changePage().
- Modified changePage() so that it can take an options object. Updated all references throughout the framework.
- Split $.mobile.pageLoading() into 2 functions $.mobile.show/hidePageLoadingMsg(). Updated docs accordingly.
- Renamed $.mobile.defaultTransition to $.mobie.defaultPageTransition. Updated docs accordingly.
- Added $.mobile.defaultDialogTransition so that it isn't hard coded in the changePage/transitionPages and select code.
- Hand integrated jquery.mobile.navigation.js checkins from master: 4b4ee54a, e775f5e8, e597ccb3, 084bbbd8.
2011-05-16 16:02:26 -07:00
Kin Blas
52a666d71f Check $from before dereferencing it. 2011-04-26 16:36:31 -07:00
Kin Blas
19c06952fd Changes to allow 3rd party transitions. Developers can now register a custom transition by adding their transition handler to the $.mobile.transitionHandlers dictionary. The name of the custom transition is used as the key within the transtionsHandlers dictionary, and should be the same name used within the @data-transtion attribute.
The expected prototype for a transitionHandler is as follows:

function handler(name, reverse, $to, $from)

The name parameter is the name of the transition as specified by @data-transition attribute, reverse is a boolean that is false for a normal transition, and true for a reverse transition. The $to param is a jQuery collection containing the page that is being transitioned "to", and $from is an optional collection that tells us what page we are transitioning "from". Because $from is optional, handler developers should take care and check $from to make sure it is not undefined before attempting to dereference it.

In addition to registering custom transition by name, developers can specify a handler to use in the case where a transition name is specified and does not exist within the $.mobile.transitionHanlders dictionary. Within jQuery Mobile, the default handler for unknown transition types is the $.mobile.css3Transition() handler. This handler always assumes that the transition name is to be used as a CSS class to be placed on the $to and $from elements. To change the default handler, simply set $.mobile.defaultTransitionHandler to you function handler:

$.mobile.defaultTransitionHandler = myTransitionHandler;

The changes to make all this necessary are as follows:

- Created $.mobile.noneTransitionHandler which is the default transitionHandler for the framework that simply adds and removes the page active class on the $from and $to pages with no animations.

- Moved class based transition code into a new plugin jquery.mobile.transition.js file. This plugin, when present, overrides the noneTransitionHandler as the defaultTranstionHandler for the framework so that CSS3 animation transitions are available.

- Removed code related to the setting/removal of the ui-mobile-viewport-perspective class. The css3TransitionHandler plugin takes care of automatically placing a "viewport-<transition name>" class on the viewport (body) element. This allows any other transition to specify properties on the viewport that are necessary to accomplish the transition.

- changed the CSS class ui-mobile-viewport-perspective to viewport-flip to match code changes. This makes it more apparent that setting -webkit-perspective is only used with the flip transition.

- Updated js/index.php, Makefile and build.xml to include the new jquery.mobile.transition.js file.
2011-04-26 14:06:10 -07:00
Kin Blas
f7749504b8 Modified the vclick handler code in navgation.js so that it doesn't place the ui-btn-active class on any links meant for interactivity.
Removed the return false in the vclick handler of collapsible and replaced it with a preventDefault(). The only reason we were returning false was to stopPropagation() so that the vclick handler in navigation.js  didn't place a ui-btn-active on it.
2011-04-22 10:53:24 -07:00
Kin Blas
2d2e6d7741 Fix for issue 1461 - Tops of pages missing after dialog click in Safari and iPhone.
- Delayed the setting of focus till *AFTER* the scroll position is restored.
2011-04-21 15:31:21 -07:00
John Bender
dbd68472b4 whitespace and comment fixes 2011-04-18 22:35:13 -07:00
John Bender
8e42b52767 beginning to move to absolute hashes in all cases, still some more work to do 2011-04-18 21:46:53 -07:00
Kin Blas
c31ee33a0f Fix for 1407 - Bad scroll performance since A4 on iPhone 3G
- Modified vmouse code so that it uses $.data() instead of $().data() which is significantly faster.

- Modified the navigation and buttonMarkup code so they stop using live(). The vmouse code triggers several events during the touch events, which in turn causes the underlying event code to call $.closest() with the selector used during the live() call to figure out if the event should be handled. This turns out to be very expensive, so instead, we now just bind directly to the document, and walk the DOM manually to figure out if we should handle it. This is much faster since we are avoid triggering multiple nested function calls.
2011-04-18 16:13:50 -07:00
scottjehl
472cbb1778 moved calls into one. #cleaning 2011-04-17 14:24:47 -07:00
scottjehl
b649f17d9d one call to $.type 2011-04-17 12:11:03 -07:00
John Bender
2242684e59 added support for query params with dialog hash keys 2011-04-14 21:49:50 -07:00
John Bender
59bd1400ad check the url saved on the page element in the history stack to avoid checking agains the dialog nonsense url Fixes #1433 2011-04-14 21:49:50 -07:00
John Bender
aee4c631da removed stripQuery helper to reduce confusion and complexity as striping the query param from a url is much more complex than a hash as it was originally intended for 2011-04-12 01:14:05 -07:00
John Bender
a5add9a974 added handling for identical query param href/action on the same page 2011-04-12 00:58:24 -07:00
John Bender
8d3dc2cbc2 query param href/actions require absolute path prefixes when no relative path information is contained in the hash 2011-04-12 00:22:42 -07:00
John Bender
681f2a2073 handle relative query param links and forms Fixes #1160 2011-04-11 23:40:53 -07:00
John Bender
d6439d235f removed duplicate current page check in favor of fixing the off by one bug 2011-04-11 22:59:51 -07:00
John Bender
09b736a399 minor refactor from Scott's original suggestion on the issue 2011-04-10 22:59:06 -07:00
John Bender
c5ba91f0b9 navigation whitespace 2011-04-10 22:58:21 -07:00
scottjehl
3da5f05f75 wrapped the else if/else in an else to prevent an unnecessary dom walk until we have to make it. 2011-04-07 16:50:10 -04:00
scottjehl
97f5a9565f To ensure focus and scrollTo don't conflict (when possible), I set the focus order on page show to 1) previously clicked item if revisiting that page 2) page title 3) first focusable item in the page. Fixes #1342 2011-04-07 16:27:32 -04:00
scottjehl
b4088b9422 don't add the class to a disabled button. Fixes the checkbox test 2011-04-07 15:34:17 -04:00
scottjehl
cd0ad522ba moved the active state vclick to navigation 2011-04-07 15:28:52 -04:00
scottjehl
982b7d4b15 Make navigation feel more responsive through feedback, even though it actually uses the click event again for actual page changes.
- set active state on all button vclick events
- cancelled vclick on slider switch handles so it's not too sticky.
- removed addClass in navigation.js as the first change handles it there.
2011-04-07 14:41:45 -04:00
scottjehl
9a1b2dcb3c changed name of interal function loadComplete to pageChangeComplete 2011-04-07 11:33:04 -04:00
John Bender
05cc415f0c fix for current page links 2011-04-04 23:41:05 -07:00
Kin Blas
d43bbfc52a Switch back to hijacking links on the click event. We'll focus on improving "percieved" visual performance since launching a page load and transitions on vclick opens us up to too many problems:
- Third party click handlers never called.
	- Touch and click target mismatches due markup changes before the click events are generated. (What looks like a double click event)
2011-04-04 10:00:24 -07:00
John Bender
5c37beaa29 activeElement conditional for windows support Fixes #1294 2011-04-02 00:03:37 -07:00
Kin Blas
58369ec943 Added missing comma in var declaration. 2011-04-01 14:05:46 -07:00
Kin Blas
8cd0d2c679 I'm not sure how this happened, but the dataType fix for Issue 991 disappeared between commits 61005944 and 7503f62a.
Adding it back in to fix Issue 1349 - File urls still not working in alpha 4 as shipped.
2011-04-01 13:37:18 -07:00
John Bender
f2525b06de moved attribute call to jqmData call 2011-04-01 02:09:05 -07:00
John Bender
fad90ca99a navigation white space 2011-04-01 01:48:38 -07:00
Kin Blas
ae06612eca Clear our preventClickDefault and stopClickPropagation locals in the live click handler. 2011-03-31 14:39:11 -07:00
Kin Blas
3c69215ed6 Temporary workaround to keep 3rd party onclick handlers functioning. This stuff really needs to be done within the vmouse plugin. 2011-03-31 12:38:36 -07:00
scottjehl
07d20d9991 Merge remote branch 'origin/master' 2011-03-31 13:20:44 -04:00
scottjehl
ae6c2d569f fixed a duplicate check for using markup for page titles when title isn't present. 2011-03-31 13:20:19 -04:00
scottjehl
854885e93d move the pageTitle setter to different function 2011-03-31 12:56:48 -04:00
scottjehl
d8aac11a4f merging unit test addtions for page titles 2011-03-31 12:56:30 -04:00
scottjehl
ac7188e449 merging changes from page-titles branch in regards to a conflict with addNew function arguments 2011-03-31 12:48:46 -04:00
Kin Blas
16bea21a1c Corrected grammar for a comment in my previous checkin. 2011-03-31 09:33:05 -07:00
Kin Blas
0927ddfe3e Merge branch 'master' of https://github.com/jquery/jquery-mobile 2011-03-31 09:22:55 -07:00
Kin Blas
3ce228e3f2 On touch devices, 3rd party code that used href='#' links and onclick handlers weren't working because our live("vclick") link handler in jquery.mobile.navigation.js was calling preventDefault() on the vclick event.
For vclicks dispatched via touchend, calling preventDefault causes mouse clicks to be suppressed. This is why the 3rd party onclick handlers weren't getting triggered. For vclicks dispatched by a real mouse click this isn't a problem.

The fix basically removes the preventDefault() call from the live("vclick") handler and places it in a real live("click") handler. This allows the mouse event to get dispatched and trigger 3rd party click handlers, and still call preventDefault to prevent the link from being followed.
2011-03-31 09:19:05 -07:00
scottjehl
93ddf9d984 Syntax fix with data-ajax attr - also making sure [target] is included in the external link check, and that the pathname is removed properly in IE before prefixing. 2011-03-30 21:17:52 -04:00
Kin Blas
14fbe8b164 Fix for issue 1316 - URL is not properly formed in Firefox
- Checking in scottjehl's suggested selector for the non dynamicBaseTag support case.
2011-03-30 16:15:24 -07:00
John Bender
215aded824 fixed path detection for when linking from embedded pages to file paths Fixes #1305 2011-03-30 01:08:15 -07:00
John Bender
3a758f97fa navigation whitespace 2011-03-30 01:08:15 -07:00
Kin Blas
1f2c7fd537 Merge branch 'master' into fastclick
Resolved Conflicts:
	js/jquery.mobile.navbar.js
2011-03-29 09:03:05 -07:00
John Bender
97783bdbd1 added page tracking to history stack and handling for dialog to dialog transitions in hashchange 2011-03-28 00:41:33 -07:00
jblas@adobe.com
729cda075a Merge branch 'master' into fastclick
Resolved Conflicts:
	js/jquery.mobile.buttonMarkup.js
	js/jquery.mobile.event.js
	js/jquery.mobile.forms.checkboxradio.js
	js/jquery.mobile.forms.select.js
	js/jquery.mobile.listview.js
2011-03-27 21:00:22 -07:00
scottjehl
c50158c837 Just comments, code order, and whitespace, but also confirming: This Fixes #1171, where a page loading error prevents future page loads from working.
Confirmed on this page. Scroll down and click the error message, than another link to navigate elsewhere.
http://jquerymobile.com/test/#docs/pages/docs-pages.html
2011-03-27 12:27:50 -04:00
scottjehl
4a45d8d96b Added pageLoadErrorMessage option. Defaults to "Error Loading Page". Documentation included. Fixes #1258 and Fixes #363 2011-03-27 11:45:03 -04:00
scottjehl
9a4663073d removed default click simulator now that listviews no longer tricker clicks. 2011-03-26 21:29:24 -04:00
Kin Blas
004860c209 Merge branch 'master' of https://github.com/jquery/jquery-mobile 2011-03-25 23:47:32 -07:00
Kin Blas
90e167a4f6 Some "page" data calls were accidentally switched to jqmData(). The widget code actually uses data() so we need to make sure we match.
A couple of data() to jqmData() changes were missed.
2011-03-25 23:44:02 -07:00
John Bender
6089618431 readded fix to return jquery wrapped object from animation complete in both branches 2011-03-25 22:35:19 -07:00
John Bender
4fe0b29a0f Merge branch 'data-namespacing' 2011-03-25 18:46:00 -07:00
scottjehl
7503f62a10 changed our two new custom data helper names to jqmData() and :jqmData() 2011-03-25 17:50:40 -04:00
scottjehl
61005944d3 Added support for the target attribute on forms (such as target="_blank"). When set, the form handler simply allows the native handling to apply. Unlike anchors however, the rel attribute is not allowed on forms. If you're purely looking to submit a single form without ajax, you can use the data-ajax="false" attribute as well. Fixes #952 and docs updates are included 2011-03-24 00:59:42 -04:00
scottjehl
39476d151a added support for data-transition and data-direction on form elements. Fixes #1275 2011-03-24 00:45:15 -04:00
scottjehl
7b0fa3b48c If action attribute is undefined, default to path.get(). Fixes #766 2011-03-24 00:36:24 -04:00
scottjehl
acc771b046 make sure type is not a 0-length string, as it would be if left undefined in the markup. Fixes #766 2011-03-24 00:33:59 -04:00
scottjehl
e6095a357a if type attr is used from method attr, make sure it's lowercase first. Fixes #1280. Still needs a unit test but I'll need to think about how best to do it. 2011-03-24 00:30:26 -04:00
Kin Blas
db89e1f24d Switch find/filter selector calls over to using the new :jqdata() pseudo selector. 2011-03-22 13:31:17 -07:00
Kin Blas
08fa6a2ac8 Got rid of the if/else isExternal check because we need to make sure we check cross domain URLs against isRelExternal. 2011-03-21 10:32:24 -07:00
Kin Blas
2aab30b7a6 Initial changes to allow for cross-domain URLs to be loaded as pages within Phone Gap's web view. I still need to figure out how we're going to set the application URL hash for these cross-domain URLs, and allow for reloading the URL via deep links. 2011-03-18 17:53:06 -07:00
Kin Blas
7f8438e966 Merge branch 'master' into fastclick
Conflicts resolved:
	js/jquery.mobile.forms.select.js
2011-03-18 09:15:01 -07:00
John Bender
63e8f6bfcb resolved merge conflicts and fixed 2 tests 2011-03-15 23:57:17 -07:00
scottjehl
09ffa3aa5f Clarified data-ajax=false on forms. Fixes #1134 2011-03-15 18:49:39 -04:00
adammessinger
2bfdd02a51 Fix for issue #900: buttons with rel attribute set to external don't show active state 2011-03-15 11:30:19 +08:00
Phil Barnes
b740854ae7 Pass null event param for page _trigger beforehide and beforeshow -- Fixes issue #700 2011-03-15 07:41:32 +08:00
scottjehl
ddcacc1482 changed from ternary to || 2011-03-14 19:34:16 -04:00
scottjehl
330f866143 Merge branch 'bug_733' of https://github.com/eddiemonge/jquery-mobile into eddiemonge-bug_733 2011-03-14 19:31:15 -04:00
Kin Blas
dbcf4d0373 Merge branch 'master' into fastclick 2011-03-14 11:38:00 -07:00