@praxisui/table-rule-builder
Version:
Praxis Table Rule Builder: UI components and engine utils for table rules
164 lines (151 loc) • 6.72 kB
TypeScript
import * as i0 from '@angular/core';
import { OnInit, OnDestroy, EventEmitter } from '@angular/core';
import { FormGroup, FormBuilder } from '@angular/forms';
import { Subject } from 'rxjs';
type RuleScope = 'cell' | 'row' | 'column' | 'table';
interface RuleEffectDefinition {
id?: string;
scope: RuleScope;
description?: string;
estilo?: {
color?: string;
bgColor?: string;
bold?: boolean;
italic?: boolean;
underline?: boolean;
transform?: 'uppercase' | 'lowercase' | 'capitalize' | null;
opacity?: number;
fontScale?: number;
};
layout?: {
border?: 'none' | 'left' | 'right' | 'top' | 'bottom' | 'all';
borderColor?: string;
borderWidth?: number;
padding?: number;
align?: 'start' | 'center' | 'end';
elevation?: number;
};
iconBadge?: {
icon?: string;
iconColor?: string;
iconPos?: 'before' | 'after' | 'overlay';
badgeText?: string;
badgeStyle?: 'solid' | 'soft' | 'outline';
badgeColor?: string;
};
background?: {
color?: string;
gradient?: string;
alpha?: number;
blur?: number;
};
animation?: {
type?: 'pulse' | 'blink' | 'grow' | 'fade' | 'slide-in';
durationMs?: number;
trigger?: 'onChange' | 'onAppear' | 'onHover';
repeat?: 'once' | 'loop';
delayMs?: number;
};
tooltip?: {
text?: string;
position?: 'top' | 'right' | 'bottom' | 'left';
bgColor?: string;
delayMs?: number;
};
cssClass?: string;
inlineStyle?: string;
}
interface EffectEditorPlugin {
id: 'estilo' | 'layout' | 'icone' | 'fundo' | 'animacao' | 'tooltip';
label: string;
icon: string;
order: number;
loadComponent?: () => Promise<any>;
}
declare class EffectRegistryService {
private plugins;
register(plugin: EffectEditorPlugin): void;
list(): EffectEditorPlugin[];
static ɵfac: i0.ɵɵFactoryDeclaration<EffectRegistryService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<EffectRegistryService>;
}
declare class RuleEffectsPanelComponent implements OnInit, OnDestroy {
private fb;
private registry;
labels: Record<string, string>;
t(key: string): string;
scope: RuleScope;
private _value?;
set value(v: RuleEffectDefinition | undefined);
get value(): RuleEffectDefinition | undefined;
valueChange: EventEmitter<RuleEffectDefinition>;
apply: EventEmitter<void>;
reset: EventEmitter<void>;
activeTab: 'estilo' | 'layout' | 'icone' | 'fundo' | 'animacao' | 'tooltip';
effectsForm: FormGroup;
destroy$: Subject<void>;
isHovering: boolean;
readonly tabOrder: Array<typeof this.activeTab>;
constructor(fb: FormBuilder, registry: EffectRegistryService);
ngOnInit(): void;
patchForm(v: RuleEffectDefinition): void;
setTab(tab: typeof this.activeTab): void;
applyPreset(key: string): void;
onApply(): void;
onReset(): void;
ngOnDestroy(): void;
get estiloGroup(): FormGroup;
get layoutGroup(): FormGroup;
get iconBadgeGroup(): FormGroup;
get backgroundGroup(): FormGroup;
get animationGroup(): FormGroup;
get tooltipGroup(): FormGroup;
get formValue(): RuleEffectDefinition;
onTabsKeydown(event: KeyboardEvent): void;
onHoverPreview(over: boolean): void;
computeTextStyle(v: RuleEffectDefinition): any;
computeCellStyle(v: RuleEffectDefinition): any;
computeCellClass(v: RuleEffectDefinition): any;
badgeBackground(v: RuleEffectDefinition): string | null;
badgeBorder(v: RuleEffectDefinition): string | null;
static ɵfac: i0.ɵɵFactoryDeclaration<RuleEffectsPanelComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<RuleEffectsPanelComponent, "praxis-rule-effects-panel", never, { "scope": { "alias": "scope"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "apply": "apply"; "reset": "reset"; }, never, never, true, never>;
}
declare const DEFAULT_EFFECT_PRESETS: Record<string, RuleEffectDefinition>;
declare function toCellClassAndStyle(effect: RuleEffectDefinition): {
classList: string[];
style: Record<string, string>;
};
declare class EstiloEditorComponent {
group: FormGroup;
formatOpacity(v: number | null): string;
static ɵfac: i0.ɵɵFactoryDeclaration<EstiloEditorComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<EstiloEditorComponent, "praxis-effects-estilo-editor", never, { "group": { "alias": "group"; "required": false; }; }, {}, never, never, true, never>;
}
declare class LayoutEditorComponent {
group: FormGroup;
static ɵfac: i0.ɵɵFactoryDeclaration<LayoutEditorComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<LayoutEditorComponent, "praxis-effects-layout-editor", never, { "group": { "alias": "group"; "required": false; }; }, {}, never, never, true, never>;
}
declare class IconeBadgeEditorComponent {
group: FormGroup;
static ɵfac: i0.ɵɵFactoryDeclaration<IconeBadgeEditorComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<IconeBadgeEditorComponent, "praxis-effects-icone-badge-editor", never, { "group": { "alias": "group"; "required": false; }; }, {}, never, never, true, never>;
}
declare class FundoEditorComponent {
group: FormGroup;
static ɵfac: i0.ɵɵFactoryDeclaration<FundoEditorComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<FundoEditorComponent, "praxis-effects-fundo-editor", never, { "group": { "alias": "group"; "required": false; }; }, {}, never, never, true, never>;
}
declare class AnimacaoEditorComponent {
group: FormGroup;
static ɵfac: i0.ɵɵFactoryDeclaration<AnimacaoEditorComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<AnimacaoEditorComponent, "praxis-effects-animacao-editor", never, { "group": { "alias": "group"; "required": false; }; }, {}, never, never, true, never>;
}
declare class TooltipEditorComponent {
group: FormGroup;
static ɵfac: i0.ɵɵFactoryDeclaration<TooltipEditorComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TooltipEditorComponent, "praxis-effects-tooltip-editor", never, { "group": { "alias": "group"; "required": false; }; }, {}, never, never, true, never>;
}
export { AnimacaoEditorComponent, DEFAULT_EFFECT_PRESETS, EffectRegistryService, EstiloEditorComponent, FundoEditorComponent, IconeBadgeEditorComponent, LayoutEditorComponent, RuleEffectsPanelComponent, TooltipEditorComponent, toCellClassAndStyle };
export type { EffectEditorPlugin, RuleEffectDefinition, RuleScope };