+
@@ -490,10 +500,20 @@ export default {
+
@@ -514,7 +534,7 @@ export default {
}"
>
-
+
{{ diffFiles.length }}
-
+
diff --git a/app/assets/javascripts/diffs/components/loaders/diff_files_loading.vue b/app/assets/javascripts/diffs/components/loaders/diff_files_loading.vue
new file mode 100644
index 0000000000000000000000000000000000000000..55d0c89218aef55ef47fcb120e5f13df3f9e7904
--- /dev/null
+++ b/app/assets/javascripts/diffs/components/loaders/diff_files_loading.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/javascripts/diffs/components/loaders/file_tree_loading.vue b/app/assets/javascripts/diffs/components/loaders/file_tree_loading.vue
new file mode 100644
index 0000000000000000000000000000000000000000..d5d57160e66ad794514f2a370fffea1abdb22458
--- /dev/null
+++ b/app/assets/javascripts/diffs/components/loaders/file_tree_loading.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/javascripts/diffs/components/loaders/mr_version_controls_loading.vue b/app/assets/javascripts/diffs/components/loaders/mr_version_controls_loading.vue
new file mode 100644
index 0000000000000000000000000000000000000000..8d0aeb01921c3409ba891afe726ff780ab79b7dd
--- /dev/null
+++ b/app/assets/javascripts/diffs/components/loaders/mr_version_controls_loading.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/stylesheets/pages/merge_requests.scss b/app/assets/stylesheets/pages/merge_requests.scss
index a62df1258afc39df31852a04865b78d4fa6cd345..ca1eae2f5426a4865810616127333d432c708a27 100644
--- a/app/assets/stylesheets/pages/merge_requests.scss
+++ b/app/assets/stylesheets/pages/merge_requests.scss
@@ -439,6 +439,77 @@ $mr-widget-min-height: 69px;
}
}
+/************************************
+ *
+ * App Layout during loading states
+ *
+ ***********************************/
+
+.version-controls-loader {
+ grid-template-columns: 1fr 1fr;
+
+ svg {
+ max-height: 32px;
+
+ &:last-of-type {
+ position: absolute;
+ right: 78px;
+ }
+ }
+
+ .gl-spinner-container {
+ grid-column: 1 / 3;
+ }
+}
+
+.version-controls-loader,
+.file-tree-loader,
+.diff-files-loader {
+ .gl-skeleton-loader {
+ display: none;
+ }
+
+ @include media-breakpoint-up(sm) {
+ .gl-spinner-container {
+ display: none;
+ }
+
+ .gl-skeleton-loader {
+ display: unset;
+ }
+ }
+}
+
+.diffs {
+ .files {
+ display: flex;
+
+ &.with-tree {
+ @include media-breakpoint-up(md) {
+ display: grid;
+ }
+
+ .diff-files-loader .gl-spinner-container {
+ @include gl-mt-5;
+ }
+ }
+ }
+
+ .diff-files-holder {
+ grid-column: 1;
+
+ @include media-breakpoint-up(md) {
+ grid-column: 2;
+ }
+ }
+}
+
+/************************************
+ *
+ * In lieu of another section starting: End of previous section
+ *
+ ***********************************/
+
.nothing-here-block {
img {
width: 230px;
diff --git a/changelogs/unreleased/tor-feature-mr-skeleton-loader.yml b/changelogs/unreleased/tor-feature-mr-skeleton-loader.yml
new file mode 100644
index 0000000000000000000000000000000000000000..160129f373fc46c418f42b156e3c005f3364a03b
--- /dev/null
+++ b/changelogs/unreleased/tor-feature-mr-skeleton-loader.yml
@@ -0,0 +1,6 @@
+---
+title: Swap to skeleton loaders from a single circular loader on MR Diffs (Changes)
+ tab
+merge_request: 53133
+author:
+type: added