@eturnity/eturnity_reusable_components 7.18.0--EPDM-9013.1 → 7.18.0-EPDM-10335.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 +10 -5
- package/src/components/filter/filterSettings.vue +58 -97
- 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 -75
- 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 +21 -6
- package/src/components/inputs/inputNumber/index.vue +8 -11
- package/src/components/inputs/inputNumberQuestion/index.vue +1 -1
- package/src/components/inputs/inputText/index.vue +3 -3
- package/src/components/inputs/radioButton/index.vue +1 -1
- package/src/components/inputs/searchInput/index.vue +28 -11
- package/src/components/inputs/select/index.vue +199 -55
- package/src/components/inputs/select/option/index.vue +36 -11
- 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 +1 -1
- 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 +1 -1
- package/src/components/progressBar/index.vue +1 -1
- package/src/components/projectMarker/index.vue +16 -9
- package/src/components/sideMenu/index.vue +1 -1
- package/src/components/spinner/index.vue +7 -11
- package/src/components/tableDropdown/index.vue +30 -37
- 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/assets/svgIcons/bexio.svg +0 -4
- package/src/assets/svgIcons/data_transfer.svg +0 -3
@@ -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.
|
6
|
+
@click.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
|
22
|
+
@click="$emit('on-view-select', item)"
|
23
23
|
:value="item.name"
|
24
24
|
>{{ item.name }}
|
25
|
-
<delete-icon @click.
|
25
|
+
<delete-icon @click.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"
|
58
59
|
>
|
59
|
-
<
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
<
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
</checkbox-wrapper>
|
60
|
+
<template #item="{ element: column }">
|
61
|
+
<checkbox-wrapper>
|
62
|
+
<drag-container class="drag-container">
|
63
|
+
<icon :name="'duplicate-1'" size="12px" />
|
64
|
+
</drag-container>
|
65
|
+
<checkbox
|
66
|
+
:label="column.text"
|
67
|
+
:isChecked="column.selected"
|
68
|
+
@on-event-handler="
|
69
|
+
onChange({
|
70
|
+
dataType: item.type,
|
71
|
+
value: $event,
|
72
|
+
choice: column.choice
|
73
|
+
})
|
74
|
+
"
|
75
|
+
size="small"
|
76
|
+
:isDisabled="column.selected && isCheckboxDisabled"
|
77
|
+
/>
|
78
|
+
</checkbox-wrapper>
|
79
|
+
</template>
|
80
80
|
</draggable>
|
81
81
|
</checkbox-container>
|
82
82
|
</row-container>
|
@@ -169,12 +169,20 @@
|
|
169
169
|
>
|
170
170
|
<row-label :data-id="filter.dataId">{{ filter.label }}</row-label>
|
171
171
|
<grid-container>
|
172
|
-
<
|
172
|
+
<VueDatePicker
|
173
|
+
text-input
|
173
174
|
:placeholder="$gettext('Date from')"
|
174
|
-
:
|
175
|
-
|
176
|
-
:
|
177
|
-
|
175
|
+
:locale="getDatePickerLanguage()"
|
176
|
+
:model-value="filter.range.start"
|
177
|
+
:enable-time-picker="false"
|
178
|
+
:clearable="true"
|
179
|
+
:auto-apply="true"
|
180
|
+
:disabled-dates="disableFutureDates"
|
181
|
+
format="yyyy-MM-dd"
|
182
|
+
model-type="format"
|
183
|
+
@focus="onDatepickerFocus(filter.range)"
|
184
|
+
@close="onDatepickerBlur()"
|
185
|
+
@update:model-value="
|
178
186
|
onChange({
|
179
187
|
dataType: item.type,
|
180
188
|
value: $event,
|
@@ -182,18 +190,21 @@
|
|
182
190
|
field: filter.field
|
183
191
|
})
|
184
192
|
"
|
185
|
-
@focus="onDatepickerFocus(filter.range)"
|
186
|
-
@close="onDatepickerBlur()"
|
187
|
-
format="YYYY-MM-DD"
|
188
|
-
valueType="format"
|
189
|
-
:disabled-date="disableFutureDates"
|
190
193
|
/>
|
191
|
-
<
|
194
|
+
<VueDatePicker
|
195
|
+
text-input
|
192
196
|
:placeholder="$gettext('Date to')"
|
193
|
-
:
|
194
|
-
|
195
|
-
:
|
196
|
-
|
197
|
+
:locale="getDatePickerLanguage()"
|
198
|
+
:model-value="filter.range.end"
|
199
|
+
:enable-time-picker="false"
|
200
|
+
:clearable="true"
|
201
|
+
:auto-apply="true"
|
202
|
+
:disabled-dates="disablePastDates"
|
203
|
+
format="yyyy-MM-dd"
|
204
|
+
model-type="format"
|
205
|
+
@focus="onDatepickerFocus(filter.range)"
|
206
|
+
@close="onDatepickerBlur()"
|
207
|
+
@update:model-value="
|
197
208
|
onChange({
|
198
209
|
dataType: item.type,
|
199
210
|
value: $event,
|
@@ -201,11 +212,6 @@
|
|
201
212
|
field: filter.field
|
202
213
|
})
|
203
214
|
"
|
204
|
-
@focus="onDatepickerFocus(filter.range)"
|
205
|
-
@close="onDatepickerBlur()"
|
206
|
-
format="YYYY-MM-DD"
|
207
|
-
valueType="format"
|
208
|
-
:disabled-date="disablePastDates"
|
209
215
|
/>
|
210
216
|
</grid-container>
|
211
217
|
</section-container>
|
@@ -247,27 +253,26 @@
|
|
247
253
|
v-if="buttonText.apply_view"
|
248
254
|
type="primary"
|
249
255
|
:text="buttonText.apply_view"
|
250
|
-
@click
|
256
|
+
@click="$emit('on-apply-current-view')"
|
251
257
|
/>
|
252
258
|
<main-button
|
253
259
|
type="secondary"
|
254
260
|
v-if="buttonText.save_view"
|
255
261
|
:text="buttonText.save_view"
|
256
|
-
@click
|
262
|
+
@click="$emit('on-save-new-view')"
|
257
263
|
/>
|
258
264
|
<main-button
|
259
265
|
type="cancel"
|
260
266
|
v-if="buttonText.cancel"
|
261
267
|
:text="buttonText.cancel"
|
262
|
-
@click
|
268
|
+
@click="$emit('on-cancel-view')"
|
263
269
|
/>
|
264
270
|
</button-container>
|
265
271
|
</container-wrapper>
|
266
272
|
</template>
|
267
273
|
|
268
274
|
<script>
|
269
|
-
import styled from '
|
270
|
-
import DatePicker from 'vue2-datepicker'
|
275
|
+
import styled from 'vue3-styled-components'
|
271
276
|
import SelectComponent from '../inputs/select'
|
272
277
|
import Option from '../inputs/select/option'
|
273
278
|
import InputNumber from '../inputs/inputNumber'
|
@@ -278,12 +283,7 @@ import Icon from '../icon'
|
|
278
283
|
import DeleteIcon from '../deleteIcon'
|
279
284
|
import { datePickerLang } from '../../helpers/translateLang'
|
280
285
|
import theme from '@/assets/theme.js'
|
281
|
-
import '
|
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'
|
286
|
+
import VueDatePicker from '@vuepic/vue-datepicker'
|
287
287
|
|
288
288
|
const ContainerWrapper = styled.div`
|
289
289
|
position: absolute;
|
@@ -376,52 +376,13 @@ const DropdownCheckboxContainer = styled.div`
|
|
376
376
|
gap: 6px;
|
377
377
|
width: 100%;
|
378
378
|
padding: 12px 10px;
|
379
|
+
background: ${(props) => props.theme.colors.grey5};
|
379
380
|
`
|
380
381
|
|
381
382
|
const RowWrapper = styled.div`
|
382
383
|
margin-bottom: 12px;
|
383
384
|
`
|
384
385
|
|
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
|
-
|
425
386
|
const LabelAttrs = {
|
426
387
|
marginTop: Boolean
|
427
388
|
}
|
@@ -486,14 +447,14 @@ export default {
|
|
486
447
|
Icon,
|
487
448
|
DragContainer,
|
488
449
|
InputNumber,
|
489
|
-
DatePickerInput,
|
490
450
|
RowLabel,
|
491
451
|
SectionContainer,
|
492
452
|
GridContainer,
|
493
453
|
ViewContainer,
|
494
454
|
DeleteIcon,
|
495
455
|
UpperContainer,
|
496
|
-
ResetButton
|
456
|
+
ResetButton,
|
457
|
+
VueDatePicker
|
497
458
|
},
|
498
459
|
props: {
|
499
460
|
filterData: {
|
@@ -29,7 +29,7 @@
|
|
29
29
|
</template>
|
30
30
|
|
31
31
|
<script>
|
32
|
-
import styled from '
|
32
|
+
import styled from 'vue3-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
|
97
96
|
if (
|
98
|
-
|
97
|
+
this.$refs.dropdown &&
|
98
|
+
!this.$refs.dropdown.$el.contains(event.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.
|
12
|
+
@click.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 'vue3-styled-components'
|
23
23
|
import Icon from '../icon'
|
24
24
|
|
25
25
|
const PageWrapper = styled.div`
|
@@ -0,0 +1,23 @@
|
|
1
|
+
const iconCache = {}
|
2
|
+
|
3
|
+
export const fetchIcon = async (fileName) => {
|
4
|
+
if (iconCache[fileName]) {
|
5
|
+
return iconCache[fileName]
|
6
|
+
}
|
7
|
+
|
8
|
+
// We need to use "new URL" to load dynamic assets (https://vitejs.dev/guide/assets.html#new-url-url-import-meta-url)
|
9
|
+
const fetchUrl = new URL(
|
10
|
+
`../../assets/svgIcons/${fileName}.svg`,
|
11
|
+
import.meta.url
|
12
|
+
).href
|
13
|
+
|
14
|
+
try {
|
15
|
+
const response = await fetch(fetchUrl)
|
16
|
+
const rawFile = await response.text()
|
17
|
+
iconCache[fileName] = rawFile
|
18
|
+
|
19
|
+
return rawFile
|
20
|
+
} catch (error) {
|
21
|
+
console.error(`Failed to load ${fileName}.svg`)
|
22
|
+
}
|
23
|
+
}
|
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
<script>
|
18
18
|
import icon from './index.vue'
|
19
|
-
import styled from '
|
19
|
+
import styled from 'vue3-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: 'collectionComponent',
|
40
40
|
components: { icon, IconWrapper, Wrapper },
|
41
41
|
props: {
|
42
42
|
size: { required: false },
|
@@ -1,20 +1,13 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
3
|
-
<icon-image
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
:backgroundColor="backgroundColor"
|
9
|
-
v-html="
|
10
|
-
require(`!html-loader!./../../assets/svgIcons/${name.toLowerCase()}.svg`)
|
11
|
-
"
|
12
|
-
></icon-image>
|
13
|
-
<striked-line v-if="isStriked" :color="color" :disabled="disabled" :hoveredColor="hoveredColor"></striked-line>
|
14
|
-
</Wrapper>
|
2
|
+
<wrapper>
|
3
|
+
<icon-image>
|
4
|
+
<i v-html="icon.html" />
|
5
|
+
</icon-image>
|
6
|
+
<striked-line v-if="isStriked"></striked-line>
|
7
|
+
</wrapper>
|
15
8
|
</template>
|
16
9
|
|
17
|
-
<script>
|
10
|
+
<script setup>
|
18
11
|
// import Icon from "@eturnity/eturnity_reusable_components/src/components/icon"
|
19
12
|
// How to use:
|
20
13
|
//<icon
|
@@ -26,40 +19,71 @@
|
|
26
19
|
// isStriked = "true"
|
27
20
|
// />
|
28
21
|
|
29
|
-
import
|
22
|
+
import { onMounted, reactive, watch } from 'vue'
|
23
|
+
import styled from 'vue3-styled-components'
|
24
|
+
import { fetchIcon } from './iconCache'
|
30
25
|
|
31
|
-
const
|
32
|
-
|
26
|
+
const props = defineProps({
|
27
|
+
disabled: {
|
28
|
+
required: false,
|
29
|
+
default: false
|
30
|
+
},
|
31
|
+
name: {
|
32
|
+
required: true
|
33
|
+
},
|
34
|
+
color: {
|
35
|
+
required: false
|
36
|
+
},
|
37
|
+
hoveredColor: {
|
38
|
+
required: false
|
39
|
+
},
|
40
|
+
size: {
|
41
|
+
required: false,
|
42
|
+
default: '30px'
|
43
|
+
},
|
44
|
+
cursor: {
|
45
|
+
required: false,
|
46
|
+
default: null
|
47
|
+
},
|
48
|
+
isStriked: {
|
49
|
+
required: false,
|
50
|
+
default: false
|
51
|
+
}
|
52
|
+
})
|
53
|
+
|
54
|
+
const Wrapper = styled('div')`
|
33
55
|
display: flex;
|
34
56
|
position: relative;
|
35
57
|
align-content: center;
|
36
58
|
justify-content: center;
|
37
|
-
width: ${
|
38
|
-
height: ${
|
39
|
-
min-width: ${
|
40
|
-
min-height: ${
|
41
|
-
cursor: ${
|
59
|
+
width: ${props.size};
|
60
|
+
height: ${props.size};
|
61
|
+
min-width: ${props.size};
|
62
|
+
min-height: ${props.size};
|
63
|
+
cursor: ${props.disabled ? 'not-allowed' : props.cursor};
|
42
64
|
line-height: 0;
|
43
65
|
`
|
44
|
-
|
45
|
-
|
46
|
-
|
66
|
+
const strikedAttrs = {
|
67
|
+
isDisabled: Boolean,
|
68
|
+
color: String,
|
69
|
+
hoveredColor: String
|
70
|
+
}
|
71
|
+
const StrikedLine = styled.div`
|
47
72
|
display: flex;
|
48
73
|
position: absolute;
|
49
|
-
bottom:0;
|
50
|
-
left:0;
|
74
|
+
bottom: 0;
|
75
|
+
left: 0;
|
51
76
|
align-content: center;
|
52
77
|
justify-content: center;
|
53
78
|
width: 143%;
|
54
|
-
height:8%;
|
55
|
-
background-color: ${(
|
79
|
+
height: 8%;
|
80
|
+
background-color: ${({ theme }) => theme.colors[props.color] || props.color};
|
56
81
|
min-height: 0;
|
57
82
|
line-height: 0;
|
58
83
|
transform-origin: 0% 100%;
|
59
84
|
transform: rotate(-45deg);
|
60
85
|
`
|
61
|
-
const
|
62
|
-
const IconImage = styled('div', IconImageProps)`
|
86
|
+
const IconImage = styled.div`
|
63
87
|
width: 100%;
|
64
88
|
svg {
|
65
89
|
width: 100%;
|
@@ -68,56 +92,24 @@ const IconImage = styled('div', IconImageProps)`
|
|
68
92
|
padding: ${(props) => props.backgroundColor ? '3px' : '0'};
|
69
93
|
}
|
70
94
|
svg path {
|
71
|
-
${(
|
72
|
-
props.color && `fill: ${
|
95
|
+
${({ theme }) =>
|
96
|
+
props.color && `fill: ${theme.colors[props.color] || props.color};`}
|
73
97
|
}
|
74
98
|
&:hover > svg path {
|
75
|
-
${
|
99
|
+
${props.hoveredColor && `fill: ${props.hoveredColor};`}
|
76
100
|
}
|
77
101
|
&:hover + div {
|
78
|
-
background-color: ${
|
102
|
+
background-color: ${props.hoveredColor};
|
79
103
|
}
|
80
104
|
`
|
81
105
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
Wrapper,
|
87
|
-
strikedLine
|
88
|
-
},
|
89
|
-
props: {
|
90
|
-
disabled: {
|
91
|
-
required: false,
|
92
|
-
default: false
|
93
|
-
},
|
94
|
-
name: {
|
95
|
-
required: true
|
96
|
-
},
|
97
|
-
color: {
|
98
|
-
required: false
|
99
|
-
},
|
100
|
-
backgroundColor: {
|
101
|
-
required: false
|
102
|
-
},
|
103
|
-
hoveredColor: {
|
104
|
-
required: false
|
105
|
-
},
|
106
|
-
size: {
|
107
|
-
required: false,
|
108
|
-
default: '30px'
|
109
|
-
},
|
110
|
-
cursor: {
|
111
|
-
required: false,
|
112
|
-
default: null
|
113
|
-
},
|
114
|
-
isStriked: {
|
115
|
-
required: false,
|
116
|
-
default: false
|
117
|
-
}
|
118
|
-
},
|
119
|
-
data() {
|
120
|
-
return {}
|
121
|
-
}
|
106
|
+
const icon = reactive({ html: '' })
|
107
|
+
|
108
|
+
const loadSvg = async () => {
|
109
|
+
icon.html = await fetchIcon(props.name.toLowerCase())
|
122
110
|
}
|
111
|
+
|
112
|
+
onMounted(() => loadSvg())
|
113
|
+
|
114
|
+
watch(() => props.name, loadSvg)
|
123
115
|
</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 'vue3-styled-components'
|
46
46
|
import icon from '../icon'
|
47
47
|
const wrapperAttrs = {
|
48
48
|
color: String,
|
@@ -148,9 +148,6 @@ export default {
|
|
148
148
|
required: false,
|
149
149
|
default: false
|
150
150
|
}
|
151
|
-
},
|
152
|
-
data() {
|
153
|
-
return {}
|
154
151
|
}
|
155
152
|
}
|
156
153
|
</script>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
</template>
|
9
9
|
|
10
10
|
<script>
|
11
|
-
import styled from '
|
11
|
+
import styled from 'vue3-styled-components'
|
12
12
|
import Icon from '../icon'
|
13
13
|
|
14
14
|
const InfoContainer = styled.div`
|
@@ -24,7 +24,6 @@ const TextContainer = styled.div`
|
|
24
24
|
width: 100%;
|
25
25
|
`
|
26
26
|
|
27
|
-
|
28
27
|
export default {
|
29
28
|
name: 'InfoCard',
|
30
29
|
components: {
|
@@ -33,4 +32,4 @@ export default {
|
|
33
32
|
TextContainer
|
34
33
|
}
|
35
34
|
}
|
36
|
-
</script>
|
35
|
+
</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 'vue3-styled-components'
|
34
34
|
import icon from '../icon'
|
35
35
|
|
36
36
|
const textAttrs = {
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<container
|
4
4
|
:checkColor="checkColor"
|
5
5
|
:size="size"
|
6
|
-
:hasLabel="
|
6
|
+
:hasLabel="hasLabel"
|
7
7
|
:backgroundColor="backgroundColor"
|
8
8
|
:isChecked="isChecked"
|
9
9
|
:isDisabled="isDisabled"
|
@@ -14,10 +14,10 @@
|
|
14
14
|
:data-id="dataId"
|
15
15
|
@change="onChangeHandler(!isChecked)"
|
16
16
|
/>
|
17
|
-
<
|
17
|
+
<check-wrapper :hasLabel="hasLabel">
|
18
18
|
<span class="checkmark"></span>
|
19
|
-
</
|
20
|
-
<label-text v-if="
|
19
|
+
</check-wrapper>
|
20
|
+
<label-text v-if="hasLabel">{{ label }}</label-text>
|
21
21
|
</container>
|
22
22
|
</component-wrapper>
|
23
23
|
</template>
|
@@ -34,12 +34,21 @@
|
|
34
34
|
// backgroundColor="red"
|
35
35
|
// :isDisabled="true"
|
36
36
|
// />
|
37
|
-
import styled from '
|
37
|
+
import styled from 'vue3-styled-components'
|
38
38
|
|
39
39
|
const ComponentWrapper = styled.div`
|
40
40
|
min-height: 18px;
|
41
41
|
`
|
42
42
|
|
43
|
+
const CheckWrapper = styled('div', { hasLabel: Boolean })`
|
44
|
+
${(props) =>
|
45
|
+
props.hasLabel &&
|
46
|
+
`
|
47
|
+
display: flex;
|
48
|
+
align-items: center;
|
49
|
+
`}
|
50
|
+
`
|
51
|
+
|
43
52
|
const containerAttrs = {
|
44
53
|
checkColor: String,
|
45
54
|
size: String,
|
@@ -145,7 +154,8 @@ export default {
|
|
145
154
|
ComponentWrapper,
|
146
155
|
Container,
|
147
156
|
InputCheckbox,
|
148
|
-
LabelText
|
157
|
+
LabelText,
|
158
|
+
CheckWrapper
|
149
159
|
},
|
150
160
|
props: {
|
151
161
|
label: {
|
@@ -175,6 +185,11 @@ export default {
|
|
175
185
|
default: ''
|
176
186
|
}
|
177
187
|
},
|
188
|
+
computed: {
|
189
|
+
hasLabel() {
|
190
|
+
return !!this.label.length
|
191
|
+
}
|
192
|
+
},
|
178
193
|
methods: {
|
179
194
|
onChangeHandler(value) {
|
180
195
|
if (this.isDisabled) {
|