{"version":3,"sources":["Themes/Default/Content/ts/Shared/Inputs/DateOfBirth/dob-datepicker.ts"],"names":[],"mappings":"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","file":"dob-datepicker.js","sourcesContent":["import * as ko from \"knockout\";\nimport * as _ from \"underscore\";\nimport * as moment from \"moment\";\nimport * as localisationHelper from \"localisationHelper\";\n\n// Types\nimport Moment = moment.Moment;\n\n// Helpers\nimport \"knockoutCustomBindings\";\n\n// Models\nimport { DateTimeConfiguration } from \"Content/ts/Models/Shared/DateTime/dateTimePickerConfiguration\";\n\n// Services\nimport { ValidationService } from \"Content/ts/Shared/Services/Validation/validationService\";\nimport { ConfigureControlService } from \"Content/ts/Shared/Inputs/DateOfBirth/Services/configureControlService\";\n\n// Components\nimport \"Content/ts/shared/Controls/DateTime/datetime-picker\";\n\nexport const Deps = {\n LocalisationHelper: localisationHelper\n}\n\nexport interface IDateBirthPicker {\n Value: KnockoutObservable; // Required\n\n MinimumAgeDate: Moment | KnockoutObservable; // Optional\n MaximumAgeDate: Moment | KnockoutObservable; // Optional\n StartDate: Moment | KnockoutObservable; // Optional\n ValidationFields: KnockoutObservable[]; // Optional\n IsRequired: boolean | KnockoutComputed; // Optional\n IsReadonly: boolean | KnockoutComputed; // Optional\n DisplayCondition: boolean | KnockoutComputed; // Optional\n ErrorMessage: string; // Optional\n}\n\nexport default class DateBirthPicker {\n CustomMessages: {\n DateOfBirthValidation: string;\n };\n\n MinimumAgeDate: Moment | KnockoutObservable;\n MaximumAgeDate: Moment | KnockoutObservable;\n StartDate: Moment | KnockoutObservable;\n DatePickerConfiguration: DateTimeConfiguration;\n\n IsRequired: boolean | KnockoutComputed;\n IsReadonly: boolean | KnockoutComputed;\n DisplayCondition: boolean | KnockoutComputed;\n ErrorMessage: string;\n\n Value: KnockoutObservable;\n ValidationFields: KnockoutObservable[];\n\n constructor(params: IDateBirthPicker) {\n // Component Validation\n if (!params.Value) {\n throw new Error(\"Please ensure all required properties have been passed to 'dob-datepicker' component\");\n }\n\n // Critical Initialisation\n this.RetrieveCustomMessages();\n\n // Provided Component Properties\n this.Value = params.Value;\n this.IsRequired = params.IsRequired || false;\n this.IsReadonly = params.IsReadonly || false;\n this.DisplayCondition = params.DisplayCondition != null ? params.DisplayCondition : true;\n this.ValidationFields = params.ValidationFields || [];\n this.MinimumAgeDate = params.MinimumAgeDate || moment().startOf(\"day\"); // Purpose: Shouldn't allow the user to select a date which is in the future\n this.MaximumAgeDate = params.MaximumAgeDate || moment(\"1900-01-01T00:00:00\").startOf(\"day\");\n this.StartDate = params.StartDate || ko.observable(moment().add(-30, 'y'));\n this.ErrorMessage = params.ErrorMessage;\n\n // Standard Component Properties\n this.DatePickerConfiguration = ConfigureControlService.ConfigureDatePickerConfiguration(this, params);\n\n // Initialisation Methods\n this.SetupValidation();\n }\n\n private RetrieveCustomMessages(): void {\n this.CustomMessages = {\n DateOfBirthValidation: Deps.LocalisationHelper.getString(\"JoinResources\", \"DOB_OutsideValidRange\")\n };\n };\n\n private SetupValidation(): void {\n ValidationService.AddValidationRule(this.Value, this.ValidationFields, {\r\n validation: [{\n validator: (value?: Moment) => {\n const minimumAge = ko.unwrap(this.MinimumAgeDate),\n maximumAge = ko.unwrap(this.MaximumAgeDate);\n \n if (!ko.unwrap(this.IsRequired) && !value) {\n return true;\r\n }\n\n return !ko.unwrap(this.DisplayCondition) || (value && value.isBetween(maximumAge, minimumAge, null, \"[]\"));\n },\n message: (): string => {\n if (this.ErrorMessage) {\n return this.ErrorMessage;\r\n }\n\n return this.CustomMessages.DateOfBirthValidation.replace(\"{0}\", Deps.LocalisationHelper.formatDate(ko.unwrap(this.MinimumAgeDate)))\n .replace(\"{1}\", Deps.LocalisationHelper.formatDate(ko.unwrap(this.MaximumAgeDate)));\r\n }\n }]\r\n });\r\n };\n\n private removeValidation() {\r\n ValidationService.RemoveValidationRule(this.Value, this.ValidationFields);\r\n };\n\n public dispose() {\n this.removeValidation();\n };\n};\n\nconst componentName = \"dob-datepicker\";\nko.components.unregister(componentName);\nko.components.register(componentName, {\n viewModel: DateBirthPicker,\n template: { require: `text!Content/ts/Shared/Inputs/DateOfBirth/${componentName}.html` }\n});"]}