diff options
Diffstat (limited to 'src/layouts/_split-view.scss')
-rw-r--r-- | src/layouts/_split-view.scss | 119 |
1 files changed, 67 insertions, 52 deletions
diff --git a/src/layouts/_split-view.scss b/src/layouts/_split-view.scss index 2744510..6469a7d 100644 --- a/src/layouts/_split-view.scss +++ b/src/layouts/_split-view.scss | |||
@@ -8,69 +8,84 @@ | |||
8 | @use 'split-view.vars' as vars; | 8 | @use 'split-view.vars' as vars; |
9 | 9 | ||
10 | @mixin styles { | 10 | @mixin styles { |
11 | @include materialize-at-root(meta.module-variables('vars')); | 11 | @include materialize-at-root(meta.module-variables('vars')); |
12 | 12 | ||
13 | @include bem.layout('split-view') { | 13 | @include bem.layout('split-view') { |
14 | display: flex; | 14 | display: flex; |
15 | gap: props.get(vars.$col-gap); | 15 | gap: props.get(vars.$col-gap); |
16 | align-items: start; | 16 | align-items: start; |
17 | 17 | ||
18 | @include bem.modifier('gapless') { | 18 | @include bem.elem('panel') { |
19 | gap: props.get(vars.$gapless); | 19 | flex: 1 1 auto; |
20 | } | 20 | inline-size: 100%; |
21 | min-inline-size: 0; | ||
21 | 22 | ||
22 | @include bem.elem('panel') { | 23 | @include bem.modifier('side-25') { |
23 | flex: 1 1 auto; | 24 | flex: 0 0 auto; |
24 | inline-size: 100%; | 25 | inline-size: 25%; |
25 | min-inline-size: 0; | 26 | min-inline-size: props.get(vars.$panel--side-25--min); |
27 | } | ||
26 | 28 | ||
27 | @include bem.modifier('side-25') { | 29 | @include bem.modifier('sticky-0') { |
28 | flex: 0 0 auto; | 30 | position: sticky; |
29 | inline-size: 25%; | 31 | inset-block-start: 0; |
30 | min-inline-size: props.get(vars.$panel--side-25--min); | 32 | } |
31 | } | ||
32 | 33 | ||
33 | @include bem.modifier('sticky-0') { | 34 | @include bem.modifier('sticky') { |
34 | position: sticky; | 35 | position: sticky; |
35 | inset-block-start: 0; | 36 | inset-block-start: props.get(vars.$panel--sticky-offset); |
36 | } | 37 | } |
37 | 38 | ||
38 | @include bem.modifier('sticky') { | 39 | @include bem.modifier('sticky-400') { |
39 | position: sticky; | 40 | position: sticky; |
40 | inset-block-start: props.get(vars.$panel--sticky-offset); | 41 | inset-block-start: calc(props.get(vars.$panel--sticky-400--inset) + props.get(vars.$panel--sticky-offset)); |
41 | } | 42 | } |
42 | 43 | ||
43 | @include bem.modifier('sticky-400') { | 44 | @include bem.modifier('sticky-1200') { |
44 | position: sticky; | 45 | position: sticky; |
45 | inset-block-start: calc(props.get(vars.$panel--sticky-400--inset) + props.get(vars.$panel--sticky-offset)); | 46 | inset-block-start: calc(props.get(vars.$panel--sticky-1200--inset) + props.get(vars.$panel--sticky-offset)); |
46 | } | 47 | } |
47 | } | 48 | } |
48 | 49 | ||
49 | @include bem.elem('content') { | 50 | @include bem.modifier('gapless') { |
50 | inline-size: 100%; | 51 | gap: props.get(vars.$gapless); |
51 | } | ||
52 | 52 | ||
53 | @include media.media('<=md') { | 53 | @include bem.elem('panel') { |
54 | flex-direction: column; | 54 | @include bem.modifier('side-25') { |
55 | gap: props.get(vars.$row-gap); | 55 | min-inline-size: calc(props.get(vars.$panel--side-25--min) + props.get(vars.$col-gap) - props.get(vars.$gapless)); |
56 | align-items: stretch; | 56 | } |
57 | } | ||
58 | } | ||
57 | 59 | ||
58 | @include bem.modifier('wrap-reverse') { | 60 | @include bem.elem('content') { |
59 | flex-direction: column-reverse; | 61 | inline-size: 100%; |
60 | } | 62 | } |
61 | 63 | ||
62 | @include bem.elem('panel') { | 64 | @include media.media('<=md') { |
63 | flex: 1 1 auto; | 65 | flex-direction: column; |
66 | gap: props.get(vars.$row-gap); | ||
67 | align-items: stretch; | ||
64 | 68 | ||
65 | @include bem.modifier('side-25') { | 69 | @include bem.modifier('gapless') { |
66 | inline-size: auto; | 70 | gap: props.get(vars.$gapless); |
67 | min-inline-size: 0; | 71 | } |
68 | } | ||
69 | 72 | ||
70 | @include bem.modifier('sticky', 'sticky-400') { | 73 | @include bem.modifier('wrap-reverse') { |
71 | position: static; | 74 | flex-direction: column-reverse; |
72 | } | 75 | } |
73 | } | 76 | |
74 | } | 77 | @include bem.elem('panel') { |
75 | } | 78 | inline-size: auto; |
79 | |||
80 | @include bem.modifier('side-25') { | ||
81 | inline-size: auto; | ||
82 | min-inline-size: 0; | ||
83 | } | ||
84 | |||
85 | @include bem.modifier('sticky', 'sticky-400', 'sticky-1200') { | ||
86 | position: static; | ||
87 | } | ||
88 | } | ||
89 | } | ||
90 | } | ||
76 | } | 91 | } |