@neural-ui/core 1.8.0 → 1.8.1

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.
@@ -60,6 +60,10 @@ class NeuInlineEditorComponent {
60
60
  effect(() => {
61
61
  this._setValue(this.value(), false);
62
62
  });
63
+ effect(() => {
64
+ this.isDisabled();
65
+ this._syncDisabledState();
66
+ });
63
67
  effect(() => {
64
68
  if (this.startInEdit() && !this.editing()) {
65
69
  this.beginEdit();
@@ -205,7 +209,6 @@ class NeuInlineEditorComponent {
205
209
  [size]="size()"
206
210
  [floatingLabel]="false"
207
211
  [placeholder]="placeholder()"
208
- [disabled]="isDisabled()"
209
212
  />
210
213
  }
211
214
  @case ('number') {
@@ -224,7 +227,6 @@ class NeuInlineEditorComponent {
224
227
  [formControl]="stringControl"
225
228
  [size]="size()"
226
229
  [label]="placeholder()"
227
- [disabled]="isDisabled()"
228
230
  [rows]="rows()"
229
231
  />
230
232
  }
@@ -234,7 +236,6 @@ class NeuInlineEditorComponent {
234
236
  [formControl]="stringControl"
235
237
  [size]="size()"
236
238
  [placeholder]="placeholder()"
237
- [disabled]="isDisabled()"
238
239
  />
239
240
  }
240
241
  @default {
@@ -244,7 +245,6 @@ class NeuInlineEditorComponent {
244
245
  [size]="size()"
245
246
  [floatingLabel]="false"
246
247
  [placeholder]="placeholder()"
247
- [disabled]="isDisabled()"
248
248
  />
249
249
  }
250
250
  }
@@ -330,7 +330,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
330
330
  [size]="size()"
331
331
  [floatingLabel]="false"
332
332
  [placeholder]="placeholder()"
333
- [disabled]="isDisabled()"
334
333
  />
335
334
  }
336
335
  @case ('number') {
@@ -349,7 +348,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
349
348
  [formControl]="stringControl"
350
349
  [size]="size()"
351
350
  [label]="placeholder()"
352
- [disabled]="isDisabled()"
353
351
  [rows]="rows()"
354
352
  />
355
353
  }
@@ -359,7 +357,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
359
357
  [formControl]="stringControl"
360
358
  [size]="size()"
361
359
  [placeholder]="placeholder()"
362
- [disabled]="isDisabled()"
363
360
  />
364
361
  }
365
362
  @default {
@@ -369,7 +366,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
369
366
  [size]="size()"
370
367
  [floatingLabel]="false"
371
368
  [placeholder]="placeholder()"
372
- [disabled]="isDisabled()"
373
369
  />
374
370
  }
375
371
  }
@@ -1 +1 @@
1
- {"version":3,"file":"neural-ui-core-inline-editor.mjs","sources":["../../../../projects/ui-core/inline-editor/neu-inline-editor.component.ts","../../../../projects/ui-core/inline-editor/neural-ui-core-inline-editor.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NeuButtonComponent } from '@neural-ui/core/button';\nimport { NeuIconComponent } from '@neural-ui/core/icon';\nimport { NeuInputComponent } from '@neural-ui/core/input';\nimport { NeuDateInputComponent } from '@neural-ui/core/date-input';\nimport { NeuNumberInputComponent } from '@neural-ui/core/number-input';\nimport { NeuSelectComponent, NeuSelectOption } from '@neural-ui/core/select';\nimport { NeuTextareaComponent } from '@neural-ui/core/textarea';\n\nexport type NeuInlineEditorType = 'text' | 'number' | 'select' | 'textarea' | 'date';\nexport type NeuInlineEditorSize = 'sm' | 'md' | 'lg';\n\nexport interface NeuInlineEditorCommitEvent<T = string | number | null> {\n previousValue: T;\n value: T;\n}\n\n@Component({\n selector: 'neu-inline-editor',\n imports: [\n ReactiveFormsModule,\n NeuButtonComponent,\n NeuIconComponent,\n NeuInputComponent,\n NeuDateInputComponent,\n NeuNumberInputComponent,\n NeuSelectComponent,\n NeuTextareaComponent,\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NeuInlineEditorComponent),\n multi: true,\n },\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.aria-disabled]': 'isDisabled()',\n },\n template: `\n @if (editing()) {\n <div\n class=\"neu-inline-editor__edit\"\n (keydown)=\"onEditKeydown($event)\"\n (focusout)=\"onEditFocusout($event)\"\n >\n @switch (type()) {\n @case ('select') {\n <neu-select\n class=\"neu-inline-editor__control\"\n [options]=\"options()\"\n [formControl]=\"stringControl\"\n [size]=\"size()\"\n [floatingLabel]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n />\n }\n @case ('number') {\n <neu-number-input\n class=\"neu-inline-editor__control\"\n [formControl]=\"numberControl\"\n [size]=\"size()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n />\n }\n @case ('textarea') {\n <neu-textarea\n class=\"neu-inline-editor__control\"\n [formControl]=\"stringControl\"\n [size]=\"size()\"\n [label]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [rows]=\"rows()\"\n />\n }\n @case ('date') {\n <neu-date-input\n class=\"neu-inline-editor__control\"\n [formControl]=\"stringControl\"\n [size]=\"size()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n />\n }\n @default {\n <neu-input\n class=\"neu-inline-editor__control\"\n [formControl]=\"stringControl\"\n [size]=\"size()\"\n [floatingLabel]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n />\n }\n }\n\n <div class=\"neu-inline-editor__actions\">\n <button\n neu-button\n type=\"button\"\n variant=\"primary\"\n [size]=\"size()\"\n icon=\"lucideCheck\"\n [iconOnly]=\"true\"\n [ariaLabel]=\"saveLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"commit()\"\n ></button>\n <button\n neu-button\n type=\"button\"\n variant=\"ghost\"\n [size]=\"size()\"\n icon=\"lucideX\"\n [iconOnly]=\"true\"\n [ariaLabel]=\"cancelLabel()\"\n (click)=\"cancel()\"\n ></button>\n </div>\n </div>\n } @else {\n <button\n neu-button\n class=\"neu-inline-editor__display\"\n type=\"button\"\n variant=\"ghost\"\n [size]=\"size()\"\n [disabled]=\"isDisabled() || readonly()\"\n [attr.aria-label]=\"editLabel()\"\n (click)=\"beginEdit()\"\n >\n <span class=\"neu-inline-editor__value\" [class.neu-inline-editor__value--empty]=\"isEmpty()\">\n {{ displayValue() }}\n </span>\n @if (!readonly()) {\n <neu-icon name=\"lucidePencil\" size=\"14px\" aria-hidden=\"true\" />\n }\n </button>\n }\n `,\n styleUrl: './neu-inline-editor.component.scss',\n})\nexport class NeuInlineEditorComponent implements ControlValueAccessor {\n private readonly _host = inject(ElementRef<HTMLElement>);\n\n readonly value = input<string | number | null>(null);\n readonly type = input<NeuInlineEditorType>('text');\n readonly size = input<NeuInlineEditorSize>('sm');\n readonly options = input<NeuSelectOption[]>([]);\n readonly placeholder = input('');\n readonly emptyLabel = input('Empty');\n readonly editLabel = input('Edit value');\n readonly saveLabel = input('Save value');\n readonly cancelLabel = input('Cancel edit');\n readonly disabled = input(false);\n readonly readonly = input(false);\n readonly startInEdit = input(false);\n readonly saveOnBlur = input(false);\n readonly min = input(-Infinity);\n readonly max = input(Infinity);\n readonly step = input(1);\n readonly rows = input(3);\n\n readonly valueChange = output<string | number | null>();\n readonly editStart = output<string | number | null>();\n readonly editCancel = output<string | number | null>();\n readonly editCommit = output<NeuInlineEditorCommitEvent>();\n\n readonly stringControl = new FormControl<string | null>(null);\n readonly numberControl = new FormControl<number>(0, { nonNullable: true });\n readonly editing = signal(false);\n private readonly _value = signal<string | number | null>(null);\n private readonly _snapshot = signal<string | number | null>(null);\n private readonly _cvaDisabled = signal(false);\n private _onChange: (value: string | number | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly isDisabled = computed(() => this.disabled() || this._cvaDisabled());\n readonly isEmpty = computed(() => {\n const value = this._value();\n return value === null || value === undefined || value === '';\n });\n readonly displayValue = computed(() => {\n if (this.isEmpty()) return this.emptyLabel();\n const current = this._value();\n if (this.type() === 'select') {\n return this.options().find((option) => option.value === current)?.label ?? String(current);\n }\n return String(current);\n });\n\n constructor() {\n effect(() => {\n this._setValue(this.value(), false);\n });\n\n effect(() => {\n if (this.startInEdit() && !this.editing()) {\n this.beginEdit();\n }\n });\n\n this.stringControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {\n if (this.type() !== 'number') {\n this._value.set(value);\n }\n });\n this.numberControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {\n if (this.type() === 'number') {\n this._value.set(Number.isFinite(value) ? value : null);\n }\n });\n }\n\n writeValue(value: string | number | null): void {\n this._setValue(value, false);\n }\n\n registerOnChange(fn: (value: string | number | null) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._cvaDisabled.set(isDisabled);\n this._syncDisabledState();\n }\n\n beginEdit(): void {\n if (this.isDisabled() || this.readonly()) return;\n this._snapshot.set(this._value());\n this._syncControls(this._value());\n this.editing.set(true);\n this.editStart.emit(this._value());\n queueMicrotask(() => this._focusFirstControl());\n }\n\n commit(): void {\n if (this.isDisabled()) return;\n const previousValue = this._snapshot();\n const value = this.type() === 'number' ? this.numberControl.value : this.stringControl.value;\n const normalized = this._normalizeValue(value);\n this._setValue(normalized, true);\n this.editing.set(false);\n this._onTouched();\n this.editCommit.emit({ previousValue, value: normalized });\n }\n\n cancel(): void {\n const previousValue = this._snapshot();\n this._setValue(previousValue, false);\n this.editing.set(false);\n this._onTouched();\n this.editCancel.emit(previousValue);\n }\n\n onEditKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.cancel();\n return;\n }\n if (event.key === 'Enter' && this.type() !== 'textarea') {\n event.preventDefault();\n this.commit();\n }\n }\n\n onEditFocusout(event: FocusEvent): void {\n if (!this.saveOnBlur() || !this.editing()) return;\n const nextTarget = event.relatedTarget as Node | null;\n if (nextTarget && this._host.nativeElement.contains(nextTarget)) return;\n queueMicrotask(() => {\n if (this.editing()) {\n this.commit();\n }\n });\n }\n\n hostClasses(): Record<string, boolean> {\n return {\n 'neu-inline-editor': true,\n [`neu-inline-editor--${this.size()}`]: true,\n 'neu-inline-editor--editing': this.editing(),\n 'neu-inline-editor--disabled': this.isDisabled(),\n 'neu-inline-editor--readonly': this.readonly(),\n };\n }\n\n private _setValue(value: string | number | null | undefined, emit: boolean): void {\n const normalized = this._normalizeValue(value);\n this._value.set(normalized);\n this._syncControls(normalized);\n if (emit) {\n this.valueChange.emit(normalized);\n this._onChange(normalized);\n }\n }\n\n private _normalizeValue(value: string | number | null | undefined): string | number | null {\n if (value === undefined) return null;\n if (this.type() === 'number') {\n const next = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(next) ? next : null;\n }\n return value === null ? null : String(value);\n }\n\n private _syncControls(value: string | number | null): void {\n this.stringControl.setValue(value === null ? null : String(value), { emitEvent: false });\n this.numberControl.setValue(typeof value === 'number' ? value : Number(value ?? 0), {\n emitEvent: false,\n });\n this._syncDisabledState();\n }\n\n private _syncDisabledState(): void {\n const method = this.isDisabled() ? 'disable' : 'enable';\n this.stringControl[method]({ emitEvent: false });\n this.numberControl[method]({ emitEvent: false });\n }\n\n private _focusFirstControl(): void {\n const control = (this._host.nativeElement as HTMLElement).querySelector(\n '.neu-input__field, .neu-number-input__field, .neu-select__trigger, .neu-textarea__field',\n ) as HTMLElement | null;\n control?.focus();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"neural-ui-core-inline-editor.mjs","sources":["../../../../projects/ui-core/inline-editor/neu-inline-editor.component.ts","../../../../projects/ui-core/inline-editor/neural-ui-core-inline-editor.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NeuButtonComponent } from '@neural-ui/core/button';\nimport { NeuIconComponent } from '@neural-ui/core/icon';\nimport { NeuInputComponent } from '@neural-ui/core/input';\nimport { NeuDateInputComponent } from '@neural-ui/core/date-input';\nimport { NeuNumberInputComponent } from '@neural-ui/core/number-input';\nimport { NeuSelectComponent, NeuSelectOption } from '@neural-ui/core/select';\nimport { NeuTextareaComponent } from '@neural-ui/core/textarea';\n\nexport type NeuInlineEditorType = 'text' | 'number' | 'select' | 'textarea' | 'date';\nexport type NeuInlineEditorSize = 'sm' | 'md' | 'lg';\n\nexport interface NeuInlineEditorCommitEvent<T = string | number | null> {\n previousValue: T;\n value: T;\n}\n\n@Component({\n selector: 'neu-inline-editor',\n imports: [\n ReactiveFormsModule,\n NeuButtonComponent,\n NeuIconComponent,\n NeuInputComponent,\n NeuDateInputComponent,\n NeuNumberInputComponent,\n NeuSelectComponent,\n NeuTextareaComponent,\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NeuInlineEditorComponent),\n multi: true,\n },\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.aria-disabled]': 'isDisabled()',\n },\n template: `\n @if (editing()) {\n <div\n class=\"neu-inline-editor__edit\"\n (keydown)=\"onEditKeydown($event)\"\n (focusout)=\"onEditFocusout($event)\"\n >\n @switch (type()) {\n @case ('select') {\n <neu-select\n class=\"neu-inline-editor__control\"\n [options]=\"options()\"\n [formControl]=\"stringControl\"\n [size]=\"size()\"\n [floatingLabel]=\"false\"\n [placeholder]=\"placeholder()\"\n />\n }\n @case ('number') {\n <neu-number-input\n class=\"neu-inline-editor__control\"\n [formControl]=\"numberControl\"\n [size]=\"size()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n />\n }\n @case ('textarea') {\n <neu-textarea\n class=\"neu-inline-editor__control\"\n [formControl]=\"stringControl\"\n [size]=\"size()\"\n [label]=\"placeholder()\"\n [rows]=\"rows()\"\n />\n }\n @case ('date') {\n <neu-date-input\n class=\"neu-inline-editor__control\"\n [formControl]=\"stringControl\"\n [size]=\"size()\"\n [placeholder]=\"placeholder()\"\n />\n }\n @default {\n <neu-input\n class=\"neu-inline-editor__control\"\n [formControl]=\"stringControl\"\n [size]=\"size()\"\n [floatingLabel]=\"false\"\n [placeholder]=\"placeholder()\"\n />\n }\n }\n\n <div class=\"neu-inline-editor__actions\">\n <button\n neu-button\n type=\"button\"\n variant=\"primary\"\n [size]=\"size()\"\n icon=\"lucideCheck\"\n [iconOnly]=\"true\"\n [ariaLabel]=\"saveLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"commit()\"\n ></button>\n <button\n neu-button\n type=\"button\"\n variant=\"ghost\"\n [size]=\"size()\"\n icon=\"lucideX\"\n [iconOnly]=\"true\"\n [ariaLabel]=\"cancelLabel()\"\n (click)=\"cancel()\"\n ></button>\n </div>\n </div>\n } @else {\n <button\n neu-button\n class=\"neu-inline-editor__display\"\n type=\"button\"\n variant=\"ghost\"\n [size]=\"size()\"\n [disabled]=\"isDisabled() || readonly()\"\n [attr.aria-label]=\"editLabel()\"\n (click)=\"beginEdit()\"\n >\n <span class=\"neu-inline-editor__value\" [class.neu-inline-editor__value--empty]=\"isEmpty()\">\n {{ displayValue() }}\n </span>\n @if (!readonly()) {\n <neu-icon name=\"lucidePencil\" size=\"14px\" aria-hidden=\"true\" />\n }\n </button>\n }\n `,\n styleUrl: './neu-inline-editor.component.scss',\n})\nexport class NeuInlineEditorComponent implements ControlValueAccessor {\n private readonly _host = inject(ElementRef<HTMLElement>);\n\n readonly value = input<string | number | null>(null);\n readonly type = input<NeuInlineEditorType>('text');\n readonly size = input<NeuInlineEditorSize>('sm');\n readonly options = input<NeuSelectOption[]>([]);\n readonly placeholder = input('');\n readonly emptyLabel = input('Empty');\n readonly editLabel = input('Edit value');\n readonly saveLabel = input('Save value');\n readonly cancelLabel = input('Cancel edit');\n readonly disabled = input(false);\n readonly readonly = input(false);\n readonly startInEdit = input(false);\n readonly saveOnBlur = input(false);\n readonly min = input(-Infinity);\n readonly max = input(Infinity);\n readonly step = input(1);\n readonly rows = input(3);\n\n readonly valueChange = output<string | number | null>();\n readonly editStart = output<string | number | null>();\n readonly editCancel = output<string | number | null>();\n readonly editCommit = output<NeuInlineEditorCommitEvent>();\n\n readonly stringControl = new FormControl<string | null>(null);\n readonly numberControl = new FormControl<number>(0, { nonNullable: true });\n readonly editing = signal(false);\n private readonly _value = signal<string | number | null>(null);\n private readonly _snapshot = signal<string | number | null>(null);\n private readonly _cvaDisabled = signal(false);\n private _onChange: (value: string | number | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly isDisabled = computed(() => this.disabled() || this._cvaDisabled());\n readonly isEmpty = computed(() => {\n const value = this._value();\n return value === null || value === undefined || value === '';\n });\n readonly displayValue = computed(() => {\n if (this.isEmpty()) return this.emptyLabel();\n const current = this._value();\n if (this.type() === 'select') {\n return this.options().find((option) => option.value === current)?.label ?? String(current);\n }\n return String(current);\n });\n\n constructor() {\n effect(() => {\n this._setValue(this.value(), false);\n });\n\n effect(() => {\n this.isDisabled();\n this._syncDisabledState();\n });\n\n effect(() => {\n if (this.startInEdit() && !this.editing()) {\n this.beginEdit();\n }\n });\n\n this.stringControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {\n if (this.type() !== 'number') {\n this._value.set(value);\n }\n });\n this.numberControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {\n if (this.type() === 'number') {\n this._value.set(Number.isFinite(value) ? value : null);\n }\n });\n }\n\n writeValue(value: string | number | null): void {\n this._setValue(value, false);\n }\n\n registerOnChange(fn: (value: string | number | null) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._cvaDisabled.set(isDisabled);\n this._syncDisabledState();\n }\n\n beginEdit(): void {\n if (this.isDisabled() || this.readonly()) return;\n this._snapshot.set(this._value());\n this._syncControls(this._value());\n this.editing.set(true);\n this.editStart.emit(this._value());\n queueMicrotask(() => this._focusFirstControl());\n }\n\n commit(): void {\n if (this.isDisabled()) return;\n const previousValue = this._snapshot();\n const value = this.type() === 'number' ? this.numberControl.value : this.stringControl.value;\n const normalized = this._normalizeValue(value);\n this._setValue(normalized, true);\n this.editing.set(false);\n this._onTouched();\n this.editCommit.emit({ previousValue, value: normalized });\n }\n\n cancel(): void {\n const previousValue = this._snapshot();\n this._setValue(previousValue, false);\n this.editing.set(false);\n this._onTouched();\n this.editCancel.emit(previousValue);\n }\n\n onEditKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.cancel();\n return;\n }\n if (event.key === 'Enter' && this.type() !== 'textarea') {\n event.preventDefault();\n this.commit();\n }\n }\n\n onEditFocusout(event: FocusEvent): void {\n if (!this.saveOnBlur() || !this.editing()) return;\n const nextTarget = event.relatedTarget as Node | null;\n if (nextTarget && this._host.nativeElement.contains(nextTarget)) return;\n queueMicrotask(() => {\n if (this.editing()) {\n this.commit();\n }\n });\n }\n\n hostClasses(): Record<string, boolean> {\n return {\n 'neu-inline-editor': true,\n [`neu-inline-editor--${this.size()}`]: true,\n 'neu-inline-editor--editing': this.editing(),\n 'neu-inline-editor--disabled': this.isDisabled(),\n 'neu-inline-editor--readonly': this.readonly(),\n };\n }\n\n private _setValue(value: string | number | null | undefined, emit: boolean): void {\n const normalized = this._normalizeValue(value);\n this._value.set(normalized);\n this._syncControls(normalized);\n if (emit) {\n this.valueChange.emit(normalized);\n this._onChange(normalized);\n }\n }\n\n private _normalizeValue(value: string | number | null | undefined): string | number | null {\n if (value === undefined) return null;\n if (this.type() === 'number') {\n const next = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(next) ? next : null;\n }\n return value === null ? null : String(value);\n }\n\n private _syncControls(value: string | number | null): void {\n this.stringControl.setValue(value === null ? null : String(value), { emitEvent: false });\n this.numberControl.setValue(typeof value === 'number' ? value : Number(value ?? 0), {\n emitEvent: false,\n });\n this._syncDisabledState();\n }\n\n private _syncDisabledState(): void {\n const method = this.isDisabled() ? 'disable' : 'enable';\n this.stringControl[method]({ emitEvent: false });\n this.numberControl[method]({ emitEvent: false });\n }\n\n private _focusFirstControl(): void {\n const control = (this._host.nativeElement as HTMLElement).querySelector(\n '.neu-input__field, .neu-number-input__field, .neu-select__trigger, .neu-textarea__field',\n ) as HTMLElement | null;\n control?.focus();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -45,7 +45,8 @@ class NeuToggleButtonGroupComponent {
45
45
  /** Emite el nuevo valor al cambiar (útil sin formControl) / Emits the new value on change (useful without formControl) */
46
46
  neuChange = output();
47
47
  _value = signal(null, ...(ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []));
48
- _isDisabled = signal(false, ...(ngDevMode ? [{ debugName: "_isDisabled" }] : /* istanbul ignore next */ []));
48
+ _cvaDisabled = signal(false, ...(ngDevMode ? [{ debugName: "_cvaDisabled" }] : /* istanbul ignore next */ []));
49
+ _isDisabled = computed(() => this.disabled() || this._cvaDisabled(), ...(ngDevMode ? [{ debugName: "_isDisabled" }] : /* istanbul ignore next */ []));
49
50
  groupClasses = computed(() => ({
50
51
  'neu-toggle-group': true,
51
52
  [`neu-toggle-group--${this.size()}`]: true,
@@ -96,7 +97,7 @@ class NeuToggleButtonGroupComponent {
96
97
  this._onTouched = fn;
97
98
  }
98
99
  setDisabledState(isDisabled) {
99
- this._isDisabled.set(isDisabled);
100
+ this._cvaDisabled.set(isDisabled);
100
101
  }
101
102
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuToggleButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
102
103
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: NeuToggleButtonGroupComponent, isStandalone: true, selector: "neu-toggle-button-group", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { neuChange: "neuChange" }, host: { classAttribute: "neu-toggle-group-host" }, providers: [
@@ -119,7 +120,7 @@ class NeuToggleButtonGroupComponent {
119
120
  [class.neu-toggle-group__btn--active]="isSelected(opt.value)"
120
121
  [class.neu-toggle-group__btn--disabled]="opt.disabled || _isDisabled()"
121
122
  [attr.aria-pressed]="isSelected(opt.value)"
122
- [disabled]="opt.disabled || _isDisabled() ? '' : null"
123
+ [disabled]="opt.disabled || _isDisabled()"
123
124
  (click)="toggle(opt)"
124
125
  (blur)="onBlur()"
125
126
  >
@@ -154,7 +155,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
154
155
  [class.neu-toggle-group__btn--active]="isSelected(opt.value)"
155
156
  [class.neu-toggle-group__btn--disabled]="opt.disabled || _isDisabled()"
156
157
  [attr.aria-pressed]="isSelected(opt.value)"
157
- [disabled]="opt.disabled || _isDisabled() ? '' : null"
158
+ [disabled]="opt.disabled || _isDisabled()"
158
159
  (click)="toggle(opt)"
159
160
  (blur)="onBlur()"
160
161
  >
@@ -1 +1 @@
1
- {"version":3,"file":"neural-ui-core-toggle-button-group.mjs","sources":["../../../../projects/ui-core/toggle-button-group/neu-toggle-button-group.component.ts","../../../../projects/ui-core/toggle-button-group/neural-ui-core-toggle-button-group.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n TemplateRef,\n ViewEncapsulation,\n computed,\n contentChild,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NeuButtonSize } from '@neural-ui/core/button';\nimport { NeuIconComponent } from '@neural-ui/core/icon';\n\nexport interface NeuToggleOption<T = unknown> {\n /** Texto visible del botón / Visible button text */\n label: string;\n /** Valor asociado a esta opción / Value associated with this option */\n value: T;\n /** Nombre de icono Lucide (opcional) / Lucide icon name (optional) */\n icon?: string;\n /** Deshabilita solo esta opción / Disables this option only */\n disabled?: boolean;\n}\n@Directive({ selector: 'ng-template[neuToggleButtonItem]' })\nexport class NeuToggleButtonItemDirective<T = unknown> { constructor(readonly templateRef: TemplateRef<{ $implicit: NeuToggleOption<T>; selected: boolean }>) {} }\n\n/**\n * NeuralUI ToggleButtonGroup Component\n *\n * Grupo de botones de selección (single o múltiple). / Selection button group (single or multiple).\n * Selector segmentado para selección única o múltiple. / Segmented selector for single or multiple selection.\n *\n * Uso (single):\n * <neu-toggle-button-group [options]=\"opts\" [formControl]=\"valueCtrl\" />\n *\n * Uso (múltiple):\n * <neu-toggle-button-group [options]=\"opts\" [multiple]=\"true\" [formControl]=\"valuesCtrl\" />\n */\n@Component({\n selector: 'neu-toggle-button-group',\n imports: [NeuIconComponent, NgTemplateOutlet],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NeuToggleButtonGroupComponent),\n multi: true,\n },\n ],\n host: { class: 'neu-toggle-group-host' },\n template: `\n <div\n class=\"neu-toggle-group\"\n [class]=\"groupClasses()\"\n role=\"group\"\n [attr.aria-disabled]=\"_isDisabled() || null\"\n >\n @for (opt of options(); track opt.value) {\n <button\n type=\"button\"\n class=\"neu-toggle-group__btn\"\n [class.neu-toggle-group__btn--active]=\"isSelected(opt.value)\"\n [class.neu-toggle-group__btn--disabled]=\"opt.disabled || _isDisabled()\"\n [attr.aria-pressed]=\"isSelected(opt.value)\"\n [disabled]=\"opt.disabled || _isDisabled() ? '' : null\"\n (click)=\"toggle(opt)\"\n (blur)=\"onBlur()\"\n >\n @if (itemTpl()) { <ng-container [ngTemplateOutlet]=\"itemTpl()!.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: opt, selected: isSelected(opt.value) }\" /> } @else if (opt.icon) {\n <neu-icon [name]=\"opt.icon\" size=\"16px\" strokeWidth=\"2\" />\n }\n {{ opt.label }}\n </button>\n }\n </div>\n `,\n styleUrl: './neu-toggle-button-group.component.scss',\n})\nexport class NeuToggleButtonGroupComponent<T = unknown> implements ControlValueAccessor {\n readonly itemTpl = contentChild(NeuToggleButtonItemDirective<T>);\n /** Lista de opciones del grupo / Group option list */\n options = input<NeuToggleOption<T>[]>([]);\n\n /**\n * Permite seleccionar múltiples opciones.\n * - false (por defecto): valor es `T | null`\n * - true: valor es `T[]`\n */\n multiple = input<boolean>(false);\n\n /** Tamaño visual / Visual size */\n size = input<NeuButtonSize>('md');\n\n /** Deshabilita todo el grupo / Disables the entire group */\n disabled = input<boolean>(false);\n\n /** Emite el nuevo valor al cambiar (útil sin formControl) / Emits the new value on change (useful without formControl) */\n neuChange = output<T | T[] | null>();\n\n readonly _value = signal<T | T[] | null>(null);\n readonly _isDisabled = signal(false);\n\n readonly groupClasses = computed(() => ({\n 'neu-toggle-group': true,\n [`neu-toggle-group--${this.size()}`]: true,\n 'neu-toggle-group--disabled': this._isDisabled(),\n }));\n\n isSelected(value: T): boolean {\n const v = this._value();\n if (this.multiple()) {\n return Array.isArray(v) && (v as T[]).includes(value);\n }\n return v === value;\n }\n\n toggle(opt: NeuToggleOption<T>): void {\n if (opt.disabled || this._isDisabled()) return;\n\n let next: T | T[] | null;\n\n if (this.multiple()) {\n const current: T[] = Array.isArray(this._value()) ? (this._value() as T[]) : [];\n const idx = current.indexOf(opt.value);\n next = idx >= 0 ? current.filter((_, i) => i !== idx) : [...current, opt.value];\n } else {\n next = this._value() === opt.value ? null : opt.value;\n }\n\n this._value.set(next);\n this._onChange(next);\n this._onTouched();\n this.neuChange.emit(next);\n }\n\n onBlur(): void {\n this._onTouched();\n }\n\n // ---- CVA ----\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n writeValue(val: T | T[] | null): void {\n if (val === null || val === undefined) {\n this._value.set(this.multiple() ? ([] as T[]) : null);\n } else {\n this._value.set(val);\n }\n }\n\n registerOnChange(fn: (v: unknown) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._isDisabled.set(isDisabled);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"neural-ui-core-toggle-button-group.mjs","sources":["../../../../projects/ui-core/toggle-button-group/neu-toggle-button-group.component.ts","../../../../projects/ui-core/toggle-button-group/neural-ui-core-toggle-button-group.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n TemplateRef,\n ViewEncapsulation,\n computed,\n contentChild,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NeuButtonSize } from '@neural-ui/core/button';\nimport { NeuIconComponent } from '@neural-ui/core/icon';\n\nexport interface NeuToggleOption<T = unknown> {\n /** Texto visible del botón / Visible button text */\n label: string;\n /** Valor asociado a esta opción / Value associated with this option */\n value: T;\n /** Nombre de icono Lucide (opcional) / Lucide icon name (optional) */\n icon?: string;\n /** Deshabilita solo esta opción / Disables this option only */\n disabled?: boolean;\n}\n@Directive({ selector: 'ng-template[neuToggleButtonItem]' })\nexport class NeuToggleButtonItemDirective<T = unknown> { constructor(readonly templateRef: TemplateRef<{ $implicit: NeuToggleOption<T>; selected: boolean }>) {} }\n\n/**\n * NeuralUI ToggleButtonGroup Component\n *\n * Grupo de botones de selección (single o múltiple). / Selection button group (single or multiple).\n * Selector segmentado para selección única o múltiple. / Segmented selector for single or multiple selection.\n *\n * Uso (single):\n * <neu-toggle-button-group [options]=\"opts\" [formControl]=\"valueCtrl\" />\n *\n * Uso (múltiple):\n * <neu-toggle-button-group [options]=\"opts\" [multiple]=\"true\" [formControl]=\"valuesCtrl\" />\n */\n@Component({\n selector: 'neu-toggle-button-group',\n imports: [NeuIconComponent, NgTemplateOutlet],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NeuToggleButtonGroupComponent),\n multi: true,\n },\n ],\n host: { class: 'neu-toggle-group-host' },\n template: `\n <div\n class=\"neu-toggle-group\"\n [class]=\"groupClasses()\"\n role=\"group\"\n [attr.aria-disabled]=\"_isDisabled() || null\"\n >\n @for (opt of options(); track opt.value) {\n <button\n type=\"button\"\n class=\"neu-toggle-group__btn\"\n [class.neu-toggle-group__btn--active]=\"isSelected(opt.value)\"\n [class.neu-toggle-group__btn--disabled]=\"opt.disabled || _isDisabled()\"\n [attr.aria-pressed]=\"isSelected(opt.value)\"\n [disabled]=\"opt.disabled || _isDisabled()\"\n (click)=\"toggle(opt)\"\n (blur)=\"onBlur()\"\n >\n @if (itemTpl()) { <ng-container [ngTemplateOutlet]=\"itemTpl()!.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: opt, selected: isSelected(opt.value) }\" /> } @else if (opt.icon) {\n <neu-icon [name]=\"opt.icon\" size=\"16px\" strokeWidth=\"2\" />\n }\n {{ opt.label }}\n </button>\n }\n </div>\n `,\n styleUrl: './neu-toggle-button-group.component.scss',\n})\nexport class NeuToggleButtonGroupComponent<T = unknown> implements ControlValueAccessor {\n readonly itemTpl = contentChild(NeuToggleButtonItemDirective<T>);\n /** Lista de opciones del grupo / Group option list */\n options = input<NeuToggleOption<T>[]>([]);\n\n /**\n * Permite seleccionar múltiples opciones.\n * - false (por defecto): valor es `T | null`\n * - true: valor es `T[]`\n */\n multiple = input<boolean>(false);\n\n /** Tamaño visual / Visual size */\n size = input<NeuButtonSize>('md');\n\n /** Deshabilita todo el grupo / Disables the entire group */\n disabled = input<boolean>(false);\n\n /** Emite el nuevo valor al cambiar (útil sin formControl) / Emits the new value on change (useful without formControl) */\n neuChange = output<T | T[] | null>();\n\n readonly _value = signal<T | T[] | null>(null);\n private readonly _cvaDisabled = signal(false);\n readonly _isDisabled = computed(() => this.disabled() || this._cvaDisabled());\n\n readonly groupClasses = computed(() => ({\n 'neu-toggle-group': true,\n [`neu-toggle-group--${this.size()}`]: true,\n 'neu-toggle-group--disabled': this._isDisabled(),\n }));\n\n isSelected(value: T): boolean {\n const v = this._value();\n if (this.multiple()) {\n return Array.isArray(v) && (v as T[]).includes(value);\n }\n return v === value;\n }\n\n toggle(opt: NeuToggleOption<T>): void {\n if (opt.disabled || this._isDisabled()) return;\n\n let next: T | T[] | null;\n\n if (this.multiple()) {\n const current: T[] = Array.isArray(this._value()) ? (this._value() as T[]) : [];\n const idx = current.indexOf(opt.value);\n next = idx >= 0 ? current.filter((_, i) => i !== idx) : [...current, opt.value];\n } else {\n next = this._value() === opt.value ? null : opt.value;\n }\n\n this._value.set(next);\n this._onChange(next);\n this._onTouched();\n this.neuChange.emit(next);\n }\n\n onBlur(): void {\n this._onTouched();\n }\n\n // ---- CVA ----\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n writeValue(val: T | T[] | null): void {\n if (val === null || val === undefined) {\n this._value.set(this.multiple() ? ([] as T[]) : null);\n } else {\n this._value.set(val);\n }\n }\n\n registerOnChange(fn: (v: unknown) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._cvaDisabled.set(isDisabled);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;MA6Ba,4BAA4B,CAAA;AAAqC,IAAA,WAAA;AAArB,IAAA,WAAA,CAAqB,WAA8E,EAAA;QAA9E,IAAA,CAAA,WAAW,GAAX,WAAW;IAAsE;wGAAlJ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;mBAAC,EAAE,QAAQ,EAAE,kCAAkC,EAAE;;AAG3D;;;;;;;;;;;AAWG;MA0CU,6BAA6B,CAAA;AAC/B,IAAA,OAAO,GAAG,YAAY,EAAC,4BAA+B,+EAAC;;AAEhE,IAAA,OAAO,GAAG,KAAK,CAAuB,EAAE,8EAAC;AAEzC;;;;AAIG;AACH,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAGhC,IAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,2EAAC;;AAGjC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;IAGhC,SAAS,GAAG,MAAM,EAAkB;AAE3B,IAAA,MAAM,GAAG,MAAM,CAAiB,IAAI,6EAAC;AAC7B,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;AACpC,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,kFAAC;AAEpE,IAAA,YAAY,GAAG,QAAQ,CAAC,OAAO;AACtC,QAAA,kBAAkB,EAAE,IAAI;QACxB,CAAC,CAAA,kBAAA,EAAqB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,GAAG,IAAI;AAC1C,QAAA,4BAA4B,EAAE,IAAI,CAAC,WAAW,EAAE;AACjD,KAAA,CAAC,mFAAC;AAEH,IAAA,UAAU,CAAC,KAAQ,EAAA;AACjB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAK,CAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvD;QACA,OAAO,CAAC,KAAK,KAAK;IACpB;AAEA,IAAA,MAAM,CAAC,GAAuB,EAAA;AAC5B,QAAA,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE;AAExC,QAAA,IAAI,IAAoB;AAExB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,MAAM,OAAO,GAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAI,IAAI,CAAC,MAAM,EAAU,GAAG,EAAE;YAC/E,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACtC,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC;QACjF;aAAO;AACL,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC,KAAK;QACvD;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,UAAU,EAAE;IACnB;;AAIQ,IAAA,SAAS,GAAyB,MAAK,EAAE,CAAC;AAC1C,IAAA,UAAU,GAAe,MAAK,EAAE,CAAC;AAEzC,IAAA,UAAU,CAAC,GAAmB,EAAA;QAC5B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAI,EAAU,GAAG,IAAI,CAAC;QACvD;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QACtB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;IACnC;wGArFW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EApC7B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC5D,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,GA+B+B,4BAA+B,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7BrD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8pEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EApCS,gBAAgB,yHAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAuCjC,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAzCzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,OAAA,EAC1B,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAA,aAAA,EAC9B,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,mCAAmC,CAAC;AAC5D,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,IAAA,EACK,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAA,QAAA,EAC9B;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,8pEAAA,CAAA,EAAA;4FAI+B,4BAA+B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACrFjE;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neural-ui/core",
3
- "version": "1.8.0",
3
+ "version": "1.8.1",
4
4
  "description": "Modern Angular UI component library built with signals, standalone components, and OnPush change detection.",
5
5
  "author": "PedroMorenoTrujillo",
6
6
  "keywords": [
@@ -54,7 +54,8 @@ declare class NeuToggleButtonGroupComponent<T = unknown> implements ControlValue
54
54
  /** Emite el nuevo valor al cambiar (útil sin formControl) / Emits the new value on change (useful without formControl) */
55
55
  neuChange: _angular_core.OutputEmitterRef<T | T[] | null>;
56
56
  readonly _value: _angular_core.WritableSignal<T | T[] | null>;
57
- readonly _isDisabled: _angular_core.WritableSignal<boolean>;
57
+ private readonly _cvaDisabled;
58
+ readonly _isDisabled: _angular_core.Signal<boolean>;
58
59
  readonly groupClasses: _angular_core.Signal<{
59
60
  [x: string]: boolean;
60
61
  'neu-toggle-group': boolean;