@obliczeniowo/elementary
Version:
Library made in Angular version 20
1 lines • 25.3 kB
Source Map (JSON)
{"version":3,"file":"obliczeniowo-elementary-input.mjs","sources":["../../../../projects/components/input/directives/text-area.directive.ts","../../../../projects/components/input/services/input-wrappers-default-settings.service.ts","../../../../projects/components/input/components/text-areawrapper/textarea-wrapper.component.ts","../../../../projects/components/input/components/text-areawrapper/textarea-wrapper.component.html","../../../../projects/components/input/directives/input.directive.ts","../../../../projects/components/input/components/input-wrapper/input-wrapper.component.ts","../../../../projects/components/input/components/input-wrapper/input-wrapper.component.html","../../../../projects/components/input/input.module.ts","../../../../projects/components/input/obliczeniowo-elementary-input.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: 'textarea[oblTextArea]',\n exportAs: 'oblTextArea',\n standalone: false\n})\nexport class TextAreaDirective {\n @Input()\n @HostBinding('class.obl-text-area-outline') outlined!: boolean;\n\n @Input()\n @HostBinding('class.obl-text-area-no-resize') noResize!: boolean;\n\n constructor(renderer: Renderer2, elementRef: ElementRef<HTMLInputElement>) {\n renderer.addClass(elementRef.nativeElement, 'obl-text-area');\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InputWrappersDefaultSettingsService {\n labelAnimation = {\n inputWrapper: false,\n editInput: false,\n select: false,\n filters: false,\n sort: false\n }\n}\n","import { Component, ElementRef, Input, input } from '@angular/core';\n\nimport { InputWrappersDefaultSettingsService } from '../../services/input-wrappers-default-settings.service';\n\n@Component({\n selector: 'obl-textarea-wrapper',\n templateUrl: './textarea-wrapper.component.html',\n styleUrls: ['./textarea-wrapper.component.scss'],\n standalone: false\n})\nexport class TextAreaWrapperComponent {\n /**\n * Label text to display\n */\n label = input<string>();\n /**\n * Style of displayed input\n */\n display = input<'outlined' | 'underlined' | 'none'>('outlined');\n /**\n * reference to textarea element\n */\n textArea: HTMLTextAreaElement | undefined | null;\n /**\n * Enable type text animation for label\n */\n @Input() labelAnimation = false;\n\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private readonly settings: InputWrappersDefaultSettingsService\n ) {\n this.labelAnimation = this.settings.labelAnimation.inputWrapper;\n }\n\n ngAfterContentInit(): void {\n this.textArea = this.elementRef.nativeElement.querySelector('textarea');\n }\n}\n","<fieldset\n [ngClass]=\"{\n label: label(),\n outlined: display() === 'outlined',\n underlined: display() === 'underlined',\n none: display() === 'none',\n }\"\n>\n @if (label()) {\n <legend>\n @if (labelAnimation) {\n <obl-type-text [text]=\"label() || ''\" [interval]=\"40\"></obl-type-text>\n } @else {\n {{ label() }}\n }\n </legend>\n }\n <ng-content></ng-content>\n</fieldset>\n","import { Directive, Renderer2, ElementRef, Input, HostBinding } from '@angular/core';\n\n@Directive({\n selector: 'input[oblInput]',\n exportAs: 'oblInput',\n standalone: false\n})\nexport class InputDirective {\n @Input()\n @HostBinding('class.obl-input-outline') outlined!: boolean;\n\n constructor(renderer: Renderer2, elementRef: ElementRef<HTMLInputElement>) {\n renderer.addClass(elementRef.nativeElement, 'obl-input');\n renderer.setStyle(elementRef.nativeElement, 'display', 'flex');\n renderer.setStyle(elementRef.nativeElement, 'width', '100%');\n }\n}\n","import { SsrService } from '@obliczeniowo/elementary/ssr';\nimport {\n Component,\n Input,\n ElementRef,\n AfterContentInit,\n EventEmitter,\n Output,\n HostBinding,\n input,\n} from '@angular/core';\nimport { InputWrappersDefaultSettingsService } from '../../services/input-wrappers-default-settings.service';\nimport { keysValues } from '@obliczeniowo/elementary/objects';\n\n@Component({\n selector: 'obl-input-wrapper',\n templateUrl: './input-wrapper.component.html',\n styleUrls: ['./input-wrapper.component.scss'],\n standalone: false\n})\nexport class InputWrapperComponent implements AfterContentInit {\n protected files: File[] = [];\n /**\n * Label text to display\n */\n label = input<string>();\n /**\n * Style of displayed input\n */\n display = input<'outlined' | 'underlined' | 'none'>('outlined');\n /**\n * If you want to display button for clear input (only for input:not([type=file]))\n */\n cancellable = input<boolean>(false);\n /**\n * step for numeric only\n */\n step = input<number>();\n /**\n * errors keys from form control\n */\n @Input() errors: { [name: string]: boolean | { [param: string]: number | string } } | null | undefined = null;\n /**\n * translations\n */\n translations = input<{ [name: string]: string }>({});\n /**\n * Enable type text animation for label\n */\n @Input() labelAnimation = false;\n\n @Input()\n @HostBinding('attr.small')\n small?: boolean;\n\n @HostBinding('attr.disabled') disable?: any;\n\n /**\n * Emit array of files when it's change, work only with input[type=file]\n */\n @Output() loaded = new EventEmitter<File[]>();\n\n input: HTMLInputElement | undefined | null;\n\n observer?: any;\n\n get touched() {\n return this.input?.classList.contains('ng-touched')\n }\n\n protected get invalid() {\n return this.input?.classList.contains('ng-invalid')\n }\n\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private readonly ssr: SsrService,\n private readonly settings: InputWrappersDefaultSettingsService\n ) {\n this.labelAnimation = this.settings.labelAnimation.inputWrapper;\n }\n\n protected onBlur = () => this.input?.classList.add('ng-touched')\n\n ngAfterContentInit(): void {\n this.input = this.elementRef.nativeElement.querySelector('input');\n if (this.input?.type === 'file') {\n this.input.style.display = 'none';\n this.input.onchange = this.onChange;\n }\n\n if (this.input) {\n this.input.addEventListener('blur', this.onBlur);\n }\n\n if (this.ssr.isBrowser()) {\n if (!this.observer) {\n this.observer = new MutationObserver((list: MutationRecord[]) => {\n list.forEach((mutation) => {\n if (\n mutation.type === 'attributes' &&\n mutation?.attributeName === 'disabled'\n ) {\n this.disable = this.input?.disabled || undefined;\n }\n });\n });\n }\n\n if (this.input) {\n this.disable = this.input.disabled || undefined;\n this.observer.observe(this.input, {\n childList: true,\n subtree: true,\n attributes: true,\n characterData: false,\n });\n } else {\n this.observer.disconnect();\n }\n }\n }\n\n ngOnDestroy() {\n this.observer?.disconnect();\n }\n\n onChange = () => {\n this.input?.classList.add('ng-touched');\n this.files = Array.from(this.input?.files || []);\n this.loaded.emit(this.files);\n };\n\n stepUp(): void {\n if (this.input) {\n this.input.classList.add('ng-touched');\n this.input.classList.remove('ng-untouched');\n const step = this.step();\n if (!step) {\n this.input.stepUp();\n } else {\n this.input.valueAsNumber += step;\n }\n this.input.dispatchEvent(\n new Event('input', {\n bubbles: true,\n cancelable: true,\n })\n );\n this.input.dispatchEvent(\n new Event('change', {\n bubbles: true,\n cancelable: true,\n })\n );\n }\n }\n\n stepDown(): void {\n if (this.input) {\n this.input.classList.add('ng-touched');\n this.input.classList.remove('ng-untouched');\n const step = this.step();\n if (!step) {\n this.input.stepDown();\n } else {\n this.input.valueAsNumber -= step;\n }\n this.input.dispatchEvent(\n new Event('input', {\n bubbles: true,\n cancelable: true,\n })\n );\n this.input.dispatchEvent(\n new Event('change', {\n bubbles: true,\n cancelable: true,\n })\n );\n }\n }\n\n type(): string | undefined | null {\n return this.input?.type;\n }\n\n min(): number | undefined {\n return (this.input?.min !== undefined && +this.input?.min) || undefined;\n }\n\n max(): number | undefined | null {\n return (this.input?.max !== undefined && +this.input?.max) || undefined;\n }\n\n inputStep(): string | undefined | null {\n return this.input?.step;\n }\n\n disabled(): any | undefined {\n return this.input?.disabled || undefined;\n }\n\n checkErrors(): boolean {\n return keysValues(this.errors || {}).some(keyValue => keyValue[1]);\n }\n\n valid(): boolean | undefined {\n if (this.ssr.isServer()) {\n return undefined;\n }\n\n if (!this.touched) {\n return true;\n }\n\n if (this.checkErrors()) {\n return false;\n }\n if (this.type() === 'number') {\n const min = this.min();\n const max = this.max();\n if (min && min > +this.getValue()) {\n return false;\n }\n if (max && max < +this.getValue()) {\n return false;\n }\n return true;\n }\n\n return this.input?.checkValidity();\n }\n\n reset(): void {\n if (this.input) {\n this.input.value = '';\n this.input.classList.remove('ng-touched');\n this.input.dispatchEvent(\n new Event('input', {\n bubbles: true,\n cancelable: true,\n })\n );\n this.input.dispatchEvent(\n new Event('change', {\n bubbles: true,\n cancelable: true,\n })\n );\n }\n }\n\n getValue(): string {\n return this.input?.value || '';\n }\n\n clicked() {\n this.input?.click();\n }\n\n delete(index: number) {\n this.files = this.files.filter((_, i) => i !== index);\n this.loaded.emit(this.files);\n }\n}\n","<fieldset\n [ngClass]=\"{\n label: label(),\n outlined: display() === 'outlined',\n underlined: display() === 'underlined',\n none: display() === 'none',\n invalid: !valid() || ((checkErrors() || invalid) && this.touched),\n file: input?.type === 'file'\n }\"\n>\n @if (label()) {\n <legend>\n @if (labelAnimation) {\n <obl-type-text [text]=\"label() || ''\" [interval]=\"40\"></obl-type-text>\n } @else {\n {{ label() }}\n }\n </legend>\n }\n\n @if (type() === 'search') {\n <obl-icon [width]=\"20\" name=\"search\"></obl-icon>\n }\n\n <ng-content select=\"[prefix]\"></ng-content>\n\n <ng-content></ng-content>\n\n <ng-content select=\"[suffix]\"></ng-content>\n\n @if (type() === 'number' && (inputStep() !== 'any' || step())) {\n <button class=\"btn-text\" [attr.small]=\"small\" oblButton [attr.disabled]=\"disabled()\" (click)=\"stepUp()\">\n <obl-icon [width]=\"20\" name=\"add\"></obl-icon>\n </button>\n <button class=\"btn-text\" [attr.small]=\"small\" oblButton [attr.disabled]=\"disabled()\" (click)=\"stepDown()\">\n <obl-icon [width]=\"20\" name=\"subtract\"></obl-icon>\n </button>\n }\n @if (cancellable() && getValue().length) {\n <button class=\"btn-text\" [attr.small]=\"small\" oblButton [attr.disabled]=\"disabled()\" (click)=\"reset()\">\n <obl-icon [width]=\"15\" name=\"cancel\"></obl-icon>\n </button>\n }\n\n @if (type() === 'file') {\n <button oblButton [attr.small]=\"small\" [attr.disabled]=\"disabled()\" (click)=\"clicked()\">{{ translations()['Browse'] || 'Browse' }}</button>\n @for (file of files; track $index) {\n <button class=\"file\" oblButton [attr.small]=\"small\">\n {{file.name}}\n <button oblButton [attr.disabled]=\"disabled()\" (click)=\"delete($index)\">\n <obl-icon name=\"cancel\" [width]=\"10\"></obl-icon>\n </button>\n </button>\n }\n }\n</fieldset>\n\n@if (errors && !valid()) {\n <div class=\"errors\">\n @for (error of errors | keyvalue; track error.key) {\n @if (error.value) {\n <div class=\"error\">\n <obl-type-text [text]=\"error.key | oblTranslation : translations() : (error.value !== true ? error.value : undefined)\" [interval]=\"30\"></obl-type-text>\n </div>\n }\n }\n </div>\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TextAreaDirective } from './directives/text-area.directive';\n\nimport { IconsModule } from '@obliczeniowo/elementary/icons';\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\nimport { AnimationsModule } from '@obliczeniowo/elementary/animations';\nimport { TextPipesModule } from '@obliczeniowo/elementary/text-pipes';\n\nimport { TextAreaWrapperComponent } from './components/text-areawrapper/textarea-wrapper.component';\nimport { InputDirective } from './directives/input.directive';\nimport { InputWrapperComponent } from './components/input-wrapper/input-wrapper.component';\n\n@NgModule({\n declarations: [\n InputDirective,\n InputWrapperComponent,\n TextAreaDirective,\n TextAreaWrapperComponent\n ],\n imports: [\n CommonModule,\n ButtonsModule,\n IconsModule,\n AnimationsModule,\n AnimationsModule,\n TextPipesModule,\n ],\n exports: [\n InputDirective,\n TextAreaDirective,\n InputWrapperComponent,\n TextAreaWrapperComponent\n ]\n})\nexport class InputModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.InputWrappersDefaultSettingsService","i2","i3","i2.InputWrappersDefaultSettingsService","i6"],"mappings":"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"}