|
<script lang="ts"> |
|
let className = ""; |
|
export { className as class }; |
|
export let classes: Record<string, boolean> = {}; |
|
let styleName = ""; |
|
export { styleName as style }; |
|
export let styles: Record<string, string | number | undefined> = {}; |
|
export let tooltip: string | undefined = undefined; |
|
|
|
export let scrollableX = false; |
|
export let scrollableY = false; |
|
|
|
let self: HTMLDivElement | undefined; |
|
|
|
$: extraClasses = Object.entries(classes) |
|
.flatMap(([className, stateName]) => (stateName ? [className] : [])) |
|
.join(" "); |
|
$: extraStyles = Object.entries(styles) |
|
.flatMap((styleAndValue) => (styleAndValue[1] !== undefined ? [`${styleAndValue[0]}: ${styleAndValue[1]};`] : [])) |
|
.join(" "); |
|
|
|
export function div(): HTMLDivElement | undefined { |
|
return self; |
|
} |
|
</script> |
|
|
|
|
|
<div |
|
data-scrollable-x={scrollableX ? "" : undefined} |
|
data-scrollable-y={scrollableY ? "" : undefined} |
|
class={`layout-col ${className} ${extraClasses}`.trim()} |
|
class:scrollable-x={scrollableX} |
|
class:scrollable-y={scrollableY} |
|
style={`${styleName} ${extraStyles}`.trim() || undefined} |
|
title={tooltip} |
|
bind:this={self} |
|
on:auxclick |
|
on:blur |
|
on:click |
|
on:dblclick |
|
on:dragend |
|
on:dragleave |
|
on:dragover |
|
on:dragstart |
|
on:drop |
|
on:mouseup |
|
on:pointerdown |
|
on:pointerenter |
|
on:pointerleave |
|
on:scroll |
|
{...$$restProps} |
|
> |
|
<slot /> |
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" global> |
|
.layout-col { |
|
display: flex; |
|
flex-direction: column; |
|
flex-grow: 1; |
|
} |
|
</style> |
|
|