@eturnity/eturnity_reusable_components 8.16.2--EPDM-14330.4 → 8.16.2--EPDM-14330.6

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 (102) hide show
  1. package/package.json +1 -1
  2. package/src/assets/svgIcons/ac_power.svg +4 -0
  3. package/src/assets/svgIcons/arrow_long_left.svg +3 -0
  4. package/src/assets/svgIcons/arrow_long_right.svg +3 -0
  5. package/src/assets/svgIcons/chassis_ground_symbol.svg +27 -0
  6. package/src/assets/svgIcons/dc_power.svg +8 -0
  7. package/src/assets/svgIcons/double_arrow_long.svg +4 -0
  8. package/src/assets/svgIcons/ed_ac.svg +3 -0
  9. package/src/assets/svgIcons/ed_acgrid.svg +4 -0
  10. package/src/assets/svgIcons/ed_arrow_both.svg +7 -0
  11. package/src/assets/svgIcons/ed_arrow_left.svg +7 -0
  12. package/src/assets/svgIcons/ed_arrow_right.svg +7 -0
  13. package/src/assets/svgIcons/ed_battery.svg +10 -0
  14. package/src/assets/svgIcons/ed_batteryacinverter.svg +16 -0
  15. package/src/assets/svgIcons/ed_batteryintegratedinverter.svg +19 -0
  16. package/src/assets/svgIcons/ed_cirquitbreaker.svg +4 -0
  17. package/src/assets/svgIcons/ed_cirquitbreaker_magnetic.svg +6 -0
  18. package/src/assets/svgIcons/ed_cirquitbreaker_thermal.svg +4 -0
  19. package/src/assets/svgIcons/ed_cirquitbreaker_thermal_magnetic.svg +5 -0
  20. package/src/assets/svgIcons/ed_consumption.svg +3 -0
  21. package/src/assets/svgIcons/ed_dc.svg +6 -0
  22. package/src/assets/svgIcons/ed_disconnector.svg +4 -0
  23. package/src/assets/svgIcons/ed_disconnector_fuse.svg +4 -0
  24. package/src/assets/svgIcons/ed_disconnector_fuse_switch.svg +4 -0
  25. package/src/assets/svgIcons/ed_disconnector_loadbreak switch.svg +4 -0
  26. package/src/assets/svgIcons/ed_disconnector_switch.svg +4 -0
  27. package/src/assets/svgIcons/ed_disconnector_switch_auto_release.svg +5 -0
  28. package/src/assets/svgIcons/ed_energymanagement_rectangle.svg +3 -0
  29. package/src/assets/svgIcons/ed_evcharger.svg +19 -0
  30. package/src/assets/svgIcons/ed_flexiblecomponent_circle.svg +3 -0
  31. package/src/assets/svgIcons/ed_flexiblecomponent_square.svg +3 -0
  32. package/src/assets/svgIcons/ed_fuse.svg +3 -0
  33. package/src/assets/svgIcons/ed_ground.svg +5 -0
  34. package/src/assets/svgIcons/ed_heatpump.svg +4 -0
  35. package/src/assets/svgIcons/ed_icon_battery.svg +9 -0
  36. package/src/assets/svgIcons/ed_icon_circle.svg +3 -0
  37. package/src/assets/svgIcons/ed_icon_heatpump.svg +3 -0
  38. package/src/assets/svgIcons/ed_icon_inverter.svg +8 -0
  39. package/src/assets/svgIcons/ed_icon_optimizer.svg +11 -0
  40. package/src/assets/svgIcons/ed_integratedbatteryinverter.svg +10 -0
  41. package/src/assets/svgIcons/ed_inverter-blank.svg +3 -0
  42. package/src/assets/svgIcons/ed_mainsconnection.svg +3 -0
  43. package/src/assets/svgIcons/ed_meter_arrowleft.svg +4 -0
  44. package/src/assets/svgIcons/ed_meter_arrowright.svg +4 -0
  45. package/src/assets/svgIcons/ed_meter_bidirectional.svg +5 -0
  46. package/src/assets/svgIcons/ed_networkandsystemprotection_double.svg +14 -0
  47. package/src/assets/svgIcons/ed_networkandsystemprotection_single.svg +7 -0
  48. package/src/assets/svgIcons/ed_pvpanel.svg +7 -0
  49. package/src/assets/svgIcons/ed_rcd.svg +5 -0
  50. package/src/assets/svgIcons/ed_rcd_simple.svg +3 -0
  51. package/src/assets/svgIcons/ed_spd.svg +6 -0
  52. package/src/assets/svgIcons/ed_stringwithoptimizer.svg +33 -0
  53. package/src/assets/svgIcons/ed_stringwithoutoptimizer.svg +17 -0
  54. package/src/assets/svgIcons/ed_transformer.svg +3 -0
  55. package/src/assets/svgIcons/filter.svg +3 -0
  56. package/src/assets/svgIcons/ground_symbol.svg +28 -0
  57. package/src/assets/svgIcons/move_left.svg +3 -0
  58. package/src/assets/svgIcons/move_right.svg +3 -0
  59. package/src/assets/svgIcons/rectangle.svg +3 -0
  60. package/src/assets/svgIcons/refresh.svg +3 -0
  61. package/src/assets/svgIcons/text_icon.svg +3 -0
  62. package/src/assets/theme.js +17 -1
  63. package/src/components/banner/infoBanner/InfoBanner.spec.js +29 -42
  64. package/src/components/barchart/BottomFields.vue +253 -0
  65. package/src/components/barchart/ChartControls.vue +113 -0
  66. package/src/components/barchart/SelectionBox.vue +150 -0
  67. package/src/components/barchart/composables/index.js +5 -0
  68. package/src/components/barchart/composables/useAxisCalculations.js +104 -0
  69. package/src/components/barchart/composables/useChartData.js +114 -0
  70. package/src/components/barchart/composables/useChartScroll.js +61 -0
  71. package/src/components/barchart/composables/useSelection.js +75 -0
  72. package/src/components/barchart/composables/useTooltip.js +100 -0
  73. package/src/components/barchart/index.vue +385 -0
  74. package/src/components/barchart/styles/bottomFields.js +66 -0
  75. package/src/components/barchart/styles/chart.js +272 -0
  76. package/src/components/barchart/styles/chartControls.js +59 -0
  77. package/src/components/buttons/buttonIcon/index.vue +5 -0
  78. package/src/components/buttons/splitButtons/index.vue +86 -0
  79. package/src/components/collapsableInfoText/index.vue +2 -2
  80. package/src/components/errorMessage/errorMessage.spec.js +34 -0
  81. package/src/components/errorMessage/errorMessage.stories.js +35 -0
  82. package/src/components/filter/filterSettings.vue +2 -0
  83. package/src/components/filterComponent/viewFilter.vue +577 -0
  84. package/src/components/filterComponent/viewSort.vue +242 -12
  85. package/src/components/icon/index.vue +32 -9
  86. package/src/components/infoText/index.vue +2 -2
  87. package/src/components/infoText/infoText.spec.js +6 -1
  88. package/src/components/inputs/inputNumber/index.vue +14 -2
  89. package/src/components/inputs/searchInput/index.vue +18 -2
  90. package/src/components/inputs/select/index.vue +109 -19
  91. package/src/components/inputs/select/option/index.vue +5 -0
  92. package/src/components/modals/actionModal/actionModal.spec.js +52 -0
  93. package/src/components/modals/actionModal/actionModal.stories.js +53 -0
  94. package/src/components/modals/actionModal/index.vue +6 -6
  95. package/src/components/modals/infoModal/index.vue +49 -19
  96. package/src/components/modals/infoModal/infoModal.spec.js +55 -0
  97. package/src/components/modals/infoModal/infoModal.stories.js +47 -0
  98. package/src/components/modals/modal/index.vue +16 -5
  99. package/src/components/pageSubtitle/PageSubtitle.stories.js +0 -1
  100. package/src/helpers/isObjectEqual.js +22 -0
  101. package/src/helpers/translateLang.js +95 -24
  102. package/src/main.js +1 -0
@@ -10,6 +10,148 @@
10
10
  <ButtonWrapper v-if="isOptionsVisible">
11
11
  <BoxContainer class="box-container">
12
12
  <BoxTitle>{{ $gettext('sort') }}</BoxTitle>
13
+ <SortOptionsContainer>
14
+ <template v-if="selectedSort.length > 0">
15
+ <SortDropdownContainer
16
+ v-for="(item, index) in selectedSort"
17
+ :key="index"
18
+ >
19
+ <SelectComponent
20
+ ref="selectSortDropdown"
21
+ align-items="vertical"
22
+ class="sort-dropdown"
23
+ :dropdown-auto-close="false"
24
+ select-height="40px"
25
+ @click.stop
26
+ @input-change="
27
+ onSelectSort({
28
+ type: 'column',
29
+ value: $event,
30
+ index: index,
31
+ })
32
+ "
33
+ >
34
+ <template #selector>
35
+ <SelectedText>{{
36
+ getSelectedLabel({ type: 'column', value: item.column }) ||
37
+ $gettext('category')
38
+ }}</SelectedText>
39
+ </template>
40
+ <template #dropdown>
41
+ <SelectOption
42
+ v-for="(item, index) in sortOptions"
43
+ :key="item.value"
44
+ :value="item.value"
45
+ >
46
+ {{ item.label }}
47
+ </SelectOption>
48
+ </template>
49
+ </SelectComponent>
50
+ <SelectComponent
51
+ ref="selectSortDropdown"
52
+ align-items="vertical"
53
+ class="sort-dropdown"
54
+ :dropdown-auto-close="false"
55
+ select-height="40px"
56
+ @click.stop
57
+ @input-change="
58
+ onSelectSort({
59
+ type: 'direction',
60
+ value: $event,
61
+ index: index,
62
+ })
63
+ "
64
+ >
65
+ <template #selector>
66
+ <SelectedText>{{
67
+ getSelectedLabel({
68
+ type: 'direction',
69
+ value: item.direction,
70
+ }) || $gettext('constraint')
71
+ }}</SelectedText>
72
+ </template>
73
+ <template #dropdown>
74
+ <SelectOption
75
+ v-for="(item, index) in directionOptions"
76
+ :key="item.value"
77
+ :value="item.value"
78
+ >
79
+ {{ item.label }}
80
+ </SelectOption>
81
+ </template>
82
+ </SelectComponent>
83
+ <IconContainer>
84
+ <RCIcon
85
+ :color="theme.semanticColors.teal[800]"
86
+ cursor="pointer"
87
+ name="close"
88
+ size="14px"
89
+ @click.stop="removeItem(index)"
90
+ />
91
+ </IconContainer>
92
+ </SortDropdownContainer>
93
+ </template>
94
+ <template v-else>
95
+ <SortDropdownContainer>
96
+ <SelectComponent
97
+ ref="selectSortDropdown"
98
+ align-items="vertical"
99
+ class="sort-dropdown"
100
+ :dropdown-auto-close="false"
101
+ select-height="40px"
102
+ @click.stop
103
+ @input-change="
104
+ onSelectSort({
105
+ type: 'column',
106
+ value: $event,
107
+ index: 0,
108
+ })
109
+ "
110
+ >
111
+ <template #selector>
112
+ <SelectedText>{{ $gettext('category') }}</SelectedText>
113
+ </template>
114
+ <template #dropdown>
115
+ <SelectOption
116
+ v-for="(item, index) in sortOptions"
117
+ :key="item.value"
118
+ :value="item.value"
119
+ >
120
+ {{ item.label }}
121
+ </SelectOption>
122
+ </template>
123
+ </SelectComponent>
124
+ <SelectComponent
125
+ ref="selectSortDropdown"
126
+ align-items="vertical"
127
+ class="sort-dropdown"
128
+ :dropdown-auto-close="false"
129
+ select-height="40px"
130
+ @click.stop
131
+ @input-change="
132
+ onSelectSort({
133
+ type: 'direction',
134
+ value: $event,
135
+ index: 0,
136
+ })
137
+ "
138
+ >
139
+ <template #selector>
140
+ <SelectedText>{{ $gettext('constraint') }}</SelectedText>
141
+ </template>
142
+ <template #dropdown>
143
+ <SelectOption
144
+ v-for="(item, index) in directionOptions"
145
+ :key="item.value"
146
+ :value="item.value"
147
+ >
148
+ {{ item.label }}
149
+ </SelectOption>
150
+ </template>
151
+ </SelectComponent>
152
+ </SortDropdownContainer>
153
+ </template>
154
+ </SortOptionsContainer>
13
155
  </BoxContainer>
14
156
  </ButtonWrapper>
15
157
  </PageContainer>
@@ -18,6 +160,10 @@
18
160
  <script>
19
161
  import styled from 'vue3-styled-components'
20
162
  import ButtonIcon from '../buttons/buttonIcon/index.vue'
163
+ import SelectComponent from '../inputs/select/index.vue'
164
+ import SelectOption from '../inputs/select/option/index.vue'
165
+ import RCIcon from '../icon'
166
+ import theme from '../../assets/theme'
21
167
 
22
168
  const PageContainer = styled.div``
23
169
 
@@ -45,6 +191,30 @@
45
191
  margin-bottom: 16px;
46
192
  `
47
193
 
194
+ const SortOptionsContainer = styled.div`
195
+ display: flex;
196
+ flex-direction: column;
197
+ gap: 16px;
198
+ white-space: nowrap;
199
+ `
200
+
201
+ const SortDropdownContainer = styled.div`
202
+ display: flex;
203
+ flex-direction: row;
204
+ gap: 8px;
205
+ align-items: center;
206
+ `
207
+
208
+ const SelectedText = styled.div`
209
+ font-size: 14px;
210
+ font-weight: 400;
211
+ color: ${(props) => props.theme.semanticColors.grey[800]};
212
+ `
213
+
214
+ const IconContainer = styled.div`
215
+ margin-left: 12px;
216
+ `
217
+
48
218
  export default {
49
219
  name: 'ViewSettings',
50
220
  components: {
@@ -53,40 +223,100 @@
53
223
  ButtonWrapper,
54
224
  BoxContainer,
55
225
  BoxTitle,
226
+ SortOptionsContainer,
227
+ SortDropdownContainer,
228
+ SelectComponent,
229
+ SelectOption,
230
+ SelectedText,
231
+ RCIcon,
232
+ IconContainer,
233
+ },
234
+ props: {
235
+ sortOptions: {
236
+ type: Array,
237
+ required: true,
238
+ },
239
+ selectedSort: {
240
+ type: Array,
241
+ required: true,
242
+ },
56
243
  },
57
- props: {},
58
244
  data() {
59
245
  return {
60
246
  isOptionsVisible: false,
61
247
  }
62
248
  },
63
- mounted() {
64
- // Remove the mounted event listener since we now handle it in toggleOptions
249
+ computed: {
250
+ directionOptions() {
251
+ return [
252
+ {
253
+ value: 'ascending',
254
+ label: this.$gettext('ascending'),
255
+ },
256
+ {
257
+ value: 'descending',
258
+ label: this.$gettext('descending'),
259
+ },
260
+ ]
261
+ },
262
+ theme() {
263
+ return theme
264
+ },
65
265
  },
266
+ mounted() {},
66
267
  beforeUnmount() {
67
268
  document.removeEventListener('click', this.handleClickOutside)
68
269
  },
69
270
  methods: {
70
- toggleOptions() {
71
- this.isOptionsVisible = !this.isOptionsVisible
72
- if (this.isOptionsVisible) {
73
- document.addEventListener('click', this.handleClickOutside)
74
- } else {
75
- document.removeEventListener('click', this.handleClickOutside)
76
- }
77
- },
78
271
  handleClickOutside(event) {
79
272
  const buttonIcon = this.$el.querySelector('.button-icon')
80
273
  const boxContainer = this.$el.querySelector('.box-container')
274
+ const isClickInSelect =
275
+ event.target.closest('.sort-dropdown') ||
276
+ event.target.closest('.rc-select-dropdown') ||
277
+ event.target.closest('.select-button') ||
278
+ event.target.closest('.caret_dropdown')
81
279
 
82
280
  if (
83
281
  !buttonIcon.contains(event.target) &&
84
- !boxContainer.contains(event.target)
282
+ !boxContainer.contains(event.target) &&
283
+ !isClickInSelect
85
284
  ) {
86
285
  this.isOptionsVisible = false
87
286
  document.removeEventListener('click', this.handleClickOutside)
88
287
  }
89
288
  },
289
+ toggleOptions() {
290
+ this.isOptionsVisible = !this.isOptionsVisible
291
+ if (this.isOptionsVisible) {
292
+ document.addEventListener('click', this.handleClickOutside)
293
+ } else {
294
+ document.removeEventListener('click', this.handleClickOutside)
295
+ }
296
+ },
297
+ getSelectedLabel({ type, value }) {
298
+ if (!value) return
299
+ if (type === 'column') {
300
+ return this.sortOptions.find((option) => option.value === value).label
301
+ } else if (type === 'direction') {
302
+ return this.directionOptions.find((option) => option.value === value)
303
+ .label
304
+ }
305
+ },
306
+ onSelectSort({ type, value, index }) {
307
+ this.$emit('on-sort-change', {
308
+ type,
309
+ value,
310
+ index,
311
+ })
312
+ this.isOptionsVisible = true
313
+ },
314
+ removeItem(index) {
315
+ this.$emit('on-sort-change', {
316
+ type: 'remove',
317
+ index,
318
+ })
319
+ },
90
320
  },
91
321
  }
92
322
  </script>
@@ -3,13 +3,15 @@
3
3
  :cursor="cursor"
4
4
  data-test-id="icon_wrapper"
5
5
  :disabled="disabled"
6
- :size="size"
6
+ :height="height ? height : size"
7
+ :width="width ? width : size"
7
8
  >
8
9
  <IconImage
9
10
  :animation="animation"
10
11
  :background-color="backgroundColor"
11
12
  :color="color"
12
13
  data-test-id="icon_image"
14
+ :disable-hover="disableHover"
13
15
  :fill-type="fillType"
14
16
  :hovered-color="hoveredColor"
15
17
  >
@@ -67,6 +69,16 @@
67
69
  default: '30px',
68
70
  type: String,
69
71
  },
72
+ width: {
73
+ type: String,
74
+ required: false,
75
+ default: '',
76
+ },
77
+ height: {
78
+ type: String,
79
+ required: false,
80
+ default: '',
81
+ },
70
82
  cursor: {
71
83
  required: false,
72
84
  default: null,
@@ -97,10 +109,15 @@
97
109
  default: 'fill',
98
110
  type: String,
99
111
  },
112
+ disableHover: {
113
+ type: Boolean,
114
+ default: false,
115
+ },
100
116
  })
101
117
 
102
118
  const Wrapper = styled('div', {
103
- size: String,
119
+ height: String,
120
+ width: String,
104
121
  disabled: Boolean,
105
122
  cursor: String,
106
123
  })`
@@ -108,10 +125,10 @@
108
125
  position: relative;
109
126
  align-content: center;
110
127
  justify-content: center;
111
- width: ${(props) => props.size};
112
- height: ${(props) => props.size};
113
- min-width: ${(props) => props.size};
114
- min-height: ${(props) => props.size};
128
+ width: ${(props) => props.width};
129
+ height: ${(props) => props.height};
130
+ min-width: ${(props) => props.width};
131
+ min-height: ${(props) => props.height};
115
132
  cursor: ${(props) => (props.disabled ? 'not-allowed' : props.cursor)};
116
133
  line-height: 0;
117
134
  `
@@ -152,6 +169,7 @@
152
169
  hoveredColor: String,
153
170
  animation: String,
154
171
  fillType: String,
172
+ disableHover: Boolean,
155
173
  }
156
174
  const IconImage = styled('div', IconImageAttrs)`
157
175
  animation: ${(props) => props.animation};
@@ -168,12 +186,17 @@
168
186
  ${({ theme, color, fillType }) =>
169
187
  color && `${fillType}: ${theme.colors[color] || color};`}
170
188
  }
171
- &:hover svg path:not(.fix) {
172
- ${(props) => `${props.fillType}: ${props.hoveredColor || props.color};`}
189
+ ${(props) =>
190
+ !props.disableHover &&
191
+ `
192
+ &:hover svg path:not(.fix) {
193
+ ${`${props.fillType}: ${props.hoveredColor || props.color};`}
173
194
  }
174
195
  &:hover + div {
175
- background-color: ${(props) => props.hoveredColor};
196
+ background-color: ${props.hoveredColor};
176
197
  }
198
+ `}
199
+
177
200
  @keyframes fade {
178
201
  50% {
179
202
  opacity: 0.3;
@@ -46,7 +46,7 @@
46
46
  </IconWrapper>
47
47
  </div>
48
48
  <Teleport v-if="isVisible" to="body">
49
- <TextWrapper :style="wrapperStyle">
49
+ <TextWrapper data-test-id="info_text_wrapper" :style="wrapperStyle">
50
50
  <TextOverlay
51
51
  ref="infoBox"
52
52
  :app-theme="appTheme"
@@ -137,7 +137,7 @@
137
137
  `
138
138
 
139
139
  const TextWrapper = styled('div')`
140
- z-index: 99999;
140
+ z-index: 9999999999;
141
141
  position: absolute;
142
142
  `
143
143
 
@@ -29,6 +29,9 @@ describe('InfoText Component', () => {
29
29
  provide: {
30
30
  theme,
31
31
  },
32
+ stubs: {
33
+ teleport: true
34
+ }
32
35
  },
33
36
  })
34
37
  })
@@ -38,7 +41,6 @@ describe('InfoText Component', () => {
38
41
  expect(wrapper.vm.text).toContain('default text')
39
42
  expect(wrapper.vm.size).toContain('14px')
40
43
  expect(wrapper.vm.infoPosition).toContain('bottom')
41
- expect(wrapper.vm.alignArrow).toContain('center')
42
44
  })
43
45
 
44
46
  test('openTrigger prop is set to onClick', async () => {
@@ -48,8 +50,11 @@ describe('InfoText Component', () => {
48
50
  expect(wrapper.find('[data-test-id="info_text_wrapper"]').exists()).toBe(
49
51
  false
50
52
  )
53
+
51
54
  //should see text upon click
52
55
  await wrapper.find('[data-test-id="infoText_trigger"]').trigger('click')
56
+ expect(wrapper.vm.isVisible).toBe(true)
57
+
53
58
  expect(wrapper.find('[data-test-id="info_text_wrapper"]').exists()).toBe(
54
59
  true
55
60
  )
@@ -56,6 +56,7 @@
56
56
  :min-width="minWidth"
57
57
  :no-border="noBorder"
58
58
  :placeholder="displayedPlaceholder"
59
+ :read-only="isReadOnly"
59
60
  :show-arrow-controls="showArrowControls"
60
61
  :show-linear-unit-name="showLinearUnitName"
61
62
  :slot-size="slotSize"
@@ -163,6 +164,7 @@
163
164
  // labelInfoAlign="left"
164
165
  // :minNumber="0"
165
166
  // fontColor="blue"
167
+ // :isReadOnly="true"
166
168
  // colorMode="transparent" // Makes background transparent, border white, and font white
167
169
  // >
168
170
  //<template name=label><img>....</template>
@@ -202,6 +204,7 @@
202
204
  showLinearUnitName: Boolean,
203
205
  colorMode: String,
204
206
  showArrowControls: Boolean,
207
+ readOnly: Boolean,
205
208
  }
206
209
 
207
210
  const Container = styled('div', inputProps)`
@@ -250,7 +253,8 @@
250
253
  ? '0 4px 4px 0'
251
254
  : '4px'};
252
255
  text-align: ${(props) => props.textAlign};
253
- cursor: ${(props) => (props.isDisabled ? 'not-allowed' : 'auto')};
256
+ cursor: ${(props) =>
257
+ props.isDisabled || props.readOnly ? 'not-allowed' : 'auto'};
254
258
  font-size: ${(props) => (props.fontSize ? props.fontSize : '13px')};
255
259
  color: ${(props) =>
256
260
  props.isError
@@ -263,7 +267,9 @@
263
267
  ? props.fontColor + ' !important'
264
268
  : props.theme.colors.black};
265
269
  background-color: ${(props) =>
266
- props.isDisabled
270
+ props.readOnly
271
+ ? props.theme.semanticColors.grey[300]
272
+ : props.isDisabled
267
273
  ? props.colorMode === 'transparent'
268
274
  ? 'transparent'
269
275
  : props.theme.colors.grey5
@@ -276,6 +282,8 @@
276
282
  box-sizing: border-box;
277
283
  opacity: ${(props) =>
278
284
  props.isDisabled && props.colorMode === 'transparent' ? '0.4' : '1'};
285
+ pointer-events: ${(props) => (props.readOnly ? 'none' : 'auto')};
286
+ user-select: ${(props) => (props.readOnly ? 'none' : 'auto')};
279
287
 
280
288
  &::placeholder {
281
289
  color: ${(props) => props.theme.colors.grey2};
@@ -686,6 +694,10 @@
686
694
  type: Boolean,
687
695
  default: false,
688
696
  },
697
+ isReadOnly: {
698
+ type: Boolean,
699
+ default: false,
700
+ },
689
701
  },
690
702
  data() {
691
703
  return {
@@ -1,6 +1,10 @@
1
1
  <template>
2
2
  <Container :input-width="inputWidth">
3
- <InputWrapper :icon-color="iconColor" :icon-position="iconPosition">
3
+ <InputWrapper
4
+ :icon-color="iconColor"
5
+ :icon-position="iconPosition"
6
+ :is-full-height="isFullHeight"
7
+ >
4
8
  <SearchIconSvg class="search-icn" />
5
9
  <InputContainer
6
10
  ref="inputElement"
@@ -11,6 +15,7 @@
11
15
  :input-width="inputWidth"
12
16
  :is-disabled="disabled"
13
17
  :is-filter="isFilter"
18
+ :is-full-height="isFullHeight"
14
19
  :placeholder="placeholder"
15
20
  :value="value"
16
21
  @input="onChangeHandler($event)"
@@ -41,6 +46,7 @@
41
46
  isDisabled: Boolean,
42
47
  inputWidth: String,
43
48
  isFilter: Boolean,
49
+ isFullHeight: Boolean,
44
50
  }
45
51
  const Container = styled('div', inputAttrs)`
46
52
  width: ${(props) => (props.inputWidth ? props.inputWidth : '100%')};
@@ -55,6 +61,7 @@
55
61
  font-size: 13px;
56
62
  color: ${(props) => props.theme.colors.black};
57
63
  width: ${(props) => (props.inputWidth ? props.inputWidth : '100%')};
64
+ height: ${(props) => (props.isFullHeight ? '100%' : 'auto')};
58
65
  box-sizing: border-box;
59
66
  cursor: ${(props) => (props.isDisabled ? 'not-allowed' : 'auto')};
60
67
  background: ${(props) => props.theme.colors.white} !important;
@@ -67,9 +74,14 @@
67
74
  }
68
75
  `
69
76
 
70
- const wrapperAttrs = { iconColor: String, iconPosition: String }
77
+ const wrapperAttrs = {
78
+ iconColor: String,
79
+ iconPosition: String,
80
+ isFullHeight: Boolean,
81
+ }
71
82
  const InputWrapper = styled('div', wrapperAttrs)`
72
83
  position: relative;
84
+ height: ${(props) => (props.isFullHeight ? '100%' : 'auto')};
73
85
 
74
86
  svg {
75
87
  position: absolute;
@@ -142,6 +154,10 @@
142
154
  type: String,
143
155
  default: 'black',
144
156
  },
157
+ isFullHeight: {
158
+ type: Boolean,
159
+ default: false,
160
+ },
145
161
  },
146
162
  emits: ['on-change'],
147
163
  watch: {