@eturnity/eturnity_reusable_components 7.20.0 → 7.22.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/babel.config.js +2 -4
- package/package.json +1 -2
- package/src/assets/svgIcons/clock_full.svg +3 -0
- package/src/assets/svgIcons/height_equalize.svg +3 -0
- package/src/assets/svgIcons/height_snap.svg +3 -0
- package/src/components/filter/filterSettings.vue +23 -4
- package/src/components/filter/index.vue +11 -0
- package/src/components/infoText/index.vue +1 -1
- package/src/components/inputs/checkbox/index.vue +12 -5
- package/src/components/inputs/inputNumber/index.vue +3 -3
- package/src/components/inputs/inputText/index.vue +1 -1
- package/src/components/inputs/select/index.vue +62 -14
- package/src/components/inputs/select/option/index.vue +6 -0
- package/src/components/inputs/textAreaInput/index.vue +1 -1
- package/src/components/markerItem/index.vue +86 -0
- package/src/components/pageTitle/index.vue +10 -15
- package/src/components/pagination/index.vue +5 -4
- package/src/components/projectMarker/index.vue +1 -1
- package/src/components/selectedOptions/index.vue +145 -0
- package/src/components/tableDropdown/index.vue +18 -7
package/babel.config.js
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@eturnity/eturnity_reusable_components",
|
3
|
-
"version": "7.
|
3
|
+
"version": "7.22.1",
|
4
4
|
"private": false,
|
5
5
|
"scripts": {
|
6
6
|
"dev": "vue-cli-service serve",
|
@@ -23,7 +23,6 @@
|
|
23
23
|
},
|
24
24
|
"devDependencies": {
|
25
25
|
"@babel/core": "7.12.16",
|
26
|
-
"@babel/eslint-parser": "7.12.16",
|
27
26
|
"@vue/cli-plugin-babel": "5.0.8",
|
28
27
|
"@vue/cli-plugin-eslint": "5.0.8",
|
29
28
|
"@vue/cli-service": "5.0.8",
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M5 10C7.76142 10 10 7.76142 10 5C10 2.23858 7.76142 0 5 0C2.23858 0 0 2.23858 0 5C0 7.76142 2.23858 10 5 10ZM5.875 5.05243V2.125H4.125V5.92743L6.19061 7.47663L7.24061 6.07663L5.875 5.05243Z" fill="white"/>
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.99482 2.7C4.49188 2.7 4.89482 2.29706 4.89482 1.8C4.89482 1.30294 4.49188 0.9 3.99482 0.9C3.49777 0.9 3.09482 1.30294 3.09482 1.8C3.09482 2.29706 3.49777 2.7 3.99482 2.7ZM5.79482 1.8C5.79482 2.50671 5.38756 3.11829 4.79492 3.41285V4H5.80557L4.00557 6L2.20557 4H3.19492L3.19492 3.41294C2.60218 3.11842 2.19482 2.50678 2.19482 1.8C2.19482 0.805887 3.00071 0 3.99482 0C4.98894 0 5.79482 0.805887 5.79482 1.8ZM10.8948 1.8C10.8948 2.29706 10.4919 2.7 9.99482 2.7C9.49777 2.7 9.09482 2.29706 9.09482 1.8C9.09482 1.30294 9.49777 0.9 9.99482 0.9C10.4919 0.9 10.8948 1.30294 10.8948 1.8ZM10.7949 3.41285C11.3876 3.11829 11.7948 2.50671 11.7948 1.8C11.7948 0.805887 10.9889 0 9.99482 0C9.00071 0 8.19482 0.805887 8.19482 1.8C8.19482 2.50678 8.60218 3.11842 9.19492 3.41294V4H8.20557L10.0056 6L11.8056 4H10.7949V3.41285ZM14 7.79999L0 7.79999V6.19999L14 6.19999V7.79999ZM7.00518 11.3C6.50812 11.3 6.10518 11.7029 6.10518 12.2C6.10518 12.6971 6.50812 13.1 7.00518 13.1C7.50223 13.1 7.90518 12.6971 7.90518 12.2C7.90518 11.7029 7.50223 11.3 7.00518 11.3ZM5.20518 12.2C5.20518 11.4933 5.61244 10.8817 6.20508 10.5872L6.20508 10H5.19443L6.99443 8L8.79443 10H7.80508V10.5871C8.39782 10.8816 8.80518 11.4932 8.80518 12.2C8.80518 13.1941 7.99929 14 7.00518 14C6.01106 14 5.20518 13.1941 5.20518 12.2Z" fill="#B2B9C5"/>
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 1.59997L14 1.59998V-2.44379e-05L0 -2.56618e-05V1.59997ZM6.10274 12.2C6.10274 11.7029 6.50568 11.3 7.00274 11.3C7.49979 11.3 7.90274 11.7029 7.90274 12.2C7.90274 12.6971 7.49979 13.1 7.00274 13.1C6.50568 13.1 6.10274 12.6971 6.10274 12.2ZM6.20264 10.5872C5.61 10.8817 5.20274 11.4933 5.20274 12.2C5.20274 13.1941 6.00862 14 7.00274 14C7.99685 14 8.80274 13.1941 8.80274 12.2C8.80274 11.4932 8.39538 10.8816 7.80264 10.5871L7.80264 4.65002H9.5L7 2.65002L4.5 4.65002H6.20264L6.20264 10.5872Z" fill="#B2B9C5"/>
|
3
|
+
</svg>
|
@@ -100,10 +100,12 @@
|
|
100
100
|
<option-title> {{ filter.selectedText }} </option-title>
|
101
101
|
</template>
|
102
102
|
<template #dropdown>
|
103
|
-
<dropdown-checkbox-container
|
103
|
+
<dropdown-checkbox-container
|
104
|
+
v-for="(filterOption, optionIdx) in filter.choices"
|
105
|
+
:key="optionIdx + 'optionIdx'"
|
106
|
+
@click.stop
|
107
|
+
>
|
104
108
|
<checkbox
|
105
|
-
v-for="(filterOption, optionIdx) in filter.choices"
|
106
|
-
:key="optionIdx + 'optionIdx'"
|
107
109
|
:label="filterOption.text"
|
108
110
|
:isChecked="filterOption.selected"
|
109
111
|
@on-event-handler="
|
@@ -268,6 +270,12 @@
|
|
268
270
|
:text="buttonText.cancel"
|
269
271
|
@click="$emit('on-cancel-view')"
|
270
272
|
/>
|
273
|
+
<reset-container v-if="!filterViews || !filterViews.length">
|
274
|
+
<reset-button @click="$emit('on-reset-filters')">
|
275
|
+
<icon :name="'update'" size="14px" :color="theme.colors.blue" />
|
276
|
+
<div>{{ $gettext('reset_filters') }}</div>
|
277
|
+
</reset-button>
|
278
|
+
</reset-container>
|
271
279
|
</button-container>
|
272
280
|
</container-wrapper>
|
273
281
|
</template>
|
@@ -329,6 +337,16 @@ const ButtonContainer = styled.div`
|
|
329
337
|
padding: 15px;
|
330
338
|
`
|
331
339
|
|
340
|
+
const ResetContainer = styled.div`
|
341
|
+
display: grid;
|
342
|
+
align-content: center;
|
343
|
+
margin-left: auto;
|
344
|
+
div {
|
345
|
+
margin-top: 0;
|
346
|
+
align-self: center;
|
347
|
+
}
|
348
|
+
`
|
349
|
+
|
332
350
|
const ColumnContainer = styled.div``
|
333
351
|
|
334
352
|
const DragContainer = styled.div`
|
@@ -376,7 +394,7 @@ const DropdownCheckboxContainer = styled.div`
|
|
376
394
|
display: grid;
|
377
395
|
gap: 6px;
|
378
396
|
width: 100%;
|
379
|
-
padding:
|
397
|
+
padding: 7px 10px;
|
380
398
|
background: ${(props) => props.theme.colors.grey5};
|
381
399
|
`
|
382
400
|
|
@@ -455,6 +473,7 @@ export default {
|
|
455
473
|
DeleteIcon,
|
456
474
|
UpperContainer,
|
457
475
|
ResetButton,
|
476
|
+
ResetContainer,
|
458
477
|
VueDatePicker
|
459
478
|
},
|
460
479
|
props: {
|
@@ -70,6 +70,9 @@ export default {
|
|
70
70
|
},
|
71
71
|
settingsTranslations: {
|
72
72
|
required: false
|
73
|
+
},
|
74
|
+
closeDropdown: {
|
75
|
+
required: false
|
73
76
|
}
|
74
77
|
},
|
75
78
|
data() {
|
@@ -122,6 +125,7 @@ export default {
|
|
122
125
|
this.$emit('on-filter-view-select', item)
|
123
126
|
},
|
124
127
|
onViewDelete(item) {
|
128
|
+
this.onToggleDropdown()
|
125
129
|
this.$emit('on-filter-view-delete', item)
|
126
130
|
},
|
127
131
|
onApplyCurrentView() {
|
@@ -138,6 +142,13 @@ export default {
|
|
138
142
|
},
|
139
143
|
beforeDestroy() {
|
140
144
|
document.removeEventListener('click', this.clickOutside)
|
145
|
+
},
|
146
|
+
watch: {
|
147
|
+
closeDropdown(newVal) {
|
148
|
+
if (newVal) {
|
149
|
+
this.isDropdownOpen = false
|
150
|
+
}
|
151
|
+
}
|
141
152
|
}
|
142
153
|
}
|
143
154
|
</script>
|
@@ -3,10 +3,11 @@
|
|
3
3
|
<container
|
4
4
|
:checkColor="checkColor"
|
5
5
|
:size="size"
|
6
|
-
:hasLabel="
|
6
|
+
:hasLabel="label && !!label.length"
|
7
7
|
:backgroundColor="backgroundColor"
|
8
8
|
:isChecked="isChecked"
|
9
9
|
:isDisabled="isDisabled"
|
10
|
+
:cursorType="cursorType"
|
10
11
|
>
|
11
12
|
<input-checkbox
|
12
13
|
type="checkbox"
|
@@ -17,7 +18,7 @@
|
|
17
18
|
<check-wrapper :hasLabel="hasLabel">
|
18
19
|
<span class="checkmark"></span>
|
19
20
|
</check-wrapper>
|
20
|
-
<label-text v-if="
|
21
|
+
<label-text v-if="label && !!label.length">{{ label }}</label-text>
|
21
22
|
</container>
|
22
23
|
</component-wrapper>
|
23
24
|
</template>
|
@@ -33,6 +34,7 @@
|
|
33
34
|
// size="small"
|
34
35
|
// backgroundColor="red"
|
35
36
|
// :isDisabled="true"
|
37
|
+
// cursorType="default"
|
36
38
|
// />
|
37
39
|
import styled from 'vue3-styled-components'
|
38
40
|
|
@@ -55,7 +57,8 @@ const containerAttrs = {
|
|
55
57
|
hasLabel: Boolean,
|
56
58
|
backgroundColor: String,
|
57
59
|
isChecked: Boolean,
|
58
|
-
isDisabled: Boolean
|
60
|
+
isDisabled: Boolean,
|
61
|
+
cursorType: String
|
59
62
|
}
|
60
63
|
const Container = styled('label', containerAttrs)`
|
61
64
|
display: grid;
|
@@ -64,7 +67,7 @@ const Container = styled('label', containerAttrs)`
|
|
64
67
|
align-content: center;
|
65
68
|
color: ${(props) => props.theme.colors.black};
|
66
69
|
position: relative;
|
67
|
-
cursor: ${(props) => (props.isDisabled ? 'not-allowed' :
|
70
|
+
cursor: ${(props) => (props.isDisabled ? 'not-allowed' : props.cursorType)};
|
68
71
|
font-size: 16px;
|
69
72
|
user-select: none;
|
70
73
|
|
@@ -89,7 +92,7 @@ const Container = styled('label', containerAttrs)`
|
|
89
92
|
: props.theme.colors.green
|
90
93
|
: props.isDisabled
|
91
94
|
? props.theme.colors.lightGray
|
92
|
-
:
|
95
|
+
: props.theme.colors.white};
|
93
96
|
border-radius: 4px;
|
94
97
|
border: 1px solid
|
95
98
|
${(props) =>
|
@@ -183,6 +186,10 @@ export default {
|
|
183
186
|
dataId: {
|
184
187
|
type: String,
|
185
188
|
default: ''
|
189
|
+
},
|
190
|
+
cursorType: {
|
191
|
+
type: String,
|
192
|
+
default: 'pointer'
|
186
193
|
}
|
187
194
|
},
|
188
195
|
computed: {
|
@@ -560,7 +560,7 @@ export default {
|
|
560
560
|
try {
|
561
561
|
evaluatedVal = this.onEvaluateCode(event)
|
562
562
|
} finally {
|
563
|
-
if (evaluatedVal) {
|
563
|
+
if (evaluatedVal && this.value != evaluatedVal) {
|
564
564
|
this.$emit('on-input', evaluatedVal)
|
565
565
|
}
|
566
566
|
}
|
@@ -646,10 +646,10 @@ export default {
|
|
646
646
|
}
|
647
647
|
},
|
648
648
|
initInteraction(e) {
|
649
|
+
this.focusInput()
|
650
|
+
e.preventDefault()
|
649
651
|
window.addEventListener('mousemove', this.interact, false)
|
650
652
|
window.addEventListener('mouseup', this.stopInteract, false)
|
651
|
-
e.preventDefault()
|
652
|
-
this.focusInput()
|
653
653
|
},
|
654
654
|
interact(e) {
|
655
655
|
e.preventDefault()
|
@@ -1,12 +1,14 @@
|
|
1
1
|
<template>
|
2
2
|
<Container
|
3
3
|
:selectWidth="selectWidth"
|
4
|
+
:noRelative="noRelative"
|
4
5
|
@mouseenter="mouseEnterHandler"
|
5
6
|
@mouseleave="mouseLeaveHandler"
|
6
7
|
>
|
7
8
|
<input-wrapper
|
8
9
|
:hasLabel="!!label && label.length > 0"
|
9
10
|
:alignItems="alignItems"
|
11
|
+
:noRelative="noRelative"
|
10
12
|
>
|
11
13
|
<label-wrapper v-if="label" :data-id="labelDataId">
|
12
14
|
<input-label
|
@@ -47,6 +49,9 @@
|
|
47
49
|
:showBorder="showBorder"
|
48
50
|
:data-id="dataId"
|
49
51
|
:paddingLeft="paddingLeft"
|
52
|
+
:tablePaddingLeft="tablePaddingLeft"
|
53
|
+
:noRelative="noRelative"
|
54
|
+
:showDisabledBackground="showDisabledBackground"
|
50
55
|
>
|
51
56
|
<draggableInputHandle
|
52
57
|
v-if="isDraggable && !isSearchBarVisible"
|
@@ -76,7 +81,7 @@
|
|
76
81
|
>
|
77
82
|
<slot name="selector" :selectedValue="selectedValue"></slot>
|
78
83
|
</selector>
|
79
|
-
<Caret @click.stop="toggleCaretDropdown">
|
84
|
+
<Caret @click.stop="toggleCaretDropdown" class="caret_dropdown">
|
80
85
|
<icon
|
81
86
|
v-if="isDropdownOpen"
|
82
87
|
name="arrow_up"
|
@@ -99,7 +104,7 @@
|
|
99
104
|
/>
|
100
105
|
</Caret>
|
101
106
|
</selectButton>
|
102
|
-
<DropdownWrapper ref="dropdownWrapperRef">
|
107
|
+
<DropdownWrapper ref="dropdownWrapperRef" :noRelative="noRelative">
|
103
108
|
<Teleport to="#portal-target">
|
104
109
|
<selectDropdown
|
105
110
|
ref="dropdown"
|
@@ -118,10 +123,13 @@
|
|
118
123
|
:fontColor="
|
119
124
|
dropdownFontColor || colorMode == 'dark' ? 'white' : 'black'
|
120
125
|
"
|
126
|
+
:noRelative="noRelative"
|
121
127
|
:fontSize="fontSize"
|
128
|
+
:minWidth="minWidth"
|
122
129
|
:selectedValue="selectedValue"
|
123
130
|
@option-selected="optionSelected"
|
124
131
|
@option-hovered="optionHovered"
|
132
|
+
@mouseleave="optionLeave"
|
125
133
|
>
|
126
134
|
<slot name="dropdown"></slot>
|
127
135
|
</selectDropdown>
|
@@ -212,11 +220,12 @@ const optionalLabel = styled.span`
|
|
212
220
|
`
|
213
221
|
const inputProps = {
|
214
222
|
selectWidth: String,
|
215
|
-
optionWidth: String
|
223
|
+
optionWidth: String,
|
224
|
+
noRelative: Boolean
|
216
225
|
}
|
217
226
|
const Container = styled('div', inputProps)`
|
218
227
|
width: ${(props) => props.selectWidth};
|
219
|
-
position: relative;
|
228
|
+
position: ${(props) => (props.noRelative ? 'static' : 'relative')};
|
220
229
|
display: inline-block;
|
221
230
|
`
|
222
231
|
const LabelWrapper = styled.div`
|
@@ -245,15 +254,26 @@ const selectButtonAttrs = {
|
|
245
254
|
selectMinHeight: String,
|
246
255
|
hasNoPadding: Boolean,
|
247
256
|
showBorder: Boolean,
|
248
|
-
paddingLeft: String
|
257
|
+
paddingLeft: String,
|
258
|
+
noRelative: Boolean,
|
259
|
+
tablePaddingLeft: String,
|
260
|
+
showDisabledBackground: Boolean
|
249
261
|
}
|
250
262
|
const selectButton = styled('div', selectButtonAttrs)`
|
251
|
-
position: relative;
|
263
|
+
position: ${(props) => (props.noRelative ? 'static' : 'relative')};
|
252
264
|
box-sizing: border-box;
|
253
265
|
border-radius: 4px;
|
254
266
|
max-width: ${(props) => (props.selectWidth ? props.selectWidth : '100%')};
|
255
267
|
${(props) =>
|
256
|
-
props.
|
268
|
+
props.isSearchBarVisible
|
269
|
+
? ''
|
270
|
+
: `padding-left: ${
|
271
|
+
props.hasNoPadding
|
272
|
+
? '0'
|
273
|
+
: props.tablePaddingLeft
|
274
|
+
? props.tablePaddingLeft
|
275
|
+
: props.paddingLeft
|
276
|
+
}`};
|
257
277
|
text-align: left;
|
258
278
|
min-height: ${(props) =>
|
259
279
|
props.selectHeight
|
@@ -274,7 +294,7 @@ const selectButton = styled('div', selectButtonAttrs)`
|
|
274
294
|
}
|
275
295
|
`}
|
276
296
|
background-color:${(props) =>
|
277
|
-
props.disabled
|
297
|
+
props.disabled && props.showDisabledBackground
|
278
298
|
? props.theme.colors.grey5
|
279
299
|
: props.theme.colors[props.bgColor]
|
280
300
|
? props.theme.colors[props.bgColor]
|
@@ -300,13 +320,16 @@ const selectDropdownAttrs = {
|
|
300
320
|
fontSize: String,
|
301
321
|
dropdownPosition: Object,
|
302
322
|
hoveredValue: Number | String,
|
303
|
-
selectedValue: Number | String
|
323
|
+
selectedValue: Number | String,
|
324
|
+
noRelative: Boolean,
|
325
|
+
minWidth: String
|
304
326
|
}
|
305
327
|
const selectDropdown = styled('div', selectDropdownAttrs)`
|
306
328
|
box-sizing: border-box;
|
307
329
|
z-index: ${(props) => (props.isActive ? '2' : '99999')};
|
308
330
|
position: absolute;
|
309
|
-
top: ${(props) =>
|
331
|
+
top: ${(props) =>
|
332
|
+
props.noRelative ? 'auto' : props.dropdownPosition?.top + 'px'};
|
310
333
|
left: ${(props) => props.dropdownPosition?.left}px;
|
311
334
|
border: ${BORDER_WIDTH} solid ${(props) => props.theme.colors.grey4};
|
312
335
|
border-radius: 4px;
|
@@ -316,6 +339,12 @@ const selectDropdown = styled('div', selectDropdownAttrs)`
|
|
316
339
|
padding: 0px;
|
317
340
|
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
|
318
341
|
width: ${(props) => (props.optionWidth ? props.optionWidth : '100%')};
|
342
|
+
min-width: ${(props) =>
|
343
|
+
props.minWidth
|
344
|
+
? props.minWidth
|
345
|
+
: props.optionWidth
|
346
|
+
? props.optionWidth
|
347
|
+
: '100%'};
|
319
348
|
background-color: ${(props) =>
|
320
349
|
props.theme.colors[props.bgColor]
|
321
350
|
? props.theme.colors[props.bgColor]
|
@@ -335,12 +364,17 @@ const selectDropdown = styled('div', selectDropdownAttrs)`
|
|
335
364
|
font-size: ${(props) => props.fontSize};
|
336
365
|
`
|
337
366
|
selectDropdown.emits = ['option-hovered', 'option-selected']
|
338
|
-
const
|
339
|
-
|
367
|
+
const DropdownAttrs = { noRelative: Boolean }
|
368
|
+
const DropdownWrapper = styled('div', DropdownAttrs)`
|
369
|
+
position: ${(props) => (props.noRelative ? 'static' : 'relative')};
|
340
370
|
`
|
341
|
-
const inputAttrs = {
|
371
|
+
const inputAttrs = {
|
372
|
+
alignItems: String,
|
373
|
+
hasLabel: Boolean,
|
374
|
+
noRelative: Boolean
|
375
|
+
}
|
342
376
|
const InputWrapper = styled('div', inputAttrs)`
|
343
|
-
position: relative;
|
377
|
+
position: ${(props) => (props.noRelative ? 'static' : 'relative')};
|
344
378
|
display: grid;
|
345
379
|
align-items: center;
|
346
380
|
gap: 8px;
|
@@ -369,6 +403,10 @@ export default {
|
|
369
403
|
required: false,
|
370
404
|
default: '13px'
|
371
405
|
},
|
406
|
+
noRelative: {
|
407
|
+
required: false,
|
408
|
+
default: false
|
409
|
+
},
|
372
410
|
label: {
|
373
411
|
required: false
|
374
412
|
},
|
@@ -401,6 +439,9 @@ export default {
|
|
401
439
|
required: false,
|
402
440
|
default: '36px'
|
403
441
|
},
|
442
|
+
minWidth: {
|
443
|
+
required: false
|
444
|
+
},
|
404
445
|
optionWidth: {
|
405
446
|
required: false,
|
406
447
|
default: null
|
@@ -476,6 +517,13 @@ export default {
|
|
476
517
|
type: Boolean,
|
477
518
|
default: false
|
478
519
|
},
|
520
|
+
tablePaddingLeft: {
|
521
|
+
required: false
|
522
|
+
},
|
523
|
+
showDisabledBackground: {
|
524
|
+
required: false,
|
525
|
+
default: true
|
526
|
+
},
|
479
527
|
minOptionLength: {
|
480
528
|
type: Number,
|
481
529
|
default: MIN_OPTION_LENGTH
|
@@ -16,6 +16,7 @@
|
|
16
16
|
:disabledTextColor="disabledTextColor"
|
17
17
|
:backgroundColor="colorMode == 'dark' ? '#000000' : backgroundColor"
|
18
18
|
:title="hoverText"
|
19
|
+
:minWidth="minWidth"
|
19
20
|
:padding="padding"
|
20
21
|
>
|
21
22
|
<slot></slot>
|
@@ -31,6 +32,7 @@ const optionProps = {
|
|
31
32
|
hoveredBgColor: String,
|
32
33
|
cursorType: String,
|
33
34
|
backgroundColor: String,
|
35
|
+
minWidth: String,
|
34
36
|
disabledBgColor: String,
|
35
37
|
disabledTextColor: String,
|
36
38
|
padding: String
|
@@ -44,6 +46,7 @@ const optionContainer = styled('div', optionProps)`
|
|
44
46
|
padding: ${(props) => props.padding};
|
45
47
|
gap: 14px;
|
46
48
|
width: 100%;
|
49
|
+
min-width: ${(props) => (props.minWidth ? props.minWidth : '100%')};
|
47
50
|
background-color: ${(props) =>
|
48
51
|
props.isDisabled
|
49
52
|
? props.theme.colors[props.disabledBgColor]
|
@@ -106,6 +109,9 @@ export default {
|
|
106
109
|
required: false,
|
107
110
|
default: false
|
108
111
|
},
|
112
|
+
minWidth: {
|
113
|
+
required: false
|
114
|
+
},
|
109
115
|
disabledBgColor: {
|
110
116
|
required: false,
|
111
117
|
default: 'white'
|
@@ -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 'vue3-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>
|
@@ -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,7 +31,7 @@ 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
|
|
@@ -54,8 +50,7 @@ export default {
|
|
54
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>
|
@@ -81,8 +81,6 @@ const paginationWrapper = styled.nav`
|
|
81
81
|
flex-wrap: wrap;
|
82
82
|
justify-content: flex-end;
|
83
83
|
align-items: center;
|
84
|
-
margin-bottom: 2px;
|
85
|
-
margin-top: 10px;
|
86
84
|
`
|
87
85
|
const paginationLink = styled.div`
|
88
86
|
display: flex;
|
@@ -92,15 +90,18 @@ const paginationLink = styled.div`
|
|
92
90
|
border-radius: 3px;
|
93
91
|
white-space: nowrap;
|
94
92
|
cursor: pointer;
|
93
|
+
color: ${(props) => props.theme.colors.brightBlue};
|
95
94
|
|
96
95
|
&.active {
|
97
|
-
color:
|
96
|
+
color: ${(props) => props.theme.colors.white};
|
98
97
|
background-color: ${(props) => props.theme.colors.brightBlue};
|
99
98
|
padding: 7px 12px;
|
100
99
|
border-radius: 4px;
|
101
100
|
}
|
102
101
|
`
|
103
|
-
const arrowText = styled.div
|
102
|
+
const arrowText = styled.div`
|
103
|
+
color: ${(props) => props.theme.colors.brightBlue};
|
104
|
+
`
|
104
105
|
const arrowIconContainer = styled.div`
|
105
106
|
margin: 0 10px;
|
106
107
|
display: flex;
|
@@ -69,7 +69,7 @@
|
|
69
69
|
</template>
|
70
70
|
|
71
71
|
<script>
|
72
|
-
// import
|
72
|
+
// import ProjectMarker from "@eturnity/eturnity_reusable_components/src/components/projectMarker"
|
73
73
|
// To use:
|
74
74
|
// <project-marker
|
75
75
|
// :activeLanguage="'en-us'"
|
@@ -0,0 +1,145 @@
|
|
1
|
+
<template>
|
2
|
+
<page-container>
|
3
|
+
<box-container>
|
4
|
+
<selected-container
|
5
|
+
>{{ numberSelected }} {{ $gettext('selected') }}</selected-container
|
6
|
+
>
|
7
|
+
<list-container v-if="optionsList.length">
|
8
|
+
<list-item
|
9
|
+
v-for="item in optionsList"
|
10
|
+
:key="item.type"
|
11
|
+
:hoverColor="item.hoverColor"
|
12
|
+
@click="$emit('on-' + item.type)"
|
13
|
+
>
|
14
|
+
{{ item.name }}
|
15
|
+
</list-item>
|
16
|
+
</list-container>
|
17
|
+
<empty-text v-if="!optionsList.length">
|
18
|
+
{{ $gettext('no_batch_actions_available') }}
|
19
|
+
</empty-text>
|
20
|
+
<icon-container @click="$emit('on-close')">
|
21
|
+
<icon
|
22
|
+
name="close_for_modals,_tool_tips"
|
23
|
+
color="white"
|
24
|
+
size="14px"
|
25
|
+
cursor="pointer"
|
26
|
+
/>
|
27
|
+
</icon-container>
|
28
|
+
</box-container>
|
29
|
+
</page-container>
|
30
|
+
</template>
|
31
|
+
|
32
|
+
<script>
|
33
|
+
// import SelectedOptions from "@eturnity/eturnity_reusable_components/src/components/selectedOptions"
|
34
|
+
// optionsList = [
|
35
|
+
// {
|
36
|
+
// type: 'export',
|
37
|
+
// name: 'Export'
|
38
|
+
// },
|
39
|
+
// {
|
40
|
+
// type: 'delete',
|
41
|
+
// name: 'Delete',
|
42
|
+
// hoverColor: 'red' // default is green
|
43
|
+
// }
|
44
|
+
// ]
|
45
|
+
// @on-${type}="function" should $emit the callback for the 'type' in the optionsList
|
46
|
+
// <selected-options
|
47
|
+
// :numberSelected="numberSelected"
|
48
|
+
// :optionsList="optionsList"
|
49
|
+
// @on-close="onCloseFunction()"
|
50
|
+
// @on-export="function()" @on-delete="function()"
|
51
|
+
// />
|
52
|
+
import styled from 'vue3-styled-components'
|
53
|
+
import Icon from '../icon'
|
54
|
+
|
55
|
+
const PageContainer = styled.div`
|
56
|
+
position: fixed;
|
57
|
+
bottom: 30px;
|
58
|
+
left: 50%;
|
59
|
+
transform: translateX(-50%);
|
60
|
+
`
|
61
|
+
|
62
|
+
const SelectedContainer = styled.div`
|
63
|
+
display: grid;
|
64
|
+
align-items: center;
|
65
|
+
height: 100%;
|
66
|
+
padding-right: 20px;
|
67
|
+
border-right: 1px solid rgba(255, 255, 255, 0.2);
|
68
|
+
`
|
69
|
+
|
70
|
+
const BoxContainer = styled.div`
|
71
|
+
display: flex;
|
72
|
+
align-items: center;
|
73
|
+
background-color: ${(props) => props.theme.colors.black};
|
74
|
+
opacity: 90%;
|
75
|
+
color: ${(props) => props.theme.colors.white};
|
76
|
+
border-radius: 4px;
|
77
|
+
padding: 8px 10px 8px 20px;
|
78
|
+
font-size: 14px;
|
79
|
+
height: 40px;
|
80
|
+
`
|
81
|
+
|
82
|
+
const ListContainer = styled.div`
|
83
|
+
padding: 0 20px;
|
84
|
+
display: flex;
|
85
|
+
gap: 20px;
|
86
|
+
color: ${(props) => props.theme.colors.white};
|
87
|
+
`
|
88
|
+
|
89
|
+
const ListAttrs = {
|
90
|
+
hoverColor: String
|
91
|
+
}
|
92
|
+
const ListItem = styled('div', ListAttrs)`
|
93
|
+
cursor: pointer;
|
94
|
+
&:hover {
|
95
|
+
color: ${(props) =>
|
96
|
+
props.hoverColor
|
97
|
+
? props.theme.colors[props.hoverColor]
|
98
|
+
: props.theme.colors.green};
|
99
|
+
}
|
100
|
+
`
|
101
|
+
|
102
|
+
const IconContainer = styled.div`
|
103
|
+
display: grid;
|
104
|
+
align-items: center;
|
105
|
+
justify-items: center;
|
106
|
+
height: 30px;
|
107
|
+
width: 30px;
|
108
|
+
cursor: pointer;
|
109
|
+
margin-left: 20px;
|
110
|
+
|
111
|
+
&:hover {
|
112
|
+
background: rgba(255, 255, 255, 0.1);
|
113
|
+
border-radius: 4px;
|
114
|
+
}
|
115
|
+
`
|
116
|
+
|
117
|
+
const EmptyText = styled.div`
|
118
|
+
color: ${(props) => props.theme.colors.white};
|
119
|
+
font-size: 13px;
|
120
|
+
padding-left: 16px;
|
121
|
+
`
|
122
|
+
|
123
|
+
export default {
|
124
|
+
name: 'selected-options',
|
125
|
+
components: {
|
126
|
+
PageContainer,
|
127
|
+
BoxContainer,
|
128
|
+
SelectedContainer,
|
129
|
+
ListContainer,
|
130
|
+
ListItem,
|
131
|
+
Icon,
|
132
|
+
IconContainer,
|
133
|
+
EmptyText
|
134
|
+
},
|
135
|
+
props: {
|
136
|
+
optionsList: {
|
137
|
+
required: true
|
138
|
+
},
|
139
|
+
numberSelected: {
|
140
|
+
required: true,
|
141
|
+
default: 0
|
142
|
+
}
|
143
|
+
}
|
144
|
+
}
|
145
|
+
</script>
|
@@ -40,7 +40,12 @@
|
|
40
40
|
"
|
41
41
|
@click.stop="onSelectedTemplateClick(item.row)"
|
42
42
|
>
|
43
|
-
<img :src="fileIcon" alt="icon" width="12" height="16" />
|
43
|
+
<!-- <img :src="fileIcon" alt="icon" width="12" height="16" /> -->
|
44
|
+
<icon
|
45
|
+
name="template_icon_not_clickable"
|
46
|
+
:color="theme.colors.brightBlue"
|
47
|
+
size="14px"
|
48
|
+
/>
|
44
49
|
<div>{{ item.value }}</div>
|
45
50
|
</template-link>
|
46
51
|
<no-template v-if="item.type && item.type === 'no-template'">
|
@@ -178,6 +183,8 @@ import InputText from '../inputs/inputText'
|
|
178
183
|
import CollapseArrowIcon from '../../assets/icons/collapse_arrow_icon.svg'
|
179
184
|
import SubpositionMarkerIcon from '../../assets/icons/subposition_marker.svg'
|
180
185
|
import fileIconPng from '../../assets/icons/file_icon.png'
|
186
|
+
import Icon from '../icon'
|
187
|
+
import theme from '@/assets/theme.js'
|
181
188
|
|
182
189
|
const rowAttrs = { disabled: Boolean, isOpen: Boolean }
|
183
190
|
const DropdownRow = styled('div', rowAttrs)`
|
@@ -273,6 +280,7 @@ const ArrowWrapper = styled('div', arrowAttrs)`
|
|
273
280
|
const optionsAttrs = { top: Number, left: Number }
|
274
281
|
const OptionsContainer = styled('div', optionsAttrs)`
|
275
282
|
position: absolute;
|
283
|
+
margin-top: 10px;
|
276
284
|
display: grid;
|
277
285
|
grid-template-rows: 1fr auto;
|
278
286
|
left: 20px;
|
@@ -307,10 +315,6 @@ const OptionsWrapper = styled.div`
|
|
307
315
|
|
308
316
|
const OptionsItem = styled('div', containerAttrs)`
|
309
317
|
display: grid;
|
310
|
-
/* grid-template-columns: 1fr repeat(
|
311
|
-
${(props) => props.colSpan},
|
312
|
-
minmax(50px, auto)
|
313
|
-
); */
|
314
318
|
grid-template-columns: ${(props) => props.width};
|
315
319
|
grid-gap: 30px;
|
316
320
|
padding: 10px;
|
@@ -343,6 +347,7 @@ const TemplateButton = styled.div`
|
|
343
347
|
display: inline-block;
|
344
348
|
border-radius: 4px;
|
345
349
|
text-align: center;
|
350
|
+
margin-left: 15px;
|
346
351
|
`
|
347
352
|
|
348
353
|
const NoTemplate = styled.div`
|
@@ -350,14 +355,16 @@ const NoTemplate = styled.div`
|
|
350
355
|
font-style: italic;
|
351
356
|
overflow: hidden;
|
352
357
|
text-overflow: ellipsis;
|
358
|
+
padding-left: 15px;
|
353
359
|
`
|
354
360
|
|
355
361
|
const TemplateLink = styled.div`
|
356
|
-
color: ${(props) => props.theme.colors.
|
362
|
+
color: ${(props) => props.theme.colors.brightBlue};
|
357
363
|
cursor: pointer;
|
358
364
|
display: grid;
|
359
365
|
grid-template-columns: auto 1fr;
|
360
366
|
grid-gap: 12px;
|
367
|
+
padding-left: 15px;
|
361
368
|
`
|
362
369
|
|
363
370
|
const InputContainer = styled.div`
|
@@ -433,7 +440,8 @@ export default {
|
|
433
440
|
ArrowContainer,
|
434
441
|
TextContainer,
|
435
442
|
NestedIcon,
|
436
|
-
NestedContainer
|
443
|
+
NestedContainer,
|
444
|
+
Icon
|
437
445
|
},
|
438
446
|
props: {
|
439
447
|
colSpan: {
|
@@ -599,6 +607,9 @@ export default {
|
|
599
607
|
computed: {
|
600
608
|
getCustomName() {
|
601
609
|
return this.inputText
|
610
|
+
},
|
611
|
+
theme() {
|
612
|
+
return theme
|
602
613
|
}
|
603
614
|
},
|
604
615
|
watch: {
|