summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/boards/components/modal/filters/user.js.es6
blob: 8523028c29c11998cbb3d30ef374f9b2bdceded2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/* eslint-disable no-new */
/* global Vue */
/* global UsersSelect */
module.exports = Vue.extend({
  name: 'filter-user',
  props: {
    toggleClassName: {
      type: String,
      required: true,
    },
    dropdownClassName: {
      type: String,
      required: false,
      default: '',
    },
    toggleLabel: {
      type: String,
      required: true,
    },
    fieldName: {
      type: String,
      required: true,
    },
    nullUser: {
      type: Boolean,
      required: false,
      default: false,
    },
    projectId: {
      type: Number,
      required: true,
    },
  },
  mounted() {
    new UsersSelect(null, this.$refs.dropdown);
  },
  computed: {
    currentUsername() {
      return gon.current_username;
    },
    dropdownTitle() {
      return `Filter by ${this.toggleLabel.toLowerCase()}`;
    },
    inputPlaceholder() {
      return `Search ${this.toggleLabel.toLowerCase()}`;
    },
  },
  template: `
    <div class="dropdown">
      <button
        class="dropdown-menu-toggle js-user-search"
        :class="toggleClassName"
        type="button"
        data-toggle="dropdown"
        data-current-user="true"
        :data-any-user="'Any ' + toggleLabel"
        :data-null-user="nullUser"
        :data-field-name="fieldName"
        :data-project-id="projectId"
        :data-first-user="currentUsername"
        ref="dropdown">
        <span class="dropdown-toggle-text">
          {{ toggleLabel }}
        </span>
        <i class="fa fa-chevron-down"></i>
      </button>
      <div
        class="dropdown-menu dropdown-select dropdown-menu-user dropdown-menu-selectable"
        :class="dropdownClassName">
        <div class="dropdown-title">
          {{ dropdownTitle }}
          <button
            class="dropdown-title-button dropdown-menu-close"
            aria-label="Close"
            type="button">
            <i class="fa fa-times dropdown-menu-close-icon"></i>
          </button>
        </div>
        <div class="dropdown-input">
          <input
            type="search"
            class="dropdown-input-field"
            autocomplete="off"
            :placeholder="inputPlaceholder" />
          <i class="fa fa-search dropdown-input-search"></i>
          <i
            role="button"
            class="fa fa-times dropdown-input-clear js-dropdown-input-clear">
          </i>
        </div>
        <div class="dropdown-content"></div>
        <div class="dropdown-loading"><i class="fa fa-spinner fa-spin"></i></div>
      </div>
    </div>
  `,
});