{"version":3,"sources":["Themes/Default/Content/ts/Shared/Inputs/EthnicOrigin/ethnic-origin-select.ts"],"names":[],"mappings":"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","file":"ethnic-origin-select.js","sourcesContent":["import * as ko from \"knockout\";\nimport * as localisationHelper from \"localisationHelper\";\nimport { EthnicOriginService } from \"Content/ts/Shared/Inputs/EthnicOrigin/ethnicOriginService\";\n\nimport { SelectDropdownOptions } from \"Content/ts/Models/Controls/inputSelectOptions\";\nimport { IInputSelect } from \"Content/ts/Shared/Inputs/Select/input-select\";\n\nimport 'Content/ts/Shared/Inputs/Select/input-select';\n\nexport const Deps = {\n LocalisationHelper: localisationHelper,\n}\n\ntype booleanType = boolean | KnockoutObservable;\n\nexport default class EthnicOriginSelect {\n loading: KnockoutObservable;\n options: KnockoutObservableArray;\n value: KnockoutObservable;\n validationFields: KnockoutObservable[];\n text: string | KnockoutObservable;\n isDisabled: booleanType;\n isReadOnly: booleanType;\n isRequired: booleanType;\n isVisible: KnockoutComputed;\n placeholderMessage: string;\n\n constructor(params: IInputSelect) {\n this.loading = ko.observable(true);\n this.value = params.Value;\n this.text = params.Text || localisationHelper.getString(\"AccountResources\", \"Register_EthnicOrigin\");\n this.isRequired = params.IsRequired || false;\n this.isDisabled = params.IsDisabled || false;\n this.isReadOnly = params.IsReadOnly || false;\n this.options = ko.observableArray([]);\n this.placeholderMessage = params.PlaceholderMessage\n\n this.validationFields = params.ValidationFields || [];\n var loadingSub = this.ensureValueIsPreselected();\n\n EthnicOriginService.RetrieveEthnicOrigins().then((data) => {\n this.options(data.map((value): SelectDropdownOptions => {\n return {\r\n Id: value.Id,\r\n Text: value.Description\r\n }\r\n }));\n }).finally(() => {\n if (loadingSub)\n {\n loadingSub.dispose();\r\n }\r\n //The below is required in order to clear the initial validation error that is shown when the options are loaded if isRequired = true\r\n //Bad UX to show an error before the user has even had a chance to enter a value.\r\n if (this.value.isModified && this.value.isModified()) {\r\n this.value.isModified(false);\r\n }\n this.loading(false);\r\n });\n\n this.isVisible = ko.pureComputed(() => {\n return this.options().length > 0;\r\n });\n }\n\r\n private ensureValueIsPreselected(): KnockoutSubscription {\r\n //Due to a bug with knockout, if the value is set before the list of options finishes loading, then without the below code, it does not get pre-selected.\r\n //This is because when the control is drawn, if the value to select is not in the list of options, it will instead be set to null.\r\n //This code compensates for that by adding the option to be pre-selected into the options list whilst the list is still loading.\r\n //When the options finish loading, the UI will then respect the pre-selected value.\r\n\r\n //We return the subscription so that we can dispose of it when the options list has finished loading,\r\n // otherwise anytime an option was selected, it would re-add it to the list!\r\n var value = this.value();\r\n if (value !== null && value !== undefined) {\r\n this.options.push({ Id: value, Text: \"\" });\r\n }\r\n else {\r\n return this.value.subscribe((newVal) => {\r\n if (this.loading() && newVal !== null && newVal !== undefined) {\r\n this.options.push({ Id: newVal, Text: \"\" });\r\n }\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n}\n\nconst componentName = \"ethnic-origin-select\";\nko.components.unregister(componentName);\nko.components.register(componentName, {\n viewModel: EthnicOriginSelect,\n template: { require: `text!Content/ts/Shared/Inputs/EthnicOrigin/${componentName}.html` }\n});"]}