ClassList.html 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>The source code</title>
  6. <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
  7. <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
  8. <style type="text/css">
  9. .highlight { display: block; background-color: #ddd; }
  10. </style>
  11. <script type="text/javascript">
  12. function highlight() {
  13. document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
  14. }
  15. </script>
  16. </head>
  17. <body onload="prettyPrint(); highlight();">
  18. <pre class="prettyprint lang-js"><span id='Ext-layout-ClassList'>/**
  19. </span> * This class provides a DOM ClassList API to buffer access to an element's class.
  20. * Instances of this class are created by {@link Ext.layout.ContextItem#getClassList}.
  21. */
  22. Ext.define('Ext.layout.ClassList', (function () {
  23. var splitWords = Ext.String.splitWords,
  24. toMap = Ext.Array.toMap;
  25. return {
  26. dirty: false,
  27. constructor: function (owner) {
  28. this.owner = owner;
  29. this.map = toMap(this.classes = splitWords(owner.el.className));
  30. },
  31. <span id='Ext-layout-ClassList-method-add'> /**
  32. </span> * Adds a single class to the class list.
  33. */
  34. add: function (cls) {
  35. var me = this;
  36. if (!me.map[cls]) {
  37. me.map[cls] = true;
  38. me.classes.push(cls);
  39. if (!me.dirty) {
  40. me.dirty = true;
  41. me.owner.markDirty();
  42. }
  43. }
  44. },
  45. <span id='Ext-layout-ClassList-method-addMany'> /**
  46. </span> * Adds one or more classes in an array or space-delimited string to the class list.
  47. */
  48. addMany: function (classes) {
  49. Ext.each(splitWords(classes), this.add, this);
  50. },
  51. contains: function (cls) {
  52. return this.map[cls];
  53. },
  54. flush: function () {
  55. this.owner.el.className = this.classes.join(' ');
  56. this.dirty = false;
  57. },
  58. <span id='Ext-layout-ClassList-method-remove'> /**
  59. </span> * Removes a single class from the class list.
  60. */
  61. remove: function (cls) {
  62. var me = this;
  63. if (me.map[cls]) {
  64. delete me.map[cls];
  65. me.classes = Ext.Array.filter(me.classes, function (c) {
  66. return c != cls;
  67. });
  68. if (!me.dirty) {
  69. me.dirty = true;
  70. me.owner.markDirty();
  71. }
  72. }
  73. },
  74. <span id='Ext-layout-ClassList-method-removeMany'> /**
  75. </span> * Removes one or more classes in an array or space-delimited string from the class
  76. * list.
  77. */
  78. removeMany: function (classes) {
  79. var me = this,
  80. remove = toMap(splitWords(classes));
  81. me.classes = Ext.Array.filter(me.classes, function (c) {
  82. if (!remove[c]) {
  83. return true;
  84. }
  85. delete me.map[c];
  86. if (!me.dirty) {
  87. me.dirty = true;
  88. me.owner.markDirty();
  89. }
  90. return false;
  91. });
  92. }
  93. };
  94. }()));
  95. </pre>
  96. </body>
  97. </html>