@fdm-monster/client-next 0.0.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 (205) hide show
  1. package/.all-contributorsrc +57 -0
  2. package/.browserslistrc +4 -0
  3. package/.editorconfig +5 -0
  4. package/.env +1 -0
  5. package/.eslintrc-auto-import.json +73 -0
  6. package/.eslintrc.js +126 -0
  7. package/.github/FUNDING.yml +3 -0
  8. package/.github/workflows/release-client.yml +94 -0
  9. package/.github/workflows/vue-publish.yml +26 -0
  10. package/.prettierignore +15 -0
  11. package/.prettierrc.cjs +7 -0
  12. package/.whitesource +12 -0
  13. package/.yarn/releases/yarn-4.5.1.cjs +934 -0
  14. package/.yarnrc.yml +3 -0
  15. package/CODE_OF_CONDUCT.md +46 -0
  16. package/README.md +93 -0
  17. package/RELEASE_NOTES.MD +11 -0
  18. package/index.html +16 -0
  19. package/package.default.json +42 -0
  20. package/package.json +26 -0
  21. package/public/favicon.ico +0 -0
  22. package/public/img/DavidZwart.jpg +0 -0
  23. package/public/img/OIG.JYDC2RaWdz7g9.jpg +0 -0
  24. package/public/img/OIG.jpg +0 -0
  25. package/public/img/icons/android-chrome-192x192.png +0 -0
  26. package/public/img/icons/android-chrome-256x256.png +0 -0
  27. package/public/img/icons/android-chrome-384x384.png +0 -0
  28. package/public/img/icons/android-chrome-512x512.png +0 -0
  29. package/public/img/icons/favicon.svg +1 -0
  30. package/public/img/logo.png +0 -0
  31. package/public/img/logo.svg +1 -0
  32. package/public/img/manifest.webmanifest +33 -0
  33. package/public/img/octoprint-tentacle.svg +144 -0
  34. package/public/img/thumbail_unknown.jpg +0 -0
  35. package/public/img/vbanner.jpg +0 -0
  36. package/public/index.html +17 -0
  37. package/public/robots.txt +2 -0
  38. package/renovate.json +30 -0
  39. package/src/App.vue +60 -0
  40. package/src/AppLoader.vue +383 -0
  41. package/src/assets/adjectives.json +1468 -0
  42. package/src/assets/android-chrome-192x192.png +0 -0
  43. package/src/assets/logo.png +0 -0
  44. package/src/assets/logo.svg +6 -0
  45. package/src/assets/nouns.json +4309 -0
  46. package/src/auto-imports.d.ts +139 -0
  47. package/src/backend/app.service.ts +39 -0
  48. package/src/backend/auth.service.ts +56 -0
  49. package/src/backend/base.service.ts +57 -0
  50. package/src/backend/batch.service.ts +37 -0
  51. package/src/backend/camera-stream.service.ts +33 -0
  52. package/src/backend/custom-gcode.service.ts +11 -0
  53. package/src/backend/dto/octoprint-settings.dto.ts +168 -0
  54. package/src/backend/first-time-setup.service.ts +17 -0
  55. package/src/backend/floor.service.ts +84 -0
  56. package/src/backend/index.ts +4 -0
  57. package/src/backend/print-completions.service.ts +11 -0
  58. package/src/backend/printer-file.service.ts +91 -0
  59. package/src/backend/printer-group.service.ts +62 -0
  60. package/src/backend/printer-job.service.ts +20 -0
  61. package/src/backend/printer-settings.service.ts +28 -0
  62. package/src/backend/printers.service.ts +136 -0
  63. package/src/backend/server-private.service.ts +55 -0
  64. package/src/backend/server.api.ts +132 -0
  65. package/src/backend/settings.service.ts +85 -0
  66. package/src/backend/user.service.ts +51 -0
  67. package/src/components/AboutHelp/AboutView.vue +164 -0
  68. package/src/components/CameraGrid/CameraGridView.vue +111 -0
  69. package/src/components/FirstTimeSetup/FirstTimeSetupView.vue +354 -0
  70. package/src/components/Generic/Actions/PrinterConnectionAction.vue +56 -0
  71. package/src/components/Generic/Actions/PrinterCreateAction.vue +22 -0
  72. package/src/components/Generic/Actions/PrinterDeleteAction.vue +29 -0
  73. package/src/components/Generic/Actions/PrinterQuickStopAction.vue +35 -0
  74. package/src/components/Generic/Actions/PrinterSettingsAction.vue +35 -0
  75. package/src/components/Generic/Actions/PrinterUrlAction.vue +24 -0
  76. package/src/components/Generic/Actions/RefreshFilesAction.vue +50 -0
  77. package/src/components/Generic/Actions/SyncPrinterNameAction.vue +36 -0
  78. package/src/components/Generic/Dialogs/AddOrUpdateCameraStreamDialog.vue +131 -0
  79. package/src/components/Generic/Dialogs/AddOrUpdateFloorDialog.vue +141 -0
  80. package/src/components/Generic/Dialogs/AddOrUpdatePrinterDialog.vue +303 -0
  81. package/src/components/Generic/Dialogs/BaseDialog.vue +81 -0
  82. package/src/components/Generic/Dialogs/BatchJsonCreateDialog.vue +109 -0
  83. package/src/components/Generic/Dialogs/BatchReprintDialog.vue +190 -0
  84. package/src/components/Generic/Dialogs/PrinterChecksPanel.vue +37 -0
  85. package/src/components/Generic/Dialogs/PrinterControlDialog.vue +202 -0
  86. package/src/components/Generic/Dialogs/PrinterMaintenanceDialog.vue +130 -0
  87. package/src/components/Generic/Dialogs/YamlImportExportDialog.vue +186 -0
  88. package/src/components/Generic/Dialogs/dialog.constants.ts +19 -0
  89. package/src/components/Generic/FileExplorerSideNav.vue +734 -0
  90. package/src/components/Generic/Loaders/GridLoader.vue +68 -0
  91. package/src/components/Generic/NavigationDrawer.vue +69 -0
  92. package/src/components/Generic/PrintJobsMenu.vue +148 -0
  93. package/src/components/Generic/Snackbars/AppErrorSnackbar.vue +64 -0
  94. package/src/components/Generic/Snackbars/AppInfoSnackbar.vue +63 -0
  95. package/src/components/Generic/Snackbars/AppProgressSnackbar.vue +158 -0
  96. package/src/components/Generic/Vuetify/TooltipButton.vue +47 -0
  97. package/src/components/HelpOverlay/HelpOverlay.vue +57 -0
  98. package/src/components/Login/LoginForm.vue +206 -0
  99. package/src/components/Login/LoginView.spec.ts +64 -0
  100. package/src/components/Login/LoginView.vue +65 -0
  101. package/src/components/Login/Logo.vue +13 -0
  102. package/src/components/Login/PermissionDenied.vue +109 -0
  103. package/src/components/Login/RegistrationForm.vue +207 -0
  104. package/src/components/Login/RegistrationView.vue +17 -0
  105. package/src/components/Login/__snapshots__/LoginView.spec.ts.snap +1051 -0
  106. package/src/components/NotFound/NotFoundView.vue +39 -0
  107. package/src/components/PrintStatistics/PrintStatistics.vue +168 -0
  108. package/src/components/PrintStatistics/PrintStatisticsView.vue +15 -0
  109. package/src/components/PrinterGrid/HomeToolbar.vue +90 -0
  110. package/src/components/PrinterGrid/PrinterGrid.vue +164 -0
  111. package/src/components/PrinterGrid/PrinterGridTile.vue +438 -0
  112. package/src/components/PrinterGrid/PrinterGridView.vue +210 -0
  113. package/src/components/PrinterList/FileControlList.vue +40 -0
  114. package/src/components/PrinterList/PrinterDetails.vue +91 -0
  115. package/src/components/PrinterList/PrintersView.vue +492 -0
  116. package/src/components/Settings/AccountSettings.vue +163 -0
  117. package/src/components/Settings/DiagnosticsSettings.vue +137 -0
  118. package/src/components/Settings/EmergencyCommands.vue +265 -0
  119. package/src/components/Settings/FloorSettings.vue +276 -0
  120. package/src/components/Settings/GridSettings.vue +127 -0
  121. package/src/components/Settings/OctoPrintSettings.vue +188 -0
  122. package/src/components/Settings/ServerProtectionSettings.vue +370 -0
  123. package/src/components/Settings/SettingsView.vue +73 -0
  124. package/src/components/Settings/SoftwareUpgradeSettings.vue +297 -0
  125. package/src/components/Settings/UserManagementSettings.vue +257 -0
  126. package/src/components/TopBar.vue +147 -0
  127. package/src/components.d.ts +70 -0
  128. package/src/directives/file-upload.directive.ts +117 -0
  129. package/src/directives/printer-drop-position.directive.ts +92 -0
  130. package/src/env.d.ts +6 -0
  131. package/src/main.ts +76 -0
  132. package/src/models/batch/reprint.dto.ts +79 -0
  133. package/src/models/batch.model.ts +11 -0
  134. package/src/models/camera-streams/camera-stream.ts +19 -0
  135. package/src/models/floors/floor.model.ts +30 -0
  136. package/src/models/octoprint/connection-options.model.ts +8 -0
  137. package/src/models/plugins/firmware-updates/prusa-firmware-release.model.ts +57 -0
  138. package/src/models/print-completions/print-completions.model.ts +49 -0
  139. package/src/models/printers/crud/create-printer.model.ts +26 -0
  140. package/src/models/printers/file-upload-commands.model.ts +4 -0
  141. package/src/models/printers/gcode/gcode-analysis.model.ts +30 -0
  142. package/src/models/printers/printer-current-job.model.ts +90 -0
  143. package/src/models/printers/printer-file.model.ts +48 -0
  144. package/src/models/printers/printer.model.ts +18 -0
  145. package/src/models/server/client-releases.model.ts +27 -0
  146. package/src/models/server/export-yaml.model.ts +11 -0
  147. package/src/models/server/features.model.ts +37 -0
  148. package/src/models/server/github-rate-limit.model.ts +21 -0
  149. package/src/models/server/version.model.ts +14 -0
  150. package/src/models/settings/printer-file-clean-settings.model.ts +5 -0
  151. package/src/models/settings/server-settings.dto.ts +19 -0
  152. package/src/models/settings/settings.model.ts +57 -0
  153. package/src/models/socketio-messages/socketio-message.model.ts +53 -0
  154. package/src/models/uploads/queued-upload.model.ts +12 -0
  155. package/src/models/user.model.ts +15 -0
  156. package/src/plugins/README.md +3 -0
  157. package/src/plugins/index.ts +17 -0
  158. package/src/plugins/vuetify.ts +53 -0
  159. package/src/router/index.ts +192 -0
  160. package/src/router/route-names.ts +14 -0
  161. package/src/router/utils.ts +23 -0
  162. package/src/shared/alert.events.ts +14 -0
  163. package/src/shared/app.constants.ts +23 -0
  164. package/src/shared/auth.constants.ts +34 -0
  165. package/src/shared/dialog.composable.ts +41 -0
  166. package/src/shared/drag.constants.ts +19 -0
  167. package/src/shared/experimental.constants.ts +1 -0
  168. package/src/shared/http-client.ts +162 -0
  169. package/src/shared/noun-adjectives.data.ts +24 -0
  170. package/src/shared/printer-grid.constants.ts +5 -0
  171. package/src/shared/printer-state.constants.ts +194 -0
  172. package/src/shared/snackbar.composable.ts +66 -0
  173. package/src/shared/socketio.service.ts +104 -0
  174. package/src/store/auth.store.ts +255 -0
  175. package/src/store/connection.store.ts +66 -0
  176. package/src/store/dialog.store.ts +114 -0
  177. package/src/store/features.store.ts +57 -0
  178. package/src/store/floor.store.ts +173 -0
  179. package/src/store/grid.store.ts +10 -0
  180. package/src/store/index.ts +4 -0
  181. package/src/store/printer-state.store.ts +246 -0
  182. package/src/store/printer.store.ts +236 -0
  183. package/src/store/profile.store.ts +25 -0
  184. package/src/store/settings.store.ts +64 -0
  185. package/src/store/test-printer.store.ts +70 -0
  186. package/src/store/uploads.store.ts +75 -0
  187. package/src/styles/README.md +3 -0
  188. package/src/styles/settings.scss +10 -0
  189. package/src/types/global.d.ts +15 -0
  190. package/src/utils/array.utils.ts +15 -0
  191. package/src/utils/date.utils.ts +5 -0
  192. package/src/utils/download-file.util.ts +25 -0
  193. package/src/utils/error.utils.ts +3 -0
  194. package/src/utils/file-size.util.ts +11 -0
  195. package/src/utils/id.type.ts +1 -0
  196. package/src/utils/sentry.util.ts +8 -0
  197. package/src/utils/test.util.ts +30 -0
  198. package/src/utils/time.utils.ts +2 -0
  199. package/src/utils/uploads-state.utils.ts +58 -0
  200. package/src/utils/validation.utils.ts +14 -0
  201. package/src/vite-env.d.ts +7 -0
  202. package/test/setup-axios-mock.ts +15 -0
  203. package/tsconfig.json +47 -0
  204. package/tsconfig.node.json +9 -0
  205. package/vite.config.mts +106 -0
@@ -0,0 +1,1051 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`LoginView.vue > renders with the correct structure 1`] = `
4
+ <div
5
+ class="v-row v-row--no-gutters position-relative"
6
+ >
7
+ <div
8
+ class="v-col-lg-12 v-col-12"
9
+ >
10
+ <div
11
+ class="v-container v-locale--is-ltr"
12
+ >
13
+ <div
14
+ class="d-flex align-center"
15
+ style="min-height: calc(100vh - 148px);"
16
+ >
17
+ <div
18
+ class="v-row justify-center align-content-center"
19
+ >
20
+ <div
21
+ class="pt-6 pl-6 d-flex flex-column align-center"
22
+ >
23
+ <div
24
+ class="v-responsive v-img v-img--booting shrink mr-1 pt-3 ml-1"
25
+ contain=""
26
+ style="width: 150px; opacity: 0.85;"
27
+ >
28
+ <div
29
+ class="v-responsive__sizer"
30
+ />
31
+
32
+
33
+ <transition-stub
34
+ appear="true"
35
+ css="true"
36
+ name="fade-transition"
37
+ persisted="false"
38
+ >
39
+ <img
40
+ class="v-img__img v-img__img--contain"
41
+ src="/src/assets/logo.png"
42
+ style="display: none;"
43
+ />
44
+ </transition-stub>
45
+ <transition-stub
46
+ appear="false"
47
+ css="true"
48
+ name="fade-transition"
49
+ persisted="false"
50
+ >
51
+ <!---->
52
+ </transition-stub>
53
+ <!---->
54
+ <!---->
55
+ <!---->
56
+
57
+
58
+ <!---->
59
+ </div>
60
+ <div
61
+ class="v-toolbar-title text-uppercase text-red"
62
+ >
63
+ <div
64
+ class="v-toolbar-title__placeholder"
65
+ >
66
+ <!---->
67
+
68
+ <strong>
69
+ FDM 
70
+ </strong>
71
+ <strong>
72
+ Monster
73
+ </strong>
74
+
75
+ </div>
76
+ </div>
77
+ <div
78
+ class="v-toolbar-title mt-lg-6 mt-sm-5 mb-md-5"
79
+ >
80
+ <div
81
+ class="v-toolbar-title__placeholder"
82
+ >
83
+ <!---->
84
+
85
+ Login to your account
86
+
87
+ </div>
88
+ </div>
89
+ <div
90
+ class="v-card-subtitle text-grey mb-md-5"
91
+ >
92
+ Welcome back! Please enter your details
93
+ </div>
94
+ </div>
95
+ <div
96
+ class="v-col-md-12 v-col-12"
97
+ >
98
+ <div
99
+ class="v-card v-theme--light v-card--density-default elevation-10 v-card--variant-elevated pa-4 login-card"
100
+ style="border-radius: 10px;"
101
+ >
102
+ <!---->
103
+ <div
104
+ class="v-card__loader"
105
+ >
106
+ <div
107
+ aria-hidden="true"
108
+ aria-valuemax="100"
109
+ aria-valuemin="0"
110
+ class="v-progress-linear v-theme--light v-locale--is-ltr"
111
+ role="progressbar"
112
+ style="top: 0px; height: 0px; --v-progress-linear-height: 2px;"
113
+ >
114
+ <!---->
115
+ <div
116
+ class="v-progress-linear__background"
117
+ />
118
+ <div
119
+ class="v-progress-linear__buffer"
120
+ style="width: 0%;"
121
+ />
122
+ <transition-stub
123
+ appear="false"
124
+ css="true"
125
+ name="fade-transition"
126
+ persisted="false"
127
+ >
128
+ <div
129
+ class="v-progress-linear__indeterminate"
130
+ >
131
+
132
+ <div
133
+ class="v-progress-linear__indeterminate long"
134
+ />
135
+ <div
136
+ class="v-progress-linear__indeterminate short"
137
+ />
138
+
139
+ </div>
140
+ </transition-stub>
141
+ <!---->
142
+ </div>
143
+ </div>
144
+ <!---->
145
+ <!---->
146
+
147
+ <div
148
+ class="v-card-text"
149
+ >
150
+ <form
151
+ class="v-form"
152
+ novalidate=""
153
+ >
154
+
155
+ <label>
156
+ Username
157
+ </label>
158
+ <div
159
+ class="v-input v-input--horizontal v-input--density-default v-theme--light v-locale--is-ltr v-text-field v-input--plain-underlined"
160
+ >
161
+ <div
162
+ class="v-input__prepend"
163
+ >
164
+ <!---->
165
+ <i
166
+ aria-hidden="true"
167
+ class="mdi-account mdi v-icon notranslate v-theme--light v-icon--size-default"
168
+ />
169
+ </div>
170
+ <div
171
+ class="v-input__control"
172
+ >
173
+
174
+ <div
175
+ class="v-field v-field--no-label v-field--variant-underlined v-theme--light v-locale--is-ltr"
176
+ >
177
+ <div
178
+ class="v-field__overlay"
179
+ />
180
+ <div
181
+ class="v-field__loader"
182
+ >
183
+ <div
184
+ aria-hidden="true"
185
+ aria-valuemax="100"
186
+ aria-valuemin="0"
187
+ class="v-progress-linear v-theme--light v-locale--is-ltr"
188
+ role="progressbar"
189
+ style="top: 0px; height: 0px; --v-progress-linear-height: 2px;"
190
+ >
191
+ <!---->
192
+ <div
193
+ class="v-progress-linear__background"
194
+ />
195
+ <div
196
+ class="v-progress-linear__buffer"
197
+ style="width: 0%;"
198
+ />
199
+ <transition-stub
200
+ appear="false"
201
+ css="true"
202
+ name="fade-transition"
203
+ persisted="false"
204
+ >
205
+ <div
206
+ class="v-progress-linear__indeterminate"
207
+ >
208
+
209
+ <div
210
+ class="v-progress-linear__indeterminate long"
211
+ />
212
+ <div
213
+ class="v-progress-linear__indeterminate short"
214
+ />
215
+
216
+ </div>
217
+ </transition-stub>
218
+ <!---->
219
+ </div>
220
+ </div>
221
+ <!---->
222
+ <div
223
+ class="v-field__field"
224
+ data-no-activator=""
225
+ >
226
+ <!---->
227
+ <label
228
+ class="v-label v-field-label"
229
+ for="input-0"
230
+ >
231
+ <!---->
232
+
233
+ <!---->
234
+
235
+ </label>
236
+
237
+
238
+ <!---->
239
+ <input
240
+ aria-describedby="input-0-messages"
241
+ autofocus=""
242
+ class="v-field__input"
243
+ id="input-0"
244
+ name="login"
245
+ placeholder="Username"
246
+ size="1"
247
+ type="text"
248
+ value=""
249
+ />
250
+ <!---->
251
+
252
+
253
+ </div>
254
+ <!---->
255
+ <!---->
256
+ <div
257
+ class="v-field__outline"
258
+ >
259
+ <!---->
260
+ <!---->
261
+ </div>
262
+ </div>
263
+
264
+ </div>
265
+ <!---->
266
+ <div
267
+ class="v-input__details"
268
+ >
269
+ <transition-group-stub
270
+ appear="false"
271
+ aria-live="polite"
272
+ class="v-messages"
273
+ css="true"
274
+ id="input-0-messages"
275
+ name="slide-y-transition"
276
+ persisted="false"
277
+ role="alert"
278
+ tag="div"
279
+ >
280
+ <!---->
281
+ </transition-group-stub>
282
+ <!---->
283
+ </div>
284
+ </div>
285
+ <div
286
+ class="v-input v-input--horizontal v-input--density-default v-theme--light v-locale--is-ltr v-text-field v-input--plain-underlined"
287
+ >
288
+ <div
289
+ class="v-input__prepend"
290
+ >
291
+ <!---->
292
+ <i
293
+ aria-hidden="true"
294
+ class="lock mdi v-icon notranslate v-theme--light v-icon--size-default"
295
+ />
296
+ </div>
297
+ <div
298
+ class="v-input__control"
299
+ >
300
+
301
+ <div
302
+ class="v-field v-field--variant-underlined v-theme--light v-locale--is-ltr"
303
+ >
304
+ <div
305
+ class="v-field__overlay"
306
+ />
307
+ <div
308
+ class="v-field__loader"
309
+ >
310
+ <div
311
+ aria-hidden="true"
312
+ aria-valuemax="100"
313
+ aria-valuemin="0"
314
+ class="v-progress-linear v-theme--light v-locale--is-ltr"
315
+ role="progressbar"
316
+ style="top: 0px; height: 0px; --v-progress-linear-height: 2px;"
317
+ >
318
+ <!---->
319
+ <div
320
+ class="v-progress-linear__background"
321
+ />
322
+ <div
323
+ class="v-progress-linear__buffer"
324
+ style="width: 0%;"
325
+ />
326
+ <transition-stub
327
+ appear="false"
328
+ css="true"
329
+ name="fade-transition"
330
+ persisted="false"
331
+ >
332
+ <div
333
+ class="v-progress-linear__indeterminate"
334
+ >
335
+
336
+ <div
337
+ class="v-progress-linear__indeterminate long"
338
+ />
339
+ <div
340
+ class="v-progress-linear__indeterminate short"
341
+ />
342
+
343
+ </div>
344
+ </transition-stub>
345
+ <!---->
346
+ </div>
347
+ </div>
348
+ <!---->
349
+ <div
350
+ class="v-field__field"
351
+ data-no-activator=""
352
+ >
353
+ <!---->
354
+ <label
355
+ class="v-label v-field-label"
356
+ for="password"
357
+ >
358
+ <!---->
359
+
360
+ Password
361
+
362
+ </label>
363
+
364
+
365
+ <!---->
366
+ <input
367
+ aria-describedby="password-messages"
368
+ class="v-field__input"
369
+ id="password"
370
+ name="password"
371
+ password=""
372
+ size="1"
373
+ type="password"
374
+ value=""
375
+ />
376
+ <!---->
377
+
378
+
379
+ </div>
380
+ <!---->
381
+ <!---->
382
+ <div
383
+ class="v-field__outline"
384
+ >
385
+ <!---->
386
+ <label
387
+ aria-hidden="true"
388
+ class="v-label v-field-label v-field-label--floating"
389
+ for="password"
390
+ >
391
+ <!---->
392
+
393
+ Password
394
+
395
+ </label>
396
+ </div>
397
+ </div>
398
+
399
+ </div>
400
+ <div
401
+ class="v-input__append"
402
+ >
403
+ <i
404
+ aria-hidden="false"
405
+ aria-label="Password appended action"
406
+ class="visibility mdi v-icon notranslate v-theme--light v-icon--size-default v-icon--clickable"
407
+ role="button"
408
+ tabindex="0"
409
+ />
410
+ <!---->
411
+ </div>
412
+ <div
413
+ class="v-input__details"
414
+ >
415
+ <transition-group-stub
416
+ appear="false"
417
+ aria-live="polite"
418
+ class="v-messages"
419
+ css="true"
420
+ id="password-messages"
421
+ name="slide-y-transition"
422
+ persisted="false"
423
+ role="alert"
424
+ tag="div"
425
+ >
426
+ <!---->
427
+ </transition-group-stub>
428
+ <!---->
429
+ </div>
430
+ </div>
431
+ <!--v-if-->
432
+ <!--v-if-->
433
+
434
+ </form>
435
+ </div>
436
+ <div
437
+ class="v-card-actions"
438
+ >
439
+
440
+ <button
441
+ class="v-btn v-btn--slim v-theme--light bg-primary v-btn--density-default v-btn--variant-flat pa-4"
442
+ style="width: 100%;"
443
+ type="button"
444
+ >
445
+
446
+ <span
447
+ class="v-btn__overlay"
448
+ />
449
+ <span
450
+ class="v-btn__underlay"
451
+ />
452
+
453
+ <!---->
454
+ <span
455
+ class="v-btn__content"
456
+ data-no-activator=""
457
+ >
458
+
459
+
460
+ Login
461
+
462
+
463
+ </span>
464
+ <!---->
465
+ <!---->
466
+ </button>
467
+
468
+ </div>
469
+ <div
470
+ class="v-card-actions"
471
+ >
472
+
473
+ <button
474
+ class="v-btn v-btn--disabled v-btn--slim v-theme--light v-btn--density-default v-btn--variant-flat pa-4"
475
+ disabled=""
476
+ style="width: 100%;"
477
+ type="button"
478
+ >
479
+
480
+ <span
481
+ class="v-btn__overlay"
482
+ />
483
+ <span
484
+ class="v-btn__underlay"
485
+ />
486
+
487
+ <!---->
488
+ <span
489
+ class="v-btn__content"
490
+ data-no-activator=""
491
+ >
492
+
493
+
494
+ Register new account (not enabled)
495
+ <i
496
+ aria-hidden="true"
497
+ class="right mdi v-icon notranslate v-theme--light v-icon--size-default pl-5"
498
+ />
499
+
500
+
501
+ </span>
502
+ <!---->
503
+ <!---->
504
+ </button>
505
+
506
+ </div>
507
+
508
+ <!---->
509
+
510
+ <!---->
511
+ <span
512
+ class="v-card__underlay"
513
+ />
514
+
515
+ </div>
516
+ </div>
517
+ </div>
518
+ </div>
519
+ </div>
520
+ </div>
521
+ </div>
522
+ `;
523
+
524
+ exports[`MyComponent.vue > renders with the correct structure 1`] = `
525
+ <div
526
+ class="v-row v-row--no-gutters position-relative"
527
+ >
528
+ <div
529
+ class="v-col-lg-12 v-col-12"
530
+ >
531
+ <div
532
+ class="v-container v-locale--is-ltr"
533
+ >
534
+ <div
535
+ class="d-flex align-center"
536
+ style="min-height: calc(100vh - 148px);"
537
+ >
538
+ <div
539
+ class="v-row justify-center align-content-center"
540
+ >
541
+ <div
542
+ class="pt-6 pl-6 d-flex flex-column align-center"
543
+ >
544
+ <div
545
+ class="v-responsive v-img v-img--booting shrink mr-1 pt-3 ml-1"
546
+ contain=""
547
+ style="width: 150px; opacity: 0.85;"
548
+ >
549
+ <div
550
+ class="v-responsive__sizer"
551
+ />
552
+
553
+
554
+ <transition-stub
555
+ appear="true"
556
+ css="true"
557
+ name="fade-transition"
558
+ persisted="false"
559
+ >
560
+ <img
561
+ class="v-img__img v-img__img--contain"
562
+ src="/src/assets/logo.png"
563
+ style="display: none;"
564
+ />
565
+ </transition-stub>
566
+ <transition-stub
567
+ appear="false"
568
+ css="true"
569
+ name="fade-transition"
570
+ persisted="false"
571
+ >
572
+ <!---->
573
+ </transition-stub>
574
+ <!---->
575
+ <!---->
576
+ <!---->
577
+
578
+
579
+ <!---->
580
+ </div>
581
+ <div
582
+ class="v-toolbar-title text-uppercase text-red"
583
+ >
584
+ <div
585
+ class="v-toolbar-title__placeholder"
586
+ >
587
+ <!---->
588
+
589
+ <strong>
590
+ FDM 
591
+ </strong>
592
+ <strong>
593
+ Monster
594
+ </strong>
595
+
596
+ </div>
597
+ </div>
598
+ <div
599
+ class="v-toolbar-title mt-lg-6 mt-sm-5 mb-md-5"
600
+ >
601
+ <div
602
+ class="v-toolbar-title__placeholder"
603
+ >
604
+ <!---->
605
+
606
+ Login to your account
607
+
608
+ </div>
609
+ </div>
610
+ <div
611
+ class="v-card-subtitle text-grey mb-md-5"
612
+ >
613
+ Welcome back! Please enter your details
614
+ </div>
615
+ </div>
616
+ <div
617
+ class="v-col-md-12 v-col-12"
618
+ >
619
+ <div
620
+ class="v-card v-theme--dark v-card--density-default elevation-10 v-card--variant-elevated pa-4 login-card"
621
+ style="border-radius: 10px;"
622
+ >
623
+ <!---->
624
+ <div
625
+ class="v-card__loader"
626
+ >
627
+ <div
628
+ aria-hidden="true"
629
+ aria-valuemax="100"
630
+ aria-valuemin="0"
631
+ class="v-progress-linear v-theme--dark v-locale--is-ltr"
632
+ role="progressbar"
633
+ style="top: 0px; height: 0px; --v-progress-linear-height: 2px;"
634
+ >
635
+ <!---->
636
+ <div
637
+ class="v-progress-linear__background"
638
+ />
639
+ <div
640
+ class="v-progress-linear__buffer"
641
+ style="width: 0%;"
642
+ />
643
+ <transition-stub
644
+ appear="false"
645
+ css="true"
646
+ name="fade-transition"
647
+ persisted="false"
648
+ >
649
+ <div
650
+ class="v-progress-linear__indeterminate"
651
+ >
652
+
653
+ <div
654
+ class="v-progress-linear__indeterminate long"
655
+ />
656
+ <div
657
+ class="v-progress-linear__indeterminate short"
658
+ />
659
+
660
+ </div>
661
+ </transition-stub>
662
+ <!---->
663
+ </div>
664
+ </div>
665
+ <!---->
666
+ <!---->
667
+
668
+ <div
669
+ class="v-card-text"
670
+ >
671
+ <form
672
+ class="v-form"
673
+ novalidate=""
674
+ >
675
+
676
+ <label>
677
+ Username
678
+ </label>
679
+ <div
680
+ class="v-input v-input--horizontal v-input--density-default v-theme--dark v-locale--is-ltr v-text-field v-input--plain-underlined"
681
+ >
682
+ <div
683
+ class="v-input__prepend"
684
+ >
685
+ <!---->
686
+ <i
687
+ aria-hidden="true"
688
+ class="material-icons v-icon notranslate v-theme--dark v-icon--size-default"
689
+ >
690
+ mdi-account
691
+ </i>
692
+ </div>
693
+ <div
694
+ class="v-input__control"
695
+ >
696
+
697
+ <div
698
+ class="v-field v-field--no-label v-field--variant-underlined v-theme--dark v-locale--is-ltr"
699
+ >
700
+ <div
701
+ class="v-field__overlay"
702
+ />
703
+ <div
704
+ class="v-field__loader"
705
+ >
706
+ <div
707
+ aria-hidden="true"
708
+ aria-valuemax="100"
709
+ aria-valuemin="0"
710
+ class="v-progress-linear v-theme--dark v-locale--is-ltr"
711
+ role="progressbar"
712
+ style="top: 0px; height: 0px; --v-progress-linear-height: 2px;"
713
+ >
714
+ <!---->
715
+ <div
716
+ class="v-progress-linear__background"
717
+ />
718
+ <div
719
+ class="v-progress-linear__buffer"
720
+ style="width: 0%;"
721
+ />
722
+ <transition-stub
723
+ appear="false"
724
+ css="true"
725
+ name="fade-transition"
726
+ persisted="false"
727
+ >
728
+ <div
729
+ class="v-progress-linear__indeterminate"
730
+ >
731
+
732
+ <div
733
+ class="v-progress-linear__indeterminate long"
734
+ />
735
+ <div
736
+ class="v-progress-linear__indeterminate short"
737
+ />
738
+
739
+ </div>
740
+ </transition-stub>
741
+ <!---->
742
+ </div>
743
+ </div>
744
+ <!---->
745
+ <div
746
+ class="v-field__field"
747
+ data-no-activator=""
748
+ >
749
+ <!---->
750
+ <label
751
+ class="v-label v-field-label"
752
+ for="input-0"
753
+ >
754
+ <!---->
755
+
756
+ <!---->
757
+
758
+ </label>
759
+
760
+
761
+ <!---->
762
+ <input
763
+ aria-describedby="input-0-messages"
764
+ autofocus=""
765
+ class="v-field__input"
766
+ id="input-0"
767
+ name="login"
768
+ placeholder="Username"
769
+ size="1"
770
+ type="text"
771
+ value=""
772
+ />
773
+ <!---->
774
+
775
+
776
+ </div>
777
+ <!---->
778
+ <!---->
779
+ <div
780
+ class="v-field__outline"
781
+ >
782
+ <!---->
783
+ <!---->
784
+ </div>
785
+ </div>
786
+
787
+ </div>
788
+ <!---->
789
+ <div
790
+ class="v-input__details"
791
+ >
792
+ <transition-group-stub
793
+ appear="false"
794
+ aria-live="polite"
795
+ class="v-messages"
796
+ css="true"
797
+ id="input-0-messages"
798
+ name="slide-y-transition"
799
+ persisted="false"
800
+ role="alert"
801
+ tag="div"
802
+ >
803
+ <!---->
804
+ </transition-group-stub>
805
+ <!---->
806
+ </div>
807
+ </div>
808
+ <div
809
+ class="v-input v-input--horizontal v-input--density-default v-theme--dark v-locale--is-ltr v-text-field v-input--plain-underlined"
810
+ >
811
+ <div
812
+ class="v-input__prepend"
813
+ >
814
+ <!---->
815
+ <i
816
+ aria-hidden="true"
817
+ class="material-icons v-icon notranslate v-theme--dark v-icon--size-default"
818
+ >
819
+ lock
820
+ </i>
821
+ </div>
822
+ <div
823
+ class="v-input__control"
824
+ >
825
+
826
+ <div
827
+ class="v-field v-field--variant-underlined v-theme--dark v-locale--is-ltr"
828
+ >
829
+ <div
830
+ class="v-field__overlay"
831
+ />
832
+ <div
833
+ class="v-field__loader"
834
+ >
835
+ <div
836
+ aria-hidden="true"
837
+ aria-valuemax="100"
838
+ aria-valuemin="0"
839
+ class="v-progress-linear v-theme--dark v-locale--is-ltr"
840
+ role="progressbar"
841
+ style="top: 0px; height: 0px; --v-progress-linear-height: 2px;"
842
+ >
843
+ <!---->
844
+ <div
845
+ class="v-progress-linear__background"
846
+ />
847
+ <div
848
+ class="v-progress-linear__buffer"
849
+ style="width: 0%;"
850
+ />
851
+ <transition-stub
852
+ appear="false"
853
+ css="true"
854
+ name="fade-transition"
855
+ persisted="false"
856
+ >
857
+ <div
858
+ class="v-progress-linear__indeterminate"
859
+ >
860
+
861
+ <div
862
+ class="v-progress-linear__indeterminate long"
863
+ />
864
+ <div
865
+ class="v-progress-linear__indeterminate short"
866
+ />
867
+
868
+ </div>
869
+ </transition-stub>
870
+ <!---->
871
+ </div>
872
+ </div>
873
+ <!---->
874
+ <div
875
+ class="v-field__field"
876
+ data-no-activator=""
877
+ >
878
+ <!---->
879
+ <label
880
+ class="v-label v-field-label"
881
+ for="password"
882
+ >
883
+ <!---->
884
+
885
+ Password
886
+
887
+ </label>
888
+
889
+
890
+ <!---->
891
+ <input
892
+ aria-describedby="password-messages"
893
+ class="v-field__input"
894
+ id="password"
895
+ name="password"
896
+ password=""
897
+ size="1"
898
+ type="password"
899
+ value=""
900
+ />
901
+ <!---->
902
+
903
+
904
+ </div>
905
+ <!---->
906
+ <!---->
907
+ <div
908
+ class="v-field__outline"
909
+ >
910
+ <!---->
911
+ <label
912
+ aria-hidden="true"
913
+ class="v-label v-field-label v-field-label--floating"
914
+ for="password"
915
+ >
916
+ <!---->
917
+
918
+ Password
919
+
920
+ </label>
921
+ </div>
922
+ </div>
923
+
924
+ </div>
925
+ <div
926
+ class="v-input__append"
927
+ >
928
+ <i
929
+ aria-hidden="false"
930
+ aria-label="Password appended action"
931
+ class="material-icons v-icon notranslate v-theme--dark v-icon--size-default v-icon--clickable"
932
+ role="button"
933
+ tabindex="0"
934
+ >
935
+ visibility
936
+ </i>
937
+ <!---->
938
+ </div>
939
+ <div
940
+ class="v-input__details"
941
+ >
942
+ <transition-group-stub
943
+ appear="false"
944
+ aria-live="polite"
945
+ class="v-messages"
946
+ css="true"
947
+ id="password-messages"
948
+ name="slide-y-transition"
949
+ persisted="false"
950
+ role="alert"
951
+ tag="div"
952
+ >
953
+ <!---->
954
+ </transition-group-stub>
955
+ <!---->
956
+ </div>
957
+ </div>
958
+ <!--v-if-->
959
+ <!--v-if-->
960
+
961
+ </form>
962
+ </div>
963
+ <div
964
+ class="v-card-actions"
965
+ >
966
+
967
+ <button
968
+ class="v-btn v-btn--slim v-theme--dark bg-primary v-btn--density-default v-btn--variant-flat pa-4"
969
+ style="width: 100%;"
970
+ type="button"
971
+ >
972
+
973
+ <span
974
+ class="v-btn__overlay"
975
+ />
976
+ <span
977
+ class="v-btn__underlay"
978
+ />
979
+
980
+ <!---->
981
+ <span
982
+ class="v-btn__content"
983
+ data-no-activator=""
984
+ >
985
+
986
+
987
+ Login
988
+
989
+
990
+ </span>
991
+ <!---->
992
+ <!---->
993
+ </button>
994
+
995
+ </div>
996
+ <div
997
+ class="v-card-actions"
998
+ >
999
+
1000
+ <button
1001
+ class="v-btn v-btn--disabled v-btn--slim v-theme--dark v-btn--density-default v-btn--variant-flat pa-4"
1002
+ disabled=""
1003
+ style="width: 100%;"
1004
+ type="button"
1005
+ >
1006
+
1007
+ <span
1008
+ class="v-btn__overlay"
1009
+ />
1010
+ <span
1011
+ class="v-btn__underlay"
1012
+ />
1013
+
1014
+ <!---->
1015
+ <span
1016
+ class="v-btn__content"
1017
+ data-no-activator=""
1018
+ >
1019
+
1020
+
1021
+ Register new account (not enabled)
1022
+ <i
1023
+ aria-hidden="true"
1024
+ class="material-icons v-icon notranslate v-theme--dark v-icon--size-default pl-5"
1025
+ >
1026
+ right
1027
+ </i>
1028
+
1029
+
1030
+ </span>
1031
+ <!---->
1032
+ <!---->
1033
+ </button>
1034
+
1035
+ </div>
1036
+
1037
+ <!---->
1038
+
1039
+ <!---->
1040
+ <span
1041
+ class="v-card__underlay"
1042
+ />
1043
+
1044
+ </div>
1045
+ </div>
1046
+ </div>
1047
+ </div>
1048
+ </div>
1049
+ </div>
1050
+ </div>
1051
+ `;