
* wip * bump misskey-dev/eslint-plugin * lint fixes (backend) * lint fixes (frontend) * lint fixes (frontend-embed) * rollback nsfwjs to 4.2.0 ref: infinitered/nsfwjs#904 * rollback openapi-typescript to v6 v7でOpenAPIのバリデーションが入るようになった関係でスコープ外での変更が避けられないため一時的に戻した * lint fixes (misskey-js) * temporarily disable errored lint rule (frontend-shared) * fix lint * temporarily ignore errored file for lint (frontend-shared) * rollback simplewebauthn/server to 12.0.0 v13 contains breaking changes that require some decision making * lint fixes (frontend-shared) * build misskey-js with types * fix(backend): migrate simplewebauthn/server to v12 * fix(misskey-js/autogen): ignore indent rules to generate consistent output * attempt to fix test changes due to capricorn86/happy-dom#1617 (XMLSerializer now produces valid XML) * attempt to fix test changes due to capricorn86/happy-dom#1617 (XMLSerializer now produces valid XML) * fix test * fix test * fix test * Apply suggestions from code review Co-authored-by: anatawa12 <anatawa12@icloud.com> * bump summaly to v5.2.0 * update tabler-icons to v3.30.0-based --------- Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Co-authored-by: anatawa12 <anatawa12@icloud.com>
54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import { calcCellWidth } from '@/components/grid/grid-utils.js';
|
|
import type { GridCellValidator } from '@/components/grid/cell-validators.js';
|
|
import type { Size, SizeStyle } from '@/components/grid/grid.js';
|
|
import type { CellValue, GridCell } from '@/components/grid/cell.js';
|
|
import type { GridRow } from '@/components/grid/row.js';
|
|
import type { MenuItem } from '@/types/menu.js';
|
|
import type { GridContext } from '@/components/grid/grid-event.js';
|
|
|
|
export type ColumnType = 'text' | 'number' | 'date' | 'boolean' | 'image' | 'hidden';
|
|
|
|
export type CustomValueEditor = (row: GridRow, col: GridColumn, value: CellValue, cellElement: HTMLElement) => Promise<CellValue>;
|
|
export type CellValueTransformer = (row: GridRow, col: GridColumn, value: CellValue) => CellValue;
|
|
export type GridColumnContextMenuFactory = (col: GridColumn, context: GridContext) => MenuItem[];
|
|
|
|
export type GridColumnSetting = {
|
|
bindTo: string;
|
|
title?: string;
|
|
icon?: string;
|
|
type: ColumnType;
|
|
width: SizeStyle;
|
|
editable?: boolean;
|
|
validators?: GridCellValidator[];
|
|
customValueEditor?: CustomValueEditor;
|
|
valueTransformer?: CellValueTransformer;
|
|
contextMenuFactory?: GridColumnContextMenuFactory;
|
|
events?: {
|
|
copy?: (value: CellValue) => string;
|
|
paste?: (text: string) => CellValue;
|
|
delete?: (cell: GridCell, context: GridContext) => void;
|
|
}
|
|
};
|
|
|
|
export type GridColumn = {
|
|
index: number;
|
|
setting: GridColumnSetting;
|
|
width: string;
|
|
contentSize: Size;
|
|
};
|
|
|
|
export function createColumn(setting: GridColumnSetting, index: number): GridColumn {
|
|
return {
|
|
index,
|
|
setting,
|
|
width: calcCellWidth(setting.width),
|
|
contentSize: { width: 0, height: 0 },
|
|
};
|
|
}
|
|
|