Skip to content
Snippets Groups Projects
TInputIcon.vue 994 B
Newer Older
Emmanuel Salomon's avatar
Emmanuel Salomon committed
<template>
  <div class="relative h-full">
    <t-input
      ref="inputIcon"
      :type="type"
      class="pl-12"
      :class="inputClass"
      v-bind="$attrs"
      v-on="$listeners"
    />
    <div
      class="absolute flex items-center bottom-0 top-0 ml-4"
      :class="iconWrapperClass"
    >
Emmanuel Salomon's avatar
Emmanuel Salomon committed
      <fa slot="icon" :icon="icon" :class="iconClass" />
    </div>
  </div>
</template>

<script>
export default {
  name: 'TInputIcon',
  props: {
    type: {
      type: String,
      default: 'text',
    },
    icon: {
      type: String,
      default: null,
    },
    iconWrapperClass: {
      type: String,
      default: null,
    },
Emmanuel Salomon's avatar
Emmanuel Salomon committed
    iconClass: {
      type: String,
      default: null,
    },
    inputClass: {
      type: String,
      default: null,
    },
    hasFocus: {
Emmanuel Salomon's avatar
Emmanuel Salomon committed
      type: Boolean,
      default: false,
    },
  },
  mounted() {
    if (this.hasFocus) this.focus()
  },
  methods: {
    focus() {
      this.$refs.inputIcon.$el.focus()
    },
Emmanuel Salomon's avatar
Emmanuel Salomon committed
  },
}
</script>