"Faceted Widget" not aligned properly inside the container whose size is 6

Yash47
Tera Contributor

Hello All,

I have customized the "Faceted Widget" from AI Search module, so when I added that widget in custom page container whose size is 6 it is not aligned properly.

 

Widget should align properly as per container size and also it should resize properly when I minimize or maximize the screen size as well.

 

Can anyone please let me know what's wrong in this and how can I achieve this.

Please find the attached image for reference.

 

Yash47_0-1692268554827.png

 

 

HTML code : 


<div>
<div ng-if="!c.data.aisEnabled" ng-class="{'hidden-xs': showFilterMenu}">
<div class="row header">
<div class="col-md-5">
<sp-widget widget="data.breadcrumbsWidget"></sp-widget>
</div>
<div class="col-md-3" ng-if="data.showTypeaheadSearch">
<sp-widget widget="data.typeaheadSearchWidget"></sp-widget>
</div>

</div>
<!--<div class="col-md-3" ng-if="data.showTypeaheadSearch">-->

<div class="row">
<div class="col-sm-2 hidden-xs">
<a class="skip-link sr-only" ng-click="skipToSearchResults()" href="javascript&colon;void(0)">${Skip to search results}</a>
<sp-search-nav search-sources="data.searchSources" q="data.q" t="data.t"></sp-search-nav>
<section ng-show="hasFacet" aria-label="${Search results filters}">
<sp-facet-lists collapsed="collpaseFacets" list-title="c.data.facetTitle" search-sources="data.searchSources" t="data.t"></sp-facet-lists>
</section>
</div>
<div class="col-sm-1">
<div class="panel panel-default" role="region" aria-label="{{::data.SEARCH_RESULTS}}">
<div ng-if="isLoading || results.length>0" class="panel-heading flex">
<h2 class="h4 panel-title results-heading" tabindex="-1">${{{t_label}} results for "{{data.q}}"}</h2>
<button class="btn btn-link hidden visible-xs pull-right" data-toggle="tooltip" data-original-title="{{isFilterApplied ? '${Change Filters}' : '${Apply Filters}'}}" ng-attr-aria-label="{{isFilterApplied ? '${Change Filters}' : '${Apply Filters}'}}" ng-class="{'filter-icon': !isFilterApplied}" ng-click="openFilterMenu()">
<fa name="filter"></fa>
</button>
</div>
<div ng-if="data.pills && data.pills.length>0" class="panel-heading flex break-word hidden-xs facet-pill-container">
<div class="h4 panel-title pills">
<span class="pills-label">${Filtering by}</span>
<div>
<sp-facet-pill facet="pill" ng-repeat="pill in data.pills"></sp-facet-pill>
</div>
</div>
<div>
<button class="btn btn-link clear-all" ng-click="clearAll()" aria-label="${Clear all active facets}">${Clear All}</button>
</div>
</div>
<div ng-show="isLoading" class="loading-icon">
<i class="fa fa-spinner fa-spin fa-3x fa-fw" style="font-size:24px"></i>
<div class="">${Hold on, your results are loading}...</div>
</div>
<div ng-show="!isLoading" class="panel-default">
<div ng-if="results.length==0" class="panel-default">
<div class="panel-heading">
<h2 class="h4 panel-title results-heading" tabindex="-1">${No results}</h2>
<button ng-if="showFilterIcon" class="btn btn-link hidden visible-xs pull-right" data-toggle="tooltip" data-original-title="{{isFilterApplied ? '${Change Filters}' : '${Apply Filters}'}}" ng-attr-aria-label="{{isFilterApplied ? '${Change Filters}' : '${Apply Filters}'}}" ng-class="{'filter-icon': !isFilterApplied}" ng-click="openFilterMenu()">
<fa name="filter"></fa>
</button>
</div>
<div class="panel-body wrapper break-word">
<p>${Your search - <b>{{data.q}}</b> - did not match any documents}</p>
<div ng-if="options.show_did_you_mean && data.suggestions.length > 0">
${Did you mean}:
<ul>
<li ng-repeat="term in data.suggestions track by $index">
<a href="javascript&colon;void(0)" ng-click="search(term)">{{term}}</a>
</li>
</ul>
</div>
<p ng-if="options.show_did_you_mean && data.suggestions.length > 0">${Other suggestions}:</p>
<p ng-if="!options.show_did_you_mean || data.suggestions.length == 0">${Suggestions}:</p>
<ul>
<li>${Make sure all words are spelled correctly}</li>
<li>${Try different, more general, or fewer keywords}</li>
</ul>
</div>
</div>
<div ng-if="results.length>0" ng-class="{'search-result-xs': smallScreenSize}">
<div role="list">
<div role="listitem" ng-repeat="item in results" class="panel-body b-b result-item" ng-click="sendAnalytics(item, $index)">
<div ng-include="item.templateID" data-index="{{$index}}"></div>
</div>
</div>
<div role="region" aria-label="${pagination}" class="panel-body b-b">
<div class="pagination-section">
<span ng-if="showPagination && showLoadMore"><button type="button" class="btn btn-link" aria-label="${Load more results}" ng-click="fetchMoreResults(query_start_location)">${Load more results}</button></span>
<span ng-if="showPagination && !showLoadMore" aria-label="${End of results}">${End of results}</span>
<span ng-if="!showPagination" aria-label="{{endPagination}}">{{endPagination}}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="hidden search-overlay panel panel-default list-view" ng-class="{'visible-xs': showFilterMenu}">
<div class="panel-heading header">
<span>
<button id="cancel" class="btn btn-link clear pull-left" ng-click="cancel()" aria-label="${Cancel}">${Cancel}</button>
</span>
<span style="visibility: hidden;">
${results}
</span>
<span>
<button class="btn btn-link pull-right" ng-class="{'disabled': !showApply}" aria-disabled="{{!showApply}}" ng-click="apply()" aria-label="${Done}" ng-disabled="!showApply">${Done}</button>
</span>
</div>
<sp-search-nav show-toggle="true" list-view="true" search-sources="data.searchSources" q="data.q" t="data.t"></sp-search-nav>
<section ng-show="hasFacet" aria-label="${Search results filters}">
<sp-facet-lists collapsed="true" collapsed-searchsource="collpaseFacets" toggle-searchsource="true" list-title="options.facet_list_title" search-sources="data.searchSources" t="data.t"></sp-facet-lists>
</section>
</div>
<div class="hidden search-overlay search-filter-menu" ng-class="{'visible-xs': showFilterMenu && isFilterMenuLoading}">
<div class="loading-icon">
<i class="fa fa-spinner fa-spin fa-3x fa-fw" style="font-size:24px"></i>
<div class="">${Hold on, your filters are loading}...</div>
</div>
</div>
<div ng-if="c.data.aisEnabled" class="ai-search">
<div class="row header" ng-class="{'hidden': isMobileFacets && screenSize == 'sm'}">
<div class="col-sm-8 ais-breadCrumbs">
<sp-widget widget="data.breadcrumbsWidget"></sp-widget>
</div>
<div class="col-sm-3 ais-typeAhead" ng-if="data.showTypeaheadSearch">
<sp-widget widget="data.typeaheadSearchWidget"></sp-widget>
</div>
</div>

<div class="panel-heading break-word"><h4 class="panel-title">${Search results for '{{data.q}}'}</h4></div>

<div class="container">
<div class="ais-tab-filter" ng-class="{'hidden': isMobileFacets && screenSize == 'ms'}">
<sn-tab-filter
size={{screenSize}}
search-filters={{data.searchMetadata.filters}}
class="triggerActions"
selected-filters={{data.searchMetadata.selectedFilterIds}}
sort-filters={{data.searchMetadata.sortOptions}}
selected-sort-filters={{data.searchMetadata.selectedSortOptionIds}}></sn-tab-filter>
</div>
<button class="visible-xs ais-mobile-facets" ng-click="c.toggleFilter(false)" ng-if="data.showFacets && !isMobileFacets && screenSize == 'sm'" aria-controls="mobile-facets">
<i class="fa fa-filter"> </i>
<span>${Filter}</span>
</button>
<div class="ais-results-container" role="tabpanel" aria-label="{{data.selectedTab || '${All}'}}">
<div class="ais-facets" ng-class="{'col-sm-3': data.showFacets,'hidden': !data.showFacets || !isMobileFacets && screenSize == 'sm'}" ng-attr-id="{{screenSize == 'sm' ? 'mobile-facets': ''}}">
<div ng-if="data.showFacets">
<sn-search-facets
size={{screenSize}}
class="triggerActions"
facets={{data.facetsData}}
label={{data.facetTitle}}
selected-options={{data.searchMetadata.appliedFacetFilters}}
search-context-config-id={{data.searchContextConfigId}}
search-term={{data.searchTerm}}
sort-filters={{data.searchMetadata.sortOptions}}
selected-sort-filters={{data.searchMetadata.selectedSortOptionIds}}></sn-search-facets>
</div>
</div>
<div class="ais-results" ng-class="{'col-sm-5': data.showFacets, 'hidden': isMobileFacets && screenSize == 'sm'}">
<sn-search-results-container
is-loading={{c.isLoading}}
search-context-config-id={{data.searchContextConfigId}}
class="triggerActions"
search-result-metadata={{data.searchMetadata.searchResultMetadata}}
genius-results={{c.results.geniusResultsTemplates}}
search-results={{c.results.searchResultsTemplates}}
spell-check-font-size={{data.spellCheckFontSize}}></sn-search-results-container>
</div>
</div>
</div>
</div>
</div>

 

 

CSS Code : 


.header {
padding: 10px;
}
 
button.toggle-icon {
  background-color: transparent;
}
 
.sp-facet-list .panel-heading .panel-title button {
  padding-left: 0.8rem;
}
 
.search_bar{
 width:100%; 
}
 
 
a.question-tag {
  color: #39739d;
  background-color: #e1ecf4;
  border: 1px solid #e1ecf4;
  display: inline-block;
  margin: 4px 4px 4px 0;
  border-radius: 0;
  text-align: center;
  line-height: 1;
  padding: .4em .5em;
}
 
.loading-icon {
  text-align: center;
  padding: 30px;
}
 
.loading-icon div {
  padding: 10px;
}
 
.pagination-section {
text-align: center;
}
 
.panel-title:focus {
  outline: -webkit-focus-ring-color auto 5px;
}
 
.search-header {
  padding-top: 15px;
  padding-bottom: 15px;
}
 
.pills {
  display: flex;
}
 
.pills-label {
  min-width: 80px;
  margin-top: 5px;
}
 
h2 {
  display: inline-block;
}
 
.btn-link {
  padding: 0;
}
 
.flex {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}
 
.flex h2 {
  word-break: break-word;
}
 
.search-result-xs {
  margin: 0 0 0 0;
}
 
.search-overlay {
  width: 100%;
  height: 100%;
  min-height: 100vh;
  z-index: 2;
  top: 0;
  left: 0;
  border-left: 0;
  border-right: 0;
  margin-top: -1rem;
  background: #FFF;
}
 
.search-filter-menu {
  z-index: 3 !important;
  opacity: 0.9;
  height: 100vh;
}
 
.search-overlay .header {
  text-align: center;
}
 
.filter-icon {
  color: #fff;
  -webkit-text-stroke-width: 1px;
  -webkit-text-stroke-color: #717171;
}
 
_:-ms-lang(x), .filter-icon {
  color: #fff;
  text-shadow:
    -1px -1px 0 #717171,
     1px -1px 0 #717171,
    -1px 1px 0 #717171,
     1px 1px 0 #717171;
}
 
.disabled {
  color: #ddd;
}
 
.panel-heading {
  color: #fff;
  background-color: #FD5821; 
  padding: 10px 20px; 
  border-left: solid 10px #011e41;
  border-radius: 5px;
}
 
.results-heading {
  padding-top: 3px;
  padding-bottom: 2px;
}
 
.results-heading:focus {
  outline: none;
}
 
.result-item {
  word-break: break-word;
}
 
.facet-pill-container {
  padding-top: 5px;
  padding-bottom: 5px;
}
 
.sc {
  i.ta-icon, i.ta-img {
    width: 30px;
    height: 30px;
    line-height: 20px;
    background-size: contain;
    display: inline-block;
    background-repeat: no-repeat;
    background-position: center center;
    text-align: center;
    float:left;
    padding-right: 8px;
  }
}
 
.skip-link {
  left: 10px;
  top: -15px;
}
 
.ai-search {
  .ais-tab-filter {
    position: relative;
    margin-top: 15px;
    margin-bottom: 20px;
    width: 100%;
  }
  .ais-facets {
    padding-right: 17px;
padding-left: 0;
}
.ais-results {
padding-right: 0;
  }
  .ais-mobile-facets {
    border: 1px solid $btn-default-border;
    background-color: $btn-default-bg;
    padding: 4px 10px;
    margin-bottom: 25px;
    margin-left:10px;
  }
  @media(min-width: 767px) {
    .ais-typeAhead {
      width:100%;
      padding-right: 0;
      
    }
  }
  @media() {
    width:100%;
    .ais-facets {
     
      padding-right: 0;
    }
    .row {
      margin: 0;
    }
    .ais-results-container,
    .ais-tab-filter {
     
      padding: 0 10px;
    }
    .ais-results {
     
      padding-left: 0;
      padding-right: 0;
    }
  }
   .fa-filter {
     color: white;
     text-shadow: -1px 0 $gray-light, 0 1px $gray-light, 1px 0 $gray-light, 0 -1px $gray-light;
  }
}
 
.clear-all {
  color: $brand-primary-darker;
}
 
a.m-b-sm {
  width:100%;
  padding: 6px 0;
  margin-top: 4px;
  margin-bottom: 4px !important;
}

 

0 REPLIES 0