ngx-t-forms 2.0.31 → 2.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{ngx-t-forms-auto-complete-input-element.component-DCKuXHAW.mjs → ngx-t-forms-auto-complete-input-element.component-CaXs4561.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-auto-complete-input-element.component-DCKuXHAW.mjs.map → ngx-t-forms-auto-complete-input-element.component-CaXs4561.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-basic-input-input-element.component-Ce4ipSUc.mjs → ngx-t-forms-basic-input-input-element.component-Dotyd-Qs.mjs} +3 -3
- package/fesm2022/{ngx-t-forms-basic-input-input-element.component-Ce4ipSUc.mjs.map → ngx-t-forms-basic-input-input-element.component-Dotyd-Qs.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-calculated-field-rules.component-C5TPddVe.mjs → ngx-t-forms-calculated-field-rules.component-BhxT6tRq.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-calculated-field-rules.component-C5TPddVe.mjs.map → ngx-t-forms-calculated-field-rules.component-BhxT6tRq.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-chip-options-creator-editor.component-CICQaqz6.mjs → ngx-t-forms-chip-options-creator-editor.component-d4QeVhsp.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-chip-options-creator-editor.component-CICQaqz6.mjs.map → ngx-t-forms-chip-options-creator-editor.component-d4QeVhsp.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-CzisLSIP.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-Gn8exJ9a.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-CzisLSIP.mjs.map → ngx-t-forms-config-mscoa-additional-inputs.component-Gn8exJ9a.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-data-source-picker.component-Dzz_o6fJ.mjs → ngx-t-forms-data-source-picker.component-Ebf_if9j.mjs} +6 -6
- package/fesm2022/{ngx-t-forms-data-source-picker.component-Dzz_o6fJ.mjs.map → ngx-t-forms-data-source-picker.component-Ebf_if9j.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-date-picker-input-element.component-CYUbVyzP.mjs → ngx-t-forms-date-picker-input-element.component-kdinBGRA.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-date-picker-input-element.component-CYUbVyzP.mjs.map → ngx-t-forms-date-picker-input-element.component-kdinBGRA.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-date-range-picker-input-element.component-CmoquQGV.mjs → ngx-t-forms-date-range-picker-input-element.component-4W6uvrDU.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-date-range-picker-input-element.component-CmoquQGV.mjs.map → ngx-t-forms-date-range-picker-input-element.component-4W6uvrDU.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-document-list-label-config-editor.component-CLUOXreG.mjs → ngx-t-forms-document-list-label-config-editor.component-CR6EvgJO.mjs} +3 -3
- package/fesm2022/{ngx-t-forms-document-list-label-config-editor.component-CLUOXreG.mjs.map → ngx-t-forms-document-list-label-config-editor.component-CR6EvgJO.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-document-picker.component-qObjcqhE.mjs → ngx-t-forms-document-picker.component-BThdRFec.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-document-picker.component-qObjcqhE.mjs.map → ngx-t-forms-document-picker.component-BThdRFec.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-editor-input-element.component-BLXlfb6F.mjs → ngx-t-forms-editor-input-element.component-1X6uAPeZ.mjs} +3 -3
- package/fesm2022/{ngx-t-forms-editor-input-element.component-BLXlfb6F.mjs.map → ngx-t-forms-editor-input-element.component-1X6uAPeZ.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-editor-js-input.component-BQL0AH7H.mjs → ngx-t-forms-editor-js-input.component-5MD8wRj0.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-editor-js-input.component-BQL0AH7H.mjs.map → ngx-t-forms-editor-js-input.component-5MD8wRj0.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-file-upload-input-element.component-C7mMeEjF.mjs → ngx-t-forms-file-upload-input-element.component-BAtuymMY.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-file-upload-input-element.component-C7mMeEjF.mjs.map → ngx-t-forms-file-upload-input-element.component-BAtuymMY.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-form-input-selector.component-C9u8zq9B.mjs → ngx-t-forms-form-input-selector.component-B42xP3jh.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-form-input-selector.component-C9u8zq9B.mjs.map → ngx-t-forms-form-input-selector.component-B42xP3jh.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-form-json-view.component-856Hx1Bg.mjs → ngx-t-forms-form-json-view.component-DnnLXqR0.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-form-json-view.component-856Hx1Bg.mjs.map → ngx-t-forms-form-json-view.component-DnnLXqR0.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-form-payload-projection.component-CDkTuX9S.mjs → ngx-t-forms-form-payload-projection.component-Ip9ewB18.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-form-payload-projection.component-CDkTuX9S.mjs.map → ngx-t-forms-form-payload-projection.component-Ip9ewB18.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-form-section-stepper.component-Bs50-nEB.mjs → ngx-t-forms-form-section-stepper.component-BPgPfZSy.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-form-section-stepper.component-Bs50-nEB.mjs.map → ngx-t-forms-form-section-stepper.component-BPgPfZSy.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-forms-builder-menu.component-qrhM0jGL.mjs → ngx-t-forms-forms-builder-menu.component-Dv0Dfw79.mjs} +5 -5
- package/fesm2022/{ngx-t-forms-forms-builder-menu.component-qrhM0jGL.mjs.map → ngx-t-forms-forms-builder-menu.component-Dv0Dfw79.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-geo-location.component-Bosp1UzR.mjs → ngx-t-forms-geo-location.component-Bmd84Gcb.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-geo-location.component-Bosp1UzR.mjs.map → ngx-t-forms-geo-location.component-Bmd84Gcb.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-image-capture-input-element.component-C1g7Z0cK.mjs → ngx-t-forms-image-capture-input-element.component-CUd04Ghl.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-image-capture-input-element.component-C1g7Z0cK.mjs.map → ngx-t-forms-image-capture-input-element.component-CUd04Ghl.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-index-BcrQ01DQ.mjs +2 -0
- package/fesm2022/ngx-t-forms-index-BcrQ01DQ.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-input-custom.component-BkbHFAyR.mjs → ngx-t-forms-input-custom.component-Cn-KH0Lb.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-input-custom.component-BkbHFAyR.mjs.map → ngx-t-forms-input-custom.component-Cn-KH0Lb.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-input-editor.component-BPUOM9kQ.mjs → ngx-t-forms-input-editor.component-DLru1Ezu.mjs} +17 -5
- package/fesm2022/ngx-t-forms-input-editor.component-DLru1Ezu.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-map-mat-options-keys-B6hJ7Io5.mjs → ngx-t-forms-map-mat-options-keys-CVlPdrCO.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-map-mat-options-keys-B6hJ7Io5.mjs.map → ngx-t-forms-map-mat-options-keys-CVlPdrCO.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-c7uZT1sr.mjs → ngx-t-forms-mat-chip-list-editor.component-BWisS3Em.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-c7uZT1sr.mjs.map → ngx-t-forms-mat-chip-list-editor.component-BWisS3Em.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-missing-form-configs.component-DrnH8qdG.mjs → ngx-t-forms-missing-form-configs.component-DxdynZY6.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-missing-form-configs.component-DrnH8qdG.mjs.map → ngx-t-forms-missing-form-configs.component-DxdynZY6.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-mscoa-chart-toolbar.component-C_abEBQ5.mjs → ngx-t-forms-mscoa-chart-toolbar.component-D4Xa_Yi0.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-mscoa-chart-toolbar.component-C_abEBQ5.mjs.map → ngx-t-forms-mscoa-chart-toolbar.component-D4Xa_Yi0.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-Bo0aDEMy.mjs +447 -0
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-Bo0aDEMy.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-multiple-input-input-element.component-C7y1OGPx.mjs → ngx-t-forms-multiple-input-input-element.component-C8JP3D6r.mjs} +16 -16
- package/fesm2022/{ngx-t-forms-multiple-input-input-element.component-C7y1OGPx.mjs.map → ngx-t-forms-multiple-input-input-element.component-C8JP3D6r.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-ngx-t-forms-u_kigDid.mjs → ngx-t-forms-ngx-t-forms-C2G8_WQk.mjs} +931 -82
- package/fesm2022/ngx-t-forms-ngx-t-forms-C2G8_WQk.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-paginated-selection-table-AQZSMmhr.mjs → ngx-t-forms-paginated-selection-table-0OI1ikWW.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-paginated-selection-table-AQZSMmhr.mjs.map → ngx-t-forms-paginated-selection-table-0OI1ikWW.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-pipeline-generator.component-DmNSc5aw.mjs → ngx-t-forms-pipeline-generator.component-CZ21sd77.mjs} +3 -3
- package/fesm2022/{ngx-t-forms-pipeline-generator.component-DmNSc5aw.mjs.map → ngx-t-forms-pipeline-generator.component-CZ21sd77.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-record-list-manager.component-CUMMvMch.mjs → ngx-t-forms-record-list-manager.component-CykBq_nW.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-record-list-manager.component-CUMMvMch.mjs.map → ngx-t-forms-record-list-manager.component-CykBq_nW.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-required-inputs.component-Ch2yNcIS.mjs → ngx-t-forms-required-inputs.component-ONbhxVSH.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-required-inputs.component-Ch2yNcIS.mjs.map → ngx-t-forms-required-inputs.component-ONbhxVSH.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-C_aFtdvW.mjs → ngx-t-forms-rest-api-call-setup.component-WPUxtY7Q.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-C_aFtdvW.mjs.map → ngx-t-forms-rest-api-call-setup.component-WPUxtY7Q.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-section-report.component-BxOhR6C0.mjs → ngx-t-forms-section-report.component-C1w16LYm.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-section-report.component-BxOhR6C0.mjs.map → ngx-t-forms-section-report.component-C1w16LYm.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-select-input-element.component-DbgZdNoe.mjs → ngx-t-forms-select-input-element.component-CWcywuS6.mjs} +8 -8
- package/fesm2022/{ngx-t-forms-select-input-element.component-DbgZdNoe.mjs.map → ngx-t-forms-select-input-element.component-CWcywuS6.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-selection-options-editor.component-Dhln81DL.mjs → ngx-t-forms-selection-options-editor.component-KjbZhc2u.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-selection-options-editor.component-Dhln81DL.mjs.map → ngx-t-forms-selection-options-editor.component-KjbZhc2u.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-t-workflow-picker.component-leBokXvM.mjs → ngx-t-forms-t-workflow-picker.component-CtavFAUq.mjs} +3 -3
- package/fesm2022/{ngx-t-forms-t-workflow-picker.component-leBokXvM.mjs.map → ngx-t-forms-t-workflow-picker.component-CtavFAUq.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-textarea-input-element.component-BEbXJjFA.mjs → ngx-t-forms-textarea-input-element.component-DkJkBQif.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-textarea-input-element.component-BEbXJjFA.mjs.map → ngx-t-forms-textarea-input-element.component-DkJkBQif.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-toggle-input-element.component-DDErRUJd.mjs → ngx-t-forms-toggle-input-element.component-Dr7MNli8.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-toggle-input-element.component-DDErRUJd.mjs.map → ngx-t-forms-toggle-input-element.component-Dr7MNli8.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-validators-config.component-oGjQVGE2.mjs → ngx-t-forms-validators-config.component-BknyAmV_.mjs} +8 -167
- package/fesm2022/ngx-t-forms-validators-config.component-BknyAmV_.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-workflow-adjudication.component-CtU8dECN.mjs → ngx-t-forms-workflow-adjudication.component-CPvwm7f4.mjs} +3 -3
- package/fesm2022/{ngx-t-forms-workflow-adjudication.component-CtU8dECN.mjs.map → ngx-t-forms-workflow-adjudication.component-CPvwm7f4.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms.mjs +1 -1
- package/package.json +2 -2
- package/types/ngx-t-forms.d.ts +191 -4
- package/fesm2022/ngx-t-forms-index-dDSobs6A.mjs +0 -2
- package/fesm2022/ngx-t-forms-index-dDSobs6A.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-input-editor.component-BPUOM9kQ.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-C0qsMfsq.mjs +0 -336
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-C0qsMfsq.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-ngx-t-forms-u_kigDid.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-validators-config.component-oGjQVGE2.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-t-forms-data-source-picker.component-Dzz_o6fJ.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/data-source-picker/data-source-picker.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/data-source-picker/data-source-picker.component.html"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n ViewEncapsulation,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { Subject } from 'rxjs';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n APIDataFetchingConfigurationInterface,\n DataSources,\n ElementEditorInnerSectionElementInterface,\n FormColumnInputs,\n IReportDataSources,\n MinimumInputRequiredInterface,\n MongoDbPipeLineConfigInterface,\n} from 'ngx-t-forms-types';\nimport type { IConfigElementError } from '../../t-dynamic-data-edit.component';\nimport { EmptyStateComponent } from '../_shared/empty-state/empty-state.component';\nimport { MatChipListEditorComponent } from '../mat-chip-list-editor/mat-chip-list-editor.component';\nimport { PipelineGeneratorComponent } from '../pipeline-generator/pipeline-generator.component';\nimport { RequiredInputsComponent } from '../required-inputs/required-inputs.component';\nimport { RestApiCallSetupComponent } from '../rest-api-call-setup/rest-api-call-setup.component';\n\n/** Source-type option rendered in the chip selector. */\ninterface DataSourceOption {\n label: string;\n value: DataSources;\n}\n\n/** A configured data source decorated with the derived fields the list row renders. */\ninterface DataSourceRow {\n readonly source: IReportDataSources;\n readonly name: string;\n readonly icon: string;\n readonly endpoint: string;\n readonly isApi: boolean;\n}\n\n/** The in-edit working draft: a partial source being composed before save. */\ntype DataSourceDraft = Partial<IReportDataSources>;\n\n/**\n * Internal editor element for configuring a report's data sources (API calls and\n * MongoDB pipelines). It is a real `MatFormFieldControl`, rendered by\n * `t-dynamic-data-edit` inside a `<mat-form-field>` — so the parent owns the\n * surrounding label, hint, and validation errors, and this component owns only\n * the source list, the inline editor card, and the add affordance.\n *\n * NOTE: `MatFormFieldControl<T>` mandates plain mutable `value` / `disabled` /\n * `required` / `placeholder` / `id` members, `@Input()` decorators, the\n * `focused` / `touched` / `stateChanges` members, and the `useExisting`\n * provider. These are framework wiring, not defects — the CLAUDE.md bans on\n * `@Input()` / `useExisting` do not apply to MatFormFieldControl integration.\n */\n@Component({\n selector: 'lib-data-source-picker',\n imports: [\n MatButtonModule,\n MatCardModule,\n MatIconModule,\n MatListModule,\n MatTooltipModule,\n EmptyStateComponent,\n MatChipListEditorComponent,\n PipelineGeneratorComponent,\n RequiredInputsComponent,\n RestApiCallSetupComponent,\n ],\n templateUrl: './data-source-picker.component.html',\n styleUrl: './data-source-picker.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.Emulated,\n providers: [{ provide: MatFormFieldControl, useExisting: DataSourcePickerComponent }],\n host: {\n 'class': 'lib-data-source-picker',\n '[attr.id]': 'id',\n '[class.lib-data-source-picker--focused]': 'focused',\n '[class.lib-data-source-picker--disabled]': 'disabled',\n },\n})\nexport class DataSourcePickerComponent\n implements MatFormFieldControl<Array<IReportDataSources> | undefined>\n{\n static nextId = 0;\n\n /** Emits whenever a piece of `MatFormFieldControl` state changes. */\n readonly stateChanges = new Subject<void>();\n readonly controlType = 'lib-data-source-picker';\n\n id = `lib-data-source-picker-${DataSourcePickerComponent.nextId++}`;\n placeholder = '';\n focused = false;\n touched = false;\n required = false;\n describedBy = '';\n autofilled = false;\n userAriaDescribedBy: string | undefined = undefined;\n disableAutomaticLabeling: boolean | undefined = undefined;\n\n /** Validation errors surfaced by the parent for error-state derivation. */\n @Input() errors: IConfigElementError[] | undefined = [];\n\n #disabled = false;\n /** Whether the control is inert. */\n @Input()\n get disabled(): boolean {\n return this.#disabled;\n }\n set disabled(value: boolean) {\n this.#disabled = value;\n this.stateChanges.next();\n }\n\n // Mirror of the plain MFC `value` member, so the template + computeds react.\n readonly #value = signal<Array<IReportDataSources> | undefined>(undefined);\n\n /** Current list of configured data sources. */\n @Input()\n get value(): Array<IReportDataSources> | undefined {\n return this.#value();\n }\n set value(value: Array<IReportDataSources> | undefined) {\n if (this.#value() === value) {\n return;\n }\n this.#value.set(value);\n this.stateChanges.next();\n }\n\n // Mirror of the plain `editorConfig` member, so the template reacts.\n readonly #editorConfig = signal<ElementEditorInnerSectionElementInterface | undefined>(\n undefined,\n );\n\n /** Editor configuration supplying postman / workflow option providers. */\n @Input()\n get editorConfig(): ElementEditorInnerSectionElementInterface | undefined {\n return this.#editorConfig();\n }\n set editorConfig(config: ElementEditorInnerSectionElementInterface | undefined) {\n this.#editorConfig.set(config);\n }\n\n /** All available form inputs the user can map a required input to. */\n readonly formInputs = input<Array<FormColumnInputs>>([]);\n\n /** Emits the mutated data-source list whenever the user adds or removes a source. */\n readonly valueChange = output<Array<IReportDataSources> | undefined>();\n\n readonly ngControl = inject(NgControl, { self: true, optional: true });\n readonly #elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Source-type enum, exposed to the template. */\n protected readonly dataSources = DataSources;\n\n /** The selectable source types in the chip selector. */\n protected readonly dataSourceOptions: DataSourceOption[] = [\n { label: 'API', value: DataSources.Api },\n { label: 'MongoDB', value: DataSources.MongoDb },\n ];\n\n /** The in-edit draft, or `undefined` when the editor card is closed. */\n protected readonly draft = signal<DataSourceDraft | undefined>(undefined);\n\n /** Decorated rows for the configured-source list. */\n protected readonly rows = computed<readonly DataSourceRow[]>(() =>\n (this.#value() ?? []).map((source, index) => ({\n source,\n name: this.#name(source, index),\n icon: source.source === DataSources.Api ? 'api' : 'storage',\n endpoint: this.#endpoint(source),\n isApi: source.source === DataSources.Api,\n })),\n );\n\n /** Whether any data source is configured. */\n protected readonly hasSources = computed<boolean>(() => (this.#value() ?? []).length > 0);\n\n /** The `minimumInputRequired` list of the draft's API config, or `undefined`. */\n protected readonly draftMinimumInputRequired = computed<\n readonly MinimumInputRequiredInterface[] | undefined\n >(() => {\n const config = this.draft()?.config;\n if (!config || !this.#isApiConfig(config)) {\n return undefined;\n }\n return config.backEndConfig?.minimumInputRequired;\n });\n\n // ---- MatFormFieldControl getters (read during the framework's CD) --------\n\n get empty(): boolean {\n return (this.#value() ?? []).length === 0;\n }\n\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n get errorState(): boolean {\n const requiredUnset = this.empty && this.required;\n const ngControlError = this.ngControl?.errors != null;\n const externalError = (this.errors?.length ?? 0) > 0 && this.touched;\n return requiredUnset || ngControlError || externalError;\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n const el = this.#elementRef.nativeElement;\n const control = el.querySelector('.lib-data-source-picker__list');\n control?.setAttribute('aria-describedby', this.describedBy);\n this.stateChanges.next();\n }\n\n onContainerClick(): void {\n this.markAsTouched();\n if (!this.focused) {\n this.focused = true;\n }\n this.stateChanges.next();\n }\n\n onTouched: () => void = () => {};\n\n markAsTouched(): void {\n if (!this.touched) {\n this.touched = true;\n this.onTouched();\n this.stateChanges.next();\n }\n }\n\n // ---- Draft editing -------------------------------------------------------\n\n /** Open the editor card with an empty draft. */\n protected startEditing(): void {\n this.draft.set({});\n }\n\n /** Discard the draft and close the editor card. */\n protected cancelEditing(): void {\n this.draft.set(undefined);\n }\n\n /** Set the draft's source type. Child chip editor emits an unknown payload. */\n protected sourceTypeChanged(source: unknown): void {\n this.draft.update((current) =>\n current ? { ...current, source: source as DataSources | undefined } : current,\n );\n }\n\n /** Set the draft's source config (API setup or pipeline). */\n protected sourceConfigChanged(\n config: APIDataFetchingConfigurationInterface | MongoDbPipeLineConfigInterface | undefined,\n ): void {\n this.draft.update((current) => (current ? { ...current, config } : current));\n }\n\n /** Merge the required-input list into the draft's API config. */\n protected minimumInputRequiredValueChanged(\n value: Array<MinimumInputRequiredInterface>,\n ): void {\n this.draft.update((current) => {\n if (!current?.config || !this.#isApiConfig(current.config)) {\n return current;\n }\n const config: APIDataFetchingConfigurationInterface = {\n ...current.config,\n backEndConfig: { ...current.config.backEndConfig, minimumInputRequired: value },\n };\n return { ...current, config };\n });\n }\n\n /** Commit the draft as a new source (assigning a fresh id) and emit. */\n protected saveNewSource(): void {\n const current = this.draft();\n if (!current) {\n return;\n }\n const data: IReportDataSources = { ...current, id: crypto.randomUUID() } as IReportDataSources;\n const next = [...(this.#value() ?? []), data];\n this.value = next;\n this.draft.set(undefined);\n this.markAsTouched();\n this.valueChange.emit(next);\n }\n\n /** Remove a configured source by id and emit. */\n protected removeSource(source: IReportDataSources): void {\n const current = this.#value();\n if (!current) {\n return;\n }\n const next = current.filter((item) => item.id !== source.id);\n this.value = next;\n this.markAsTouched();\n this.valueChange.emit(next);\n }\n\n #name(value: IReportDataSources, index: number): string {\n if (this.#isApiConfig(value.config) && value.config.name) {\n return value.config.name;\n }\n return value.source === DataSources.Api ? `API ${index + 1}` : `MongoDB ${index + 1}`;\n }\n\n #endpoint(value: IReportDataSources): string {\n if (this.#isApiConfig(value.config)) {\n return value.config.httpEndPoint ?? '';\n }\n return value.config.workflowId ?? '';\n }\n\n #isApiConfig(\n config: APIDataFetchingConfigurationInterface | MongoDbPipeLineConfigInterface | undefined,\n ): config is APIDataFetchingConfigurationInterface {\n return config?.source === DataSources.Api;\n }\n}\n","<div class=\"lib-data-source-picker__list\">\n @if (hasSources()) {\n <mat-list class=\"lib-data-source-picker__sources\">\n @for (row of rows(); track row.source.id) {\n <mat-list-item\n class=\"lib-data-source-picker__source\"\n matTooltipPosition=\"before\"\n [matTooltip]=\"row.source.source + ' ' + row.endpoint\">\n <mat-icon\n matListItemIcon\n class=\"lib-data-source-picker__icon\"\n [class.lib-data-source-picker__icon--api]=\"row.isApi\">\n {{ row.icon }}\n </mat-icon>\n <span matListItemTitle class=\"lib-data-source-picker__name\">{{ row.name }}</span>\n <span matListItemLine class=\"lib-data-source-picker__endpoint\">{{ row.endpoint }}</span>\n <button\n matListItemMeta\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"'Remove ' + row.name\"\n [disabled]=\"disabled\"\n (click)=\"removeSource(row.source)\">\n <mat-icon>delete</mat-icon>\n </button>\n </mat-list-item>\n }\n </mat-list>\n } @else {\n <lib-empty-state icon=\"storage\" message=\"No data sources configured. Add one to get started.\" />\n }\n</div>\n\n@if (draft(); as draft) {\n <mat-card appearance=\"outlined\" class=\"lib-data-source-picker__editor\">\n <mat-card-content>\n <label [attr.for]=\"id + '-type'\" class=\"lib-data-source-picker__label\">Select source type</label>\n <lib-mat-chip-list-editor\n [id]=\"id + '-type'\"\n [value]=\"draft.source\"\n [options]=\"dataSourceOptions\"\n (valueChange)=\"sourceTypeChanged($event)\" />\n\n @if (draft.source !== undefined) {\n @switch (draft.source) {\n @case (dataSources.Api) {\n <label [attr.for]=\"id + '-api'\" class=\"lib-data-source-picker__label\">Select API</label>\n <lib-rest-api-call-setup\n [id]=\"id + '-api'\"\n [postmanCollectionConfig]=\"editorConfig?.postmanCollectionConfig\"\n [httpGetDataFunction]=\"editorConfig?.httpGetDataFunction\"\n [value]=\"$any(draft.config)\"\n (valueChanged)=\"sourceConfigChanged($event)\" />\n\n @if (draftMinimumInputRequired(); as minimumInputRequired) {\n <lib-required-inputs\n [id]=\"id + '-required-inputs'\"\n [formInputs]=\"formInputs() || []\"\n [value]=\"minimumInputRequired\"\n [errors]=\"[]\"\n (valueChanged)=\"minimumInputRequiredValueChanged($event)\" />\n }\n }\n @case (dataSources.MongoDb) {\n <label [attr.for]=\"id + '-pipeline'\" class=\"lib-data-source-picker__label\">Add a MongoDB pipeline</label>\n <lib-pipeline-generator\n [id]=\"id + '-pipeline'\"\n [value]=\"$any(draft.config)\"\n [getWorkflowOptions]=\"editorConfig?.getWorkflowOptions\"\n (valueChanged)=\"sourceConfigChanged($event)\" />\n }\n }\n }\n </mat-card-content>\n\n <mat-card-actions class=\"lib-data-source-picker__actions\">\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"saveNewSource()\">Save source</button>\n <span class=\"lib-data-source-picker__spacer\"></span>\n <button mat-button color=\"warn\" type=\"button\" (click)=\"cancelEditing()\">Cancel</button>\n </mat-card-actions>\n </mat-card>\n} @else {\n <button\n mat-stroked-button\n color=\"primary\"\n type=\"button\"\n class=\"lib-data-source-picker__add\"\n [disabled]=\"disabled\"\n (click)=\"startEditing()\">\n <mat-icon>add</mat-icon>\n Add data source\n </button>\n}\n"],"names":["i2","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-t-forms-data-source-picker.component-Ebf_if9j.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/data-source-picker/data-source-picker.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/data-source-picker/data-source-picker.component.html"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n ViewEncapsulation,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { Subject } from 'rxjs';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n APIDataFetchingConfigurationInterface,\n DataSources,\n ElementEditorInnerSectionElementInterface,\n FormColumnInputs,\n IReportDataSources,\n MinimumInputRequiredInterface,\n MongoDbPipeLineConfigInterface,\n} from 'ngx-t-forms-types';\nimport type { IConfigElementError } from '../../t-dynamic-data-edit.component';\nimport { EmptyStateComponent } from '../_shared/empty-state/empty-state.component';\nimport { MatChipListEditorComponent } from '../mat-chip-list-editor/mat-chip-list-editor.component';\nimport { PipelineGeneratorComponent } from '../pipeline-generator/pipeline-generator.component';\nimport { RequiredInputsComponent } from '../required-inputs/required-inputs.component';\nimport { RestApiCallSetupComponent } from '../rest-api-call-setup/rest-api-call-setup.component';\n\n/** Source-type option rendered in the chip selector. */\ninterface DataSourceOption {\n label: string;\n value: DataSources;\n}\n\n/** A configured data source decorated with the derived fields the list row renders. */\ninterface DataSourceRow {\n readonly source: IReportDataSources;\n readonly name: string;\n readonly icon: string;\n readonly endpoint: string;\n readonly isApi: boolean;\n}\n\n/** The in-edit working draft: a partial source being composed before save. */\ntype DataSourceDraft = Partial<IReportDataSources>;\n\n/**\n * Internal editor element for configuring a report's data sources (API calls and\n * MongoDB pipelines). It is a real `MatFormFieldControl`, rendered by\n * `t-dynamic-data-edit` inside a `<mat-form-field>` — so the parent owns the\n * surrounding label, hint, and validation errors, and this component owns only\n * the source list, the inline editor card, and the add affordance.\n *\n * NOTE: `MatFormFieldControl<T>` mandates plain mutable `value` / `disabled` /\n * `required` / `placeholder` / `id` members, `@Input()` decorators, the\n * `focused` / `touched` / `stateChanges` members, and the `useExisting`\n * provider. These are framework wiring, not defects — the CLAUDE.md bans on\n * `@Input()` / `useExisting` do not apply to MatFormFieldControl integration.\n */\n@Component({\n selector: 'lib-data-source-picker',\n imports: [\n MatButtonModule,\n MatCardModule,\n MatIconModule,\n MatListModule,\n MatTooltipModule,\n EmptyStateComponent,\n MatChipListEditorComponent,\n PipelineGeneratorComponent,\n RequiredInputsComponent,\n RestApiCallSetupComponent,\n ],\n templateUrl: './data-source-picker.component.html',\n styleUrl: './data-source-picker.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.Emulated,\n providers: [{ provide: MatFormFieldControl, useExisting: DataSourcePickerComponent }],\n host: {\n 'class': 'lib-data-source-picker',\n '[attr.id]': 'id',\n '[class.lib-data-source-picker--focused]': 'focused',\n '[class.lib-data-source-picker--disabled]': 'disabled',\n },\n})\nexport class DataSourcePickerComponent\n implements MatFormFieldControl<Array<IReportDataSources> | undefined>\n{\n static nextId = 0;\n\n /** Emits whenever a piece of `MatFormFieldControl` state changes. */\n readonly stateChanges = new Subject<void>();\n readonly controlType = 'lib-data-source-picker';\n\n id = `lib-data-source-picker-${DataSourcePickerComponent.nextId++}`;\n placeholder = '';\n focused = false;\n touched = false;\n required = false;\n describedBy = '';\n autofilled = false;\n userAriaDescribedBy: string | undefined = undefined;\n disableAutomaticLabeling: boolean | undefined = undefined;\n\n /** Validation errors surfaced by the parent for error-state derivation. */\n @Input() errors: IConfigElementError[] | undefined = [];\n\n #disabled = false;\n /** Whether the control is inert. */\n @Input()\n get disabled(): boolean {\n return this.#disabled;\n }\n set disabled(value: boolean) {\n this.#disabled = value;\n this.stateChanges.next();\n }\n\n // Mirror of the plain MFC `value` member, so the template + computeds react.\n readonly #value = signal<Array<IReportDataSources> | undefined>(undefined);\n\n /** Current list of configured data sources. */\n @Input()\n get value(): Array<IReportDataSources> | undefined {\n return this.#value();\n }\n set value(value: Array<IReportDataSources> | undefined) {\n if (this.#value() === value) {\n return;\n }\n this.#value.set(value);\n this.stateChanges.next();\n }\n\n // Mirror of the plain `editorConfig` member, so the template reacts.\n readonly #editorConfig = signal<ElementEditorInnerSectionElementInterface | undefined>(\n undefined,\n );\n\n /** Editor configuration supplying postman / workflow option providers. */\n @Input()\n get editorConfig(): ElementEditorInnerSectionElementInterface | undefined {\n return this.#editorConfig();\n }\n set editorConfig(config: ElementEditorInnerSectionElementInterface | undefined) {\n this.#editorConfig.set(config);\n }\n\n /** All available form inputs the user can map a required input to. */\n readonly formInputs = input<Array<FormColumnInputs>>([]);\n\n /** Emits the mutated data-source list whenever the user adds or removes a source. */\n readonly valueChange = output<Array<IReportDataSources> | undefined>();\n\n readonly ngControl = inject(NgControl, { self: true, optional: true });\n readonly #elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Source-type enum, exposed to the template. */\n protected readonly dataSources = DataSources;\n\n /** The selectable source types in the chip selector. */\n protected readonly dataSourceOptions: DataSourceOption[] = [\n { label: 'API', value: DataSources.Api },\n { label: 'MongoDB', value: DataSources.MongoDb },\n ];\n\n /** The in-edit draft, or `undefined` when the editor card is closed. */\n protected readonly draft = signal<DataSourceDraft | undefined>(undefined);\n\n /** Decorated rows for the configured-source list. */\n protected readonly rows = computed<readonly DataSourceRow[]>(() =>\n (this.#value() ?? []).map((source, index) => ({\n source,\n name: this.#name(source, index),\n icon: source.source === DataSources.Api ? 'api' : 'storage',\n endpoint: this.#endpoint(source),\n isApi: source.source === DataSources.Api,\n })),\n );\n\n /** Whether any data source is configured. */\n protected readonly hasSources = computed<boolean>(() => (this.#value() ?? []).length > 0);\n\n /** The `minimumInputRequired` list of the draft's API config, or `undefined`. */\n protected readonly draftMinimumInputRequired = computed<\n readonly MinimumInputRequiredInterface[] | undefined\n >(() => {\n const config = this.draft()?.config;\n if (!config || !this.#isApiConfig(config)) {\n return undefined;\n }\n return config.backEndConfig?.minimumInputRequired;\n });\n\n // ---- MatFormFieldControl getters (read during the framework's CD) --------\n\n get empty(): boolean {\n return (this.#value() ?? []).length === 0;\n }\n\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n get errorState(): boolean {\n const requiredUnset = this.empty && this.required;\n const ngControlError = this.ngControl?.errors != null;\n const externalError = (this.errors?.length ?? 0) > 0 && this.touched;\n return requiredUnset || ngControlError || externalError;\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n const el = this.#elementRef.nativeElement;\n const control = el.querySelector('.lib-data-source-picker__list');\n control?.setAttribute('aria-describedby', this.describedBy);\n this.stateChanges.next();\n }\n\n onContainerClick(): void {\n this.markAsTouched();\n if (!this.focused) {\n this.focused = true;\n }\n this.stateChanges.next();\n }\n\n onTouched: () => void = () => {};\n\n markAsTouched(): void {\n if (!this.touched) {\n this.touched = true;\n this.onTouched();\n this.stateChanges.next();\n }\n }\n\n // ---- Draft editing -------------------------------------------------------\n\n /** Open the editor card with an empty draft. */\n protected startEditing(): void {\n this.draft.set({});\n }\n\n /** Discard the draft and close the editor card. */\n protected cancelEditing(): void {\n this.draft.set(undefined);\n }\n\n /** Set the draft's source type. Child chip editor emits an unknown payload. */\n protected sourceTypeChanged(source: unknown): void {\n this.draft.update((current) =>\n current ? { ...current, source: source as DataSources | undefined } : current,\n );\n }\n\n /** Set the draft's source config (API setup or pipeline). */\n protected sourceConfigChanged(\n config: APIDataFetchingConfigurationInterface | MongoDbPipeLineConfigInterface | undefined,\n ): void {\n this.draft.update((current) => (current ? { ...current, config } : current));\n }\n\n /** Merge the required-input list into the draft's API config. */\n protected minimumInputRequiredValueChanged(\n value: Array<MinimumInputRequiredInterface>,\n ): void {\n this.draft.update((current) => {\n if (!current?.config || !this.#isApiConfig(current.config)) {\n return current;\n }\n const config: APIDataFetchingConfigurationInterface = {\n ...current.config,\n backEndConfig: { ...current.config.backEndConfig, minimumInputRequired: value },\n };\n return { ...current, config };\n });\n }\n\n /** Commit the draft as a new source (assigning a fresh id) and emit. */\n protected saveNewSource(): void {\n const current = this.draft();\n if (!current) {\n return;\n }\n const data: IReportDataSources = { ...current, id: crypto.randomUUID() } as IReportDataSources;\n const next = [...(this.#value() ?? []), data];\n this.value = next;\n this.draft.set(undefined);\n this.markAsTouched();\n this.valueChange.emit(next);\n }\n\n /** Remove a configured source by id and emit. */\n protected removeSource(source: IReportDataSources): void {\n const current = this.#value();\n if (!current) {\n return;\n }\n const next = current.filter((item) => item.id !== source.id);\n this.value = next;\n this.markAsTouched();\n this.valueChange.emit(next);\n }\n\n #name(value: IReportDataSources, index: number): string {\n if (this.#isApiConfig(value.config) && value.config.name) {\n return value.config.name;\n }\n return value.source === DataSources.Api ? `API ${index + 1}` : `MongoDB ${index + 1}`;\n }\n\n #endpoint(value: IReportDataSources): string {\n if (this.#isApiConfig(value.config)) {\n return value.config.httpEndPoint ?? '';\n }\n return value.config.workflowId ?? '';\n }\n\n #isApiConfig(\n config: APIDataFetchingConfigurationInterface | MongoDbPipeLineConfigInterface | undefined,\n ): config is APIDataFetchingConfigurationInterface {\n return config?.source === DataSources.Api;\n }\n}\n","<div class=\"lib-data-source-picker__list\">\n @if (hasSources()) {\n <mat-list class=\"lib-data-source-picker__sources\">\n @for (row of rows(); track row.source.id) {\n <mat-list-item\n class=\"lib-data-source-picker__source\"\n matTooltipPosition=\"before\"\n [matTooltip]=\"row.source.source + ' ' + row.endpoint\">\n <mat-icon\n matListItemIcon\n class=\"lib-data-source-picker__icon\"\n [class.lib-data-source-picker__icon--api]=\"row.isApi\">\n {{ row.icon }}\n </mat-icon>\n <span matListItemTitle class=\"lib-data-source-picker__name\">{{ row.name }}</span>\n <span matListItemLine class=\"lib-data-source-picker__endpoint\">{{ row.endpoint }}</span>\n <button\n matListItemMeta\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"'Remove ' + row.name\"\n [disabled]=\"disabled\"\n (click)=\"removeSource(row.source)\">\n <mat-icon>delete</mat-icon>\n </button>\n </mat-list-item>\n }\n </mat-list>\n } @else {\n <lib-empty-state icon=\"storage\" message=\"No data sources configured. Add one to get started.\" />\n }\n</div>\n\n@if (draft(); as draft) {\n <mat-card appearance=\"outlined\" class=\"lib-data-source-picker__editor\">\n <mat-card-content>\n <label [attr.for]=\"id + '-type'\" class=\"lib-data-source-picker__label\">Select source type</label>\n <lib-mat-chip-list-editor\n [id]=\"id + '-type'\"\n [value]=\"draft.source\"\n [options]=\"dataSourceOptions\"\n (valueChange)=\"sourceTypeChanged($event)\" />\n\n @if (draft.source !== undefined) {\n @switch (draft.source) {\n @case (dataSources.Api) {\n <label [attr.for]=\"id + '-api'\" class=\"lib-data-source-picker__label\">Select API</label>\n <lib-rest-api-call-setup\n [id]=\"id + '-api'\"\n [postmanCollectionConfig]=\"editorConfig?.postmanCollectionConfig\"\n [httpGetDataFunction]=\"editorConfig?.httpGetDataFunction\"\n [value]=\"$any(draft.config)\"\n (valueChanged)=\"sourceConfigChanged($event)\" />\n\n @if (draftMinimumInputRequired(); as minimumInputRequired) {\n <lib-required-inputs\n [id]=\"id + '-required-inputs'\"\n [formInputs]=\"formInputs() || []\"\n [value]=\"minimumInputRequired\"\n [errors]=\"[]\"\n (valueChanged)=\"minimumInputRequiredValueChanged($event)\" />\n }\n }\n @case (dataSources.MongoDb) {\n <label [attr.for]=\"id + '-pipeline'\" class=\"lib-data-source-picker__label\">Add a MongoDB pipeline</label>\n <lib-pipeline-generator\n [id]=\"id + '-pipeline'\"\n [value]=\"$any(draft.config)\"\n [getWorkflowOptions]=\"editorConfig?.getWorkflowOptions\"\n (valueChanged)=\"sourceConfigChanged($event)\" />\n }\n }\n }\n </mat-card-content>\n\n <mat-card-actions class=\"lib-data-source-picker__actions\">\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"saveNewSource()\">Save source</button>\n <span class=\"lib-data-source-picker__spacer\"></span>\n <button mat-button color=\"warn\" type=\"button\" (click)=\"cancelEditing()\">Cancel</button>\n </mat-card-actions>\n </mat-card>\n} @else {\n <button\n mat-stroked-button\n color=\"primary\"\n type=\"button\"\n class=\"lib-data-source-picker__add\"\n [disabled]=\"disabled\"\n (click)=\"startEditing()\">\n <mat-icon>add</mat-icon>\n Add data source\n </button>\n}\n"],"names":["i2","i3"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import * as i1$1 from '@angular/material/button';
|
|
|
13
13
|
import { MatButtonModule } from '@angular/material/button';
|
|
14
14
|
import * as i5 from '@angular/material/tooltip';
|
|
15
15
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
16
|
-
import { B as BaseCustomInput,
|
|
16
|
+
import { B as BaseCustomInput, q as getInputErrorMessage, u as TFormInputStatusComponent } from './ngx-t-forms-ngx-t-forms-C2G8_WQk.mjs';
|
|
17
17
|
import * as i2 from '@angular/material/input';
|
|
18
18
|
import { MatInputModule } from '@angular/material/input';
|
|
19
19
|
|
|
@@ -82,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
|
|
|
82
82
|
}], propDecorators: { inputConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputConfig", required: true }] }], formGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "formGroup", required: true }] }], reload: [{ type: i0.Output, args: ["reload"] }] } });
|
|
83
83
|
|
|
84
84
|
export { DatePickerInputElementComponent };
|
|
85
|
-
//# sourceMappingURL=ngx-t-forms-date-picker-input-element.component-
|
|
85
|
+
//# sourceMappingURL=ngx-t-forms-date-picker-input-element.component-kdinBGRA.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-t-forms-date-picker-input-element.component-CYUbVyzP.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-picker-input-element/core/date-picker-reactive-input/date-picker-reactive-input.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-picker-input-element/core/date-picker-reactive-input/date-picker-reactive-input.component.html","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-picker-input-element/date-picker-input-element.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-picker-input-element/date-picker-input-element.component.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, inject, input } from '@angular/core';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { BaseCustomInput, BaseCustomInputConfig } from '../../../../../../services/core/t-input-controller/functions/baseCustomInput';\r\nimport { ITowerStepColumn } from 'ngx-t-forms-types';\r\nimport { NgControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDatepicker, MatDatepickerInputEvent, MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nconst customInputConfig: BaseCustomInputConfig = {\r\n controlType: 'lib-auto-complet-reactive-input',\r\n nextId: 0\r\n};\r\n\r\n@Component({\r\n selector: 'lib-date-picker-reactive-input',\r\n imports: [\r\n MatDatepickerModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n ReactiveFormsModule\r\n ],\r\n host: {\r\n '[class.floating]': 'shouldLabelFloat',\r\n '[id]': 'id',\r\n },\r\n providers: [{ provide: MatFormFieldControl, useExisting: DatePickerReactiveInputComponent }],\r\n templateUrl: './date-picker-reactive-input.component.html',\r\n styleUrl: './date-picker-reactive-input.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DatePickerReactiveInputComponent extends BaseCustomInput<Date> {\r\n readonly picker = input.required<MatDatepicker<unknown>>();\r\n readonly inputConfig = input.required<ITowerStepColumn>();\r\n\r\n constructor() {\r\n super(\r\n inject(NgControl, { optional: true, self: true }) as NgControl,\r\n inject<ElementRef<HTMLElement>>(ElementRef),\r\n customInputConfig\r\n );\r\n }\r\n\r\n override get empty(): boolean {\r\n const n = this.value;\r\n // Check for null, undefined, or empty string, but allow 0\r\n return n === null || n === undefined || (n as unknown) === '';\r\n }\r\n\r\n override get shouldLabelFloat(): boolean {\r\n return true;\r\n }\r\n\r\n protected changed(event: MatDatepickerInputEvent<unknown, unknown>): void {\r\n this.value = event.value as Date | null;\r\n this.stateChanges.next();\r\n this.onChange(this.value);\r\n }\r\n}\r\n","<input\r\n[required]=\"inputConfig().required\"\r\n[disabled]=\"inputConfig().disabled || inputConfig().readonly\"\r\n[min]=\"inputConfig().min\"\r\n(dateChange)=\"changed($event)\"\r\n[value]=\"value\"\r\n[max]=\"inputConfig().max\" matInput\r\n[matDatepicker]=\"picker()\" />\r\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { provideNativeDateAdapter } from '@angular/material/core';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport type { ITowerStepColumn } from 'ngx-t-forms-types';\r\nimport { TFormInputStatusComponent } from '../../../t-form-input-status/t-form-input-status.component';\r\nimport { DatePickerReactiveInputComponent } from './core/date-picker-reactive-input/date-picker-reactive-input.component';\r\nimport { getInputErrorMessage } from '../../../../services/core/t-input-controller/functions/inputErrorMessage';\r\n\r\n/** Wraps a reactive date-picker control inside a `mat-form-field`. */\r\n@Component({\r\n selector: 'lib-date-picker-input-element',\r\n templateUrl: './date-picker-input-element.component.html',\r\n styleUrl: './date-picker-input-element.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [provideNativeDateAdapter()],\r\n imports: [\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatDatepickerModule,\r\n TFormInputStatusComponent,\r\n DatePickerReactiveInputComponent,\r\n ],\r\n})\r\nexport class DatePickerInputElementComponent {\r\n readonly inputConfig = input.required<ITowerStepColumn>();\r\n readonly formGroup = input.required<FormGroup>();\r\n readonly reload = output<void>();\r\n\r\n protected readonly errorMessage = computed(() =>\r\n getInputErrorMessage(this.inputConfig(), this.formGroup()),\r\n );\r\n}\r\n","<form [formGroup]=\"formGroup()\">\r\n @if (inputConfig(); as inputConfig) {\r\n <mat-form-field [appearance]=\"inputConfig.appearance || 'fill'\" subscriptSizing=\"dynamic\">\r\n <mat-label>\r\n {{ inputConfig.label }}\r\n <lib-t-form-input-status [inputConfig]=\"inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n\r\n <lib-date-picker-reactive-input\r\n [inputConfig]=\"inputConfig\"\r\n [required]=\"inputConfig.required\"\r\n [formControlName]=\"inputConfig.id\"\r\n [picker]=\"picker\"\r\n ></lib-date-picker-reactive-input>\r\n\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker>\r\n <button mat-button matDatepickerCancel>Cancel</button>\r\n <button mat-raised-button color=\"primary\" matDatepickerApply>Apply</button>\r\n </mat-datepicker>\r\n\r\n @if (inputConfig.canReload?.canReload) {\r\n <button\r\n mat-icon-button\r\n style=\"margin-right: 4px;\"\r\n matTooltip=\"Click to refresh this field.\"\r\n class=\"input-sync-button\"\r\n (click)=\"inputConfig.canReload.emit()\"\r\n matSuffix\r\n >\r\n <mat-icon style=\"color: var(--mat-sys-primary)\">sync</mat-icon>\r\n </button>\r\n }\r\n\r\n @if (inputConfig.hintLabel || inputConfig.temporaryHint) {\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel }}\r\n </mat-hint>\r\n }\r\n\r\n @if (!!errorMessage()) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{ errorMessage() }}</mat-error>\r\n }\r\n\r\n @if (inputConfig.prefixIcon) {\r\n <mat-icon matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n }\r\n\r\n @if (inputConfig.suffixIcon) {\r\n <mat-icon matSuffix>{{ inputConfig.suffixIcon }}</mat-icon>\r\n }\r\n\r\n @if (inputConfig.prefixText) {\r\n <span matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n }\r\n @if (inputConfig.suffixText) {\r\n <span matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText }}</span>\r\n }\r\n\r\n @if (inputConfig.maxLength && formGroup()) {\r\n <mat-hint align=\"end\">\r\n {{ (formGroup().controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength }}\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n }\r\n</form>\r\n"],"names":["i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-t-forms-date-picker-input-element.component-kdinBGRA.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-picker-input-element/core/date-picker-reactive-input/date-picker-reactive-input.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-picker-input-element/core/date-picker-reactive-input/date-picker-reactive-input.component.html","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-picker-input-element/date-picker-input-element.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-picker-input-element/date-picker-input-element.component.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, inject, input } from '@angular/core';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { BaseCustomInput, BaseCustomInputConfig } from '../../../../../../services/core/t-input-controller/functions/baseCustomInput';\r\nimport { ITowerStepColumn } from 'ngx-t-forms-types';\r\nimport { NgControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDatepicker, MatDatepickerInputEvent, MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nconst customInputConfig: BaseCustomInputConfig = {\r\n controlType: 'lib-auto-complet-reactive-input',\r\n nextId: 0\r\n};\r\n\r\n@Component({\r\n selector: 'lib-date-picker-reactive-input',\r\n imports: [\r\n MatDatepickerModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n ReactiveFormsModule\r\n ],\r\n host: {\r\n '[class.floating]': 'shouldLabelFloat',\r\n '[id]': 'id',\r\n },\r\n providers: [{ provide: MatFormFieldControl, useExisting: DatePickerReactiveInputComponent }],\r\n templateUrl: './date-picker-reactive-input.component.html',\r\n styleUrl: './date-picker-reactive-input.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DatePickerReactiveInputComponent extends BaseCustomInput<Date> {\r\n readonly picker = input.required<MatDatepicker<unknown>>();\r\n readonly inputConfig = input.required<ITowerStepColumn>();\r\n\r\n constructor() {\r\n super(\r\n inject(NgControl, { optional: true, self: true }) as NgControl,\r\n inject<ElementRef<HTMLElement>>(ElementRef),\r\n customInputConfig\r\n );\r\n }\r\n\r\n override get empty(): boolean {\r\n const n = this.value;\r\n // Check for null, undefined, or empty string, but allow 0\r\n return n === null || n === undefined || (n as unknown) === '';\r\n }\r\n\r\n override get shouldLabelFloat(): boolean {\r\n return true;\r\n }\r\n\r\n protected changed(event: MatDatepickerInputEvent<unknown, unknown>): void {\r\n this.value = event.value as Date | null;\r\n this.stateChanges.next();\r\n this.onChange(this.value);\r\n }\r\n}\r\n","<input\r\n[required]=\"inputConfig().required\"\r\n[disabled]=\"inputConfig().disabled || inputConfig().readonly\"\r\n[min]=\"inputConfig().min\"\r\n(dateChange)=\"changed($event)\"\r\n[value]=\"value\"\r\n[max]=\"inputConfig().max\" matInput\r\n[matDatepicker]=\"picker()\" />\r\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { provideNativeDateAdapter } from '@angular/material/core';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport type { ITowerStepColumn } from 'ngx-t-forms-types';\r\nimport { TFormInputStatusComponent } from '../../../t-form-input-status/t-form-input-status.component';\r\nimport { DatePickerReactiveInputComponent } from './core/date-picker-reactive-input/date-picker-reactive-input.component';\r\nimport { getInputErrorMessage } from '../../../../services/core/t-input-controller/functions/inputErrorMessage';\r\n\r\n/** Wraps a reactive date-picker control inside a `mat-form-field`. */\r\n@Component({\r\n selector: 'lib-date-picker-input-element',\r\n templateUrl: './date-picker-input-element.component.html',\r\n styleUrl: './date-picker-input-element.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [provideNativeDateAdapter()],\r\n imports: [\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatDatepickerModule,\r\n TFormInputStatusComponent,\r\n DatePickerReactiveInputComponent,\r\n ],\r\n})\r\nexport class DatePickerInputElementComponent {\r\n readonly inputConfig = input.required<ITowerStepColumn>();\r\n readonly formGroup = input.required<FormGroup>();\r\n readonly reload = output<void>();\r\n\r\n protected readonly errorMessage = computed(() =>\r\n getInputErrorMessage(this.inputConfig(), this.formGroup()),\r\n );\r\n}\r\n","<form [formGroup]=\"formGroup()\">\r\n @if (inputConfig(); as inputConfig) {\r\n <mat-form-field [appearance]=\"inputConfig.appearance || 'fill'\" subscriptSizing=\"dynamic\">\r\n <mat-label>\r\n {{ inputConfig.label }}\r\n <lib-t-form-input-status [inputConfig]=\"inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n\r\n <lib-date-picker-reactive-input\r\n [inputConfig]=\"inputConfig\"\r\n [required]=\"inputConfig.required\"\r\n [formControlName]=\"inputConfig.id\"\r\n [picker]=\"picker\"\r\n ></lib-date-picker-reactive-input>\r\n\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker>\r\n <button mat-button matDatepickerCancel>Cancel</button>\r\n <button mat-raised-button color=\"primary\" matDatepickerApply>Apply</button>\r\n </mat-datepicker>\r\n\r\n @if (inputConfig.canReload?.canReload) {\r\n <button\r\n mat-icon-button\r\n style=\"margin-right: 4px;\"\r\n matTooltip=\"Click to refresh this field.\"\r\n class=\"input-sync-button\"\r\n (click)=\"inputConfig.canReload.emit()\"\r\n matSuffix\r\n >\r\n <mat-icon style=\"color: var(--mat-sys-primary)\">sync</mat-icon>\r\n </button>\r\n }\r\n\r\n @if (inputConfig.hintLabel || inputConfig.temporaryHint) {\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel }}\r\n </mat-hint>\r\n }\r\n\r\n @if (!!errorMessage()) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{ errorMessage() }}</mat-error>\r\n }\r\n\r\n @if (inputConfig.prefixIcon) {\r\n <mat-icon matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n }\r\n\r\n @if (inputConfig.suffixIcon) {\r\n <mat-icon matSuffix>{{ inputConfig.suffixIcon }}</mat-icon>\r\n }\r\n\r\n @if (inputConfig.prefixText) {\r\n <span matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n }\r\n @if (inputConfig.suffixText) {\r\n <span matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText }}</span>\r\n }\r\n\r\n @if (inputConfig.maxLength && formGroup()) {\r\n <mat-hint align=\"end\">\r\n {{ (formGroup().controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength }}\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n }\r\n</form>\r\n"],"names":["i4"],"mappings":";;;;;;;;;;;;;;;;;;;AASA,MAAM,iBAAiB,GAA0B;AAC/C,IAAA,WAAW,EAAE,iCAAiC;AAC9C,IAAA,MAAM,EAAE;CACT;AAmBK,MAAO,gCAAiC,SAAQ,eAAqB,CAAA;AAIzE,IAAA,WAAA,GAAA;QACE,KAAK,CACH,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAc,EAC9D,MAAM,CAA0B,UAAU,CAAC,EAC3C,iBAAiB,CAClB;AARM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAA0B;AACjD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,iFAAoB;IAQzD;AAEA,IAAA,IAAa,KAAK,GAAA;AAChB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK;;QAEpB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAK,CAAa,KAAK,EAAE;IAC/D;AAEA,IAAA,IAAa,gBAAgB,GAAA;AAC3B,QAAA,OAAO,IAAI;IACb;AAEU,IAAA,OAAO,CAAC,KAAgD,EAAA;AAChE,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAoB;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;+GA1BW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EALhC,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B9F,2RAQA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSI,mBAAmB,sNACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,mBAAmB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAWV,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAjB5C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,EAAA,OAAA,EACjC;wBACP,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd;qBACD,EAAA,IAAA,EACK;AACJ,wBAAA,kBAAkB,EAAE,kBAAkB;AACtC,wBAAA,MAAM,EAAE,IAAI;AACb,qBAAA,EAAA,SAAA,EACU,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAA,gCAAkC,EAAE,CAAC,EAAA,eAAA,EAG3E,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2RAAA,EAAA;;;AEhBjD;MAkBa,+BAA+B,CAAA;AAjB5C,IAAA,WAAA,GAAA;AAkBW,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,iFAAoB;AAChD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,+EAAa;QACvC,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;AAEb,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MACzC,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,mFAC3D;AACF,IAAA;+GARY,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAZ/B,CAAC,wBAAwB,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBzC,4/EAmEA,EAAA,MAAA,EAAA,CAAA,oJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9CI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,kBAAkB,6uBAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,gBAAgB,4TAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,yBAAyB,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,gCAAgC,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGvB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAjB3C,SAAS;+BACE,+BAA+B,EAAA,eAAA,EAGxB,uBAAuB,CAAC,MAAM,aACpC,CAAC,wBAAwB,EAAE,CAAC,EAAA,OAAA,EAC9B;wBACP,mBAAmB;wBACnB,kBAAkB;wBAClB,aAAa;wBACb,eAAe;wBACf,gBAAgB;wBAChB,mBAAmB;wBACnB,yBAAyB;wBACzB,gCAAgC;AACjC,qBAAA,EAAA,QAAA,EAAA,4/EAAA,EAAA,MAAA,EAAA,CAAA,oJAAA,CAAA,EAAA;;;;;"}
|
|
@@ -13,7 +13,7 @@ import * as i1$1 from '@angular/material/button';
|
|
|
13
13
|
import { MatButtonModule } from '@angular/material/button';
|
|
14
14
|
import * as i5 from '@angular/material/tooltip';
|
|
15
15
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
16
|
-
import { B as BaseCustomInput,
|
|
16
|
+
import { B as BaseCustomInput, q as getInputErrorMessage, u as TFormInputStatusComponent } from './ngx-t-forms-ngx-t-forms-C2G8_WQk.mjs';
|
|
17
17
|
import { MatInputModule } from '@angular/material/input';
|
|
18
18
|
|
|
19
19
|
const customInputConfig = {
|
|
@@ -153,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
|
|
|
153
153
|
}], propDecorators: { inputConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputConfig", required: true }] }], formGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "formGroup", required: true }] }], reload: [{ type: i0.Output, args: ["reload"] }] } });
|
|
154
154
|
|
|
155
155
|
export { DateRangePickerInputElementComponent };
|
|
156
|
-
//# sourceMappingURL=ngx-t-forms-date-range-picker-input-element.component-
|
|
156
|
+
//# sourceMappingURL=ngx-t-forms-date-range-picker-input-element.component-4W6uvrDU.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-t-forms-date-range-picker-input-element.component-CmoquQGV.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-range-picker-input-element/core/date-range-picker-reactive-input/date-range-picker-reactive-input.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-range-picker-input-element/core/date-range-picker-reactive-input/date-range-picker-reactive-input.component.html","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-range-picker-input-element/date-range-picker-input-element.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-range-picker-input-element/date-range-picker-input-element.component.html"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { AbstractControl, FormGroup, NgControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport type { ITowerStepColumn } from 'ngx-t-forms-types';\r\nimport {\r\n BaseCustomInput,\r\n BaseCustomInputConfig,\r\n} from '../../../../../../services/core/t-input-controller/functions/baseCustomInput';\r\n\r\nconst customInputConfig: BaseCustomInputConfig = {\r\n controlType: 'lib-date-range-picker-reactive-input',\r\n nextId: 0,\r\n};\r\n\r\n/**\r\n * Inner Material `MatFormFieldControl` host for the date-range-picker reactive\r\n * input. Owns start/end `FormControl` lookups and the cross-field required\r\n * validation reconciliation.\r\n */\r\n@Component({\r\n selector: 'lib-date-range-picker-reactive-input',\r\n imports: [\r\n ReactiveFormsModule,\r\n MatDatepickerModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n ],\r\n host: {\r\n '[class.floating]': 'shouldLabelFloat',\r\n '[id]': 'id',\r\n },\r\n providers: [\r\n { provide: MatFormFieldControl, useExisting: DateRangePickerReactiveInputComponent },\r\n ],\r\n templateUrl: './date-range-picker-reactive-input.component.html',\r\n styleUrl: './date-range-picker-reactive-input.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.Emulated,\r\n})\r\nexport class DateRangePickerReactiveInputComponent extends BaseCustomInput<Date> {\r\n /** Column definition used to resolve the start/end `FormControl` names. */\r\n readonly inputConfig = input.required<ITowerStepColumn>();\r\n\r\n constructor() {\r\n super(\r\n inject(NgControl, { self: true, optional: true }) as NgControl,\r\n inject(ElementRef),\r\n customInputConfig,\r\n );\r\n }\r\n\r\n override get empty(): boolean {\r\n const n: Date | null = this.value;\r\n // Check for null, undefined, or empty string, but allow 0\r\n return n === null || n === undefined || (typeof n === 'string' && n === '');\r\n }\r\n\r\n override get shouldLabelFloat(): boolean {\r\n return true;\r\n }\r\n\r\n protected readonly startDateControl = computed(() => {\r\n const cfg = this.inputConfig();\r\n const parent = this.parentFormGroup;\r\n const ctrl: AbstractControl | undefined =\r\n parent?.controls[`${cfg?.id}.${cfg?.startDateControl}`];\r\n return ctrl ?? null;\r\n });\r\n\r\n protected readonly endDateControl = computed(() => {\r\n const cfg = this.inputConfig();\r\n const parent = this.parentFormGroup;\r\n const ctrl: AbstractControl | undefined =\r\n parent?.controls[`${cfg?.id}.${cfg?.endDateControl}`];\r\n return ctrl ?? null;\r\n });\r\n\r\n protected get parentFormGroup(): FormGroup | null {\r\n return (this.ngControl?.control?.parent as FormGroup) ?? null;\r\n }\r\n\r\n override checkValidationsAnErrors(): void {\r\n const control = this.ngControl?.control;\r\n if (!control || !this.touched) return;\r\n\r\n const errors = { ...control.errors };\r\n\r\n this.errors = errors;\r\n const validStartDate = this.startDateControl()?.valid;\r\n const validEndDate = this.endDateControl()?.valid;\r\n if (validStartDate && validEndDate && 'required' in errors) {\r\n const hasOtherErrors = Object.keys(errors).length > 1;\r\n if (!hasOtherErrors) {\r\n control.setErrors(null);\r\n } else {\r\n delete errors['required'];\r\n control.setErrors(errors);\r\n }\r\n } else if (\r\n (!('required' in errors) && this.required && !validStartDate) ||\r\n (!('required' in errors) && this.required && !validEndDate)\r\n ) {\r\n control.setErrors({ required: true, ...errors });\r\n }\r\n }\r\n}\r\n","","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { provideNativeDateAdapter } from '@angular/material/core';\r\nimport { DateRange, MatDatepickerInputEvent, MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport type { ITowerStepColumn } from 'ngx-t-forms-types';\r\nimport { TFormInputStatusComponent } from '../../../t-form-input-status/t-form-input-status.component';\r\nimport { DateRangePickerReactiveInputComponent } from './core/date-range-picker-reactive-input/date-range-picker-reactive-input.component';\r\nimport { getInputErrorMessage } from '../../../../services/core/t-input-controller/functions/inputErrorMessage';\r\n\r\n/** Wraps a reactive date-range-picker control inside a `mat-form-field`. */\r\n@Component({\r\n selector: 'lib-date-range-picker-input-element',\r\n templateUrl: './date-range-picker-input-element.component.html',\r\n styleUrl: './date-range-picker-input-element.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [provideNativeDateAdapter()],\r\n imports: [\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatDatepickerModule,\r\n TFormInputStatusComponent,\r\n DateRangePickerReactiveInputComponent,\r\n ],\r\n})\r\nexport class DateRangePickerInputElementComponent {\r\n readonly inputConfig = input.required<ITowerStepColumn>();\r\n readonly formGroup = input.required<FormGroup>();\r\n readonly reload = output<void>();\r\n\r\n protected readonly errorMessage = computed(() =>\r\n getInputErrorMessage(this.inputConfig(), this.formGroup()),\r\n );\r\n\r\n protected readonly startControlName = computed<string>(() => {\r\n const cfg = this.inputConfig();\r\n return cfg.startDateControl\r\n ? `${cfg.id}.${cfg.startDateControl}`\r\n : `${cfg.id}.startDate`;\r\n });\r\n\r\n protected readonly endControlName = computed<string>(() => {\r\n const cfg = this.inputConfig();\r\n return cfg.endDateControl\r\n ? `${cfg.id}.${cfg.endDateControl}`\r\n : `${cfg.id}.endDate`;\r\n });\r\n\r\n protected hasStartDateError(errorName: string): boolean {\r\n const control = this.formGroup().get(this.startControlName());\r\n return control ? control.hasError(errorName) : false;\r\n }\r\n\r\n protected hasEndDateError(errorName: string): boolean {\r\n const control = this.formGroup().get(this.endControlName());\r\n return control ? control.hasError(errorName) : false;\r\n }\r\n\r\n protected dateChanged(\r\n event: MatDatepickerInputEvent<unknown, DateRange<unknown>>,\r\n formControlName: string | undefined,\r\n ): void {\r\n const control = this.formGroup().controls[`${this.inputConfig().id}.${formControlName}`];\r\n if (control) {\r\n control.setValue(event.value);\r\n control.updateValueAndValidity();\r\n control.markAsTouched();\r\n control.markAsDirty();\r\n }\r\n }\r\n}\r\n","<form [formGroup]=\"formGroup()\">\r\n @if (inputConfig(); as inputConfig) {\r\n <mat-form-field [appearance]=\"inputConfig.appearance || 'fill'\" subscriptSizing=\"dynamic\">\r\n <mat-label>\r\n {{ inputConfig.label }}\r\n <lib-t-form-input-status [inputConfig]=\"inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n\r\n <lib-date-range-picker-reactive-input\r\n [inputConfig]=\"inputConfig\"\r\n [required]=\"inputConfig.required\"\r\n [formControlName]=\"inputConfig.id + '.' + inputConfig.endDateControl\"\r\n ></lib-date-range-picker-reactive-input>\r\n\r\n <mat-date-range-input [required]=\"inputConfig.required\" [formGroup]=\"formGroup()\" [rangePicker]=\"picker\">\r\n @if (inputConfig.startDateControl) {\r\n <input\r\n matStartDate\r\n [disabled]=\"!!(inputConfig.disabled ?? inputConfig.readonly)\"\r\n [formControlName]=\"inputConfig.id + '.' + inputConfig.startDateControl\"\r\n [min]=\"inputConfig.startMinDate\"\r\n [max]=\"inputConfig.startMaxDate\"\r\n [value]=\"formGroup().controls[inputConfig.id + '.' + inputConfig.startDateControl]?.value\"\r\n (dateChange)=\"dateChanged($event, inputConfig.startDateControl)\"\r\n placeholder=\"Start date\"\r\n />\r\n }\r\n @if (inputConfig.endDateControl) {\r\n <input\r\n matEndDate\r\n [disabled]=\"!!(inputConfig.disabled ?? inputConfig.readonly)\"\r\n [formControlName]=\"inputConfig.id + '.' + inputConfig.endDateControl\"\r\n [value]=\"formGroup().controls[inputConfig.id + '.' + inputConfig.endDateControl]?.value\"\r\n placeholder=\"End date\"\r\n [min]=\"inputConfig.endMinDate\"\r\n [max]=\"inputConfig.endMaxDate\"\r\n (dateChange)=\"dateChanged($event, inputConfig.endDateControl)\"\r\n />\r\n }\r\n </mat-date-range-input>\r\n\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker>\r\n <mat-datepicker-actions>\r\n <button mat-button matDatepickerCancel>Cancel</button>\r\n <button mat-raised-button color=\"primary\" matDatepickerApply>Apply</button>\r\n </mat-datepicker-actions>\r\n </mat-date-range-picker>\r\n\r\n @if (inputConfig.hintLabel || inputConfig.temporaryHint) {\r\n <mat-hint [matTooltip]=\"inputConfig.hintLabel || ''\" class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel }}\r\n </mat-hint>\r\n }\r\n\r\n @if (!!errorMessage()) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{ errorMessage() }}</mat-error>\r\n }\r\n\r\n @if (inputConfig.canReload?.canReload) {\r\n <button\r\n mat-icon-button\r\n style=\"margin-right: 4px;\"\r\n matTooltip=\"Click to refresh this field.\"\r\n class=\"input-sync-button\"\r\n (click)=\"inputConfig.canReload.emit()\"\r\n matSuffix\r\n >\r\n <mat-icon style=\"color: var(--mat-sys-primary)\">sync</mat-icon>\r\n </button>\r\n }\r\n\r\n @if (inputConfig.prefixIcon) {\r\n <mat-icon matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n }\r\n\r\n @if (inputConfig.suffixIcon && inputConfig.id !== 'password') {\r\n <mat-icon matSuffix>{{ inputConfig.suffixIcon }}</mat-icon>\r\n }\r\n\r\n @if (inputConfig.prefixText) {\r\n <span matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n }\r\n @if (inputConfig.suffixText) {\r\n <span matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText }}</span>\r\n }\r\n\r\n @if (inputConfig.maxLength && formGroup()) {\r\n <mat-hint>\r\n {{ (formGroup().controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength }}\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n }\r\n</form>\r\n"],"names":["i4"],"mappings":";;;;;;;;;;;;;;;;;;AAqBA,MAAM,iBAAiB,GAA0B;AAC/C,IAAA,WAAW,EAAE,sCAAsC;AACnD,IAAA,MAAM,EAAE,CAAC;CACV;AAED;;;;AAIG;AAsBG,MAAO,qCAAsC,SAAQ,eAAqB,CAAA;AAI9E,IAAA,WAAA,GAAA;QACE,KAAK,CACH,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAc,EAC9D,MAAM,CAAC,UAAU,CAAC,EAClB,iBAAiB,CAClB;;AAPM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,iFAAoB;AAoBtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAClD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe;AACnC,YAAA,MAAM,IAAI,GACR,MAAM,EAAE,QAAQ,CAAC,CAAA,EAAG,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,gBAAgB,CAAA,CAAE,CAAC;YACzD,OAAO,IAAI,IAAI,IAAI;AACrB,QAAA,CAAC,uFAAC;AAEiB,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe;AACnC,YAAA,MAAM,IAAI,GACR,MAAM,EAAE,QAAQ,CAAC,CAAA,EAAG,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,cAAc,CAAA,CAAE,CAAC;YACvD,OAAO,IAAI,IAAI,IAAI;AACrB,QAAA,CAAC,qFAAC;IA1BF;AAEA,IAAA,IAAa,KAAK,GAAA;AAChB,QAAA,MAAM,CAAC,GAAgB,IAAI,CAAC,KAAK;;AAEjC,QAAA,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,KAAK,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;IAC7E;AAEA,IAAA,IAAa,gBAAgB,GAAA;AAC3B,QAAA,OAAO,IAAI;IACb;AAkBA,IAAA,IAAc,eAAe,GAAA;QAC3B,OAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAoB,IAAI,IAAI;IAC/D;IAES,wBAAwB,GAAA;AAC/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO;AACvC,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;QAE/B,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE;AAEpC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QACpB,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK;QACjD,IAAI,cAAc,IAAI,YAAY,IAAI,UAAU,IAAI,MAAM,EAAE;AAC1D,YAAA,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;YACrD,IAAI,CAAC,cAAc,EAAE;AACnB,gBAAA,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;YACzB;iBAAO;AACL,gBAAA,OAAO,MAAM,CAAC,UAAU,CAAC;AACzB,gBAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;YAC3B;QACF;AAAO,aAAA,IACL,CAAC,EAAE,UAAU,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc;AAC5D,aAAC,EAAE,UAAU,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,EAC3D;AACA,YAAA,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;QAClD;IACF;+GAjEW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EARrC;AACT,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,qCAAqC,EAAE;SACrF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9CH,EAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDkCI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,mBAAmB,8BACnB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAcN,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBArBjD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sCAAsC,EAAA,OAAA,EACvC;wBACP,mBAAmB;wBACnB,mBAAmB;wBACnB,cAAc;wBACd,aAAa;wBACb,eAAe;qBAChB,EAAA,IAAA,EACK;AACJ,wBAAA,kBAAkB,EAAE,kBAAkB;AACtC,wBAAA,MAAM,EAAE,IAAI;qBACb,EAAA,SAAA,EACU;AACT,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,uCAAuC,EAAE;AACrF,qBAAA,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,QAAQ,EAAA,QAAA,EAAA,EAAA,EAAA;;;AErC3C;MAkBa,oCAAoC,CAAA;AAjBjD,IAAA,WAAA,GAAA;AAkBW,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,iFAAoB;AAChD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,+EAAa;QACvC,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;AAEb,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MACzC,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,mFAC3D;AAEkB,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAS,MAAK;AAC1D,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;YAC9B,OAAO,GAAG,CAAC;kBACP,GAAG,GAAG,CAAC,EAAE,CAAA,CAAA,EAAI,GAAG,CAAC,gBAAgB,CAAA;AACnC,kBAAE,CAAA,EAAG,GAAG,CAAC,EAAE,YAAY;AAC3B,QAAA,CAAC,uFAAC;AAEiB,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAS,MAAK;AACxD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;YAC9B,OAAO,GAAG,CAAC;kBACP,GAAG,GAAG,CAAC,EAAE,CAAA,CAAA,EAAI,GAAG,CAAC,cAAc,CAAA;AACjC,kBAAE,CAAA,EAAG,GAAG,CAAC,EAAE,UAAU;AACzB,QAAA,CAAC,qFAAC;AAwBH,IAAA;AAtBW,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7D,QAAA,OAAO,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK;IACtD;AAEU,IAAA,eAAe,CAAC,SAAiB,EAAA;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AAC3D,QAAA,OAAO,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK;IACtD;IAEU,WAAW,CACnB,KAA2D,EAC3D,eAAmC,EAAA;QAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA,EAAG,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,eAAe,CAAA,CAAE,CAAC;QACxF,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;YAC7B,OAAO,CAAC,sBAAsB,EAAE;YAChC,OAAO,CAAC,aAAa,EAAE;YACvB,OAAO,CAAC,WAAW,EAAE;QACvB;IACF;+GA5CW,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAZpC,CAAC,wBAAwB,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBzC,uhIA+FA,EAAA,MAAA,EAAA,CAAA,oJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1EI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,kBAAkB,iuBAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,gBAAgB,4TAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,uDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,yBAAyB,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,qCAAqC,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAG5B,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAjBhD,SAAS;+BACE,qCAAqC,EAAA,eAAA,EAG9B,uBAAuB,CAAC,MAAM,aACpC,CAAC,wBAAwB,EAAE,CAAC,EAAA,OAAA,EAC9B;wBACP,mBAAmB;wBACnB,kBAAkB;wBAClB,aAAa;wBACb,eAAe;wBACf,gBAAgB;wBAChB,mBAAmB;wBACnB,yBAAyB;wBACzB,qCAAqC;AACtC,qBAAA,EAAA,QAAA,EAAA,uhIAAA,EAAA,MAAA,EAAA,CAAA,oJAAA,CAAA,EAAA;;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-t-forms-date-range-picker-input-element.component-4W6uvrDU.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-range-picker-input-element/core/date-range-picker-reactive-input/date-range-picker-reactive-input.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-range-picker-input-element/core/date-range-picker-reactive-input/date-range-picker-reactive-input.component.html","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-range-picker-input-element/date-range-picker-input-element.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/date-range-picker-input-element/date-range-picker-input-element.component.html"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { AbstractControl, FormGroup, NgControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport type { ITowerStepColumn } from 'ngx-t-forms-types';\r\nimport {\r\n BaseCustomInput,\r\n BaseCustomInputConfig,\r\n} from '../../../../../../services/core/t-input-controller/functions/baseCustomInput';\r\n\r\nconst customInputConfig: BaseCustomInputConfig = {\r\n controlType: 'lib-date-range-picker-reactive-input',\r\n nextId: 0,\r\n};\r\n\r\n/**\r\n * Inner Material `MatFormFieldControl` host for the date-range-picker reactive\r\n * input. Owns start/end `FormControl` lookups and the cross-field required\r\n * validation reconciliation.\r\n */\r\n@Component({\r\n selector: 'lib-date-range-picker-reactive-input',\r\n imports: [\r\n ReactiveFormsModule,\r\n MatDatepickerModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n ],\r\n host: {\r\n '[class.floating]': 'shouldLabelFloat',\r\n '[id]': 'id',\r\n },\r\n providers: [\r\n { provide: MatFormFieldControl, useExisting: DateRangePickerReactiveInputComponent },\r\n ],\r\n templateUrl: './date-range-picker-reactive-input.component.html',\r\n styleUrl: './date-range-picker-reactive-input.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.Emulated,\r\n})\r\nexport class DateRangePickerReactiveInputComponent extends BaseCustomInput<Date> {\r\n /** Column definition used to resolve the start/end `FormControl` names. */\r\n readonly inputConfig = input.required<ITowerStepColumn>();\r\n\r\n constructor() {\r\n super(\r\n inject(NgControl, { self: true, optional: true }) as NgControl,\r\n inject(ElementRef),\r\n customInputConfig,\r\n );\r\n }\r\n\r\n override get empty(): boolean {\r\n const n: Date | null = this.value;\r\n // Check for null, undefined, or empty string, but allow 0\r\n return n === null || n === undefined || (typeof n === 'string' && n === '');\r\n }\r\n\r\n override get shouldLabelFloat(): boolean {\r\n return true;\r\n }\r\n\r\n protected readonly startDateControl = computed(() => {\r\n const cfg = this.inputConfig();\r\n const parent = this.parentFormGroup;\r\n const ctrl: AbstractControl | undefined =\r\n parent?.controls[`${cfg?.id}.${cfg?.startDateControl}`];\r\n return ctrl ?? null;\r\n });\r\n\r\n protected readonly endDateControl = computed(() => {\r\n const cfg = this.inputConfig();\r\n const parent = this.parentFormGroup;\r\n const ctrl: AbstractControl | undefined =\r\n parent?.controls[`${cfg?.id}.${cfg?.endDateControl}`];\r\n return ctrl ?? null;\r\n });\r\n\r\n protected get parentFormGroup(): FormGroup | null {\r\n return (this.ngControl?.control?.parent as FormGroup) ?? null;\r\n }\r\n\r\n override checkValidationsAnErrors(): void {\r\n const control = this.ngControl?.control;\r\n if (!control || !this.touched) return;\r\n\r\n const errors = { ...control.errors };\r\n\r\n this.errors = errors;\r\n const validStartDate = this.startDateControl()?.valid;\r\n const validEndDate = this.endDateControl()?.valid;\r\n if (validStartDate && validEndDate && 'required' in errors) {\r\n const hasOtherErrors = Object.keys(errors).length > 1;\r\n if (!hasOtherErrors) {\r\n control.setErrors(null);\r\n } else {\r\n delete errors['required'];\r\n control.setErrors(errors);\r\n }\r\n } else if (\r\n (!('required' in errors) && this.required && !validStartDate) ||\r\n (!('required' in errors) && this.required && !validEndDate)\r\n ) {\r\n control.setErrors({ required: true, ...errors });\r\n }\r\n }\r\n}\r\n","","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { provideNativeDateAdapter } from '@angular/material/core';\r\nimport { DateRange, MatDatepickerInputEvent, MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport type { ITowerStepColumn } from 'ngx-t-forms-types';\r\nimport { TFormInputStatusComponent } from '../../../t-form-input-status/t-form-input-status.component';\r\nimport { DateRangePickerReactiveInputComponent } from './core/date-range-picker-reactive-input/date-range-picker-reactive-input.component';\r\nimport { getInputErrorMessage } from '../../../../services/core/t-input-controller/functions/inputErrorMessage';\r\n\r\n/** Wraps a reactive date-range-picker control inside a `mat-form-field`. */\r\n@Component({\r\n selector: 'lib-date-range-picker-input-element',\r\n templateUrl: './date-range-picker-input-element.component.html',\r\n styleUrl: './date-range-picker-input-element.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [provideNativeDateAdapter()],\r\n imports: [\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatDatepickerModule,\r\n TFormInputStatusComponent,\r\n DateRangePickerReactiveInputComponent,\r\n ],\r\n})\r\nexport class DateRangePickerInputElementComponent {\r\n readonly inputConfig = input.required<ITowerStepColumn>();\r\n readonly formGroup = input.required<FormGroup>();\r\n readonly reload = output<void>();\r\n\r\n protected readonly errorMessage = computed(() =>\r\n getInputErrorMessage(this.inputConfig(), this.formGroup()),\r\n );\r\n\r\n protected readonly startControlName = computed<string>(() => {\r\n const cfg = this.inputConfig();\r\n return cfg.startDateControl\r\n ? `${cfg.id}.${cfg.startDateControl}`\r\n : `${cfg.id}.startDate`;\r\n });\r\n\r\n protected readonly endControlName = computed<string>(() => {\r\n const cfg = this.inputConfig();\r\n return cfg.endDateControl\r\n ? `${cfg.id}.${cfg.endDateControl}`\r\n : `${cfg.id}.endDate`;\r\n });\r\n\r\n protected hasStartDateError(errorName: string): boolean {\r\n const control = this.formGroup().get(this.startControlName());\r\n return control ? control.hasError(errorName) : false;\r\n }\r\n\r\n protected hasEndDateError(errorName: string): boolean {\r\n const control = this.formGroup().get(this.endControlName());\r\n return control ? control.hasError(errorName) : false;\r\n }\r\n\r\n protected dateChanged(\r\n event: MatDatepickerInputEvent<unknown, DateRange<unknown>>,\r\n formControlName: string | undefined,\r\n ): void {\r\n const control = this.formGroup().controls[`${this.inputConfig().id}.${formControlName}`];\r\n if (control) {\r\n control.setValue(event.value);\r\n control.updateValueAndValidity();\r\n control.markAsTouched();\r\n control.markAsDirty();\r\n }\r\n }\r\n}\r\n","<form [formGroup]=\"formGroup()\">\r\n @if (inputConfig(); as inputConfig) {\r\n <mat-form-field [appearance]=\"inputConfig.appearance || 'fill'\" subscriptSizing=\"dynamic\">\r\n <mat-label>\r\n {{ inputConfig.label }}\r\n <lib-t-form-input-status [inputConfig]=\"inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n\r\n <lib-date-range-picker-reactive-input\r\n [inputConfig]=\"inputConfig\"\r\n [required]=\"inputConfig.required\"\r\n [formControlName]=\"inputConfig.id + '.' + inputConfig.endDateControl\"\r\n ></lib-date-range-picker-reactive-input>\r\n\r\n <mat-date-range-input [required]=\"inputConfig.required\" [formGroup]=\"formGroup()\" [rangePicker]=\"picker\">\r\n @if (inputConfig.startDateControl) {\r\n <input\r\n matStartDate\r\n [disabled]=\"!!(inputConfig.disabled ?? inputConfig.readonly)\"\r\n [formControlName]=\"inputConfig.id + '.' + inputConfig.startDateControl\"\r\n [min]=\"inputConfig.startMinDate\"\r\n [max]=\"inputConfig.startMaxDate\"\r\n [value]=\"formGroup().controls[inputConfig.id + '.' + inputConfig.startDateControl]?.value\"\r\n (dateChange)=\"dateChanged($event, inputConfig.startDateControl)\"\r\n placeholder=\"Start date\"\r\n />\r\n }\r\n @if (inputConfig.endDateControl) {\r\n <input\r\n matEndDate\r\n [disabled]=\"!!(inputConfig.disabled ?? inputConfig.readonly)\"\r\n [formControlName]=\"inputConfig.id + '.' + inputConfig.endDateControl\"\r\n [value]=\"formGroup().controls[inputConfig.id + '.' + inputConfig.endDateControl]?.value\"\r\n placeholder=\"End date\"\r\n [min]=\"inputConfig.endMinDate\"\r\n [max]=\"inputConfig.endMaxDate\"\r\n (dateChange)=\"dateChanged($event, inputConfig.endDateControl)\"\r\n />\r\n }\r\n </mat-date-range-input>\r\n\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker>\r\n <mat-datepicker-actions>\r\n <button mat-button matDatepickerCancel>Cancel</button>\r\n <button mat-raised-button color=\"primary\" matDatepickerApply>Apply</button>\r\n </mat-datepicker-actions>\r\n </mat-date-range-picker>\r\n\r\n @if (inputConfig.hintLabel || inputConfig.temporaryHint) {\r\n <mat-hint [matTooltip]=\"inputConfig.hintLabel || ''\" class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel }}\r\n </mat-hint>\r\n }\r\n\r\n @if (!!errorMessage()) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{ errorMessage() }}</mat-error>\r\n }\r\n\r\n @if (inputConfig.canReload?.canReload) {\r\n <button\r\n mat-icon-button\r\n style=\"margin-right: 4px;\"\r\n matTooltip=\"Click to refresh this field.\"\r\n class=\"input-sync-button\"\r\n (click)=\"inputConfig.canReload.emit()\"\r\n matSuffix\r\n >\r\n <mat-icon style=\"color: var(--mat-sys-primary)\">sync</mat-icon>\r\n </button>\r\n }\r\n\r\n @if (inputConfig.prefixIcon) {\r\n <mat-icon matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n }\r\n\r\n @if (inputConfig.suffixIcon && inputConfig.id !== 'password') {\r\n <mat-icon matSuffix>{{ inputConfig.suffixIcon }}</mat-icon>\r\n }\r\n\r\n @if (inputConfig.prefixText) {\r\n <span matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n }\r\n @if (inputConfig.suffixText) {\r\n <span matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText }}</span>\r\n }\r\n\r\n @if (inputConfig.maxLength && formGroup()) {\r\n <mat-hint>\r\n {{ (formGroup().controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength }}\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n }\r\n</form>\r\n"],"names":["i4"],"mappings":"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"}
|
|
@@ -20,9 +20,9 @@ import { ClipboardModule } from '@angular/cdk/clipboard';
|
|
|
20
20
|
import { CdkDropList, CdkDrag } from '@angular/cdk/drag-drop';
|
|
21
21
|
import { Subject } from 'rxjs';
|
|
22
22
|
import { DocumentLitsLabelConfigInterfaceValueType, ReportTypes, InputDataTypes, InputTypes, InputPipeTypes, ElementTypes } from 'ngx-t-forms-types';
|
|
23
|
-
import { MatChipListEditorComponent } from './ngx-t-forms-mat-chip-list-editor.component-
|
|
23
|
+
import { MatChipListEditorComponent } from './ngx-t-forms-mat-chip-list-editor.component-BWisS3Em.mjs';
|
|
24
24
|
import { MatSliderToggleEditorComponent } from './ngx-t-forms-mat-slider-toggle-editor.component-CcYiwx-8.mjs';
|
|
25
|
-
import { E as EmptyStateComponent } from './ngx-t-forms-ngx-t-forms-
|
|
25
|
+
import { E as EmptyStateComponent } from './ngx-t-forms-ngx-t-forms-C2G8_WQk.mjs';
|
|
26
26
|
import * as i8 from '@angular/material/select';
|
|
27
27
|
|
|
28
28
|
/** Title-cases an enum key: `daysAgo` → `Days Ago`. */
|
|
@@ -365,4 +365,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
|
|
|
365
365
|
}] } });
|
|
366
366
|
|
|
367
367
|
export { DocumentListLabelConfigEditorComponent };
|
|
368
|
-
//# sourceMappingURL=ngx-t-forms-document-list-label-config-editor.component-
|
|
368
|
+
//# sourceMappingURL=ngx-t-forms-document-list-label-config-editor.component-CR6EvgJO.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-t-forms-document-list-label-config-editor.component-CLUOXreG.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/document-list-label-config-editor/document-list-label-config-editor.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/document-list-label-config-editor/document-list-label-config-editor.component.html"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n computed,\n inject,\n output,\n signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { CdkDrag, CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';\nimport { Subject } from 'rxjs';\nimport {\n DocumentLitsLabelConfigInterfaceValueType,\n ElementTypes,\n InputDataTypes,\n InputPipeTypes,\n InputTypes,\n ReportTypes,\n} from 'ngx-t-forms-types';\nimport type {\n DocumentLitsLabelConfigInterface,\n ElementEditorInnerSectionElementInterface,\n FormColumnInputs,\n} from 'ngx-t-forms-types';\n\nimport type { IConfigElementError } from '../../t-dynamic-data-edit.component';\nimport { MatChipListEditorComponent } from '../mat-chip-list-editor/mat-chip-list-editor.component';\nimport { MatSliderToggleEditorComponent } from '../mat-slider-toggle-editor/mat-slider-toggle-editor.component';\nimport { EmptyStateComponent } from '../_shared/empty-state/empty-state.component';\n\n/** Picker chip option (label + value), as consumed by `lib-mat-chip-list-editor`. */\ninterface ChipOption {\n readonly label: string;\n readonly value: string;\n}\n\n/**\n * Working buffer for the label currently being added or edited. The three\n * distinct states of `labelInEdit` drive the editor UI:\n *\n * - `null` → not editing; the \"Add new column\" button is shown.\n * - `{}` (empty) → a fresh, not-yet-populated draft (the create form).\n * - populated draft → an existing or in-progress column being edited.\n */\ntype LabelDraft = Partial<DocumentLitsLabelConfigInterface>;\n\n/** Title-cases an enum key: `daysAgo` → `Days Ago`. */\nfunction humaniseKey(key: string): string {\n return key\n .replace(/([A-Z])/g, ' $1')\n .trim()\n .toLowerCase()\n .replace(/^\\w/, (c) => c.toUpperCase());\n}\n\n/** Derives a readable label from a camelCase control name: `taxRate` → `tax Rate`. */\nfunction controlNameToLabel(name: string): string {\n return name\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/([A-Z])([A-Z][a-z])/g, '$1 $2');\n}\n\n/**\n * Document-list label-configuration editor: builds the ordered list of column\n * label definitions (`DocumentLitsLabelConfigInterface[]`) used to render a\n * document list. Columns can be added, edited inline, removed, and reordered by\n * drag-and-drop.\n *\n * Implements `MatFormFieldControl<DocumentLitsLabelConfigInterface[]>`, so it\n * renders inside the parent's `<mat-form-field>` — `t-dynamic-data-edit` owns\n * the field label, hint, and validation errors; this component owns only the\n * column list and the add/edit form.\n *\n * NOTE: `MatFormFieldControl<T>` mandates plain mutable `value` / `disabled` /\n * `required` / `placeholder` / `id` members, `@Input()` decorators, the\n * `focused` / `touched` / `stateChanges` members, and the `useExisting`\n * provider. These are framework wiring, not defects — the CLAUDE.md bans on\n * `@Input()` / `useExisting` do not apply to MatFormFieldControl integration.\n * Genuinely-internal state (the in-edit draft, derived option lists) uses\n * `signal()` / `computed()`.\n */\n@Component({\n selector: 'lib-document-list-label-config-editor',\n imports: [\n MatListModule,\n MatTooltipModule,\n ClipboardModule,\n MatSliderToggleEditorComponent,\n MatChipListEditorComponent,\n MatFormFieldModule,\n MatButtonModule,\n MatAutocompleteModule,\n MatInputModule,\n MatIconModule,\n MatCardModule,\n CdkDropList,\n CdkDrag,\n EmptyStateComponent,\n ],\n templateUrl: './document-list-label-config-editor.component.html',\n styleUrl: './document-list-label-config-editor.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n 'class': 'lib-document-list-label-config-editor',\n '[id]': 'id',\n '[attr.aria-describedby]': 'describedBy',\n },\n providers: [\n { provide: MatFormFieldControl, useExisting: DocumentListLabelConfigEditorComponent },\n ],\n})\nexport class DocumentListLabelConfigEditorComponent\n implements MatFormFieldControl<Array<DocumentLitsLabelConfigInterface>>\n{\n static nextId = 0;\n\n /** Emits whenever a piece of `MatFormFieldControl` state changes. */\n readonly stateChanges = new Subject<void>();\n readonly controlType = 'lib-document-list-label-config-editor';\n\n id = `lib-document-list-label-config-editor-${DocumentListLabelConfigEditorComponent.nextId++}`;\n placeholder = '';\n focused = false;\n touched = false;\n describedBy = '';\n autofilled = false;\n userAriaDescribedBy: string | undefined = undefined;\n disableAutomaticLabeling: boolean | undefined = undefined;\n\n readonly ngControl = inject(NgControl, { self: true, optional: true });\n\n /** Validation errors surfaced by the parent for error-state derivation. */\n @Input() errors: IConfigElementError[] | undefined = [];\n /** Available form inputs used to auto-derive a column's value type. */\n @Input() formInputs: Array<FormColumnInputs> = [];\n /** Editor configuration supplied by the parent (placeholder/required/etc.). */\n @Input() editorConfig: ElementEditorInnerSectionElementInterface | undefined = undefined;\n /** Candidate control names offered in the form-control autocomplete. */\n @Input() mapToData: string[] | undefined = [];\n\n /** Emits the column list whenever it changes. */\n readonly valueChange = output<Array<DocumentLitsLabelConfigInterface>>();\n\n #value: Array<DocumentLitsLabelConfigInterface> = [];\n /** Current column configuration list. */\n @Input()\n get value(): Array<DocumentLitsLabelConfigInterface> {\n return this.#value;\n }\n set value(value: Array<DocumentLitsLabelConfigInterface>) {\n this.#value = value ?? [];\n this.stateChanges.next();\n }\n\n #disabled = false;\n /** Whether the editor is inert. */\n @Input()\n get disabled(): boolean {\n return this.#disabled;\n }\n set disabled(value: boolean) {\n this.#disabled = value;\n this.stateChanges.next();\n }\n\n #required = false;\n /** Whether at least one column is required. */\n @Input()\n get required(): boolean {\n return this.#required;\n }\n set required(value: boolean) {\n this.#required = value;\n this.stateChanges.next();\n }\n\n // ---- internal signal state ---------------------------------------------\n\n /** The label draft currently being added/edited (see {@link LabelDraft}). */\n protected readonly labelInEdit = signal<LabelDraft | null>(null);\n\n /** Value-type chip options (all enum members, humanised). */\n protected readonly valueTypes: ChipOption[] = Object.keys(\n DocumentLitsLabelConfigInterfaceValueType,\n ).map((key) => ({ label: humaniseKey(key), value: key }));\n\n /**\n * Autocomplete options filtered by the draft's `formControlName`. Empty term\n * shows the full list; otherwise matches a substring or a word-prefix.\n */\n protected readonly filteredControlNames = computed<readonly string[]>(() => {\n const source = this.mapToData ?? [];\n const term = (this.labelInEdit()?.formControlName ?? '').trim().toLowerCase();\n if (!term) {\n return source;\n }\n return source.filter((option) => {\n const text = option.toLowerCase();\n if (text.includes(term)) {\n return true;\n }\n return text.split(/\\s+/).some((word) => word.startsWith(term));\n });\n });\n\n /**\n * Report-type chip options derived from the draft's `valueType`. `undefined`\n * when no value type is chosen, which hides the report-types section.\n *\n * - currency / number → aggregation reports (avg, highest, lowest, sum)\n * - string → category report\n */\n protected readonly reportTypes = computed<ChipOption[] | undefined>(() => {\n const valueType = this.labelInEdit()?.valueType;\n if (!valueType) {\n return undefined;\n }\n return Object.values(ReportTypes)\n .filter((reportType) => {\n if (\n valueType === DocumentLitsLabelConfigInterfaceValueType.currency ||\n valueType === DocumentLitsLabelConfigInterfaceValueType.number\n ) {\n return (\n reportType === ReportTypes.Avg ||\n reportType === ReportTypes.Highest ||\n reportType === ReportTypes.Lowest ||\n reportType === ReportTypes.Sum\n );\n }\n if (valueType === DocumentLitsLabelConfigInterfaceValueType.string) {\n return reportType === ReportTypes.Category;\n }\n return false;\n })\n .map((key) => ({ label: humaniseKey(key), value: key }));\n });\n\n /** Whether the save action is blocked (draft missing required fields). */\n protected readonly labelSaveDisabled = computed<boolean>(() => {\n const draft = this.labelInEdit();\n return !draft || !draft.label || !draft.formControlName || !draft.valueType;\n });\n\n // ---- MatFormFieldControl getters (read by the framework) ----------------\n\n get empty(): boolean {\n return this.#value.length === 0;\n }\n\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n get errorState(): boolean {\n const requiredUnset = this.empty && this.#required;\n const ngControlError = this.ngControl?.errors != null;\n const externalError = (this.errors?.length ?? 0) > 0 && this.touched;\n return requiredUnset || ngControlError || externalError;\n }\n\n onTouched: () => void = () => {};\n\n setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n this.stateChanges.next();\n }\n\n onContainerClick(): void {\n this.markAsTouched();\n if (!this.focused) {\n this.focused = true;\n }\n this.stateChanges.next();\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.touched = true;\n this.onTouched();\n this.stateChanges.next();\n }\n }\n\n // ---- editing ------------------------------------------------------------\n\n /** Begin a fresh column draft. */\n protected startNewLabel(): void {\n this.labelInEdit.set({});\n }\n\n /** Discard the current draft. */\n protected cancelEdit(): void {\n this.labelInEdit.set(null);\n }\n\n /** Update the draft's display label from the name input. */\n protected nameChange(event: Event): void {\n const label = (event.target as HTMLInputElement | null)?.value ?? '';\n this.labelInEdit.update((draft) => ({ ...draft, label }));\n }\n\n /**\n * Update the draft's form control name (free-text typing). Re-derives the\n * value type from the matching form input, if any.\n */\n protected formControlNameChange(event: Event): void {\n const formControlName = (event.target as HTMLInputElement | null)?.value ?? '';\n const input = this.formInputs.find((i) => i.formControlName === formControlName);\n this.labelInEdit.update((draft) => ({\n ...draft,\n formControlName,\n valueType: this.#valueTypeFromInput(input),\n }));\n }\n\n /** Apply an autocomplete selection, defaulting the label from the name. */\n protected formControlSelected(event: MatAutocompleteSelectedEvent): void {\n const formControlName = String(event.option.value);\n this.labelInEdit.update((draft) => ({\n ...draft,\n formControlName,\n label: draft?.label || controlNameToLabel(formControlName),\n }));\n }\n\n /** Set the draft's value type from the chip selection. */\n protected valueTypeChanged(value: unknown): void {\n this.labelInEdit.update((draft) => ({\n ...draft,\n valueType: value as DocumentLitsLabelConfigInterfaceValueType,\n }));\n }\n\n /**\n * Set the draft's report types. The chip editor is multi-select, so it emits\n * an array; a single value is normalised into one.\n */\n protected reportTypeChanged(value: unknown): void {\n const reportType = Array.isArray(value)\n ? (value as ReportTypes[])\n : value == null\n ? []\n : [value as ReportTypes];\n this.labelInEdit.update((draft) => ({ ...draft, reportType }));\n }\n\n /** Toggle the draft's hidden flag. */\n protected isHiddenChanged(isHidden: boolean): void {\n this.labelInEdit.update((draft) => ({ ...draft, isHidden }));\n }\n\n /** Commit the draft into the list (replacing a matching column, or appending). */\n protected saveHeader(): void {\n const draft = this.labelInEdit();\n if (!draft) {\n return;\n }\n const next = [...this.#value];\n const index = next.findIndex((item) => item.formControlName === draft.formControlName);\n const column = draft as DocumentLitsLabelConfigInterface;\n if (index !== -1) {\n next[index] = column;\n } else {\n next.push(column);\n }\n this.#commit(next);\n this.labelInEdit.set(null);\n }\n\n /** Remove a column by its form control name. */\n protected removeLabel(label: DocumentLitsLabelConfigInterface): void {\n this.#commit(this.#value.filter((item) => item.formControlName !== label.formControlName));\n }\n\n /** Reorder the list after a drag-and-drop. */\n protected drop(event: CdkDragDrop<DocumentLitsLabelConfigInterface[]>): void {\n const { previousIndex, currentIndex } = event;\n const moved = this.#value.at(previousIndex);\n if (moved === undefined || previousIndex === currentIndex) {\n return;\n }\n const next = [...this.#value];\n next.splice(previousIndex, 1);\n next.splice(currentIndex, 0, moved);\n this.#commit(next);\n }\n\n /** Write a new list value, emit the change, and mark the control touched. */\n #commit(next: Array<DocumentLitsLabelConfigInterface>): void {\n this.value = next;\n this.valueChange.emit(next);\n this.markAsTouched();\n }\n\n /** Derive the value type from a form input's data/element type and pipe. */\n #valueTypeFromInput(\n input: FormColumnInputs | undefined,\n ): DocumentLitsLabelConfigInterfaceValueType {\n if (!input) {\n return DocumentLitsLabelConfigInterfaceValueType.string;\n }\n if (\n input.dataType === InputDataTypes.Number ||\n input.type === InputTypes.Number ||\n input.pipe?.pipeType === InputPipeTypes.Number\n ) {\n return DocumentLitsLabelConfigInterfaceValueType.number;\n }\n if (input.pipe?.pipeType === InputPipeTypes.Currency) {\n return DocumentLitsLabelConfigInterfaceValueType.currency;\n }\n if (input.dataType === InputDataTypes.Boolean || input.element === ElementTypes.Toggle) {\n return DocumentLitsLabelConfigInterfaceValueType.boolean;\n }\n return DocumentLitsLabelConfigInterfaceValueType.string;\n }\n}\n","<mat-nav-list\n cdkDropList\n [cdkDropListData]=\"value\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"lib-document-list-label-config-editor__list\"\n>\n @if (value.length === 0) {\n <lib-empty-state\n icon=\"view_column\"\n message=\"No columns configured. Add one below.\"\n ></lib-empty-state>\n } @else {\n @for (label of value; track label.formControlName) {\n <mat-list-item\n cdkDrag\n class=\"lib-document-list-label-config-editor__item\"\n [matTooltip]=\"'Click to copy ' + label.formControlName\"\n [cdkCopyToClipboard]=\"label.formControlName\"\n matTooltipPosition=\"before\"\n >\n <mat-icon matListItemIcon>view_column</mat-icon>\n\n <div matListItemTitle class=\"lib-document-list-label-config-editor__title\">\n <span class=\"lib-document-list-label-config-editor__label\">{{ label.label }}</span>\n <span class=\"lib-document-list-label-config-editor__meta\">\n <code>{{ label.formControlName }}</code> · {{ label.valueType }}\n </span>\n </div>\n\n <button\n matListItemMeta\n mat-icon-button\n type=\"button\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'Remove ' + label.label\"\n (click)=\"removeLabel(label)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </mat-list-item>\n }\n }\n</mat-nav-list>\n\n@if (labelInEdit(); as draft) {\n <mat-card appearance=\"outlined\" class=\"lib-document-list-label-config-editor__form\">\n <mat-card-content class=\"lib-document-list-label-config-editor__fields\">\n <label class=\"lib-document-list-label-config-editor__field-label\" [attr.for]=\"id + '-fcn'\">\n Form control name\n </label>\n <input\n class=\"lib-document-list-label-config-editor__input\"\n type=\"text\"\n [id]=\"id + '-fcn'\"\n placeholder=\"Pick one\"\n aria-label=\"Form control name\"\n [value]=\"draft.formControlName || ''\"\n (input)=\"formControlNameChange($event)\"\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n autoActiveFirstOption\n (optionSelected)=\"formControlSelected($event)\"\n >\n @for (option of filteredControlNames(); track option) {\n <mat-option [value]=\"option\">{{ option }}</mat-option>\n }\n </mat-autocomplete>\n\n <label class=\"lib-document-list-label-config-editor__field-label\" [attr.for]=\"id + '-name'\">\n Name\n </label>\n <input\n class=\"lib-document-list-label-config-editor__input\"\n type=\"text\"\n [id]=\"id + '-name'\"\n placeholder=\"Enter label name\"\n [value]=\"draft.label || ''\"\n (input)=\"nameChange($event)\"\n />\n\n <label class=\"lib-document-list-label-config-editor__field-label\" [id]=\"id + '-vt-label'\">\n Value type\n </label>\n <lib-mat-chip-list-editor\n [id]=\"id + '-vt'\"\n [errors]=\"[]\"\n [value]=\"draft.valueType\"\n [options]=\"valueTypes\"\n (valueChange)=\"valueTypeChanged($event)\"\n ></lib-mat-chip-list-editor>\n\n @if (reportTypes(); as types) {\n @if (types.length > 0) {\n <label class=\"lib-document-list-label-config-editor__field-label\" [id]=\"id + '-rt-label'\">\n Report types\n </label>\n <lib-mat-chip-list-editor\n [id]=\"id + '-rt'\"\n [errors]=\"[]\"\n [multiple]=\"true\"\n [value]=\"draft.reportType\"\n [options]=\"types\"\n (valueChange)=\"reportTypeChanged($event)\"\n ></lib-mat-chip-list-editor>\n }\n }\n\n <lib-mat-slider-toggle-editor\n [id]=\"id + '-hidden'\"\n label=\"Is hidden\"\n [value]=\"draft.isHidden || false\"\n [errors]=\"[]\"\n (valueChange)=\"isHiddenChanged(!!$event)\"\n ></lib-mat-slider-toggle-editor>\n </mat-card-content>\n\n <mat-card-actions class=\"lib-document-list-label-config-editor__actions\">\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n [disabled]=\"labelSaveDisabled()\"\n (click)=\"saveHeader()\"\n >\n Save header\n </button>\n <span class=\"lib-document-list-label-config-editor__spacer\"></span>\n <button mat-button color=\"warn\" type=\"button\" (click)=\"cancelEdit()\">Cancel</button>\n </mat-card-actions>\n </mat-card>\n} @else {\n <button\n mat-stroked-button\n color=\"primary\"\n type=\"button\"\n class=\"lib-document-list-label-config-editor__add\"\n [disabled]=\"disabled\"\n (click)=\"startNewLabel()\"\n >\n Add new column\n </button>\n}\n"],"names":["i1","i2","i3","i4","i5","i6","i7","i8"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-t-forms-document-list-label-config-editor.component-CR6EvgJO.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/document-list-label-config-editor/document-list-label-config-editor.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/document-list-label-config-editor/document-list-label-config-editor.component.html"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n computed,\n inject,\n output,\n signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { CdkDrag, CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';\nimport { Subject } from 'rxjs';\nimport {\n DocumentLitsLabelConfigInterfaceValueType,\n ElementTypes,\n InputDataTypes,\n InputPipeTypes,\n InputTypes,\n ReportTypes,\n} from 'ngx-t-forms-types';\nimport type {\n DocumentLitsLabelConfigInterface,\n ElementEditorInnerSectionElementInterface,\n FormColumnInputs,\n} from 'ngx-t-forms-types';\n\nimport type { IConfigElementError } from '../../t-dynamic-data-edit.component';\nimport { MatChipListEditorComponent } from '../mat-chip-list-editor/mat-chip-list-editor.component';\nimport { MatSliderToggleEditorComponent } from '../mat-slider-toggle-editor/mat-slider-toggle-editor.component';\nimport { EmptyStateComponent } from '../_shared/empty-state/empty-state.component';\n\n/** Picker chip option (label + value), as consumed by `lib-mat-chip-list-editor`. */\ninterface ChipOption {\n readonly label: string;\n readonly value: string;\n}\n\n/**\n * Working buffer for the label currently being added or edited. The three\n * distinct states of `labelInEdit` drive the editor UI:\n *\n * - `null` → not editing; the \"Add new column\" button is shown.\n * - `{}` (empty) → a fresh, not-yet-populated draft (the create form).\n * - populated draft → an existing or in-progress column being edited.\n */\ntype LabelDraft = Partial<DocumentLitsLabelConfigInterface>;\n\n/** Title-cases an enum key: `daysAgo` → `Days Ago`. */\nfunction humaniseKey(key: string): string {\n return key\n .replace(/([A-Z])/g, ' $1')\n .trim()\n .toLowerCase()\n .replace(/^\\w/, (c) => c.toUpperCase());\n}\n\n/** Derives a readable label from a camelCase control name: `taxRate` → `tax Rate`. */\nfunction controlNameToLabel(name: string): string {\n return name\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/([A-Z])([A-Z][a-z])/g, '$1 $2');\n}\n\n/**\n * Document-list label-configuration editor: builds the ordered list of column\n * label definitions (`DocumentLitsLabelConfigInterface[]`) used to render a\n * document list. Columns can be added, edited inline, removed, and reordered by\n * drag-and-drop.\n *\n * Implements `MatFormFieldControl<DocumentLitsLabelConfigInterface[]>`, so it\n * renders inside the parent's `<mat-form-field>` — `t-dynamic-data-edit` owns\n * the field label, hint, and validation errors; this component owns only the\n * column list and the add/edit form.\n *\n * NOTE: `MatFormFieldControl<T>` mandates plain mutable `value` / `disabled` /\n * `required` / `placeholder` / `id` members, `@Input()` decorators, the\n * `focused` / `touched` / `stateChanges` members, and the `useExisting`\n * provider. These are framework wiring, not defects — the CLAUDE.md bans on\n * `@Input()` / `useExisting` do not apply to MatFormFieldControl integration.\n * Genuinely-internal state (the in-edit draft, derived option lists) uses\n * `signal()` / `computed()`.\n */\n@Component({\n selector: 'lib-document-list-label-config-editor',\n imports: [\n MatListModule,\n MatTooltipModule,\n ClipboardModule,\n MatSliderToggleEditorComponent,\n MatChipListEditorComponent,\n MatFormFieldModule,\n MatButtonModule,\n MatAutocompleteModule,\n MatInputModule,\n MatIconModule,\n MatCardModule,\n CdkDropList,\n CdkDrag,\n EmptyStateComponent,\n ],\n templateUrl: './document-list-label-config-editor.component.html',\n styleUrl: './document-list-label-config-editor.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n 'class': 'lib-document-list-label-config-editor',\n '[id]': 'id',\n '[attr.aria-describedby]': 'describedBy',\n },\n providers: [\n { provide: MatFormFieldControl, useExisting: DocumentListLabelConfigEditorComponent },\n ],\n})\nexport class DocumentListLabelConfigEditorComponent\n implements MatFormFieldControl<Array<DocumentLitsLabelConfigInterface>>\n{\n static nextId = 0;\n\n /** Emits whenever a piece of `MatFormFieldControl` state changes. */\n readonly stateChanges = new Subject<void>();\n readonly controlType = 'lib-document-list-label-config-editor';\n\n id = `lib-document-list-label-config-editor-${DocumentListLabelConfigEditorComponent.nextId++}`;\n placeholder = '';\n focused = false;\n touched = false;\n describedBy = '';\n autofilled = false;\n userAriaDescribedBy: string | undefined = undefined;\n disableAutomaticLabeling: boolean | undefined = undefined;\n\n readonly ngControl = inject(NgControl, { self: true, optional: true });\n\n /** Validation errors surfaced by the parent for error-state derivation. */\n @Input() errors: IConfigElementError[] | undefined = [];\n /** Available form inputs used to auto-derive a column's value type. */\n @Input() formInputs: Array<FormColumnInputs> = [];\n /** Editor configuration supplied by the parent (placeholder/required/etc.). */\n @Input() editorConfig: ElementEditorInnerSectionElementInterface | undefined = undefined;\n /** Candidate control names offered in the form-control autocomplete. */\n @Input() mapToData: string[] | undefined = [];\n\n /** Emits the column list whenever it changes. */\n readonly valueChange = output<Array<DocumentLitsLabelConfigInterface>>();\n\n #value: Array<DocumentLitsLabelConfigInterface> = [];\n /** Current column configuration list. */\n @Input()\n get value(): Array<DocumentLitsLabelConfigInterface> {\n return this.#value;\n }\n set value(value: Array<DocumentLitsLabelConfigInterface>) {\n this.#value = value ?? [];\n this.stateChanges.next();\n }\n\n #disabled = false;\n /** Whether the editor is inert. */\n @Input()\n get disabled(): boolean {\n return this.#disabled;\n }\n set disabled(value: boolean) {\n this.#disabled = value;\n this.stateChanges.next();\n }\n\n #required = false;\n /** Whether at least one column is required. */\n @Input()\n get required(): boolean {\n return this.#required;\n }\n set required(value: boolean) {\n this.#required = value;\n this.stateChanges.next();\n }\n\n // ---- internal signal state ---------------------------------------------\n\n /** The label draft currently being added/edited (see {@link LabelDraft}). */\n protected readonly labelInEdit = signal<LabelDraft | null>(null);\n\n /** Value-type chip options (all enum members, humanised). */\n protected readonly valueTypes: ChipOption[] = Object.keys(\n DocumentLitsLabelConfigInterfaceValueType,\n ).map((key) => ({ label: humaniseKey(key), value: key }));\n\n /**\n * Autocomplete options filtered by the draft's `formControlName`. Empty term\n * shows the full list; otherwise matches a substring or a word-prefix.\n */\n protected readonly filteredControlNames = computed<readonly string[]>(() => {\n const source = this.mapToData ?? [];\n const term = (this.labelInEdit()?.formControlName ?? '').trim().toLowerCase();\n if (!term) {\n return source;\n }\n return source.filter((option) => {\n const text = option.toLowerCase();\n if (text.includes(term)) {\n return true;\n }\n return text.split(/\\s+/).some((word) => word.startsWith(term));\n });\n });\n\n /**\n * Report-type chip options derived from the draft's `valueType`. `undefined`\n * when no value type is chosen, which hides the report-types section.\n *\n * - currency / number → aggregation reports (avg, highest, lowest, sum)\n * - string → category report\n */\n protected readonly reportTypes = computed<ChipOption[] | undefined>(() => {\n const valueType = this.labelInEdit()?.valueType;\n if (!valueType) {\n return undefined;\n }\n return Object.values(ReportTypes)\n .filter((reportType) => {\n if (\n valueType === DocumentLitsLabelConfigInterfaceValueType.currency ||\n valueType === DocumentLitsLabelConfigInterfaceValueType.number\n ) {\n return (\n reportType === ReportTypes.Avg ||\n reportType === ReportTypes.Highest ||\n reportType === ReportTypes.Lowest ||\n reportType === ReportTypes.Sum\n );\n }\n if (valueType === DocumentLitsLabelConfigInterfaceValueType.string) {\n return reportType === ReportTypes.Category;\n }\n return false;\n })\n .map((key) => ({ label: humaniseKey(key), value: key }));\n });\n\n /** Whether the save action is blocked (draft missing required fields). */\n protected readonly labelSaveDisabled = computed<boolean>(() => {\n const draft = this.labelInEdit();\n return !draft || !draft.label || !draft.formControlName || !draft.valueType;\n });\n\n // ---- MatFormFieldControl getters (read by the framework) ----------------\n\n get empty(): boolean {\n return this.#value.length === 0;\n }\n\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n get errorState(): boolean {\n const requiredUnset = this.empty && this.#required;\n const ngControlError = this.ngControl?.errors != null;\n const externalError = (this.errors?.length ?? 0) > 0 && this.touched;\n return requiredUnset || ngControlError || externalError;\n }\n\n onTouched: () => void = () => {};\n\n setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n this.stateChanges.next();\n }\n\n onContainerClick(): void {\n this.markAsTouched();\n if (!this.focused) {\n this.focused = true;\n }\n this.stateChanges.next();\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.touched = true;\n this.onTouched();\n this.stateChanges.next();\n }\n }\n\n // ---- editing ------------------------------------------------------------\n\n /** Begin a fresh column draft. */\n protected startNewLabel(): void {\n this.labelInEdit.set({});\n }\n\n /** Discard the current draft. */\n protected cancelEdit(): void {\n this.labelInEdit.set(null);\n }\n\n /** Update the draft's display label from the name input. */\n protected nameChange(event: Event): void {\n const label = (event.target as HTMLInputElement | null)?.value ?? '';\n this.labelInEdit.update((draft) => ({ ...draft, label }));\n }\n\n /**\n * Update the draft's form control name (free-text typing). Re-derives the\n * value type from the matching form input, if any.\n */\n protected formControlNameChange(event: Event): void {\n const formControlName = (event.target as HTMLInputElement | null)?.value ?? '';\n const input = this.formInputs.find((i) => i.formControlName === formControlName);\n this.labelInEdit.update((draft) => ({\n ...draft,\n formControlName,\n valueType: this.#valueTypeFromInput(input),\n }));\n }\n\n /** Apply an autocomplete selection, defaulting the label from the name. */\n protected formControlSelected(event: MatAutocompleteSelectedEvent): void {\n const formControlName = String(event.option.value);\n this.labelInEdit.update((draft) => ({\n ...draft,\n formControlName,\n label: draft?.label || controlNameToLabel(formControlName),\n }));\n }\n\n /** Set the draft's value type from the chip selection. */\n protected valueTypeChanged(value: unknown): void {\n this.labelInEdit.update((draft) => ({\n ...draft,\n valueType: value as DocumentLitsLabelConfigInterfaceValueType,\n }));\n }\n\n /**\n * Set the draft's report types. The chip editor is multi-select, so it emits\n * an array; a single value is normalised into one.\n */\n protected reportTypeChanged(value: unknown): void {\n const reportType = Array.isArray(value)\n ? (value as ReportTypes[])\n : value == null\n ? []\n : [value as ReportTypes];\n this.labelInEdit.update((draft) => ({ ...draft, reportType }));\n }\n\n /** Toggle the draft's hidden flag. */\n protected isHiddenChanged(isHidden: boolean): void {\n this.labelInEdit.update((draft) => ({ ...draft, isHidden }));\n }\n\n /** Commit the draft into the list (replacing a matching column, or appending). */\n protected saveHeader(): void {\n const draft = this.labelInEdit();\n if (!draft) {\n return;\n }\n const next = [...this.#value];\n const index = next.findIndex((item) => item.formControlName === draft.formControlName);\n const column = draft as DocumentLitsLabelConfigInterface;\n if (index !== -1) {\n next[index] = column;\n } else {\n next.push(column);\n }\n this.#commit(next);\n this.labelInEdit.set(null);\n }\n\n /** Remove a column by its form control name. */\n protected removeLabel(label: DocumentLitsLabelConfigInterface): void {\n this.#commit(this.#value.filter((item) => item.formControlName !== label.formControlName));\n }\n\n /** Reorder the list after a drag-and-drop. */\n protected drop(event: CdkDragDrop<DocumentLitsLabelConfigInterface[]>): void {\n const { previousIndex, currentIndex } = event;\n const moved = this.#value.at(previousIndex);\n if (moved === undefined || previousIndex === currentIndex) {\n return;\n }\n const next = [...this.#value];\n next.splice(previousIndex, 1);\n next.splice(currentIndex, 0, moved);\n this.#commit(next);\n }\n\n /** Write a new list value, emit the change, and mark the control touched. */\n #commit(next: Array<DocumentLitsLabelConfigInterface>): void {\n this.value = next;\n this.valueChange.emit(next);\n this.markAsTouched();\n }\n\n /** Derive the value type from a form input's data/element type and pipe. */\n #valueTypeFromInput(\n input: FormColumnInputs | undefined,\n ): DocumentLitsLabelConfigInterfaceValueType {\n if (!input) {\n return DocumentLitsLabelConfigInterfaceValueType.string;\n }\n if (\n input.dataType === InputDataTypes.Number ||\n input.type === InputTypes.Number ||\n input.pipe?.pipeType === InputPipeTypes.Number\n ) {\n return DocumentLitsLabelConfigInterfaceValueType.number;\n }\n if (input.pipe?.pipeType === InputPipeTypes.Currency) {\n return DocumentLitsLabelConfigInterfaceValueType.currency;\n }\n if (input.dataType === InputDataTypes.Boolean || input.element === ElementTypes.Toggle) {\n return DocumentLitsLabelConfigInterfaceValueType.boolean;\n }\n return DocumentLitsLabelConfigInterfaceValueType.string;\n }\n}\n","<mat-nav-list\n cdkDropList\n [cdkDropListData]=\"value\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"lib-document-list-label-config-editor__list\"\n>\n @if (value.length === 0) {\n <lib-empty-state\n icon=\"view_column\"\n message=\"No columns configured. Add one below.\"\n ></lib-empty-state>\n } @else {\n @for (label of value; track label.formControlName) {\n <mat-list-item\n cdkDrag\n class=\"lib-document-list-label-config-editor__item\"\n [matTooltip]=\"'Click to copy ' + label.formControlName\"\n [cdkCopyToClipboard]=\"label.formControlName\"\n matTooltipPosition=\"before\"\n >\n <mat-icon matListItemIcon>view_column</mat-icon>\n\n <div matListItemTitle class=\"lib-document-list-label-config-editor__title\">\n <span class=\"lib-document-list-label-config-editor__label\">{{ label.label }}</span>\n <span class=\"lib-document-list-label-config-editor__meta\">\n <code>{{ label.formControlName }}</code> · {{ label.valueType }}\n </span>\n </div>\n\n <button\n matListItemMeta\n mat-icon-button\n type=\"button\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'Remove ' + label.label\"\n (click)=\"removeLabel(label)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </mat-list-item>\n }\n }\n</mat-nav-list>\n\n@if (labelInEdit(); as draft) {\n <mat-card appearance=\"outlined\" class=\"lib-document-list-label-config-editor__form\">\n <mat-card-content class=\"lib-document-list-label-config-editor__fields\">\n <label class=\"lib-document-list-label-config-editor__field-label\" [attr.for]=\"id + '-fcn'\">\n Form control name\n </label>\n <input\n class=\"lib-document-list-label-config-editor__input\"\n type=\"text\"\n [id]=\"id + '-fcn'\"\n placeholder=\"Pick one\"\n aria-label=\"Form control name\"\n [value]=\"draft.formControlName || ''\"\n (input)=\"formControlNameChange($event)\"\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n autoActiveFirstOption\n (optionSelected)=\"formControlSelected($event)\"\n >\n @for (option of filteredControlNames(); track option) {\n <mat-option [value]=\"option\">{{ option }}</mat-option>\n }\n </mat-autocomplete>\n\n <label class=\"lib-document-list-label-config-editor__field-label\" [attr.for]=\"id + '-name'\">\n Name\n </label>\n <input\n class=\"lib-document-list-label-config-editor__input\"\n type=\"text\"\n [id]=\"id + '-name'\"\n placeholder=\"Enter label name\"\n [value]=\"draft.label || ''\"\n (input)=\"nameChange($event)\"\n />\n\n <label class=\"lib-document-list-label-config-editor__field-label\" [id]=\"id + '-vt-label'\">\n Value type\n </label>\n <lib-mat-chip-list-editor\n [id]=\"id + '-vt'\"\n [errors]=\"[]\"\n [value]=\"draft.valueType\"\n [options]=\"valueTypes\"\n (valueChange)=\"valueTypeChanged($event)\"\n ></lib-mat-chip-list-editor>\n\n @if (reportTypes(); as types) {\n @if (types.length > 0) {\n <label class=\"lib-document-list-label-config-editor__field-label\" [id]=\"id + '-rt-label'\">\n Report types\n </label>\n <lib-mat-chip-list-editor\n [id]=\"id + '-rt'\"\n [errors]=\"[]\"\n [multiple]=\"true\"\n [value]=\"draft.reportType\"\n [options]=\"types\"\n (valueChange)=\"reportTypeChanged($event)\"\n ></lib-mat-chip-list-editor>\n }\n }\n\n <lib-mat-slider-toggle-editor\n [id]=\"id + '-hidden'\"\n label=\"Is hidden\"\n [value]=\"draft.isHidden || false\"\n [errors]=\"[]\"\n (valueChange)=\"isHiddenChanged(!!$event)\"\n ></lib-mat-slider-toggle-editor>\n </mat-card-content>\n\n <mat-card-actions class=\"lib-document-list-label-config-editor__actions\">\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n [disabled]=\"labelSaveDisabled()\"\n (click)=\"saveHeader()\"\n >\n Save header\n </button>\n <span class=\"lib-document-list-label-config-editor__spacer\"></span>\n <button mat-button color=\"warn\" type=\"button\" (click)=\"cancelEdit()\">Cancel</button>\n </mat-card-actions>\n </mat-card>\n} @else {\n <button\n mat-stroked-button\n color=\"primary\"\n type=\"button\"\n class=\"lib-document-list-label-config-editor__add\"\n [disabled]=\"disabled\"\n (click)=\"startNewLabel()\"\n >\n Add new column\n </button>\n}\n"],"names":["i1","i2","i3","i4","i5","i6","i7","i8"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import * as i1$1 from '@angular/material/button';
|
|
|
10
10
|
import { MatButtonModule } from '@angular/material/button';
|
|
11
11
|
import * as i5 from '@angular/material/tooltip';
|
|
12
12
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
13
|
-
import { N as NGX_T_FORMS_CONFIG_TOKEN, B as BaseCustomInput, _ as _isEqual,
|
|
13
|
+
import { N as NGX_T_FORMS_CONFIG_TOKEN, B as BaseCustomInput, _ as _isEqual, C as returnMappedPathValue, G as FormatDataPipe, q as getInputErrorMessage, u as TFormInputStatusComponent } from './ngx-t-forms-ngx-t-forms-C2G8_WQk.mjs';
|
|
14
14
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
15
15
|
import { of, throwError, debounceTime, map as map$1, distinctUntilChanged, tap, take as take$1, catchError as catchError$1, finalize } from 'rxjs';
|
|
16
16
|
import { take, map, catchError } from 'rxjs/operators';
|
|
@@ -701,4 +701,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
|
|
|
701
701
|
}], propDecorators: { inputConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputConfig", required: true }] }], formGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "formGroup", required: true }] }], editorMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "editorMode", required: false }] }], formBuilderFunctions: [{ type: i0.Input, args: [{ isSignal: true, alias: "formBuilderFunctions", required: false }] }], reload: [{ type: i0.Output, args: ["reload"] }] } });
|
|
702
702
|
|
|
703
703
|
export { DocumentPickerComponent };
|
|
704
|
-
//# sourceMappingURL=ngx-t-forms-document-picker.component-
|
|
704
|
+
//# sourceMappingURL=ngx-t-forms-document-picker.component-BThdRFec.mjs.map
|