feat(sidebar): resize width

pull/1361/head
charlie 2021-02-23 18:29:41 +08:00 committed by Tienson Qin
parent b5f695fd19
commit d5e87aaa35
6 changed files with 53 additions and 9 deletions

View File

@ -101,8 +101,9 @@ const portal = new MagicPortal(worker);
window.workerThread = workerThread
})()
</script>
<script src="./js/main.js"></script>
<script src="./js/highlight.min.js"></script>
<script src="./js/code-editor.js"></script>
<script defer src="./js/highlight.min.js"></script>
<script defer src="./js/interact.min.js"></script>
<script defer src="./js/main.js"></script>
<script defer src="./js/code-editor.js"></script>
</body>
</html>

View File

@ -102,8 +102,9 @@ const portal = new MagicPortal(worker);
window.workerThread = workerThread
})()
</script>
<script src="./js/main.js"></script>
<script src="./js/highlight.min.js"></script>
<script src="./js/code-editor.js"></script>
<script defer src="./js/highlight.min.js"></script>
<script defer src="./js/interact.min.js"></script>
<script defer src="./js/main.js"></script>
<script defer src="./js/code-editor.js"></script>
</body>
</html>

2
resources/js/interact.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -208,6 +208,32 @@
theme (:ui/theme @state/state)]
(get-page match)))
(rum/defc sidebar-resizer
[]
(let [el-ref (rum/use-ref nil)]
(rum/use-effect!
(fn []
(when-let [el (and (fn? js/interact) (rum/deref el-ref))]
(-> (js/interact el)
(.draggable
(bean/->js
{:listeners
{:move
(fn [^js/MouseEvent e]
(let [width js/document.documentElement.clientWidth
offset (.-left (.-rect e))
to-val (- 1 (.toFixed (/ offset width) 6))
to-val (cond
(< to-val 0.2) 0.2
(> to-val 0.7) 0.7
:else to-val)]
(.setProperty (.-style js/document.documentElement)
"--ls-right-sidebar-width"
(str (* to-val 100) "%"))))}}))))
#())
[])
[:span.resizer {:ref el-ref}]))
(rum/defcs sidebar < rum/reactive
[state]
(let [blocks (state/sub :sidebar/blocks)
@ -224,6 +250,7 @@
{:class (if sidebar-open? "is-open")}
(if sidebar-open?
[:div.cp__right-sidebar-inner
(sidebar-resizer)
[:div.flex.flex-row.justify-between.items-center
[:div.cp__right-sidebar-settings.hide-scrollbar {:key "right-sidebar-settings"}
[:div.ml-4.text-sm

View File

@ -66,7 +66,7 @@
.cp__sidebar-layout.is-right-sidebar-open {
.cp__sidebar-main-layout {
margin-right: 40%;
margin-right: var(--ls-right-sidebar-width);
}
}
@ -139,6 +139,16 @@
&-inner {
padding: 15px;
padding-top: 0;
.resizer {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 4px;
user-select: none;
cursor: col-resize !important;
}
}
&-settings {
@ -156,13 +166,14 @@
}
.close-arrow svg {
transform: scale(0.8);
transform: scale(0.8);
}
&.is-open {
display: block;
width: 40%;
width: var(--ls-right-sidebar-width);
opacity: 1;
transition: width 0.2s;
}
.page {

View File

@ -8,6 +8,8 @@
--ls-z-index-level-3: 999;
--ls-z-index-level-4: 9999;
--ls-z-index-level-5: 99999;
--ls-right-sidebar-width: 40%;
}
html {