diff options
| author | Terry Truong <terry06890@gmail.com> | 2022-03-28 11:49:12 +1100 |
|---|---|---|
| committer | Terry Truong <terry06890@gmail.com> | 2022-03-28 11:49:12 +1100 |
| commit | 34e34b9620d88b5d76b87a4bbcd473c2fc6002a9 (patch) | |
| tree | 03c49e4473f52172682a3d00498a4250df82eb1a /src/components/ParentBar.vue | |
| parent | b82d3a24b2487454397535c6fefda250d4ff6114 (diff) | |
Rename Settings to SettingsPane, and ParentBar to AncestryBarcore-widgets
Diffstat (limited to 'src/components/ParentBar.vue')
| -rw-r--r-- | src/components/ParentBar.vue | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/src/components/ParentBar.vue b/src/components/ParentBar.vue deleted file mode 100644 index 0f73008..0000000 --- a/src/components/ParentBar.vue +++ /dev/null @@ -1,74 +0,0 @@ -<script lang="ts"> -import {defineComponent, PropType} from 'vue'; -import {LayoutNode} from '../lib'; -import TileImg from './TileImg.vue' - -export default defineComponent({ - props: { - pos: {type: Array as unknown as PropType<[number,number]>, required: true}, - dims: {type: Array as unknown as PropType<[number,number]>, required: true}, - nodes: {type: Array as PropType<LayoutNode[]>, required: true}, - options: {type: Object, required: true}, - }, - data(){ - return { - tileMargin: 5, //px (gap between separated-parent tiles) - scrollBarOffset: 10, //px (gap for scrollbar, used to prevent overlap with tiles) - }; - }, - computed: { - wideArea(){ - return this.dims[0] >= this.dims[1]; - }, - tileSz(){ - return (this.wideArea ? this.dims[1] : this.dims[0]) - (this.tileMargin * 2) - this.scrollBarOffset; - }, - hasOverflow(){ - let len = this.tileMargin + (this.tileSz + this.tileMargin) * this.nodes.length; - return len > (this.wideArea ? this.dims[0] : this.dims[1]); - }, - styles(): Record<string,string> { - return { - position: 'absolute', - left: this.pos[0] + 'px', - top: this.pos[1] + 'px', - width: (this.dims[0] + (this.wideArea || this.hasOverflow ? 0 : -this.scrollBarOffset)) + 'px', - height: (this.dims[1] + (!this.wideArea || this.hasOverflow ? 0 : -this.scrollBarOffset)) + 'px', - overflowX: this.wideArea ? 'auto' : 'hidden', - overflowY: this.wideArea ? 'hidden' : 'auto', - // Extra padding for scrollbar inclusion - paddingRight: (this.hasOverflow && !this.wideArea ? this.scrollBarOffset : 0) + 'px', - paddingBottom: (this.hasOverflow && this.wideArea ? this.scrollBarOffset : 0) + 'px', - // For child layout - display: 'flex', - flexDirection: this.wideArea ? 'row' : 'column', - gap: this.tileMargin + 'px', - padding: this.tileMargin + 'px', - // - backgroundColor: '#44403c', - boxShadow: this.options.shadowNormal, - }; - }, - }, - methods: { - onClick(node: LayoutNode){ - this.$emit('sepd-parent-clicked', node); - }, - onInnerInfoIconClicked(data: LayoutNode){ - this.$emit('info-icon-clicked', data); - } - }, - components: { - TileImg, - }, - emits: ['sepd-parent-clicked', 'info-icon-clicked'], -}); -</script> - -<template> -<div :style="styles"> - <tile-img v-for="node in nodes" :key="node.tolNode.name" - :layoutNode="node" :tileSz="tileSz" :options="options" - @click="onClick(node)" @info-icon-clicked="onInnerInfoIconClicked"/> -</div> -</template> |
