1 |
efrain |
1 |
YUI.add('classnamemanager', function (Y, NAME) {
|
|
|
2 |
|
|
|
3 |
/**
|
|
|
4 |
* Contains a singleton (ClassNameManager) that enables easy creation and caching of
|
|
|
5 |
* prefixed class names.
|
|
|
6 |
* @module classnamemanager
|
|
|
7 |
*/
|
|
|
8 |
|
|
|
9 |
/**
|
|
|
10 |
* A singleton class providing:
|
|
|
11 |
*
|
|
|
12 |
* <ul>
|
|
|
13 |
* <li>Easy creation of prefixed class names</li>
|
|
|
14 |
* <li>Caching of previously created class names for improved performance.</li>
|
|
|
15 |
* </ul>
|
|
|
16 |
*
|
|
|
17 |
* @class ClassNameManager
|
|
|
18 |
* @static
|
|
|
19 |
*/
|
|
|
20 |
|
|
|
21 |
// String constants
|
|
|
22 |
var CLASS_NAME_PREFIX = 'classNamePrefix',
|
|
|
23 |
CLASS_NAME_DELIMITER = 'classNameDelimiter',
|
|
|
24 |
CONFIG = Y.config;
|
|
|
25 |
|
|
|
26 |
// Global config
|
|
|
27 |
|
|
|
28 |
/**
|
|
|
29 |
* Configuration property indicating the prefix for all CSS class names in this YUI instance.
|
|
|
30 |
*
|
|
|
31 |
* @property classNamePrefix
|
|
|
32 |
* @type {String}
|
|
|
33 |
* @default "yui"
|
|
|
34 |
* @static
|
|
|
35 |
*/
|
|
|
36 |
CONFIG[CLASS_NAME_PREFIX] = CONFIG[CLASS_NAME_PREFIX] || 'yui3';
|
|
|
37 |
|
|
|
38 |
/**
|
|
|
39 |
* Configuration property indicating the delimiter used to compose all CSS class names in
|
|
|
40 |
* this YUI instance.
|
|
|
41 |
*
|
|
|
42 |
* @property classNameDelimiter
|
|
|
43 |
* @type {String}
|
|
|
44 |
* @default "-"
|
|
|
45 |
* @static
|
|
|
46 |
*/
|
|
|
47 |
CONFIG[CLASS_NAME_DELIMITER] = CONFIG[CLASS_NAME_DELIMITER] || '-';
|
|
|
48 |
|
|
|
49 |
Y.ClassNameManager = function () {
|
|
|
50 |
|
|
|
51 |
var sPrefix = CONFIG[CLASS_NAME_PREFIX],
|
|
|
52 |
sDelimiter = CONFIG[CLASS_NAME_DELIMITER];
|
|
|
53 |
|
|
|
54 |
return {
|
|
|
55 |
|
|
|
56 |
/**
|
|
|
57 |
* Returns a class name prefixed with the value of the
|
|
|
58 |
* <code>Y.config.classNamePrefix</code> attribute + the provided strings.
|
|
|
59 |
* Uses the <code>Y.config.classNameDelimiter</code> attribute to delimit the
|
|
|
60 |
* provided strings. E.g. Y.ClassNameManager.getClassName('foo','bar'); // yui-foo-bar
|
|
|
61 |
*
|
|
|
62 |
* @method getClassName
|
|
|
63 |
* @param {String} [classnameSection*] one or more classname sections to be joined
|
|
|
64 |
* @param {Boolean} skipPrefix If set to true, the classname will not be prefixed with the default Y.config.classNameDelimiter value.
|
|
|
65 |
*/
|
|
|
66 |
getClassName: Y.cached(function () {
|
|
|
67 |
|
|
|
68 |
var args = Y.Array(arguments);
|
|
|
69 |
|
|
|
70 |
if (args[args.length-1] !== true) {
|
|
|
71 |
args.unshift(sPrefix);
|
|
|
72 |
} else {
|
|
|
73 |
args.pop();
|
|
|
74 |
}
|
|
|
75 |
|
|
|
76 |
return args.join(sDelimiter);
|
|
|
77 |
})
|
|
|
78 |
|
|
|
79 |
};
|
|
|
80 |
|
|
|
81 |
}();
|
|
|
82 |
|
|
|
83 |
|
|
|
84 |
}, '3.18.1', {"requires": ["yui-base"]});
|