{"version":3,"sources":["Themes/Default/Content/ts/Shared/Inputs/inputs-base.ts"],"names":[],"mappings":"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","file":"inputs-base.js","sourcesContent":["import * as ko from \"knockout\";\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// Helpers\nimport \"readOnlyDisabled\";\nimport \"knockout.validation\";\nimport \"knockoutCustomBindings\";\nimport \"tooltipPopoverBindings\";\n\n// Services\nimport { ValidationService } from \"Content/ts/Shared/Services/Validation/validationService\";\n\n// Components\nimport \"Content/ts/Shared/BootstrapAlerts/AlertValidation/alert-validation\";\r\nimport { InputsBaseValidationMessages } from \"Content/ts/Shared/Inputs/InputsBaseValidationMessages\";\r\n\r\nexport interface IInputsBase {\n Value: ObservableWithUid; // Required\n\n MaxLength: number; // Optional\n IsDisabled: boolean | KnockoutObservable; // Optional\n IsRequired: boolean | KnockoutObservable; // Optional\n IsReadOnly: boolean | KnockoutObservable; // Optional\n TooltipMessage: string | KnockoutObservable; // Optional\n OnFocus: () => void;\n OnChange: (value?: any) => void; // Optional\n\n ValidationFields: KnockoutObservable[]; // Conditional - Some components may need this in order to function\n Text: string | KnockoutObservable; // Conditional - Some components may need this in order to function\n Placeholder: string | KnockoutObservable; // Conditional - Some components may need this in order to function\n\n AriaDescribedById: string | KnockoutObservable;\n\n ValidationMessages: InputsBaseValidationMessages;\n}\n\nexport default class InputsBase {\n value: ObservableWithUid;\n validationFields: KnockoutObservable[];\n maxLength: number;\n text: string | KnockoutObservable;\n Placeholder: string | KnockoutObservable;\n IsDisabled: boolean | KnockoutObservable;\n IsReadOnly: boolean | KnockoutObservable;\n isRequired: boolean | KnockoutObservable;\n TooltipMessage: string | KnockoutObservable;\n\n onFocus: () => void;\n onChange: (value?: any) => void | Promise;\n\n HasTooltipMessage: KnockoutComputed;\n\n ariaDescribedById: string | KnockoutObservable;\r\n\r\n ValidationMessages: InputsBaseValidationMessages;\r\n\n subscriptions: KnockoutSubscription[];\n constructor(params: IInputsBase) {\n // Provided Component Properties\n this.text = params.Text;\n this.value = params.Value;\n this.maxLength = params.MaxLength;\n this.Placeholder = params.Placeholder;\n this.TooltipMessage = params.TooltipMessage;\n this.isRequired = params.IsRequired || false;\n this.IsDisabled = params.IsDisabled || false;\n this.IsReadOnly = params.IsReadOnly || false;\n this.subscriptions = [];\n this.ariaDescribedById = params.AriaDescribedById || \"\";\n\n this.onFocus = params.OnFocus || function (): void { };\n this.onChange = params.OnChange || function (): void { };\n\n this.validationFields = params.ValidationFields || [];\n\n // if observable doesn't already have uid add one using target class name as the prefix\n if (!this.value.uid) {\n this.value.extend({ uid: new.target.name });\n }\n\n // Initialisation Methods\n this.ComputedMethods();\n this.SetupValidation(params.ValidationMessages);\n this.SetupSubscriptions();\n }\n\n private SetupSubscriptions() {\n this.subscriptions.push(\n this.value.subscribe(() => {\r\n this.HandleChange();\r\n }));\r\n }\n\n protected HandleChange() {\n this.onChange(this.value());\r\n }\n\n private ComputedMethods(): void {\n this.HasTooltipMessage = ko.pureComputed(() => {\n return this.TooltipMessage != null && this.TooltipMessage != undefined;\n });\n }\n\n protected SetupValidation(validationMsgs: InputsBaseValidationMessages): void {\n const requiredValidationMsg = validationMsgs?.Required\n || localisationHelper.getString(\"ValidationMessageResources\", \"FieldIsRequired\")\n .replace(\"{name}\", ko.unwrap(this.text));\n\n ValidationService.AddValidationRule(this.value, this.validationFields, {\n required: {\n params: true,\n message: requiredValidationMsg,\n onlyIf: () => {\n return ko.unwrap(this.isRequired);\n }\n }\n });\n }\n\n private removeValidation(): void {\n ValidationService.RemoveValidationRule(this.value, this.validationFields);\r\n }\n\n public dispose(): void {\n this.removeValidation();\n this.subscriptions.forEach((sub: KnockoutSubscription) => sub.dispose());\n }\n}\n\nconst inputTextComponentName = \"input-text\";\nko.components.unregister(inputTextComponentName);\nko.components.register(inputTextComponentName, {\n viewModel: InputsBase,\n template: { require: `text!Content/ts/Shared/Inputs/Text/${inputTextComponentName}.html` }\n});\n\nconst inputTextLiveComponentName = \"input-text-live\";\nko.components.unregister(inputTextLiveComponentName);\nko.components.register(inputTextLiveComponentName, {\n viewModel: InputsBase,\n template: { require: `text!Content/ts/Shared/Inputs/Text/${inputTextLiveComponentName}.html` }\n});\n\nconst inputTextAreaComponentName = \"input-textarea\";\nko.components.unregister(inputTextAreaComponentName);\nko.components.register(inputTextAreaComponentName, {\n viewModel: InputsBase,\n template: { require: `text!Content/ts/Shared/Inputs/TextArea/${inputTextAreaComponentName}.html` }\n});\n\nconst inputPasswordComponentName = \"input-password\";\nko.components.unregister(inputPasswordComponentName);\nko.components.register(inputPasswordComponentName, {\n viewModel: InputsBase,\n template: { require: `text!Content/ts/Shared/Inputs/Password/${inputPasswordComponentName}.html` }\n});"]}