@ngstarter-ui/components 21.0.18 → 21.0.19

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.
Files changed (71) hide show
  1. package/ai/component-registry.json +25 -11
  2. package/fesm2022/ngstarter-ui-components-chips.mjs +72 -38
  3. package/fesm2022/ngstarter-ui-components-chips.mjs.map +1 -1
  4. package/fesm2022/ngstarter-ui-components-color-picker.mjs +1 -1
  5. package/fesm2022/ngstarter-ui-components-color-picker.mjs.map +1 -1
  6. package/fesm2022/ngstarter-ui-components-comment-editor.mjs +2 -2
  7. package/fesm2022/ngstarter-ui-components-comment-editor.mjs.map +1 -1
  8. package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-CpZ5gJOc.mjs → ngstarter-ui-components-content-editor-code-block.component-Czb0bvcr.mjs} +2 -2
  9. package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-CpZ5gJOc.mjs.map → ngstarter-ui-components-content-editor-code-block.component-Czb0bvcr.mjs.map} +1 -1
  10. package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-ghm0_0AF.mjs → ngstarter-ui-components-content-editor-embed-block-c8Pq0Jdq.mjs} +3 -3
  11. package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-ghm0_0AF.mjs.map → ngstarter-ui-components-content-editor-embed-block-c8Pq0Jdq.mjs.map} +1 -1
  12. package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-C1FH89Sj.mjs → ngstarter-ui-components-content-editor-heading-block.component-CT5g3MLZ.mjs} +2 -2
  13. package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-C1FH89Sj.mjs.map → ngstarter-ui-components-content-editor-heading-block.component-CT5g3MLZ.mjs.map} +1 -1
  14. package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-ahCIfpvQ.mjs → ngstarter-ui-components-content-editor-image-block.component-Cp_Yo7zI.mjs} +3 -3
  15. package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-ahCIfpvQ.mjs.map → ngstarter-ui-components-content-editor-image-block.component-Cp_Yo7zI.mjs.map} +1 -1
  16. package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-guhW_EyK.mjs → ngstarter-ui-components-content-editor-list-block.component-BvineUWy.mjs} +2 -2
  17. package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-guhW_EyK.mjs.map → ngstarter-ui-components-content-editor-list-block.component-BvineUWy.mjs.map} +1 -1
  18. package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DNLTNGYa.mjs → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-4_TqxgpH.mjs} +13 -13
  19. package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DNLTNGYa.mjs.map → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-4_TqxgpH.mjs.map} +1 -1
  20. package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-DjgGUc7s.mjs → ngstarter-ui-components-content-editor-paragraph-block.component-sH44U1I8.mjs} +2 -2
  21. package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-DjgGUc7s.mjs.map → ngstarter-ui-components-content-editor-paragraph-block.component-sH44U1I8.mjs.map} +1 -1
  22. package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-B3pek1H6.mjs → ngstarter-ui-components-content-editor-quote-block.component-CA3KoZ-u.mjs} +2 -2
  23. package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-B3pek1H6.mjs.map → ngstarter-ui-components-content-editor-quote-block.component-CA3KoZ-u.mjs.map} +1 -1
  24. package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-bgBNjf4d.mjs → ngstarter-ui-components-content-editor-table-block.component-GTZiYUjU.mjs} +2 -2
  25. package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-bgBNjf4d.mjs.map → ngstarter-ui-components-content-editor-table-block.component-GTZiYUjU.mjs.map} +1 -1
  26. package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-DPlYe-_8.mjs → ngstarter-ui-components-content-editor-video-block.component-CzMZ1s6C.mjs} +3 -3
  27. package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-DPlYe-_8.mjs.map → ngstarter-ui-components-content-editor-video-block.component-CzMZ1s6C.mjs.map} +1 -1
  28. package/fesm2022/ngstarter-ui-components-content-editor.mjs +1 -1
  29. package/fesm2022/ngstarter-ui-components-country-select.mjs +1 -1
  30. package/fesm2022/ngstarter-ui-components-country-select.mjs.map +1 -1
  31. package/fesm2022/ngstarter-ui-components-currency-select.mjs +1 -1
  32. package/fesm2022/ngstarter-ui-components-currency-select.mjs.map +1 -1
  33. package/fesm2022/ngstarter-ui-components-date-format-select.mjs +1 -1
  34. package/fesm2022/ngstarter-ui-components-date-format-select.mjs.map +1 -1
  35. package/fesm2022/ngstarter-ui-components-filter-builder.mjs +1 -1
  36. package/fesm2022/ngstarter-ui-components-filter-builder.mjs.map +1 -1
  37. package/fesm2022/ngstarter-ui-components-form-field.mjs +9 -9
  38. package/fesm2022/ngstarter-ui-components-form-field.mjs.map +1 -1
  39. package/fesm2022/{ngstarter-ui-components-form-renderer-autocomplete-many-field-BZBE7KSU.mjs → ngstarter-ui-components-form-renderer-autocomplete-many-field-BLhfO1zC.mjs} +3 -3
  40. package/fesm2022/ngstarter-ui-components-form-renderer-autocomplete-many-field-BLhfO1zC.mjs.map +1 -0
  41. package/fesm2022/{ngstarter-ui-components-form-renderer-datepicker-field-Bzc0TPO9.mjs → ngstarter-ui-components-form-renderer-datepicker-field-DRSVe0gK.mjs} +2 -2
  42. package/fesm2022/{ngstarter-ui-components-form-renderer-datepicker-field-Bzc0TPO9.mjs.map → ngstarter-ui-components-form-renderer-datepicker-field-DRSVe0gK.mjs.map} +1 -1
  43. package/fesm2022/{ngstarter-ui-components-form-renderer-input-field-UaMfHCtj.mjs → ngstarter-ui-components-form-renderer-input-field-DpGLKZjz.mjs} +2 -2
  44. package/fesm2022/{ngstarter-ui-components-form-renderer-input-field-UaMfHCtj.mjs.map → ngstarter-ui-components-form-renderer-input-field-DpGLKZjz.mjs.map} +1 -1
  45. package/fesm2022/{ngstarter-ui-components-form-renderer-select-field-Dvg--xrB.mjs → ngstarter-ui-components-form-renderer-select-field-CCbpYyZo.mjs} +2 -2
  46. package/fesm2022/{ngstarter-ui-components-form-renderer-select-field-Dvg--xrB.mjs.map → ngstarter-ui-components-form-renderer-select-field-CCbpYyZo.mjs.map} +1 -1
  47. package/fesm2022/{ngstarter-ui-components-form-renderer-textarea-field-4zH7FTQ1.mjs → ngstarter-ui-components-form-renderer-textarea-field-D89GlMDO.mjs} +2 -2
  48. package/fesm2022/{ngstarter-ui-components-form-renderer-textarea-field-4zH7FTQ1.mjs.map → ngstarter-ui-components-form-renderer-textarea-field-D89GlMDO.mjs.map} +1 -1
  49. package/fesm2022/{ngstarter-ui-components-form-renderer-timezone-field-BpH65Hd-.mjs → ngstarter-ui-components-form-renderer-timezone-field-C9wz7zPg.mjs} +2 -2
  50. package/fesm2022/{ngstarter-ui-components-form-renderer-timezone-field-BpH65Hd-.mjs.map → ngstarter-ui-components-form-renderer-timezone-field-C9wz7zPg.mjs.map} +1 -1
  51. package/fesm2022/ngstarter-ui-components-form-renderer.mjs +6 -6
  52. package/fesm2022/ngstarter-ui-components-image-designer.mjs +1 -1
  53. package/fesm2022/ngstarter-ui-components-image-designer.mjs.map +1 -1
  54. package/fesm2022/ngstarter-ui-components-paginator.mjs +1 -1
  55. package/fesm2022/ngstarter-ui-components-paginator.mjs.map +1 -1
  56. package/fesm2022/ngstarter-ui-components-panel.mjs +8 -4
  57. package/fesm2022/ngstarter-ui-components-panel.mjs.map +1 -1
  58. package/fesm2022/ngstarter-ui-components-pin-input.mjs +1 -1
  59. package/fesm2022/ngstarter-ui-components-pin-input.mjs.map +1 -1
  60. package/fesm2022/ngstarter-ui-components-select.mjs +19 -4
  61. package/fesm2022/ngstarter-ui-components-select.mjs.map +1 -1
  62. package/fesm2022/ngstarter-ui-components-text-editor.mjs +2 -2
  63. package/fesm2022/ngstarter-ui-components-text-editor.mjs.map +1 -1
  64. package/fesm2022/ngstarter-ui-components-timezone-select.mjs +1 -1
  65. package/fesm2022/ngstarter-ui-components-timezone-select.mjs.map +1 -1
  66. package/package.json +1 -1
  67. package/types/ngstarter-ui-components-chips.d.ts +15 -6
  68. package/types/ngstarter-ui-components-form-field.d.ts +3 -2
  69. package/types/ngstarter-ui-components-panel.d.ts +3 -1
  70. package/types/ngstarter-ui-components-select.d.ts +5 -1
  71. package/fesm2022/ngstarter-ui-components-form-renderer-autocomplete-many-field-BZBE7KSU.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-filter-builder.mjs","sources":["../../../projects/components/filter-builder/src/filter-builder-operation-name.directive.ts","../../../projects/components/filter-builder/src/filter-builder-operation-icon.directive.ts","../../../projects/components/filter-builder/src/filter-builder-operation-def.directive.ts","../../../projects/components/filter-builder/src/filter-builder/filter-builder.ts","../../../projects/components/filter-builder/src/filter-builder/filter-builder.html","../../../projects/components/filter-builder/ngstarter-ui-components-filter-builder.ts"],"sourcesContent":["import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsFilterBuilderOperationName]',\n standalone: true\n})\nexport class FilterBuilderOperationNameDirective {\n readonly templateRef = inject(TemplateRef);\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsFilterBuilderOperationIcon]',\n standalone: true\n})\nexport class FilterBuilderOperationIconDirective {\n readonly templateRef = inject(TemplateRef);\n}\n","import { Directive, contentChild, input } from '@angular/core';\nimport { FilterBuilderOperationNameDirective } from './filter-builder-operation-name.directive';\nimport { FilterBuilderOperationIconDirective } from './filter-builder-operation-icon.directive';\n\n@Directive({\n selector: '[ngsFilterBuilderOperationDef]',\n standalone: true\n})\nexport class FilterBuilderOperationDefDirective {\n id = input('', {\n alias: 'ngsFilterBuilderOperationDef'\n });\n allowedDataTypes = input<string[]>([]);\n readonly operationName = contentChild(FilterBuilderOperationNameDirective);\n readonly operationIcon = contentChild(FilterBuilderOperationIconDirective);\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n inject,\n OnInit,\n output,\n PLATFORM_ID,\n viewChildren,\n contentChildren, TemplateRef, input\n} from '@angular/core';\nimport { CommonModule, isPlatformServer, NgTemplateOutlet } from '@angular/common';\nimport { FilterBuilderOperationDefDirective } from '../filter-builder-operation-def.directive';\nimport {\n FilterBuilderCondition,\n FilterBuilderFieldDataSourceItem,\n FilterBuilderFieldDef,\n FilterBuilderGroup,\n FilterBuilderItemType\n} from '../types';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { MenuTrigger, Menu, MenuItem, MenuContent, MenuOptionGroupDirective } from '@ngstarter-ui/components/menu';\nimport { FormsModule } from '@angular/forms';\nimport { Select, Option } from '@ngstarter-ui/components/select';\nimport { FilterBuilderOperationNameDirective } from '../filter-builder-operation-name.directive';\nimport { AutoFocusDirective, FocusElementDirective } from '@ngstarter-ui/components/core';\nimport { Input } from '@ngstarter-ui/components/input';\nimport { FormField } from '@ngstarter-ui/components/form-field';\n\n@Component({\n selector: 'ngs-filter-builder',\n exportAs: 'ngsFilterBuilder',\n imports: [\n CommonModule,\n Icon,\n MenuTrigger,\n Menu,\n MenuContent,\n MenuOptionGroupDirective,\n FormsModule,\n MenuItem,\n FormField,\n Select,\n Option,\n AutoFocusDirective,\n FocusElementDirective,\n Input,\n FilterBuilderOperationDefDirective,\n FilterBuilderOperationNameDirective\n ],\n templateUrl: './filter-builder.html',\n styleUrl: './filter-builder.scss',\n host: {\n 'class': 'ngs-filter-builder'\n },\n})\nexport class FilterBuilder implements OnInit, AfterViewInit {\n protected _cdr = inject(ChangeDetectorRef);\n protected _isServer = isPlatformServer(inject(PLATFORM_ID));\n protected _operationAllowedTypesMap: Map<string, string[]> = new Map();\n private _resetMethodMap: { [prop: string]: (condition: FilterBuilderCondition) => void } = {\n '_resetStringValue': this._resetStringValue,\n '_resetBooleanValue': this._resetBooleanValue,\n '_resetArrayValue': this._resetArrayValue,\n '_resetNumberValue': this._resetNumberValue,\n };\n\n value = input<FilterBuilderGroup[]>([]);\n fieldDefs = input<FilterBuilderFieldDef[]>([]);\n categories = input([]);\n groupOperations = input([\n {\n id: 'and',\n name: 'And'\n },\n {\n id: 'or',\n name: 'Or'\n }\n ]);\n customOperations = input([]);\n\n protected _logicalOperator = this.groupOperations()[0].id;\n readonly _prebuiltOperationDefs = viewChildren(FilterBuilderOperationDefDirective);\n readonly _customOperationDefs = contentChildren(FilterBuilderOperationDefDirective);\n protected _operationDefs: FilterBuilderOperationDefDirective[] = [];\n\n readonly valueChanged = output<FilterBuilderGroup[]>();\n\n protected _value: FilterBuilderGroup[] = [];\n protected _operations: any[] = [];\n protected editItem: FilterBuilderCondition | undefined;\n protected _tempMultipleValue: any[] = [];\n\n ngOnInit() {\n if (this.value().length) {\n if (!this._isGroup(this.value()[0])) {\n throw new Error('Invalid filter value, first element should be a filter group');\n }\n\n this._logicalOperator = this.value()[0]['logicalOperator'] as string;\n this._value = JSON.parse(JSON.stringify(this.value()[0]['value']));\n }\n }\n\n ngAfterViewInit(): void {\n this._operationDefs = [...this._prebuiltOperationDefs(), ...this._customOperationDefs()];\n this._operationDefs.forEach(operationDef => {\n this._operations.push({\n id: operationDef.id(),\n name: operationDef.operationName()?.templateRef\n });\n operationDef.allowedDataTypes().forEach((allowedType: string) => {\n if (!this._operationAllowedTypesMap.has(allowedType)) {\n this._operationAllowedTypesMap.set(allowedType, []);\n }\n\n const allowedTypeValue = this._operationAllowedTypesMap.get(allowedType) as string[];\n allowedTypeValue.push(operationDef.id());\n this._operationAllowedTypesMap.set(allowedType, allowedTypeValue);\n });\n });\n this._cdr.detectChanges();\n }\n\n addCondition(targetGroup?: FilterBuilderGroup) {\n const value = !targetGroup ? this._value : targetGroup.value;\n value.push(\n {\n value: [this.fieldDefs()[0].dataField, this._operations[0].id, '']\n }\n );\n }\n\n addGroup(targetGroup?: FilterBuilderGroup) {\n const value = !targetGroup ? this._value : targetGroup.value;\n value.push(\n {\n logicalOperator: this.groupOperations()[0].id,\n value: []\n }\n );\n }\n\n getConditionField(dataField: string): FilterBuilderFieldDef | undefined {\n return this.fieldDefs().find(field => field.dataField === dataField);\n }\n\n getConditionOperation(id: string) {\n return this._operations.find(operation => operation.id === id);\n }\n\n getSelectedGroupOperationName(targetGroup?: FilterBuilderGroup): string {\n const groupLogicalOperatorId = targetGroup ? targetGroup.logicalOperator : this._logicalOperator\n return this.groupOperations().find(groupOperator => groupOperator.id === groupLogicalOperatorId)?.name || '';\n }\n\n selectConditionField(item: FilterBuilderCondition, field: FilterBuilderFieldDef): void {\n let allowedTypes = this._operationAllowedTypesMap.get(field.dataType) as string[];\n item['value'][0] = field.dataField;\n item['value'][1] = allowedTypes[0];\n this._resetValue(field, item);\n this.editItem = undefined;\n this._emitChangeEvent();\n }\n\n operationChanged(item: FilterBuilderCondition, operation: string): void {\n const oldOperation = item['value'][1];\n\n if (oldOperation === 'equals' && operation === 'isAnyOf') {\n item['value'][2] = [];\n } else if (oldOperation === 'isAnyOf' && operation === 'equals') {\n item['value'][2] = null;\n }\n\n if (oldOperation === 'isBetween' && operation !== 'isBetween') {\n item['value'][2] = null;\n } else if (oldOperation !== 'isBetween' && operation === 'isBetween') {\n item['value'][2] = [];\n }\n\n if (['isNotBlank', 'isBlank'].includes(operation)) {\n item['value'][2] = null;\n }\n\n item['value'][1] = operation;\n this.editItem = undefined;\n this._emitChangeEvent();\n }\n\n removeCondition(index: number, items: FilterBuilderItemType[]): void {\n items.splice(index, 1);\n this._emitChangeEvent();\n }\n\n isOperationAllowedForCondition(dataField: string, operationId: string): boolean {\n const fieldDef = this.fieldDefs().find(f =>\n f.dataField === dataField\n ) as FilterBuilderFieldDef;\n\n let allowedTypes = this._operationAllowedTypesMap.get(fieldDef.dataType);\n\n if (!allowedTypes) {\n throw new Error('There are not operations for the datatype: ' + fieldDef.dataType);\n }\n\n return allowedTypes.includes(operationId);\n }\n\n modifyValue(item: FilterBuilderCondition): void {\n this.editItem = item;\n if (this.getFieldType(item) === 'array' && item['value'][1] === 'isAnyOf') {\n this._tempMultipleValue = [...(item['value'][2] || [])];\n }\n }\n\n getFieldType(item: FilterBuilderCondition): string {\n return (this.fieldDefs().find(f =>\n f.dataField === item['value'][0]\n ) as FilterBuilderFieldDef).dataType;\n }\n\n isValueNotEmpty(item: FilterBuilderCondition): boolean {\n if (this.getFieldType(item) === 'array') {\n if (item['value'][1] === 'equals') {\n return item['value'][2] !== null && item['value'][2] !== '';\n } else {\n return item['value'][2].length > 0;\n }\n }\n\n if (item['value'][1] === 'isBetween') {\n return item['value'][2].length === 2 && item['value'][2][0] !== null && item['value'][2][1] !== null;\n }\n\n return item['value'][2] !== null && item['value'][2] !== '';\n }\n\n cancelEdit(delay = 0): void {\n setTimeout(() => {\n this.editItem = undefined;\n this._cdr.detectChanges();\n }, delay);\n }\n\n getOptions(item: FilterBuilderCondition): FilterBuilderFieldDataSourceItem[] {\n const fieldDef = this._getFieldDef(item);\n return fieldDef.lookup?.dataSource as FilterBuilderFieldDataSourceItem[];\n }\n\n getDataSourceItemNameById(item: FilterBuilderCondition, dataSourceItemId: string): string {\n const fieldDef = this._getFieldDef(item);\n return (fieldDef.lookup?.dataSource as FilterBuilderFieldDataSourceItem[]).find(\n item => item.id === dataSourceItemId\n )?.name || '';\n }\n\n selectBlur(event: FocusEvent): void {\n if (this.editItem && this.getFieldType(this.editItem) === 'array' && this.editItem['value'][1] === 'isAnyOf') {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const select = event.target as HTMLElement;\n\n setTimeout(() => {\n const formField = select.closest('.ngs-form-field');\n\n if (formField) {\n this.cancelEdit();\n }\n }, 200);\n }\n\n selectClosed(): void {\n if (this.editItem && this.getFieldType(this.editItem) === 'array' && this.editItem['value'][1] === 'isAnyOf') {\n this.editItem['value'][2] = [...this._tempMultipleValue];\n }\n this.cancelEdit();\n setTimeout(() => {\n this._emitChangeEvent();\n });\n }\n\n protected operationIconTemplateRef(operation: FilterBuilderOperationDefDirective): TemplateRef<any> {\n return operation.operationIcon()?.templateRef as TemplateRef<any>;\n }\n\n protected operationNameTemplateRef(operation: FilterBuilderOperationDefDirective): TemplateRef<any> {\n return operation.operationName()?.templateRef as TemplateRef<any>;\n }\n\n protected _isGroup(item: FilterBuilderItemType): item is FilterBuilderGroup {\n return 'logicalOperator' in item;\n }\n\n protected _isCondition(item: FilterBuilderItemType): item is FilterBuilderCondition {\n return !('logicalOperator' in item);\n }\n\n protected _emitChangeEvent(): void {\n const value = this._normalizeValue(this._value);\n\n if (value.length > 0) {\n this.valueChanged.emit([\n {\n logicalOperator: this._logicalOperator,\n value: value\n }\n ]);\n } else {\n this.valueChanged.emit([]);\n }\n }\n\n private _getFieldDef(condition: FilterBuilderCondition): FilterBuilderFieldDef {\n return this.fieldDefs().find(f =>\n f.dataField === condition['value'][0]\n ) as FilterBuilderFieldDef;\n }\n\n private _resetValue(field: FilterBuilderFieldDef, condition: FilterBuilderCondition): void {\n const fieldDef = this.fieldDefs().find(f =>\n f.dataField === field.dataField\n ) as FilterBuilderFieldDef;\n const resetMethod = '_reset' + this._capitalizeFirstLetter(fieldDef.dataType) + 'Value';\n this._resetMethodMap[resetMethod](condition);\n }\n\n private _resetStringValue(condition: FilterBuilderCondition): void {\n condition['value'][2] = '';\n }\n\n private _resetNumberValue(condition: FilterBuilderCondition): void {\n condition['value'][2] = null;\n }\n\n private _resetArrayValue(condition: FilterBuilderCondition): void {\n if (condition['value'][1] === 'equals') {\n condition['value'][2] = null;\n } else {\n condition['value'][2] = [];\n }\n }\n\n private _resetBooleanValue(condition: FilterBuilderCondition): void {\n condition['value'][2] = false;\n }\n\n private _capitalizeFirstLetter(value: string) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n }\n\n private _normalizeValue(value: FilterBuilderItemType[]): FilterBuilderItemType[] {\n let result: FilterBuilderItemType[] = [];\n value.forEach(item => {\n if (this._isGroup(item)) {\n const groupValue = this._normalizeValue(item.value);\n\n if (groupValue.length > 0) {\n result = [...result, {\n logicalOperator: item.logicalOperator,\n value: groupValue\n }];\n }\n } else {\n if (this.isValueNotEmpty(item)) {\n result.push(item);\n }\n }\n });\n return result;\n }\n}\n","@if (_isServer) {\n <ng-content/>\n}\n\n<ng-template #itemsTpl let-items>\n <div class=\"group\">\n @for (item of items; track item; let index = $index) {\n @if (_isGroup(item)) {\n <div class=\"flex items-center group-operations\">\n <div class=\"remove\" (click)=\"removeCondition(index, items)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\" class=\"font-icon\"/>\n </div>\n <button [ngsMenuTriggerFor]=\"nestedGroupOperationsMenu\"\n #nestedGroupOperationsMenuTrigger=\"ngsMenuTrigger\"\n class=\"group-operation\">\n {{ getSelectedGroupOperationName(item) }}\n </button>\n <div [ngsMenuTriggerFor]=\"addGroupMenu\" class=\"add\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"font-icon\"/>\n </div>\n <ngs-menu #nestedGroupOperationsMenu=\"ngsMenu\">\n <div ngsMenuOptionGroup [(ngModel)]=\"item['logicalOperator']\">\n @for (groupOperation of groupOperations(); track groupOperation.id) {\n <ngs-option [value]=\"groupOperation.id\"\n (click)=\"nestedGroupOperationsMenuTrigger.closeMenu('click')\">{{ groupOperation.name }}\n </ngs-option>\n }\n </div>\n </ngs-menu>\n <ngs-menu #addGroupMenu=\"ngsMenu\">\n <button ngs-menu-item (click)=\"addCondition(item)\">Add Condition</button>\n <button ngs-menu-item (click)=\"addGroup(item)\">Add Group</button>\n </ngs-menu>\n </div>\n @if (item['value'].length > 0) {\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: item['value'] }\"/>\n }\n } @else if (_isCondition(item)) {\n <div class=\"condition\">\n <div class=\"remove\" (click)=\"removeCondition(index, items)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\" class=\"font-icon\"/>\n </div>\n <button class=\"condition-field\"\n #fieldsMenuTrigger=\"ngsMenuTrigger\"\n [ngsMenuTriggerFor]=\"fieldsMenu\">{{ getConditionField(item['value'][0])?.name }}\n </button>\n <button class=\"condition-operation\"\n #operationsMenuTrigger=\"ngsMenuTrigger\"\n [ngsMenuTriggerFor]=\"operationsMenu\">\n <ng-template [ngTemplateOutlet]=\"getConditionOperation(item['value'][1])?.name\"/>\n </button>\n <div class=\"relative\">\n @if (editItem && editItem === item) {\n <div class=\"absolute start-0 top-0 -translate-y-1/2\">\n @switch (getFieldType(editItem)) {\n @case ('array') {\n @switch (editItem['value'][1]) {\n @case ('equals') {\n <ngs-form-field class=\"form-field\">\n <ngs-select placeholder=\"Select...\"\n ngsAutoFocus\n (blur)=\"selectBlur($event)\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n @for (option of getOptions(editItem); track option.id) {\n <ngs-option [value]=\"option.id\">{{ option.name }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n @case ('isAnyOf') {\n <ngs-form-field class=\"form-field\">\n <ngs-select placeholder=\"Select...\" multiple\n ngsAutoFocus\n (blur)=\"selectBlur($event)\"\n [(ngModel)]=\"_tempMultipleValue\"\n (closed)=\"selectClosed()\">\n @for (option of getOptions(editItem); track option.id) {\n <ngs-option [value]=\"option.id\">{{ option.name }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n }\n }\n @case ('number') {\n @switch (editItem['value'][1]) {\n @case ('isBetween') {\n <div class=\"flex gap-2 items-center\"\n ngsFocusElement (elementBlurred)=\"cancelEdit()\">\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput ngsAutoFocus\n [(ngModel)]=\"item['value'][2][0]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n <div class=\"text-neutral-500\">&ndash;</div>\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput\n [(ngModel)]=\"item['value'][2][1]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n </div>\n }\n @default {\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput ngsAutoFocus\n (blur)=\"cancelEdit()\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n }\n }\n }\n @default {\n <ngs-form-field class=\"form-field\">\n <input type=\"text\" ngsInput ngsAutoFocus\n (blur)=\"cancelEdit()\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n }\n }\n </div>\n } @else {\n @if (item['value'][1] !== 'isBlank' && item['value'][1] !== 'isNotBlank') {\n @if (isValueNotEmpty(item)) {\n @if (getFieldType(item) === 'array') {\n @if (item['value'][1] === 'equals') {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n {{ getDataSourceItemNameById(item, item['value'][2]) }}\n </button>\n } @else {\n <button class=\"condition-value flex items-center gap-2\" (click)=\"modifyValue(item)\">\n @for (dataSourceItemId of item['value'][2]; track dataSourceItemId; let last = $last) {\n <span>{{ getDataSourceItemNameById(item, dataSourceItemId) }}</span>\n @if (!last) {\n <span class=\"text-neutral-500\">|</span>\n }\n }\n </button>\n }\n } @else {\n @if (item['value'][1] === 'isBetween') {\n <button class=\"condition-value flex items-center gap-2\" (click)=\"modifyValue(item)\">\n <span>{{ item['value'][2][0] }}</span>\n <span class=\"text-neutral-500\">&ndash;</span>\n <span>{{ item['value'][2][1] }}</span>\n </button>\n } @else {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n <span>{{ item['value'][2] }}</span>\n </button>\n }\n }\n } @else {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n <span i18n>&lt;enter a value&gt;</span>\n </button>\n }\n }\n }\n </div>\n </div>\n <ngs-menu #fieldsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [ngModel]=\"item['value'][0]\">\n @for (fieldDef of fieldDefs(); track fieldDef) {\n <ngs-option [value]=\"fieldDef.dataField\"\n (click)=\"selectConditionField(item, fieldDef); fieldsMenuTrigger.closeMenu('click')\">{{ fieldDef.name }}\n </ngs-option>\n }\n </div>\n </ng-template>\n </ngs-menu>\n <ngs-menu #operationsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [ngModel]=\"item['value'][1]\">\n @for (operation of _operationDefs; track operation.id()) {\n <div [hidden]=\"!isOperationAllowedForCondition(item['value'][0], operation.id())\">\n <ngs-option [value]=\"operation.id()\"\n (click)=\"operationChanged(item, operation.id()); operationsMenuTrigger.closeMenu('click')\">\n <div class=\"flex items-center gap-3\">\n @if (operation.operationIcon()) {\n <ng-template [ngTemplateOutlet]=\"operationIconTemplateRef(operation)\"/>\n }\n <div>\n <ng-template [ngTemplateOutlet]=\"operationNameTemplateRef(operation)\"/>\n </div>\n </div>\n </ngs-option>\n </div>\n }\n </div>\n </ng-template>\n </ngs-menu>\n }\n }\n </div>\n</ng-template>\n\n<div class=\"group\">\n <div class=\"flex items-center group-operations\">\n <button [ngsMenuTriggerFor]=\"groupOperationsMenu\"\n #groupOperationsMenuTrigger=\"ngsMenuTrigger\"\n class=\"group-operation\">\n {{ getSelectedGroupOperationName() }}\n </button>\n <div [ngsMenuTriggerFor]=\"addMenu\" class=\"add\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"font-icon\"/>\n </div>\n </div>\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: _value }\"/>\n</div>\n\n<ngs-menu #groupOperationsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [(ngModel)]=\"_logicalOperator\" (ngModelChange)=\"_emitChangeEvent()\">\n @for (operation of groupOperations(); track operation.id) {\n <ngs-option [value]=\"operation.id\"\n (click)=\"groupOperationsMenuTrigger.closeMenu('click')\">{{ operation.name }}\n </ngs-option>\n }\n </div>\n </ng-template>\n</ngs-menu>\n<ngs-menu #addMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <button ngs-menu-item (click)=\"addCondition()\">Add Condition</button>\n <button ngs-menu-item (click)=\"addGroup()\">Add Group</button>\n </ng-template>\n</ngs-menu>\n\n<ng-container ngsFilterBuilderOperationDef=\"contains\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Contains</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"doesNotContain\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Does not contain</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"startsWith\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Starts with</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"endsWith\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Ends with</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"equals\" [allowedDataTypes]=\"['string', 'number', 'array', 'boolean']\">\n <ng-template ngsFilterBuilderOperationName>Equals</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"notEquals\" [allowedDataTypes]=\"['string', 'number', 'boolean']\">\n <ng-template ngsFilterBuilderOperationName>Not equals</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isLessThen\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is less then</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isLessThenOrEqual\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is less then or equal to</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isGreaterThen\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is greater then</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isGreaterThenOrEqual\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is greater then or equal to</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isBlank\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Is blank</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isNotBlank\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Is not blank</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isBetween\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is between</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isAnyOf\" [allowedDataTypes]=\"['array']\">\n <ng-template ngsFilterBuilderOperationName>Is any of</ng-template>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-filter-builder.mjs","sources":["../../../projects/components/filter-builder/src/filter-builder-operation-name.directive.ts","../../../projects/components/filter-builder/src/filter-builder-operation-icon.directive.ts","../../../projects/components/filter-builder/src/filter-builder-operation-def.directive.ts","../../../projects/components/filter-builder/src/filter-builder/filter-builder.ts","../../../projects/components/filter-builder/src/filter-builder/filter-builder.html","../../../projects/components/filter-builder/ngstarter-ui-components-filter-builder.ts"],"sourcesContent":["import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsFilterBuilderOperationName]',\n standalone: true\n})\nexport class FilterBuilderOperationNameDirective {\n readonly templateRef = inject(TemplateRef);\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsFilterBuilderOperationIcon]',\n standalone: true\n})\nexport class FilterBuilderOperationIconDirective {\n readonly templateRef = inject(TemplateRef);\n}\n","import { Directive, contentChild, input } from '@angular/core';\nimport { FilterBuilderOperationNameDirective } from './filter-builder-operation-name.directive';\nimport { FilterBuilderOperationIconDirective } from './filter-builder-operation-icon.directive';\n\n@Directive({\n selector: '[ngsFilterBuilderOperationDef]',\n standalone: true\n})\nexport class FilterBuilderOperationDefDirective {\n id = input('', {\n alias: 'ngsFilterBuilderOperationDef'\n });\n allowedDataTypes = input<string[]>([]);\n readonly operationName = contentChild(FilterBuilderOperationNameDirective);\n readonly operationIcon = contentChild(FilterBuilderOperationIconDirective);\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n inject,\n OnInit,\n output,\n PLATFORM_ID,\n viewChildren,\n contentChildren, TemplateRef, input\n} from '@angular/core';\nimport { CommonModule, isPlatformServer, NgTemplateOutlet } from '@angular/common';\nimport { FilterBuilderOperationDefDirective } from '../filter-builder-operation-def.directive';\nimport {\n FilterBuilderCondition,\n FilterBuilderFieldDataSourceItem,\n FilterBuilderFieldDef,\n FilterBuilderGroup,\n FilterBuilderItemType\n} from '../types';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { MenuTrigger, Menu, MenuItem, MenuContent, MenuOptionGroupDirective } from '@ngstarter-ui/components/menu';\nimport { FormsModule } from '@angular/forms';\nimport { Select, Option } from '@ngstarter-ui/components/select';\nimport { FilterBuilderOperationNameDirective } from '../filter-builder-operation-name.directive';\nimport { AutoFocusDirective, FocusElementDirective } from '@ngstarter-ui/components/core';\nimport { Input } from '@ngstarter-ui/components/input';\nimport { FormField } from '@ngstarter-ui/components/form-field';\n\n@Component({\n selector: 'ngs-filter-builder',\n exportAs: 'ngsFilterBuilder',\n imports: [\n CommonModule,\n Icon,\n MenuTrigger,\n Menu,\n MenuContent,\n MenuOptionGroupDirective,\n FormsModule,\n MenuItem,\n FormField,\n Select,\n Option,\n AutoFocusDirective,\n FocusElementDirective,\n Input,\n FilterBuilderOperationDefDirective,\n FilterBuilderOperationNameDirective\n ],\n templateUrl: './filter-builder.html',\n styleUrl: './filter-builder.scss',\n host: {\n 'class': 'ngs-filter-builder'\n },\n})\nexport class FilterBuilder implements OnInit, AfterViewInit {\n protected _cdr = inject(ChangeDetectorRef);\n protected _isServer = isPlatformServer(inject(PLATFORM_ID));\n protected _operationAllowedTypesMap: Map<string, string[]> = new Map();\n private _resetMethodMap: { [prop: string]: (condition: FilterBuilderCondition) => void } = {\n '_resetStringValue': this._resetStringValue,\n '_resetBooleanValue': this._resetBooleanValue,\n '_resetArrayValue': this._resetArrayValue,\n '_resetNumberValue': this._resetNumberValue,\n };\n\n value = input<FilterBuilderGroup[]>([]);\n fieldDefs = input<FilterBuilderFieldDef[]>([]);\n categories = input([]);\n groupOperations = input([\n {\n id: 'and',\n name: 'And'\n },\n {\n id: 'or',\n name: 'Or'\n }\n ]);\n customOperations = input([]);\n\n protected _logicalOperator = this.groupOperations()[0].id;\n readonly _prebuiltOperationDefs = viewChildren(FilterBuilderOperationDefDirective);\n readonly _customOperationDefs = contentChildren(FilterBuilderOperationDefDirective);\n protected _operationDefs: FilterBuilderOperationDefDirective[] = [];\n\n readonly valueChanged = output<FilterBuilderGroup[]>();\n\n protected _value: FilterBuilderGroup[] = [];\n protected _operations: any[] = [];\n protected editItem: FilterBuilderCondition | undefined;\n protected _tempMultipleValue: any[] = [];\n\n ngOnInit() {\n if (this.value().length) {\n if (!this._isGroup(this.value()[0])) {\n throw new Error('Invalid filter value, first element should be a filter group');\n }\n\n this._logicalOperator = this.value()[0]['logicalOperator'] as string;\n this._value = JSON.parse(JSON.stringify(this.value()[0]['value']));\n }\n }\n\n ngAfterViewInit(): void {\n this._operationDefs = [...this._prebuiltOperationDefs(), ...this._customOperationDefs()];\n this._operationDefs.forEach(operationDef => {\n this._operations.push({\n id: operationDef.id(),\n name: operationDef.operationName()?.templateRef\n });\n operationDef.allowedDataTypes().forEach((allowedType: string) => {\n if (!this._operationAllowedTypesMap.has(allowedType)) {\n this._operationAllowedTypesMap.set(allowedType, []);\n }\n\n const allowedTypeValue = this._operationAllowedTypesMap.get(allowedType) as string[];\n allowedTypeValue.push(operationDef.id());\n this._operationAllowedTypesMap.set(allowedType, allowedTypeValue);\n });\n });\n this._cdr.detectChanges();\n }\n\n addCondition(targetGroup?: FilterBuilderGroup) {\n const value = !targetGroup ? this._value : targetGroup.value;\n value.push(\n {\n value: [this.fieldDefs()[0].dataField, this._operations[0].id, '']\n }\n );\n }\n\n addGroup(targetGroup?: FilterBuilderGroup) {\n const value = !targetGroup ? this._value : targetGroup.value;\n value.push(\n {\n logicalOperator: this.groupOperations()[0].id,\n value: []\n }\n );\n }\n\n getConditionField(dataField: string): FilterBuilderFieldDef | undefined {\n return this.fieldDefs().find(field => field.dataField === dataField);\n }\n\n getConditionOperation(id: string) {\n return this._operations.find(operation => operation.id === id);\n }\n\n getSelectedGroupOperationName(targetGroup?: FilterBuilderGroup): string {\n const groupLogicalOperatorId = targetGroup ? targetGroup.logicalOperator : this._logicalOperator\n return this.groupOperations().find(groupOperator => groupOperator.id === groupLogicalOperatorId)?.name || '';\n }\n\n selectConditionField(item: FilterBuilderCondition, field: FilterBuilderFieldDef): void {\n let allowedTypes = this._operationAllowedTypesMap.get(field.dataType) as string[];\n item['value'][0] = field.dataField;\n item['value'][1] = allowedTypes[0];\n this._resetValue(field, item);\n this.editItem = undefined;\n this._emitChangeEvent();\n }\n\n operationChanged(item: FilterBuilderCondition, operation: string): void {\n const oldOperation = item['value'][1];\n\n if (oldOperation === 'equals' && operation === 'isAnyOf') {\n item['value'][2] = [];\n } else if (oldOperation === 'isAnyOf' && operation === 'equals') {\n item['value'][2] = null;\n }\n\n if (oldOperation === 'isBetween' && operation !== 'isBetween') {\n item['value'][2] = null;\n } else if (oldOperation !== 'isBetween' && operation === 'isBetween') {\n item['value'][2] = [];\n }\n\n if (['isNotBlank', 'isBlank'].includes(operation)) {\n item['value'][2] = null;\n }\n\n item['value'][1] = operation;\n this.editItem = undefined;\n this._emitChangeEvent();\n }\n\n removeCondition(index: number, items: FilterBuilderItemType[]): void {\n items.splice(index, 1);\n this._emitChangeEvent();\n }\n\n isOperationAllowedForCondition(dataField: string, operationId: string): boolean {\n const fieldDef = this.fieldDefs().find(f =>\n f.dataField === dataField\n ) as FilterBuilderFieldDef;\n\n let allowedTypes = this._operationAllowedTypesMap.get(fieldDef.dataType);\n\n if (!allowedTypes) {\n throw new Error('There are not operations for the datatype: ' + fieldDef.dataType);\n }\n\n return allowedTypes.includes(operationId);\n }\n\n modifyValue(item: FilterBuilderCondition): void {\n this.editItem = item;\n if (this.getFieldType(item) === 'array' && item['value'][1] === 'isAnyOf') {\n this._tempMultipleValue = [...(item['value'][2] || [])];\n }\n }\n\n getFieldType(item: FilterBuilderCondition): string {\n return (this.fieldDefs().find(f =>\n f.dataField === item['value'][0]\n ) as FilterBuilderFieldDef).dataType;\n }\n\n isValueNotEmpty(item: FilterBuilderCondition): boolean {\n if (this.getFieldType(item) === 'array') {\n if (item['value'][1] === 'equals') {\n return item['value'][2] !== null && item['value'][2] !== '';\n } else {\n return item['value'][2].length > 0;\n }\n }\n\n if (item['value'][1] === 'isBetween') {\n return item['value'][2].length === 2 && item['value'][2][0] !== null && item['value'][2][1] !== null;\n }\n\n return item['value'][2] !== null && item['value'][2] !== '';\n }\n\n cancelEdit(delay = 0): void {\n setTimeout(() => {\n this.editItem = undefined;\n this._cdr.detectChanges();\n }, delay);\n }\n\n getOptions(item: FilterBuilderCondition): FilterBuilderFieldDataSourceItem[] {\n const fieldDef = this._getFieldDef(item);\n return fieldDef.lookup?.dataSource as FilterBuilderFieldDataSourceItem[];\n }\n\n getDataSourceItemNameById(item: FilterBuilderCondition, dataSourceItemId: string): string {\n const fieldDef = this._getFieldDef(item);\n return (fieldDef.lookup?.dataSource as FilterBuilderFieldDataSourceItem[]).find(\n item => item.id === dataSourceItemId\n )?.name || '';\n }\n\n selectBlur(event: FocusEvent): void {\n if (this.editItem && this.getFieldType(this.editItem) === 'array' && this.editItem['value'][1] === 'isAnyOf') {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const select = event.target as HTMLElement;\n\n setTimeout(() => {\n const formField = select.closest('.ngs-form-field');\n\n if (formField) {\n this.cancelEdit();\n }\n }, 200);\n }\n\n selectClosed(): void {\n if (this.editItem && this.getFieldType(this.editItem) === 'array' && this.editItem['value'][1] === 'isAnyOf') {\n this.editItem['value'][2] = [...this._tempMultipleValue];\n }\n this.cancelEdit();\n setTimeout(() => {\n this._emitChangeEvent();\n });\n }\n\n protected operationIconTemplateRef(operation: FilterBuilderOperationDefDirective): TemplateRef<any> {\n return operation.operationIcon()?.templateRef as TemplateRef<any>;\n }\n\n protected operationNameTemplateRef(operation: FilterBuilderOperationDefDirective): TemplateRef<any> {\n return operation.operationName()?.templateRef as TemplateRef<any>;\n }\n\n protected _isGroup(item: FilterBuilderItemType): item is FilterBuilderGroup {\n return 'logicalOperator' in item;\n }\n\n protected _isCondition(item: FilterBuilderItemType): item is FilterBuilderCondition {\n return !('logicalOperator' in item);\n }\n\n protected _emitChangeEvent(): void {\n const value = this._normalizeValue(this._value);\n\n if (value.length > 0) {\n this.valueChanged.emit([\n {\n logicalOperator: this._logicalOperator,\n value: value\n }\n ]);\n } else {\n this.valueChanged.emit([]);\n }\n }\n\n private _getFieldDef(condition: FilterBuilderCondition): FilterBuilderFieldDef {\n return this.fieldDefs().find(f =>\n f.dataField === condition['value'][0]\n ) as FilterBuilderFieldDef;\n }\n\n private _resetValue(field: FilterBuilderFieldDef, condition: FilterBuilderCondition): void {\n const fieldDef = this.fieldDefs().find(f =>\n f.dataField === field.dataField\n ) as FilterBuilderFieldDef;\n const resetMethod = '_reset' + this._capitalizeFirstLetter(fieldDef.dataType) + 'Value';\n this._resetMethodMap[resetMethod](condition);\n }\n\n private _resetStringValue(condition: FilterBuilderCondition): void {\n condition['value'][2] = '';\n }\n\n private _resetNumberValue(condition: FilterBuilderCondition): void {\n condition['value'][2] = null;\n }\n\n private _resetArrayValue(condition: FilterBuilderCondition): void {\n if (condition['value'][1] === 'equals') {\n condition['value'][2] = null;\n } else {\n condition['value'][2] = [];\n }\n }\n\n private _resetBooleanValue(condition: FilterBuilderCondition): void {\n condition['value'][2] = false;\n }\n\n private _capitalizeFirstLetter(value: string) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n }\n\n private _normalizeValue(value: FilterBuilderItemType[]): FilterBuilderItemType[] {\n let result: FilterBuilderItemType[] = [];\n value.forEach(item => {\n if (this._isGroup(item)) {\n const groupValue = this._normalizeValue(item.value);\n\n if (groupValue.length > 0) {\n result = [...result, {\n logicalOperator: item.logicalOperator,\n value: groupValue\n }];\n }\n } else {\n if (this.isValueNotEmpty(item)) {\n result.push(item);\n }\n }\n });\n return result;\n }\n}\n","@if (_isServer) {\n <ng-content/>\n}\n\n<ng-template #itemsTpl let-items>\n <div class=\"group\">\n @for (item of items; track item; let index = $index) {\n @if (_isGroup(item)) {\n <div class=\"flex items-center group-operations\">\n <div class=\"remove\" (click)=\"removeCondition(index, items)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\" class=\"font-icon\"/>\n </div>\n <button [ngsMenuTriggerFor]=\"nestedGroupOperationsMenu\"\n #nestedGroupOperationsMenuTrigger=\"ngsMenuTrigger\"\n class=\"group-operation\">\n {{ getSelectedGroupOperationName(item) }}\n </button>\n <div [ngsMenuTriggerFor]=\"addGroupMenu\" class=\"add\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"font-icon\"/>\n </div>\n <ngs-menu #nestedGroupOperationsMenu=\"ngsMenu\">\n <div ngsMenuOptionGroup [(ngModel)]=\"item['logicalOperator']\">\n @for (groupOperation of groupOperations(); track groupOperation.id) {\n <ngs-option [value]=\"groupOperation.id\"\n (click)=\"nestedGroupOperationsMenuTrigger.closeMenu('click')\">{{ groupOperation.name }}\n </ngs-option>\n }\n </div>\n </ngs-menu>\n <ngs-menu #addGroupMenu=\"ngsMenu\">\n <button ngs-menu-item (click)=\"addCondition(item)\">Add Condition</button>\n <button ngs-menu-item (click)=\"addGroup(item)\">Add Group</button>\n </ngs-menu>\n </div>\n @if (item['value'].length > 0) {\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: item['value'] }\"/>\n }\n } @else if (_isCondition(item)) {\n <div class=\"condition\">\n <div class=\"remove\" (click)=\"removeCondition(index, items)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\" class=\"font-icon\"/>\n </div>\n <button class=\"condition-field\"\n #fieldsMenuTrigger=\"ngsMenuTrigger\"\n [ngsMenuTriggerFor]=\"fieldsMenu\">{{ getConditionField(item['value'][0])?.name }}\n </button>\n <button class=\"condition-operation\"\n #operationsMenuTrigger=\"ngsMenuTrigger\"\n [ngsMenuTriggerFor]=\"operationsMenu\">\n <ng-template [ngTemplateOutlet]=\"getConditionOperation(item['value'][1])?.name\"/>\n </button>\n <div class=\"relative\">\n @if (editItem && editItem === item) {\n <div class=\"absolute start-0 top-0 -translate-y-1/2\">\n @switch (getFieldType(editItem)) {\n @case ('array') {\n @switch (editItem['value'][1]) {\n @case ('equals') {\n <ngs-form-field class=\"form-field\">\n <ngs-select placeholder=\"Select...\"\n ngsAutoFocus\n (blur)=\"selectBlur($event)\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n @for (option of getOptions(editItem); track option.id) {\n <ngs-option [value]=\"option.id\">{{ option.name }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n @case ('isAnyOf') {\n <ngs-form-field class=\"form-field\">\n <ngs-select placeholder=\"Select...\" multiple\n ngsAutoFocus\n (blur)=\"selectBlur($event)\"\n [(ngModel)]=\"_tempMultipleValue\"\n (closed)=\"selectClosed()\">\n @for (option of getOptions(editItem); track option.id) {\n <ngs-option [value]=\"option.id\">{{ option.name }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n }\n }\n @case ('number') {\n @switch (editItem['value'][1]) {\n @case ('isBetween') {\n <div class=\"flex gap-2 items-center\"\n ngsFocusElement (elementBlurred)=\"cancelEdit()\">\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput ngsAutoFocus\n [(ngModel)]=\"item['value'][2][0]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n <div class=\"text-neutral-500\">&ndash;</div>\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput\n [(ngModel)]=\"item['value'][2][1]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n </div>\n }\n @default {\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput ngsAutoFocus\n (blur)=\"cancelEdit()\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n }\n }\n }\n @default {\n <ngs-form-field class=\"form-field\">\n <input type=\"text\" ngsInput ngsAutoFocus\n (blur)=\"cancelEdit()\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n }\n }\n </div>\n } @else {\n @if (item['value'][1] !== 'isBlank' && item['value'][1] !== 'isNotBlank') {\n @if (isValueNotEmpty(item)) {\n @if (getFieldType(item) === 'array') {\n @if (item['value'][1] === 'equals') {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n {{ getDataSourceItemNameById(item, item['value'][2]) }}\n </button>\n } @else {\n <button class=\"condition-value flex items-center gap-2\" (click)=\"modifyValue(item)\">\n @for (dataSourceItemId of item['value'][2]; track dataSourceItemId; let last = $last) {\n <span>{{ getDataSourceItemNameById(item, dataSourceItemId) }}</span>\n @if (!last) {\n <span class=\"text-neutral-500\">|</span>\n }\n }\n </button>\n }\n } @else {\n @if (item['value'][1] === 'isBetween') {\n <button class=\"condition-value flex items-center gap-2\" (click)=\"modifyValue(item)\">\n <span>{{ item['value'][2][0] }}</span>\n <span class=\"text-neutral-500\">&ndash;</span>\n <span>{{ item['value'][2][1] }}</span>\n </button>\n } @else {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n <span>{{ item['value'][2] }}</span>\n </button>\n }\n }\n } @else {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n <span i18n>&lt;enter a value&gt;</span>\n </button>\n }\n }\n }\n </div>\n </div>\n <ngs-menu #fieldsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [ngModel]=\"item['value'][0]\">\n @for (fieldDef of fieldDefs(); track fieldDef) {\n <ngs-option [value]=\"fieldDef.dataField\"\n (click)=\"selectConditionField(item, fieldDef); fieldsMenuTrigger.closeMenu('click')\">{{ fieldDef.name }}\n </ngs-option>\n }\n </div>\n </ng-template>\n </ngs-menu>\n <ngs-menu #operationsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [ngModel]=\"item['value'][1]\">\n @for (operation of _operationDefs; track operation.id()) {\n <div [hidden]=\"!isOperationAllowedForCondition(item['value'][0], operation.id())\">\n <ngs-option [value]=\"operation.id()\"\n (click)=\"operationChanged(item, operation.id()); operationsMenuTrigger.closeMenu('click')\">\n <div class=\"flex items-center gap-3\">\n @if (operation.operationIcon()) {\n <ng-template [ngTemplateOutlet]=\"operationIconTemplateRef(operation)\"/>\n }\n <div>\n <ng-template [ngTemplateOutlet]=\"operationNameTemplateRef(operation)\"/>\n </div>\n </div>\n </ngs-option>\n </div>\n }\n </div>\n </ng-template>\n </ngs-menu>\n }\n }\n </div>\n</ng-template>\n\n<div class=\"group\">\n <div class=\"flex items-center group-operations\">\n <button [ngsMenuTriggerFor]=\"groupOperationsMenu\"\n #groupOperationsMenuTrigger=\"ngsMenuTrigger\"\n class=\"group-operation\">\n {{ getSelectedGroupOperationName() }}\n </button>\n <div [ngsMenuTriggerFor]=\"addMenu\" class=\"add\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"font-icon\"/>\n </div>\n </div>\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: _value }\"/>\n</div>\n\n<ngs-menu #groupOperationsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [(ngModel)]=\"_logicalOperator\" (ngModelChange)=\"_emitChangeEvent()\">\n @for (operation of groupOperations(); track operation.id) {\n <ngs-option [value]=\"operation.id\"\n (click)=\"groupOperationsMenuTrigger.closeMenu('click')\">{{ operation.name }}\n </ngs-option>\n }\n </div>\n </ng-template>\n</ngs-menu>\n<ngs-menu #addMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <button ngs-menu-item (click)=\"addCondition()\">Add Condition</button>\n <button ngs-menu-item (click)=\"addGroup()\">Add Group</button>\n </ng-template>\n</ngs-menu>\n\n<ng-container ngsFilterBuilderOperationDef=\"contains\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Contains</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"doesNotContain\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Does not contain</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"startsWith\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Starts with</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"endsWith\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Ends with</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"equals\" [allowedDataTypes]=\"['string', 'number', 'array', 'boolean']\">\n <ng-template ngsFilterBuilderOperationName>Equals</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"notEquals\" [allowedDataTypes]=\"['string', 'number', 'boolean']\">\n <ng-template ngsFilterBuilderOperationName>Not equals</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isLessThen\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is less then</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isLessThenOrEqual\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is less then or equal to</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isGreaterThen\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is greater then</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isGreaterThenOrEqual\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is greater then or equal to</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isBlank\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Is blank</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isNotBlank\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Is not blank</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isBetween\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is between</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isAnyOf\" [allowedDataTypes]=\"['array']\">\n <ng-template ngsFilterBuilderOperationName>Is any of</ng-template>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;MAMa,mCAAmC,CAAA;AACrC,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;uGAD/B,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAJ/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCCY,mCAAmC,CAAA;AACrC,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;uGAD/B,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAJ/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCGY,kCAAkC,CAAA;IAC7C,EAAE,GAAG,KAAK,CAAC,EAAE,0EACX,KAAK,EAAE,8BAA8B,EAAA,CACrC;AACF,IAAA,gBAAgB,GAAG,KAAK,CAAW,EAAE,uFAAC;AAC7B,IAAA,aAAa,GAAG,YAAY,CAAC,mCAAmC,oFAAC;AACjE,IAAA,aAAa,GAAG,YAAY,CAAC,mCAAmC,oFAAC;uGAN/D,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKP,mCAAmC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACnC,mCAAmC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAN9D,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,UAAU,EAAE;AACb,iBAAA;AAMuC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,mCAAmC,+FACnC,mCAAmC,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MC0C9D,aAAa,CAAA;AACd,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAChC,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACjD,IAAA,yBAAyB,GAA0B,IAAI,GAAG,EAAE;AAC9D,IAAA,eAAe,GAAoE;QACzF,mBAAmB,EAAE,IAAI,CAAC,iBAAiB;QAC3C,oBAAoB,EAAE,IAAI,CAAC,kBAAkB;QAC7C,kBAAkB,EAAE,IAAI,CAAC,gBAAgB;QACzC,mBAAmB,EAAE,IAAI,CAAC,iBAAiB;KAC5C;AAED,IAAA,KAAK,GAAG,KAAK,CAAuB,EAAE,4EAAC;AACvC,IAAA,SAAS,GAAG,KAAK,CAA0B,EAAE,gFAAC;AAC9C,IAAA,UAAU,GAAG,KAAK,CAAC,EAAE,iFAAC;IACtB,eAAe,GAAG,KAAK,CAAC;AACtB,QAAA;AACE,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,IAAI,EAAE;AACP;AACF,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACF,IAAA,gBAAgB,GAAG,KAAK,CAAC,EAAE,uFAAC;IAElB,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAChD,IAAA,sBAAsB,GAAG,YAAY,CAAC,kCAAkC,6FAAC;AACzE,IAAA,oBAAoB,GAAG,eAAe,CAAC,kCAAkC,2FAAC;IACzE,cAAc,GAAyC,EAAE;IAE1D,YAAY,GAAG,MAAM,EAAwB;IAE5C,MAAM,GAAyB,EAAE;IACjC,WAAW,GAAU,EAAE;AACvB,IAAA,QAAQ;IACR,kBAAkB,GAAU,EAAE;IAExC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC;YACjF;AAEA,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAW;YACpE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE;IACF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACxF,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,IAAG;AACzC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,gBAAA,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE;AACrB,gBAAA,IAAI,EAAE,YAAY,CAAC,aAAa,EAAE,EAAE;AACrC,aAAA,CAAC;YACF,YAAY,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,WAAmB,KAAI;gBAC9D,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;oBACpD,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrD;gBAEA,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAa;gBACpF,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;gBACxC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC;AACnE,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IAC3B;AAEA,IAAA,YAAY,CAAC,WAAgC,EAAA;AAC3C,QAAA,MAAM,KAAK,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK;QAC5D,KAAK,CAAC,IAAI,CACR;YACE,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;AAClE,SAAA,CACF;IACH;AAEA,IAAA,QAAQ,CAAC,WAAgC,EAAA;AACvC,QAAA,MAAM,KAAK,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK;QAC5D,KAAK,CAAC,IAAI,CACR;YACE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7C,YAAA,KAAK,EAAE;AACR,SAAA,CACF;IACH;AAEA,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC;IACtE;AAEA,IAAA,qBAAqB,CAAC,EAAU,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;IAChE;AAEA,IAAA,6BAA6B,CAAC,WAAgC,EAAA;AAC5D,QAAA,MAAM,sBAAsB,GAAG,WAAW,GAAG,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB;QAChG,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,EAAE,KAAK,sBAAsB,CAAC,EAAE,IAAI,IAAI,EAAE;IAC9G;IAEA,oBAAoB,CAAC,IAA4B,EAAE,KAA4B,EAAA;AAC7E,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAa;QACjF,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS;QAClC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;QACzB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,gBAAgB,CAAC,IAA4B,EAAE,SAAiB,EAAA;QAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAErC,IAAI,YAAY,KAAK,QAAQ,IAAI,SAAS,KAAK,SAAS,EAAE;YACxD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;QACvB;aAAO,IAAI,YAAY,KAAK,SAAS,IAAI,SAAS,KAAK,QAAQ,EAAE;YAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;QACzB;QAEA,IAAI,YAAY,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW,EAAE;YAC7D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;QACzB;aAAO,IAAI,YAAY,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW,EAAE;YACpE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;QACvB;QAEA,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACjD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;QACzB;QAEA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;QACzB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,eAAe,CAAC,KAAa,EAAE,KAA8B,EAAA;AAC3D,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,8BAA8B,CAAC,SAAiB,EAAE,WAAmB,EAAA;AACnE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,IACtC,CAAC,CAAC,SAAS,KAAK,SAAS,CACD;AAE1B,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAExE,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACpF;AAEA,QAAA,OAAO,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC3C;AAEA,IAAA,WAAW,CAAC,IAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AACzE,YAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD;IACF;AAEA,IAAA,YAAY,CAAC,IAA4B,EAAA;QACvC,OAAQ,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,IAC7B,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CACP,CAAC,QAAQ;IACtC;AAEA,IAAA,eAAe,CAAC,IAA4B,EAAA;QAC1C,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE;YACvC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACjC,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;YAC7D;iBAAO;gBACL,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;YACpC;QACF;QAEA,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;QACtG;AAEA,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;IAC7D;IAEA,UAAU,CAAC,KAAK,GAAG,CAAC,EAAA;QAClB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;QAC3B,CAAC,EAAE,KAAK,CAAC;IACX;AAEA,IAAA,UAAU,CAAC,IAA4B,EAAA;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACxC,QAAA,OAAO,QAAQ,CAAC,MAAM,EAAE,UAAgD;IAC1E;IAEA,yBAAyB,CAAC,IAA4B,EAAE,gBAAwB,EAAA;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAiD,EAAC,IAAI,CAC7E,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,gBAAgB,CACrC,EAAE,IAAI,IAAI,EAAE;IACf;AAEA,IAAA,UAAU,CAAC,KAAiB,EAAA;QAC1B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YAC5G;QACF;QACA,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAE1C,UAAU,CAAC,MAAK;YACd,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAEnD,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,UAAU,EAAE;YACnB;QACF,CAAC,EAAE,GAAG,CAAC;IACT;IAEA,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AAC5G,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC1D;QACA,IAAI,CAAC,UAAU,EAAE;QACjB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,gBAAgB,EAAE;AACzB,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,wBAAwB,CAAC,SAA6C,EAAA;AAC9E,QAAA,OAAO,SAAS,CAAC,aAAa,EAAE,EAAE,WAA+B;IACnE;AAEU,IAAA,wBAAwB,CAAC,SAA6C,EAAA;AAC9E,QAAA,OAAO,SAAS,CAAC,aAAa,EAAE,EAAE,WAA+B;IACnE;AAEU,IAAA,QAAQ,CAAC,IAA2B,EAAA;QAC5C,OAAO,iBAAiB,IAAI,IAAI;IAClC;AAEU,IAAA,YAAY,CAAC,IAA2B,EAAA;AAChD,QAAA,OAAO,EAAE,iBAAiB,IAAI,IAAI,CAAC;IACrC;IAEU,gBAAgB,GAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AAE/C,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA;oBACE,eAAe,EAAE,IAAI,CAAC,gBAAgB;AACtC,oBAAA,KAAK,EAAE;AACR;AACF,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B;IACF;AAEQ,IAAA,YAAY,CAAC,SAAiC,EAAA;QACpD,OAAQ,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,IAC7B,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CACb;IAC5B;IAEQ,WAAW,CAAC,KAA4B,EAAE,SAAiC,EAAA;QACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,IACtC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CACP;AAC1B,QAAA,MAAM,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO;QACvF,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;IAC9C;AAEQ,IAAA,iBAAiB,CAAC,SAAiC,EAAA;QACzD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;IAC5B;AAEQ,IAAA,iBAAiB,CAAC,SAAiC,EAAA;QACzD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAC9B;AAEQ,IAAA,gBAAgB,CAAC,SAAiC,EAAA;QACxD,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YACtC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;QAC9B;aAAO;YACL,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;QAC5B;IACF;AAEQ,IAAA,kBAAkB,CAAC,SAAiC,EAAA;QAC1D,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;IAC/B;AAEQ,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAC1C,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD;AAEQ,IAAA,eAAe,CAAC,KAA8B,EAAA;QACpD,IAAI,MAAM,GAA4B,EAAE;AACxC,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACvB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAEnD,gBAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,oBAAA,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE;4BACnB,eAAe,EAAE,IAAI,CAAC,eAAe;AACrC,4BAAA,KAAK,EAAE;AACR,yBAAA,CAAC;gBACJ;YACF;iBAAO;AACL,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AAC9B,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnB;YACF;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAM;IACf;uGA5TW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,44BA4BwB,kCAAkC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,SAAA,EADnC,kCAAkC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnFnF,msbAkRA,EAAA,MAAA,EAAA,CAAA,yxRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjPI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,IAAI,8FACJ,WAAW,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,WAAW,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,wBAAwB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,WAAW,ixBACX,QAAQ,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,SAAS,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,MAAM,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,MAAM,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,kBAAkB,iHAClB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,KAAK,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACL,kCAAkC,yIAClC,mCAAmC,EAAA,QAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,CAAA;;2FAQ1B,aAAa,EAAA,UAAA,EAAA,CAAA;kBA3BzB,SAAS;+BACE,oBAAoB,EAAA,QAAA,EACpB,kBAAkB,EAAA,OAAA,EACnB;wBACP,YAAY;wBACZ,IAAI;wBACJ,WAAW;wBACX,IAAI;wBACJ,WAAW;wBACX,wBAAwB;wBACxB,WAAW;wBACX,QAAQ;wBACR,SAAS;wBACT,MAAM;wBACN,MAAM;wBACN,kBAAkB;wBAClB,qBAAqB;wBACrB,KAAK;wBACL,kCAAkC;wBAClC;qBACD,EAAA,IAAA,EAGK;AACJ,wBAAA,OAAO,EAAE;AACV,qBAAA,EAAA,QAAA,EAAA,msbAAA,EAAA,MAAA,EAAA,CAAA,yxRAAA,CAAA,EAAA;AA6B8C,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,kCAAkC,yGACjC,kCAAkC,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEpFpF;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Injectable, input, Directive, InjectionToken, booleanAttribute, inject, ElementRef, viewChild, contentChild, contentChildren, computed, HostListener } from '@angular/core';
2
+ import { Component, Injectable, input, Directive, InjectionToken, inject, ElementRef, booleanAttribute, viewChild, contentChild, contentChildren, computed } from '@angular/core';
3
3
 
4
4
  class Label {
5
5
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Label, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -130,8 +130,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
130
130
  const FORM_FIELD = new InjectionToken('FORM_FIELD');
131
131
 
132
132
  class FormField {
133
- subscriptHiddenIfEmpty = input(false, { ...(ngDevMode ? { debugName: "subscriptHiddenIfEmpty" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
134
133
  elementRef = inject(ElementRef);
134
+ subscriptHiddenIfEmpty = input(false, { ...(ngDevMode ? { debugName: "subscriptHiddenIfEmpty" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
135
+ sameHeightAsButton = input(false, { ...(ngDevMode ? { debugName: "sameHeightAsButton" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
135
136
  wrapper = viewChild.required('wrapper');
136
137
  container = viewChild.required('container');
137
138
  control = contentChild(FormFieldControl, ...(ngDevMode ? [{ debugName: "control" }] : /* istanbul ignore next */ []));
@@ -188,12 +189,12 @@ class FormField {
188
189
  }
189
190
  }
190
191
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FormField, deps: [], target: i0.ɵɵFactoryTarget.Component });
191
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: FormField, isStandalone: true, selector: "ngs-form-field", inputs: { subscriptHiddenIfEmpty: { classPropertyName: "subscriptHiddenIfEmpty", publicName: "subscriptHiddenIfEmpty", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onClick($event)" }, properties: { "class.ngs-form-field-disabled": "control()?.disabled", "class.ngs-form-field-invalid": "control()?.errorState", "class.ngs-form-field-should-float": "shouldLabelFloat()", "class.ngs-form-field-has-label": "labelChild()", "class.ngs-form-field-empty": "control()?.empty", "class.ngs-form-field-focused": "control()?.focused", "class.ngs-form-field-multiline": "control()?.multiline", "class.ngs-form-field-subscript-hidden-if-empty": "subscriptHiddenIfEmpty()", "class.ngs-form-field-has-icon-prefix": "iconPrefixChildren().length > 0", "class.ngs-form-field-has-icon-button-prefix": "iconButtonPrefixChildren().length > 0", "class.ngs-form-field-has-icon-suffix": "iconSuffixChildren().length > 0", "class.ngs-form-field-has-icon-button-suffix": "iconButtonSuffixChildren().length > 0" }, classAttribute: "ngs-form-field" }, providers: [
192
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: FormField, isStandalone: true, selector: "ngs-form-field", inputs: { subscriptHiddenIfEmpty: { classPropertyName: "subscriptHiddenIfEmpty", publicName: "subscriptHiddenIfEmpty", isSignal: true, isRequired: false, transformFunction: null }, sameHeightAsButton: { classPropertyName: "sameHeightAsButton", publicName: "sameHeightAsButton", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onClick($event)" }, properties: { "class.ngs-form-field-disabled": "control()?.disabled", "class.ngs-form-field-invalid": "control()?.errorState", "class.ngs-form-field-should-float": "shouldLabelFloat()", "class.ngs-form-field-has-label": "labelChild()", "class.ngs-form-field-empty": "control()?.empty", "class.ngs-form-field-focused": "control()?.focused", "class.ngs-form-field-multiline": "control()?.multiline", "class.ngs-form-field-subscript-hidden-if-empty": "subscriptHiddenIfEmpty()", "class.ngs-form-field-has-icon-prefix": "iconPrefixChildren().length > 0", "class.ngs-form-field-has-icon-button-prefix": "iconButtonPrefixChildren().length > 0", "class.ngs-form-field-has-icon-suffix": "iconSuffixChildren().length > 0", "class.ngs-form-field-has-icon-button-suffix": "iconButtonSuffixChildren().length > 0", "class.same-height-as-button": "sameHeightAsButton()" }, classAttribute: "ngs-form-field" }, providers: [
192
193
  {
193
194
  provide: FORM_FIELD,
194
195
  useExisting: FormField
195
196
  }
196
- ], queries: [{ propertyName: "control", first: true, predicate: FormFieldControl, descendants: true, isSignal: true }, { propertyName: "labelChild", first: true, predicate: Label, descendants: true, isSignal: true }, { propertyName: "prefixChildren", predicate: Prefix, isSignal: true }, { propertyName: "iconPrefixChildren", predicate: IconPrefix, isSignal: true }, { propertyName: "iconButtonPrefixChildren", predicate: IconButtonPrefix, isSignal: true }, { propertyName: "textPrefixChildren", predicate: TextPrefix, isSignal: true }, { propertyName: "suffixChildren", predicate: Suffix, isSignal: true }, { propertyName: "iconSuffixChildren", predicate: IconSuffix, isSignal: true }, { propertyName: "iconButtonSuffixChildren", predicate: IconButtonSuffix, isSignal: true }, { propertyName: "textSuffixChildren", predicate: TextSuffix, isSignal: true }, { propertyName: "hintChildren", predicate: Hint, isSignal: true }, { propertyName: "errorChildren", predicate: Error, isSignal: true }], viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true, isSignal: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }], exportAs: ["ngsFormField"], ngImport: i0, template: "<div class=\"ngs-form-field-wrapper\" #wrapper>\n <div class=\"ngs-form-field-container\" #container>\n @if (prefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-prefix\">\n <ng-content select=\"[ngsPrefix]\"/>\n </div>\n }\n\n @if (iconPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-icon-affix ngs-form-field-icon-prefix\">\n <ng-content select=\"[ngsIconPrefix]\"/>\n </div>\n }\n\n @if (iconButtonPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-icon-affix ngs-form-field-icon-button-prefix\">\n <ng-content select=\"[ngsIconButtonPrefix]\"/>\n </div>\n }\n\n @if (textPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-text-affix ngs-form-field-text-prefix\">\n <ng-content select=\"[ngsTextPrefix]\"/>\n </div>\n }\n\n <div class=\"ngs-form-field-infix\">\n @if (labelChild()) {\n <label class=\"ngs-form-field-label\" [attr.for]=\"control()?.id\">\n <ng-content select=\"ngs-label\"/>\n\n @if (isRequired()) {\n <span class=\"ngs-form-field-required-marker\">*</span>\n }\n </label>\n }\n <ng-content/>\n </div>\n\n @if (textSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-text-affix ngs-form-field-text-suffix\">\n <ng-content select=\"[ngsTextSuffix]\"/>\n </div>\n }\n\n @if (iconButtonSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-icon-affix ngs-form-field-icon-button-suffix\">\n <ng-content select=\"[ngsIconButtonSuffix]\"/>\n </div>\n }\n\n @if (iconSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-icon-affix ngs-form-field-icon-suffix\">\n <ng-content select=\"[ngsIconSuffix]\"/>\n </div>\n }\n\n @if (suffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-suffix\">\n <ng-content select=\"[ngsSuffix]\"/>\n </div>\n }\n </div>\n</div>\n\n<div class=\"subscript-wrapper\">\n @if (control()?.errorState && errorChildren().length > 0) {\n <ng-content select=\"ngs-error\"/>\n } @else if (hintChildren().length > 0) {\n <div class=\"ngs-form-field-hint-wrapper\">\n <ng-content select=\"ngs-hint\"/>\n </div>\n }\n</div>\n", styles: [":host{--ngs-form-field-color: var(--ngs-field-color);--ngs-form-field-border-color: var(--ngs-field-border-color);--ngs-form-field-border-width: var(--ngs-field-border-width);--ngs-form-field-border-radius: var(--ngs-field-radius);--ngs-form-field-bg: var(--ngs-field-bg);--ngs-form-field-disabled-bg: var(--ngs-field-disabled-bg);--ngs-form-field-label-color: var(--ngs-field-label-color);--ngs-form-field-error-color: var(--ngs-field-error-color);--ngs-form-field-container-min-height: var(--ngs-field-height, var(--ngs-field-container-height));--ngs-form-field-padding-x: var(--ngs-field-padding-x);--ngs-form-field-input-height: var(--ngs-field-input-height);--ngs-form-field-affix-gap: calc(var(--spacing, .25rem) * 1);--ngs-form-field-icon-affix-padding-x: calc(var(--spacing, .25rem) * 2);--ngs-form-field-icon-button-affix-padding-x: calc(var(--spacing, .25rem) * 1);--ngs-form-field-infix-padding-top: var(--ngs-field-infix-padding-top);--ngs-form-field-infix-padding-bottom: var(--ngs-field-infix-padding-bottom);--ngs-form-field-no-label-padding-y: var(--ngs-field-no-label-padding-y);display:block;width:var(--ngs-form-field-width, 100%)}:host.ngs-form-field-disabled{cursor:default}:host.ngs-form-field-disabled .ngs-form-field-container{background:var(--ngs-state-disabled-bg);border-color:var(--ngs-state-disabled-border)}:host.ngs-form-field-disabled .ngs-form-field-label{color:var(--ngs-state-disabled-color)}:host.ngs-form-field-disabled ::ng-deep input{color:var(--ngs-state-disabled-color)}:host.ngs-form-field-focused .ngs-form-field-container{border-color:var(--ngs-field-border-focus-color);box-shadow:0 0 0 1px var(--ngs-field-border-focus-color)}:host.ngs-form-field-focused .ngs-form-field-label{color:var(--ngs-form-field-color)}:host.ngs-form-field-invalid .ngs-form-field-container{border-color:var(--ngs-form-field-error-color)}:host.ngs-form-field-invalid.ngs-form-field-focused .ngs-form-field-container{box-shadow:0 0 0 1px var(--ngs-form-field-error-color)}:host.ngs-form-field-invalid .ngs-form-field-label{color:var(--ngs-form-field-error-color)}:host .ngs-form-field-wrapper{display:flex;flex-direction:column;height:var(--ngs-form-field-container-min-height)}:host .ngs-form-field-container{position:relative;box-sizing:border-box;border:var(--ngs-form-field-border-width) solid var(--ngs-form-field-border-color);border-radius:var(--ngs-form-field-border-radius);background:var(--ngs-form-field-bg);padding:0 var(--ngs-form-field-padding-x);transition:border-color .2s,box-shadow .2s;height:var(--ngs-form-field-container-min-height);min-height:var(--ngs-form-field-container-min-height);display:flex;align-items:center}:host.ngs-form-field-has-icon-prefix .ngs-form-field-container{padding-left:var(--ngs-form-field-icon-affix-padding-x)}:host.ngs-form-field-has-icon-button-prefix .ngs-form-field-container{padding-left:var(--ngs-form-field-icon-button-affix-padding-x)}:host.ngs-form-field-has-icon-suffix .ngs-form-field-container{padding-right:var(--ngs-form-field-icon-affix-padding-x)}:host.ngs-form-field-has-icon-button-suffix .ngs-form-field-container{padding-right:var(--ngs-form-field-icon-button-affix-padding-x)}:host .ngs-form-field-infix{box-sizing:border-box;flex:1;position:relative;padding:var(--ngs-form-field-infix-padding-top) 0 var(--ngs-form-field-infix-padding-bottom) 0;min-width:0;height:100%;min-height:var(--ngs-form-field-container-min-height);display:flex;flex-direction:column;overflow:hidden}:host.ngs-form-field-multiline .ngs-form-field-wrapper{height:auto;min-height:var(--ngs-form-field-container-min-height)}:host.ngs-form-field-multiline .ngs-form-field-container{height:auto;min-height:var(--ngs-form-field-container-min-height);align-items:stretch}:host.ngs-form-field-multiline .ngs-form-field-infix{height:auto;min-height:calc(var(--ngs-form-field-container-min-height) - 2px);overflow:visible}:host.ngs-form-field-multiline ::ng-deep textarea.ngs-input{min-height:var(--ngs-form-field-input-height);resize:vertical}:host:not(.ngs-form-field-has-label) .ngs-form-field-infix,:host:not(.ngs-form-field-has-label) .ngs-form-field-affix{box-sizing:border-box;padding:var(--ngs-form-field-no-label-padding-y) 0}:host:not(.ngs-form-field-has-label) .ngs-form-field-affix{--ngs-button-height: calc( var(--ngs-form-field-container-min-height) - var(--ngs-form-field-no-label-padding-y) - var(--ngs-form-field-no-label-padding-y) );height:100%}:host:not(.ngs-form-field-has-label) .ngs-form-field-infix{display:flex;justify-content:center}:host .ngs-form-field-label{position:absolute;left:0;transform:translateY(-50%);top:calc(var(--ngs-form-field-container-min-height) / 2);transform-origin:left top;font-size:var(--ngs-field-font-size);color:var(--ngs-form-field-label-color);transition:transform .2s ease,font-size .2s ease,color .2s ease,top .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:flex;align-items:center;gap:.125rem;pointer-events:none;z-index:1;-webkit-user-select:none;user-select:none}:host .ngs-form-field-required-marker{color:var(--ngs-form-field-error-color)}:host.ngs-form-field-should-float .ngs-form-field-label{top:4px;font-size:var(--ngs-field-label-float-font-size);transform:translateY(0)}:host ::ng-deep input{font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height);outline:none!important;resize:none;text-align:var(--ngs-form-field-input-text-align, start)}:host ::ng-deep input::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep textarea{min-height:22px;font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height);outline:none!important;text-align:var(--ngs-form-field-input-text-align, start)}:host ::ng-deep textarea::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep .ngs-input,:host ::ng-deep .ngs-chip-input,:host ::ng-deep .ngs-phone-input,:host ::ng-deep .ngs-number-input,:host ::ng-deep ngs-select{width:100%;border:none!important;background:transparent!important;padding:0!important;color:inherit;outline:none!important;display:block}:host ::ng-deep .ngs-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-chip-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-phone-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-number-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep ngs-select:not(textarea):not(ngs-select):not(.ngs-chip-input){height:var(--ngs-form-field-input-height)}:host ::ng-deep .ngs-input:is(ngs-select),:host ::ng-deep .ngs-chip-input:is(ngs-select),:host ::ng-deep .ngs-phone-input:is(ngs-select),:host ::ng-deep .ngs-number-input:is(ngs-select),:host ::ng-deep ngs-select:is(ngs-select){height:var(--ngs-form-field-input-height);min-height:var(--ngs-form-field-input-height);overflow:hidden}:host ::ng-deep .ngs-input::placeholder,:host ::ng-deep .ngs-chip-input::placeholder,:host ::ng-deep .ngs-phone-input::placeholder,:host ::ng-deep .ngs-number-input::placeholder,:host ::ng-deep ngs-select::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep ngs-chip-grid:empty{display:none}:host ::ng-deep ngs-chip-grid{margin:calc(var(--spacing, .25rem) * 1) 0}:host ::ng-deep .ngs-date-range-input{width:100%;border:none!important;background:transparent!important;padding:0!important;font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height);color:inherit;outline:none!important;display:flex;height:var(--ngs-form-field-input-height)}:host ::ng-deep .ngs-date-range-input::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep input{resize:none;font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height)}:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-chip-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-chip-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-phone-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-phone-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-number-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-number-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep ngs-select::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep ngs-select .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-date-range-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-date-range-input .ngs-select-placeholder{opacity:0!important;color:transparent!important}:host .ngs-form-field-affix{display:flex;align-items:center}:host .ngs-form-field-affix:empty{display:none}:host .ngs-form-field-before{margin-right:var(--ngs-form-field-affix-gap)}:host .ngs-form-field-after{margin-left:var(--ngs-form-field-affix-gap)}:host .ngs-form-field-text-affix{color:var(--ngs-form-field-label-color);white-space:nowrap;font-size:var(--ngs-field-font-size);padding-top:var(--ngs-form-field-infix-padding-top);padding-bottom:var(--ngs-form-field-infix-padding-bottom);line-height:0}:host .subscript-wrapper{margin-top:.25rem;padding:0 .5rem;font-size:.75rem;min-height:1.375rem}:host.ngs-form-field-subscript-hidden-if-empty .subscript-wrapper:empty{display:none}:host .ngs-form-field-error{display:none}:host .ngs-form-field-hint-wrapper{display:flex;justify-content:space-between;color:var(--ngs-form-field-label-color)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
197
+ ], queries: [{ propertyName: "control", first: true, predicate: FormFieldControl, descendants: true, isSignal: true }, { propertyName: "labelChild", first: true, predicate: Label, descendants: true, isSignal: true }, { propertyName: "prefixChildren", predicate: Prefix, isSignal: true }, { propertyName: "iconPrefixChildren", predicate: IconPrefix, isSignal: true }, { propertyName: "iconButtonPrefixChildren", predicate: IconButtonPrefix, isSignal: true }, { propertyName: "textPrefixChildren", predicate: TextPrefix, isSignal: true }, { propertyName: "suffixChildren", predicate: Suffix, isSignal: true }, { propertyName: "iconSuffixChildren", predicate: IconSuffix, isSignal: true }, { propertyName: "iconButtonSuffixChildren", predicate: IconButtonSuffix, isSignal: true }, { propertyName: "textSuffixChildren", predicate: TextSuffix, isSignal: true }, { propertyName: "hintChildren", predicate: Hint, isSignal: true }, { propertyName: "errorChildren", predicate: Error, isSignal: true }], viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true, isSignal: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }], exportAs: ["ngsFormField"], ngImport: i0, template: "<div class=\"ngs-form-field-wrapper\" #wrapper>\n <div class=\"ngs-form-field-container\" #container>\n @if (prefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-prefix\">\n <ng-content select=\"[ngsPrefix]\"/>\n </div>\n }\n\n @if (iconPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-icon-affix ngs-form-field-icon-prefix\">\n <ng-content select=\"[ngsIconPrefix]\"/>\n </div>\n }\n\n @if (iconButtonPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-icon-affix ngs-form-field-icon-button-prefix\">\n <ng-content select=\"[ngsIconButtonPrefix]\"/>\n </div>\n }\n\n @if (textPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-text-affix ngs-form-field-text-prefix\">\n <ng-content select=\"[ngsTextPrefix]\"/>\n </div>\n }\n\n <div class=\"ngs-form-field-infix\">\n @if (labelChild()) {\n <label class=\"ngs-form-field-label\" [attr.for]=\"control()?.id\">\n <ng-content select=\"ngs-label\"/>\n\n @if (isRequired()) {\n <span class=\"ngs-form-field-required-marker\">*</span>\n }\n </label>\n }\n <ng-content/>\n </div>\n\n @if (textSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-text-affix ngs-form-field-text-suffix\">\n <ng-content select=\"[ngsTextSuffix]\"/>\n </div>\n }\n\n @if (iconButtonSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-icon-affix ngs-form-field-icon-button-suffix\">\n <ng-content select=\"[ngsIconButtonSuffix]\"/>\n </div>\n }\n\n @if (iconSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-icon-affix ngs-form-field-icon-suffix\">\n <ng-content select=\"[ngsIconSuffix]\"/>\n </div>\n }\n\n @if (suffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-suffix\">\n <ng-content select=\"[ngsSuffix]\"/>\n </div>\n }\n </div>\n</div>\n\n<div class=\"subscript-wrapper\">\n @if (control()?.errorState && errorChildren().length > 0) {\n <ng-content select=\"ngs-error\"/>\n } @else if (hintChildren().length > 0) {\n <div class=\"ngs-form-field-hint-wrapper\">\n <ng-content select=\"ngs-hint\"/>\n </div>\n }\n</div>\n", styles: [":host{--ngs-form-field-color: var(--ngs-field-color);--ngs-form-field-border-color: var(--ngs-field-border-color);--ngs-form-field-border-width: var(--ngs-field-border-width);--ngs-form-field-border-radius: var(--ngs-field-radius);--ngs-form-field-bg: var(--ngs-field-bg);--ngs-form-field-disabled-bg: var(--ngs-field-disabled-bg);--ngs-form-field-label-color: var(--ngs-field-label-color);--ngs-form-field-error-color: var(--ngs-field-error-color);--ngs-form-field-container-min-height: var(--ngs-field-height, var(--ngs-field-container-height));--ngs-form-field-padding-x: var(--ngs-field-padding-x);--ngs-form-field-input-height: var(--ngs-field-input-height);--ngs-form-field-affix-gap: calc(var(--spacing, .25rem) * 1);--ngs-form-field-icon-affix-padding-x: calc(var(--spacing, .25rem) * 2);--ngs-form-field-icon-button-affix-padding-x: calc(var(--spacing, .25rem) * 1);--ngs-form-field-infix-padding-top: var(--ngs-field-infix-padding-top);--ngs-form-field-infix-padding-bottom: var(--ngs-field-infix-padding-bottom);--ngs-form-field-no-label-padding-y: var(--ngs-field-no-label-padding-y);display:block;width:var(--ngs-form-field-width, 100%)}:host.ngs-form-field-disabled{cursor:default}:host.ngs-form-field-disabled .ngs-form-field-container{background:var(--ngs-state-disabled-bg);border-color:var(--ngs-state-disabled-border)}:host.ngs-form-field-disabled .ngs-form-field-label{color:var(--ngs-state-disabled-color)}:host.ngs-form-field-disabled ::ng-deep input{color:var(--ngs-state-disabled-color)}:host.ngs-form-field-focused .ngs-form-field-container{border-color:var(--ngs-field-border-focus-color);box-shadow:0 0 0 1px var(--ngs-field-border-focus-color)}:host.ngs-form-field-focused .ngs-form-field-label{color:var(--ngs-form-field-color)}:host.ngs-form-field-invalid .ngs-form-field-container{border-color:var(--ngs-form-field-error-color)}:host.ngs-form-field-invalid.ngs-form-field-focused .ngs-form-field-container{box-shadow:0 0 0 1px var(--ngs-form-field-error-color)}:host.ngs-form-field-invalid .ngs-form-field-label{color:var(--ngs-form-field-error-color)}:host .ngs-form-field-wrapper{display:flex;flex-direction:column;height:var(--ngs-form-field-container-min-height)}:host .ngs-form-field-container{position:relative;box-sizing:border-box;border:var(--ngs-form-field-border-width) solid var(--ngs-form-field-border-color);border-radius:var(--ngs-form-field-border-radius);background:var(--ngs-form-field-bg);padding:0 var(--ngs-form-field-padding-x);transition:border-color .2s,box-shadow .2s;height:var(--ngs-form-field-container-min-height);min-height:var(--ngs-form-field-container-min-height);display:flex;align-items:center}:host.ngs-form-field-has-icon-prefix .ngs-form-field-container{padding-left:var(--ngs-form-field-icon-affix-padding-x)}:host.ngs-form-field-has-icon-button-prefix .ngs-form-field-container{padding-left:var(--ngs-form-field-icon-button-affix-padding-x)}:host.ngs-form-field-has-icon-suffix .ngs-form-field-container{padding-right:var(--ngs-form-field-icon-affix-padding-x)}:host.ngs-form-field-has-icon-button-suffix .ngs-form-field-container{padding-right:var(--ngs-form-field-icon-button-affix-padding-x)}:host .ngs-form-field-infix{box-sizing:border-box;flex:1;position:relative;padding:var(--ngs-form-field-infix-padding-top) 0 var(--ngs-form-field-infix-padding-bottom) 0;min-width:0;height:100%;min-height:var(--ngs-form-field-container-min-height);display:flex;flex-direction:column;overflow:hidden}:host.ngs-form-field-multiline .ngs-form-field-wrapper{height:auto;min-height:var(--ngs-form-field-container-min-height)}:host.ngs-form-field-multiline .ngs-form-field-container{height:auto;min-height:var(--ngs-form-field-container-min-height);align-items:stretch}:host.ngs-form-field-multiline .ngs-form-field-infix{height:auto;min-height:calc(var(--ngs-form-field-container-min-height) - 2px);overflow:visible}:host.ngs-form-field-multiline ::ng-deep textarea.ngs-input{min-height:var(--ngs-form-field-input-height);resize:vertical}:host:not(.ngs-form-field-has-label) .ngs-form-field-infix,:host:not(.ngs-form-field-has-label) .ngs-form-field-affix{box-sizing:border-box;padding:var(--ngs-form-field-no-label-padding-y) 0}:host:not(.ngs-form-field-has-label) .ngs-form-field-affix{--ngs-button-height: calc( var(--ngs-form-field-container-min-height) - var(--ngs-form-field-no-label-padding-y) - var(--ngs-form-field-no-label-padding-y) );height:100%}:host:not(.ngs-form-field-has-label) .ngs-form-field-infix{display:flex;justify-content:center}:host .ngs-form-field-label{position:absolute;left:0;transform:translateY(-50%);top:calc(var(--ngs-form-field-container-min-height) / 2);transform-origin:left top;font-size:var(--ngs-field-font-size);color:var(--ngs-form-field-label-color);transition:transform .2s ease,font-size .2s ease,color .2s ease,top .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:flex;align-items:center;gap:.125rem;pointer-events:none;z-index:1;-webkit-user-select:none;user-select:none}:host .ngs-form-field-required-marker{color:var(--ngs-form-field-error-color)}:host.ngs-form-field-should-float .ngs-form-field-label{top:4px;font-size:var(--ngs-field-label-float-font-size);transform:translateY(0)}:host ::ng-deep input{font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height);outline:none!important;resize:none;text-align:var(--ngs-form-field-input-text-align, start)}:host ::ng-deep input::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep textarea{min-height:22px;font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height);outline:none!important;text-align:var(--ngs-form-field-input-text-align, start)}:host ::ng-deep textarea::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep .ngs-input,:host ::ng-deep .ngs-chip-input,:host ::ng-deep .ngs-phone-input,:host ::ng-deep .ngs-number-input,:host ::ng-deep ngs-select{width:100%;border:none!important;background:transparent!important;padding:0!important;color:inherit;outline:none!important;display:block}:host ::ng-deep .ngs-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-chip-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-phone-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-number-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep ngs-select:not(textarea):not(ngs-select):not(.ngs-chip-input){height:var(--ngs-form-field-input-height)}:host ::ng-deep .ngs-input:is(ngs-select),:host ::ng-deep .ngs-chip-input:is(ngs-select),:host ::ng-deep .ngs-phone-input:is(ngs-select),:host ::ng-deep .ngs-number-input:is(ngs-select),:host ::ng-deep ngs-select:is(ngs-select){height:var(--ngs-form-field-input-height);min-height:var(--ngs-form-field-input-height);overflow:hidden}:host ::ng-deep .ngs-input::placeholder,:host ::ng-deep .ngs-chip-input::placeholder,:host ::ng-deep .ngs-phone-input::placeholder,:host ::ng-deep .ngs-number-input::placeholder,:host ::ng-deep ngs-select::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep ngs-chip-grid:has(ngs-chip-row){margin-top:calc(var(--spacing, .25rem) * 1.5)}:host ::ng-deep .ngs-date-range-input{width:100%;border:none!important;background:transparent!important;padding:0!important;font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height);color:inherit;outline:none!important;display:flex;height:var(--ngs-form-field-input-height)}:host ::ng-deep .ngs-date-range-input::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep input{resize:none;font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height)}:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-chip-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-chip-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-phone-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-phone-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-number-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-number-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep ngs-select::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep ngs-select .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-date-range-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-date-range-input .ngs-select-placeholder{opacity:0!important;color:transparent!important}:host .ngs-form-field-affix{display:flex;align-items:center}:host .ngs-form-field-affix:empty{display:none}:host .ngs-form-field-before{margin-right:var(--ngs-form-field-affix-gap)}:host .ngs-form-field-after{margin-left:var(--ngs-form-field-affix-gap)}:host .ngs-form-field-text-affix{color:var(--ngs-form-field-label-color);white-space:nowrap;font-size:var(--ngs-field-font-size);padding-top:var(--ngs-form-field-infix-padding-top);padding-bottom:var(--ngs-form-field-infix-padding-bottom);line-height:0}:host .subscript-wrapper{margin-top:.25rem;padding:0 .5rem;font-size:.75rem;min-height:1.375rem}:host.ngs-form-field-subscript-hidden-if-empty .subscript-wrapper:empty{display:none}:host .ngs-form-field-error{display:none}:host .ngs-form-field-hint-wrapper{display:flex;justify-content:space-between;color:var(--ngs-form-field-label-color)}:host.same-height-as-button{--ngs-form-field-input-height: var(--ngs-button-height);--ngs-form-field-container-min-height: var(--ngs-button-height)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
197
198
  }
198
199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FormField, decorators: [{
199
200
  type: Component,
@@ -216,11 +217,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
216
217
  '[class.ngs-form-field-has-icon-button-prefix]': 'iconButtonPrefixChildren().length > 0',
217
218
  '[class.ngs-form-field-has-icon-suffix]': 'iconSuffixChildren().length > 0',
218
219
  '[class.ngs-form-field-has-icon-button-suffix]': 'iconButtonSuffixChildren().length > 0',
219
- }, template: "<div class=\"ngs-form-field-wrapper\" #wrapper>\n <div class=\"ngs-form-field-container\" #container>\n @if (prefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-prefix\">\n <ng-content select=\"[ngsPrefix]\"/>\n </div>\n }\n\n @if (iconPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-icon-affix ngs-form-field-icon-prefix\">\n <ng-content select=\"[ngsIconPrefix]\"/>\n </div>\n }\n\n @if (iconButtonPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-icon-affix ngs-form-field-icon-button-prefix\">\n <ng-content select=\"[ngsIconButtonPrefix]\"/>\n </div>\n }\n\n @if (textPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-text-affix ngs-form-field-text-prefix\">\n <ng-content select=\"[ngsTextPrefix]\"/>\n </div>\n }\n\n <div class=\"ngs-form-field-infix\">\n @if (labelChild()) {\n <label class=\"ngs-form-field-label\" [attr.for]=\"control()?.id\">\n <ng-content select=\"ngs-label\"/>\n\n @if (isRequired()) {\n <span class=\"ngs-form-field-required-marker\">*</span>\n }\n </label>\n }\n <ng-content/>\n </div>\n\n @if (textSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-text-affix ngs-form-field-text-suffix\">\n <ng-content select=\"[ngsTextSuffix]\"/>\n </div>\n }\n\n @if (iconButtonSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-icon-affix ngs-form-field-icon-button-suffix\">\n <ng-content select=\"[ngsIconButtonSuffix]\"/>\n </div>\n }\n\n @if (iconSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-icon-affix ngs-form-field-icon-suffix\">\n <ng-content select=\"[ngsIconSuffix]\"/>\n </div>\n }\n\n @if (suffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-suffix\">\n <ng-content select=\"[ngsSuffix]\"/>\n </div>\n }\n </div>\n</div>\n\n<div class=\"subscript-wrapper\">\n @if (control()?.errorState && errorChildren().length > 0) {\n <ng-content select=\"ngs-error\"/>\n } @else if (hintChildren().length > 0) {\n <div class=\"ngs-form-field-hint-wrapper\">\n <ng-content select=\"ngs-hint\"/>\n </div>\n }\n</div>\n", styles: [":host{--ngs-form-field-color: var(--ngs-field-color);--ngs-form-field-border-color: var(--ngs-field-border-color);--ngs-form-field-border-width: var(--ngs-field-border-width);--ngs-form-field-border-radius: var(--ngs-field-radius);--ngs-form-field-bg: var(--ngs-field-bg);--ngs-form-field-disabled-bg: var(--ngs-field-disabled-bg);--ngs-form-field-label-color: var(--ngs-field-label-color);--ngs-form-field-error-color: var(--ngs-field-error-color);--ngs-form-field-container-min-height: var(--ngs-field-height, var(--ngs-field-container-height));--ngs-form-field-padding-x: var(--ngs-field-padding-x);--ngs-form-field-input-height: var(--ngs-field-input-height);--ngs-form-field-affix-gap: calc(var(--spacing, .25rem) * 1);--ngs-form-field-icon-affix-padding-x: calc(var(--spacing, .25rem) * 2);--ngs-form-field-icon-button-affix-padding-x: calc(var(--spacing, .25rem) * 1);--ngs-form-field-infix-padding-top: var(--ngs-field-infix-padding-top);--ngs-form-field-infix-padding-bottom: var(--ngs-field-infix-padding-bottom);--ngs-form-field-no-label-padding-y: var(--ngs-field-no-label-padding-y);display:block;width:var(--ngs-form-field-width, 100%)}:host.ngs-form-field-disabled{cursor:default}:host.ngs-form-field-disabled .ngs-form-field-container{background:var(--ngs-state-disabled-bg);border-color:var(--ngs-state-disabled-border)}:host.ngs-form-field-disabled .ngs-form-field-label{color:var(--ngs-state-disabled-color)}:host.ngs-form-field-disabled ::ng-deep input{color:var(--ngs-state-disabled-color)}:host.ngs-form-field-focused .ngs-form-field-container{border-color:var(--ngs-field-border-focus-color);box-shadow:0 0 0 1px var(--ngs-field-border-focus-color)}:host.ngs-form-field-focused .ngs-form-field-label{color:var(--ngs-form-field-color)}:host.ngs-form-field-invalid .ngs-form-field-container{border-color:var(--ngs-form-field-error-color)}:host.ngs-form-field-invalid.ngs-form-field-focused .ngs-form-field-container{box-shadow:0 0 0 1px var(--ngs-form-field-error-color)}:host.ngs-form-field-invalid .ngs-form-field-label{color:var(--ngs-form-field-error-color)}:host .ngs-form-field-wrapper{display:flex;flex-direction:column;height:var(--ngs-form-field-container-min-height)}:host .ngs-form-field-container{position:relative;box-sizing:border-box;border:var(--ngs-form-field-border-width) solid var(--ngs-form-field-border-color);border-radius:var(--ngs-form-field-border-radius);background:var(--ngs-form-field-bg);padding:0 var(--ngs-form-field-padding-x);transition:border-color .2s,box-shadow .2s;height:var(--ngs-form-field-container-min-height);min-height:var(--ngs-form-field-container-min-height);display:flex;align-items:center}:host.ngs-form-field-has-icon-prefix .ngs-form-field-container{padding-left:var(--ngs-form-field-icon-affix-padding-x)}:host.ngs-form-field-has-icon-button-prefix .ngs-form-field-container{padding-left:var(--ngs-form-field-icon-button-affix-padding-x)}:host.ngs-form-field-has-icon-suffix .ngs-form-field-container{padding-right:var(--ngs-form-field-icon-affix-padding-x)}:host.ngs-form-field-has-icon-button-suffix .ngs-form-field-container{padding-right:var(--ngs-form-field-icon-button-affix-padding-x)}:host .ngs-form-field-infix{box-sizing:border-box;flex:1;position:relative;padding:var(--ngs-form-field-infix-padding-top) 0 var(--ngs-form-field-infix-padding-bottom) 0;min-width:0;height:100%;min-height:var(--ngs-form-field-container-min-height);display:flex;flex-direction:column;overflow:hidden}:host.ngs-form-field-multiline .ngs-form-field-wrapper{height:auto;min-height:var(--ngs-form-field-container-min-height)}:host.ngs-form-field-multiline .ngs-form-field-container{height:auto;min-height:var(--ngs-form-field-container-min-height);align-items:stretch}:host.ngs-form-field-multiline .ngs-form-field-infix{height:auto;min-height:calc(var(--ngs-form-field-container-min-height) - 2px);overflow:visible}:host.ngs-form-field-multiline ::ng-deep textarea.ngs-input{min-height:var(--ngs-form-field-input-height);resize:vertical}:host:not(.ngs-form-field-has-label) .ngs-form-field-infix,:host:not(.ngs-form-field-has-label) .ngs-form-field-affix{box-sizing:border-box;padding:var(--ngs-form-field-no-label-padding-y) 0}:host:not(.ngs-form-field-has-label) .ngs-form-field-affix{--ngs-button-height: calc( var(--ngs-form-field-container-min-height) - var(--ngs-form-field-no-label-padding-y) - var(--ngs-form-field-no-label-padding-y) );height:100%}:host:not(.ngs-form-field-has-label) .ngs-form-field-infix{display:flex;justify-content:center}:host .ngs-form-field-label{position:absolute;left:0;transform:translateY(-50%);top:calc(var(--ngs-form-field-container-min-height) / 2);transform-origin:left top;font-size:var(--ngs-field-font-size);color:var(--ngs-form-field-label-color);transition:transform .2s ease,font-size .2s ease,color .2s ease,top .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:flex;align-items:center;gap:.125rem;pointer-events:none;z-index:1;-webkit-user-select:none;user-select:none}:host .ngs-form-field-required-marker{color:var(--ngs-form-field-error-color)}:host.ngs-form-field-should-float .ngs-form-field-label{top:4px;font-size:var(--ngs-field-label-float-font-size);transform:translateY(0)}:host ::ng-deep input{font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height);outline:none!important;resize:none;text-align:var(--ngs-form-field-input-text-align, start)}:host ::ng-deep input::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep textarea{min-height:22px;font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height);outline:none!important;text-align:var(--ngs-form-field-input-text-align, start)}:host ::ng-deep textarea::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep .ngs-input,:host ::ng-deep .ngs-chip-input,:host ::ng-deep .ngs-phone-input,:host ::ng-deep .ngs-number-input,:host ::ng-deep ngs-select{width:100%;border:none!important;background:transparent!important;padding:0!important;color:inherit;outline:none!important;display:block}:host ::ng-deep .ngs-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-chip-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-phone-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-number-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep ngs-select:not(textarea):not(ngs-select):not(.ngs-chip-input){height:var(--ngs-form-field-input-height)}:host ::ng-deep .ngs-input:is(ngs-select),:host ::ng-deep .ngs-chip-input:is(ngs-select),:host ::ng-deep .ngs-phone-input:is(ngs-select),:host ::ng-deep .ngs-number-input:is(ngs-select),:host ::ng-deep ngs-select:is(ngs-select){height:var(--ngs-form-field-input-height);min-height:var(--ngs-form-field-input-height);overflow:hidden}:host ::ng-deep .ngs-input::placeholder,:host ::ng-deep .ngs-chip-input::placeholder,:host ::ng-deep .ngs-phone-input::placeholder,:host ::ng-deep .ngs-number-input::placeholder,:host ::ng-deep ngs-select::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep ngs-chip-grid:empty{display:none}:host ::ng-deep ngs-chip-grid{margin:calc(var(--spacing, .25rem) * 1) 0}:host ::ng-deep .ngs-date-range-input{width:100%;border:none!important;background:transparent!important;padding:0!important;font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height);color:inherit;outline:none!important;display:flex;height:var(--ngs-form-field-input-height)}:host ::ng-deep .ngs-date-range-input::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep input{resize:none;font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height)}:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-chip-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-chip-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-phone-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-phone-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-number-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-number-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep ngs-select::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep ngs-select .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-date-range-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-date-range-input .ngs-select-placeholder{opacity:0!important;color:transparent!important}:host .ngs-form-field-affix{display:flex;align-items:center}:host .ngs-form-field-affix:empty{display:none}:host .ngs-form-field-before{margin-right:var(--ngs-form-field-affix-gap)}:host .ngs-form-field-after{margin-left:var(--ngs-form-field-affix-gap)}:host .ngs-form-field-text-affix{color:var(--ngs-form-field-label-color);white-space:nowrap;font-size:var(--ngs-field-font-size);padding-top:var(--ngs-form-field-infix-padding-top);padding-bottom:var(--ngs-form-field-infix-padding-bottom);line-height:0}:host .subscript-wrapper{margin-top:.25rem;padding:0 .5rem;font-size:.75rem;min-height:1.375rem}:host.ngs-form-field-subscript-hidden-if-empty .subscript-wrapper:empty{display:none}:host .ngs-form-field-error{display:none}:host .ngs-form-field-hint-wrapper{display:flex;justify-content:space-between;color:var(--ngs-form-field-label-color)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
220
- }], propDecorators: { subscriptHiddenIfEmpty: [{ type: i0.Input, args: [{ isSignal: true, alias: "subscriptHiddenIfEmpty", required: false }] }], wrapper: [{ type: i0.ViewChild, args: ['wrapper', { isSignal: true }] }], container: [{ type: i0.ViewChild, args: ['container', { isSignal: true }] }], control: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FormFieldControl), { isSignal: true }] }], labelChild: [{ type: i0.ContentChild, args: [i0.forwardRef(() => Label), { isSignal: true }] }], prefixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Prefix), { isSignal: true }] }], iconPrefixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => IconPrefix), { isSignal: true }] }], iconButtonPrefixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => IconButtonPrefix), { isSignal: true }] }], textPrefixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TextPrefix), { isSignal: true }] }], suffixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Suffix), { isSignal: true }] }], iconSuffixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => IconSuffix), { isSignal: true }] }], iconButtonSuffixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => IconButtonSuffix), { isSignal: true }] }], textSuffixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TextSuffix), { isSignal: true }] }], hintChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Hint), { isSignal: true }] }], errorChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Error), { isSignal: true }] }], _onClick: [{
221
- type: HostListener,
222
- args: ['click', ['$event']]
223
- }] } });
220
+ '[class.same-height-as-button]': 'sameHeightAsButton()',
221
+ '(click)': '_onClick($event)'
222
+ }, template: "<div class=\"ngs-form-field-wrapper\" #wrapper>\n <div class=\"ngs-form-field-container\" #container>\n @if (prefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-prefix\">\n <ng-content select=\"[ngsPrefix]\"/>\n </div>\n }\n\n @if (iconPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-icon-affix ngs-form-field-icon-prefix\">\n <ng-content select=\"[ngsIconPrefix]\"/>\n </div>\n }\n\n @if (iconButtonPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-icon-affix ngs-form-field-icon-button-prefix\">\n <ng-content select=\"[ngsIconButtonPrefix]\"/>\n </div>\n }\n\n @if (textPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-text-affix ngs-form-field-text-prefix\">\n <ng-content select=\"[ngsTextPrefix]\"/>\n </div>\n }\n\n <div class=\"ngs-form-field-infix\">\n @if (labelChild()) {\n <label class=\"ngs-form-field-label\" [attr.for]=\"control()?.id\">\n <ng-content select=\"ngs-label\"/>\n\n @if (isRequired()) {\n <span class=\"ngs-form-field-required-marker\">*</span>\n }\n </label>\n }\n <ng-content/>\n </div>\n\n @if (textSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-text-affix ngs-form-field-text-suffix\">\n <ng-content select=\"[ngsTextSuffix]\"/>\n </div>\n }\n\n @if (iconButtonSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-icon-affix ngs-form-field-icon-button-suffix\">\n <ng-content select=\"[ngsIconButtonSuffix]\"/>\n </div>\n }\n\n @if (iconSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-icon-affix ngs-form-field-icon-suffix\">\n <ng-content select=\"[ngsIconSuffix]\"/>\n </div>\n }\n\n @if (suffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-suffix\">\n <ng-content select=\"[ngsSuffix]\"/>\n </div>\n }\n </div>\n</div>\n\n<div class=\"subscript-wrapper\">\n @if (control()?.errorState && errorChildren().length > 0) {\n <ng-content select=\"ngs-error\"/>\n } @else if (hintChildren().length > 0) {\n <div class=\"ngs-form-field-hint-wrapper\">\n <ng-content select=\"ngs-hint\"/>\n </div>\n }\n</div>\n", styles: [":host{--ngs-form-field-color: var(--ngs-field-color);--ngs-form-field-border-color: var(--ngs-field-border-color);--ngs-form-field-border-width: var(--ngs-field-border-width);--ngs-form-field-border-radius: var(--ngs-field-radius);--ngs-form-field-bg: var(--ngs-field-bg);--ngs-form-field-disabled-bg: var(--ngs-field-disabled-bg);--ngs-form-field-label-color: var(--ngs-field-label-color);--ngs-form-field-error-color: var(--ngs-field-error-color);--ngs-form-field-container-min-height: var(--ngs-field-height, var(--ngs-field-container-height));--ngs-form-field-padding-x: var(--ngs-field-padding-x);--ngs-form-field-input-height: var(--ngs-field-input-height);--ngs-form-field-affix-gap: calc(var(--spacing, .25rem) * 1);--ngs-form-field-icon-affix-padding-x: calc(var(--spacing, .25rem) * 2);--ngs-form-field-icon-button-affix-padding-x: calc(var(--spacing, .25rem) * 1);--ngs-form-field-infix-padding-top: var(--ngs-field-infix-padding-top);--ngs-form-field-infix-padding-bottom: var(--ngs-field-infix-padding-bottom);--ngs-form-field-no-label-padding-y: var(--ngs-field-no-label-padding-y);display:block;width:var(--ngs-form-field-width, 100%)}:host.ngs-form-field-disabled{cursor:default}:host.ngs-form-field-disabled .ngs-form-field-container{background:var(--ngs-state-disabled-bg);border-color:var(--ngs-state-disabled-border)}:host.ngs-form-field-disabled .ngs-form-field-label{color:var(--ngs-state-disabled-color)}:host.ngs-form-field-disabled ::ng-deep input{color:var(--ngs-state-disabled-color)}:host.ngs-form-field-focused .ngs-form-field-container{border-color:var(--ngs-field-border-focus-color);box-shadow:0 0 0 1px var(--ngs-field-border-focus-color)}:host.ngs-form-field-focused .ngs-form-field-label{color:var(--ngs-form-field-color)}:host.ngs-form-field-invalid .ngs-form-field-container{border-color:var(--ngs-form-field-error-color)}:host.ngs-form-field-invalid.ngs-form-field-focused .ngs-form-field-container{box-shadow:0 0 0 1px var(--ngs-form-field-error-color)}:host.ngs-form-field-invalid .ngs-form-field-label{color:var(--ngs-form-field-error-color)}:host .ngs-form-field-wrapper{display:flex;flex-direction:column;height:var(--ngs-form-field-container-min-height)}:host .ngs-form-field-container{position:relative;box-sizing:border-box;border:var(--ngs-form-field-border-width) solid var(--ngs-form-field-border-color);border-radius:var(--ngs-form-field-border-radius);background:var(--ngs-form-field-bg);padding:0 var(--ngs-form-field-padding-x);transition:border-color .2s,box-shadow .2s;height:var(--ngs-form-field-container-min-height);min-height:var(--ngs-form-field-container-min-height);display:flex;align-items:center}:host.ngs-form-field-has-icon-prefix .ngs-form-field-container{padding-left:var(--ngs-form-field-icon-affix-padding-x)}:host.ngs-form-field-has-icon-button-prefix .ngs-form-field-container{padding-left:var(--ngs-form-field-icon-button-affix-padding-x)}:host.ngs-form-field-has-icon-suffix .ngs-form-field-container{padding-right:var(--ngs-form-field-icon-affix-padding-x)}:host.ngs-form-field-has-icon-button-suffix .ngs-form-field-container{padding-right:var(--ngs-form-field-icon-button-affix-padding-x)}:host .ngs-form-field-infix{box-sizing:border-box;flex:1;position:relative;padding:var(--ngs-form-field-infix-padding-top) 0 var(--ngs-form-field-infix-padding-bottom) 0;min-width:0;height:100%;min-height:var(--ngs-form-field-container-min-height);display:flex;flex-direction:column;overflow:hidden}:host.ngs-form-field-multiline .ngs-form-field-wrapper{height:auto;min-height:var(--ngs-form-field-container-min-height)}:host.ngs-form-field-multiline .ngs-form-field-container{height:auto;min-height:var(--ngs-form-field-container-min-height);align-items:stretch}:host.ngs-form-field-multiline .ngs-form-field-infix{height:auto;min-height:calc(var(--ngs-form-field-container-min-height) - 2px);overflow:visible}:host.ngs-form-field-multiline ::ng-deep textarea.ngs-input{min-height:var(--ngs-form-field-input-height);resize:vertical}:host:not(.ngs-form-field-has-label) .ngs-form-field-infix,:host:not(.ngs-form-field-has-label) .ngs-form-field-affix{box-sizing:border-box;padding:var(--ngs-form-field-no-label-padding-y) 0}:host:not(.ngs-form-field-has-label) .ngs-form-field-affix{--ngs-button-height: calc( var(--ngs-form-field-container-min-height) - var(--ngs-form-field-no-label-padding-y) - var(--ngs-form-field-no-label-padding-y) );height:100%}:host:not(.ngs-form-field-has-label) .ngs-form-field-infix{display:flex;justify-content:center}:host .ngs-form-field-label{position:absolute;left:0;transform:translateY(-50%);top:calc(var(--ngs-form-field-container-min-height) / 2);transform-origin:left top;font-size:var(--ngs-field-font-size);color:var(--ngs-form-field-label-color);transition:transform .2s ease,font-size .2s ease,color .2s ease,top .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:flex;align-items:center;gap:.125rem;pointer-events:none;z-index:1;-webkit-user-select:none;user-select:none}:host .ngs-form-field-required-marker{color:var(--ngs-form-field-error-color)}:host.ngs-form-field-should-float .ngs-form-field-label{top:4px;font-size:var(--ngs-field-label-float-font-size);transform:translateY(0)}:host ::ng-deep input{font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height);outline:none!important;resize:none;text-align:var(--ngs-form-field-input-text-align, start)}:host ::ng-deep input::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep textarea{min-height:22px;font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height);outline:none!important;text-align:var(--ngs-form-field-input-text-align, start)}:host ::ng-deep textarea::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep .ngs-input,:host ::ng-deep .ngs-chip-input,:host ::ng-deep .ngs-phone-input,:host ::ng-deep .ngs-number-input,:host ::ng-deep ngs-select{width:100%;border:none!important;background:transparent!important;padding:0!important;color:inherit;outline:none!important;display:block}:host ::ng-deep .ngs-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-chip-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-phone-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-number-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep ngs-select:not(textarea):not(ngs-select):not(.ngs-chip-input){height:var(--ngs-form-field-input-height)}:host ::ng-deep .ngs-input:is(ngs-select),:host ::ng-deep .ngs-chip-input:is(ngs-select),:host ::ng-deep .ngs-phone-input:is(ngs-select),:host ::ng-deep .ngs-number-input:is(ngs-select),:host ::ng-deep ngs-select:is(ngs-select){height:var(--ngs-form-field-input-height);min-height:var(--ngs-form-field-input-height);overflow:hidden}:host ::ng-deep .ngs-input::placeholder,:host ::ng-deep .ngs-chip-input::placeholder,:host ::ng-deep .ngs-phone-input::placeholder,:host ::ng-deep .ngs-number-input::placeholder,:host ::ng-deep ngs-select::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep ngs-chip-grid:has(ngs-chip-row){margin-top:calc(var(--spacing, .25rem) * 1.5)}:host ::ng-deep .ngs-date-range-input{width:100%;border:none!important;background:transparent!important;padding:0!important;font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height);color:inherit;outline:none!important;display:flex;height:var(--ngs-form-field-input-height)}:host ::ng-deep .ngs-date-range-input::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep input{resize:none;font-size:var(--ngs-field-font-size);line-height:var(--ngs-field-line-height)}:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-chip-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-chip-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-phone-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-phone-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-number-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-number-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep ngs-select::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep ngs-select .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-date-range-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-date-range-input .ngs-select-placeholder{opacity:0!important;color:transparent!important}:host .ngs-form-field-affix{display:flex;align-items:center}:host .ngs-form-field-affix:empty{display:none}:host .ngs-form-field-before{margin-right:var(--ngs-form-field-affix-gap)}:host .ngs-form-field-after{margin-left:var(--ngs-form-field-affix-gap)}:host .ngs-form-field-text-affix{color:var(--ngs-form-field-label-color);white-space:nowrap;font-size:var(--ngs-field-font-size);padding-top:var(--ngs-form-field-infix-padding-top);padding-bottom:var(--ngs-form-field-infix-padding-bottom);line-height:0}:host .subscript-wrapper{margin-top:.25rem;padding:0 .5rem;font-size:.75rem;min-height:1.375rem}:host.ngs-form-field-subscript-hidden-if-empty .subscript-wrapper:empty{display:none}:host .ngs-form-field-error{display:none}:host .ngs-form-field-hint-wrapper{display:flex;justify-content:space-between;color:var(--ngs-form-field-label-color)}:host.same-height-as-button{--ngs-form-field-input-height: var(--ngs-button-height);--ngs-form-field-container-min-height: var(--ngs-button-height)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
223
+ }], propDecorators: { subscriptHiddenIfEmpty: [{ type: i0.Input, args: [{ isSignal: true, alias: "subscriptHiddenIfEmpty", required: false }] }], sameHeightAsButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "sameHeightAsButton", required: false }] }], wrapper: [{ type: i0.ViewChild, args: ['wrapper', { isSignal: true }] }], container: [{ type: i0.ViewChild, args: ['container', { isSignal: true }] }], control: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FormFieldControl), { isSignal: true }] }], labelChild: [{ type: i0.ContentChild, args: [i0.forwardRef(() => Label), { isSignal: true }] }], prefixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Prefix), { isSignal: true }] }], iconPrefixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => IconPrefix), { isSignal: true }] }], iconButtonPrefixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => IconButtonPrefix), { isSignal: true }] }], textPrefixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TextPrefix), { isSignal: true }] }], suffixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Suffix), { isSignal: true }] }], iconSuffixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => IconSuffix), { isSignal: true }] }], iconButtonSuffixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => IconButtonSuffix), { isSignal: true }] }], textSuffixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TextSuffix), { isSignal: true }] }], hintChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Hint), { isSignal: true }] }], errorChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Error), { isSignal: true }] }] } });
224
224
 
225
225
  const FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken('FORM_FIELD_DEFAULT_OPTIONS');
226
226
 
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-form-field.mjs","sources":["../../../projects/components/form-field/src/label/label.ts","../../../projects/components/form-field/src/label/label.html","../../../projects/components/form-field/src/form-field-control.ts","../../../projects/components/form-field/src/hint/hint.ts","../../../projects/components/form-field/src/hint/hint.html","../../../projects/components/form-field/src/error/error.ts","../../../projects/components/form-field/src/error/error.html","../../../projects/components/form-field/src/prefix-suffix/prefix-suffix.ts","../../../projects/components/form-field/src/form-field-token.ts","../../../projects/components/form-field/src/form-field/form-field.ts","../../../projects/components/form-field/src/form-field/form-field.html","../../../projects/components/form-field/src/form-field/form-field-errors.ts","../../../projects/components/form-field/ngstarter-ui-components-form-field.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-label',\n templateUrl: './label.html',\n styleUrl: './label.scss',\n host: {\n 'class': 'ngs-label',\n }\n})\nexport class Label {\n}\n","<ng-content/>\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport abstract class FormFieldControl<T> {\n abstract value: T | null;\n abstract readonly stateChanges: any;\n abstract readonly id: string;\n abstract readonly placeholder: string | undefined;\n abstract readonly ngControl: any;\n abstract readonly focused: boolean;\n abstract readonly empty: boolean;\n abstract readonly shouldLabelFloat: boolean;\n abstract readonly required: boolean;\n abstract readonly disabled: boolean;\n abstract readonly errorState: boolean;\n readonly multiline?: boolean;\n abstract focus(): void;\n}\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ngs-hint',\n standalone: true,\n templateUrl: './hint.html',\n styleUrl: './hint.scss',\n host: {\n 'class': 'ngs-hint',\n '[class.ngs-hint-end]': 'align() === \"end\"',\n }\n})\nexport class Hint {\n align = input<'start' | 'end'>('start');\n}\n","<ng-content />\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-error',\n standalone: true,\n templateUrl: './error.html',\n styleUrl: './error.scss',\n host: {\n 'class': 'ngs-error',\n 'role': 'alert',\n }\n})\nexport class Error {}\n","<ng-content />\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsPrefix]',\n})\nexport class Prefix {}\n\n@Directive({\n selector: '[ngsTextPrefix]',\n})\nexport class TextPrefix {}\n\n@Directive({\n selector: '[ngsIconPrefix]',\n})\nexport class IconPrefix {}\n\n@Directive({\n selector: '[ngsIconButtonPrefix]',\n})\nexport class IconButtonPrefix {}\n\n@Directive({\n selector: '[ngsSuffix]',\n})\nexport class Suffix {}\n\n@Directive({\n selector: '[ngsTextSuffix]',\n})\nexport class TextSuffix {}\n\n@Directive({\n selector: '[ngsIconSuffix]',\n})\nexport class IconSuffix {}\n\n@Directive({\n selector: '[ngsIconButtonSuffix]',\n})\nexport class IconButtonSuffix {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FORM_FIELD = new InjectionToken<any>('FORM_FIELD');\n","import {\n booleanAttribute,\n Component,\n contentChild,\n contentChildren,\n ElementRef,\n HostListener,\n inject,\n input,\n viewChild,\n computed,\n} from '@angular/core';\nimport { FormFieldControl } from '../form-field-control';\nimport { Label } from '../label/label';\nimport { FORM_FIELD } from '../form-field-token';\nimport { Prefix, Suffix, TextPrefix, TextSuffix, IconPrefix, IconButtonPrefix, IconSuffix, IconButtonSuffix } from '../prefix-suffix/prefix-suffix';\nimport { Hint } from '../hint/hint';\nimport { Error } from '../error/error';\n\n@Component({\n selector: 'ngs-form-field',\n exportAs: 'ngsFormField',\n templateUrl: './form-field.html',\n styleUrl: './form-field.scss',\n imports: [],\n providers: [\n {\n provide: FORM_FIELD,\n useExisting: FormField\n }\n ],\n host: {\n 'class': 'ngs-form-field',\n '[class.ngs-form-field-disabled]': 'control()?.disabled',\n '[class.ngs-form-field-invalid]': 'control()?.errorState',\n '[class.ngs-form-field-should-float]': 'shouldLabelFloat()',\n '[class.ngs-form-field-has-label]': 'labelChild()',\n '[class.ngs-form-field-empty]': 'control()?.empty',\n '[class.ngs-form-field-focused]': 'control()?.focused',\n '[class.ngs-form-field-multiline]': 'control()?.multiline',\n '[class.ngs-form-field-subscript-hidden-if-empty]': 'subscriptHiddenIfEmpty()',\n '[class.ngs-form-field-has-icon-prefix]': 'iconPrefixChildren().length > 0',\n '[class.ngs-form-field-has-icon-button-prefix]': 'iconButtonPrefixChildren().length > 0',\n '[class.ngs-form-field-has-icon-suffix]': 'iconSuffixChildren().length > 0',\n '[class.ngs-form-field-has-icon-button-suffix]': 'iconButtonSuffixChildren().length > 0',\n }\n})\nexport class FormField {\n subscriptHiddenIfEmpty = input(false, {\n transform: booleanAttribute\n });\n elementRef = inject(ElementRef);\n wrapper = viewChild.required<ElementRef>('wrapper');\n container = viewChild.required<ElementRef>('container');\n control = contentChild(FormFieldControl);\n labelChild = contentChild(Label);\n prefixChildren = contentChildren(Prefix);\n iconPrefixChildren = contentChildren(IconPrefix);\n iconButtonPrefixChildren = contentChildren(IconButtonPrefix);\n textPrefixChildren = contentChildren(TextPrefix);\n suffixChildren = contentChildren(Suffix);\n iconSuffixChildren = contentChildren(IconSuffix);\n iconButtonSuffixChildren = contentChildren(IconButtonSuffix);\n textSuffixChildren = contentChildren(TextSuffix);\n hintChildren = contentChildren(Hint);\n errorChildren = contentChildren(Error);\n isRequired = computed(() => {\n const control = this.control();\n if (!control) {\n return false;\n }\n\n if (control.required) {\n return true;\n }\n\n const ngControl = control.ngControl;\n if (ngControl && ngControl.control && ngControl.control.validator) {\n const validator = ngControl.control.validator({} as any);\n if (validator && validator['required']) {\n return true;\n }\n }\n\n return false;\n });\n\n shouldLabelFloat(): boolean {\n return !!this.control()?.shouldLabelFloat;\n }\n\n @HostListener('click', ['$event'])\n protected _onClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const wrapper = this.wrapper().nativeElement;\n const isInsideWrapper = wrapper.contains(target);\n\n if (!isInsideWrapper) {\n return;\n }\n\n const isIconButton = !!target.closest('.ngs-icon-button') || !!target.closest('[ngsIconButton]');\n const isToggle = !!target.closest('ngs-datepicker-toggle') || !!target.closest('ngs-date-range-picker');\n\n if (this.control()?.focused || isIconButton || isToggle) {\n return;\n }\n\n this.focus();\n event.stopPropagation();\n }\n\n focus(): void {\n const control = this.control();\n if (control && !control.disabled) {\n control.focus();\n }\n }\n}\n","<div class=\"ngs-form-field-wrapper\" #wrapper>\n <div class=\"ngs-form-field-container\" #container>\n @if (prefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-prefix\">\n <ng-content select=\"[ngsPrefix]\"/>\n </div>\n }\n\n @if (iconPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-icon-affix ngs-form-field-icon-prefix\">\n <ng-content select=\"[ngsIconPrefix]\"/>\n </div>\n }\n\n @if (iconButtonPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-icon-affix ngs-form-field-icon-button-prefix\">\n <ng-content select=\"[ngsIconButtonPrefix]\"/>\n </div>\n }\n\n @if (textPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-text-affix ngs-form-field-text-prefix\">\n <ng-content select=\"[ngsTextPrefix]\"/>\n </div>\n }\n\n <div class=\"ngs-form-field-infix\">\n @if (labelChild()) {\n <label class=\"ngs-form-field-label\" [attr.for]=\"control()?.id\">\n <ng-content select=\"ngs-label\"/>\n\n @if (isRequired()) {\n <span class=\"ngs-form-field-required-marker\">*</span>\n }\n </label>\n }\n <ng-content/>\n </div>\n\n @if (textSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-text-affix ngs-form-field-text-suffix\">\n <ng-content select=\"[ngsTextSuffix]\"/>\n </div>\n }\n\n @if (iconButtonSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-icon-affix ngs-form-field-icon-button-suffix\">\n <ng-content select=\"[ngsIconButtonSuffix]\"/>\n </div>\n }\n\n @if (iconSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-icon-affix ngs-form-field-icon-suffix\">\n <ng-content select=\"[ngsIconSuffix]\"/>\n </div>\n }\n\n @if (suffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-suffix\">\n <ng-content select=\"[ngsSuffix]\"/>\n </div>\n }\n </div>\n</div>\n\n<div class=\"subscript-wrapper\">\n @if (control()?.errorState && errorChildren().length > 0) {\n <ng-content select=\"ngs-error\"/>\n } @else if (hintChildren().length > 0) {\n <div class=\"ngs-form-field-hint-wrapper\">\n <ng-content select=\"ngs-hint\"/>\n </div>\n }\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport interface FormFieldDefaultOptions {\n appearance?: 'fill' | 'outline';\n color?: string;\n hideRequiredMarker?: boolean;\n floatLabel?: 'always' | 'auto';\n subscriptHiddenIfEmpty?: boolean;\n}\n\nexport const FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken<FormFieldDefaultOptions>(\n 'FORM_FIELD_DEFAULT_OPTIONS'\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-form-field.mjs","sources":["../../../projects/components/form-field/src/label/label.ts","../../../projects/components/form-field/src/label/label.html","../../../projects/components/form-field/src/form-field-control.ts","../../../projects/components/form-field/src/hint/hint.ts","../../../projects/components/form-field/src/hint/hint.html","../../../projects/components/form-field/src/error/error.ts","../../../projects/components/form-field/src/error/error.html","../../../projects/components/form-field/src/prefix-suffix/prefix-suffix.ts","../../../projects/components/form-field/src/form-field-token.ts","../../../projects/components/form-field/src/form-field/form-field.ts","../../../projects/components/form-field/src/form-field/form-field.html","../../../projects/components/form-field/src/form-field/form-field-errors.ts","../../../projects/components/form-field/ngstarter-ui-components-form-field.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-label',\n templateUrl: './label.html',\n styleUrl: './label.scss',\n host: {\n 'class': 'ngs-label',\n }\n})\nexport class Label {\n}\n","<ng-content/>\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport abstract class FormFieldControl<T> {\n abstract value: T | null;\n abstract readonly stateChanges: any;\n abstract readonly id: string;\n abstract readonly placeholder: string | undefined;\n abstract readonly ngControl: any;\n abstract readonly focused: boolean;\n abstract readonly empty: boolean;\n abstract readonly shouldLabelFloat: boolean;\n abstract readonly required: boolean;\n abstract readonly disabled: boolean;\n abstract readonly errorState: boolean;\n readonly multiline?: boolean;\n abstract focus(): void;\n}\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ngs-hint',\n standalone: true,\n templateUrl: './hint.html',\n styleUrl: './hint.scss',\n host: {\n 'class': 'ngs-hint',\n '[class.ngs-hint-end]': 'align() === \"end\"',\n }\n})\nexport class Hint {\n align = input<'start' | 'end'>('start');\n}\n","<ng-content />\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-error',\n standalone: true,\n templateUrl: './error.html',\n styleUrl: './error.scss',\n host: {\n 'class': 'ngs-error',\n 'role': 'alert',\n }\n})\nexport class Error {}\n","<ng-content />\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsPrefix]',\n})\nexport class Prefix {}\n\n@Directive({\n selector: '[ngsTextPrefix]',\n})\nexport class TextPrefix {}\n\n@Directive({\n selector: '[ngsIconPrefix]',\n})\nexport class IconPrefix {}\n\n@Directive({\n selector: '[ngsIconButtonPrefix]',\n})\nexport class IconButtonPrefix {}\n\n@Directive({\n selector: '[ngsSuffix]',\n})\nexport class Suffix {}\n\n@Directive({\n selector: '[ngsTextSuffix]',\n})\nexport class TextSuffix {}\n\n@Directive({\n selector: '[ngsIconSuffix]',\n})\nexport class IconSuffix {}\n\n@Directive({\n selector: '[ngsIconButtonSuffix]',\n})\nexport class IconButtonSuffix {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FORM_FIELD = new InjectionToken<any>('FORM_FIELD');\n","import {\n booleanAttribute,\n Component,\n contentChild,\n contentChildren,\n ElementRef,\n inject,\n input,\n viewChild,\n computed,\n} from '@angular/core';\nimport { FormFieldControl } from '../form-field-control';\nimport { Label } from '../label/label';\nimport { FORM_FIELD } from '../form-field-token';\nimport { Prefix, Suffix, TextPrefix, TextSuffix, IconPrefix, IconButtonPrefix, IconSuffix, IconButtonSuffix } from '../prefix-suffix/prefix-suffix';\nimport { Hint } from '../hint/hint';\nimport { Error } from '../error/error';\n\n@Component({\n selector: 'ngs-form-field',\n exportAs: 'ngsFormField',\n templateUrl: './form-field.html',\n styleUrl: './form-field.scss',\n imports: [],\n providers: [\n {\n provide: FORM_FIELD,\n useExisting: FormField\n }\n ],\n host: {\n 'class': 'ngs-form-field',\n '[class.ngs-form-field-disabled]': 'control()?.disabled',\n '[class.ngs-form-field-invalid]': 'control()?.errorState',\n '[class.ngs-form-field-should-float]': 'shouldLabelFloat()',\n '[class.ngs-form-field-has-label]': 'labelChild()',\n '[class.ngs-form-field-empty]': 'control()?.empty',\n '[class.ngs-form-field-focused]': 'control()?.focused',\n '[class.ngs-form-field-multiline]': 'control()?.multiline',\n '[class.ngs-form-field-subscript-hidden-if-empty]': 'subscriptHiddenIfEmpty()',\n '[class.ngs-form-field-has-icon-prefix]': 'iconPrefixChildren().length > 0',\n '[class.ngs-form-field-has-icon-button-prefix]': 'iconButtonPrefixChildren().length > 0',\n '[class.ngs-form-field-has-icon-suffix]': 'iconSuffixChildren().length > 0',\n '[class.ngs-form-field-has-icon-button-suffix]': 'iconButtonSuffixChildren().length > 0',\n '[class.same-height-as-button]': 'sameHeightAsButton()',\n '(click)': '_onClick($event)'\n }\n})\nexport class FormField {\n readonly elementRef = inject(ElementRef);\n\n subscriptHiddenIfEmpty = input(false, {\n transform: booleanAttribute\n });\n sameHeightAsButton = input(false, {\n transform: booleanAttribute\n });\n wrapper = viewChild.required<ElementRef>('wrapper');\n container = viewChild.required<ElementRef>('container');\n control = contentChild(FormFieldControl);\n labelChild = contentChild(Label);\n prefixChildren = contentChildren(Prefix);\n iconPrefixChildren = contentChildren(IconPrefix);\n iconButtonPrefixChildren = contentChildren(IconButtonPrefix);\n textPrefixChildren = contentChildren(TextPrefix);\n suffixChildren = contentChildren(Suffix);\n iconSuffixChildren = contentChildren(IconSuffix);\n iconButtonSuffixChildren = contentChildren(IconButtonSuffix);\n textSuffixChildren = contentChildren(TextSuffix);\n hintChildren = contentChildren(Hint);\n errorChildren = contentChildren(Error);\n isRequired = computed(() => {\n const control = this.control();\n if (!control) {\n return false;\n }\n\n if (control.required) {\n return true;\n }\n\n const ngControl = control.ngControl;\n if (ngControl && ngControl.control && ngControl.control.validator) {\n const validator = ngControl.control.validator({} as any);\n if (validator && validator['required']) {\n return true;\n }\n }\n\n return false;\n });\n\n shouldLabelFloat(): boolean {\n return !!this.control()?.shouldLabelFloat;\n }\n\n protected _onClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const wrapper = this.wrapper().nativeElement;\n const isInsideWrapper = wrapper.contains(target);\n\n if (!isInsideWrapper) {\n return;\n }\n\n const isIconButton = !!target.closest('.ngs-icon-button') || !!target.closest('[ngsIconButton]');\n const isToggle = !!target.closest('ngs-datepicker-toggle') || !!target.closest('ngs-date-range-picker');\n\n if (this.control()?.focused || isIconButton || isToggle) {\n return;\n }\n\n this.focus();\n event.stopPropagation();\n }\n\n focus(): void {\n const control = this.control();\n if (control && !control.disabled) {\n control.focus();\n }\n }\n}\n","<div class=\"ngs-form-field-wrapper\" #wrapper>\n <div class=\"ngs-form-field-container\" #container>\n @if (prefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-prefix\">\n <ng-content select=\"[ngsPrefix]\"/>\n </div>\n }\n\n @if (iconPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-icon-affix ngs-form-field-icon-prefix\">\n <ng-content select=\"[ngsIconPrefix]\"/>\n </div>\n }\n\n @if (iconButtonPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-icon-affix ngs-form-field-icon-button-prefix\">\n <ng-content select=\"[ngsIconButtonPrefix]\"/>\n </div>\n }\n\n @if (textPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-before ngs-form-field-text-affix ngs-form-field-text-prefix\">\n <ng-content select=\"[ngsTextPrefix]\"/>\n </div>\n }\n\n <div class=\"ngs-form-field-infix\">\n @if (labelChild()) {\n <label class=\"ngs-form-field-label\" [attr.for]=\"control()?.id\">\n <ng-content select=\"ngs-label\"/>\n\n @if (isRequired()) {\n <span class=\"ngs-form-field-required-marker\">*</span>\n }\n </label>\n }\n <ng-content/>\n </div>\n\n @if (textSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-text-affix ngs-form-field-text-suffix\">\n <ng-content select=\"[ngsTextSuffix]\"/>\n </div>\n }\n\n @if (iconButtonSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-icon-affix ngs-form-field-icon-button-suffix\">\n <ng-content select=\"[ngsIconButtonSuffix]\"/>\n </div>\n }\n\n @if (iconSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-icon-affix ngs-form-field-icon-suffix\">\n <ng-content select=\"[ngsIconSuffix]\"/>\n </div>\n }\n\n @if (suffixChildren().length > 0) {\n <div class=\"ngs-form-field-affix ngs-form-field-after ngs-form-field-suffix\">\n <ng-content select=\"[ngsSuffix]\"/>\n </div>\n }\n </div>\n</div>\n\n<div class=\"subscript-wrapper\">\n @if (control()?.errorState && errorChildren().length > 0) {\n <ng-content select=\"ngs-error\"/>\n } @else if (hintChildren().length > 0) {\n <div class=\"ngs-form-field-hint-wrapper\">\n <ng-content select=\"ngs-hint\"/>\n </div>\n }\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport interface FormFieldDefaultOptions {\n appearance?: 'fill' | 'outline';\n color?: string;\n hideRequiredMarker?: boolean;\n floatLabel?: 'always' | 'auto';\n subscriptHiddenIfEmpty?: boolean;\n}\n\nexport const FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken<FormFieldDefaultOptions>(\n 'FORM_FIELD_DEFAULT_OPTIONS'\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}