@eturnity/eturnity_reusable_components 1.2.24 → 1.2.25-EPDM-5202.2

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 -252
  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 +153 -153
  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 -371
  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,371 +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 v-else :cellPaddings="cellPaddings">
12
- <slot />
13
- </table-container>
14
- </table-wrapper>
15
- </table-scroll>
16
- </page-container>
17
- </template>
18
-
19
- <script>
20
- // ToDo: add this to storybook
21
- // import MainTable from "@eturnity/eturnity_reusable_components/src/components/tables/mainTable"
22
- import styled from 'vue-styled-components'
23
- import Spinner from '../../spinner'
24
-
25
- const PageContainer = styled.div``
26
-
27
- const TableTitle = styled.div`
28
- margin-bottom: 16px;
29
- font-weight: bold;
30
- font-size: 14px;
31
- text-transform: uppercase;
32
- `
33
-
34
- const TableScroll = styled.div`
35
- max-width: 100%;
36
- `
37
-
38
- const wrapperAttrs = { fullWidth: Boolean }
39
- const TableWrapper = styled('div', wrapperAttrs)`
40
- width: ${(props) => (props.fullWidth ? '100%' : 'fit-content')};
41
- max-width: 100%;
42
- overflow: auto;
43
-
44
- ::-webkit-scrollbar {
45
- height: 5px; //height of the whole scrollbar area
46
- }
47
-
48
- ::-webkit-scrollbar-track {
49
- background: ${(props) => props.theme.colors.grey2};
50
- border-radius: 4px;
51
- }
52
-
53
- ::-webkit-scrollbar-thumb {
54
- border-bottom: 5px solid ${(props) => props.theme.colors.purple}; // width of the actual scrollbar
55
- border-radius: 4px;
56
- }
57
- `
58
-
59
- const SpinnerWrapper = styled.div`
60
- height: 150px;
61
- display: grid;
62
- align-items: center;
63
- justify-items: center;
64
- `
65
-
66
- const containerAttrs = { cellPaddings: String }
67
- const TableContainer = styled('table', containerAttrs)`
68
- width: 100%;
69
- border-collapse: collapse;
70
- border: none;
71
- font-size: 13px;
72
-
73
- thead {
74
- font-weight: bold;
75
-
76
- tr {
77
- border-bottom: none !important;
78
- }
79
- }
80
-
81
- tbody {
82
- tr {
83
- &:hover {
84
- background-color: ${(props) => props.theme.colors.white};
85
- cursor: auto;
86
-
87
- .arrow-container,
88
- .input-placeholder,
89
- .table-dropdown-item {
90
- background-color: ${(props) => props.theme.colors.grey5};
91
- }
92
-
93
- input {
94
- background-color: ${(props) => props.theme.colors.grey5};
95
- }
96
- }
97
-
98
- td {
99
- height: 40px;
100
- }
101
- }
102
- }
103
-
104
- th {
105
- padding: 11px 15px;
106
- background-color: ${(props) => props.theme.colors.blue1};
107
- cursor: auto;
108
- height: 40px;
109
-
110
- .ordering {
111
- display: grid;
112
- grid-template-columns: 1fr auto;
113
- grid-gap: 6px;
114
- }
115
- }
116
-
117
- td {
118
- padding: ${(props) =>
119
- props.cellPaddings ? props.cellPaddings : '6px 6px 7px 4px'};
120
- border-bottom: 1px solid ${(props) => props.theme.colors.grey4};
121
-
122
- &.empty {
123
- height: 100px;
124
- text-align: center;
125
- cursor: default;
126
- background-color: #fff !important;
127
- }
128
-
129
- &.no-border {
130
- border-bottom: none;
131
- }
132
-
133
- .collective-container {
134
- display: grid;
135
- grid-template-columns: auto 1fr;
136
- align-items: center;
137
- grid-gap: 10px;
138
- cursor: pointer;
139
- }
140
-
141
- .collective-box {
142
- width: 22px;
143
- height: 22px;
144
- border-radius: 4px;
145
- color: #fff;
146
- background-color: ${(props) => props.theme.colors.grey3};
147
- font-size: 13px;
148
- font-weight: normal;
149
- display: grid;
150
- align-items: center;
151
- justify-items: center;
152
-
153
- &.open {
154
- background-color: ${(props) => props.theme.colors.green};
155
- }
156
- }
157
- }
158
-
159
- td,
160
- th {
161
- white-space: nowrap;
162
- text-align: left;
163
-
164
- &.align {
165
- &-left {
166
- text-align: left;
167
- }
168
-
169
- &-center {
170
- text-align: center;
171
- }
172
-
173
- &-right {
174
- text-align: right;
175
- }
176
- }
177
-
178
- &.checkbox {
179
- padding: 7px 15px !important;
180
- width: 40px;
181
- }
182
-
183
- &.checkbox-header {
184
- width: 40px;
185
- }
186
- }
187
-
188
- tr {
189
- &.disabled {
190
- cursor: not-allowed !important;
191
- }
192
-
193
- .arrow-dropdown {
194
- visibility: hidden;
195
- }
196
-
197
- &.footer {
198
- td {
199
- background-color: ${(props) => props.theme.colors.grey5};
200
- /* border-top: 1px solid ${(props) => props.theme.colors.grey4}; */
201
- }
202
-
203
- .text {
204
- cursor: auto !important;
205
- }
206
- }
207
-
208
- .text {
209
- padding: 10px 15px 10px 15px;
210
- color: ${(props) => props.theme.colors.black};
211
- cursor: auto;
212
- }
213
-
214
- .bold {
215
- font-weight: bold;
216
- }
217
-
218
- .icons-container {
219
- padding-right: 2px; // so that the icons are not cut off when hovering
220
- width: 1%; // necessary so it doesn't take up too much white space
221
- display: table-cell;
222
- flex-wrap: nowrap;
223
- background-color: #fff;
224
- vertical-align: middle;
225
- }
226
-
227
- .arrow-container {
228
- display: table-cell;
229
- vertical-align: middle;
230
- /* text-align: center;
231
- text-align: -webkit-center; */
232
- cursor: pointer;
233
- border-bottom: 1px solid ${(props) => props.theme.colors.grey4};
234
- }
235
-
236
- &.container-row td {
237
- padding: 0;
238
- }
239
-
240
- &.no-border {
241
- td,
242
- .arrow-container {
243
- border-bottom: none;
244
- }
245
- }
246
-
247
- &:hover {
248
- input:disabled {
249
- background-color: ${(props) => props.theme.colors.grey5 + '!important'};
250
- }
251
-
252
- .drag-icon {
253
- visibility: visible;
254
- }
255
-
256
- .drag-wrapper {
257
- background-color: ${(props) => props.theme.colors.grey5};
258
- }
259
-
260
- .arrow-dropdown {
261
- visibility: visible;
262
- }
263
- }
264
-
265
- .drag-container {
266
- display: table-cell;
267
- width: 20px;
268
- min-width: 20px;
269
- height: 40px;
270
- }
271
-
272
- .drag-wrapper {
273
- width: 16px;
274
- height: 36px;
275
- display: grid;
276
- align-items: center;
277
- justify-items: center;
278
- border-radius: 4px;
279
- }
280
-
281
- .drag-icon {
282
- visibility: hidden;
283
- width: 10px;
284
- height: 16px;
285
- cursor: grab;
286
- background-position: center;
287
- background-image: ${() =>
288
- `url(${require('../../../assets/icons/drag_icon.svg')})`};
289
-
290
- &:active {
291
- cursor: grabbing;
292
- }
293
- }
294
-
295
- .subposition-icon {
296
- width: 14px;
297
- height: 11px;
298
- background: no-repeat;
299
- margin-left: 10px;
300
- background-image: ${() =>
301
- `url(${require('../../../assets/icons/subposition_icon.svg')})`};
302
- }
303
-
304
- .arrow-down {
305
- width: 14px;
306
- height: 11px;
307
- background: no-repeat;
308
- background-position: center;
309
- background-image: ${() =>
310
- `url(${require('../../../assets/icons/arrow_down.svg')})`};
311
- }
312
-
313
- .arrow-up {
314
- width: 14px;
315
- height: 11px;
316
- background: no-repeat;
317
- background-position: center;
318
- background-image: ${() =>
319
- `url(${require('../../../assets/icons/arrow_up_red.svg')})`};
320
- }
321
- }
322
-
323
- input {
324
- font-size: 13px;
325
- padding: 5px 10px;
326
- background: #fff;
327
-
328
- &:focus {
329
- background: ${(props) => props.theme.colors.grey5};
330
- }
331
- }
332
-
333
- .open-container {
334
- border: 1px solid ${(props) => props.theme.colors.grey4};
335
- border-radius: 4px;
336
- margin-bottom: 5px;
337
- cursor: auto;
338
- }
339
- `
340
-
341
- export default {
342
- name: 'main-table',
343
- components: {
344
- TableScroll,
345
- TableWrapper,
346
- SpinnerWrapper,
347
- Spinner,
348
- TableContainer,
349
- PageContainer,
350
- TableTitle
351
- },
352
- props: {
353
- fullWidth: {
354
- required: false,
355
- default: true
356
- },
357
- cellPaddings: {
358
- required: false,
359
- default: ''
360
- },
361
- isLoading: {
362
- required: false,
363
- default: false
364
- },
365
- titleText: {
366
- required: false,
367
- default: null
368
- }
369
- }
370
- }
371
- </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>