| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 1 | <template> | 
|  | 2 | <div class="search-global"> | 
|  | 3 | <b-form-group | 
|  | 4 | :label="$t('global.form.search')" | 
| Yoshie Muranaka | 129d79b | 2020-07-02 16:04:18 -0700 | [diff] [blame] | 5 | :label-for="`searchInput-${_uid}`" | 
| SurenNeware | 787635a | 2020-11-24 22:42:42 +0530 | [diff] [blame] | 6 | label-class="invisible" | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 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 Muranaka | 129d79b | 2020-07-02 16:04:18 -0700 | [diff] [blame] | 14 | :id="`searchInput-${_uid}`" | 
| Dixsie Wolmers | 9b22b49 | 2020-09-07 21:26:06 -0500 | [diff] [blame] | 15 | ref="searchInput" | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 16 | v-model="filter" | 
| Yoshie Muranaka | 129d79b | 2020-07-02 16:04:18 -0700 | [diff] [blame] | 17 | class="search-input" | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 18 | type="text" | 
| SurenNeware | 787635a | 2020-11-24 22:42:42 +0530 | [diff] [blame] | 19 | :aria-label="$t('global.form.search')" | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 20 | :placeholder="placeholder" | 
|  | 21 | @input="onChangeInput" | 
| Dixsie Wolmers | 9b22b49 | 2020-09-07 21:26:06 -0500 | [diff] [blame] | 22 | > | 
|  | 23 | </b-form-input> | 
|  | 24 | <b-button | 
|  | 25 | v-if="filter" | 
|  | 26 | variant="link" | 
| Dixsie Wolmers | 30f11f8 | 2020-11-10 16:07:56 -0600 | [diff] [blame] | 27 | class="btn-icon-only input-action-btn" | 
| Dixsie Wolmers | 30f11f8 | 2020-11-10 16:07:56 -0600 | [diff] [blame] | 28 | :title="$t('global.ariaLabel.clearSearch')" | 
| Dixsie Wolmers | 9b22b49 | 2020-09-07 21:26:06 -0500 | [diff] [blame] | 29 | @click="onClearSearch" | 
|  | 30 | > | 
| Dixsie Wolmers | 30f11f8 | 2020-11-10 16:07:56 -0600 | [diff] [blame] | 31 | <icon-close /> | 
| SurenNeware | 6e2cb97 | 2020-12-24 20:58:16 +0530 | [diff] [blame] | 32 | <span class="sr-only">{{ $t('global.ariaLabel.clearSearch') }}</span> | 
| Dixsie Wolmers | 9b22b49 | 2020-09-07 21:26:06 -0500 | [diff] [blame] | 33 | </b-button> | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 34 | </b-input-group> | 
|  | 35 | </b-form-group> | 
|  | 36 | </div> | 
|  | 37 | </template> | 
|  | 38 |  | 
|  | 39 | <script> | 
|  | 40 | import IconSearch from '@carbon/icons-vue/es/search/16'; | 
| Dixsie Wolmers | 9b22b49 | 2020-09-07 21:26:06 -0500 | [diff] [blame] | 41 | import IconClose from '@carbon/icons-vue/es/close/20'; | 
|  | 42 |  | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 43 | export default { | 
|  | 44 | name: 'Search', | 
| Dixsie Wolmers | 9b22b49 | 2020-09-07 21:26:06 -0500 | [diff] [blame] | 45 | components: { IconSearch, IconClose }, | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 46 | props: { | 
|  | 47 | placeholder: { | 
|  | 48 | type: String, | 
| Derick Montague | 602e98a | 2020-10-21 16:20:00 -0500 | [diff] [blame] | 49 | default: function () { | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 50 | return this.$t('global.form.search'); | 
| Derick Montague | 602e98a | 2020-10-21 16:20:00 -0500 | [diff] [blame] | 51 | }, | 
|  | 52 | }, | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 53 | }, | 
|  | 54 | data() { | 
|  | 55 | return { | 
| Derick Montague | 602e98a | 2020-10-21 16:20:00 -0500 | [diff] [blame] | 56 | filter: null, | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 57 | }; | 
|  | 58 | }, | 
|  | 59 | methods: { | 
|  | 60 | onChangeInput() { | 
| Sukanya Pandey | edb8a77 | 2020-10-29 11:33:42 +0530 | [diff] [blame] | 61 | this.$emit('change-search', this.filter); | 
| Dixsie Wolmers | 9b22b49 | 2020-09-07 21:26:06 -0500 | [diff] [blame] | 62 | }, | 
|  | 63 | onClearSearch() { | 
|  | 64 | this.filter = ''; | 
| Sukanya Pandey | edb8a77 | 2020-10-29 11:33:42 +0530 | [diff] [blame] | 65 | this.$emit('clear-search'); | 
| Dixsie Wolmers | 9b22b49 | 2020-09-07 21:26:06 -0500 | [diff] [blame] | 66 | this.$refs.searchInput.focus(); | 
| Derick Montague | 602e98a | 2020-10-21 16:20:00 -0500 | [diff] [blame] | 67 | }, | 
|  | 68 | }, | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 69 | }; | 
|  | 70 | </script> | 
|  | 71 |  | 
|  | 72 | <style lang="scss" scoped> | 
| Yoshie Muranaka | 129d79b | 2020-07-02 16:04:18 -0700 | [diff] [blame] | 73 | .search-input { | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 74 | padding-left: ($spacer * 2); | 
|  | 75 | } | 
|  | 76 | .search-icon { | 
|  | 77 | position: absolute; | 
|  | 78 | left: 10px; | 
|  | 79 | top: 12px; | 
|  | 80 | z-index: 4; | 
| Yoshie Muranaka | 01da818 | 2020-07-08 15:46:43 -0700 | [diff] [blame] | 81 | stroke: gray('400'); | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 82 | } | 
| SurenNeware | 71724be | 2020-06-01 15:31:00 +0530 | [diff] [blame] | 83 | </style> |