@eturnity/eturnity_reusable_components 7.51.16-EPDM-13568.1 → 7.51.16-EPDM-13568.2
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +1 -1
- package/src/App.vue +6 -6
- package/src/assets/svgIcons/heat_pump.svg +5 -0
- package/src/assets/theme.js +2 -2
- package/src/components/buttons/buttonIcon/index.vue +106 -32
- package/src/components/buttons/mainButton/index.vue +55 -18
- package/src/components/filter/filterSettings.vue +4 -3
- package/src/components/icon/index.vue +1 -0
- package/src/components/infoText/index.vue +37 -19
- package/src/components/inputs/inputNumber/index.vue +5 -0
- package/src/components/inputs/inputText/index.vue +6 -0
- package/src/components/projectMarker/index.vue +2 -1
- package/src/components/sideMenu/index.vue +60 -29
- package/src/components/spinner/index.vue +3 -3
- package/src/components/tables/mainTable/index.vue +2 -2
package/package.json
CHANGED
package/src/App.vue
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
<template>
|
2
|
-
<ThemeProvider :style="{ height: '100%' }" :theme="
|
2
|
+
<ThemeProvider :style="{ height: '100%' }" :theme="theme">
|
3
3
|
<RouterView />
|
4
4
|
</ThemeProvider>
|
5
5
|
</template>
|
6
6
|
|
7
7
|
<script>
|
8
8
|
import { ThemeProvider } from 'vue3-styled-components'
|
9
|
-
import theme from '
|
9
|
+
import theme from '@/assets/theme.js'
|
10
10
|
|
11
11
|
export default {
|
12
12
|
name: 'App',
|
13
13
|
components: {
|
14
14
|
ThemeProvider,
|
15
15
|
},
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
}
|
16
|
+
setup() {
|
17
|
+
return {
|
18
|
+
theme,
|
19
|
+
}
|
20
20
|
},
|
21
21
|
}
|
22
22
|
</script>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.48791 8.60607C2.0063 8.2283 2.71145 7.71445 3.97197 7.71445C4.5703 7.71445 5.04544 7.82349 5.45393 7.99996C5.84112 8.16724 6.14723 8.38769 6.39326 8.56488L6.4106 8.57737C6.67117 8.76496 6.86936 8.90486 7.10995 9.00878C7.33842 9.10745 7.62765 9.18186 8.04848 9.18186C8.83404 9.18186 9.16094 8.94855 9.63985 8.60676C9.77269 8.51195 9.91723 8.4088 10.0865 8.29996C10.405 8.09514 10.8293 8.18732 11.0341 8.50586C11.2389 8.82439 11.1467 9.24866 10.8282 9.45348C10.7333 9.5145 10.6339 9.58693 10.5267 9.66506C10.0086 10.0426 9.3078 10.5533 8.04848 10.5533C7.45001 10.5533 6.97476 10.4442 6.56619 10.2678C6.17879 10.1005 5.87258 9.87993 5.62647 9.70269L5.60933 9.69035C5.34871 9.50272 5.15058 9.36282 4.91005 9.25891C4.68167 9.16025 4.39259 9.08586 3.97197 9.08586C3.18671 9.08586 2.8624 9.31732 2.38624 9.65715C2.24614 9.75714 2.09289 9.86651 1.91089 9.98213C1.59124 10.1852 1.16749 10.0907 0.964421 9.77102C0.761356 9.45136 0.855873 9.02761 1.17553 8.82455C1.27346 8.76234 1.37636 8.68735 1.48791 8.60607Z" fill="#5900CC"/>
|
3
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.48791 5.17755C2.0063 4.79979 2.71145 4.28594 3.97197 4.28594C4.5703 4.28594 5.04544 4.39497 5.45393 4.57145C5.84112 4.73872 6.14723 4.95918 6.39326 5.13636L6.4106 5.14885C6.67117 5.33645 6.86936 5.47635 7.10995 5.58026C7.33842 5.67894 7.62765 5.75334 8.04848 5.75334C8.83404 5.75334 9.16094 5.52004 9.63985 5.17824C9.77269 5.08344 9.91723 4.98028 10.0865 4.87144C10.405 4.66662 10.8293 4.75881 11.0341 5.07734C11.2389 5.39588 11.1467 5.82014 10.8282 6.02496C10.7333 6.08599 10.6339 6.15842 10.5267 6.23654C10.0086 6.61409 9.3078 7.12475 8.04848 7.12475C7.45001 7.12475 6.97476 7.01572 6.56619 6.83926C6.17879 6.67194 5.87258 6.45142 5.62647 6.27417L5.60933 6.26183C5.34871 6.0742 5.15058 5.93431 4.91005 5.83039C4.68167 5.73173 4.39259 5.65734 3.97197 5.65734C3.18671 5.65734 2.8624 5.88881 2.38624 6.22864C2.24614 6.32863 2.09289 6.438 1.91089 6.55361C1.59124 6.75668 1.16749 6.66216 0.964421 6.3425C0.761356 6.02285 0.855873 5.5991 1.17553 5.39603C1.27346 5.33382 1.37636 5.25884 1.48791 5.17755Z" fill="#5900CC"/>
|
4
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.48791 1.74904C2.0063 1.37127 2.71145 0.857422 3.97197 0.857422C4.5703 0.857422 5.04544 0.966459 5.45393 1.14293C5.84112 1.31021 6.14723 1.53066 6.39326 1.70785L6.4106 1.72034C6.67117 1.90793 6.86936 2.04783 7.10995 2.15175C7.33842 2.25042 7.62765 2.32483 8.04848 2.32483C8.83404 2.32483 9.16094 2.09152 9.63985 1.74973C9.77269 1.65492 9.91723 1.55177 10.0865 1.44293C10.405 1.23811 10.8293 1.33029 11.0341 1.64883C11.2389 1.96736 11.1467 2.39163 10.8282 2.59645C10.7333 2.65747 10.6339 2.7299 10.5267 2.80803C10.0086 3.18557 9.3078 3.69623 8.04848 3.69623C7.45001 3.69623 6.97476 3.58721 6.56619 3.41075C6.17879 3.24343 5.87258 3.0229 5.62647 2.84566L5.60933 2.83332C5.34871 2.64569 5.15058 2.50579 4.91005 2.40188C4.68167 2.30322 4.39259 2.22883 3.97197 2.22883C3.18671 2.22883 2.8624 2.46029 2.38624 2.80012C2.24614 2.90011 2.09289 3.00948 1.91089 3.1251C1.59124 3.32816 1.16749 3.23365 0.964421 2.91399C0.761356 2.59433 0.855873 2.17058 1.17553 1.96752C1.27346 1.90531 1.37636 1.83032 1.48791 1.74904Z" fill="#5900CC"/>
|
5
|
+
</svg>
|
package/src/assets/theme.js
CHANGED
@@ -1,19 +1,31 @@
|
|
1
1
|
<template>
|
2
2
|
<PageContainer>
|
3
3
|
<ButtonWrapper
|
4
|
+
:button-size="buttonSize"
|
4
5
|
:custom-color="customColor"
|
5
|
-
:height="height"
|
6
6
|
:is-disabled="isDisabled"
|
7
7
|
:min-width="minWidth"
|
8
|
+
:theme-type="themeType"
|
9
|
+
:type="type"
|
10
|
+
:variant="variant"
|
8
11
|
>
|
9
|
-
<IconContainer
|
12
|
+
<IconContainer
|
13
|
+
:button-size="buttonSize"
|
14
|
+
:theme-type="themeType"
|
15
|
+
:type="type"
|
16
|
+
:variant="variant"
|
17
|
+
>
|
10
18
|
<Icon
|
11
|
-
:color="
|
19
|
+
:color="
|
20
|
+
iconColor ||
|
21
|
+
theme.mainButton[themeType][type][variant].textColor ||
|
22
|
+
theme.colors.white
|
23
|
+
"
|
12
24
|
:name="iconName"
|
13
25
|
size="14px"
|
14
26
|
/>
|
15
27
|
</IconContainer>
|
16
|
-
<ButtonContainer :
|
28
|
+
<ButtonContainer :button-size="buttonSize">
|
17
29
|
{{ text }}
|
18
30
|
</ButtonContainer>
|
19
31
|
</ButtonWrapper>
|
@@ -40,61 +52,96 @@
|
|
40
52
|
const PageContainer = styled.div``
|
41
53
|
|
42
54
|
const ButtonAttrs = {
|
55
|
+
type: String,
|
43
56
|
isDisabled: Boolean,
|
44
57
|
minWidth: String,
|
45
58
|
customColor: String,
|
46
|
-
|
59
|
+
buttonSize: String,
|
60
|
+
themeType: String,
|
61
|
+
variant: String,
|
47
62
|
}
|
48
63
|
const ButtonWrapper = styled('div', ButtonAttrs)`
|
49
64
|
display: grid;
|
50
65
|
grid-template-columns: auto 1fr;
|
66
|
+
font-size: ${(props) =>
|
67
|
+
props.theme?.mainButton?.size?.[props.buttonSize]?.fontSize};
|
68
|
+
color: ${(props) =>
|
69
|
+
props.isDisabled
|
70
|
+
? props.theme.mainButton[props.themeType][props.type][props.variant]
|
71
|
+
.disabled.textColor
|
72
|
+
: props.theme.mainButton[props.themeType][props.type][props.variant]
|
73
|
+
.textColor};
|
51
74
|
background-color: ${(props) =>
|
52
75
|
props.isDisabled
|
53
|
-
? props.theme.
|
76
|
+
? props.theme.mainButton[props.themeType][props.type][props.variant]
|
77
|
+
.disabled.backgroundColor
|
54
78
|
: props.customColor
|
55
|
-
? props.
|
56
|
-
|
57
|
-
|
58
|
-
|
79
|
+
? props.customColor
|
80
|
+
: props.theme.mainButton[props.themeType][props.type][props.variant]
|
81
|
+
.default};
|
82
|
+
border: ${(props) => {
|
83
|
+
const borderValue = props.isDisabled
|
84
|
+
? props.theme.mainButton[props.themeType][props.type][props.variant]
|
85
|
+
.disabled.borderColor
|
86
|
+
: props.theme.mainButton[props.themeType][props.type][props.variant]
|
87
|
+
.borderColor
|
88
|
+
return borderValue ? '1px solid ' + borderValue : 'none'
|
89
|
+
}};
|
59
90
|
cursor: ${(props) => (props.isDisabled ? 'not-allowed' : 'pointer')};
|
60
91
|
user-select: none;
|
61
92
|
border-radius: 4px;
|
62
93
|
overflow: hidden;
|
63
|
-
min-width: ${(props) =>
|
64
|
-
height: ${(props) => props.height};
|
94
|
+
min-width: ${(props) => props.minWidth || 'initial'};
|
65
95
|
|
66
96
|
&:hover {
|
67
|
-
|
97
|
+
background-color: ${(props) =>
|
98
|
+
props.isDisabled
|
99
|
+
? props.theme.mainButton[props.themeType][props.type][props.variant]
|
100
|
+
.disabled.backgroundColor
|
101
|
+
: props.theme.mainButton[props.themeType][props.type][props.variant]
|
102
|
+
.hover};
|
68
103
|
}
|
69
104
|
|
70
105
|
&:active {
|
71
|
-
|
106
|
+
background-color: ${(props) =>
|
107
|
+
props.isDisabled
|
108
|
+
? props.theme.mainButton[props.themeType][props.type][props.variant]
|
109
|
+
.disabled.backgroundColor
|
110
|
+
: props.theme.mainButton[props.themeType][props.type][props.variant]
|
111
|
+
.active};
|
72
112
|
}
|
73
113
|
`
|
74
114
|
|
75
115
|
const ButtonContainerAttrs = {
|
76
|
-
|
77
|
-
fontColor: String,
|
116
|
+
buttonSize: String,
|
78
117
|
}
|
79
118
|
const ButtonContainer = styled('div', ButtonContainerAttrs)`
|
80
|
-
font-size: ${(props) => props.fontSize};
|
81
|
-
color: ${(props) =>
|
82
|
-
props.fontColor ? props.fontColor : props.theme.colors.white};
|
83
119
|
display: flex;
|
84
120
|
align-items: center;
|
85
121
|
justify-content: center;
|
86
|
-
padding:
|
122
|
+
padding: ${(props) =>
|
123
|
+
props.theme?.mainButton?.size?.[props.buttonSize]?.padding};
|
87
124
|
`
|
88
125
|
|
89
126
|
const IconContainerAttrs = {
|
90
|
-
|
127
|
+
buttonSize: String,
|
128
|
+
themeType: String,
|
129
|
+
type: String,
|
130
|
+
variant: String,
|
91
131
|
}
|
92
132
|
const IconContainer = styled('div', IconContainerAttrs)`
|
93
133
|
display: grid;
|
94
134
|
align-items: center;
|
95
135
|
justify-items: center;
|
96
|
-
width: ${(props) =>
|
97
|
-
|
136
|
+
width: ${(props) =>
|
137
|
+
props.theme?.mainButton?.size?.[props.buttonSize]?.iconWidth};
|
138
|
+
background: rgba(255, 255, 255, 0.1);
|
139
|
+
border-right: ${(props) => {
|
140
|
+
const borderColor =
|
141
|
+
props.theme.mainButton[props.themeType][props.type][props.variant]
|
142
|
+
.borderColor
|
143
|
+
return borderColor ? `1px solid ${borderColor}` : 'none'
|
144
|
+
}};
|
98
145
|
`
|
99
146
|
|
100
147
|
export default {
|
@@ -107,35 +154,53 @@
|
|
107
154
|
Icon,
|
108
155
|
},
|
109
156
|
props: {
|
157
|
+
type: {
|
158
|
+
required: false,
|
159
|
+
default: 'primary',
|
160
|
+
type: String,
|
161
|
+
},
|
162
|
+
variant: {
|
163
|
+
required: false,
|
164
|
+
default: 'main',
|
165
|
+
type: String,
|
166
|
+
},
|
167
|
+
themeType: {
|
168
|
+
type: String,
|
169
|
+
default: 'light',
|
170
|
+
required: false,
|
171
|
+
},
|
172
|
+
buttonSize: {
|
173
|
+
type: String,
|
174
|
+
default: 'medium',
|
175
|
+
required: false,
|
176
|
+
},
|
110
177
|
isDisabled: {
|
111
178
|
required: false,
|
112
179
|
default: false,
|
180
|
+
type: Boolean,
|
113
181
|
},
|
114
182
|
text: {
|
115
183
|
required: true,
|
184
|
+
type: String,
|
116
185
|
},
|
117
186
|
minWidth: {
|
118
187
|
required: false,
|
119
188
|
default: null,
|
189
|
+
type: String,
|
120
190
|
},
|
121
191
|
customColor: {
|
122
192
|
required: false,
|
123
193
|
default: null,
|
194
|
+
type: String,
|
124
195
|
},
|
125
196
|
iconName: {
|
126
197
|
required: true,
|
198
|
+
type: String,
|
127
199
|
},
|
128
|
-
|
200
|
+
iconColor: {
|
129
201
|
required: false,
|
130
202
|
default: null,
|
131
|
-
|
132
|
-
fontSize: {
|
133
|
-
required: false,
|
134
|
-
default: '13px',
|
135
|
-
},
|
136
|
-
height: {
|
137
|
-
required: false,
|
138
|
-
default: '30px',
|
203
|
+
type: String,
|
139
204
|
},
|
140
205
|
},
|
141
206
|
data() {
|
@@ -143,5 +208,14 @@
|
|
143
208
|
theme: Theme,
|
144
209
|
}
|
145
210
|
},
|
211
|
+
// computed: {
|
212
|
+
// getIconColor() {
|
213
|
+
// console.log(this.theme[this.themeType][this.type][this.variant])
|
214
|
+
// return (
|
215
|
+
// this.iconColor ||
|
216
|
+
// this.theme[this.themeType][this.type][this.variant].textColor
|
217
|
+
// )
|
218
|
+
// },
|
219
|
+
// },
|
146
220
|
}
|
147
221
|
</script>
|
@@ -2,6 +2,7 @@
|
|
2
2
|
<PageContainer>
|
3
3
|
<ButtonContainer
|
4
4
|
:id="id"
|
5
|
+
:button-size="buttonSize"
|
5
6
|
:custom-color="customColor"
|
6
7
|
:data-id="dataId"
|
7
8
|
:data-qa-id="dataQaId"
|
@@ -10,10 +11,12 @@
|
|
10
11
|
:is-disabled="isDisabled"
|
11
12
|
:min-width="minWidth"
|
12
13
|
:no-wrap="noWrap"
|
14
|
+
:theme-type="theme"
|
13
15
|
:type="type"
|
16
|
+
:variant="variant"
|
14
17
|
>
|
15
18
|
<LabelComponent :has-icon="Boolean(icon)">
|
16
|
-
<Icon v-if="icon" :
|
19
|
+
<Icon v-if="icon" :color="iconColor" :name="icon" size="14px" />
|
17
20
|
{{ text }}
|
18
21
|
</LabelComponent>
|
19
22
|
</ButtonContainer>
|
@@ -46,30 +49,40 @@
|
|
46
49
|
fontColor: String,
|
47
50
|
noWrap: Boolean,
|
48
51
|
height: String,
|
52
|
+
variant: String,
|
53
|
+
buttonSize: String,
|
54
|
+
themeType: String,
|
49
55
|
}
|
50
56
|
const ButtonContainer = styled('div', ButtonAttrs)`
|
51
57
|
display: flex;
|
52
58
|
justify-content: center;
|
53
|
-
padding:
|
54
|
-
|
59
|
+
padding: ${(props) =>
|
60
|
+
props.theme?.mainButton?.size?.[props.buttonSize]?.padding};
|
61
|
+
font-size: ${(props) =>
|
62
|
+
props.theme?.mainButton?.size?.[props.buttonSize]?.fontSize};
|
55
63
|
color: ${(props) =>
|
56
64
|
props.isDisabled
|
57
|
-
? props.theme.
|
58
|
-
|
59
|
-
|
60
|
-
|
65
|
+
? props.theme.mainButton[props.themeType][props.type][props.variant]
|
66
|
+
.disabled.textColor
|
67
|
+
: props.theme.mainButton[props.themeType][props.type][props.variant]
|
68
|
+
.textColor};
|
61
69
|
background-color: ${(props) =>
|
62
70
|
props.isDisabled
|
63
|
-
? props.theme.
|
71
|
+
? props.theme.mainButton[props.themeType][props.type][props.variant]
|
72
|
+
.disabled.backgroundColor
|
64
73
|
: props.customColor
|
65
74
|
? props.customColor
|
66
|
-
: props.type
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
? props.theme.
|
72
|
-
|
75
|
+
: props.theme.mainButton[props.themeType][props.type][props.variant]
|
76
|
+
.default};
|
77
|
+
|
78
|
+
border: ${(props) => {
|
79
|
+
const borderValue = props.isDisabled
|
80
|
+
? props.theme.mainButton[props.themeType][props.type][props.variant]
|
81
|
+
.disabled.borderColor
|
82
|
+
: props.theme.mainButton[props.themeType][props.type][props.variant]
|
83
|
+
.borderColor
|
84
|
+
return borderValue ? '1px solid ' + borderValue : 'none'
|
85
|
+
}};
|
73
86
|
border-radius: 4px;
|
74
87
|
text-align: center;
|
75
88
|
cursor: ${(props) => (props.isDisabled ? 'not-allowed' : 'pointer')};
|
@@ -79,11 +92,21 @@
|
|
79
92
|
height: ${(props) => props.height};
|
80
93
|
|
81
94
|
&:hover {
|
82
|
-
|
95
|
+
background-color: ${(props) =>
|
96
|
+
props.isDisabled
|
97
|
+
? props.theme.mainButton[props.themeType][props.type][props.variant]
|
98
|
+
.disabled.backgroundColor
|
99
|
+
: props.theme.mainButton[props.themeType][props.type][props.variant]
|
100
|
+
.hover};
|
83
101
|
}
|
84
102
|
|
85
103
|
&:active {
|
86
|
-
|
104
|
+
background-color: ${(props) =>
|
105
|
+
props.isDisabled
|
106
|
+
? props.theme.mainButton[props.themeType][props.type][props.variant]
|
107
|
+
.disabled.backgroundColor
|
108
|
+
: props.theme.mainButton[props.themeType][props.type][props.variant]
|
109
|
+
.active};
|
87
110
|
}
|
88
111
|
`
|
89
112
|
|
@@ -109,7 +132,12 @@
|
|
109
132
|
props: {
|
110
133
|
type: {
|
111
134
|
required: false,
|
112
|
-
default: 'primary',
|
135
|
+
default: 'primary', // primary, secondary, tertiary, ghost
|
136
|
+
type: String,
|
137
|
+
},
|
138
|
+
variant: {
|
139
|
+
required: false,
|
140
|
+
default: 'main', // main, cancel
|
113
141
|
type: String,
|
114
142
|
},
|
115
143
|
isDisabled: {
|
@@ -169,6 +197,15 @@
|
|
169
197
|
type: String,
|
170
198
|
default: '',
|
171
199
|
},
|
200
|
+
theme: {
|
201
|
+
type: String,
|
202
|
+
default: 'light',
|
203
|
+
},
|
204
|
+
buttonSize: {
|
205
|
+
type: String,
|
206
|
+
default: 'medium',
|
207
|
+
required: false,
|
208
|
+
},
|
172
209
|
},
|
173
210
|
}
|
174
211
|
</script>
|
@@ -297,12 +297,13 @@
|
|
297
297
|
<MainButton
|
298
298
|
v-if="buttonText.cancel"
|
299
299
|
:text="buttonText.cancel"
|
300
|
-
type="
|
300
|
+
type="primary"
|
301
|
+
variant="cancel"
|
301
302
|
@click="$emit('on-cancel-view')"
|
302
303
|
/>
|
303
304
|
<ResetContainer v-if="!filterViews || !filterViews.length">
|
304
305
|
<ResetButton @click="$emit('on-reset-filters')">
|
305
|
-
<Icon :color="theme.colors.
|
306
|
+
<Icon :color="theme.colors.primary" :name="'update'" size="14px" />
|
306
307
|
<div>{{ $gettext('reset_filters') }}</div>
|
307
308
|
</ResetButton>
|
308
309
|
</ResetContainer>
|
@@ -475,7 +476,7 @@
|
|
475
476
|
margin-top: 20px;
|
476
477
|
align-self: center;
|
477
478
|
font-size: 13px;
|
478
|
-
color: ${(props) => props.theme.colors.
|
479
|
+
color: ${(props) => props.theme.colors.primary};
|
479
480
|
cursor: pointer;
|
480
481
|
`
|
481
482
|
|
@@ -143,6 +143,7 @@
|
|
143
143
|
background-color: ${(props) =>
|
144
144
|
props.backgroundColor ? props.backgroundColor : 'transparent'};
|
145
145
|
padding: ${(props) => (props.backgroundColor ? '3px' : '0')};
|
146
|
+
border-radius: 4px;
|
146
147
|
}
|
147
148
|
svg path:not(.fix) {
|
148
149
|
${({ theme, color }) => color && `fill: ${theme.colors[color] || color};`}
|
@@ -19,6 +19,7 @@
|
|
19
19
|
<TextWrapper :style="wrapperStyle">
|
20
20
|
<TextOverlay
|
21
21
|
ref="infoBox"
|
22
|
+
:app-theme="appTheme"
|
22
23
|
:image="image"
|
23
24
|
:style="boxStyle"
|
24
25
|
:width="infoBoxWidth"
|
@@ -36,7 +37,7 @@
|
|
36
37
|
</slot>
|
37
38
|
</span>
|
38
39
|
</TextOverlay>
|
39
|
-
<Arrow :image="image" :style="arrowStyle" />
|
40
|
+
<!-- <Arrow :image="image" :style="arrowStyle" /> -->
|
40
41
|
</TextWrapper>
|
41
42
|
</Teleport>
|
42
43
|
</PageContainer>
|
@@ -57,11 +58,14 @@
|
|
57
58
|
import styled from 'vue3-styled-components'
|
58
59
|
import theme from '../../assets/theme.js'
|
59
60
|
|
60
|
-
const
|
61
|
-
|
62
|
-
|
61
|
+
const TextOverlayAttrs = {
|
62
|
+
appTheme: String,
|
63
|
+
image: Boolean,
|
64
|
+
width: Number,
|
65
|
+
}
|
66
|
+
const TextOverlay = styled('div', TextOverlayAttrs)`
|
63
67
|
color: ${(props) =>
|
64
|
-
props.image ? props.theme.colors.grey1 : props.theme.colors.
|
68
|
+
props.image ? props.theme.colors.grey1 : props.theme.colors.black};
|
65
69
|
font-size: ${(props) => (props.image ? '12px' : '13px')};
|
66
70
|
border-radius: 4px;
|
67
71
|
padding: 10px;
|
@@ -82,16 +86,20 @@
|
|
82
86
|
}
|
83
87
|
`
|
84
88
|
|
85
|
-
const Arrow = styled('div')`
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
89
|
+
// const Arrow = styled('div')`
|
90
|
+
// position: absolute;
|
91
|
+
// width: 0;
|
92
|
+
// height: 0;
|
93
|
+
// border: 8px solid transparent;
|
94
|
+
// border-top-color: ${(props) =>
|
95
|
+
// props.image
|
96
|
+
// ? props.theme.colors.white
|
97
|
+
// : props.appTheme === 'dark'
|
98
|
+
// ? props.theme.colors.grey5
|
99
|
+
// : props.theme.colors.black};
|
100
|
+
// filter: ${(props) =>
|
101
|
+
// props.image ? 'drop-shadow(0 2px 2px rgba(0, 0, 0, 0.1))' : 'none'};
|
102
|
+
// `
|
95
103
|
|
96
104
|
const PageContainer = styled('div')`
|
97
105
|
display: inline-block;
|
@@ -113,7 +121,7 @@
|
|
113
121
|
components: {
|
114
122
|
IconComponent,
|
115
123
|
TextOverlay,
|
116
|
-
Arrow,
|
124
|
+
// Arrow,
|
117
125
|
PageContainer,
|
118
126
|
TextWrapper,
|
119
127
|
OverlayImage,
|
@@ -165,6 +173,11 @@
|
|
165
173
|
default: false,
|
166
174
|
required: false,
|
167
175
|
},
|
176
|
+
appTheme: {
|
177
|
+
type: String,
|
178
|
+
default: 'light', // light or dark
|
179
|
+
required: false,
|
180
|
+
},
|
168
181
|
},
|
169
182
|
setup(props) {
|
170
183
|
const isVisible = ref(false)
|
@@ -182,7 +195,11 @@
|
|
182
195
|
|
183
196
|
const textStyle = computed(() => ({
|
184
197
|
fontSize: props.image ? '12px' : '13px',
|
185
|
-
color: props.image
|
198
|
+
color: props.image
|
199
|
+
? theme.colors.grey1
|
200
|
+
: props.appTheme === 'dark'
|
201
|
+
? theme.colors.black
|
202
|
+
: theme.colors.white,
|
186
203
|
textAlign: props.image ? 'right' : 'left',
|
187
204
|
}))
|
188
205
|
|
@@ -312,7 +329,9 @@
|
|
312
329
|
overflowY: 'auto',
|
313
330
|
backgroundColor: props.image
|
314
331
|
? theme.colors.white
|
315
|
-
:
|
332
|
+
: props.appTheme === 'light'
|
333
|
+
? theme.colors.black
|
334
|
+
: theme.colors.grey5,
|
316
335
|
}
|
317
336
|
}
|
318
337
|
|
@@ -354,7 +373,6 @@
|
|
354
373
|
}
|
355
374
|
|
356
375
|
const updatePosition = async () => {
|
357
|
-
console.log('updatePosition')
|
358
376
|
if (!infoBox.value || !textContent.value) return
|
359
377
|
|
360
378
|
// First make the content visible but hidden to get accurate measurements
|
@@ -25,6 +25,7 @@
|
|
25
25
|
<InfoText
|
26
26
|
v-if="labelInfoText"
|
27
27
|
:align-arrow="labelInfoAlign"
|
28
|
+
:app-theme="appTheme"
|
28
29
|
:text="labelInfoText"
|
29
30
|
/>
|
30
31
|
</LabelWrapper>
|
@@ -474,6 +475,10 @@
|
|
474
475
|
},
|
475
476
|
inheritAttrs: false,
|
476
477
|
props: {
|
478
|
+
appTheme: {
|
479
|
+
type: String,
|
480
|
+
required: false,
|
481
|
+
},
|
477
482
|
placeholder: {
|
478
483
|
type: String,
|
479
484
|
required: false,
|
@@ -21,6 +21,7 @@
|
|
21
21
|
<InfoText
|
22
22
|
v-if="infoTextMessage != ''"
|
23
23
|
:align-arrow="infoTextAlign"
|
24
|
+
:app-theme="appTheme"
|
24
25
|
data-test-id="info_text_message"
|
25
26
|
:size="fontSize ? fontSize : '16px'"
|
26
27
|
:text="infoTextMessage"
|
@@ -263,6 +264,11 @@
|
|
263
264
|
default: '',
|
264
265
|
type: String,
|
265
266
|
},
|
267
|
+
appTheme: {
|
268
|
+
type: String,
|
269
|
+
required: false,
|
270
|
+
default: 'light',
|
271
|
+
},
|
266
272
|
alignItems: {
|
267
273
|
required: false,
|
268
274
|
default: 'horizontal',
|
@@ -13,27 +13,49 @@
|
|
13
13
|
@click="$emit('tab-click', { activeKey: item.key })"
|
14
14
|
>
|
15
15
|
<IconContainer :is-active="activeTab === item.key">
|
16
|
-
<Icon
|
16
|
+
<Icon
|
17
|
+
:color="
|
18
|
+
activeTab === item.key
|
19
|
+
? theme.colors.white
|
20
|
+
: theme.colors.primary
|
21
|
+
"
|
22
|
+
cursor="pointer"
|
23
|
+
:name="item.icon"
|
24
|
+
size="18px"
|
25
|
+
/>
|
17
26
|
</IconContainer>
|
18
|
-
<ListText
|
27
|
+
<ListText :is-active="activeTab === item.key">{{
|
28
|
+
$gettext(item.label)
|
29
|
+
}}</ListText>
|
19
30
|
</ListItem>
|
20
31
|
<CollapseWrapper v-else :key="idx + item.key">
|
21
32
|
<CollapseContainer
|
22
33
|
:data-id="`sub_menu_settings_${item.key}`"
|
34
|
+
:is-active="activeParentTab === item.key"
|
23
35
|
@click="toggleActiveDropdown(item.key)"
|
24
36
|
>
|
25
37
|
<IconContainer :is-active="activeParentTab === item.key">
|
26
38
|
<Icon
|
27
|
-
color="
|
39
|
+
:color="
|
40
|
+
activeParentTab === item.key
|
41
|
+
? theme.colors.white
|
42
|
+
: theme.colors.primary
|
43
|
+
"
|
28
44
|
cursor="pointer"
|
29
45
|
:name="item.icon"
|
30
46
|
size="18px"
|
31
47
|
/>
|
32
48
|
</IconContainer>
|
33
|
-
<ListText
|
49
|
+
<ListText :is-active="activeTab === item.key">{{
|
50
|
+
$gettext(item.label)
|
51
|
+
}}</ListText>
|
34
52
|
<ArrowContainer>
|
35
53
|
<Icon
|
36
|
-
color="
|
54
|
+
:color="
|
55
|
+
activeDropdown === item.key
|
56
|
+
? theme.colors.white
|
57
|
+
: theme.colors.primary
|
58
|
+
"
|
37
59
|
:name="activeDropdown === item.key ? 'arrow_up' : 'arrow_down'"
|
38
60
|
size="10px"
|
39
61
|
/>
|
@@ -66,7 +88,7 @@
|
|
66
88
|
@click="$emit('on-logout')"
|
67
89
|
>
|
68
90
|
<RotateIcon
|
69
|
-
color="
|
91
|
+
:color="theme.colors.primary"
|
70
92
|
cursor="pointer"
|
71
93
|
name="initial_situation"
|
72
94
|
size="18px"
|
@@ -81,16 +103,17 @@
|
|
81
103
|
import styled from 'vue3-styled-components'
|
82
104
|
import Icon from '../icon'
|
83
105
|
import Spinner from '../spinner'
|
106
|
+
import theme from '@/assets/theme.js'
|
84
107
|
|
85
108
|
const PageAttrs = { isLoading: Boolean }
|
86
109
|
const PageContainer = styled('div', PageAttrs)`
|
87
|
-
background-color: ${(props) =>
|
88
|
-
props.isLoading ? props.theme.colors.white : props.theme.colors.grey6};
|
110
|
+
background-color: ${(props) => props.theme.colors.white};
|
89
111
|
padding: 14px 12px;
|
90
112
|
min-width: 220px;
|
91
113
|
display: flex;
|
92
114
|
flex-direction: column;
|
93
115
|
justify-content: space-between;
|
116
|
+
border-right: 1px solid rgba(89, 0, 204, 0.2);
|
94
117
|
`
|
95
118
|
|
96
119
|
const ListContainer = styled.div`
|
@@ -109,17 +132,19 @@
|
|
109
132
|
padding: 4px;
|
110
133
|
border-radius: 6px;
|
111
134
|
background-color: ${(props) =>
|
112
|
-
props.isActive ?
|
135
|
+
props.isActive ? props.theme.colors.primary : ''};
|
113
136
|
|
114
137
|
:hover {
|
115
|
-
background-color: rgba(
|
138
|
+
background-color: rgba(89, 0, 204, 0.2);
|
116
139
|
}
|
117
140
|
`
|
118
141
|
|
119
|
-
const
|
142
|
+
const ListTextAttrs = { isActive: Boolean }
|
143
|
+
const ListText = styled('div', ListTextAttrs)`
|
120
144
|
font-size: 16px;
|
121
145
|
font-weight: 700;
|
122
|
-
color: ${(props) =>
|
146
|
+
color: ${(props) =>
|
147
|
+
props.isActive ? props.theme.colors.white : props.theme.colors.primary};
|
123
148
|
`
|
124
149
|
|
125
150
|
const IconContainer = styled('div', IconAttrs)`
|
@@ -128,18 +153,16 @@
|
|
128
153
|
justify-items: center;
|
129
154
|
width: 32px;
|
130
155
|
height: 32px;
|
131
|
-
background-color: ${(props) =>
|
132
|
-
props.isActive ? props.theme.colors.red : 'rgba(255, 255, 255, 0.2)'};
|
133
156
|
border-radius: 6px;
|
134
157
|
|
135
158
|
${({ isButton = false }) =>
|
136
159
|
isButton &&
|
137
160
|
`
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
161
|
+
cursor: pointer;
|
162
|
+
&:hover {
|
163
|
+
background-color: rgba(89, 0, 204, 0.2);
|
164
|
+
}
|
165
|
+
`}
|
143
166
|
`
|
144
167
|
|
145
168
|
const SpinnerContainer = styled.div`
|
@@ -159,7 +182,7 @@
|
|
159
182
|
const AppVersion = styled.p`
|
160
183
|
font-size: 11px;
|
161
184
|
line-height: 13px;
|
162
|
-
color: ${(props) => props.theme.colors.
|
185
|
+
color: ${(props) => props.theme.colors.primary};
|
163
186
|
margin-right: 6px;
|
164
187
|
`
|
165
188
|
|
@@ -173,20 +196,19 @@
|
|
173
196
|
margin-left: 65px;
|
174
197
|
padding: 8px;
|
175
198
|
border-radius: 6px;
|
176
|
-
color: ${(props) =>
|
199
|
+
color: ${(props) =>
|
200
|
+
props.isActive ? props.theme.colors.white : props.theme.colors.primary};
|
177
201
|
font-weight: 700;
|
178
|
-
${(
|
179
|
-
isActive
|
180
|
-
`
|
181
|
-
background: rgba(255, 255, 255, 0.1);
|
182
|
-
`}
|
202
|
+
background: ${(props) =>
|
203
|
+
props.isActive ? props.theme.colors.primary : ''};
|
183
204
|
|
184
205
|
&:hover {
|
185
|
-
background: rgba(
|
206
|
+
background: rgba(89, 0, 204, 0.2);
|
186
207
|
}
|
187
208
|
`
|
188
209
|
|
189
|
-
const
|
210
|
+
const CollapseContainerAttrs = { isActive: Boolean }
|
211
|
+
const CollapseContainer = styled('div', CollapseContainerAttrs)`
|
190
212
|
display: grid;
|
191
213
|
grid-template-columns: auto 1fr auto;
|
192
214
|
grid-gap: 20px;
|
@@ -194,8 +216,16 @@
|
|
194
216
|
border-radius: 6px;
|
195
217
|
align-items: center;
|
196
218
|
cursor: pointer;
|
219
|
+
background: ${(props) =>
|
220
|
+
props.isActive ? props.theme.colors.primary : ''};
|
221
|
+
|
197
222
|
&:hover {
|
198
|
-
background: rgba(
|
223
|
+
background: rgba(89, 0, 204, 0.2);
|
224
|
+
}
|
225
|
+
|
226
|
+
div {
|
227
|
+
color: ${(props) =>
|
228
|
+
props.isActive ? props.theme.colors.white : props.theme.colors.primary};
|
199
229
|
}
|
200
230
|
`
|
201
231
|
|
@@ -252,6 +282,7 @@
|
|
252
282
|
data() {
|
253
283
|
return {
|
254
284
|
activeDropdown: null,
|
285
|
+
theme,
|
255
286
|
}
|
256
287
|
},
|
257
288
|
mounted() {
|
@@ -72,11 +72,11 @@
|
|
72
72
|
${(props) =>
|
73
73
|
props.isWhite ? props.theme.colors.grey5 : props.theme.colors.white};
|
74
74
|
border-top-color: ${(props) =>
|
75
|
-
props.isWhite ? props.theme.colors.white : props.theme.colors.
|
75
|
+
props.isWhite ? props.theme.colors.white : props.theme.colors.primary};
|
76
76
|
border-right-color: ${(props) =>
|
77
|
-
props.isWhite ? props.theme.colors.white : props.theme.colors.
|
77
|
+
props.isWhite ? props.theme.colors.white : props.theme.colors.primary};
|
78
78
|
border-bottom-color: ${(props) =>
|
79
|
-
props.isWhite ? props.theme.colors.white : props.theme.colors.
|
79
|
+
props.isWhite ? props.theme.colors.white : props.theme.colors.primary};
|
80
80
|
animation: spin 1s linear infinite;
|
81
81
|
transform: rotate(90deg);
|
82
82
|
|
@@ -91,7 +91,7 @@
|
|
91
91
|
}
|
92
92
|
|
93
93
|
::-webkit-scrollbar-thumb {
|
94
|
-
border-bottom: 10px solid ${(props) => props.theme.colors.
|
94
|
+
border-bottom: 10px solid ${(props) => props.theme.colors.primary}; // width of the actual scrollbar
|
95
95
|
border-radius: 4px;
|
96
96
|
}
|
97
97
|
`
|
@@ -154,7 +154,7 @@
|
|
154
154
|
|
155
155
|
th {
|
156
156
|
padding: 11px 15px;
|
157
|
-
background-color: ${(props) => props.theme.colors.
|
157
|
+
background-color: ${(props) => props.theme.colors.grey5};
|
158
158
|
cursor: auto;
|
159
159
|
height: 40px;
|
160
160
|
|