@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
@@ -0,0 +1,59 @@
1
+ import styled from 'vue3-styled-components'
2
+
3
+ export const Container = styled.div`
4
+ width: 100%;
5
+ `
6
+
7
+ export const LegendAndControlsWrapper = styled('div', { leftMargin: String })`
8
+ margin-left: ${(props) => props.leftMargin};
9
+ display: flex;
10
+ justify-content: space-between;
11
+ align-items: center;
12
+ `
13
+
14
+ export const LeftSection = styled.div`
15
+ flex: 1;
16
+ `
17
+
18
+ export const SplitButtonsContainer = styled('div', { position: String })`
19
+ align-self: ${(props) =>
20
+ props.position === 'top' ? 'flex-end' : 'flex-start'};
21
+ `
22
+
23
+ export const LegendGroups = styled.div`
24
+ display: flex;
25
+ flex-direction: column;
26
+ gap: 8px;
27
+ `
28
+
29
+ export const LegendRow = styled('div', { rowIndex: Number })`
30
+ display: flex;
31
+ gap: 10px;
32
+ align-items: center;
33
+ justify-content: ${(props) =>
34
+ props.rowIndex === 0 ? 'flex-start' : 'flex-end'};
35
+ `
36
+
37
+ export const LegendItem = styled.div`
38
+ display: flex;
39
+ align-items: center;
40
+ gap: 8px;
41
+ `
42
+
43
+ export const LegendColor = styled('div', {
44
+ gradientFrom: String,
45
+ gradientTo: String,
46
+ })`
47
+ width: 16px;
48
+ height: 16px;
49
+ border-radius: 4px;
50
+ background: ${(props) =>
51
+ `linear-gradient(180deg, ${props.gradientFrom} 0%, ${props.gradientTo} 100%)`};
52
+ `
53
+
54
+ export const LegendText = styled.span`
55
+ font-size: 12px;
56
+ font-weight: 400;
57
+ color: ${(props) => props.theme.semanticColors.teal[800]};
58
+ white-space: nowrap;
59
+ `
@@ -21,6 +21,7 @@
21
21
  iconColor ||
22
22
  theme.mainButton[appTheme][type][variant].default.textColor
23
23
  "
24
+ :disable-hover="disableIconHover"
24
25
  :fill-type="fillType"
25
26
  :hovered-color="
26
27
  iconColor ||
@@ -236,6 +237,10 @@
236
237
  default: 'fill',
237
238
  type: String,
238
239
  },
240
+ disableIconHover: {
241
+ type: Boolean,
242
+ default: false,
243
+ },
239
244
  },
240
245
  data() {
241
246
  return {
@@ -0,0 +1,86 @@
1
+ <template>
2
+ <Container>
3
+ <SplitButton
4
+ v-for="(option, index) in options"
5
+ :data-id-key="`${dataIdKey}_${option.value}`"
6
+ :key="index"
7
+ :length="options.length"
8
+ :position="getButtonPosition(index)"
9
+ :selected="modelValue === option.value"
10
+ @click.stop="handleSelect(option.value)"
11
+ >
12
+ {{ option.label }}
13
+ </SplitButton>
14
+ </Container>
15
+ </template>
16
+
17
+ <script setup>
18
+ import styled from 'vue3-styled-components'
19
+ import { computed } from 'vue'
20
+
21
+ const Container = styled.div`
22
+ display: flex;
23
+ width: fit-content;
24
+ `
25
+ const SplitButton = styled('button', {
26
+ selected: Boolean,
27
+ position: String,
28
+ length: Number,
29
+ })`
30
+ padding: 8px 16px;
31
+ border: 1px solid ${(props) => props.theme.semanticColors.teal[100]};
32
+ ${(props) =>
33
+ props.position === 'middle'
34
+ ? `
35
+ border-left: none;
36
+ border-right: none;
37
+ `
38
+ : props.length === 2 && props.position === 'first'
39
+ ? 'border-right: none;'
40
+ : ''}
41
+ border-radius: ${(props) =>
42
+ props.position === 'first'
43
+ ? '4px 0 0 4px'
44
+ : props.position === 'last'
45
+ ? '0 4px 4px 0'
46
+ : '0'};
47
+ font-family: ${(props) => props.theme.fonts.mainFont};
48
+ font-size: 14px;
49
+ font-weight: 400;
50
+ line-height: 100%;
51
+ cursor: pointer;
52
+ background: ${(props) =>
53
+ props.selected ? props.theme.semanticColors.purple[50] : 'transparent'};
54
+ color: ${(props) => props.theme.semanticColors.purple[500]};
55
+ `
56
+
57
+ const props = defineProps({
58
+ options: {
59
+ type: Array,
60
+ required: true,
61
+ // expects array of {label: string, value: string}
62
+ },
63
+ modelValue: {
64
+ type: String,
65
+ required: true,
66
+ },
67
+ dataIdKey: {
68
+ type: String,
69
+ default: '',
70
+ },
71
+ })
72
+
73
+ const emit = defineEmits(['update:modelValue'])
74
+
75
+ const getButtonPosition = computed(() => (index) => {
76
+ if (index === 0) return 'first'
77
+ if (index === props.options.length - 1) return 'last'
78
+
79
+ return 'middle'
80
+ })
81
+
82
+ const handleSelect = (value) => {
83
+ emit('update:modelValue', value)
84
+ emit('click', value)
85
+ }
86
+ </script>
@@ -33,7 +33,7 @@
33
33
  const Text = styled('p', TextAttrs)`
34
34
  display: block;
35
35
  display: -webkit-box;
36
- line-height: 1.3em;
36
+ line-height: 1.5;
37
37
  -webkit-line-clamp: ${(props) => (props.expand ? 'unset' : '4')};
38
38
  -webkit-box-orient: vertical;
39
39
  overflow: hidden;
@@ -49,7 +49,7 @@
49
49
  const ToggleButton = styled('p', TextAttrs)`
50
50
  font-size: ${(props) => props.fontSize}px;
51
51
  cursor: pointer;
52
- color: ${(props) => props.theme.colors.blue};
52
+ color: ${(props) => props.theme.semanticColors.purple[500]};
53
53
  `
54
54
 
55
55
  export default {
@@ -0,0 +1,34 @@
1
+ import { mount } from '@vue/test-utils'
2
+ import ErrorMessage from '@/components/errorMessage'
3
+ import theme from '@/assets/theme'
4
+
5
+ /* eslint-disable */
6
+
7
+ describe('ErrorMessage Component', () => {
8
+ let wrapper
9
+
10
+ beforeEach(() => {
11
+ wrapper = mount(ErrorMessage, {
12
+ props: {},
13
+ slots: {
14
+ default: '<div data-test-id="fake-msg">testing</div>',
15
+ },
16
+ global: {
17
+ provide: {
18
+ theme,
19
+ },
20
+ },
21
+ })
22
+ })
23
+
24
+ test('renders ErrorMessage component with default props', () => {
25
+ expect(wrapper.findAll('[data-test-id="fake-msg"]').length).toBe(1)
26
+ })
27
+
28
+ test('applies the correct CSS class for styling', async () => {
29
+ wrapper.setProps({ marginTop: '20px' })
30
+
31
+ await wrapper.vm.$nextTick()
32
+ expect(wrapper.props().marginTop).toBe('20px')
33
+ })
34
+ })
@@ -0,0 +1,35 @@
1
+ import ErrorMessage from './index.vue'
2
+
3
+ export default {
4
+ title: 'ErrorMessage',
5
+ component: ErrorMessage,
6
+ tags: ['autodocs'],
7
+ parameters: {
8
+ layout: 'centered',
9
+ },
10
+ }
11
+
12
+ // import ErrorMessage from "@eturnity/eturnity_reusable_components/src/components/errorMessage"
13
+ //
14
+ //To use:
15
+ // <error-message>
16
+ // <span>
17
+ // testing error message
18
+ // </span>
19
+ // </error-message>
20
+
21
+ const Template = (args, { argTypes }) => ({
22
+ components: { ErrorMessage },
23
+ props: Object.keys(argTypes),
24
+ template: `
25
+ <ErrorMessage v-bind="$props">
26
+ <span>
27
+ testing error message
28
+ </span>
29
+ </ErrorMessage>`,
30
+ })
31
+
32
+ export const Default = Template.bind({})
33
+ Default.args = {
34
+ marginTop: '13px',
35
+ }
@@ -100,6 +100,7 @@
100
100
  :min-option-length="1"
101
101
  select-height="36px"
102
102
  select-width="100%"
103
+ :should-use-teleport="false"
103
104
  >
104
105
  <template #selector>
105
106
  <OptionTitle> {{ filter.selectedText }} </OptionTitle>
@@ -255,6 +256,7 @@
255
256
  :label="filter.label"
256
257
  select-height="36px"
257
258
  select-width="100%"
259
+ :should-use-teleport="false"
258
260
  >
259
261
  <template #selector="{ selectedValue }">
260
262
  <OptionTitle>