@ngstarter-ui/components 21.0.41 → 21.0.42

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.
@@ -21,7 +21,7 @@ class RadioGroupField {
21
21
  return this.config().payload?.['options'] || [];
22
22
  }
23
23
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: RadioGroupField, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: RadioGroupField, isStandalone: true, selector: "ngs-radio-group-field", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: ["ngsRadioGroupField"], ngImport: i0, template: "@if (control() && config()) {\n <div class=\"radio-group-container\">\n @if (config().label) {\n <div class=\"radio-group-label\">{{ config().label }}</div>\n }\n <ngs-radio-group\n [formControl]=\"control()\"\n [class.inline]=\"config().inline\">\n @for (option of options; track option.value) {\n <ngs-radio-button [value]=\"option.value\">{{ option.label }}</ngs-radio-button>\n }\n </ngs-radio-group>\n @if (config().hint && (control().valid || control().invalid && !control().touched)) {\n <ngs-hint>{{ config().hint }}</ngs-hint>\n }\n @if (control().invalid && control().touched) {\n <ngs-error>{{ getErrorMessage() }}</ngs-error>\n }\n </div>\n}\n", styles: [":host{display:block;margin-bottom:calc(var(--spacing, .25rem) * 6)}:host .radio-group-label{display:block;color:var(--ngs-form-field-outlined-label-text-color);font-size:calc(var(--ngs-form-field-outlined-label-text-size) * .75)}:host ngs-radio-group{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 1)}:host ngs-radio-group.inline{flex-direction:row;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 4)}:host ngs-hint{display:block;font-size:var(--ngs-form-field-subscript-text-size, var(--ngs-font-size-xs))}:host ngs-error{display:block;font-size:var(--ngs-form-field-subscript-text-size, var(--ngs-font-size-xs));letter-spacing:var(--ngs-form-field-subscript-text-tracking, normal);font-weight:var(--ngs-form-field-subscript-text-weight, 400)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: RadioButton, selector: "ngs-radio-button", inputs: ["id", "value", "name", "checked", "disabled"], outputs: ["checkedChange", "change"] }, { kind: "component", type: RadioGroup, selector: "ngs-radio-group", inputs: ["disabled", "name", "value"], outputs: ["disabledChange", "valueChange", "change"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: Error, selector: "ngs-error", exportAs: ["ngsError"] }, { kind: "component", type: Hint, selector: "ngs-hint", inputs: ["align"], exportAs: ["ngsHint"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: RadioGroupField, isStandalone: true, selector: "ngs-radio-group-field", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: ["ngsRadioGroupField"], ngImport: i0, template: "@if (control() && config()) {\n <div class=\"radio-group-container\">\n @if (config().label) {\n <div class=\"radio-group-label\">{{ config().label }}</div>\n }\n <ngs-radio-group\n [formControl]=\"control()\"\n [class.inline]=\"config().inline\">\n @for (option of options; track option.value) {\n <ngs-radio-button [value]=\"option.value\">{{ option.label }}</ngs-radio-button>\n }\n </ngs-radio-group>\n @if (config().hint && (control().valid || control().invalid && !control().touched)) {\n <ngs-hint>{{ config().hint }}</ngs-hint>\n }\n @if (control().invalid && control().touched) {\n <ngs-error>{{ getErrorMessage() }}</ngs-error>\n }\n </div>\n}\n", styles: [":host{display:block;margin-bottom:calc(var(--spacing, .25rem) * 6)}:host .radio-group-label{display:block;color:var(--ngs-form-field-outlined-label-text-color);font-size:calc(var(--ngs-form-field-outlined-label-text-size) * .75)}:host ngs-radio-group{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 1)}:host ngs-radio-group.inline{flex-direction:row;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 4)}:host ngs-hint{display:block;font-size:var(--ngs-form-field-subscript-text-size, var(--ngs-font-size-xs))}:host ngs-error{display:block;font-size:var(--ngs-form-field-subscript-text-size, var(--ngs-font-size-xs));letter-spacing:var(--ngs-form-field-subscript-text-tracking, normal);font-weight:var(--ngs-form-field-subscript-text-weight, 400)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: RadioButton, selector: "ngs-radio-button", inputs: ["id", "value", "name", "checked", "disabled"], outputs: ["checkedChange", "change"] }, { kind: "component", type: RadioGroup, selector: "ngs-radio-group", inputs: ["disabled", "name", "orientation", "value"], outputs: ["disabledChange", "valueChange", "change"], exportAs: ["ngsRadioGroup"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: Error, selector: "ngs-error", exportAs: ["ngsError"] }, { kind: "component", type: Hint, selector: "ngs-hint", inputs: ["align"], exportAs: ["ngsHint"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: RadioGroupField, decorators: [{
27
27
  type: Component,
@@ -35,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
35
35
  }], propDecorators: { control: [{ type: i0.Input, args: [{ isSignal: true, alias: "control", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }] } });
36
36
 
37
37
  export { RadioGroupField };
38
- //# sourceMappingURL=ngstarter-ui-components-form-renderer-radio-group-field-lc1V-NeL.mjs.map
38
+ //# sourceMappingURL=ngstarter-ui-components-form-renderer-radio-group-field-DugkPKYU.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-form-renderer-radio-group-field-lc1V-NeL.mjs","sources":["../../../projects/components/form-renderer/src/fields/radio-group-field/radio-group-field.ts","../../../projects/components/form-renderer/src/fields/radio-group-field/radio-group-field.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ComponentConfig } from '../../models/form-config.model';\nimport { RadioButton, RadioGroup } from '@ngstarter-ui/components/radio';\nimport { Error, Hint } from '@ngstarter-ui/components/form-field';\n\n@Component({\n selector: 'ngs-radio-group-field',\n exportAs: 'ngsRadioGroupField',\n imports: [\n RadioButton,\n RadioGroup,\n ReactiveFormsModule,\n Error,\n Hint,\n ],\n templateUrl: './radio-group-field.html',\n styleUrl: './radio-group-field.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RadioGroupField {\n control = input.required<FormControl>();\n config = input.required<ComponentConfig>();\n\n getErrorMessage(): string {\n const errors = this.control().errors;\n if (!errors) {\n return '';\n }\n const errorKey = Object.keys(errors)[0];\n const validator = this.config().validators?.find((v: any) => v.type === errorKey);\n return validator?.message || 'Invalid value';\n }\n\n get options() {\n return this.config().payload?.['options'] || [];\n }\n}\n","@if (control() && config()) {\n <div class=\"radio-group-container\">\n @if (config().label) {\n <div class=\"radio-group-label\">{{ config().label }}</div>\n }\n <ngs-radio-group\n [formControl]=\"control()\"\n [class.inline]=\"config().inline\">\n @for (option of options; track option.value) {\n <ngs-radio-button [value]=\"option.value\">{{ option.label }}</ngs-radio-button>\n }\n </ngs-radio-group>\n @if (config().hint && (control().valid || control().invalid && !control().touched)) {\n <ngs-hint>{{ config().hint }}</ngs-hint>\n }\n @if (control().invalid && control().touched) {\n <ngs-error>{{ getErrorMessage() }}</ngs-error>\n }\n </div>\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-form-renderer-radio-group-field-DugkPKYU.mjs","sources":["../../../projects/components/form-renderer/src/fields/radio-group-field/radio-group-field.ts","../../../projects/components/form-renderer/src/fields/radio-group-field/radio-group-field.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ComponentConfig } from '../../models/form-config.model';\nimport { RadioButton, RadioGroup } from '@ngstarter-ui/components/radio';\nimport { Error, Hint } from '@ngstarter-ui/components/form-field';\n\n@Component({\n selector: 'ngs-radio-group-field',\n exportAs: 'ngsRadioGroupField',\n imports: [\n RadioButton,\n RadioGroup,\n ReactiveFormsModule,\n Error,\n Hint,\n ],\n templateUrl: './radio-group-field.html',\n styleUrl: './radio-group-field.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RadioGroupField {\n control = input.required<FormControl>();\n config = input.required<ComponentConfig>();\n\n getErrorMessage(): string {\n const errors = this.control().errors;\n if (!errors) {\n return '';\n }\n const errorKey = Object.keys(errors)[0];\n const validator = this.config().validators?.find((v: any) => v.type === errorKey);\n return validator?.message || 'Invalid value';\n }\n\n get options() {\n return this.config().payload?.['options'] || [];\n }\n}\n","@if (control() && config()) {\n <div class=\"radio-group-container\">\n @if (config().label) {\n <div class=\"radio-group-label\">{{ config().label }}</div>\n }\n <ngs-radio-group\n [formControl]=\"control()\"\n [class.inline]=\"config().inline\">\n @for (option of options; track option.value) {\n <ngs-radio-button [value]=\"option.value\">{{ option.label }}</ngs-radio-button>\n }\n </ngs-radio-group>\n @if (config().hint && (control().valid || control().invalid && !control().touched)) {\n <ngs-hint>{{ config().hint }}</ngs-hint>\n }\n @if (control().invalid && control().touched) {\n <ngs-error>{{ getErrorMessage() }}</ngs-error>\n }\n </div>\n}\n"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ class ComponentRegistryService {
27
27
  .then(c => c.DatepickerField));
28
28
  this.componentMap.set('toggle', () => import('./ngstarter-ui-components-form-renderer-toggle-field-iyqUrWxt.mjs')
29
29
  .then(c => c.ToggleField));
30
- this.componentMap.set('radioGroup', () => import('./ngstarter-ui-components-form-renderer-radio-group-field-lc1V-NeL.mjs')
30
+ this.componentMap.set('radioGroup', () => import('./ngstarter-ui-components-form-renderer-radio-group-field-DugkPKYU.mjs')
31
31
  .then(c => c.RadioGroupField));
32
32
  this.componentMap.set('timezone', () => import('./ngstarter-ui-components-form-renderer-timezone-field-DAWrM-jS.mjs')
33
33
  .then(c => c.TimezoneField));
@@ -6,6 +6,7 @@ class RadioGroup {
6
6
  _radios = contentChildren(forwardRef(() => RadioButton), { ...(ngDevMode ? { debugName: "_radios" } : /* istanbul ignore next */ {}), descendants: true });
7
7
  disabled = model(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
8
8
  name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : /* istanbul ignore next */ []));
9
+ orientation = input('horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
9
10
  value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
10
11
  change = output();
11
12
  constructor() {
@@ -62,17 +63,17 @@ class RadioGroup {
62
63
  }
63
64
  }
64
65
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: RadioGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
65
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: RadioGroup, isStandalone: true, selector: "ngs-radio-group", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { disabled: "disabledChange", value: "valueChange", change: "change" }, host: { properties: { "attr.role": "\"radiogroup\"", "attr.aria-disabled": "disabled()" }, classAttribute: "ngs-radio-group" }, providers: [
66
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: RadioGroup, isStandalone: true, selector: "ngs-radio-group", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { disabled: "disabledChange", value: "valueChange", change: "change" }, host: { properties: { "attr.role": "\"radiogroup\"", "attr.aria-disabled": "disabled()", "class.ngs-radio-group-horizontal": "orientation() === \"horizontal\"", "class.ngs-radio-group-vertical": "orientation() === \"vertical\"" }, classAttribute: "ngs-radio-group" }, providers: [
66
67
  {
67
68
  provide: NG_VALUE_ACCESSOR,
68
69
  useExisting: forwardRef(() => RadioGroup),
69
70
  multi: true
70
71
  }
71
- ], queries: [{ propertyName: "_radios", predicate: i0.forwardRef(() => RadioButton), descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content />\n", styles: [":host{display:flex;flex-wrap:wrap;gap:1rem}:host[aria-disabled=true]{pointer-events:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
+ ], queries: [{ propertyName: "_radios", predicate: i0.forwardRef(() => RadioButton), descendants: true, isSignal: true }], exportAs: ["ngsRadioGroup"], ngImport: i0, template: "<ng-content />\n", styles: [":host{--ngs-radio-group-gap: calc(var(--spacing, .25rem) * 4);display:flex;flex-wrap:wrap;gap:var(--ngs-radio-group-gap)}:host.ngs-radio-group-horizontal{flex-direction:row}:host.ngs-radio-group-vertical{flex-direction:column;align-items:flex-start;flex-wrap:nowrap}:host[aria-disabled=true]{pointer-events:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
73
  }
73
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: RadioGroup, decorators: [{
74
75
  type: Component,
75
- args: [{ selector: 'ngs-radio-group', providers: [
76
+ args: [{ selector: 'ngs-radio-group', exportAs: 'ngsRadioGroup', providers: [
76
77
  {
77
78
  provide: NG_VALUE_ACCESSOR,
78
79
  useExisting: forwardRef(() => RadioGroup),
@@ -82,8 +83,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
82
83
  'class': 'ngs-radio-group',
83
84
  '[attr.role]': '"radiogroup"',
84
85
  '[attr.aria-disabled]': 'disabled()',
85
- }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content />\n", styles: [":host{display:flex;flex-wrap:wrap;gap:1rem}:host[aria-disabled=true]{pointer-events:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
86
- }], ctorParameters: () => [], propDecorators: { _radios: [{ type: i0.ContentChildren, args: [forwardRef(() => RadioButton), { ...{ descendants: true }, isSignal: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }, { type: i0.Output, args: ["disabledChange"] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], change: [{ type: i0.Output, args: ["change"] }] } });
86
+ '[class.ngs-radio-group-horizontal]': 'orientation() === "horizontal"',
87
+ '[class.ngs-radio-group-vertical]': 'orientation() === "vertical"',
88
+ }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content />\n", styles: [":host{--ngs-radio-group-gap: calc(var(--spacing, .25rem) * 4);display:flex;flex-wrap:wrap;gap:var(--ngs-radio-group-gap)}:host.ngs-radio-group-horizontal{flex-direction:row}:host.ngs-radio-group-vertical{flex-direction:column;align-items:flex-start;flex-wrap:nowrap}:host[aria-disabled=true]{pointer-events:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
89
+ }], ctorParameters: () => [], propDecorators: { _radios: [{ type: i0.ContentChildren, args: [forwardRef(() => RadioButton), { ...{ descendants: true }, isSignal: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }, { type: i0.Output, args: ["disabledChange"] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], change: [{ type: i0.Output, args: ["change"] }] } });
87
90
 
88
91
  let nextId = 0;
89
92
  class RadioButton {
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-radio.mjs","sources":["../../../projects/components/radio/src/radio-group/radio-group.ts","../../../projects/components/radio/src/radio-group/radio-group.html","../../../projects/components/radio/src/radio-button/radio-button.ts","../../../projects/components/radio/src/radio-button/radio-button.html","../../../projects/components/radio/ngstarter-ui-components-radio.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n output,\n booleanAttribute,\n model,\n effect,\n contentChildren\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RadioButton } from '../radio-button/radio-button';\n\n@Component({\n selector: 'ngs-radio-group',\n templateUrl: './radio-group.html',\n styleUrl: './radio-group.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroup),\n multi: true\n }\n ],\n host: {\n 'class': 'ngs-radio-group',\n '[attr.role]': '\"radiogroup\"',\n '[attr.aria-disabled]': 'disabled()',\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioGroup implements ControlValueAccessor, AfterContentInit {\n readonly _radios = contentChildren(forwardRef(() => RadioButton), { descendants: true });\n\n disabled = model(false);\n\n name = input<string>();\n value = model<any>();\n\n readonly change = output<any>();\n\n constructor() {\n effect(() => {\n this._markRadiosForCheck();\n });\n effect(() => {\n this._updateSelectedRadioFromValue();\n this._onChange(this.value());\n });\n }\n\n _onChange: (value: any) => void = () => {};\n _onTouched: () => void = () => {};\n\n ngAfterContentInit() {\n this._updateSelectedRadioFromValue();\n }\n\n writeValue(value: any): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n _emitChangeEvent(value: any): void {\n this._onChange(value);\n this.change.emit({ source: this, value });\n }\n\n private _updateSelectedRadioFromValue() {\n const _radios = this._radios();\n if (_radios) {\n _radios.forEach(radio => {\n radio.checked.set(this.value() === radio.value());\n });\n }\n }\n\n private _markRadiosForCheck() {\n const _radios = this._radios();\n if (_radios) {\n _radios.forEach(radio => radio._markForCheck());\n }\n }\n\n _onRadioClick(radio: RadioButton) {\n if (this.disabled() || radio.disabled()) {\n return;\n }\n\n if (this.value() !== radio.value()) {\n this.value.set(radio.value());\n this._emitChangeEvent(this.value());\n }\n }\n}\n","<ng-content />\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Inject,\n input,\n OnInit,\n Optional,\n output,\n booleanAttribute,\n model,\n computed\n} from '@angular/core';\nimport { RadioGroup } from '../radio-group/radio-group';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ngs-radio-button',\n templateUrl: './radio-button.html',\n styleUrl: './radio-button.scss',\n host: {\n '[class.ngs-radio-button-checked]': 'checked()',\n '[class.ngs-radio-button-disabled]': 'disabled()',\n '[attr.id]': 'id()',\n 'class': 'ngs-radio-button',\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioButton implements OnInit {\n id = input(`ngs-radio-button-${nextId++}`);\n value = input<any>();\n name = input<string>();\n checked = model(false);\n disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n disabled = computed(() => {\n return this.disabledInput() || (this.radioGroup && this.radioGroup.disabled());\n });\n\n readonly change = output<any>();\n\n constructor(\n @Optional() @Inject(forwardRef(() => RadioGroup)) public radioGroup: RadioGroup,\n private _changeDetectorRef: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n if (this.radioGroup && this.radioGroup.value() === this.value()) {\n this.checked.set(true);\n }\n }\n\n _onInputClick(event: Event) {\n event.stopPropagation();\n if (this.radioGroup) {\n this.radioGroup._onRadioClick(this);\n } else {\n this.checked.set(true);\n this.change.emit({ source: this, value: this.value() });\n }\n }\n\n _markForCheck() {\n this._changeDetectorRef.markForCheck();\n }\n}\n","\n<label class=\"ngs-radio-button-label\" [attr.for]=\"id() + '-input'\">\n <span class=\"ngs-radio-button-container\">\n <input\n type=\"radio\"\n class=\"ngs-radio-button-input\"\n [id]=\"id() + '-input'\"\n [name]=\"name() || (radioGroup ? radioGroup.name() : null)\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [value]=\"value()\"\n (click)=\"_onInputClick($event)\"\n >\n <span class=\"ngs-radio-button-outer-circle\"></span>\n <span class=\"ngs-radio-button-inner-circle\"></span>\n </span>\n <span class=\"ngs-radio-button-label-content\">\n <ng-content />\n </span>\n</label>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-radio.mjs","sources":["../../../projects/components/radio/src/radio-group/radio-group.ts","../../../projects/components/radio/src/radio-group/radio-group.html","../../../projects/components/radio/src/radio-button/radio-button.ts","../../../projects/components/radio/src/radio-button/radio-button.html","../../../projects/components/radio/ngstarter-ui-components-radio.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n output,\n booleanAttribute,\n model,\n effect,\n contentChildren\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RadioButton } from '../radio-button/radio-button';\n\nexport type RadioGroupOrientation = 'horizontal' | 'vertical';\n\n@Component({\n selector: 'ngs-radio-group',\n exportAs: 'ngsRadioGroup',\n templateUrl: './radio-group.html',\n styleUrl: './radio-group.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroup),\n multi: true\n }\n ],\n host: {\n 'class': 'ngs-radio-group',\n '[attr.role]': '\"radiogroup\"',\n '[attr.aria-disabled]': 'disabled()',\n '[class.ngs-radio-group-horizontal]': 'orientation() === \"horizontal\"',\n '[class.ngs-radio-group-vertical]': 'orientation() === \"vertical\"',\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioGroup implements ControlValueAccessor, AfterContentInit {\n readonly _radios = contentChildren(forwardRef(() => RadioButton), { descendants: true });\n\n disabled = model(false);\n\n name = input<string>();\n orientation = input<RadioGroupOrientation>('horizontal');\n value = model<any>();\n\n readonly change = output<any>();\n\n constructor() {\n effect(() => {\n this._markRadiosForCheck();\n });\n effect(() => {\n this._updateSelectedRadioFromValue();\n this._onChange(this.value());\n });\n }\n\n _onChange: (value: any) => void = () => {};\n _onTouched: () => void = () => {};\n\n ngAfterContentInit() {\n this._updateSelectedRadioFromValue();\n }\n\n writeValue(value: any): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n _emitChangeEvent(value: any): void {\n this._onChange(value);\n this.change.emit({ source: this, value });\n }\n\n private _updateSelectedRadioFromValue() {\n const _radios = this._radios();\n if (_radios) {\n _radios.forEach(radio => {\n radio.checked.set(this.value() === radio.value());\n });\n }\n }\n\n private _markRadiosForCheck() {\n const _radios = this._radios();\n if (_radios) {\n _radios.forEach(radio => radio._markForCheck());\n }\n }\n\n _onRadioClick(radio: RadioButton) {\n if (this.disabled() || radio.disabled()) {\n return;\n }\n\n if (this.value() !== radio.value()) {\n this.value.set(radio.value());\n this._emitChangeEvent(this.value());\n }\n }\n}\n","<ng-content />\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Inject,\n input,\n OnInit,\n Optional,\n output,\n booleanAttribute,\n model,\n computed\n} from '@angular/core';\nimport { RadioGroup } from '../radio-group/radio-group';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ngs-radio-button',\n templateUrl: './radio-button.html',\n styleUrl: './radio-button.scss',\n host: {\n '[class.ngs-radio-button-checked]': 'checked()',\n '[class.ngs-radio-button-disabled]': 'disabled()',\n '[attr.id]': 'id()',\n 'class': 'ngs-radio-button',\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioButton implements OnInit {\n id = input(`ngs-radio-button-${nextId++}`);\n value = input<any>();\n name = input<string>();\n checked = model(false);\n disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n disabled = computed(() => {\n return this.disabledInput() || (this.radioGroup && this.radioGroup.disabled());\n });\n\n readonly change = output<any>();\n\n constructor(\n @Optional() @Inject(forwardRef(() => RadioGroup)) public radioGroup: RadioGroup,\n private _changeDetectorRef: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n if (this.radioGroup && this.radioGroup.value() === this.value()) {\n this.checked.set(true);\n }\n }\n\n _onInputClick(event: Event) {\n event.stopPropagation();\n if (this.radioGroup) {\n this.radioGroup._onRadioClick(this);\n } else {\n this.checked.set(true);\n this.change.emit({ source: this, value: this.value() });\n }\n }\n\n _markForCheck() {\n this._changeDetectorRef.markForCheck();\n }\n}\n","\n<label class=\"ngs-radio-button-label\" [attr.for]=\"id() + '-input'\">\n <span class=\"ngs-radio-button-container\">\n <input\n type=\"radio\"\n class=\"ngs-radio-button-input\"\n [id]=\"id() + '-input'\"\n [name]=\"name() || (radioGroup ? radioGroup.name() : null)\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [value]=\"value()\"\n (click)=\"_onInputClick($event)\"\n >\n <span class=\"ngs-radio-button-outer-circle\"></span>\n <span class=\"ngs-radio-button-inner-circle\"></span>\n </span>\n <span class=\"ngs-radio-button-label-content\">\n <ng-content />\n </span>\n</label>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -85,9 +85,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
85
85
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<label class=\"ngs-slide-toggle-label\" [attr.for]=\"id() + '-input'\">\n <div class=\"ngs-slide-toggle-bar\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n class=\"ngs-slide-toggle-input\"\n [id]=\"id() + '-input'\"\n [name]=\"name()\"\n [tabIndex]=\"tabIndex()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n (change)=\"_onInputClick($event)\"\n (blur)=\"_onInputBlur()\">\n <div class=\"ngs-slide-toggle-thumb-container\">\n <div class=\"ngs-slide-toggle-thumb\"></div>\n </div>\n </div>\n <span class=\"ngs-slide-toggle-content\" [id]=\"id() + '-content'\">\n <ng-content/>\n </span>\n</label>\n", styles: [":host{--ngs-slide-toggle-width: 44px;--ngs-slide-toggle-height: 24px;--ngs-slide-toggle-thumb-size: 20px;--ngs-slide-toggle-bar-color: var(--ngs-color-surface-container-highest);--ngs-slide-toggle-bar-checked-color: var(--ngs-color-primary);--ngs-slide-toggle-thumb-color: var(--ngs-color-surface);--ngs-slide-toggle-thumb-checked-color: var(--ngs-color-on-primary);--ngs-slide-toggle-transition-duration: .2s;display:inline-block;cursor:pointer;outline:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:host.ngs-slide-toggle-disabled{cursor:default;opacity:.5;pointer-events:none}:host.ngs-slide-toggle-label-before .ngs-slide-toggle-label{flex-direction:row-reverse}:host.ngs-slide-toggle-label-before .ngs-slide-toggle-content{margin-left:0;margin-right:8px}:host .ngs-slide-toggle-label{display:flex;align-items:center;cursor:inherit}:host .ngs-slide-toggle-bar{position:relative;width:var(--ngs-slide-toggle-width);height:var(--ngs-slide-toggle-height);background:var(--ngs-slide-toggle-bar-color);border-radius:calc(var(--ngs-slide-toggle-height) / 2);transition:background-color var(--ngs-slide-toggle-transition-duration) ease;flex-shrink:0}:host.ngs-slide-toggle-checked .ngs-slide-toggle-bar{background:var(--ngs-slide-toggle-bar-checked-color)}:host .ngs-slide-toggle-input{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;opacity:0;cursor:inherit;z-index:1}:host .ngs-slide-toggle-thumb-container{position:absolute;top:50%;left:2px;transform:translateY(-50%);width:var(--ngs-slide-toggle-thumb-size);height:var(--ngs-slide-toggle-thumb-size);transition:left var(--ngs-slide-toggle-transition-duration) ease}:host.ngs-slide-toggle-checked .ngs-slide-toggle-thumb-container{left:calc(100% - var(--ngs-slide-toggle-thumb-size) - 2px)}:host .ngs-slide-toggle-thumb{width:100%;height:100%;background:var(--ngs-slide-toggle-thumb-color);border-radius:50%;box-shadow:0 2px 4px #0003}:host.ngs-slide-toggle-checked .ngs-slide-toggle-thumb{background:var(--ngs-slide-toggle-thumb-checked-color)}:host .ngs-slide-toggle-content{margin-left:8px;display:inline-block}:host .ngs-slide-toggle-content:empty{display:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
86
86
  }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }, { type: i0.Output, args: ["disabledChange"] }], disableRipple: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableRipple", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], hideIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideIcon", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }, { type: i0.Output, args: ["checkedChange"] }], change: [{ type: i0.Output, args: ["change"] }], toggleChange: [{ type: i0.Output, args: ["toggleChange"] }] } });
87
87
 
88
+ class SlideToggleGroup {
89
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SlideToggleGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
90
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: SlideToggleGroup, isStandalone: true, selector: "ngs-slide-toggle-group", host: { classAttribute: "ngs-slide-toggle-group" }, exportAs: ["ngsSlideToggleGroup"], ngImport: i0, template: "<ng-content select=\"ngs-slide-toggle\"/>\n", styles: [":host{--ngs-slide-toggle-group-gap: calc(var(--spacing, .25rem) * 5);display:flex;width:100%;flex-direction:column;gap:var(--ngs-slide-toggle-group-gap)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
91
+ }
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SlideToggleGroup, decorators: [{
93
+ type: Component,
94
+ args: [{ selector: 'ngs-slide-toggle-group', exportAs: 'ngsSlideToggleGroup', standalone: true, imports: [], host: {
95
+ 'class': 'ngs-slide-toggle-group'
96
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"ngs-slide-toggle\"/>\n", styles: [":host{--ngs-slide-toggle-group-gap: calc(var(--spacing, .25rem) * 5);display:flex;width:100%;flex-direction:column;gap:var(--ngs-slide-toggle-group-gap)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
97
+ }] });
98
+
88
99
  /**
89
100
  * Generated bundle index. Do not edit.
90
101
  */
91
102
 
92
- export { SlideToggle, SlideToggleChange };
103
+ export { SlideToggle, SlideToggleChange, SlideToggleGroup };
93
104
  //# sourceMappingURL=ngstarter-ui-components-slide-toggle.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-slide-toggle.mjs","sources":["../../../projects/components/slide-toggle/src/slide-toggle/slide-toggle.ts","../../../projects/components/slide-toggle/src/slide-toggle/slide-toggle.html","../../../projects/components/slide-toggle/ngstarter-ui-components-slide-toggle.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n model,\n numberAttribute,\n output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport class SlideToggleChange {\n constructor(\n public source: SlideToggle,\n public checked: boolean\n ) {\n }\n}\n\nlet nextId = 0;\n\n@Component({\n selector: 'ngs-slide-toggle',\n exportAs: 'ngsSlideToggle',\n standalone: true,\n imports: [],\n templateUrl: './slide-toggle.html',\n styleUrl: './slide-toggle.scss',\n host: {\n 'class': 'ngs-slide-toggle',\n '[class.ngs-slide-toggle-checked]': 'checked()',\n '[class.ngs-slide-toggle-disabled]': 'disabled()',\n '[class.ngs-slide-toggle-label-before]': 'labelPosition() === \"before\"',\n '[attr.id]': 'id()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlideToggle),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SlideToggle implements ControlValueAccessor {\n private _uniqueId = `ngs-slide-toggle-${nextId++}`;\n\n id = input<string>(this._uniqueId);\n name = input<string | null>(null);\n labelPosition = input<'before' | 'after'>('after');\n ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\n required = input(false, { transform: booleanAttribute });\n disabled = model(false);\n disableRipple = input(false, { transform: booleanAttribute });\n tabIndex = input(0, { transform: numberAttribute });\n hideIcon = input(false, { transform: booleanAttribute });\n color = input<string | undefined>();\n\n checked = model(false);\n\n change = output<SlideToggleChange>();\n toggleChange = output<void>();\n\n private _onChange = (_: any) => {};\n private _onTouched = () => {};\n\n constructor() {}\n\n writeValue(value: any): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n toggle(): void {\n this.checked.update(checked => !checked);\n this._onChange(this.checked());\n this._emitChangeEvent();\n }\n\n _onInputClick(event: Event): void {\n event.stopPropagation();\n this.toggle();\n this.toggleChange.emit();\n }\n\n private _emitChangeEvent(): void {\n this.change.emit(new SlideToggleChange(this, this.checked()));\n }\n\n _onInputBlur(): void {\n this._onTouched();\n }\n}\n","<label class=\"ngs-slide-toggle-label\" [attr.for]=\"id() + '-input'\">\n <div class=\"ngs-slide-toggle-bar\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n class=\"ngs-slide-toggle-input\"\n [id]=\"id() + '-input'\"\n [name]=\"name()\"\n [tabIndex]=\"tabIndex()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n (change)=\"_onInputClick($event)\"\n (blur)=\"_onInputBlur()\">\n <div class=\"ngs-slide-toggle-thumb-container\">\n <div class=\"ngs-slide-toggle-thumb\"></div>\n </div>\n </div>\n <span class=\"ngs-slide-toggle-content\" [id]=\"id() + '-content'\">\n <ng-content/>\n </span>\n</label>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-slide-toggle.mjs","sources":["../../../projects/components/slide-toggle/src/slide-toggle/slide-toggle.ts","../../../projects/components/slide-toggle/src/slide-toggle/slide-toggle.html","../../../projects/components/slide-toggle/src/slide-toggle-group/slide-toggle-group.ts","../../../projects/components/slide-toggle/src/slide-toggle-group/slide-toggle-group.html","../../../projects/components/slide-toggle/ngstarter-ui-components-slide-toggle.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n model,\n numberAttribute,\n output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport class SlideToggleChange {\n constructor(\n public source: SlideToggle,\n public checked: boolean\n ) {\n }\n}\n\nlet nextId = 0;\n\n@Component({\n selector: 'ngs-slide-toggle',\n exportAs: 'ngsSlideToggle',\n standalone: true,\n imports: [],\n templateUrl: './slide-toggle.html',\n styleUrl: './slide-toggle.scss',\n host: {\n 'class': 'ngs-slide-toggle',\n '[class.ngs-slide-toggle-checked]': 'checked()',\n '[class.ngs-slide-toggle-disabled]': 'disabled()',\n '[class.ngs-slide-toggle-label-before]': 'labelPosition() === \"before\"',\n '[attr.id]': 'id()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlideToggle),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SlideToggle implements ControlValueAccessor {\n private _uniqueId = `ngs-slide-toggle-${nextId++}`;\n\n id = input<string>(this._uniqueId);\n name = input<string | null>(null);\n labelPosition = input<'before' | 'after'>('after');\n ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\n required = input(false, { transform: booleanAttribute });\n disabled = model(false);\n disableRipple = input(false, { transform: booleanAttribute });\n tabIndex = input(0, { transform: numberAttribute });\n hideIcon = input(false, { transform: booleanAttribute });\n color = input<string | undefined>();\n\n checked = model(false);\n\n change = output<SlideToggleChange>();\n toggleChange = output<void>();\n\n private _onChange = (_: any) => {};\n private _onTouched = () => {};\n\n constructor() {}\n\n writeValue(value: any): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n toggle(): void {\n this.checked.update(checked => !checked);\n this._onChange(this.checked());\n this._emitChangeEvent();\n }\n\n _onInputClick(event: Event): void {\n event.stopPropagation();\n this.toggle();\n this.toggleChange.emit();\n }\n\n private _emitChangeEvent(): void {\n this.change.emit(new SlideToggleChange(this, this.checked()));\n }\n\n _onInputBlur(): void {\n this._onTouched();\n }\n}\n","<label class=\"ngs-slide-toggle-label\" [attr.for]=\"id() + '-input'\">\n <div class=\"ngs-slide-toggle-bar\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n class=\"ngs-slide-toggle-input\"\n [id]=\"id() + '-input'\"\n [name]=\"name()\"\n [tabIndex]=\"tabIndex()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n (change)=\"_onInputClick($event)\"\n (blur)=\"_onInputBlur()\">\n <div class=\"ngs-slide-toggle-thumb-container\">\n <div class=\"ngs-slide-toggle-thumb\"></div>\n </div>\n </div>\n <span class=\"ngs-slide-toggle-content\" [id]=\"id() + '-content'\">\n <ng-content/>\n </span>\n</label>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-slide-toggle-group',\n exportAs: 'ngsSlideToggleGroup',\n standalone: true,\n imports: [],\n templateUrl: './slide-toggle-group.html',\n styleUrl: './slide-toggle-group.scss',\n host: {\n 'class': 'ngs-slide-toggle-group'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SlideToggleGroup {}\n","<ng-content select=\"ngs-slide-toggle\"/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ngstarter-ui/components",
3
3
  "description": "NgStarter - AI-friendly Enterprise Angular UI Components and Admin Panel",
4
- "version": "21.0.41",
4
+ "version": "21.0.42",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/elementarlabsdev/ngstarter.git"
@@ -11,28 +11,37 @@ interface Country {
11
11
  flag?: string;
12
12
  }
13
13
 
14
- declare class CountrySelect implements OnInit, OnDestroy, ControlValueAccessor, FormFieldControl<string | null> {
14
+ type CountrySelectValue = string | string[] | null;
15
+ declare class CountrySelect implements OnInit, OnDestroy, ControlValueAccessor, FormFieldControl<CountrySelectValue> {
15
16
  private static readonly COUNTRY_RENDER_CHUNK_SIZE;
16
17
  private static readonly COUNTRY_RENDER_CHUNK_DELAY;
17
18
  private _elementRef;
18
19
  private _renderer;
19
20
  private _formField;
20
21
  static nextId: number;
21
- id: string;
22
22
  readonly stateChanges: Subject<void>;
23
23
  protected searchTerm: _angular_core.ModelSignal<string>;
24
24
  protected visibleCountryCount: _angular_core.WritableSignal<number>;
25
- private readonly _valueSignal;
25
+ readonly valueSignal: _angular_core.ModelSignal<CountrySelectValue>;
26
26
  private readonly _focusedSignal;
27
27
  private _touched;
28
+ readonly idSignal: _angular_core.InputSignal<string>;
28
29
  placeholderInputSignal: _angular_core.InputSignal<string>;
29
30
  isRequiredSignal: _angular_core.ModelSignal<boolean>;
30
31
  isDisabledSignal: _angular_core.ModelSignal<boolean>;
32
+ readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
33
+ readonly hideCheckIcon: _angular_core.InputSignalWithTransform<boolean, unknown>;
34
+ readonly clearable: _angular_core.InputSignalWithTransform<boolean, unknown>;
35
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
36
+ readonly tabIndex: _angular_core.InputSignalWithTransform<number, any>;
37
+ readonly ariaDescribedby: _angular_core.InputSignal<string | null>;
31
38
  readonly showCountryCode: _angular_core.InputSignalWithTransform<boolean, unknown>;
32
39
  readonly internalCountries: Country[];
33
40
  readonly filteredCountries: _angular_core.Signal<Country[]>;
34
41
  readonly visibleCountries: _angular_core.Signal<Country[]>;
35
- readonly selectedCountryDisplay: _angular_core.Signal<Country | undefined>;
42
+ readonly selectedCountryDisplays: _angular_core.Signal<Country[]>;
43
+ readonly selectedCountryDisplay: _angular_core.Signal<Country>;
44
+ readonly selectedCountriesText: _angular_core.Signal<string>;
36
45
  readonly ngsSelect: _angular_core.Signal<Select>;
37
46
  readonly searchInput: _angular_core.Signal<ElementRef<HTMLInputElement>>;
38
47
  private readonly fm;
@@ -41,6 +50,7 @@ declare class CountrySelect implements OnInit, OnDestroy, ControlValueAccessor,
41
50
  private readonly destroyRef;
42
51
  readonly opened: _angular_core.OutputEmitterRef<void>;
43
52
  readonly closed: _angular_core.OutputEmitterRef<void>;
53
+ readonly selectionChange: _angular_core.OutputEmitterRef<SelectChange>;
44
54
  private onChangeFn;
45
55
  private onTouchedFn;
46
56
  private _countryRenderTimeout;
@@ -48,8 +58,9 @@ declare class CountrySelect implements OnInit, OnDestroy, ControlValueAccessor,
48
58
  constructor();
49
59
  ngOnInit(): void;
50
60
  ngOnDestroy(): void;
51
- get value(): string | null;
52
- set value(val: string | null);
61
+ get id(): string;
62
+ get value(): CountrySelectValue;
63
+ set value(val: CountrySelectValue);
53
64
  get focused(): boolean;
54
65
  onFocusIn(): void;
55
66
  onFocusOut(event: any): void;
@@ -65,7 +76,7 @@ declare class CountrySelect implements OnInit, OnDestroy, ControlValueAccessor,
65
76
  get touched(): boolean;
66
77
  setDescribedByIds(ids: string[]): void;
67
78
  onContainerClick(): void;
68
- writeValue(value: string | null): void;
79
+ writeValue(value: CountrySelectValue): void;
69
80
  registerOnChange(fn: any): void;
70
81
  registerOnTouched(fn: any): void;
71
82
  setDisabledState(isDisabled: boolean): void;
@@ -81,10 +92,10 @@ declare class CountrySelect implements OnInit, OnDestroy, ControlValueAccessor,
81
92
  private clearCountryRenderTimeout;
82
93
  private clearCountrySearchFocusTimeout;
83
94
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CountrySelect, never>;
84
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CountrySelect, "ngs-country-select", ["ngsCountrySelect"], { "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "placeholderInputSignal": { "alias": "placeholder"; "required": false; "isSignal": true; }; "isRequiredSignal": { "alias": "required"; "required": false; "isSignal": true; }; "isDisabledSignal": { "alias": "disabled"; "required": false; "isSignal": true; }; "showCountryCode": { "alias": "showCountryCode"; "required": false; "isSignal": true; }; }, { "searchTerm": "searchTermChange"; "isRequiredSignal": "requiredChange"; "isDisabledSignal": "disabledChange"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
95
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CountrySelect, "ngs-country-select", ["ngsCountrySelect"], { "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "valueSignal": { "alias": "value"; "required": false; "isSignal": true; }; "idSignal": { "alias": "id"; "required": false; "isSignal": true; }; "placeholderInputSignal": { "alias": "placeholder"; "required": false; "isSignal": true; }; "isRequiredSignal": { "alias": "required"; "required": false; "isSignal": true; }; "isDisabledSignal": { "alias": "disabled"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "hideCheckIcon": { "alias": "hideCheckIcon"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "ariaDescribedby": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "showCountryCode": { "alias": "showCountryCode"; "required": false; "isSignal": true; }; }, { "searchTerm": "searchTermChange"; "valueSignal": "valueChange"; "isRequiredSignal": "requiredChange"; "isDisabledSignal": "disabledChange"; "opened": "opened"; "closed": "closed"; "selectionChange": "selectionChange"; }, never, never, true, never>;
85
96
  }
86
97
 
87
98
  declare const countries: Country[];
88
99
 
89
100
  export { CountrySelect, countries };
90
- export type { Country };
101
+ export type { Country, CountrySelectValue };
@@ -3,6 +3,7 @@ import { ValidatorFn, FormControl, FormGroup } from '@angular/forms';
3
3
  import * as _angular_core from '@angular/core';
4
4
  import { Type, InjectionToken, EnvironmentProviders, TemplateRef } from '@angular/core';
5
5
  import { TreeNodeDropPosition, Tree, TreeNodeDrop } from '@ngstarter-ui/components/tree';
6
+ import { RadioGroupOrientation } from '@ngstarter-ui/components/radio';
6
7
  import * as _ngstarter_ui_components_form_builder from '@ngstarter-ui/components/form-builder';
7
8
 
8
9
  type FormBuilderFieldWidth = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
@@ -10,6 +11,7 @@ type FormBuilderItemKind = 'field' | 'layout' | 'static';
10
11
  interface FormBuilderOption {
11
12
  label: string;
12
13
  value: any;
14
+ selected?: boolean;
13
15
  }
14
16
  interface FormBuilderValidationRule {
15
17
  type: 'required' | 'email' | 'minLength' | 'maxLength' | 'min' | 'max' | string;
@@ -31,6 +33,8 @@ interface FormBuilderField {
31
33
  placeholder?: string;
32
34
  hint?: string;
33
35
  defaultValue?: any;
36
+ multiple?: boolean;
37
+ clearable?: boolean;
34
38
  required?: boolean;
35
39
  disabled?: boolean;
36
40
  readonly?: boolean;
@@ -275,6 +279,7 @@ declare class FormBuilder {
275
279
  private findCanvasFieldElement;
276
280
  private findCanvasSectionElement;
277
281
  private syncPreviewControl;
282
+ private fieldInitialValue;
278
283
  private scrollElementFullyIntoView;
279
284
  private afterNextPaint;
280
285
  private upsertSectionTreeNode;
@@ -315,6 +320,7 @@ declare class FormBuilderRenderer {
315
320
  protected submit(): void;
316
321
  private createFormGroup;
317
322
  private visibleFields;
323
+ private fieldInitialValue;
318
324
  private resolveCanvasItems;
319
325
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormBuilderRenderer, never>;
320
326
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormBuilderRenderer, "ngs-form-builder-renderer", ["ngsFormBuilderRenderer"], { "schema": { "alias": "schema"; "required": true; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "showSubmit": { "alias": "showSubmit"; "required": false; "isSignal": true; }; "submitLabel": { "alias": "submitLabel"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "formSubmit": "formSubmit"; "formReady": "formReady"; }, never, never, true, never>;
@@ -328,6 +334,7 @@ declare class FormBuilderFieldHost {
328
334
  readonly editableCanvas: _angular_core.InputSignal<boolean>;
329
335
  protected readonly customLoaded: _angular_core.WritableSignal<boolean>;
330
336
  protected readonly textInputType: _angular_core.Signal<"email" | "text" | "number">;
337
+ protected readonly radioOrientation: _angular_core.Signal<RadioGroupOrientation>;
331
338
  private readonly anchor;
332
339
  constructor();
333
340
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormBuilderFieldHost, never>;
@@ -353,16 +360,31 @@ declare class FormBuilderSettingsHost {
353
360
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormBuilderSettingsHost, "ngs-form-builder-settings-host", ["ngsFormBuilderSettingsHost"], { "field": { "alias": "field"; "required": false; "isSignal": true; }; "section": { "alias": "section"; "required": false; "isSignal": true; }; "schema": { "alias": "schema"; "required": true; "isSignal": true; }; "definitions": { "alias": "definitions"; "required": false; "isSignal": true; }; "settingsDefinitions": { "alias": "settingsDefinitions"; "required": false; "isSignal": true; }; "update": { "alias": "update"; "required": false; "isSignal": true; }; "updateSection": { "alias": "updateSection"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
354
361
  }
355
362
 
363
+ type RadioOrientation = 'vertical' | 'horizontal';
356
364
  declare class BasicFormBuilderFieldSettings {
365
+ private readonly destroyRef;
357
366
  readonly field: _angular_core.InputSignal<FormBuilderField>;
358
367
  readonly update: _angular_core.InputSignal<(changes: Partial<FormBuilderField>) => void>;
368
+ protected readonly optionsControl: FormControl<string>;
359
369
  protected readonly fieldWidthOptions: FormBuilderFieldWidth[];
370
+ protected readonly radioOrientationOptions: RadioOrientation[];
360
371
  protected readonly hasCheckedState: _angular_core.Signal<boolean>;
361
372
  protected readonly hasPlaceholder: _angular_core.Signal<boolean>;
362
373
  protected readonly hasOptions: _angular_core.Signal<boolean>;
374
+ protected readonly hasClearable: _angular_core.Signal<boolean>;
375
+ protected readonly isSelect: _angular_core.Signal<boolean>;
376
+ protected readonly isRadio: _angular_core.Signal<boolean>;
377
+ protected readonly radioOrientation: _angular_core.Signal<RadioOrientation>;
363
378
  protected readonly optionsText: _angular_core.Signal<string>;
379
+ constructor();
364
380
  protected patch(changes: Partial<FormBuilderField>): void;
381
+ protected patchSelectMultiple(multiple: boolean): void;
382
+ protected patchRadioOrientation(orientation: RadioOrientation): void;
365
383
  protected patchOptions(value: string): void;
384
+ private normalizeSelectedOptions;
385
+ private resolveSelectedDefaultValue;
386
+ private selectedOptionValues;
387
+ private isOptionSelected;
366
388
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BasicFormBuilderFieldSettings, never>;
367
389
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BasicFormBuilderFieldSettings, "ngs-basic-form-builder-field-settings", ["ngsBasicFormBuilderFieldSettings"], { "field": { "alias": "field"; "required": true; "isSignal": true; }; "update": { "alias": "update"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
368
390
  }
@@ -2,10 +2,12 @@ import * as _angular_core from '@angular/core';
2
2
  import { AfterContentInit, OnInit, ChangeDetectorRef } from '@angular/core';
3
3
  import { ControlValueAccessor } from '@angular/forms';
4
4
 
5
+ type RadioGroupOrientation = 'horizontal' | 'vertical';
5
6
  declare class RadioGroup implements ControlValueAccessor, AfterContentInit {
6
7
  readonly _radios: _angular_core.Signal<readonly any[]>;
7
8
  disabled: _angular_core.ModelSignal<boolean>;
8
9
  name: _angular_core.InputSignal<string | undefined>;
10
+ orientation: _angular_core.InputSignal<RadioGroupOrientation>;
9
11
  value: _angular_core.ModelSignal<any>;
10
12
  readonly change: _angular_core.OutputEmitterRef<any>;
11
13
  constructor();
@@ -21,7 +23,7 @@ declare class RadioGroup implements ControlValueAccessor, AfterContentInit {
21
23
  private _markRadiosForCheck;
22
24
  _onRadioClick(radio: RadioButton): void;
23
25
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioGroup, never>;
24
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioGroup, "ngs-radio-group", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "value": "valueChange"; "change": "change"; }, ["_radios"], ["*"], true, never>;
26
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioGroup, "ngs-radio-group", ["ngsRadioGroup"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "value": "valueChange"; "change": "change"; }, ["_radios"], ["*"], true, never>;
25
27
  }
26
28
 
27
29
  declare class RadioButton implements OnInit {
@@ -43,3 +45,4 @@ declare class RadioButton implements OnInit {
43
45
  }
44
46
 
45
47
  export { RadioButton, RadioGroup };
48
+ export type { RadioGroupOrientation };
@@ -38,4 +38,9 @@ declare class SlideToggle implements ControlValueAccessor {
38
38
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideToggle, "ngs-slide-toggle", ["ngsSlideToggle"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "ariaDescribedby": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "disableRipple": { "alias": "disableRipple"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "hideIcon": { "alias": "hideIcon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "checked": "checkedChange"; "change": "change"; "toggleChange": "toggleChange"; }, never, ["*"], true, never>;
39
39
  }
40
40
 
41
- export { SlideToggle, SlideToggleChange };
41
+ declare class SlideToggleGroup {
42
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideToggleGroup, never>;
43
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideToggleGroup, "ngs-slide-toggle-group", ["ngsSlideToggleGroup"], {}, {}, never, ["ngs-slide-toggle"], true, never>;
44
+ }
45
+
46
+ export { SlideToggle, SlideToggleChange, SlideToggleGroup };