|
1 /* |
|
2 YUI 3.10.3 (build 2fb5187) |
|
3 Copyright 2013 Yahoo! Inc. All rights reserved. |
|
4 Licensed under the BSD License. |
|
5 http://yuilibrary.com/license/ |
|
6 */ |
|
7 |
|
8 YUI.add('classnamemanager', function (Y, NAME) { |
|
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 classNamePrefix |
|
39 * @type {String} |
|
40 * @default "yui" |
|
41 * @static |
|
42 */ |
|
43 CONFIG[CLASS_NAME_PREFIX] = CONFIG[CLASS_NAME_PREFIX] || 'yui3'; |
|
44 |
|
45 /** |
|
46 * Configuration property indicating the delimiter used to compose all CSS class names in |
|
47 * this YUI instance. |
|
48 * |
|
49 * @property 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}+ classnameSection one or more classname sections to be joined |
|
71 * @param {Boolean} skipPrefix If set to true, the classname will not be prefixed with the default Y.config.classNameDelimiter value. |
|
72 */ |
|
73 getClassName: Y.cached(function () { |
|
74 |
|
75 var args = Y.Array(arguments); |
|
76 |
|
77 if (args[args.length-1] !== true) { |
|
78 args.unshift(sPrefix); |
|
79 } else { |
|
80 args.pop(); |
|
81 } |
|
82 |
|
83 return args.join(sDelimiter); |
|
84 }) |
|
85 |
|
86 }; |
|
87 |
|
88 }(); |
|
89 |
|
90 |
|
91 }, '3.10.3', {"requires": ["yui-base"]}); |