Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
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"]});