jquery-qtip2-rails 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +16 -13
- data/jquery-qtip2-rails.gemspec +7 -4
- data/lib/jquery-qtip2-rails/version.rb +1 -1
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +16 -0
- data/test/dummy/app/assets/javascripts/home.js +48 -0
- data/test/dummy/app/assets/stylesheets/application.css +14 -0
- data/test/dummy/app/assets/stylesheets/home.css +4 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/home_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/helpers/home_helper.rb +2 -0
- data/test/dummy/app/mailers/.gitkeep +0 -0
- data/test/dummy/app/models/.gitkeep +0 -0
- data/test/dummy/app/views/home/index.html.erb +14 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +68 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +31 -0
- data/test/dummy/config/environments/production.rb +64 -0
- data/test/dummy/config/environments/test.rb +35 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +10 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +3 -0
- data/test/dummy/lib/assets/.gitkeep +0 -0
- data/test/dummy/log/.gitkeep +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/vendor/assets/jquery-qtip/jquery-qtip/src/ajax/ajax.js +3 -2
- data/vendor/assets/jquery-qtip/jquery-qtip/src/{styles.css → basic.css} +0 -0
- data/vendor/assets/jquery-qtip/jquery-qtip/src/core.css +27 -22
- data/vendor/assets/jquery-qtip/jquery-qtip/src/core.js +162 -315
- data/vendor/assets/jquery-qtip/jquery-qtip/src/{extra.css → css3.css} +70 -30
- data/vendor/assets/jquery-qtip/jquery-qtip/src/imagemap/imagemap.js +59 -45
- data/vendor/assets/jquery-qtip/jquery-qtip/src/intro.js +31 -29
- data/vendor/assets/jquery-qtip/jquery-qtip/src/modal/modal.js +7 -5
- data/vendor/assets/jquery-qtip/jquery-qtip/src/outro.js +2 -2
- data/vendor/assets/jquery-qtip/jquery-qtip/src/svg/svg.js +8 -8
- data/vendor/assets/jquery-qtip/jquery-qtip/src/tips/tips.css +7 -3
- data/vendor/assets/jquery-qtip/jquery-qtip/src/tips/tips.js +159 -147
- data/vendor/assets/jquery-qtip/jquery-qtip/src/viewport/viewport.js +112 -0
- data/vendor/assets/jquery-qtip/jquery.qtip.basic.css +5 -0
- data/vendor/assets/jquery-qtip/jquery.qtip.basic.js +0 -1
- data/vendor/assets/jquery-qtip/jquery.qtip.css +3 -4
- data/vendor/assets/jquery-qtip/jquery.qtip.js +5 -5
- metadata +103 -8
- data/vendor/assets/jquery-qtip/jquery-qtip/src/header.txt +0 -14
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
}));
|
1
|
+
}));
|
2
|
+
}( window, document ));
|
@@ -1,10 +1,10 @@
|
|
1
|
-
PLUGINS.svg = function(svg, corner)
|
1
|
+
PLUGINS.svg = function(api, svg, corner, adjustMethod)
|
2
2
|
{
|
3
3
|
var doc = $(document),
|
4
4
|
elem = svg[0],
|
5
5
|
result = {
|
6
6
|
width: 0, height: 0,
|
7
|
-
|
7
|
+
position: { top: 1e10, left: 1e10 }
|
8
8
|
},
|
9
9
|
box, mtx, root, point, tPoint;
|
10
10
|
|
@@ -27,19 +27,19 @@ PLUGINS.svg = function(svg, corner)
|
|
27
27
|
point.x = box.x;
|
28
28
|
point.y = box.y;
|
29
29
|
tPoint = point.matrixTransform(mtx);
|
30
|
-
result.
|
31
|
-
result.
|
30
|
+
result.position.left = tPoint.x;
|
31
|
+
result.position.top = tPoint.y;
|
32
32
|
|
33
33
|
// Adjust width and height
|
34
34
|
point.x += box.width;
|
35
35
|
point.y += box.height;
|
36
36
|
tPoint = point.matrixTransform(mtx);
|
37
|
-
result.width = tPoint.x - result.
|
38
|
-
result.height = tPoint.y - result.
|
37
|
+
result.width = tPoint.x - result.position.left;
|
38
|
+
result.height = tPoint.y - result.position.top;
|
39
39
|
|
40
40
|
// Adjust by scroll offset
|
41
|
-
result.
|
42
|
-
result.
|
41
|
+
result.position.left += doc.scrollLeft();
|
42
|
+
result.position.top += doc.scrollTop();
|
43
43
|
}
|
44
44
|
|
45
45
|
return result;
|
@@ -6,7 +6,7 @@
|
|
6
6
|
}
|
7
7
|
|
8
8
|
.ui-tooltip .ui-tooltip-tip,
|
9
|
-
.ui-tooltip .ui-tooltip-tip
|
9
|
+
.ui-tooltip .ui-tooltip-tip .qtip-vml{
|
10
10
|
position: absolute;
|
11
11
|
|
12
12
|
line-height: 0.1px !important;
|
@@ -14,9 +14,13 @@
|
|
14
14
|
color: #123456;
|
15
15
|
|
16
16
|
background: transparent;
|
17
|
-
border:
|
17
|
+
border: 0 dashed transparent;
|
18
18
|
}
|
19
19
|
|
20
20
|
.ui-tooltip .ui-tooltip-tip canvas{ top: 0; left: 0; }
|
21
21
|
|
22
|
-
|
22
|
+
.ui-tooltip .ui-tooltip-tip .qtip-vml{
|
23
|
+
behavior: url(#default#VML);
|
24
|
+
display: inline-block;
|
25
|
+
visibility: visible;
|
26
|
+
}
|
@@ -37,7 +37,8 @@ function Tip(qTip, command)
|
|
37
37
|
color = { },
|
38
38
|
border = opts.border || 0,
|
39
39
|
namespace = '.qtip-tip',
|
40
|
-
hasCanvas = !!($('<canvas />')[0] || {}).getContext
|
40
|
+
hasCanvas = !!($('<canvas />')[0] || {}).getContext,
|
41
|
+
tiphtml;
|
41
42
|
|
42
43
|
self.corner = NULL;
|
43
44
|
self.mimic = NULL;
|
@@ -75,10 +76,14 @@ function Tip(qTip, command)
|
|
75
76
|
}
|
76
77
|
};
|
77
78
|
|
79
|
+
function whileVisible(callback) {
|
80
|
+
var visible = tooltip.is(':visible');
|
81
|
+
tooltip.show(); callback(); tooltip.toggle(visible);
|
82
|
+
}
|
83
|
+
|
78
84
|
function swapDimensions() {
|
79
|
-
|
80
|
-
size.
|
81
|
-
size.height = temp;
|
85
|
+
size.width = opts.height;
|
86
|
+
size.height = opts.width;
|
82
87
|
}
|
83
88
|
|
84
89
|
function resetDimensions() {
|
@@ -100,19 +105,19 @@ function Tip(qTip, command)
|
|
100
105
|
// If our tip position isn't fixed e.g. doesn't adjust with viewport...
|
101
106
|
if(self.corner.fixed !== TRUE) {
|
102
107
|
// Horizontal - Shift or flip method
|
103
|
-
if(horizontal ===
|
104
|
-
newCorner.precedance = newCorner.precedance ===
|
108
|
+
if(horizontal === SHIFT && newCorner.precedance === X && adjust.left && newCorner.y !== CENTER) {
|
109
|
+
newCorner.precedance = newCorner.precedance === X ? Y : X;
|
105
110
|
}
|
106
|
-
else if(horizontal !==
|
107
|
-
newCorner.x = newCorner.x ===
|
111
|
+
else if(horizontal !== SHIFT && adjust.left){
|
112
|
+
newCorner.x = newCorner.x === CENTER ? (adjust.left > 0 ? LEFT : RIGHT) : (newCorner.x === LEFT ? RIGHT : LEFT);
|
108
113
|
}
|
109
114
|
|
110
115
|
// Vertical - Shift or flip method
|
111
|
-
if(vertical ===
|
112
|
-
newCorner.precedance = newCorner.precedance ===
|
116
|
+
if(vertical === SHIFT && newCorner.precedance === Y && adjust.top && newCorner.x !== CENTER) {
|
117
|
+
newCorner.precedance = newCorner.precedance === Y ? X : Y;
|
113
118
|
}
|
114
|
-
else if(vertical !==
|
115
|
-
newCorner.y = newCorner.y ===
|
119
|
+
else if(vertical !== SHIFT && adjust.top) {
|
120
|
+
newCorner.y = newCorner.y === CENTER ? (adjust.top > 0 ? TOP : BOTTOM) : (newCorner.y === TOP ? BOTTOM : TOP);
|
116
121
|
}
|
117
122
|
|
118
123
|
// Update and redraw the tip if needed (check cached details of last drawn tip)
|
@@ -123,8 +128,8 @@ function Tip(qTip, command)
|
|
123
128
|
|
124
129
|
// Setup tip offset properties
|
125
130
|
offset = self.position(newCorner, adjust);
|
126
|
-
offset[ newCorner.x ] +=
|
127
|
-
offset[ newCorner.y ] +=
|
131
|
+
offset[ newCorner.x ] += parseWidth(newCorner, newCorner.x);
|
132
|
+
offset[ newCorner.y ] += parseWidth(newCorner, newCorner.y);
|
128
133
|
|
129
134
|
// Readjust offset object to make it left/top
|
130
135
|
if(offset.right !== undefined) { offset.left = -offset.right; }
|
@@ -132,8 +137,8 @@ function Tip(qTip, command)
|
|
132
137
|
offset.user = Math.max(0, opts.offset);
|
133
138
|
|
134
139
|
// Viewport "shift" specific adjustments
|
135
|
-
if(shift.left = (horizontal ===
|
136
|
-
if(newCorner.x ===
|
140
|
+
if(shift.left = (horizontal === SHIFT && !!adjust.left)) {
|
141
|
+
if(newCorner.x === CENTER) {
|
137
142
|
css['margin-left'] = shift.x = offset['margin-left'] - adjust.left;
|
138
143
|
}
|
139
144
|
else {
|
@@ -145,11 +150,11 @@ function Tip(qTip, command)
|
|
145
150
|
shift.left = FALSE;
|
146
151
|
}
|
147
152
|
|
148
|
-
css[ offset.right !== undefined ?
|
153
|
+
css[ offset.right !== undefined ? RIGHT : LEFT ] = shift.x;
|
149
154
|
}
|
150
155
|
}
|
151
|
-
if(shift.top = (vertical ===
|
152
|
-
if(newCorner.y ===
|
156
|
+
if(shift.top = (vertical === SHIFT && !!adjust.top)) {
|
157
|
+
if(newCorner.y === CENTER) {
|
153
158
|
css['margin-top'] = shift.y = offset['margin-top'] - adjust.top;
|
154
159
|
}
|
155
160
|
else {
|
@@ -161,63 +166,127 @@ function Tip(qTip, command)
|
|
161
166
|
shift.top = FALSE;
|
162
167
|
}
|
163
168
|
|
164
|
-
css[ offset.bottom !== undefined ?
|
169
|
+
css[ offset.bottom !== undefined ? BOTTOM : TOP ] = shift.y;
|
165
170
|
}
|
166
171
|
}
|
167
172
|
|
168
173
|
/*
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
174
|
+
* If the tip is adjusted in both dimensions, or in a
|
175
|
+
* direction that would cause it to be anywhere but the
|
176
|
+
* outer border, hide it!
|
177
|
+
*/
|
173
178
|
elems.tip.css(css).toggle(
|
174
|
-
!((shift.x && shift.y) || (newCorner.x ===
|
179
|
+
!((shift.x && shift.y) || (newCorner.x === CENTER && shift.y) || (newCorner.y === CENTER && shift.x))
|
175
180
|
);
|
176
181
|
|
177
182
|
// Adjust position to accomodate tip dimensions
|
178
|
-
pos.left -= offset.left.charAt ? offset.user : horizontal !==
|
179
|
-
pos.top -= offset.top.charAt ? offset.user : vertical !==
|
183
|
+
pos.left -= offset.left.charAt ? offset.user : horizontal !== SHIFT || shift.top || !shift.left && !shift.top ? offset.left : 0;
|
184
|
+
pos.top -= offset.top.charAt ? offset.user : vertical !== SHIFT || shift.left || !shift.left && !shift.top ? offset.top : 0;
|
180
185
|
|
181
186
|
// Cache details
|
182
187
|
cache.left = adjust.left; cache.top = adjust.top;
|
183
188
|
cache.corner = newCorner.clone();
|
184
189
|
}
|
185
190
|
|
191
|
+
function parseCorner() {
|
192
|
+
var corner = opts.corner,
|
193
|
+
posOptions = qTip.options.position,
|
194
|
+
at = posOptions.at,
|
195
|
+
my = posOptions.my.string ? posOptions.my.string() : posOptions.my;
|
196
|
+
|
197
|
+
// Detect corner and mimic properties
|
198
|
+
if(corner === FALSE || (my === FALSE && at === FALSE)) {
|
199
|
+
return FALSE;
|
200
|
+
}
|
201
|
+
else {
|
202
|
+
if(corner === TRUE) {
|
203
|
+
self.corner = new PLUGINS.Corner(my);
|
204
|
+
}
|
205
|
+
else if(!corner.string) {
|
206
|
+
self.corner = new PLUGINS.Corner(corner);
|
207
|
+
self.corner.fixed = TRUE;
|
208
|
+
}
|
209
|
+
}
|
210
|
+
|
211
|
+
// Cache it
|
212
|
+
cache.corner = new PLUGINS.Corner( self.corner.string() );
|
213
|
+
|
214
|
+
return self.corner.string() !== 'centercenter';
|
215
|
+
}
|
216
|
+
|
186
217
|
/* border width calculator */
|
187
|
-
function
|
218
|
+
function parseWidth(corner, side, use) {
|
188
219
|
side = !side ? corner[corner.precedance] : side;
|
189
220
|
|
190
|
-
var
|
191
|
-
|
192
|
-
|
193
|
-
css =
|
221
|
+
var isTitleTop = elems.titlebar && corner.y === TOP,
|
222
|
+
elem = isTitleTop ? elems.titlebar : tooltip,
|
223
|
+
borderSide = 'border-' + side + '-width',
|
224
|
+
css = function(elem) { return parseInt(elem.css(borderSide), 10); },
|
194
225
|
val;
|
195
226
|
|
196
|
-
// Grab the border-width value (
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
tooltip.toggleClass(fluidClass, isFluid);
|
201
|
-
|
227
|
+
// Grab the border-width value (make tooltip visible first)
|
228
|
+
whileVisible(function() {
|
229
|
+
val = (use ? css(use) : (css(elems.content) || css(elem) || css(tooltip))) || 0;
|
230
|
+
});
|
202
231
|
return val;
|
203
232
|
}
|
204
233
|
|
205
|
-
function
|
206
|
-
var isTitleTop = elems.titlebar && corner.y ===
|
234
|
+
function parseRadius(corner) {
|
235
|
+
var isTitleTop = elems.titlebar && corner.y === TOP,
|
207
236
|
elem = isTitleTop ? elems.titlebar : elems.content,
|
208
237
|
moz = $.browser.mozilla,
|
209
238
|
prefix = moz ? '-moz-' : $.browser.webkit ? '-webkit-' : '',
|
210
|
-
|
211
|
-
|
239
|
+
nonStandard = 'border-radius-' + corner.y + corner.x,
|
240
|
+
standard = 'border-' + corner.y + '-' + corner.x + '-radius',
|
241
|
+
css = function(c) { return parseInt(elem.css(c), 10) || parseInt(tooltip.css(c), 10); },
|
242
|
+
val;
|
212
243
|
|
213
|
-
|
244
|
+
whileVisible(function() {
|
245
|
+
val = css(standard) || css(prefix + standard) || css(prefix + nonStandard) || css(nonStandard) || 0;
|
246
|
+
});
|
247
|
+
return val;
|
248
|
+
}
|
249
|
+
|
250
|
+
function parseColours(actual) {
|
251
|
+
var i, fill, border,
|
252
|
+
tip = elems.tip.css('cssText', ''),
|
253
|
+
corner = actual || self.corner,
|
254
|
+
invalid = /rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,
|
255
|
+
borderSide = 'border-' + corner[ corner.precedance ] + '-color',
|
256
|
+
bgColor = 'background-color',
|
257
|
+
transparent = 'transparent',
|
258
|
+
important = ' !important',
|
259
|
+
|
260
|
+
titlebar = elems.titlebar,
|
261
|
+
useTitle = titlebar && (corner.y === TOP || (corner.y === CENTER && tip.position().top + (size.height / 2) + opts.offset < titlebar.outerHeight(TRUE))),
|
262
|
+
colorElem = useTitle ? titlebar : elems.content;
|
263
|
+
|
264
|
+
function css(elem, prop, compare) {
|
265
|
+
var val = elem.css(prop) || transparent;
|
266
|
+
if(compare && val === elem.css(compare)) { return FALSE; }
|
267
|
+
else { return invalid.test(val) ? FALSE : val; }
|
268
|
+
}
|
269
|
+
|
270
|
+
// Ensure tooltip is visible then...
|
271
|
+
whileVisible(function() {
|
272
|
+
// Attempt to detect the background colour from various elements, left-to-right precedance
|
273
|
+
color.fill = css(tip, bgColor) || css(colorElem, bgColor) || css(elems.content, bgColor) ||
|
274
|
+
css(tooltip, bgColor) || tip.css(bgColor);
|
275
|
+
|
276
|
+
// Attempt to detect the correct border side colour from various elements, left-to-right precedance
|
277
|
+
color.border = css(tip, borderSide, 'color') || css(colorElem, borderSide, 'color') ||
|
278
|
+
css(elems.content, borderSide, 'color') || css(tooltip, borderSide, 'color') || tooltip.css(borderSide);
|
279
|
+
|
280
|
+
// Reset background and border colours
|
281
|
+
$('*', tip).add(tip).css('cssText', bgColor+':'+transparent+important+';border:0'+important+';');
|
282
|
+
});
|
214
283
|
}
|
215
284
|
|
216
285
|
function calculateSize(corner) {
|
217
|
-
var y = corner.precedance ===
|
218
|
-
width = size [ y ?
|
219
|
-
height = size [ y ?
|
220
|
-
isCenter = corner.string().indexOf(
|
286
|
+
var y = corner.precedance === Y,
|
287
|
+
width = size [ y ? WIDTH : HEIGHT ],
|
288
|
+
height = size [ y ? HEIGHT : WIDTH ],
|
289
|
+
isCenter = corner.string().indexOf(CENTER) > -1,
|
221
290
|
base = width * (isCenter ? 0.5 : 1),
|
222
291
|
pow = Math.pow,
|
223
292
|
round = Math.round,
|
@@ -238,10 +307,15 @@ function Tip(qTip, command)
|
|
238
307
|
return { height: result[ y ? 0 : 1 ], width: result[ y ? 1 : 0 ] };
|
239
308
|
}
|
240
309
|
|
310
|
+
function createVML(tag, props, style) {
|
311
|
+
return '<qvml:'+tag+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(props||'')+
|
312
|
+
' style="behavior: url(#default#VML); '+(style||'')+ '" />';
|
313
|
+
}
|
314
|
+
|
241
315
|
$.extend(self, {
|
242
316
|
init: function()
|
243
317
|
{
|
244
|
-
var enabled =
|
318
|
+
var enabled = parseCorner() && (hasCanvas || $.browser.msie);
|
245
319
|
|
246
320
|
// Determine tip corner and type
|
247
321
|
if(enabled) {
|
@@ -251,81 +325,20 @@ function Tip(qTip, command)
|
|
251
325
|
|
252
326
|
// Bind update events
|
253
327
|
tooltip.unbind(namespace).bind('tooltipmove'+namespace, reposition);
|
254
|
-
}
|
255
|
-
|
256
|
-
return enabled;
|
257
|
-
},
|
258
328
|
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
return FALSE;
|
269
|
-
}
|
270
|
-
else {
|
271
|
-
if(corner === TRUE) {
|
272
|
-
self.corner = new PLUGINS.Corner(my);
|
273
|
-
}
|
274
|
-
else if(!corner.string) {
|
275
|
-
self.corner = new PLUGINS.Corner(corner);
|
276
|
-
self.corner.fixed = TRUE;
|
329
|
+
// Fix for issue of tips not showing after redraw in IE (VML...)
|
330
|
+
if(!hasCanvas) {
|
331
|
+
tooltip.bind('tooltipredraw tooltipredrawn', function(event) {
|
332
|
+
if(event.type === 'tooltipredraw') {
|
333
|
+
tiphtml = elems.tip.html();
|
334
|
+
elems.tip.html('');
|
335
|
+
}
|
336
|
+
else { elems.tip.html(tiphtml); }
|
337
|
+
});
|
277
338
|
}
|
278
339
|
}
|
279
|
-
|
280
|
-
|
281
|
-
cache.corner = new PLUGINS.Corner( self.corner.string() );
|
282
|
-
|
283
|
-
return self.corner.string() !== 'centercenter';
|
284
|
-
},
|
285
|
-
|
286
|
-
detectColours: function(actual) {
|
287
|
-
var i, fill, border,
|
288
|
-
tip = elems.tip.css('cssText', ''),
|
289
|
-
corner = actual || self.corner,
|
290
|
-
precedance = corner[ corner.precedance ],
|
291
|
-
|
292
|
-
borderSide = 'border-' + precedance + '-color',
|
293
|
-
borderSideCamel = 'border' + precedance.charAt(0) + precedance.substr(1) + 'Color',
|
294
|
-
|
295
|
-
invalid = /rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,
|
296
|
-
backgroundColor = 'background-color',
|
297
|
-
transparent = 'transparent',
|
298
|
-
important = ' !important',
|
299
|
-
|
300
|
-
useTitle = elems.titlebar && (corner.y === 'top' || (corner.y === 'center' && tip.position().top + (size.height / 2) + opts.offset < elems.titlebar.outerHeight(1))),
|
301
|
-
colorElem = useTitle ? elems.titlebar : elems.tooltip;
|
302
|
-
|
303
|
-
// Apply the fluid class so we can see our CSS values properly
|
304
|
-
tooltip.addClass(fluidClass);
|
305
|
-
|
306
|
-
// Detect tip colours from CSS styles
|
307
|
-
color.fill = fill = tip.css(backgroundColor);
|
308
|
-
color.border = border = tip[0].style[ borderSideCamel ] || tip.css(borderSide) || tooltip.css(borderSide);
|
309
|
-
|
310
|
-
// Make sure colours are valid
|
311
|
-
if(!fill || invalid.test(fill)) {
|
312
|
-
color.fill = colorElem.css(backgroundColor) || transparent;
|
313
|
-
if(invalid.test(color.fill)) {
|
314
|
-
color.fill = tooltip.css(backgroundColor) || fill;
|
315
|
-
}
|
316
|
-
}
|
317
|
-
if(!border || invalid.test(border) || border === $(document.body).css('color')) {
|
318
|
-
color.border = colorElem.css(borderSide) || transparent;
|
319
|
-
if(invalid.test(color.border) || color.border === colorElem.css('color')) {
|
320
|
-
color.border = tooltip.css(borderSide) || tooltip.css(borderSideCamel) || border;
|
321
|
-
}
|
322
|
-
}
|
323
|
-
|
324
|
-
// Reset background and border colours
|
325
|
-
$('*', tip).add(tip).css('cssText', backgroundColor+':'+transparent+important+';border:0'+important+';');
|
326
|
-
|
327
|
-
// Remove fluid class
|
328
|
-
tooltip.removeClass(fluidClass);
|
340
|
+
|
341
|
+
return enabled;
|
329
342
|
},
|
330
343
|
|
331
344
|
create: function()
|
@@ -346,7 +359,7 @@ function Tip(qTip, command)
|
|
346
359
|
$('<canvas />').appendTo(elems.tip)[0].getContext('2d').save();
|
347
360
|
}
|
348
361
|
else {
|
349
|
-
vml = '
|
362
|
+
vml = createVML('shape', 'coordorigin="0,0"', 'position:absolute;');
|
350
363
|
elems.tip.html(vml + vml);
|
351
364
|
|
352
365
|
// Prevent mousing down on the tip since it causes problems with .live() handling in IE due to VML
|
@@ -360,8 +373,6 @@ function Tip(qTip, command)
|
|
360
373
|
inner = tip.children(),
|
361
374
|
width = size.width,
|
362
375
|
height = size.height,
|
363
|
-
regular = 'px solid ',
|
364
|
-
transparent = 'px dashed transparent', // Dashed IE6 border-transparency hack. Awesome!
|
365
376
|
mimic = opts.mimic,
|
366
377
|
round = Math.round,
|
367
378
|
precedance, context, coords, translate, newSize;
|
@@ -386,7 +397,7 @@ function Tip(qTip, command)
|
|
386
397
|
precedance = mimic.precedance;
|
387
398
|
|
388
399
|
// Ensure the tip width.height are relative to the tip position
|
389
|
-
if(corner.precedance ===
|
400
|
+
if(corner.precedance === X) { swapDimensions(); }
|
390
401
|
else { resetDimensions(); }
|
391
402
|
|
392
403
|
// Set the tip dimensions
|
@@ -396,12 +407,12 @@ function Tip(qTip, command)
|
|
396
407
|
});
|
397
408
|
|
398
409
|
// Update our colours
|
399
|
-
|
410
|
+
parseColours(corner);
|
400
411
|
|
401
412
|
// Detect border width, taking into account colours
|
402
413
|
if(color.border !== 'transparent') {
|
403
414
|
// Grab border width
|
404
|
-
border =
|
415
|
+
border = parseWidth(corner, NULL);
|
405
416
|
|
406
417
|
// If border width isn't zero, use border color as fill (1.0 style tips)
|
407
418
|
if(opts.border === 0 && border > 0) { color.fill = color.border; }
|
@@ -421,16 +432,16 @@ function Tip(qTip, command)
|
|
421
432
|
tip.css(newSize);
|
422
433
|
|
423
434
|
// Calculate tip translation
|
424
|
-
if(corner.precedance ===
|
435
|
+
if(corner.precedance === Y) {
|
425
436
|
translate = [
|
426
|
-
round(mimic.x ===
|
427
|
-
round(mimic.y ===
|
437
|
+
round(mimic.x === LEFT ? border : mimic.x === RIGHT ? newSize.width - width - border : (newSize.width - width) / 2),
|
438
|
+
round(mimic.y === TOP ? newSize.height - height : 0)
|
428
439
|
];
|
429
440
|
}
|
430
441
|
else {
|
431
442
|
translate = [
|
432
|
-
round(mimic.x ===
|
433
|
-
round(mimic.y ===
|
443
|
+
round(mimic.x === LEFT ? newSize.width - width : 0),
|
444
|
+
round(mimic.y === TOP ? border : mimic.y === BOTTOM ? newSize.height - height - border : (newSize.height - height) / 2)
|
434
445
|
];
|
435
446
|
}
|
436
447
|
|
@@ -487,9 +498,10 @@ function Tip(qTip, command)
|
|
487
498
|
|
488
499
|
// Set initial CSS
|
489
500
|
inner.css({
|
490
|
-
|
491
|
-
|
492
|
-
|
501
|
+
coordsize: (width+border) + ' ' + (height+border),
|
502
|
+
antialias: ''+(mimic.string().indexOf(CENTER) > -1),
|
503
|
+
left: translate[0],
|
504
|
+
top: translate[1],
|
493
505
|
width: width + border,
|
494
506
|
height: height + border
|
495
507
|
})
|
@@ -504,13 +516,12 @@ function Tip(qTip, command)
|
|
504
516
|
filled: !!i,
|
505
517
|
stroked: !i
|
506
518
|
})
|
507
|
-
.
|
519
|
+
.toggle(!!(border || i));
|
508
520
|
|
509
521
|
// Check if border is enabled and add stroke element
|
510
522
|
if(!i && $this.html() === '') {
|
511
523
|
$this.html(
|
512
|
-
'
|
513
|
-
' style="behavior:url(#default#VML); display:inline-block;" />'
|
524
|
+
createVML('stroke', 'weight="'+(border*2)+'px" color="'+color.border+'" miterlimit="1000" joinstyle="miter"')
|
514
525
|
);
|
515
526
|
}
|
516
527
|
});
|
@@ -540,27 +551,28 @@ function Tip(qTip, command)
|
|
540
551
|
|
541
552
|
// Setup corners and offset array
|
542
553
|
corners = [ corner.x, corner.y ];
|
543
|
-
if(precedance ===
|
554
|
+
if(precedance === X) { corners.reverse(); }
|
544
555
|
|
545
556
|
// Calculate tip position
|
546
557
|
$.each(corners, function(i, side) {
|
547
|
-
var b, br;
|
558
|
+
var b, bc, br;
|
548
559
|
|
549
|
-
if(side ===
|
550
|
-
b = precedance ===
|
560
|
+
if(side === CENTER) {
|
561
|
+
b = precedance === Y ? LEFT : TOP;
|
551
562
|
position[ b ] = '50%';
|
552
|
-
position['margin-' + b] = -Math.round(dimensions[ precedance ===
|
563
|
+
position['margin-' + b] = -Math.round(dimensions[ precedance === Y ? WIDTH : HEIGHT ] / 2) + userOffset;
|
553
564
|
}
|
554
565
|
else {
|
555
|
-
b =
|
556
|
-
|
566
|
+
b = parseWidth(corner, side);
|
567
|
+
bc = parseWidth(corner, side, elems.content);
|
568
|
+
br = parseRadius(corner);
|
557
569
|
|
558
|
-
position[ side ] = i ?
|
570
|
+
position[ side ] = i ? bc : (userOffset + (br > b ? br : -b));
|
559
571
|
}
|
560
572
|
});
|
561
573
|
|
562
574
|
// Adjust for tip dimensions
|
563
|
-
position[ corner[precedance] ] -= dimensions[ precedance ===
|
575
|
+
position[ corner[precedance] ] -= dimensions[ precedance === X ? WIDTH : HEIGHT ];
|
564
576
|
|
565
577
|
// Set and return new position
|
566
578
|
tip.css({ top: '', bottom: '', left: '', right: '', margin: '' }).css(position);
|
@@ -598,7 +610,7 @@ PLUGINS.tip.sanitize = function(options)
|
|
598
610
|
if(style && 'tip' in style) {
|
599
611
|
opts = options.style.tip;
|
600
612
|
if(typeof opts !== 'object'){ options.style.tip = { corner: opts }; }
|
601
|
-
if(!(/string|boolean/i).test(typeof opts
|
613
|
+
if(!(/string|boolean/i).test(typeof opts['corner'])) { opts['corner'] = TRUE; }
|
602
614
|
if(typeof opts.width !== 'number'){ delete opts.width; }
|
603
615
|
if(typeof opts.height !== 'number'){ delete opts.height; }
|
604
616
|
if(typeof opts.border !== 'number' && opts.border !== TRUE){ delete opts.border; }
|