summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/grid/MkHeaderRow.vue
blob: 8affa08fd52601ea802dac280283077208c9b08a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!--
SPDX-FileCopyrightText: syuilo and other misskey contributors
SPDX-License-Identifier: AGPL-3.0-only
-->

<template>
<div
	class="mk_grid_tr"
	:class="$style.root"
	:data-grid-row="-1"
>
	<MkNumberCell
		v-if="gridSetting.showNumber"
		content="#"
		:top="true"
	/>
	<MkHeaderCell
		v-for="column in columns"
		:key="column.index"
		:column="column"
		:bus="bus"
		@operation:beginWidthChange="(sender) => emit('operation:beginWidthChange', sender)"
		@operation:endWidthChange="(sender) => emit('operation:endWidthChange', sender)"
		@operation:widthLargest="(sender) => emit('operation:widthLargest', sender)"
		@change:width="(sender, width) => emit('change:width', sender, width)"
		@change:contentSize="(sender, newSize) => emit('change:contentSize', sender, newSize)"
	/>
</div>
</template>

<script setup lang="ts">
import { GridEventEmitter, Size } from '@/components/grid/grid.js';
import MkHeaderCell from '@/components/grid/MkHeaderCell.vue';
import MkNumberCell from '@/components/grid/MkNumberCell.vue';
import { GridColumn } from '@/components/grid/column.js';
import { GridRowSetting } from '@/components/grid/row.js';

const emit = defineEmits<{
	(ev: 'operation:beginWidthChange', sender: GridColumn): void;
	(ev: 'operation:endWidthChange', sender: GridColumn): void;
	(ev: 'operation:widthLargest', sender: GridColumn): void;
	(ev: 'operation:selectionColumn', sender: GridColumn): void;
	(ev: 'change:width', sender: GridColumn, width: string): void;
	(ev: 'change:contentSize', sender: GridColumn, newSize: Size): void;
}>();

defineProps<{
	columns: GridColumn[],
	gridSetting: GridRowSetting,
	bus: GridEventEmitter,
}>();
</script>

<style module lang="scss">
.root {
	display: flex;
	flex-direction: row;
	align-items: center;
}
</style>