Advertisement
Jargs

Search Settings - PageListAsBlocksDepthTwo

Jan 4th, 2022 (edited)
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {%- javascript -%}
  2. $(document).ready(function()
  3. {
  4.     $('#pageSearch')
  5.         // prevent the enter key from submitting the form
  6.         .on('keydown', function(e)
  7.         {
  8.             if (e.keyCode == 13)
  9.             {
  10.                 e.preventDefault();
  11.                 return false;
  12.             }
  13.         })
  14.         // Filter page links when Search box is updated
  15.         .on('keyup', function(e)
  16.         {
  17.             var $text = $(this),
  18.                 $lists = $('.search-target .panel-body > ul')
  19.                 value = $text.val().toLowerCase();
  20.  
  21.             // hides/reveals panel based on the presence of search results
  22.             $lists.each(function()
  23.             {
  24.                 var $list = $(this),
  25.                     $panel = $list.parents('.search-target'),
  26.                     $children = $list.children('li'),
  27.                     isOpen = $panel.is(':visible'),
  28.  
  29.                     // Filter page links when Search box is updated
  30.                     $matched = $children.filter(function()
  31.                     {
  32.                         var $setting = $(this),
  33.                             isShown = $setting.is(':visible'),
  34.                             isMatch = $setting.text().toLowerCase().indexOf(value) > -1;
  35.  
  36.                         $setting.toggleClass('match', isMatch);
  37.  
  38.                         if (isMatch && !isShown) $setting.stop(true,false).show(200);
  39.                         else if (!isMatch && isShown) $setting.stop(true,false).hide(200);
  40.  
  41.                         return isMatch;
  42.                     }),
  43.                     matchCount = $matched.length;
  44.  
  45.                 //if a panel has no visible children then hide it
  46.                 if (isOpen && matchCount == 0)
  47.                    $panel.stop(true,false).slideUp(400);
  48.                 else if (!isOpen && matchCount > 0)
  49.                    $panel.stop(true,false).slideDown(400, function(){ $(this).css('height', 'auto'); });
  50.             });
  51.         });
  52. });
  53. {%- endjavascript -%}
  54.  
  55. {%- stylesheet -%}
  56.     h2 { margin-left:10px; }
  57.     #pageSearch { margin-bottom:15px; }
  58. {%- endstylesheet -%}
  59.  
  60. <div class="form-inline">
  61.     <div class="form-group">
  62.         <input id="pageSearch" type="text" class="form-control input-sm" placeholder="Search&hellip;">
  63.     </div>
  64. </div>
  65.  
  66. {%- for childPage in Page.Pages -%}
  67.     {%- if  childPage.Title != 'All Settings' -%}
  68.         <div class="panel panel-default list-as-blocks search-target clearfix">
  69.             <div class="panel-heading">
  70.                 <h2 class="panel-title"><i class="{{ childPage.IconCssClass }}"></i> {{ childPage.Title }}</h2>
  71.             </div>
  72.             <div class="panel-body">
  73.                 <ul>
  74.                     {%- for grandChildPage in childPage.Pages -%}
  75.                         <li>
  76.                             <a href="{{ grandChildPage.Url }}" {% if grandChildPage.DisplayDescription != 'true' %} title="{{ grandChildPage.Description }}"{% endif %}>
  77.                                 {% if grandChildPage.IconCssClass != '' %}
  78.                                     <i class="{{ grandChildPage.IconCssClass }}"></i>
  79.                                 {% endif %}
  80.                                 <h3>{{ grandChildPage.Title }}</h3>
  81.                             </a>
  82.                         </li>
  83.                     {%- endfor -%}
  84.                 </ul>
  85.             </div>
  86.         </div>
  87.     {%- endif -%}
  88. {%- endfor -%}
  89.  
  90. {%- if IncludePageList != empty -%}
  91. <div class="panel panel-default list-as-blocks search-target clearfix">
  92.     <div class="panel-heading"><h2 class="panel-title">Additional Pages</h2></div>
  93.     <div class="panel-body">
  94.         <ul>
  95.             {%- for includedPage in IncludePageList -%}
  96.                 {%- assign attributeParts = includedPage | PropertyToKeyValue -%}
  97.                 <li>
  98.                     <a href="{{ attributeParts.Value }}">{{ attributeParts.Key }}</a>
  99.                 </li>
  100.             {%- endfor -%}
  101.         </ul>
  102.     </div>
  103. </div>
  104. {%- endif -%}
  105.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement