@eturnity/eturnity_reusable_components 7.18.0-EPDM-10335.1 → 7.18.0-qa-dev03.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.
Files changed (54) hide show
  1. package/.storybook/preview.js +1 -1
  2. package/package.json +23 -19
  3. package/src/App.vue +2 -2
  4. package/src/assets/svgIcons/anchor.svg +18 -0
  5. package/src/assets/svgIcons/flatten_roof.svg +20 -0
  6. package/src/assets/svgIcons/split.svg +6 -88
  7. package/src/components/addNewButton/index.vue +3 -5
  8. package/src/components/buttons/buttonIcon/index.vue +1 -1
  9. package/src/components/buttons/closeButton/index.vue +1 -1
  10. package/src/components/buttons/mainButton/index.vue +1 -6
  11. package/src/components/card/index.vue +24 -25
  12. package/src/components/deleteIcon/DeleteIcon.stories.js +7 -7
  13. package/src/components/deleteIcon/index.vue +21 -25
  14. package/src/components/draggableInputHandle/index.vue +25 -24
  15. package/src/components/dropdown/index.vue +110 -129
  16. package/src/components/errorMessage/index.vue +5 -10
  17. package/src/components/filter/filterSettings.vue +97 -58
  18. package/src/components/filter/index.vue +3 -3
  19. package/src/components/filter/parentDropdown.vue +2 -2
  20. package/src/components/icon/iconCollection.vue +2 -2
  21. package/src/components/icon/index.vue +75 -67
  22. package/src/components/iconWrapper/index.vue +4 -1
  23. package/src/components/infoCard/index.vue +3 -2
  24. package/src/components/infoText/index.vue +1 -1
  25. package/src/components/inputs/checkbox/index.vue +6 -21
  26. package/src/components/inputs/inputNumber/index.vue +10 -10
  27. package/src/components/inputs/inputNumberQuestion/index.vue +1 -1
  28. package/src/components/inputs/inputText/index.vue +3 -3
  29. package/src/components/inputs/radioButton/index.vue +1 -1
  30. package/src/components/inputs/searchInput/index.vue +11 -28
  31. package/src/components/inputs/select/index.vue +55 -199
  32. package/src/components/inputs/select/option/index.vue +11 -36
  33. package/src/components/inputs/slider/index.vue +16 -16
  34. package/src/components/inputs/switchField/index.vue +2 -2
  35. package/src/components/inputs/textAreaInput/index.vue +1 -1
  36. package/src/components/inputs/toggle/index.vue +2 -2
  37. package/src/components/label/index.vue +31 -27
  38. package/src/components/modals/modal/index.vue +6 -2
  39. package/src/components/navigationTabs/index.vue +20 -27
  40. package/src/components/pageSubtitle/index.vue +1 -1
  41. package/src/components/pageTitle/index.vue +4 -4
  42. package/src/components/pagination/index.vue +1 -1
  43. package/src/components/progressBar/index.vue +1 -1
  44. package/src/components/projectMarker/index.vue +9 -16
  45. package/src/components/sideMenu/index.vue +1 -1
  46. package/src/components/spinner/index.vue +11 -7
  47. package/src/components/tableDropdown/index.vue +37 -30
  48. package/src/components/tables/mainTable/exampleNested.vue +1 -1
  49. package/src/components/tables/mainTable/index.vue +9 -10
  50. package/src/components/tables/viewTable/index.vue +2 -2
  51. package/src/components/threeDots/index.vue +1 -1
  52. package/src/components/videoThumbnail/index.vue +100 -95
  53. package/src/main.js +11 -4
  54. package/src/components/icon/iconCache.js +0 -23
@@ -1,138 +1,119 @@
1
1
  <template>
2
- <wrapper ref="dropdown" :openingMode="openingMode">
3
- <WrapperButton @click="isOpenByClick = !isOpenByClick">
4
- <slot name="trigger" />
5
- </WrapperButton>
6
- <WrapperDropdown
7
- class="dropdown-content"
8
- :class="{ openDropdown: isOpenByClick && openingMode == 'click' }"
9
- :justify="justify"
10
- :position="position"
11
- :width="width"
12
- :backgroundColor="backgroundColor"
13
- >
14
- <DropdownWindow
15
- :gap="gap"
16
- :backgroundColor="backgroundColor"
17
- :width="width"
18
- >
19
- <slot name="dropdown" />
20
- </DropdownWindow>
21
- </WrapperDropdown>
22
- </wrapper>
23
- </template>
2
+ <wrapper ref="dropdown" :openingMode="openingMode">
3
+ <WrapperButton @click="isOpenByClick=!isOpenByClick">
4
+ <slot name="trigger"/>
5
+ </WrapperButton>
6
+ <WrapperDropdown class="dropdown-content" :class="{openDropdown:isOpenByClick && openingMode=='click'}" :justify="justify" :position="position" :width="width" :backgroundColor="backgroundColor">
7
+ <DropdownWindow :gap="gap" :backgroundColor="backgroundColor" :width="width">
8
+ <slot name="dropdown"/>
9
+ </DropdownWindow>
10
+ </WrapperDropdown>
11
+ </wrapper>
12
+ </template>
13
+
14
+ <script>
15
+ // import Icon from "@eturnity/eturnity_reusable_components/src/components/icon"
16
+ // How to use:
17
+ //<DropdownComponent
18
+ // width="300px"
19
+ // backgroundColor="red">
24
20
 
25
- <script>
26
- // import Icon from "@eturnity/eturnity_reusable_components/src/components/icon"
27
- // How to use:
28
- //<DropdownComponent
29
- // width="300px"
30
- // backgroundColor="red">
21
+ // <DropdownComponent/>
22
+
23
+ import styled from 'vue-styled-components'
24
+
25
+ const wrapperAttrs = { width: String, backgroundColor:String,openingMode:String,gap:String,justify:String }
26
+ const Wrapper = styled('div', wrapperAttrs)`
27
+ display: inline-block;
28
+ position: relative;
31
29
 
32
- // <DropdownComponent/>
33
-
34
- import styled from 'vue3-styled-components'
35
-
36
- const wrapperAttrs = {
37
- width: String,
38
- backgroundColor: String,
39
- openingMode: String,
40
- gap: String,
41
- justify: String
42
- }
43
- const Wrapper = styled('div', wrapperAttrs)`
44
- display: inline-block;
45
- position: relative;
46
-
47
- &:hover .dropdown-content {
48
- ${(props) => (props.openingMode == 'hover' ? 'display:block' : '')}
49
- }
50
- & .openDropdown {
51
- ${(props) =>
52
- props.openingMode == 'click' ? 'display:block !important' : ''}
53
- }
54
- `
55
- const WrapperDropdown = styled('div', wrapperAttrs)`
56
- margin-top: 0;
57
- display: none;
58
- position: absolute;
59
- z-index: 1;
60
- ${(props) => (props.justify == 'right' ? 'right:0;' : '')}
61
- `
62
- const DropdownWindow = styled('div', wrapperAttrs)`
63
- width: ${(props) => props.width};
64
- background-color: ${(props) =>
65
- props.theme.colors[props.backgroundColor] || props.backgroundColor};
66
- margin-top: ${(props) => props.gap};
67
- border-radius: 4px;
68
- position: relative;
69
- min-width: 160px;
70
- box-shadow: -1px 0px 5px rgba(0, 0, 0, 0.302);
71
- z-index: 1;
72
- `
73
-
74
- const WrapperButton = styled('div', wrapperAttrs)`
75
- display: inline-block;
76
- `
77
-
78
- export default {
79
- name: 'DropdownComponent',
80
- components: {
81
- WrapperDropdown,
82
- WrapperButton,
83
- Wrapper,
84
- DropdownWindow
85
- },
86
- props: {
87
- width: {
88
- required: false,
89
- default: '300px'
30
+ &:hover .dropdown-content {
31
+ ${props=>props.openingMode=='hover'?"display:block":""}
32
+ }
33
+ & .openDropdown{
34
+ ${props=>props.openingMode=='click'?"display:block !important":""}
35
+ }
36
+ `
37
+ const WrapperDropdown = styled('div', wrapperAttrs)`
38
+ margin-top: 0;
39
+ display: none;
40
+ position: absolute;
41
+ z-index: 1;
42
+ ${(props) => props.justify=="right"?"right:0;":""}
43
+ `
44
+ const DropdownWindow = styled('div', wrapperAttrs)`
45
+ width: ${(props) => props.width};
46
+ background-color: ${(props) => props.theme.colors[props.backgroundColor] || props.backgroundColor};
47
+ margin-top: ${(props) => props.gap};
48
+ border-radius: 4px;
49
+ position: relative;
50
+ min-width: 160px;
51
+ box-shadow: -1px 0px 5px rgba(0, 0, 0, 0.302);
52
+ z-index: 1;
53
+ `
54
+
55
+ const WrapperButton = styled('div', wrapperAttrs)`
56
+ display: inline-block;
57
+ `
58
+
59
+ export default {
60
+ name: 'DropdownComponent',
61
+ components: {
62
+ WrapperDropdown,
63
+ WrapperButton,
64
+ Wrapper,
65
+ DropdownWindow
90
66
  },
91
- gap: {
92
- required: false,
93
- default: '10px'
67
+ props: {
68
+ width: {
69
+ required: false,
70
+ default: '300px'
71
+ },
72
+ gap: {
73
+ required: false,
74
+ default: '10px'
75
+ },
76
+ position: {
77
+ required: false,
78
+ default: 'bottom'
79
+ },
80
+ justify: {
81
+ required: false,
82
+ default: 'left'
83
+ },
84
+ openingMode: {
85
+ required: false,
86
+ default: 'hover'
87
+ },
88
+ backgroundColor: {
89
+ required: false,
90
+ default: 'white'
91
+ }
94
92
  },
95
- position: {
96
- required: false,
97
- default: 'bottom'
93
+ data() {
94
+ return {
95
+ isOpenByClick:false
96
+ }
98
97
  },
99
- justify: {
100
- required: false,
101
- default: 'left'
98
+ methods:{
99
+ clickOutside(event) {
100
+ if (this.openingMode!="click") return
101
+ if (
102
+ this.$refs.dropdown.$el == event.target ||
103
+ this.$refs.dropdown.$el.contains(event.target)
104
+ ) {
105
+ return
106
+ } else {
107
+ this.isOpenByClick=false
108
+ }
109
+ },
102
110
  },
103
- openingMode: {
104
- required: false,
105
- default: 'hover'
111
+ mounted() {
112
+ document.addEventListener('click', this.clickOutside)
113
+ },
114
+ beforeDestroy() {
115
+ document.removeEventListener('click', this.clickOutside)
106
116
  },
107
- backgroundColor: {
108
- required: false,
109
- default: 'white'
110
- }
111
- },
112
- data() {
113
- return {
114
- isOpenByClick: false
115
- }
116
- },
117
- methods: {
118
- clickOutside(event) {
119
- if (this.openingMode != 'click') return
120
- if (
121
- this.$refs.dropdown &&
122
- (this.$refs.dropdown.$el == event.target ||
123
- this.$refs.dropdown.$el.contains(event.target))
124
- ) {
125
- return
126
- } else {
127
- this.isOpenByClick = false
128
- }
129
- }
130
- },
131
- mounted() {
132
- document.addEventListener('click', this.clickOutside)
133
- },
134
- beforeDestroy() {
135
- document.removeEventListener('click', this.clickOutside)
136
117
  }
137
- }
138
- </script>
118
+ </script>
119
+
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <component-wrapper>
3
- <text-overlay :marginTop="marginTop">
3
+ <text-overlay>
4
4
  <slot></slot>
5
5
  </text-overlay>
6
6
  </component-wrapper>
@@ -11,11 +11,11 @@
11
11
  //To use:
12
12
  // <error-message />
13
13
 
14
- import styled from 'vue3-styled-components'
14
+ import styled from 'vue-styled-components'
15
15
 
16
- const TextOverlay = styled('div', { marginTop: String })`
16
+ const TextOverlay = styled.div`
17
17
  position: absolute;
18
- top: calc(100% + ${(props) => props.marginTop});
18
+ top: calc(100% + 13px);
19
19
  background: ${(props) => props.theme.colors.red};
20
20
  padding: 10px;
21
21
  width: max-content;
@@ -50,12 +50,7 @@ export default {
50
50
  TextOverlay,
51
51
  ComponentWrapper
52
52
  },
53
- props: {
54
- marginTop: {
55
- required: false,
56
- default: '13px'
57
- }
58
- },
53
+ props: {},
59
54
  methods: {},
60
55
  data() {
61
56
  return {}
@@ -3,7 +3,7 @@
3
3
  <upper-container v-if="filterViews && filterViews.length">
4
4
  <view-container :maxWidth="activeView.length">
5
5
  <select-component
6
- @click.stop
6
+ @click.native.stop
7
7
  selectWidth="100%"
8
8
  selectHeight="36px"
9
9
  fontSize="13px"
@@ -19,10 +19,10 @@
19
19
  <Option
20
20
  v-for="(item, idx) in filterViews"
21
21
  :key="idx + '_view'"
22
- @click="$emit('on-view-select', item)"
22
+ @click.native="$emit('on-view-select', item)"
23
23
  :value="item.name"
24
24
  >{{ item.name }}
25
- <delete-icon @click.stop="$emit('on-view-delete', item)"
25
+ <delete-icon @click.native.stop="$emit('on-view-delete', item)"
26
26
  /></Option>
27
27
  </template>
28
28
  </select-component>
@@ -55,28 +55,28 @@
55
55
  ghost-class="ghost"
56
56
  :setData="modifyDragItem"
57
57
  v-model="item.dataOptions"
58
- itemKey="choice"
59
58
  >
60
- <template #item="{ element: column }">
61
- <checkbox-wrapper>
62
- <drag-container class="drag-container">
63
- <icon :name="'duplicate-1'" size="12px" />
64
- </drag-container>
65
- <checkbox
66
- :label="column.text"
67
- :isChecked="column.selected"
68
- @on-event-handler="
69
- onChange({
70
- dataType: item.type,
71
- value: $event,
72
- choice: column.choice
73
- })
74
- "
75
- size="small"
76
- :isDisabled="column.selected && isCheckboxDisabled"
77
- />
78
- </checkbox-wrapper>
79
- </template>
59
+ <checkbox-wrapper
60
+ v-for="(column, index) in item.dataOptions"
61
+ :key="index + 'dataOption'"
62
+ >
63
+ <drag-container class="drag-container">
64
+ <icon :name="'duplicate-1'" size="12px" />
65
+ </drag-container>
66
+ <checkbox
67
+ :label="column.text"
68
+ :isChecked="column.selected"
69
+ @on-event-handler="
70
+ onChange({
71
+ dataType: item.type,
72
+ value: $event,
73
+ choice: column.choice
74
+ })
75
+ "
76
+ size="small"
77
+ :isDisabled="column.selected && isCheckboxDisabled"
78
+ />
79
+ </checkbox-wrapper>
80
80
  </draggable>
81
81
  </checkbox-container>
82
82
  </row-container>
@@ -169,20 +169,12 @@
169
169
  >
170
170
  <row-label :data-id="filter.dataId">{{ filter.label }}</row-label>
171
171
  <grid-container>
172
- <VueDatePicker
173
- text-input
172
+ <date-picker-input
174
173
  :placeholder="$gettext('Date from')"
175
- :locale="getDatePickerLanguage()"
176
- :model-value="filter.range.start"
177
- :enable-time-picker="false"
178
- :clearable="true"
179
- :auto-apply="true"
180
- :disabled-dates="disableFutureDates"
181
- format="yyyy-MM-dd"
182
- model-type="format"
183
- @focus="onDatepickerFocus(filter.range)"
184
- @close="onDatepickerBlur()"
185
- @update:model-value="
174
+ :lang="getDatePickerLanguage()"
175
+ type="date"
176
+ :value="filter.range.start"
177
+ @change="
186
178
  onChange({
187
179
  dataType: item.type,
188
180
  value: $event,
@@ -190,21 +182,18 @@
190
182
  field: filter.field
191
183
  })
192
184
  "
193
- />
194
- <VueDatePicker
195
- text-input
196
- :placeholder="$gettext('Date to')"
197
- :locale="getDatePickerLanguage()"
198
- :model-value="filter.range.end"
199
- :enable-time-picker="false"
200
- :clearable="true"
201
- :auto-apply="true"
202
- :disabled-dates="disablePastDates"
203
- format="yyyy-MM-dd"
204
- model-type="format"
205
185
  @focus="onDatepickerFocus(filter.range)"
206
186
  @close="onDatepickerBlur()"
207
- @update:model-value="
187
+ format="YYYY-MM-DD"
188
+ valueType="format"
189
+ :disabled-date="disableFutureDates"
190
+ />
191
+ <date-picker-input
192
+ :placeholder="$gettext('Date to')"
193
+ :lang="getDatePickerLanguage()"
194
+ type="date"
195
+ :value="filter.range.end"
196
+ @change="
208
197
  onChange({
209
198
  dataType: item.type,
210
199
  value: $event,
@@ -212,6 +201,11 @@
212
201
  field: filter.field
213
202
  })
214
203
  "
204
+ @focus="onDatepickerFocus(filter.range)"
205
+ @close="onDatepickerBlur()"
206
+ format="YYYY-MM-DD"
207
+ valueType="format"
208
+ :disabled-date="disablePastDates"
215
209
  />
216
210
  </grid-container>
217
211
  </section-container>
@@ -253,26 +247,27 @@
253
247
  v-if="buttonText.apply_view"
254
248
  type="primary"
255
249
  :text="buttonText.apply_view"
256
- @click="$emit('on-apply-current-view')"
250
+ @click.native="$emit('on-apply-current-view')"
257
251
  />
258
252
  <main-button
259
253
  type="secondary"
260
254
  v-if="buttonText.save_view"
261
255
  :text="buttonText.save_view"
262
- @click="$emit('on-save-new-view')"
256
+ @click.native="$emit('on-save-new-view')"
263
257
  />
264
258
  <main-button
265
259
  type="cancel"
266
260
  v-if="buttonText.cancel"
267
261
  :text="buttonText.cancel"
268
- @click="$emit('on-cancel-view')"
262
+ @click.native="$emit('on-cancel-view')"
269
263
  />
270
264
  </button-container>
271
265
  </container-wrapper>
272
266
  </template>
273
267
 
274
268
  <script>
275
- import styled from 'vue3-styled-components'
269
+ import styled from 'vue-styled-components'
270
+ import DatePicker from 'vue2-datepicker'
276
271
  import SelectComponent from '../inputs/select'
277
272
  import Option from '../inputs/select/option'
278
273
  import InputNumber from '../inputs/inputNumber'
@@ -283,7 +278,12 @@ import Icon from '../icon'
283
278
  import DeleteIcon from '../deleteIcon'
284
279
  import { datePickerLang } from '../../helpers/translateLang'
285
280
  import theme from '@/assets/theme.js'
286
- import VueDatePicker from '@vuepic/vue-datepicker'
281
+ import 'vue2-datepicker/index.css'
282
+ import 'vue2-datepicker/locale/de'
283
+ import 'vue2-datepicker/locale/en'
284
+ import 'vue2-datepicker/locale/es'
285
+ import 'vue2-datepicker/locale/fr'
286
+ import 'vue2-datepicker/locale/it'
287
287
 
288
288
  const ContainerWrapper = styled.div`
289
289
  position: absolute;
@@ -376,13 +376,52 @@ const DropdownCheckboxContainer = styled.div`
376
376
  gap: 6px;
377
377
  width: 100%;
378
378
  padding: 12px 10px;
379
- background: ${(props) => props.theme.colors.grey5};
380
379
  `
381
380
 
382
381
  const RowWrapper = styled.div`
383
382
  margin-bottom: 12px;
384
383
  `
385
384
 
385
+ const DatePickerInput = styled(DatePicker)`
386
+ border: 1px solid ${(props) => props.theme.colors.grey4};
387
+ border-radius: 4px;
388
+ padding: 7px 12px 7px 7px;
389
+ width: 100%;
390
+ position: relative;
391
+
392
+ &.mx-datepicker {
393
+ width: 100% !important;
394
+ max-width: 100%;
395
+ height: 36px;
396
+ align-self: flex-end;
397
+ }
398
+
399
+ .mx-input-wrapper {
400
+ position: unset;
401
+
402
+ input {
403
+ border: none;
404
+ height: auto;
405
+ padding: 0;
406
+ font-size: 13px;
407
+ box-shadow: none;
408
+ color: #393939;
409
+ vertical-align: bottom;
410
+ }
411
+
412
+ .mx-input-append {
413
+ top: 1px;
414
+ }
415
+ }
416
+
417
+ .mx-input-append {
418
+ left: 0;
419
+ top: 5px;
420
+ height: auto;
421
+ cursor: pointer;
422
+ }
423
+ `
424
+
386
425
  const LabelAttrs = {
387
426
  marginTop: Boolean
388
427
  }
@@ -447,14 +486,14 @@ export default {
447
486
  Icon,
448
487
  DragContainer,
449
488
  InputNumber,
489
+ DatePickerInput,
450
490
  RowLabel,
451
491
  SectionContainer,
452
492
  GridContainer,
453
493
  ViewContainer,
454
494
  DeleteIcon,
455
495
  UpperContainer,
456
- ResetButton,
457
- VueDatePicker
496
+ ResetButton
458
497
  },
459
498
  props: {
460
499
  filterData: {
@@ -29,7 +29,7 @@
29
29
  </template>
30
30
 
31
31
  <script>
32
- import styled from 'vue3-styled-components'
32
+ import styled from 'vue-styled-components'
33
33
  import parentDropdown from './parentDropdown'
34
34
  import filterSettings from './filterSettings'
35
35
 
@@ -93,9 +93,9 @@ export default {
93
93
  }, 100)
94
94
  },
95
95
  clickOutside(event) {
96
+ const target = event.target
96
97
  if (
97
- this.$refs.dropdown &&
98
- !this.$refs.dropdown.$el.contains(event.target) &&
98
+ !this.$refs.dropdown.$el.contains(target) &&
99
99
  !this.preventOutsideClick
100
100
  ) {
101
101
  this.isDropdownOpen = false
@@ -9,7 +9,7 @@
9
9
  </title-text>
10
10
  <arrow-wrapper>
11
11
  <icon
12
- @click.stop="$emit('on-toggle')"
12
+ @click.native.stop="$emit('on-toggle')"
13
13
  :name="isOpen ? 'arrow_up' : 'arrow_down'"
14
14
  size="12px"
15
15
  />
@@ -19,7 +19,7 @@
19
19
  </template>
20
20
 
21
21
  <script>
22
- import styled from 'vue3-styled-components'
22
+ import styled from 'vue-styled-components'
23
23
  import Icon from '../icon'
24
24
 
25
25
  const PageWrapper = styled.div`
@@ -16,7 +16,7 @@
16
16
 
17
17
  <script>
18
18
  import icon from './index.vue'
19
- import styled from 'vue3-styled-components'
19
+ import styled from 'vue-styled-components'
20
20
 
21
21
  const Wrapper = styled.div`
22
22
  display: block;
@@ -36,7 +36,7 @@ const IconWrapper = styled.div`
36
36
  margin: 10px;
37
37
  `
38
38
  export default {
39
- name: 'collectionComponent',
39
+ name: 'collection',
40
40
  components: { icon, IconWrapper, Wrapper },
41
41
  props: {
42
42
  size: { required: false },