Your IP : 216.73.216.79


Current Path : /var/www/html/blupointz/node_modules/vuesax/src/components/vsSelect/OptionGroup/
Upload File :
Current File : /var/www/html/blupointz/node_modules/vuesax/src/components/vsSelect/OptionGroup/vsOptionGroup.ts

import { VNode } from 'vue'
import { Component, Watch } from 'vue-property-decorator'
import VsComponent from '../../../mixins/component'

@Component
export default class VsOptionGroup extends VsComponent {
  optionGroup: boolean = true

  textFilter: string = null

  hiddenOptionGroup: boolean = false

  clickOption(value: any, label: any) {
    (this.$parent as any).clickOption(value, label)
  }
  get labels() {
    let labels: string = ''
    this.$slots.default.forEach((item) => {
      if (item.tag) {
        labels += (item.componentInstance as any).label
      }
    })
    return labels
  }

  @Watch('$parent.textFilter')
  handleTextFilter(val: string) {
    if (val) {
      if (this.labels.toLowerCase().indexOf(val.toLowerCase()) === -1) {
        this.hiddenOptionGroup = true
      } else {
        this.hiddenOptionGroup = false
      }
    } else {
      this.hiddenOptionGroup = false
    }
    this.textFilter = val
  }

  public render(h: any): VNode {
    return h('div', {
      staticClass: 'vs-select__option-group',
      class: [
        {
          hiddenOptionGroup: this.hiddenOptionGroup
        }
      ]
    },
      [
        h('h5', {}, this.$slots.title),
        this.$slots.default
      ]
    )
  }
}