@eturnity/eturnity_reusable_components 1.2.25-EPDM-5202.2 → 1.2.26-EPDM-5363.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.
Files changed (218) hide show
  1. package/.prettierrc +6 -6
  2. package/.storybook/main.js +8 -8
  3. package/.storybook/preview.js +46 -46
  4. package/README.md +29 -29
  5. package/babel.config.js +5 -5
  6. package/package.json +63 -63
  7. package/public/index.html +17 -17
  8. package/src/App.vue +321 -321
  9. package/src/assets/icons/arrow_down.svg +3 -3
  10. package/src/assets/icons/arrow_up_red.svg +3 -3
  11. package/src/assets/icons/black_spinner.svg +35 -35
  12. package/src/assets/icons/delete_icon.svg +11 -11
  13. package/src/assets/icons/delete_icon_gray.svg +11 -11
  14. package/src/assets/icons/drag_icon.svg +8 -8
  15. package/src/assets/icons/external_icon.svg +6 -6
  16. package/src/assets/icons/language_icon.svg +6 -6
  17. package/src/assets/icons/pdf_icon.svg +6 -6
  18. package/src/assets/icons/plus_button.svg +4 -4
  19. package/src/assets/icons/search_icon_black.svg +3 -3
  20. package/src/assets/icons/subposition_icon.svg +3 -3
  21. package/src/assets/icons/subposition_marker.svg +3 -3
  22. package/src/assets/icons/warning_icon.svg +3 -3
  23. package/src/assets/svgIcons/2d_active.svg +7 -7
  24. package/src/assets/svgIcons/2d_inactive.svg +8 -8
  25. package/src/assets/svgIcons/3d_active.svg +7 -7
  26. package/src/assets/svgIcons/3d_inactive.svg +8 -8
  27. package/src/assets/svgIcons/accept.svg +5 -5
  28. package/src/assets/svgIcons/activate_panels_active.svg +22 -22
  29. package/src/assets/svgIcons/activate_panels_inactive.svg +20 -20
  30. package/src/assets/svgIcons/add_icon-1.svg +3 -3
  31. package/src/assets/svgIcons/add_icon.svg +4 -4
  32. package/src/assets/svgIcons/address_book.svg +3 -3
  33. package/src/assets/svgIcons/after_sale_as_a_service.svg +6 -6
  34. package/src/assets/svgIcons/all_good.svg +3 -3
  35. package/src/assets/svgIcons/angle_active.svg +5 -5
  36. package/src/assets/svgIcons/angle_inactive.svg +4 -4
  37. package/src/assets/svgIcons/area_active.svg +11 -11
  38. package/src/assets/svgIcons/area_inactive.svg +26 -26
  39. package/src/assets/svgIcons/arrow_down.svg +3 -3
  40. package/src/assets/svgIcons/arrow_left.svg +4 -4
  41. package/src/assets/svgIcons/arrow_right.svg +4 -4
  42. package/src/assets/svgIcons/arrow_up.svg +3 -3
  43. package/src/assets/svgIcons/attachment.svg +3 -3
  44. package/src/assets/svgIcons/battery.svg +3 -3
  45. package/src/assets/svgIcons/bell.svg +3 -3
  46. package/src/assets/svgIcons/bold.svg +3 -3
  47. package/src/assets/svgIcons/bom.svg +3 -3
  48. package/src/assets/svgIcons/bom_generation.svg +10 -10
  49. package/src/assets/svgIcons/bookmaker.svg +3 -3
  50. package/src/assets/svgIcons/bubble.svg +3 -3
  51. package/src/assets/svgIcons/bullet_list.svg +8 -8
  52. package/src/assets/svgIcons/calendar.svg +7 -7
  53. package/src/assets/svgIcons/calendar_icon.svg +7 -7
  54. package/src/assets/svgIcons/call.svg +3 -3
  55. package/src/assets/svgIcons/camera.svg +3 -3
  56. package/src/assets/svgIcons/car.svg +3 -3
  57. package/src/assets/svgIcons/cart.svg +3 -3
  58. package/src/assets/svgIcons/checkbox.svg +3 -3
  59. package/src/assets/svgIcons/clear_formatting.svg +7 -7
  60. package/src/assets/svgIcons/clickable_info.svg +4 -4
  61. package/src/assets/svgIcons/clip.svg +3 -3
  62. package/src/assets/svgIcons/clock.svg +4 -4
  63. package/src/assets/svgIcons/close_for_modals,_tool_tips.svg +4 -4
  64. package/src/assets/svgIcons/collapse.svg +4 -4
  65. package/src/assets/svgIcons/component_library.svg +7 -7
  66. package/src/assets/svgIcons/context_menu-1.svg +6 -6
  67. package/src/assets/svgIcons/context_menu-2.svg +5 -5
  68. package/src/assets/svgIcons/context_menu.svg +5 -5
  69. package/src/assets/svgIcons/context_menu_tabs.svg +5 -5
  70. package/src/assets/svgIcons/cross.svg +4 -4
  71. package/src/assets/svgIcons/current_variant.svg +4 -4
  72. package/src/assets/svgIcons/deadline.svg +4 -4
  73. package/src/assets/svgIcons/delete.svg +4 -4
  74. package/src/assets/svgIcons/delete_area_active.svg +16 -16
  75. package/src/assets/svgIcons/delete_area_inactive.svg +15 -15
  76. package/src/assets/svgIcons/direction_active-1.svg +12 -12
  77. package/src/assets/svgIcons/direction_active.svg +5 -5
  78. package/src/assets/svgIcons/direction_inactive.svg +4 -4
  79. package/src/assets/svgIcons/distances_active.svg +9 -9
  80. package/src/assets/svgIcons/distances_inactive.svg +8 -8
  81. package/src/assets/svgIcons/document.svg +3 -3
  82. package/src/assets/svgIcons/downarrow.svg +3 -3
  83. package/src/assets/svgIcons/download.svg +4 -4
  84. package/src/assets/svgIcons/duplicate-1.svg +8 -8
  85. package/src/assets/svgIcons/duplicate-2.svg +5 -5
  86. package/src/assets/svgIcons/duplicate.svg +4 -4
  87. package/src/assets/svgIcons/e-mobility_configurator.svg +6 -6
  88. package/src/assets/svgIcons/edit_button.svg +3 -3
  89. package/src/assets/svgIcons/email.svg +3 -3
  90. package/src/assets/svgIcons/ems-1.svg +3 -3
  91. package/src/assets/svgIcons/ems.svg +3 -3
  92. package/src/assets/svgIcons/end_of_the_list.svg +5 -5
  93. package/src/assets/svgIcons/erase.svg +4 -4
  94. package/src/assets/svgIcons/fav_icon.svg +4 -4
  95. package/src/assets/svgIcons/financing_for_pv-1.svg +5 -5
  96. package/src/assets/svgIcons/financing_for_pv-2.svg +3 -3
  97. package/src/assets/svgIcons/financing_for_pv.svg +6 -6
  98. package/src/assets/svgIcons/finish-1.svg +4 -4
  99. package/src/assets/svgIcons/finish.svg +3 -3
  100. package/src/assets/svgIcons/folder.svg +3 -3
  101. package/src/assets/svgIcons/heat_calc.svg +7 -7
  102. package/src/assets/svgIcons/house.svg +3 -3
  103. package/src/assets/svgIcons/info.svg +3 -3
  104. package/src/assets/svgIcons/initial_situation.svg +3 -3
  105. package/src/assets/svgIcons/intro-tour-1.svg +3 -3
  106. package/src/assets/svgIcons/intro-tour.svg +3 -3
  107. package/src/assets/svgIcons/inverter-1.svg +5 -5
  108. package/src/assets/svgIcons/inverter.svg +3 -3
  109. package/src/assets/svgIcons/italic.svg +3 -3
  110. package/src/assets/svgIcons/key.svg +3 -3
  111. package/src/assets/svgIcons/lead_marketplace.svg +6 -6
  112. package/src/assets/svgIcons/lead_provider.svg +4 -4
  113. package/src/assets/svgIcons/length_in_2d_active.svg +12 -12
  114. package/src/assets/svgIcons/length_in_2d_inctive.svg +13 -13
  115. package/src/assets/svgIcons/light_bulb.svg +3 -3
  116. package/src/assets/svgIcons/line_graph.svg +3 -3
  117. package/src/assets/svgIcons/local_subsidies.svg +18 -18
  118. package/src/assets/svgIcons/location.svg +3 -3
  119. package/src/assets/svgIcons/lock.svg +3 -3
  120. package/src/assets/svgIcons/loop.svg +3 -3
  121. package/src/assets/svgIcons/lunch.svg +4 -4
  122. package/src/assets/svgIcons/map_icon.svg +3 -3
  123. package/src/assets/svgIcons/meeting.svg +6 -6
  124. package/src/assets/svgIcons/move_copy.svg +4 -4
  125. package/src/assets/svgIcons/new_area_inactive.svg +11 -11
  126. package/src/assets/svgIcons/next.svg +4 -4
  127. package/src/assets/svgIcons/not_equal_to.svg +3 -3
  128. package/src/assets/svgIcons/numbered_list.svg +6 -6
  129. package/src/assets/svgIcons/obstacle_tool.svg +13 -13
  130. package/src/assets/svgIcons/pan_tool.svg +12 -12
  131. package/src/assets/svgIcons/panels_tool.svg +8 -8
  132. package/src/assets/svgIcons/pen_tool.svg +4 -4
  133. package/src/assets/svgIcons/picker_tool.svg +4 -4
  134. package/src/assets/svgIcons/picture.svg +3 -3
  135. package/src/assets/svgIcons/pin.svg +5 -5
  136. package/src/assets/svgIcons/presentation.svg +3 -3
  137. package/src/assets/svgIcons/previous.svg +4 -4
  138. package/src/assets/svgIcons/profile-1.svg +4 -4
  139. package/src/assets/svgIcons/profile.svg +4 -4
  140. package/src/assets/svgIcons/profitability.svg +3 -3
  141. package/src/assets/svgIcons/project_analysis.svg +4 -4
  142. package/src/assets/svgIcons/project_settings.svg +4 -4
  143. package/src/assets/svgIcons/pv.svg +3 -3
  144. package/src/assets/svgIcons/quotations.svg +6 -6
  145. package/src/assets/svgIcons/rotate_view.svg +5 -5
  146. package/src/assets/svgIcons/run_simulation.svg +3 -3
  147. package/src/assets/svgIcons/scaling_tool.svg +8 -8
  148. package/src/assets/svgIcons/search.svg +3 -3
  149. package/src/assets/svgIcons/security.svg +3 -3
  150. package/src/assets/svgIcons/settings.svg +3 -3
  151. package/src/assets/svgIcons/show_in_a_new_tab.svg +12 -12
  152. package/src/assets/svgIcons/smartphone.svg +4 -4
  153. package/src/assets/svgIcons/solar_calc.svg +13 -13
  154. package/src/assets/svgIcons/sorting.svg +4 -4
  155. package/src/assets/svgIcons/start_of_the_list.svg +5 -5
  156. package/src/assets/svgIcons/strikethrough.svg +4 -4
  157. package/src/assets/svgIcons/subsidies-1.svg +5 -5
  158. package/src/assets/svgIcons/subsidies-2.svg +3 -3
  159. package/src/assets/svgIcons/subsidies.svg +3 -3
  160. package/src/assets/svgIcons/subtract_icon.svg +3 -3
  161. package/src/assets/svgIcons/suitcase.svg +3 -3
  162. package/src/assets/svgIcons/template_icon_not_clickable.svg +6 -6
  163. package/src/assets/svgIcons/transfer.svg +4 -4
  164. package/src/assets/svgIcons/truck.svg +3 -3
  165. package/src/assets/svgIcons/underlined.svg +3 -3
  166. package/src/assets/svgIcons/uparrow.svg +3 -3
  167. package/src/assets/svgIcons/upload_avatar-1.svg +12 -12
  168. package/src/assets/svgIcons/upload_avatar.svg +5 -5
  169. package/src/assets/svgIcons/upload_image.svg +8 -8
  170. package/src/assets/svgIcons/virtual_storage.svg +4 -4
  171. package/src/assets/svgIcons/warning.svg +4 -4
  172. package/src/assets/svgIcons/way.svg +5 -5
  173. package/src/assets/svgIcons/wifi.svg +3 -3
  174. package/src/assets/svgIcons/winter.svg +3 -3
  175. package/src/assets/theme.js +34 -34
  176. package/src/components/addNewButton/AddNewButton.stories.js +24 -24
  177. package/src/components/addNewButton/index.vue +58 -58
  178. package/src/components/buttons/closeButton/CloseButton.stories.js +29 -29
  179. package/src/components/buttons/closeButton/index.vue +61 -61
  180. package/src/components/buttons/externalButton/index.vue +101 -101
  181. package/src/components/buttons/mainButton/index.vue +82 -82
  182. package/src/components/deleteIcon/DeleteIcon.stories.js +29 -29
  183. package/src/components/deleteIcon/index.vue +55 -55
  184. package/src/components/icon/Icons.stories.js +41 -41
  185. package/src/components/icon/iconCollection.vue +68 -68
  186. package/src/components/icon/index.vue +83 -83
  187. package/src/components/infoText/index.vue +151 -151
  188. package/src/components/inputs/checkbox/Checkbox.stories.js +57 -57
  189. package/src/components/inputs/checkbox/index.vue +182 -182
  190. package/src/components/inputs/inputNumber/InputNumber.stories.js +150 -150
  191. package/src/components/inputs/inputNumber/index.vue +390 -390
  192. package/src/components/inputs/inputNumberQuestion/index.vue +215 -215
  193. package/src/components/inputs/inputText/InputText.stories.js +75 -75
  194. package/src/components/inputs/inputText/index.vue +253 -253
  195. package/src/components/inputs/radioButton/RadioButton.stories.js +58 -58
  196. package/src/components/inputs/radioButton/index.vue +246 -246
  197. package/src/components/inputs/searchInput/SearchInput.stories.js +40 -40
  198. package/src/components/inputs/searchInput/index.vue +97 -97
  199. package/src/components/inputs/slider/index.vue +126 -126
  200. package/src/components/inputs/textAreaInput/TextAreaInput.stories.js +135 -135
  201. package/src/components/inputs/textAreaInput/index.vue +189 -189
  202. package/src/components/inputs/toggle/Toggle.stories.js +77 -77
  203. package/src/components/inputs/toggle/index.vue +288 -288
  204. package/src/components/modals/modal/index.vue +154 -154
  205. package/src/components/modals/modal/modal.stories.js +31 -31
  206. package/src/components/pageSubtitle/index.vue +68 -68
  207. package/src/components/pageTitle/index.vue +45 -45
  208. package/src/components/progressBar/index.vue +125 -125
  209. package/src/components/projectMarker/index.vue +285 -285
  210. package/src/components/spinner/index.vue +71 -71
  211. package/src/components/tableDropdown/index.vue +644 -644
  212. package/src/components/tables/mainTable/exampleNested.vue +328 -328
  213. package/src/components/tables/mainTable/index.vue +379 -379
  214. package/src/components/tables/viewTable/index.vue +195 -195
  215. package/src/components/threeDots/index.vue +333 -333
  216. package/src/helpers/numberConverter.js +98 -98
  217. package/src/helpers/translateLang.js +80 -80
  218. package/src/main.js +13 -13
@@ -1,379 +1,379 @@
1
- <template>
2
- <page-container>
3
- <table-title v-if="titleText">
4
- {{ titleText }}
5
- </table-title>
6
- <table-scroll>
7
- <table-wrapper :fullWidth="fullWidth">
8
- <spinner-wrapper v-if="isLoading">
9
- <spinner />
10
- </spinner-wrapper>
11
- <table-container
12
- v-else
13
- :cellPaddings="cellPaddings"
14
- :tableCursor="tableCursor"
15
- >
16
- <slot />
17
- </table-container>
18
- </table-wrapper>
19
- </table-scroll>
20
- </page-container>
21
- </template>
22
-
23
- <script>
24
- // ToDo: add this to storybook
25
- // import MainTable from "@eturnity/eturnity_reusable_components/src/components/tables/mainTable"
26
- import styled from 'vue-styled-components'
27
- import Spinner from '../../spinner'
28
-
29
- const PageContainer = styled.div``
30
-
31
- const TableTitle = styled.div`
32
- margin-bottom: 16px;
33
- font-weight: bold;
34
- font-size: 14px;
35
- text-transform: uppercase;
36
- `
37
-
38
- const TableScroll = styled.div`
39
- max-width: 100%;
40
- `
41
-
42
- const wrapperAttrs = { fullWidth: Boolean }
43
- const TableWrapper = styled('div', wrapperAttrs)`
44
- width: ${(props) => (props.fullWidth ? '100%' : 'fit-content')};
45
- max-width: 100%;
46
- overflow: auto;
47
-
48
- ::-webkit-scrollbar {
49
- height: 5px; //height of the whole scrollbar area
50
- }
51
-
52
- ::-webkit-scrollbar-track {
53
- background: ${(props) => props.theme.colors.grey2};
54
- border-radius: 4px;
55
- }
56
-
57
- ::-webkit-scrollbar-thumb {
58
- border-bottom: 5px solid ${(props) => props.theme.colors.purple}; // width of the actual scrollbar
59
- border-radius: 4px;
60
- }
61
- `
62
-
63
- const SpinnerWrapper = styled.div`
64
- height: 150px;
65
- display: grid;
66
- align-items: center;
67
- justify-items: center;
68
- `
69
-
70
- const containerAttrs = { cellPaddings: String, tableCursor: String }
71
- const TableContainer = styled('table', containerAttrs)`
72
- width: 100%;
73
- border-collapse: collapse;
74
- border: none;
75
- font-size: 13px;
76
-
77
- thead {
78
- font-weight: bold;
79
-
80
- tr {
81
- border-bottom: none !important;
82
- }
83
- }
84
-
85
- tbody {
86
- tr {
87
- &:hover {
88
- background-color: ${(props) => props.theme.colors.white};
89
- cursor: ${(props) => (props.tableCursor ? props.tableCursor : 'auto')};
90
-
91
- .arrow-container,
92
- .input-placeholder,
93
- .table-dropdown-item {
94
- background-color: ${(props) => props.theme.colors.grey5};
95
- }
96
-
97
- input {
98
- background-color: ${(props) => props.theme.colors.grey5};
99
- }
100
- }
101
-
102
- td {
103
- height: 40px;
104
- }
105
- }
106
- }
107
-
108
- th {
109
- padding: 11px 15px;
110
- background-color: ${(props) => props.theme.colors.blue1};
111
- cursor: auto;
112
- height: 40px;
113
-
114
- .ordering {
115
- display: grid;
116
- grid-template-columns: 1fr auto;
117
- grid-gap: 6px;
118
- }
119
- }
120
-
121
- td {
122
- padding: ${(props) =>
123
- props.cellPaddings ? props.cellPaddings : '6px 6px 7px 4px'};
124
- border-bottom: 1px solid ${(props) => props.theme.colors.grey4};
125
-
126
- &.empty {
127
- height: 100px;
128
- text-align: center;
129
- cursor: default;
130
- background-color: #fff !important;
131
- }
132
-
133
- &.no-border {
134
- border-bottom: none;
135
- }
136
-
137
- .collective-container {
138
- display: grid;
139
- grid-template-columns: auto 1fr;
140
- align-items: center;
141
- grid-gap: 10px;
142
- cursor: pointer;
143
- }
144
-
145
- .collective-box {
146
- width: 22px;
147
- height: 22px;
148
- border-radius: 4px;
149
- color: #fff;
150
- background-color: ${(props) => props.theme.colors.grey3};
151
- font-size: 13px;
152
- font-weight: normal;
153
- display: grid;
154
- align-items: center;
155
- justify-items: center;
156
-
157
- &.open {
158
- background-color: ${(props) => props.theme.colors.green};
159
- }
160
- }
161
- }
162
-
163
- td,
164
- th {
165
- white-space: nowrap;
166
- text-align: left;
167
-
168
- &.align {
169
- &-left {
170
- text-align: left;
171
- }
172
-
173
- &-center {
174
- text-align: center;
175
- }
176
-
177
- &-right {
178
- text-align: right;
179
- }
180
- }
181
-
182
- &.checkbox {
183
- padding: 7px 15px !important;
184
- width: 40px;
185
- }
186
-
187
- &.checkbox-header {
188
- width: 40px;
189
- }
190
- }
191
-
192
- tr {
193
- &.disabled {
194
- cursor: not-allowed !important;
195
- }
196
-
197
- .arrow-dropdown {
198
- visibility: hidden;
199
- }
200
-
201
- &.footer {
202
- td {
203
- background-color: ${(props) => props.theme.colors.grey5};
204
- /* border-top: 1px solid ${(props) => props.theme.colors.grey4}; */
205
- }
206
-
207
- .text {
208
- cursor: auto !important;
209
- }
210
- }
211
-
212
- .text {
213
- padding: 10px 15px 10px 15px;
214
- color: ${(props) => props.theme.colors.black};
215
- cursor: ${(props) => (props.tableCursor ? props.tableCursor : 'auto')};
216
- }
217
-
218
- .bold {
219
- font-weight: bold;
220
- }
221
-
222
- .icons-container {
223
- padding-right: 2px; // so that the icons are not cut off when hovering
224
- width: 1%; // necessary so it doesn't take up too much white space
225
- display: table-cell;
226
- flex-wrap: nowrap;
227
- background-color: #fff;
228
- vertical-align: middle;
229
- }
230
-
231
- .arrow-container {
232
- display: table-cell;
233
- vertical-align: middle;
234
- /* text-align: center;
235
- text-align: -webkit-center; */
236
- cursor: pointer;
237
- border-bottom: 1px solid ${(props) => props.theme.colors.grey4};
238
- }
239
-
240
- &.container-row td {
241
- padding: 0;
242
- }
243
-
244
- &.no-border {
245
- td,
246
- .arrow-container {
247
- border-bottom: none;
248
- }
249
- }
250
-
251
- &:hover {
252
- input:disabled {
253
- background-color: ${(props) => props.theme.colors.grey5 + '!important'};
254
- }
255
-
256
- .drag-icon {
257
- visibility: visible;
258
- }
259
-
260
- .drag-wrapper {
261
- background-color: ${(props) => props.theme.colors.grey5};
262
- }
263
-
264
- .arrow-dropdown {
265
- visibility: visible;
266
- }
267
- }
268
-
269
- .drag-container {
270
- display: table-cell;
271
- width: 20px;
272
- min-width: 20px;
273
- height: 40px;
274
- }
275
-
276
- .drag-wrapper {
277
- width: 16px;
278
- height: 36px;
279
- display: grid;
280
- align-items: center;
281
- justify-items: center;
282
- border-radius: 4px;
283
- }
284
-
285
- .drag-icon {
286
- visibility: hidden;
287
- width: 10px;
288
- height: 16px;
289
- cursor: grab;
290
- background-position: center;
291
- background-image: ${() =>
292
- `url(${require('../../../assets/icons/drag_icon.svg')})`};
293
-
294
- &:active {
295
- cursor: grabbing;
296
- }
297
- }
298
-
299
- .subposition-icon {
300
- width: 14px;
301
- height: 11px;
302
- background: no-repeat;
303
- margin-left: 10px;
304
- background-image: ${() =>
305
- `url(${require('../../../assets/icons/subposition_icon.svg')})`};
306
- }
307
-
308
- .arrow-down {
309
- width: 14px;
310
- height: 11px;
311
- background: no-repeat;
312
- background-position: center;
313
- background-image: ${() =>
314
- `url(${require('../../../assets/icons/arrow_down.svg')})`};
315
- }
316
-
317
- .arrow-up {
318
- width: 14px;
319
- height: 11px;
320
- background: no-repeat;
321
- background-position: center;
322
- background-image: ${() =>
323
- `url(${require('../../../assets/icons/arrow_up_red.svg')})`};
324
- }
325
- }
326
-
327
- input {
328
- font-size: 13px;
329
- padding: 5px 10px;
330
- background: #fff;
331
-
332
- &:focus {
333
- background: ${(props) => props.theme.colors.grey5};
334
- }
335
- }
336
-
337
- .open-container {
338
- border: 1px solid ${(props) => props.theme.colors.grey4};
339
- border-radius: 4px;
340
- margin-bottom: 5px;
341
- cursor: auto;
342
- }
343
- `
344
-
345
- export default {
346
- name: 'main-table',
347
- components: {
348
- TableScroll,
349
- TableWrapper,
350
- SpinnerWrapper,
351
- Spinner,
352
- TableContainer,
353
- PageContainer,
354
- TableTitle
355
- },
356
- props: {
357
- fullWidth: {
358
- required: false,
359
- default: true
360
- },
361
- cellPaddings: {
362
- required: false,
363
- default: ''
364
- },
365
- isLoading: {
366
- required: false,
367
- default: false
368
- },
369
- titleText: {
370
- required: false,
371
- default: null
372
- },
373
- tableCursor: {
374
- required: false,
375
- default: 'auto'
376
- }
377
- }
378
- }
379
- </script>
1
+ <template>
2
+ <page-container>
3
+ <table-title v-if="titleText">
4
+ {{ titleText }}
5
+ </table-title>
6
+ <table-scroll>
7
+ <table-wrapper :fullWidth="fullWidth">
8
+ <spinner-wrapper v-if="isLoading">
9
+ <spinner />
10
+ </spinner-wrapper>
11
+ <table-container
12
+ v-else
13
+ :cellPaddings="cellPaddings"
14
+ :tableCursor="tableCursor"
15
+ >
16
+ <slot />
17
+ </table-container>
18
+ </table-wrapper>
19
+ </table-scroll>
20
+ </page-container>
21
+ </template>
22
+
23
+ <script>
24
+ // ToDo: add this to storybook
25
+ // import MainTable from "@eturnity/eturnity_reusable_components/src/components/tables/mainTable"
26
+ import styled from 'vue-styled-components'
27
+ import Spinner from '../../spinner'
28
+
29
+ const PageContainer = styled.div``
30
+
31
+ const TableTitle = styled.div`
32
+ margin-bottom: 16px;
33
+ font-weight: bold;
34
+ font-size: 14px;
35
+ text-transform: uppercase;
36
+ `
37
+
38
+ const TableScroll = styled.div`
39
+ max-width: 100%;
40
+ `
41
+
42
+ const wrapperAttrs = { fullWidth: Boolean }
43
+ const TableWrapper = styled('div', wrapperAttrs)`
44
+ width: ${(props) => (props.fullWidth ? '100%' : 'fit-content')};
45
+ max-width: 100%;
46
+ overflow: auto;
47
+
48
+ ::-webkit-scrollbar {
49
+ height: 5px; //height of the whole scrollbar area
50
+ }
51
+
52
+ ::-webkit-scrollbar-track {
53
+ background: ${(props) => props.theme.colors.grey2};
54
+ border-radius: 4px;
55
+ }
56
+
57
+ ::-webkit-scrollbar-thumb {
58
+ border-bottom: 5px solid ${(props) => props.theme.colors.purple}; // width of the actual scrollbar
59
+ border-radius: 4px;
60
+ }
61
+ `
62
+
63
+ const SpinnerWrapper = styled.div`
64
+ height: 150px;
65
+ display: grid;
66
+ align-items: center;
67
+ justify-items: center;
68
+ `
69
+
70
+ const containerAttrs = { cellPaddings: String, tableCursor: String }
71
+ const TableContainer = styled('table', containerAttrs)`
72
+ width: 100%;
73
+ border-collapse: collapse;
74
+ border: none;
75
+ font-size: 13px;
76
+
77
+ thead {
78
+ font-weight: bold;
79
+
80
+ tr {
81
+ border-bottom: none !important;
82
+ }
83
+ }
84
+
85
+ tbody {
86
+ tr {
87
+ &:hover {
88
+ background-color: ${(props) => props.theme.colors.white};
89
+ cursor: ${(props) => (props.tableCursor ? props.tableCursor : 'auto')};
90
+
91
+ .arrow-container,
92
+ .input-placeholder,
93
+ .table-dropdown-item {
94
+ background-color: ${(props) => props.theme.colors.grey5};
95
+ }
96
+
97
+ input {
98
+ background-color: ${(props) => props.theme.colors.grey5};
99
+ }
100
+ }
101
+
102
+ td {
103
+ height: 40px;
104
+ }
105
+ }
106
+ }
107
+
108
+ th {
109
+ padding: 11px 15px;
110
+ background-color: ${(props) => props.theme.colors.blue1};
111
+ cursor: auto;
112
+ height: 40px;
113
+
114
+ .ordering {
115
+ display: grid;
116
+ grid-template-columns: 1fr auto;
117
+ grid-gap: 6px;
118
+ }
119
+ }
120
+
121
+ td {
122
+ padding: ${(props) =>
123
+ props.cellPaddings ? props.cellPaddings : '6px 6px 7px 4px'};
124
+ border-bottom: 1px solid ${(props) => props.theme.colors.grey4};
125
+
126
+ &.empty {
127
+ height: 100px;
128
+ text-align: center;
129
+ cursor: default;
130
+ background-color: #fff !important;
131
+ }
132
+
133
+ &.no-border {
134
+ border-bottom: none;
135
+ }
136
+
137
+ .collective-container {
138
+ display: grid;
139
+ grid-template-columns: auto 1fr;
140
+ align-items: center;
141
+ grid-gap: 10px;
142
+ cursor: pointer;
143
+ }
144
+
145
+ .collective-box {
146
+ width: 22px;
147
+ height: 22px;
148
+ border-radius: 4px;
149
+ color: #fff;
150
+ background-color: ${(props) => props.theme.colors.grey3};
151
+ font-size: 13px;
152
+ font-weight: normal;
153
+ display: grid;
154
+ align-items: center;
155
+ justify-items: center;
156
+
157
+ &.open {
158
+ background-color: ${(props) => props.theme.colors.green};
159
+ }
160
+ }
161
+ }
162
+
163
+ td,
164
+ th {
165
+ white-space: nowrap;
166
+ text-align: left;
167
+
168
+ &.align {
169
+ &-left {
170
+ text-align: left;
171
+ }
172
+
173
+ &-center {
174
+ text-align: center;
175
+ }
176
+
177
+ &-right {
178
+ text-align: right;
179
+ }
180
+ }
181
+
182
+ &.checkbox {
183
+ padding: 7px 15px !important;
184
+ width: 40px;
185
+ }
186
+
187
+ &.checkbox-header {
188
+ width: 40px;
189
+ }
190
+ }
191
+
192
+ tr {
193
+ &.disabled {
194
+ cursor: not-allowed !important;
195
+ }
196
+
197
+ .arrow-dropdown {
198
+ visibility: hidden;
199
+ }
200
+
201
+ &.footer {
202
+ td {
203
+ background-color: ${(props) => props.theme.colors.grey5};
204
+ /* border-top: 1px solid ${(props) => props.theme.colors.grey4}; */
205
+ }
206
+
207
+ .text {
208
+ cursor: auto !important;
209
+ }
210
+ }
211
+
212
+ .text {
213
+ padding: 10px 15px 10px 15px;
214
+ color: ${(props) => props.theme.colors.black};
215
+ cursor: ${(props) => (props.tableCursor ? props.tableCursor : 'auto')};
216
+ }
217
+
218
+ .bold {
219
+ font-weight: bold;
220
+ }
221
+
222
+ .icons-container {
223
+ padding-right: 2px; // so that the icons are not cut off when hovering
224
+ width: 1%; // necessary so it doesn't take up too much white space
225
+ display: table-cell;
226
+ flex-wrap: nowrap;
227
+ background-color: #fff;
228
+ vertical-align: middle;
229
+ }
230
+
231
+ .arrow-container {
232
+ display: table-cell;
233
+ vertical-align: middle;
234
+ /* text-align: center;
235
+ text-align: -webkit-center; */
236
+ cursor: pointer;
237
+ border-bottom: 1px solid ${(props) => props.theme.colors.grey4};
238
+ }
239
+
240
+ &.container-row td {
241
+ padding: 0;
242
+ }
243
+
244
+ &.no-border {
245
+ td,
246
+ .arrow-container {
247
+ border-bottom: none;
248
+ }
249
+ }
250
+
251
+ &:hover {
252
+ input:disabled {
253
+ background-color: ${(props) => props.theme.colors.grey5 + '!important'};
254
+ }
255
+
256
+ .drag-icon {
257
+ visibility: visible;
258
+ }
259
+
260
+ .drag-wrapper {
261
+ background-color: ${(props) => props.theme.colors.grey5};
262
+ }
263
+
264
+ .arrow-dropdown {
265
+ visibility: visible;
266
+ }
267
+ }
268
+
269
+ .drag-container {
270
+ display: table-cell;
271
+ width: 20px;
272
+ min-width: 20px;
273
+ height: 40px;
274
+ }
275
+
276
+ .drag-wrapper {
277
+ width: 16px;
278
+ height: 36px;
279
+ display: grid;
280
+ align-items: center;
281
+ justify-items: center;
282
+ border-radius: 4px;
283
+ }
284
+
285
+ .drag-icon {
286
+ visibility: hidden;
287
+ width: 10px;
288
+ height: 16px;
289
+ cursor: grab;
290
+ background-position: center;
291
+ background-image: ${() =>
292
+ `url(${require('../../../assets/icons/drag_icon.svg')})`};
293
+
294
+ &:active {
295
+ cursor: grabbing;
296
+ }
297
+ }
298
+
299
+ .subposition-icon {
300
+ width: 14px;
301
+ height: 11px;
302
+ background: no-repeat;
303
+ margin-left: 10px;
304
+ background-image: ${() =>
305
+ `url(${require('../../../assets/icons/subposition_icon.svg')})`};
306
+ }
307
+
308
+ .arrow-down {
309
+ width: 14px;
310
+ height: 11px;
311
+ background: no-repeat;
312
+ background-position: center;
313
+ background-image: ${() =>
314
+ `url(${require('../../../assets/icons/arrow_down.svg')})`};
315
+ }
316
+
317
+ .arrow-up {
318
+ width: 14px;
319
+ height: 11px;
320
+ background: no-repeat;
321
+ background-position: center;
322
+ background-image: ${() =>
323
+ `url(${require('../../../assets/icons/arrow_up_red.svg')})`};
324
+ }
325
+ }
326
+
327
+ input {
328
+ font-size: 13px;
329
+ padding: 5px 10px;
330
+ background: #fff;
331
+
332
+ &:focus {
333
+ background: ${(props) => props.theme.colors.grey5};
334
+ }
335
+ }
336
+
337
+ .open-container {
338
+ border: 1px solid ${(props) => props.theme.colors.grey4};
339
+ border-radius: 4px;
340
+ margin-bottom: 5px;
341
+ cursor: auto;
342
+ }
343
+ `
344
+
345
+ export default {
346
+ name: 'main-table',
347
+ components: {
348
+ TableScroll,
349
+ TableWrapper,
350
+ SpinnerWrapper,
351
+ Spinner,
352
+ TableContainer,
353
+ PageContainer,
354
+ TableTitle
355
+ },
356
+ props: {
357
+ fullWidth: {
358
+ required: false,
359
+ default: true
360
+ },
361
+ cellPaddings: {
362
+ required: false,
363
+ default: ''
364
+ },
365
+ isLoading: {
366
+ required: false,
367
+ default: false
368
+ },
369
+ titleText: {
370
+ required: false,
371
+ default: null
372
+ },
373
+ tableCursor: {
374
+ required: false,
375
+ default: 'auto'
376
+ }
377
+ }
378
+ }
379
+ </script>