@eturnity/eturnity_reusable_components 8.7.5-EPDM-12618.3 → 8.7.5-EPIC-8593

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 (35) hide show
  1. package/package.json +3 -2
  2. package/src/Test.vue +12 -76
  3. package/src/assets/svgIcons/add_plus.svg +4 -0
  4. package/src/assets/svgIcons/checkmark_white.svg +4 -0
  5. package/src/assets/svgIcons/clenergy.svg +4 -0
  6. package/src/assets/svgIcons/clickable_info.svg +2 -2
  7. package/src/assets/svgIcons/clickable_info_white.svg +5 -0
  8. package/src/assets/svgIcons/erase_white.svg +4 -0
  9. package/src/assets/svgIcons/module.svg +2 -2
  10. package/src/assets/svgIcons/optimizer.svg +2 -5
  11. package/src/assets/svgIcons/order.svg +3 -0
  12. package/src/assets/svgIcons/question_mark.svg +3 -0
  13. package/src/assets/svgIcons/question_mark_white.svg +4 -0
  14. package/src/assets/svgIcons/reorder_string.svg +3 -0
  15. package/src/assets/svgIcons/switch_polarity.svg +5 -0
  16. package/src/assets/svgIcons/transparent_warning.svg +4 -0
  17. package/src/assets/svgIcons/warning_triangle.svg +3 -0
  18. package/src/assets/svgIcons/warning_triangle_white.svg +5 -0
  19. package/src/assets/theme.js +13 -1
  20. package/src/components/buttons/buttonIcon/index.vue +31 -6
  21. package/src/components/buttons/mainButton/MainButton.stories.js +13 -0
  22. package/src/components/buttons/mainButton/index.vue +45 -3
  23. package/src/components/infoLabel/index.vue +63 -0
  24. package/src/components/infoText/index.vue +168 -38
  25. package/src/components/infoText/infoText.spec.js +1 -1
  26. package/src/components/inputs/checkbox/index.vue +11 -2
  27. package/src/components/inputs/inputText/index.vue +3 -1
  28. package/src/components/modals/modal/index.vue +11 -1
  29. package/src/components/panelRangeInfo/index.vue +196 -0
  30. package/src/components/selectedOptions/index.vue +2 -12
  31. package/src/components/selectedOptions/selectedOptions.spec.js +1 -1
  32. package/src/components/tableDropdown/index.vue +4 -6
  33. package/src/components/tabsHeader/index.vue +75 -61
  34. package/src/components/stringDesign/DropdownMenu/index.vue +0 -1009
  35. /package/src/assets/svgIcons/{close_for_modals,_tool_tips.svg → close.svg} +0 -0
@@ -1,25 +1,48 @@
1
1
  <template>
2
- <PageContainer ref="container" :type="type">
3
- <div
4
- ref="icon"
5
- data-test-id="infoText_trigger"
6
- @click=";(isMobile || openTrigger === 'onClick') && toggleInfo()"
7
- @mouseenter="!isMobile && openTrigger === 'onHover' && showInfo()"
8
- @mouseleave="!isMobile && openTrigger === 'onHover' && hideInfo()"
9
- >
10
- <Dot
11
- v-if="type === 'dot'"
12
- :color="dotColor"
13
- data-test-id="infoText_dot"
14
- />
15
- <IconComponent
16
- v-else
17
- :color="iconColor || computedIconColor"
18
- :cursor="isDisabled ? 'not-allowed' : 'pointer'"
19
- :disabled="isDisabled"
20
- :name="iconName"
21
- :size="size"
22
- />
2
+ <PageContainer
3
+ ref="container"
4
+ :type="type"
5
+ @click=";(isMobile || openTrigger === 'onClick') && toggleInfo()"
6
+ @mouseenter="!isMobile && openTrigger === 'onHover' && showInfo()"
7
+ @mouseleave="!isMobile && openTrigger === 'onHover' && hideInfo()"
8
+ >
9
+ <div ref="icon" data-test-id="infoText_trigger">
10
+ <IconWrapper
11
+ :background-color="backgroundColor"
12
+ :border-radius="borderRadius"
13
+ :hovered-icon="hoveredIcon"
14
+ :is-active="isActive"
15
+ :is-disabled="isDisabled"
16
+ :padding="padding"
17
+ >
18
+ <LabelWrapper
19
+ v-if="labelText && labelAlign === 'left'"
20
+ :color="iconColor || computedIconColor"
21
+ :size="labelSize"
22
+ >
23
+ {{ labelText }}
24
+ </LabelWrapper>
25
+ <Dot
26
+ v-if="type === 'dot'"
27
+ :color="dotColor"
28
+ data-test-id="infoText_dot"
29
+ />
30
+ <IconComponent
31
+ v-else-if="!noIcon"
32
+ :color="iconColor || computedIconColor"
33
+ :cursor="isDisabled ? 'not-allowed' : 'pointer'"
34
+ :disabled="isDisabled"
35
+ :name="iconName"
36
+ :size="size"
37
+ />
38
+ <LabelWrapper
39
+ v-if="labelText && labelAlign === 'right'"
40
+ :color="iconColor || computedIconColor"
41
+ :size="labelSize"
42
+ >
43
+ {{ labelText }}
44
+ </LabelWrapper>
45
+ </IconWrapper>
23
46
  </div>
24
47
  <Teleport v-if="isVisible" to="body">
25
48
  <TextWrapper :style="wrapperStyle">
@@ -36,13 +59,13 @@
36
59
  :src="image"
37
60
  @load="onImageLoad"
38
61
  />
39
- <span ref="textContent" :style="textStyle">
62
+ <span v-if="!hideInfoText" ref="textContent" :style="textStyle">
40
63
  <slot>
41
64
  <span v-html="text"></span>
42
65
  </slot>
43
66
  </span>
44
67
  </TextOverlay>
45
- <Arrow :image="image" :style="arrowStyle" />
68
+ <!-- <Arrow :image="image" :style="arrowStyle" /> -->
46
69
  </TextWrapper>
47
70
  </Teleport>
48
71
  </PageContainer>
@@ -63,7 +86,12 @@
63
86
  import styled from 'vue3-styled-components'
64
87
  import theme from '../../assets/theme.js'
65
88
 
66
- const TextOverlay = styled('div')`
89
+ const TextOverlayAttrs = {
90
+ appTheme: String,
91
+ image: Boolean,
92
+ width: Number,
93
+ }
94
+ const TextOverlay = styled('div', TextOverlayAttrs)`
67
95
  background-color: ${(props) =>
68
96
  props.image ? props.theme.colors.white : props.theme.colors.black};
69
97
  color: ${(props) =>
@@ -88,16 +116,16 @@
88
116
  }
89
117
  `
90
118
 
91
- const Arrow = styled('div')`
92
- position: absolute;
93
- width: 0;
94
- height: 0;
95
- border: 8px solid transparent;
96
- border-top-color: ${(props) =>
97
- props.image ? props.theme.colors.white : props.theme.colors.black};
98
- filter: ${(props) =>
99
- props.image ? 'drop-shadow(0 2px 2px rgba(0, 0, 0, 0.1))' : 'none'};
100
- `
119
+ // const Arrow = styled('div')`
120
+ // position: absolute;
121
+ // width: 0;
122
+ // height: 0;
123
+ // border: 8px solid transparent;
124
+ // border-top-color: ${(props) =>
125
+ // props.image ? props.theme.colors.white : props.theme.colors.black};
126
+ // filter: ${(props) =>
127
+ // props.image ? 'drop-shadow(0 2px 2px rgba(0, 0, 0, 0.1))' : 'none'};
128
+ // `
101
129
 
102
130
  const PageContainer = styled('div')`
103
131
  display: ${(props) => (props.type === 'dot' ? 'unset' : 'inline-block')};
@@ -121,16 +149,57 @@
121
149
  border-radius: 50%;
122
150
  `
123
151
 
152
+ const IconWrapperAttrs = {
153
+ backgroundColor: String,
154
+ borderRadius: String,
155
+ padding: String,
156
+ hoveredIcon: Boolean,
157
+ isActive: Boolean,
158
+ isDisabled: Boolean,
159
+ }
160
+ const IconWrapper = styled('div', IconWrapperAttrs)`
161
+ display: flex;
162
+ align-items: center;
163
+ justify-content: center;
164
+ gap: 6px;
165
+ white-space: nowrap;
166
+ background-color: ${(props) => props.backgroundColor};
167
+ border-radius: ${(props) =>
168
+ props.hoveredIcon ? '6px' : props.borderRadius};
169
+ padding: ${(props) => props.padding};
170
+ width: ${(props) => (props.hoveredIcon ? '32px' : '')};
171
+ height: ${(props) => (props.hoveredIcon ? '32px' : '')};
172
+ cursor: pointer;
173
+ background-color: ${(props) =>
174
+ props.isActive ? props.theme.colors.transparentWhite2 : ''};
175
+ cursor: ${(props) => (props.isDisabled ? 'not-allowed' : 'pointer')};
176
+ &:hover {
177
+ background-color: ${(props) =>
178
+ props.hoveredIcon ? props.theme.colors.transparentWhite2 : ''};
179
+ }
180
+ `
181
+
182
+ const LabelWrapperAttrs = {
183
+ size: String,
184
+ color: String,
185
+ }
186
+ const LabelWrapper = styled('div', LabelWrapperAttrs)`
187
+ font-size: ${(props) => props.size};
188
+ color: ${(props) => props.color};
189
+ `
190
+
124
191
  export default {
125
192
  name: 'InfoText',
126
193
  components: {
127
194
  IconComponent,
128
195
  TextOverlay,
129
- Arrow,
196
+ // Arrow,
130
197
  Dot,
131
198
  PageContainer,
132
199
  TextWrapper,
133
200
  OverlayImage,
201
+ IconWrapper,
202
+ LabelWrapper,
134
203
  },
135
204
  props: {
136
205
  text: {
@@ -138,6 +207,16 @@
138
207
  default: '',
139
208
  type: String,
140
209
  },
210
+ isActive: {
211
+ required: false,
212
+ default: false,
213
+ type: Boolean,
214
+ },
215
+ labelText: {
216
+ required: false,
217
+ default: '',
218
+ type: String,
219
+ },
141
220
  size: {
142
221
  type: String,
143
222
  default: '14px',
@@ -189,6 +268,51 @@
189
268
  required: false,
190
269
  default: 'info', // info, dot
191
270
  },
271
+ appTheme: {
272
+ type: String,
273
+ default: 'light', // light or dark
274
+ required: false,
275
+ },
276
+ labelAlign: {
277
+ type: String,
278
+ default: 'right',
279
+ required: false,
280
+ },
281
+ backgroundColor: {
282
+ type: String,
283
+ default: '',
284
+ required: false,
285
+ },
286
+ borderRadius: {
287
+ type: String,
288
+ default: '',
289
+ required: false,
290
+ },
291
+ padding: {
292
+ type: String,
293
+ default: '',
294
+ required: false,
295
+ },
296
+ labelSize: {
297
+ type: String,
298
+ default: '12px',
299
+ required: false,
300
+ },
301
+ noIcon: {
302
+ type: Boolean,
303
+ default: false,
304
+ required: false,
305
+ },
306
+ hoveredIcon: {
307
+ type: Boolean,
308
+ default: false,
309
+ required: false,
310
+ },
311
+ hideInfoText: {
312
+ type: Boolean,
313
+ default: false,
314
+ required: false,
315
+ },
192
316
  },
193
317
  setup(props) {
194
318
  const isVisible = ref(false)
@@ -206,7 +330,11 @@
206
330
 
207
331
  const textStyle = computed(() => ({
208
332
  fontSize: props.image ? '12px' : '13px',
209
- color: props.image ? theme.colors.grey1 : theme.colors.white,
333
+ color: props.image
334
+ ? theme.colors.grey1
335
+ : props.appTheme === 'dark'
336
+ ? theme.colors.black
337
+ : theme.colors.white,
210
338
  textAlign: props.image ? 'right' : 'left',
211
339
  }))
212
340
 
@@ -336,7 +464,9 @@
336
464
  overflowY: 'auto',
337
465
  backgroundColor: props.image
338
466
  ? theme.colors.white
339
- : theme.colors.black,
467
+ : props.appTheme === 'light'
468
+ ? theme.colors.black
469
+ : theme.colors.grey5,
340
470
  }
341
471
  }
342
472
 
@@ -408,7 +538,7 @@
408
538
 
409
539
  // Calculate new width
410
540
  const calculatedWidth = Math.min(
411
- Math.max(contentWidth, 200),
541
+ Math.max(contentWidth, 230),
412
542
  parseInt(props.maxWidth, 10)
413
543
  )
414
544
 
@@ -5,7 +5,7 @@ import theme from '@/assets/theme'
5
5
 
6
6
  jest.mock('@/components/icon/iconCache.mjs', () => ({
7
7
  // need to mock this due to how jest handles import.meta
8
- fetchIcon: jest.fn(() => Promise.resolve('close_for_modals,_tool_tips.svg')),
8
+ fetchIcon: jest.fn(() => Promise.resolve('close.svg')),
9
9
  }))
10
10
 
11
11
  describe('InfoText Component', () => {
@@ -5,6 +5,7 @@
5
5
  :check-color="checkColor"
6
6
  :cursor-type="cursorType"
7
7
  :data-test-id="dataId"
8
+ :font-color="fontColor"
8
9
  :has-label="hasLabel"
9
10
  :is-checked="isChecked"
10
11
  :is-disabled="isDisabled"
@@ -63,6 +64,7 @@
63
64
  isChecked: Boolean,
64
65
  isDisabled: Boolean,
65
66
  cursorType: String,
67
+ fontColor: String,
66
68
  }
67
69
  const Container = styled('label', containerAttrs)`
68
70
  display: grid;
@@ -70,7 +72,10 @@
70
72
  props.hasLabel ? '16px auto' : '16px'};
71
73
  grid-gap: 16px;
72
74
  align-content: center;
73
- color: ${(props) => props.theme.colors.black};
75
+ color: ${(props) =>
76
+ props.theme.colors[props.fontColor]
77
+ ? props.theme.colors[props.fontColor]
78
+ : props.fontColor};
74
79
  position: relative;
75
80
  cursor: ${(props) => (props.isDisabled ? 'not-allowed' : props.cursorType)};
76
81
  font-size: 16px;
@@ -176,7 +181,7 @@
176
181
  align-items: center;
177
182
  min-height: 18px;
178
183
  color: ${(props) =>
179
- props.isDisabled ? props.theme.colors.grey2 : props.theme.colors.black};
184
+ props.isDisabled ? props.theme.colors.grey2 : 'unset'};
180
185
  `
181
186
 
182
187
  export default {
@@ -193,6 +198,10 @@
193
198
  required: false,
194
199
  default: '',
195
200
  },
201
+ fontColor: {
202
+ required: false,
203
+ default: 'black',
204
+ },
196
205
  isChecked: {
197
206
  required: true,
198
207
  default: false,
@@ -168,7 +168,9 @@
168
168
  position: relative;
169
169
  font-size: ${(props) => (props.fontSize ? props.fontSize : '16px')};
170
170
  color: ${(props) =>
171
- props.isDisabled
171
+ props.isError
172
+ ? props.theme.colors.grey6
173
+ : props.isDisabled
172
174
  ? props.theme.colors.grey2
173
175
  : props.fontColor
174
176
  ? props.fontColor + ' !important'
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <PageWrapper
3
3
  v-if="isOpen"
4
+ :add-padding-top="addPaddingTop"
4
5
  :backdrop="backdrop"
5
6
  :is-open="isOpen"
6
7
  :position="position"
@@ -36,7 +37,11 @@
36
37
 
37
38
  const ContentContainer = styled.div``
38
39
 
39
- const pageAttrs = { backdrop: String, position: String }
40
+ const pageAttrs = {
41
+ backdrop: String,
42
+ position: String,
43
+ addPaddingTop: Boolean,
44
+ }
40
45
  const PageWrapper = styled('div', pageAttrs)`
41
46
  position: ${(props) => props.position}
42
47
  display: grid;
@@ -50,6 +55,7 @@
50
55
  : 'rgba(255, 255, 255, 0.9)'};
51
56
  z-index: 99999;
52
57
  overflow: auto;
58
+ padding-top: ${(props) => (props.addPaddingTop ? '80px' : '0')};
53
59
 
54
60
  @media (max-width: 425px) {
55
61
  background: white;
@@ -147,6 +153,10 @@
147
153
  type: String,
148
154
  default: 'auto',
149
155
  },
156
+ addPaddingTop: {
157
+ type: Boolean,
158
+ default: false,
159
+ },
150
160
  },
151
161
  watch: {
152
162
  isOpen: {
@@ -0,0 +1,196 @@
1
+ <template>
2
+ <Container :width="width">
3
+ <MainLine />
4
+ <MainLineHighlight :max-percent="maxPercent" :min-percent="minPercent" />
5
+ <TopValueContainer :position="valuePercent + '%'">
6
+ <TextWrapper :background-color="arrowColor">{{ value }}</TextWrapper>
7
+ <Arrow :background-color="arrowColor" />
8
+ <VerticalMarkerArrow :color="colorVerticalMarkerArrow" />
9
+ </TopValueContainer>
10
+ <BottomValueContainer :position="minPercent + '%'">
11
+ <TextWrapper>{{ minValue }}</TextWrapper>
12
+ <VerticalMarker side="bottom" />
13
+ </BottomValueContainer>
14
+ <BottomValueContainer :position="maxPercent + '%'">
15
+ <TextWrapper>{{ maxValue }}</TextWrapper>
16
+ <VerticalMarker side="bottom" />
17
+ </BottomValueContainer>
18
+ </Container>
19
+ </template>
20
+
21
+ <script>
22
+ // import ProgressBar from "@eturnity/eturnity_reusable_components/src/components/progressBar"
23
+ //To Use:
24
+ // <progress-bar
25
+ // fillColor="#000"
26
+ // backgroundColor="#888"
27
+ // minWidth="150px"
28
+ // maxWidth="100%"
29
+ // :fillProgress="50" //should be a number for percent
30
+ // stepNumber="4"
31
+ // :labelText="translate('step')"
32
+ // />
33
+ import styled from 'vue3-styled-components'
34
+ const Container = styled.div`
35
+ position: relative;
36
+ display: flex;
37
+ height: 47px;
38
+ width: ${(props) => props.width};
39
+ `
40
+ const TopValueContainer = styled('div', { position: String })`
41
+ font-size: 11px;
42
+ left: ${(props) => props.position};
43
+ position: absolute;
44
+ display: flex;
45
+ justify-content: center
46
+ width: 0px;
47
+ color:${(props) => props.theme.colors.black};
48
+ item-align: center;
49
+
50
+ `
51
+ const BottomValueContainer = styled('div', { position: String })`
52
+ font-size: 12px;
53
+ left: ${(props) => props.position};
54
+ width: 0px;
55
+ bottom: -2px;
56
+ position: absolute;
57
+ display: flex;
58
+ justify-content: center;
59
+ item-align: center;
60
+ border-radius: 4px;
61
+ color: white;
62
+ `
63
+ const TextWrapper = styled('div', { backgroundColor: String })`
64
+ padding: 2px 6px;
65
+ background-color: ${(props) =>
66
+ props.theme.colors[props.backgroundColor] || props.backgroundColor};
67
+ border-radius: 4px;
68
+ `
69
+ const Arrow = styled('div', { backgroundColor: String })`
70
+ position: absolute;
71
+ bottom: -10px;
72
+ left: calc(50% - 6px);
73
+ width: 0;
74
+ height: 0;
75
+ border: 6px solid transparent;
76
+ border-top-color: ${(props) =>
77
+ props.theme.colors[props.backgroundColor] || props.backgroundColor};
78
+ filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.1));
79
+ `
80
+ const MainLine = styled.div`
81
+ display: block;
82
+ position: absolute;
83
+ bottom: 16px;
84
+ height: 4px;
85
+ width: 100%;
86
+ border-radius: 4px;
87
+ background-color: ${(props) => props.theme.colors.grey4};
88
+ `
89
+ const MainLineHighlight = styled('div', {
90
+ minPercent: Number,
91
+ maxPercent: Number,
92
+ })`
93
+ display: block;
94
+ position: absolute;
95
+ left: ${(props) => props.minPercent + '%'};
96
+ right: ${(props) => 100 - props.maxPercent + '%'};
97
+ bottom: 16px;
98
+ height: 4px;
99
+ background-color: white;
100
+ `
101
+ const VerticalMarker = styled('div')`
102
+ position: absolute;
103
+ width: 1px;
104
+ height: 8px;
105
+ background-color: white;
106
+ display: inline-block;
107
+ top: -6px;
108
+ left: 0px;
109
+ `
110
+ const VerticalMarkerArrow = styled('div', { color: String })`
111
+ position: absolute;
112
+ width: 1px;
113
+ height: 4px;
114
+ background-color: ${(props) => props.color};
115
+ display: inline-block;
116
+ bottom: -14px;
117
+ left: 0px;
118
+ `
119
+ export default {
120
+ name: 'ProgressBar',
121
+ components: {
122
+ Container,
123
+ MainLineHighlight,
124
+ Arrow,
125
+ TopValueContainer,
126
+ BottomValueContainer,
127
+ MainLine,
128
+ VerticalMarker,
129
+ VerticalMarkerArrow,
130
+ TextWrapper,
131
+ },
132
+ props: {
133
+ minValue: {
134
+ required: true,
135
+ type: Number,
136
+ },
137
+ maxValue: {
138
+ required: true,
139
+ type: Number,
140
+ },
141
+ value: {
142
+ required: true,
143
+ type: Number,
144
+ },
145
+ arrowColor: {
146
+ required: false,
147
+ type: String,
148
+ default: 'white',
149
+ },
150
+ width: {
151
+ required: false,
152
+ type: String,
153
+ default: null,
154
+ },
155
+ },
156
+ data() {
157
+ return {}
158
+ },
159
+ computed: {
160
+ minPercent() {
161
+ if (this.maxValue === this.minValue) {
162
+ return 50
163
+ } else {
164
+ return 30
165
+ }
166
+ },
167
+ maxPercent() {
168
+ if (this.maxValue === this.minValue) {
169
+ return 50
170
+ } else {
171
+ return 70
172
+ }
173
+ },
174
+ valuePercent() {
175
+ let percent
176
+ if (this.maxValue === this.minValue) {
177
+ percent = this.minPercent + 10 * (this.value - this.minValue)
178
+ } else {
179
+ percent =
180
+ this.minPercent +
181
+ ((this.maxPercent - this.minPercent) /
182
+ (this.maxValue - this.minValue)) *
183
+ (this.value - this.minValue)
184
+ }
185
+ return Math.max(0, Math.min(100, percent))
186
+ },
187
+ colorVerticalMarkerArrow() {
188
+ if (this.value < this.maxValue && this.value > this.minValue) {
189
+ return 'black'
190
+ } else {
191
+ return 'white'
192
+ }
193
+ },
194
+ },
195
+ }
196
+ </script>
@@ -5,12 +5,7 @@
5
5
  <TitleContainer>
6
6
  <BoxTitle> {{ numberSelected }} {{ selectedText }} </BoxTitle>
7
7
  <IconContainer @click="$emit('on-close')">
8
- <Icon
9
- color="white"
10
- cursor="pointer"
11
- name="close_for_modals,_tool_tips"
12
- size="14px"
13
- />
8
+ <Icon color="white" cursor="pointer" name="close" size="14px" />
14
9
  </IconContainer>
15
10
  </TitleContainer>
16
11
  <DividerContainer>
@@ -91,12 +86,7 @@
91
86
  </EmptyText>
92
87
  <CloseContainer>
93
88
  <IconContainer @click="$emit('on-close')">
94
- <Icon
95
- color="white"
96
- cursor="pointer"
97
- name="close_for_modals,_tool_tips"
98
- size="14px"
99
- />
89
+ <Icon color="white" cursor="pointer" name="close" size="14px" />
100
90
  </IconContainer>
101
91
  </CloseContainer>
102
92
  </BoxContainer>
@@ -5,7 +5,7 @@ import theme from '@/assets/theme'
5
5
 
6
6
  jest.mock('@/components/icon/iconCache.mjs', () => ({
7
7
  // need to mock this due to how jest handles import.meta
8
- fetchIcon: jest.fn(() => Promise.resolve('close_for_modals,_tool_tips.svg')),
8
+ fetchIcon: jest.fn(() => Promise.resolve('close.svg')),
9
9
  }))
10
10
 
11
11
  describe('RCSelectedOptions.vue', () => {
@@ -74,13 +74,10 @@
74
74
  v-else
75
75
  class="inputField"
76
76
  :disabled="customInputDisabled"
77
- :error-message="item.errorMessage"
78
77
  :font-color="showArchived ? theme.colors.red : 'black'"
79
- :is-error="item.isError"
80
78
  :min-width="item.value.length + 'ch'"
81
79
  :no-border="true"
82
80
  :value="item.value"
83
- @input-blur="onCustomInputChange($event.trim())"
84
81
  @input-change="onCustomInputChange($event)"
85
82
  />
86
83
  </InputContainer>
@@ -157,7 +154,7 @@
157
154
  </OptionsItem>
158
155
  </OptionsWrapper>
159
156
  <CustomContainer
160
- v-if="getCustomName.length && allowFreeInputs"
157
+ v-if="inputText.length && allowFreeInputs"
161
158
  @click="onCustomNameClick()"
162
159
  >
163
160
  <CustomName>{{ getCustomName }}</CustomName>
@@ -220,6 +217,7 @@
220
217
  const ItemAttrs = { isNested: Boolean, showArchived: Boolean }
221
218
  const ComponentItem = styled('td', ItemAttrs)`
222
219
  padding-left: ${(props) => (props.isNested ? '14px !important' : '0')};
220
+ overflow: hidden;
223
221
  text-overflow: ellipsis;
224
222
  padding-right: 0 !important;
225
223
  color: ${(props) =>
@@ -553,7 +551,7 @@
553
551
  },
554
552
  computed: {
555
553
  getCustomName() {
556
- return this.inputText.trim()
554
+ return this.inputText
557
555
  },
558
556
  theme() {
559
557
  return theme
@@ -647,7 +645,7 @@
647
645
  },
648
646
  onCustomNameClick() {
649
647
  this.wasClicked = true
650
- this.$emit('on-custom-input-name', this.getCustomName)
648
+ this.$emit('on-custom-input-name', this.inputText)
651
649
  this.$emit('toggle-dropdown-open', { close: true })
652
650
  this.inputText = ''
653
651
  },