Files
speckle-server/packages/frontend-2/components/viewer/layout/Panel.vue
T
andrewwallacespeckle c8bdf01cdd FE2 Viewer - Add Measure Mode (#1889)
* RadioGroup & Initial UI for Measure

* Add option to Panel to allow actions to move to bottom

* Typo

* Add count to precision

* Add enable, snap and type api integrations

* Update Units WIP

* Add precision update

* Update v-tippy name

* Updates

* New design

* Better darkmode radio. Keystrokes.

* Styling fixes. Fix select mount-menu-on-body

* Fix ts bug

* Show label in Select for units

* Update shortcut to D

* Small design changes

* Small tidy ups

* WIP New Measurements Helper State

* Fix build erros

* Remove viewer import from shared

* Delete WIP

* Fix delete

* Fix close button on measure mode

* Measurement nullable

* Updates from PR

* Seperate measurements into measurementsEnabled & measurementOptions

* Update state.ts

* Update ts bugs

* Updates to RadioGroup

* Use ctx.updateArgs

* Replace RadioGroup with Radio - More consistent with existing inputs

* Update FE2 to use new Radio

* Fix circleci fail

* Fix build

* Fix wrong initial state for vertexSnap

* Adjust type to measurement

* Use Lodash isEqual

* Fix bug where units don't update

* Remove double input

* Fix server error in data.ts

* Revert change around useEqual
2023-12-06 09:56:22 +00:00

52 lines
1.5 KiB
Vue

<template>
<div class="bg-foundation sm:rounded-lg overflow-hidden shadow flex flex-col">
<div class="sticky top-0 z-50 flex flex-col bg-foundation">
<div v-if="!hideClose" class="absolute top-2 right-2 sm:right-0 z-10">
<FormButton size="sm" color="secondary" text @click="$emit('close')">
<XMarkIcon class="h-4 w-4 sm:h-3 sm:w-3 text-primary sm:text-foreground" />
</FormButton>
</div>
<div
v-if="$slots.title"
class="flex items-center h-10 px-3 border-b border-outline-3 dark:border-foundation-2 bg-foundation rounded-t"
>
<div
class="flex items-center h-full w-full pr-8 font-semibold sm:font-bold text-sm text-primary"
>
<span class="truncate">
<slot name="title"></slot>
</span>
</div>
</div>
</div>
<div
v-if="$slots.actions"
class="flex items-center h-8 sm:h-10 gap-2 px-2"
:class="
moveActionsToBottom
? 'order-3 border-t border-outline-3 mt-2'
: 'order-2 shadow-md'
"
>
<slot name="actions"></slot>
</div>
<div :class="moveActionsToBottom ? 'order-2' : 'order-3'">
<slot></slot>
</div>
</div>
</template>
<script setup lang="ts">
import { XMarkIcon } from '@heroicons/vue/24/solid'
defineEmits(['close'])
defineProps({
hideClose: {
type: Boolean,
default: false
},
moveActionsToBottom: {
type: Boolean,
default: false
}
})
</script>