@eturnity/eturnity_reusable_components 6.43.9-EPDM-6751.1 → 6.43.9-qa-16-11.6.1
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 +2 -2
- package/src/components/filter/filterSettings.vue +2 -2
- package/src/components/iconWrapper/index.vue +4 -5
- package/src/components/projectMarker/index.vue +1 -7
- package/src/components/tableDropdown/index.vue +9 -18
- package/src/components/tables/mainTable/index.vue +69 -6
- package/src/components/threeDots/index.vue +7 -13
- package/src/assets/svgIcons/collections.svg +0 -3
- package/src/assets/svgIcons/dashboard.svg +0 -3
- package/src/assets/svgIcons/subscriptions.svg +0 -3
- package/src/components/sideMenu/index.vue +0 -262
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@eturnity/eturnity_reusable_components",
|
3
|
-
"version": "6.43.9-
|
3
|
+
"version": "6.43.9-qa-16-11.06.1",
|
4
4
|
"private": false,
|
5
5
|
"scripts": {
|
6
6
|
"dev": "vue-cli-service serve",
|
@@ -63,4 +63,4 @@
|
|
63
63
|
"author": "Aaron Enser",
|
64
64
|
"license": "ISC",
|
65
65
|
"homepage": "https://bitbucket.org/eturnitydevs/eturnity_reusable_components#readme"
|
66
|
-
}
|
66
|
+
}
|
@@ -338,7 +338,7 @@ const DragContainer = styled.div`
|
|
338
338
|
|
339
339
|
const RowContainer = styled('div', TitleAttrs)`
|
340
340
|
padding: 10px 14px;
|
341
|
-
|
341
|
+
width: 300px;
|
342
342
|
|
343
343
|
${({ showBorder, theme }) =>
|
344
344
|
showBorder &&
|
@@ -613,7 +613,7 @@ export default {
|
|
613
613
|
return type === 'multi_select_integer' || type === 'multi_select_string'
|
614
614
|
},
|
615
615
|
isRangeSelector(type) {
|
616
|
-
return type === 'integer_range'
|
616
|
+
return type === 'integer_range'
|
617
617
|
},
|
618
618
|
isDateSelector(type) {
|
619
619
|
return type === 'datetime'
|
@@ -2,7 +2,6 @@
|
|
2
2
|
<page-container :withDate="!!date">
|
3
3
|
<marker-container
|
4
4
|
v-if="markerData"
|
5
|
-
:hasBorderRadius="hasBorderRadius"
|
6
5
|
:backgroundColor="markerData.color"
|
7
6
|
:hasIcon="!!iconName"
|
8
7
|
:isEditionAllowed="editionAllowed"
|
@@ -120,7 +119,6 @@ const CtaContainer = styled.div`
|
|
120
119
|
`
|
121
120
|
|
122
121
|
const MarkerAttrs = {
|
123
|
-
hasBorderRadius: Boolean,
|
124
122
|
backgroundColor: String,
|
125
123
|
hasIcon: Boolean,
|
126
124
|
isEditionAllowed: Boolean,
|
@@ -138,7 +136,7 @@ const MarkerContainer = styled('div', MarkerAttrs)`
|
|
138
136
|
color: ${(props) => props.theme.colors.white};
|
139
137
|
background-color: ${(props) =>
|
140
138
|
props.backgroundColor ? props.backgroundColor : props.theme.colors.grey3};
|
141
|
-
border-radius:
|
139
|
+
border-radius: 4px;
|
142
140
|
white-space: nowrap;
|
143
141
|
cursor: ${(props) => props.isEditionAllowed ? 'pointer' : props.cursor};
|
144
142
|
|
@@ -244,10 +242,6 @@ export default {
|
|
244
242
|
cursor: {
|
245
243
|
required: false,
|
246
244
|
default: 'default'
|
247
|
-
},
|
248
|
-
hasBorderRadius: {
|
249
|
-
required: false,
|
250
|
-
default: true
|
251
245
|
}
|
252
246
|
},
|
253
247
|
data() {
|
@@ -104,12 +104,7 @@
|
|
104
104
|
:src="require('../../assets/icons/collapse_arrow_icon.svg')"
|
105
105
|
/>
|
106
106
|
</arrow-wrapper>
|
107
|
-
<options-container
|
108
|
-
v-if="isOpen"
|
109
|
-
:top="getItemLocation('top')"
|
110
|
-
:left="getItemLocation('left')"
|
111
|
-
ref="optionsContainer"
|
112
|
-
>
|
107
|
+
<options-container v-if="isOpen" ref="optionsContainer">
|
113
108
|
<options-wrapper @click.prevent.stop>
|
114
109
|
<search-container @click.prevent.stop>
|
115
110
|
<search-input
|
@@ -288,8 +283,7 @@ const OptionsContainer = styled('div', optionsAttrs)`
|
|
288
283
|
position: absolute;
|
289
284
|
display: grid;
|
290
285
|
grid-template-rows: 1fr auto;
|
291
|
-
|
292
|
-
left: ${(props) => props.left + 'px'};
|
286
|
+
left: 20px;
|
293
287
|
width: auto;
|
294
288
|
max-height: 360px;
|
295
289
|
min-height: 200px;
|
@@ -510,8 +504,13 @@ export default {
|
|
510
504
|
}
|
511
505
|
},
|
512
506
|
methods: {
|
513
|
-
toggleOpen() {
|
514
|
-
if (
|
507
|
+
toggleOpen(event) {
|
508
|
+
if (
|
509
|
+
this.disabled ||
|
510
|
+
(event &&
|
511
|
+
!(event.target === this.$el) &&
|
512
|
+
!this.$el.contains(event.target))
|
513
|
+
) {
|
515
514
|
return
|
516
515
|
}
|
517
516
|
this.wasClicked = false
|
@@ -558,14 +557,6 @@ export default {
|
|
558
557
|
this.inputText = value
|
559
558
|
this.$emit('dropdown-search', value)
|
560
559
|
},
|
561
|
-
getItemLocation(value) {
|
562
|
-
let ref = this.$refs.dropdownItem[0]
|
563
|
-
let location = ref.$el.getBoundingClientRect()[value]
|
564
|
-
if (value === 'top') {
|
565
|
-
location = location + window.scrollY + 40
|
566
|
-
}
|
567
|
-
return location
|
568
|
-
},
|
569
560
|
clickOutside(event) {
|
570
561
|
if (event.target === this.$el || this.$el.contains(event.target)) {
|
571
562
|
return
|
@@ -1,9 +1,15 @@
|
|
1
1
|
<template>
|
2
|
-
<page-container
|
2
|
+
<page-container
|
3
|
+
:tableHeight="tableHeight"
|
4
|
+
:shouldSetCustomHeight="doesTableContainDraggables"
|
5
|
+
>
|
3
6
|
<table-title v-if="titleText">
|
4
7
|
{{ titleText }}
|
5
8
|
</table-title>
|
6
|
-
<table-scroll
|
9
|
+
<table-scroll
|
10
|
+
ref="tableRef"
|
11
|
+
:isPositionAbsolute="doesTableContainDraggables"
|
12
|
+
>
|
7
13
|
<table-wrapper :fullWidth="fullWidth">
|
8
14
|
<spinner-wrapper v-if="isLoading">
|
9
15
|
<spinner />
|
@@ -26,7 +32,15 @@
|
|
26
32
|
import styled from 'vue-styled-components'
|
27
33
|
import Spinner from '../../spinner'
|
28
34
|
|
29
|
-
const
|
35
|
+
const pageContainerProps = {
|
36
|
+
tableHeight: String,
|
37
|
+
shouldSetCustomHeight: Boolean
|
38
|
+
}
|
39
|
+
const PageContainer = styled('div', pageContainerProps)`
|
40
|
+
position: relative;
|
41
|
+
height: ${(props) =>
|
42
|
+
props.shouldSetCustomHeight ? props.tableHeight : 'auto'};
|
43
|
+
`
|
30
44
|
|
31
45
|
const TableTitle = styled.div`
|
32
46
|
margin-bottom: 16px;
|
@@ -35,15 +49,27 @@ const TableTitle = styled.div`
|
|
35
49
|
text-transform: uppercase;
|
36
50
|
`
|
37
51
|
|
38
|
-
const
|
52
|
+
const tableScrollProps = {
|
53
|
+
isPositionAbsolute: Boolean
|
54
|
+
}
|
55
|
+
|
56
|
+
const TableScroll = styled('div', tableScrollProps)`
|
39
57
|
max-width: 100%;
|
58
|
+
height: auto;
|
59
|
+
${(props) =>
|
60
|
+
props.isPositionAbsolute &&
|
61
|
+
`
|
62
|
+
position: absolute;
|
63
|
+
left: -20px;
|
64
|
+
`}
|
40
65
|
`
|
41
66
|
|
42
67
|
const wrapperAttrs = { fullWidth: Boolean }
|
43
68
|
const TableWrapper = styled('div', wrapperAttrs)`
|
44
69
|
width: ${(props) => (props.fullWidth ? '100%' : 'fit-content')};
|
45
70
|
max-width: 100%;
|
46
|
-
overflow: auto;
|
71
|
+
overflow-x: auto;
|
72
|
+
overflow-y: hidden;
|
47
73
|
|
48
74
|
::-webkit-scrollbar {
|
49
75
|
height: 5px; //height of the whole scrollbar area
|
@@ -67,7 +93,11 @@ const SpinnerWrapper = styled.div`
|
|
67
93
|
justify-items: center;
|
68
94
|
`
|
69
95
|
|
70
|
-
const containerAttrs = {
|
96
|
+
const containerAttrs = {
|
97
|
+
cellPaddings: String,
|
98
|
+
tableCursor: String
|
99
|
+
}
|
100
|
+
|
71
101
|
const TableContainer = styled('table', containerAttrs)`
|
72
102
|
width: 100%;
|
73
103
|
border-collapse: collapse;
|
@@ -378,6 +408,39 @@ export default {
|
|
378
408
|
tableCursor: {
|
379
409
|
required: false
|
380
410
|
}
|
411
|
+
},
|
412
|
+
data() {
|
413
|
+
return {
|
414
|
+
tableHeight: 'auto',
|
415
|
+
doesTableContainDraggables: false
|
416
|
+
}
|
417
|
+
},
|
418
|
+
mounted() {
|
419
|
+
this.observeTableHeight()
|
420
|
+
},
|
421
|
+
beforeDestroy() {
|
422
|
+
if (this.resizeObserver) {
|
423
|
+
this.resizeObserver.disconnect()
|
424
|
+
}
|
425
|
+
},
|
426
|
+
methods: {
|
427
|
+
observeTableHeight() {
|
428
|
+
if (!this.$refs.tableRef) return
|
429
|
+
|
430
|
+
const tableElement = this.$refs.tableRef.$el
|
431
|
+
|
432
|
+
this.resizeObserver = new ResizeObserver(() => {
|
433
|
+
const newTableHeight = this.titleText
|
434
|
+
? tableElement.offsetHeight + 33
|
435
|
+
: tableElement.offsetHeight
|
436
|
+
this.tableHeight = `${newTableHeight}px`
|
437
|
+
this.doesTableContainDraggables = Boolean(
|
438
|
+
tableElement.querySelector('.drag-container')
|
439
|
+
)
|
440
|
+
})
|
441
|
+
|
442
|
+
this.resizeObserver.observe(tableElement)
|
443
|
+
}
|
381
444
|
}
|
382
445
|
}
|
383
446
|
</script>
|
@@ -8,8 +8,6 @@
|
|
8
8
|
<dropdown-container
|
9
9
|
v-if="isOpen"
|
10
10
|
@click.stop
|
11
|
-
:top="getItemLocation('top')"
|
12
|
-
:right="getItemLocation('right')"
|
13
11
|
:containerWidth="childOpen ? 440 : 240"
|
14
12
|
ref="dropdownContainer"
|
15
13
|
>
|
@@ -130,6 +128,7 @@ const PageContainer = styled.div`
|
|
130
128
|
justify-items: center;
|
131
129
|
width: 30px;
|
132
130
|
height: 30px;
|
131
|
+
position: relative;
|
133
132
|
|
134
133
|
&:hover {
|
135
134
|
background-color: ${(props) => props.theme.colors.grey5};
|
@@ -158,12 +157,15 @@ const DotItem = styled.div`
|
|
158
157
|
border-radius: 50%;
|
159
158
|
`
|
160
159
|
|
161
|
-
const dropdownAttrs = {
|
160
|
+
const dropdownAttrs = {
|
161
|
+
containerWidth: Number
|
162
|
+
}
|
162
163
|
const DropdownContainer = styled('div', dropdownAttrs)`
|
163
164
|
z-index: 99;
|
164
165
|
height: 200px;
|
165
|
-
top:
|
166
|
-
|
166
|
+
top: 0;
|
167
|
+
right: 27px;
|
168
|
+
|
167
169
|
position: absolute;
|
168
170
|
display: grid;
|
169
171
|
grid-template-columns: auto auto;
|
@@ -299,14 +301,6 @@ export default {
|
|
299
301
|
document.removeEventListener('click', this.clickOutside)
|
300
302
|
}
|
301
303
|
},
|
302
|
-
getItemLocation(value) {
|
303
|
-
let ref = this.$refs.dropdownItem
|
304
|
-
let location = ref.$el.getBoundingClientRect()[value]
|
305
|
-
if (value === 'top') {
|
306
|
-
location = location + window.scrollY
|
307
|
-
}
|
308
|
-
return location
|
309
|
-
},
|
310
304
|
hasChildren(item) {
|
311
305
|
return !!item.children && !!item.children.length
|
312
306
|
},
|
@@ -1,3 +0,0 @@
|
|
1
|
-
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
-
<path d="M17 10H1C0.45 10 0 10.45 0 11V17C0 17.55 0.45 18 1 18H17C17.55 18 18 17.55 18 17V11C18 10.45 17.55 10 17 10ZM4 16C2.9 16 2 15.1 2 14C2 12.9 2.9 12 4 12C5.1 12 6 12.9 6 14C6 15.1 5.1 16 4 16ZM17 0H1C0.45 0 0 0.45 0 1V7C0 7.55 0.45 8 1 8H17C17.55 8 18 7.55 18 7V1C18 0.45 17.55 0 17 0ZM4 6C2.9 6 2 5.1 2 4C2 2.9 2.9 2 4 2C5.1 2 6 2.9 6 4C6 5.1 5.1 6 4 6Z" fill="white"/>
|
3
|
-
</svg>
|
@@ -1,262 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<page-container>
|
3
|
-
<spinner-container v-if="!tabsData.length">
|
4
|
-
<spinner />
|
5
|
-
</spinner-container>
|
6
|
-
<list-container v-else>
|
7
|
-
<template v-for="(item, idx) in tabsData">
|
8
|
-
<list-item
|
9
|
-
v-if="!item.children"
|
10
|
-
:key="idx"
|
11
|
-
:isActive="activeTab === item.key"
|
12
|
-
@click="$emit('tab-click', { activeKey: item.key })"
|
13
|
-
>
|
14
|
-
<icon-container :isActive="activeTab === item.key">
|
15
|
-
<icon :name="item.icon" color="#fff" cursor="pointer" size="18px" />
|
16
|
-
</icon-container>
|
17
|
-
<list-text>{{ $gettext(item.label) }}</list-text>
|
18
|
-
</list-item>
|
19
|
-
<collapse-wrapper v-else :key="idx + item.key">
|
20
|
-
<collapse-container @click="toggleActiveDropdown(item.key)">
|
21
|
-
<icon-container :isActive="activeParentTab === item.key">
|
22
|
-
<icon
|
23
|
-
:name="item.icon"
|
24
|
-
color="#fff"
|
25
|
-
cursor="pointer"
|
26
|
-
size="18px"
|
27
|
-
/>
|
28
|
-
</icon-container>
|
29
|
-
<list-text>{{ $gettext(item.label) }}</list-text>
|
30
|
-
<arrow-container>
|
31
|
-
<icon
|
32
|
-
:name="activeDropdown === item.key ? 'arrow_up' : 'arrow_down'"
|
33
|
-
color="white"
|
34
|
-
size="10px"
|
35
|
-
/>
|
36
|
-
</arrow-container>
|
37
|
-
</collapse-container>
|
38
|
-
<template v-if="activeDropdown === item.key">
|
39
|
-
<sub-router
|
40
|
-
v-for="subItem in item.children"
|
41
|
-
:key="subItem.key"
|
42
|
-
:isActive="activeTab === subItem.key"
|
43
|
-
@click="
|
44
|
-
$emit('tab-click', {
|
45
|
-
activeKey: subItem.key,
|
46
|
-
parentKey: item.key
|
47
|
-
})
|
48
|
-
"
|
49
|
-
>
|
50
|
-
{{ $gettext(subItem.label) }}
|
51
|
-
</sub-router>
|
52
|
-
</template>
|
53
|
-
</collapse-wrapper>
|
54
|
-
</template>
|
55
|
-
</list-container>
|
56
|
-
<bottom-section v-if="hasLogout">
|
57
|
-
<icon-container
|
58
|
-
:isActive="false"
|
59
|
-
:isButton="true"
|
60
|
-
@click="$emit('on-logout')"
|
61
|
-
>
|
62
|
-
<rotate-icon
|
63
|
-
name="initial_situation"
|
64
|
-
color="#fff"
|
65
|
-
cursor="pointer"
|
66
|
-
size="18px"
|
67
|
-
/>
|
68
|
-
</icon-container>
|
69
|
-
<app-version>{{ appVersion }}</app-version>
|
70
|
-
</bottom-section>
|
71
|
-
</page-container>
|
72
|
-
</template>
|
73
|
-
|
74
|
-
<script>
|
75
|
-
import styled from 'vue-styled-components'
|
76
|
-
import Icon from '../icon'
|
77
|
-
import Spinner from '../spinner'
|
78
|
-
|
79
|
-
const PageContainer = styled.div`
|
80
|
-
background-color: ${(props) => props.theme.colors.grey6};
|
81
|
-
padding: 14px 12px;
|
82
|
-
min-width: 220px;
|
83
|
-
display: flex;
|
84
|
-
flex-direction: column;
|
85
|
-
justify-content: space-between;
|
86
|
-
`
|
87
|
-
|
88
|
-
const ListContainer = styled.div`
|
89
|
-
display: grid;
|
90
|
-
grid-gap: 6px;
|
91
|
-
`
|
92
|
-
|
93
|
-
const IconAttrs = { isActive: Boolean, isButton: Boolean }
|
94
|
-
|
95
|
-
const ListItem = styled('div', IconAttrs)`
|
96
|
-
display: grid;
|
97
|
-
align-items: center;
|
98
|
-
grid-template-columns: auto 1fr;
|
99
|
-
grid-gap: 20px;
|
100
|
-
cursor: pointer;
|
101
|
-
padding: 4px;
|
102
|
-
border-radius: 6px;
|
103
|
-
background-color: ${(props) =>
|
104
|
-
props.isActive ? 'rgba(255, 255, 255, 0.1)' : ''};
|
105
|
-
|
106
|
-
:hover {
|
107
|
-
background-color: rgba(255, 255, 255, 0.1);
|
108
|
-
}
|
109
|
-
`
|
110
|
-
|
111
|
-
const ListText = styled.div`
|
112
|
-
font-size: 16px;
|
113
|
-
font-weight: 700;
|
114
|
-
color: ${(props) => props.theme.colors.white};
|
115
|
-
`
|
116
|
-
|
117
|
-
const IconContainer = styled('div', IconAttrs)`
|
118
|
-
display: grid;
|
119
|
-
align-items: center;
|
120
|
-
justify-items: center;
|
121
|
-
width: 32px;
|
122
|
-
height: 32px;
|
123
|
-
background-color: ${(props) =>
|
124
|
-
props.isActive ? props.theme.colors.red : 'rgba(255, 255, 255, 0.2)'};
|
125
|
-
border-radius: 6px;
|
126
|
-
|
127
|
-
${({ isButton = false }) =>
|
128
|
-
isButton &&
|
129
|
-
`
|
130
|
-
cursor: pointer;
|
131
|
-
&:hover {
|
132
|
-
background-color: rgba(255, 255, 255, 0.3);
|
133
|
-
}
|
134
|
-
`}
|
135
|
-
`
|
136
|
-
|
137
|
-
const SpinnerContainer = styled.div`
|
138
|
-
margin-top: 30px;
|
139
|
-
`
|
140
|
-
|
141
|
-
const BottomSection = styled.div`
|
142
|
-
display: flex;
|
143
|
-
justify-content: space-between;
|
144
|
-
align-items: center;
|
145
|
-
`
|
146
|
-
|
147
|
-
const RotateIcon = styled(Icon)`
|
148
|
-
transform: rotate(-90deg);
|
149
|
-
`
|
150
|
-
|
151
|
-
const AppVersion = styled.p`
|
152
|
-
font-size: 11px;
|
153
|
-
line-height: 13px;
|
154
|
-
color: ${(props) => props.theme.colors.white};
|
155
|
-
margin-right: 6px;
|
156
|
-
`
|
157
|
-
|
158
|
-
const SubRouter = styled('div', IconAttrs)`
|
159
|
-
display: grid;
|
160
|
-
grid-template-columns: 1fr;
|
161
|
-
grid-gap: 10px;
|
162
|
-
align-items: center;
|
163
|
-
justify-items: flex-start;
|
164
|
-
cursor: pointer;
|
165
|
-
margin-left: 65px;
|
166
|
-
padding: 8px;
|
167
|
-
border-radius: 6px;
|
168
|
-
color: ${(props) => props.theme.colors.white};
|
169
|
-
font-weight: 700;
|
170
|
-
${({ isActive }) =>
|
171
|
-
isActive &&
|
172
|
-
`
|
173
|
-
background: rgba(255, 255, 255, 0.1);
|
174
|
-
`}
|
175
|
-
|
176
|
-
&:hover {
|
177
|
-
background: rgba(255, 255, 255, 0.1);
|
178
|
-
}
|
179
|
-
`
|
180
|
-
|
181
|
-
const CollapseContainer = styled.div`
|
182
|
-
display: grid;
|
183
|
-
grid-template-columns: auto 1fr auto;
|
184
|
-
grid-gap: 20px;
|
185
|
-
padding: 4px;
|
186
|
-
border-radius: 6px;
|
187
|
-
align-items: center;
|
188
|
-
cursor: pointer;
|
189
|
-
&:hover {
|
190
|
-
background: rgba(255, 255, 255, 0.1);
|
191
|
-
}
|
192
|
-
`
|
193
|
-
|
194
|
-
const CollapseWrapper = styled.div`
|
195
|
-
display: grid;
|
196
|
-
grid-template-columns: 1fr;
|
197
|
-
grid-gap: 10px;
|
198
|
-
user-select: none;
|
199
|
-
margin-bottom: 2px;
|
200
|
-
`
|
201
|
-
|
202
|
-
const ArrowContainer = styled.div`
|
203
|
-
padding-bottom: 5px;
|
204
|
-
`
|
205
|
-
|
206
|
-
export default {
|
207
|
-
name: 'SideMenu',
|
208
|
-
components: {
|
209
|
-
PageContainer,
|
210
|
-
ListContainer,
|
211
|
-
ListItem,
|
212
|
-
ListText,
|
213
|
-
Icon,
|
214
|
-
IconContainer,
|
215
|
-
Spinner,
|
216
|
-
SpinnerContainer,
|
217
|
-
BottomSection,
|
218
|
-
RotateIcon,
|
219
|
-
AppVersion,
|
220
|
-
CollapseWrapper,
|
221
|
-
CollapseContainer,
|
222
|
-
SubRouter,
|
223
|
-
ArrowContainer
|
224
|
-
},
|
225
|
-
data() {
|
226
|
-
return {
|
227
|
-
activeDropdown: null
|
228
|
-
}
|
229
|
-
},
|
230
|
-
mounted() {
|
231
|
-
this.activeDropdown = this.activeParentTab
|
232
|
-
},
|
233
|
-
props: {
|
234
|
-
tabsData: {
|
235
|
-
required: true
|
236
|
-
},
|
237
|
-
activeTab: {
|
238
|
-
required: true
|
239
|
-
},
|
240
|
-
activeParentTab: {
|
241
|
-
required: false
|
242
|
-
},
|
243
|
-
hasLogout: {
|
244
|
-
required: false,
|
245
|
-
default: true
|
246
|
-
},
|
247
|
-
appVersion: {
|
248
|
-
required: false,
|
249
|
-
type: String
|
250
|
-
}
|
251
|
-
},
|
252
|
-
methods: {
|
253
|
-
toggleActiveDropdown(value) {
|
254
|
-
if (this.activeDropdown === value) {
|
255
|
-
this.activeDropdown = null
|
256
|
-
} else {
|
257
|
-
this.activeDropdown = value
|
258
|
-
}
|
259
|
-
}
|
260
|
-
}
|
261
|
-
}
|
262
|
-
</script>
|