@eturnity/eturnity_reusable_components 6.48.2-test-ext-02.0 → 6.50.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/package.json +2 -2
- package/src/App.vue +1 -3
- package/src/components/buttons/mainButton/index.vue +35 -23
- package/src/components/inputs/checkbox/index.vue +5 -0
- package/src/components/inputs/radioButton/index.vue +66 -49
- package/src/components/inputs/switchField/index.vue +2 -6
- package/src/components/inputs/toggle/index.vue +82 -72
- package/src/components/sideMenu/index.vue +2 -0
- package/src/components/infoCard/index.vue +0 -38
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@eturnity/eturnity_reusable_components",
|
3
|
-
"version": "6.
|
3
|
+
"version": "6.50.0",
|
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
|
+
}
|
package/src/App.vue
CHANGED
@@ -114,7 +114,6 @@ import iconCollection from '@/components/icon/iconCollection'
|
|
114
114
|
import dropdownComponent from '@/components/dropdown'
|
115
115
|
import videoThumbnail from '@/components/videoThumbnail'
|
116
116
|
import icon from '@/components/icon'
|
117
|
-
import infoCard from '@/components/infoCard'
|
118
117
|
// import TableDropdown from "@/components/tableDropdown"
|
119
118
|
|
120
119
|
const PageContainer = styled.div`
|
@@ -139,8 +138,7 @@ export default {
|
|
139
138
|
iconCollection,
|
140
139
|
dropdownComponent,
|
141
140
|
videoThumbnail,
|
142
|
-
icon
|
143
|
-
infoCard
|
141
|
+
icon
|
144
142
|
},
|
145
143
|
data() {
|
146
144
|
return {
|
@@ -6,6 +6,7 @@
|
|
6
6
|
:isDisabled="isDisabled"
|
7
7
|
:customColor="customColor"
|
8
8
|
:noWrap="noWrap"
|
9
|
+
:data-id="dataId"
|
9
10
|
>
|
10
11
|
{{ text }}
|
11
12
|
</button-container>
|
@@ -21,38 +22,45 @@
|
|
21
22
|
// type="secondary" // primary, secondary, cancel
|
22
23
|
// :isDisabled="true"
|
23
24
|
// :minWidth="minWidth"
|
25
|
+
// :dataId="test_data_id"
|
24
26
|
// />
|
25
27
|
|
26
|
-
import styled from
|
28
|
+
import styled from 'vue-styled-components'
|
27
29
|
|
28
30
|
const PageContainer = styled.div``
|
29
31
|
|
30
|
-
const ButtonAttrs = {
|
31
|
-
|
32
|
+
const ButtonAttrs = {
|
33
|
+
type: String,
|
34
|
+
isDisabled: Boolean,
|
35
|
+
minWidth: String,
|
36
|
+
customColor: String,
|
37
|
+
noWrap: Boolean
|
38
|
+
}
|
39
|
+
const ButtonContainer = styled('div', ButtonAttrs)`
|
32
40
|
padding: 7px 15px;
|
33
41
|
font-size: 13px;
|
34
42
|
color: ${(props) => props.theme.colors.white};
|
35
43
|
background-color: ${(props) =>
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
props.isDisabled
|
45
|
+
? props.theme.colors.disabled
|
46
|
+
: props.customColor
|
47
|
+
? props.customColor
|
48
|
+
: props.type === 'primary'
|
49
|
+
? props.theme.colors.black
|
50
|
+
: props.type === 'secondary'
|
51
|
+
? props.theme.colors.grey3
|
52
|
+
: props.type === 'cancel'
|
53
|
+
? props.theme.colors.red
|
54
|
+
: props.theme.colors.black};
|
47
55
|
border-radius: 4px;
|
48
56
|
text-align: center;
|
49
|
-
cursor: ${(props) => (props.isDisabled ?
|
57
|
+
cursor: ${(props) => (props.isDisabled ? 'not-allowed' : 'pointer')};
|
50
58
|
user-select: none;
|
51
59
|
${(props) => (props.minWidth ? `min-width: ${props.minWidth};` : '')};
|
52
60
|
${(props) => (props.noWrap ? `white-space: nowrap;` : '')};
|
53
61
|
|
54
62
|
&:hover {
|
55
|
-
opacity: ${(props) => (props.isDisabled ?
|
63
|
+
opacity: ${(props) => (props.isDisabled ? '1' : '0.8')};
|
56
64
|
}
|
57
65
|
|
58
66
|
&:active {
|
@@ -61,26 +69,26 @@ const ButtonContainer = styled("div", ButtonAttrs)`
|
|
61
69
|
`
|
62
70
|
|
63
71
|
export default {
|
64
|
-
name:
|
72
|
+
name: 'main-button',
|
65
73
|
components: {
|
66
74
|
PageContainer,
|
67
|
-
ButtonContainer
|
75
|
+
ButtonContainer
|
68
76
|
},
|
69
77
|
props: {
|
70
78
|
type: {
|
71
79
|
required: false,
|
72
|
-
default:
|
80
|
+
default: 'primary'
|
73
81
|
},
|
74
82
|
isDisabled: {
|
75
83
|
required: false,
|
76
|
-
default: false
|
84
|
+
default: false
|
77
85
|
},
|
78
86
|
text: {
|
79
|
-
required: true
|
87
|
+
required: true
|
80
88
|
},
|
81
89
|
customColor: {
|
82
90
|
required: false,
|
83
|
-
default: null
|
91
|
+
default: null
|
84
92
|
},
|
85
93
|
noWrap: {
|
86
94
|
required: false,
|
@@ -89,7 +97,11 @@ export default {
|
|
89
97
|
minWidth: {
|
90
98
|
required: false,
|
91
99
|
default: null
|
100
|
+
},
|
101
|
+
dataId: {
|
102
|
+
type: String,
|
103
|
+
default: ''
|
92
104
|
}
|
93
|
-
}
|
105
|
+
}
|
94
106
|
}
|
95
107
|
</script>
|
@@ -11,6 +11,7 @@
|
|
11
11
|
<input-checkbox
|
12
12
|
type="checkbox"
|
13
13
|
:checked="isChecked"
|
14
|
+
:data-id="dataId"
|
14
15
|
@change="onChangeHandler(!isChecked)"
|
15
16
|
/>
|
16
17
|
<div>
|
@@ -168,6 +169,10 @@ export default {
|
|
168
169
|
isDisabled: {
|
169
170
|
required: false,
|
170
171
|
default: false
|
172
|
+
},
|
173
|
+
dataId: {
|
174
|
+
type: String,
|
175
|
+
default: ''
|
171
176
|
}
|
172
177
|
},
|
173
178
|
methods: {
|
@@ -1,7 +1,12 @@
|
|
1
1
|
<template>
|
2
2
|
<component-wrapper :layout="layout">
|
3
3
|
<radio-wrapper v-for="(item, index) in options" :key="item.value">
|
4
|
-
<label-container
|
4
|
+
<label-container
|
5
|
+
:size="size"
|
6
|
+
:isDisabled="item.disabled"
|
7
|
+
:isChecked="selectedOption === item.value"
|
8
|
+
:checkmarkColor="checkmarkColor"
|
9
|
+
>
|
5
10
|
<radio
|
6
11
|
type="radio"
|
7
12
|
:value="selectedOption"
|
@@ -9,6 +14,7 @@
|
|
9
14
|
:name="'radioButtons_' + radioName"
|
10
15
|
:checked="selectedOption === item.value"
|
11
16
|
:disabled="item.disabled"
|
17
|
+
:data-id="`radio_button_${dataId}_option_${item.value}`"
|
12
18
|
/>
|
13
19
|
<span class="checkmark"></span>
|
14
20
|
<label-text :isDisabled="item.disabled">{{ item.label }}</label-text>
|
@@ -54,17 +60,17 @@
|
|
54
60
|
// { label: 'Button 4', value: 'button_4', disabled: true }
|
55
61
|
// ]
|
56
62
|
|
57
|
-
import styled from
|
58
|
-
import Modal from
|
59
|
-
import InfoText from
|
63
|
+
import styled from 'vue-styled-components'
|
64
|
+
import Modal from '../../modals/modal'
|
65
|
+
import InfoText from '../../infoText'
|
60
66
|
|
61
67
|
const wrapperProps = {
|
62
|
-
layout: String
|
68
|
+
layout: String
|
63
69
|
}
|
64
|
-
const ComponentWrapper = styled(
|
70
|
+
const ComponentWrapper = styled('div', wrapperProps)`
|
65
71
|
display: flex;
|
66
72
|
flex-direction: ${(props) =>
|
67
|
-
props.layout ===
|
73
|
+
props.layout === 'vertical' ? 'column' : 'row'};
|
68
74
|
grid-gap: 10px 5px;
|
69
75
|
flex-wrap: wrap;
|
70
76
|
`
|
@@ -83,8 +89,13 @@ const RadioWrapper = styled.div`
|
|
83
89
|
grid-gap: 10px;
|
84
90
|
`
|
85
91
|
|
86
|
-
const containerProps = {
|
87
|
-
|
92
|
+
const containerProps = {
|
93
|
+
size: String,
|
94
|
+
isDisabled: Boolean,
|
95
|
+
isChecked: Boolean,
|
96
|
+
checkmarkColor: String
|
97
|
+
}
|
98
|
+
const LabelContainer = styled('label', containerProps)`
|
88
99
|
display: grid;
|
89
100
|
grid-template-columns: auto 1fr auto;
|
90
101
|
grid-gap: 15px;
|
@@ -92,30 +103,30 @@ const LabelContainer = styled("label", containerProps)`
|
|
92
103
|
color: ${(props) =>
|
93
104
|
props.isDisabled ? props.theme.colors.grey2 : props.theme.colors.black};
|
94
105
|
position: relative;
|
95
|
-
cursor: ${(props) => (props.isDisabled ?
|
106
|
+
cursor: ${(props) => (props.isDisabled ? 'not-allowed' : 'pointer')};
|
96
107
|
font-size: ${(props) =>
|
97
|
-
props.size ===
|
98
|
-
?
|
99
|
-
: props.size ===
|
100
|
-
|
101
|
-
|
108
|
+
props.size === 'large'
|
109
|
+
? '16px'
|
110
|
+
: props.size === 'medium'
|
111
|
+
? '13px'
|
112
|
+
: '10px'};
|
102
113
|
user-select: none;
|
103
114
|
flex: auto;
|
104
115
|
align-self: baseline;
|
105
116
|
|
106
117
|
.checkmark {
|
107
118
|
height: ${(props) =>
|
108
|
-
props.size ===
|
109
|
-
?
|
110
|
-
: props.size ===
|
111
|
-
|
112
|
-
|
119
|
+
props.size === 'large'
|
120
|
+
? '23px'
|
121
|
+
: props.size === 'medium'
|
122
|
+
? '16px'
|
123
|
+
: '12px'};
|
113
124
|
width: ${(props) =>
|
114
|
-
props.size ===
|
115
|
-
?
|
116
|
-
: props.size ===
|
117
|
-
|
118
|
-
|
125
|
+
props.size === 'large'
|
126
|
+
? '23px'
|
127
|
+
: props.size === 'medium'
|
128
|
+
? '16px'
|
129
|
+
: '12px'};
|
119
130
|
background-color: #fff;
|
120
131
|
border-radius: 100%;
|
121
132
|
border: 1px solid ${(props) => props.theme.colors.mediumGray};
|
@@ -124,28 +135,29 @@ const LabelContainer = styled("label", containerProps)`
|
|
124
135
|
justify-content: center;
|
125
136
|
|
126
137
|
&:after {
|
127
|
-
content:
|
128
|
-
display: ${(props) => props.isChecked ? 'block' : 'none'};
|
138
|
+
content: '';
|
139
|
+
display: ${(props) => (props.isChecked ? 'block' : 'none')};
|
129
140
|
width: ${(props) =>
|
130
|
-
props.size ===
|
131
|
-
?
|
132
|
-
: props.size ===
|
133
|
-
|
134
|
-
|
141
|
+
props.size === 'large'
|
142
|
+
? '10px'
|
143
|
+
: props.size === 'medium'
|
144
|
+
? '8px'
|
145
|
+
: '6px'};
|
135
146
|
height: ${(props) =>
|
136
|
-
props.size ===
|
137
|
-
?
|
138
|
-
: props.size ===
|
139
|
-
|
140
|
-
|
147
|
+
props.size === 'large'
|
148
|
+
? '10px'
|
149
|
+
: props.size === 'medium'
|
150
|
+
? '8px'
|
151
|
+
: '6px'};
|
141
152
|
border-radius: 100%;
|
142
|
-
background: ${(props) =>
|
153
|
+
background: ${(props) =>
|
154
|
+
props.checkmarkColor ? props.checkmarkColor : props.theme.colors.green};
|
143
155
|
}
|
144
156
|
}
|
145
157
|
`
|
146
158
|
|
147
159
|
const textAttrs = { isDisabled: Boolean }
|
148
|
-
const LabelText = styled(
|
160
|
+
const LabelText = styled('div', textAttrs)`
|
149
161
|
color: ${(props) =>
|
150
162
|
props.isDisabled ? props.theme.colors.grey2 : props.theme.colors.black};
|
151
163
|
`
|
@@ -186,7 +198,7 @@ const ModalImageContainer = styled.div`
|
|
186
198
|
`
|
187
199
|
|
188
200
|
export default {
|
189
|
-
name:
|
201
|
+
name: 'radio-button',
|
190
202
|
components: {
|
191
203
|
Radio,
|
192
204
|
ComponentWrapper,
|
@@ -198,24 +210,24 @@ export default {
|
|
198
210
|
ModalImage,
|
199
211
|
ModalImageContainer,
|
200
212
|
InfoText,
|
201
|
-
LabelText
|
213
|
+
LabelText
|
202
214
|
},
|
203
215
|
props: {
|
204
216
|
selectedOption: {
|
205
217
|
required: true,
|
206
|
-
default: false
|
218
|
+
default: false
|
207
219
|
},
|
208
220
|
options: {
|
209
221
|
required: true,
|
210
|
-
default: []
|
222
|
+
default: []
|
211
223
|
},
|
212
224
|
layout: {
|
213
225
|
required: false,
|
214
|
-
default:
|
226
|
+
default: 'horizontal' //2 options: 'vertical' (only 1 per row) & 'horizontal' (many per row)
|
215
227
|
},
|
216
228
|
size: {
|
217
229
|
required: false,
|
218
|
-
default:
|
230
|
+
default: 'medium' // small, medium, large
|
219
231
|
},
|
220
232
|
name: {
|
221
233
|
required: false,
|
@@ -224,6 +236,10 @@ export default {
|
|
224
236
|
checkmarkColor: {
|
225
237
|
required: false,
|
226
238
|
default: ''
|
239
|
+
},
|
240
|
+
dataId: {
|
241
|
+
type: String,
|
242
|
+
default: 'key'
|
227
243
|
}
|
228
244
|
},
|
229
245
|
data() {
|
@@ -234,17 +250,18 @@ export default {
|
|
234
250
|
},
|
235
251
|
methods: {
|
236
252
|
onInputHandler(value) {
|
237
|
-
this.$emit(
|
253
|
+
this.$emit('on-radio-change', value)
|
238
254
|
},
|
239
255
|
isImageOpen(index) {
|
240
256
|
return this.selectedImage === index
|
241
257
|
},
|
242
258
|
toggleImageModal(value) {
|
243
259
|
this.selectedImage = value
|
244
|
-
}
|
260
|
+
}
|
245
261
|
},
|
246
262
|
created() {
|
247
|
-
this.radioName =
|
248
|
-
|
263
|
+
this.radioName =
|
264
|
+
this.name.length === 0 ? Math.round(Math.random() * 10000) : this.name
|
265
|
+
}
|
249
266
|
}
|
250
267
|
</script>
|
@@ -10,8 +10,6 @@
|
|
10
10
|
v-if="label && labelAlign === 'left'"
|
11
11
|
:hasInfoMessage="!!infoTextMessage"
|
12
12
|
:colorMode="colorMode"
|
13
|
-
:primaryColor="primaryColor"
|
14
|
-
:secondaryColor="secondaryColor"
|
15
13
|
>
|
16
14
|
<label-text :size="size">{{ label }}</label-text>
|
17
15
|
<info-text
|
@@ -101,12 +99,10 @@ const toggleAttrs = {
|
|
101
99
|
fontColor: String,
|
102
100
|
disabled: Boolean,
|
103
101
|
backgroundColor: String,
|
104
|
-
isChecked: Boolean
|
105
|
-
secondaryColor: String,
|
106
|
-
primaryColor: String,
|
102
|
+
isChecked: Boolean
|
107
103
|
}
|
108
104
|
const LabelText = styled('div', toggleAttrs)`
|
109
|
-
color:
|
105
|
+
color: white;
|
110
106
|
font-size: 13px;
|
111
107
|
font-weight: 700;
|
112
108
|
`
|
@@ -1,6 +1,11 @@
|
|
1
1
|
<template>
|
2
2
|
<container>
|
3
|
-
<flex-wrapper
|
3
|
+
<flex-wrapper
|
4
|
+
:size="size"
|
5
|
+
:disabled="disabled"
|
6
|
+
@click="onToggleChange"
|
7
|
+
:data-id="dataId"
|
8
|
+
>
|
4
9
|
<label-container
|
5
10
|
v-if="label && labelAlign === 'left'"
|
6
11
|
:hasInfoMessage="!!infoTextMessage"
|
@@ -69,27 +74,28 @@
|
|
69
74
|
// :disabled="true"
|
70
75
|
// infoTextAlign="right" // left by default
|
71
76
|
// infoTextMessage="My info message"
|
77
|
+
// dataId="test_data_id"
|
72
78
|
// />
|
73
79
|
|
74
|
-
import styled from
|
75
|
-
import InfoText from
|
80
|
+
import styled from 'vue-styled-components'
|
81
|
+
import InfoText from '../../infoText'
|
76
82
|
|
77
83
|
const Container = styled.div`
|
78
84
|
display: inline-block;
|
79
85
|
`
|
80
86
|
|
81
87
|
const flexAttrs = { size: String, disabled: Boolean }
|
82
|
-
const FlexWrapper = styled(
|
88
|
+
const FlexWrapper = styled('div', flexAttrs)`
|
83
89
|
display: grid;
|
84
90
|
grid-template-columns: auto 1fr;
|
85
91
|
grid-gap: ${(props) =>
|
86
|
-
props.size ===
|
87
|
-
?
|
88
|
-
: props.size ===
|
89
|
-
?
|
90
|
-
:
|
92
|
+
props.size === 'medium'
|
93
|
+
? '20px'
|
94
|
+
: props.size === 'small'
|
95
|
+
? '10px'
|
96
|
+
: '20px'};
|
91
97
|
align-items: center;
|
92
|
-
cursor: ${(props) => (props.disabled ?
|
98
|
+
cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};
|
93
99
|
`
|
94
100
|
|
95
101
|
const toggleAttrs = {
|
@@ -97,43 +103,43 @@ const toggleAttrs = {
|
|
97
103
|
fontColor: String,
|
98
104
|
disabled: Boolean,
|
99
105
|
backgroundColor: String,
|
100
|
-
isChecked: Boolean
|
106
|
+
isChecked: Boolean
|
101
107
|
}
|
102
|
-
const LabelText = styled(
|
108
|
+
const LabelText = styled('div', toggleAttrs)`
|
103
109
|
color: ${(props) =>
|
104
110
|
props.fontColor ? props.fontColor : props.theme.colors.darkGray};
|
105
111
|
font-size: ${(props) =>
|
106
|
-
props.size ===
|
107
|
-
?
|
108
|
-
: props.size ===
|
109
|
-
?
|
110
|
-
:
|
112
|
+
props.size === 'medium'
|
113
|
+
? '16px'
|
114
|
+
: props.size === 'small'
|
115
|
+
? '13px'
|
116
|
+
: '16px'};
|
111
117
|
`
|
112
118
|
|
113
|
-
const ToggleWrapper = styled(
|
119
|
+
const ToggleWrapper = styled('span', toggleAttrs)`
|
114
120
|
display: inline-block;
|
115
121
|
border: ${(props) =>
|
116
122
|
props.disabled
|
117
|
-
?
|
123
|
+
? '1px solid ' + props.theme.colors.disabled
|
118
124
|
: props.isChecked
|
119
125
|
? props.backgroundColor
|
120
|
-
?
|
121
|
-
:
|
122
|
-
:
|
126
|
+
? '1px solid ' + props.backgroundColor
|
127
|
+
: '1px solid ' + props.theme.colors.green
|
128
|
+
: '1px solid ' + props.theme.colors.grey3}
|
123
129
|
position: relative;
|
124
|
-
cursor: ${(props) => (props.disabled ?
|
130
|
+
cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};
|
125
131
|
width: ${(props) =>
|
126
|
-
props.size ===
|
127
|
-
?
|
128
|
-
: props.size ===
|
129
|
-
?
|
130
|
-
:
|
132
|
+
props.size === 'medium'
|
133
|
+
? '50px'
|
134
|
+
: props.size === 'small'
|
135
|
+
? '29px'
|
136
|
+
: '50px'};
|
131
137
|
height: ${(props) =>
|
132
|
-
props.size ===
|
133
|
-
?
|
134
|
-
: props.size ===
|
135
|
-
?
|
136
|
-
:
|
138
|
+
props.size === 'medium'
|
139
|
+
? '24px'
|
140
|
+
: props.size === 'small'
|
141
|
+
? '16px'
|
142
|
+
: '24px'};
|
137
143
|
border-radius: 100px;
|
138
144
|
|
139
145
|
&:focus {
|
@@ -149,9 +155,9 @@ const ToggleWrapper = styled("span", toggleAttrs)`
|
|
149
155
|
const backgroundAttrs = {
|
150
156
|
backgroundColor: String,
|
151
157
|
isChecked: Boolean,
|
152
|
-
disabled: Boolean
|
158
|
+
disabled: Boolean
|
153
159
|
}
|
154
|
-
const ToggleBackground = styled(
|
160
|
+
const ToggleBackground = styled('span', backgroundAttrs)`
|
155
161
|
display: block;
|
156
162
|
border-radius: 100px;
|
157
163
|
height: 100%;
|
@@ -171,25 +177,25 @@ const toggleProps = {
|
|
171
177
|
isChecked: Boolean,
|
172
178
|
toggleColor: String,
|
173
179
|
size: String,
|
174
|
-
disabled: Boolean
|
180
|
+
disabled: Boolean
|
175
181
|
}
|
176
|
-
const ToggleDot = styled(
|
182
|
+
const ToggleDot = styled('span', toggleProps)`
|
177
183
|
position: absolute;
|
178
184
|
height: ${(props) =>
|
179
|
-
props.size ===
|
180
|
-
?
|
181
|
-
: props.size ===
|
182
|
-
?
|
183
|
-
:
|
185
|
+
props.size === 'medium'
|
186
|
+
? '14px'
|
187
|
+
: props.size === 'small'
|
188
|
+
? '10px'
|
189
|
+
: '14px'};
|
184
190
|
width: ${(props) =>
|
185
|
-
props.size ===
|
186
|
-
?
|
187
|
-
: props.size ===
|
188
|
-
?
|
189
|
-
:
|
191
|
+
props.size === 'medium'
|
192
|
+
? '14px'
|
193
|
+
: props.size === 'small'
|
194
|
+
? '10px'
|
195
|
+
: '14px'};
|
190
196
|
left: 3px
|
191
197
|
bottom: ${(props) =>
|
192
|
-
props.size ===
|
198
|
+
props.size === 'medium' ? '5px' : props.size === 'small' ? '2px' : '5px'};
|
193
199
|
background-color: ${(props) =>
|
194
200
|
props.disabled
|
195
201
|
? props.theme.colors.disabled
|
@@ -202,33 +208,33 @@ const ToggleDot = styled("span", toggleProps)`
|
|
202
208
|
transition: transform 0.4s ease;
|
203
209
|
transform: ${(props) =>
|
204
210
|
props.isChecked
|
205
|
-
? props.size ===
|
206
|
-
?
|
207
|
-
: props.size ===
|
208
|
-
?
|
209
|
-
:
|
210
|
-
:
|
211
|
+
? props.size === 'medium'
|
212
|
+
? 'translateX(25px)'
|
213
|
+
: props.size === 'small'
|
214
|
+
? 'translateX(12px)'
|
215
|
+
: 'translateX(25px)'
|
216
|
+
: 'translateX(0)'};
|
211
217
|
|
212
218
|
@media (max-width: ${(props) => props.theme.screen.mobile}) {
|
213
219
|
height: 24px;
|
214
220
|
width: 24px;
|
215
221
|
transform: ${(props) =>
|
216
|
-
props.isChecked ?
|
222
|
+
props.isChecked ? 'translateX(25px)' : 'translateX(0)'};
|
217
223
|
bottom: 8px;
|
218
224
|
}
|
219
225
|
`
|
220
226
|
|
221
227
|
const labelAttrs = { hasInfoMessage: Boolean }
|
222
|
-
const LabelContainer = styled(
|
228
|
+
const LabelContainer = styled('div', labelAttrs)`
|
223
229
|
display: inline-grid;
|
224
230
|
grid-template-columns: ${(props) =>
|
225
|
-
props.hasInfoMessage ?
|
231
|
+
props.hasInfoMessage ? 'auto 1fr' : 'auto'};
|
226
232
|
grid-gap: 12px;
|
227
233
|
align-items: center;
|
228
234
|
`
|
229
235
|
|
230
236
|
export default {
|
231
|
-
name:
|
237
|
+
name: 'toggle',
|
232
238
|
components: {
|
233
239
|
Container,
|
234
240
|
ToggleBackground,
|
@@ -237,52 +243,56 @@ export default {
|
|
237
243
|
FlexWrapper,
|
238
244
|
LabelText,
|
239
245
|
InfoText,
|
240
|
-
LabelContainer
|
246
|
+
LabelContainer
|
241
247
|
},
|
242
248
|
props: {
|
243
249
|
label: {
|
244
250
|
required: false,
|
245
|
-
default:
|
251
|
+
default: ''
|
246
252
|
},
|
247
253
|
isChecked: {
|
248
254
|
required: true,
|
249
|
-
default: false
|
255
|
+
default: false
|
250
256
|
},
|
251
257
|
toggleColor: {
|
252
|
-
required: false
|
258
|
+
required: false
|
253
259
|
},
|
254
260
|
backgroundColor: {
|
255
|
-
required: false
|
261
|
+
required: false
|
256
262
|
},
|
257
263
|
size: {
|
258
264
|
required: false,
|
259
|
-
default:
|
265
|
+
default: 'small'
|
260
266
|
},
|
261
267
|
labelAlign: {
|
262
268
|
required: false,
|
263
|
-
default:
|
269
|
+
default: 'right'
|
264
270
|
},
|
265
271
|
fontColor: {
|
266
|
-
required: false
|
272
|
+
required: false
|
267
273
|
},
|
268
274
|
disabled: {
|
269
275
|
required: false,
|
270
|
-
default: false
|
276
|
+
default: false
|
271
277
|
},
|
272
278
|
infoTextMessage: {
|
273
|
-
required: false
|
279
|
+
required: false
|
274
280
|
},
|
275
281
|
infoTextAlign: {
|
276
|
-
required: false
|
282
|
+
required: false
|
277
283
|
},
|
284
|
+
dataId: {
|
285
|
+
type: String,
|
286
|
+
default: ''
|
287
|
+
}
|
278
288
|
},
|
279
289
|
methods: {
|
280
290
|
onToggleChange() {
|
281
291
|
if (this.disabled) {
|
282
292
|
return
|
283
293
|
}
|
284
|
-
this.$emit(
|
285
|
-
}
|
286
|
-
}
|
294
|
+
this.$emit('on-toggle-change', !this.isChecked)
|
295
|
+
}
|
296
|
+
}
|
287
297
|
}
|
288
298
|
</script>
|
@@ -8,6 +8,7 @@
|
|
8
8
|
<list-item
|
9
9
|
v-if="!item.children"
|
10
10
|
:key="idx"
|
11
|
+
:data-id="`sub_menu_settings_${item.key}`"
|
11
12
|
:isActive="activeTab === item.key"
|
12
13
|
@click="$emit('tab-click', { activeKey: item.key })"
|
13
14
|
>
|
@@ -57,6 +58,7 @@
|
|
57
58
|
<icon-container
|
58
59
|
:isActive="false"
|
59
60
|
:isButton="true"
|
61
|
+
data-id="button_settings_logout"
|
60
62
|
@click="$emit('on-logout')"
|
61
63
|
>
|
62
64
|
<rotate-icon
|
@@ -1,38 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<info-container>
|
3
|
-
<icon name="info" size="24px" />
|
4
|
-
<InfoTextContainer>
|
5
|
-
<slot />
|
6
|
-
</InfoTextContainer>
|
7
|
-
</info-container>
|
8
|
-
</template>
|
9
|
-
|
10
|
-
<script>
|
11
|
-
import styled from 'vue-styled-components'
|
12
|
-
import icon from '../icon'
|
13
|
-
const InfoContainer = styled('div')`
|
14
|
-
display: flex;
|
15
|
-
align-items: flex-start;
|
16
|
-
gap: 15px;
|
17
|
-
padding: 20px;
|
18
|
-
width: 500px;
|
19
|
-
min-width: 450px;
|
20
|
-
border: 1px dashed #dee2eb;
|
21
|
-
border-radius: 4px;
|
22
|
-
margin:20px 0;
|
23
|
-
`
|
24
|
-
|
25
|
-
const InfoTextContainer = styled('div')`
|
26
|
-
font-size: 13px;
|
27
|
-
`
|
28
|
-
|
29
|
-
|
30
|
-
export default {
|
31
|
-
components:{
|
32
|
-
icon,
|
33
|
-
InfoTextContainer,
|
34
|
-
InfoContainer
|
35
|
-
},
|
36
|
-
props:[]
|
37
|
-
}
|
38
|
-
</script>
|