{"version":3,"file":"default-src_app_components_controls_address-info_address-info_module_ts-src_app_directives_zi-0b1aaf.js","mappings":"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","sources":["./src/app/components/controls/address-info/address-info.component.ts","./src/app/components/controls/address-info/address-info.component.html","./src/app/components/controls/address-info/address-info.module.ts","./src/app/directives/zip-code/zip-code.directive.ts"],"sourcesContent":["import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormControl, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport {\n Dropdown,\n DropdownMenus,\n} from 'src/app/services/dropdowns/dropdowns.model';\nimport { DropdownsService } from 'src/app/services/dropdowns/dropdowns.service';\n\n/**\n * Contains the following {FormControl}s:\n * * Address\n * * AptNumber *\n * * POBox *\n * * City\n * * State\n * * ZipCode\n *\n * (*) Denotes a control that can be disabled.\n *\n * The parent {FormGroup} can disable unneeded controls. Disabling will hide the controls from the UI.\n *\n * ```typescript\n * this.formBuilder.group({\n * POBox: [{ value: '', disabled: true }]\n * });\n * ```\n */\n@Component({\n selector: 'app-address-info',\n templateUrl: './address-info.component.html',\n styleUrls: ['./address-info.component.scss'],\n})\nexport class AddressInfoComponent implements OnInit, OnDestroy {\n @Input() controls: {\n [key: string]: AbstractControl;\n } = {};\n\n dropdownMenus: DropdownMenus | null = null;\n states: Array = [];\n\n private subscriptions: Array = [];\n\n constructor(private dropdownsService: DropdownsService) {}\n\n ngOnInit(): void {\n this.subscriptions.push(\n this.dropdownsService.dropdownMenus.subscribe(\n (data: DropdownMenus | null) => {\n if (data) {\n this.dropdownMenus = { ...data };\n this.states = [...this.dropdownMenus.states];\n }\n }\n )\n );\n }\n\n ngOnDestroy(): void {\n if (this.subscriptions.length > 0) {\n this.subscriptions.forEach((sub) => {\n sub.unsubscribe();\n });\n }\n }\n\n getFormControl(key: string): FormControl {\n return this.controls[key] as FormControl;\n }\n\n controlIsRequired(key: string): boolean {\n if (\n this.controls[key] &&\n this.controls[key].hasValidator(Validators.required)\n ) {\n return true;\n }\n\n return false;\n }\n\n controlIsDisabled(key: string): boolean {\n if (this.controls[key]) {\n return this.controls[key].disabled;\n }\n\n return false;\n }\n}\n","
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { AddressInfoComponent } from './address-info.component';\n\n@NgModule({\n declarations: [AddressInfoComponent],\n imports: [CommonModule, ReactiveFormsModule],\n exports: [AddressInfoComponent],\n})\nexport class AddressInfoModule {}\n","import { Directive, Input } from '@angular/core';\nimport {\n AbstractControl,\n NG_VALIDATORS,\n ValidationErrors,\n} from '@angular/forms';\n\n/**\n * Zip code must be 5 characters in length and all numbers.\n *\n * @usageNotes\n * Can be used with reactive forms and with template-driven forms.\n *\n * @selector appZipCode\n * @returns\n * ```javascript\n * { zipInvalid: true } | null\n * ```\n */\n@Directive({\n selector: '[appZipCode]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: ZipCodeDirective,\n multi: true,\n },\n ],\n})\nexport class ZipCodeDirective {\n @Input('appZipCode') zipCode = '';\n\n constructor() {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this.zipCode ? zipCodeValidator(control) : null;\n }\n}\n\nexport const ZIP_VALID_REGEX = /^(\\d{5})$/;\n\n/**\n * Zip code must be 5 characters in length and all numbers.\n *\n * @returns\n * ```javascript\n * { zipInvalid: true } | null\n * ```\n */\nexport const zipCodeValidator = (\n control: AbstractControl\n): ValidationErrors | null => {\n const value = control.value;\n const zipValid = ZIP_VALID_REGEX.test(value);\n\n return !zipValid ? { zipInvalid: true } : null;\n};\n"],"names":[],"sourceRoot":"webpack:///"}