Security update for Core, with self-updated composer
[yaffs-website] / web / core / misc / collapse.js
1 /**
2 * DO NOT EDIT THIS FILE.
3 * See the following change record for more information,
4 * https://www.drupal.org/node/2815083
5 * @preserve
6 **/
7
8 (function ($, Modernizr, Drupal) {
9   function CollapsibleDetails(node) {
10     this.$node = $(node);
11     this.$node.data('details', this);
12
13     var anchor = location.hash && location.hash !== '#' ? ', ' + location.hash : '';
14     if (this.$node.find('.error' + anchor).length) {
15       this.$node.attr('open', true);
16     }
17
18     this.setupSummary();
19
20     this.setupLegend();
21   }
22
23   $.extend(CollapsibleDetails, {
24     instances: []
25   });
26
27   $.extend(CollapsibleDetails.prototype, {
28     setupSummary: function setupSummary() {
29       this.$summary = $('<span class="summary"></span>');
30       this.$node.on('summaryUpdated', $.proxy(this.onSummaryUpdated, this)).trigger('summaryUpdated');
31     },
32     setupLegend: function setupLegend() {
33       var $legend = this.$node.find('> summary');
34
35       $('<span class="details-summary-prefix visually-hidden"></span>').append(this.$node.attr('open') ? Drupal.t('Hide') : Drupal.t('Show')).prependTo($legend).after(document.createTextNode(' '));
36
37       $('<a class="details-title"></a>').attr('href', '#' + this.$node.attr('id')).prepend($legend.contents()).appendTo($legend);
38
39       $legend.append(this.$summary).on('click', $.proxy(this.onLegendClick, this));
40     },
41     onLegendClick: function onLegendClick(e) {
42       this.toggle();
43       e.preventDefault();
44     },
45     onSummaryUpdated: function onSummaryUpdated() {
46       var text = $.trim(this.$node.drupalGetSummary());
47       this.$summary.html(text ? ' (' + text + ')' : '');
48     },
49     toggle: function toggle() {
50       var _this = this;
51
52       var isOpen = !!this.$node.attr('open');
53       var $summaryPrefix = this.$node.find('> summary span.details-summary-prefix');
54       if (isOpen) {
55         $summaryPrefix.html(Drupal.t('Show'));
56       } else {
57         $summaryPrefix.html(Drupal.t('Hide'));
58       }
59
60       setTimeout(function () {
61         _this.$node.attr('open', !isOpen);
62       }, 0);
63     }
64   });
65
66   Drupal.behaviors.collapse = {
67     attach: function attach(context) {
68       if (Modernizr.details) {
69         return;
70       }
71       var $collapsibleDetails = $(context).find('details').once('collapse').addClass('collapse-processed');
72       if ($collapsibleDetails.length) {
73         for (var i = 0; i < $collapsibleDetails.length; i++) {
74           CollapsibleDetails.instances.push(new CollapsibleDetails($collapsibleDetails[i]));
75         }
76       }
77     }
78   };
79
80   var handleFragmentLinkClickOrHashChange = function handleFragmentLinkClickOrHashChange(e, $target) {
81     $target.parents('details').not('[open]').find('> summary').trigger('click');
82   };
83
84   $('body').on('formFragmentLinkClickOrHashChange.details', handleFragmentLinkClickOrHashChange);
85
86   Drupal.CollapsibleDetails = CollapsibleDetails;
87 })(jQuery, Modernizr, Drupal);