@eturnity/eturnity_reusable_components 7.18.0-qa-dev03.0 → 7.20.0--EPDM-10564.1
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/babel.config.js +2 -4
- package/package.json +18 -23
- package/src/App.vue +2 -2
- package/src/assets/svgIcons/split.svg +88 -6
- 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/card/index.vue +25 -24
- package/src/components/deleteIcon/DeleteIcon.stories.js +7 -7
- package/src/components/deleteIcon/index.vue +47 -30
- 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 +59 -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 +2 -2
- package/src/components/inputs/checkbox/index.vue +21 -6
- package/src/components/inputs/inputNumber/index.vue +10 -10
- 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 +295 -67
- package/src/components/inputs/select/option/index.vue +49 -12
- 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/markerItem/index.vue +86 -0
- 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 +13 -18
- package/src/components/pagination/index.vue +3 -3
- 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 +35 -45
- 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/anchor.svg +0 -18
- package/src/assets/svgIcons/flatten_roof.svg +0 -20
@@ -12,8 +12,12 @@
|
|
12
12
|
@mouseover="hoverHandler"
|
13
13
|
:cursorType="cursorType"
|
14
14
|
:isDisabled="isDisabled"
|
15
|
+
:disabledBgColor="disabledBgColor"
|
16
|
+
:disabledTextColor="disabledTextColor"
|
15
17
|
:backgroundColor="colorMode == 'dark' ? '#000000' : backgroundColor"
|
16
18
|
:title="hoverText"
|
19
|
+
:minWidth="minWidth"
|
20
|
+
:padding="padding"
|
17
21
|
>
|
18
22
|
<slot></slot>
|
19
23
|
</optionContainer>
|
@@ -22,12 +26,16 @@
|
|
22
26
|
<script>
|
23
27
|
// import selectButton from './selectButton'
|
24
28
|
// import selectDropdown from './selectDropDown'
|
25
|
-
import styled from '
|
29
|
+
import styled from 'vue3-styled-components'
|
26
30
|
const optionProps = {
|
27
31
|
isDisabled: Boolean,
|
28
32
|
hoveredBgColor: String,
|
29
33
|
cursorType: String,
|
30
|
-
backgroundColor: String
|
34
|
+
backgroundColor: String,
|
35
|
+
minWidth: String,
|
36
|
+
disabledBgColor: String,
|
37
|
+
disabledTextColor: String,
|
38
|
+
padding: String
|
31
39
|
}
|
32
40
|
const optionContainer = styled('div', optionProps)`
|
33
41
|
display: flex;
|
@@ -35,23 +43,38 @@ const optionContainer = styled('div', optionProps)`
|
|
35
43
|
flex-direction: row;
|
36
44
|
justify-content: space-between;
|
37
45
|
align-items: center;
|
38
|
-
padding:
|
46
|
+
padding: ${(props) => props.padding};
|
39
47
|
gap: 14px;
|
40
48
|
width: 100%;
|
49
|
+
min-width: ${(props) => (props.minWidth ? props.minWidth : '100%')};
|
41
50
|
background-color: ${(props) =>
|
42
|
-
props.
|
51
|
+
props.isDisabled
|
52
|
+
? props.theme.colors[props.disabledBgColor]
|
53
|
+
? props.theme.colors[props.disabledBgColor]
|
54
|
+
: props.disabledBgColor
|
55
|
+
: props.theme.colors[props.backgroundColor]
|
43
56
|
? props.theme.colors[props.backgroundColor]
|
44
|
-
: props.backgroundColor};
|
57
|
+
: props.backgroundColor} !important;
|
45
58
|
box-sizing: inherit;
|
46
59
|
background-color: ${(props) =>
|
47
60
|
props.theme.colors[props.backgroundColor]
|
48
61
|
? props.theme.colors[props.backgroundColor]
|
49
62
|
: props.backgroundColor};
|
50
63
|
color: ${(props) =>
|
51
|
-
props.isDisabled
|
64
|
+
props.isDisabled
|
65
|
+
? !!props.disabledTextColor
|
66
|
+
? props.theme.colors[props.disabledTextColor]
|
67
|
+
? props.theme.colors[props.disabledTextColor]
|
68
|
+
: props.disabledTextColor
|
69
|
+
: props.theme.colors.grey3
|
70
|
+
: 'inherit'};
|
52
71
|
&:hover {
|
53
72
|
background-color: ${(props) =>
|
54
|
-
props.
|
73
|
+
!!props.disabledTextColor && props.isDisabled
|
74
|
+
? props.theme.colors[props.disabledBgColor]
|
75
|
+
? props.theme.colors[props.disabledBgColor]
|
76
|
+
: props.disabledBgColor
|
77
|
+
: props.theme.colors[props.hoveredBgColor]
|
55
78
|
? props.theme.colors[props.hoveredBgColor]
|
56
79
|
: props.hoveredBgColor} !important;
|
57
80
|
}
|
@@ -59,7 +82,7 @@ const optionContainer = styled('div', optionProps)`
|
|
59
82
|
|
60
83
|
export default {
|
61
84
|
name: 'RCoption',
|
62
|
-
|
85
|
+
emits: ['option-hovered', 'option-selected'],
|
63
86
|
props: {
|
64
87
|
value: {
|
65
88
|
required: true
|
@@ -73,7 +96,7 @@ export default {
|
|
73
96
|
},
|
74
97
|
cursorType: {
|
75
98
|
required: false,
|
76
|
-
default: '
|
99
|
+
default: 'pointer'
|
77
100
|
},
|
78
101
|
backgroundColor: {
|
79
102
|
required: false,
|
@@ -85,21 +108,35 @@ export default {
|
|
85
108
|
isDisabled: {
|
86
109
|
required: false,
|
87
110
|
default: false
|
111
|
+
},
|
112
|
+
minWidth: {
|
113
|
+
required: false
|
114
|
+
},
|
115
|
+
disabledBgColor: {
|
116
|
+
required: false,
|
117
|
+
default: 'white'
|
118
|
+
},
|
119
|
+
disabledTextColor: {
|
120
|
+
required: false,
|
121
|
+
default: null
|
122
|
+
},
|
123
|
+
padding: {
|
124
|
+
required: false,
|
125
|
+
default: '12px 10px'
|
88
126
|
}
|
89
127
|
},
|
90
128
|
|
91
129
|
components: { optionContainer },
|
92
|
-
|
93
130
|
data() {
|
94
131
|
return {}
|
95
132
|
},
|
96
133
|
methods: {
|
97
|
-
clickHandler() {
|
134
|
+
clickHandler(e) {
|
98
135
|
if (this.isDisabled) {
|
99
136
|
// prevent emitter if the option is disabled
|
100
137
|
return
|
101
138
|
} else {
|
102
|
-
this.$parent.$emit('option-selected', this.value)
|
139
|
+
this.$parent.$emit('option-selected', this.value, e)
|
103
140
|
}
|
104
141
|
},
|
105
142
|
hoverHandler() {
|
@@ -21,8 +21,8 @@
|
|
21
21
|
// :minValue="10" //default is 0 if not specified
|
22
22
|
// :maxValue="500" //default is 100 if not specified
|
23
23
|
// />
|
24
|
-
import Slider from
|
25
|
-
import styled from
|
24
|
+
import Slider from '@vueform/slider'
|
25
|
+
import styled from 'vue3-styled-components'
|
26
26
|
|
27
27
|
const Container = styled.div`
|
28
28
|
margin: 16px 0 16px 21px;
|
@@ -81,45 +81,45 @@ const NumberText = styled.div`
|
|
81
81
|
`
|
82
82
|
|
83
83
|
export default {
|
84
|
-
name:
|
84
|
+
name: 'slider',
|
85
85
|
components: {
|
86
86
|
Slider,
|
87
87
|
Container,
|
88
|
-
NumberText
|
88
|
+
NumberText
|
89
89
|
},
|
90
90
|
props: {
|
91
91
|
value: {
|
92
92
|
required: false,
|
93
|
-
default: 0
|
93
|
+
default: 0
|
94
94
|
},
|
95
95
|
unit: {
|
96
96
|
required: false,
|
97
|
-
default:
|
97
|
+
default: ''
|
98
98
|
},
|
99
99
|
minValue: {
|
100
100
|
required: false,
|
101
|
-
default: 0
|
101
|
+
default: 0
|
102
102
|
},
|
103
103
|
maxValue: {
|
104
104
|
required: false,
|
105
|
-
default: 100
|
106
|
-
}
|
105
|
+
default: 100
|
106
|
+
}
|
107
107
|
},
|
108
108
|
methods: {
|
109
109
|
onChange(value) {
|
110
|
-
this.$emit(
|
111
|
-
}
|
110
|
+
this.$emit('change', value)
|
111
|
+
}
|
112
112
|
},
|
113
113
|
mounted() {
|
114
114
|
// This is to add the 3 white lines to the slider button
|
115
|
-
let slider = document.querySelector(
|
116
|
-
let span1 = document.createElement(
|
117
|
-
let span2 = document.createElement(
|
118
|
-
let span3 = document.createElement(
|
115
|
+
let slider = document.querySelector('.slider-touch-area')
|
116
|
+
let span1 = document.createElement('span')
|
117
|
+
let span2 = document.createElement('span')
|
118
|
+
let span3 = document.createElement('span')
|
119
119
|
slider.appendChild(span1)
|
120
120
|
slider.appendChild(span2)
|
121
121
|
slider.appendChild(span3)
|
122
|
-
}
|
122
|
+
}
|
123
123
|
}
|
124
124
|
</script>
|
125
125
|
|
@@ -45,7 +45,7 @@
|
|
45
45
|
>
|
46
46
|
<label-text :size="size" :fontColor="fontColor">{{ label }}</label-text>
|
47
47
|
<info-text
|
48
|
-
@click.
|
48
|
+
@click.stop
|
49
49
|
v-if="infoTextMessage"
|
50
50
|
:text="infoTextMessage"
|
51
51
|
/>
|
@@ -70,7 +70,7 @@
|
|
70
70
|
// :disabled="false"
|
71
71
|
// />
|
72
72
|
|
73
|
-
import styled from '
|
73
|
+
import styled from 'vue3-styled-components'
|
74
74
|
import InfoText from '../../infoText'
|
75
75
|
import theme from '../../../assets/theme'
|
76
76
|
const Container = styled.div``
|
@@ -44,7 +44,7 @@
|
|
44
44
|
>
|
45
45
|
<label-text :size="size" :fontColor="fontColor">{{ label }}</label-text>
|
46
46
|
<info-text
|
47
|
-
@click.
|
47
|
+
@click.stop
|
48
48
|
v-if="infoTextMessage"
|
49
49
|
:text="infoTextMessage"
|
50
50
|
/>
|
@@ -70,7 +70,7 @@
|
|
70
70
|
// data-id="test_data_id"
|
71
71
|
// />
|
72
72
|
|
73
|
-
import styled from '
|
73
|
+
import styled from 'vue3-styled-components'
|
74
74
|
import InfoText from '../../infoText'
|
75
75
|
|
76
76
|
const Container = styled.div`
|
@@ -1,29 +1,25 @@
|
|
1
1
|
<template>
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
:alignArrow="infoTextAlign"
|
18
|
-
/>
|
19
|
-
</label-wrapper>
|
2
|
+
<label-wrapper :labelAlign="labelAlign">
|
3
|
+
<input-label :labelFontColor="labelFontColor" :fontSize="fontSize">
|
4
|
+
<slot></slot>
|
5
|
+
<optionalLabel v-if="labelOptional"
|
6
|
+
>({{ $gettext('Optional') }})</optionalLabel
|
7
|
+
></input-label
|
8
|
+
>
|
9
|
+
<info-text
|
10
|
+
v-if="infoTextMessage"
|
11
|
+
:text="infoTextMessage"
|
12
|
+
borderColor="#ccc"
|
13
|
+
:size="fontSize ? fontSize : '16px'"
|
14
|
+
:alignArrow="infoTextAlign"
|
15
|
+
/>
|
16
|
+
</label-wrapper>
|
20
17
|
</template>
|
21
18
|
|
22
19
|
<script>
|
23
|
-
import styled from '
|
20
|
+
import styled from 'vue3-styled-components'
|
24
21
|
import InfoText from '../infoText'
|
25
22
|
|
26
|
-
|
27
23
|
const labelAttrs = { fontSize: String, labelFontColor: String }
|
28
24
|
const InputLabel = styled('div', labelAttrs)`
|
29
25
|
color: ${(props) =>
|
@@ -40,15 +36,15 @@ const optionalLabel = styled.span`
|
|
40
36
|
font-weight: 300;
|
41
37
|
`
|
42
38
|
|
43
|
-
const LabelWrapper = styled('div',{labelAlign:String})`
|
44
|
-
${props=>
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
${props=>
|
49
|
-
|
50
|
-
|
51
|
-
|
39
|
+
const LabelWrapper = styled('div', { labelAlign: String })`
|
40
|
+
${(props) =>
|
41
|
+
props.labelAlign == 'horizontal'
|
42
|
+
? 'display: inline-grid;'
|
43
|
+
: 'display: grid;'}
|
44
|
+
${(props) =>
|
45
|
+
props.labelAlign == 'horizontal'
|
46
|
+
? 'margin-right: 10px;'
|
47
|
+
: 'margin-bottom: 8px;'}
|
52
48
|
vertical-align: center;
|
53
49
|
grid-template-columns: auto auto;
|
54
50
|
grid-gap: 12px;
|
@@ -97,7 +93,7 @@ export default {
|
|
97
93
|
labelAlign: {
|
98
94
|
required: false,
|
99
95
|
default: 'vertical'
|
100
|
-
}
|
101
|
-
}
|
96
|
+
}
|
97
|
+
}
|
102
98
|
}
|
103
99
|
</script>
|
@@ -0,0 +1,86 @@
|
|
1
|
+
<template>
|
2
|
+
<page-container>
|
3
|
+
<marker-container
|
4
|
+
:backgroundColor="backgroundColor"
|
5
|
+
:hasIcon="!!iconName"
|
6
|
+
:cursor="cursor"
|
7
|
+
>
|
8
|
+
<icon
|
9
|
+
v-if="!!iconName"
|
10
|
+
:name="iconName"
|
11
|
+
color="white"
|
12
|
+
size="10px"
|
13
|
+
:cursor="cursor"
|
14
|
+
/>
|
15
|
+
<span>{{ label }}</span>
|
16
|
+
</marker-container>
|
17
|
+
</page-container>
|
18
|
+
</template>
|
19
|
+
|
20
|
+
<script>
|
21
|
+
// import MarkerItem from "@eturnity/eturnity_reusable_components/src/components/markerItem"
|
22
|
+
// To use:
|
23
|
+
// <marker-item
|
24
|
+
// label="Label"
|
25
|
+
// backgroundColor="#ab5348"
|
26
|
+
// iconName="icon_name"
|
27
|
+
// cursor="pointer"
|
28
|
+
// />
|
29
|
+
|
30
|
+
import styled from 'vue-styled-components'
|
31
|
+
import Icon from '../icon'
|
32
|
+
|
33
|
+
const PageContainer = styled.div`
|
34
|
+
display: flex;
|
35
|
+
align-items: center;
|
36
|
+
font-size: 12px;
|
37
|
+
line-height: 14px;
|
38
|
+
`
|
39
|
+
|
40
|
+
const MarkerAttrs = {
|
41
|
+
backgroundColor: String,
|
42
|
+
hasIcon: Boolean,
|
43
|
+
cursor: String
|
44
|
+
}
|
45
|
+
const MarkerContainer = styled('div', MarkerAttrs)`
|
46
|
+
display: grid;
|
47
|
+
grid-template-columns: ${(props) => (props.hasIcon ? 'auto 1fr' : '1fr')};
|
48
|
+
grid-gap: 5px;
|
49
|
+
position: relative;
|
50
|
+
align-items: center;
|
51
|
+
padding: 2px 7px;
|
52
|
+
color: ${(props) => props.theme.colors.white};
|
53
|
+
background-color: ${(props) =>
|
54
|
+
props.backgroundColor ? props.backgroundColor : props.theme.colors.grey3};
|
55
|
+
border: 1px solid
|
56
|
+
${(props) =>
|
57
|
+
props.backgroundColor ? props.backgroundColor : props.theme.colors.grey3};
|
58
|
+
border-radius: 4px;
|
59
|
+
white-space: nowrap;
|
60
|
+
cursor: ${(props) => (props.isEditionAllowed ? 'pointer' : props.cursor)};
|
61
|
+
`
|
62
|
+
|
63
|
+
export default {
|
64
|
+
name: 'project-marker',
|
65
|
+
components: {
|
66
|
+
PageContainer,
|
67
|
+
MarkerContainer,
|
68
|
+
Icon
|
69
|
+
},
|
70
|
+
props: {
|
71
|
+
backgroundColor: {
|
72
|
+
required: false
|
73
|
+
},
|
74
|
+
iconName: {
|
75
|
+
required: false
|
76
|
+
},
|
77
|
+
label: {
|
78
|
+
required: true
|
79
|
+
},
|
80
|
+
cursor: {
|
81
|
+
required: false,
|
82
|
+
default: 'default'
|
83
|
+
}
|
84
|
+
}
|
85
|
+
}
|
86
|
+
</script>
|
@@ -10,11 +10,7 @@
|
|
10
10
|
<content-container :visible="!isLoading">
|
11
11
|
<slot />
|
12
12
|
</content-container>
|
13
|
-
<close-button
|
14
|
-
v-if="!hideClose"
|
15
|
-
@click.native="onCloseModal()"
|
16
|
-
class="close"
|
17
|
-
/>
|
13
|
+
<close-button v-if="!hideClose" @click="onCloseModal()" class="close" />
|
18
14
|
</modal-container>
|
19
15
|
</page-wrapper>
|
20
16
|
</template>
|
@@ -30,7 +26,7 @@
|
|
30
26
|
// <div>Data....</div>
|
31
27
|
// </modal>
|
32
28
|
|
33
|
-
import styled from '
|
29
|
+
import styled from 'vue3-styled-components'
|
34
30
|
import CloseButton from '../../buttons/closeButton'
|
35
31
|
import Spinner from '../../spinner'
|
36
32
|
|
@@ -22,7 +22,7 @@
|
|
22
22
|
</template>
|
23
23
|
|
24
24
|
<script>
|
25
|
-
import styled from '
|
25
|
+
import styled from 'vue3-styled-components'
|
26
26
|
import InfoText from '../infoText'
|
27
27
|
const TabAttr = {
|
28
28
|
active: Boolean,
|
@@ -31,12 +31,12 @@ const TabAttr = {
|
|
31
31
|
}
|
32
32
|
|
33
33
|
const bottomLine = styled('div')`
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
position: absolute;
|
35
|
+
bottom: 0;
|
36
|
+
left: 0;
|
37
|
+
height: 1px;
|
38
|
+
width: 100%;
|
39
|
+
background-color: ${(props) => props.theme.colors.grey3};
|
40
40
|
`
|
41
41
|
const roofTabWrap = styled('div')`
|
42
42
|
display: flex;
|
@@ -48,17 +48,22 @@ const roofTabWrap = styled('div')`
|
|
48
48
|
const Uppercase = styled('span')`
|
49
49
|
text-transform: uppercase;
|
50
50
|
`
|
51
|
-
const Option = styled('div',TabAttr)`
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
51
|
+
const Option = styled('div', TabAttr)`
|
52
|
+
font-size: 13px;
|
53
|
+
font-weight: 700;
|
54
|
+
display: flex;
|
55
|
+
justify-content: center;
|
56
|
+
flex-direction: row;
|
57
|
+
gap: 10px;
|
58
|
+
color: ${(props) =>
|
59
|
+
props.textColor
|
60
|
+
? props.theme.colors[props.textColor]
|
61
|
+
? props.theme.colors[props.textColor]
|
62
|
+
: props.textColor
|
63
|
+
: props.isDisabled
|
64
|
+
? props.theme.colors.grey2
|
65
|
+
: props.theme.colors.black};
|
66
|
+
`
|
62
67
|
const Tab = styled('div', TabAttr)`
|
63
68
|
padding: 16px 10px;
|
64
69
|
margin-right: 5px;
|
@@ -67,7 +72,8 @@ const Tab = styled('div', TabAttr)`
|
|
67
72
|
z-index: 10;
|
68
73
|
border-bottom: 2px solid
|
69
74
|
${(props) => (props.active ? props.theme.colors.primary : 'transparent')};
|
70
|
-
background-color: ${(props) =>
|
75
|
+
background-color: ${(props) =>
|
76
|
+
props.isDisabled ? props.theme.colors.grey5 : 'transparent'};
|
71
77
|
transition: 0.2s ease;
|
72
78
|
cursor: ${(props) => (props.isDisabled ? 'not-allowed' : 'pointer')};
|
73
79
|
min-width: 140px;
|
@@ -76,7 +82,8 @@ const Tab = styled('div', TabAttr)`
|
|
76
82
|
justify-content: space-between;
|
77
83
|
min-height: 55px;
|
78
84
|
&:hover {
|
79
|
-
border-color: ${(props) =>
|
85
|
+
border-color: ${(props) =>
|
86
|
+
props.isDisabled ? props.theme.colors.grey2 : props.theme.colors.primary};
|
80
87
|
}
|
81
88
|
`
|
82
89
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
// color="red"
|
19
19
|
// infoText="My info text"
|
20
20
|
// />
|
21
|
-
import styled from "
|
21
|
+
import styled from "vue3-styled-components"
|
22
22
|
import InfoText from "../infoText"
|
23
23
|
|
24
24
|
const textAttrs = { color: String, hasInfoText: Boolean, marginBottom: String }
|
@@ -3,11 +3,7 @@
|
|
3
3
|
<title-text :color="color" :fontSize="fontSize" :uppercase="uppercase">
|
4
4
|
{{ text }}
|
5
5
|
</title-text>
|
6
|
-
<info-text
|
7
|
-
v-if="!!infoText"
|
8
|
-
:text="infoText"
|
9
|
-
:alignArrow="infoAlign"
|
10
|
-
/>
|
6
|
+
<info-text v-if="!!infoText" :text="infoText" :alignArrow="infoAlign" />
|
11
7
|
</title-wrap>
|
12
8
|
</template>
|
13
9
|
|
@@ -18,16 +14,16 @@
|
|
18
14
|
// text="My Page Title"
|
19
15
|
// color="red"
|
20
16
|
// />
|
21
|
-
import styled from
|
22
|
-
import InfoText from
|
17
|
+
import styled from 'vue3-styled-components'
|
18
|
+
import InfoText from '../infoText'
|
23
19
|
|
24
20
|
const wrapAttrs = { hasInfoText: Boolean }
|
25
|
-
const TitleWrap = styled(
|
21
|
+
const TitleWrap = styled('div', wrapAttrs)`
|
26
22
|
display: grid;
|
27
23
|
align-items: center;
|
28
24
|
grid-gap: 12px;
|
29
25
|
grid-template-columns: ${(props) =>
|
30
|
-
props.hasInfoText ?
|
26
|
+
props.hasInfoText ? 'auto auto 1fr' : '1fr'};
|
31
27
|
margin-bottom: 20px;
|
32
28
|
`
|
33
29
|
|
@@ -35,12 +31,12 @@ const titleAttrs = { color: String, fontSize: String, uppercase: Boolean }
|
|
35
31
|
const TitleText = styled('span', titleAttrs)`
|
36
32
|
color: ${(props) => (props.color ? props.color : props.theme.colors.black)};
|
37
33
|
font-weight: bold;
|
38
|
-
font-size: ${(props) => (props.fontSize ? props.fontSize : '
|
34
|
+
font-size: ${(props) => (props.fontSize ? props.fontSize : '18px')};
|
39
35
|
text-transform: ${(props) => (props.uppercase ? 'uppercase' : 'none')};
|
40
36
|
`
|
41
37
|
|
42
38
|
export default {
|
43
|
-
name:
|
39
|
+
name: 'page-title',
|
44
40
|
components: {
|
45
41
|
TitleText,
|
46
42
|
TitleWrap,
|
@@ -48,14 +44,13 @@ export default {
|
|
48
44
|
},
|
49
45
|
props: {
|
50
46
|
text: {
|
51
|
-
required: true
|
47
|
+
required: true
|
52
48
|
},
|
53
49
|
color: {
|
54
|
-
required: false
|
50
|
+
required: false
|
55
51
|
},
|
56
52
|
fontSize: {
|
57
|
-
required: false
|
58
|
-
default: '16px'
|
53
|
+
required: false
|
59
54
|
},
|
60
55
|
uppercase: {
|
61
56
|
required: false,
|
@@ -63,11 +58,11 @@ export default {
|
|
63
58
|
},
|
64
59
|
infoText: {
|
65
60
|
required: false,
|
66
|
-
default: null
|
61
|
+
default: null
|
67
62
|
},
|
68
63
|
infoAlign: {
|
69
|
-
required: false
|
64
|
+
required: false
|
70
65
|
}
|
71
|
-
}
|
66
|
+
}
|
72
67
|
}
|
73
68
|
</script>
|
@@ -70,12 +70,12 @@
|
|
70
70
|
</template>
|
71
71
|
|
72
72
|
<script>
|
73
|
-
import styled from '
|
73
|
+
import styled from 'vue3-styled-components'
|
74
74
|
import icon from '../icon'
|
75
75
|
import theme from '@/assets/theme.js'
|
76
76
|
|
77
77
|
const paginationWrapper = styled.nav`
|
78
|
-
color: ${(props) => props.theme.brightBlue};
|
78
|
+
color: ${(props) => props.theme.colors.brightBlue};
|
79
79
|
font-size: 13px;
|
80
80
|
display: flex;
|
81
81
|
flex-wrap: wrap;
|
@@ -95,7 +95,7 @@ const paginationLink = styled.div`
|
|
95
95
|
|
96
96
|
&.active {
|
97
97
|
color: #fff;
|
98
|
-
background-color: ${(props) => props.theme.brightBlue};
|
98
|
+
background-color: ${(props) => props.theme.colors.brightBlue};
|
99
99
|
padding: 7px 12px;
|
100
100
|
border-radius: 4px;
|
101
101
|
}
|