UNPKG

@sixbell-telco/sdk

Version:

A collection of reusable components designed for use in Sixbell Telco Angular projects

1 lines 20.6 kB
{"version":3,"file":"sixbell-telco-sdk-components-forms-input.mjs","sources":["../../../projects/sdk/components/forms/input/input-content/input-content.component.ts","../../../projects/sdk/components/forms/input/input-content/input-content.component.html","../../../projects/sdk/components/forms/input/src/input.component.ts","../../../projects/sdk/components/forms/input/src/input.component.html","../../../projects/sdk/components/forms/input/sixbell-telco-sdk-components-forms-input.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\ntype InputContentAligment = 'start' | 'end';\n\n@Component({\n\tselector: 'st-input-content',\n\timports: [CommonModule],\n\ttemplateUrl: './input-content.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputContentComponent {\n\talignment = input.required<InputContentAligment>();\n}\n","@let alignmentVar = alignment();\n\n<!-- <div [class]=\"aligmentVar === 'start' ? 'st-input-content-left' : 'st-input-content-right'\">\n\t<ng-content></ng-content>\n</div> -->\n<!-- input-content.component.html -->\n<div class=\"inline-flex items-center align-top\" [class.justify-start]=\"alignmentVar === 'start'\" [class.justify-end]=\"alignmentVar === 'end'\">\n\t<ng-content></ng-content>\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, computed, effect, input, model, output, signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, FormGroup, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { AutofocusDirective } from '@sixbell-telco/sdk/directives/auto-focus';\nimport { OnlyNumbersDirective } from '@sixbell-telco/sdk/directives/only-numbers';\nimport { cn } from '@sixbell-telco/sdk/utils/cn';\nimport { cva } from 'class-variance-authority';\nimport { debounceTime, distinctUntilChanged, skip, startWith, Subject, switchMap } from 'rxjs';\n\n/**\n * @internal\n * Generates base input classes with style variants using class-variance-authority\n */\nconst inputComponent = cva(['font-body', 'w-full', 'input', 'leading-normal', 'grow'], {\n\tvariants: {\n\t\tvariant: {\n\t\t\tprimary: ['input-primary'],\n\t\t\tsecondary: ['input-secondary'],\n\t\t\ttertiary: ['input-tertiary'],\n\t\t\taccent: ['input-accent'],\n\t\t\tinfo: ['input-info'],\n\t\t\tsuccess: ['input-success'],\n\t\t\twarning: ['input-warning'],\n\t\t\terror: ['input-error'],\n\t\t},\n\t\tsize: {\n\t\t\txs: ['input-xs'],\n\t\t\tsm: ['input-sm'],\n\t\t\tmd: ['input-md'],\n\t\t\tlg: ['input-lg'],\n\t\t\txl: ['input-xl'],\n\t\t},\n\t},\n\tcompoundVariants: [],\n\tdefaultVariants: {\n\t\tvariant: 'secondary',\n\t\tsize: 'md',\n\t},\n});\n\n/** Possible input style variants */\nexport type InputVariantProps = 'primary' | 'secondary' | 'tertiary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | null | undefined;\n\n/** Possible input size variants */\nexport type InputSizeProps = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | null | undefined;\n\n/** Configuration object for input styling */\nexport type InputProps = {\n\tvariant?: InputVariantProps;\n\tsize?: InputSizeProps;\n};\n\n/** Native HTML input types supported by the component */\ntype HTMLNativeInputType = 'text' | 'email' | 'number' | 'password' | 'file';\n\n/**\n * A customizable input component with validation, debouncing, and styling variants\n *\n * @remarks\n * Implements ControlValueAccessor for seamless integration with Angular forms.\n * Supports both template-driven and reactive forms, with automatic validation styling.\n *\n * @example\n * ```html\n * <!-- Basic usage -->\n * <st-input label=\"Username\" [(value)]=\"username\"></st-input>\n * ```\n *\n * @example\n * ```html\n * <!-- With validation and custom styling -->\n * <st-input\n * variant=\"secondary\"\n * size=\"lg\"\n * label=\"Email\"\n * type=\"email\"\n * [parentForm]=\"userForm\"\n * formControlName=\"email\"\n * ></st-input>\n * ```\n */\n@Component({\n\tselector: 'st-input',\n\timports: [FormsModule, AutofocusDirective, OnlyNumbersDirective],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: InputComponent,\n\t\t\tmulti: true,\n\t\t},\n\t],\n\ttemplateUrl: './input.component.html',\n})\nexport class InputComponent implements ControlValueAccessor {\n\t/**\n\t * Input style variant\n\t * @defaultValue 'secondary'\n\t */\n\tvariant = input<InputVariantProps>('secondary');\n\n\t/**\n\t * Input size variant\n\t * @defaultValue 'md'\n\t */\n\tsize = input<InputSizeProps>('md');\n\n\t/**\n\t * Label text displayed above the input\n\t */\n\tlabel = input<string>('');\n\n\t/**\n\t * HTML input type\n\t * @defaultValue 'text'\n\t */\n\ttype = input<HTMLNativeInputType>('text');\n\n\t/**\n\t * HTML name attribute for the input\n\t */\n\tname = input<string | null>(null);\n\n\t/**\n\t * Input placeholder text\n\t */\n\tplaceholder = input<string>('');\n\n\t/**\n\t * Whether the input is read-only\n\t * @defaultValue false\n\t */\n\treadonly = input<boolean>(false);\n\n\tfocus = input<boolean>(false);\n\n\t/**\n\t * Whether to restrict input to numeric characters only\n\t * @defaultValue false\n\t * @deprecated Use `onlyNumbers` instead. This input is maintained for backward compatibility.\n\t */\n\tjustNumbers = input<boolean>(false);\n\n\t/**\n\t * Whether to restrict input to numeric characters only\n\t * @defaultValue false\n\t */\n\tonlyNumbers = input<boolean>(false);\n\n\t/**\n\t * Whether to use ghost (transparent) styling\n\t * @defaultValue false\n\t */\n\tghost = input<boolean>(false);\n\n\t/**\n\t * Two-way bindable input value\n\t */\n\tvalue = model<string>('');\n\n\t/**\n\t * Parent form group for reactive forms\n\t */\n\tparentForm = input<FormGroup | null>(null);\n\n\t/**\n\t * Form control name for reactive forms\n\t */\n\tformControlName = input<string>('');\n\n\t// ControlValueAccessor implementation\n\tprivate onControlChange: any = () => {};\n\tprivate onControlTouch: any = () => {};\n\n\t/**\n\t * Whether the input is disabled\n\t * @defaultValue false\n\t */\n\tdisabled = model<boolean>(false);\n\n\t/**\n\t * Event emitted when Enter key is pressed\n\t */\n\tenterPressed = output<string>();\n\n\t/**\n\t * Event emitted when input loses focus\n\t */\n\tblurred = output<string>();\n\n\t/**\n\t * Event emitted with debounced value changes\n\t */\n\tvalueDebounced = output<string>();\n\n\t/**\n\t * Debounce time in milliseconds for value changes\n\t * @defaultValue 500\n\t */\n\tdebounceTime = input(500);\n\n\t// Internal implementation details\n\tprivate blurTrigger = signal(0);\n\tprivate debounceAction$ = new Subject<number>();\n\tprivate debounceTimeEffect = effect(() => {\n\t\tthis.debounceAction$.next(this.debounceTime());\n\t});\n\tprivate value$ = toObservable(this.value);\n\n\tconstructor() {\n\t\tthis.setupDebounce();\n\t}\n\n\t/**\n\t * @internal\n\t * Computed base input classes\n\t */\n\tcomponentClass = computed(() => {\n\t\treturn cn(\n\t\t\tinputComponent({\n\t\t\t\tvariant: this.variant(),\n\t\t\t\tsize: this.size(),\n\t\t\t}),\n\t\t\t{\n\t\t\t\t'input-ghost': this.ghost(),\n\t\t\t},\n\t\t);\n\t});\n\n\t/**\n\t * @internal\n\t * Computed error state classes\n\t */\n\terrorClass = computed(() => {\n\t\treturn cn(\n\t\t\tinputComponent({\n\t\t\t\tvariant: 'error',\n\t\t\t\tsize: this.size(),\n\t\t\t}),\n\t\t\t{\n\t\t\t\t'input-ghost': this.ghost(),\n\t\t\t},\n\t\t);\n\t});\n\n\t/**\n\t * @internal\n\t * Computed success state classes\n\t */\n\tsuccessClass = computed(() => {\n\t\treturn cn(\n\t\t\tinputComponent({\n\t\t\t\tvariant: 'success',\n\t\t\t\tsize: this.size(),\n\t\t\t}),\n\t\t\t{\n\t\t\t\t'input-ghost': this.ghost(),\n\t\t\t},\n\t\t);\n\t});\n\n\t// ControlValueAccessor implementation methods\n\twriteValue(obj: any): void {\n\t\tthis.value.set(obj);\n\t}\n\n\tregisterOnChange(fn: any): void {\n\t\tthis.onControlChange = fn;\n\t}\n\n\tregisterOnTouched(fn: any): void {\n\t\tthis.onControlTouch = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabled.set(isDisabled);\n\t}\n\n\t/**\n\t * @internal\n\t * Handles input value changes\n\t */\n\thandleChange() {\n\t\tthis.onControlChange(this.value());\n\t}\n\n\t/**\n\t * @internal\n\t * Handles Enter key press\n\t */\n\thandleEnter() {\n\t\tthis.enterPressed.emit(this.value());\n\t\tthis.onControlChange(this.value());\n\t}\n\n\t/**\n\t * @internal\n\t * Handles blur event\n\t */\n\thandleBlur() {\n\t\tthis.blurred.emit(this.value());\n\t\tthis.onControlTouch();\n\t\tthis.blurTrigger.update((v) => v + 1);\n\t}\n\n\t/** @internal */\n\tprivate formControl = computed(() => this.parentForm()?.get(this.formControlName()) as FormControl | null);\n\t/** @internal */\n\tprivate formControl$ = toObservable(this.formControl);\n\t/** @internal */\n\tprivate statusChanges$ = this.formControl$.pipe(switchMap((control) => control?.statusChanges.pipe(startWith(control.status)) || []));\n\t/** @internal */\n\tprivate stateChanges$ = this.formControl$.pipe(switchMap((control) => control?.valueChanges.pipe(startWith(control.value)) || []));\n\t/** @internal */\n\tprivate statusSignal = toSignal(this.statusChanges$);\n\t/** @internal */\n\tprivate stateSignal = toSignal(this.stateChanges$);\n\n\t/**\n\t * @internal\n\t * Reactive validation class computation\n\t */\n\tvalidationClass = computed(() => {\n\t\tconst control = this.formControl();\n\t\tconst trigger = this.blurTrigger();\n\n\t\tif (!control) return this.componentClass();\n\n\t\tconst isTouched = control.touched || trigger > 0;\n\t\tthis.statusSignal();\n\t\tthis.stateSignal();\n\n\t\tif (control.dirty || isTouched) {\n\t\t\tif (control.invalid) return this.errorClass();\n\t\t\tif (control.valid) return this.successClass();\n\t\t}\n\n\t\treturn this.componentClass();\n\t});\n\n\t/**\n\t * @internal\n\t * Sets up debounced value changes\n\t */\n\tprivate setupDebounce() {\n\t\tthis.debounceAction$\n\t\t\t.pipe(\n\t\t\t\tswitchMap((time: number) => this.value$.pipe(skip(1), debounceTime(time), distinctUntilChanged())),\n\t\t\t\ttakeUntilDestroyed(),\n\t\t\t)\n\t\t\t.subscribe((value) => {\n\t\t\t\tthis.valueDebounced.emit(`${value}`);\n\t\t\t});\n\t}\n}\n","@let labelVar = label();\n\n<fieldset class=\"fieldset p-0\">\n\t@if (labelVar) {\n\t\t<legend class=\"fieldset-legend font-body pt-0 text-pretty\">{{ labelVar }}</legend>\n\t}\n\t<div [class]=\"validationClass()\">\n\t\t<!-- Left content -->\n\t\t<ng-content select=\"st-input-content[alignment='start']\"></ng-content>\n\n\t\t<!-- Input field -->\n\t\t<input\n\t\t\tclass=\"placeholder-base-placeholder w-full grow\"\n\t\t\t[type]=\"type()\"\n\t\t\t[attr.name]=\"name()\"\n\t\t\t[attr.placeholder]=\"placeholder()\"\n\t\t\t[(ngModel)]=\"value\"\n\t\t\t[disabled]=\"disabled()\"\n\t\t\t[readonly]=\"readonly()\"\n\t\t\t(ngModelChange)=\"handleChange()\"\n\t\t\t(keyup.enter)=\"handleEnter()\"\n\t\t\t(blur)=\"handleBlur()\"\n\t\t\t[stOnlyNumbers]=\"onlyNumbers() || justNumbers()\"\n\t\t\t[focus]=\"focus()\"\n\t\t\tstAutofocus\n\t\t/>\n\n\t\t<!-- Right content -->\n\t\t<ng-content select=\"st-input-content[alignment='end']\"></ng-content>\n\t</div>\n\n\t<!-- Hidden label for accessibility -->\n\t<label class=\"sr-only\" [for]=\"name()\">{{ labelVar }}</label>\n\n\t<!-- Additional content -->\n\t<ng-content select=\":not(st-input-content)\"></ng-content>\n</fieldset>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}