API Docs for: 1.0.0
Show:

File: src/gallery-collapse-toggle/js/CollapseToggle.js

  1. "use strict";
  2.  
  3. /**********************************************************************
  4. * Widget which allows collapsing a chunk of content, e.g., a form, down to
  5. * a much smaller summary.
  6. *
  7. * @module gallery-collapse-toggle
  8. */
  9.  
  10. /**********************************************************************
  11. * Overrides Y.Node.show() to make it look like a flickering neon sign.
  12. *
  13. * @main gallery-collapse-toggle
  14. * @class CollapseToggle
  15. * @extends Widget
  16. * @constructor
  17. * @param config {Object} configuration
  18. */
  19. function CollapseToggle(
  20. /* object */ config)
  21. {
  22. CollapseToggle.superclass.constructor.call(this, config);
  23. }
  24.  
  25. CollapseToggle.NAME = "collapsetoggle";
  26.  
  27. CollapseToggle.ATTRS =
  28. {
  29. /**
  30. * State of the widget.
  31. *
  32. * @attribute collapsed
  33. * @type {Boolean}
  34. */
  35. collapsed:
  36. {
  37. value: false,
  38. validator: Y.Lang.isBoolean
  39. }
  40. };
  41.  
  42. CollapseToggle.HTML_PARSER =
  43. {
  44. summary: function(content_box)
  45. {
  46. return content_box.one('> .summary');
  47. },
  48.  
  49. content: function(content_box)
  50. {
  51. return content_box.one('> .content');
  52. }
  53. };
  54.  
  55. Y.extend(CollapseToggle, Y.Widget,
  56. {
  57. renderUI: function()
  58. {
  59. this.get('contentBox').prepend('<div class="toggle"></div>');
  60. },
  61.  
  62. bindUI: function()
  63. {
  64. this.get('contentBox').one('> .toggle').on('click', function()
  65. {
  66. this.set('collapsed', !this.get('collapsed'));
  67. this.syncUI();
  68. },
  69. this);
  70. },
  71.  
  72. syncUI: function()
  73. {
  74. this.get('contentBox').replaceClass('collapsed|expanded', this.get('collapsed') ? 'collapsed' : 'expanded');
  75. }
  76. });
  77.  
  78. Y.CollapseToggle = CollapseToggle;
  79.