You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by pp...@apache.org on 2013/09/10 20:04:28 UTC
[23/51] [partial] [cordova-tizen] Tizen SDK 2.2 support mores samples
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.buttonMarkup.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.buttonMarkup.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.buttonMarkup.js
new file mode 100644
index 0000000..38726a6
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.buttonMarkup.js
@@ -0,0 +1,330 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+//>>description: Applies button styling to links
+//>>label: Buttons: Link-based
+//>>group: Forms
+//>>css.structure: ../css/structure/jquery.mobile.button.css
+//>>css.theme: ../css/themes/default/jquery.mobile.theme.css
+
+define( [ "jquery", "./jquery.mobile.core", "./jquery.mobile.vmouse" ], function( jQuery ) {
+//>>excludeEnd("jqmBuildExclude");
+(function( $, undefined ) {
+
+$.fn.buttonMarkup = function( options ) {
+ var $workingSet = this,
+ prefix = "data-" + $.mobile.ns,
+ mapToDataAttr = function( key, value ) {
+ e.setAttribute( "data-" + $.mobile.ns + key, value );
+ el.jqmData( key, value );
+ };
+
+ // Enforce options to be of type string
+ options = ( options && ( $.type( options ) === "object" ) )? options : {};
+ for ( var i = 0; i < $workingSet.length; i++ ) {
+ var el = $workingSet.eq( i ),
+ e = el[ 0 ],
+ o = $.extend( {}, $.fn.buttonMarkup.defaults, {
+ icon: options.icon !== undefined ? options.icon : $.mobile.getAttrFixed( e, prefix + "icon" ),
+ iconpos: options.iconpos !== undefined ? options.iconpos : $.mobile.getAttrFixed( e, prefix + "iconpos" ),
+ theme: options.theme !== undefined ? options.theme : $.mobile.getAttrFixed( e, prefix + "theme" ) || $.mobile.getInheritedTheme( el, $.fn.buttonMarkup.defaults["theme"] ),
+ inline: options.inline !== undefined ? options.inline : $.mobile.getAttrFixed( e, prefix + "inline" ),
+ shadow: options.shadow !== undefined ? options.shadow : $.mobile.getAttrFixed( e, prefix + "shadow" ),
+ corners: options.corners !== undefined ? options.corners : $.mobile.getAttrFixed( e, prefix + "corners" ),
+ iconshadow: options.iconshadow !== undefined ? options.iconshadow : $.mobile.getAttrFixed( e, prefix + "iconshadow" ),
+ mini: options.mini !== undefined ? options.mini : $.mobile.getAttrFixed( e, prefix + "mini" )
+ }, options ),
+
+ // Classes Defined
+ innerClass = "ui-btn-inner",
+ textClass = "ui-btn-text",
+ buttonClass, iconClass,
+ // Button inner markup
+ buttonInner,
+ buttonText,
+ buttonIcon,
+ buttonElements;
+
+ for ( key in o ) {
+ e.setAttribute ( prefix + key, o[ key ])
+ }
+
+ if ( $.mobile.getAttrFixed( e, prefix + "rel" ) === "popup" && el.attr( "href" ) ) {
+ e.setAttribute( "aria-haspopup", true );
+ e.setAttribute( "aria-owns", e.getAttribute( "href" ) );
+ }
+
+ if ( e.tagName !== "LI" && e.tagName !== "LABEL" ) {
+ e.setAttribute( "role", "button" );
+ e.setAttribute( "tabindex", "0" );
+ }
+
+ // Check if this element is already enhanced
+ buttonElements = $.data( ( ( e.tagName === "INPUT" || e.tagName === "BUTTON" ) ? e.parentNode : e ), "buttonElements" );
+
+ if ( buttonElements ) {
+ e = buttonElements.outer;
+ el = $( e );
+ buttonInner = buttonElements.inner;
+ buttonText = buttonElements.text;
+ // We will recreate this icon below
+ $( buttonElements.icon ).remove();
+ buttonElements.icon = null;
+ }
+ else {
+ buttonInner = document.createElement( o.wrapperEls );
+ buttonText = document.createElement( o.wrapperEls );
+ }
+ buttonIcon = o.icon ? document.createElement( "span" ) : null;
+
+ if ( attachEvents && !buttonElements ) {
+ attachEvents();
+ }
+
+ // if not, try to find closest theme container
+ if ( !o.theme ) {
+ o.theme = $.mobile.getInheritedTheme( el, "c" );
+ }
+
+ buttonClass = "ui-btn ui-btn-up-" + o.theme;
+ buttonClass += o.shadow ? " ui-shadow" : "";
+ buttonClass += o.corners ? " ui-btn-corner-all" : "";
+
+ // To distinguish real buttons
+ if( $.mobile.getAttrFixed( e, prefix + "role" ) == "button" || e.tagName == "BUTTON" || e.tagName == "DIV" ){
+ buttonClass += " ui-btn-box-" + o.theme;
+ }
+
+ /* TIZEN style markup */
+ var buttonStyle = $.mobile.getAttrFixed( e, prefix + "style" );
+
+ if ( buttonStyle == "circle" && !($(el).text().length > 0) ) {
+ /* style : no text, Icon only */
+ buttonClass += " ui-btn-corner-circle";
+ buttonClass += " ui-btn-icon_only";
+ } else if ( buttonStyle == "nobg" ) {
+ /* style : no text, Icon only, no bg */
+ buttonClass += " ui-btn-icon-nobg";
+ buttonClass += " ui-btn-icon_only";
+ } else if ( buttonStyle == "edit" ) {
+ buttonClass += " ui-btn-edit";
+ } else if ( buttonStyle == "round" || ( buttonStyle == "circle" && $(el).text().length > 0 ) ) {
+ buttonClass += " ui-btn-round";
+ }
+ if ( o.icon ) {
+ if ( $(el).text().length > 0 ) {
+
+ switch ( o.iconpos ) {
+ case "right" :
+ case "left" :
+ case "top" :
+ case "bottom" :
+ textClass += " ui-btn-text-padding-" + o.iconpos;
+ break;
+ default:
+ textClass += " ui-btn-text-padding-left";
+ break;
+ }
+
+ innerClass += " ui-btn-hastxt";
+ } else {
+ if ( buttonStyle == "circle" ) {
+ /* style : no text, Icon only */
+ innerClass += " ui-btn-corner-circle";
+ } else if ( buttonStyle == "nobg" ) {
+ /* style : no text, Icon only, no bg */
+ innerClass += " ui-btn-icon-nobg";
+ }
+
+ buttonClass += " ui-btn-icon_only";
+ innerClass += " ui-btn-icon-only";
+
+ if ( e.tagName !== "LABEL" ) {
+ $( el ).text( o.icon.replace( "naviframe-", "" ) );
+ }
+ }
+ } else {
+ if ( $(el).text().length > 0 ) {
+ innerClass += " ui-btn-hastxt";
+ } else if ( buttonStyle == "circle" ){
+ buttonClass += " ui-btn-round";
+ }
+ }
+ if ( o.mini !== undefined ) {
+ // Used to control styling in headers/footers, where buttons default to `mini` style.
+ buttonClass += o.mini === true ? " ui-mini" : " ui-fullsize";
+ }
+
+ if ( o.inline !== undefined ) {
+ // Used to control styling in headers/footers, where buttons default to `inline` style.
+ buttonClass += o.inline === true ? " ui-btn-inline" : " ui-btn-block";
+ }
+
+ if ( o.icon ) {
+ o.icon = "ui-icon-" + o.icon;
+ o.iconpos = o.iconpos || "left";
+
+ iconClass = "ui-icon " + o.icon;
+
+ if ( o.iconshadow ) {
+ iconClass += " ui-icon-shadow";
+ }
+ }
+
+ if ( o.iconpos ) {
+ buttonClass += " ui-btn-icon-" + o.iconpos;
+
+ if ( o.iconpos === "notext" && !el.attr( "title" ) ) {
+ el.attr( "title", el.getEncodedText() );
+ }
+ }
+
+ innerClass += o.corners ? " ui-btn-corner-all" : "";
+
+ if ( o.iconpos && o.iconpos === "notext" && !el.attr( "title" ) ) {
+ el.attr( "title", el.getEncodedText() );
+ }
+
+ if ( buttonElements ) {
+ el.removeClass( buttonElements.bcls || "" );
+ }
+ el.removeClass( "ui-link" ).addClass( buttonClass );
+
+ buttonInner.className = innerClass;
+
+ buttonText.className = textClass;
+ if ( !buttonElements ) {
+ buttonInner.appendChild( buttonText );
+ }
+ if ( buttonIcon ) {
+ buttonIcon.className = iconClass;
+ if ( !( buttonElements && buttonElements.icon ) ) {
+ buttonIcon.innerHTML = " ";
+ buttonInner.appendChild( buttonIcon );
+ }
+ }
+
+ while ( e.firstChild && !buttonElements ) {
+ buttonText.appendChild( e.firstChild );
+ }
+
+ if ( !buttonElements ) {
+ e.appendChild( buttonInner );
+ }
+
+ // Assign a structure containing the elements of this button to the elements of this button. This
+ // will allow us to recognize this as an already-enhanced button in future calls to buttonMarkup().
+ buttonElements = {
+ bcls : buttonClass,
+ outer : e,
+ inner : buttonInner,
+ text : buttonText,
+ icon : buttonIcon
+ };
+
+ $.data( e, 'buttonElements', buttonElements );
+ $.data( buttonInner, 'buttonElements', buttonElements );
+ $.data( buttonText, 'buttonElements', buttonElements );
+ if ( buttonIcon ) {
+ $.data( buttonIcon, 'buttonElements', buttonElements );
+ }
+ }
+
+ return this;
+};
+
+$.fn.buttonMarkup.defaults = {
+ theme: "c",
+ corners: true,
+ shadow: true,
+ iconshadow: true,
+ wrapperEls: "span"
+};
+
+function closestEnabledButton( element ) {
+ var cname;
+
+ while ( element ) {
+ // Note that we check for typeof className below because the element we
+ // handed could be in an SVG DOM where className on SVG elements is defined to
+ // be of a different type (SVGAnimatedString). We only operate on HTML DOM
+ // elements, so we look for plain "string".
+ cname = ( typeof element.className === 'string' ) && ( element.className + ' ' );
+ if ( cname && cname.indexOf( "ui-btn " ) > -1 && cname.indexOf( "ui-disabled " ) < 0 ) {
+ break;
+ }
+
+ element = element.parentNode;
+ }
+
+ return element;
+}
+
+var attachEvents = function() {
+ var hoverDelay = $.mobile.buttonMarkup.hoverDelay, hov, foc;
+
+ $.mobile.$document.bind( {
+ "vmousedown vmousecancel vmouseup vmouseover vmouseout focus blur scrollstart touchend touchcancel": function( event ) {
+ var theme,
+ $btn = $( closestEnabledButton( event.target ) ),
+ isTouchEvent = event.originalEvent && /^touch/.test( event.originalEvent.type ),
+ evt = event.type;
+
+ if ( $btn.length ) {
+ theme = $btn.attr( "data-" + $.mobile.ns + "theme" );
+
+ if ( evt === "vmousedown" ) {
+ if ( isTouchEvent ) {
+ // Use a short delay to determine if the user is scrolling before highlighting
+ hov = setTimeout( function() {
+ $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme );
+ }, hoverDelay );
+ } else {
+ $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme );
+ }
+ } else if ( evt === "vmousecancel" || evt === "vmouseup" || evt === "touchend" || evt === "touchcancel" ) {
+ $btn.removeClass( "ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme );
+ } else if ( evt === "vmouseover" || evt === "focus" ) {
+ if ( isTouchEvent ) {
+ // Use a short delay to determine if the user is scrolling before highlighting
+ foc = setTimeout( function() {
+ $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme );
+ }, hoverDelay );
+ } else {
+ $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme );
+ }
+ } else if ( evt === "vmouseout" || evt === "blur" || evt === "scrollstart" ) {
+ $btn.removeClass( "ui-btn-hover-" + theme + " ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme );
+ if ( hov ) {
+ clearTimeout( hov );
+ }
+ if ( foc ) {
+ clearTimeout( foc );
+ }
+ }
+ }
+ },
+ "focusin focus": function( event ) {
+ $( closestEnabledButton( event.target ) ).addClass( $.mobile.focusClass );
+ },
+ "focusout blur": function( event ) {
+ $( closestEnabledButton( event.target ) ).removeClass( $.mobile.focusClass );
+ }
+ });
+
+ attachEvents = null;
+};
+
+//links in bars, or those with data-role become buttons
+//auto self-init widgets
+$.mobile.$document.bind( "pagecreate create", function( e ) {
+
+ $( ":jqmData(role='button'), .ui-bar > a, .ui-header > a, .ui-footer > a, .ui-bar > :jqmData(role='controlgroup') > a", e.target )
+ .jqmEnhanceable()
+ .not( "button, input, .ui-btn, :jqmData(role='none'), :jqmData(role='nojs')" )
+ .buttonMarkup();
+});
+
+})( jQuery );
+
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+});
+//>>excludeEnd("jqmBuildExclude");
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.controlGroup.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.controlGroup.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.controlGroup.js
new file mode 100644
index 0000000..f1c5ba9
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.controlGroup.js
@@ -0,0 +1,70 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+//>>description: Visually groups sets of buttons, checks, radios, etc.
+//>>label: Controlgroups
+//>>group: Forms
+//>>css.structure: ../css/structure/jquery.mobile.controlgroup.css
+//>>css.theme: ../css/themes/default/jquery.mobile.theme.css
+
+define( [ "jquery", "./jquery.mobile.buttonMarkup" ], function( jQuery ) {
+//>>excludeEnd("jqmBuildExclude");
+(function( $, undefined ) {
+
+$.fn.controlgroup = function( options ) {
+ function flipClasses( els, flCorners ) {
+ els.removeClass( "ui-btn-corner-all ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-controlgroup-last ui-shadow" )
+ .eq( 0 ).addClass( flCorners[ 0 ] )
+ .end()
+ .last().addClass( flCorners[ 1 ] ).addClass( "ui-controlgroup-last" );
+ }
+
+ return this.each(function() {
+ var $el = $( this ),
+ o = $.extend({
+ direction: $.mobile.getAttrFixed( $el[0], "data-"+ $.mobile.ns + "type" ) || "vertical",
+ shadow: false,
+ excludeInvisible: true,
+ mini: $.mobile.getAttrFixed( $el[0], "data-"+ $.mobile.ns + "mini" )
+ }, options ),
+ grouplegend = $el.children( "legend" ),
+ groupheading = $el.children( ".ui-controlgroup-label" ),
+ groupcontrols = $el.children( ".ui-controlgroup-controls" ),
+ flCorners = o.direction === "horizontal" ? [ "ui-corner-left", "ui-corner-right" ] : [ "ui-corner-top", "ui-corner-bottom" ],
+ type = $el.find( "input" ).first().attr( "type" );
+
+ // First unwrap the controls if the controlgroup was already enhanced
+ if ( groupcontrols.length ) {
+ groupcontrols.contents().unwrap();
+ }
+ $el.wrapInner( "<div class='ui-controlgroup-controls'></div>" );
+
+ if ( grouplegend.length ) {
+ // Replace legend with more stylable replacement div
+ $( "<div role='heading' class='ui-controlgroup-label'>" + grouplegend.html() + "</div>" ).insertBefore( $el.children( 0 ) );
+ grouplegend.remove();
+ } else if ( groupheading.length ) {
+ // Just move the heading if the controlgroup was already enhanced
+ $el.prepend( groupheading );
+ }
+
+ $el.addClass( "ui-corner-all ui-controlgroup ui-controlgroup-" + o.direction );
+
+ flipClasses( $el.find( ".ui-btn" + ( o.excludeInvisible ? ":visible" : "" ) ).not( '.ui-slider-handle' ), flCorners );
+ flipClasses( $el.find( ".ui-btn-inner" ), flCorners );
+
+ if ( o.shadow ) {
+ $el.addClass( "ui-shadow" );
+ }
+
+ if ( o.mini ) {
+ $el.addClass( "ui-mini" );
+ }
+
+ });
+};
+
+// The pagecreate handler for controlgroup is in jquery.mobile.init because of the soft-dependency on the wrapped widgets
+
+})(jQuery);
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+});
+//>>excludeEnd("jqmBuildExclude");
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.core.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.core.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.core.js
new file mode 100644
index 0000000..92310f4
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.core.js
@@ -0,0 +1,390 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+//>>description: Base file for jQuery Mobile
+//>>label: Core
+//>>group: Core
+//>>css.structure: ../css/structure/jquery.mobile.core.css
+//>>css.theme: ../css/themes/default/jquery.mobile.theme.css
+
+define( [ "jquery" ], function( jQuery, __version__ ) {
+//>>excludeEnd("jqmBuildExclude");
+(function( $, window, undefined ) {
+
+ var nsNormalizeDict = {};
+
+ // jQuery.mobile configurable options
+ $.mobile = $.extend( {}, {
+
+ // Version of the jQuery Mobile Framework
+ version: __version__,
+
+ // Namespace used framework-wide for data-attrs. Default is no namespace
+ ns: "",
+
+ // Define the url parameter used for referencing widget-generated sub-pages.
+ // Translates to to example.html&ui-page=subpageIdentifier
+ // hash segment before &ui-page= is used to make Ajax request
+ subPageUrlKey: "ui-page",
+
+ // Class assigned to page currently in view, and during transitions
+ activePageClass: "ui-page-active",
+
+ // Class used for "active" button state, from CSS framework
+ activeBtnClass: "ui-btn-active",
+
+ // Class used for "focus" form element state, from CSS framework
+ focusClass: "ui-focus",
+
+ // Automatically handle clicks and form submissions through Ajax, when same-domain
+ ajaxEnabled: true,
+
+ // Automatically load and show pages based on location.hash
+ hashListeningEnabled: true,
+
+ // disable to prevent jquery from bothering with links
+ linkBindingEnabled: true,
+
+ // Set default page transition - 'none' for no transitions
+ defaultPageTransition: "fade",
+
+ // Set maximum window width for transitions to apply - 'false' for no limit
+ maxTransitionWidth: false,
+
+ // Minimum scroll distance that will be remembered when returning to a page
+ minScrollBack: 250,
+
+ // DEPRECATED: the following property is no longer in use, but defined until 2.0 to prevent conflicts
+ touchOverflowEnabled: false,
+
+ // Set default dialog transition - 'none' for no transitions
+ defaultDialogTransition: "pop",
+
+ // Error response message - appears when an Ajax page request fails
+ pageLoadErrorMessage: "Error Loading Page",
+
+ // For error messages, which theme does the box uses?
+ pageLoadErrorMessageTheme: "e",
+
+ // replace calls to window.history.back with phonegaps navigation helper
+ // where it is provided on the window object
+ phonegapNavigationEnabled: false,
+
+ //automatically initialize the DOM when it's ready
+ autoInitializePage: true,
+
+ pushStateEnabled: true,
+
+ // allows users to opt in to ignoring content by marking a parent element as
+ // data-ignored
+ ignoreContentEnabled: false,
+
+ // turn of binding to the native orientationchange due to android orientation behavior
+ orientationChangeEnabled: true,
+
+ buttonMarkup: {
+ hoverDelay: 200
+ },
+
+ // define the window and the document objects
+ $window: $( window ),
+ $document: $( document ),
+
+ getAttrFixed : function( e, key ) {
+ var value = e.getAttribute( key );
+
+ return value === "true" ? true :
+ value === "false" ? false :
+ value === null ? undefined : value;
+ },
+
+ // TODO might be useful upstream in jquery itself ?
+ keyCode: {
+ ALT: 18,
+ BACKSPACE: 8,
+ CAPS_LOCK: 20,
+ COMMA: 188,
+ COMMAND: 91,
+ COMMAND_LEFT: 91, // COMMAND
+ COMMAND_RIGHT: 93,
+ CONTROL: 17,
+ DELETE: 46,
+ DOWN: 40,
+ END: 35,
+ ENTER: 13,
+ ESCAPE: 27,
+ HOME: 36,
+ INSERT: 45,
+ LEFT: 37,
+ MENU: 93, // COMMAND_RIGHT
+ NUMPAD_ADD: 107,
+ NUMPAD_DECIMAL: 110,
+ NUMPAD_DIVIDE: 111,
+ NUMPAD_ENTER: 108,
+ NUMPAD_MULTIPLY: 106,
+ NUMPAD_SUBTRACT: 109,
+ PAGE_DOWN: 34,
+ PAGE_UP: 33,
+ PERIOD: 190,
+ RIGHT: 39,
+ SHIFT: 16,
+ SPACE: 32,
+ TAB: 9,
+ UP: 38,
+ WINDOWS: 91 // COMMAND
+ },
+
+ // Scroll page vertically: scroll to 0 to hide iOS address bar, or pass a Y value
+ silentScroll: function( ypos ) {
+ if ( $.type( ypos ) !== "number" ) {
+ ypos = $.mobile.defaultHomeScroll;
+ }
+
+ // prevent scrollstart and scrollstop events
+ $.event.special.scrollstart.enabled = false;
+
+ setTimeout( function() {
+ window.scrollTo( 0, ypos );
+ $.mobile.$document.trigger( "silentscroll", { x: 0, y: ypos });
+ }, 20 );
+
+ setTimeout( function() {
+ $.event.special.scrollstart.enabled = true;
+ }, 150 );
+ },
+
+ // 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 ) {
+ if ( !prop ) {
+ return;
+ }
+
+ return nsNormalizeDict[ prop ] || ( nsNormalizeDict[ prop ] = $.camelCase( $.mobile.ns + prop ) );
+ },
+
+ // Find the closest parent with a theme class on it. Note that
+ // we are not using $.fn.closest() on purpose here because this
+ // method gets called quite a bit and we need it to be as fast
+ // as possible.
+ getInheritedTheme: function( el, defaultTheme ) {
+ var e = el[ 0 ],
+ ltr = "",
+ re = /ui-(bar|body|overlay)-([a-z])\b/,
+ c, m;
+
+ while ( e ) {
+ c = e.className || "";
+ if ( c && ( m = re.exec( c ) ) && ( ltr = m[ 2 ] ) ) {
+ // We found a parent with a theme class
+ // on it so bail from this loop.
+ break;
+ }
+
+ e = e.parentNode;
+ }
+
+ // Return the theme letter we found, if none, return the
+ // specified default.
+
+ return ltr || defaultTheme || "a";
+ },
+
+ // TODO the following $ and $.fn extensions can/probably should be moved into jquery.mobile.core.helpers
+ //
+ // Find the closest javascript page element to gather settings data jsperf test
+ // http://jsperf.com/single-complex-selector-vs-many-complex-selectors/edit
+ // possibly naive, but it shows that the parsing overhead for *just* the page selector vs
+ // the page and dialog selector is negligable. This could probably be speed up by
+ // doing a similar parent node traversal to the one found in the inherited theme code above
+ closestPageData: function( $target ) {
+ return $target
+ .closest( ':jqmData(role="page"), :jqmData(role="dialog")' )
+ .data( "page" );
+ },
+
+ enhanceable: function( $set ) {
+ return this.haveParents( $set, "enhance" );
+ },
+
+ hijackable: function( $set ) {
+ return this.haveParents( $set, "ajax" );
+ },
+
+ haveParents: function( $set, attr ) {
+ if ( !$.mobile.ignoreContentEnabled ) {
+ return $set;
+ }
+
+ var count = $set.length,
+ $newSet = $(),
+ e, $element, excluded;
+
+ for ( var i = 0; i < count; i++ ) {
+ $element = $set.eq( i );
+ excluded = false;
+ e = $set[ i ];
+
+ while ( e ) {
+ var c = e.getAttribute ? e.getAttribute( "data-" + $.mobile.ns + attr ) : "";
+
+ if ( c === "false" ) {
+ excluded = true;
+ break;
+ }
+
+ e = e.parentNode;
+ }
+
+ if ( !excluded ) {
+ $newSet = $newSet.add( $element );
+ }
+ }
+
+ return $newSet;
+ },
+
+ getScreenHeight: function() {
+ // Native innerHeight returns more accurate value for this across platforms,
+ // jQuery version is here as a normalized fallback for platforms like Symbian
+ return window.innerHeight || $.mobile.$window.height();
+ }
+ }, $.mobile );
+
+ // 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 ) );
+ };
+
+ $.fn.removeWithDependents = function() {
+ $.removeWithDependents( this );
+ };
+
+ $.removeWithDependents = function( elem ) {
+ var $elem = $( elem );
+
+ ( $elem.jqmData( 'dependents' ) || $() ).remove();
+ $elem.remove();
+ };
+
+ $.fn.addDependents = function( newDependents ) {
+ $.addDependents( $( this ), newDependents );
+ };
+
+ $.addDependents = function( elem, newDependents ) {
+ var dependents = $( elem ).jqmData( 'dependents' ) || $();
+
+ $( elem ).jqmData( 'dependents', $.merge( dependents, newDependents ) );
+ };
+
+ // note that this helper doesn't attempt to handle the callback
+ // or setting of an html elements text, its only purpose is
+ // to return the html encoded version of the text in all cases. (thus the name)
+ $.fn.getEncodedText = function() {
+ return $( "<div/>" ).text( $( this ).text() ).html();
+ };
+
+ // fluent helper function for the mobile namespaced equivalent
+ $.fn.jqmEnhanceable = function() {
+ return $.mobile.enhanceable( this );
+ };
+
+ $.fn.jqmHijackable = function() {
+ return $.mobile.hijackable( this );
+ };
+
+ // Monkey-patching Sizzle to filter the :jqmData selector
+ var oldFind = $.find,
+ jqmDataRE = /:jqmData\(([^)]*)\)/g;
+
+ $.find = function( selector, context, ret, extra ) {
+ selector = selector.replace( jqmDataRE, "[data-" + ( $.mobile.ns || "" ) + "$1]" );
+
+ return oldFind.call( this, selector, context, ret, extra );
+ };
+
+ $.extend( $.find, oldFind );
+
+ $.find.matches = function( expr, set ) {
+ return $.find( expr, null, null, set );
+ };
+
+ $.find.matchesSelector = function( node, expr ) {
+ return $.find( expr, null, null, [ node ] ).length > 0;
+ };
+
+ $.extend({
+ creatorDict: {},
+
+ delegateSelfInitWithSingleSelector: function( target, useKeepNative ) {
+ if ( typeof target !== 'function' ) {
+ return false;
+ }
+ var selector = target.prototype.options.initSelector;
+ var selectorRE = /:jqmData\(role='[A-z\-]+'\)$/;
+ if ( selectorRE.test(selector) ) {
+ var firstIdx = selector.indexOf( "'" ) + 1;
+ var lastIdx = selector.lastIndexOf( "'" );
+ var key = selector.substring( firstIdx, lastIdx );
+ if ( !$.creatorDict.hasOwnProperty( key ) ) {
+ $.creatorDict[key] = {};
+ $.creatorDict[key].target = target;
+ if ( useKeepNative === true ) {
+ $.creatorDict[key].useKeepNative = useKeepNative;
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+ });
+
+ //auto self-init widgets
+ $( document ).bind( "pagecreate create", function( e ) {
+ var selector = "*[data-" + $.mobile.ns + "role]";
+ $( selector, e.target ).each( function () {
+ var dataRoleValue = this.getAttribute( "data-role" ),
+ matchedObj = $.creatorDict[dataRoleValue];
+ if ( matchedObj ) {
+ matchedObj.target.prototype.enhance( this, matchedObj.useKeepNative );
+ }
+ });
+ });
+})( jQuery, this );
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+});
+//>>excludeEnd("jqmBuildExclude");
+
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.define.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.define.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.define.js
new file mode 100644
index 0000000..973b05b
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.define.js
@@ -0,0 +1,5 @@
+// creates the define method on window, only used where async loading
+// is not desired in the docs and experiments
+window.define = function() {
+ Array.prototype.slice.call( arguments ).pop()( window.jQuery );
+};
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.degradeInputs.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.degradeInputs.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.degradeInputs.js
new file mode 100644
index 0000000..00f277b
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.degradeInputs.js
@@ -0,0 +1,61 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+//>>description: Changes input type to another after custom enhancements are made (ex. range > numberic).
+//>>label: Degrade Inputs
+//>>group: Utilities
+
+
+define( [ "jquery", "./widgets/page" ], function( jQuery ) {
+//>>excludeEnd("jqmBuildExclude");
+(function( $, undefined ) {
+
+$.mobile.page.prototype.options.degradeInputs = {
+ color: false,
+ date: false,
+ datetime: false,
+ "datetime-local": false,
+ email: false,
+ month: false,
+ number: false,
+ range: "number",
+ search: "text",
+ tel: false,
+ time: false,
+ url: false,
+ week: false
+};
+
+
+//auto self-init widgets
+$.mobile.$document.bind( "pagecreate create", function( e ) {
+
+ var page = $.mobile.closestPageData( $( e.target ) ), options;
+
+ if ( !page ) {
+ return;
+ }
+
+ options = page.options;
+
+ // degrade inputs to avoid poorly implemented native functionality
+ $( e.target ).find( "input" ).not( page.keepNativeSelector() ).each(function() {
+ var $this = $( this ),
+ type = this.getAttribute( "type" ),
+ optType = options.degradeInputs[ type ] || "text";
+
+ if ( options.degradeInputs[ type ] ) {
+ var html = $( "<div>" ).html( $this.clone() ).html(),
+ // In IE browsers, the type sometimes doesn't exist in the cloned markup, so we replace the closing tag instead
+ hasType = html.indexOf( " type=" ) > -1,
+ findstr = hasType ? /\s+type=["']?\w+['"]?/ : /\/?>/,
+ repstr = " type=\"" + optType + "\" data-" + $.mobile.ns + "type=\"" + type + "\"" + ( hasType ? "" : ">" );
+
+ $this.replaceWith( html.replace( findstr, repstr ) );
+ }
+ });
+
+});
+
+})( jQuery );
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+});
+//>>excludeEnd("jqmBuildExclude");
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.docs.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.docs.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.docs.js
new file mode 100644
index 0000000..adad1c6
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.docs.js
@@ -0,0 +1,5 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+define( [ "depend!../docs/_assets/js/jqm-docs[jquery]" ], function() {
+ require( [ "./jquery.mobile" ] );
+});
+//>>excludeEnd("jqmBuildExclude");
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.events.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.events.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.events.js
new file mode 100644
index 0000000..02c39bd
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.events.js
@@ -0,0 +1,10 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+//>>description: Custom events and shortcuts.
+//>>label: Events
+//>>group: Events
+
+define( [ "jquery", "./events/touch", "./events/orientationchange" ], function( jQuery ) {
+//>>excludeEnd("jqmBuildExclude");
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+});
+//>>excludeEnd("jqmBuildExclude");
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.fieldContain.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.fieldContain.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.fieldContain.js
new file mode 100644
index 0000000..63751b0
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.fieldContain.js
@@ -0,0 +1,29 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+//>>description: Styling to responsively position forms and labels based on screen width and add visual separation
+//>>label: Fieldcontainers
+//>>group: Forms
+//>>css.structure: ../css/structure/jquery.mobile.forms.fieldcontain.css
+//>>css.theme: ../css/themes/default/jquery.mobile.theme.css
+
+define( [ "jquery" ], function( jQuery ) {
+//>>excludeEnd("jqmBuildExclude");
+(function( $, undefined ) {
+
+// filter function removes whitespace between label and form element so we can use inline-block (nodeType 3 = text)
+$.fn.fieldcontain = function( options ) {
+ return this
+ .addClass( "ui-field-contain ui-body ui-br" )
+ .contents().filter( function() {
+ return ( this.nodeType === 3 && !/\S/.test( this.nodeValue ) );
+ }).remove();
+};
+
+//auto self-init widgets
+$.mobile.$document.bind( "pagecreate create", function( e ) {
+ $( ":jqmData(role='fieldcontain')", e.target ).jqmEnhanceable().fieldcontain();
+});
+
+})( jQuery );
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+});
+//>>excludeEnd("jqmBuildExclude");
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.grid.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.grid.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.grid.js
new file mode 100644
index 0000000..3a25f16
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.grid.js
@@ -0,0 +1,59 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+//>>description: Applies classes for creating grid or column styling.
+//>>label: Grid Layouts (Columns)
+//>>group: Widgets
+//>>css.structure:../css/structure/jquery.mobile.grid.css
+//>>css.theme: ../css/themes/default/jquery.mobile.theme.css
+
+define( [ "jquery" ], function( jQuery ) {
+//>>excludeEnd("jqmBuildExclude");
+(function( $, undefined ) {
+
+$.fn.grid = function( options ) {
+ return this.each(function() {
+
+ var $this = $( this ),
+ o = $.extend({
+ grid: null
+ }, options ),
+ $kids = $this.children(),
+ gridCols = { solo:1, a:2, b:3, c:4, d:5 },
+ grid = o.grid,
+ iterator;
+
+ if ( !grid ) {
+ if ( $kids.length <= 5 ) {
+ for ( var letter in gridCols ) {
+ if ( gridCols[ letter ] === $kids.length ) {
+ grid = letter;
+ }
+ }
+ } else {
+ grid = "a";
+ $this.addClass( "ui-grid-duo" );
+ }
+ }
+ iterator = gridCols[grid];
+
+ $this.addClass( "ui-grid-" + grid );
+
+ $kids.filter( ":nth-child(" + iterator + "n+1)" ).addClass( "ui-block-a" );
+
+ if ( iterator > 1 ) {
+ $kids.filter( ":nth-child(" + iterator + "n+2)" ).addClass( "ui-block-b" );
+ }
+ if ( iterator > 2 ) {
+ $kids.filter( ":nth-child(" + iterator + "n+3)" ).addClass( "ui-block-c" );
+ }
+ if ( iterator > 3 ) {
+ $kids.filter( ":nth-child(" + iterator + "n+4)" ).addClass( "ui-block-d" );
+ }
+ if ( iterator > 4 ) {
+ $kids.filter( ":nth-child(" + iterator + "n+5)" ).addClass( "ui-block-e" );
+ }
+ });
+};
+})( jQuery );
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+});
+//>>excludeEnd("jqmBuildExclude");
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.init.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.init.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.init.js
new file mode 100644
index 0000000..43ff2fe
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.init.js
@@ -0,0 +1,168 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+//>>description: Global initialization of the library.
+//>>label: Init
+//>>group: Core
+
+
+define( [ "jquery", "./jquery.mobile.core", "./jquery.mobile.support", "./jquery.mobile.navigation",
+ "./jquery.mobile.navigation.pushstate", "./widgets/loader", "./jquery.mobile.vmouse", "./jquery.hashchange" ], function( jQuery ) {
+//>>excludeEnd("jqmBuildExclude");
+(function( $, window, undefined ) {
+ var $html = $( "html" ),
+ $head = $( "head" ),
+ $window = $.mobile.$window;
+
+ //remove initial build class (only present on first pageshow)
+ function hideRenderingClass() {
+ $html.removeClass( "ui-mobile-rendering" );
+ }
+
+ // trigger mobileinit event - useful hook for configuring $.mobile settings before they're used
+ $( window.document ).trigger( "mobileinit" );
+
+ // support conditions
+ // if device support condition(s) aren't met, leave things as they are -> a basic, usable experience,
+ // otherwise, proceed with the enhancements
+ if ( !$.mobile.gradeA() ) {
+ return;
+ }
+
+ // override ajaxEnabled on platforms that have known conflicts with hash history updates
+ // or generally work better browsing in regular http for full page refreshes (BB5, Opera Mini)
+ if ( $.mobile.ajaxBlacklist ) {
+ $.mobile.ajaxEnabled = false;
+ }
+
+ // Add mobile, initial load "rendering" classes to docEl
+ $html.addClass( "ui-mobile ui-mobile-rendering" );
+
+ // This is a fallback. If anything goes wrong (JS errors, etc), or events don't fire,
+ // this ensures the rendering class is removed after 5 seconds, so content is visible and accessible
+ setTimeout( hideRenderingClass, 5000 );
+
+ $.extend( $.mobile, {
+ addEventBlocker: function () {
+ $html.addClass( "ui-blocker" );
+ $html.bind( "touchstart touchend vclick mousedown mouseup click", function () {
+ return false;
+ } );
+ },
+
+ removeEventBlocker: function () {
+ $html.removeClass( "ui-blocker" );
+ $html.unbind( "touchstart touchend vclick mousedown mouseup click" );
+ },
+
+ // find and enhance the pages in the dom and transition to the first page.
+ initializePage: function() {
+ // find present pages
+ var $pages = $( ":jqmData(role='page'), :jqmData(role='dialog')" ),
+ hash = $.mobile.path.parseLocation().hash.replace("#", ""),
+ hashPage = document.getElementById( hash );
+
+ // if no pages are found, create one with body's inner html
+ if ( !$pages.length ) {
+ $pages = $( "body" ).wrapInner( "<div data-" + $.mobile.ns + "role='page'></div>" ).children( 0 );
+ }
+
+ // add dialogs, set data-url attrs
+ $pages.each(function() {
+ 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" ) || location.pathname + location.search );
+ }
+ });
+
+ // define first page in dom case one backs out to the directory root (not always the first page visited, but defined as fallback)
+ $.mobile.firstPage = $pages.first();
+
+ // define page container
+ $.mobile.pageContainer = $.mobile.firstPage.parent().addClass( "ui-mobile-viewport" );
+
+ // alert listeners that the pagecontainer has been determined for binding
+ // to events triggered on it
+ $window.trigger( "pagecontainercreate" );
+
+ // cue page loading message
+ $.mobile.showPageLoadingMsg();
+ $.mobile.addEventBlocker();
+
+ //remove initial build class (only present on first pageshow)
+ hideRenderingClass();
+
+ // if hashchange listening is disabled, there's no hash deeplink,
+ // the hash is not valid (contains more than one # or does not start with #)
+ // or there is no page with that hash, change to the first page in the DOM
+ // Remember, however, that the hash can also be a path!
+ if ( ! ( $.mobile.hashListeningEnabled &&
+ $.mobile.path.isHashValid( location.hash ) &&
+ ( $( hashPage ).is( ':jqmData(role="page")' ) ||
+ $.mobile.path.isPath( hash ) ||
+ hash === $.mobile.dialogHashKey ) ) ) {
+
+ // Store the initial destination
+ if ( $.mobile.path.isHashValid( location.hash ) ) {
+ $.mobile.urlHistory.initialDst = hash.replace( "#", "" );
+ }
+ $.mobile.changePage( $.mobile.firstPage, { transition: "none", reverse: true, changeHash: false, fromHashChange: true } );
+ }
+ // otherwise, trigger a hashchange to load a deeplink
+ else {
+ $window.trigger( "hashchange", [ true ] );
+ }
+ }
+ });
+
+ // initialize events now, after mobileinit has occurred
+ $.mobile.navreadyDeferred.resolve();
+
+ // check which scrollTop value should be used by scrolling to 1 immediately at domready
+ // then check what the scroll top is. Android will report 0... others 1
+ // note that this initial scroll won't hide the address bar. It's just for the check.
+ $(function() {
+ // window.scrollTo( 0, 1 );
+
+ // if defaultHomeScroll hasn't been set yet, see if scrollTop is 1
+ // it should be 1 in most browsers, but android treats 1 as 0 (for hiding addr bar)
+ // so if it's 1, use 0 from now on
+ $.mobile.defaultHomeScroll = ( !$.support.scrollTop || $.mobile.$window.scrollTop() === 1 ) ? 0 : 1;
+
+
+ // TODO: Implement a proper registration mechanism with dependency handling in order to not have exceptions like the one below
+ //auto self-init widgets for those widgets that have a soft dependency on others
+ if ( $.fn.controlgroup ) {
+ $.mobile.$document.bind( "pagecreate create", function( e ) {
+ $( ":jqmData(role='controlgroup')", e.target )
+ .jqmEnhanceable()
+ .controlgroup({ excludeInvisible: false });
+ });
+ }
+
+ //dom-ready inits
+ if ( $.mobile.autoInitializePage ) {
+ $.mobile.initializePage();
+ }
+
+ // window load event
+ // hide iOS browser chrome on load
+ $window.load( $.mobile.silentScroll );
+
+ if ( !$.support.cssPointerEvents ) {
+ // IE and Opera don't support CSS pointer-events: none that we use to disable link-based buttons
+ // by adding the 'ui-disabled' class to them. Using a JavaScript workaround for those browser.
+ // https://github.com/jquery/jquery-mobile/issues/3558
+
+ $.mobile.$document.delegate( ".ui-disabled", "vclick",
+ function( e ) {
+ e.preventDefault();
+ e.stopImmediatePropagation();
+ }
+ );
+ }
+ });
+}( jQuery, this ));
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+});
+//>>excludeEnd("jqmBuildExclude");
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.js
new file mode 100644
index 0000000..d386b6e
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.js
@@ -0,0 +1,38 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+//>>group: exclude
+
+define([
+ 'require',
+ './widgets/loader',
+ './jquery.mobile.navigation',
+ './jquery.mobile.navigation.pushstate',
+ './jquery.mobile.transitions',
+ './jquery.mobile.degradeInputs',
+ './widgets/dialog',
+ './widgets/page.sections',
+ './widgets/collapsible',
+ './widgets/collapsibleSet',
+ './jquery.mobile.fieldContain',
+ './jquery.mobile.grid',
+ './widgets/navbar',
+ './widgets/listview',
+ './widgets/listview.filter',
+ './widgets/listview.autodividers',
+ './jquery.mobile.nojs',
+ './widgets/forms/checkboxradio',
+ './widgets/forms/button',
+ './widgets/forms/slider',
+ './widgets/forms/textinput',
+ './widgets/forms/select.custom',
+ './widgets/forms/select',
+ './jquery.mobile.buttonMarkup',
+ './jquery.mobile.controlGroup',
+ './jquery.mobile.links',
+ './widgets/fixedToolbar',
+ './widgets/popup',
+ './jquery.mobile.zoom',
+ './jquery.mobile.zoom.iosorientationfix'
+], function( require ) {
+ require( [ './jquery.mobile.init' ], function() {} );
+});
+//>>excludeEnd("jqmBuildExclude");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.links.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.links.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.links.js
new file mode 100644
index 0000000..1c13bc4
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.links.js
@@ -0,0 +1,26 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+//>>description: Adds classes to links.
+//>>label: Link Classes
+//>>group: Utilities
+
+
+define( [ "jquery" ], function( jQuery ) {
+//>>excludeEnd("jqmBuildExclude");
+(function( $, undefined ) {
+
+$.mobile.$document.bind( "pagecreate create", function( e ) {
+
+ //links within content areas, tests included with page
+ $( e.target )
+ .find( "a" )
+ .jqmEnhanceable()
+ .not( ".ui-btn, .ui-link-inherit, :jqmData(role='none'), :jqmData(role='nojs')" )
+ .addClass( "ui-link" );
+
+});
+
+})( jQuery );
+
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+});
+//>>excludeEnd("jqmBuildExclude");
http://git-wip-us.apache.org/repos/asf/cordova-tizen/blob/4ebce38e/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.media.js
----------------------------------------------------------------------
diff --git a/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.media.js b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.media.js
new file mode 100644
index 0000000..3ef76e4
--- /dev/null
+++ b/samples/TizenWebUI-sample-v1/tizen-web-ui-fw/latest/js/modules/jqm/jquery.mobile.media.js
@@ -0,0 +1,52 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+//>>description: A workaround for browsers without window.matchMedia
+//>>label: Match Media Polyfill
+//>>group: Utilities
+
+
+define( [ "jquery", "./jquery.mobile.core" ], function( jQuery ) {
+//>>excludeEnd("jqmBuildExclude");
+(function( $, undefined ) {
+
+var $window = $.mobile.$window,
+ $html = $( "html" );
+
+/* $.mobile.media method: pass a CSS media type or query and get a bool return
+ note: this feature relies on actual media query support for media queries, though types will work most anywhere
+ examples:
+ $.mobile.media('screen') // tests for screen media type
+ $.mobile.media('screen and (min-width: 480px)') // tests for screen media type with window width > 480px
+ $.mobile.media('@media screen and (-webkit-min-device-pixel-ratio: 2)') // tests for webkit 2x pixel ratio (iPhone 4)
+*/
+$.mobile.media = (function() {
+ // TODO: use window.matchMedia once at least one UA implements it
+ var cache = {},
+ testDiv = $( "<div id='jquery-mediatest'></div>" ),
+ fakeBody = $( "<body>" ).append( testDiv );
+
+ return function( query ) {
+ if ( !( query in cache ) ) {
+ var styleBlock = document.createElement( "style" ),
+ cssrule = "@media " + query + " { #jquery-mediatest { position:absolute; } }";
+
+ //must set type for IE!
+ styleBlock.type = "text/css";
+
+ if ( styleBlock.styleSheet ) {
+ styleBlock.styleSheet.cssText = cssrule;
+ } else {
+ styleBlock.appendChild( document.createTextNode(cssrule) );
+ }
+
+ $html.prepend( fakeBody ).prepend( styleBlock );
+ cache[ query ] = testDiv.css( "position" ) === "absolute";
+ fakeBody.add( styleBlock ).remove();
+ }
+ return cache[ query ];
+ };
+})();
+
+})(jQuery);
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+});
+//>>excludeEnd("jqmBuildExclude");