@klippa/ngx-enhancy-forms 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +178 -23
  2. package/bundles/klippa-ngx-enhancy-forms.umd.js +1175 -0
  3. package/bundles/klippa-ngx-enhancy-forms.umd.js.map +1 -0
  4. package/bundles/klippa-ngx-enhancy-forms.umd.min.js +17 -0
  5. package/bundles/klippa-ngx-enhancy-forms.umd.min.js.map +1 -0
  6. package/esm2015/klippa-ngx-enhancy-forms.js +6 -0
  7. package/esm2015/lib/elements/button/button.component.js +38 -0
  8. package/esm2015/lib/elements/checkbox/checkbox.component.js +18 -0
  9. package/esm2015/lib/elements/datepicker/datepicker.component.js +93 -0
  10. package/esm2015/lib/elements/email/email-input.component.js +21 -0
  11. package/esm2015/lib/elements/loading-indicator/loading-indicator.component.js +19 -0
  12. package/esm2015/lib/elements/number-input/number-input.component.js +17 -0
  13. package/esm2015/lib/elements/password-field/password-field.component.js +21 -0
  14. package/esm2015/lib/elements/select/select.component.js +35 -0
  15. package/esm2015/lib/elements/sortable-items/sortable-items.component.js +25 -0
  16. package/esm2015/lib/elements/text-input/text-input.component.js +22 -0
  17. package/esm2015/lib/elements/toggle/toggle.component.js +14 -0
  18. package/esm2015/lib/elements/value-accessor-base/value-accessor-base.component.js +88 -0
  19. package/esm2015/lib/form/form-caption/form-caption.component.js +35 -0
  20. package/esm2015/lib/form/form-element/form-element.component.js +100 -0
  21. package/esm2015/lib/form/form-error/form-error.component.js +37 -0
  22. package/esm2015/lib/form/form-submit-button/form-submit-button.component.js +42 -0
  23. package/esm2015/lib/form/form.component.js +71 -0
  24. package/esm2015/lib/material.module.js +17 -0
  25. package/esm2015/lib/ngx-enhancy-forms.module.js +75 -0
  26. package/esm2015/lib/types.js +2 -0
  27. package/esm2015/lib/util/values.js +38 -0
  28. package/esm2015/lib/validators/dateValidator.js +6 -0
  29. package/esm2015/public-api.js +24 -0
  30. package/fesm2015/klippa-ngx-enhancy-forms.js +776 -0
  31. package/fesm2015/klippa-ngx-enhancy-forms.js.map +1 -0
  32. package/klippa-ngx-enhancy-forms.d.ts +5 -0
  33. package/klippa-ngx-enhancy-forms.metadata.json +1 -0
  34. package/lib/elements/button/button.component.d.ts +11 -0
  35. package/lib/elements/checkbox/checkbox.component.d.ts +5 -0
  36. package/lib/elements/datepicker/datepicker.component.d.ts +20 -0
  37. package/lib/elements/email/email-input.component.d.ts +4 -0
  38. package/lib/elements/loading-indicator/loading-indicator.component.d.ts +4 -0
  39. package/lib/elements/number-input/number-input.component.d.ts +4 -0
  40. package/lib/elements/password-field/password-field.component.d.ts +4 -0
  41. package/lib/elements/select/select.component.d.ts +24 -0
  42. package/lib/elements/sortable-items/sortable-items.component.d.ts +6 -0
  43. package/lib/elements/text-input/text-input.component.d.ts +5 -0
  44. package/lib/elements/toggle/toggle.component.d.ts +3 -0
  45. package/lib/elements/value-accessor-base/value-accessor-base.component.d.ts +32 -0
  46. package/lib/form/form-caption/form-caption.component.d.ts +8 -0
  47. package/lib/form/form-element/form-element.component.d.ts +38 -0
  48. package/lib/form/form-error/form-error.component.d.ts +11 -0
  49. package/lib/form/form-submit-button/form-submit-button.component.d.ts +11 -0
  50. package/lib/form/form.component.d.ts +12 -0
  51. package/lib/material.module.d.ts +2 -0
  52. package/lib/ngx-enhancy-forms.module.d.ts +2 -0
  53. package/lib/types.d.ts +13 -0
  54. package/lib/util/values.d.ts +9 -0
  55. package/lib/validators/dateValidator.d.ts +3 -0
  56. package/package.json +20 -23
  57. package/public-api.d.ts +20 -0
  58. package/.editorconfig +0 -16
  59. package/.github/workflows/ci.yml +0 -18
  60. package/.github/workflows/release.yml +0 -22
  61. package/angular.json +0 -28
  62. package/ng-package.json +0 -7
  63. package/src/lib/ngx-enhancy-forms.component.html +0 -1
  64. package/src/lib/ngx-enhancy-forms.component.ts +0 -13
  65. package/src/lib/ngx-enhancy-forms.module.ts +0 -19
  66. package/src/public-api.ts +0 -6
  67. package/tsconfig.json +0 -37
  68. package/tsconfig.lib.json +0 -25
  69. package/tsconfig.lib.prod.json +0 -10
  70. package/tslint.json +0 -140
@@ -0,0 +1 @@
1
+ {"version":3,"file":"klippa-ngx-enhancy-forms.js","sources":["../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/values.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/value-accessor-base/value-accessor-base.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/button/button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/checkbox/checkbox.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/email/email-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/loading-indicator/loading-indicator.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/number-input/number-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/password-field/password-field.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-items/sortable-items.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-input/text-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/toggle/toggle.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption/form-caption.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-error/form-error.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-submit-button/form-submit-button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/validators/dateValidator.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/datepicker/datepicker.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/material.module.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/ngx-enhancy-forms.module.ts","../../../../projects/klippa/ngx-enhancy-forms/src/public-api.ts","../../../../projects/klippa/ngx-enhancy-forms/src/klippa-ngx-enhancy-forms.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\nimport {FormElementComponent} from \"./form-element/form-element.component\";\n\n@Component({\n\tselector: 'klp-form',\n\ttemplateUrl: './form.component.html',\n\tstyleUrls: ['./form.component.scss'],\n})\nexport class FormComponent {\n\t@Input() public formGroup: FormGroup;\n\n\t// we keep track of what form controls are actually rendered. Only those count when looking at form validation\n\tprivate activeControls: Array<{\n\t\tformControl: FormControl;\n\t\tformElement: FormElementComponent;\n\t}> = [];\n\n\tpublic registerControl(formControl: FormControl, formElement: FormElementComponent) {\n\t\tthis.activeControls.push({ formControl, formElement });\n\t}\n\n\tpublic unregisterControl(formControl: FormControl) {\n\t\tthis.activeControls = this.activeControls.filter((e) => e.formControl !== formControl);\n\t}\n\n\tprivate disableInactiveFormGroupControls(formGroup: FormGroup) {\n\t\tObject.values(formGroup.controls).forEach((value) => {\n\t\t\tif (value instanceof FormGroup) {\n\t\t\t\tthis.disableInactiveFormGroupControls(value);\n\t\t\t} else if (value instanceof FormArray) {\n\t\t\t\tthis.disableInactiveFormArrayControls(value);\n\t\t\t} else if (value instanceof FormControl) {\n\t\t\t\tthis.disableInactiveFormControl(value);\n\t\t\t}\n\t\t});\n\t}\n\tprivate disableInactiveFormArrayControls(formArray: FormArray) {\n\t\tformArray.controls.forEach((value) => {\n\t\t\tif (value instanceof FormGroup) {\n\t\t\t\tthis.disableInactiveFormGroupControls(value);\n\t\t\t} else if (value instanceof FormArray) {\n\t\t\t\tthis.disableInactiveFormArrayControls(value);\n\t\t\t} else if (value instanceof FormControl) {\n\t\t\t\tthis.disableInactiveFormControl(value);\n\t\t\t}\n\t\t});\n\t}\n\tprivate disableInactiveFormControl(control: FormControl) {\n\t\tif (this.activeControls.some((e) => e.formControl === control)) {\n\t\t\tcontrol.enable();\n\t\t} else {\n\t\t\tcontrol.disable();\n\t\t}\n\t}\n\n\ttrySubmit(): Promise<any> {\n\t\tthis.formGroup.markAllAsTouched();\n\t\tthis.disableInactiveFormGroupControls(this.formGroup);\n\t\tif (this.formGroup.valid) {\n\t\t\treturn Promise.resolve(this.formGroup.value);\n\t\t} else {\n\t\t\tthis.activeControls.find((e) => !e.formControl.valid)?.formElement?.scrollTo();\n\t\t\treturn Promise.reject('Not all fields are valid');\n\t\t}\n\t}\n}\n","import {Component, ElementRef, Host, Inject, InjectionToken, Input, OnInit, Optional, ViewChild} from '@angular/core';\nimport { AbstractControl, FormControl } from '@angular/forms';\nimport {FormComponent} from \"../form.component\";\nimport {CustomErrorMessages, FormErrorMessages} from \"../../types\";\nimport {isObservable} from \"rxjs\";\n\nexport const FORM_ERROR_MESSAGES = new InjectionToken<CustomErrorMessages>('form.error.messages');\n\nexport const DEFAULT_ERROR_MESSAGES: FormErrorMessages = {\n\tmin: \"use a number larger than %min%\",\n\tmax: \"Use a number smaller than %max%\",\n\trequired: \"This field is required\",\n\temail: \"Use a valid email address\",\n\tminLength: \"Has to be longer than %minLength% character(s)\",\n\tmaxLength: \"Has to be shorter than %maxLength% character(s)\",\n\tpattern: \"This input is not valid\",\n\tmatchPassword: \"Passwords must match\",\n\tdate: \"Enter a valid date\",\n}\n\n@Component({\n\tselector: 'klp-form-element',\n\ttemplateUrl: './form-element.component.html',\n\tstyleUrls: ['./form-element.component.scss'],\n})\nexport class FormElementComponent {\n\tpublic attachedControl: AbstractControl;\n\t@Input() public caption: String;\n\t@Input() public direction: 'horizontal' | 'vertical' = 'horizontal';\n\t@Input() public captionSpacing: 'percentages' | 'none' = 'percentages';\n\t@Input() public swapInputAndCaption: boolean = false;\n\t@ViewChild('internalComponentRef') public internalComponentRef: ElementRef;\n\n\tpublic captionRef: ElementRef;\n\tpublic errorMessages: FormErrorMessages = DEFAULT_ERROR_MESSAGES;\n\tpublic customErrorHandlers: Array<{ error: string; templateRef: ElementRef }> = [];\n\n\tconstructor(\n\t\t@Host() @Optional() private parent: FormComponent,\n\t\t@Inject(FORM_ERROR_MESSAGES) @Optional() private customMessages: CustomErrorMessages\n\t) {\n\t}\n\n\tpublic substituteParameters(message: string, parameters: Record<string, any>): string {\n\t\treturn Object.keys(parameters).reduce((msg, key) => {\n\t\t\treturn msg.replace(`%${key}%`, parameters[key]);\n\t\t}, message);\n\t}\n\n\tpublic registerControl(formControl: FormControl) {\n\t\tthis.attachedControl = formControl;\n\t\tthis.parent.registerControl(formControl, this);\n\t}\n\n\tpublic unregisterControl(formControl: FormControl) {\n\t\tthis.attachedControl = null;\n\t\tthis.parent.unregisterControl(formControl);\n\t}\n\n\tpublic getAttachedControl() {\n\t\treturn this.attachedControl;\n\t}\n\n\tpublic registerErrorHandler(error: string, templateRef: ElementRef) {\n\t\tthis.customErrorHandlers.push({ error, templateRef });\n\t}\n\n\tpublic registerCaption(templateRef: ElementRef) {\n\t\tthis.captionRef = templateRef;\n\t}\n\n\tgetErrorToShow() {\n\t\tif (this.attachedControl?.touched === true && this.attachedControl?.errors) {\n\t\t\treturn Object.keys(this.attachedControl?.errors)[0];\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetCustomErrorHandler(error: string) {\n\t\treturn this.customErrorHandlers.find((e) => e.error === error);\n\t}\n\n\tshowDefaultError(error: string) {\n\t\treturn this.getErrorToShow() === error && !this.customErrorHandlers.some((e) => e.error === error);\n\t}\n\n\tgetScrollableParent(node) {\n\t\tif (node == null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (node.scrollHeight > node.clientHeight) {\n\t\t\treturn node;\n\t\t} else {\n\t\t\treturn this.getScrollableParent(node.parentNode);\n\t\t}\n\t}\n\n\tscrollTo() {\n\t\tthis.internalComponentRef.nativeElement.scrollIntoView(true);\n\t\t// to give some breathing room, we scroll 100px more to the top\n\t\tthis.getScrollableParent(this.internalComponentRef.nativeElement)?.scrollBy(0, -100);\n\t}\n\n\tgetErrorMessages(key: keyof FormErrorMessages) {\n\t\treturn this.customMessages[key]?.() ?? this.errorMessages[key];\n\t}\n}\n","import { isString } from 'lodash';\n\nexport function stringIsSetAndNotEmpty(s: string) {\n\treturn isString(s) && s.length > 0;\n}\n\nexport function isNullOrUndefined(value: any) {\n\treturn value === null || value === undefined;\n}\n\nexport function numberIsSet(value: any) {\n\treturn isValueSet(value) && typeof value === 'number';\n}\n\nexport function isValueSet(value: any) {\n\treturn value !== null && value !== undefined;\n}\n\nexport function stringOrArrayIsSetAndEmpty(value: any[] | string) {\n\treturn value !== null && value !== undefined && value.length === 0;\n}\n\nexport function useIfStringIsSet(s: string) {\n\tif (stringIsSetAndNotEmpty(s)) {\n\t\treturn s;\n\t}\n\treturn undefined;\n}\n\nexport function useIfArrayIsSetWithOneItem(a: Array<any>): any {\n\tif (!isNullOrUndefined(a) && a.length === 1) {\n\t\treturn a[0];\n\t}\n\treturn undefined;\n}\n\nexport function convertParentToChild<C>(originalClass: any, newClass: C): C {\n\treturn Object.assign(newClass, originalClass);\n}\n\nexport function truncateString(s: string, length: number) {\n\tif (s.length < length) {\n\t\treturn s;\n\t}\n\treturn s.substring(0, length) + '...';\n}\n","import { ControlContainer, ControlValueAccessor, FormControl } from '@angular/forms';\nimport { Component, Host, Input, Optional } from '@angular/core';\nimport { FormElementComponent } from '../../form/form-element/form-element.component';\nimport { isNullOrUndefined, stringIsSetAndNotEmpty } from '../../util/values';\n\n/**\n * This component is a base in order to create a component that supports ngModel.\n * Some important things to know about it:\n *\n * innerValue = your own inner state, which you should use to store the current state of what ngModel should be.\n * writeValue() = called by angular, when ngModel is changed from OUTSIDE of the component. Feel free to patch this method if you need inner logic to happen when ngModel is altered from the outside. Always remember to also call the super.writeValue if you do!\n * setInnerValueAndNotify() = call this when you want your ngModel to be updated from INSIDE of your component, and provide it to the OUTSIDE.\n * ngOnInit() = Used to support the angular reactive forms framework. If you use ngOnInit in your own component (which happens fairly often) you must not forget to call the super.ngOnInit() method.\n */\n\n@Component({\n\tselector: '',\n\ttemplate: '',\n})\nexport class ValueAccessorBase<T> implements ControlValueAccessor {\n\tpublic innerValue: T;\n\tpublic changed = new Array<(value: T) => void>();\n\tprivate touched = new Array<() => void>();\n\n\t@Input() public disabled = false;\n\t// we support both providing just the formControlName and the full formControl\n\t@Input() public formControlName: string = null;\n\t@Input() public formControl: FormControl = null;\n\n\tprivate attachedFormControl: FormControl;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer\n\t) {}\n\n\tngOnInit() {\n\t\tif (this.formControl) {\n\t\t\tthis.attachedFormControl = this.formControl;\n\t\t} else if (stringIsSetAndNotEmpty(this.formControlName)) {\n\t\t\tthis.attachedFormControl = this.controlContainer?.control.get(this.formControlName) as FormControl;\n\t\t\tif (isNullOrUndefined(this.attachedFormControl)) {\n\t\t\t\tthrow new Error(`Form element '${this.formControlName}' with caption '${this.parent?.caption}' is not declared in your FormGroup.`);\n\t\t\t}\n\t\t}\n\t\tif (this.attachedFormControl) {\n\t\t\tthis.disabled = this.attachedFormControl.disabled;\n\t\t\tthis.attachedFormControl.statusChanges.subscribe(() => {\n\t\t\t\tthis.disabled = this.attachedFormControl.disabled;\n\t\t\t});\n\t\t\tthis.parent?.registerControl(this.attachedFormControl);\n\t\t}\n\t}\n\n\tisInErrorState() {\n\t\treturn this.attachedFormControl && this.attachedFormControl.status === 'INVALID' && this.attachedFormControl.touched;\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.attachedFormControl) {\n\t\t\tthis.parent?.unregisterControl(this.attachedFormControl);\n\t\t}\n\t}\n\n\ttouch() {\n\t\tthis.touched.forEach((f) => f());\n\t}\n\n\twriteValue(value: T) {\n\t\tthis.innerValue = value;\n\t}\n\n\tregisterOnChange(fn: (value: T) => void) {\n\t\tthis.changed.push(fn);\n\t}\n\n\tregisterOnTouched(fn: () => void) {\n\t\tthis.touched.push(fn);\n\t}\n\n\tsetInnerValueAndNotify(value) {\n\t\tthis.innerValue = value;\n\t\tthis.changed.forEach((fn) => fn(value));\n\t}\n\n\tresetToNull() {\n\t\tthis.setInnerValueAndNotify(null);\n\t}\n}\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n\tselector: 'klp-form-button',\n\ttemplateUrl: './button.component.html',\n\tstyleUrls: ['./button.component.scss'],\n})\nexport class ButtonComponent {\n\t@Input() variant:\n\t\t| 'white'\n\t\t| 'greenFilled'\n\t\t| 'greenOutlined'\n\t\t| 'greenLink'\n\t\t| 'contextMenuItem'\n\t\t| 'redFilled'\n\t\t| 'redOutlined'\n\t\t| 'orangeFilled' = 'white';\n\t@Input() size: 'small' | 'medium' | 'large' = 'medium';\n\t@Input() fullWidth = false;\n\t@Input() hasBorder = true;\n\t@Input() disabled = false;\n\t@Input() isLoading = false;\n\t@Input() type: 'button' | 'submit' = 'button';\n\n\t@HostBinding('class._fullWidth') get _() {\n\t\treturn this.fullWidth;\n\t}\n\n\tonClick(event: Event) {\n\t\tif (this.disabled) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n\tselector: 'klp-form-checkbox',\n\ttemplateUrl: './checkbox.component.html',\n\tstyleUrls: ['./checkbox.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }],\n})\nexport class CheckboxComponent extends ValueAccessorBase<boolean> {\n\t@Input() caption: string;\n\t@Input() disabled: boolean;\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-email-input',\n\ttemplateUrl: './email-input.component.html',\n\tstyleUrls: ['./email-input.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: EmailInputComponent, multi: true }],\n})\nexport class EmailInputComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder = '';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n\tselector: 'klp-form-loading-indicator',\n\ttemplateUrl: './loading-indicator.component.html',\n\tstyleUrls: ['./loading-indicator.component.scss'],\n})\nexport class LoadingIndicatorComponent {\n\t@Input() public variant: '3dots' | 'spinner' | 'textInput' | 'picker' = '3dots';\n\t@Input() public size: 'tiny' | 'small' | 'medium' | 'large' | 'huge' = 'medium';\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-number-input',\n\ttemplateUrl: './number-input.component.html',\n\tstyleUrls: ['./number-input.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: NumberInputComponent, multi: true }],\n})\nexport class NumberInputComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder: string;\n}\n","import {Component, Input} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-password-field',\n\ttemplateUrl: './password-field.component.html',\n\tstyleUrls: ['./password-field.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: PasswordFieldComponent, multi: true }],\n})\nexport class PasswordFieldComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder = 'Password';\n}\n","import { Component, Host, Input, OnInit, Optional } from '@angular/core';\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\nimport {FormElementComponent} from \"../../form/form-element/form-element.component\";\n\nexport type AppSelectOptions = Array<{\n\tid: any;\n\tname: string;\n\tdescription?: string;\n\tdisabled?: boolean;\n}>;\n\n@Component({\n\tselector: 'klp-form-select',\n\ttemplateUrl: './select.component.html',\n\tstyleUrls: ['./select.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true }],\n})\nexport class SelectComponent extends ValueAccessorBase<string | string[]> {\n\t@Input() placeholder: string = 'Pick an option';\n\t@Input() options: AppSelectOptions;\n\t@Input() multiple = false;\n\t@Input() clearable = true;\n\t@Input() public dropdownPosition: string;\n\t@Input() public customSearchFn: (term: string, item: { id: string; name: string; description: string }) => boolean;\n\n\tconstructor(\n\t\t@Optional() @Host() protected parent: FormElementComponent,\n\t\t@Optional() @Host() protected controlContainer: ControlContainer,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n}\n","import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-sortable-items',\n\ttemplateUrl: './sortable-items.component.html',\n\tstyleUrls: ['./sortable-items.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableItemsComponent, multi: true }],\n})\nexport class SortableItemsComponent extends ValueAccessorBase<Array<any>> {\n\t@ContentChild(TemplateRef) template;\n\t@Input() sortableItemSize: 'sm' | 'lg' = 'lg';\n\n\titemsOrderChanged = () => {\n\t\tthis.setInnerValueAndNotify(this.innerValue);\n\t};\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-text-input',\n\ttemplateUrl: './text-input.component.html',\n\tstyleUrls: ['./text-input.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextInputComponent, multi: true }],\n})\nexport class TextInputComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder: string;\n\t@Input() type: 'text' | 'password' = 'text';\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-toggle',\n\ttemplateUrl: './toggle.component.html',\n\tstyleUrls: ['./toggle.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: ToggleComponent, multi: true }],\n})\nexport class ToggleComponent extends ValueAccessorBase<boolean> {}\n","import { Component, ElementRef, Host, OnInit, Optional, ViewChild } from '@angular/core';\nimport {FormElementComponent} from \"../form-element/form-element.component\";\nimport {isNullOrUndefined} from \"../../util/values\";\n\n@Component({\n\tselector: 'klp-form-caption',\n\ttemplateUrl: './form-caption.component.html',\n\tstyleUrls: ['./form-caption.component.scss'],\n})\nexport class FormCaptionComponent implements OnInit {\n\t@ViewChild('contentRef') public contentRef: ElementRef;\n\n\tconstructor(@Host() @Optional() private parent: FormElementComponent) {}\n\n\tngOnInit(): void {\n\t\t// this is being run next cycle, because we dont want to fail if the order of components is as follows:\n\t\t// <app-form-error />\n\t\t// <some-input />\n\t\t// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet\n\t\tsetTimeout(() => {\n\t\t\tconst attachedControl = this.parent.getAttachedControl();\n\t\t\tthis.parent.registerCaption(this.contentRef);\n\t\t\tif (isNullOrUndefined(attachedControl)) {\n\t\t\t\tthrow new Error('You added a Form Caption component without an attached Form Control');\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Component, ElementRef, Host, Input, OnInit, Optional, ViewChild } from '@angular/core';\nimport {FormElementComponent} from \"../form-element/form-element.component\";\nimport {isNullOrUndefined} from \"../../util/values\";\nimport {ErrorTypes} from \"../../types\";\n\n@Component({\n\tselector: 'klp-form-error',\n\ttemplateUrl: './form-error.component.html',\n\tstyleUrls: ['./form-error.component.scss'],\n})\nexport class FormErrorComponent implements OnInit {\n\t@Input() error: ErrorTypes;\n\tpublic showError = false;\n\t@ViewChild('contentRef') public contentRef: ElementRef;\n\tconstructor(@Host() @Optional() private parent: FormElementComponent) {}\n\n\tngOnInit(): void {\n\t\t// this is being run next cycle, because we dont want to fail if the order of components is as follows:\n\t\t// <app-form-error />\n\t\t// <some-input />\n\t\t// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet\n\t\tsetTimeout(() => {\n\t\t\tconst attachedControl = this.parent.getAttachedControl();\n\t\t\tthis.parent.registerErrorHandler(this.error, this.contentRef);\n\t\t\tif (isNullOrUndefined(attachedControl)) {\n\t\t\t\tthrow new Error('You added a Form Error component without an attached Form Control');\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Component, Host, HostBinding, Input, Optional } from '@angular/core';\nimport {FormComponent} from \"../form.component\";\n\n@Component({\n\tselector: 'klp-form-submit-button',\n\ttemplateUrl: './form-submit-button.component.html',\n\tstyleUrls: ['./form-submit-button.component.scss'],\n})\nexport class FormSubmitButtonComponent {\n\t@Input() public isLoading = false;\n\t@Input() fullWidth = false;\n\t@Input() variant: 'greenFilled' | 'redFilled' = 'greenFilled';\n\t@Input() public submitCallback: (any) => Promise<void>;\n\n\t@HostBinding('class._fullWidth') get _() {\n\t\treturn this.fullWidth;\n\t}\n\n\tconstructor(@Host() @Optional() private parentForm: FormComponent) {}\n\n\tsubmitForm() {\n\t\tthis.parentForm\n\t\t\t.trySubmit()\n\t\t\t.then((value) => {\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.submitCallback(value)\n\t\t\t\t\t.then(() => (this.isLoading = false))\n\t\t\t\t\t.catch(() => (this.isLoading = false));\n\t\t\t})\n\t\t\t.catch(() => {}); // swallow the error, the framework will scroll to the field that needs attention\n\t}\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const invalidDateKey = '--invalid_date--';\n\nexport function dateValidator(control: AbstractControl): ValidationErrors | null {\n\tconst invalid = control.value === invalidDateKey;\n\treturn invalid ? { date: control.value } : null;\n}\n","import {Component, ElementRef, Input, SimpleChanges, ViewChild} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport { isNullOrUndefined, stringIsSetAndNotEmpty } from '../../util/values';\nimport { invalidDateKey } from '../../validators/dateValidator';\nimport { MatDatepicker } from '@angular/material/datepicker';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-datepicker',\n\ttemplateUrl: './datepicker.component.html',\n\tstyleUrls: ['./datepicker.component.scss'],\n\tproviders: [\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: DatepickerComponent, multi: true },\n\t],\n})\nexport class DatepickerComponent extends ValueAccessorBase<Date | typeof invalidDateKey> {\n\t@Input() public minDate: Date = undefined;\n\t@Input() public maxDate: Date = undefined;\n\t@Input() public placeholder = 'Select date';\n\n\t@ViewChild('nativeInput') nativeInputRef: ElementRef;\n\t@ViewChild('picker') datePickerRef: MatDatepicker<Date>;\n\n\tminDateStartOfDay: Date = undefined;\n\tmaxDateEndOfDay: Date = undefined;\n\n\t// this is passed as ngmodel and is used to set the inital date. But we also\n\t// use input and nativeInput callbacks to extend the validation logic so we\n\t// can destinguish between empty and invalid dates.\n\tvalueForMaterialDatePicker: Date;\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes.minDate) {\n\t\t\tthis.setMinDate(changes.minDate.currentValue);\n\t\t}\n\t\tif (changes.maxDate) {\n\t\t\tthis.setMaxDate(changes.maxDate.currentValue);\n\t\t}\n\t}\n\n\tsetMinDate(minDate: Date) {\n\t\tif (minDate) {\n\t\t\tthis.minDateStartOfDay = new Date(minDate);\n\t\t\tthis.minDateStartOfDay.setHours(0, 0, 0, 0);\n\t\t} else {\n\t\t\tthis.minDateStartOfDay = undefined;\n\t\t}\n\t}\n\n\tsetMaxDate(maxDate: Date) {\n\t\tif (maxDate) {\n\t\t\tthis.maxDateEndOfDay = new Date(maxDate);\n\t\t\tthis.maxDateEndOfDay.setHours(23, 59, 59, 999);\n\t\t} else {\n\t\t\tthis.maxDateEndOfDay = undefined;\n\t\t}\n\t}\n\n\t// dateChanged is called when the output of the datepicker is changed and\n\t// parsed correctly. If the date is invalid, it will be called the first time\n\t// with null but never again until a valid input is provided.\n\tdateChanged(event: any) {\n\t\tconst nativeInputValue = this.nativeInputRef.nativeElement.value;\n\t\tconst date = event.value;\n\t\tif (isNullOrUndefined(date) && stringIsSetAndNotEmpty(nativeInputValue)) {\n\t\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t\t} else {\n\t\t\tthis.setInnerValueAndNotify(date);\n\t\t}\n\t}\n\n\twriteValue(value: Date | typeof invalidDateKey) {\n\t\tsuper.writeValue(value);\n\t\tthis.valueForMaterialDatePicker = value === invalidDateKey ? null : value;\n\t}\n\n\t// nativeValueChanged is called when the internal text value changes, but not\n\t// when the date is changed via the date picker. We need this so that we can\n\t// determine if the datepicker is empty or invalid.\n\tnativeValueChanged(event: any) {\n\t\tconst nativeInputValue = event.target.value;\n\t\tconst date = this.valueForMaterialDatePicker;\n\n\t\tif (this.datePickerRef.opened) {\n\t\t\t// if the user is typing instead of using the picker, close it.\n\t\t\tthis.datePickerRef.close();\n\t\t}\n\n\t\tif (isNullOrUndefined(date) && stringIsSetAndNotEmpty(nativeInputValue)) {\n\t\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t\t} else {\n\t\t\tthis.setInnerValueAndNotify(date);\n\t\t}\n\t}\n}\n","// material.module.ts\n\nimport { NgModule } from '@angular/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n\timports: [MatDatepickerModule, MatFormFieldModule, MatNativeDateModule, MatInputModule, MatButtonModule],\n\texports: [MatDatepickerModule, MatFormFieldModule, MatNativeDateModule, MatInputModule, MatButtonModule],\n\tproviders: [MatDatepickerModule],\n})\nexport class MaterialModule {}\n","import { NgModule } from '@angular/core';\nimport {CommonModule} from \"@angular/common\";\nimport {FormsModule} from \"@angular/forms\";\nimport {ValueAccessorBase} from \"./elements/value-accessor-base/value-accessor-base.component\";\nimport {ButtonComponent} from \"./elements/button/button.component\";\nimport {CheckboxComponent} from \"./elements/checkbox/checkbox.component\";\nimport {EmailInputComponent} from \"./elements/email/email-input.component\";\nimport {LoadingIndicatorComponent} from \"./elements/loading-indicator/loading-indicator.component\";\nimport {NumberInputComponent} from \"./elements/number-input/number-input.component\";\nimport {PasswordFieldComponent} from \"./elements/password-field/password-field.component\";\nimport {SelectComponent} from \"./elements/select/select.component\";\nimport {SortableItemsComponent} from \"./elements/sortable-items/sortable-items.component\";\nimport {TextInputComponent} from \"./elements/text-input/text-input.component\";\nimport {ToggleComponent} from \"./elements/toggle/toggle.component\";\nimport {FormCaptionComponent} from \"./form/form-caption/form-caption.component\";\nimport {FormElementComponent} from \"./form/form-element/form-element.component\";\nimport {FormErrorComponent} from \"./form/form-error/form-error.component\";\nimport {FormSubmitButtonComponent} from \"./form/form-submit-button/form-submit-button.component\";\nimport {FormComponent} from \"./form/form.component\";\nimport {SortablejsModule} from \"ngx-sortablejs\";\nimport {NgSelectModule} from \"@ng-select/ng-select\";\nimport {DatepickerComponent} from \"./elements/datepicker/datepicker.component\";\nimport {MaterialModule} from \"./material.module\";\n\n\n\n@NgModule({\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tNgSelectModule,\n\t\tSortablejsModule,\n\t\tMaterialModule,\n\t],\n\tdeclarations: [\n\t\tValueAccessorBase,\n\t\tButtonComponent,\n\t\tCheckboxComponent,\n\t\tDatepickerComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tSortableItemsComponent,\n\t\tTextInputComponent,\n\t\tToggleComponent,\n\t\tFormCaptionComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t],\n\texports: [\n\t\tValueAccessorBase,\n\t\tButtonComponent,\n\t\tDatepickerComponent,\n\t\tCheckboxComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tSortableItemsComponent,\n\t\tTextInputComponent,\n\t\tToggleComponent,\n\t\tFormCaptionComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t]\n})\nexport class NgxEnhancyFormsModule { }\n","/*\n * Public API Surface of ngx-enhancy-forms\n */\n\nexport * from './lib/ngx-enhancy-forms.module';\n\nexport * from './lib/elements/button/button.component';\nexport * from './lib/elements/checkbox/checkbox.component';\nexport * from './lib/elements/datepicker/datepicker.component';\nexport * from './lib/elements/email/email-input.component';\nexport * from './lib/elements/loading-indicator/loading-indicator.component';\nexport * from './lib/elements/number-input/number-input.component';\nexport * from './lib/elements/password-field/password-field.component';\nexport * from './lib/elements/select/select.component';\nexport * from './lib/elements/sortable-items/sortable-items.component';\nexport * from './lib/elements/text-input/text-input.component';\nexport * from './lib/elements/toggle/toggle.component';\nexport * from './lib/elements/value-accessor-base/value-accessor-base.component';\n\nexport * from './lib/form/form.component';\nexport * from './lib/form/form-caption/form-caption.component';\nexport * from './lib/form/form-element/form-element.component';\nexport * from './lib/form/form-error/form-error.component';\nexport * from './lib/form/form-submit-button/form-submit-button.component';\n\nexport * from './lib/validators/dateValidator';\n\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MaterialModule as ɵa} from './lib/material.module';"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ export { MaterialModule as ɵa } from './lib/material.module';
@@ -0,0 +1 @@
1
+ {"__symbolic":"module","version":4,"metadata":{"NgxEnhancyFormsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":26,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":28,"character":2},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":29,"character":2},{"__symbolic":"reference","module":"@ng-select/ng-select","name":"NgSelectModule","line":30,"character":2},{"__symbolic":"reference","module":"ngx-sortablejs","name":"SortablejsModule","line":31,"character":2},{"__symbolic":"reference","name":"ɵa"}],"declarations":[{"__symbolic":"reference","name":"ValueAccessorBase"},{"__symbolic":"reference","name":"ButtonComponent"},{"__symbolic":"reference","name":"CheckboxComponent"},{"__symbolic":"reference","name":"DatepickerComponent"},{"__symbolic":"reference","name":"EmailInputComponent"},{"__symbolic":"reference","name":"LoadingIndicatorComponent"},{"__symbolic":"reference","name":"NumberInputComponent"},{"__symbolic":"reference","name":"PasswordFieldComponent"},{"__symbolic":"reference","name":"SelectComponent"},{"__symbolic":"reference","name":"SortableItemsComponent"},{"__symbolic":"reference","name":"TextInputComponent"},{"__symbolic":"reference","name":"ToggleComponent"},{"__symbolic":"reference","name":"FormCaptionComponent"},{"__symbolic":"reference","name":"FormElementComponent"},{"__symbolic":"reference","name":"FormErrorComponent"},{"__symbolic":"reference","name":"FormSubmitButtonComponent"},{"__symbolic":"reference","name":"FormComponent"}],"exports":[{"__symbolic":"reference","name":"ValueAccessorBase"},{"__symbolic":"reference","name":"ButtonComponent"},{"__symbolic":"reference","name":"DatepickerComponent"},{"__symbolic":"reference","name":"CheckboxComponent"},{"__symbolic":"reference","name":"EmailInputComponent"},{"__symbolic":"reference","name":"LoadingIndicatorComponent"},{"__symbolic":"reference","name":"NumberInputComponent"},{"__symbolic":"reference","name":"PasswordFieldComponent"},{"__symbolic":"reference","name":"SelectComponent"},{"__symbolic":"reference","name":"SortableItemsComponent"},{"__symbolic":"reference","name":"TextInputComponent"},{"__symbolic":"reference","name":"ToggleComponent"},{"__symbolic":"reference","name":"FormCaptionComponent"},{"__symbolic":"reference","name":"FormElementComponent"},{"__symbolic":"reference","name":"FormErrorComponent"},{"__symbolic":"reference","name":"FormSubmitButtonComponent"},{"__symbolic":"reference","name":"FormComponent"}]}]}],"members":{}},"ButtonComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"klp-form-button","template":"<button class=\"buttonFundamentals\"\n\t[ngClass]=\"[\n\t\tvariant,\n\t\tsize,\n\t\tfullWidth ? 'fullWidth' : '',\n\t\thasBorder ? '' : 'no-border',\n\t\tdisabled ? 'disabled' : ''\n\t]\"\n\t[type]=\"type\"\n\t(click)=\"onClick($event)\"\n>\n\t<div class=\"caption\" [ngClass]=\"{invisible: isLoading}\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"loadingSpinnerContainer\" *ngIf=\"isLoading\">\n\t\t<klp-form-loading-indicator variant=\"spinner\" size=\"small\"></klp-form-loading-indicator>\n\t</div>\n</button>\n","styles":[":host{display:inline-block}:host._fullWidth{display:block}.buttonFundamentals{border:1px solid #e6ecf5;border-radius:5px;color:#888da8;cursor:pointer;font-size:13px;font-weight:700;letter-spacing:1px;padding:10px 20px}.fullWidth{width:100%}.no-border{border:none}.caption.invisible{visibility:hidden}button{position:relative}.loadingSpinnerContainer{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.small{padding-bottom:.375rem;padding-top:.375rem}.large{line-height:2}.white{background-color:#fff;border-color:#d4deee;color:#515365;font-weight:500}.white:active,.white:hover{background-color:#edf2f8;border-color:#edf2f8;color:#515365}.white:focus{text-decoration:underline}.greenFilled{background-color:#27bb5f;border-color:#27bb5f;color:#fff}.greenFilled:hover{background-color:#2bd06a;border-color:#2bd06a;color:#fff}.greenFilled:focus{text-decoration:underline}.greenFilled:active{background-color:#23a654;border-color:#23a654}.greenOutlined{background-color:#fff;border-color:#27bb5f;color:#27bb5f}.greenOutlined:hover{background-color:#2bd06a;border-color:#2bd06a;color:#fff}.greenOutlined:focus{text-decoration:underline}.greenOutlined:active{background-color:#23a654;border-color:#23a654}.greenLink{background:none;border:none;color:#27bb5f;padding:0}.greenLink:focus,.greenLink:hover{text-decoration:underline}.contextMenuItem{background-color:#fff;border-color:#fff;color:#888da8}.contextMenuItem:hover{background-color:#f6f7fb;border-color:#f6f7fb}.contextMenuItem:active,.contextMenuItem:focus{text-decoration:underline}.redFilled{background-color:#ff3c7e;border-color:#ff3c7e;color:#fff}.redFilled:hover{background-color:#ff568f;border-color:#ff568f;color:#fff}.redFilled:focus{text-decoration:underline}.redFilled:active{background-color:#ff236d;border-color:#ff236d}.redOutlined{background-color:#fff;border-color:#ff3c7e;color:#ff3c7e}.redOutlined:hover{background-color:#ff568f;border-color:#ff568f;color:#fff}.redOutlined:focus{text-decoration:underline}.redOutlined:active{background-color:#ff236d;border-color:#ff236d}.orangeFilled{background-color:#ff8000;border-color:#ff8000;color:#fff}.orangeFilled:hover{background-color:#ff8d1a;border-color:#ff8d1a;color:#fff}.orangeFilled:focus{text-decoration:underline}.orangeFilled:active{background-color:#e67300;border-color:#e67300}"]}]}],"members":{"variant":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":8,"character":2}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":2}}]}],"fullWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":2}}]}],"hasBorder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":2}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":2}}]}],"isLoading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":2}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":2}}]}],"_":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":24,"character":2},"arguments":["class._fullWidth"]}]}],"onClick":[{"__symbolic":"method"}]}},"CheckboxComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ValueAccessorBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"klp-form-checkbox","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":8,"character":24},"useExisting":{"__symbolic":"reference","name":"CheckboxComponent"},"multi":true}],"template":"<label class=\"componentContainer\">\n\t<div class=\"checkboxContainer\">\n\t\t<input type=\"checkbox\" class=\"checkboxNative\"\n\t\t\t[(ngModel)]=\"innerValue\"\n\t\t\t(change)=\"setInnerValueAndNotify(innerValue); touch()\"\n\t\t\t[disabled]=\"disabled\"\n\t\t/>\n <div class=\"checkboxVisual\">\n <svg *ngIf=\"innerValue\" version=\"1.1\" viewBox=\"0 0 4.2333 4.2333\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m0.17014 2.7065 1.3073 1.1798 2.5656-3.7404\" stroke=\"currentColor\" fill=\"none\" stroke-width=\".4646px\" />\n </svg>\n </div>\n\t</div>\n\t<div *ngIf=\"caption\" class=\"caption\">{{ caption }}</div>\n</label>\n","styles":[":host{display:block}.componentContainer{display:flex;margin-bottom:0}.checkboxContainer{position:relative}.caption{color:#888da8;cursor:pointer;font-weight:700}.checkboxNative{left:0;opacity:0;position:absolute;top:0}.checkboxNative,.checkboxVisual{cursor:pointer;height:22px;width:22px}.checkboxVisual{background-color:#fff;border:2px solid #e6ecf5;border-radius:3px;color:#27bb5f;display:inline-block;font-size:15px;font-weight:400;line-height:19px;margin-right:10px;padding:.125rem;pointer-events:none;text-align:center;vertical-align:bottom}.checkboxNative[disabled]{cursor:not-allowed}.checkboxNative[disabled]+.checkboxVisual:before{color:#666}"]}]}],"members":{"caption":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":2}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":2}}]}]}},"DatepickerComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ValueAccessorBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"klp-form-datepicker","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":12,"character":13},"useExisting":{"__symbolic":"reference","name":"DatepickerComponent"},"multi":true}],"template":"<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<mat-form-field [floatLabel]=\"'never'\">\n\t\t<input\n\t\t\t#nativeInput\n\t\t\tmatInput\n\t\t\t[matDatepicker]=\"picker\"\n\t\t\t[(ngModel)]=\"valueForMaterialDatePicker\"\n\t\t\t(dateInput)=\"dateChanged($event)\"\n\t\t\t(input)=\"nativeValueChanged($event)\"\n\t\t\t[min]=\"minDateStartOfDay\"\n\t\t\t[max]=\"maxDateEndOfDay\"\n\t\t\t[placeholder]=\"placeholder\"\n\t\t\t(click)=\"picker.open()\"\n\t\t\t(blur)=\"touch()\"\n\t\t>\n\t\t<mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n\t\t<mat-datepicker #picker\n\t\t></mat-datepicker>\n\t</mat-form-field>\n</div>\n","styles":[":host{display:block}:host ::ng-deep mat-form-field{display:block;height:100%}:host ::ng-deep mat-form-field.mat-focused .mat-form-field-label,:host ::ng-deep mat-form-field .mat-form-field-label{color:#adadad}:host ::ng-deep .mat-datepicker-toggle-active{color:#666}:host ::ng-deep .mat-form-field-wrapper{padding-bottom:none}:host ::ng-deep .mat-form-field-flex{flex-direction:row-reverse}:host ::ng-deep .mat-form-field-infix{border-top:none}:host ::ng-deep .mat-form-field-suffix{margin-right:.625rem}:host ::ng-deep .mat-form-field-suffix:hover .mat-button-focus-overlay{opacity:.1}:host ::ng-deep .mat-form-field-underline{display:none}.componentContainer{-moz-transition:all .2s ease-in;-ms-transition:all .2s ease-in;-o-transition:all .2s ease-in;-webkit-transition:all .2s ease-in;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;color:#888da8;display:block;font-size:14px;height:42px;padding:.375rem .625rem;transition:all .2s ease-in;width:100%}.componentContainer::-webkit-input-placeholder{color:#adadad}.componentContainer:-moz-placeholder,.componentContainer::-moz-placeholder{color:#adadad}.componentContainer:-ms-input-placeholder{color:#adadad}.componentContainer:focus{border-color:#3ed778;box-shadow:none;outline:0 none}.componentContainer.input-sm{height:30px}.componentContainer.input-lg{height:50px}.componentContainer.error{background-color:#ffeff4;border-color:#ff3c7e}.componentContainer.valid{background-color:#ebfaeb;border-color:#37c936;color:#278d26}.componentContainer.showErrors{border-color:#ff8000}"]}]}],"members":{"minDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":2}}]}],"maxDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":2}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":2}}]}],"nativeInputRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":20,"character":2},"arguments":["nativeInput"]}]}],"datePickerRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":21,"character":2},"arguments":["picker"]}]}],"ngOnChanges":[{"__symbolic":"method"}],"setMinDate":[{"__symbolic":"method"}],"setMaxDate":[{"__symbolic":"method"}],"dateChanged":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"nativeValueChanged":[{"__symbolic":"method"}]}},"EmailInputComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ValueAccessorBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"klp-form-email-input","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":8,"character":24},"useExisting":{"__symbolic":"reference","name":"EmailInputComponent"},"multi":true}],"template":"<input\n\ttype=\"email\"\n\tclass=\"form-control\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder\"\n\t(blur)=\"touch()\"\n/>\n","styles":[":host,input{display:block}input{-moz-transition:all .2s ease-in;-ms-transition:all .2s ease-in;-o-transition:all .2s ease-in;-webkit-transition:all .2s ease-in;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;color:#888da8;font-size:14px;height:42px;outline:none;padding:.375rem .625rem;transition:all .2s ease-in;width:100%}input::-webkit-input-placeholder{color:#adadad}input:-moz-placeholder,input::-moz-placeholder{color:#adadad}input:-ms-input-placeholder{color:#adadad}input:focus{border-color:#3ed778;box-shadow:none;outline:0 none}input.input-sm{height:30px}input.input-lg{height:50px}input.error{background-color:#ffeff4;border-color:#ff3c7e}input.valid{background-color:#ebfaeb;border-color:#37c936;color:#278d26}.showErrors{border-color:#ff8000}"]}]}],"members":{"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":2}}]}]}},"LoadingIndicatorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"klp-form-loading-indicator","template":"<div class=\"threeDots\" [class]=\"size\" *ngIf=\"variant === '3dots'\">\n\t<div></div>\n\t<div></div>\n\t<div></div>\n\t<div></div>\n</div>\n\n<div class=\"spinner\" [class]=\"size\" *ngIf=\"variant === 'spinner'\">\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n\t\t<circle cx=\"24\" cy=\"4\" r=\"4\" fill=\"currentColor\" />\n\t\t<circle cx=\"12.19\" cy=\"7.86\" r=\"3.7\" fill=\"currentColor\" />\n\t\t<circle cx=\"5.02\" cy=\"17.68\" r=\"3.4\" fill=\"currentColor\" />\n\t\t<circle cx=\"5.02\" cy=\"30.32\" r=\"3.1\" fill=\"currentColor\" />\n\t\t<circle cx=\"12.19\" cy=\"40.14\" r=\"2.8\" fill=\"currentColor\" />\n\t\t<circle cx=\"24\" cy=\"44\" r=\"2.5\" fill=\"currentColor\" />\n\t\t<circle cx=\"35.81\" cy=\"40.14\" r=\"2.2\" fill=\"currentColor\" />\n\t\t<circle cx=\"42.98\" cy=\"30.32\" r=\"1.9\" fill=\"currentColor\" />\n\t\t<circle cx=\"42.98\" cy=\"17.68\" r=\"1.6\" fill=\"currentColor\" />\n\t\t<circle cx=\"35.81\" cy=\"7.86\" r=\"1.3\" fill=\"currentColor\" />\n\t</svg>\n</div>\n\n<div class=\"textInput\" *ngIf=\"variant === 'textInput'\">\n\t<input\n\t\tdisabled\n\t\ttype=\"text\"\n\t\tclass=\"form-control\"\n\t\tplaceholder=\"Loading...\"\n\t>\n</div>\n\n<div class=\"picker\" *ngIf=\"variant === 'picker'\">\n\t<input\n\t\tdisabled\n\t\ttype=\"text\"\n\t\tclass=\"form-control\"\n\t\tplaceholder=\"Loading...\"\n\t>\n\t<div class=\"chevronDown\"></div>\n</div>\n","styles":[".threeDots,:host{display:block}.threeDots{height:var(--base);position:relative;width:calc(var(--base)*4)}.threeDots.tiny{--base:4px}.threeDots.small{--base:8px}.threeDots.medium{--base:12px}.threeDots.large{--base:18px}.threeDots.huge{--base:26px}.threeDots div{-webkit-animation-timing-function:cubic-bezier(0,1,1,0);animation-timing-function:cubic-bezier(0,1,1,0);background:#27bb5f;border-radius:50%;height:var(--base);position:absolute;top:0;width:var(--base)}.threeDots div:first-child{-webkit-animation:lds-ellipsis1 .6s infinite;animation:lds-ellipsis1 .6s infinite}.threeDots div:nth-child(2),.threeDots div:nth-child(3){-webkit-animation:lds-ellipsis2 .6s infinite;animation:lds-ellipsis2 .6s infinite}.threeDots div:nth-child(3){left:calc(var(--base)*1.5)}.threeDots div:nth-child(4){-webkit-animation:lds-ellipsis3 .6s infinite;animation:lds-ellipsis3 .6s infinite;left:calc(var(--base)*3)}@-webkit-keyframes lds-ellipsis1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes lds-ellipsis1{0%{transform:scale(0)}to{transform:scale(1)}}@-webkit-keyframes lds-ellipsis3{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes lds-ellipsis3{0%{transform:scale(1)}to{transform:scale(0)}}@-webkit-keyframes lds-ellipsis2{0%{transform:translate(0)}to{transform:translate(150%)}}@keyframes lds-ellipsis2{0%{transform:translate(0)}to{transform:translate(150%)}}.spinner.tiny svg{height:1rem;width:1rem}.spinner.small svg{height:1.6rem;width:1.6rem}.spinner.medium svg{height:2.5rem;width:2.5rem}.spinner.large svg{height:3rem;width:3rem}.spinner.huge svg{height:4rem;width:4rem}.spinner svg{-moz-animation-duration:1.2s;-moz-animation-iteration-count:infinite;-moz-animation-name:rotate;-moz-animation-timing-function:linear;-moz-transition-property:-moz-transform;-webkit-animation-duration:1.2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:rotate;-webkit-animation-timing-function:linear;-webkit-transition-duration:1.2s;-webkit-transition-property:-webkit-transform;animation-duration:1.2s;animation-iteration-count:infinite;animation-name:rotate;animation-timing-function:linear;transition-property:transform}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.picker{position:relative}.picker .chevronDown{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #888da8;height:0;position:absolute;right:23px;top:18px;width:0}"]}]}],"members":{"variant":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":8,"character":2}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":2}}]}]}},"NumberInputComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ValueAccessorBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"klp-form-number-input","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":8,"character":24},"useExisting":{"__symbolic":"reference","name":"NumberInputComponent"},"multi":true}],"template":"<input\n\ttype=\"number\"\n\tclass=\"form-control\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder ? placeholder : ''\"\n/>\n","styles":[":host,input{display:block}input{-moz-transition:all .2s ease-in;-ms-transition:all .2s ease-in;-o-transition:all .2s ease-in;-webkit-transition:all .2s ease-in;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;color:#888da8;font-size:14px;height:42px;outline:none;padding:.375rem .625rem;transition:all .2s ease-in;width:100%}input::-webkit-input-placeholder{color:#adadad}input:-moz-placeholder,input::-moz-placeholder{color:#adadad}input:-ms-input-placeholder{color:#adadad}input:focus{border-color:#3ed778;box-shadow:none;outline:0 none}input.input-sm{height:30px}input.input-lg{height:50px}input.error{background-color:#ffeff4;border-color:#ff3c7e}input.valid{background-color:#ebfaeb;border-color:#37c936;color:#278d26}.showErrors{border-color:#ff8000}"]}]}],"members":{"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":2}}]}]}},"PasswordFieldComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ValueAccessorBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"klp-form-password-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":8,"character":24},"useExisting":{"__symbolic":"reference","name":"PasswordFieldComponent"},"multi":true}],"template":"<input\n\ttype=\"password\"\n\tclass=\"form-control\"\n [ngClass]=\"{showErrors: isInErrorState()}\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder\"\n\t(blur)=\"touch()\"\n/>\n","styles":[":host,input{display:block}input{-moz-transition:all .2s ease-in;-ms-transition:all .2s ease-in;-o-transition:all .2s ease-in;-webkit-transition:all .2s ease-in;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;color:#888da8;font-size:14px;height:42px;outline:none;padding:.375rem .625rem;transition:all .2s ease-in;width:100%}input::-webkit-input-placeholder{color:#adadad}input:-moz-placeholder,input::-moz-placeholder{color:#adadad}input:-ms-input-placeholder{color:#adadad}input:focus{border-color:#3ed778;box-shadow:none;outline:0 none}input.input-sm{height:30px}input.input-lg{height:50px}input.error{background-color:#ffeff4;border-color:#ff3c7e}input.valid{background-color:#ebfaeb;border-color:#37c936;color:#278d26}.showErrors{border-color:#ff8000}"]}]}],"members":{"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":2}}]}]}},"AppSelectOptions":{"__symbolic":"interface"},"SelectComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ValueAccessorBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"klp-form-select","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":16,"character":24},"useExisting":{"__symbolic":"reference","name":"SelectComponent"},"multi":true}],"template":"<ng-select\n\t[placeholder]=\"placeholder\"\n\tbindLabel=\"name\"\n\tbindValue=\"id\"\n\t[items]=\"options\"\n\t[clearable]=\"clearable\"\n\t[(ngModel)]=\"innerValue\"\n\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t(change)=\"setInnerValueAndNotify(innerValue)\"\n\t[multiple]=\"multiple\"\n\t[disabled]=\"disabled\"\n\t(blur)=\"touch()\"\n\t[dropdownPosition]=\"dropdownPosition\"\n\t[searchFn]=\"customSearchFn\"\n>\n\t<ng-template let-item=\"item\" ng-option-tmp>\n\t\t{{ item.name }}\n\t\t<div *ngIf=\"item.description\" class=\"dropdown-item-description\">\n\t\t\t{{ item.description }}\n\t\t</div>\n\t</ng-template>\n</ng-select>\n","styles":[":host{display:block}.showErrors ::ng-deep .ng-select-container{border-color:#ff8000}:host ::ng-deep ng-select.ng-select .ng-select-container{color:#888da8}:host ::ng-deep .ng-select.ng-select-opened>.ng-select-container{background:#fff;border-color:#3ed778}:host ::ng-deep .ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}:host ::ng-deep .ng-select.ng-select-opened>.ng-select-container .ng-arrow{border-color:transparent transparent #999;border-width:0 5px 5px;top:-2px}:host ::ng-deep .ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #666}:host ::ng-deep .ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-left-radius:0;border-bottom-right-radius:0}:host ::ng-deep .ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-left-radius:0;border-top-right-radius:0}:host ::ng-deep .ng-select.ng-select-disabled>.ng-select-container{background-color:#f9f9f9}:host ::ng-deep .ng-select .ng-has-value .ng-placeholder{display:none}:host ::ng-deep .ng-select .ng-select-container{align-items:center;background-clip:padding-box;background-color:#fff;border:1px solid #e6ecf5;border-radius:4px;border-radius:2px;box-shadow:none;box-sizing:border-box;color:#888da8;display:flex;flex-direction:row;font-size:1rem;font-size:14px;line-height:1.5;margin:0;min-height:42px;outline:none;overflow:visible;padding:.375rem .75rem;transition-delay:0s;transition-duration:.2s;transition-property:all;transition-timing-function:ease-in;width:100%}:host ::ng-deep .ng-select .ng-select-container:hover{box-shadow:0 1px 0 rgba(0,0,0,.06)}:host ::ng-deep .ng-select .ng-select-container .ng-value-container{align-items:center;overflow:hidden;padding-left:10px}:host ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#aaa}:host ::ng-deep .ng-select.ng-select-single .ng-select-container{height:42px}:host ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{left:0;padding-left:10px;padding-right:50px;top:5px}:host ::ng-deep .ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:#f9f9f9;border:1px solid #e3e3e3}:host ::ng-deep .ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-left:7px;padding-right:10px;padding-top:2px}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:#e7faee;border:1px solid #93e8b3;border-radius:2px;display:flex;font-size:.9em;margin-bottom:5px;margin-right:5px;overflow:hidden}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9;border:1px solid #e3e3e3}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:inline-block;overflow:hidden;padding:0 5px;text-overflow:ellipsis}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:0 5px}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#93e8b3}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #93e8b3}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #c2e0ff}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding-bottom:3px;padding-left:3px}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-bottom:3px;padding-left:3px;position:static;top:5px}:host ::ng-deep .ng-select .ng-clear-wrapper{color:#999}:host ::ng-deep .ng-select .ng-clear-wrapper .ng-clear:hover{color:#ff3c7e}:host ::ng-deep .ng-select .ng-spinner-zone{padding-right:5px;padding-top:5px}:host ::ng-deep .ng-select .ng-arrow-wrapper{padding-right:5px;width:25px}:host ::ng-deep .ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#666}:host ::ng-deep .ng-select .ng-arrow-wrapper .ng-arrow{border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px}:host ::ng-deep .ng-dropdown-panel{background-color:#fff;border:1px solid #3ed778;box-shadow:0 1px 0 rgba(0,0,0,.06)}:host ::ng-deep .ng-dropdown-panel.ng-select-bottom{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top-color:#e6e6e6;margin-top:-1px;top:100%}:host ::ng-deep .ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}:host ::ng-deep .ng-dropdown-panel.ng-select-top{border-bottom-color:#e6e6e6;border-top-left-radius:4px;border-top-right-radius:4px;bottom:100%;margin-bottom:-1px}:host ::ng-deep .ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:4px;border-top-right-radius:4px}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid #ccc;padding:5px 7px}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid #ccc;padding:5px 7px}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items{margin-bottom:1px}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;color:rgba(0,0,0,.54);cursor:default;cursor:pointer;font-weight:500;padding:8px 10px;user-select:none}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#ebf5ff}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected{background-color:#f5faff;font-weight:600}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:#fff;color:rgba(0,0,0,.87);padding:8px 10px}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:#e7faee;color:#333}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label{font-weight:600}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:#e7faee;color:#333}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#ccc}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-value-container{padding-left:0}:host ::ng-deep ng-select.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{color:#888da8;top:9px}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option,:host ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input>input{color:#888da8}:host ::ng-deep .ng-select.ng-select-auto-grow{max-width:inherit}:host ::ng-deep .ng-select.ng-select-auto-grow .ng-dropdown-panel{width:auto}"]}]}],"members":{"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":2}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":2}}]}],"multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":2}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":2}}]}],"dropdownPosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":2}}]}],"customSearchFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":2}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":27,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":27,"character":15}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":28,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":28,"character":15}}]],"parameters":[{"__symbolic":"reference","name":"FormElementComponent"},{"__symbolic":"reference","module":"@angular/forms","name":"ControlContainer","line":28,"character":50}]}]}},"SortableItemsComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ValueAccessorBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"klp-form-sortable-items","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":8,"character":24},"useExisting":{"__symbolic":"reference","name":"SortableItemsComponent"},"multi":true}],"template":"<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t class=\"sortableItem\"\n\t [ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm'\n\t\t }\"\n\t>\n\t\t<ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item, index:index }\" ></ng-container>\n\t</li>\n</ng-template>\n\n<ol *ngIf='!disabled'\n [sortablejs]=\"innerValue\"\n [sortablejsOptions]=\"{ onUpdate: itemsOrderChanged }\"\n class=\"itemsContainer\"\n>\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n\n<ol *ngIf='disabled' class=\"itemsContainer disabled-mouse-cursor\">\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n","styles":[":host{display:block}.itemsContainer{border:1px solid #e6ecf5;border-radius:5px;margin-bottom:0;padding:0}.sortableItem{border-top:1px solid #e6ecf5;cursor:-webkit-grab;cursor:grab;list-style:none}.sortableItem:hover{background:#f8f9fa}.sortableItem:first-child{border-top:none}.largeSortableItem{padding:15px}.smallSortableItem{padding:0 10px}.disabled-mouse-cursor li{cursor:no-drop}"]}]}],"members":{"template":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":11,"character":2},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":11,"character":15}]}]}],"sortableItemSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":2}}]}]}},"TextInputComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ValueAccessorBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"klp-form-text-input","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":8,"character":24},"useExisting":{"__symbolic":"reference","name":"TextInputComponent"},"multi":true}],"template":"<input\n\t[type]=\"type\"\n\tclass=\"form-control\"\n\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t(blur)=\"touch()\"\n\t[disabled]='disabled'\n/>\n","styles":[":host,input{display:block}input{-moz-transition:all .2s ease-in;-ms-transition:all .2s ease-in;-o-transition:all .2s ease-in;-webkit-transition:all .2s ease-in;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;color:#888da8;font-size:14px;height:42px;outline:none;padding:.375rem .625rem;transition:all .2s ease-in;width:100%}input::-webkit-input-placeholder{color:#adadad}input:-moz-placeholder,input::-moz-placeholder{color:#adadad}input:-ms-input-placeholder{color:#adadad}input:focus{border-color:#3ed778;box-shadow:none;outline:0 none}input.input-sm{height:30px}input.input-lg{height:50px}input.error{background-color:#ffeff4;border-color:#ff3c7e}input.valid{background-color:#ebfaeb;border-color:#37c936;color:#278d26}.showErrors{border-color:#ff8000}"]}]}],"members":{"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":2}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":2}}]}]}},"ToggleComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ValueAccessorBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"klp-form-toggle","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":8,"character":24},"useExisting":{"__symbolic":"reference","name":"ToggleComponent"},"multi":true}],"template":"<div class=\"componentContainer\" [ngClass]=\"{disabled: disabled}\">\n\t<input type=\"checkbox\" class=\"nativeCheckbox\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.checked); touch()\"\n\t\t[disabled]=\"disabled\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t/>\n\t<div class=\"toggleVisual\"></div>\n</div>\n","styles":[":host{display:block}.componentContainer{position:relative}.nativeCheckbox{cursor:pointer;height:20px;left:0;opacity:0;position:absolute;top:0;width:35px}.toggleVisual{-moz-transition:.4s ease;-ms-transition:.4s ease;-o-transition:.4s ease;-webkit-transition:.4s ease;border:1px solid #e6ecf5;border-radius:35px;display:block;height:20px;pointer-events:none;position:relative;transition:.4s ease;width:35px}.toggleVisual:before{-moz-transition:.2s cubic-bezier(.24,0,.5,1);-ms-transition:.2s cubic-bezier(.24,0,.5,1);-o-transition:.2s cubic-bezier(.24,0,.5,1);-webkit-transition:.2s cubic-bezier(.24,0,.5,1);border-radius:30px;height:18px;left:-1px;margin:1px;transition:.2s cubic-bezier(.24,0,.5,1);width:33px}.toggleVisual:after,.toggleVisual:before{content:\"\";display:block;position:absolute;top:-1px}.toggleVisual:after{-moz-transition:.35s cubic-bezier(.54,1.6,.5,1);-ms-transition:.35s cubic-bezier(.54,1.6,.5,1);-o-transition:.35s cubic-bezier(.54,1.6,.5,1);-webkit-transition:.35s cubic-bezier(.54,1.6,.5,1);background:#f7f7f7;border-radius:60px;box-shadow:0 0 0 1px rgba(0,0,0,.1),0 4px 0 0 rgba(0,0,0,.04),0 4px 9px rgba(0,0,0,.13),0 3px 3px rgba(0,0,0,.05);height:20px;left:0;transition:.35s cubic-bezier(.54,1.6,.5,1);width:20px}.nativeCheckbox:checked+.toggleVisual:before{-moz-transition:width .2s cubic-bezier(0,0,0,.1);-ms-transition:width .2s cubic-bezier(0,0,0,.1);-o-transition:width .2s cubic-bezier(0,0,0,.1);-webkit-transition:width .2s cubic-bezier(0,0,0,.1);background:#37c936;transition:width .2s cubic-bezier(0,0,0,.1)}.nativeCheckbox:checked+.toggleVisual:after{left:18px}.disabled{opacity:.6}.showErrors+.toggleVisual:before{border:1px solid #ff8000}"]}]}],"members":{}},"ValueAccessorBase":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"","template":""}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":2}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":2}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":2}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":32,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":32,"character":11}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":33,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":11}}]],"parameters":[{"__symbolic":"reference","name":"FormElementComponent"},{"__symbolic":"reference","module":"@angular/forms","name":"ControlContainer","line":33,"character":50}]}],"ngOnInit":[{"__symbolic":"method"}],"isInErrorState":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"touch":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setInnerValueAndNotify":[{"__symbolic":"method"}],"resetToNull":[{"__symbolic":"method"}]}},"FormComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"klp-form","template":"<form>\n\t<ng-content></ng-content>\n</form>\n\n\n","styles":[":host{display:block}:host.row{display:flex}"]}]}],"members":{"formGroup":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":2}}]}],"registerControl":[{"__symbolic":"method"}],"unregisterControl":[{"__symbolic":"method"}],"disableInactiveFormGroupControls":[{"__symbolic":"method"}],"disableInactiveFormArrayControls":[{"__symbolic":"method"}],"disableInactiveFormControl":[{"__symbolic":"method"}],"trySubmit":[{"__symbolic":"method"}]}},"FormCaptionComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"klp-form-caption","template":"<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\n","styles":[":host{display:block}"]}]}],"members":{"contentRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":10,"character":2},"arguments":["contentRef"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":12,"character":14}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":12,"character":22}}]],"parameters":[{"__symbolic":"reference","name":"FormElementComponent"}]}],"ngOnInit":[{"__symbolic":"method"}]}},"FORM_ERROR_MESSAGES":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":6,"character":39},"arguments":["form.error.messages"]},"DEFAULT_ERROR_MESSAGES":{"min":"use a number larger than %min%","max":"Use a number smaller than %max%","required":"This field is required","email":"Use a valid email address","minLength":"Has to be longer than %minLength% character(s)","maxLength":"Has to be shorter than %maxLength% character(s)","pattern":"This input is not valid","matchPassword":"Passwords must match","date":"Enter a valid date"},"FormElementComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"selector":"klp-form-element","template":"<ng-template #errorRef>\n\t<div *ngIf=\"getErrorToShow()\" class=\"errorContainer\">\n\t\t<div *ngIf=\"showDefaultError('min')\">{{substituteParameters(getErrorMessages(\"min\"), {min: attachedControl.errors.min.min})}}</div>\n\t\t<div *ngIf=\"showDefaultError('max')\">{{substituteParameters(getErrorMessages(\"max\"), {max: attachedControl.errors.max.max})}}</div>\n\t\t<div *ngIf=\"showDefaultError('required')\">{{getErrorMessages(\"required\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('email')\">{{getErrorMessages(\"email\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('minlength')\">{{substituteParameters(getErrorMessages(\"minLength\"), {minLength: attachedControl.errors.minlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('maxlength')\">{{substituteParameters(getErrorMessages(\"maxLength\"), {maxLength: attachedControl.errors.maxlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('pattern')\">{{getErrorMessages(\"pattern\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('MatchPassword')\">{{getErrorMessages(\"matchPassword\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('date')\">{{getErrorMessages(\"date\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('message')\">{{attachedControl.errors.message.value}}</div>\n\t\t<div [ngTemplateOutlet]=\"getCustomErrorHandler(getErrorToShow())?.templateRef\"></div>\n\t</div>\n</ng-template>\n<ng-container *ngIf=\"direction === 'horizontal'\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n<div *ngIf=\"attachedControl\" class=\"componentContainer\" [ngClass]=\"{vertical: direction === 'vertical', reverseOrder: swapInputAndCaption}\" #internalComponentRef>\n\t<div class=\"caption\" [ngClass]=\"{ hasErrors: getErrorToShow() && attachedControl.touched, percentageSpacing: captionSpacing === 'percentages' }\">\n\t\t<div *ngIf=\"captionRef\" [ngTemplateOutlet]=\"captionRef\"></div>\n\t\t<div *ngIf=\"!captionRef\">{{caption}}</div>\n\t</div>\n\t<ng-container *ngIf=\"direction === 'vertical'\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t<div class=\"inputContainer\" [ngClass]=\"{ percentageSpacing: captionSpacing === 'percentages' }\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n","styles":[":host{display:block;margin-top:1.25rem}.componentContainer{align-items:center;display:flex}.componentContainer.reverseOrder{flex-direction:row-reverse;justify-content:flex-end}.componentContainer.vertical{display:block;margin-bottom:1rem}.componentContainer.vertical .inputContainer{margin-top:.3125rem}.componentContainer.vertical .errorContainer{margin-left:0}.caption{color:#515365;flex:0 0 auto;font-weight:700}.caption.percentageSpacing{flex:0 0 40%}.caption.hasErrors{color:#ff8000}.inputContainer{flex:0 0 auto}.inputContainer.percentageSpacing{flex:0 0 60%}.errorContainer{color:#ff8000;margin-left:40%}"]}]}],"members":{"caption":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":2}}]}],"direction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":2}}]}],"captionSpacing":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":2}}]}],"swapInputAndCaption":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":2}}]}],"internalComponentRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":31,"character":2},"arguments":["internalComponentRef"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":38,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":38,"character":11}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":39,"character":3},"arguments":[{"__symbolic":"reference","name":"FORM_ERROR_MESSAGES"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":39,"character":32}}]],"parameters":[{"__symbolic":"reference","name":"FormComponent"},{"__symbolic":"reference","name":"CustomErrorMessages"}]}],"substituteParameters":[{"__symbolic":"method"}],"registerControl":[{"__symbolic":"method"}],"unregisterControl":[{"__symbolic":"method"}],"getAttachedControl":[{"__symbolic":"method"}],"registerErrorHandler":[{"__symbolic":"method"}],"registerCaption":[{"__symbolic":"method"}],"getErrorToShow":[{"__symbolic":"method"}],"getCustomErrorHandler":[{"__symbolic":"method"}],"showDefaultError":[{"__symbolic":"method"}],"getScrollableParent":[{"__symbolic":"method"}],"scrollTo":[{"__symbolic":"method"}],"getErrorMessages":[{"__symbolic":"method"}]}},"FormErrorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"klp-form-error","template":"<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\n","styles":[":host{display:block}"]}]}],"members":{"error":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":2}}]}],"contentRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":13,"character":2},"arguments":["contentRef"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":14,"character":14}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":14,"character":22}}]],"parameters":[{"__symbolic":"reference","name":"FormElementComponent"}]}],"ngOnInit":[{"__symbolic":"method"}]}},"FormSubmitButtonComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"klp-form-submit-button","template":"<klp-form-button\n\t\t[variant]=\"variant\"\n\t\t(click)=\"submitForm()\"\n\t\t[disabled]=\"isLoading\"\n\t\t[isLoading]=\"isLoading\"\n\t\t[fullWidth]=\"fullWidth\"\n\t\ttype=\"submit\"\n\t\t[ngClass]=\"fullWidth ? 'fullWidth' : ''\"\n\t>\n\t<ng-content></ng-content>\n</klp-form-button>\n","styles":[":host{display:inline-block}:host._fullWidth{display:block}.fullWidth{width:100%}"]}]}],"members":{"isLoading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":2}}]}],"fullWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":2}}]}],"variant":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":2}}]}],"submitCallback":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":2}}]}],"_":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":14,"character":2},"arguments":["class._fullWidth"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":18,"character":14}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":18,"character":22}}]],"parameters":[{"__symbolic":"reference","name":"FormComponent"}]}],"submitForm":[{"__symbolic":"method"}]}},"invalidDateKey":"--invalid_date--","dateValidator":{"__symbolic":"function"},"FormErrorMessages":{"__symbolic":"interface"},"CustomErrorMessages":{"__symbolic":"interface"},"ErrorTypes":{"__symbolic":"interface"},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/material/datepicker","name":"MatDatepickerModule","line":10,"character":11},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":10,"character":32},{"__symbolic":"reference","module":"@angular/material/core","name":"MatNativeDateModule","line":10,"character":52},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":10,"character":73},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":10,"character":89}],"exports":[{"__symbolic":"reference","module":"@angular/material/datepicker","name":"MatDatepickerModule","line":11,"character":11},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":11,"character":32},{"__symbolic":"reference","module":"@angular/material/core","name":"MatNativeDateModule","line":11,"character":52},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":11,"character":73},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":11,"character":89}],"providers":[{"__symbolic":"reference","module":"@angular/material/datepicker","name":"MatDatepickerModule","line":12,"character":13}]}]}],"members":{}}},"origins":{"NgxEnhancyFormsModule":"./lib/ngx-enhancy-forms.module","ButtonComponent":"./lib/elements/button/button.component","CheckboxComponent":"./lib/elements/checkbox/checkbox.component","DatepickerComponent":"./lib/elements/datepicker/datepicker.component","EmailInputComponent":"./lib/elements/email/email-input.component","LoadingIndicatorComponent":"./lib/elements/loading-indicator/loading-indicator.component","NumberInputComponent":"./lib/elements/number-input/number-input.component","PasswordFieldComponent":"./lib/elements/password-field/password-field.component","AppSelectOptions":"./lib/elements/select/select.component","SelectComponent":"./lib/elements/select/select.component","SortableItemsComponent":"./lib/elements/sortable-items/sortable-items.component","TextInputComponent":"./lib/elements/text-input/text-input.component","ToggleComponent":"./lib/elements/toggle/toggle.component","ValueAccessorBase":"./lib/elements/value-accessor-base/value-accessor-base.component","FormComponent":"./lib/form/form.component","FormCaptionComponent":"./lib/form/form-caption/form-caption.component","FORM_ERROR_MESSAGES":"./lib/form/form-element/form-element.component","DEFAULT_ERROR_MESSAGES":"./lib/form/form-element/form-element.component","FormElementComponent":"./lib/form/form-element/form-element.component","FormErrorComponent":"./lib/form/form-error/form-error.component","FormSubmitButtonComponent":"./lib/form/form-submit-button/form-submit-button.component","invalidDateKey":"./lib/validators/dateValidator","dateValidator":"./lib/validators/dateValidator","FormErrorMessages":"./lib/types","CustomErrorMessages":"./lib/types","ErrorTypes":"./lib/types","ɵa":"./lib/material.module"},"importAs":"@klippa/ngx-enhancy-forms"}
@@ -0,0 +1,11 @@
1
+ export declare class ButtonComponent {
2
+ variant: 'white' | 'greenFilled' | 'greenOutlined' | 'greenLink' | 'contextMenuItem' | 'redFilled' | 'redOutlined' | 'orangeFilled';
3
+ size: 'small' | 'medium' | 'large';
4
+ fullWidth: boolean;
5
+ hasBorder: boolean;
6
+ disabled: boolean;
7
+ isLoading: boolean;
8
+ type: 'button' | 'submit';
9
+ get _(): boolean;
10
+ onClick(event: Event): void;
11
+ }
@@ -0,0 +1,5 @@
1
+ import { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';
2
+ export declare class CheckboxComponent extends ValueAccessorBase<boolean> {
3
+ caption: string;
4
+ disabled: boolean;
5
+ }
@@ -0,0 +1,20 @@
1
+ import { ElementRef, SimpleChanges } from '@angular/core';
2
+ import { invalidDateKey } from '../../validators/dateValidator';
3
+ import { MatDatepicker } from '@angular/material/datepicker';
4
+ import { ValueAccessorBase } from "../value-accessor-base/value-accessor-base.component";
5
+ export declare class DatepickerComponent extends ValueAccessorBase<Date | typeof invalidDateKey> {
6
+ minDate: Date;
7
+ maxDate: Date;
8
+ placeholder: string;
9
+ nativeInputRef: ElementRef;
10
+ datePickerRef: MatDatepicker<Date>;
11
+ minDateStartOfDay: Date;
12
+ maxDateEndOfDay: Date;
13
+ valueForMaterialDatePicker: Date;
14
+ ngOnChanges(changes: SimpleChanges): void;
15
+ setMinDate(minDate: Date): void;
16
+ setMaxDate(maxDate: Date): void;
17
+ dateChanged(event: any): void;
18
+ writeValue(value: Date | typeof invalidDateKey): void;
19
+ nativeValueChanged(event: any): void;
20
+ }
@@ -0,0 +1,4 @@
1
+ import { ValueAccessorBase } from "../value-accessor-base/value-accessor-base.component";
2
+ export declare class EmailInputComponent extends ValueAccessorBase<string> {
3
+ placeholder: string;
4
+ }
@@ -0,0 +1,4 @@
1
+ export declare class LoadingIndicatorComponent {
2
+ variant: '3dots' | 'spinner' | 'textInput' | 'picker';
3
+ size: 'tiny' | 'small' | 'medium' | 'large' | 'huge';
4
+ }
@@ -0,0 +1,4 @@
1
+ import { ValueAccessorBase } from "../value-accessor-base/value-accessor-base.component";
2
+ export declare class NumberInputComponent extends ValueAccessorBase<string> {
3
+ placeholder: string;
4
+ }
@@ -0,0 +1,4 @@
1
+ import { ValueAccessorBase } from "../value-accessor-base/value-accessor-base.component";
2
+ export declare class PasswordFieldComponent extends ValueAccessorBase<string> {
3
+ placeholder: string;
4
+ }
@@ -0,0 +1,24 @@
1
+ import { ControlContainer } from '@angular/forms';
2
+ import { ValueAccessorBase } from "../value-accessor-base/value-accessor-base.component";
3
+ import { FormElementComponent } from "../../form/form-element/form-element.component";
4
+ export declare type AppSelectOptions = Array<{
5
+ id: any;
6
+ name: string;
7
+ description?: string;
8
+ disabled?: boolean;
9
+ }>;
10
+ export declare class SelectComponent extends ValueAccessorBase<string | string[]> {
11
+ protected parent: FormElementComponent;
12
+ protected controlContainer: ControlContainer;
13
+ placeholder: string;
14
+ options: AppSelectOptions;
15
+ multiple: boolean;
16
+ clearable: boolean;
17
+ dropdownPosition: string;
18
+ customSearchFn: (term: string, item: {
19
+ id: string;
20
+ name: string;
21
+ description: string;
22
+ }) => boolean;
23
+ constructor(parent: FormElementComponent, controlContainer: ControlContainer);
24
+ }
@@ -0,0 +1,6 @@
1
+ import { ValueAccessorBase } from "../value-accessor-base/value-accessor-base.component";
2
+ export declare class SortableItemsComponent extends ValueAccessorBase<Array<any>> {
3
+ template: any;
4
+ sortableItemSize: 'sm' | 'lg';
5
+ itemsOrderChanged: () => void;
6
+ }
@@ -0,0 +1,5 @@
1
+ import { ValueAccessorBase } from "../value-accessor-base/value-accessor-base.component";
2
+ export declare class TextInputComponent extends ValueAccessorBase<string> {
3
+ placeholder: string;
4
+ type: 'text' | 'password';
5
+ }
@@ -0,0 +1,3 @@
1
+ import { ValueAccessorBase } from "../value-accessor-base/value-accessor-base.component";
2
+ export declare class ToggleComponent extends ValueAccessorBase<boolean> {
3
+ }
@@ -0,0 +1,32 @@
1
+ import { ControlContainer, ControlValueAccessor, FormControl } from '@angular/forms';
2
+ import { FormElementComponent } from '../../form/form-element/form-element.component';
3
+ /**
4
+ * This component is a base in order to create a component that supports ngModel.
5
+ * Some important things to know about it:
6
+ *
7
+ * innerValue = your own inner state, which you should use to store the current state of what ngModel should be.
8
+ * writeValue() = called by angular, when ngModel is changed from OUTSIDE of the component. Feel free to patch this method if you need inner logic to happen when ngModel is altered from the outside. Always remember to also call the super.writeValue if you do!
9
+ * setInnerValueAndNotify() = call this when you want your ngModel to be updated from INSIDE of your component, and provide it to the OUTSIDE.
10
+ * ngOnInit() = Used to support the angular reactive forms framework. If you use ngOnInit in your own component (which happens fairly often) you must not forget to call the super.ngOnInit() method.
11
+ */
12
+ export declare class ValueAccessorBase<T> implements ControlValueAccessor {
13
+ protected parent: FormElementComponent;
14
+ protected controlContainer: ControlContainer;
15
+ innerValue: T;
16
+ changed: ((value: T) => void)[];
17
+ private touched;
18
+ disabled: boolean;
19
+ formControlName: string;
20
+ formControl: FormControl;
21
+ private attachedFormControl;
22
+ constructor(parent: FormElementComponent, controlContainer: ControlContainer);
23
+ ngOnInit(): void;
24
+ isInErrorState(): boolean;
25
+ ngOnDestroy(): void;
26
+ touch(): void;
27
+ writeValue(value: T): void;
28
+ registerOnChange(fn: (value: T) => void): void;
29
+ registerOnTouched(fn: () => void): void;
30
+ setInnerValueAndNotify(value: any): void;
31
+ resetToNull(): void;
32
+ }
@@ -0,0 +1,8 @@
1
+ import { ElementRef, OnInit } from '@angular/core';
2
+ import { FormElementComponent } from "../form-element/form-element.component";
3
+ export declare class FormCaptionComponent implements OnInit {
4
+ private parent;
5
+ contentRef: ElementRef;
6
+ constructor(parent: FormElementComponent);
7
+ ngOnInit(): void;
8
+ }
@@ -0,0 +1,38 @@
1
+ import { ElementRef, InjectionToken } from '@angular/core';
2
+ import { AbstractControl, FormControl } from '@angular/forms';
3
+ import { FormComponent } from "../form.component";
4
+ import { CustomErrorMessages, FormErrorMessages } from "../../types";
5
+ export declare const FORM_ERROR_MESSAGES: InjectionToken<Record<"max" | "required" | "pattern" | "min" | "email" | "minLength" | "maxLength" | "matchPassword" | "date", () => string>>;
6
+ export declare const DEFAULT_ERROR_MESSAGES: FormErrorMessages;
7
+ export declare class FormElementComponent {
8
+ private parent;
9
+ private customMessages;
10
+ attachedControl: AbstractControl;
11
+ caption: String;
12
+ direction: 'horizontal' | 'vertical';
13
+ captionSpacing: 'percentages' | 'none';
14
+ swapInputAndCaption: boolean;
15
+ internalComponentRef: ElementRef;
16
+ captionRef: ElementRef;
17
+ errorMessages: FormErrorMessages;
18
+ customErrorHandlers: Array<{
19
+ error: string;
20
+ templateRef: ElementRef;
21
+ }>;
22
+ constructor(parent: FormComponent, customMessages: CustomErrorMessages);
23
+ substituteParameters(message: string, parameters: Record<string, any>): string;
24
+ registerControl(formControl: FormControl): void;
25
+ unregisterControl(formControl: FormControl): void;
26
+ getAttachedControl(): AbstractControl;
27
+ registerErrorHandler(error: string, templateRef: ElementRef): void;
28
+ registerCaption(templateRef: ElementRef): void;
29
+ getErrorToShow(): string;
30
+ getCustomErrorHandler(error: string): {
31
+ error: string;
32
+ templateRef: ElementRef<any>;
33
+ };
34
+ showDefaultError(error: string): boolean;
35
+ getScrollableParent(node: any): any;
36
+ scrollTo(): void;
37
+ getErrorMessages(key: keyof FormErrorMessages): string;
38
+ }
@@ -0,0 +1,11 @@
1
+ import { ElementRef, OnInit } from '@angular/core';
2
+ import { FormElementComponent } from "../form-element/form-element.component";
3
+ import { ErrorTypes } from "../../types";
4
+ export declare class FormErrorComponent implements OnInit {
5
+ private parent;
6
+ error: ErrorTypes;
7
+ showError: boolean;
8
+ contentRef: ElementRef;
9
+ constructor(parent: FormElementComponent);
10
+ ngOnInit(): void;
11
+ }
@@ -0,0 +1,11 @@
1
+ import { FormComponent } from "../form.component";
2
+ export declare class FormSubmitButtonComponent {
3
+ private parentForm;
4
+ isLoading: boolean;
5
+ fullWidth: boolean;
6
+ variant: 'greenFilled' | 'redFilled';
7
+ submitCallback: (any: any) => Promise<void>;
8
+ get _(): boolean;
9
+ constructor(parentForm: FormComponent);
10
+ submitForm(): void;
11
+ }
@@ -0,0 +1,12 @@
1
+ import { FormControl, FormGroup } from '@angular/forms';
2
+ import { FormElementComponent } from "./form-element/form-element.component";
3
+ export declare class FormComponent {
4
+ formGroup: FormGroup;
5
+ private activeControls;
6
+ registerControl(formControl: FormControl, formElement: FormElementComponent): void;
7
+ unregisterControl(formControl: FormControl): void;
8
+ private disableInactiveFormGroupControls;
9
+ private disableInactiveFormArrayControls;
10
+ private disableInactiveFormControl;
11
+ trySubmit(): Promise<any>;
12
+ }
@@ -0,0 +1,2 @@
1
+ export declare class MaterialModule {
2
+ }
@@ -0,0 +1,2 @@
1
+ export declare class NgxEnhancyFormsModule {
2
+ }
package/lib/types.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ export interface FormErrorMessages {
2
+ min: string;
3
+ max: string;
4
+ required: string;
5
+ email: string;
6
+ minLength: string;
7
+ maxLength: string;
8
+ pattern: string;
9
+ matchPassword: string;
10
+ date: string;
11
+ }
12
+ export declare type CustomErrorMessages = Record<keyof FormErrorMessages, () => string>;
13
+ export declare type ErrorTypes = keyof FormErrorMessages | 'message';
@@ -0,0 +1,9 @@
1
+ export declare function stringIsSetAndNotEmpty(s: string): boolean;
2
+ export declare function isNullOrUndefined(value: any): boolean;
3
+ export declare function numberIsSet(value: any): boolean;
4
+ export declare function isValueSet(value: any): boolean;
5
+ export declare function stringOrArrayIsSetAndEmpty(value: any[] | string): boolean;
6
+ export declare function useIfStringIsSet(s: string): string;
7
+ export declare function useIfArrayIsSetWithOneItem(a: Array<any>): any;
8
+ export declare function convertParentToChild<C>(originalClass: any, newClass: C): C;
9
+ export declare function truncateString(s: string, length: number): string;
@@ -0,0 +1,3 @@
1
+ import { AbstractControl, ValidationErrors } from '@angular/forms';
2
+ export declare const invalidDateKey = "--invalid_date--";
3
+ export declare function dateValidator(control: AbstractControl): ValidationErrors | null;