CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-vaadin--vaadin

Comprehensive collection of business-ready web components for modern web applications

Overview
Eval results
Files

pro.mddocs/

Professional Components

Professional components are advanced commercial offerings requiring a Vaadin Pro subscription. These components provide enterprise-grade functionality for complex business applications.

Capabilities

Grid Pro

Professional data grid with inline editing capabilities and advanced features.

/**
 * Professional grid component with inline editing
 * Extends Grid with advanced editing capabilities
 */
interface GridPro extends Grid {
  /** Enable editing on single click instead of double-click */
  editOnClick: boolean;
  /** Currently edited item and column */
  editedItem: object | null;
  /** Enter edit mode preventing navigation */
  enterNextRow: boolean;
  /** Enter edit mode moving to next column */
  enterNextColumn: boolean;

  /** Start editing specific item and column */
  startEdit(item: object, column: GridProEditColumn): void;
  /** Stop editing with optional cancel */
  stopEdit(cancel?: boolean): void;
}

/**
 * Editable column for GridPro
 */
interface GridProEditColumn extends GridColumn {
  /** Edit mode renderer */
  editModeRenderer: (root: HTMLElement, column: GridProEditColumn, model: GridItemModel) => void;
  /** Editor type (text, select, checkbox, custom) */
  editorType: string;
  /** Editor options for select type */
  editorOptions: string[];
}

Rich Text Editor

WYSIWYG text editor with comprehensive formatting tools.

/**
 * Rich text editor with WYSIWYG capabilities
 * Based on Quill.js with Vaadin theming
 */
interface RichTextEditor extends HTMLElement {
  /** Editor content in Delta format */
  value: string;
  /** Editor content as HTML */
  htmlValue: string;
  /** Editor is read-only */
  readonly: boolean;
  /** Editor theme variant */
  theme: string;
  /** Maximum content length */
  maxLength: number;
  /** Minimum content length */
  minLength: number;

  /** Focus the editor */
  focus(): void;
  /** Get text content without formatting */
  getTextContent(): string;
  /** Insert content at current selection */
  insertText(text: string): void;
  /** Format current selection */
  format(format: string, value: any): void;
}

Charts

Interactive charts component powered by Highcharts.

/**
 * Interactive charts component using Highcharts
 */
interface Chart extends HTMLElement {
  /** Chart configuration options */
  options: HighchartsOptions;
  /** Chart type shortcut */
  type: string;
  /** Chart title */
  title: string;
  /** Chart subtitle */
  subtitle: string;
  /** X-axis categories */
  categories: string[];
  /** Chart is currently loading */
  loading: boolean;

  /** Update chart with new options */
  update(): void;
  /** Show loading indicator */
  showLoading(): void;
  /** Hide loading indicator */
  hideLoading(): void;
  /** Export chart as image */
  exportChart(type: 'png' | 'jpeg' | 'pdf' | 'svg'): void;
}

CRUD

Complete Create, Read, Update, Delete interface component.

/**
 * Complete CRUD interface with grid and form
 */
interface Crud extends HTMLElement {
  /** Data items for CRUD operations */
  items: object[];
  /** Fields to include in forms */
  include: string;
  /** Fields to exclude from forms */
  exclude: string;
  /** Size of the CRUD component */
  size: 'small' | 'medium' | 'large';
  /** Editor position */
  editorPosition: 'bottom' | 'aside';
  /** Disable delete functionality */
  noDelete: boolean;
  /** Disable edit functionality */
  noEdit: boolean;

  /** Edit specific item */
  editItem(item: object): void;
  /** Delete specific item */
  deleteItem(item: object): void;
  /** Create new item */
  newItem(): void;
  /** Save current changes */
  save(): void;
  /** Cancel current operation */
  cancel(): void;
}

Board

Responsive dashboard layout component.

/**
 * Responsive dashboard board layout
 */
interface Board extends HTMLElement {
  /** Enable board editing mode */
  editable: boolean;
}

/**
 * Board row container
 */
interface BoardRow extends HTMLElement {
  /** Row content items */
  items: BoardRowItem[];
}

Dashboard

Interactive dashboard with drag-and-drop widget management.

/**
 * Interactive dashboard with widget management
 */
interface Dashboard extends HTMLElement {
  /** Dashboard items/widgets */
  items: DashboardItem[];
  /** Dashboard is in edit mode */
  editable: boolean;
  /** Minimum column width */
  minItemWidth: number;
  /** Maximum columns */
  maxColumns: number;
  /** Gap between items */
  gap: string;

  /** Add new widget */
  addItem(item: DashboardItem): void;
  /** Remove widget */
  removeItem(item: DashboardItem): void;
  /** Update widget */
  updateItem(item: DashboardItem): void;
}

/**
 * Dashboard widget item
 */
interface DashboardItem {
  /** Unique item identifier */
  id: string;
  /** Item title */
  title: string;
  /** Item column span */
  colspan: number;
  /** Item row span */
  rowspan: number;
  /** Item content component */
  component: string;
}

Cookie Consent

GDPR-compliant cookie consent banner.

/**
 * GDPR cookie consent banner
 */
interface CookieConsent extends HTMLElement {
  /** Cookie name for storing consent */
  cookieName: string;
  /** Consent message text */
  message: string;
  /** Dismiss button text */
  dismiss: string;
  /** Learn more link text */
  learnMore: string;
  /** Learn more link URL */
  learnMoreLink: string;
  /** Banner position */
  position: 'bottom' | 'top';
}

Map

Interactive map component based on OpenLayers.

/**
 * Interactive map component using OpenLayers
 */
interface Map extends HTMLElement {
  /** Map center coordinates [longitude, latitude] */
  center: [number, number];
  /** Map zoom level */
  zoom: number;
  /** Map projection */
  projection: string;

  /** Set map center */
  setCenter(coordinates: [number, number]): void;
  /** Set zoom level */
  setZoom(level: number): void;
  /** Add marker to map */
  addMarker(coordinates: [number, number], options?: MarkerOptions): void;
}

Note: Professional components require a valid Vaadin Pro subscription and license for production use.

For complete API details and usage examples, see the main documentation.

Install with Tessl CLI

npx tessl i tessl/npm-vaadin--vaadin

docs

content.md

data.md

datetime.md

dialogs.md

index.md

input.md

layout.md

navigation.md

pro.md

selection.md

tile.json