@eturnity/eturnity_reusable_components 7.12.6-EPDM-7951.6 → 7.12.7--EPDM-5518.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 +23 -18
- package/src/App.vue +2 -2
- package/src/components/addNewButton/index.vue +3 -5
- 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 +1 -6
- package/src/components/deleteIcon/DeleteIcon.stories.js +7 -7
- package/src/components/deleteIcon/index.vue +21 -25
- package/src/components/draggableInputHandle/index.vue +25 -24
- package/src/components/dropdown/index.vue +110 -129
- package/src/components/errorMessage/index.vue +1 -1
- package/src/components/filter/filterSettings.vue +97 -55
- package/src/components/filter/index.vue +3 -3
- package/src/components/filter/parentDropdown.vue +2 -2
- package/src/components/icon/iconCollection.vue +2 -2
- package/src/components/icon/index.vue +69 -76
- package/src/components/iconWrapper/index.vue +4 -1
- package/src/components/infoCard/index.vue +3 -2
- package/src/components/infoText/index.vue +1 -1
- package/src/components/inputs/checkbox/index.vue +16 -24
- package/src/components/inputs/inputNumber/index.vue +10 -7
- 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 +8 -7
- package/src/components/inputs/select/index.vue +69 -197
- 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 +31 -27
- package/src/components/markerItem/index.vue +96 -0
- package/src/components/modals/modal/index.vue +6 -2
- package/src/components/navigationTabs/index.vue +20 -27
- package/src/components/pageSubtitle/index.vue +1 -1
- package/src/components/pageTitle/index.vue +4 -4
- package/src/components/pagination/index.vue +3 -5
- package/src/components/progressBar/index.vue +1 -1
- package/src/components/projectMarker/index.vue +8 -11
- package/src/components/selectedOptions/index.vue +145 -0
- package/src/components/sideMenu/index.vue +1 -1
- package/src/components/spinner/index.vue +11 -6
- package/src/components/tableDropdown/index.vue +26 -21
- package/src/components/tables/mainTable/exampleNested.vue +1 -1
- package/src/components/tables/mainTable/index.vue +9 -10
- package/src/components/tables/viewTable/index.vue +2 -2
- package/src/components/threeDots/index.vue +1 -1
- package/src/components/videoThumbnail/index.vue +100 -95
- package/src/main.js +11 -4
@@ -3,7 +3,7 @@
|
|
3
3
|
<upper-container v-if="filterViews && filterViews.length">
|
4
4
|
<view-container :maxWidth="activeView.length">
|
5
5
|
<select-component
|
6
|
-
@click.stop
|
6
|
+
@click.native.stop
|
7
7
|
selectWidth="100%"
|
8
8
|
selectHeight="36px"
|
9
9
|
fontSize="13px"
|
@@ -19,10 +19,10 @@
|
|
19
19
|
<Option
|
20
20
|
v-for="(item, idx) in filterViews"
|
21
21
|
:key="idx + '_view'"
|
22
|
-
@click="$emit('on-view-select', item)"
|
22
|
+
@click.native="$emit('on-view-select', item)"
|
23
23
|
:value="item.name"
|
24
24
|
>{{ item.name }}
|
25
|
-
<delete-icon @click.stop="$emit('on-view-delete', item)"
|
25
|
+
<delete-icon @click.native.stop="$emit('on-view-delete', item)"
|
26
26
|
/></Option>
|
27
27
|
</template>
|
28
28
|
</select-component>
|
@@ -55,28 +55,28 @@
|
|
55
55
|
ghost-class="ghost"
|
56
56
|
:setData="modifyDragItem"
|
57
57
|
v-model="item.dataOptions"
|
58
|
-
itemKey="choice"
|
59
58
|
>
|
60
|
-
<
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
<
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
59
|
+
<checkbox-wrapper
|
60
|
+
v-for="(column, index) in item.dataOptions"
|
61
|
+
:key="index + 'dataOption'"
|
62
|
+
>
|
63
|
+
<drag-container class="drag-container">
|
64
|
+
<icon :name="'duplicate-1'" size="12px" />
|
65
|
+
</drag-container>
|
66
|
+
<checkbox
|
67
|
+
:label="column.text"
|
68
|
+
:isChecked="column.selected"
|
69
|
+
@on-event-handler="
|
70
|
+
onChange({
|
71
|
+
dataType: item.type,
|
72
|
+
value: $event,
|
73
|
+
choice: column.choice
|
74
|
+
})
|
75
|
+
"
|
76
|
+
size="small"
|
77
|
+
:isDisabled="column.selected && isCheckboxDisabled"
|
78
|
+
/>
|
79
|
+
</checkbox-wrapper>
|
80
80
|
</draggable>
|
81
81
|
</checkbox-container>
|
82
82
|
</row-container>
|
@@ -169,19 +169,12 @@
|
|
169
169
|
>
|
170
170
|
<row-label :data-id="filter.dataId">{{ filter.label }}</row-label>
|
171
171
|
<grid-container>
|
172
|
-
<
|
172
|
+
<date-picker-input
|
173
173
|
:placeholder="$gettext('Date from')"
|
174
|
-
:
|
175
|
-
|
176
|
-
:
|
177
|
-
|
178
|
-
:auto-apply="true"
|
179
|
-
:disabled-dates="disableFutureDates"
|
180
|
-
format="yyyy-MM-dd"
|
181
|
-
model-type="format"
|
182
|
-
@focus="onDatepickerFocus(filter.range)"
|
183
|
-
@close="onDatepickerBlur()"
|
184
|
-
@update:model-value="
|
174
|
+
:lang="getDatePickerLanguage()"
|
175
|
+
type="date"
|
176
|
+
:value="filter.range.start"
|
177
|
+
@change="
|
185
178
|
onChange({
|
186
179
|
dataType: item.type,
|
187
180
|
value: $event,
|
@@ -189,20 +182,18 @@
|
|
189
182
|
field: filter.field
|
190
183
|
})
|
191
184
|
"
|
192
|
-
/>
|
193
|
-
<VueDatePicker
|
194
|
-
:placeholder="$gettext('Date to')"
|
195
|
-
:locale="getDatePickerLanguage()"
|
196
|
-
:model-value="filter.range.end"
|
197
|
-
:enable-time-picker="false"
|
198
|
-
:clearable="false"
|
199
|
-
:auto-apply="true"
|
200
|
-
:disabled-dates="disablePastDates"
|
201
|
-
format="yyyy-MM-dd"
|
202
|
-
model-type="format"
|
203
185
|
@focus="onDatepickerFocus(filter.range)"
|
204
186
|
@close="onDatepickerBlur()"
|
205
|
-
|
187
|
+
format="YYYY-MM-DD"
|
188
|
+
valueType="format"
|
189
|
+
:disabled-date="disableFutureDates"
|
190
|
+
/>
|
191
|
+
<date-picker-input
|
192
|
+
:placeholder="$gettext('Date to')"
|
193
|
+
:lang="getDatePickerLanguage()"
|
194
|
+
type="date"
|
195
|
+
:value="filter.range.end"
|
196
|
+
@change="
|
206
197
|
onChange({
|
207
198
|
dataType: item.type,
|
208
199
|
value: $event,
|
@@ -210,6 +201,11 @@
|
|
210
201
|
field: filter.field
|
211
202
|
})
|
212
203
|
"
|
204
|
+
@focus="onDatepickerFocus(filter.range)"
|
205
|
+
@close="onDatepickerBlur()"
|
206
|
+
format="YYYY-MM-DD"
|
207
|
+
valueType="format"
|
208
|
+
:disabled-date="disablePastDates"
|
213
209
|
/>
|
214
210
|
</grid-container>
|
215
211
|
</section-container>
|
@@ -251,26 +247,27 @@
|
|
251
247
|
v-if="buttonText.apply_view"
|
252
248
|
type="primary"
|
253
249
|
:text="buttonText.apply_view"
|
254
|
-
@click="$emit('on-apply-current-view')"
|
250
|
+
@click.native="$emit('on-apply-current-view')"
|
255
251
|
/>
|
256
252
|
<main-button
|
257
253
|
type="secondary"
|
258
254
|
v-if="buttonText.save_view"
|
259
255
|
:text="buttonText.save_view"
|
260
|
-
@click="$emit('on-save-new-view')"
|
256
|
+
@click.native="$emit('on-save-new-view')"
|
261
257
|
/>
|
262
258
|
<main-button
|
263
259
|
type="cancel"
|
264
260
|
v-if="buttonText.cancel"
|
265
261
|
:text="buttonText.cancel"
|
266
|
-
@click="$emit('on-cancel-view')"
|
262
|
+
@click.native="$emit('on-cancel-view')"
|
267
263
|
/>
|
268
264
|
</button-container>
|
269
265
|
</container-wrapper>
|
270
266
|
</template>
|
271
267
|
|
272
268
|
<script>
|
273
|
-
import styled from '
|
269
|
+
import styled from 'vue-styled-components'
|
270
|
+
import DatePicker from 'vue2-datepicker'
|
274
271
|
import SelectComponent from '../inputs/select'
|
275
272
|
import Option from '../inputs/select/option'
|
276
273
|
import InputNumber from '../inputs/inputNumber'
|
@@ -281,7 +278,12 @@ import Icon from '../icon'
|
|
281
278
|
import DeleteIcon from '../deleteIcon'
|
282
279
|
import { datePickerLang } from '../../helpers/translateLang'
|
283
280
|
import theme from '@/assets/theme.js'
|
284
|
-
import
|
281
|
+
import 'vue2-datepicker/index.css'
|
282
|
+
import 'vue2-datepicker/locale/de'
|
283
|
+
import 'vue2-datepicker/locale/en'
|
284
|
+
import 'vue2-datepicker/locale/es'
|
285
|
+
import 'vue2-datepicker/locale/fr'
|
286
|
+
import 'vue2-datepicker/locale/it'
|
285
287
|
|
286
288
|
const ContainerWrapper = styled.div`
|
287
289
|
position: absolute;
|
@@ -380,6 +382,46 @@ const RowWrapper = styled.div`
|
|
380
382
|
margin-bottom: 12px;
|
381
383
|
`
|
382
384
|
|
385
|
+
const DatePickerInput = styled(DatePicker)`
|
386
|
+
border: 1px solid ${(props) => props.theme.colors.grey4};
|
387
|
+
border-radius: 4px;
|
388
|
+
padding: 7px 12px 7px 7px;
|
389
|
+
width: 100%;
|
390
|
+
position: relative;
|
391
|
+
|
392
|
+
&.mx-datepicker {
|
393
|
+
width: 100% !important;
|
394
|
+
max-width: 100%;
|
395
|
+
height: 36px;
|
396
|
+
align-self: flex-end;
|
397
|
+
}
|
398
|
+
|
399
|
+
.mx-input-wrapper {
|
400
|
+
position: unset;
|
401
|
+
|
402
|
+
input {
|
403
|
+
border: none;
|
404
|
+
height: auto;
|
405
|
+
padding: 0;
|
406
|
+
font-size: 13px;
|
407
|
+
box-shadow: none;
|
408
|
+
color: #393939;
|
409
|
+
vertical-align: bottom;
|
410
|
+
}
|
411
|
+
|
412
|
+
.mx-input-append {
|
413
|
+
top: 1px;
|
414
|
+
}
|
415
|
+
}
|
416
|
+
|
417
|
+
.mx-input-append {
|
418
|
+
left: 0;
|
419
|
+
top: 5px;
|
420
|
+
height: auto;
|
421
|
+
cursor: pointer;
|
422
|
+
}
|
423
|
+
`
|
424
|
+
|
383
425
|
const LabelAttrs = {
|
384
426
|
marginTop: Boolean
|
385
427
|
}
|
@@ -444,14 +486,14 @@ export default {
|
|
444
486
|
Icon,
|
445
487
|
DragContainer,
|
446
488
|
InputNumber,
|
489
|
+
DatePickerInput,
|
447
490
|
RowLabel,
|
448
491
|
SectionContainer,
|
449
492
|
GridContainer,
|
450
493
|
ViewContainer,
|
451
494
|
DeleteIcon,
|
452
495
|
UpperContainer,
|
453
|
-
ResetButton
|
454
|
-
VueDatePicker
|
496
|
+
ResetButton
|
455
497
|
},
|
456
498
|
props: {
|
457
499
|
filterData: {
|
@@ -29,7 +29,7 @@
|
|
29
29
|
</template>
|
30
30
|
|
31
31
|
<script>
|
32
|
-
import styled from '
|
32
|
+
import styled from 'vue-styled-components'
|
33
33
|
import parentDropdown from './parentDropdown'
|
34
34
|
import filterSettings from './filterSettings'
|
35
35
|
|
@@ -93,9 +93,9 @@ export default {
|
|
93
93
|
}, 100)
|
94
94
|
},
|
95
95
|
clickOutside(event) {
|
96
|
+
const target = event.target
|
96
97
|
if (
|
97
|
-
this.$refs.dropdown &&
|
98
|
-
!this.$refs.dropdown.$el.contains(event.target) &&
|
98
|
+
!this.$refs.dropdown.$el.contains(target) &&
|
99
99
|
!this.preventOutsideClick
|
100
100
|
) {
|
101
101
|
this.isDropdownOpen = false
|
@@ -9,7 +9,7 @@
|
|
9
9
|
</title-text>
|
10
10
|
<arrow-wrapper>
|
11
11
|
<icon
|
12
|
-
@click.stop="$emit('on-toggle')"
|
12
|
+
@click.native.stop="$emit('on-toggle')"
|
13
13
|
:name="isOpen ? 'arrow_up' : 'arrow_down'"
|
14
14
|
size="12px"
|
15
15
|
/>
|
@@ -19,7 +19,7 @@
|
|
19
19
|
</template>
|
20
20
|
|
21
21
|
<script>
|
22
|
-
import styled from '
|
22
|
+
import styled from 'vue-styled-components'
|
23
23
|
import Icon from '../icon'
|
24
24
|
|
25
25
|
const PageWrapper = styled.div`
|
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
<script>
|
18
18
|
import icon from './index.vue'
|
19
|
-
import styled from '
|
19
|
+
import styled from 'vue-styled-components'
|
20
20
|
|
21
21
|
const Wrapper = styled.div`
|
22
22
|
display: block;
|
@@ -36,7 +36,7 @@ const IconWrapper = styled.div`
|
|
36
36
|
margin: 10px;
|
37
37
|
`
|
38
38
|
export default {
|
39
|
-
name: '
|
39
|
+
name: 'collection',
|
40
40
|
components: { icon, IconWrapper, Wrapper },
|
41
41
|
props: {
|
42
42
|
size: { required: false },
|
@@ -1,13 +1,19 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
3
|
-
<icon-image
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
<Wrapper :isDisabled="disabled" :size="size" :cursor="cursor">
|
3
|
+
<icon-image
|
4
|
+
:disabled="disabled"
|
5
|
+
:size="size"
|
6
|
+
:color="color"
|
7
|
+
:hoveredColor="hoveredColor"
|
8
|
+
v-html="
|
9
|
+
require(`!html-loader!./../../assets/svgIcons/${name.toLowerCase()}.svg`)
|
10
|
+
"
|
11
|
+
></icon-image>
|
12
|
+
<striked-line v-if="isStriked" :color="color" :disabled="disabled" :hoveredColor="hoveredColor"></striked-line>
|
13
|
+
</Wrapper>
|
8
14
|
</template>
|
9
15
|
|
10
|
-
<script
|
16
|
+
<script>
|
11
17
|
// import Icon from "@eturnity/eturnity_reusable_components/src/components/icon"
|
12
18
|
// How to use:
|
13
19
|
//<icon
|
@@ -19,105 +25,92 @@
|
|
19
25
|
// isStriked = "true"
|
20
26
|
// />
|
21
27
|
|
22
|
-
import
|
23
|
-
import styled from 'vue3-styled-components'
|
28
|
+
import styled from 'vue-styled-components'
|
24
29
|
|
25
|
-
const
|
26
|
-
|
27
|
-
required: false,
|
28
|
-
default: false
|
29
|
-
},
|
30
|
-
name: {
|
31
|
-
required: true
|
32
|
-
},
|
33
|
-
color: {
|
34
|
-
required: false
|
35
|
-
},
|
36
|
-
hoveredColor: {
|
37
|
-
required: false
|
38
|
-
},
|
39
|
-
size: {
|
40
|
-
required: false,
|
41
|
-
default: '30px'
|
42
|
-
},
|
43
|
-
cursor: {
|
44
|
-
required: false,
|
45
|
-
default: null
|
46
|
-
},
|
47
|
-
isStriked: {
|
48
|
-
required: false,
|
49
|
-
default: false
|
50
|
-
}
|
51
|
-
})
|
52
|
-
|
53
|
-
const Wrapper = styled('div')`
|
30
|
+
const wrapperAttrs = { isDisabled: Boolean, size: String, cursor: String }
|
31
|
+
const Wrapper = styled('div', wrapperAttrs)`
|
54
32
|
display: flex;
|
55
33
|
position: relative;
|
56
34
|
align-content: center;
|
57
35
|
justify-content: center;
|
58
|
-
width: ${props.size};
|
59
|
-
height: ${props.size};
|
60
|
-
min-width: ${props.size};
|
61
|
-
min-height: ${props.size};
|
62
|
-
cursor: ${props.
|
36
|
+
width: ${(props) => props.size};
|
37
|
+
height: ${(props) => props.size};
|
38
|
+
min-width: ${(props) => props.size};
|
39
|
+
min-height: ${(props) => props.size};
|
40
|
+
cursor: ${(props) => (props.isDisabled ? 'not-allowed' : props.cursor)};
|
63
41
|
line-height: 0;
|
64
42
|
`
|
65
|
-
const strikedAttrs = {
|
66
|
-
|
67
|
-
color: String,
|
68
|
-
hoveredColor: String
|
69
|
-
}
|
70
|
-
const StrikedLine = styled.div`
|
43
|
+
const strikedAttrs = { isDisabled: Boolean, color: String, hoveredColor: String }
|
44
|
+
const strikedLine = styled('div', strikedAttrs)`
|
71
45
|
display: flex;
|
72
46
|
position: absolute;
|
73
|
-
bottom:
|
74
|
-
left:
|
47
|
+
bottom:0;
|
48
|
+
left:0;
|
75
49
|
align-content: center;
|
76
50
|
justify-content: center;
|
77
51
|
width: 143%;
|
78
|
-
height:
|
79
|
-
background-color: ${(
|
52
|
+
height:8%;
|
53
|
+
background-color: ${(props)=>props.theme.colors[props.color] || props.color};
|
80
54
|
min-height: 0;
|
81
55
|
line-height: 0;
|
82
56
|
transform-origin: 0% 100%;
|
83
57
|
transform: rotate(-45deg);
|
84
58
|
`
|
85
|
-
const
|
59
|
+
const IconImageProps = { color: String, hoveredColor: String, size: String }
|
60
|
+
const IconImage = styled('div', IconImageProps)`
|
86
61
|
width: 100%;
|
87
62
|
svg {
|
88
63
|
width: 100%;
|
89
64
|
height: 100%;
|
90
65
|
}
|
91
66
|
svg path {
|
92
|
-
${(
|
93
|
-
props.color && `fill: ${theme.colors[props.color] || props.color};`}
|
67
|
+
${(props) =>
|
68
|
+
props.color && `fill: ${props.theme.colors[props.color] || props.color};`}
|
94
69
|
}
|
95
70
|
&:hover > svg path {
|
96
|
-
${props.hoveredColor && `fill: ${props.hoveredColor};`}
|
71
|
+
${(props) => props.hoveredColor && `fill: ${props.hoveredColor};`}
|
97
72
|
}
|
98
73
|
&:hover + div {
|
99
|
-
background-color: ${props.hoveredColor};
|
74
|
+
background-color: ${(props)=>props.hoveredColor};
|
100
75
|
}
|
101
76
|
`
|
102
77
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
78
|
+
export default {
|
79
|
+
name: 'icon',
|
80
|
+
components: {
|
81
|
+
IconImage,
|
82
|
+
Wrapper,
|
83
|
+
strikedLine
|
84
|
+
},
|
85
|
+
props: {
|
86
|
+
disabled: {
|
87
|
+
required: false,
|
88
|
+
default: false
|
89
|
+
},
|
90
|
+
name: {
|
91
|
+
required: true
|
92
|
+
},
|
93
|
+
color: {
|
94
|
+
required: false
|
95
|
+
},
|
96
|
+
hoveredColor: {
|
97
|
+
required: false
|
98
|
+
},
|
99
|
+
size: {
|
100
|
+
required: false,
|
101
|
+
default: '30px'
|
102
|
+
},
|
103
|
+
cursor: {
|
104
|
+
required: false,
|
105
|
+
default: null
|
106
|
+
},
|
107
|
+
isStriked: {
|
108
|
+
required: false,
|
109
|
+
default: false
|
110
|
+
}
|
111
|
+
},
|
112
|
+
data() {
|
113
|
+
return {}
|
117
114
|
}
|
118
115
|
}
|
119
|
-
|
120
|
-
onMounted(() => loadSvg())
|
121
|
-
|
122
|
-
watch(() => props.name, loadSvg)
|
123
116
|
</script>
|
@@ -42,7 +42,7 @@
|
|
42
42
|
// size="60px" by default, this is 30px
|
43
43
|
// />
|
44
44
|
|
45
|
-
import styled from '
|
45
|
+
import styled from 'vue-styled-components'
|
46
46
|
import icon from '../icon'
|
47
47
|
const wrapperAttrs = {
|
48
48
|
color: String,
|
@@ -148,6 +148,9 @@ export default {
|
|
148
148
|
required: false,
|
149
149
|
default: false
|
150
150
|
}
|
151
|
+
},
|
152
|
+
data() {
|
153
|
+
return {}
|
151
154
|
}
|
152
155
|
}
|
153
156
|
</script>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
</template>
|
9
9
|
|
10
10
|
<script>
|
11
|
-
import styled from '
|
11
|
+
import styled from 'vue-styled-components'
|
12
12
|
import Icon from '../icon'
|
13
13
|
|
14
14
|
const InfoContainer = styled.div`
|
@@ -24,6 +24,7 @@ const TextContainer = styled.div`
|
|
24
24
|
width: 100%;
|
25
25
|
`
|
26
26
|
|
27
|
+
|
27
28
|
export default {
|
28
29
|
name: 'InfoCard',
|
29
30
|
components: {
|
@@ -32,4 +33,4 @@ export default {
|
|
32
33
|
TextContainer
|
33
34
|
}
|
34
35
|
}
|
35
|
-
</script>
|
36
|
+
</script>
|
@@ -30,7 +30,7 @@
|
|
30
30
|
// alignArrow="right" // which side the arrow should be on
|
31
31
|
// />
|
32
32
|
import theme from '../../assets/theme.js'
|
33
|
-
import styled from '
|
33
|
+
import styled from 'vue-styled-components'
|
34
34
|
import icon from '../icon'
|
35
35
|
|
36
36
|
const textAttrs = {
|
@@ -3,10 +3,11 @@
|
|
3
3
|
<container
|
4
4
|
:checkColor="checkColor"
|
5
5
|
:size="size"
|
6
|
-
:hasLabel="
|
6
|
+
:hasLabel="!!label.length"
|
7
7
|
:backgroundColor="backgroundColor"
|
8
8
|
:isChecked="isChecked"
|
9
9
|
:isDisabled="isDisabled"
|
10
|
+
:cursorType="cursorType"
|
10
11
|
>
|
11
12
|
<input-checkbox
|
12
13
|
type="checkbox"
|
@@ -14,10 +15,10 @@
|
|
14
15
|
:data-id="dataId"
|
15
16
|
@change="onChangeHandler(!isChecked)"
|
16
17
|
/>
|
17
|
-
<
|
18
|
+
<div>
|
18
19
|
<span class="checkmark"></span>
|
19
|
-
</
|
20
|
-
<label-text v-if="
|
20
|
+
</div>
|
21
|
+
<label-text v-if="!!label.length">{{ label }}</label-text>
|
21
22
|
</container>
|
22
23
|
</component-wrapper>
|
23
24
|
</template>
|
@@ -33,29 +34,22 @@
|
|
33
34
|
// size="small"
|
34
35
|
// backgroundColor="red"
|
35
36
|
// :isDisabled="true"
|
37
|
+
// cursorType="default"
|
36
38
|
// />
|
37
|
-
import styled from '
|
39
|
+
import styled from 'vue-styled-components'
|
38
40
|
|
39
41
|
const ComponentWrapper = styled.div`
|
40
42
|
min-height: 18px;
|
41
43
|
`
|
42
44
|
|
43
|
-
const CheckWrapper = styled('div', { hasLabel: Boolean })`
|
44
|
-
${(props) =>
|
45
|
-
props.hasLabel &&
|
46
|
-
`
|
47
|
-
display: flex;
|
48
|
-
align-items: center;
|
49
|
-
`}
|
50
|
-
`
|
51
|
-
|
52
45
|
const containerAttrs = {
|
53
46
|
checkColor: String,
|
54
47
|
size: String,
|
55
48
|
hasLabel: Boolean,
|
56
49
|
backgroundColor: String,
|
57
50
|
isChecked: Boolean,
|
58
|
-
isDisabled: Boolean
|
51
|
+
isDisabled: Boolean,
|
52
|
+
cursorType: String
|
59
53
|
}
|
60
54
|
const Container = styled('label', containerAttrs)`
|
61
55
|
display: grid;
|
@@ -64,7 +58,7 @@ const Container = styled('label', containerAttrs)`
|
|
64
58
|
align-content: center;
|
65
59
|
color: ${(props) => props.theme.colors.black};
|
66
60
|
position: relative;
|
67
|
-
cursor: ${(props) => (props.isDisabled ? 'not-allowed' :
|
61
|
+
cursor: ${(props) => (props.isDisabled ? 'not-allowed' : props.cursorType)};
|
68
62
|
font-size: 16px;
|
69
63
|
user-select: none;
|
70
64
|
|
@@ -89,7 +83,7 @@ const Container = styled('label', containerAttrs)`
|
|
89
83
|
: props.theme.colors.green
|
90
84
|
: props.isDisabled
|
91
85
|
? props.theme.colors.lightGray
|
92
|
-
:
|
86
|
+
: props.theme.colors.white};
|
93
87
|
border-radius: 4px;
|
94
88
|
border: 1px solid
|
95
89
|
${(props) =>
|
@@ -154,8 +148,7 @@ export default {
|
|
154
148
|
ComponentWrapper,
|
155
149
|
Container,
|
156
150
|
InputCheckbox,
|
157
|
-
LabelText
|
158
|
-
CheckWrapper
|
151
|
+
LabelText
|
159
152
|
},
|
160
153
|
props: {
|
161
154
|
label: {
|
@@ -183,11 +176,10 @@ export default {
|
|
183
176
|
dataId: {
|
184
177
|
type: String,
|
185
178
|
default: ''
|
186
|
-
}
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
return !!this.label.length
|
179
|
+
},
|
180
|
+
cursorType: {
|
181
|
+
type: String,
|
182
|
+
default: 'pointer'
|
191
183
|
}
|
192
184
|
},
|
193
185
|
methods: {
|