Commit graph

72 commits

Author SHA1 Message Date
J. Ryan Stinnett
1dc2ae007f Fix soft crash on room join
This fixes a soft crash that can happen on room join if you keep the right panel
open (which is the default). The `MainSplit` component was not properly testing
for the edge cases of when the resize container would be mounted.

Fixes https://github.com/vector-im/riot-web/issues/10997
2019-10-08 15:43:57 +01:00
Bruno Windels
f029aad9fa rename to getLayout 2019-02-04 18:38:31 +00:00
Bruno Windels
d30ff13c18 pass the layout to the resizer as a lamba to avoid having the wrong layout when filtering 2019-02-04 15:09:44 +00:00
Bruno Windels
529c48d1b0 avoid whitespace and expand all matching section when filtering 2019-01-29 10:01:55 +01:00
Bruno Windels
8d1e105b50 add option for whitespace behaviour and handle height 2019-01-28 18:02:36 +01:00
Bruno Windels
88f25dec4d don't over-constraint layout while resizing
adapting the approach taken in the prototype
2019-01-28 17:52:46 +01:00
Bruno Windels
b0bb4eb5ab better naming 2019-01-28 16:30:34 +01:00
Bruno Windels
d833174d68 floor default section height 2019-01-28 16:29:34 +01:00
Bruno Windels
6e55ebdab7 better naming for anchor 2019-01-28 16:10:50 +01:00
Bruno Windels
dab1f30ab4 remove obsolete logging and comments 2019-01-28 16:08:38 +01:00
Bruno Windels
87720bac2e add comments to fields 2019-01-28 16:03:08 +01:00
Bruno Windels
d56f77debe ignore updates that don't change anything 2019-01-28 16:02:56 +01:00
Bruno Windels
14485b60be assign default height after assigning new sections
also apply it to sections with value null
2019-01-28 16:00:28 +01:00
Bruno Windels
eaf212dd89 fix lint - bis bis 2019-01-28 15:28:56 +01:00
Bruno Windels
f103e60d1d fix lint - bis 2019-01-28 15:22:05 +01:00
Bruno Windels
d08216e857 fix lint 2019-01-28 14:56:14 +01:00
Bruno Windels
bfb1031a6b unify heights stored by id and index, to avoid them getting out of sync
effectively get rid of _originalHeights and calculate the array
from the dictionary when needed
2019-01-28 14:52:40 +01:00
Bruno Windels
0a5e8e6cfe WIP on persisting height across collapse/expand 2019-01-28 14:35:04 +01:00
Bruno Windels
8ffeee6a98 add matthews new resize algo 2019-01-25 18:47:34 +01:00
Bruno Windels
4eb2555fc1 initial support for collapsing 2019-01-24 18:18:10 +01:00
Bruno Windels
b230e65e74 prevent height doubling when resizing
caused by mixing up absolute height with incremental height
2019-01-24 16:44:36 +01:00
Bruno Windels
1092244bbf more fixes for updates/resizing 2019-01-24 15:43:23 +01:00
Bruno Windels
5bddf62d54 WIP to port prototype code 2019-01-23 18:30:51 +01:00
Bruno Windels
313bbaaeaa remove obsolete comments 2019-01-16 11:33:41 +01:00
Travis Ralston
fed256cbaa
Update src/resizer/distributors/roomsublist.js
Co-Authored-By: bwindels <bruno@windels.cloud>
2019-01-16 10:29:30 +00:00
Travis Ralston
98aa657052
Update src/resizer/distributors/collapse.js
Co-Authored-By: bwindels <bruno@windels.cloud>
2019-01-16 10:29:22 +00:00
Travis Ralston
2bd65e14b7
Update src/resizer/distributors/fixed.js
Co-Authored-By: bwindels <bruno@windels.cloud>
2019-01-16 10:29:15 +00:00
Travis Ralston
a5424f32a5
Update src/resizer/item.js
Co-Authored-By: bwindels <bruno@windels.cloud>
2019-01-16 10:29:05 +00:00
Bruno Windels
3c7bed97ac size all items to rendered height when starting drag operation
before, we'd only normalize the sublists that had already been
sized manually. As non-sized items still have flex-basis: auto,
they would claim all the space, and mixing sized and unsized items
would be badly broken.

Now, on the first click, all items are sized to their rendered size
which means they won't flex anymore, but at least the resizing works
this way

Another downside is that when resizing while a sublist is
collapsed, it's reverted to 100px and if a size had been set before,
it's forgotten. No way around this with this approach I'm afraid.
2019-01-15 12:56:48 +01:00
Bruno Windels
aa90e9591a fix min & max size for empty sublists 2019-01-15 12:56:33 +01:00
Bruno Windels
7e395f0fb6 cleanup - part II
reshuffle file structure to make more sense
2019-01-14 20:33:33 +01:00
Bruno Windels
9ecb23ce71 cleanup
- move some methods to ResizeItem subclass
- allow distributor to instanciate sizer and resizeitem it needs
  through static factory methods, instead of passing in another ctor
  a distributor can only function with the right item and sizer anyways.
- use consistent import/export style
- remove obsolete code
2019-01-14 20:24:54 +01:00
Bruno Windels
136dd4a556 stop resize operation when cursor leaves viewport
as mouseup can't be detected outside of viewport
2019-01-11 18:20:34 +01:00
Bruno Windels
a413f358f7 normalize sizes when starting drag operation 2019-01-11 17:17:58 +01:00
Bruno Windels
9456fc040d fix typo 2019-01-11 16:10:35 +01:00
Bruno Windels
92b9a8cc1f persist cleared size sublists 2019-01-10 18:40:26 +01:00
Bruno Windels
a130c44803 try clear next item size when resizing so there is always one unsized item 2019-01-10 14:12:05 +01:00
Bruno Windels
68afadd83b try flex-basis for resizing 2019-01-10 14:03:17 +01:00
Bruno Windels
51376c5c07 draft room sub list item api 2019-01-09 15:53:04 +01:00
Bruno Windels
b82e19b1f7 size header explicitly for content size
otherwise it just grows with max-height
2019-01-09 15:45:47 +01:00
Bruno Windels
0803ea9158 support collapsed items 2019-01-08 18:17:34 +01:00
Bruno Windels
8352d8c6bd not sure we need this, but adding the padding in _offset container 2019-01-08 18:17:00 +01:00
Bruno Windels
b4197059a0 change min size to exactly one room tile + header 2019-01-08 18:16:09 +01:00
Bruno Windels
4bd6ce8e2c WIP2 for making smart resizer work, sort of works now but shows big scrollbar 2019-01-08 16:47:47 +01:00
Bruno Windels
d558ea1dbf WIP 2018-12-19 23:51:19 +01:00
Bruno Windels
3ddc8baed1 fix resizing sometimes not working (and selecting text)
Last friday a child <div> was added inside the ResizeHandle component,
which made the parentElement/classList checks fail on the event.target
here. This would only fail (and select all the text) when dragging exactly on
the grey line (the div), not the transparent margin around it.

use closest to make sure we have the root element of the handle.
2018-12-18 14:27:10 +01:00
Bruno Windels
75925f6192 room sublist seems to get rendered w/o _scroll element
when loading the page from a community url
2018-12-10 16:51:32 +01:00
Bruno Windels
f7a37be6dd support associating an id with a resize item/handle 2018-11-26 16:46:27 +01:00
Bruno Windels
dae509d0eb introduce resizeFromContainerOffset method on distributor
up till now, resize received the offset of the resize handle
within the container upon resizing, and would then calculate
it's new size. For this first item in the container, this is
the same, and has therefor not been a problem yet.

Now however, we'll need to be able to programatically
(from localStorage) set the size of any roomsublist,
so need a method we can call with just the size and not an offset
within the container. The resizer calls the new method,
which subsequently calls resize.

This also has the nice side-effect that you can now easily
call super.resize after having transformed the new item size
2018-11-26 16:42:58 +01:00
Bruno Windels
3e496833fc remove unused PercentageDistributor
it's not used and we need to make some
api changes that don't work with it (resize will receive itemSize
which it doesn't really support)
2018-11-26 16:41:49 +01:00