taly-shared-ui-lib 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taly-shared-ui-lib.mjs","sources":["../../../projects/taly-shared-ui-lib/src/lib/taly-shared-ui-lib.ts","../../../projects/taly-shared-ui-lib/src/lib/directives/numeric-only.directive.ts","../../../projects/taly-shared-ui-lib/src/lib/taly-input/taly-input.ts","../../../projects/taly-shared-ui-lib/src/lib/taly-input/taly-input.html","../../../projects/taly-shared-ui-lib/src/lib/taly-select/taly-select.ts","../../../projects/taly-shared-ui-lib/src/lib/taly-select/taly-select.html","../../../projects/taly-shared-ui-lib/src/lib/taly-input-group/taly-input-group.ts","../../../projects/taly-shared-ui-lib/src/lib/taly-input-group/taly-input-group.html","../../../projects/taly-shared-ui-lib/src/lib/taly-table/taly-table.ts","../../../projects/taly-shared-ui-lib/src/lib/taly-table/taly-table.html","../../../projects/taly-shared-ui-lib/src/lib/taly-accordion/taly-accordion.ts","../../../projects/taly-shared-ui-lib/src/lib/taly-accordion/taly-accordion.html","../../../projects/taly-shared-ui-lib/src/lib/taly-password-components/taly-password-components.ts","../../../projects/taly-shared-ui-lib/src/lib/taly-password-components/taly-password-components.html","../../../projects/taly-shared-ui-lib/src/lib/taly-buttons/taly-buttons.ts","../../../projects/taly-shared-ui-lib/src/lib/taly-buttons/taly-buttons.html","../../../projects/taly-shared-ui-lib/src/lib/taly-otp-input/taly-otp-input.ts","../../../projects/taly-shared-ui-lib/src/lib/taly-otp-input/taly-otp-input.html","../../../projects/taly-shared-ui-lib/src/public-api.ts","../../../projects/taly-shared-ui-lib/src/taly-shared-ui-lib.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-taly-shared-ui-lib',\n imports: [],\n template: `\n <p>\n taly-shared-ui-lib works!\n </p>\n `,\n styles: ``,\n})\nexport class TalySharedUiLib {\n\n}\n","import { Directive, HostListener, Input } from '@angular/core';\n\n@Directive({\n selector: '[talyAppNumericOnly]',\n standalone: true\n})\nexport class NumericOnlyDirective {\n @Input() talyAppNumericOnly: boolean = true;\n\n private navigationKeys = [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'Home',\n 'End',\n 'ArrowLeft',\n 'ArrowRight',\n 'Clear',\n 'Copy',\n 'Paste'\n ];\n\n @HostListener('keydown', ['$event'])\n onKeyDown(e: KeyboardEvent) {\n if (!this.talyAppNumericOnly) {\n return;\n }\n if (\n this.navigationKeys.indexOf(e.key) > -1 || // Allow: navigation keys\n (e.key === 'a' && (e.ctrlKey || e.metaKey)) || // Allow: Ctrl+A\n (e.key === 'c' && (e.ctrlKey || e.metaKey)) || // Allow: Ctrl+C\n (e.key === 'v' && (e.ctrlKey || e.metaKey)) || // Allow: Ctrl+V\n (e.key === 'x' && (e.ctrlKey || e.metaKey)) // Allow: Ctrl+X\n ) {\n // let it happen, don't do anything\n return;\n }\n // Ensure that it is a number and stop the keypress\n if (e.key === ' ' || isNaN(Number(e.key))) {\n e.preventDefault();\n }\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent) {\n if (!this.talyAppNumericOnly) {\n return;\n }\n const pastedInput = event.clipboardData?.getData('text/plain');\n if (pastedInput && !/^\\d+$/.test(pastedInput)) {\n event.preventDefault();\n }\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event: DragEvent) {\n if (!this.talyAppNumericOnly) {\n return;\n }\n const textData = event.dataTransfer?.getData('text');\n if (textData && !/^\\d+$/.test(textData)) {\n event.preventDefault();\n }\n }\n}\n","import {\n Component,\n forwardRef,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Optional,\n Self,\n inject,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n Validator,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n AbstractControl,\n ValidationErrors,\n FormsModule,\n ReactiveFormsModule,\n NgControl\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { NumericOnlyDirective } from '../directives/numeric-only.directive';\n\n@Component({\n selector: 'lib-taly-input',\n templateUrl: './taly-input.html',\n styleUrls: ['./taly-input.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, ReactiveFormsModule, InputTextModule, FloatLabelModule, NumericOnlyDirective],\n})\nexport class TalyInput implements ControlValueAccessor, Validator {\n @Input() id = '';\n @Input() label = '';\n @Input() placeholderText = '';\n @Input() inputType = 'text';\n @Input() inputmodeType = 'text';\n @Input() min?: number;\n @Input() max?: number;\n @Input() autofocus = false;\n\n private _disabled = false;\n private _value: any = null;\n isFocused = false;\n @ViewChild('inputRef') inputRef!: ElementRef<HTMLInputElement>;\n\n private onChange = (_: any) => {};\n private onTouched = () => {};\n\n public ngControl = inject(NgControl, { optional: true, self: true }) as NgControl | null;\n\n constructor(\n private cdr: ChangeDetectorRef\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this._value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n get value(): any {\n return this._value;\n }\n\n set value(val: any) {\n if (val !== this._value) {\n this._value = val;\n this.onChange(val);\n this.cdr.markForCheck();\n }\n }\n\n handleInputEvent(value: any) {\n this.value = value;\n }\n\n onFocus() {\n this.isFocused = true;\n }\n\n onBlur() {\n this.isFocused = false;\n this.onTouched();\n }\n\n onReset(event?: Event): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n this._value = null;\n if (this.inputRef) {\n this.inputRef.nativeElement.value = '';\n this.inputRef.nativeElement.focus();\n }\n this.onChange(null);\n this.cdr.markForCheck();\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return null;\n }\n}\n","<div class=\"relative flex flex-col rounded-lg border bg-white px-4 py-2 h-[60px]\n transition-all\n focus-within:border-2 focus-within:border-gray-400\" [ngClass]=\"{\n 'bg-gray-100 border-gray-300': disabled,\n 'border-red-500 bg-red-50': ngControl?.invalid && ngControl?.touched\n }\">\n <p-floatlabel class=\"block w-full\">\n <input #inputRef pInputText class=\"w-full h-[48px] border-none outline-none bg-transparent\n text-base text-gray-900 pt-5\n disabled:bg-transparent\" [id]=\"id\" [type]=\"inputType\" [placeholder]=\"''\" [attr.inputmode]=\"inputmodeType\"\n [attr.maxlength]=\"max ?? null\" [disabled]=\"!!disabled\" [value]=\"value\"\n [talyAppNumericOnly]=\"inputType === 'number'\" [min]=\"min\" [max]=\"max\" [autofocus]=\"autofocus\"\n (input)=\"handleInputEvent($event.target.value)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" />\n <label [for]=\"id\" class=\"text-gray-600 font-medium\">\n {{ label }}\n </label>\n </p-floatlabel>\n\n <!-- Clear Icon -->\n <button *ngIf=\"!disabled && value\" type=\"button\" class=\"absolute right-4 top-1/2 -translate-y-1/2\n flex items-center justify-center\n w-5 h-5 rounded-full bg-gray-500 text-white\n hover:bg-gray-700 transition-colors z-20\" (click)=\"onReset($event)\">\n <i class=\"pi pi-times !text-[8px] !m-0 !p-0\"></i>\n </button>\n</div>\n\n<!-- Validation messages -->\n<div *ngIf=\"ngControl && ngControl.invalid && ngControl.touched\" class=\"mt-1 text-sm text-red-600\">\n <span *ngIf=\"ngControl.errors?.['required']\">\n {{ label }} is required\n </span>\n\n <span *ngIf=\"ngControl.errors?.['minlength']\">\n Minimum length is {{ ngControl.errors?.['minlength']?.requiredLength }}\n </span>\n\n <span *ngIf=\"ngControl.errors?.['maxlength']\">\n Maximum length is {{ ngControl.errors?.['maxlength']?.requiredLength }}\n </span>\n\n <span *ngIf=\"ngControl.errors?.['email']\">\n Invalid email address\n </span>\n\n <span *ngIf=\"ngControl.errors?.['pattern']\">\n Please enter a valid {{ label }}\n </span>\n</div>","import {\n Component,\n Input,\n forwardRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n Validator,\n FormGroup,\n ReactiveFormsModule,\n NgControl,\n} from '@angular/forms';\nimport { SelectModule } from 'primeng/select';\nimport { FloatLabelModule } from 'primeng/floatlabel';\n\n@Component({\n selector: 'lib-taly-select',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SelectModule,\n FloatLabelModule,\n ],\n templateUrl: './taly-select.html',\n styleUrls: ['./taly-select.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TalySelect implements ControlValueAccessor, Validator {\n private cdr = inject(ChangeDetectorRef);\n public ngControl = inject(NgControl, { optional: true, self: true }) as any;\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n // ===== Inputs =====\n @Input({ required: true }) id!: string;\n @Input({ required: true }) label!: string;\n @Input({ required: true }) options: any[] = [];\n\n @Input() optionsValue?: string;\n @Input() optionsLabel!: string;\n @Input() placeholderText = '';\n\n @Input({ required: true }) formGroup!: FormGroup;\n @Input({ required: true }) controlName!: string;\n\n @Input() min?: number;\n @Input() max?: number;\n @Input() textDirection?: string;\n\n @Input()\n set isDisabled(value: boolean) {\n this.disabled = value;\n this.cdr.markForCheck();\n }\n\n disabled = false;\n showErrorMessages = false;\n\n // ===== Internal value =====\n private _value: any = null;\n\n get f() {\n return this.formGroup?.controls;\n }\n\n get value(): any {\n return this._value;\n }\n\n set value(val: any) {\n this._value = val;\n this.onChange(val);\n this.cdr.markForCheck();\n }\n\n // ===== ControlValueAccessor =====\n onChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n\n writeValue(value: any): void {\n this._value = value;\n\n if (this.formGroup && this.controlName) {\n this.formGroup.get(this.controlName)?.setValue(value, {\n emitEvent: false,\n });\n }\n\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n // ===== Validator =====\n validate() {\n return null;\n }\n\n // ===== UI Events =====\n onReset(event: any): void {\n event.inputField = null;\n this._value = null;\n this.onChange(null);\n this.cdr.markForCheck();\n }\n\n onHide(): void {\n this.showErrorMessages = true;\n this.cdr.markForCheck();\n }\n}\n","<div [formGroup]=\"formGroup\" class=\"flex flex-col gap-1\" [ngClass]=\"{\n 'opacity-50 pointer-events-none': disabled,\n 'rtl': textDirection === 'rtl'\n }\">\n <!-- Select Wrapper -->\n <div class=\"flex flex-col rounded-lg border bg-white px-4 py-2 h-[60px]\n transition-all\n focus-within:border-2 focus-within:border-gray-400\" [ngClass]=\"{\n 'bg-gray-100 border-gray-300': disabled,\n 'border-red-500 bg-red-50': showErrorMessages && f[controlName].invalid && f[controlName].touched\n }\">\n <p-floatlabel class=\"block w-full\">\n <p-select class=\"w-full\" [options]=\"options\" [placeholder]=\"''\" [formControlName]=\"controlName\"\n [disabled]=\"disabled\" [optionLabel]=\"optionsLabel\" [optionValue]=\"optionsValue\" [inputId]=\"id\"\n (onHide)=\"onHide()\">\n <ng-template pTemplate=\"selectedItem\" let-item>\n {{ item?.[optionsLabel] }}\n </ng-template>\n\n <ng-template pTemplate=\"option\" let-item>\n {{ item?.[optionsLabel] }}\n </ng-template>\n </p-select>\n\n <!-- Label -->\n <label [for]=\"id\" class=\"text-gray-600 font-medium\">\n {{ label }}\n </label>\n </p-floatlabel>\n </div>\n</div>\n\n<!-- Validation Error -->\n@if (showErrorMessages && f[controlName].invalid && f[controlName].touched) {\n<div class=\"mt-1 text-sm text-red-600\">\n @if (f[controlName].hasError('required')) {\n <span>{{ label }} is required</span>\n }\n</div>\n}","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n inject,\n effect,\n forwardRef,\n Optional,\n Self,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n FormGroup,\n ReactiveFormsModule,\n NgControl,\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { NumericOnlyDirective } from '../directives/numeric-only.directive';\n\n@Component({\n selector: 'lib-taly-input-group',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FloatLabelModule, InputTextModule, NumericOnlyDirective],\n templateUrl: './taly-input-group.html',\n styleUrls: ['./taly-input-group.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TalyInputGroup implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n @ViewChild('inputField') inputField!: ElementRef<HTMLInputElement>;\n\n private ngControl = inject(NgControl, { optional: true, self: true });\n\n // Optional NgControl injection\n constructor() {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n // ===== Inputs =====\n @Input({ required: true }) id = '';\n @Input({ required: true }) label = '';\n @Input() placeholderText = '';\n @Input() inputType: string = 'text';\n @Input() formGroup!: FormGroup;\n @Input() controlName!: string;\n @Input() min?: number;\n @Input() max?: number;\n @Input() inputmodeType: string = 'none';\n @Input() autofocus = false;\n\n @Input() set isDisabled(disable: boolean) {\n this.disabled = disable;\n this.cdr.markForCheck();\n }\n\n disabled = false;\n textDirection!: string;\n\n get f() {\n return this.formGroup?.controls;\n }\n\n // ===== ControlValueAccessor internal value =====\n private _value: any = null;\n\n set value(val: any) {\n this._value = val;\n this.onChange(val);\n this.cdr.markForCheck();\n }\n\n get value() {\n return this._value;\n }\n\n onChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n\n writeValue(value: any): void {\n this._value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate() {\n return null;\n }\n\n onReset(event?: Event): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n const control = this.formGroup?.get(this.controlName);\n if (control) {\n control.setValue(null);\n control.markAsPristine();\n control.markAsUntouched();\n }\n if (this.inputField) {\n this.inputField.nativeElement.value = '';\n }\n this.cdr.markForCheck();\n }\n}\n","<div [formGroup]=\"formGroup\" [class.opacity-50]=\"disabled\" class=\"flex flex-col gap-1 w-full\">\n\n <!-- Input group -->\n <div class=\"relative flex items-center border rounded-lg px-4 py-2\n bg-white\n focus-within:ring-2 focus-within:ring-blue-500\n [&.input-error]:border-red-500 [&.input-error]:bg-red-50\n [&.disabled]:bg-gray-200\" [class.input-error]=\"f[controlName]?.invalid && f[controlName]?.touched\"\n [class.disabled]=\"disabled\" dir=\"ltr\">\n\n <!-- Addon content -->\n <span class=\"mr-2 text-gray-700 flex-shrink-0\">\n <ng-content select=\"[addonContent]\"></ng-content>\n </span>\n\n <p-floatlabel class=\"flex-1\">\n <!-- Input -->\n <input [type]=\"inputType\" [formControlName]=\"controlName\" [id]=\"id\" [placeholder]=\"''\" [disabled]=\"disabled\"\n [attr.inputmode]=\"inputmodeType\" class=\"peer w-full bg-transparent text-gray-900 text-base focus:outline-none\"\n #inputField [talyAppNumericOnly]=\"inputType === 'number'\" pInputText pAutoFocus [min]=\"min\" [max]=\"max\"\n [attr.maxlength]=\"max\" />\n\n <label [for]=\"id\" class=\"text-gray-500 font-medium\">\n {{ label }}\n </label>\n </p-floatlabel>\n\n <!-- Clear icon -->\n <button *ngIf=\"!disabled && f[controlName]?.value\" type=\"button\" class=\"cursor-pointer rounded-full bg-gray-500 text-white\n w-5 h-5 flex-shrink-0 flex items-center justify-center hover:bg-gray-700 ml-2 transition-colors z-20\"\n (click)=\"onReset($event)\">\n <i class=\"pi pi-times !text-[8px] !m-0 !p-0\"></i>\n </button>\n </div>\n\n <!-- Error messages -->\n <div *ngIf=\"f[controlName]?.invalid && f[controlName]?.touched\" class=\"text-red-600 text-sm mt-1\">\n <span *ngIf=\"f[controlName]?.hasError('required')\">{{ label }} is required</span>\n <span *ngIf=\"f[controlName]?.hasError('minlength') && !f[controlName]?.hasError('required')\">\n Minimum length is {{ f[controlName]?.getError('minlength')?.requiredLength }}\n </span>\n <span *ngIf=\"f[controlName]?.hasError('maxlength') && \n !f[controlName]?.hasError('required') &&\n !f[controlName]?.hasError('minlength')\">\n Maximum length is {{ f[controlName]?.getError('maxlength')?.requiredLength }}\n </span>\n <span *ngIf=\"f[controlName]?.hasError('email') &&\n !f[controlName]?.hasError('required')\">\n Invalid email address\n </span>\n <span *ngIf=\"f[controlName]?.hasError('pattern') &&\n !f[controlName]?.hasError('required') &&\n !f[controlName]?.hasError('email') &&\n !f[controlName]?.hasError('minlength') &&\n !f[controlName]?.hasError('maxlength')\">\n Please enter a valid {{ label }}\n </span>\n </div>\n</div>","\n\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n TemplateRef,\n ContentChild,\n} from '@angular/core';\nimport { TableModule } from 'primeng/table';\nimport { LazyLoadEvent } from 'primeng/api';\n\n@Component({\n selector: 'lib-taly-table',\n standalone: true,\n imports: [\n CommonModule,\n TableModule, // required if using p-table\n ],\n templateUrl: './taly-table.html',\n styleUrl: './taly-table.scss',\n})\nexport class TalyTable<T = any> {\n // Table data\n @Input() value: T[] = [];\n\n // Table loading indicator\n @Input() loading = false;\n\n // Pagination options\n @Input() paginator = true;\n @Input() rows = 100;\n @Input() first = 0;\n @Input() lazy = false;\n\n @Input() totalRecords = 0;\n\n // Sorting\n @Input() sortable = true;\n @Input() sortField?: string;\n @Input() sortOrder?: 1 | -1;\n\n // Selection\n @Input() selection?: T | T[];\n @Output() selectionChange = new EventEmitter<T | T[]>();\n @Input() userId!: number;\n\n // Filtering\n @Input() globalFilterFields?: string[];\n\n // Columns\n @Input() columns: Array<{\n field: string;\n header: string;\n sortable?: boolean;\n filter?: boolean;\n style?: any;\n width?: string;\n type?: 'text' | 'date' | 'number' | 'boolean';\n }> = [];\n\n // UI options\n @Input() showSelectionCheckbox = false;\n @Input() showRowIndex = false;\n @Input() selectionMode: 'single' | 'multiple' | null = null;\n @Input() dataKey?: string;\n\n // Templates\n @ContentChild('actionTemplate') actionTemplate?: TemplateRef<any>;\n @ContentChild('statusTemplate') statusTemplate?: TemplateRef<any>;\n\n // Events\n @Output() rowSelect = new EventEmitter<any>();\n @Output() onLazyLoad = new EventEmitter<LazyLoadEvent>();\n @Output() onSort = new EventEmitter<any>();\n @Output() onPage = new EventEmitter<any>();\n @Output() onFilter = new EventEmitter<any>();\n @Output() onRowSelect = new EventEmitter<T>();\n @Output() onRowUnselect = new EventEmitter<T>();\n @Output() pageChange = new EventEmitter<{ page: number; size: number }>();\n @Output() rowClick = new EventEmitter<any>();\n\n onSelectionChange(event: any) {\n this.selectionChange.emit(event.value);\n }\n\n onPageChange(event: any) {\n this.onPage.emit(event);\n }\n\n onSortChange(event: any) {\n this.onSort.emit(event);\n }\n\n onFilterChange(event: any) {\n this.onFilter.emit(event);\n }\n\n onRowSelectEvent(event: any) {\n this.onRowSelect.emit(event.data);\n }\n\n onRowUnselectEvent(event: any) {\n this.onRowUnselect.emit(event.data);\n }\n\n onRowClick(rowData: any) {\n this.rowClick.emit(rowData);\n }\n\n onPaginate(event: any) {\n const page = Math.floor(event.first / event.rows);\n const size = event.rows;\n this.pageChange.emit({ page, size });\n }\n}\n","<p-table [lazy]=\"lazy\" [value]=\"value\" [loading]=\"loading\" [paginator]=\"paginator\" [rows]=\"rows\"\n [totalRecords]=\"totalRecords\" [sortField]=\"sortField\" [sortOrder]=\"sortOrder ?? 1\" [(selection)]=\"selection\"\n [selectionMode]=\"selectionMode\" [dataKey]=\"dataKey\" [rowsPerPageOptions]=\"[50,100,200,300,400,500]\"\n [showCurrentPageReport]=\"true\" [first]=\"first\" [globalFilterFields]=\"globalFilterFields\"\n (onRowSelect)=\"onRowSelectEvent($event)\" (selectionChange)=\"onSelectionChange($event)\" (onSort)=\"onSortChange($event)\"\n (onFilter)=\"onFilterChange($event)\" (onPage)=\"onPaginate($event)\" showGridlines responsiveLayout=\"scroll\"\n currentPageReportTemplate=\"Showing {first} to {last} of {totalRecords} entries\"\n class=\"min-w-full border-separate border-spacing-0 border border-gray-200 rounded-xl overflow-hidden shadow-md bg-white\">\n\n <!-- HEADER -->\n <ng-template pTemplate=\"header\">\n <tr class=\"bg-gray-50 text-left text-gray-700 font-medium text-sm\">\n <th *ngIf=\"showRowIndex\" class=\"px-4 py-2 w-16\">#</th>\n <th *ngIf=\"showSelectionCheckbox\" class=\"px-4 py-2 w-12\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <th *ngFor=\"let col of columns\" [pSortableColumn]=\"(sortable && col.sortable) ? col.field : undefined\"\n class=\"px-4 py-2\" [style.width]=\"col.width || 'auto'\" [ngStyle]=\"col.style\">\n <div class=\"flex items-center gap-2\">\n {{ col.header }}\n <p-sortIcon *ngIf=\"sortable && col.sortable\" [field]=\"col.field\"></p-sortIcon>\n </div>\n <p-columnFilter *ngIf=\"col.filter\" [field]=\"col.field\" matchMode=\"contains\"></p-columnFilter>\n </th>\n\n <th *ngIf=\"actionTemplate\" class=\"px-4 py-2 w-32\">Actions</th>\n </tr>\n </ng-template>\n\n <!-- BODY -->\n <ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n <tr (click)=\"onRowClick(rowData)\" class=\"hover:bg-gray-50 cursor-pointer border-b border-gray-100\">\n <td *ngIf=\"showRowIndex\" class=\"px-4 py-2 text-gray-500\">\n {{ rowIndex + 1 }}\n </td>\n <td *ngIf=\"showSelectionCheckbox\" class=\"px-4 py-2\" (click)=\"$event.stopPropagation()\">\n <p-tableCheckbox [value]=\"rowData\"></p-tableCheckbox>\n </td>\n <td *ngFor=\"let col of columns\" class=\"px-4 py-2\">\n <ng-container [ngSwitch]=\"col.type || 'text'\">\n\n <!-- TEXT -->\n <span *ngSwitchCase=\"'text'\" class=\"text-gray-800\">\n {{ rowData[col.field] }}\n </span>\n\n <!-- DATE -->\n <span *ngSwitchCase=\"'date'\" class=\"text-gray-700\">\n {{ rowData[col.field] | date:'short' }}\n </span>\n\n <!-- NUMBER -->\n <span *ngSwitchCase=\"'number'\" class=\"text-gray-800\">\n {{ rowData[col.field] | number }}\n </span>\n\n <!-- BOOLEAN -->\n <i *ngSwitchCase=\"'boolean'\" class=\"pi\" [ngClass]=\"{\n 'pi-check-circle text-green-500': rowData[col.field],\n 'pi-times-circle text-red-500': !rowData[col.field]\n }\"></i>\n\n <!-- STATUS -->\n <ng-container *ngSwitchCase=\"'status'\">\n <span class=\"px-2 py-1 rounded-full text-xs font-semibold text-white\" [ngClass]=\"{\n 'bg-gray-500': rowData[col.field] === 'PENDING',\n 'bg-blue-500': rowData[col.field] === 'JOINED' || rowData[col.field] === 'ONBOARDED',\n 'bg-green-500': rowData[col.field] === 'APPROVED' || rowData[col.field] === 'PAID' || rowData[col.field] === 'CONFIRMED',\n 'bg-red-500': rowData[col.field] === 'REJECTED' || rowData[col.field] === 'UNPAID' || rowData[col.field] === 'CANCELED' || rowData[col.field] === 'Over Due',\n 'bg-yellow-400': rowData[col.field] === 'Missed'\n }\">\n {{ rowData[col.field] }}\n </span>\n </ng-container>\n\n <!-- DEACTIVATED -->\n <ng-container *ngSwitchCase=\"'deactivated'\">\n <span class=\"px-2 py-1 rounded-full text-xs font-semibold text-white\"\n [ngClass]=\"rowData.deactivated ? 'bg-red-500' : 'bg-green-500'\">\n {{ rowData.deactivated ? 'Deactivated' : 'Active' }}\n </span>\n </ng-container>\n\n <!-- LINK -->\n <ng-container *ngSwitchCase=\"'link'\">\n <span class=\"text-blue-500 hover:underline cursor-pointer\" (click)=\"$event.stopPropagation()\">\n {{ rowData[col.field] }}\n </span>\n </ng-container>\n\n <!-- DEFAULT -->\n <span *ngSwitchDefault class=\"text-gray-800\">\n {{ rowData[col.field] }}\n </span>\n\n </ng-container>\n </td>\n\n <td *ngIf=\"actionTemplate\" class=\"px-4 py-2\">\n <ng-container *ngTemplateOutlet=\"actionTemplate; context: { $implicit: rowData }\"></ng-container>\n </td>\n </tr>\n </ng-template>\n\n <!-- EMPTY -->\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td class=\"text-center text-gray-500 py-4\"\n [attr.colspan]=\"columns.length + (actionTemplate ? 1 : 0) + (showRowIndex ? 1 : 0) + (showSelectionCheckbox ? 1 : 0)\">\n No records found\n </td>\n </tr>\n </ng-template>\n</p-table>","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccordionModule } from 'primeng/accordion';\n\nexport interface AccordionItem {\n itemTitleEn: string;\n itemTitleAr: string;\n descriptionEn: string;\n descriptionAr: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'lib-taly-accordion',\n standalone: true,\n imports: [CommonModule, AccordionModule],\n templateUrl: './taly-accordion.html',\n})\nexport class TalyAccordion implements OnInit {\n @Input() items: AccordionItem[] = [];\n @Input() textDirection: 'ltr' | 'rtl' = 'ltr';\n @Input() multiple = true;\n\n /**\n * Value can be a string (single) or string array (multiple).\n */\n value: string | string[] | null = null;\n \n ngOnInit() {\n if (this.multiple) {\n this.value = [];\n } else {\n this.value = null;\n }\n }\n\n isActive(index: number): boolean {\n const sIndex = index.toString();\n if (this.multiple) {\n return Array.isArray(this.value) && this.value.includes(sIndex);\n }\n return this.value === sIndex;\n }\n}\n","<p-accordion [multiple]=\"multiple\" [(value)]=\"value\"\n class=\"w-full rounded-2xl bg-[var(--brand-white)] p-2 font-manrope\">\n <p-accordion-panel *ngFor=\"let item of items; let i = index; let last = last\" [value]=\"i.toString()\"\n [disabled]=\"!!item.disabled\" class=\"mb-2 last:mb-0 border-none\">\n <!-- HEADER -->\n <p-accordion-header>\n <div class=\"flex items-center justify-between w-full\n px-6 py-4\n text-base font-medium leading-7 tracking-[-0.16px]\n text-[var(--ui-taly-dark-black)]\n bg-[var(--brand-white)]\n rounded-t-2xl\n focus:outline-none focus:ring-0\" [class.opacity-50]=\"item.disabled\" [dir]=\"textDirection\">\n <span class=\"flex-grow\">\n {{ textDirection === 'rtl'\n ? item.itemTitleAr\n : item.itemTitleEn }}\n </span>\n\n <!-- ICON CONTAINER -->\n <div class=\"accordion-toggle-icon flex items-center justify-center rounded-full\"\n [ngClass]=\"isActive(i) ? 'is-active bg-transparent' : 'bg-[var(--shades-6)]'\">\n <i class=\"pi font-bold\"\n [ngClass]=\"isActive(i) ? 'pi-minus text-[var(--ui-taly-dark-black)]' : 'pi-plus text-[var(--ui-taly-dark-black)]'\"></i>\n </div>\n </div>\n </p-accordion-header>\n\n <!-- CONTENT -->\n <p-accordion-content>\n <div class=\"px-6 py-4\n text-base font-medium leading-7 tracking-[-0.16px]\n bg-[var(--shades-6)]\n text-[var(--ui-taly-dark-black)]\n rounded-b-2xl\" [dir]=\"textDirection\">\n {{ textDirection === 'rtl'\n ? item.descriptionAr\n : item.descriptionEn }}\n </div>\n </p-accordion-content>\n </p-accordion-panel>\n</p-accordion>","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n inject,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n FormGroup,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n selector: 'lib-taly-password',\n standalone: true,\n imports: [\n CommonModule, \n ReactiveFormsModule, \n InputTextModule, \n ],\n templateUrl: './taly-password-components.html',\n styleUrl: './taly-password-components.scss',\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalyPasswordComponents),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TalyPasswordComponents),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TalyPasswordComponents implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input({ required: true }) id = '';\n @Input({ required: true }) label = '';\n @Input() placeholderText = '';\n @Input() formGroup!: FormGroup;\n @Input() controlName!: string;\n @Input() max!: number;\n @Input() inputmodeType = 'password';\n\n disabled = false;\n fieldTextType = false;\n\n get f() {\n return this.formGroup?.controls;\n }\n\n writeValue(value: any): void {\n this._value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate() {\n return null;\n }\n\n onReset() {\n this.formGroup?.get(this.controlName)?.setValue(null);\n }\n\n toggleFieldTextType() {\n this.fieldTextType = !this.fieldTextType;\n }\n\n private _value: any = null;\n onChange = (_: any) => {};\n onTouched = () => {};\n}\n","<div class=\"input-wrapper\" [formGroup]=\"formGroup\" [class.disabled]=\"disabled\"\n [class.input-error]=\"f[controlName].invalid && f[controlName].touched\">\n <span class=\"p-float-label p-input-icon-right\">\n <input class=\"taly-input\" dir=\"ltr\" [formControlName]=\"controlName\" pInputText [id]=\"id\"\n [placeholder]=\"placeholderText\" [type]=\"fieldTextType ? 'text' : 'password'\"\n [attr.inputmode]=\"inputmodeType\" #inputField [disabled]=\"disabled\" [maxlength]=\"max\" />\n\n @if (!disabled && inputField.value) {\n <img class=\"eye\" src=\"assets/images/show-password-icon.svg\" alt=\"password-reset\" role=\"button\" tabindex=\"0\"\n (click)=\"toggleFieldTextType()\" (keyup.enter)=\"toggleFieldTextType()\" />\n }\n\n </span>\n</div>\n\n<div class=\"alert\">\n @if (f[controlName].invalid && f[controlName].touched) {\n @if (f[controlName].hasError('required')) {\n <span class=\"alert-danger\">\n {{ label }} <span translate> is required </span>\n </span>\n }\n }\n\n @if (\n f[controlName]?.invalid &&\n id === 'confirmPassword' &&\n f[controlName]?.errors?.['passwordMismatch'] === true\n ) {\n <div [ngClass]=\"\n f[controlName]?.errors?.['passwordMismatch'] === false\n ? 'text-success'\n : 'alert-danger'\n \">\n <img src=\"assets/images/error-icon.svg\" />\n <span>Passwords don’t match!</span>\n </div>\n }\n\n\n @if (f[controlName]?.dirty && id === 'password' && f[controlName].touched) {\n <div [ngClass]=\"\n f[controlName]?.value?.match('^(?=.*[A-Z])') ? 'text-success' : 'alert-danger alert-grey'\n \">\n <img [src]=\"\n f[controlName]?.value?.match('^(?=.*[A-Z])')\n ? 'assets/images/success-img.svg'\n : 'assets/images/error-icon-grey.svg'\n \" alt=\"statu-icon\" />\n <span> Must contain one uppercase </span>\n </div>\n <div [ngClass]=\"\n f[controlName]?.value?.match('(?=.*[a-z])') ? 'text-success' : 'alert-danger alert-grey'\n \" alt=\"status-icons\">\n <img [src]=\"\n f[controlName]?.value?.match('(?=.*[a-z])')\n ? 'assets/images/success-img.svg'\n : 'assets/images/error-icon-grey.svg'\n \" alt=\"status-icons\" />\n <span> Must contain one lowercase </span>\n </div>\n <div [ngClass]=\"\n f[controlName]?.value?.match('(.*[0-9].*)') ? 'text-success' : 'alert-danger alert-grey'\n \">\n <img [src]=\"\n f[controlName]?.value?.match('(.*[0-9].*)')\n ? 'assets/images/success-img.svg'\n : 'assets/images/error-icon-grey.svg'\n \" alt=\"status-icons\" />\n <span> Must contain one number </span>\n </div>\n <div [ngClass]=\"\n f[controlName]?.value?.match('(?=.*[!@#$%^&*])')\n ? 'text-success'\n : 'alert-danger alert-grey'\n \">\n <img [src]=\"\n f[controlName]?.value?.match('(?=.*[!@#$%^&*])')\n ? 'assets/images/success-img.svg'\n : 'assets/images/error-icon-grey.svg'\n \" alt=\"status-icons\" />\n <span> At least one special character. </span>\n </div>\n\n <div [ngClass]=\"f[controlName]?.value?.match('.{8}') ? 'text-success' : 'alert-danger alert-grey'\">\n <img [src]=\"\n f[controlName]?.value?.match('.{8}')\n ? 'assets/images/success-img.svg'\n : 'assets/images/error-icon-grey.svg'\n \" alt=\"status-icons\" />\n <span> 6 Character minimum </span>\n </div>\n }\n</div>","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\n\n@Component({\n selector: 'lib-taly-buttons',\n standalone: true,\n imports: [CommonModule, ButtonModule],\n templateUrl: './taly-buttons.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TalyButtons {\n @Input() label = '';\n @Input() icon: string = '';\n @Input() iconPosition: 'left' | 'right' = 'left';\n\n @Input() severity:\n | 'primary'\n | 'secondary'\n | 'success'\n | 'info'\n | 'warn'\n | 'help'\n | 'danger'\n | 'contrast'\n | null\n | undefined = 'primary';\n\n @Input() outlined = false;\n @Input() text = false;\n @Input() raised = false;\n @Input() rounded = false;\n @Input() loading = false;\n @Input() disabled = false;\n @Input() fullWidth = false;\n\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n\n @Output() clicked = new EventEmitter<Event>();\n\n get buttonClasses(): string {\n const classes = [\n this.fullWidth ? 'w-full' : 'w-auto',\n ];\n\n // Severity colors (Tailwind) - Restored to match previous 'working' behavior\n const severityMap: Record<string, string> = {\n primary: '!bg-blue-600 !text-white hover:!bg-blue-700',\n secondary: '!bg-gray-600 !text-white hover:!bg-gray-700',\n success: '!bg-green-600 !text-white hover:!bg-green-700',\n info: '!bg-cyan-500 !text-white hover:!bg-cyan-600',\n warn: '!bg-yellow-400 !text-black hover:!bg-yellow-500', // Changed warning to warn\n help: '!bg-purple-600 !text-white hover:!bg-purple-700',\n danger: '!bg-red-600 !text-white hover:!bg-red-700',\n contrast: '!bg-black !text-white hover:!bg-gray-800',\n };\n\n // Apply colors only if the button is not text/outlined, OR apply specific text/outlined colors\n // We check inputs to decide which map to use, effectively overriding PrimeNG theme colors\n // but letting PrimeNG handle structure (rounded, raised, iconPos).\n\n if (!this.text && !this.outlined) {\n classes.push(severityMap[this.severity || 'primary']);\n }\n\n if (this.outlined) {\n const outlinedMap: Record<string, string> = {\n primary: '!border-blue-600 !text-blue-600 hover:!bg-blue-50',\n secondary: '!border-gray-600 !text-gray-600 hover:!bg-gray-50',\n success: '!border-green-600 !text-green-600 hover:!bg-green-50',\n info: '!border-cyan-500 !text-cyan-500 hover:!bg-cyan-50',\n warn: '!border-yellow-400 !text-yellow-400 hover:!bg-yellow-50',\n help: '!border-purple-600 !text-purple-600 hover:!bg-purple-50',\n danger: '!border-red-600 !text-red-600 hover:!bg-red-50',\n contrast: '!border-black !text-black hover:!bg-gray-100',\n };\n classes.push(outlinedMap[this.severity || 'primary']);\n }\n\n if (this.text) {\n const textMap: Record<string, string> = {\n primary: '!text-blue-600 hover:!underline',\n secondary: '!text-gray-600 hover:!underline',\n success: '!text-green-600 hover:!underline',\n info: '!text-cyan-500 hover:!underline',\n warn: '!text-yellow-400 hover:!underline',\n help: '!text-purple-600 hover:!underline',\n danger: '!text-red-600 hover:!underline',\n contrast: '!text-black hover:!underline',\n };\n classes.push(textMap[this.severity || 'primary']);\n }\n\n return classes.join(' ');\n }\n\n handleClick(event: Event): void {\n if (this.disabled || this.loading) {\n event.preventDefault();\n return;\n }\n this.clicked.emit(event);\n }\n}\n","<button pButton [type]=\"type\" [disabled]=\"disabled || loading\" [icon]=\"icon\" [iconPos]=\"iconPosition\" [label]=\"label\"\n [loading]=\"loading\" [severity]=\"$any(severity)\" [outlined]=\"outlined\" [text]=\"text\" [raised]=\"raised\"\n [rounded]=\"rounded\" [ngClass]=\"buttonClasses\" (click)=\"handleClick($event)\">\n</button>","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n forwardRef,\n inject,\n OnInit,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n Validator,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n AbstractControl,\n ValidationErrors,\n FormsModule,\n ReactiveFormsModule,\n NgControl,\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgOtpInputModule } from 'ng-otp-input';\n\n@Component({\n selector: 'lib-taly-otp-input',\n templateUrl: './taly-otp-input.html',\n styleUrl: './taly-otp-input.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, ReactiveFormsModule, NgOtpInputModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalyOtpInput),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TalyOtpInput),\n multi: true,\n },\n ],\n})\nexport class TalyOtpInput implements ControlValueAccessor, Validator, OnInit, OnChanges {\n @Input() label = 'OTP';\n @Input() length = 6;\n @Input() numericOnly = true;\n @Input() autofocus = false;\n\n private _value = '';\n private _disabled = false;\n\n otpConfig: any = {};\n\n private onChange = (_: any) => {};\n private onTouched = () => {};\n\n ngControl = inject(NgControl, { optional: true, self: true });\n\n constructor(private cdr: ChangeDetectorRef) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this.updateOtpConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['length'] || changes['numericOnly'] || changes['autofocus']) {\n this.updateOtpConfig();\n }\n }\n\n private updateOtpConfig(): void {\n this.otpConfig = {\n length: this.length,\n inputClass: 'taly-otp-input',\n allowNumbersOnly: this.numericOnly,\n autofocus: this.autofocus,\n };\n this.cdr.markForCheck();\n }\n\n writeValue(value: any): void {\n this._value = value || '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onOtpChange(value: string): void {\n this._value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (!control.value) return null;\n if (control.value.length !== this.length) {\n return { minlength: { requiredLength: this.length } };\n }\n return null;\n }\n}\n","<div class=\"block\" [ngClass]=\"{\n 'pointer-events-none opacity-60': disabled,\n 'border-red-500': ngControl?.invalid && ngControl?.touched\n }\">\n <!-- Label -->\n <label class=\"mb-1 block text-sm font-medium text-gray-700\">\n {{ label }}\n </label>\n\n <!-- OTP Input -->\n <ng-otp-input [config]=\"otpConfig\" [disabled]=\"disabled\" (onInputChange)=\"onOtpChange($event)\"></ng-otp-input>\n</div>\n\n<!-- Error Messages -->\n<div *ngIf=\"ngControl?.invalid && ngControl?.touched\" class=\"mt-1 text-sm text-red-600\">\n <div *ngIf=\"ngControl?.errors?.['required']\">\n {{ label }} is required\n </div>\n\n <div *ngIf=\"ngControl?.errors?.['minlength']\">\n OTP must be {{ ngControl?.errors?.['minlength']?.requiredLength }} digits\n </div>\n\n <div *ngIf=\"ngControl?.errors?.['maxlength']\">\n OTP must be {{ ngControl?.errors?.['maxlength']?.requiredLength }} digits\n </div>\n</div>","/*\n * Public API Surface of taly-shared-ui-lib\n */\n\nexport * from './lib/taly-shared-ui-lib';\nexport * from './lib/taly-input/taly-input';\nexport * from './lib/taly-select/taly-select';\nexport * from './lib/taly-input-group/taly-input-group';\nexport * from './lib/taly-table/taly-table'\nexport * from './lib/taly-accordion/taly-accordion'\nexport * from './lib/taly-password-components/taly-password-components'\nexport * from './lib/taly-buttons/taly-buttons'\nexport * from './lib/taly-otp-input/taly-otp-input'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i5","i4"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,268 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ElementRef, ChangeDetectorRef, EventEmitter, TemplateRef, OnInit, OnChanges, SimpleChanges } from '@angular/core';
3
+ import * as _angular_forms from '@angular/forms';
4
+ import { ControlValueAccessor, Validator, NgControl, AbstractControl, ValidationErrors, FormGroup } from '@angular/forms';
5
+ import { LazyLoadEvent } from 'primeng/api';
6
+
7
+ declare class TalySharedUiLib {
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<TalySharedUiLib, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<TalySharedUiLib, "lib-taly-shared-ui-lib", never, {}, {}, never, never, true, never>;
10
+ }
11
+
12
+ declare class TalyInput implements ControlValueAccessor, Validator {
13
+ private cdr;
14
+ id: string;
15
+ label: string;
16
+ placeholderText: string;
17
+ inputType: string;
18
+ inputmodeType: string;
19
+ min?: number;
20
+ max?: number;
21
+ autofocus: boolean;
22
+ private _disabled;
23
+ private _value;
24
+ isFocused: boolean;
25
+ inputRef: ElementRef<HTMLInputElement>;
26
+ private onChange;
27
+ private onTouched;
28
+ ngControl: NgControl | null;
29
+ constructor(cdr: ChangeDetectorRef);
30
+ writeValue(value: any): void;
31
+ registerOnChange(fn: any): void;
32
+ registerOnTouched(fn: any): void;
33
+ setDisabledState(isDisabled: boolean): void;
34
+ get value(): any;
35
+ set value(val: any);
36
+ handleInputEvent(value: any): void;
37
+ onFocus(): void;
38
+ onBlur(): void;
39
+ onReset(event?: Event): void;
40
+ get disabled(): boolean;
41
+ validate(control: AbstractControl): ValidationErrors | null;
42
+ static ɵfac: i0.ɵɵFactoryDeclaration<TalyInput, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<TalyInput, "lib-taly-input", never, { "id": { "alias": "id"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholderText": { "alias": "placeholderText"; "required": false; }; "inputType": { "alias": "inputType"; "required": false; }; "inputmodeType": { "alias": "inputmodeType"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; }, {}, never, never, true, never>;
44
+ }
45
+
46
+ declare class TalySelect implements ControlValueAccessor, Validator {
47
+ private cdr;
48
+ ngControl: any;
49
+ constructor();
50
+ id: string;
51
+ label: string;
52
+ options: any[];
53
+ optionsValue?: string;
54
+ optionsLabel: string;
55
+ placeholderText: string;
56
+ formGroup: FormGroup;
57
+ controlName: string;
58
+ min?: number;
59
+ max?: number;
60
+ textDirection?: string;
61
+ set isDisabled(value: boolean);
62
+ disabled: boolean;
63
+ showErrorMessages: boolean;
64
+ private _value;
65
+ get f(): {
66
+ [key: string]: _angular_forms.AbstractControl<any, any, any>;
67
+ };
68
+ get value(): any;
69
+ set value(val: any);
70
+ onChange: (value: any) => void;
71
+ onTouched: () => void;
72
+ writeValue(value: any): void;
73
+ registerOnChange(fn: any): void;
74
+ registerOnTouched(fn: any): void;
75
+ setDisabledState(isDisabled: boolean): void;
76
+ validate(): null;
77
+ onReset(event: any): void;
78
+ onHide(): void;
79
+ static ɵfac: i0.ɵɵFactoryDeclaration<TalySelect, never>;
80
+ static ɵcmp: i0.ɵɵComponentDeclaration<TalySelect, "lib-taly-select", never, { "id": { "alias": "id"; "required": true; }; "label": { "alias": "label"; "required": true; }; "options": { "alias": "options"; "required": true; }; "optionsValue": { "alias": "optionsValue"; "required": false; }; "optionsLabel": { "alias": "optionsLabel"; "required": false; }; "placeholderText": { "alias": "placeholderText"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": true; }; "controlName": { "alias": "controlName"; "required": true; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "textDirection": { "alias": "textDirection"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; }, {}, never, never, true, never>;
81
+ }
82
+
83
+ declare class TalyInputGroup implements ControlValueAccessor {
84
+ private cdr;
85
+ inputField: ElementRef<HTMLInputElement>;
86
+ private ngControl;
87
+ constructor();
88
+ id: string;
89
+ label: string;
90
+ placeholderText: string;
91
+ inputType: string;
92
+ formGroup: FormGroup;
93
+ controlName: string;
94
+ min?: number;
95
+ max?: number;
96
+ inputmodeType: string;
97
+ autofocus: boolean;
98
+ set isDisabled(disable: boolean);
99
+ disabled: boolean;
100
+ textDirection: string;
101
+ get f(): {
102
+ [key: string]: _angular_forms.AbstractControl<any, any, any>;
103
+ };
104
+ private _value;
105
+ set value(val: any);
106
+ get value(): any;
107
+ onChange: (value: any) => void;
108
+ onTouched: () => void;
109
+ writeValue(value: any): void;
110
+ registerOnChange(fn: any): void;
111
+ registerOnTouched(fn: any): void;
112
+ validate(): null;
113
+ onReset(event?: Event): void;
114
+ static ɵfac: i0.ɵɵFactoryDeclaration<TalyInputGroup, never>;
115
+ static ɵcmp: i0.ɵɵComponentDeclaration<TalyInputGroup, "lib-taly-input-group", never, { "id": { "alias": "id"; "required": true; }; "label": { "alias": "label"; "required": true; }; "placeholderText": { "alias": "placeholderText"; "required": false; }; "inputType": { "alias": "inputType"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": false; }; "controlName": { "alias": "controlName"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "inputmodeType": { "alias": "inputmodeType"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; }, {}, never, ["[addonContent]"], true, never>;
116
+ }
117
+
118
+ declare class TalyTable<T = any> {
119
+ value: T[];
120
+ loading: boolean;
121
+ paginator: boolean;
122
+ rows: number;
123
+ first: number;
124
+ lazy: boolean;
125
+ totalRecords: number;
126
+ sortable: boolean;
127
+ sortField?: string;
128
+ sortOrder?: 1 | -1;
129
+ selection?: T | T[];
130
+ selectionChange: EventEmitter<T | T[]>;
131
+ userId: number;
132
+ globalFilterFields?: string[];
133
+ columns: Array<{
134
+ field: string;
135
+ header: string;
136
+ sortable?: boolean;
137
+ filter?: boolean;
138
+ style?: any;
139
+ width?: string;
140
+ type?: 'text' | 'date' | 'number' | 'boolean';
141
+ }>;
142
+ showSelectionCheckbox: boolean;
143
+ showRowIndex: boolean;
144
+ selectionMode: 'single' | 'multiple' | null;
145
+ dataKey?: string;
146
+ actionTemplate?: TemplateRef<any>;
147
+ statusTemplate?: TemplateRef<any>;
148
+ rowSelect: EventEmitter<any>;
149
+ onLazyLoad: EventEmitter<LazyLoadEvent>;
150
+ onSort: EventEmitter<any>;
151
+ onPage: EventEmitter<any>;
152
+ onFilter: EventEmitter<any>;
153
+ onRowSelect: EventEmitter<T>;
154
+ onRowUnselect: EventEmitter<T>;
155
+ pageChange: EventEmitter<{
156
+ page: number;
157
+ size: number;
158
+ }>;
159
+ rowClick: EventEmitter<any>;
160
+ onSelectionChange(event: any): void;
161
+ onPageChange(event: any): void;
162
+ onSortChange(event: any): void;
163
+ onFilterChange(event: any): void;
164
+ onRowSelectEvent(event: any): void;
165
+ onRowUnselectEvent(event: any): void;
166
+ onRowClick(rowData: any): void;
167
+ onPaginate(event: any): void;
168
+ static ɵfac: i0.ɵɵFactoryDeclaration<TalyTable<any>, never>;
169
+ static ɵcmp: i0.ɵɵComponentDeclaration<TalyTable<any>, "lib-taly-table", never, { "value": { "alias": "value"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "paginator": { "alias": "paginator"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "first": { "alias": "first"; "required": false; }; "lazy": { "alias": "lazy"; "required": false; }; "totalRecords": { "alias": "totalRecords"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "sortField": { "alias": "sortField"; "required": false; }; "sortOrder": { "alias": "sortOrder"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "userId": { "alias": "userId"; "required": false; }; "globalFilterFields": { "alias": "globalFilterFields"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "showSelectionCheckbox": { "alias": "showSelectionCheckbox"; "required": false; }; "showRowIndex": { "alias": "showRowIndex"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "dataKey": { "alias": "dataKey"; "required": false; }; }, { "selectionChange": "selectionChange"; "rowSelect": "rowSelect"; "onLazyLoad": "onLazyLoad"; "onSort": "onSort"; "onPage": "onPage"; "onFilter": "onFilter"; "onRowSelect": "onRowSelect"; "onRowUnselect": "onRowUnselect"; "pageChange": "pageChange"; "rowClick": "rowClick"; }, ["actionTemplate", "statusTemplate"], never, true, never>;
170
+ }
171
+
172
+ interface AccordionItem {
173
+ itemTitleEn: string;
174
+ itemTitleAr: string;
175
+ descriptionEn: string;
176
+ descriptionAr: string;
177
+ disabled?: boolean;
178
+ }
179
+ declare class TalyAccordion implements OnInit {
180
+ items: AccordionItem[];
181
+ textDirection: 'ltr' | 'rtl';
182
+ multiple: boolean;
183
+ /**
184
+ * Value can be a string (single) or string array (multiple).
185
+ */
186
+ value: string | string[] | null;
187
+ ngOnInit(): void;
188
+ isActive(index: number): boolean;
189
+ static ɵfac: i0.ɵɵFactoryDeclaration<TalyAccordion, never>;
190
+ static ɵcmp: i0.ɵɵComponentDeclaration<TalyAccordion, "lib-taly-accordion", never, { "items": { "alias": "items"; "required": false; }; "textDirection": { "alias": "textDirection"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; }, {}, never, never, true, never>;
191
+ }
192
+
193
+ declare class TalyPasswordComponents implements ControlValueAccessor {
194
+ private cdr;
195
+ id: string;
196
+ label: string;
197
+ placeholderText: string;
198
+ formGroup: FormGroup;
199
+ controlName: string;
200
+ max: number;
201
+ inputmodeType: string;
202
+ disabled: boolean;
203
+ fieldTextType: boolean;
204
+ get f(): {
205
+ [key: string]: _angular_forms.AbstractControl<any, any, any>;
206
+ };
207
+ writeValue(value: any): void;
208
+ registerOnChange(fn: any): void;
209
+ registerOnTouched(fn: any): void;
210
+ validate(): null;
211
+ onReset(): void;
212
+ toggleFieldTextType(): void;
213
+ private _value;
214
+ onChange: (_: any) => void;
215
+ onTouched: () => void;
216
+ static ɵfac: i0.ɵɵFactoryDeclaration<TalyPasswordComponents, never>;
217
+ static ɵcmp: i0.ɵɵComponentDeclaration<TalyPasswordComponents, "lib-taly-password", never, { "id": { "alias": "id"; "required": true; }; "label": { "alias": "label"; "required": true; }; "placeholderText": { "alias": "placeholderText"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": false; }; "controlName": { "alias": "controlName"; "required": false; }; "max": { "alias": "max"; "required": false; }; "inputmodeType": { "alias": "inputmodeType"; "required": false; }; }, {}, never, never, true, never>;
218
+ }
219
+
220
+ declare class TalyButtons {
221
+ label: string;
222
+ icon: string;
223
+ iconPosition: 'left' | 'right';
224
+ severity: 'primary' | 'secondary' | 'success' | 'info' | 'warn' | 'help' | 'danger' | 'contrast' | null | undefined;
225
+ outlined: boolean;
226
+ text: boolean;
227
+ raised: boolean;
228
+ rounded: boolean;
229
+ loading: boolean;
230
+ disabled: boolean;
231
+ fullWidth: boolean;
232
+ type: 'button' | 'submit' | 'reset';
233
+ clicked: EventEmitter<Event>;
234
+ get buttonClasses(): string;
235
+ handleClick(event: Event): void;
236
+ static ɵfac: i0.ɵɵFactoryDeclaration<TalyButtons, never>;
237
+ static ɵcmp: i0.ɵɵComponentDeclaration<TalyButtons, "lib-taly-buttons", never, { "label": { "alias": "label"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; "severity": { "alias": "severity"; "required": false; }; "outlined": { "alias": "outlined"; "required": false; }; "text": { "alias": "text"; "required": false; }; "raised": { "alias": "raised"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "type": { "alias": "type"; "required": false; }; }, { "clicked": "clicked"; }, never, never, true, never>;
238
+ }
239
+
240
+ declare class TalyOtpInput implements ControlValueAccessor, Validator, OnInit, OnChanges {
241
+ private cdr;
242
+ label: string;
243
+ length: number;
244
+ numericOnly: boolean;
245
+ autofocus: boolean;
246
+ private _value;
247
+ private _disabled;
248
+ otpConfig: any;
249
+ private onChange;
250
+ private onTouched;
251
+ ngControl: NgControl | null;
252
+ constructor(cdr: ChangeDetectorRef);
253
+ ngOnInit(): void;
254
+ ngOnChanges(changes: SimpleChanges): void;
255
+ private updateOtpConfig;
256
+ writeValue(value: any): void;
257
+ registerOnChange(fn: any): void;
258
+ registerOnTouched(fn: any): void;
259
+ setDisabledState(isDisabled: boolean): void;
260
+ onOtpChange(value: string): void;
261
+ get disabled(): boolean;
262
+ validate(control: AbstractControl): ValidationErrors | null;
263
+ static ɵfac: i0.ɵɵFactoryDeclaration<TalyOtpInput, never>;
264
+ static ɵcmp: i0.ɵɵComponentDeclaration<TalyOtpInput, "lib-taly-otp-input", never, { "label": { "alias": "label"; "required": false; }; "length": { "alias": "length"; "required": false; }; "numericOnly": { "alias": "numericOnly"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; }, {}, never, never, true, never>;
265
+ }
266
+
267
+ export { TalyAccordion, TalyButtons, TalyInput, TalyInputGroup, TalyOtpInput, TalyPasswordComponents, TalySelect, TalySharedUiLib, TalyTable };
268
+ export type { AccordionItem };
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "taly-shared-ui-lib",
3
+ "version": "0.0.6",
4
+ "peerDependencies": {
5
+ "@angular/common": "^20.3.0",
6
+ "@angular/core": "^20.3.0",
7
+ "primeflex": "^4.0.0",
8
+ "primeicons": "^7.0.0",
9
+ "primeng": "^20.4.0",
10
+ "ng-otp-input": "^2.0.9"
11
+ },
12
+ "dependencies": {
13
+ "tslib": "^2.3.0"
14
+ },
15
+ "sideEffects": false,
16
+ "module": "fesm2022/taly-shared-ui-lib.mjs",
17
+ "typings": "index.d.ts",
18
+ "exports": {
19
+ "./package.json": {
20
+ "default": "./package.json"
21
+ },
22
+ ".": {
23
+ "types": "./index.d.ts",
24
+ "default": "./fesm2022/taly-shared-ui-lib.mjs"
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,4 @@
1
+ // @import "primeng/resources/themes/lara-light-blue/theme.css";
2
+ // @import "primeng/resources/primeng.css";
3
+ // @use 'primeicons/primeicons' as *; // Already in index.scss
4
+ // @use 'primeflex/primeflex' as *; // Already in index.scss
@@ -0,0 +1,57 @@
1
+ /* variables.scss */
2
+ :root {
3
+ --shades-1: #1c2e40;
4
+ --shades-2: #354250;
5
+ --shades-3: #cad3db;
6
+ --shades-4: #e3e8ed;
7
+ --shades-5: #cad3db;
8
+ --shades-6: #e3e7ed;
9
+ --shades-7: #f3f5f7;
10
+ --shades-8: #65717d;
11
+ --shades-9: #bf581d;
12
+ --shades-10: #354050;
13
+ --shades-11: #656f7d;
14
+ --shaded-12: #deeeff;
15
+ --shaded-13: #ff3b6a;
16
+ --shaded-14: #f3f4f7;
17
+ --shades-15: #6b7885;
18
+ --ui-black: #000000;
19
+ --ui-success: #2dd494;
20
+ --ui-success-dark: #007d53;
21
+ --ui-taly-black: #131f2b;
22
+ --ui-taly-dialog-black: #131d2b;
23
+ --ui-taly-dark-black: #1c2b40;
24
+ --brand-white: #ffffff;
25
+ --brand-taly-sky-blue: #0e85ff;
26
+ --hero-banner-bg: #001a3f;
27
+ --brand-taly-sky-blue-shade: #0c72db;
28
+ --brand-taly-sky-blue-dark-shade: #0c62db;
29
+ --brand-taly-sky-dialog-shade: #0e6ff7;
30
+ --manrope: 'Manrope';
31
+ --brand-translucid-white: rgba(242, 243, 244, 0.8);
32
+ --ui-error-dark: #d12e55;
33
+ --ui-error: #ff3b6a;
34
+ --ui-error-light: #fcf3f6;
35
+ --border-radius: #cad1db;
36
+ --brand-taly-sky-blue-shade-1: #2e93ff;
37
+ --brand-taly-sky-footer-shade-1: #8593a6;
38
+ --brand-taly-sky-light: #ddeeff;
39
+ --brand-taly-sky-light-shade: #1974e8;
40
+ --other-translucid-white: rgba(242, 243, 244, 0.8);
41
+ --brand-header: #f2f3f5;
42
+ --shades-2-dark: #68737f;
43
+ --dark-grey: #818c98;
44
+ --dark-black-grey: #354250;
45
+ --dark-border-radius: #646466;
46
+ --light-banner: #a9cfff;
47
+ --border-shades: #ff3b6a1a;
48
+ --shades-16: #6c757d;
49
+ --shades-17: #f2f2f2;
50
+ --shades-18: #f3f3f3;
51
+ --shades-19: #131f2b8c;
52
+ --spinner-size: 50px;
53
+ --spinner-border: 5px;
54
+ --spinner-bg: #e0e0e0;
55
+ --spinner-color: #007bff;
56
+ --loader-text-color: var(--ui-taly-dark-black);
57
+ }
@@ -0,0 +1,21 @@
1
+ @use './_variables' as *;
2
+ @use './_theme' as *;
3
+
4
+ @tailwind base;
5
+ @tailwind components;
6
+ @tailwind utilities;
7
+
8
+ /* PrimeFlex */
9
+ @import "primeflex/primeflex.css";
10
+
11
+ /* PrimeIcons */
12
+ @import "primeicons/primeicons.css";
13
+
14
+ .taly-otp-input {
15
+ @apply w-10 h-10 mr-1 text-lg text-center rounded-md border border-gray-300
16
+ focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500;
17
+ }
18
+
19
+ .input-error .taly-otp-input {
20
+ @apply border-red-500;
21
+ }