How to use the coveo-search-ui.ComponentOptions.buildStringOption function in coveo-search-ui

To help you get started, we’ve selected a few coveo-search-ui examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github coveo / samples / jsui-custom-components / itemgrouping / src / ui / ItemGrouping.ts View on Github external
QueryEvents,
  IBuildingQueryEventArgs,
  Initialization,
} from 'coveo-search-ui';

export interface IItemGroupingOptions {
  fieldToGroup: string;
  fieldForRanking: string;
}

export class ItemGrouping extends Component {
  static ID = 'ItemGrouping';

  static options: IItemGroupingOptions = {

    fieldToGroup: ComponentOptions.buildStringOption({
      defaultValue: '@groupid',
    }),

    fieldForRanking: ComponentOptions.buildStringOption({
      defaultValue: '@color'
    })
  };

  constructor(public element: HTMLElement, public options: IItemGroupingOptions, public bindings: IComponentBindings) {
    super(element, ItemGrouping.ID, bindings);
    this.options = ComponentOptions.initComponentOptions(element, ItemGrouping, options);
    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));
    this.bind.onRootElement(QueryEvents.doneBuildingQuery, (args: IBuildingQueryEventArgs) => this.handleDoneBuildingQuery(args));
  }

  // Define the field to be used for grouping
github coveo / samples / jsui-custom-components / itemgrouping / src / ui / ItemGrouping.ts View on Github external
export interface IItemGroupingOptions {
  fieldToGroup: string;
  fieldForRanking: string;
}

export class ItemGrouping extends Component {
  static ID = 'ItemGrouping';

  static options: IItemGroupingOptions = {

    fieldToGroup: ComponentOptions.buildStringOption({
      defaultValue: '@groupid',
    }),

    fieldForRanking: ComponentOptions.buildStringOption({
      defaultValue: '@color'
    })
  };

  constructor(public element: HTMLElement, public options: IItemGroupingOptions, public bindings: IComponentBindings) {
    super(element, ItemGrouping.ID, bindings);
    this.options = ComponentOptions.initComponentOptions(element, ItemGrouping, options);
    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));
    this.bind.onRootElement(QueryEvents.doneBuildingQuery, (args: IBuildingQueryEventArgs) => this.handleDoneBuildingQuery(args));
  }

  // Define the field to be used for grouping
  private handleBuildingQuery(args: IBuildingQueryEventArgs) {
    args.queryBuilder.filterField = this.options.fieldToGroup;
    args.queryBuilder.maximumAge = 0;
  }