|
0
|
1 |
/* |
|
|
2 |
Copyright (c) 2009, Yahoo! Inc. All rights reserved. |
|
|
3 |
Code licensed under the BSD License: |
|
|
4 |
http://developer.yahoo.net/yui/license.txt |
|
|
5 |
version: 3.0.0b1 |
|
|
6 |
build: 1163 |
|
|
7 |
*/ |
|
|
8 |
YUI.add('classnamemanager', function(Y) { |
|
|
9 |
|
|
|
10 |
/** |
|
|
11 |
* Contains a singleton (ClassNameManager) that enables easy creation and caching of |
|
|
12 |
* prefixed class names. |
|
|
13 |
* @module classnamemanager |
|
|
14 |
*/ |
|
|
15 |
|
|
|
16 |
/** |
|
|
17 |
* A singleton class providing: |
|
|
18 |
* |
|
|
19 |
* <ul> |
|
|
20 |
* <li>Easy creation of prefixed class names</li> |
|
|
21 |
* <li>Caching of previously created class names for improved performance.</li> |
|
|
22 |
* </ul> |
|
|
23 |
* |
|
|
24 |
* @class ClassNameManager |
|
|
25 |
* @static |
|
|
26 |
*/ |
|
|
27 |
|
|
|
28 |
// String constants |
|
|
29 |
var CLASS_NAME_PREFIX = 'classNamePrefix', |
|
|
30 |
CLASS_NAME_DELIMITER = 'classNameDelimiter', |
|
|
31 |
CONFIG = Y.config; |
|
|
32 |
|
|
|
33 |
// Global config |
|
|
34 |
|
|
|
35 |
/** |
|
|
36 |
* Configuration property indicating the prefix for all CSS class names in this YUI instance. |
|
|
37 |
* |
|
|
38 |
* @property Y.config.classNamePrefix |
|
|
39 |
* @type {String} |
|
|
40 |
* @default "yui" |
|
|
41 |
* @static |
|
|
42 |
*/ |
|
|
43 |
CONFIG[CLASS_NAME_PREFIX] = CONFIG[CLASS_NAME_PREFIX] || 'yui'; |
|
|
44 |
|
|
|
45 |
/** |
|
|
46 |
* Configuration property indicating the delimiter used to compose all CSS class names in |
|
|
47 |
* this YUI instance. |
|
|
48 |
* |
|
|
49 |
* @property Y.config.classNameDelimiter |
|
|
50 |
* @type {String} |
|
|
51 |
* @default "-" |
|
|
52 |
* @static |
|
|
53 |
*/ |
|
|
54 |
CONFIG[CLASS_NAME_DELIMITER] = CONFIG[CLASS_NAME_DELIMITER] || '-'; |
|
|
55 |
|
|
|
56 |
Y.ClassNameManager = function () { |
|
|
57 |
|
|
|
58 |
var sPrefix = CONFIG[CLASS_NAME_PREFIX], |
|
|
59 |
sDelimiter = CONFIG[CLASS_NAME_DELIMITER]; |
|
|
60 |
|
|
|
61 |
return { |
|
|
62 |
|
|
|
63 |
/** |
|
|
64 |
* Returns a class name prefixed with the the value of the |
|
|
65 |
* <code>Y.config.classNamePrefix</code> attribute + the provided strings. |
|
|
66 |
* Uses the <code>Y.config.classNameDelimiter</code> attribute to delimit the |
|
|
67 |
* provided strings. E.g. Y.ClassNameManager.getClassName('foo','bar'); // yui-foo-bar |
|
|
68 |
* |
|
|
69 |
* @method getClassName |
|
|
70 |
* @param {String}+ one or more classname bits to be joined and prefixed |
|
|
71 |
*/ |
|
|
72 |
getClassName: Y.cached(function (c, x) { |
|
|
73 |
|
|
|
74 |
var sClass = sPrefix + sDelimiter + |
|
|
75 |
// ((x) ? Y.Array(arguments, 0, true).join(sDelimiter) : c); |
|
|
76 |
((x) ? Array.prototype.join.call(arguments, sDelimiter) : c); |
|
|
77 |
|
|
|
78 |
return sClass.replace(/\s/g, ''); |
|
|
79 |
|
|
|
80 |
}) |
|
|
81 |
|
|
|
82 |
}; |
|
|
83 |
|
|
|
84 |
}(); |
|
|
85 |
|
|
|
86 |
|
|
|
87 |
}, '3.0.0b1' ); |