mirror of https://github.com/Budibase/budibase.git
4 changed files with 159 additions and 213 deletions
@ -0,0 +1,108 @@ |
|||||
|
<script> |
||||
|
export let icon |
||||
|
export let withArrow = false |
||||
|
export let withActions = true |
||||
|
export let indentLevel = 0 |
||||
|
export let text |
||||
|
export let border = true |
||||
|
export let selected = false |
||||
|
export let opened = false |
||||
|
export let draggable = false |
||||
|
</script> |
||||
|
|
||||
|
<div |
||||
|
class="container" |
||||
|
class:border |
||||
|
class:selected |
||||
|
style={`padding-left: ${indentLevel * 18}px`} |
||||
|
{draggable} |
||||
|
on:dragend |
||||
|
on:dragstart |
||||
|
on:dragover |
||||
|
on:drop |
||||
|
on:click |
||||
|
ondragover="return false" |
||||
|
ondragenter="return false"> |
||||
|
<div class="content"> |
||||
|
{#if withArrow} |
||||
|
<div class:opened class="icon arrow"> |
||||
|
<i class="ri-arrow-right-s-fill" /> |
||||
|
</div> |
||||
|
{/if} |
||||
|
{#if icon} |
||||
|
<div class="icon"><i class={icon} /></div> |
||||
|
{/if} |
||||
|
<div class="text">{text}</div> |
||||
|
{#if withActions} |
||||
|
<div class="actions"> |
||||
|
<slot /> |
||||
|
</div> |
||||
|
{/if} |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<style> |
||||
|
.container { |
||||
|
border-radius: var(--border-radius-m); |
||||
|
cursor: pointer; |
||||
|
color: var(--grey-7); |
||||
|
} |
||||
|
.container.border { |
||||
|
border-top: 1px solid var(--grey-1); |
||||
|
} |
||||
|
.container.selected { |
||||
|
background-color: var(--grey-2); |
||||
|
color: var(--ink); |
||||
|
} |
||||
|
.container:hover { |
||||
|
background-color: var(--grey-1); |
||||
|
} |
||||
|
.container:hover .actions { |
||||
|
display: flex; |
||||
|
} |
||||
|
|
||||
|
.content { |
||||
|
padding: 0 var(--spacing-m); |
||||
|
height: 32px; |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
justify-content: flex-start; |
||||
|
align-items: center; |
||||
|
gap: var(--spacing-xs); |
||||
|
} |
||||
|
|
||||
|
.icon { |
||||
|
font-size: 16px; |
||||
|
flex: 0 0 20px; |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
.icon.arrow { |
||||
|
margin: 0 -2px 0 -6px; |
||||
|
} |
||||
|
.icon.arrow.opened { |
||||
|
transform: rotate(90deg); |
||||
|
} |
||||
|
.icon + .icon { |
||||
|
margin-left: -4px; |
||||
|
} |
||||
|
|
||||
|
.text { |
||||
|
flex: 1 1 auto; |
||||
|
font-weight: 500; |
||||
|
font-size: var(--font-size-xs); |
||||
|
} |
||||
|
|
||||
|
.actions { |
||||
|
display: none; |
||||
|
width: 20px; |
||||
|
height: 20px; |
||||
|
cursor: pointer; |
||||
|
position: relative; |
||||
|
flex-direction: row; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
</style> |
||||
Loading…
Reference in new issue