@eturnity/eturnity_reusable_components 7.12.7--EPDM-5518.2 → 7.12.7-EPDM-7951.0
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/.storybook/preview.js +1 -1
- package/package.json +19 -23
- package/src/App.vue +2 -2
- package/src/components/addNewButton/index.vue +5 -3
- package/src/components/buttons/buttonIcon/index.vue +1 -1
- package/src/components/buttons/closeButton/index.vue +1 -1
- package/src/components/buttons/mainButton/index.vue +6 -1
- package/src/components/deleteIcon/DeleteIcon.stories.js +7 -7
- package/src/components/deleteIcon/index.vue +25 -21
- package/src/components/draggableInputHandle/index.vue +24 -25
- package/src/components/dropdown/index.vue +129 -110
- package/src/components/errorMessage/index.vue +1 -1
- package/src/components/filter/filterSettings.vue +54 -113
- package/src/components/filter/index.vue +3 -3
- package/src/components/filter/parentDropdown.vue +2 -2
- package/src/components/icon/iconCache.js +23 -0
- package/src/components/icon/iconCollection.vue +2 -2
- package/src/components/icon/index.vue +67 -70
- package/src/components/iconWrapper/index.vue +1 -4
- package/src/components/infoCard/index.vue +2 -3
- package/src/components/infoText/index.vue +1 -1
- package/src/components/inputs/checkbox/index.vue +24 -16
- package/src/components/inputs/inputNumber/index.vue +7 -10
- package/src/components/inputs/inputNumberQuestion/index.vue +1 -1
- package/src/components/inputs/inputText/index.vue +4 -4
- package/src/components/inputs/radioButton/index.vue +1 -1
- package/src/components/inputs/searchInput/index.vue +7 -8
- package/src/components/inputs/select/index.vue +208 -66
- package/src/components/inputs/select/option/index.vue +5 -5
- package/src/components/inputs/slider/index.vue +16 -16
- package/src/components/inputs/switchField/index.vue +2 -2
- package/src/components/inputs/textAreaInput/index.vue +2 -2
- package/src/components/inputs/toggle/index.vue +2 -2
- package/src/components/label/index.vue +27 -31
- package/src/components/modals/modal/index.vue +2 -6
- package/src/components/navigationTabs/index.vue +27 -20
- package/src/components/pageSubtitle/index.vue +1 -1
- package/src/components/pageTitle/index.vue +4 -4
- package/src/components/pagination/index.vue +5 -3
- package/src/components/progressBar/index.vue +1 -1
- package/src/components/projectMarker/index.vue +11 -8
- package/src/components/sideMenu/index.vue +1 -1
- package/src/components/spinner/index.vue +6 -11
- package/src/components/tableDropdown/index.vue +21 -26
- package/src/components/tables/mainTable/exampleNested.vue +1 -1
- package/src/components/tables/mainTable/index.vue +10 -9
- package/src/components/tables/viewTable/index.vue +2 -2
- package/src/components/threeDots/index.vue +1 -1
- package/src/components/videoThumbnail/index.vue +95 -100
- package/src/main.js +4 -11
- package/src/components/markerItem/index.vue +0 -96
- package/src/components/selectedOptions/index.vue +0 -145
@@ -29,8 +29,12 @@
|
|
29
29
|
<script>
|
30
30
|
// ToDo: add this to storybook
|
31
31
|
// import MainTable from "@eturnity/eturnity_reusable_components/src/components/tables/mainTable"
|
32
|
-
import styled from '
|
32
|
+
import styled from 'vue3-styled-components'
|
33
33
|
import Spinner from '../../spinner'
|
34
|
+
import dragIconSvg from '../../../assets/icons/drag_icon.svg?url'
|
35
|
+
import subpositionIconSvg from '../../../assets/icons/subposition_icon.svg?url'
|
36
|
+
import arrowDownSvg from '../../../assets/icons/arrow_down.svg?url'
|
37
|
+
import arrowUpRedSvg from '../../../assets/icons/arrow_up_red.svg?url'
|
34
38
|
|
35
39
|
const pageContainerProps = {
|
36
40
|
tableHeight: String,
|
@@ -122,6 +126,7 @@ const TableContainer = styled('table', containerAttrs)`
|
|
122
126
|
background-color: ${(props) => props.theme.colors.white};
|
123
127
|
cursor: ${(props) => (props.tableCursor ? props.tableCursor : 'auto')};
|
124
128
|
|
129
|
+
.select-button,
|
125
130
|
.arrow-container,
|
126
131
|
.input-placeholder,
|
127
132
|
.table-dropdown-item {
|
@@ -322,8 +327,7 @@ const TableContainer = styled('table', containerAttrs)`
|
|
322
327
|
height: 16px;
|
323
328
|
cursor: grab;
|
324
329
|
background-position: center;
|
325
|
-
background-image: ${() =>
|
326
|
-
`url(${require('../../../assets/icons/drag_icon.svg')})`};
|
330
|
+
background-image: ${() => `url(${dragIconSvg})`};
|
327
331
|
|
328
332
|
&:active {
|
329
333
|
cursor: grabbing;
|
@@ -335,8 +339,7 @@ const TableContainer = styled('table', containerAttrs)`
|
|
335
339
|
height: 11px;
|
336
340
|
background: no-repeat;
|
337
341
|
margin-left: 10px;
|
338
|
-
background-image: ${() =>
|
339
|
-
`url(${require('../../../assets/icons/subposition_icon.svg')})`};
|
342
|
+
background-image: ${() => `url(${subpositionIconSvg})`};
|
340
343
|
}
|
341
344
|
|
342
345
|
.arrow-down {
|
@@ -344,8 +347,7 @@ const TableContainer = styled('table', containerAttrs)`
|
|
344
347
|
height: 11px;
|
345
348
|
background: no-repeat;
|
346
349
|
background-position: center;
|
347
|
-
background-image: ${() =>
|
348
|
-
`url(${require('../../../assets/icons/arrow_down.svg')})`};
|
350
|
+
background-image: ${() => `url(${arrowDownSvg})`};
|
349
351
|
}
|
350
352
|
|
351
353
|
.arrow-up {
|
@@ -353,8 +355,7 @@ const TableContainer = styled('table', containerAttrs)`
|
|
353
355
|
height: 11px;
|
354
356
|
background: no-repeat;
|
355
357
|
background-position: center;
|
356
|
-
background-image: ${() =>
|
357
|
-
`url(${require('../../../assets/icons/arrow_up_red.svg')})`};
|
358
|
+
background-image: ${() => `url(${arrowUpRedSvg})`};
|
358
359
|
}
|
359
360
|
}
|
360
361
|
|
@@ -29,7 +29,7 @@
|
|
29
29
|
</table-item>
|
30
30
|
<icons-container v-if="showIconsContainer">
|
31
31
|
<delete-icon
|
32
|
-
@click
|
32
|
+
@click="$emit('on-click-delete', index)"
|
33
33
|
color="gray"
|
34
34
|
/>
|
35
35
|
</icons-container>
|
@@ -45,7 +45,7 @@
|
|
45
45
|
// This is a read only table. Pass it data, and it displays it
|
46
46
|
// ToDo: add this to storybook
|
47
47
|
// import ViewTable from "@eturnity/eturnity_reusable_components/src/components/tables/viewTable"
|
48
|
-
import styled from '
|
48
|
+
import styled from 'vue3-styled-components'
|
49
49
|
import DeleteIcon from '../../deleteIcon'
|
50
50
|
import Spinner from '../../spinner'
|
51
51
|
|
@@ -1,108 +1,103 @@
|
|
1
1
|
<template>
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
// />
|
23
|
-
|
24
|
-
import styled from 'vue-styled-components'
|
25
|
-
import Icon from '../icon'
|
26
|
-
|
27
|
-
const wrapperAttrs = { width: String, height:String,fit:String }
|
28
|
-
const Wrapper = styled('div', wrapperAttrs)`
|
29
|
-
display: inline-block;
|
30
|
-
position: relative;
|
31
|
-
width:${props=>props.width};
|
32
|
-
height:${props=>props.height};
|
33
|
-
& img{
|
34
|
-
object-fit:${props=>props.fit};
|
35
|
-
width:${props=>props.width};
|
36
|
-
height:${props=>props.height};
|
37
|
-
}
|
38
|
-
`
|
39
|
-
const iconWrapper = styled('div')`
|
40
|
-
position: absolute;
|
41
|
-
top:0;
|
42
|
-
bottom:0;
|
43
|
-
left:0;
|
44
|
-
right:0;
|
45
|
-
display:flex;
|
46
|
-
justify-content:center;
|
47
|
-
align-items: center;
|
48
|
-
`
|
2
|
+
<wrapper :width="width" :height="height" :fit="fit">
|
3
|
+
<img :src="src" />
|
4
|
+
<iconWrapper>
|
5
|
+
<icon name="play" :size="playIconSize" :color="playIconColor" />
|
6
|
+
</iconWrapper>
|
7
|
+
</wrapper>
|
8
|
+
</template>
|
9
|
+
|
10
|
+
<script>
|
11
|
+
// import VideoThumbnail from "@eturnity/eturnity_reusable_components/src/components/videoThumbnail"
|
12
|
+
// How to use:
|
13
|
+
//<videoThumbnail src="https://musicart.xboxlive.com/6/cfaf1e9d-0000-0000-0000-000000000009/504/image.jpg?w=1920&h=1080"
|
14
|
+
// playIconColor="red"
|
15
|
+
// playIconSize="20px"
|
16
|
+
// width="400px"
|
17
|
+
// height="600px"
|
18
|
+
// />
|
19
|
+
|
20
|
+
import styled from 'vue3-styled-components'
|
21
|
+
import Icon from '../icon'
|
49
22
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
23
|
+
const wrapperAttrs = { width: String, height: String, fit: String }
|
24
|
+
const Wrapper = styled('div', wrapperAttrs)`
|
25
|
+
display: inline-block;
|
26
|
+
position: relative;
|
27
|
+
width: ${(props) => props.width};
|
28
|
+
height: ${(props) => props.height};
|
29
|
+
& img {
|
30
|
+
object-fit: ${(props) => props.fit};
|
31
|
+
width: ${(props) => props.width};
|
32
|
+
height: ${(props) => props.height};
|
33
|
+
}
|
34
|
+
`
|
35
|
+
const iconWrapper = styled('div')`
|
36
|
+
position: absolute;
|
37
|
+
top: 0;
|
38
|
+
bottom: 0;
|
39
|
+
left: 0;
|
40
|
+
right: 0;
|
41
|
+
display: flex;
|
42
|
+
justify-content: center;
|
43
|
+
align-items: center;
|
44
|
+
`
|
45
|
+
|
46
|
+
export default {
|
47
|
+
name: 'VideoThumbnail',
|
48
|
+
components: {
|
49
|
+
Wrapper,
|
50
|
+
Icon,
|
51
|
+
iconWrapper
|
52
|
+
},
|
53
|
+
props: {
|
54
|
+
src: {
|
55
|
+
required: true
|
56
56
|
},
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
},
|
61
|
-
fit:{
|
62
|
-
required: false,
|
63
|
-
default: 'cover'
|
64
|
-
},
|
65
|
-
width: {
|
66
|
-
required: false,
|
67
|
-
default: '300px'
|
68
|
-
},
|
69
|
-
height: {
|
70
|
-
required: false,
|
71
|
-
default: '200px'
|
72
|
-
},
|
73
|
-
playIconSize:{
|
74
|
-
required: false,
|
75
|
-
default: '50px'
|
76
|
-
},
|
77
|
-
playIconColor:{
|
78
|
-
required: false,
|
79
|
-
default: 'blue'
|
80
|
-
}
|
57
|
+
fit: {
|
58
|
+
required: false,
|
59
|
+
default: 'cover'
|
81
60
|
},
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
}
|
61
|
+
width: {
|
62
|
+
required: false,
|
63
|
+
default: '300px'
|
86
64
|
},
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
if (
|
91
|
-
this.$refs.dropdown.$el == event.target ||
|
92
|
-
this.$refs.dropdown.$el.contains(event.target)
|
93
|
-
) {
|
94
|
-
return
|
95
|
-
} else {
|
96
|
-
this.isOpenByClick=false
|
97
|
-
}
|
98
|
-
},
|
65
|
+
height: {
|
66
|
+
required: false,
|
67
|
+
default: '200px'
|
99
68
|
},
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
beforeDestroy() {
|
104
|
-
document.removeEventListener('click', this.clickOutside)
|
69
|
+
playIconSize: {
|
70
|
+
required: false,
|
71
|
+
default: '50px'
|
105
72
|
},
|
73
|
+
playIconColor: {
|
74
|
+
required: false,
|
75
|
+
default: 'blue'
|
76
|
+
}
|
77
|
+
},
|
78
|
+
data() {
|
79
|
+
return {
|
80
|
+
isOpenByClick: false
|
81
|
+
}
|
82
|
+
},
|
83
|
+
methods: {
|
84
|
+
clickOutside(event) {
|
85
|
+
if (this.openingMode != 'click') return
|
86
|
+
if (
|
87
|
+
this.$refs.dropdown.$el == event.target ||
|
88
|
+
this.$refs.dropdown.$el.contains(event.target)
|
89
|
+
) {
|
90
|
+
return
|
91
|
+
} else {
|
92
|
+
this.isOpenByClick = false
|
93
|
+
}
|
94
|
+
}
|
95
|
+
},
|
96
|
+
mounted() {
|
97
|
+
document.addEventListener('click', this.clickOutside)
|
98
|
+
},
|
99
|
+
beforeDestroy() {
|
100
|
+
document.removeEventListener('click', this.clickOutside)
|
106
101
|
}
|
107
|
-
|
108
|
-
|
102
|
+
}
|
103
|
+
</script>
|
package/src/main.js
CHANGED
@@ -1,13 +1,6 @@
|
|
1
|
-
import
|
2
|
-
import
|
3
|
-
import VueCompositionAPI from "@vue/composition-api"
|
4
|
-
import vClickOutside from 'v-click-outside'
|
1
|
+
import App from './App.vue'
|
2
|
+
import { createApp } from 'vue'
|
5
3
|
|
6
|
-
|
4
|
+
const app = createApp(App)
|
7
5
|
|
8
|
-
|
9
|
-
Vue.use(vClickOutside)
|
10
|
-
|
11
|
-
new Vue({
|
12
|
-
render: (h) => h(App),
|
13
|
-
}).$mount("#app")
|
6
|
+
app.mount('#app')
|
@@ -1,96 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<page-container>
|
3
|
-
<marker-container
|
4
|
-
:backgroundColor="backgroundColor"
|
5
|
-
:hasIcon="!!iconName"
|
6
|
-
:cursor="cursor"
|
7
|
-
>
|
8
|
-
<icon
|
9
|
-
v-if="!!iconName"
|
10
|
-
:name="iconName"
|
11
|
-
color="white"
|
12
|
-
size="10px"
|
13
|
-
:cursor="cursor"
|
14
|
-
/>
|
15
|
-
<span>{{ label }}</span>
|
16
|
-
</marker-container>
|
17
|
-
</page-container>
|
18
|
-
</template>
|
19
|
-
|
20
|
-
<script>
|
21
|
-
// import MarkerItem from "@eturnity/eturnity_reusable_components/src/components/markerItem"
|
22
|
-
// To use:
|
23
|
-
// <marker-item
|
24
|
-
// label="Label"
|
25
|
-
// backgroundColor="#ab5348"
|
26
|
-
// iconName="icon_name"
|
27
|
-
// cursor="pointer"
|
28
|
-
// />
|
29
|
-
|
30
|
-
import styled from 'vue-styled-components'
|
31
|
-
import Icon from '../icon'
|
32
|
-
import Modal from '../modals/modal'
|
33
|
-
import PageTitle from '../pageTitle'
|
34
|
-
import DeleteIcon from '../deleteIcon'
|
35
|
-
import PageSubtitle from '../pageSubtitle'
|
36
|
-
import MainButton from '../buttons/mainButton'
|
37
|
-
|
38
|
-
const PageContainer = styled.div`
|
39
|
-
display: flex;
|
40
|
-
align-items: center;
|
41
|
-
font-size: 12px;
|
42
|
-
line-height: 14px;
|
43
|
-
`
|
44
|
-
|
45
|
-
const MarkerAttrs = {
|
46
|
-
backgroundColor: String,
|
47
|
-
hasIcon: Boolean,
|
48
|
-
cursor: String
|
49
|
-
}
|
50
|
-
const MarkerContainer = styled('div', MarkerAttrs)`
|
51
|
-
display: grid;
|
52
|
-
grid-template-columns: ${(props) => (props.hasIcon ? 'auto 1fr' : '1fr')};
|
53
|
-
grid-gap: 5px;
|
54
|
-
position: relative;
|
55
|
-
align-items: center;
|
56
|
-
padding: 2px 7px;
|
57
|
-
color: ${(props) => props.theme.colors.white};
|
58
|
-
background-color: ${(props) =>
|
59
|
-
props.backgroundColor ? props.backgroundColor : props.theme.colors.grey3};
|
60
|
-
border: 1px solid
|
61
|
-
${(props) =>
|
62
|
-
props.backgroundColor ? props.backgroundColor : props.theme.colors.grey3};
|
63
|
-
border-radius: 4px;
|
64
|
-
white-space: nowrap;
|
65
|
-
cursor: ${(props) => (props.isEditionAllowed ? 'pointer' : props.cursor)};
|
66
|
-
`
|
67
|
-
|
68
|
-
// const IconContainer = styled.div`
|
69
|
-
// padding: 8px;
|
70
|
-
// line-height: 0;
|
71
|
-
// `
|
72
|
-
|
73
|
-
export default {
|
74
|
-
name: 'project-marker',
|
75
|
-
components: {
|
76
|
-
PageContainer,
|
77
|
-
MarkerContainer,
|
78
|
-
Icon
|
79
|
-
},
|
80
|
-
props: {
|
81
|
-
backgroundColor: {
|
82
|
-
required: false
|
83
|
-
},
|
84
|
-
iconName: {
|
85
|
-
required: false
|
86
|
-
},
|
87
|
-
label: {
|
88
|
-
required: true
|
89
|
-
},
|
90
|
-
cursor: {
|
91
|
-
required: false,
|
92
|
-
default: 'default'
|
93
|
-
}
|
94
|
-
}
|
95
|
-
}
|
96
|
-
</script>
|
@@ -1,145 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<page-container>
|
3
|
-
<box-container>
|
4
|
-
<selected-container
|
5
|
-
>{{ numberSelected }} {{ $gettext('selected') }}</selected-container
|
6
|
-
>
|
7
|
-
<list-container v-if="optionsList.length">
|
8
|
-
<list-item
|
9
|
-
v-for="item in optionsList"
|
10
|
-
:key="item.type"
|
11
|
-
:hoverColor="item.hoverColor"
|
12
|
-
@click="$emit('on-' + item.type)"
|
13
|
-
>
|
14
|
-
{{ item.name }}
|
15
|
-
</list-item>
|
16
|
-
</list-container>
|
17
|
-
<empty-text v-if="!optionsList.length">
|
18
|
-
{{ $gettext('no_batch_actions_available') }}
|
19
|
-
</empty-text>
|
20
|
-
<icon-container @click="$emit('on-close')">
|
21
|
-
<icon
|
22
|
-
name="close_for_modals,_tool_tips"
|
23
|
-
color="white"
|
24
|
-
size="14px"
|
25
|
-
cursor="pointer"
|
26
|
-
/>
|
27
|
-
</icon-container>
|
28
|
-
</box-container>
|
29
|
-
</page-container>
|
30
|
-
</template>
|
31
|
-
|
32
|
-
<script>
|
33
|
-
// import SelectedOptions from "@eturnity/eturnity_reusable_components/src/components/selectedOptions"
|
34
|
-
// optionsList = [
|
35
|
-
// {
|
36
|
-
// type: 'export',
|
37
|
-
// name: 'Export'
|
38
|
-
// },
|
39
|
-
// {
|
40
|
-
// type: 'delete',
|
41
|
-
// name: 'Delete',
|
42
|
-
// hoverColor: 'red' // default is green
|
43
|
-
// }
|
44
|
-
// ]
|
45
|
-
// @on-${type}="function" should $emit the callback for the 'type' in the optionsList
|
46
|
-
// <selected-options
|
47
|
-
// :numberSelected="numberSelected"
|
48
|
-
// :optionsList="optionsList"
|
49
|
-
// @on-close="onCloseFunction()"
|
50
|
-
// @on-export="function()" @on-delete="function()"
|
51
|
-
// />
|
52
|
-
import styled from 'vue-styled-components'
|
53
|
-
import Icon from '../icon'
|
54
|
-
|
55
|
-
const PageContainer = styled.div`
|
56
|
-
position: fixed;
|
57
|
-
bottom: 30px;
|
58
|
-
left: 50%;
|
59
|
-
transform: translateX(-50%);
|
60
|
-
`
|
61
|
-
|
62
|
-
const SelectedContainer = styled.div`
|
63
|
-
display: grid;
|
64
|
-
align-items: center;
|
65
|
-
height: 100%;
|
66
|
-
padding-right: 20px;
|
67
|
-
border-right: 1px solid rgba(255, 255, 255, 0.2);
|
68
|
-
`
|
69
|
-
|
70
|
-
const BoxContainer = styled.div`
|
71
|
-
display: flex;
|
72
|
-
align-items: center;
|
73
|
-
background-color: ${(props) => props.theme.colors.black};
|
74
|
-
opacity: 90%;
|
75
|
-
color: ${(props) => props.theme.colors.white};
|
76
|
-
border-radius: 4px;
|
77
|
-
padding: 8px 10px 8px 20px;
|
78
|
-
font-size: 14px;
|
79
|
-
height: 40px;
|
80
|
-
`
|
81
|
-
|
82
|
-
const ListContainer = styled.div`
|
83
|
-
padding: 0 20px;
|
84
|
-
display: flex;
|
85
|
-
gap: 20px;
|
86
|
-
color: ${(props) => props.theme.colors.white};
|
87
|
-
`
|
88
|
-
|
89
|
-
const ListAttrs = {
|
90
|
-
hoverColor: String
|
91
|
-
}
|
92
|
-
const ListItem = styled('div', ListAttrs)`
|
93
|
-
cursor: pointer;
|
94
|
-
&:hover {
|
95
|
-
color: ${(props) =>
|
96
|
-
props.hoverColor
|
97
|
-
? props.theme.colors[props.hoverColor]
|
98
|
-
: props.theme.colors.green};
|
99
|
-
}
|
100
|
-
`
|
101
|
-
|
102
|
-
const IconContainer = styled.div`
|
103
|
-
display: grid;
|
104
|
-
align-items: center;
|
105
|
-
justify-items: center;
|
106
|
-
height: 30px;
|
107
|
-
width: 30px;
|
108
|
-
cursor: pointer;
|
109
|
-
margin-left: 20px;
|
110
|
-
|
111
|
-
&:hover {
|
112
|
-
background: rgba(255, 255, 255, 0.1);
|
113
|
-
border-radius: 4px;
|
114
|
-
}
|
115
|
-
`
|
116
|
-
|
117
|
-
const EmptyText = styled.div`
|
118
|
-
color: ${(props) => props.theme.colors.white};
|
119
|
-
font-size: 13px;
|
120
|
-
padding-left: 16px;
|
121
|
-
`
|
122
|
-
|
123
|
-
export default {
|
124
|
-
name: 'selected-options',
|
125
|
-
components: {
|
126
|
-
PageContainer,
|
127
|
-
BoxContainer,
|
128
|
-
SelectedContainer,
|
129
|
-
ListContainer,
|
130
|
-
ListItem,
|
131
|
-
Icon,
|
132
|
-
IconContainer,
|
133
|
-
EmptyText
|
134
|
-
},
|
135
|
-
props: {
|
136
|
-
optionsList: {
|
137
|
-
required: true
|
138
|
-
},
|
139
|
-
numberSelected: {
|
140
|
-
required: true,
|
141
|
-
default: 0
|
142
|
-
}
|
143
|
-
}
|
144
|
-
}
|
145
|
-
</script>
|