@egose/shadcn-theme-ng 0.0.14 → 0.0.15

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.
@@ -0,0 +1,64 @@
1
+ # Checkbox
2
+
3
+ This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.3.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
8
+
9
+ ```bash
10
+ ng generate component component-name
11
+ ```
12
+
13
+ For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
14
+
15
+ ```bash
16
+ ng generate --help
17
+ ```
18
+
19
+ ## Building
20
+
21
+ To build the library, run:
22
+
23
+ ```bash
24
+ ng build checkbox
25
+ ```
26
+
27
+ This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
28
+
29
+ ### Publishing the Library
30
+
31
+ Once the project is built, you can publish your library by following these steps:
32
+
33
+ 1. Navigate to the `dist` directory:
34
+
35
+ ```bash
36
+ cd dist/checkbox
37
+ ```
38
+
39
+ 2. Run the `npm publish` command to publish your library to the npm registry:
40
+ ```bash
41
+ npm publish
42
+ ```
43
+
44
+ ## Running unit tests
45
+
46
+ To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
47
+
48
+ ```bash
49
+ ng test
50
+ ```
51
+
52
+ ## Running end-to-end tests
53
+
54
+ For end-to-end (e2e) testing, run:
55
+
56
+ ```bash
57
+ ng e2e
58
+ ```
59
+
60
+ Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
61
+
62
+ ## Additional Resources
63
+
64
+ For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
@@ -0,0 +1,146 @@
1
+ import * as i0 from '@angular/core';
2
+ import { forwardRef, input, computed, model, booleanAttribute, signal, output, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import { provideIcons, NgIcon } from '@ng-icons/core';
5
+ import { lucideCheck } from '@ng-icons/lucide';
6
+ import { BrnCheckbox } from '@spartan-ng/brain/checkbox';
7
+ import { HlmIcon } from '@egose/shadcn-theme-ng/icon';
8
+ import { hlm } from '@egose/shadcn-theme-ng/utils';
9
+
10
+ const HLM_CHECKBOX_VALUE_ACCESSOR = {
11
+ provide: NG_VALUE_ACCESSOR,
12
+ useExisting: forwardRef(() => HlmCheckbox),
13
+ multi: true,
14
+ };
15
+ class HlmCheckbox {
16
+ userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
17
+ _computedClass = computed(() => hlm('border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive shadow-xs peer size-4 shrink-0 cursor-default rounded-[4px] border outline-none transition-shadow focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50', this.userClass(), this._state().disabled() ? 'cursor-not-allowed opacity-50' : ''), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
18
+ /** Used to set the id on the underlying brn element. */
19
+ id = input(null, ...(ngDevMode ? [{ debugName: "id" }] : []));
20
+ /** Used to set the aria-label attribute on the underlying brn element. */
21
+ ariaLabel = input(null, ...(ngDevMode ? [{ debugName: "ariaLabel", alias: 'aria-label' }] : [{ alias: 'aria-label' }]));
22
+ /** Used to set the aria-labelledby attribute on the underlying brn element. */
23
+ ariaLabelledby = input(null, ...(ngDevMode ? [{ debugName: "ariaLabelledby", alias: 'aria-labelledby' }] : [{ alias: 'aria-labelledby' }]));
24
+ /** Used to set the aria-describedby attribute on the underlying brn element. */
25
+ ariaDescribedby = input(null, ...(ngDevMode ? [{ debugName: "ariaDescribedby", alias: 'aria-describedby' }] : [{ alias: 'aria-describedby' }]));
26
+ /** The checked state of the checkbox. */
27
+ checked = model(false, ...(ngDevMode ? [{ debugName: "checked" }] : []));
28
+ /** The name attribute of the checkbox. */
29
+ name = input(null, ...(ngDevMode ? [{ debugName: "name" }] : []));
30
+ /** Whether the checkbox is required. */
31
+ required = input(false, ...(ngDevMode ? [{ debugName: "required", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
32
+ /** Whether the checkbox is disabled. */
33
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
34
+ _state = computed(() => ({
35
+ disabled: signal(this.disabled()),
36
+ }), ...(ngDevMode ? [{ debugName: "_state" }] : []));
37
+ changed = output();
38
+ _onChange;
39
+ _onTouched;
40
+ _handleChange() {
41
+ if (this._state().disabled())
42
+ return;
43
+ const previousChecked = this.checked();
44
+ this.checked.set(previousChecked === 'indeterminate' ? true : !previousChecked);
45
+ this._onChange?.(!previousChecked);
46
+ this.changed.emit(!previousChecked);
47
+ }
48
+ /** CONTROL VALUE ACCESSOR */
49
+ writeValue(value) {
50
+ this.checked.set(!!value);
51
+ }
52
+ registerOnChange(fn) {
53
+ this._onChange = fn;
54
+ }
55
+ registerOnTouched(fn) {
56
+ this._onTouched = fn;
57
+ }
58
+ setDisabledState(isDisabled) {
59
+ this._state().disabled.set(isDisabled);
60
+ }
61
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Component });
62
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.1", type: HlmCheckbox, isStandalone: true, selector: "hlm-checkbox", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", changed: "changed" }, host: { properties: { "attr.id": "null", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null", "attr.data-disabled": "_state().disabled() ? \"\" : null" }, classAttribute: "contents peer" }, providers: [HLM_CHECKBOX_VALUE_ACCESSOR], ngImport: i0, template: `
63
+ <brn-checkbox
64
+ [id]="id()"
65
+ [name]="name()"
66
+ [class]="_computedClass()"
67
+ [checked]="checked()"
68
+ [disabled]="_state().disabled()"
69
+ [required]="required()"
70
+ [aria-label]="ariaLabel()"
71
+ [aria-labelledby]="ariaLabelledby()"
72
+ [aria-describedby]="ariaDescribedby()"
73
+ (changed)="_handleChange()"
74
+ (touched)="_onTouched?.()"
75
+ >
76
+ @if (checked()) {
77
+ <span class="flex items-center justify-center text-current transition-none">
78
+ <ng-icon hlm size="14px" name="lucideCheck" />
79
+ </span>
80
+ }
81
+ </brn-checkbox>
82
+ `, isInline: true, dependencies: [{ kind: "component", type: BrnCheckbox, selector: "brn-checkbox", inputs: ["checked", "id", "name", "class", "aria-label", "aria-labelledby", "aria-describedby", "required", "disabled"], outputs: ["checkedChange", "changed", "touched"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: HlmIcon, selector: "ng-icon[hlm]", inputs: ["size"] }], viewProviders: [provideIcons({ lucideCheck })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmCheckbox, decorators: [{
85
+ type: Component,
86
+ args: [{
87
+ selector: 'hlm-checkbox',
88
+ imports: [BrnCheckbox, NgIcon, HlmIcon],
89
+ template: `
90
+ <brn-checkbox
91
+ [id]="id()"
92
+ [name]="name()"
93
+ [class]="_computedClass()"
94
+ [checked]="checked()"
95
+ [disabled]="_state().disabled()"
96
+ [required]="required()"
97
+ [aria-label]="ariaLabel()"
98
+ [aria-labelledby]="ariaLabelledby()"
99
+ [aria-describedby]="ariaDescribedby()"
100
+ (changed)="_handleChange()"
101
+ (touched)="_onTouched?.()"
102
+ >
103
+ @if (checked()) {
104
+ <span class="flex items-center justify-center text-current transition-none">
105
+ <ng-icon hlm size="14px" name="lucideCheck" />
106
+ </span>
107
+ }
108
+ </brn-checkbox>
109
+ `,
110
+ host: {
111
+ class: 'contents peer',
112
+ '[attr.id]': 'null',
113
+ '[attr.aria-label]': 'null',
114
+ '[attr.aria-labelledby]': 'null',
115
+ '[attr.aria-describedby]': 'null',
116
+ '[attr.data-disabled]': '_state().disabled() ? "" : null',
117
+ },
118
+ providers: [HLM_CHECKBOX_VALUE_ACCESSOR],
119
+ viewProviders: [provideIcons({ lucideCheck })],
120
+ changeDetection: ChangeDetectionStrategy.OnPush,
121
+ }]
122
+ }] });
123
+
124
+ /*
125
+ * Public API Surface of checkbox
126
+ */
127
+ const HlmCheckboxImports = [HlmCheckbox];
128
+ class HlmCheckboxModule {
129
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
130
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.1", ngImport: i0, type: HlmCheckboxModule, imports: [HlmCheckbox], exports: [HlmCheckbox] });
131
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmCheckboxModule, imports: [HlmCheckboxImports] });
132
+ }
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmCheckboxModule, decorators: [{
134
+ type: NgModule,
135
+ args: [{
136
+ imports: [...HlmCheckboxImports],
137
+ exports: [...HlmCheckboxImports],
138
+ }]
139
+ }] });
140
+
141
+ /**
142
+ * Generated bundle index. Do not edit.
143
+ */
144
+
145
+ export { HLM_CHECKBOX_VALUE_ACCESSOR, HlmCheckbox, HlmCheckboxImports, HlmCheckboxModule };
146
+ //# sourceMappingURL=checkbox.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.mjs","sources":["../../../projects/checkbox/src/lib/checkbox.ts","../../../projects/checkbox/src/public-api.ts","../../../projects/checkbox/src/checkbox.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck } from '@ng-icons/lucide';\nimport { BrnCheckbox } from '@spartan-ng/brain/checkbox';\nimport type { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { HlmIcon } from '@egose/shadcn-theme-ng/icon';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport type { ClassValue } from 'clsx';\n\nexport const HLM_CHECKBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => HlmCheckbox),\n multi: true,\n};\n\n@Component({\n selector: 'hlm-checkbox',\n imports: [BrnCheckbox, NgIcon, HlmIcon],\n template: `\n <brn-checkbox\n [id]=\"id()\"\n [name]=\"name()\"\n [class]=\"_computedClass()\"\n [checked]=\"checked()\"\n [disabled]=\"_state().disabled()\"\n [required]=\"required()\"\n [aria-label]=\"ariaLabel()\"\n [aria-labelledby]=\"ariaLabelledby()\"\n [aria-describedby]=\"ariaDescribedby()\"\n (changed)=\"_handleChange()\"\n (touched)=\"_onTouched?.()\"\n >\n @if (checked()) {\n <span class=\"tw:flex tw:items-center tw:justify-center tw:text-current tw:transition-none\">\n <ng-icon hlm size=\"14px\" name=\"lucideCheck\" />\n </span>\n }\n </brn-checkbox>\n `,\n host: {\n class: 'contents peer',\n '[attr.id]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.data-disabled]': '_state().disabled() ? \"\" : null',\n },\n providers: [HLM_CHECKBOX_VALUE_ACCESSOR],\n viewProviders: [provideIcons({ lucideCheck })],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmCheckbox implements ControlValueAccessor {\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n protected readonly _computedClass = computed(() =>\n hlm(\n 'tw:border-input tw:dark:bg-input/30 tw:data-[state=checked]:bg-primary tw:data-[state=checked]:text-primary-foreground tw:dark:data-[state=checked]:bg-primary tw:data-[state=checked]:border-primary tw:focus-visible:border-ring tw:focus-visible:ring-ring/50 tw:aria-invalid:ring-destructive/20 tw:dark:aria-invalid:ring-destructive/40 tw:aria-invalid:border-destructive tw:shadow-xs tw:peer tw:size-4 tw:shrink-0 tw:cursor-default tw:rounded-[4px] tw:border tw:outline-none tw:transition-shadow tw:focus-visible:ring-[3px] tw:disabled:cursor-not-allowed tw:disabled:opacity-50',\n this.userClass(),\n this._state().disabled() ? 'tw:cursor-not-allowed tw:opacity-50' : '',\n ),\n );\n\n /** Used to set the id on the underlying brn element. */\n public readonly id = input<string | null>(null);\n\n /** Used to set the aria-label attribute on the underlying brn element. */\n public readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n /** Used to set the aria-labelledby attribute on the underlying brn element. */\n public readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n\n /** Used to set the aria-describedby attribute on the underlying brn element. */\n public readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\n\n /** The checked state of the checkbox. */\n public readonly checked = model<CheckboxValue>(false);\n\n /** The name attribute of the checkbox. */\n public readonly name = input<string | null>(null);\n\n /** Whether the checkbox is required. */\n public readonly required = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether the checkbox is disabled. */\n public readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n protected readonly _state = computed(() => ({\n disabled: signal(this.disabled()),\n }));\n\n public readonly changed = output<boolean>();\n\n protected _onChange?: ChangeFn<CheckboxValue>;\n protected _onTouched?: TouchFn;\n\n protected _handleChange(): void {\n if (this._state().disabled()) return;\n\n const previousChecked = this.checked();\n this.checked.set(previousChecked === 'indeterminate' ? true : !previousChecked);\n this._onChange?.(!previousChecked);\n this.changed.emit(!previousChecked);\n }\n\n /** CONTROL VALUE ACCESSOR */\n writeValue(value: CheckboxValue): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: ChangeFn<CheckboxValue>): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: TouchFn): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._state().disabled.set(isDisabled);\n }\n}\n\ntype CheckboxValue = boolean | 'indeterminate';\n","/*\n * Public API Surface of checkbox\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { HlmCheckbox } from './lib/checkbox';\n\nexport * from './lib/checkbox';\n\nexport const HlmCheckboxImports = [HlmCheckbox] as const;\n@NgModule({\n imports: [...HlmCheckboxImports],\n exports: [...HlmCheckboxImports],\n})\nexport class HlmCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { BooleanInput } from '@angular/cdk/coercion';
3
+ import { ControlValueAccessor } from '@angular/forms';
4
+ import { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';
5
+ import { ClassValue } from 'clsx';
6
+
7
+ declare const HLM_CHECKBOX_VALUE_ACCESSOR: {
8
+ provide: _angular_core.InjectionToken<readonly ControlValueAccessor[]>;
9
+ useExisting: _angular_core.Type<any>;
10
+ multi: boolean;
11
+ };
12
+ declare class HlmCheckbox implements ControlValueAccessor {
13
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
14
+ protected readonly _computedClass: _angular_core.Signal<string>;
15
+ /** Used to set the id on the underlying brn element. */
16
+ readonly id: _angular_core.InputSignal<string | null>;
17
+ /** Used to set the aria-label attribute on the underlying brn element. */
18
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
19
+ /** Used to set the aria-labelledby attribute on the underlying brn element. */
20
+ readonly ariaLabelledby: _angular_core.InputSignal<string | null>;
21
+ /** Used to set the aria-describedby attribute on the underlying brn element. */
22
+ readonly ariaDescribedby: _angular_core.InputSignal<string | null>;
23
+ /** The checked state of the checkbox. */
24
+ readonly checked: _angular_core.ModelSignal<CheckboxValue>;
25
+ /** The name attribute of the checkbox. */
26
+ readonly name: _angular_core.InputSignal<string | null>;
27
+ /** Whether the checkbox is required. */
28
+ readonly required: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
29
+ /** Whether the checkbox is disabled. */
30
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
31
+ protected readonly _state: _angular_core.Signal<{
32
+ disabled: _angular_core.WritableSignal<boolean>;
33
+ }>;
34
+ readonly changed: _angular_core.OutputEmitterRef<boolean>;
35
+ protected _onChange?: ChangeFn<CheckboxValue>;
36
+ protected _onTouched?: TouchFn;
37
+ protected _handleChange(): void;
38
+ /** CONTROL VALUE ACCESSOR */
39
+ writeValue(value: CheckboxValue): void;
40
+ registerOnChange(fn: ChangeFn<CheckboxValue>): void;
41
+ registerOnTouched(fn: TouchFn): void;
42
+ setDisabledState(isDisabled: boolean): void;
43
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HlmCheckbox, never>;
44
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HlmCheckbox, "hlm-checkbox", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "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; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "changed": "changed"; }, never, never, true, never>;
45
+ }
46
+ type CheckboxValue = boolean | 'indeterminate';
47
+
48
+ declare const HlmCheckboxImports: readonly [typeof HlmCheckbox];
49
+ declare class HlmCheckboxModule {
50
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HlmCheckboxModule, never>;
51
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<HlmCheckboxModule, never, [typeof HlmCheckbox], [typeof HlmCheckbox]>;
52
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<HlmCheckboxModule>;
53
+ }
54
+
55
+ export { HLM_CHECKBOX_VALUE_ACCESSOR, HlmCheckbox, HlmCheckboxImports, HlmCheckboxModule };
package/exports.json CHANGED
@@ -1 +1 @@
1
- {"./utils":{"types":"./utils/index.d.ts","default":"./utils/fesm2022/utils.mjs"},"./icon":{"types":"./icon/index.d.ts","default":"./icon/fesm2022/icon.mjs"},"./spinner":{"types":"./spinner/index.d.ts","default":"./spinner/fesm2022/spinner.mjs"},"./badge":{"types":"./badge/index.d.ts","default":"./badge/fesm2022/badge.mjs"},"./input":{"types":"./input/index.d.ts","default":"./input/fesm2022/input.mjs"},"./select":{"types":"./select/index.d.ts","default":"./select/fesm2022/select.mjs"},"./button":{"types":"./button/index.d.ts","default":"./button/fesm2022/button.mjs"},"./accordion":{"types":"./accordion/index.d.ts","default":"./accordion/fesm2022/accordion.mjs"},"./alert":{"types":"./alert/index.d.ts","default":"./alert/fesm2022/alert.mjs"},"./switch":{"types":"./switch/index.d.ts","default":"./switch/fesm2022/switch.mjs"},"./label":{"types":"./label/index.d.ts","default":"./label/fesm2022/label.mjs"},"./form-field":{"types":"./form-field/index.d.ts","default":"./form-field/fesm2022/form-field.mjs"},"./popover":{"types":"./popover/index.d.ts","default":"./popover/fesm2022/popover.mjs"},"./calendar":{"types":"./calendar/index.d.ts","default":"./calendar/fesm2022/calendar.mjs"},"./date-picker":{"types":"./date-picker/index.d.ts","default":"./date-picker/fesm2022/date-picker.mjs"},"./dialog":{"types":"./dialog/index.d.ts","default":"./dialog/fesm2022/dialog.mjs"},"./radio-group":{"types":"./radio-group/index.d.ts","default":"./radio-group/fesm2022/radio-group.mjs"},"./separator":{"types":"./separator/index.d.ts","default":"./separator/fesm2022/separator.mjs"},"./tabs":{"types":"./tabs/index.d.ts","default":"./tabs/fesm2022/tabs.mjs"},"./tooltip":{"types":"./tooltip/index.d.ts","default":"./tooltip/fesm2022/tooltip.mjs"},"./form-select":{"types":"./form-select/index.d.ts","default":"./form-select/fesm2022/form-select.mjs"},"./form-text-input":{"types":"./form-text-input/index.d.ts","default":"./form-text-input/fesm2022/form-text-input.mjs"},"./form-textarea":{"types":"./form-textarea/index.d.ts","default":"./form-textarea/fesm2022/form-textarea.mjs"},"./form-date-picker":{"types":"./form-date-picker/index.d.ts","default":"./form-date-picker/fesm2022/form-date-picker.mjs"},"./basic-alert":{"types":"./basic-alert/index.d.ts","default":"./basic-alert/fesm2022/basic-alert.mjs"},"./confirmation-dialog":{"types":"./confirmation-dialog/index.d.ts","default":"./confirmation-dialog/fesm2022/confirmation-dialog.mjs"},"./sonner":{"types":"./sonner/index.d.ts","default":"./sonner/fesm2022/sonner.mjs"},"./autocomplete":{"types":"./autocomplete/index.d.ts","default":"./autocomplete/fesm2022/autocomplete.mjs"},"./searchable-multiselect":{"types":"./searchable-multiselect/index.d.ts","default":"./searchable-multiselect/fesm2022/searchable-multiselect.mjs"},"./form-searchable-multiselect":{"types":"./form-searchable-multiselect/index.d.ts","default":"./form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs"}}
1
+ {"./utils":{"types":"./utils/index.d.ts","default":"./utils/fesm2022/utils.mjs"},"./icon":{"types":"./icon/index.d.ts","default":"./icon/fesm2022/icon.mjs"},"./spinner":{"types":"./spinner/index.d.ts","default":"./spinner/fesm2022/spinner.mjs"},"./badge":{"types":"./badge/index.d.ts","default":"./badge/fesm2022/badge.mjs"},"./input":{"types":"./input/index.d.ts","default":"./input/fesm2022/input.mjs"},"./select":{"types":"./select/index.d.ts","default":"./select/fesm2022/select.mjs"},"./button":{"types":"./button/index.d.ts","default":"./button/fesm2022/button.mjs"},"./accordion":{"types":"./accordion/index.d.ts","default":"./accordion/fesm2022/accordion.mjs"},"./alert":{"types":"./alert/index.d.ts","default":"./alert/fesm2022/alert.mjs"},"./switch":{"types":"./switch/index.d.ts","default":"./switch/fesm2022/switch.mjs"},"./label":{"types":"./label/index.d.ts","default":"./label/fesm2022/label.mjs"},"./form-field":{"types":"./form-field/index.d.ts","default":"./form-field/fesm2022/form-field.mjs"},"./form-field-simple":{"types":"./form-field-simple/index.d.ts","default":"./form-field-simple/fesm2022/form-field-simple.mjs"},"./checkbox":{"types":"./checkbox/index.d.ts","default":"./checkbox/fesm2022/checkbox.mjs"},"./popover":{"types":"./popover/index.d.ts","default":"./popover/fesm2022/popover.mjs"},"./calendar":{"types":"./calendar/index.d.ts","default":"./calendar/fesm2022/calendar.mjs"},"./date-picker":{"types":"./date-picker/index.d.ts","default":"./date-picker/fesm2022/date-picker.mjs"},"./dialog":{"types":"./dialog/index.d.ts","default":"./dialog/fesm2022/dialog.mjs"},"./radio-group":{"types":"./radio-group/index.d.ts","default":"./radio-group/fesm2022/radio-group.mjs"},"./separator":{"types":"./separator/index.d.ts","default":"./separator/fesm2022/separator.mjs"},"./tabs":{"types":"./tabs/index.d.ts","default":"./tabs/fesm2022/tabs.mjs"},"./tooltip":{"types":"./tooltip/index.d.ts","default":"./tooltip/fesm2022/tooltip.mjs"},"./form-select":{"types":"./form-select/index.d.ts","default":"./form-select/fesm2022/form-select.mjs"},"./form-text-input":{"types":"./form-text-input/index.d.ts","default":"./form-text-input/fesm2022/form-text-input.mjs"},"./form-textarea":{"types":"./form-textarea/index.d.ts","default":"./form-textarea/fesm2022/form-textarea.mjs"},"./form-date-picker":{"types":"./form-date-picker/index.d.ts","default":"./form-date-picker/fesm2022/form-date-picker.mjs"},"./basic-alert":{"types":"./basic-alert/index.d.ts","default":"./basic-alert/fesm2022/basic-alert.mjs"},"./confirmation-dialog":{"types":"./confirmation-dialog/index.d.ts","default":"./confirmation-dialog/fesm2022/confirmation-dialog.mjs"},"./sonner":{"types":"./sonner/index.d.ts","default":"./sonner/fesm2022/sonner.mjs"},"./autocomplete":{"types":"./autocomplete/index.d.ts","default":"./autocomplete/fesm2022/autocomplete.mjs"},"./searchable-multiselect":{"types":"./searchable-multiselect/index.d.ts","default":"./searchable-multiselect/fesm2022/searchable-multiselect.mjs"},"./form-searchable-multiselect":{"types":"./form-searchable-multiselect/index.d.ts","default":"./form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs"},"./form-checkbox":{"types":"./form-checkbox/index.d.ts","default":"./form-checkbox/fesm2022/form-checkbox.mjs"}}
@@ -0,0 +1,64 @@
1
+ # FormCheckbox
2
+
3
+ This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.3.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
8
+
9
+ ```bash
10
+ ng generate component component-name
11
+ ```
12
+
13
+ For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
14
+
15
+ ```bash
16
+ ng generate --help
17
+ ```
18
+
19
+ ## Building
20
+
21
+ To build the library, run:
22
+
23
+ ```bash
24
+ ng build form-checkbox
25
+ ```
26
+
27
+ This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
28
+
29
+ ### Publishing the Library
30
+
31
+ Once the project is built, you can publish your library by following these steps:
32
+
33
+ 1. Navigate to the `dist` directory:
34
+
35
+ ```bash
36
+ cd dist/form-checkbox
37
+ ```
38
+
39
+ 2. Run the `npm publish` command to publish your library to the npm registry:
40
+ ```bash
41
+ npm publish
42
+ ```
43
+
44
+ ## Running unit tests
45
+
46
+ To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
47
+
48
+ ```bash
49
+ ng test
50
+ ```
51
+
52
+ ## Running end-to-end tests
53
+
54
+ For end-to-end (e2e) testing, run:
55
+
56
+ ```bash
57
+ ng e2e
58
+ ```
59
+
60
+ Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
61
+
62
+ ## Additional Resources
63
+
64
+ For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
@@ -0,0 +1,134 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import * as i1 from '@angular/forms';
4
+ import { ReactiveFormsModule, FormGroupDirective, ControlContainer } from '@angular/forms';
5
+ import { HlmLabel } from '@egose/shadcn-theme-ng/label';
6
+ import { HlmCheckbox } from '@egose/shadcn-theme-ng/checkbox';
7
+ import { HlmError, HlmHint } from '@egose/shadcn-theme-ng/form-field';
8
+ import { EgFormField } from '@egose/shadcn-theme-ng/form-field-simple';
9
+ import { hlm } from '@egose/shadcn-theme-ng/utils';
10
+
11
+ class EgFormCheckbox {
12
+ // Classes
13
+ userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
14
+ _computedClass = computed(() => hlm('', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
15
+ // Inputs
16
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
17
+ controlName = input('', ...(ngDevMode ? [{ debugName: "controlName" }] : [])); // must be provided
18
+ error = input(undefined, ...(ngDevMode ? [{ debugName: "error" }] : []));
19
+ hint = input(undefined, ...(ngDevMode ? [{ debugName: "hint" }] : []));
20
+ id = input(crypto.randomUUID(), ...(ngDevMode ? [{ debugName: "id" }] : []));
21
+ name = input(undefined, ...(ngDevMode ? [{ debugName: "name" }] : []));
22
+ checked = input(false, ...(ngDevMode ? [{ debugName: "checked" }] : []));
23
+ required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : []));
24
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
25
+ // Styling
26
+ checkboxClass = input('', ...(ngDevMode ? [{ debugName: "checkboxClass" }] : []));
27
+ labelClass = input('', ...(ngDevMode ? [{ debugName: "labelClass" }] : []));
28
+ // Computed styling
29
+ $checkboxClass = computed(() => hlm(this.checkboxClass()), ...(ngDevMode ? [{ debugName: "$checkboxClass" }] : []));
30
+ $labelClass = computed(() => hlm(this.labelClass()), ...(ngDevMode ? [{ debugName: "$labelClass" }] : []));
31
+ $errorClass = input('', ...(ngDevMode ? [{ debugName: "$errorClass" }] : []));
32
+ $hintClass = input('', ...(ngDevMode ? [{ debugName: "$hintClass" }] : []));
33
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgFormCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.1", type: EgFormCheckbox, isStandalone: true, selector: "eg-form-checkbox", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, controlName: { classPropertyName: "controlName", publicName: "controlName", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, checkboxClass: { classPropertyName: "checkboxClass", publicName: "checkboxClass", isSignal: true, isRequired: false, transformFunction: null }, labelClass: { classPropertyName: "labelClass", publicName: "labelClass", isSignal: true, isRequired: false, transformFunction: null }, $errorClass: { classPropertyName: "$errorClass", publicName: "$errorClass", isSignal: true, isRequired: false, transformFunction: null }, $hintClass: { classPropertyName: "$hintClass", publicName: "$hintClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, providers: [{ provide: ControlContainer, useExisting: FormGroupDirective }], ngImport: i0, template: `
35
+ @let lbl = label();
36
+ @let nm = controlName();
37
+ @let err = error();
38
+ @let hnt = hint();
39
+ @let rqrd = required();
40
+
41
+ <eg-form-field>
42
+ <div class="flex items-center gap-1">
43
+ <hlm-checkbox
44
+ [id]="id()"
45
+ [name]="nm || name() || null"
46
+ [formControlName]="nm"
47
+ [class]="$checkboxClass()"
48
+ [checked]="checked()"
49
+ [required]="rqrd"
50
+ />
51
+ <label hlmLabel [for]="id()" [class]="$labelClass()">
52
+ {{ lbl }}
53
+ @if (rqrd) {
54
+ <span class="text-red-500">*</span>
55
+ }
56
+ </label>
57
+ </div>
58
+
59
+ @if (err) {
60
+ <hlm-error [class]="$errorClass()">
61
+ {{ err }}
62
+ </hlm-error>
63
+ }
64
+
65
+ @if (hnt) {
66
+ <hlm-hint [class]="$hintClass()">
67
+ {{ hnt }}
68
+ </hlm-hint>
69
+ }
70
+ </eg-form-field>
71
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: HlmCheckbox, selector: "hlm-checkbox", inputs: ["class", "id", "aria-label", "aria-labelledby", "aria-describedby", "checked", "name", "required", "disabled"], outputs: ["checkedChange", "changed"] }, { kind: "directive", type: HlmLabel, selector: "[hlmLabel]", inputs: ["class"] }, { kind: "component", type: EgFormField, selector: "eg-form-field", inputs: ["class"] }, { kind: "directive", type: HlmError, selector: "hlm-error", inputs: ["class"] }, { kind: "directive", type: HlmHint, selector: "hlm-hint", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgFormCheckbox, decorators: [{
74
+ type: Component,
75
+ args: [{
76
+ selector: 'eg-form-checkbox',
77
+ standalone: true,
78
+ host: {
79
+ '[class]': '_computedClass()',
80
+ },
81
+ changeDetection: ChangeDetectionStrategy.OnPush,
82
+ imports: [ReactiveFormsModule, HlmCheckbox, HlmLabel, EgFormField, HlmError, HlmHint],
83
+ providers: [{ provide: ControlContainer, useExisting: FormGroupDirective }],
84
+ template: `
85
+ @let lbl = label();
86
+ @let nm = controlName();
87
+ @let err = error();
88
+ @let hnt = hint();
89
+ @let rqrd = required();
90
+
91
+ <eg-form-field>
92
+ <div class="flex items-center gap-1">
93
+ <hlm-checkbox
94
+ [id]="id()"
95
+ [name]="nm || name() || null"
96
+ [formControlName]="nm"
97
+ [class]="$checkboxClass()"
98
+ [checked]="checked()"
99
+ [required]="rqrd"
100
+ />
101
+ <label hlmLabel [for]="id()" [class]="$labelClass()">
102
+ {{ lbl }}
103
+ @if (rqrd) {
104
+ <span class="text-red-500">*</span>
105
+ }
106
+ </label>
107
+ </div>
108
+
109
+ @if (err) {
110
+ <hlm-error [class]="$errorClass()">
111
+ {{ err }}
112
+ </hlm-error>
113
+ }
114
+
115
+ @if (hnt) {
116
+ <hlm-hint [class]="$hintClass()">
117
+ {{ hnt }}
118
+ </hlm-hint>
119
+ }
120
+ </eg-form-field>
121
+ `,
122
+ }]
123
+ }] });
124
+
125
+ /*
126
+ * Public API Surface of form-checkbox
127
+ */
128
+
129
+ /**
130
+ * Generated bundle index. Do not edit.
131
+ */
132
+
133
+ export { EgFormCheckbox };
134
+ //# sourceMappingURL=form-checkbox.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-checkbox.mjs","sources":["../../../projects/form-checkbox/src/lib/form-checkbox.ts","../../../projects/form-checkbox/src/public-api.ts","../../../projects/form-checkbox/src/form-checkbox.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, OnInit, computed, input } from '@angular/core';\nimport { ControlContainer, FormGroupDirective, ReactiveFormsModule } from '@angular/forms';\nimport { HlmLabel } from '@egose/shadcn-theme-ng/label';\nimport { HlmCheckbox } from '@egose/shadcn-theme-ng/checkbox';\nimport { HlmError, HlmHint } from '@egose/shadcn-theme-ng/form-field';\nimport { EgFormField } from '@egose/shadcn-theme-ng/form-field-simple';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport { ClassValue } from 'clsx';\n\n@Component({\n selector: 'eg-form-checkbox',\n standalone: true,\n host: {\n '[class]': '_computedClass()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ReactiveFormsModule, HlmCheckbox, HlmLabel, EgFormField, HlmError, HlmHint],\n providers: [{ provide: ControlContainer, useExisting: FormGroupDirective }],\n template: `\n @let lbl = label();\n @let nm = controlName();\n @let err = error();\n @let hnt = hint();\n @let rqrd = required();\n\n <eg-form-field>\n <div class=\"tw:flex tw:items-center tw:gap-1\">\n <hlm-checkbox\n [id]=\"id()\"\n [name]=\"nm || name() || null\"\n [formControlName]=\"nm\"\n [class]=\"$checkboxClass()\"\n [checked]=\"checked()\"\n [required]=\"rqrd\"\n />\n <label hlmLabel [for]=\"id()\" [class]=\"$labelClass()\">\n {{ lbl }}\n @if (rqrd) {\n <span class=\"tw:text-red-500\">*</span>\n }\n </label>\n </div>\n\n @if (err) {\n <hlm-error [class]=\"$errorClass()\">\n {{ err }}\n </hlm-error>\n }\n\n @if (hnt) {\n <hlm-hint [class]=\"$hintClass()\">\n {{ hnt }}\n </hlm-hint>\n }\n </eg-form-field>\n `,\n})\nexport class EgFormCheckbox {\n // Classes\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n protected readonly _computedClass = computed(() => hlm('', this.userClass()));\n\n // Inputs\n label = input<string>('');\n controlName = input<string>(''); // must be provided\n error = input<string | undefined>(undefined);\n hint = input<string | undefined>(undefined);\n\n id = input<string>(crypto.randomUUID());\n name = input<string | undefined>(undefined);\n checked = input<boolean>(false);\n required = input<boolean>(false);\n disabled = input<boolean>(false);\n\n // Styling\n checkboxClass = input<string>('');\n labelClass = input<string>('');\n\n // Computed styling\n $checkboxClass = computed(() => hlm(this.checkboxClass()));\n $labelClass = computed(() => hlm(this.labelClass()));\n $errorClass = input<string>('');\n $hintClass = input<string>('');\n}\n","/*\n * Public API Surface of form-checkbox\n */\n\nexport * from './lib/form-checkbox';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ClassValue } from 'clsx';
3
+
4
+ declare class EgFormCheckbox {
5
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
6
+ protected readonly _computedClass: _angular_core.Signal<string>;
7
+ label: _angular_core.InputSignal<string>;
8
+ controlName: _angular_core.InputSignal<string>;
9
+ error: _angular_core.InputSignal<string | undefined>;
10
+ hint: _angular_core.InputSignal<string | undefined>;
11
+ id: _angular_core.InputSignal<string>;
12
+ name: _angular_core.InputSignal<string | undefined>;
13
+ checked: _angular_core.InputSignal<boolean>;
14
+ required: _angular_core.InputSignal<boolean>;
15
+ disabled: _angular_core.InputSignal<boolean>;
16
+ checkboxClass: _angular_core.InputSignal<string>;
17
+ labelClass: _angular_core.InputSignal<string>;
18
+ $checkboxClass: _angular_core.Signal<string>;
19
+ $labelClass: _angular_core.Signal<string>;
20
+ $errorClass: _angular_core.InputSignal<string>;
21
+ $hintClass: _angular_core.InputSignal<string>;
22
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgFormCheckbox, never>;
23
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgFormCheckbox, "eg-form-checkbox", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "controlName": { "alias": "controlName"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "checkboxClass": { "alias": "checkboxClass"; "required": false; "isSignal": true; }; "labelClass": { "alias": "labelClass"; "required": false; "isSignal": true; }; "$errorClass": { "alias": "$errorClass"; "required": false; "isSignal": true; }; "$hintClass": { "alias": "$hintClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
24
+ }
25
+
26
+ export { EgFormCheckbox };
@@ -0,0 +1,64 @@
1
+ # FormFieldSimple
2
+
3
+ This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.3.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
8
+
9
+ ```bash
10
+ ng generate component component-name
11
+ ```
12
+
13
+ For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
14
+
15
+ ```bash
16
+ ng generate --help
17
+ ```
18
+
19
+ ## Building
20
+
21
+ To build the library, run:
22
+
23
+ ```bash
24
+ ng build form-field-simple
25
+ ```
26
+
27
+ This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
28
+
29
+ ### Publishing the Library
30
+
31
+ Once the project is built, you can publish your library by following these steps:
32
+
33
+ 1. Navigate to the `dist` directory:
34
+
35
+ ```bash
36
+ cd dist/form-field-simple
37
+ ```
38
+
39
+ 2. Run the `npm publish` command to publish your library to the npm registry:
40
+ ```bash
41
+ npm publish
42
+ ```
43
+
44
+ ## Running unit tests
45
+
46
+ To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
47
+
48
+ ```bash
49
+ ng test
50
+ ```
51
+
52
+ ## Running end-to-end tests
53
+
54
+ For end-to-end (e2e) testing, run:
55
+
56
+ ```bash
57
+ ng e2e
58
+ ```
59
+
60
+ Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
61
+
62
+ ## Additional Resources
63
+
64
+ For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
@@ -0,0 +1,82 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, contentChild, inject, signal, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { FormControlName, FormGroupDirective, ControlContainer } from '@angular/forms';
4
+ import { hlm } from '@egose/shadcn-theme-ng/utils';
5
+ import { Subscription } from 'rxjs';
6
+
7
+ class EgFormField {
8
+ userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
9
+ _computedClass = computed(() => hlm('', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
10
+ control = contentChild(FormControlName, ...(ngDevMode ? [{ debugName: "control" }] : []));
11
+ formGroupDirective = inject(FormGroupDirective);
12
+ form = this.formGroupDirective.form;
13
+ statusSignal = signal(null, ...(ngDevMode ? [{ debugName: "statusSignal" }] : []));
14
+ sub = new Subscription();
15
+ ngAfterContentInit() {
16
+ const ctrlDir = this.control();
17
+ if (ctrlDir) {
18
+ this.sub.add(ctrlDir.control.statusChanges.subscribe((status) => {
19
+ this.statusSignal.set(status);
20
+ }));
21
+ this.statusSignal.set(ctrlDir.control.status);
22
+ }
23
+ }
24
+ ngOnDestroy() {
25
+ this.sub.unsubscribe();
26
+ }
27
+ hasError = computed(() => {
28
+ const ctrlDir = this.control();
29
+ if (!ctrlDir)
30
+ return false;
31
+ this.statusSignal();
32
+ return !!ctrlDir.control.errors && (ctrlDir.control.touched || ctrlDir.control.dirty);
33
+ }, ...(ngDevMode ? [{ debugName: "hasError" }] : []));
34
+ firstErrorKey = computed(() => {
35
+ const ctrlDir = this.control();
36
+ if (!ctrlDir || !ctrlDir.control.errors)
37
+ return null;
38
+ this.statusSignal();
39
+ return Object.keys(ctrlDir.control.errors)[0] ?? null;
40
+ }, ...(ngDevMode ? [{ debugName: "firstErrorKey" }] : []));
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgFormField, deps: [], target: i0.ɵɵFactoryTarget.Component });
42
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.1", type: EgFormField, isStandalone: true, selector: "eg-form-field", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, providers: [{ provide: ControlContainer, useExisting: FormGroupDirective }], queries: [{ propertyName: "control", first: true, predicate: FormControlName, descendants: true, isSignal: true }], ngImport: i0, template: `
43
+ <ng-content></ng-content>
44
+
45
+ @if (hasError()) {
46
+ <ng-content select="hlm-error"></ng-content>
47
+ } @else {
48
+ <ng-content select="hlm-hint"></ng-content>
49
+ }
50
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgFormField, decorators: [{
53
+ type: Component,
54
+ args: [{
55
+ selector: 'eg-form-field',
56
+ template: `
57
+ <ng-content></ng-content>
58
+
59
+ @if (hasError()) {
60
+ <ng-content select="hlm-error"></ng-content>
61
+ } @else {
62
+ <ng-content select="hlm-hint"></ng-content>
63
+ }
64
+ `,
65
+ providers: [{ provide: ControlContainer, useExisting: FormGroupDirective }],
66
+ host: {
67
+ '[class]': '_computedClass()',
68
+ },
69
+ changeDetection: ChangeDetectionStrategy.OnPush,
70
+ }]
71
+ }] });
72
+
73
+ /*
74
+ * Public API Surface of form-field-simple
75
+ */
76
+
77
+ /**
78
+ * Generated bundle index. Do not edit.
79
+ */
80
+
81
+ export { EgFormField };
82
+ //# sourceMappingURL=form-field-simple.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-field-simple.mjs","sources":["../../../projects/form-field-simple/src/lib/form-field-simple.ts","../../../projects/form-field-simple/src/public-api.ts","../../../projects/form-field-simple/src/form-field-simple.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n computed,\n input,\n inject,\n contentChild,\n signal,\n AfterContentInit,\n OnDestroy,\n} from '@angular/core';\nimport { ControlContainer, FormControlName, FormGroup, FormGroupDirective } from '@angular/forms';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport { ClassValue } from 'clsx';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'eg-form-field',\n template: `\n <ng-content></ng-content>\n\n @if (hasError()) {\n <ng-content select=\"hlm-error\"></ng-content>\n } @else {\n <ng-content select=\"hlm-hint\"></ng-content>\n }\n `,\n providers: [{ provide: ControlContainer, useExisting: FormGroupDirective }],\n host: {\n '[class]': '_computedClass()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EgFormField implements AfterContentInit, OnDestroy {\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n protected readonly _computedClass = computed(() => hlm('', this.userClass()));\n\n public readonly control = contentChild(FormControlName);\n\n private readonly formGroupDirective = inject(FormGroupDirective);\n public readonly form: FormGroup = this.formGroupDirective.form;\n\n private statusSignal = signal<string | null>(null);\n\n private sub = new Subscription();\n\n ngAfterContentInit() {\n const ctrlDir = this.control();\n if (ctrlDir) {\n this.sub.add(\n ctrlDir.control.statusChanges.subscribe((status) => {\n this.statusSignal.set(status);\n }),\n );\n\n this.statusSignal.set(ctrlDir.control.status);\n }\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n public readonly hasError = computed(() => {\n const ctrlDir = this.control();\n if (!ctrlDir) return false;\n\n this.statusSignal();\n\n return !!ctrlDir.control.errors && (ctrlDir.control.touched || ctrlDir.control.dirty);\n });\n\n public readonly firstErrorKey = computed(() => {\n const ctrlDir = this.control();\n if (!ctrlDir || !ctrlDir.control.errors) return null;\n this.statusSignal();\n return Object.keys(ctrlDir.control.errors)[0] ?? null;\n });\n}\n","/*\n * Public API Surface of form-field-simple\n */\n\nexport * from './lib/form-field-simple';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAiCa,WAAW,CAAA;AACN,IAAA,SAAS,GAAG,KAAK,CAAa,EAAE,6CAAI,KAAK,EAAE,OAAO,EAAA,CAAA,GAAA,CAAhB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAC;AAClD,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,0DAAC;AAE7D,IAAA,OAAO,GAAG,YAAY,CAAC,eAAe,mDAAC;AAEtC,IAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAChD,IAAA,IAAI,GAAc,IAAI,CAAC,kBAAkB,CAAC,IAAI;AAEtD,IAAA,YAAY,GAAG,MAAM,CAAgB,IAAI,wDAAC;AAE1C,IAAA,GAAG,GAAG,IAAI,YAAY,EAAE;IAEhC,kBAAkB,GAAA;AAChB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACjD,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAC/B,CAAC,CAAC,CACH;YAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAC/C;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;IACxB;AAEgB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;QAE1B,IAAI,CAAC,YAAY,EAAE;QAEnB,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AACvF,IAAA,CAAC,oDAAC;AAEc,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;QACpD,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;AACvD,IAAA,CAAC,yDAAC;uGA5CS,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EANX,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAUpC,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnB5C;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAjBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;AAC3E,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,kBAAkB;AAC9B,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;AChCD;;AAEG;;ACFH;;AAEG;;;;"}
@@ -0,0 +1,22 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { AfterContentInit, OnDestroy } from '@angular/core';
3
+ import { FormControlName, FormGroup } from '@angular/forms';
4
+ import { ClassValue } from 'clsx';
5
+
6
+ declare class EgFormField implements AfterContentInit, OnDestroy {
7
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
8
+ protected readonly _computedClass: _angular_core.Signal<string>;
9
+ readonly control: _angular_core.Signal<FormControlName | undefined>;
10
+ private readonly formGroupDirective;
11
+ readonly form: FormGroup;
12
+ private statusSignal;
13
+ private sub;
14
+ ngAfterContentInit(): void;
15
+ ngOnDestroy(): void;
16
+ readonly hasError: _angular_core.Signal<boolean>;
17
+ readonly firstErrorKey: _angular_core.Signal<string | null>;
18
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgFormField, never>;
19
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgFormField, "eg-form-field", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, ["control"], ["*", "hlm-error", "hlm-hint"], true, never>;
20
+ }
21
+
22
+ export { EgFormField };
@@ -2,8 +2,9 @@ import * as i0 from '@angular/core';
2
2
  import { input, computed, Component } from '@angular/core';
3
3
  import * as i1 from '@angular/forms';
4
4
  import { ReactiveFormsModule, FormGroupDirective, ControlContainer } from '@angular/forms';
5
- import { HlmFormField, HlmError, HlmHint } from '@egose/shadcn-theme-ng/form-field';
6
5
  import { HlmLabel } from '@egose/shadcn-theme-ng/label';
6
+ import { EgFormField } from '@egose/shadcn-theme-ng/form-field-simple';
7
+ import { HlmError, HlmHint } from '@egose/shadcn-theme-ng/form-field';
7
8
  import { hlm } from '@egose/shadcn-theme-ng/utils';
8
9
  import { EgSearchableMultiselect } from '@egose/shadcn-theme-ng/searchable-multiselect';
9
10
 
@@ -33,9 +34,13 @@ class EgFormSearchableMultiselect {
33
34
  $hintClass = computed(() => hlm('mt-0', this.hintClass()), ...(ngDevMode ? [{ debugName: "$hintClass" }] : []));
34
35
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgFormSearchableMultiselect, deps: [], target: i0.ɵɵFactoryTarget.Component });
35
36
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.1", type: EgFormSearchableMultiselect, isStandalone: true, selector: "eg-form-searchable-multiselect", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, controlName: { classPropertyName: "controlName", publicName: "controlName", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, labelClass: { classPropertyName: "labelClass", publicName: "labelClass", isSignal: true, isRequired: false, transformFunction: null }, controlClass: { classPropertyName: "controlClass", publicName: "controlClass", isSignal: true, isRequired: false, transformFunction: null }, errorClass: { classPropertyName: "errorClass", publicName: "errorClass", isSignal: true, isRequired: false, transformFunction: null }, hintClass: { classPropertyName: "hintClass", publicName: "hintClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "w-full" }, providers: [{ provide: ControlContainer, useExisting: FormGroupDirective }], ngImport: i0, template: `
36
- @let lbl = label(); @let nm = controlName(); @let err = error(); @let hnt = hint(); @let rqrd = required();
37
+ @let lbl = label();
38
+ @let nm = controlName();
39
+ @let err = error();
40
+ @let hnt = hint();
41
+ @let rqrd = required();
37
42
 
38
- <hlm-form-field>
43
+ <eg-form-field>
39
44
  @if (lbl) {
40
45
  <span hlmLabel [class]="$labelClass()">
41
46
  {{ lbl }}
@@ -49,7 +54,6 @@ class EgFormSearchableMultiselect {
49
54
  [options]="options()"
50
55
  [placeholder]="placeholder()"
51
56
  [formControlName]="nm"
52
- [disabled]="disabled()"
53
57
  [required]="rqrd"
54
58
  [class]="$controlClass()"
55
59
  ></eg-searchable-multiselect>
@@ -63,8 +67,8 @@ class EgFormSearchableMultiselect {
63
67
  {{ hnt }}
64
68
  </hlm-hint>
65
69
  }
66
- </hlm-form-field>
67
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: HlmFormField, selector: "hlm-form-field", inputs: ["class"] }, { kind: "directive", type: HlmError, selector: "hlm-error", inputs: ["class"] }, { kind: "directive", type: HlmHint, selector: "hlm-hint", inputs: ["class"] }, { kind: "directive", type: HlmLabel, selector: "[hlmLabel]", inputs: ["class"] }, { kind: "component", type: EgSearchableMultiselect, selector: "eg-searchable-multiselect", inputs: ["options", "placeholder", "value"], outputs: ["valueChange"] }] });
70
+ </eg-form-field>
71
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: EgFormField, selector: "eg-form-field", inputs: ["class"] }, { kind: "directive", type: HlmError, selector: "hlm-error", inputs: ["class"] }, { kind: "directive", type: HlmHint, selector: "hlm-hint", inputs: ["class"] }, { kind: "directive", type: HlmLabel, selector: "[hlmLabel]", inputs: ["class"] }, { kind: "component", type: EgSearchableMultiselect, selector: "eg-searchable-multiselect", inputs: ["options", "placeholder", "value"], outputs: ["valueChange"] }] });
68
72
  }
69
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgFormSearchableMultiselect, decorators: [{
70
74
  type: Component,
@@ -74,12 +78,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
74
78
  host: {
75
79
  class: 'w-full',
76
80
  },
77
- imports: [ReactiveFormsModule, HlmFormField, HlmError, HlmHint, HlmLabel, EgSearchableMultiselect],
81
+ imports: [ReactiveFormsModule, EgFormField, HlmError, HlmHint, HlmLabel, EgSearchableMultiselect],
78
82
  providers: [{ provide: ControlContainer, useExisting: FormGroupDirective }],
79
83
  template: `
80
- @let lbl = label(); @let nm = controlName(); @let err = error(); @let hnt = hint(); @let rqrd = required();
84
+ @let lbl = label();
85
+ @let nm = controlName();
86
+ @let err = error();
87
+ @let hnt = hint();
88
+ @let rqrd = required();
81
89
 
82
- <hlm-form-field>
90
+ <eg-form-field>
83
91
  @if (lbl) {
84
92
  <span hlmLabel [class]="$labelClass()">
85
93
  {{ lbl }}
@@ -93,7 +101,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
93
101
  [options]="options()"
94
102
  [placeholder]="placeholder()"
95
103
  [formControlName]="nm"
96
- [disabled]="disabled()"
97
104
  [required]="rqrd"
98
105
  [class]="$controlClass()"
99
106
  ></eg-searchable-multiselect>
@@ -107,7 +114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
107
114
  {{ hnt }}
108
115
  </hlm-hint>
109
116
  }
110
- </hlm-form-field>
117
+ </eg-form-field>
111
118
  `,
112
119
  }]
113
120
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"form-searchable-multiselect.mjs","sources":["../../../projects/form-searchable-multiselect/src/lib/form-searchable-multiselect.ts","../../../projects/form-searchable-multiselect/src/public-api.ts","../../../projects/form-searchable-multiselect/src/form-searchable-multiselect.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\nimport { ControlContainer, FormGroupDirective, ReactiveFormsModule } from '@angular/forms';\nimport { HlmFormField, HlmError, HlmHint } from '@egose/shadcn-theme-ng/form-field';\nimport { HlmLabel } from '@egose/shadcn-theme-ng/label';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport { ClassValue } from 'clsx';\nimport { EgSearchableMultiselect, SelectOption } from '@egose/shadcn-theme-ng/searchable-multiselect';\n\n@Component({\n selector: 'eg-form-searchable-multiselect',\n standalone: true,\n host: {\n class: 'tw:w-full',\n },\n imports: [ReactiveFormsModule, HlmFormField, HlmError, HlmHint, HlmLabel, EgSearchableMultiselect],\n providers: [{ provide: ControlContainer, useExisting: FormGroupDirective }],\n template: `\n @let lbl = label(); @let nm = controlName(); @let err = error(); @let hnt = hint(); @let rqrd = required();\n\n <hlm-form-field>\n @if (lbl) {\n <span hlmLabel [class]=\"$labelClass()\">\n {{ lbl }}\n @if (rqrd) {\n <span class=\"tw:text-red-500\">*</span>\n }\n </span>\n }\n\n <eg-searchable-multiselect\n [options]=\"options()\"\n [placeholder]=\"placeholder()\"\n [formControlName]=\"nm\"\n [disabled]=\"disabled()\"\n [required]=\"rqrd\"\n [class]=\"$controlClass()\"\n ></eg-searchable-multiselect>\n\n @if (err) {\n <hlm-error [class]=\"$errorClass()\">\n {{ err }}\n </hlm-error>\n } @if (hnt) {\n <hlm-hint [class]=\"$hintClass()\">\n {{ hnt }}\n </hlm-hint>\n }\n </hlm-form-field>\n `,\n})\nexport class EgFormSearchableMultiselect {\n // Form field inputs\n label = input<string | undefined>(undefined);\n controlName = input<string>(''); // required for form binding\n error = input<string | undefined>(undefined);\n hint = input<string | undefined>(undefined);\n\n // HTML/control attributes\n placeholder = input<string>('Start typing to add…');\n disabled = input<boolean>(false);\n required = input<boolean>(false);\n\n // Multiselect-specific\n options = input<SelectOption[]>([]); // [{ label, value }]\n\n // Styling classes\n userClass = input<ClassValue>('', { alias: 'class' });\n labelClass = input<string>('');\n controlClass = input<string>(''); // for EgMultiselectAutocomplete\n errorClass = input<string>('');\n hintClass = input<string>('');\n\n // Computed class names\n $userClass = computed(() => hlm('tw:flex tw:flex-col', this.userClass()));\n $labelClass = computed(() => hlm('tw:mb-1 tw:gap-0', this.labelClass()));\n $controlClass = computed(() => hlm('tw:w-full', this.controlClass()));\n $errorClass = computed(() => hlm('tw:mt-0', this.errorClass()));\n $hintClass = computed(() => hlm('tw:mt-0', this.hintClass()));\n}\n","/*\n * Public API Surface of form-searchable-multiselect\n */\n\nexport * from './lib/form-searchable-multiselect';\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":"form-searchable-multiselect.mjs","sources":["../../../projects/form-searchable-multiselect/src/lib/form-searchable-multiselect.ts","../../../projects/form-searchable-multiselect/src/public-api.ts","../../../projects/form-searchable-multiselect/src/form-searchable-multiselect.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\nimport { ControlContainer, FormGroupDirective, ReactiveFormsModule } from '@angular/forms';\nimport { HlmLabel } from '@egose/shadcn-theme-ng/label';\nimport { EgFormField } from '@egose/shadcn-theme-ng/form-field-simple';\nimport { HlmError, HlmHint } from '@egose/shadcn-theme-ng/form-field';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport { ClassValue } from 'clsx';\nimport { EgSearchableMultiselect, SelectOption } from '@egose/shadcn-theme-ng/searchable-multiselect';\n\n@Component({\n selector: 'eg-form-searchable-multiselect',\n standalone: true,\n host: {\n class: 'tw:w-full',\n },\n imports: [ReactiveFormsModule, EgFormField, HlmError, HlmHint, HlmLabel, EgSearchableMultiselect],\n providers: [{ provide: ControlContainer, useExisting: FormGroupDirective }],\n template: `\n @let lbl = label();\n @let nm = controlName();\n @let err = error();\n @let hnt = hint();\n @let rqrd = required();\n\n <eg-form-field>\n @if (lbl) {\n <span hlmLabel [class]=\"$labelClass()\">\n {{ lbl }}\n @if (rqrd) {\n <span class=\"tw:text-red-500\">*</span>\n }\n </span>\n }\n\n <eg-searchable-multiselect\n [options]=\"options()\"\n [placeholder]=\"placeholder()\"\n [formControlName]=\"nm\"\n [required]=\"rqrd\"\n [class]=\"$controlClass()\"\n ></eg-searchable-multiselect>\n\n @if (err) {\n <hlm-error [class]=\"$errorClass()\">\n {{ err }}\n </hlm-error>\n } @if (hnt) {\n <hlm-hint [class]=\"$hintClass()\">\n {{ hnt }}\n </hlm-hint>\n }\n </eg-form-field>\n `,\n})\nexport class EgFormSearchableMultiselect {\n // Form field inputs\n label = input<string | undefined>(undefined);\n controlName = input<string>(''); // required for form binding\n error = input<string | undefined>(undefined);\n hint = input<string | undefined>(undefined);\n\n // HTML/control attributes\n placeholder = input<string>('Start typing to add…');\n disabled = input<boolean>(false);\n required = input<boolean>(false);\n\n // Multiselect-specific\n options = input<SelectOption[]>([]); // [{ label, value }]\n\n // Styling classes\n userClass = input<ClassValue>('', { alias: 'class' });\n labelClass = input<string>('');\n controlClass = input<string>(''); // for EgMultiselectAutocomplete\n errorClass = input<string>('');\n hintClass = input<string>('');\n\n // Computed class names\n $userClass = computed(() => hlm('tw:flex tw:flex-col', this.userClass()));\n $labelClass = computed(() => hlm('tw:mb-1 tw:gap-0', this.labelClass()));\n $controlClass = computed(() => hlm('tw:w-full', this.controlClass()));\n $errorClass = computed(() => hlm('tw:mt-0', this.errorClass()));\n $hintClass = computed(() => hlm('tw:mt-0', this.hintClass()));\n}\n","/*\n * Public API Surface of form-searchable-multiselect\n */\n\nexport * from './lib/form-searchable-multiselect';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.0.14",
2
+ "version": "0.0.15",
3
3
  "description": "Angular shadcn UI theme",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
@@ -63,6 +63,14 @@
63
63
  "types": "./form-field/index.d.ts",
64
64
  "default": "./form-field/fesm2022/form-field.mjs"
65
65
  },
66
+ "./form-field-simple": {
67
+ "types": "./form-field-simple/index.d.ts",
68
+ "default": "./form-field-simple/fesm2022/form-field-simple.mjs"
69
+ },
70
+ "./checkbox": {
71
+ "types": "./checkbox/index.d.ts",
72
+ "default": "./checkbox/fesm2022/checkbox.mjs"
73
+ },
66
74
  "./popover": {
67
75
  "types": "./popover/index.d.ts",
68
76
  "default": "./popover/fesm2022/popover.mjs"
@@ -134,6 +142,10 @@
134
142
  "./form-searchable-multiselect": {
135
143
  "types": "./form-searchable-multiselect/index.d.ts",
136
144
  "default": "./form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs"
145
+ },
146
+ "./form-checkbox": {
147
+ "types": "./form-checkbox/index.d.ts",
148
+ "default": "./form-checkbox/fesm2022/form-checkbox.mjs"
137
149
  }
138
150
  }
139
151
  }