@itfin/components 1.4.5 → 1.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itfin/components",
3
- "version": "1.4.5",
3
+ "version": "1.4.7",
4
4
  "author": "Vitalii Savchuk <esvit666@gmail.com>",
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <itf-dropdown text ref="dropdown" autoclose="outside" shadow class="h-100">
2
+ <itf-dropdown text ref="dropdown" autoclose="outside" shadow class="h-100" append-to-context>
3
3
  <template #button>
4
4
  <div class="filter-pill rounded" :class="{'filter-not-default-pill': !isDefault && !isInvalid, 'filter-invalid-pill': isInvalid}">
5
5
  <div class="filter-pill__label" :class="{'filter-pill__not-default-value': !isDefault && !isInvalid, 'filter-pill__default-value': isDefault, 'filter-pill__label-invalid': isInvalid}">
@@ -12,7 +12,7 @@
12
12
  </div>
13
13
  </template>
14
14
 
15
- <div>
15
+ <div class="px-2">
16
16
  <template v-if="type === 'list'">
17
17
  <a
18
18
  v-for="(item, n) in options.items"
@@ -19,16 +19,18 @@
19
19
  <div class="text-muted text-center py-4">{{ $t('components.filter.noResults') }}</div>
20
20
  </div>
21
21
  </div>
22
- <div v-for="(val, n) of mappedValues" :key="n" class="dropdown-item" :class="{'active': val.isSelected}" @click="onFilterClick(val)">
22
+ <div class="facets-list">
23
+ <div v-for="(val, n) of mappedValues" :key="n" class="dropdown-item px-2" :class="{'active': val.isSelected}" @click="onFilterClick(val)">
23
24
  <span class="facet-name text-dark d-flex align-items-center">
24
25
  <itf-checkbox ungrouped :value="val.isSelected" class="m-0" />
25
26
  <div class="w-100 text-truncate">{{ val.label }}</div>
26
27
  </span>
27
- <span class="facet-stat text-muted">
28
+ <span v-if="val.count" class="facet-stat text-muted">
28
29
  {{ val.count }}
29
30
  <span class="facet-bar"><span :style="{'--bar-width': `${getPercent(val)}%`}" class="facet-bar-progress" /></span>
30
31
  </span>
31
32
  </div>
33
+ </div>
32
34
 
33
35
  <itf-button default class="mt-1" v-if="hasMore" small block @click="toggleMore">
34
36
  <span v-if="showMore">{{ $t('components.filter.hideMore', { count: visibleList.length }) }}</span>
@@ -43,7 +45,13 @@
43
45
  padding: 0 0.75rem .5rem;
44
46
  margin: 0 -.75rem .75rem;
45
47
  }
48
+ .facets-list {
49
+ max-height: 50vh;
50
+ overflow: auto;
51
+ }
46
52
  .dropdown-item {
53
+ --bs-dropdown-link-active-bg: rgba(var(--bs-primary-rgb), .25);
54
+
47
55
  cursor: pointer;
48
56
  display: inline-flex;
49
57
  -webkit-box-align: center;
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="itf-filter-panel d-flex flex-column gap-3 align-items-start">
3
- <div class="d-flex gap-2 justify-content-between w-100">
3
+ <div v-if="!filtersOnly" class="d-flex gap-2 justify-content-between w-100">
4
4
  <slot name="search">
5
5
  <div>
6
6
  <itf-text-field
@@ -17,7 +17,7 @@
17
17
  </div>
18
18
  </slot>
19
19
  <div class="d-flex gap-2">
20
- <itf-button v-if="showFilter" default icon class="position-relative" @click="toggleFilters">
20
+ <itf-button v-if="showFilter" default icon class="position-relative" @click="toggleFilters" :class="{'active': showFilters}">
21
21
  <itf-icon new name="filter" />
22
22
  <span v-if="activeFiltersCount" class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-primary">
23
23
  {{activeFiltersCount}}
@@ -27,7 +27,7 @@
27
27
  <slot name="after-filter-btn"></slot>
28
28
  </div>
29
29
  </div>
30
- <div v-if="showFilters && showFilter" class="d-flex gap-2 flex-nowrap">
30
+ <div v-if="showFilters && showFilter" class="d-flex gap-2 flex-nowrap filters-row">
31
31
  <filter-badge
32
32
  v-for="(facet, n) in visibleFilters"
33
33
  :key="n"
@@ -64,6 +64,15 @@
64
64
  color: #8E97A5;
65
65
  }
66
66
  }
67
+
68
+ .filters-row {
69
+ @media (max-width: 768px) {
70
+ overflow: auto;
71
+ width: 100%;
72
+ padding: 2px;
73
+ margin: -2px;
74
+ }
75
+ }
67
76
  }
68
77
  </style>
69
78
  <script>
@@ -98,6 +107,7 @@ class FilterPanel extends Vue {
98
107
  @Prop(String) stateName;
99
108
  @Prop(Boolean) search;
100
109
  @Prop({ type: Boolean, default: true }) showFilter;
110
+ @Prop({ type: Boolean, default: false }) filtersOnly;
101
111
  @Prop(Boolean) mini;
102
112
  @Prop({ type: String, default: function() { return this.$t('components.filter.search'); } }) searchPlaceholder;
103
113
 
@@ -132,7 +142,8 @@ class FilterPanel extends Vue {
132
142
  if (this.endpoint) {
133
143
  this.loading = true;
134
144
  await this.$try(async () => {
135
- const {filters, tableSchema} = await this.$axios.$get(this.endpoint);
145
+ const payload = this.panel ? this.panel.getPayload() : {};
146
+ const {filters, tableSchema} = await this.$axios.$get(this.endpoint, { params: payload });
136
147
  this.filters = filters;
137
148
  this.$emit('set-table-schema', tableSchema);
138
149
  this.loadFiltersValue();
@@ -258,7 +269,7 @@ class FilterPanel extends Vue {
258
269
  if (value.value && value.value.length > 1) {
259
270
  value.label = `${value.label} та ще ${value.value.length - 1}`;
260
271
  }
261
- value.isDefault = facet.options.defaultValue && value.value.length === 1 ? JSON.stringify(value.value[0]) === JSON.stringify(facet.options.defaultValue.value) : false;
272
+ value.isDefault = facet.options.defaultValue ? JSON.stringify(value.value) === JSON.stringify(facet.options.defaultValue.value) : false;
262
273
  } else if (facet.type === 'amount') {
263
274
  if (value.value === null || (Array.isArray(value.value) && value.value.every(v => v === null))) {
264
275
  value.value = facet.options.defaultValue.value;
@@ -1,4 +1,4 @@
1
1
  <template><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path fill-rule="evenodd" clip-rule="evenodd" d="M12 4.3999C13.9882 4.3999 15.6 6.01168 15.6 7.9999V10.0489C16.033 10.1018 16.3329 10.2114 16.5607 10.4392C17 10.8786 17 11.5857 17 12.9999V14.9999C17 16.4141 17 17.1212 16.5607 17.5606C16.1213 17.9999 15.4142 17.9999 14 17.9999H10C8.58579 17.9999 7.87868 17.9999 7.43934 17.5606C7 17.1212 7 16.4141 7 14.9999V12.9999C7 11.5857 7 10.8786 7.43934 10.4392C7.66715 10.2114 7.96695 10.1018 8.4 10.0489L8.4 7.9999C8.4 6.01168 10.0118 4.3999 12 4.3999ZM14.4 7.9999V10.0003C14.2733 9.99991 14.1401 9.99991 14 9.99991H10C9.85987 9.99991 9.72668 9.99991 9.6 10.0003L9.6 7.9999C9.6 6.67442 10.6745 5.5999 12 5.5999C13.3255 5.5999 14.4 6.67442 14.4 7.9999ZM12.6 12.9999C12.6 12.6685 12.3314 12.3999 12 12.3999C11.6686 12.3999 11.4 12.6685 11.4 12.9999V14.9999C11.4 15.3313 11.6686 15.5999 12 15.5999C12.3314 15.5999 12.6 15.3313 12.6 14.9999V12.9999Z" fill="currentColor"/>
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M12 4.40002C13.9882 4.40002 15.6 6.0118 15.6 8.00002V10.0491C16.033 10.1019 16.3329 10.2116 16.5607 10.4394C17 10.8787 17 11.5858 17 13V15C17 16.4142 17 17.1214 16.5607 17.5607C16.1213 18 15.4142 18 14 18H10C8.58579 18 7.87868 18 7.43934 17.5607C7 17.1214 7 16.4142 7 15V13C7 11.5858 7 10.8787 7.43934 10.4394C7.66715 10.2116 7.96695 10.1019 8.4 10.0491L8.4 8.00002C8.4 6.0118 10.0118 4.40002 12 4.40002ZM14.4 8.00002V10.0005C14.2733 10 14.1401 10 14 10H10C9.85987 10 9.72668 10 9.6 10.0005L9.6 8.00002C9.6 6.67454 10.6745 5.60002 12 5.60002C13.3255 5.60002 14.4 6.67454 14.4 8.00002ZM12.6 13C12.6 12.6687 12.3314 12.4 12 12.4C11.6686 12.4 11.4 12.6687 11.4 13V15C11.4 15.3314 11.6686 15.6 12 15.6C12.3314 15.6 12.6 15.3314 12.6 15V13Z" fill="currentColor"/>
3
3
  </svg>
4
4
  </template>
@@ -1,506 +1,507 @@
1
1
  export default {
2
- 'alarm_clock': () => import('./components/alarm_clock.vue'),
3
- 'arrow_down': () => import('./components/arrow_down.vue'),
2
+ 'archive': () => import('./components/archive.vue'),
3
+ 'angle': () => import('./components/angle.vue'),
4
4
  'align_vertical': () => import('./components/align_vertical.vue'),
5
- 'arrow_left': () => import('./components/arrow_left.vue'),
5
+ 'align_horizontal': () => import('./components/align_horizontal.vue'),
6
6
  'airplay': () => import('./components/airplay.vue'),
7
- 'angle': () => import('./components/angle.vue'),
8
- 'arrow_left_circle': () => import('./components/arrow_left_circle.vue'),
9
- 'arrow_top_left': () => import('./components/arrow_top_left.vue'),
7
+ 'arrow_bottom_left': () => import('./components/arrow_bottom_left.vue'),
8
+ 'arrow_bottom_right': () => import('./components/arrow_bottom_right.vue'),
9
+ 'alarm_clock': () => import('./components/alarm_clock.vue'),
10
+ 'arrow_down_circle': () => import('./components/arrow_down_circle.vue'),
11
+ 'arrow_down': () => import('./components/arrow_down.vue'),
10
12
  'arrow_right': () => import('./components/arrow_right.vue'),
11
- 'align_horizontal': () => import('./components/align_horizontal.vue'),
12
- 'arrow_up_circle': () => import('./components/arrow_up_circle.vue'),
13
- 'audio_wave': () => import('./components/audio_wave.vue'),
14
- 'backspace': () => import('./components/backspace.vue'),
15
- 'bag': () => import('./components/bag.vue'),
16
- 'arrow_top_right': () => import('./components/arrow_top_right.vue'),
13
+ 'arrow_right_circle': () => import('./components/arrow_right_circle.vue'),
14
+ 'arrow_top_left': () => import('./components/arrow_top_left.vue'),
15
+ 'arrow_left_circle': () => import('./components/arrow_left_circle.vue'),
17
16
  'arrow_up': () => import('./components/arrow_up.vue'),
17
+ 'arrow_left': () => import('./components/arrow_left.vue'),
18
18
  'backward': () => import('./components/backward.vue'),
19
- 'battery_half': () => import('./components/battery_half.vue'),
20
- 'battery_low': () => import('./components/battery_low.vue'),
21
- 'arrow_right_circle': () => import('./components/arrow_right_circle.vue'),
22
- 'bell': () => import('./components/bell.vue'),
23
- 'bell_disabled': () => import('./components/bell_disabled.vue'),
19
+ 'arrow_top_right': () => import('./components/arrow_top_right.vue'),
20
+ 'audio_wave': () => import('./components/audio_wave.vue'),
21
+ 'bag': () => import('./components/bag.vue'),
22
+ 'backward10': () => import('./components/backward10.vue'),
23
+ 'arrow_up_circle': () => import('./components/arrow_up_circle.vue'),
24
24
  'battery_charging': () => import('./components/battery_charging.vue'),
25
+ 'backspace': () => import('./components/backspace.vue'),
26
+ 'battery_75': () => import('./components/battery_75.vue'),
25
27
  'battery_empty': () => import('./components/battery_empty.vue'),
28
+ 'battery_half': () => import('./components/battery_half.vue'),
29
+ 'battery_full': () => import('./components/battery_full.vue'),
30
+ 'bell': () => import('./components/bell.vue'),
26
31
  'bell_ringing': () => import('./components/bell_ringing.vue'),
27
32
  'bell_snooze': () => import('./components/bell_snooze.vue'),
33
+ 'battery_low': () => import('./components/battery_low.vue'),
34
+ 'bell_disabled': () => import('./components/bell_disabled.vue'),
35
+ 'book_closed': () => import('./components/book_closed.vue'),
28
36
  'bluetooth': () => import('./components/bluetooth.vue'),
29
- 'battery_full': () => import('./components/battery_full.vue'),
37
+ 'blocked': () => import('./components/blocked.vue'),
30
38
  'book': () => import('./components/book.vue'),
31
- 'book_text': () => import('./components/book_text.vue'),
32
- 'backward10': () => import('./components/backward10.vue'),
33
39
  'bookmark': () => import('./components/bookmark.vue'),
34
- 'book_closed': () => import('./components/book_closed.vue'),
40
+ 'box': () => import('./components/box.vue'),
41
+ 'bookmark_book': () => import('./components/bookmark_book.vue'),
42
+ 'book_text': () => import('./components/book_text.vue'),
35
43
  'box_download': () => import('./components/box_download.vue'),
44
+ 'branch': () => import('./components/branch.vue'),
36
45
  'box_open': () => import('./components/box_open.vue'),
46
+ 'browser_alt': () => import('./components/browser_alt.vue'),
37
47
  'briefcase': () => import('./components/briefcase.vue'),
38
- 'branch': () => import('./components/branch.vue'),
48
+ 'calculator': () => import('./components/calculator.vue'),
39
49
  'browser': () => import('./components/browser.vue'),
40
50
  'button_minus': () => import('./components/button_minus.vue'),
41
- 'button_add': () => import('./components/button_add.vue'),
42
- 'calendar': () => import('./components/calendar.vue'),
43
- 'browser_alt': () => import('./components/browser_alt.vue'),
51
+ 'calendar_last_day': () => import('./components/calendar_last_day.vue'),
52
+ 'calendar_days': () => import('./components/calendar_days.vue'),
44
53
  'calendar_date': () => import('./components/calendar_date.vue'),
45
- 'arrow_bottom_right': () => import('./components/arrow_bottom_right.vue'),
54
+ 'calendar': () => import('./components/calendar.vue'),
46
55
  'calendar_day': () => import('./components/calendar_day.vue'),
47
- 'calendar_add': () => import('./components/calendar_add.vue'),
48
- 'battery_75': () => import('./components/battery_75.vue'),
49
- 'calendar_days': () => import('./components/calendar_days.vue'),
50
- 'calendar_week': () => import('./components/calendar_week.vue'),
51
- 'calendar_move': () => import('./components/calendar_move.vue'),
52
- 'box': () => import('./components/box.vue'),
56
+ 'button_add': () => import('./components/button_add.vue'),
53
57
  'calendar_month': () => import('./components/calendar_month.vue'),
54
- 'archive': () => import('./components/archive.vue'),
55
- 'camera_noflash': () => import('./components/camera_noflash.vue'),
56
- 'bookmark_book': () => import('./components/bookmark_book.vue'),
57
- 'arrow_bottom_left': () => import('./components/arrow_bottom_left.vue'),
58
+ 'calendar_move': () => import('./components/calendar_move.vue'),
59
+ 'calendar_week': () => import('./components/calendar_week.vue'),
58
60
  'calendar_remove': () => import('./components/calendar_remove.vue'),
59
- 'arrow_down_circle': () => import('./components/arrow_down_circle.vue'),
61
+ 'camera_alt': () => import('./components/camera_alt.vue'),
62
+ 'camera_noflash_alt': () => import('./components/camera_noflash_alt.vue'),
60
63
  'capture': () => import('./components/capture.vue'),
61
- 'calculator': () => import('./components/calculator.vue'),
64
+ 'camera': () => import('./components/camera.vue'),
65
+ 'calendar_add': () => import('./components/calendar_add.vue'),
66
+ 'camera_noflash': () => import('./components/camera_noflash.vue'),
67
+ 'card_timeline': () => import('./components/card_timeline.vue'),
62
68
  'calendar_split': () => import('./components/calendar_split.vue'),
63
69
  'card_view': () => import('./components/card_view.vue'),
70
+ 'carousel': () => import('./components/carousel.vue'),
71
+ 'check': () => import('./components/check.vue'),
72
+ 'chain': () => import('./components/chain.vue'),
64
73
  'chat_add': () => import('./components/chat_add.vue'),
65
74
  'checkbox_checked': () => import('./components/checkbox_checked.vue'),
66
- 'carousel': () => import('./components/carousel.vue'),
67
75
  'check_circle': () => import('./components/check_circle.vue'),
68
- 'card_timeline': () => import('./components/card_timeline.vue'),
69
- 'camera_noflash_alt': () => import('./components/camera_noflash_alt.vue'),
70
- 'calendar_last_day': () => import('./components/calendar_last_day.vue'),
71
- 'cast': () => import('./components/cast.vue'),
72
76
  'check_circle_outside': () => import('./components/check_circle_outside.vue'),
73
- 'cart': () => import('./components/cart.vue'),
74
- 'camera_alt': () => import('./components/camera_alt.vue'),
75
77
  'chevron_down_circle': () => import('./components/chevron_down_circle.vue'),
76
- 'camera': () => import('./components/camera.vue'),
78
+ 'cart': () => import('./components/cart.vue'),
77
79
  'checkbox_empty': () => import('./components/checkbox_empty.vue'),
80
+ 'chevron_close': () => import('./components/chevron_close.vue'),
81
+ 'chevron_down_double': () => import('./components/chevron_down_double.vue'),
78
82
  'chevron_down': () => import('./components/chevron_down.vue'),
79
- 'chevron_left_double': () => import('./components/chevron_left_double.vue'),
80
- 'chevron_right': () => import('./components/chevron_right.vue'),
83
+ 'chevron_left_circle': () => import('./components/chevron_left_circle.vue'),
81
84
  'chevron_open': () => import('./components/chevron_open.vue'),
82
- 'chevron_up': () => import('./components/chevron_up.vue'),
83
- 'chevron_right_double': () => import('./components/chevron_right_double.vue'),
85
+ 'cast': () => import('./components/cast.vue'),
84
86
  'chevron_left': () => import('./components/chevron_left.vue'),
85
- 'circle_split': () => import('./components/circle_split.vue'),
86
- 'chevron_left_circle': () => import('./components/chevron_left_circle.vue'),
87
- 'chain': () => import('./components/chain.vue'),
88
- 'chevron_down_double': () => import('./components/chevron_down_double.vue'),
87
+ 'chevron_right': () => import('./components/chevron_right.vue'),
88
+ 'chevron_right_double': () => import('./components/chevron_right_double.vue'),
89
89
  'chevron_right_circle': () => import('./components/chevron_right_circle.vue'),
90
- 'circle_menu': () => import('./components/circle_menu.vue'),
91
90
  'chevron_up_circle': () => import('./components/chevron_up_circle.vue'),
91
+ 'chevron_left_double': () => import('./components/chevron_left_double.vue'),
92
92
  'chevron_up_double': () => import('./components/chevron_up_double.vue'),
93
- 'clipboard_check': () => import('./components/clipboard_check.vue'),
93
+ 'chevron_up': () => import('./components/chevron_up.vue'),
94
+ 'circle_split': () => import('./components/circle_split.vue'),
95
+ 'circle': () => import('./components/circle.vue'),
96
+ 'circle_menu': () => import('./components/circle_menu.vue'),
94
97
  'clipboard_add': () => import('./components/clipboard_add.vue'),
98
+ 'clipboard_check': () => import('./components/clipboard_check.vue'),
99
+ 'clipboard': () => import('./components/clipboard.vue'),
95
100
  'clipboard_cross': () => import('./components/clipboard_cross.vue'),
96
101
  'clipboard_remove': () => import('./components/clipboard_remove.vue'),
97
- 'clock': () => import('./components/clock.vue'),
98
- 'clipboard': () => import('./components/clipboard.vue'),
99
- 'code': () => import('./components/code.vue'),
100
102
  'clipboard_copy': () => import('./components/clipboard_copy.vue'),
101
103
  'clipboard_notes': () => import('./components/clipboard_notes.vue'),
104
+ 'clock': () => import('./components/clock.vue'),
105
+ 'cloud_download': () => import('./components/cloud_download.vue'),
102
106
  'cloud': () => import('./components/cloud.vue'),
103
- 'cloud_disconnect': () => import('./components/cloud_disconnect.vue'),
104
- 'cloud_download_alt': () => import('./components/cloud_download_alt.vue'),
105
- 'chevron_close': () => import('./components/chevron_close.vue'),
107
+ 'close': () => import('./components/close.vue'),
108
+ 'coffee': () => import('./components/coffee.vue'),
106
109
  'cloud_upload_alt': () => import('./components/cloud_upload_alt.vue'),
107
- 'coin': () => import('./components/coin.vue'),
108
- 'circle': () => import('./components/circle.vue'),
109
- 'cloud_download': () => import('./components/cloud_download.vue'),
110
+ 'code': () => import('./components/code.vue'),
110
111
  'cloud_upload': () => import('./components/cloud_upload.vue'),
112
+ 'coin': () => import('./components/coin.vue'),
113
+ 'compass': () => import('./components/compass.vue'),
111
114
  'coins': () => import('./components/coins.vue'),
112
- 'check': () => import('./components/check.vue'),
113
- 'coffee': () => import('./components/coffee.vue'),
114
- 'connect': () => import('./components/connect.vue'),
115
+ 'cloud_download_alt': () => import('./components/cloud_download_alt.vue'),
116
+ 'component_add': () => import('./components/component_add.vue'),
115
117
  'contacts': () => import('./components/contacts.vue'),
116
- 'blocked': () => import('./components/blocked.vue'),
117
- 'cross_circle': () => import('./components/cross_circle.vue'),
118
+ 'create': () => import('./components/create.vue'),
119
+ 'connect': () => import('./components/connect.vue'),
120
+ 'crosshair': () => import('./components/crosshair.vue'),
118
121
  'credit_card': () => import('./components/credit_card.vue'),
122
+ 'contract': () => import('./components/contract.vue'),
119
123
  'crop': () => import('./components/crop.vue'),
120
- 'create': () => import('./components/create.vue'),
121
- 'cross': () => import('./components/cross.vue'),
122
- 'cylinder': () => import('./components/cylinder.vue'),
123
- 'display_alt': () => import('./components/display_alt.vue'),
124
- 'directions': () => import('./components/directions.vue'),
125
124
  'diamond': () => import('./components/diamond.vue'),
126
125
  'cube': () => import('./components/cube.vue'),
126
+ 'cross': () => import('./components/cross.vue'),
127
+ 'cloud_disconnect': () => import('./components/cloud_disconnect.vue'),
127
128
  'database': () => import('./components/database.vue'),
128
- 'component_add': () => import('./components/component_add.vue'),
129
+ 'directions': () => import('./components/directions.vue'),
130
+ 'document': () => import('./components/document.vue'),
129
131
  'display': () => import('./components/display.vue'),
132
+ 'cylinder': () => import('./components/cylinder.vue'),
130
133
  'disc': () => import('./components/disc.vue'),
134
+ 'document_justified': () => import('./components/document_justified.vue'),
131
135
  'document_words': () => import('./components/document_words.vue'),
132
- 'door_alt': () => import('./components/door_alt.vue'),
133
- 'contract': () => import('./components/contract.vue'),
134
- 'crosshair': () => import('./components/crosshair.vue'),
135
- 'download_alt': () => import('./components/download_alt.vue'),
136
136
  'door': () => import('./components/door.vue'),
137
- 'enter': () => import('./components/enter.vue'),
137
+ 'download_alt': () => import('./components/download_alt.vue'),
138
+ 'door_alt': () => import('./components/door_alt.vue'),
139
+ 'document_stack': () => import('./components/document_stack.vue'),
138
140
  'downward': () => import('./components/downward.vue'),
139
141
  'download': () => import('./components/download.vue'),
142
+ 'cross_circle': () => import('./components/cross_circle.vue'),
143
+ 'drag_vertical': () => import('./components/drag_vertical.vue'),
144
+ 'enter': () => import('./components/enter.vue'),
145
+ 'duplicate_alt': () => import('./components/duplicate_alt.vue'),
146
+ 'document_list': () => import('./components/document_list.vue'),
140
147
  'drag': () => import('./components/drag.vue'),
141
- 'document_stack': () => import('./components/document_stack.vue'),
142
- 'document': () => import('./components/document.vue'),
148
+ 'drag_circle': () => import('./components/drag_circle.vue'),
149
+ 'display_alt': () => import('./components/display_alt.vue'),
150
+ 'exit_left': () => import('./components/exit_left.vue'),
143
151
  'enter_alt': () => import('./components/enter_alt.vue'),
144
- 'duplicate_alt': () => import('./components/duplicate_alt.vue'),
152
+ 'external': () => import('./components/external.vue'),
153
+ 'expand': () => import('./components/expand.vue'),
145
154
  'expand_width': () => import('./components/expand_width.vue'),
146
- 'document_justified': () => import('./components/document_justified.vue'),
147
- 'document_list': () => import('./components/document_list.vue'),
148
155
  'episodes': () => import('./components/episodes.vue'),
149
- 'drag_vertical': () => import('./components/drag_vertical.vue'),
150
- 'external': () => import('./components/external.vue'),
151
156
  'expand_height': () => import('./components/expand_height.vue'),
152
- 'eye_closed': () => import('./components/eye_closed.vue'),
153
- 'expand': () => import('./components/expand.vue'),
157
+ 'face_delighted': () => import('./components/face_delighted.vue'),
154
158
  'eye_no': () => import('./components/eye_no.vue'),
155
- 'eye': () => import('./components/eye.vue'),
159
+ 'duplicate': () => import('./components/duplicate.vue'),
160
+ 'fi_fingerprint': () => import('./components/fi_fingerprint.vue'),
156
161
  'face_sad': () => import('./components/face_sad.vue'),
157
- 'exit_left': () => import('./components/exit_left.vue'),
158
- 'drag_circle': () => import('./components/drag_circle.vue'),
162
+ 'film': () => import('./components/film.vue'),
159
163
  'face_happy': () => import('./components/face_happy.vue'),
164
+ 'file_upload': () => import('./components/file_upload.vue'),
165
+ 'files_stack': () => import('./components/files_stack.vue'),
166
+ 'face_neutral': () => import('./components/face_neutral.vue'),
160
167
  'file_download': () => import('./components/file_download.vue'),
168
+ 'filter': () => import('./components/filter.vue'),
169
+ 'exit_right': () => import('./components/exit_right.vue'),
161
170
  'files_history': () => import('./components/files_history.vue'),
162
- 'file_upload': () => import('./components/file_upload.vue'),
163
- 'face_delighted': () => import('./components/face_delighted.vue'),
164
- 'fi_fingerprint': () => import('./components/fi_fingerprint.vue'),
171
+ 'filter_all': () => import('./components/filter_all.vue'),
172
+ 'eye': () => import('./components/eye.vue'),
165
173
  'filter_circle': () => import('./components/filter_circle.vue'),
166
- 'exit_right': () => import('./components/exit_right.vue'),
174
+ 'eye_closed': () => import('./components/eye_closed.vue'),
175
+ 'filter_not_started': () => import('./components/filter_not_started.vue'),
167
176
  'filter_ongoing': () => import('./components/filter_ongoing.vue'),
168
177
  'files_multi': () => import('./components/files_multi.vue'),
169
- 'face_neutral': () => import('./components/face_neutral.vue'),
170
- 'filter': () => import('./components/filter.vue'),
171
178
  'filter_completed': () => import('./components/filter_completed.vue'),
172
- 'compass': () => import('./components/compass.vue'),
173
- 'duplicate': () => import('./components/duplicate.vue'),
174
- 'close': () => import('./components/close.vue'),
175
- 'filter_not_started': () => import('./components/filter_not_started.vue'),
176
- 'flame_alt': () => import('./components/flame_alt.vue'),
177
- 'film': () => import('./components/film.vue'),
178
- 'floppy': () => import('./components/floppy.vue'),
179
- 'filter_all': () => import('./components/filter_all.vue'),
180
- 'filtering': () => import('./components/filtering.vue'),
181
- 'folder_open': () => import('./components/folder_open.vue'),
182
- 'forward10': () => import('./components/forward10.vue'),
183
- 'folder_minus': () => import('./components/folder_minus.vue'),
184
- 'fullscreen': () => import('./components/fullscreen.vue'),
185
- 'files_stack': () => import('./components/files_stack.vue'),
186
179
  'filter_single': () => import('./components/filter_single.vue'),
187
- 'forward_alt': () => import('./components/forward_alt.vue'),
188
- 'gauge': () => import('./components/gauge.vue'),
189
- 'filter_overdue': () => import('./components/filter_overdue.vue'),
180
+ 'flag': () => import('./components/flag.vue'),
181
+ 'filtering': () => import('./components/filtering.vue'),
190
182
  'flame': () => import('./components/flame.vue'),
183
+ 'floppy': () => import('./components/floppy.vue'),
184
+ 'filter_overdue': () => import('./components/filter_overdue.vue'),
191
185
  'flip_view': () => import('./components/flip_view.vue'),
186
+ 'fingerprint': () => import('./components/fingerprint.vue'),
187
+ 'flame_alt': () => import('./components/flame_alt.vue'),
192
188
  'folder_add': () => import('./components/folder_add.vue'),
193
- 'graph_bar': () => import('./components/graph_bar.vue'),
189
+ 'folder_minus': () => import('./components/folder_minus.vue'),
190
+ 'folder_closed': () => import('./components/folder_closed.vue'),
191
+ 'forward10': () => import('./components/forward10.vue'),
192
+ 'forward_alt': () => import('./components/forward_alt.vue'),
193
+ 'frame': () => import('./components/frame.vue'),
194
+ 'forward': () => import('./components/forward.vue'),
195
+ 'gauge': () => import('./components/gauge.vue'),
196
+ 'gift': () => import('./components/gift.vue'),
197
+ 'fullscreen': () => import('./components/fullscreen.vue'),
194
198
  'funnel': () => import('./components/funnel.vue'),
195
- 'graph_box': () => import('./components/graph_box.vue'),
196
199
  'gps': () => import('./components/gps.vue'),
197
- 'fingerprint': () => import('./components/fingerprint.vue'),
198
- 'grid_circles': () => import('./components/grid_circles.vue'),
199
- 'graph_increase': () => import('./components/graph_increase.vue'),
200
- 'forward': () => import('./components/forward.vue'),
201
- 'folder_closed': () => import('./components/folder_closed.vue'),
202
- 'globe': () => import('./components/globe.vue'),
203
- 'grid': () => import('./components/grid.vue'),
204
- 'heart': () => import('./components/heart.vue'),
205
- 'heart_rate': () => import('./components/heart_rate.vue'),
206
200
  'grab': () => import('./components/grab.vue'),
201
+ 'globe': () => import('./components/globe.vue'),
202
+ 'graph_box': () => import('./components/graph_box.vue'),
203
+ 'graph_bar': () => import('./components/graph_bar.vue'),
204
+ 'grid_circles': () => import('./components/grid_circles.vue'),
207
205
  'fork_git': () => import('./components/fork_git.vue'),
208
- 'gift': () => import('./components/gift.vue'),
206
+ 'folder_open': () => import('./components/folder_open.vue'),
207
+ 'grid_circles_add': () => import('./components/grid_circles_add.vue'),
209
208
  'grid_small': () => import('./components/grid_small.vue'),
210
- 'home': () => import('./components/home.vue'),
211
- 'heart_remove': () => import('./components/heart_remove.vue'),
209
+ 'harddrive': () => import('./components/harddrive.vue'),
210
+ 'hand': () => import('./components/hand.vue'),
211
+ 'grid': () => import('./components/grid.vue'),
212
+ 'grid_squares': () => import('./components/grid_squares.vue'),
213
+ 'graph_increase': () => import('./components/graph_increase.vue'),
214
+ 'hash': () => import('./components/hash.vue'),
215
+ 'grid_squares_add': () => import('./components/grid_squares_add.vue'),
212
216
  'height': () => import('./components/height.vue'),
217
+ 'heart_remove': () => import('./components/heart_remove.vue'),
218
+ 'heart_rate': () => import('./components/heart_rate.vue'),
219
+ 'home': () => import('./components/home.vue'),
220
+ 'home_alt': () => import('./components/home_alt.vue'),
221
+ 'heart': () => import('./components/heart.vue'),
213
222
  'hierarchy': () => import('./components/hierarchy.vue'),
214
- 'grid_squares_add': () => import('./components/grid_squares_add.vue'),
223
+ 'home_check': () => import('./components/home_check.vue'),
215
224
  'home_door': () => import('./components/home_door.vue'),
216
- 'hand': () => import('./components/hand.vue'),
217
225
  'import': () => import('./components/import.vue'),
218
- 'home_alt': () => import('./components/home_alt.vue'),
219
- 'inbox': () => import('./components/inbox.vue'),
220
226
  'info_circle': () => import('./components/info_circle.vue'),
221
- 'hash': () => import('./components/hash.vue'),
222
- 'iphone_portrait': () => import('./components/iphone_portrait.vue'),
223
- 'jump_forward': () => import('./components/jump_forward.vue'),
224
- 'grid_squares': () => import('./components/grid_squares.vue'),
225
- 'grid_circles_add': () => import('./components/grid_circles_add.vue'),
227
+ 'inbox_alt': () => import('./components/inbox_alt.vue'),
226
228
  'iphone_landscape': () => import('./components/iphone_landscape.vue'),
227
- 'keyboard': () => import('./components/keyboard.vue'),
229
+ 'jump_backward': () => import('./components/jump_backward.vue'),
230
+ 'inbox': () => import('./components/inbox.vue'),
228
231
  'jump_right': () => import('./components/jump_right.vue'),
229
232
  'jump_left': () => import('./components/jump_left.vue'),
233
+ 'keyboard': () => import('./components/keyboard.vue'),
234
+ 'jump_forward': () => import('./components/jump_forward.vue'),
235
+ 'lightbulb_on': () => import('./components/lightbulb_on.vue'),
236
+ 'lightbulb': () => import('./components/lightbulb.vue'),
237
+ 'iphone_portrait': () => import('./components/iphone_portrait.vue'),
230
238
  'laptop': () => import('./components/laptop.vue'),
231
- 'inbox_alt': () => import('./components/inbox_alt.vue'),
232
- 'jump_backward': () => import('./components/jump_backward.vue'),
233
- 'lineweight': () => import('./components/lineweight.vue'),
234
239
  'lightning': () => import('./components/lightning.vue'),
240
+ 'list': () => import('./components/list.vue'),
235
241
  'link': () => import('./components/link.vue'),
236
- 'lightning_alt': () => import('./components/lightning_alt.vue'),
237
- 'home_check': () => import('./components/home_check.vue'),
238
- 'link_broken': () => import('./components/link_broken.vue'),
239
242
  'list_numbered': () => import('./components/list_numbered.vue'),
240
- 'list_add': () => import('./components/list_add.vue'),
241
- 'lightbulb': () => import('./components/lightbulb.vue'),
242
- 'harddrive': () => import('./components/harddrive.vue'),
243
+ 'link_broken': () => import('./components/link_broken.vue'),
244
+ 'lineweight': () => import('./components/lineweight.vue'),
243
245
  'link_horizontal': () => import('./components/link_horizontal.vue'),
244
- 'lock_open': () => import('./components/lock_open.vue'),
245
- 'lightbulb_on': () => import('./components/lightbulb_on.vue'),
246
- 'loader': () => import('./components/loader.vue'),
247
246
  'link_alt': () => import('./components/link_alt.vue'),
247
+ 'list_add': () => import('./components/list_add.vue'),
248
+ 'link_vertical': () => import('./components/link_vertical.vue'),
249
+ 'lightning_alt': () => import('./components/lightning_alt.vue'),
248
250
  'lock': () => import('./components/lock.vue'),
251
+ 'mail_delete': () => import('./components/mail_delete.vue'),
252
+ 'mail_open': () => import('./components/mail_open.vue'),
253
+ 'lock_open': () => import('./components/lock_open.vue'),
249
254
  'mail_minus': () => import('./components/mail_minus.vue'),
250
255
  'mail_add': () => import('./components/mail_add.vue'),
256
+ 'maximise': () => import('./components/maximise.vue'),
257
+ 'mail_remove': () => import('./components/mail_remove.vue'),
251
258
  'marquee': () => import('./components/marquee.vue'),
252
- 'menu_hamburger': () => import('./components/menu_hamburger.vue'),
253
259
  'location': () => import('./components/location.vue'),
254
- 'mail_open': () => import('./components/mail_open.vue'),
260
+ 'loader': () => import('./components/loader.vue'),
255
261
  'mail': () => import('./components/mail.vue'),
256
- 'mail_remove': () => import('./components/mail_remove.vue'),
257
- 'menu_vertical': () => import('./components/menu_vertical.vue'),
258
- 'mail_delete': () => import('./components/mail_delete.vue'),
259
- 'mail_new': () => import('./components/mail_new.vue'),
262
+ 'menu_hamburger': () => import('./components/menu_hamburger.vue'),
263
+ 'menu_horizontal': () => import('./components/menu_horizontal.vue'),
260
264
  'message': () => import('./components/message.vue'),
261
- 'link_vertical': () => import('./components/link_vertical.vue'),
265
+ 'mail_new': () => import('./components/mail_new.vue'),
266
+ 'menu_vertical': () => import('./components/menu_vertical.vue'),
267
+ 'midpoint': () => import('./components/midpoint.vue'),
268
+ 'microphone_disabled': () => import('./components/microphone_disabled.vue'),
269
+ 'microphone_muted': () => import('./components/microphone_muted.vue'),
270
+ 'minimise': () => import('./components/minimise.vue'),
271
+ 'microphone': () => import('./components/microphone.vue'),
262
272
  'message_writing': () => import('./components/message_writing.vue'),
273
+ 'mini_player': () => import('./components/mini_player.vue'),
263
274
  'minus': () => import('./components/minus.vue'),
264
- 'minimise': () => import('./components/minimise.vue'),
265
- 'menu_horizontal': () => import('./components/menu_horizontal.vue'),
266
- 'maximise': () => import('./components/maximise.vue'),
267
- 'microphone_muted': () => import('./components/microphone_muted.vue'),
275
+ 'moon': () => import('./components/moon.vue'),
276
+ 'move': () => import('./components/move.vue'),
277
+ 'no_sign': () => import('./components/no_sign.vue'),
268
278
  'minus_circle': () => import('./components/minus_circle.vue'),
269
- 'list': () => import('./components/list.vue'),
279
+ 'nut': () => import('./components/nut.vue'),
270
280
  'newspaper': () => import('./components/newspaper.vue'),
271
281
  'notebook': () => import('./components/notebook.vue'),
272
- 'no_sign': () => import('./components/no_sign.vue'),
273
282
  'optional': () => import('./components/optional.vue'),
274
- 'midpoint': () => import('./components/midpoint.vue'),
283
+ 'pages': () => import('./components/pages.vue'),
284
+ 'panel_right': () => import('./components/panel_right.vue'),
275
285
  'notification': () => import('./components/notification.vue'),
276
- 'microphone': () => import('./components/microphone.vue'),
277
- 'nut': () => import('./components/nut.vue'),
286
+ 'panel_bottom': () => import('./components/panel_bottom.vue'),
278
287
  'panel_center': () => import('./components/panel_center.vue'),
279
- 'panel_sectioned': () => import('./components/panel_sectioned.vue'),
280
- 'move': () => import('./components/move.vue'),
281
288
  'panel_left': () => import('./components/panel_left.vue'),
289
+ 'paper': () => import('./components/paper.vue'),
290
+ 'panel_sectioned': () => import('./components/panel_sectioned.vue'),
291
+ 'paper_folded': () => import('./components/paper_folded.vue'),
282
292
  'panel_top': () => import('./components/panel_top.vue'),
283
- 'flag': () => import('./components/flag.vue'),
284
- 'pages': () => import('./components/pages.vue'),
285
- 'moon': () => import('./components/moon.vue'),
286
- 'paper_plane_alt': () => import('./components/paper_plane_alt.vue'),
287
- 'paper_plane': () => import('./components/paper_plane.vue'),
288
- 'panel_right': () => import('./components/panel_right.vue'),
289
- 'microphone_disabled': () => import('./components/microphone_disabled.vue'),
293
+ 'paperclip': () => import('./components/paperclip.vue'),
294
+ 'paragraph_center': () => import('./components/paragraph_center.vue'),
290
295
  'paragraph_end': () => import('./components/paragraph_end.vue'),
291
- 'mini_player': () => import('./components/mini_player.vue'),
292
- 'paragraph_right': () => import('./components/paragraph_right.vue'),
293
- 'paragraph_start': () => import('./components/paragraph_start.vue'),
296
+ 'paper_plane_alt': () => import('./components/paper_plane_alt.vue'),
294
297
  'pen': () => import('./components/pen.vue'),
295
- 'phone_landscape': () => import('./components/phone_landscape.vue'),
296
- 'paragraph_center': () => import('./components/paragraph_center.vue'),
297
298
  'paragraph_left': () => import('./components/paragraph_left.vue'),
298
- 'play': () => import('./components/play.vue'),
299
- 'frame': () => import('./components/frame.vue'),
300
- 'paperclip': () => import('./components/paperclip.vue'),
299
+ 'paragraph_right': () => import('./components/paragraph_right.vue'),
301
300
  'phone_portrait': () => import('./components/phone_portrait.vue'),
301
+ 'paragraph_start': () => import('./components/paragraph_start.vue'),
302
+ 'phone_landscape': () => import('./components/phone_landscape.vue'),
302
303
  'pie_half': () => import('./components/pie_half.vue'),
303
- 'pie_third': () => import('./components/pie_third.vue'),
304
+ 'picture': () => import('./components/picture.vue'),
304
305
  'pie_quarter': () => import('./components/pie_quarter.vue'),
306
+ 'paper_plane': () => import('./components/paper_plane.vue'),
305
307
  'play_button': () => import('./components/play_button.vue'),
306
- 'printer': () => import('./components/printer.vue'),
307
- 'paper': () => import('./components/paper.vue'),
308
- 'project_fixed': () => import('./components/project_fixed.vue'),
309
- 'pause': () => import('./components/pause.vue'),
310
- 'postcard': () => import('./components/postcard.vue'),
308
+ 'pie_third': () => import('./components/pie_third.vue'),
311
309
  'plus_circle': () => import('./components/plus_circle.vue'),
312
310
  'plus': () => import('./components/plus.vue'),
313
- 'pull_left': () => import('./components/pull_left.vue'),
311
+ 'pause': () => import('./components/pause.vue'),
312
+ 'printer': () => import('./components/printer.vue'),
313
+ 'project_tnm': () => import('./components/project_tnm.vue'),
314
+ 'postcard': () => import('./components/postcard.vue'),
314
315
  'projector': () => import('./components/projector.vue'),
316
+ 'project_nonprofit': () => import('./components/project_nonprofit.vue'),
317
+ 'play': () => import('./components/play.vue'),
315
318
  'pull_right': () => import('./components/pull_right.vue'),
316
- 'push_right': () => import('./components/push_right.vue'),
317
- 'push_down': () => import('./components/push_down.vue'),
318
- 'paper_folded': () => import('./components/paper_folded.vue'),
319
+ 'pull_left': () => import('./components/pull_left.vue'),
320
+ 'pull_down': () => import('./components/pull_down.vue'),
319
321
  'push_left': () => import('./components/push_left.vue'),
320
- 'record': () => import('./components/record.vue'),
321
- 'picture': () => import('./components/picture.vue'),
322
- 'project_nonprofit': () => import('./components/project_nonprofit.vue'),
322
+ 'push_right': () => import('./components/push_right.vue'),
323
323
  'receipt': () => import('./components/receipt.vue'),
324
- 'refresh_alt': () => import('./components/refresh_alt.vue'),
325
- 'pull_down': () => import('./components/pull_down.vue'),
324
+ 'pull_up': () => import('./components/pull_up.vue'),
325
+ 'push_down': () => import('./components/push_down.vue'),
326
+ 'question_circle': () => import('./components/question_circle.vue'),
327
+ 'radio_on': () => import('./components/radio_on.vue'),
328
+ 'redo': () => import('./components/redo.vue'),
326
329
  'push_up': () => import('./components/push_up.vue'),
330
+ 'record': () => import('./components/record.vue'),
331
+ 'project_fixed': () => import('./components/project_fixed.vue'),
327
332
  'replicate': () => import('./components/replicate.vue'),
328
- 'reset_alt': () => import('./components/reset_alt.vue'),
329
- 'reset': () => import('./components/reset.vue'),
333
+ 'refresh_alt': () => import('./components/refresh_alt.vue'),
330
334
  'refresh': () => import('./components/refresh.vue'),
331
- 'reset_forward': () => import('./components/reset_forward.vue'),
332
- 'redo': () => import('./components/redo.vue'),
335
+ 'reset_alt': () => import('./components/reset_alt.vue'),
333
336
  'replicate_alt': () => import('./components/replicate_alt.vue'),
334
- 'required': () => import('./components/required.vue'),
337
+ 'reset_temporary': () => import('./components/reset_temporary.vue'),
335
338
  'reset_hard': () => import('./components/reset_hard.vue'),
336
- 'pull_up': () => import('./components/pull_up.vue'),
337
- 'question_circle': () => import('./components/question_circle.vue'),
338
- 'retweet': () => import('./components/retweet.vue'),
339
- 'reuse': () => import('./components/reuse.vue'),
339
+ 'required': () => import('./components/required.vue'),
340
+ 'reverse': () => import('./components/reverse.vue'),
341
+ 'reset_forward': () => import('./components/reset_forward.vue'),
340
342
  'reverse_alt': () => import('./components/reverse_alt.vue'),
341
343
  'rocket': () => import('./components/rocket.vue'),
342
- 'reverse': () => import('./components/reverse.vue'),
343
- 'project_tnm': () => import('./components/project_tnm.vue'),
344
- 'scale_extend': () => import('./components/scale_extend.vue'),
345
- 'scalpel': () => import('./components/scalpel.vue'),
344
+ 'reuse': () => import('./components/reuse.vue'),
345
+ 'reset': () => import('./components/reset.vue'),
346
346
  'revert': () => import('./components/revert.vue'),
347
- 'scale_contract': () => import('./components/scale_contract.vue'),
347
+ 'retweet': () => import('./components/retweet.vue'),
348
+ 'ruler': () => import('./components/ruler.vue'),
348
349
  'scale': () => import('./components/scale.vue'),
350
+ 'scale_extend': () => import('./components/scale_extend.vue'),
351
+ 'scalpel': () => import('./components/scalpel.vue'),
349
352
  'search': () => import('./components/search.vue'),
350
- 'share': () => import('./components/share.vue'),
351
353
  'shuffle': () => import('./components/shuffle.vue'),
352
- 'share_alt': () => import('./components/share_alt.vue'),
353
354
  'server': () => import('./components/server.vue'),
355
+ 'scale_contract': () => import('./components/scale_contract.vue'),
354
356
  'slash_forward': () => import('./components/slash_forward.vue'),
355
357
  'slash_backward': () => import('./components/slash_backward.vue'),
356
- 'side_menu': () => import('./components/side_menu.vue'),
357
- 'speech_typing': () => import('./components/speech_typing.vue'),
358
- 'speech_bubble': () => import('./components/speech_bubble.vue'),
359
358
  'settings': () => import('./components/settings.vue'),
360
- 'sort_alt': () => import('./components/sort_alt.vue'),
359
+ 'share': () => import('./components/share.vue'),
360
+ 'share_alt': () => import('./components/share_alt.vue'),
361
+ 'side_menu': () => import('./components/side_menu.vue'),
361
362
  'sliders': () => import('./components/sliders.vue'),
362
- 'panel_bottom': () => import('./components/panel_bottom.vue'),
363
- 'radio_on': () => import('./components/radio_on.vue'),
364
- 'reset_temporary': () => import('./components/reset_temporary.vue'),
365
- 'split': () => import('./components/split.vue'),
366
363
  'speaker': () => import('./components/speaker.vue'),
364
+ 'split': () => import('./components/split.vue'),
365
+ 'speech_typing': () => import('./components/speech_typing.vue'),
366
+ 'speech_bubble': () => import('./components/speech_bubble.vue'),
367
+ 'split_three': () => import('./components/split_three.vue'),
367
368
  'star': () => import('./components/star.vue'),
368
- 'sort': () => import('./components/sort.vue'),
369
- 'support': () => import('./components/support.vue'),
370
- 'ruler': () => import('./components/ruler.vue'),
369
+ 'sun': () => import('./components/sun.vue'),
370
+ 'sort_alt': () => import('./components/sort_alt.vue'),
371
+ 'table': () => import('./components/table.vue'),
371
372
  'swap': () => import('./components/swap.vue'),
372
- 'split_three': () => import('./components/split_three.vue'),
373
373
  'table_header': () => import('./components/table_header.vue'),
374
374
  'switch': () => import('./components/switch.vue'),
375
- 'table': () => import('./components/table.vue'),
376
- 'thread': () => import('./components/thread.vue'),
375
+ 'support': () => import('./components/support.vue'),
377
376
  'tag_milestone': () => import('./components/tag_milestone.vue'),
378
- 'ticket': () => import('./components/ticket.vue'),
379
377
  'tags': () => import('./components/tags.vue'),
378
+ 'sort': () => import('./components/sort.vue'),
379
+ 'tag': () => import('./components/tag.vue'),
380
+ 'thread': () => import('./components/thread.vue'),
381
+ 'thumbs_down': () => import('./components/thumbs_down.vue'),
382
+ 'ticket': () => import('./components/ticket.vue'),
383
+ 'target': () => import('./components/target.vue'),
380
384
  'thumbs_up': () => import('./components/thumbs_up.vue'),
381
- 'toggle': () => import('./components/toggle.vue'),
385
+ 'translate': () => import('./components/translate.vue'),
382
386
  'todo': () => import('./components/todo.vue'),
383
- 'tag': () => import('./components/tag.vue'),
384
- 'type_checkbox': () => import('./components/type_checkbox.vue'),
387
+ 'timeline': () => import('./components/timeline.vue'),
385
388
  'trash': () => import('./components/trash.vue'),
386
- 'trophy': () => import('./components/trophy.vue'),
387
- 'type_id': () => import('./components/type_id.vue'),
389
+ 'tv_mode': () => import('./components/tv_mode.vue'),
390
+ 'toggle': () => import('./components/toggle.vue'),
391
+ 'type_checkbox': () => import('./components/type_checkbox.vue'),
392
+ 'toggles': () => import('./components/toggles.vue'),
388
393
  'trash_alt': () => import('./components/trash_alt.vue'),
389
394
  'type_email': () => import('./components/type_email.vue'),
390
- 'toggles': () => import('./components/toggles.vue'),
391
- 'thumbs_down': () => import('./components/thumbs_down.vue'),
395
+ 'type_formula': () => import('./components/type_formula.vue'),
396
+ 'type_id': () => import('./components/type_id.vue'),
397
+ 'type_multiselect': () => import('./components/type_multiselect.vue'),
398
+ 'trophy': () => import('./components/trophy.vue'),
392
399
  'type_number': () => import('./components/type_number.vue'),
393
400
  'type_person': () => import('./components/type_person.vue'),
394
- 'translate': () => import('./components/translate.vue'),
401
+ 'type_relation': () => import('./components/type_relation.vue'),
402
+ 'type_phone': () => import('./components/type_phone.vue'),
403
+ 'type_time': () => import('./components/type_time.vue'),
404
+ 'type_date': () => import('./components/type_date.vue'),
395
405
  'type_text': () => import('./components/type_text.vue'),
396
- 'timeline': () => import('./components/timeline.vue'),
397
- 'type_file': () => import('./components/type_file.vue'),
398
- 'type_formula': () => import('./components/type_formula.vue'),
399
- 'tv_mode': () => import('./components/tv_mode.vue'),
400
406
  'type_status': () => import('./components/type_status.vue'),
401
- 'type_phone': () => import('./components/type_phone.vue'),
402
- 'type_select': () => import('./components/type_select.vue'),
403
- 'type_user': () => import('./components/type_user.vue'),
407
+ 'type_file': () => import('./components/type_file.vue'),
408
+ 'type_url': () => import('./components/type_url.vue'),
404
409
  'unlink_horizontal': () => import('./components/unlink_horizontal.vue'),
405
- 'sun': () => import('./components/sun.vue'),
406
- 'type_relation': () => import('./components/type_relation.vue'),
407
- 'upload_alt': () => import('./components/upload_alt.vue'),
408
- 'type_time': () => import('./components/type_time.vue'),
409
410
  'undo_history': () => import('./components/undo_history.vue'),
411
+ 'type_user': () => import('./components/type_user.vue'),
412
+ 'unlink_vertical': () => import('./components/unlink_vertical.vue'),
413
+ 'upward': () => import('./components/upward.vue'),
410
414
  'undo': () => import('./components/undo.vue'),
411
- 'type_url': () => import('./components/type_url.vue'),
415
+ 'upload_alt': () => import('./components/upload_alt.vue'),
412
416
  'user_add': () => import('./components/user_add.vue'),
413
- 'target': () => import('./components/target.vue'),
417
+ 'type_select': () => import('./components/type_select.vue'),
418
+ 'user': () => import('./components/user.vue'),
419
+ 'user_circle': () => import('./components/user_circle.vue'),
414
420
  'user_male': () => import('./components/user_male.vue'),
415
- 'upward': () => import('./components/upward.vue'),
416
- 'unlink_vertical': () => import('./components/unlink_vertical.vue'),
417
- 'type_date': () => import('./components/type_date.vue'),
418
- 'type_multiselect': () => import('./components/type_multiselect.vue'),
419
421
  'venn': () => import('./components/venn.vue'),
420
- 'version': () => import('./components/version.vue'),
422
+ 'users': () => import('./components/users.vue'),
421
423
  'user_remove': () => import('./components/user_remove.vue'),
422
- 'volume_0': () => import('./components/volume_0.vue'),
423
- 'volume_high': () => import('./components/volume_high.vue'),
424
- 'volume_disabled': () => import('./components/volume_disabled.vue'),
425
- 'upload': () => import('./components/upload.vue'),
426
- 'user_circle': () => import('./components/user_circle.vue'),
427
- 'warning_circle': () => import('./components/warning_circle.vue'),
428
424
  'versions': () => import('./components/versions.vue'),
429
- 'volume_muted': () => import('./components/volume_muted.vue'),
425
+ 'version': () => import('./components/version.vue'),
426
+ 'volume_high': () => import('./components/volume_high.vue'),
430
427
  'video': () => import('./components/video.vue'),
428
+ 'volume_0': () => import('./components/volume_0.vue'),
429
+ 'volume_disabled': () => import('./components/volume_disabled.vue'),
430
+ 'volume_minus': () => import('./components/volume_minus.vue'),
431
+ 'volume_add': () => import('./components/volume_add.vue'),
431
432
  'wallet': () => import('./components/wallet.vue'),
432
- 'warning_hex': () => import('./components/warning_hex.vue'),
433
- 'users': () => import('./components/users.vue'),
434
- 'window': () => import('./components/window.vue'),
433
+ 'warning_circle': () => import('./components/warning_circle.vue'),
435
434
  'volume_low': () => import('./components/volume_low.vue'),
436
- 'wifi': () => import('./components/wifi.vue'),
437
- 'wifi_none': () => import('./components/wifi_none.vue'),
438
- 'wifi_error': () => import('./components/wifi_error.vue'),
435
+ 'volume_muted': () => import('./components/volume_muted.vue'),
436
+ 'user_male_circle': () => import('./components/user_male_circle.vue'),
439
437
  'unarchive': () => import('./components/unarchive.vue'),
440
438
  'waves': () => import('./components/waves.vue'),
441
- 'zoom_cancel': () => import('./components/zoom_cancel.vue'),
442
- 'window_collapse_right': () => import('./components/window_collapse_right.vue'),
439
+ 'upload': () => import('./components/upload.vue'),
443
440
  'width': () => import('./components/width.vue'),
444
- 'window_content': () => import('./components/window_content.vue'),
445
- 'volume_minus': () => import('./components/volume_minus.vue'),
446
- 'user_male_circle': () => import('./components/user_male_circle.vue'),
447
- 'window_collapse_left': () => import('./components/window_collapse_left.vue'),
448
- 'user': () => import('./components/user.vue'),
449
- 'volume_add': () => import('./components/volume_add.vue'),
450
441
  'warning_triangle': () => import('./components/warning_triangle.vue'),
451
- 'zoom_in': () => import('./components/zoom_in.vue'),
452
- 'zoom_out': () => import('./components/zoom_out.vue'),
453
- 'zoom_reset': () => import('./components/zoom_reset.vue'),
442
+ 'window_collapse_left': () => import('./components/window_collapse_left.vue'),
443
+ 'wifi_none': () => import('./components/wifi_none.vue'),
444
+ 'window': () => import('./components/window.vue'),
445
+ 'wifi_error': () => import('./components/wifi_error.vue'),
446
+ 'window_collapse_right': () => import('./components/window_collapse_right.vue'),
447
+ 'warning_hex': () => import('./components/warning_hex.vue'),
454
448
  'wrap_back': () => import('./components/wrap_back.vue'),
455
449
  'write': () => import('./components/write.vue'),
456
450
  'wrap_forward': () => import('./components/wrap_forward.vue'),
457
- 'nomi-arrow-right-top': () => import('./components/nomi-arrow-right-top.vue'),
451
+ 'zoom_cancel': () => import('./components/zoom_cancel.vue'),
452
+ 'zoom_in': () => import('./components/zoom_in.vue'),
453
+ 'wifi': () => import('./components/wifi.vue'),
454
+ 'zoom_out': () => import('./components/zoom_out.vue'),
455
+ 'window_content': () => import('./components/window_content.vue'),
456
+ 'zoom_reset': () => import('./components/zoom_reset.vue'),
458
457
  'nomi-ai': () => import('./components/nomi-ai.vue'),
458
+ 'nomi-arrow-right-top': () => import('./components/nomi-arrow-right-top.vue'),
459
459
  'nomi-arrow-down': () => import('./components/nomi-arrow-down.vue'),
460
- 'nomi-arrows': () => import('./components/nomi-arrows.vue'),
461
- 'nomi-calendar-alt': () => import('./components/nomi-calendar-alt.vue'),
462
- 'nomi-arrow_up': () => import('./components/nomi-arrow_up.vue'),
463
460
  'nomi-arrow-up': () => import('./components/nomi-arrow-up.vue'),
461
+ 'nomi-arrow_up': () => import('./components/nomi-arrow_up.vue'),
462
+ 'nomi-arrows': () => import('./components/nomi-arrows.vue'),
464
463
  'nomi-calendar-alt2': () => import('./components/nomi-calendar-alt2.vue'),
465
- 'nomi-arrow_down': () => import('./components/nomi-arrow_down.vue'),
464
+ 'nomi-calendar-alt': () => import('./components/nomi-calendar-alt.vue'),
466
465
  'nomi-calendar': () => import('./components/nomi-calendar.vue'),
466
+ 'nomi-calendar-view': () => import('./components/nomi-calendar-view.vue'),
467
467
  'nomi-close': () => import('./components/nomi-close.vue'),
468
+ 'nomi-expand': () => import('./components/nomi-expand.vue'),
469
+ 'nomi-arrow_down': () => import('./components/nomi-arrow_down.vue'),
470
+ 'nomi-dashboard': () => import('./components/nomi-dashboard.vue'),
468
471
  'nomi-eye-open': () => import('./components/nomi-eye-open.vue'),
469
- 'nomi-eye-close': () => import('./components/nomi-eye-close.vue'),
470
472
  'nomi-clear': () => import('./components/nomi-clear.vue'),
471
- 'nomi-calendar-view': () => import('./components/nomi-calendar-view.vue'),
472
- 'nomi-hide': () => import('./components/nomi-hide.vue'),
473
- 'nomi-help': () => import('./components/nomi-help.vue'),
473
+ 'nomi-card': () => import('./components/nomi-card.vue'),
474
474
  'nomi-eye': () => import('./components/nomi-eye.vue'),
475
+ 'nomi-kanban-view': () => import('./components/nomi-kanban-view.vue'),
476
+ 'nomi-hide': () => import('./components/nomi-hide.vue'),
475
477
  'nomi-logout': () => import('./components/nomi-logout.vue'),
478
+ 'nomi-list-view': () => import('./components/nomi-list-view.vue'),
479
+ 'nomi-help': () => import('./components/nomi-help.vue'),
476
480
  'nomi-move-left': () => import('./components/nomi-move-left.vue'),
481
+ 'nomi-lock': () => import('./components/nomi-lock.vue'),
482
+ 'nomi-money': () => import('./components/nomi-money.vue'),
483
+ 'nomi-person': () => import('./components/nomi-person.vue'),
484
+ 'nomi-filter': () => import('./components/nomi-filter.vue'),
485
+ 'nomi-eye-close': () => import('./components/nomi-eye-close.vue'),
486
+ 'nomi-pen': () => import('./components/nomi-pen.vue'),
487
+ 'nomi-recurrence': () => import('./components/nomi-recurrence.vue'),
488
+ 'nomi-repeat': () => import('./components/nomi-repeat.vue'),
489
+ 'nomi-report': () => import('./components/nomi-report.vue'),
490
+ 'nomi-settings': () => import('./components/nomi-settings.vue'),
477
491
  'nomi-move-right': () => import('./components/nomi-move-right.vue'),
478
492
  'nomi-counterparty': () => import('./components/nomi-counterparty.vue'),
479
- 'nomi-dashboard': () => import('./components/nomi-dashboard.vue'),
480
- 'nomi-kanban-view': () => import('./components/nomi-kanban-view.vue'),
481
- 'nomi-expand': () => import('./components/nomi-expand.vue'),
482
- 'nomi-recurrence': () => import('./components/nomi-recurrence.vue'),
483
- 'nomi-pen': () => import('./components/nomi-pen.vue'),
484
- 'nomi-scissors': () => import('./components/nomi-scissors.vue'),
485
- 'nomi-project': () => import('./components/nomi-project.vue'),
486
493
  'nomi-sort-asc': () => import('./components/nomi-sort-asc.vue'),
487
- 'nomi-report': () => import('./components/nomi-report.vue'),
494
+ 'nomi-table-view': () => import('./components/nomi-table-view.vue'),
495
+ 'nomi-table-config': () => import('./components/nomi-table-config.vue'),
488
496
  'nomi-pin': () => import('./components/nomi-pin.vue'),
489
- 'nomi-card': () => import('./components/nomi-card.vue'),
490
- 'nomi-money': () => import('./components/nomi-money.vue'),
491
- 'nomi-filter': () => import('./components/nomi-filter.vue'),
492
497
  'nomi-tag': () => import('./components/nomi-tag.vue'),
493
- 'nomi-table-config': () => import('./components/nomi-table-config.vue'),
494
- 'nomi-person': () => import('./components/nomi-person.vue'),
495
- 'nomi-transactions': () => import('./components/nomi-transactions.vue'),
496
- 'nomi-settings': () => import('./components/nomi-settings.vue'),
497
- 'nomi-text': () => import('./components/nomi-text.vue'),
498
- 'nomi-repeat': () => import('./components/nomi-repeat.vue'),
499
- 'nomi-target': () => import('./components/nomi-target.vue'),
500
- 'nomi-list-view': () => import('./components/nomi-list-view.vue'),
501
- 'nomi-table-view': () => import('./components/nomi-table-view.vue'),
498
+ 'nomi-scissors': () => import('./components/nomi-scissors.vue'),
502
499
  'nomi-sort-desc': () => import('./components/nomi-sort-desc.vue'),
503
- 'nomi-unpin': () => import('./components/nomi-unpin.vue'),
504
- 'nomi-user': () => import('./components/nomi-user.vue'),
500
+ 'nomi-target': () => import('./components/nomi-target.vue'),
505
501
  'nomi-trash': () => import('./components/nomi-trash.vue'),
502
+ 'nomi-text': () => import('./components/nomi-text.vue'),
503
+ 'nomi-user': () => import('./components/nomi-user.vue'),
504
+ 'nomi-transactions': () => import('./components/nomi-transactions.vue'),
505
+ 'nomi-unpin': () => import('./components/nomi-unpin.vue'),
506
+ 'nomi-project': () => import('./components/nomi-project.vue'),
506
507
  }
@@ -0,0 +1,3 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M12 4.40002C13.9882 4.40002 15.6 6.0118 15.6 8.00002V10.0491C16.033 10.1019 16.3329 10.2116 16.5607 10.4394C17 10.8787 17 11.5858 17 13V15C17 16.4142 17 17.1214 16.5607 17.5607C16.1213 18 15.4142 18 14 18H10C8.58579 18 7.87868 18 7.43934 17.5607C7 17.1214 7 16.4142 7 15V13C7 11.5858 7 10.8787 7.43934 10.4394C7.66715 10.2116 7.96695 10.1019 8.4 10.0491L8.4 8.00002C8.4 6.0118 10.0118 4.40002 12 4.40002ZM14.4 8.00002V10.0005C14.2733 10 14.1401 10 14 10H10C9.85987 10 9.72668 10 9.6 10.0005L9.6 8.00002C9.6 6.67454 10.6745 5.60002 12 5.60002C13.3255 5.60002 14.4 6.67454 14.4 8.00002ZM12.6 13C12.6 12.6687 12.3314 12.4 12 12.4C11.6686 12.4 11.4 12.6687 11.4 13V15C11.4 15.3314 11.6686 15.6 12 15.6C12.3314 15.6 12.6 15.3314 12.6 15V13Z" fill="currentColor"/>
3
+ </svg>
@@ -7,7 +7,7 @@ const SORTABLE_ATTRIBUTES = ['drag-ignore-handle', 'scrollable'];
7
7
 
8
8
  const DEFAULT_OPTIONS = {
9
9
  draggableClass: DRAGGABLE_CLASS,
10
- // dragHandleClass: DRAG_HANDLE_CLASS,
10
+ dragHandleClass: DRAG_HANDLE_CLASS,
11
11
  delay: 200,
12
12
  tresholdDistance: 2,
13
13
  draggable: `.${DRAGGABLE_CLASS}`,
@@ -46,6 +46,7 @@
46
46
  :currencies="currencies"
47
47
  :currency="currency"
48
48
  :subrows-property="subrowsProperty"
49
+ :async-subrows-property="asyncSubrowsProperty"
49
50
  :divider-property="dividerProperty"
50
51
  :indicator-type="indicatorType"
51
52
  :expanded-all="expandedAll"
@@ -58,6 +59,7 @@
58
59
  :sorting.sync="_sorting"
59
60
  :sort-as-string="sortAsString"
60
61
  :active="active"
62
+ @loadChildren="$emit('loadChildren', $event)"
61
63
  @update:expanded-ids="$emit('update:expanded-ids', $event)"
62
64
  @new="$emit('new', $event)"
63
65
  @filter="$emit('filter', $event)"
@@ -86,6 +88,7 @@ import itfTableGroup from './TableGroup.vue';
86
88
  import itfTableHeader from './TableHeader.vue';
87
89
  import itfNoticePopout from '../popover/NoticePopout.vue';
88
90
  import './table2.scss';
91
+ import itfTableBody from '@itfin/components/src/components/table/TableBody.vue';
89
92
 
90
93
  export default @Component({
91
94
  name: 'itfTable2',
@@ -93,6 +96,7 @@ export default @Component({
93
96
  return { tableEl: this }; // do not use Provide from vue-property-decorator
94
97
  },
95
98
  components: {
99
+ itfTableBody,
96
100
  itfCheckboxGroup,
97
101
  itfTableHeader,
98
102
  itfButton,
@@ -109,6 +113,7 @@ class itfTable2 extends Vue {
109
113
  @Prop({ type: String, default: null }) idProperty;
110
114
  @Prop({ type: String, default: null }) cssProperty;
111
115
  @Prop({ type: String, default: null }) subrowsProperty;
116
+ @Prop({ type: String, default: null }) asyncSubrowsProperty;
112
117
  @Prop({ type: String, default: null }) dividerProperty;
113
118
  @Prop({ type: String, default: null }) editableProperty;
114
119
  @Prop({ default: null }) active;
@@ -7,6 +7,7 @@
7
7
  :columns="columns"
8
8
  :id-property="idProperty"
9
9
  :subrows-property="subrowsProperty"
10
+ :async-subrows-property="asyncSubrowsProperty"
10
11
  :divider-property="dividerProperty"
11
12
  :show-add-column="showAddColumn"
12
13
  :show-actions="showActions"
@@ -144,6 +145,7 @@ class itfTableBody extends Vue {
144
145
  @Prop() rows;
145
146
  @Prop() idProperty;
146
147
  @Prop() subrowsProperty;
148
+ @Prop() asyncSubrowsProperty;
147
149
  @Prop() dividerProperty;
148
150
  @Prop() active;
149
151
  @Prop(Boolean) showAddColumn;
@@ -164,6 +166,10 @@ class itfTableBody extends Vue {
164
166
  this.$emit('update:expanded-ids', this.expandedIds.includes(item[this.idProperty])
165
167
  ? this.expandedIds.filter((id) => id !== item[this.idProperty])
166
168
  : [...this.expandedIds, item[this.idProperty]]);
169
+
170
+ if (this.asyncSubrowsProperty && item[this.asyncSubrowsProperty] && item[this.asyncSubrowsProperty]) {
171
+ this.$emit('loadChildren', item);
172
+ }
167
173
  }
168
174
  }
169
175
  </script>
@@ -62,6 +62,7 @@
62
62
  @row-click="$emit('row-click', $event)"
63
63
  :id-property="idProperty"
64
64
  :subrows-property="subrowsProperty"
65
+ :async-subrows-property="asyncSubrowsProperty"
65
66
  :divider-property="dividerProperty"
66
67
  :rows="rows"
67
68
  :editable="editable"
@@ -80,6 +81,7 @@
80
81
  :css-property="cssProperty"
81
82
  :editable-property="editableProperty"
82
83
  :active="active"
84
+ @loadChildren="$emit('loadChildren', $event)"
83
85
  @update:expanded-ids="$emit('update:expanded-ids', $event)"
84
86
  >
85
87
  <template v-for="(_, name) in $slots" #[name]="slotData">
@@ -361,6 +363,7 @@ class itfTableGroup extends Vue {
361
363
  @Prop() title;
362
364
  @Prop() idProperty;
363
365
  @Prop() subrowsProperty;
366
+ @Prop() asyncSubrowsProperty;
364
367
  @Prop() dividerProperty;
365
368
  @Prop() currency;
366
369
  @Prop() currencies;
@@ -29,7 +29,7 @@
29
29
  <div v-if="visibleHeader" group="tablecolumns"
30
30
  class="table-header"
31
31
  @drop="reorderColumns"
32
- v-draggable="{ handle: true, payload: { index: n, item: column }, mirror: {yAxis:false} }">
32
+ v-draggable="{ dragHandleClass: null, handle: true, payload: { index: n, item: column }, mirror: {yAxis:false} }">
33
33
  <itf-dropdown text append-to-body shadow ref="dropdown" class="w-100" :disabled="noColumnMenu">
34
34
  <template #button>
35
35
  <div class="itf-table2__header-title d-flex w-100 align-items-center" :title="getTitle(column.title)">
@@ -2,7 +2,10 @@
2
2
  <div>
3
3
  <div @click.prevent.stop="toggle" class="d-flex align-items-center flex-nowrap" :class="{'active-toggle': visible}">
4
4
  <div class="item-toggle text-muted">
5
- <template v-if="visible && expanded">
5
+ <template v-if="visible && loading">
6
+ <div class="itf-spinner"></div>
7
+ </template>
8
+ <template v-else-if="visible && expanded">
6
9
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
7
10
  width="16" height="16" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
8
11
  <path d="M184.7,413.1l2.1-1.8l156.5-136c5.3-4.6,8.6-11.5,8.6-19.2c0-7.7-3.4-14.6-8.6-19.2L187.1,101l-2.6-2.3
@@ -23,6 +26,10 @@
23
26
  </div>
24
27
  </template>
25
28
  <style lang="scss" scoped>
29
+ .itf-spinner {
30
+ width: 1rem;
31
+ height: 1rem;
32
+ }
26
33
  .active-toggle {
27
34
  cursor: pointer;
28
35
  }
@@ -43,6 +50,7 @@ export default @Component({
43
50
  class itfTableRowToggle extends Vue {
44
51
  @Prop(Boolean) expanded;
45
52
  @Prop(Boolean) visible;
53
+ @Prop(Boolean) loading;
46
54
 
47
55
  toggle() {
48
56
  this.$emit('toggle');
@@ -55,8 +55,8 @@
55
55
  <slot
56
56
  :name="`column.${column.property}`"
57
57
  :toggle="() => $emit('toggle', item)"
58
- :hasSubitems="!!(subrowsProperty && item[subrowsProperty] && item[subrowsProperty].length)"
59
- :isExpanded="!!(item[subrowsProperty] && item[subrowsProperty].length && !isExpanded(item))"
58
+ :hasSubitems="hasSubitems(item)"
59
+ :isExpanded="!!(hasSubitems(item) && !isExpanded(item))"
60
60
  :level="level" :editable="column.editable && editable" :item="item" :column="column" :update="(val) => updateValue(item, val, n, column)" :value="getValue(item, column)">
61
61
  <template v-if="column.editable && editable && (!editableProperty || item[editableProperty])">
62
62
  <slot :name="`edit.${column.type}`" :level="level" :toggle="() => $emit('toggle', item)" :update="(val) => updateValue(item, val, n, column)" :value="getValue(item, column)" :item="item" :column="column">
@@ -102,6 +102,7 @@
102
102
  :columns="columns"
103
103
  :id-property="idProperty"
104
104
  :subrows-property="subrowsProperty"
105
+ :async-subrows-property="asyncSubrowsProperty"
105
106
  :show-add-column="showAddColumn"
106
107
  :show-actions="showActions"
107
108
  :no-select-all="noSelectAll"
@@ -161,6 +162,7 @@ class itfTableRows extends Vue {
161
162
  @Prop() rows;
162
163
  @Prop() idProperty;
163
164
  @Prop() subrowsProperty;
165
+ @Prop() asyncSubrowsProperty;
164
166
  @Prop() dividerProperty;
165
167
  @Prop() active;
166
168
  @Prop(Boolean) showAddColumn;
@@ -190,6 +192,12 @@ class itfTableRows extends Vue {
190
192
  return this.columns.findIndex((column) => column.lastPinned);
191
193
  }
192
194
 
195
+ hasSubitems(item) {
196
+ const hasFactItems = this.subrowsProperty && item[this.subrowsProperty] && item[this.subrowsProperty].length;
197
+ const hasPlanItems = this.asyncSubrowsProperty && item[this.asyncSubrowsProperty] && item[this.asyncSubrowsProperty];
198
+ return !!(hasFactItems || hasPlanItems);
199
+ }
200
+
193
201
  updateValue(item, value, index, column) {
194
202
  const newItem = { ...item };
195
203
  if (newItem[column.property] !== value) {
@@ -41,6 +41,7 @@
41
41
  </itf-dropdown>
42
42
 
43
43
  <itf-segmented-control
44
+ v-if="tabs.length"
44
45
  class="small"
45
46
  v-model="currentTab"
46
47
  item-key="value"