{"version":3,"file":"emoji_tabset.vue.cjs","sources":["../../../../components/emoji_picker/modules/emoji_tabset.vue"],"sourcesContent":["<template>\n  <div class=\"d-emoji-picker__tabset\">\n    <dt-tab-group\n      size=\"sm\"\n      tab-list-class=\"d-emoji-picker__tabset-list\"\n      :selected=\"selectedTab\"\n    >\n      <template #tabs>\n        <dt-tab\n          v-for=\"(tab, index) in tabs\"\n          :id=\"tab.id\"\n          :ref=\"`tabsetRef-${index}`\"\n          :key=\"tab.id\"\n          :panel-id=\"tab.panelId\"\n          :label=\"tab.label\"\n          aria-controls=\"d-emoji-picker-list\"\n          :tabindex=\"index + 1\"\n          @click.capture.stop=\"selectTabset(tab.id)\"\n          @keydown=\"handleKeyDown($event, tab.id)\"\n        >\n          <component\n            :is=\"tab.icon\"\n            size=\"400\"\n          />\n        </dt-tab>\n      </template>\n    </dt-tab-group>\n  </div>\n</template>\n\n<script>\nimport { DtTab, DtTabGroup } from '@/components/tab';\nimport { EMOJI_PICKER_CATEGORIES } from '@/components/emoji_picker/emoji_picker_constants';\nimport {\n  DtIconClock,\n  DtIconSatisfied,\n  DtIconLivingThing,\n  DtIconFood,\n  DtIconObject,\n  DtIconTransportation,\n  DtIconLightbulb,\n  DtIconHeart,\n  DtIconFlag,\n} from '@dialpad/dialtone-icons/vue2';\n\nexport default {\n  name: 'EmojiTabset',\n\n  components: {\n    DtTabGroup,\n    DtTab,\n  },\n\n  props: {\n    /**\n     * Whether to show the recently used tab or not\n     * @type {Boolean}\n     * @default false\n     */\n    showRecentlyUsedTab: {\n      type: Boolean,\n      default: false,\n    },\n\n    scrollIntoTab: {\n      type: Number,\n      required: true,\n    },\n\n    emojiFilter: {\n      type: String,\n      default: '',\n    },\n\n    /**\n     * The labels for the aria-label\n     * @type {Array}\n     * @required\n     */\n    tabSetLabels: {\n      type: Array,\n      required: true,\n    },\n  },\n\n  data () {\n    return {\n      selectedTab: '1',\n      tabsetRef: [],\n      TABS_DATA: [\n        { label: EMOJI_PICKER_CATEGORIES.MOST_RECENTLY_USED, icon: DtIconClock },\n        { label: EMOJI_PICKER_CATEGORIES.SMILEYS_AND_PEOPLE, icon: DtIconSatisfied },\n        { label: EMOJI_PICKER_CATEGORIES.NATURE, icon: DtIconLivingThing },\n        { label: EMOJI_PICKER_CATEGORIES.FOOD, icon: DtIconFood },\n        { label: EMOJI_PICKER_CATEGORIES.ACTIVITY, icon: DtIconObject },\n        { label: EMOJI_PICKER_CATEGORIES.TRAVEL, icon: DtIconTransportation },\n        { label: EMOJI_PICKER_CATEGORIES.OBJECTS, icon: DtIconLightbulb },\n        { label: EMOJI_PICKER_CATEGORIES.SYMBOLS, icon: DtIconHeart },\n        { label: EMOJI_PICKER_CATEGORIES.FLAGS, icon: DtIconFlag },\n      ],\n    };\n  },\n\n  computed: {\n    tabs () {\n      const tabsData = this.showRecentlyUsedTab ? this.TABS_DATA : this.TABS_DATA.slice(1);\n      return tabsData.map((tab, index) => ({\n        ...tab,\n        label: this.tabSetLabels[index],\n        // IDs on dt-tab component need to be on string\n        id: (index + 1).toString(),\n        panelId: (index + 1).toString(),\n      }));\n    },\n\n    isSearching () {\n      return this.emojiFilter.length > 0;\n    },\n  },\n\n  watch: {\n    scrollIntoTab: function (newVal) {\n      if (!this.isSearching) {\n        this.selectedTab = (newVal + 1).toString();\n      }\n    },\n\n    isSearching: function (newVal) {\n      if (newVal) {\n        this.selectedTab = null;\n      }\n    },\n  },\n\n  mounted () {\n    this.$nextTick(() => {\n      this.setTabsetRef();\n    });\n  },\n\n  methods: {\n    selectTabset (id) {\n      // IDs on scrollToTab need to be on number\n      const parseId = parseInt(id);\n      // IDs on dt-tab component need to be on string\n      this.selectedTab = id;\n      this.$emit('selected-tabset', parseId);\n    },\n\n    setTabsetRef () {\n      this.tabs.forEach((skin, index) => {\n        const refKey = `tabsetRef-${index}`;\n        if (this.$refs[refKey]) {\n          this.$set(this.tabsetRef, index, this.$refs[refKey][0].$el);\n        }\n      });\n    },\n\n    focusTabset () {\n      if (this.tabsetRef[0]) {\n        this.tabsetRef[0].focus();\n      }\n    },\n\n    // eslint-disable-next-line complexity\n    handleKeyDown (event, tabId) {\n      if (event.key === 'Enter') {\n        this.selectTabset(tabId);\n        if (this.tabsetRef[tabId - 1]) {\n          this.tabsetRef[tabId - 1].blur();\n        }\n      }\n\n      if (event.key === 'Tab') {\n        event.preventDefault();\n        if (event.shiftKey) {\n          this.$emit('focus-skin-selector');\n        } else {\n          this.$emit('focus-search-input');\n        }\n      }\n\n      if (event.key === 'ArrowDown') {\n        this.$emit('focus-search-input');\n      }\n    },\n  },\n};\n</script>\n"],"names":["DtTabGroup","DtTab","EMOJI_PICKER_CATEGORIES","DtIconClock","DtIconSatisfied","DtIconLivingThing","DtIconFood","DtIconObject","DtIconTransportation","DtIconLightbulb","DtIconHeart","DtIconFlag","tab"],"mappings":"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"}