stag-collapsible-card.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. (function() {
  2. function init() {
  3. $('.card[stag-collapsible-card]:not([stag-collapsible-card-initialized])').each(function() {
  4. let header = $(this).find('>.card-header').first();
  5. if(header.length) {
  6. let html = header.html();
  7. let newHeader = $('<div class="d-flex align-items-center"></div>');
  8. newHeader.append(html);
  9. let collapseTrigger = $('<a href="#" class="stag-collapse-trigger ml-auto" />');
  10. collapseTrigger.append('<i class="fa fa-chevron-up if-not-collapsed"/>');
  11. collapseTrigger.append('<i class="fa fa-chevron-down if-collapsed"/>');
  12. newHeader.append(collapseTrigger);
  13. header
  14. .empty()
  15. .append(newHeader);
  16. }
  17. $(this).attr('stag-collapsible-card-initialized', 1);
  18. });
  19. $(document)
  20. .off('click.stag-collapse-toggle', '.card[stag-collapsible-card][stag-collapsible-card-initialized] .stag-collapse-trigger')
  21. .on('click.stag-collapse-toggle', '.card[stag-collapsible-card][stag-collapsible-card-initialized] .stag-collapse-trigger', function() {
  22. let card = $(this).closest('.card');
  23. if(card.is('[collapsed]')) {
  24. card.removeAttr('collapsed');
  25. }
  26. else {
  27. card.attr('collapsed', 1);
  28. }
  29. return false;
  30. });
  31. }
  32. addMCInitializer('stag-collapsible-card', init);
  33. }).call(window);