Show More
Commit Description:
fig bugs in login report
Commit Description:
fig bugs in login report
References:
File last commit:
Show/Diff file:
Action:
node_modules/jquery/src/css.js
| 484 lines
| 13.5 KiB
| application/javascript
| JavascriptLexer
|
r789 | define( [ | |||
"./core", | ||||
"./core/access", | ||||
"./core/camelCase", | ||||
"./var/rcssNum", | ||||
"./css/var/rnumnonpx", | ||||
"./css/var/cssExpand", | ||||
"./css/var/getStyles", | ||||
"./css/var/swap", | ||||
"./css/curCSS", | ||||
"./css/adjustCSS", | ||||
"./css/addGetHookIf", | ||||
"./css/support", | ||||
"./css/finalPropName", | ||||
"./core/init", | ||||
"./core/ready", | ||||
"./selector" // contains | ||||
], function( jQuery, access, camelCase, rcssNum, rnumnonpx, cssExpand, | ||||
getStyles, swap, curCSS, adjustCSS, addGetHookIf, support, finalPropName ) { | ||||
"use strict"; | ||||
var | ||||
// Swappable if display is none or starts with table | ||||
// except "table", "table-cell", or "table-caption" | ||||
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display | ||||
rdisplayswap = /^(none|table(?!-c[ea]).+)/, | ||||
rcustomProp = /^--/, | ||||
cssShow = { position: "absolute", visibility: "hidden", display: "block" }, | ||||
cssNormalTransform = { | ||||
letterSpacing: "0", | ||||
fontWeight: "400" | ||||
}; | ||||
function setPositiveNumber( elem, value, subtract ) { | ||||
// Any relative (+/-) values have already been | ||||
// normalized at this point | ||||
var matches = rcssNum.exec( value ); | ||||
return matches ? | ||||
// Guard against undefined "subtract", e.g., when used as in cssHooks | ||||
Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : | ||||
value; | ||||
} | ||||
function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { | ||||
var i = dimension === "width" ? 1 : 0, | ||||
extra = 0, | ||||
delta = 0; | ||||
// Adjustment may not be necessary | ||||
if ( box === ( isBorderBox ? "border" : "content" ) ) { | ||||
return 0; | ||||
} | ||||
for ( ; i < 4; i += 2 ) { | ||||
// Both box models exclude margin | ||||
if ( box === "margin" ) { | ||||
delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); | ||||
} | ||||
// If we get here with a content-box, we're seeking "padding" or "border" or "margin" | ||||
if ( !isBorderBox ) { | ||||
// Add padding | ||||
delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); | ||||
// For "border" or "margin", add border | ||||
if ( box !== "padding" ) { | ||||
delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); | ||||
// But still keep track of it otherwise | ||||
} else { | ||||
extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); | ||||
} | ||||
// If we get here with a border-box (content + padding + border), we're seeking "content" or | ||||
// "padding" or "margin" | ||||
} else { | ||||
// For "content", subtract padding | ||||
if ( box === "content" ) { | ||||
delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); | ||||
} | ||||
// For "content" or "padding", subtract border | ||||
if ( box !== "margin" ) { | ||||
delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); | ||||
} | ||||
} | ||||
} | ||||
// Account for positive content-box scroll gutter when requested by providing computedVal | ||||
if ( !isBorderBox && computedVal >= 0 ) { | ||||
// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border | ||||
// Assuming integer scroll gutter, subtract the rest and round down | ||||
delta += Math.max( 0, Math.ceil( | ||||
elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - | ||||
computedVal - | ||||
delta - | ||||
extra - | ||||
0.5 | ||||
// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter | ||||
// Use an explicit zero to avoid NaN (gh-3964) | ||||
) ) || 0; | ||||
} | ||||
return delta; | ||||
} | ||||
function getWidthOrHeight( elem, dimension, extra ) { | ||||
// Start with computed style | ||||
var styles = getStyles( elem ), | ||||
// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). | ||||
// Fake content-box until we know it's needed to know the true value. | ||||
boxSizingNeeded = !support.boxSizingReliable() || extra, | ||||
isBorderBox = boxSizingNeeded && | ||||
jQuery.css( elem, "boxSizing", false, styles ) === "border-box", | ||||
valueIsBorderBox = isBorderBox, | ||||
val = curCSS( elem, dimension, styles ), | ||||
offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); | ||||
// Support: Firefox <=54 | ||||
// Return a confounding non-pixel value or feign ignorance, as appropriate. | ||||
if ( rnumnonpx.test( val ) ) { | ||||
if ( !extra ) { | ||||
return val; | ||||
} | ||||
val = "auto"; | ||||
} | ||||
// Fall back to offsetWidth/offsetHeight when value is "auto" | ||||
// This happens for inline elements with no explicit setting (gh-3571) | ||||
// Support: Android <=4.1 - 4.3 only | ||||
// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) | ||||
// Support: IE 9-11 only | ||||
// Also use offsetWidth/offsetHeight for when box sizing is unreliable | ||||
// We use getClientRects() to check for hidden/disconnected. | ||||
// In those cases, the computed value can be trusted to be border-box | ||||
if ( ( !support.boxSizingReliable() && isBorderBox || | ||||
val === "auto" || | ||||
!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && | ||||
elem.getClientRects().length ) { | ||||
isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; | ||||
// Where available, offsetWidth/offsetHeight approximate border box dimensions. | ||||
// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the | ||||
// retrieved value as a content box dimension. | ||||
valueIsBorderBox = offsetProp in elem; | ||||
if ( valueIsBorderBox ) { | ||||
val = elem[ offsetProp ]; | ||||
} | ||||
} | ||||
// Normalize "" and auto | ||||
val = parseFloat( val ) || 0; | ||||
// Adjust for the element's box model | ||||
return ( val + | ||||
boxModelAdjustment( | ||||
elem, | ||||
dimension, | ||||
extra || ( isBorderBox ? "border" : "content" ), | ||||
valueIsBorderBox, | ||||
styles, | ||||
// Provide the current computed size to request scroll gutter calculation (gh-3589) | ||||
val | ||||
) | ||||
) + "px"; | ||||
} | ||||
jQuery.extend( { | ||||
// Add in style property hooks for overriding the default | ||||
// behavior of getting and setting a style property | ||||
cssHooks: { | ||||
opacity: { | ||||
get: function( elem, computed ) { | ||||
if ( computed ) { | ||||
// We should always get a number back from opacity | ||||
var ret = curCSS( elem, "opacity" ); | ||||
return ret === "" ? "1" : ret; | ||||
} | ||||
} | ||||
} | ||||
}, | ||||
// Don't automatically add "px" to these possibly-unitless properties | ||||
cssNumber: { | ||||
"animationIterationCount": true, | ||||
"columnCount": true, | ||||
"fillOpacity": true, | ||||
"flexGrow": true, | ||||
"flexShrink": true, | ||||
"fontWeight": true, | ||||
"gridArea": true, | ||||
"gridColumn": true, | ||||
"gridColumnEnd": true, | ||||
"gridColumnStart": true, | ||||
"gridRow": true, | ||||
"gridRowEnd": true, | ||||
"gridRowStart": true, | ||||
"lineHeight": true, | ||||
"opacity": true, | ||||
"order": true, | ||||
"orphans": true, | ||||
"widows": true, | ||||
"zIndex": true, | ||||
"zoom": true | ||||
}, | ||||
// Add in properties whose names you wish to fix before | ||||
// setting or getting the value | ||||
cssProps: {}, | ||||
// Get and set the style property on a DOM Node | ||||
style: function( elem, name, value, extra ) { | ||||
// Don't set styles on text and comment nodes | ||||
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { | ||||
return; | ||||
} | ||||
// Make sure that we're working with the right name | ||||
var ret, type, hooks, | ||||
origName = camelCase( name ), | ||||
isCustomProp = rcustomProp.test( name ), | ||||
style = elem.style; | ||||
// Make sure that we're working with the right name. We don't | ||||
// want to query the value if it is a CSS custom property | ||||
// since they are user-defined. | ||||
if ( !isCustomProp ) { | ||||
name = finalPropName( origName ); | ||||
} | ||||
// Gets hook for the prefixed version, then unprefixed version | ||||
hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; | ||||
// Check if we're setting a value | ||||
if ( value !== undefined ) { | ||||
type = typeof value; | ||||
// Convert "+=" or "-=" to relative numbers (#7345) | ||||
if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { | ||||
value = adjustCSS( elem, name, ret ); | ||||
// Fixes bug #9237 | ||||
type = "number"; | ||||
} | ||||
// Make sure that null and NaN values aren't set (#7116) | ||||
if ( value == null || value !== value ) { | ||||
return; | ||||
} | ||||
// If a number was passed in, add the unit (except for certain CSS properties) | ||||
// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append | ||||
// "px" to a few hardcoded values. | ||||
if ( type === "number" && !isCustomProp ) { | ||||
value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); | ||||
} | ||||
// background-* props affect original clone's values | ||||
if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { | ||||
style[ name ] = "inherit"; | ||||
} | ||||
// If a hook was provided, use that value, otherwise just set the specified value | ||||
if ( !hooks || !( "set" in hooks ) || | ||||
( value = hooks.set( elem, value, extra ) ) !== undefined ) { | ||||
if ( isCustomProp ) { | ||||
style.setProperty( name, value ); | ||||
} else { | ||||
style[ name ] = value; | ||||
} | ||||
} | ||||
} else { | ||||
// If a hook was provided get the non-computed value from there | ||||
if ( hooks && "get" in hooks && | ||||
( ret = hooks.get( elem, false, extra ) ) !== undefined ) { | ||||
return ret; | ||||
} | ||||
// Otherwise just get the value from the style object | ||||
return style[ name ]; | ||||
} | ||||
}, | ||||
css: function( elem, name, extra, styles ) { | ||||
var val, num, hooks, | ||||
origName = camelCase( name ), | ||||
isCustomProp = rcustomProp.test( name ); | ||||
// Make sure that we're working with the right name. We don't | ||||
// want to modify the value if it is a CSS custom property | ||||
// since they are user-defined. | ||||
if ( !isCustomProp ) { | ||||
name = finalPropName( origName ); | ||||
} | ||||
// Try prefixed name followed by the unprefixed name | ||||
hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; | ||||
// If a hook was provided get the computed value from there | ||||
if ( hooks && "get" in hooks ) { | ||||
val = hooks.get( elem, true, extra ); | ||||
} | ||||
// Otherwise, if a way to get the computed value exists, use that | ||||
if ( val === undefined ) { | ||||
val = curCSS( elem, name, styles ); | ||||
} | ||||
// Convert "normal" to computed value | ||||
if ( val === "normal" && name in cssNormalTransform ) { | ||||
val = cssNormalTransform[ name ]; | ||||
} | ||||
// Make numeric if forced or a qualifier was provided and val looks numeric | ||||
if ( extra === "" || extra ) { | ||||
num = parseFloat( val ); | ||||
return extra === true || isFinite( num ) ? num || 0 : val; | ||||
} | ||||
return val; | ||||
} | ||||
} ); | ||||
jQuery.each( [ "height", "width" ], function( i, dimension ) { | ||||
jQuery.cssHooks[ dimension ] = { | ||||
get: function( elem, computed, extra ) { | ||||
if ( computed ) { | ||||
// Certain elements can have dimension info if we invisibly show them | ||||
// but it must have a current display style that would benefit | ||||
return rdisplayswap.test( jQuery.css( elem, "display" ) ) && | ||||
// Support: Safari 8+ | ||||
// Table columns in Safari have non-zero offsetWidth & zero | ||||
// getBoundingClientRect().width unless display is changed. | ||||
// Support: IE <=11 only | ||||
// Running getBoundingClientRect on a disconnected node | ||||
// in IE throws an error. | ||||
( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? | ||||
swap( elem, cssShow, function() { | ||||
return getWidthOrHeight( elem, dimension, extra ); | ||||
} ) : | ||||
getWidthOrHeight( elem, dimension, extra ); | ||||
} | ||||
}, | ||||
set: function( elem, value, extra ) { | ||||
var matches, | ||||
styles = getStyles( elem ), | ||||
// Only read styles.position if the test has a chance to fail | ||||
// to avoid forcing a reflow. | ||||
scrollboxSizeBuggy = !support.scrollboxSize() && | ||||
styles.position === "absolute", | ||||
// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) | ||||
boxSizingNeeded = scrollboxSizeBuggy || extra, | ||||
isBorderBox = boxSizingNeeded && | ||||
jQuery.css( elem, "boxSizing", false, styles ) === "border-box", | ||||
subtract = extra ? | ||||
boxModelAdjustment( | ||||
elem, | ||||
dimension, | ||||
extra, | ||||
isBorderBox, | ||||
styles | ||||
) : | ||||
0; | ||||
// Account for unreliable border-box dimensions by comparing offset* to computed and | ||||
// faking a content-box to get border and padding (gh-3699) | ||||
if ( isBorderBox && scrollboxSizeBuggy ) { | ||||
subtract -= Math.ceil( | ||||
elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - | ||||
parseFloat( styles[ dimension ] ) - | ||||
boxModelAdjustment( elem, dimension, "border", false, styles ) - | ||||
0.5 | ||||
); | ||||
} | ||||
// Convert to pixels if value adjustment is needed | ||||
if ( subtract && ( matches = rcssNum.exec( value ) ) && | ||||
( matches[ 3 ] || "px" ) !== "px" ) { | ||||
elem.style[ dimension ] = value; | ||||
value = jQuery.css( elem, dimension ); | ||||
} | ||||
return setPositiveNumber( elem, value, subtract ); | ||||
} | ||||
}; | ||||
} ); | ||||
jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, | ||||
function( elem, computed ) { | ||||
if ( computed ) { | ||||
return ( parseFloat( curCSS( elem, "marginLeft" ) ) || | ||||
elem.getBoundingClientRect().left - | ||||
swap( elem, { marginLeft: 0 }, function() { | ||||
return elem.getBoundingClientRect().left; | ||||
} ) | ||||
) + "px"; | ||||
} | ||||
} | ||||
); | ||||
// These hooks are used by animate to expand properties | ||||
jQuery.each( { | ||||
margin: "", | ||||
padding: "", | ||||
border: "Width" | ||||
}, function( prefix, suffix ) { | ||||
jQuery.cssHooks[ prefix + suffix ] = { | ||||
expand: function( value ) { | ||||
var i = 0, | ||||
expanded = {}, | ||||
// Assumes a single number if not a string | ||||
parts = typeof value === "string" ? value.split( " " ) : [ value ]; | ||||
for ( ; i < 4; i++ ) { | ||||
expanded[ prefix + cssExpand[ i ] + suffix ] = | ||||
parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; | ||||
} | ||||
return expanded; | ||||
} | ||||
}; | ||||
if ( prefix !== "margin" ) { | ||||
jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; | ||||
} | ||||
} ); | ||||
jQuery.fn.extend( { | ||||
css: function( name, value ) { | ||||
return access( this, function( elem, name, value ) { | ||||
var styles, len, | ||||
map = {}, | ||||
i = 0; | ||||
if ( Array.isArray( name ) ) { | ||||
styles = getStyles( elem ); | ||||
len = name.length; | ||||
for ( ; i < len; i++ ) { | ||||
map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); | ||||
} | ||||
return map; | ||||
} | ||||
return value !== undefined ? | ||||
jQuery.style( elem, name, value ) : | ||||
jQuery.css( elem, name ); | ||||
}, name, value, arguments.length > 1 ); | ||||
} | ||||
} ); | ||||
return jQuery; | ||||
} ); | ||||