@honuware/ui 0.1.0
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/README.md +78 -0
- package/fesm2022/honuware-ui-access.mjs +557 -0
- package/fesm2022/honuware-ui-access.mjs.map +1 -0
- package/fesm2022/honuware-ui-auth.mjs +503 -0
- package/fesm2022/honuware-ui-auth.mjs.map +1 -0
- package/fesm2022/honuware-ui-controls.mjs +624 -0
- package/fesm2022/honuware-ui-controls.mjs.map +1 -0
- package/fesm2022/honuware-ui-crud.mjs +1101 -0
- package/fesm2022/honuware-ui-crud.mjs.map +1 -0
- package/fesm2022/honuware-ui-foundation.mjs +745 -0
- package/fesm2022/honuware-ui-foundation.mjs.map +1 -0
- package/fesm2022/honuware-ui-photos.mjs +238 -0
- package/fesm2022/honuware-ui-photos.mjs.map +1 -0
- package/fesm2022/honuware-ui-square.mjs +128 -0
- package/fesm2022/honuware-ui-square.mjs.map +1 -0
- package/fesm2022/honuware-ui-testing.mjs +325 -0
- package/fesm2022/honuware-ui-testing.mjs.map +1 -0
- package/fesm2022/honuware-ui.mjs +17 -0
- package/fesm2022/honuware-ui.mjs.map +1 -0
- package/package.json +80 -0
- package/types/honuware-ui-access.d.ts +382 -0
- package/types/honuware-ui-auth.d.ts +164 -0
- package/types/honuware-ui-controls.d.ts +136 -0
- package/types/honuware-ui-crud.d.ts +287 -0
- package/types/honuware-ui-foundation.d.ts +89 -0
- package/types/honuware-ui-photos.d.ts +46 -0
- package/types/honuware-ui-square.d.ts +65 -0
- package/types/honuware-ui-testing.d.ts +126 -0
- package/types/honuware-ui.d.ts +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"honuware-ui-controls.mjs","sources":["../../../projects/honuware-ui/controls/src/simple-text/simple-text.component.ts","../../../projects/honuware-ui/controls/src/simple-text/simple-text.component.html","../../../projects/honuware-ui/controls/src/long-text/long-text.component.ts","../../../projects/honuware-ui/controls/src/long-text/long-text.component.html","../../../projects/honuware-ui/controls/src/simple-bool/simple-bool.component.ts","../../../projects/honuware-ui/controls/src/simple-bool/simple-bool.component.html","../../../projects/honuware-ui/controls/src/simple-enum/simple-enum.component.ts","../../../projects/honuware-ui/controls/src/simple-enum/simple-enum.component.html","../../../projects/honuware-ui/controls/src/simple-date/simple-date.component.ts","../../../projects/honuware-ui/controls/src/simple-date/simple-date.component.html","../../../projects/honuware-ui/controls/src/fk-picker/fk-picker.component.ts","../../../projects/honuware-ui/controls/src/fk-picker/fk-picker.component.html","../../../projects/honuware-ui/controls/src/composite-control/composite-control.component.ts","../../../projects/honuware-ui/controls/src/composite-control/composite-control.component.html","../../../projects/honuware-ui/controls/src/public-api.ts","../../../projects/honuware-ui/controls/src/honuware-ui-controls.ts"],"sourcesContent":["import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { FormControl, Validators, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { ColumnDataInfo } from '@honuware/ui/access';\n\n@Component({\n selector: 'hw-simple-text',\n templateUrl: './simple-text.component.html',\n styleUrls: ['./simple-text.component.scss'],\n imports: [ReactiveFormsModule, MatFormFieldModule, MatInputModule]\n})\nexport class SimpleTextComponent implements OnInit, OnChanges {\n @Input() dataInfo?: ColumnDataInfo;\n @Input() value?: string;\n @Input() readOnly: boolean = false;\n @Output() valueChanged = new EventEmitter<string>();\n\n textInput: FormControl = new FormControl();\n isLoading = true;\n private skipValueChanges = false;\n\n get displayLabel(): string {\n return this.dataInfo?.label || this.dataInfo?.column_friendly_name || this.dataInfo?.column_name || '';\n }\n\n ngOnInit(): void {\n const initialValue = this.value ?? this.dataInfo?.default_value ?? '';\n this.textInput.setValue(initialValue, { emitEvent: false });\n this.textInput.setValidators(this.getValidators());\n this.textInput.updateValueAndValidity();\n\n if (this.readOnly) {\n this.textInput.disable();\n }\n\n this.textInput.valueChanges.subscribe((value: string) => {\n if (!this.skipValueChanges) {\n this.valueChanged.emit(value);\n }\n });\n\n this.isLoading = false;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['dataInfo'] && !changes['dataInfo'].firstChange) {\n this.skipValueChanges = true;\n const newValue = this.value ?? this.dataInfo?.default_value ?? '';\n this.textInput.setValue(newValue, { emitEvent: false });\n this.textInput.setValidators(this.getValidators());\n this.textInput.updateValueAndValidity();\n this.skipValueChanges = false;\n }\n if (changes['value'] && !changes['value'].firstChange) {\n this.skipValueChanges = true;\n this.textInput.setValue(this.value ?? '', { emitEvent: false });\n this.textInput.setValidators(this.getValidators());\n this.textInput.updateValueAndValidity();\n this.skipValueChanges = false;\n }\n }\n\n private getValidators() {\n const validators = [];\n if (this.dataInfo?.required) {\n validators.push(Validators.required);\n }\n if (this.dataInfo?.max_length) {\n validators.push(Validators.maxLength(this.dataInfo.max_length));\n }\n if (this.dataInfo?.regex) {\n validators.push(Validators.pattern(this.dataInfo.regex));\n }\n return validators;\n }\n}\n","@if (isLoading) {\n<div class=\"loading\">Loading...</div>\n}\n\n@if (!isLoading) {\n<div class=\"form-fields\">\n <mat-form-field>\n <mat-label>{{ displayLabel }}</mat-label>\n <input matInput\n [id]=\"dataInfo?.column_name ?? ''\"\n [type]=\"dataInfo?.html_input_type || 'text'\"\n [placeholder]=\"dataInfo?.place_holder ?? ''\"\n [formControl]=\"textInput\" />\n\n @if (dataInfo?.hint) {\n <mat-hint>{{ dataInfo?.hint }}</mat-hint>\n }\n\n </mat-form-field>\n\n @if (textInput.touched && textInput.hasError('required')) {\n <mat-error>This field is required.</mat-error>\n }\n\n @if (textInput.touched && textInput.hasError('maxlength')) {\n <mat-error>Max {{ dataInfo?.max_length }} characters allowed.</mat-error>\n }\n\n @if (textInput.touched && textInput.hasError('pattern')) {\n <mat-error>Invalid format.</mat-error>\n }\n\n</div>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { ColumnDataInfo } from '@honuware/ui/access';\n\n\n@Component({\n selector: 'hw-long-text',\n templateUrl: './long-text.component.html',\n styleUrls: ['./long-text.component.scss'],\n standalone: true,\n imports: [ReactiveFormsModule, MatFormFieldModule, MatInputModule],\n})\nexport class LongTextComponent implements OnInit, OnChanges {\n @Input() dataInfo?: ColumnDataInfo;\n @Input() value?: string;\n @Input() readOnly: boolean = false;\n @Output() valueChanged = new EventEmitter<string>();\n\n textInput: FormControl = new FormControl('');\n isLoading: boolean = true;\n private skipValueChanges: boolean = false;\n\n get displayLabel(): string {\n return this.dataInfo?.label || this.dataInfo?.column_friendly_name || this.dataInfo?.column_name || '';\n }\n\n ngOnInit(): void {\n const initialValue = this.value ?? this.dataInfo?.default_value ?? '';\n this.textInput.setValue(initialValue, { emitEvent: false });\n this.textInput.setValidators(this.getValidators());\n\n if (this.readOnly) {\n this.textInput.disable();\n }\n\n this.textInput.valueChanges.subscribe((value: string) => {\n if (!this.skipValueChanges) {\n this.valueChanged.emit(value);\n }\n });\n\n this.isLoading = false;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['dataInfo'] && !changes['dataInfo'].firstChange) {\n this.skipValueChanges = true;\n const newValue = this.value ?? this.dataInfo?.default_value ?? '';\n this.textInput.setValue(newValue, { emitEvent: false });\n this.textInput.setValidators(this.getValidators());\n this.textInput.updateValueAndValidity();\n this.skipValueChanges = false;\n }\n if (changes['value'] && !changes['value'].firstChange) {\n this.skipValueChanges = true;\n this.textInput.setValue(this.value ?? '', { emitEvent: false });\n this.textInput.setValidators(this.getValidators());\n this.textInput.updateValueAndValidity();\n this.skipValueChanges = false;\n }\n }\n\n private getValidators() {\n const validators = [];\n if (this.dataInfo?.required) {\n validators.push(Validators.required);\n }\n if (this.dataInfo?.max_length) {\n validators.push(Validators.maxLength(this.dataInfo.max_length));\n }\n if (this.dataInfo?.regex) {\n validators.push(Validators.pattern(this.dataInfo.regex));\n }\n return validators;\n }\n}\n","@if (isLoading) {\n<div id=\"loading\">\n Loading...\n</div>\n}\n\n@if (!isLoading) {\n<div class=\"form-fields\">\n <mat-form-field>\n <mat-label>{{ displayLabel }}</mat-label>\n <textarea matInput\n [id]=\"dataInfo?.column_name ?? ''\"\n [formControl]=\"textInput\"\n [placeholder]=\"dataInfo?.place_holder ?? ''\"\n [rows]=\"dataInfo?.rows || 3\"></textarea>\n\n @if (dataInfo?.hint) {\n <mat-hint>{{ dataInfo?.hint }}</mat-hint>\n }\n\n </mat-form-field>\n\n @if (textInput.touched && textInput.hasError('required')) {\n <mat-error>This field is required.</mat-error>\n }\n\n @if (textInput.touched && textInput.hasError('maxlength')) {\n <mat-error>Max {{ dataInfo?.max_length }} characters allowed.</mat-error>\n }\n\n @if (textInput.touched && textInput.hasError('pattern')) {\n <mat-error class=\"error\">Invalid format.</mat-error>\n }\n\n</div>\n }\n","import { Component, Input, OnChanges, OnInit, Output, EventEmitter, SimpleChanges } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ColumnDataInfo } from '@honuware/ui/access';\n\n@Component({\n standalone: true,\n selector: 'hw-simple-bool',\n imports: [ReactiveFormsModule, MatCheckboxModule],\n templateUrl: './simple-bool.component.html',\n styleUrls: ['./simple-bool.component.scss']\n})\nexport class SimpleBoolComponent implements OnInit, OnChanges {\n @Input() dataInfo?: ColumnDataInfo;\n @Input() value?: string;\n @Input() readOnly = false;\n @Output() checkboxValueChange = new EventEmitter<string>();\n\n checkboxControl: FormControl = new FormControl(false);\n isLoading = true;\n private skipValueChanges = false;\n\n private isTrueValue(value: string | undefined): boolean {\n return value === 'true' || value === 't';\n }\n\n ngOnInit(): void {\n const initialValue = this.value !== undefined\n ? this.isTrueValue(this.value)\n : this.isTrueValue(this.dataInfo?.default_value);\n this.checkboxControl.setValue(initialValue, { emitEvent: false });\n this.checkboxControl.updateValueAndValidity();\n\n if (this.readOnly) {\n this.checkboxControl.disable();\n }\n\n this.checkboxControl.valueChanges.subscribe((value) => {\n if (!this.skipValueChanges) {\n this.emitCheckboxValue(value);\n }\n });\n\n this.isLoading = false;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['dataInfo'] && this.dataInfo) {\n this.skipValueChanges = true;\n const newValue = this.value !== undefined\n ? this.isTrueValue(this.value)\n : this.isTrueValue(this.dataInfo.default_value);\n this.checkboxControl.setValue(newValue, { emitEvent: false });\n this.checkboxControl.updateValueAndValidity();\n this.skipValueChanges = false;\n }\n if (changes['value'] && !changes['value'].firstChange) {\n this.skipValueChanges = true;\n const newValue = this.isTrueValue(this.value);\n this.checkboxControl.setValue(newValue, { emitEvent: false });\n this.checkboxControl.updateValueAndValidity();\n this.skipValueChanges = false;\n }\n if (changes['readOnly'] && !changes['readOnly'].firstChange) {\n if (this.readOnly) {\n this.checkboxControl.disable();\n } else {\n this.checkboxControl.enable();\n }\n }\n }\n\n private emitCheckboxValue(value: boolean | null): void {\n const emittedValue = value ? 'true' : 'false';\n this.checkboxValueChange.emit(emittedValue);\n }\n}\n","@if (isLoading) {\n<div class=\"loading\">Loading...</div>\n}\n\n@if (!isLoading) {\n<div class=\"form-fields\">\n @if (readOnly) {\n <span class=\"readonly-bool\">{{ checkboxControl.value ? 'Yes' : 'No' }}</span>\n } @else {\n <mat-checkbox [formControl]=\"checkboxControl\">\n {{ dataInfo?.label }}\n </mat-checkbox>\n }\n</div>\n}\n","import { Component, Input, OnChanges, OnInit, Output, EventEmitter, SimpleChanges } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { ColumnDataInfo } from '@honuware/ui/access';\n\n@Component({\n standalone: true,\n selector: 'hw-simple-enum',\n imports: [ReactiveFormsModule, MatSelectModule, MatFormFieldModule],\n templateUrl: './simple-enum.component.html',\n styleUrls: ['./simple-enum.component.scss']\n})\nexport class SimpleEnumComponent implements OnInit, OnChanges {\n @Input() dataInfo?: ColumnDataInfo;\n @Input() value?: string;\n @Input() readOnly = false;\n @Output() enumValueChange = new EventEmitter<string>();\n\n selectControl: FormControl = new FormControl('');\n isLoading = true;\n private skipValueChanges = false;\n\n ngOnInit(): void {\n const initialValue = this.value !== undefined\n ? this.value\n : (this.dataInfo?.default_value ?? '');\n this.selectControl.setValue(initialValue, { emitEvent: false });\n\n if (this.readOnly) {\n this.selectControl.disable();\n }\n\n this.selectControl.valueChanges.subscribe((value) => {\n if (!this.skipValueChanges) {\n this.enumValueChange.emit(value);\n }\n });\n\n this.isLoading = false;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['dataInfo'] && this.dataInfo) {\n this.skipValueChanges = true;\n const newValue = this.value !== undefined\n ? this.value\n : (this.dataInfo.default_value ?? '');\n this.selectControl.setValue(newValue, { emitEvent: false });\n this.skipValueChanges = false;\n }\n if (changes['value'] && !changes['value'].firstChange) {\n this.skipValueChanges = true;\n this.selectControl.setValue(this.value ?? '', { emitEvent: false });\n this.skipValueChanges = false;\n }\n if (changes['readOnly'] && !changes['readOnly'].firstChange) {\n if (this.readOnly) {\n this.selectControl.disable();\n } else {\n this.selectControl.enable();\n }\n }\n }\n}\n","@if (isLoading) {\n<div class=\"loading\">Loading...</div>\n}\n\n@if (!isLoading) {\n<div class=\"form-fields\">\n @if (readOnly) {\n <span class=\"readonly-enum\">{{ selectControl.value }}</span>\n } @else {\n <mat-form-field>\n <mat-label>{{ dataInfo?.label }}</mat-label>\n <mat-select [formControl]=\"selectControl\">\n @for (option of dataInfo?.enum_values; track option) {\n <mat-option [value]=\"option\">{{ option }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n</div>\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatTimepickerModule } from '@angular/material/timepicker';\nimport { ColumnDataInfo } from '@honuware/ui/access';\nimport { isMicrosecondTimestamp, microsToDate, dateToMicros } from '@honuware/ui/foundation';\n\n@Component({\n selector: 'hw-simple-date',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatNativeDateModule,\n MatDatepickerModule,\n MatTimepickerModule,\n ],\n templateUrl: './simple-date.component.html',\n styleUrls: ['./simple-date.component.scss'],\n})\nexport class SimpleDateComponent implements OnInit, OnChanges {\n @Input() dataInfo?: ColumnDataInfo;\n @Input() value?: string;\n @Input() loading = true;\n @Input() readOnly = false;\n @Input() type: 'datetime' | 'date' | 'time' = 'datetime';\n // Minutes between selectable timepicker options. Default 20 matches the\n // calendar's old TIME_SEGMENT_INCREMENT_MIN — callers that need a different\n // granularity pass it in, so the control no longer depends on @pages/calendar.\n @Input() timeIncrementMinutes = 20;\n\n @Output() valueChange = new EventEmitter<string>();\n\n dateControl = new FormControl();\n\n private isMicrosecondInput = false;\n\n private isBigIntColumn(): boolean {\n return this.dataInfo?.type === 'BIGINT';\n }\n\n private parseInputValue(value: string): Date | null {\n if (!value) return null;\n if (isMicrosecondTimestamp(value)) {\n this.isMicrosecondInput = true;\n return microsToDate(value);\n }\n this.isMicrosecondInput = false;\n const parsed = new Date(value);\n return isNaN(parsed.getTime()) ? null : parsed;\n }\n\n ngOnInit(): void {\n // BIGINT date columns always use microseconds, even for new items\n // where there's no existing value to detect the format from.\n if (this.isBigIntColumn()) {\n this.isMicrosecondInput = true;\n }\n\n const initialValue = this.value ?? this.dataInfo?.default_value ?? '';\n const initialDate = this.parseInputValue(initialValue);\n this.dateControl = new FormControl(\n initialDate,\n {\n validators: this.dataInfo?.required ? [Validators.required] : [],\n }\n );\n\n if (this.readOnly) {\n this.dateControl.disable();\n }\n\n this.dateControl.valueChanges.subscribe((value: Date | string | null) => {\n if (value && this.dateControl.valid && Date.parse(String(value))) {\n const date = new Date(Date.parse(String(value)));\n if (this.isMicrosecondInput) {\n this.valueChange.emit(dateToMicros(date));\n } else {\n this.valueChange.emit(date.toISOString());\n }\n }\n });\n\n this.loading = false;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['dataInfo'] && !changes['dataInfo'].firstChange) {\n const newValue = this.value ?? this.dataInfo?.default_value ?? '';\n const newDate = this.parseInputValue(newValue);\n this.dateControl.setValue(\n newDate,\n { emitEvent: false }\n );\n this.dateControl.updateValueAndValidity();\n }\n if (changes['value'] && !changes['value'].firstChange) {\n const newDate = this.parseInputValue(this.value ?? '');\n this.dateControl.setValue(\n newDate,\n { emitEvent: false }\n );\n this.dateControl.updateValueAndValidity();\n }\n if (changes['readOnly'] && !changes['readOnly'].firstChange) {\n if (this.readOnly) {\n this.dateControl.disable();\n } else {\n this.dateControl.enable();\n }\n }\n }\n}\n","@if (loading) {\n<p class=\"loading\">Loading...</p>\n}\n\n@if (!loading) {\n<div class=\"form-fields\">\n @if (type.includes('date')) {\n <mat-form-field>\n <mat-label>{{dataInfo?.label}} date</mat-label>\n <input matInput [formControl]=\"dateControl\" [matDatepicker]=\"datepicker\" />\n <mat-datepicker-toggle [for]=\"datepicker\" matIconSuffix />\n <mat-datepicker #datepicker />\n\n @if (dateControl.getError('required') && !dateControl.hasError('matDatepickerParse')) {\n <mat-error>This value is required.</mat-error>\n }\n\n @if (dateControl.hasError('matDatepickerParse')) {\n <mat-error>\n '{{dateControl.getError('matDatepickerParse')?.text}}' is invalid\n </mat-error>\n }\n </mat-form-field>\n }\n\n @if (type.includes('time')) {\n <mat-form-field>\n <mat-label>{{dataInfo?.label}} time</mat-label>\n <input matInput [formControl]=\"dateControl\" [matTimepicker]=\"timePicker\" />\n <mat-timepicker-toggle matIconSuffix [for]=\"timePicker\" />\n <mat-timepicker #timePicker interval=\"{{timeIncrementMinutes}}m\" />\n\n @if (dateControl.getError('required') && !dateControl.hasError('matTimepickerParse')) {\n <mat-error>This value is required.</mat-error>\n }\n\n @if (dateControl.hasError('matTimepickerParse')) {\n <mat-error>\n '{{dateControl.getError('matTimepickerParse')?.text}}' is invalid\n </mat-error>\n }\n </mat-form-field>\n }\n</div>\n}\n","import {\n Component,\n Inject,\n Input,\n Output,\n EventEmitter,\n OnInit,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\nimport { ColumnDataInfo, ForeignKeyInfo, FkOption, CrudAccess, HONUWARE_CRUD_ACCESS } from '@honuware/ui/access';\n\n@Component({\n selector: 'hw-fk-picker',\n standalone: true,\n templateUrl: './fk-picker.component.html',\n styleUrls: ['./fk-picker.component.scss'],\n imports: [\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatAutocompleteModule\n],\n})\nexport class FkPickerComponent implements OnInit, OnChanges, OnDestroy {\n @Input() dataInfo?: ColumnDataInfo;\n @Input() value?: string;\n @Input() readOnly = false;\n @Input() foreignKeyInfo?: ForeignKeyInfo;\n @Input() preloadThreshold = 50;\n @Output() valueChanged = new EventEmitter<string>();\n\n searchControl = new FormControl('');\n filteredOptions: FkOption[] = [];\n isLoading = true;\n resolvedDisplayText = '';\n\n private selectedValue = '';\n private skipValueChanges = false;\n private searchSubject = new Subject<string>();\n private subscriptions: Subscription[] = [];\n\n constructor(@Inject(HONUWARE_CRUD_ACCESS) private serverAccess: CrudAccess) {}\n\n get displayLabel(): string {\n return this.dataInfo?.label || this.dataInfo?.column_friendly_name || this.dataInfo?.column_name || '';\n }\n\n ngOnInit(): void {\n this.selectedValue = this.value ?? '';\n\n if (this.readOnly) {\n this.searchControl.disable();\n this.resolveDisplayText();\n } else {\n this.setupSearch();\n this.loadInitialOptions();\n }\n\n this.isLoading = false;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] && !changes['value'].firstChange) {\n this.skipValueChanges = true;\n this.selectedValue = this.value ?? '';\n if (this.readOnly) {\n this.resolveDisplayText();\n } else {\n this.updateSearchControlFromValue();\n }\n this.skipValueChanges = false;\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.searchSubject.complete();\n }\n\n displayFn = (option: FkOption | string): string => {\n if (typeof option === 'string') return option;\n return option?.display ?? '';\n };\n\n onOptionSelected(event: { option: { value: FkOption } }): void {\n const selected = event.option.value;\n this.selectedValue = selected.value;\n this.valueChanged.emit(selected.value);\n }\n\n private setupSearch(): void {\n const searchSub = this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap(searchText => {\n const tableName = this.foreignKeyInfo?.parent_table_name ?? '';\n return this.serverAccess.getFkOptions(tableName, searchText, 50);\n }),\n ).subscribe(response => {\n this.filteredOptions = response.options;\n });\n this.subscriptions.push(searchSub);\n\n const valueChangesSub = this.searchControl.valueChanges.subscribe(value => {\n if (this.skipValueChanges) return;\n // If the user is typing (not selecting), trigger search\n if (typeof value === 'string') {\n this.searchSubject.next(value);\n }\n });\n this.subscriptions.push(valueChangesSub);\n }\n\n private loadInitialOptions(): void {\n const tableName = this.foreignKeyInfo?.parent_table_name ?? '';\n if (!tableName) return;\n\n this.serverAccess.getFkOptions(tableName, '', this.preloadThreshold).subscribe(response => {\n this.filteredOptions = response.options;\n this.updateSearchControlFromValue();\n });\n }\n\n private updateSearchControlFromValue(): void {\n if (!this.selectedValue) return;\n const match = this.filteredOptions.find(o => o.value === this.selectedValue);\n if (match) {\n this.searchControl.setValue(match as unknown as string, { emitEvent: false });\n } else {\n // Value not in loaded options; resolve display text\n const tableName = this.foreignKeyInfo?.parent_table_name ?? '';\n if (tableName) {\n this.serverAccess.resolveFkDisplay(tableName, [this.selectedValue]).subscribe(response => {\n const displayText = response.resolved[this.selectedValue] ?? this.selectedValue;\n const syntheticOption: FkOption = { value: this.selectedValue, display: displayText };\n this.searchControl.setValue(syntheticOption as unknown as string, { emitEvent: false });\n });\n }\n }\n }\n\n private resolveDisplayText(): void {\n if (!this.selectedValue || !this.foreignKeyInfo?.parent_table_name) {\n this.resolvedDisplayText = this.selectedValue;\n return;\n }\n this.serverAccess.resolveFkDisplay(\n this.foreignKeyInfo.parent_table_name,\n [this.selectedValue],\n ).subscribe(response => {\n this.resolvedDisplayText = response.resolved[this.selectedValue] ?? this.selectedValue;\n });\n }\n}\n","@if (isLoading) {\n<div class=\"loading\">Loading...</div>\n}\n\n@if (!isLoading) {\n<div class=\"form-fields\">\n @if (readOnly) {\n <mat-form-field>\n <mat-label>{{ displayLabel }}</mat-label>\n <input matInput [value]=\"resolvedDisplayText\" disabled>\n </mat-form-field>\n } @else {\n <mat-form-field>\n <mat-label>{{ displayLabel }}</mat-label>\n <input matInput\n [formControl]=\"searchControl\"\n [matAutocomplete]=\"auto\"\n [placeholder]=\"dataInfo?.place_holder ?? ''\">\n <mat-autocomplete #auto=\"matAutocomplete\"\n panelWidth=\"auto\"\n [displayWith]=\"displayFn\"\n (optionSelected)=\"onOptionSelected($event)\">\n @for (option of filteredOptions; track option.value) {\n <mat-option [value]=\"option\">{{ option.display }}</mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n }\n</div>\n}\n","import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { ColumnDataInfo, ForeignKeyInfo } from '@honuware/ui/access';\nimport { SimpleTextComponent } from '../simple-text/simple-text.component';\nimport { LongTextComponent } from '../long-text/long-text.component';\nimport { SimpleBoolComponent } from '../simple-bool/simple-bool.component';\nimport { SimpleDateComponent } from '../simple-date/simple-date.component';\nimport { SimpleEnumComponent } from '../simple-enum/simple-enum.component';\nimport { FkPickerComponent } from '../fk-picker/fk-picker.component';\n\n@Component({\n selector: 'hw-composite-control',\n standalone: true,\n templateUrl: './composite-control.component.html',\n styleUrls: ['./composite-control.component.scss'],\n imports: [SimpleTextComponent, LongTextComponent, SimpleBoolComponent, SimpleDateComponent, SimpleEnumComponent, FkPickerComponent]\n})\nexport class CompositeControlComponent implements OnChanges {\n @Input() dataInfo?: ColumnDataInfo;\n @Input() value?: string;\n @Input() readOnly: boolean = false;\n @Input() foreignKeyInfo?: ForeignKeyInfo;\n @Output() valueChanged = new EventEmitter<string>();\n\n isLoading: boolean = true;\n\n activeComponent: 'text' | 'long-text' | 'bool' | 'date' | 'time' | 'enum' | 'fk' | null = null;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['dataInfo'] || changes['foreignKeyInfo']) {\n this.isLoading = !this.dataInfo;\n this.activeComponent = this.determineActiveComponent();\n }\n }\n\n private determineActiveComponent(): 'text' | 'long-text' | 'bool' | 'date' | 'time' | 'enum' | 'fk' | null {\n // FK columns take priority when foreignKeyInfo is provided\n if (this.foreignKeyInfo) {\n return 'fk';\n }\n\n // Auto-detect bool columns even without explicit html_input_type\n if (!this.dataInfo?.html_input_type && this.dataInfo?.type === 'bool') {\n return 'bool';\n }\n\n switch (this.dataInfo?.html_input_type) {\n case 'enum':\n return 'enum';\n case 'long-text':\n return 'long-text';\n case 'bool':\n case 'checkbox':\n return 'bool';\n case 'date':\n case 'time':\n return 'date';\n case 'text':\n default:\n // Default to text for unknown or unspecified types\n return 'text';\n }\n }\n\n onValueChanged(value: string): void {\n this.valueChanged.emit(value);\n }\n}\n","@if (isLoading)\n{\n<div>Loading...</div>\n}\n\n@if (!isLoading)\n{\n @switch (activeComponent)\n {\n @case ('text')\n {\n<hw-simple-text [dataInfo]=\"dataInfo\"\n [value]=\"value\"\n [readOnly]=\"readOnly\"\n (valueChanged)=\"onValueChanged($event)\">\n</hw-simple-text>\n }\n\n @case ('long-text')\n {\n<hw-long-text [dataInfo]=\"dataInfo\"\n [value]=\"value\"\n [readOnly]=\"readOnly\"\n (valueChanged)=\"onValueChanged($event)\">\n</hw-long-text>\n }\n\n @case ('enum')\n {\n<hw-simple-enum [dataInfo]=\"dataInfo\"\n [value]=\"value\"\n [readOnly]=\"readOnly\"\n (enumValueChange)=\"onValueChanged($event)\">\n</hw-simple-enum>\n }\n\n @case ('bool')\n {\n<hw-simple-bool [dataInfo]=\"dataInfo\"\n [value]=\"value\"\n [readOnly]=\"readOnly\"\n (checkboxValueChange)=\"onValueChanged($event)\">\n</hw-simple-bool>\n }\n\n @case ('date')\n {\n<hw-simple-date [dataInfo]=\"dataInfo\"\n [value]=\"value\"\n [readOnly]=\"readOnly\"\n (valueChange)=\"onValueChanged($event)\">\n</hw-simple-date>\n }\n\n @case ('fk')\n {\n<hw-fk-picker [dataInfo]=\"dataInfo\"\n [value]=\"value\"\n [readOnly]=\"readOnly\"\n [foreignKeyInfo]=\"foreignKeyInfo\"\n (valueChanged)=\"onValueChanged($event)\">\n</hw-fk-picker>\n }\n\n @default\n {\n<div>\n Unsupported component type.\n</div>\n }\n }\n}\n","/*\n * @honuware/ui/controls — schema-driven field controls (depends on foundation +\n * access). The leaf fields (simple-text, long-text, simple-bool, simple-enum,\n * simple-date), the composite-control type dispatcher, and the fk-picker\n * autocomplete. Selectors use the `hw-` prefix.\n */\nexport { SimpleTextComponent } from './simple-text/simple-text.component';\nexport { LongTextComponent } from './long-text/long-text.component';\nexport { SimpleBoolComponent } from './simple-bool/simple-bool.component';\nexport { SimpleEnumComponent } from './simple-enum/simple-enum.component';\nexport { SimpleDateComponent } from './simple-date/simple-date.component';\nexport { FkPickerComponent } from './fk-picker/fk-picker.component';\nexport { CompositeControlComponent } from './composite-control/composite-control.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i5"],"mappings":"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"}
|