{"version":3,"sources":["Themes/Default/Content/ts/Shared/Address/country-selector.ts"],"names":[],"mappings":"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","file":"country-selector.js","sourcesContent":["import * as ko from 'knockout';\nimport * as _ from 'underscore';\nimport * as localisationHelper from 'localisationHelper';\n\n// uidExtender and bindings\nimport \"@legend/knockout/binding/id\";\r\nimport \"@legend/knockout/extender/uid\";\nimport type { ObservableWithUid } from \"@legend/knockout/extender/uid\";\n\n// Services\nimport { ValidationService } from \"Content/ts/Shared/Services/Validation/validationService\";\nimport { CountryResponseModel } from 'Content/ts/Models/Shared/AddressModels';\nimport { DefaultSelectTwoModel } from \"Content/ts/Models/Shared/SelectTwo/selectTwoModels\";\nimport { CountryService } from \"Content/ts/Shared/Services/Country/countryService\";\n\n// Components\nimport \"Content/ts/Shared/BootstrapAlerts/AlertValidation/alert-validation\";\n\nexport const Deps = {\n ValidationService: ValidationService\n}\n\nexport interface ICountrySelectorParams {\n SelectedCountry: ObservableWithUid;\n IsRequired: boolean | KnockoutObservable; // Optional\n ValidationFields: KnockoutObservable[]; // Conditional - Some components may need this in order to function\n IsReadOnly: boolean | KnockoutObservable;\n}\n\nexport default class CountrySelectorViewModel {\n isLoading: KnockoutObservable;\n countries: KnockoutObservableArray;\n selectedCountry: ObservableWithUid;\n isRequired: boolean | KnockoutObservable;\n validationFields: KnockoutObservable[];\n IsReadOnly: boolean | KnockoutObservable;\n\n customMessages: {\n CountryLabelText: string;\n SelectCountryText: string;\n LoadingCountries: string;\n CountryValidationText: string;\n }\n\n constructor(params: ICountrySelectorParams) {\n this.isLoading = ko.observable(false);\n this.countries = ko.observableArray([]);\n\n this.selectedCountry = params.SelectedCountry;\n this.isRequired = params.IsRequired || false;\n this.IsReadOnly = params.IsReadOnly || false;\n this.validationFields = params.ValidationFields || [];\n\n this.selectedCountry.extend({ uid: 'CountrySelector' });\n\n this.getCustomMessages();\n this.setupValidation();\n this.createSubscriptions();\n\n this.getCountries();\n }\n\n private setupValidation(): void {\n Deps.ValidationService.AddValidationRule(this.selectedCountry, this.validationFields, {\n required: {\n params: ko.unwrap(this.isRequired),\n message: this.customMessages.CountryValidationText\n },\n validation: {\n validator: (value: string) => {\r\n return this.countries().find(c => c.text === value);\r\n },\r\n message: this.customMessages.CountryValidationText,\r\n onlyIf: () => {\r\n return ko.unwrap(this.isRequired) && !ko.unwrap(this.IsReadOnly);\r\n }\r\n }\n });\n };\n\n getCustomMessages() {\n this.customMessages = {\n CountryLabelText: localisationHelper.getString(\"AccountResources\", \"Register_Country\"),\n SelectCountryText: localisationHelper.getString(\"AccountResources\", \"Register_SelectCountry\"),\n LoadingCountries: localisationHelper.getString(\"GenericResources\", \"LoadingCountries\"),\n CountryValidationText: localisationHelper.getString(\"AccountResources\", \"Register_Validation_CountryRequired\")\n }\n };\n\n getCountries = () => {\n this.isLoading(true);\n return CountryService.GetCountries()\n .then((response: CountryResponseModel[]) => {\n this.updateCountries(response.map(c => { id: c.Name, text: c.Name }));\n this.isLoading(false);\n });\n };\n\n createSubscriptions = () => {\n this.selectedCountry.subscribe((newVal) => {\n if (newVal) {\n this.updateCountries();\n }\n });\n };\n\n updateCountries(countries: DefaultSelectTwoModel[] = null) {\n countries = countries || this.countries();\n if (this.selectedCountry()) {\n var selectedCountry = countries.find(c => c.text == this.selectedCountry());\n if (selectedCountry) {\n this.countries().filter(c => c.selected).forEach(c => c.selected = false);\n selectedCountry.selected = true;\n }\n }\n\n this.countries(countries);\n }\n\n dispose() {\r\n Deps.ValidationService.RemoveValidationRule(this.selectedCountry, this.validationFields);\r\n delete this.selectedCountry.uid;\r\n }\n}\n\nconst componentName = \"country-selector\";\nko.components.unregister(componentName);\nko.components.register(componentName, {\n viewModel: CountrySelectorViewModel,\n template: { require: `text!/Themes/Default/Content/ts/Shared/Address/${componentName}.html` }\n});"]}