Improve redraw performance

It’s noticeable when clicking from row to row in the spreadsheet that
the page jumps around a fair bit on load because there are a couple of
Javascript-powered components.

This commit makes sure:
- the radio select component doesn’t change height when rendering for
  the first time
- the scrollable table doesn’t show parts of the table that should be
  hidden by overflow for a fraction of second before all the JS has
  run
- the right-hand shadow on horizontally scrollable tables doesn’t fade
  in on initial page load but shows at 100% opacity immediately
This commit is contained in:
Chris Hill-Scott
2018-01-15 11:35:45 +00:00
parent 072f8e0f87
commit 784f577c4d
3 changed files with 16 additions and 4 deletions

View File

@@ -52,7 +52,8 @@
'height': this.nativeHeight, 'height': this.nativeHeight,
'top': this.topOffset 'top': this.topOffset
}) })
); )
.css('position', 'absolute');
this.$scrollableTable = this.$component.find('.fullscreen-scrollable-table'); this.$scrollableTable = this.$component.find('.fullscreen-scrollable-table');
this.$fixedTable = this.$component.find('.fullscreen-fixed-table'); this.$fixedTable = this.$component.find('.fullscreen-fixed-table');
@@ -100,6 +101,11 @@
this.$scrollableTable.scrollLeft() < (this.$table.width() - this.$scrollableTable.width()) this.$scrollableTable.scrollLeft() < (this.$table.width() - this.$scrollableTable.width())
); );
setTimeout(
() => this.$component.find('.fullscreen-right-shadow').addClass('with-transition'),
3000
);
}; };
}; };

View File

@@ -6,8 +6,7 @@
z-index: 10; z-index: 10;
overflow-y: hidden; overflow-y: hidden;
box-sizing: border-box; box-sizing: border-box;
position: absolute; margin: 0 0 $gutter 0;
margin: 5px 0 $gutter 0;
padding: 0 0 0 0; padding: 0 0 0 0;
overflow: hidden; overflow: hidden;
border-bottom: 1px solid $border-colour; border-bottom: 1px solid $border-colour;
@@ -42,8 +41,13 @@
z-index: 200; z-index: 200;
&.visible { &.visible {
transition: box-shadow 0.3s ease-in-out;
&.with-transition {
transition: box-shadow 0.6s ease-out;
}
box-shadow: inset -1px 0 0 0 $border-colour, inset -3px 0 0 0 rgba($border-colour, 0.2); box-shadow: inset -1px 0 0 0 $border-colour, inset -3px 0 0 0 rgba($border-colour, 0.2);
} }
} }

View File

@@ -1,5 +1,7 @@
.radio-select { .radio-select {
min-height: 39px;
&-column { &-column {
display: inline-block; display: inline-block;