blob: eeb909a841312f842c33e0d81d5f4e4ce9e73865 [file] [log] [blame]
SurenNeware71724be2020-06-01 15:31:00 +05301<template>
2 <div class="search-global">
3 <b-form-group
4 :label="$t('global.form.search')"
Yoshie Muranaka129d79b2020-07-02 16:04:18 -07005 :label-for="`searchInput-${_uid}`"
SurenNeware71724be2020-06-01 15:31:00 +05306 label-sr-only
7 class="mb-2"
8 >
9 <b-input-group size="md" class="align-items-center">
10 <b-input-group-prepend>
11 <icon-search class="search-icon" />
12 </b-input-group-prepend>
13 <b-form-input
Yoshie Muranaka129d79b2020-07-02 16:04:18 -070014 :id="`searchInput-${_uid}`"
Dixsie Wolmers9b22b492020-09-07 21:26:06 -050015 ref="searchInput"
SurenNeware71724be2020-06-01 15:31:00 +053016 v-model="filter"
Yoshie Muranaka129d79b2020-07-02 16:04:18 -070017 class="search-input"
SurenNeware71724be2020-06-01 15:31:00 +053018 type="text"
19 :placeholder="placeholder"
20 @input="onChangeInput"
Dixsie Wolmers9b22b492020-09-07 21:26:06 -050021 >
22 </b-form-input>
23 <b-button
24 v-if="filter"
25 variant="link"
26 :aria-label="$t('global.ariaLabel.clearSearch')"
27 @click="onClearSearch"
28 >
29 <icon-close :title="$t('global.ariaLabel.clearSearch')" />
30 </b-button>
SurenNeware71724be2020-06-01 15:31:00 +053031 </b-input-group>
32 </b-form-group>
33 </div>
34</template>
35
36<script>
37import IconSearch from '@carbon/icons-vue/es/search/16';
Dixsie Wolmers9b22b492020-09-07 21:26:06 -050038import IconClose from '@carbon/icons-vue/es/close/20';
39
SurenNeware71724be2020-06-01 15:31:00 +053040export default {
41 name: 'Search',
Dixsie Wolmers9b22b492020-09-07 21:26:06 -050042 components: { IconSearch, IconClose },
SurenNeware71724be2020-06-01 15:31:00 +053043 props: {
44 placeholder: {
45 type: String,
Yoshie Muranaka83458ae2020-06-18 14:01:57 -070046 default: function() {
SurenNeware71724be2020-06-01 15:31:00 +053047 return this.$t('global.form.search');
48 }
49 }
50 },
51 data() {
52 return {
53 filter: null
54 };
55 },
56 methods: {
57 onChangeInput() {
58 this.$emit('changeSearch', this.filter);
Dixsie Wolmers9b22b492020-09-07 21:26:06 -050059 },
60 onClearSearch() {
61 this.filter = '';
62 this.$emit('clearSearch');
63 this.$refs.searchInput.focus();
SurenNeware71724be2020-06-01 15:31:00 +053064 }
65 }
66};
67</script>
68
69<style lang="scss" scoped>
Yoshie Muranaka129d79b2020-07-02 16:04:18 -070070.search-input {
SurenNeware71724be2020-06-01 15:31:00 +053071 padding-left: ($spacer * 2);
72}
73.search-icon {
74 position: absolute;
75 left: 10px;
76 top: 12px;
77 z-index: 4;
Yoshie Muranaka01da8182020-07-08 15:46:43 -070078 stroke: gray('400');
SurenNeware71724be2020-06-01 15:31:00 +053079}
Dixsie Wolmers9b22b492020-09-07 21:26:06 -050080
81.btn {
82 position: absolute;
83 right: 0;
84 top: 0;
85 padding: 0.4rem 1rem;
86 z-index: 4;
87 svg {
88 margin-left: 0;
89 vertical-align: sub;
90 }
91}
SurenNeware71724be2020-06-01 15:31:00 +053092</style>