@testgorilla/tgo-ui 12.3.0 → 12.3.2
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.
- package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs +3 -1
- package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete-v2.mjs +6 -4
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete-v2.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-field.mjs +5 -2
- package/fesm2022/testgorilla-tgo-ui-components-field.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-infinite-scroll-table.mjs +12 -3
- package/fesm2022/testgorilla-tgo-ui-components-infinite-scroll-table.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs +3 -2
- package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs +5 -2
- package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-scale.mjs +9 -2
- package/fesm2022/testgorilla-tgo-ui-components-scale.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs +4 -4
- package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-slider.mjs +13 -4
- package/fesm2022/testgorilla-tgo-ui-components-slider.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-stepper.mjs +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-stepper.mjs.map +1 -1
- package/mcp/catalog.json +1 -1
- package/package.json +2 -2
- package/types/testgorilla-tgo-ui-components-alert-banner.d.ts +1 -0
- package/types/testgorilla-tgo-ui-components-autocomplete-v2.d.ts +1 -1
- package/types/testgorilla-tgo-ui-components-field.d.ts +1 -0
- package/types/testgorilla-tgo-ui-components-infinite-scroll-table.d.ts +3 -3
- package/types/testgorilla-tgo-ui-components-radio-button.d.ts +1 -0
- package/types/testgorilla-tgo-ui-components-scale.d.ts +1 -0
- package/types/testgorilla-tgo-ui-components-slider.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testgorilla-tgo-ui-components-dialog.mjs","names":[],"sources":["../../../components/dialog/dialog.component.ts","../../../components/dialog/dialog.component.html","../../../components/dialog/dialog.service.ts","../../../components/dialog/dialog.component.module.ts","../../../components/dialog/confirm-dialog/confirm-dialog.component.ts","../../../components/dialog/confirm-dialog/confirm-dialog.component.html","../../../components/dialog/confirm-dialog/confirm-dialog.component.module.ts","../../../components/dialog/dialog-custom/dialog-custom.component.ts","../../../components/dialog/dialog-custom/dialog-custom.component.html","../../../components/dialog/dialog-custom/dialog-custom.component.module.ts"],"sourcesContent":["import { hasModifierKey } from '@angular/cdk/keycodes';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n HostBinding,\n Inject,\n inject,\n Input,\n input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n MAT_DIALOG_DATA,\n MatDialogRef,\n MatDialogState,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n} from '@angular/material/dialog';\nimport { filter } from 'rxjs';\n\nimport { ButtonComponent, ButtonColor, ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { TooltipComponent } from '@testgorilla/tgo-ui/components/tooltip';\n\n@Component({\n selector: 'ui-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatDialogTitle,\n TooltipComponent,\n ButtonComponent,\n CdkScrollable,\n MatDialogContent,\n MatDialogActions,\n AsyncPipe,\n UiTranslatePipe,\n ],\n})\nexport class DialogComponent implements OnInit, OnChanges, AfterViewInit {\n /**\n * Dialog title\n *\n * @memberof DialogComponent\n */\n @Input() title? = '';\n\n /**\n * Show close button\n *\n * @memberof DialogComponent\n */\n @Input() showCloseButton = true;\n\n /**\n * Fuction called before dialgo is closed\n *\n * @memberof DialogComponent\n */\n @Input() canCloseFn: () => boolean = () => true;\n\n /**\n * Secondary button label\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonLabel? = '';\n\n /**\n * Footer dialog message\n *\n * @memberof DialogComponent\n */\n @Input() footerMessage? = '';\n\n /**\n * Primary button label\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonLabel? = '';\n\n /**\n * Primary button icon name\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonIconName?: IconName | '' = '';\n\n /**\n * Secondary button type\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonType: ButtonColor = 'ghost';\n\n /**\n * Primary button type\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonType: ButtonColor = 'primary';\n\n /**\n * Primary button test id\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonDataTestId: string | null = null;\n\n @Input() testId: string | null = null;\n\n @Input() closeButtonTestId: string | null = null;\n\n @Input() closeButtonAriaLabel = '';\n\n /**\n * Secondary button test id\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonDataTestId: string | null = null;\n\n /**\n * Color of the dialog.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof DialogComponent\n */\n @HostBinding('style.--color')\n @Input()\n companyColor: string | null = '';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n /**\n *\n * Disable primary button\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() disablePrimaryButton = false;\n /**\n *\n * Show a spinner in place of the primary button label while the action runs.\n * Also disables the button, so a second click cannot fire\n * `primaryButtonClickEvent` while the first is still in flight.\n *\n * @memberof DialogComponent\n */\n primaryButtonLoading = input(false, { transform: booleanAttribute });\n /**\n *\n * Tooltip shown when hovering the primary button. Bound to a wrapper around the\n * button so it also shows while the button is disabled (a disabled button\n * receives no pointer events), e.g. to explain why the action is unavailable.\n *\n * @type {string}\n * @memberof DialogComponent\n */\n @Input() primaryButtonTooltip = '';\n /**\n *\n * Disable close button\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() disableClose = false;\n\n /**\n *\n * Disable button when canCloseFn is used\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() shouldDisableButtons = true;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof DialogComponent\n */\n @Input() ariaLabelledby = '';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof DialogComponent\n */\n @Input() ariaDescribedby = '';\n\n /**\n * Defines how modal was opened (with keyboard or not)\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() keyboardOpen = false;\n\n primaryButtonIconPosition = input<ButtonIconPosition>('left');\n\n @Output() closeEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() secondaryButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() primaryButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n @ViewChild('closeButton') closeButton: ButtonComponent;\n\n modalClosed = false;\n\n private readonly cdr = inject(ChangeDetectorRef);\n\n onEsc() {\n this.dismiss();\n }\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n public dialogRef: MatDialogRef<DialogComponent>,\n @Inject(MAT_DIALOG_DATA) private readonly data: { applicationTheme: ApplicationTheme }\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n // Not a host listener: focus can sit outside <ui-dialog>, e.g. on mat-dialog-container.\n // Optional call: MatDialogRef is stubbed as {} by DialogComponentModule, the stories and many consumer specs.\n this.dialogRef\n .keydownEvents?.()\n .pipe(\n filter(event => event.key === 'Escape' && !hasModifierKey(event)),\n takeUntilDestroyed()\n )\n .subscribe(() => this.onEsc());\n }\n\n disableButtons = false;\n protected readonly translationContext = 'DIALOG.';\n\n @ContentChild('dialogHeader')\n customHeader?: unknown;\n\n get hasCustomHeader(): boolean {\n return Boolean(this.customHeader);\n }\n\n ngOnInit(): void {\n this.areButtonsDisabled();\n if (this.data?.applicationTheme) {\n this.applicationTheme = this.data.applicationTheme;\n }\n if (this.applicationTheme !== 'classic') {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty companyColor falls back to the theme colour\n this.companyColor = this.companyColor || '#D410AA';\n } else {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty companyColor falls back to the theme colour\n this.companyColor = this.companyColor || '#46A997';\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['canCloseFn']) {\n this.dialogRef.disableClose = !this.canCloseFn();\n this.areButtonsDisabled();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.keyboardOpen) {\n setTimeout(() => {\n this.closeButton.buttonElement.focus('keyboard');\n }, 100);\n }\n }\n\n //Disable primary button when canClose is false\n areButtonsDisabled() {\n this.disableButtons = !this.canCloseFn() && this.shouldDisableButtons;\n }\n\n //Close modal\n dismiss(): void {\n if (this.canCloseFn()) {\n this.dialogRef.disableClose = false;\n this.dialogRef.close();\n this.modalClosed = true;\n this.cdr.markForCheck();\n }\n }\n\n onClose(event: Event): void {\n this.closeEvent.emit(event);\n this.modalClosed = true;\n }\n\n onSecondaryButtonClick(event: Event): void {\n this.secondaryButtonClickEvent.emit(event);\n }\n\n onPrimaryButtonClick(event: Event): void {\n this.primaryButtonClickEvent.emit(event);\n\n // The consumer may have closed the dialog with its own result. Closing again\n // would overwrite that result with undefined, and consumers read a missing\n // result as a cancel (ASM-157).\n if (this.dialogRef.getState() === MatDialogState.OPEN) {\n this.dismiss();\n }\n }\n}\n","<div class=\"dialog-container\" [attr.theme]=\"applicationTheme\" [attr.data-testid]=\"testId\">\n <div\n mat-dialog-title\n class=\"dialog-title\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"'labelledby'\"\n [attr.aria-describedby]=\"'ariaDescribedby'\"\n >\n <span [style.display]=\"'none'\" id=\"ariaDescribedby\">{{ ariaDescribedby }}</span>\n\n <!-- Default header content -->\n @if (!hasCustomHeader) {\n <h3 class=\"bold\" id=\"labelledby\">{{ title }}</h3>\n @if (showCloseButton) {\n <div>\n <ui-button\n #closeButton\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [companyColor]=\"applicationTheme === 'classic' ? '#000' : '#242424'\"\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"onClose($event)\"\n (buttonClickEvent)=\"dismiss()\"\n [testId]=\"closeButtonTestId\"\n [ariaLabel]=\"closeButtonAriaLabel || ('COMMON.CLOSE' | uiTranslate | async)!\"\n id=\"dialog-close-button\"\n ></ui-button>\n </div>\n }\n }\n\n <!-- Custom header content projection -->\n <ng-content select=\"[dialogHeader]\"></ng-content>\n </div>\n <mat-dialog-content>\n <ng-content></ng-content>\n </mat-dialog-content>\n @if (secondaryButtonLabel !== '' || primaryButtonLabel !== '') {\n <div mat-dialog-actions [class.dialog-action-w-message]=\"!!footerMessage\">\n @if (footerMessage) {\n <div class=\"actions-footer-message\">{{ footerMessage }}</div>\n }\n\n <!-- Projected footer content, rendered to the left of the action buttons -->\n <ng-content select=\"[dialogFooter]\"></ng-content>\n\n @if (!!secondaryButtonLabel) {\n <!-- Action-button ids stay on the ui-button wrappers: five tgo-qa-automation page objects descend from them. -->\n <ui-button\n [companyColor]=\"companyColor\"\n [variant]=\"secondaryButtonType\"\n [applicationTheme]=\"applicationTheme\"\n [label]=\"secondaryButtonLabel\"\n [attr.data-testid]=\"secondaryButtonDataTestId\"\n (click)=\"onSecondaryButtonClick($event)\"\n ></ui-button>\n }\n @if (!!primaryButtonLabel) {\n <!-- The tooltip wraps the button: a disabled ui-button receives no pointer\n events, so the tooltip must trigger from an enclosing element. -->\n <ui-tooltip\n class=\"primary-button-tooltip-trigger\"\n [message]=\"primaryButtonTooltip\"\n [applicationTheme]=\"applicationTheme\"\n >\n <ui-button\n [iconPosition]=\"primaryButtonIconPosition()\"\n [iconName]=\"primaryButtonIconName ? primaryButtonIconName : undefined\"\n [variant]=\"primaryButtonType\"\n [loading]=\"primaryButtonLoading()\"\n [ariaLabel]=\"primaryButtonLoading() ? primaryButtonLabel : ''\"\n [disabled]=\"disableButtons || disablePrimaryButton || primaryButtonLoading()\"\n [applicationTheme]=\"applicationTheme\"\n (click)=\"onPrimaryButtonClick($event)\"\n [label]=\"primaryButtonLabel\"\n [companyColor]=\"companyColor\"\n [attr.data-testid]=\"primaryButtonDataTestId\"\n ></ui-button>\n </ui-tooltip>\n }\n </div>\n }\n\n <!-- This is announcement for screen reader that dialog was closed-->\n <div aria-live=\"assertive\" role=\"alert\" style=\"position: absolute; left: -9999px\">\n @if (modalClosed) {\n <span>{{ 'DIALOG.CLOSED' | uiTranslate | async }}</span>\n }\n </div>\n</div>\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\nimport { DialogConfig } from './dialog.model';\n\nexport type DialogSize = 'small' | 'large' | 'x-large';\n@Injectable()\nexport class DialogService {\n constructor(\n private readonly matDialog: MatDialog,\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors MatDialog.open<T, D = any, R = any>: untyped-by-default data/result types for consumer ergonomics\n open<K = any, R = any, T = any>(\n dialogComponent: ComponentType<T>,\n dialogConfig?: DialogConfig<K>\n ): MatDialogRef<T, R> {\n const {\n applicationTheme = 'light',\n size = 'small',\n panelClass = '',\n extraData = {},\n backdropClass = '',\n keyboardOpen = false,\n config = {},\n } = dialogConfig ?? {};\n // Open the dialog using UI custom styles\n return this.matDialog.open(dialogComponent, {\n ...config,\n data: {\n applicationTheme: this.defaultAppTheme ?? applicationTheme,\n ...extraData,\n keyboardOpen,\n },\n backdropClass: backdropClass || '',\n panelClass:\n applicationTheme === 'classic'\n ? ['ui-dialog-wrapper', panelClass, size]\n : ['ui-dialog-wrapper', panelClass, applicationTheme, size],\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\nimport { DialogComponent } from './dialog.component';\nimport { DialogService } from './dialog.service';\n\n@NgModule({\n imports: [CommonModule, MatDialogModule, ButtonComponentModule, UiTranslatePipe, DialogComponent],\n exports: [DialogComponent],\n providers: [{ provide: MAT_DIALOG_DATA, useValue: {} }, { provide: MatDialogRef, useValue: {} }, DialogService],\n})\nexport class DialogComponentModule {}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { ButtonColor, ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme, LanguageService, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\n\nimport { DialogComponent } from '../dialog.component';\n\nimport { ConfirmDialogData } from './confirm-dialog.model';\n\n@Component({\n selector: 'ui-confirm-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss'],\n imports: [DialogComponent, AsyncPipe, UiTranslatePipe],\n})\nexport class ConfirmDialogComponent {\n confirmMessage: string | undefined;\n confirmButtonText: string | undefined;\n cancelButtonText: string | undefined;\n title: string | undefined;\n lang = LanguageService.defaultLanguage;\n confirmMessageHtml: string | undefined;\n showCloseButton = false;\n showSecondaryButton = true;\n color: string | null;\n primaryButtonType: ButtonColor;\n secondaryButtonType: ButtonColor;\n primaryButtonIconName: IconName | undefined;\n primaryButtonDataTestId = 'confirm-dialog.confirm-button';\n secondaryButtonDataTestId = 'confirm-dialog.cancel-button';\n primaryButtonIconPosition: ButtonIconPosition;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n public dialogRef: MatDialogRef<ConfirmDialogComponent>,\n @Inject(MAT_DIALOG_DATA) private readonly data: ConfirmDialogData\n ) {\n this.confirmMessage = data.message;\n this.confirmButtonText = data.confirmButtonText;\n this.cancelButtonText = data.cancelButtonText;\n this.title = data.title;\n this.lang = data.language ?? LanguageService.defaultLanguage;\n this.confirmMessageHtml = data.messageHtml ?? undefined;\n this.showCloseButton = data.showCloseButton ?? false;\n this.showSecondaryButton = data.showSecondaryButton ?? true;\n this.color = data.color ?? null;\n this.primaryButtonType = data.primaryButtonType ?? 'primary';\n this.secondaryButtonType = data.secondaryButtonType ?? 'ghost';\n this.primaryButtonIconName = data.primaryButtonIconName ?? undefined;\n this.primaryButtonDataTestId = data.primaryButtonDataTestId ?? 'confirm-dialog.confirm-button';\n this.secondaryButtonDataTestId = data.secondaryButtonDataTestId ?? 'confirm-dialog.cancel-button';\n this.primaryButtonIconPosition = data.primaryButtonIconPosition ?? 'left';\n\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n onConfirm(): void {\n if (this.data.onConfirm) {\n this.data.onConfirm();\n }\n this.dialogRef.close(true);\n }\n}\n","<ng-container>\n <ui-dialog\n [title]=\"title ?? ('COMMON.CONFIRM' | uiTranslate | async)!\"\n [primaryButtonLabel]=\"confirmButtonText ?? ('COMMON.YES' | uiTranslate | async)!\"\n [secondaryButtonLabel]=\"\n showSecondaryButton ? (cancelButtonText ?? ('COMMON.CANCEL' | uiTranslate | async)!) : undefined\n \"\n (primaryButtonClickEvent)=\"onConfirm()\"\n (secondaryButtonClickEvent)=\"dialogRef.close(false)\"\n (closeEvent)=\"dialogRef.close(null)\"\n [primaryButtonType]=\"primaryButtonType\"\n [primaryButtonIconName]=\"primaryButtonIconName\"\n [secondaryButtonType]=\"secondaryButtonType\"\n [applicationTheme]=\"applicationTheme\"\n [showCloseButton]=\"showCloseButton\"\n [companyColor]=\"color\"\n [primaryButtonDataTestId]=\"primaryButtonDataTestId\"\n [secondaryButtonDataTestId]=\"secondaryButtonDataTestId\"\n [primaryButtonIconPosition]=\"primaryButtonIconPosition\"\n >\n <div class=\"message\">{{ confirmMessage }}</div>\n @if (confirmMessageHtml) {\n <div class=\"message\" [innerHTML]=\"confirmMessageHtml\"></div>\n }\n </ui-dialog>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\nimport { DialogComponentModule } from '../dialog.component.module';\n\nimport { ConfirmDialogComponent } from './confirm-dialog.component';\n\n@NgModule({\n exports: [ConfirmDialogComponent],\n providers: [\n { provide: MAT_DIALOG_DATA, useValue: {} },\n { provide: MatDialogRef, useValue: {} },\n ],\n imports: [\n CommonModule,\n MatDialogModule,\n ButtonComponentModule,\n DialogComponentModule,\n UiTranslatePipe,\n ConfirmDialogComponent,\n ],\n})\nexport class ConfirmDialogComponentModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input,\n OnInit,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { ButtonComponent } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { ToggleComponent } from '@testgorilla/tgo-ui/components/toggle';\n\nimport { DialogComponent } from '../dialog.component';\n\n// Shape of the MAT_DIALOG_DATA this demo dialog is opened with (see\n// dialog-demo.component's extraData; keyboardOpen is always merged in by\n// DialogService.open). The booleans are required because ui-dialog's\n// matching inputs are strict `boolean`.\ninterface DialogCustomData {\n title?: string;\n type?: 'default' | 'custom-header' | 'footer-content' | 'disabled-primary-tooltip';\n showCloseButton: boolean;\n keyboardOpen: boolean;\n footerMessage?: string;\n primaryButtonTooltip?: string;\n}\n\n@Component({\n selector: 'ui-dialog-custom',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './dialog-custom.component.html',\n styleUrls: ['./dialog-custom.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [DialogComponent, ButtonComponent, ToggleComponent],\n})\nexport class DialogCustomComponent implements OnInit {\n canClose: () => boolean;\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Inject(MAT_DIALOG_DATA) protected data: DialogCustomData,\n private readonly cdr: ChangeDetectorRef\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.canClose = this.canCloseFalse.bind(this);\n setTimeout(() => {\n this.canClose = this.canCloseTrue.bind(this);\n // `canClose` is template-bound and swapped from a timer.\n this.cdr.markForCheck();\n }, 2000);\n }\n\n //canCloseFn @input demo with false value\n canCloseFalse(): boolean {\n return false;\n }\n\n //canCloseFn @input demo with true value\n canCloseTrue(): boolean {\n return true;\n }\n}\n","<ui-dialog\n [title]=\"data.title\"\n [showCloseButton]=\"data.showCloseButton\"\n [applicationTheme]=\"applicationTheme\"\n [primaryButtonLabel]=\"'OK'\"\n [secondaryButtonLabel]=\"'Cancel'\"\n [canCloseFn]=\"canClose\"\n [keyboardOpen]=\"data.keyboardOpen\"\n [footerMessage]=\"data.footerMessage\"\n [disablePrimaryButton]=\"data.type === 'disabled-primary-tooltip'\"\n [primaryButtonTooltip]=\"data.primaryButtonTooltip ?? ''\"\n>\n <!-- Custom header content -->\n @if (data.type === 'custom-header') {\n <div dialogHeader class=\"custom-header\">\n <div class=\"button-group\">\n <ui-button label=\"Action 1\" [variant]=\"'ghost'\" [applicationTheme]=\"applicationTheme\"></ui-button>\n <ui-button label=\"Action 2\" [variant]=\"'primary'\" [applicationTheme]=\"applicationTheme\"></ui-button>\n </div>\n </div>\n }\n\n <!-- Custom footer content projection -->\n @if (data.type === 'footer-content') {\n <ui-toggle dialogFooter label=\"Don't show this again\" [applicationTheme]=\"applicationTheme\"></ui-toggle>\n }\n\n <!-- Dialog content -->\n <div class=\"dialog-content\">\n @if (data.type === 'default') {\n <p class=\"dialog-message\">This is a default dialog example with a standard header.</p>\n }\n @if (data.type === 'custom-header') {\n <p class=\"dialog-message\">This dialog uses a custom header with content projection.</p>\n }\n @if (data.type === 'footer-content') {\n <p class=\"dialog-message\">\n This dialog projects a <code>ui-toggle</code> into the footer, to the left of the action buttons.\n </p>\n }\n @if (data.type === 'disabled-primary-tooltip') {\n <p class=\"dialog-message\">\n The primary button is disabled; hover it to see the tooltip explaining why the action is unavailable.\n </p>\n }\n <p class=\"dialog-message\">The dialog will be closeable in 2 seconds (demonstrating canCloseFn).</p>\n </div>\n</ui-dialog>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { ToggleComponentModule } from '@testgorilla/tgo-ui/components/toggle';\n\nimport { DialogComponentModule } from '../dialog.component.module';\n\nimport { DialogCustomComponent } from './dialog-custom.component';\n\n@NgModule({\n imports: [CommonModule, DialogComponentModule, ButtonComponentModule, ToggleComponentModule, DialogCustomComponent],\n exports: [DialogCustomComponent],\n})\nexport class DialogCustomComponentModule {}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testgorilla-tgo-ui-components-dialog.mjs","names":[],"sources":["../../../components/dialog/dialog.component.ts","../../../components/dialog/dialog.component.html","../../../components/dialog/dialog.service.ts","../../../components/dialog/dialog.component.module.ts","../../../components/dialog/confirm-dialog/confirm-dialog.component.ts","../../../components/dialog/confirm-dialog/confirm-dialog.component.html","../../../components/dialog/confirm-dialog/confirm-dialog.component.module.ts","../../../components/dialog/dialog-custom/dialog-custom.component.ts","../../../components/dialog/dialog-custom/dialog-custom.component.html","../../../components/dialog/dialog-custom/dialog-custom.component.module.ts"],"sourcesContent":["import { hasModifierKey } from '@angular/cdk/keycodes';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n HostBinding,\n Inject,\n inject,\n Input,\n input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n MAT_DIALOG_DATA,\n MatDialogRef,\n MatDialogState,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n} from '@angular/material/dialog';\nimport { filter } from 'rxjs';\n\nimport { ButtonComponent, ButtonColor, ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { TooltipComponent } from '@testgorilla/tgo-ui/components/tooltip';\n\n@Component({\n selector: 'ui-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatDialogTitle,\n TooltipComponent,\n ButtonComponent,\n CdkScrollable,\n MatDialogContent,\n MatDialogActions,\n AsyncPipe,\n UiTranslatePipe,\n ],\n})\nexport class DialogComponent implements OnInit, OnChanges, AfterViewInit {\n /**\n * Dialog title\n *\n * @memberof DialogComponent\n */\n @Input() title? = '';\n\n /**\n * Show close button\n *\n * @memberof DialogComponent\n */\n @Input() showCloseButton = true;\n\n /**\n * Fuction called before dialgo is closed\n *\n * @memberof DialogComponent\n */\n @Input() canCloseFn: () => boolean = () => true;\n\n /**\n * Secondary button label\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonLabel? = '';\n\n /**\n * Footer dialog message\n *\n * @memberof DialogComponent\n */\n @Input() footerMessage? = '';\n\n /**\n * Primary button label\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonLabel? = '';\n\n /**\n * Primary button icon name\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonIconName?: IconName | '' = '';\n\n /**\n * Secondary button type\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonType: ButtonColor = 'ghost';\n\n /**\n * Primary button type\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonType: ButtonColor = 'primary';\n\n /**\n * Primary button test id\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonDataTestId: string | null = null;\n\n @Input() testId: string | null = null;\n\n @Input() closeButtonTestId: string | null = null;\n\n @Input() closeButtonAriaLabel = '';\n\n /**\n * Secondary button test id\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonDataTestId: string | null = null;\n\n /**\n * Color of the dialog.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof DialogComponent\n */\n @HostBinding('style.--color')\n @Input()\n companyColor: string | null = '';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n /**\n *\n * Disable primary button\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() disablePrimaryButton = false;\n /**\n *\n * Show a spinner in place of the primary button label while the action runs.\n * Also disables the button, so a second click cannot fire\n * `primaryButtonClickEvent` while the first is still in flight.\n *\n * @memberof DialogComponent\n */\n primaryButtonLoading = input(false, { transform: booleanAttribute });\n /**\n *\n * Tooltip shown when hovering the primary button. Bound to a wrapper around the\n * button so it also shows while the button is disabled (a disabled button\n * receives no pointer events), e.g. to explain why the action is unavailable.\n *\n * @type {string}\n * @memberof DialogComponent\n */\n @Input() primaryButtonTooltip = '';\n /**\n *\n * Disable close button\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() disableClose = false;\n\n /**\n *\n * Disable button when canCloseFn is used\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() shouldDisableButtons = true;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof DialogComponent\n */\n @Input() ariaLabelledby = '';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof DialogComponent\n */\n @Input() ariaDescribedby = '';\n\n /**\n * Defines how modal was opened (with keyboard or not)\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() keyboardOpen = false;\n\n primaryButtonIconPosition = input<ButtonIconPosition>('left');\n\n @Output() closeEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() secondaryButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() primaryButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n @ViewChild('closeButton') closeButton: ButtonComponent;\n\n modalClosed = false;\n\n private readonly cdr = inject(ChangeDetectorRef);\n\n onEsc() {\n this.dismiss();\n }\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n public dialogRef: MatDialogRef<DialogComponent>,\n @Inject(MAT_DIALOG_DATA) private readonly data: { applicationTheme: ApplicationTheme }\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n // Not a host listener: focus can sit outside <ui-dialog>, e.g. on mat-dialog-container.\n // Optional call: MatDialogRef is stubbed as {} by DialogComponentModule, the stories and many consumer specs.\n this.dialogRef\n .keydownEvents?.()\n ?.pipe(\n filter(event => event.key === 'Escape' && !hasModifierKey(event)),\n takeUntilDestroyed()\n )\n .subscribe(() => this.onEsc());\n }\n\n disableButtons = false;\n protected readonly translationContext = 'DIALOG.';\n\n @ContentChild('dialogHeader')\n customHeader?: unknown;\n\n get hasCustomHeader(): boolean {\n return Boolean(this.customHeader);\n }\n\n ngOnInit(): void {\n this.areButtonsDisabled();\n if (this.data?.applicationTheme) {\n this.applicationTheme = this.data.applicationTheme;\n }\n if (this.applicationTheme !== 'classic') {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty companyColor falls back to the theme colour\n this.companyColor = this.companyColor || '#D410AA';\n } else {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty companyColor falls back to the theme colour\n this.companyColor = this.companyColor || '#46A997';\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['canCloseFn']) {\n this.dialogRef.disableClose = !this.canCloseFn();\n this.areButtonsDisabled();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.keyboardOpen) {\n setTimeout(() => {\n this.closeButton.buttonElement.focus('keyboard');\n }, 100);\n }\n }\n\n //Disable primary button when canClose is false\n areButtonsDisabled() {\n this.disableButtons = !this.canCloseFn() && this.shouldDisableButtons;\n }\n\n //Close modal\n dismiss(): void {\n if (this.canCloseFn()) {\n this.dialogRef.disableClose = false;\n this.dialogRef.close();\n this.modalClosed = true;\n this.cdr.markForCheck();\n }\n }\n\n onClose(event: Event): void {\n this.closeEvent.emit(event);\n this.modalClosed = true;\n }\n\n onSecondaryButtonClick(event: Event): void {\n this.secondaryButtonClickEvent.emit(event);\n }\n\n onPrimaryButtonClick(event: Event): void {\n this.primaryButtonClickEvent.emit(event);\n\n // The consumer may have closed the dialog with its own result. Closing again\n // would overwrite that result with undefined, and consumers read a missing\n // result as a cancel (ASM-157).\n if (this.dialogRef.getState() === MatDialogState.OPEN) {\n this.dismiss();\n }\n }\n}\n","<div class=\"dialog-container\" [attr.theme]=\"applicationTheme\" [attr.data-testid]=\"testId\">\n <div\n mat-dialog-title\n class=\"dialog-title\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"'labelledby'\"\n [attr.aria-describedby]=\"'ariaDescribedby'\"\n >\n <span [style.display]=\"'none'\" id=\"ariaDescribedby\">{{ ariaDescribedby }}</span>\n\n <!-- Default header content -->\n @if (!hasCustomHeader) {\n <h3 class=\"bold\" id=\"labelledby\">{{ title }}</h3>\n @if (showCloseButton) {\n <div>\n <ui-button\n #closeButton\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [companyColor]=\"applicationTheme === 'classic' ? '#000' : '#242424'\"\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"onClose($event)\"\n (buttonClickEvent)=\"dismiss()\"\n [testId]=\"closeButtonTestId\"\n [ariaLabel]=\"closeButtonAriaLabel || ('COMMON.CLOSE' | uiTranslate | async)!\"\n id=\"dialog-close-button\"\n ></ui-button>\n </div>\n }\n }\n\n <!-- Custom header content projection -->\n <ng-content select=\"[dialogHeader]\"></ng-content>\n </div>\n <mat-dialog-content>\n <ng-content></ng-content>\n </mat-dialog-content>\n @if (secondaryButtonLabel !== '' || primaryButtonLabel !== '') {\n <div mat-dialog-actions [class.dialog-action-w-message]=\"!!footerMessage\">\n @if (footerMessage) {\n <div class=\"actions-footer-message\">{{ footerMessage }}</div>\n }\n\n <!-- Projected footer content, rendered to the left of the action buttons -->\n <ng-content select=\"[dialogFooter]\"></ng-content>\n\n @if (!!secondaryButtonLabel) {\n <!-- Action-button ids stay on the ui-button wrappers: five tgo-qa-automation page objects descend from them. -->\n <ui-button\n [companyColor]=\"companyColor\"\n [variant]=\"secondaryButtonType\"\n [applicationTheme]=\"applicationTheme\"\n [label]=\"secondaryButtonLabel\"\n [attr.data-testid]=\"secondaryButtonDataTestId\"\n (click)=\"onSecondaryButtonClick($event)\"\n ></ui-button>\n }\n @if (!!primaryButtonLabel) {\n <!-- The tooltip wraps the button: a disabled ui-button receives no pointer\n events, so the tooltip must trigger from an enclosing element. -->\n <ui-tooltip\n class=\"primary-button-tooltip-trigger\"\n [message]=\"primaryButtonTooltip\"\n [applicationTheme]=\"applicationTheme\"\n >\n <ui-button\n [iconPosition]=\"primaryButtonIconPosition()\"\n [iconName]=\"primaryButtonIconName ? primaryButtonIconName : undefined\"\n [variant]=\"primaryButtonType\"\n [loading]=\"primaryButtonLoading()\"\n [ariaLabel]=\"primaryButtonLoading() ? primaryButtonLabel : ''\"\n [disabled]=\"disableButtons || disablePrimaryButton || primaryButtonLoading()\"\n [applicationTheme]=\"applicationTheme\"\n (click)=\"onPrimaryButtonClick($event)\"\n [label]=\"primaryButtonLabel\"\n [companyColor]=\"companyColor\"\n [attr.data-testid]=\"primaryButtonDataTestId\"\n ></ui-button>\n </ui-tooltip>\n }\n </div>\n }\n\n <!-- This is announcement for screen reader that dialog was closed-->\n <div aria-live=\"assertive\" role=\"alert\" style=\"position: absolute; left: -9999px\">\n @if (modalClosed) {\n <span>{{ 'DIALOG.CLOSED' | uiTranslate | async }}</span>\n }\n </div>\n</div>\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\nimport { DialogConfig } from './dialog.model';\n\nexport type DialogSize = 'small' | 'large' | 'x-large';\n@Injectable()\nexport class DialogService {\n constructor(\n private readonly matDialog: MatDialog,\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors MatDialog.open<T, D = any, R = any>: untyped-by-default data/result types for consumer ergonomics\n open<K = any, R = any, T = any>(\n dialogComponent: ComponentType<T>,\n dialogConfig?: DialogConfig<K>\n ): MatDialogRef<T, R> {\n const {\n applicationTheme = 'light',\n size = 'small',\n panelClass = '',\n extraData = {},\n backdropClass = '',\n keyboardOpen = false,\n config = {},\n } = dialogConfig ?? {};\n // Open the dialog using UI custom styles\n return this.matDialog.open(dialogComponent, {\n ...config,\n data: {\n applicationTheme: this.defaultAppTheme ?? applicationTheme,\n ...extraData,\n keyboardOpen,\n },\n backdropClass: backdropClass || '',\n panelClass:\n applicationTheme === 'classic'\n ? ['ui-dialog-wrapper', panelClass, size]\n : ['ui-dialog-wrapper', panelClass, applicationTheme, size],\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\nimport { DialogComponent } from './dialog.component';\nimport { DialogService } from './dialog.service';\n\n@NgModule({\n imports: [CommonModule, MatDialogModule, ButtonComponentModule, UiTranslatePipe, DialogComponent],\n exports: [DialogComponent],\n providers: [{ provide: MAT_DIALOG_DATA, useValue: {} }, { provide: MatDialogRef, useValue: {} }, DialogService],\n})\nexport class DialogComponentModule {}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { ButtonColor, ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme, LanguageService, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\n\nimport { DialogComponent } from '../dialog.component';\n\nimport { ConfirmDialogData } from './confirm-dialog.model';\n\n@Component({\n selector: 'ui-confirm-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss'],\n imports: [DialogComponent, AsyncPipe, UiTranslatePipe],\n})\nexport class ConfirmDialogComponent {\n confirmMessage: string | undefined;\n confirmButtonText: string | undefined;\n cancelButtonText: string | undefined;\n title: string | undefined;\n lang = LanguageService.defaultLanguage;\n confirmMessageHtml: string | undefined;\n showCloseButton = false;\n showSecondaryButton = true;\n color: string | null;\n primaryButtonType: ButtonColor;\n secondaryButtonType: ButtonColor;\n primaryButtonIconName: IconName | undefined;\n primaryButtonDataTestId = 'confirm-dialog.confirm-button';\n secondaryButtonDataTestId = 'confirm-dialog.cancel-button';\n primaryButtonIconPosition: ButtonIconPosition;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n public dialogRef: MatDialogRef<ConfirmDialogComponent>,\n @Inject(MAT_DIALOG_DATA) private readonly data: ConfirmDialogData\n ) {\n this.confirmMessage = data.message;\n this.confirmButtonText = data.confirmButtonText;\n this.cancelButtonText = data.cancelButtonText;\n this.title = data.title;\n this.lang = data.language ?? LanguageService.defaultLanguage;\n this.confirmMessageHtml = data.messageHtml ?? undefined;\n this.showCloseButton = data.showCloseButton ?? false;\n this.showSecondaryButton = data.showSecondaryButton ?? true;\n this.color = data.color ?? null;\n this.primaryButtonType = data.primaryButtonType ?? 'primary';\n this.secondaryButtonType = data.secondaryButtonType ?? 'ghost';\n this.primaryButtonIconName = data.primaryButtonIconName ?? undefined;\n this.primaryButtonDataTestId = data.primaryButtonDataTestId ?? 'confirm-dialog.confirm-button';\n this.secondaryButtonDataTestId = data.secondaryButtonDataTestId ?? 'confirm-dialog.cancel-button';\n this.primaryButtonIconPosition = data.primaryButtonIconPosition ?? 'left';\n\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n onConfirm(): void {\n if (this.data.onConfirm) {\n this.data.onConfirm();\n }\n this.dialogRef.close(true);\n }\n}\n","<ng-container>\n <ui-dialog\n [title]=\"title ?? ('COMMON.CONFIRM' | uiTranslate | async)!\"\n [primaryButtonLabel]=\"confirmButtonText ?? ('COMMON.YES' | uiTranslate | async)!\"\n [secondaryButtonLabel]=\"\n showSecondaryButton ? (cancelButtonText ?? ('COMMON.CANCEL' | uiTranslate | async)!) : undefined\n \"\n (primaryButtonClickEvent)=\"onConfirm()\"\n (secondaryButtonClickEvent)=\"dialogRef.close(false)\"\n (closeEvent)=\"dialogRef.close(null)\"\n [primaryButtonType]=\"primaryButtonType\"\n [primaryButtonIconName]=\"primaryButtonIconName\"\n [secondaryButtonType]=\"secondaryButtonType\"\n [applicationTheme]=\"applicationTheme\"\n [showCloseButton]=\"showCloseButton\"\n [companyColor]=\"color\"\n [primaryButtonDataTestId]=\"primaryButtonDataTestId\"\n [secondaryButtonDataTestId]=\"secondaryButtonDataTestId\"\n [primaryButtonIconPosition]=\"primaryButtonIconPosition\"\n >\n <div class=\"message\">{{ confirmMessage }}</div>\n @if (confirmMessageHtml) {\n <div class=\"message\" [innerHTML]=\"confirmMessageHtml\"></div>\n }\n </ui-dialog>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\nimport { DialogComponentModule } from '../dialog.component.module';\n\nimport { ConfirmDialogComponent } from './confirm-dialog.component';\n\n@NgModule({\n exports: [ConfirmDialogComponent],\n providers: [\n { provide: MAT_DIALOG_DATA, useValue: {} },\n { provide: MatDialogRef, useValue: {} },\n ],\n imports: [\n CommonModule,\n MatDialogModule,\n ButtonComponentModule,\n DialogComponentModule,\n UiTranslatePipe,\n ConfirmDialogComponent,\n ],\n})\nexport class ConfirmDialogComponentModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input,\n OnInit,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { ButtonComponent } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { ToggleComponent } from '@testgorilla/tgo-ui/components/toggle';\n\nimport { DialogComponent } from '../dialog.component';\n\n// Shape of the MAT_DIALOG_DATA this demo dialog is opened with (see\n// dialog-demo.component's extraData; keyboardOpen is always merged in by\n// DialogService.open). The booleans are required because ui-dialog's\n// matching inputs are strict `boolean`.\ninterface DialogCustomData {\n title?: string;\n type?: 'default' | 'custom-header' | 'footer-content' | 'disabled-primary-tooltip';\n showCloseButton: boolean;\n keyboardOpen: boolean;\n footerMessage?: string;\n primaryButtonTooltip?: string;\n}\n\n@Component({\n selector: 'ui-dialog-custom',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './dialog-custom.component.html',\n styleUrls: ['./dialog-custom.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [DialogComponent, ButtonComponent, ToggleComponent],\n})\nexport class DialogCustomComponent implements OnInit {\n canClose: () => boolean;\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Inject(MAT_DIALOG_DATA) protected data: DialogCustomData,\n private readonly cdr: ChangeDetectorRef\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.canClose = this.canCloseFalse.bind(this);\n setTimeout(() => {\n this.canClose = this.canCloseTrue.bind(this);\n // `canClose` is template-bound and swapped from a timer.\n this.cdr.markForCheck();\n }, 2000);\n }\n\n //canCloseFn @input demo with false value\n canCloseFalse(): boolean {\n return false;\n }\n\n //canCloseFn @input demo with true value\n canCloseTrue(): boolean {\n return true;\n }\n}\n","<ui-dialog\n [title]=\"data.title\"\n [showCloseButton]=\"data.showCloseButton\"\n [applicationTheme]=\"applicationTheme\"\n [primaryButtonLabel]=\"'OK'\"\n [secondaryButtonLabel]=\"'Cancel'\"\n [canCloseFn]=\"canClose\"\n [keyboardOpen]=\"data.keyboardOpen\"\n [footerMessage]=\"data.footerMessage\"\n [disablePrimaryButton]=\"data.type === 'disabled-primary-tooltip'\"\n [primaryButtonTooltip]=\"data.primaryButtonTooltip ?? ''\"\n>\n <!-- Custom header content -->\n @if (data.type === 'custom-header') {\n <div dialogHeader class=\"custom-header\">\n <div class=\"button-group\">\n <ui-button label=\"Action 1\" [variant]=\"'ghost'\" [applicationTheme]=\"applicationTheme\"></ui-button>\n <ui-button label=\"Action 2\" [variant]=\"'primary'\" [applicationTheme]=\"applicationTheme\"></ui-button>\n </div>\n </div>\n }\n\n <!-- Custom footer content projection -->\n @if (data.type === 'footer-content') {\n <ui-toggle dialogFooter label=\"Don't show this again\" [applicationTheme]=\"applicationTheme\"></ui-toggle>\n }\n\n <!-- Dialog content -->\n <div class=\"dialog-content\">\n @if (data.type === 'default') {\n <p class=\"dialog-message\">This is a default dialog example with a standard header.</p>\n }\n @if (data.type === 'custom-header') {\n <p class=\"dialog-message\">This dialog uses a custom header with content projection.</p>\n }\n @if (data.type === 'footer-content') {\n <p class=\"dialog-message\">\n This dialog projects a <code>ui-toggle</code> into the footer, to the left of the action buttons.\n </p>\n }\n @if (data.type === 'disabled-primary-tooltip') {\n <p class=\"dialog-message\">\n The primary button is disabled; hover it to see the tooltip explaining why the action is unavailable.\n </p>\n }\n <p class=\"dialog-message\">The dialog will be closeable in 2 seconds (demonstrating canCloseFn).</p>\n </div>\n</ui-dialog>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { ToggleComponentModule } from '@testgorilla/tgo-ui/components/toggle';\n\nimport { DialogComponentModule } from '../dialog.component.module';\n\nimport { DialogCustomComponent } from './dialog-custom.component';\n\n@NgModule({\n imports: [CommonModule, DialogComponentModule, ButtonComponentModule, ToggleComponentModule, DialogCustomComponent],\n exports: [DialogCustomComponent],\n})\nexport class DialogCustomComponentModule {}\n"],"mappings":"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"}
|
|
@@ -264,7 +264,7 @@ var FieldComponent = class FieldComponent {
|
|
|
264
264
|
publicName: "value",
|
|
265
265
|
isSignal: false,
|
|
266
266
|
isRequired: false,
|
|
267
|
-
transformFunction:
|
|
267
|
+
transformFunction: (value) => value ?? ""
|
|
268
268
|
},
|
|
269
269
|
badgeVariant: {
|
|
270
270
|
classPropertyName: "badgeVariant",
|
|
@@ -811,7 +811,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
811
811
|
required: false
|
|
812
812
|
}]
|
|
813
813
|
}],
|
|
814
|
-
value: [{
|
|
814
|
+
value: [{
|
|
815
|
+
type: Input,
|
|
816
|
+
args: [{ transform: (value) => value ?? "" }]
|
|
817
|
+
}],
|
|
815
818
|
badgeVariant: [{ type: Input }],
|
|
816
819
|
errors: [{ type: Input }],
|
|
817
820
|
disabled: [{ type: Input }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testgorilla-tgo-ui-components-field.mjs","names":[],"sources":["../../../components/field/field.component.ts","../../../components/field/field.component.html","../../../components/field/field.component.module.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { NgStyle, NgClass, AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n input,\n Input,\n NgZone,\n OnInit,\n Output,\n ProviderToken,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatFormField, MatLabel, MatPrefix, MatHint } from '@angular/material/form-field';\nimport { MatIconRegistry, MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { BadgeVariant, BadgeComponent } from '@testgorilla/tgo-ui/components/badge';\nimport { ButtonComponent } from '@testgorilla/tgo-ui/components/button';\nimport {\n ApplicationTheme,\n DigitsOnlyDirective,\n UiTranslatePipe,\n HasValidationErrorPipe,\n} from '@testgorilla/tgo-ui/components/core';\nimport { IconName, IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ValidationErrorModule } from '@testgorilla/tgo-ui/components/validation-error';\n\nimport { FieldType } from './field.model';\n\n/**\n * A global counter used to generate unique field IDs.\n * This variable is incremented each time a new field ID is needed.\n *\n * @remarks\n * This is primarily used to ensure that each field component\n * has a unique identifier within the application / useful for their Aria Labels.\n */\nlet fieldID = 0;\n\n@Component({\n selector: 'ui-field',\n templateUrl: './field.component.html',\n styleUrls: ['./field.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormField,\n NgStyle,\n NgClass,\n MatLabel,\n IconComponentModule,\n MatIcon,\n MatPrefix,\n MatInput,\n DigitsOnlyDirective,\n CdkTextareaAutosize,\n ButtonComponent,\n MatHint,\n ValidationErrorModule,\n BadgeComponent,\n AsyncPipe,\n UiTranslatePipe,\n HasValidationErrorPipe,\n ],\n})\nexport class FieldComponent implements OnInit, ControlValueAccessor, DoCheck, AfterViewInit {\n @HostBinding() class = 'ui-field';\n\n /**\n * Indicator of the autocomplete width\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @HostBinding('class.full-width')\n @Input()\n fullWidth = true;\n\n /**\n * Indicator of the field height\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @HostBinding('class.full-height')\n @Input()\n fullHeight = false;\n\n /**\n * Form field label\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() label? = '';\n\n /**\n * Form field label from html\n *\n * @memberof FieldComponent\n */\n labelHtml = input<string | null>(null);\n\n /**\n * Icon to display alongside the label\n *\n * @type {IconName}\n * @memberof FieldComponent\n */\n @Input() labelIcon?: IconName;\n\n /**\n * Input name attribute\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() fieldName?: string;\n\n /**\n * Input placeholder\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() placeholder? = '';\n\n /**\n * Input id\n *\n * @type {string}\n * @memberof FieldComponent\n */\n id = input(`field-${fieldID++}`);\n\n /**\n * Input value\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() value = '';\n\n /**\n * Variant of badge to use\n *\n * @type {BadgeVariant}\n * @memberof FieldComponent\n */\n @Input() badgeVariant?: BadgeVariant | undefined;\n\n _errors: string[];\n /**\n * Input field errors\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() set errors(errors: string[]) {\n this._errors = errors?.filter(Boolean) ?? [];\n this.errorsLength = this.setErrorsLength();\n }\n\n /**\n * Determines if input is disabled\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() disabled: boolean;\n\n /**\n * Input is required or not\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() required: boolean;\n\n /**\n * Input is readonly or not\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() readOnly = false;\n\n /**\n * Hint text\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() hintMessage = '';\n\n /**\n * Input type\n *\n * @type {FieldType}\n * @memberof FieldComponent\n */\n @HostBinding('attr.field-class')\n @Input()\n type: FieldType = 'text';\n\n /**\n * Input is update only on blur\n *\n * @type {Boolean}\n * @memberof FieldComponent\n */\n @Input() updateOnBlur = false;\n\n /**\n * allow only digits in input\n *\n * @type {Boolean}\n * @memberof FieldComponent\n */\n @Input() allowOnlyDigits = false;\n\n /**\n * allow autocomplete off in input\n *\n * @type {Boolean}\n * @memberof FieldComponent\n */\n @Input() isAutocompleteOff = false;\n\n /**\n * allow negative numbers\n *\n * @type {Boolean}\n * @memberof FieldComponent\n */\n @Input() allowNegative = true;\n\n /**\n * Show reserved content below form field\n * @property showBottomContent\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() showBottomContent = true;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof FieldComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() ariaLabel: string;\n\n readonly testId = input<string | null>(null);\n\n protected readonly clearTestId = computed(() => (this.testId() ? `${this.testId()}-clear` : null));\n\n protected readonly passwordToggleTestId = computed(() => (this.testId() ? `${this.testId()}-visibility` : null));\n\n /**\n * Show loading button. Only for text\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() loading = false;\n\n /**\n * Show icon when field is valid\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() isValid = false;\n\n /**\n * Max characters number\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() maxCharacters = 255;\n\n /**\n * Trim text on blur\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() trimOnBlur = false;\n /**\n * Trim text on submit\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() trimOnSubmit = false;\n /**\n * Max rows for multi-line type\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() maxRows = 0;\n /**\n * has text area counter\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() hasTextAreaCounter = true;\n\n /**\n * Hide in build errors for Reactive Forms\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() hideBuiltInErrors = false;\n\n /**\n * Hide label in errors\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() hideLabelInErrors = false;\n\n /**\n * Set maximum number\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() max: number | undefined;\n\n /**\n * Set minimum number\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() min: number | undefined;\n\n /**\n * Sets textarea height. Default 110\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() textareaHeight = 110;\n\n /**\n * Sets textarea borderless. Default false\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() borderless = false;\n\n @Input() autosizableTextarea = false;\n\n /**\n * Indicates if this field is filled by AI\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() isAIVariant = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used for input field Aria Labeled By Element Id.\n * @type {string}\n * @memberof FieldComponent\n */\n protected readonly ariaLabelledbyId = computed(() => `${this.id()}-labeledBy`);\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used for input field Aria LabeledBy Text.\n * @type {string}\n * @memberof FieldComponent\n */\n protected readonly ariaLabelledby = input<string | undefined>(undefined);\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used for input field Aria Described By Element Id.\n * @type {string}\n * @memberof FieldComponent\n */\n protected readonly ariaDescribedbyId = computed(() => `${this.id()}-describedBy`);\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used for input field Aria DescribedBy Text.\n * @type {string}\n * @memberof FieldComponent\n */\n readonly ariaDescribedby = input<string | undefined>(undefined);\n\n /**\n * Show state of error\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() hasError = false;\n\n @Output() validateEvent = new EventEmitter<string>();\n @Output() fieldBlur = new EventEmitter<void>();\n\n @ViewChild('inputElement', { read: ElementRef }) field: ElementRef<HTMLInputElement>;\n @ViewChild('autosize') autosize: CdkTextareaAutosize;\n\n get getPasswordIcon(): IconName {\n if (this.applicationTheme === 'classic') {\n return this.showPassword ? 'Eye-hide' : 'Eye-view';\n } else {\n if (!this.isActiveField && !this.isActiveHover) {\n return this.showPassword ? 'View-in-line' : 'Hide-in-line';\n } else {\n return this.showPassword ? 'View-filled' : 'Hide-filled';\n }\n }\n }\n\n isActiveField = false;\n isActiveHover = false;\n\n keyboardFocused = signal(false);\n\n protected readonly translationContext = 'FIELD.';\n\n /**\n * @ignore\n */\n onChange: (value: string | number) => void = () => {};\n\n /**\n * @ignore\n */\n onTouch = () => {};\n\n private readonly defaultAppTheme = inject(\n 'CANOPYUI_DEFAULT_APPLICATION_THEME' as unknown as ProviderToken<ApplicationTheme>,\n {\n optional: true,\n }\n );\n private readonly matIconRegistry = inject(MatIconRegistry);\n private readonly domSanitizer = inject(DomSanitizer);\n private readonly cdr = inject(ChangeDetectorRef);\n public ngControl = inject(NgControl, { optional: true, self: true });\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n if (this.defaultAppTheme) {\n this.applicationTheme = this.defaultAppTheme;\n }\n\n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngAfterViewInit(): void {\n this.focusMonitor\n .monitor(this.field)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin =>\n this.ngZone.run(() => {\n queueMicrotask(() => {\n this.keyboardFocused.set(origin === 'keyboard');\n });\n })\n );\n\n if (this.type === 'multi-line') {\n this.autosize.resizeToFitContent(true);\n }\n }\n\n /**\n * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors\n * to display validation errors that might happen (e.g. required)\n */\n ngDoCheck(): void {\n if (this.ngControl?.touched || this.ngControl?.errors) {\n this.cdr.markForCheck();\n }\n }\n\n showClose: boolean;\n showPassword: boolean;\n currentType: string;\n errorsLength: boolean;\n\n ngOnInit(): void {\n this.setSearchInput();\n this.currentType = this.getType();\n }\n\n validate(): void {\n this.validateEvent.emit(this.value);\n }\n\n //set search input initial value\n setSearchInput(): void {\n if (this.type === 'search' || this.type === 'collapsed-search') {\n // eslint-disable-next-line no-restricted-syntax -- SECURITY: hardcoded first-party asset URL; MatIconRegistry.addSvgIcon requires SafeResourceUrl.\n this.matIconRegistry.addSvgIcon('Search', this.domSanitizer.bypassSecurityTrustResourceUrl('/icons/Search.svg'));\n if (this.value) {\n this.showClose = true;\n } else {\n this.showClose = false;\n }\n } else {\n this.showClose = false;\n }\n }\n\n //change type for reveal password\n getType(): string {\n if (this.type === 'password' && this.showPassword) {\n return 'text';\n }\n return this.type;\n }\n\n //Clear input value\n clearValue(): void {\n this.value = '';\n this.onChange(this.value);\n this.onChangeInputSearch();\n }\n\n //toggle for password\n showPasswordClick() {\n this.showPassword = !this.showPassword;\n this.currentType = this.getType();\n }\n\n //Set options for search input\n onChangeInputSearch() {\n if (this.type === 'search' || this.type === 'collapsed-search') {\n if (!this.value) {\n this.showClose = false;\n }\n if (this.value) {\n this.showClose = true;\n }\n }\n }\n\n // Set errors length for validation\n // Consider only those errors which which are not empty\n setErrorsLength(): boolean {\n if (this._errors) {\n return this._errors.filter(err => Boolean(err)).length > 0 ? true : false;\n }\n return false;\n }\n\n //Save input value\n onInput(event: Event) {\n this.value = (event.target as HTMLInputElement | HTMLTextAreaElement).value;\n this.errorsLength = this.setErrorsLength();\n if (!this.updateOnBlur) {\n this.onTouch();\n }\n if (this.allowOnlyDigits && !this.allowNegative && Number(this.value) < 0) {\n this.value = '0';\n } else {\n this.onChange(this.type === 'number' && this.value !== '' ? Number(this.value) : this.value);\n }\n }\n\n writeValue(value?: string | number): void {\n if (value !== null && value !== undefined) {\n // The internal <input> value is always a string; a numeric form value\n // renders identically once assigned (the input coerces it anyway).\n this.value = String(value);\n } else {\n this.value = '';\n }\n this.onChangeInputSearch();\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string | number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onActive(state: boolean, action: string): void {\n if (action === 'hover') {\n this.isActiveHover = state;\n } else if (action === 'focus') {\n this.isActiveField = state;\n\n if (!state && this.trimOnBlur) {\n this.clearSpace();\n }\n }\n }\n\n onSubmit(): void {\n if (this.trimOnSubmit) {\n this.clearSpace();\n }\n }\n\n private clearSpace(): void {\n this.value = this.value.trim();\n this.onChange(this.value);\n }\n\n onBlur(): void {\n this.fieldBlur.emit();\n }\n\n trackByFn = (index: number, value: string) => value;\n\n focus(): void {\n this.field.nativeElement.focus();\n }\n\n refocusPasswordButton(btn: ButtonComponent) {\n setTimeout(() => {\n btn.focus('keyboard');\n }, 0);\n }\n}\n","<ng-container>\n <mat-form-field\n [ngStyle]=\"{\n '--textarea-height': textareaHeight - 10 + 'px',\n '--textarea-height-container': textareaHeight + 'px',\n }\"\n #uiField\n appearance=\"outline\"\n hideRequiredMarker=\"true\"\n [color]=\"errorsLength || (ngControl?.errors && ngControl?.touched) || hasError ? 'warn' : 'accent'\"\n [ngClass]=\"{\n 'hide-bottom-content': !showBottomContent,\n textarea: type === 'textarea' || type === 'textarea-scrollable',\n 'textarea-scrollable': type === 'textarea-scrollable',\n 'multi-line': type === 'multi-line',\n 'multi-line-textarea': type === 'multi-line' && autosizableTextarea && borderless,\n 'keyboard-focused': keyboardFocused(),\n 'has-label': !!label,\n 'has-value': !!value,\n 'text-area-borderless': borderless && (type === 'textarea' || type === 'textarea-scrollable'),\n }\"\n (mouseenter)=\"onActive(true, 'hover')\"\n (mouseleave)=\"onActive(false, 'hover')\"\n >\n <span [style.display]=\"'none'\" [id]=\"ariaDescribedbyId()\">\n @if (required) {\n <span>{{ 'ERRORS.REQUIRED' | uiTranslate | async }}</span>\n }\n {{ ariaDescribedby() }}\n </span>\n <span [style.display]=\"'none'\" [id]=\"ariaLabelledbyId()\">\n {{ ariaLabelledby() ?? label }}\n </span>\n @if (\n (label || labelHtml()) &&\n ((type !== 'search' && applicationTheme === 'classic') || applicationTheme !== 'classic')\n ) {\n <mat-label class=\"label-with-icon\">\n @if (isAIVariant || labelIcon) {\n <ui-icon [name]=\"isAIVariant ? 'Sparkle-in-line' : labelIcon!\" [size]=\"'16'\" class=\"label-icon\"></ui-icon>\n }\n <span>\n @if (labelHtml()) {\n <span [innerHTML]=\"labelHtml()\"></span>\n } @else {\n {{ label }}\n }\n @if (required) {\n <span>*</span>\n }\n </span>\n </mat-label>\n }\n @if (type === 'search' || type === 'collapsed-search') {\n <mat-icon matIconPrefix class=\"search-icon\" [svgIcon]=\"'Search'\"></mat-icon>\n }\n @if (type !== 'textarea' && type !== 'textarea-scrollable' && type !== 'multi-line') {\n <input\n [attr.data-testid]=\"testId() ?? 'field-input'\"\n [readonly]=\"readOnly\"\n matInput\n #inputElement\n (blur)=\"onTouch(); onActive(false, 'focus'); onBlur()\"\n (input)=\"onInput($event)\"\n [id]=\"id()\"\n (keyup)=\"onChangeInputSearch()\"\n [placeholder]=\"placeholder!\"\n [value]=\"value\"\n [disabled]=\"disabled || loading\"\n [type]=\"currentType\"\n (keyup.enter)=\"onSubmit()\"\n [max]=\"max\"\n [min]=\"min\"\n [name]=\"fieldName!\"\n [required]=\"required\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-invalid]=\"errorsLength || (ngControl?.errors && ngControl?.touched) || hasError\"\n [attr.aria-labelledby]=\"ariaLabelledbyId()\"\n [attr.aria-describedby]=\"ariaDescribedbyId()\"\n role=\"textbox\"\n digitsOnly\n [autocomplete]=\"isAutocompleteOff ? 'off' : 'on'\"\n [allowOnlyDigits]=\"allowOnlyDigits\"\n [allowNegative]=\"allowNegative\"\n (focusin)=\"onActive(true, 'focus')\"\n />\n } @else {\n <textarea\n [attr.data-testid]=\"testId()\"\n matInput\n #inputElement\n #autosize=\"cdkTextareaAutosize\"\n [readonly]=\"readOnly\"\n (blur)=\"onTouch(); onActive(false, 'focus'); onBlur()\"\n (input)=\"onInput($event)\"\n [id]=\"id()\"\n (keyup)=\"onChangeInputSearch()\"\n (keyup.enter)=\"onSubmit()\"\n [placeholder]=\"placeholder!\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"fieldName!\"\n [required]=\"required\"\n [attr.aria-label]=\"!label ? ariaLabel : ''\"\n [attr.aria-invalid]=\"errorsLength || (ngControl?.errors && ngControl?.touched) || hasError\"\n [attr.aria-labelledby]=\"ariaLabelledbyId()\"\n [attr.aria-describedby]=\"ariaDescribedbyId()\"\n role=\"textbox\"\n [cdkTextareaAutosize]=\"type === 'multi-line'\"\n [cdkAutosizeMinRows]=\"type === 'multi-line' ? 1 : 5\"\n [cdkAutosizeMaxRows]=\"type === 'multi-line' ? maxRows : 5\"\n [attr.maxlength]=\"maxCharacters\"\n (focusin)=\"onActive(true, 'focus')\"\n ></textarea>\n }\n\n @if (type === 'search' || type === 'collapsed-search' || type === 'password' || type === 'validation-text') {\n <div class=\"options\">\n <div class=\"options-container\">\n @if (showClose) {\n <ui-button\n variant=\"secondary\"\n [justIcon]=\"true\"\n class=\"close\"\n iconName=\"Close\"\n [label]=\"('COMMON.CLEAR' | uiTranslate | async)!\"\n (buttonClickEvent)=\"clearValue()\"\n [ariaLabel]=\"ariaLabel + '--' + ('COMMON.CLEAR' | uiTranslate | async)\"\n [testId]=\"clearTestId()\"\n ></ui-button>\n }\n @if (type === 'password') {\n <ui-button\n class=\"password\"\n variant=\"secondary\"\n [tooltip]=\"((showPassword ? 'FIELD.HIDE_PASSWORD' : 'FIELD.SHOW_PASSWORD') | uiTranslate | async)!\"\n [justIcon]=\"true\"\n role=\"switch\"\n [attr.aria-checked]=\"showPassword\"\n [iconName]=\"getPasswordIcon\"\n [applicationTheme]=\"applicationTheme\"\n [testId]=\"passwordToggleTestId()\"\n (click)=\"showPasswordClick()\"\n #btn\n (keydown.enter)=\"refocusPasswordButton(btn)\"\n (keydown.space)=\"refocusPasswordButton(btn)\"\n ></ui-button>\n }\n @if (\n type === 'validation-text' && (applicationTheme === 'dark' || applicationTheme === 'light') && value.length\n ) {\n @if (!isValid) {\n <ui-button\n class=\"validation\"\n [variant]=\"'text'\"\n [applicationTheme]=\"'light'\"\n [label]=\"'Validate'\"\n [loading]=\"loading\"\n (click)=\"validate()\"\n [disabled]=\"disabled\"\n [size]=\"'small'\"\n ></ui-button>\n }\n @if (isValid) {\n <ui-icon class=\"valid\" [color]=\"'white'\" applicationTheme=\"light\" [name]=\"'Check'\"></ui-icon>\n }\n }\n </div>\n </div>\n }\n @if (\n hasTextAreaCounter &&\n (type === 'textarea' || type === 'textarea-scrollable') &&\n !errorsLength &&\n !($safeNavigationMigration(ngControl?.errors) | hasValidationError)\n ) {\n <mat-hint class=\"info\">{{ value.length }} / {{ maxCharacters }}</mat-hint>\n }\n\n @if (\n hintMessage &&\n !errorsLength &&\n !($safeNavigationMigration(ngControl?.errors) | hasValidationError) &&\n type !== 'textarea' &&\n type !== 'textarea-scrollable'\n ) {\n <mat-hint class=\"info\">{{ hintMessage }}</mat-hint>\n }\n\n @if (errorsLength || ($safeNavigationMigration(ngControl?.errors) | hasValidationError)) {\n <mat-hint class=\"error\">\n @if (errorsLength) {\n @for (error of _errors; track trackByFn($index, error)) {\n <div class=\"errors\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n }\n }\n @if (ngControl && !hideBuiltInErrors) {\n <ui-validation-error [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : label\"></ui-validation-error>\n }\n </mat-hint>\n }\n\n @if (badgeVariant) {\n <ui-badge class=\"field-badge\" [variant]=\"badgeVariant\"></ui-badge>\n }\n </mat-form-field>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { DigitsOnlyDirective, UiTranslatePipe, HasValidationErrorPipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ValidationErrorModule } from '@testgorilla/tgo-ui/components/validation-error';\n\nimport { FieldComponent } from './field.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n IconComponentModule,\n FormsModule,\n ReactiveFormsModule,\n ButtonComponentModule,\n MatIconModule,\n UiTranslatePipe,\n ValidationErrorModule,\n HasValidationErrorPipe,\n DigitsOnlyDirective,\n BadgeComponentModule,\n FieldComponent,\n ],\n exports: [FieldComponent],\n})\nexport class FieldComponentModule {}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testgorilla-tgo-ui-components-field.mjs","names":[],"sources":["../../../components/field/field.component.ts","../../../components/field/field.component.html","../../../components/field/field.component.module.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { NgStyle, NgClass, AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n input,\n Input,\n NgZone,\n OnInit,\n Output,\n ProviderToken,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatFormField, MatLabel, MatPrefix, MatHint } from '@angular/material/form-field';\nimport { MatIconRegistry, MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { BadgeVariant, BadgeComponent } from '@testgorilla/tgo-ui/components/badge';\nimport { ButtonComponent } from '@testgorilla/tgo-ui/components/button';\nimport {\n ApplicationTheme,\n DigitsOnlyDirective,\n UiTranslatePipe,\n HasValidationErrorPipe,\n} from '@testgorilla/tgo-ui/components/core';\nimport { IconName, IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ValidationErrorModule } from '@testgorilla/tgo-ui/components/validation-error';\n\nimport { FieldType } from './field.model';\n\n/**\n * A global counter used to generate unique field IDs.\n * This variable is incremented each time a new field ID is needed.\n *\n * @remarks\n * This is primarily used to ensure that each field component\n * has a unique identifier within the application / useful for their Aria Labels.\n */\nlet fieldID = 0;\n\n@Component({\n selector: 'ui-field',\n templateUrl: './field.component.html',\n styleUrls: ['./field.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormField,\n NgStyle,\n NgClass,\n MatLabel,\n IconComponentModule,\n MatIcon,\n MatPrefix,\n MatInput,\n DigitsOnlyDirective,\n CdkTextareaAutosize,\n ButtonComponent,\n MatHint,\n ValidationErrorModule,\n BadgeComponent,\n AsyncPipe,\n UiTranslatePipe,\n HasValidationErrorPipe,\n ],\n})\nexport class FieldComponent implements OnInit, ControlValueAccessor, DoCheck, AfterViewInit {\n @HostBinding() class = 'ui-field';\n\n /**\n * Indicator of the autocomplete width\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @HostBinding('class.full-width')\n @Input()\n fullWidth = true;\n\n /**\n * Indicator of the field height\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @HostBinding('class.full-height')\n @Input()\n fullHeight = false;\n\n /**\n * Form field label\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() label? = '';\n\n /**\n * Form field label from html\n *\n * @memberof FieldComponent\n */\n labelHtml = input<string | null>(null);\n\n /**\n * Icon to display alongside the label\n *\n * @type {IconName}\n * @memberof FieldComponent\n */\n @Input() labelIcon?: IconName;\n\n /**\n * Input name attribute\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() fieldName?: string;\n\n /**\n * Input placeholder\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() placeholder? = '';\n\n /**\n * Input id\n *\n * @type {string}\n * @memberof FieldComponent\n */\n id = input(`field-${fieldID++}`);\n\n /**\n * Input value\n *\n * @type {string}\n * @memberof FieldComponent\n */\n // A template `a?.b` binding yields `undefined` since Angular 22 (it was `null`). Either one means an empty field.\n @Input({ transform: (value: string | null | undefined): string => value ?? '' }) value = '';\n\n /**\n * Variant of badge to use\n *\n * @type {BadgeVariant}\n * @memberof FieldComponent\n */\n @Input() badgeVariant?: BadgeVariant | undefined;\n\n _errors: string[];\n /**\n * Input field errors\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() set errors(errors: string[]) {\n this._errors = errors?.filter(Boolean) ?? [];\n this.errorsLength = this.setErrorsLength();\n }\n\n /**\n * Determines if input is disabled\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() disabled: boolean;\n\n /**\n * Input is required or not\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() required: boolean;\n\n /**\n * Input is readonly or not\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() readOnly = false;\n\n /**\n * Hint text\n *\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() hintMessage = '';\n\n /**\n * Input type\n *\n * @type {FieldType}\n * @memberof FieldComponent\n */\n @HostBinding('attr.field-class')\n @Input()\n type: FieldType = 'text';\n\n /**\n * Input is update only on blur\n *\n * @type {Boolean}\n * @memberof FieldComponent\n */\n @Input() updateOnBlur = false;\n\n /**\n * allow only digits in input\n *\n * @type {Boolean}\n * @memberof FieldComponent\n */\n @Input() allowOnlyDigits = false;\n\n /**\n * allow autocomplete off in input\n *\n * @type {Boolean}\n * @memberof FieldComponent\n */\n @Input() isAutocompleteOff = false;\n\n /**\n * allow negative numbers\n *\n * @type {Boolean}\n * @memberof FieldComponent\n */\n @Input() allowNegative = true;\n\n /**\n * Show reserved content below form field\n * @property showBottomContent\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() showBottomContent = true;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof FieldComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof FieldComponent\n */\n @Input() ariaLabel: string;\n\n readonly testId = input<string | null>(null);\n\n protected readonly clearTestId = computed(() => (this.testId() ? `${this.testId()}-clear` : null));\n\n protected readonly passwordToggleTestId = computed(() => (this.testId() ? `${this.testId()}-visibility` : null));\n\n /**\n * Show loading button. Only for text\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() loading = false;\n\n /**\n * Show icon when field is valid\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() isValid = false;\n\n /**\n * Max characters number\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() maxCharacters = 255;\n\n /**\n * Trim text on blur\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() trimOnBlur = false;\n /**\n * Trim text on submit\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() trimOnSubmit = false;\n /**\n * Max rows for multi-line type\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() maxRows = 0;\n /**\n * has text area counter\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() hasTextAreaCounter = true;\n\n /**\n * Hide in build errors for Reactive Forms\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() hideBuiltInErrors = false;\n\n /**\n * Hide label in errors\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() hideLabelInErrors = false;\n\n /**\n * Set maximum number\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() max: number | undefined;\n\n /**\n * Set minimum number\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() min: number | undefined;\n\n /**\n * Sets textarea height. Default 110\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() textareaHeight = 110;\n\n /**\n * Sets textarea borderless. Default false\n *\n * @type {number}\n * @memberof FieldComponent\n */\n @Input() borderless = false;\n\n @Input() autosizableTextarea = false;\n\n /**\n * Indicates if this field is filled by AI\n *\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() isAIVariant = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used for input field Aria Labeled By Element Id.\n * @type {string}\n * @memberof FieldComponent\n */\n protected readonly ariaLabelledbyId = computed(() => `${this.id()}-labeledBy`);\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used for input field Aria LabeledBy Text.\n * @type {string}\n * @memberof FieldComponent\n */\n protected readonly ariaLabelledby = input<string | undefined>(undefined);\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used for input field Aria Described By Element Id.\n * @type {string}\n * @memberof FieldComponent\n */\n protected readonly ariaDescribedbyId = computed(() => `${this.id()}-describedBy`);\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used for input field Aria DescribedBy Text.\n * @type {string}\n * @memberof FieldComponent\n */\n readonly ariaDescribedby = input<string | undefined>(undefined);\n\n /**\n * Show state of error\n * @type {boolean}\n * @memberof FieldComponent\n */\n @Input() hasError = false;\n\n @Output() validateEvent = new EventEmitter<string>();\n @Output() fieldBlur = new EventEmitter<void>();\n\n @ViewChild('inputElement', { read: ElementRef }) field: ElementRef<HTMLInputElement>;\n @ViewChild('autosize') autosize: CdkTextareaAutosize;\n\n get getPasswordIcon(): IconName {\n if (this.applicationTheme === 'classic') {\n return this.showPassword ? 'Eye-hide' : 'Eye-view';\n } else {\n if (!this.isActiveField && !this.isActiveHover) {\n return this.showPassword ? 'View-in-line' : 'Hide-in-line';\n } else {\n return this.showPassword ? 'View-filled' : 'Hide-filled';\n }\n }\n }\n\n isActiveField = false;\n isActiveHover = false;\n\n keyboardFocused = signal(false);\n\n protected readonly translationContext = 'FIELD.';\n\n /**\n * @ignore\n */\n onChange: (value: string | number) => void = () => {};\n\n /**\n * @ignore\n */\n onTouch = () => {};\n\n private readonly defaultAppTheme = inject(\n 'CANOPYUI_DEFAULT_APPLICATION_THEME' as unknown as ProviderToken<ApplicationTheme>,\n {\n optional: true,\n }\n );\n private readonly matIconRegistry = inject(MatIconRegistry);\n private readonly domSanitizer = inject(DomSanitizer);\n private readonly cdr = inject(ChangeDetectorRef);\n public ngControl = inject(NgControl, { optional: true, self: true });\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n if (this.defaultAppTheme) {\n this.applicationTheme = this.defaultAppTheme;\n }\n\n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngAfterViewInit(): void {\n this.focusMonitor\n .monitor(this.field)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin =>\n this.ngZone.run(() => {\n queueMicrotask(() => {\n this.keyboardFocused.set(origin === 'keyboard');\n });\n })\n );\n\n if (this.type === 'multi-line') {\n this.autosize.resizeToFitContent(true);\n }\n }\n\n /**\n * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors\n * to display validation errors that might happen (e.g. required)\n */\n ngDoCheck(): void {\n if (this.ngControl?.touched || this.ngControl?.errors) {\n this.cdr.markForCheck();\n }\n }\n\n showClose: boolean;\n showPassword: boolean;\n currentType: string;\n errorsLength: boolean;\n\n ngOnInit(): void {\n this.setSearchInput();\n this.currentType = this.getType();\n }\n\n validate(): void {\n this.validateEvent.emit(this.value);\n }\n\n //set search input initial value\n setSearchInput(): void {\n if (this.type === 'search' || this.type === 'collapsed-search') {\n // eslint-disable-next-line no-restricted-syntax -- SECURITY: hardcoded first-party asset URL; MatIconRegistry.addSvgIcon requires SafeResourceUrl.\n this.matIconRegistry.addSvgIcon('Search', this.domSanitizer.bypassSecurityTrustResourceUrl('/icons/Search.svg'));\n if (this.value) {\n this.showClose = true;\n } else {\n this.showClose = false;\n }\n } else {\n this.showClose = false;\n }\n }\n\n //change type for reveal password\n getType(): string {\n if (this.type === 'password' && this.showPassword) {\n return 'text';\n }\n return this.type;\n }\n\n //Clear input value\n clearValue(): void {\n this.value = '';\n this.onChange(this.value);\n this.onChangeInputSearch();\n }\n\n //toggle for password\n showPasswordClick() {\n this.showPassword = !this.showPassword;\n this.currentType = this.getType();\n }\n\n //Set options for search input\n onChangeInputSearch() {\n if (this.type === 'search' || this.type === 'collapsed-search') {\n if (!this.value) {\n this.showClose = false;\n }\n if (this.value) {\n this.showClose = true;\n }\n }\n }\n\n // Set errors length for validation\n // Consider only those errors which which are not empty\n setErrorsLength(): boolean {\n if (this._errors) {\n return this._errors.filter(err => Boolean(err)).length > 0 ? true : false;\n }\n return false;\n }\n\n //Save input value\n onInput(event: Event) {\n this.value = (event.target as HTMLInputElement | HTMLTextAreaElement).value;\n this.errorsLength = this.setErrorsLength();\n if (!this.updateOnBlur) {\n this.onTouch();\n }\n if (this.allowOnlyDigits && !this.allowNegative && Number(this.value) < 0) {\n this.value = '0';\n } else {\n this.onChange(this.type === 'number' && this.value !== '' ? Number(this.value) : this.value);\n }\n }\n\n writeValue(value?: string | number): void {\n if (value !== null && value !== undefined) {\n // The internal <input> value is always a string; a numeric form value\n // renders identically once assigned (the input coerces it anyway).\n this.value = String(value);\n } else {\n this.value = '';\n }\n this.onChangeInputSearch();\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string | number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onActive(state: boolean, action: string): void {\n if (action === 'hover') {\n this.isActiveHover = state;\n } else if (action === 'focus') {\n this.isActiveField = state;\n\n if (!state && this.trimOnBlur) {\n this.clearSpace();\n }\n }\n }\n\n onSubmit(): void {\n if (this.trimOnSubmit) {\n this.clearSpace();\n }\n }\n\n private clearSpace(): void {\n this.value = this.value.trim();\n this.onChange(this.value);\n }\n\n onBlur(): void {\n this.fieldBlur.emit();\n }\n\n trackByFn = (index: number, value: string) => value;\n\n focus(): void {\n this.field.nativeElement.focus();\n }\n\n refocusPasswordButton(btn: ButtonComponent) {\n setTimeout(() => {\n btn.focus('keyboard');\n }, 0);\n }\n}\n","<ng-container>\n <mat-form-field\n [ngStyle]=\"{\n '--textarea-height': textareaHeight - 10 + 'px',\n '--textarea-height-container': textareaHeight + 'px',\n }\"\n #uiField\n appearance=\"outline\"\n hideRequiredMarker=\"true\"\n [color]=\"errorsLength || (ngControl?.errors && ngControl?.touched) || hasError ? 'warn' : 'accent'\"\n [ngClass]=\"{\n 'hide-bottom-content': !showBottomContent,\n textarea: type === 'textarea' || type === 'textarea-scrollable',\n 'textarea-scrollable': type === 'textarea-scrollable',\n 'multi-line': type === 'multi-line',\n 'multi-line-textarea': type === 'multi-line' && autosizableTextarea && borderless,\n 'keyboard-focused': keyboardFocused(),\n 'has-label': !!label,\n 'has-value': !!value,\n 'text-area-borderless': borderless && (type === 'textarea' || type === 'textarea-scrollable'),\n }\"\n (mouseenter)=\"onActive(true, 'hover')\"\n (mouseleave)=\"onActive(false, 'hover')\"\n >\n <span [style.display]=\"'none'\" [id]=\"ariaDescribedbyId()\">\n @if (required) {\n <span>{{ 'ERRORS.REQUIRED' | uiTranslate | async }}</span>\n }\n {{ ariaDescribedby() }}\n </span>\n <span [style.display]=\"'none'\" [id]=\"ariaLabelledbyId()\">\n {{ ariaLabelledby() ?? label }}\n </span>\n @if (\n (label || labelHtml()) &&\n ((type !== 'search' && applicationTheme === 'classic') || applicationTheme !== 'classic')\n ) {\n <mat-label class=\"label-with-icon\">\n @if (isAIVariant || labelIcon) {\n <ui-icon [name]=\"isAIVariant ? 'Sparkle-in-line' : labelIcon!\" [size]=\"'16'\" class=\"label-icon\"></ui-icon>\n }\n <span>\n @if (labelHtml()) {\n <span [innerHTML]=\"labelHtml()\"></span>\n } @else {\n {{ label }}\n }\n @if (required) {\n <span>*</span>\n }\n </span>\n </mat-label>\n }\n @if (type === 'search' || type === 'collapsed-search') {\n <mat-icon matIconPrefix class=\"search-icon\" [svgIcon]=\"'Search'\"></mat-icon>\n }\n @if (type !== 'textarea' && type !== 'textarea-scrollable' && type !== 'multi-line') {\n <input\n [attr.data-testid]=\"testId() ?? 'field-input'\"\n [readonly]=\"readOnly\"\n matInput\n #inputElement\n (blur)=\"onTouch(); onActive(false, 'focus'); onBlur()\"\n (input)=\"onInput($event)\"\n [id]=\"id()\"\n (keyup)=\"onChangeInputSearch()\"\n [placeholder]=\"placeholder!\"\n [value]=\"value\"\n [disabled]=\"disabled || loading\"\n [type]=\"currentType\"\n (keyup.enter)=\"onSubmit()\"\n [max]=\"max\"\n [min]=\"min\"\n [name]=\"fieldName!\"\n [required]=\"required\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-invalid]=\"errorsLength || (ngControl?.errors && ngControl?.touched) || hasError\"\n [attr.aria-labelledby]=\"ariaLabelledbyId()\"\n [attr.aria-describedby]=\"ariaDescribedbyId()\"\n role=\"textbox\"\n digitsOnly\n [autocomplete]=\"isAutocompleteOff ? 'off' : 'on'\"\n [allowOnlyDigits]=\"allowOnlyDigits\"\n [allowNegative]=\"allowNegative\"\n (focusin)=\"onActive(true, 'focus')\"\n />\n } @else {\n <textarea\n [attr.data-testid]=\"testId()\"\n matInput\n #inputElement\n #autosize=\"cdkTextareaAutosize\"\n [readonly]=\"readOnly\"\n (blur)=\"onTouch(); onActive(false, 'focus'); onBlur()\"\n (input)=\"onInput($event)\"\n [id]=\"id()\"\n (keyup)=\"onChangeInputSearch()\"\n (keyup.enter)=\"onSubmit()\"\n [placeholder]=\"placeholder!\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"fieldName!\"\n [required]=\"required\"\n [attr.aria-label]=\"!label ? ariaLabel : ''\"\n [attr.aria-invalid]=\"errorsLength || (ngControl?.errors && ngControl?.touched) || hasError\"\n [attr.aria-labelledby]=\"ariaLabelledbyId()\"\n [attr.aria-describedby]=\"ariaDescribedbyId()\"\n role=\"textbox\"\n [cdkTextareaAutosize]=\"type === 'multi-line'\"\n [cdkAutosizeMinRows]=\"type === 'multi-line' ? 1 : 5\"\n [cdkAutosizeMaxRows]=\"type === 'multi-line' ? maxRows : 5\"\n [attr.maxlength]=\"maxCharacters\"\n (focusin)=\"onActive(true, 'focus')\"\n ></textarea>\n }\n\n @if (type === 'search' || type === 'collapsed-search' || type === 'password' || type === 'validation-text') {\n <div class=\"options\">\n <div class=\"options-container\">\n @if (showClose) {\n <ui-button\n variant=\"secondary\"\n [justIcon]=\"true\"\n class=\"close\"\n iconName=\"Close\"\n [label]=\"('COMMON.CLEAR' | uiTranslate | async)!\"\n (buttonClickEvent)=\"clearValue()\"\n [ariaLabel]=\"ariaLabel + '--' + ('COMMON.CLEAR' | uiTranslate | async)\"\n [testId]=\"clearTestId()\"\n ></ui-button>\n }\n @if (type === 'password') {\n <ui-button\n class=\"password\"\n variant=\"secondary\"\n [tooltip]=\"((showPassword ? 'FIELD.HIDE_PASSWORD' : 'FIELD.SHOW_PASSWORD') | uiTranslate | async)!\"\n [justIcon]=\"true\"\n role=\"switch\"\n [attr.aria-checked]=\"showPassword\"\n [iconName]=\"getPasswordIcon\"\n [applicationTheme]=\"applicationTheme\"\n [testId]=\"passwordToggleTestId()\"\n (click)=\"showPasswordClick()\"\n #btn\n (keydown.enter)=\"refocusPasswordButton(btn)\"\n (keydown.space)=\"refocusPasswordButton(btn)\"\n ></ui-button>\n }\n @if (\n type === 'validation-text' && (applicationTheme === 'dark' || applicationTheme === 'light') && value.length\n ) {\n @if (!isValid) {\n <ui-button\n class=\"validation\"\n [variant]=\"'text'\"\n [applicationTheme]=\"'light'\"\n [label]=\"'Validate'\"\n [loading]=\"loading\"\n (click)=\"validate()\"\n [disabled]=\"disabled\"\n [size]=\"'small'\"\n ></ui-button>\n }\n @if (isValid) {\n <ui-icon class=\"valid\" [color]=\"'white'\" applicationTheme=\"light\" [name]=\"'Check'\"></ui-icon>\n }\n }\n </div>\n </div>\n }\n @if (\n hasTextAreaCounter &&\n (type === 'textarea' || type === 'textarea-scrollable') &&\n !errorsLength &&\n !($safeNavigationMigration(ngControl?.errors) | hasValidationError)\n ) {\n <mat-hint class=\"info\">{{ value.length }} / {{ maxCharacters }}</mat-hint>\n }\n\n @if (\n hintMessage &&\n !errorsLength &&\n !($safeNavigationMigration(ngControl?.errors) | hasValidationError) &&\n type !== 'textarea' &&\n type !== 'textarea-scrollable'\n ) {\n <mat-hint class=\"info\">{{ hintMessage }}</mat-hint>\n }\n\n @if (errorsLength || ($safeNavigationMigration(ngControl?.errors) | hasValidationError)) {\n <mat-hint class=\"error\">\n @if (errorsLength) {\n @for (error of _errors; track trackByFn($index, error)) {\n <div class=\"errors\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n }\n }\n @if (ngControl && !hideBuiltInErrors) {\n <ui-validation-error [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : label\"></ui-validation-error>\n }\n </mat-hint>\n }\n\n @if (badgeVariant) {\n <ui-badge class=\"field-badge\" [variant]=\"badgeVariant\"></ui-badge>\n }\n </mat-form-field>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { DigitsOnlyDirective, UiTranslatePipe, HasValidationErrorPipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ValidationErrorModule } from '@testgorilla/tgo-ui/components/validation-error';\n\nimport { FieldComponent } from './field.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n IconComponentModule,\n FormsModule,\n ReactiveFormsModule,\n ButtonComponentModule,\n MatIconModule,\n UiTranslatePipe,\n ValidationErrorModule,\n HasValidationErrorPipe,\n DigitsOnlyDirective,\n BadgeComponentModule,\n FieldComponent,\n ],\n exports: [FieldComponent],\n})\nexport class FieldComponentModule {}\n"],"mappings":"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"}
|
|
@@ -50,13 +50,22 @@ var InfiniteScrollTableComponent = class InfiniteScrollTableComponent {
|
|
|
50
50
|
...ngDevMode ? { debugName: "hasMore" } : /* istanbul ignore next */ {},
|
|
51
51
|
transform: booleanAttribute
|
|
52
52
|
});
|
|
53
|
-
this.skeletonRowCount = input(DEFAULT_FIRST_LOAD_SKELETON_COUNT,
|
|
54
|
-
|
|
53
|
+
this.skeletonRowCount = input(DEFAULT_FIRST_LOAD_SKELETON_COUNT, {
|
|
54
|
+
...ngDevMode ? { debugName: "skeletonRowCount" } : /* istanbul ignore next */ {},
|
|
55
|
+
transform: (value) => value ?? DEFAULT_FIRST_LOAD_SKELETON_COUNT
|
|
56
|
+
});
|
|
57
|
+
this.loadMoreSkeletonCount = input(DEFAULT_LOAD_MORE_SKELETON_COUNT, {
|
|
58
|
+
...ngDevMode ? { debugName: "loadMoreSkeletonCount" } : /* istanbul ignore next */ {},
|
|
59
|
+
transform: (value) => value ?? DEFAULT_LOAD_MORE_SKELETON_COUNT
|
|
60
|
+
});
|
|
55
61
|
this.loadingColumnCount = input(0, {
|
|
56
62
|
...ngDevMode ? { debugName: "loadingColumnCount" } : /* istanbul ignore next */ {},
|
|
57
63
|
transform: numberAttribute
|
|
58
64
|
});
|
|
59
|
-
this.loadMoreThreshold = input(DEFAULT_LOAD_MORE_THRESHOLD,
|
|
65
|
+
this.loadMoreThreshold = input(DEFAULT_LOAD_MORE_THRESHOLD, {
|
|
66
|
+
...ngDevMode ? { debugName: "loadMoreThreshold" } : /* istanbul ignore next */ {},
|
|
67
|
+
transform: (value) => value ?? DEFAULT_LOAD_MORE_THRESHOLD
|
|
68
|
+
});
|
|
60
69
|
this.noDataTemplate = input(...ngDevMode ? [void 0, { debugName: "noDataTemplate" }] : /* istanbul ignore next */ []);
|
|
61
70
|
this.errorTemplate = input(...ngDevMode ? [void 0, { debugName: "errorTemplate" }] : /* istanbul ignore next */ []);
|
|
62
71
|
this.error = input(false, {
|