mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-15 22:28:10 +08:00
* removed all use of document indicies * -add u64 support for wasm bridge * fixed rust formating * Cleaned up FrontendDocumentState in js-messages * Tiny tweaks from code review * - moved more of closeDocumentWithConfirmation to rust - updated serde_wasm_bindgen to add feature flag * changed to upsteam version of serde_wasm_bindgen * cargo fmt * -fix event propigation on delete - Js message change class extention to typedef * changed another typedef * cargo fmt Co-authored-by: Keavon Chambers <keavon@keavon.com>
99 lines
2.7 KiB
Vue
99 lines
2.7 KiB
Vue
<template>
|
|
<LayoutRow class="workspace-grid-subdivision">
|
|
<LayoutCol class="workspace-grid-subdivision" style="flex-grow: 1597">
|
|
<Panel
|
|
:panelType="'Document'"
|
|
:tabCloseButtons="true"
|
|
:tabMinWidths="true"
|
|
:tabLabels="documents.state.documents.map((doc) => doc.displayName)"
|
|
:clickAction="
|
|
(tabIndex) => {
|
|
const targetId = documents.state.documents[tabIndex].id;
|
|
editor.instance.select_document(targetId);
|
|
}
|
|
"
|
|
:closeAction="
|
|
(tabIndex) => {
|
|
const targetId = documents.state.documents[tabIndex].id;
|
|
editor.instance.close_document_with_confirmation(targetId);
|
|
}
|
|
"
|
|
:tabActiveIndex="documents.state.activeDocumentIndex"
|
|
ref="documentsPanel"
|
|
/>
|
|
</LayoutCol>
|
|
<LayoutCol class="workspace-grid-resize-gutter"></LayoutCol>
|
|
<LayoutCol class="workspace-grid-subdivision" style="flex-grow: 319">
|
|
<LayoutRow class="workspace-grid-subdivision" style="flex-grow: 402">
|
|
<Panel :panelType="'Properties'" :tabLabels="['Properties']" :tabActiveIndex="0" />
|
|
</LayoutRow>
|
|
<LayoutRow class="workspace-grid-resize-gutter"></LayoutRow>
|
|
<LayoutRow class="workspace-grid-subdivision" style="flex-grow: 590">
|
|
<Panel :panelType="'LayerTree'" :tabLabels="['Layer Tree']" :tabActiveIndex="0" />
|
|
</LayoutRow>
|
|
<!-- <LayoutRow class="workspace-grid-resize-gutter"></LayoutRow>
|
|
<LayoutRow class="workspace-grid-subdivision folded">
|
|
<Panel :panelType="'Minimap'" :tabLabels="['Minimap', 'Asset Manager']" :tabActiveIndex="0" />
|
|
</LayoutRow> -->
|
|
</LayoutCol>
|
|
</LayoutRow>
|
|
<DialogModal v-if="dialog.state.visible" />
|
|
</template>
|
|
|
|
<style lang="scss">
|
|
.workspace-grid-subdivision {
|
|
min-height: 28px;
|
|
flex: 1 1 0;
|
|
|
|
&.folded {
|
|
flex-grow: 0;
|
|
height: 0;
|
|
}
|
|
}
|
|
|
|
.workspace-grid-resize-gutter {
|
|
flex: 0 0 4px;
|
|
|
|
&.layout-row {
|
|
cursor: ns-resize;
|
|
}
|
|
|
|
&.layout-col {
|
|
cursor: ew-resize;
|
|
}
|
|
}
|
|
</style>
|
|
|
|
<script lang="ts">
|
|
import { defineComponent } from "vue";
|
|
|
|
import Panel from "@/components/workspace/Panel.vue";
|
|
import LayoutRow from "@/components/layout/LayoutRow.vue";
|
|
import LayoutCol from "@/components/layout/LayoutCol.vue";
|
|
import DialogModal from "@/components/widgets/floating-menus/DialogModal.vue";
|
|
|
|
export default defineComponent({
|
|
inject: ["documents", "dialog", "editor"],
|
|
components: {
|
|
LayoutRow,
|
|
LayoutCol,
|
|
Panel,
|
|
DialogModal,
|
|
},
|
|
computed: {
|
|
activeDocumentIndex() {
|
|
return this.documents.state.activeDocumentIndex;
|
|
},
|
|
},
|
|
watch: {
|
|
activeDocumentIndex(newIndex: number) {
|
|
this.$nextTick(() => {
|
|
const documentsPanel = this.$refs.documentsPanel as typeof Panel;
|
|
const newActiveTab = documentsPanel.$el.querySelectorAll(".tab-bar .tab-group .tab")[newIndex];
|
|
newActiveTab.scrollIntoView();
|
|
});
|
|
},
|
|
},
|
|
});
|
|
</script>
|