import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; import { faDownload, faSave, faShare, faEdit, faTrash, faFile, faFileText, faPrint } from '@fortawesome/free-solid-svg-icons'; import { SplitButtonComponent, SplitButtonMenuItem } from '../../../../../ui-essentials/src/lib/components/buttons/split-button'; @Component({ selector: 'ui-split-button-demo', standalone: true, imports: [CommonModule, SplitButtonComponent], template: `

Split Button Demo

Sizes

@for (size of sizes; track size) { {{ size | titlecase }} Size }

Variants

@for (variant of variants; track variant) { {{ variant | titlecase }} }

With Icons

Download Save Share

States

Disabled Loading Full Width

Complex Examples

Edit Document New File

Interactive Results

Last Action: {{ lastAction || 'None' }}

Click Count: {{ clickCount }}

`, styleUrl: './split-button-demo.component.scss' }) export class SplitButtonDemoComponent { sizes = ['small', 'medium', 'large'] as const; variants = ['filled', 'tonal', 'outlined'] as const; clickCount = 0; lastAction = ''; // Icons faDownload = faDownload; faSave = faSave; faShare = faShare; faEdit = faEdit; faTrash = faTrash; faFile = faFile; faFileText = faFileText; faPrint = faPrint; // Menu configurations basicMenuItems: SplitButtonMenuItem[] = [ { label: 'Option 1', value: 'opt1' }, { label: 'Option 2', value: 'opt2' }, { label: 'Option 3', value: 'opt3' }, { label: 'Disabled Option', value: 'disabled', disabled: true } ]; exportMenuItems: SplitButtonMenuItem[] = [ { label: 'Download PDF', value: 'pdf', icon: this.faFile }, { label: 'Download CSV', value: 'csv', icon: this.faFileText }, { label: 'Download Excel', value: 'excel', icon: this.faFile }, { label: 'Print', value: 'print', icon: this.faPrint } ]; saveMenuItems: SplitButtonMenuItem[] = [ { label: 'Save As...', value: 'save-as' }, { label: 'Save Copy', value: 'save-copy' }, { label: 'Save Template', value: 'save-template' } ]; shareMenuItems: SplitButtonMenuItem[] = [ { label: 'Share Link', value: 'share-link' }, { label: 'Share via Email', value: 'share-email' }, { label: 'Export & Share', value: 'export-share' } ]; editMenuItems: SplitButtonMenuItem[] = [ { label: 'Quick Edit', value: 'quick-edit', icon: this.faEdit }, { label: 'Advanced Edit', value: 'advanced-edit', icon: this.faEdit }, { label: 'Delete', value: 'delete', icon: this.faTrash } ]; fileMenuItems: SplitButtonMenuItem[] = [ { label: 'New Text File', value: 'new-text', icon: this.faFileText }, { label: 'New Document', value: 'new-doc', icon: this.faFile }, { label: 'New from Template', value: 'new-template', icon: this.faFile } ]; handlePrimaryClick(action: string): void { this.clickCount++; this.lastAction = action; console.log('Primary button clicked:', action); } handleMenuItemClick(data: { event: Event; item: SplitButtonMenuItem }): void { this.clickCount++; this.lastAction = `Menu item: ${data.item.label} (value: ${data.item.value})`; console.log('Menu item clicked:', data); } }