@egose/shadcn-theme-ng 0.0.12 → 0.0.14
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.
- package/accordion/fesm2022/accordion.mjs +10 -10
- package/alert/fesm2022/alert.mjs +30 -30
- package/autocomplete/fesm2022/autocomplete.mjs +34 -15
- package/autocomplete/fesm2022/autocomplete.mjs.map +1 -1
- package/autocomplete/index.d.ts +5 -1
- package/badge/fesm2022/badge.mjs +70 -79
- package/badge/fesm2022/badge.mjs.map +1 -1
- package/badge/index.d.ts +9 -9
- package/basic-alert/fesm2022/basic-alert.mjs +15 -23
- package/basic-alert/fesm2022/basic-alert.mjs.map +1 -1
- package/basic-alert/index.d.ts +7 -7
- package/button/fesm2022/button.mjs +148 -168
- package/button/fesm2022/button.mjs.map +1 -1
- package/button/index.d.ts +19 -19
- package/calendar/fesm2022/calendar.mjs +78 -78
- package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +10 -10
- package/date-picker/fesm2022/date-picker.mjs +11 -11
- package/dialog/fesm2022/dialog.mjs +9 -9
- package/exports.json +1 -1
- package/form-date-picker/fesm2022/form-date-picker.mjs +9 -9
- package/form-field/fesm2022/form-field.mjs +3 -3
- package/form-searchable-multiselect/README.md +64 -0
- package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +124 -0
- package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs.map +1 -0
- package/form-searchable-multiselect/index.d.ts +28 -0
- package/form-select/fesm2022/form-select.mjs +9 -9
- package/form-text-input/fesm2022/form-text-input.mjs +9 -9
- package/form-textarea/fesm2022/form-textarea.mjs +9 -9
- package/input/fesm2022/input.mjs +3 -3
- package/label/fesm2022/label.mjs +1 -1
- package/package.json +9 -1
- package/popover/fesm2022/popover.mjs +2 -2
- package/radio-group/fesm2022/radio-group.mjs +5 -5
- package/searchable-multiselect/README.md +64 -0
- package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +221 -0
- package/searchable-multiselect/fesm2022/searchable-multiselect.mjs.map +1 -0
- package/searchable-multiselect/index.d.ts +50 -0
- package/select/fesm2022/select.mjs +18 -18
- package/separator/fesm2022/separator.mjs +1 -1
- package/sonner/fesm2022/sonner.mjs +4 -4
- package/spinner/fesm2022/spinner.mjs +6 -6
- package/switch/fesm2022/switch.mjs +2 -2
- package/tabs/fesm2022/tabs.mjs +12 -12
- package/tooltip/fesm2022/tooltip.mjs +5 -5
|
@@ -10,7 +10,7 @@ import { provideHlmIconConfig } from '@egose/shadcn-theme-ng/icon';
|
|
|
10
10
|
class HlmAccordion {
|
|
11
11
|
_brn = inject(BrnAccordion);
|
|
12
12
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
13
|
-
_computedClass = computed(() => hlm('
|
|
13
|
+
_computedClass = computed(() => hlm('flex', this._brn.orientation() === 'horizontal' ? 'flex-row' : 'flex-col', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
14
14
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAccordion, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
15
15
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.1", type: HlmAccordion, isStandalone: true, selector: "[hlmAccordion], hlm-accordion", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.BrnAccordion, inputs: ["type", "type", "dir", "dir", "orientation", "orientation"] }], ngImport: i0 });
|
|
16
16
|
}
|
|
@@ -28,13 +28,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
28
28
|
class HlmAccordionContent extends BrnAccordionContent {
|
|
29
29
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
30
30
|
_computedClass = computed(() => {
|
|
31
|
-
const gridRows = this.state() === 'open' ? '
|
|
32
|
-
return hlm('
|
|
31
|
+
const gridRows = this.state() === 'open' ? 'grid-rows-[1fr]' : 'hidden';
|
|
32
|
+
return hlm('grid text-sm transition-all', gridRows, this.userClass());
|
|
33
33
|
}, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
34
34
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAccordionContent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
35
35
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.1", type: HlmAccordionContent, isStandalone: true, selector: "hlm-accordion-content", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, usesInheritance: true, ngImport: i0, template: `
|
|
36
|
-
<div [attr.inert]="_addInert()" style="
|
|
37
|
-
<div class="
|
|
36
|
+
<div [attr.inert]="_addInert()" style="overflow:hidden">
|
|
37
|
+
<div class="flex flex-col gap-4 text-balance pb-4 pt-0">
|
|
38
38
|
<ng-content />
|
|
39
39
|
</div>
|
|
40
40
|
</div>
|
|
@@ -45,8 +45,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
45
45
|
args: [{
|
|
46
46
|
selector: 'hlm-accordion-content',
|
|
47
47
|
template: `
|
|
48
|
-
<div [attr.inert]="_addInert()" style="
|
|
49
|
-
<div class="
|
|
48
|
+
<div [attr.inert]="_addInert()" style="overflow:hidden">
|
|
49
|
+
<div class="flex flex-col gap-4 text-balance pb-4 pt-0">
|
|
50
50
|
<ng-content />
|
|
51
51
|
</div>
|
|
52
52
|
</div>
|
|
@@ -61,7 +61,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
61
61
|
|
|
62
62
|
class HlmAccordionIcon {
|
|
63
63
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
64
|
-
_computedClass = computed(() => hlm('
|
|
64
|
+
_computedClass = computed(() => hlm('text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
65
65
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAccordionIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
66
66
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.1", type: HlmAccordionIcon, isStandalone: true, selector: "ng-icon[egAccordionIcon], ng-icon[hlmAccIcon]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, providers: [provideIcons({ lucideChevronDown }), provideHlmIconConfig({ size: 'sm' })], ngImport: i0 });
|
|
67
67
|
}
|
|
@@ -78,7 +78,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
78
78
|
|
|
79
79
|
class HlmAccordionItem {
|
|
80
80
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
81
|
-
_computedClass = computed(() => hlm('
|
|
81
|
+
_computedClass = computed(() => hlm('border-border flex flex-1 flex-col border-b', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
82
82
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
83
83
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.1", type: HlmAccordionItem, isStandalone: true, selector: "[hlmAccordionItem],brn-accordion-item[hlm],hlm-accordion-item", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.BrnAccordionItem, inputs: ["isOpened", "isOpened"] }], ngImport: i0 });
|
|
84
84
|
}
|
|
@@ -100,7 +100,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
100
100
|
|
|
101
101
|
class HlmAccordionTrigger {
|
|
102
102
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
103
|
-
_computedClass = computed(() => hlm('
|
|
103
|
+
_computedClass = computed(() => hlm('focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium outline-none transition-all hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>[egAccIcon]]:rotate-180', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
104
104
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAccordionTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
105
105
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.1", type: HlmAccordionTrigger, isStandalone: true, selector: "[hlmAccordionTrigger]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--tw-ring-offset-shadow": "\"0 0 #000\"", "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.BrnAccordionTrigger }], ngImport: i0 });
|
|
106
106
|
}
|
package/alert/fesm2022/alert.mjs
CHANGED
|
@@ -4,93 +4,93 @@ import { hlm } from '@egose/shadcn-theme-ng/utils';
|
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
5
5
|
import { provideHlmIconConfig } from '@egose/shadcn-theme-ng/icon';
|
|
6
6
|
|
|
7
|
-
const alertVariants = cva('
|
|
7
|
+
const alertVariants = cva('relative w-full items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>[hlmAlertIcon]]:grid has-[>[hlmAlertIcon]]:grid-cols-[calc(theme(spacing.1)*4)_1fr] has-[>[hlmAlertIcon]]:gap-x-3 [&>[hlmAlertIcon]]:size-4 [&>[hlmAlertIcon]]:translate-y-0.5 [&>[hlmAlertIcon]]:text-current', {
|
|
8
8
|
variants: {
|
|
9
9
|
variant: {
|
|
10
|
-
primary: '
|
|
11
|
-
secondary: '
|
|
12
|
-
success: '
|
|
13
|
-
warning: '
|
|
14
|
-
danger: '
|
|
15
|
-
info: '
|
|
16
|
-
light: '
|
|
17
|
-
dark: '
|
|
18
|
-
accent: '
|
|
19
|
-
destructive: '
|
|
20
|
-
muted: '
|
|
21
|
-
link: '
|
|
22
|
-
ghost: '
|
|
10
|
+
primary: 'bg-primary text-primary-foreground [&>[hlmAlertDescription]]:text-primary-foreground/90',
|
|
11
|
+
secondary: 'bg-secondary text-secondary-foreground [&>[hlmAlertDescription]]:text-secondary-foreground/90',
|
|
12
|
+
success: 'bg-success text-success-foreground [&>[hlmAlertDescription]]:text-success-foreground/90',
|
|
13
|
+
warning: 'bg-warning text-warning-foreground [&>[hlmAlertDescription]]:text-warning-foreground/90',
|
|
14
|
+
danger: 'bg-danger text-danger-foreground [&>[hlmAlertDescription]]:text-danger-foreground/90',
|
|
15
|
+
info: 'bg-info text-info-foreground [&>[hlmAlertDescription]]:text-info-foreground/90',
|
|
16
|
+
light: 'bg-light text-light-foreground [&>[hlmAlertDescription]]:text-light-foreground/90',
|
|
17
|
+
dark: 'bg-dark text-dark-foreground [&>[hlmAlertDescription]]:text-dark-foreground/90',
|
|
18
|
+
accent: 'bg-accent text-accent-foreground [&>[hlmAlertDescription]]:text-accent-foreground/90',
|
|
19
|
+
destructive: 'bg-destructive text-destructive-foreground [&>[hlmAlertDescription]]:text-destructive-foreground/90',
|
|
20
|
+
muted: 'bg-muted text-muted-foreground [&>[hlmAlertDescription]]:text-muted-foreground/90',
|
|
21
|
+
link: 'text-primary underline-offset-4 [&>[hlmAlertDescription]]:text-primary/90',
|
|
22
|
+
ghost: '[&>[hlmAlertDescription]]:text-muted-foreground',
|
|
23
23
|
},
|
|
24
24
|
appearance: {
|
|
25
25
|
solid: '',
|
|
26
|
-
light: '
|
|
26
|
+
light: 'text-semibold',
|
|
27
27
|
},
|
|
28
28
|
},
|
|
29
29
|
compoundVariants: [
|
|
30
30
|
{
|
|
31
31
|
variant: 'primary',
|
|
32
32
|
appearance: 'light',
|
|
33
|
-
class: '
|
|
33
|
+
class: 'bg-primary/20 text-primary [&>[hlmAlertDescription]]:text-primary',
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
variant: 'secondary',
|
|
37
37
|
appearance: 'light',
|
|
38
|
-
class: '
|
|
38
|
+
class: 'bg-secondary/20 text-secondary [&>[hlmAlertDescription]]:text-secondary',
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
variant: 'success',
|
|
42
42
|
appearance: 'light',
|
|
43
|
-
class: '
|
|
43
|
+
class: 'bg-success/20 text-success [&>[hlmAlertDescription]]:text-success',
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
variant: 'warning',
|
|
47
47
|
appearance: 'light',
|
|
48
|
-
class: '
|
|
48
|
+
class: 'bg-warning/20 text-warning [&>[hlmAlertDescription]]:text-warning',
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
variant: 'danger',
|
|
52
52
|
appearance: 'light',
|
|
53
|
-
class: '
|
|
53
|
+
class: 'bg-danger/20 text-danger [&>[hlmAlertDescription]]:text-danger',
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
variant: 'info',
|
|
57
57
|
appearance: 'light',
|
|
58
|
-
class: '
|
|
58
|
+
class: 'bg-info/20 text-info [&>[hlmAlertDescription]]:text-info',
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
variant: 'light',
|
|
62
62
|
appearance: 'light',
|
|
63
|
-
class: '
|
|
63
|
+
class: 'bg-light/20 text-light [&>[hlmAlertDescription]]:text-light',
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
variant: 'dark',
|
|
67
67
|
appearance: 'light',
|
|
68
|
-
class: '
|
|
68
|
+
class: 'bg-dark/20 text-dark [&>[hlmAlertDescription]]:text-dark',
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
variant: 'accent',
|
|
72
72
|
appearance: 'light',
|
|
73
|
-
class: '
|
|
73
|
+
class: 'bg-accent/20 text-accent [&>[hlmAlertDescription]]:text-accent',
|
|
74
74
|
},
|
|
75
75
|
{
|
|
76
76
|
variant: 'destructive',
|
|
77
77
|
appearance: 'light',
|
|
78
|
-
class: '
|
|
78
|
+
class: 'bg-destructive/20 text-destructive [&>[hlmAlertDescription]]:text-destructive',
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
variant: 'muted',
|
|
82
82
|
appearance: 'light',
|
|
83
|
-
class: '
|
|
83
|
+
class: 'bg-muted/20 text-muted [&>[hlmAlertDescription]]:text-muted',
|
|
84
84
|
},
|
|
85
85
|
{
|
|
86
86
|
variant: 'link',
|
|
87
87
|
appearance: 'light',
|
|
88
|
-
class: '
|
|
88
|
+
class: 'bg-primary/10 text-primary [&>[hlmAlertDescription]]:text-primary',
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
variant: 'ghost',
|
|
92
92
|
appearance: 'light',
|
|
93
|
-
class: '
|
|
93
|
+
class: 'bg-muted/10 text-muted-foreground [&>[hlmAlertDescription]]:text-muted-foreground',
|
|
94
94
|
},
|
|
95
95
|
],
|
|
96
96
|
defaultVariants: {
|
|
@@ -122,7 +122,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
122
122
|
|
|
123
123
|
class HlmAlertDescription {
|
|
124
124
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
125
|
-
_computedClass = computed(() => hlm('
|
|
125
|
+
_computedClass = computed(() => hlm('text-current col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
126
126
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAlertDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
127
127
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.1", type: HlmAlertDescription, isStandalone: true, selector: "[hlmAlertDesc],[hlmAlertDescription]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0 });
|
|
128
128
|
}
|
|
@@ -150,7 +150,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
150
150
|
|
|
151
151
|
class HlmAlertTitle {
|
|
152
152
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
153
|
-
_computedClass = computed(() => hlm('
|
|
153
|
+
_computedClass = computed(() => hlm('col-start-2 line-clamp-1 min-h-4 text-md font-semibold tracking-tight', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
154
154
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAlertTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
155
155
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.1", type: HlmAlertTitle, isStandalone: true, selector: "[hlmAlertTitle]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0 });
|
|
156
156
|
}
|
|
@@ -14,7 +14,7 @@ import { BrnDialog } from '@spartan-ng/brain/dialog';
|
|
|
14
14
|
|
|
15
15
|
class HlmAutocompleteEmpty {
|
|
16
16
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
17
|
-
_computedClass = computed(() => hlm('
|
|
17
|
+
_computedClass = computed(() => hlm('py-2 text-center text-sm', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
18
18
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAutocompleteEmpty, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
19
19
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.1", type: HlmAutocompleteEmpty, isStandalone: true, selector: "[hlmAutocompleteEmpty]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0 });
|
|
20
20
|
}
|
|
@@ -32,7 +32,7 @@ class HlmAutocompleteGroup {
|
|
|
32
32
|
/** The user defined class */
|
|
33
33
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
34
34
|
/** The styles to apply */
|
|
35
|
-
_computedClass = computed(() => hlm('
|
|
35
|
+
_computedClass = computed(() => hlm('text-foreground block overflow-hidden p-1', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
36
36
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAutocompleteGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
37
37
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.1", type: HlmAutocompleteGroup, isStandalone: true, selector: "hlm-autocomplete-group", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.BrnAutocompleteGroup, inputs: ["id", "id"] }], ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
38
38
|
}
|
|
@@ -58,7 +58,7 @@ class HlmAutocompleteItem {
|
|
|
58
58
|
/** The user defined class */
|
|
59
59
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
60
60
|
/** The styles to apply */
|
|
61
|
-
_computedClass = computed(() => hlm('
|
|
61
|
+
_computedClass = computed(() => hlm('data-[selected]:bg-accent data-[selected]:text-accent-foreground [&>ng-icon]:text-muted-foreground outline-hidden relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm data-[disabled]:pointer-events-none data-[hidden]:hidden data-[disabled]:opacity-50 [&>ng-icon]:pointer-events-none [&>ng-icon]:shrink-0 [&>ng-icon]:text-base', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
62
62
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAutocompleteItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
63
63
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.1", type: HlmAutocompleteItem, isStandalone: true, selector: "button[hlm-autocomplete-item]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.BrnAutocompleteItem, inputs: ["value", "value", "disabled", "disabled", "id", "id"], outputs: ["selected", "selected"] }], ngImport: i0, template: ` <ng-content /> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
64
64
|
}
|
|
@@ -85,7 +85,7 @@ class HlmAutocompleteList {
|
|
|
85
85
|
/** The user defined class */
|
|
86
86
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
87
87
|
/** The styles to apply */
|
|
88
|
-
_computedClass = computed(() => hlm('
|
|
88
|
+
_computedClass = computed(() => hlm('block max-h-60 overflow-y-auto overflow-x-hidden', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
89
89
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAutocompleteList, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
90
90
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.1", type: HlmAutocompleteList, isStandalone: true, selector: "hlm-autocomplete-list", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.BrnAutocompleteList, inputs: ["id", "id"] }], ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
91
91
|
}
|
|
@@ -111,7 +111,7 @@ class HlmAutocompleteSearch {
|
|
|
111
111
|
/** The user defined class */
|
|
112
112
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
113
113
|
/** The styles to apply */
|
|
114
|
-
_computedClass = computed(() => hlm('
|
|
114
|
+
_computedClass = computed(() => hlm('border-input focus-within:border-ring bg-background focus-within:ring-ring/50 shadow-xs dark:bg-input/10 flex h-9 min-w-0 items-center gap-2 rounded-md border px-3 focus-within:ring-[3px] [&>_ng-icon]:flex-none [&>_ng-icon]:opacity-50', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
115
115
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAutocompleteSearch, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
116
116
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.1", type: HlmAutocompleteSearch, isStandalone: true, selector: "hlm-autocomplete-search", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, providers: [provideHlmIconConfig({ size: 'sm' })], ngImport: i0, template: ` <ng-content /> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
117
117
|
}
|
|
@@ -132,7 +132,7 @@ class HlmAutocompleteSearchInput {
|
|
|
132
132
|
/** The user defined class */
|
|
133
133
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
134
134
|
/** The styles to apply */
|
|
135
|
-
_computedClass = computed(() => hlm('
|
|
135
|
+
_computedClass = computed(() => hlm('placeholder:text-muted-foreground flex h-9 w-full bg-transparent py-1 text-base outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
136
136
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAutocompleteSearchInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
137
137
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.1", type: HlmAutocompleteSearchInput, isStandalone: true, selector: "input[hlm-autocomplete-search-input]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.BrnAutocompleteSearchInput, inputs: ["value", "value"] }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
138
138
|
}
|
|
@@ -203,9 +203,10 @@ class HlmAutocomplete {
|
|
|
203
203
|
_brnPopover = viewChild.required(BrnPopover);
|
|
204
204
|
_inputRef = viewChild.required('input', { read: ElementRef });
|
|
205
205
|
_elementRef = inject((ElementRef));
|
|
206
|
+
onSelect = input(...(ngDevMode ? [undefined, { debugName: "onSelect" }] : []));
|
|
206
207
|
/** The user defined class */
|
|
207
208
|
userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
208
|
-
_computedClass = computed(() => hlm('
|
|
209
|
+
_computedClass = computed(() => hlm('block w-full', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
209
210
|
/** Custom class for the autocomplete list. */
|
|
210
211
|
autocompleteListClass = input('', ...(ngDevMode ? [{ debugName: "autocompleteListClass" }] : []));
|
|
211
212
|
_computedAutocompleteListClass = computed(() => hlm('', this.autocompleteListClass()), ...(ngDevMode ? [{ debugName: "_computedAutocompleteListClass" }] : []));
|
|
@@ -253,6 +254,9 @@ class HlmAutocomplete {
|
|
|
253
254
|
this._brnPopover().close();
|
|
254
255
|
}
|
|
255
256
|
}
|
|
257
|
+
_click() {
|
|
258
|
+
this._toggleOptions();
|
|
259
|
+
}
|
|
256
260
|
_openPopover() {
|
|
257
261
|
if (this._search() || this.filteredOptions().length > 0) {
|
|
258
262
|
// only open if there's a search term or options to show
|
|
@@ -286,9 +290,22 @@ class HlmAutocomplete {
|
|
|
286
290
|
this._onChange?.(option);
|
|
287
291
|
this.valueChange.emit(option);
|
|
288
292
|
const searchValue = this.transformValueToSearch()(option);
|
|
289
|
-
this.
|
|
290
|
-
|
|
291
|
-
|
|
293
|
+
if (this.onSelect()) {
|
|
294
|
+
this.onSelect()?.(searchValue);
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
this._search.set(searchValue);
|
|
298
|
+
this.searchChange.emit(searchValue);
|
|
299
|
+
this._setPopoverState('closed');
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
clearText() {
|
|
303
|
+
this._inputRef().nativeElement.value = '';
|
|
304
|
+
this._search.set('');
|
|
305
|
+
this.searchChange.emit('');
|
|
306
|
+
}
|
|
307
|
+
setPopoverState(state) {
|
|
308
|
+
this._setPopoverState(state);
|
|
292
309
|
}
|
|
293
310
|
/** CONTROL VALUE ACCESSOR */
|
|
294
311
|
writeValue(value) {
|
|
@@ -304,7 +321,7 @@ class HlmAutocomplete {
|
|
|
304
321
|
this._disabled.set(isDisabled);
|
|
305
322
|
}
|
|
306
323
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: HlmAutocomplete, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
307
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.1", type: HlmAutocomplete, isStandalone: true, selector: "hlm-autocomplete", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, autocompleteListClass: { classPropertyName: "autocompleteListClass", publicName: "autocompleteListClass", isSignal: true, isRequired: false, transformFunction: null }, autocompleteEmptyClass: { classPropertyName: "autocompleteEmptyClass", publicName: "autocompleteEmptyClass", isSignal: true, isRequired: false, transformFunction: null }, filteredOptions: { classPropertyName: "filteredOptions", publicName: "filteredOptions", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, search: { classPropertyName: "search", publicName: "search", isSignal: true, isRequired: false, transformFunction: null }, transformValueToSearch: { classPropertyName: "transformValueToSearch", publicName: "transformValueToSearch", isSignal: true, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholderText: { classPropertyName: "searchPlaceholderText", publicName: "searchPlaceholderText", isSignal: true, isRequired: false, transformFunction: null }, loadingText: { classPropertyName: "loadingText", publicName: "loadingText", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelToggleButton: { classPropertyName: "ariaLabelToggleButton", publicName: "ariaLabelToggleButton", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", searchChange: "searchChange" }, host: { properties: { "class": "_computedClass()" } }, providers: [HLM_AUTOCOMPLETE_VALUE_ACCESSOR, provideIcons({ lucideSearch, lucideChevronDown })], viewQueries: [{ propertyName: "_brnPopover", first: true, predicate: BrnPopover, descendants: true, isSignal: true }, { propertyName: "_inputRef", first: true, predicate: ["input"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
|
|
324
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.1", type: HlmAutocomplete, isStandalone: true, selector: "hlm-autocomplete", inputs: { onSelect: { classPropertyName: "onSelect", publicName: "onSelect", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, autocompleteListClass: { classPropertyName: "autocompleteListClass", publicName: "autocompleteListClass", isSignal: true, isRequired: false, transformFunction: null }, autocompleteEmptyClass: { classPropertyName: "autocompleteEmptyClass", publicName: "autocompleteEmptyClass", isSignal: true, isRequired: false, transformFunction: null }, filteredOptions: { classPropertyName: "filteredOptions", publicName: "filteredOptions", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, search: { classPropertyName: "search", publicName: "search", isSignal: true, isRequired: false, transformFunction: null }, transformValueToSearch: { classPropertyName: "transformValueToSearch", publicName: "transformValueToSearch", isSignal: true, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholderText: { classPropertyName: "searchPlaceholderText", publicName: "searchPlaceholderText", isSignal: true, isRequired: false, transformFunction: null }, loadingText: { classPropertyName: "loadingText", publicName: "loadingText", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelToggleButton: { classPropertyName: "ariaLabelToggleButton", publicName: "ariaLabelToggleButton", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", searchChange: "searchChange" }, host: { properties: { "class": "_computedClass()" } }, providers: [HLM_AUTOCOMPLETE_VALUE_ACCESSOR, provideIcons({ lucideSearch, lucideChevronDown })], viewQueries: [{ propertyName: "_brnPopover", first: true, predicate: BrnPopover, descendants: true, isSignal: true }, { propertyName: "_inputRef", first: true, predicate: ["input"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
|
|
308
325
|
<brn-popover
|
|
309
326
|
#popover
|
|
310
327
|
align="start"
|
|
@@ -327,10 +344,11 @@ class HlmAutocomplete {
|
|
|
327
344
|
[value]="_search()"
|
|
328
345
|
(input)="_onSearchChanged($event)"
|
|
329
346
|
(keydown.arrowDown)="_openPopover()"
|
|
347
|
+
(click)="_click()"
|
|
330
348
|
/>
|
|
331
349
|
|
|
332
350
|
<button
|
|
333
|
-
class="
|
|
351
|
+
class="flex items-center justify-center outline-none disabled:cursor-not-allowed [&>_ng-icon]:opacity-50"
|
|
334
352
|
tabindex="-1"
|
|
335
353
|
type="button"
|
|
336
354
|
[attr.aria-label]="ariaLabelToggleButton()"
|
|
@@ -344,7 +362,7 @@ class HlmAutocomplete {
|
|
|
344
362
|
<div
|
|
345
363
|
*brnPopoverContent="let ctx"
|
|
346
364
|
hlmPopoverContent
|
|
347
|
-
class="
|
|
365
|
+
class="p-0"
|
|
348
366
|
[style.width.px]="_elementRef.nativeElement.offsetWidth"
|
|
349
367
|
>
|
|
350
368
|
<hlm-autocomplete-list
|
|
@@ -421,10 +439,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
421
439
|
[value]="_search()"
|
|
422
440
|
(input)="_onSearchChanged($event)"
|
|
423
441
|
(keydown.arrowDown)="_openPopover()"
|
|
442
|
+
(click)="_click()"
|
|
424
443
|
/>
|
|
425
444
|
|
|
426
445
|
<button
|
|
427
|
-
class="
|
|
446
|
+
class="flex items-center justify-center outline-none disabled:cursor-not-allowed [&>_ng-icon]:opacity-50"
|
|
428
447
|
tabindex="-1"
|
|
429
448
|
type="button"
|
|
430
449
|
[attr.aria-label]="ariaLabelToggleButton()"
|
|
@@ -438,7 +457,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
438
457
|
<div
|
|
439
458
|
*brnPopoverContent="let ctx"
|
|
440
459
|
hlmPopoverContent
|
|
441
|
-
class="
|
|
460
|
+
class="p-0"
|
|
442
461
|
[style.width.px]="_elementRef.nativeElement.offsetWidth"
|
|
443
462
|
>
|
|
444
463
|
<hlm-autocomplete-list
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete.mjs","sources":["../../../projects/autocomplete/src/lib/autocomplete-empty.ts","../../../projects/autocomplete/src/lib/autocomplete-group.ts","../../../projects/autocomplete/src/lib/autocomplete-item.ts","../../../projects/autocomplete/src/lib/autocomplete-list.ts","../../../projects/autocomplete/src/lib/autocomplete-search.ts","../../../projects/autocomplete/src/lib/autocomplete-search-input.ts","../../../projects/autocomplete/src/lib/autocomplete-trigger.ts","../../../projects/autocomplete/src/lib/autocomplete.token.ts","../../../projects/autocomplete/src/lib/autocomplete.ts","../../../projects/autocomplete/src/public-api.ts","../../../projects/autocomplete/src/autocomplete.ts"],"sourcesContent":["import { Directive, computed, input } from '@angular/core';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport type { ClassValue } from 'clsx';\n\n@Directive({\n selector: '[hlmAutocompleteEmpty]',\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class HlmAutocompleteEmpty {\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n protected readonly _computedClass = computed(() => hlm('tw:py-6 tw:text-center tw:text-sm', this.userClass()));\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { BrnAutocompleteGroup } from '@spartan-ng/brain/autocomplete';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\n\n@Component({\n selector: 'hlm-autocomplete-group',\n template: '<ng-content />',\n hostDirectives: [\n {\n directive: BrnAutocompleteGroup,\n inputs: ['id'],\n },\n ],\n host: {\n '[class]': '_computedClass()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmAutocompleteGroup {\n /** The user defined class */\n public readonly userClass = input<string>('', { alias: 'class' });\n\n /** The styles to apply */\n protected readonly _computedClass = computed(() =>\n hlm('tw:text-foreground tw:block tw:overflow-hidden tw:p-1', this.userClass()),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { BrnAutocompleteItem } from '@spartan-ng/brain/autocomplete';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\n\n@Component({\n selector: 'button[hlm-autocomplete-item]',\n template: ` <ng-content /> `,\n hostDirectives: [\n {\n directive: BrnAutocompleteItem,\n inputs: ['value', 'disabled', 'id'],\n outputs: ['selected'],\n },\n ],\n host: {\n '[class]': '_computedClass()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmAutocompleteItem {\n /** The user defined class */\n public readonly userClass = input<string>('', { alias: 'class' });\n\n /** The styles to apply */\n protected readonly _computedClass = computed(() =>\n hlm(\n 'tw:data-[selected]:bg-accent tw:data-[selected=true]:text-accent-foreground tw:[&>ng-icon]:text-muted-foreground tw:outline-hidden tw:relative tw:flex tw:w-full tw:cursor-default tw:select-none tw:items-center tw:gap-2 tw:rounded-sm tw:px-2 tw:py-1.5 tw:text-sm tw:data-[disabled]:pointer-events-none tw:data-[hidden]:hidden tw:data-[disabled]:opacity-50 tw:[&>ng-icon]:pointer-events-none tw:[&>ng-icon]:shrink-0 tw:[&>ng-icon]:text-base',\n this.userClass(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { BrnAutocompleteList } from '@spartan-ng/brain/autocomplete';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\n\n@Component({\n selector: 'hlm-autocomplete-list',\n template: '<ng-content />',\n host: {\n '[class]': '_computedClass()',\n },\n hostDirectives: [\n {\n directive: BrnAutocompleteList,\n inputs: ['id'],\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmAutocompleteList {\n /** The user defined class */\n public readonly userClass = input<string>('', { alias: 'class' });\n\n /** The styles to apply */\n protected readonly _computedClass = computed(() =>\n hlm('tw:block tw:max-h-60 tw:overflow-y-auto tw:overflow-x-hidden', this.userClass()),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { provideHlmIconConfig } from '@egose/shadcn-theme-ng/icon';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport type { ClassValue } from 'clsx';\n\n@Component({\n selector: 'hlm-autocomplete-search',\n template: ` <ng-content /> `,\n host: {\n '[class]': '_computedClass()',\n },\n providers: [provideHlmIconConfig({ size: 'sm' })],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmAutocompleteSearch {\n /** The user defined class */\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n /** The styles to apply */\n protected readonly _computedClass = computed(() =>\n hlm(\n 'tw:border-input tw:focus-within:border-ring tw:bg-background tw:focus-within:ring-ring/50 tw:shadow-xs tw:dark:bg-input/30 tw:flex tw:h-9 tw:min-w-0 tw:items-center tw:gap-2 tw:rounded-md tw:border tw:px-3 tw:focus-within:ring-[3px] tw:[&>_ng-icon]:flex-none tw:[&>_ng-icon]:opacity-50',\n this.userClass(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { BrnAutocompleteSearchInput } from '@spartan-ng/brain/autocomplete';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport type { ClassValue } from 'clsx';\n\n@Component({\n selector: 'input[hlm-autocomplete-search-input]',\n template: '',\n hostDirectives: [{ directive: BrnAutocompleteSearchInput, inputs: ['value'] }],\n host: {\n '[class]': '_computedClass()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmAutocompleteSearchInput {\n /** The user defined class */\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n /** The styles to apply */\n protected readonly _computedClass = computed(() =>\n hlm(\n 'tw:placeholder:text-muted-foreground tw:flex tw:h-9 tw:w-full tw:bg-transparent tw:py-1 tw:text-base tw:outline-none tw:disabled:cursor-not-allowed tw:disabled:opacity-50 tw:md:text-sm',\n this.userClass(),\n ),\n );\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\n\n@Directive({\n selector: '[hlmAutocompleteTrigger]',\n host: {\n '(click)': 'open()',\n },\n})\nexport class HlmAutocompleteTrigger {\n private readonly _host = inject(ElementRef, { host: true });\n\n private readonly _brnDialog = inject(BrnDialog, { optional: true });\n\n /** Whether the trigger is disabled. */\n public readonly disabledTrigger = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n constructor() {\n if (!this._brnDialog) return;\n\n this._brnDialog.mutableAttachTo.set(this._host.nativeElement);\n }\n\n open() {\n if (this.disabledTrigger()) return;\n\n this._brnDialog?.open();\n }\n}\n","import { inject, InjectionToken, ValueProvider } from '@angular/core';\n\nexport type TransformValueToString<T> = (value: T) => string;\n\nexport interface HlmAutocompleteConfig<T> {\n transformValueToSearch: TransformValueToString<T>;\n}\n\nfunction getDefaultConfig<T>(): HlmAutocompleteConfig<T> {\n return {\n transformValueToSearch: (value: T) => (typeof value === 'string' ? value : String(value)),\n };\n}\n\nconst HlmAutocompleteConfigToken = new InjectionToken<HlmAutocompleteConfig<unknown>>('HlmAutocompleteConfig');\n\nexport function provideHlmAutocompleteConfig<T>(config: Partial<HlmAutocompleteConfig<T>>): ValueProvider {\n return { provide: HlmAutocompleteConfigToken, useValue: { ...getDefaultConfig(), ...config } };\n}\n\nexport function injectHlmAutocompleteConfig<T>(): HlmAutocompleteConfig<T> {\n return inject(HlmAutocompleteConfigToken, { optional: true }) ?? getDefaultConfig();\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n linkedSignal,\n output,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideSearch } from '@ng-icons/lucide';\nimport { BrnAutocomplete, BrnAutocompleteEmpty } from '@spartan-ng/brain/autocomplete';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover, BrnPopoverContent } from '@spartan-ng/brain/popover';\nimport { HlmIcon } from '@egose/shadcn-theme-ng/icon';\nimport { HlmPopoverContent } from '@egose/shadcn-theme-ng/popover';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport type { ClassValue } from 'clsx';\nimport { HlmAutocompleteEmpty } from './autocomplete-empty';\nimport { HlmAutocompleteGroup } from './autocomplete-group';\nimport { HlmAutocompleteItem } from './autocomplete-item';\nimport { HlmAutocompleteList } from './autocomplete-list';\nimport { HlmAutocompleteSearch } from './autocomplete-search';\nimport { HlmAutocompleteSearchInput } from './autocomplete-search-input';\nimport { HlmAutocompleteTrigger } from './autocomplete-trigger';\nimport { injectHlmAutocompleteConfig } from './autocomplete.token';\n\nexport const HLM_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => HlmAutocomplete),\n multi: true,\n};\n\n@Component({\n selector: 'hlm-autocomplete',\n imports: [\n NgTemplateOutlet,\n\n BrnPopover,\n BrnPopoverContent,\n HlmPopoverContent,\n\n BrnAutocomplete,\n BrnAutocompleteEmpty,\n HlmAutocompleteEmpty,\n HlmAutocompleteGroup,\n HlmAutocompleteItem,\n HlmAutocompleteList,\n HlmAutocompleteSearch,\n HlmAutocompleteSearchInput,\n HlmAutocompleteTrigger,\n\n NgIcon,\n HlmIcon,\n ],\n providers: [HLM_AUTOCOMPLETE_VALUE_ACCESSOR, provideIcons({ lucideSearch, lucideChevronDown })],\n template: `\n <brn-popover\n #popover\n align=\"start\"\n autoFocus=\"first-heading\"\n sideOffset=\"5\"\n closeDelay=\"100\"\n [closeOnOutsidePointerEvents]=\"true\"\n >\n <div brnAutocomplete>\n <hlm-autocomplete-search hlmAutocompleteTrigger [disabledTrigger]=\"!_search()\">\n <ng-icon name=\"lucideSearch\" hlm />\n <input\n #input\n type=\"text\"\n autocomplete=\"off\"\n hlm-autocomplete-search-input\n [id]=\"inputId()\"\n [placeholder]=\"searchPlaceholderText()\"\n [disabled]=\"_disabled()\"\n [value]=\"_search()\"\n (input)=\"_onSearchChanged($event)\"\n (keydown.arrowDown)=\"_openPopover()\"\n />\n\n <button\n class=\"tw:flex tw:items-center tw:justify-center tw:outline-none tw:disabled:cursor-not-allowed tw:[&>_ng-icon]:opacity-50\"\n tabindex=\"-1\"\n type=\"button\"\n [attr.aria-label]=\"ariaLabelToggleButton()\"\n [disabled]=\"_disabled()\"\n (click)=\"_toggleOptions()\"\n >\n <ng-icon name=\"lucideChevronDown\" hlm />\n </button>\n </hlm-autocomplete-search>\n\n <div\n *brnPopoverContent=\"let ctx\"\n hlmPopoverContent\n class=\"tw:p-0\"\n [style.width.px]=\"_elementRef.nativeElement.offsetWidth\"\n >\n <hlm-autocomplete-list\n [class]=\"_computedAutocompleteListClass()\"\n [class.hidden]=\"filteredOptions().length === 0\"\n >\n <hlm-autocomplete-group>\n @for (option of filteredOptions(); track option) {\n <button hlm-autocomplete-item [value]=\"option\" (selected)=\"_optionSelected(option)\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: option }\" />\n } @else {\n {{ option }}\n }\n </button>\n }\n </hlm-autocomplete-group>\n </hlm-autocomplete-list>\n\n <div *brnAutocompleteEmpty hlmAutocompleteEmpty [class]=\"_computedAutocompleteEmptyClass()\">\n @if (loading()) {\n <ng-content select=\"[loading]\">{{ loadingText() }}</ng-content>\n } @else {\n <ng-content select=\"[empty]\">{{ emptyText() }}</ng-content>\n }\n </div>\n </div>\n </div>\n </brn-popover>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class HlmAutocomplete<T> implements ControlValueAccessor {\n private static _id = 0;\n private readonly _config = injectHlmAutocompleteConfig<T>();\n\n private readonly _brnPopover = viewChild.required(BrnPopover);\n private readonly _inputRef = viewChild.required('input', { read: ElementRef });\n\n protected readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n /** The user defined class */\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n protected readonly _computedClass = computed(() => hlm('tw:block tw:w-full', this.userClass()));\n\n /** Custom class for the autocomplete list. */\n public readonly autocompleteListClass = input<ClassValue>('');\n protected readonly _computedAutocompleteListClass = computed(() => hlm('', this.autocompleteListClass()));\n\n /** Custom class for the empty and loading state container. */\n public readonly autocompleteEmptyClass = input<ClassValue>('');\n protected readonly _computedAutocompleteEmptyClass = computed(() => hlm('', this.autocompleteEmptyClass()));\n\n /** The list of filtered options to display in the autocomplete. */\n public readonly filteredOptions = input<T[]>([]);\n\n /** The selected value. */\n public readonly value = input<T>();\n protected readonly _value = linkedSignal(() => this.value());\n\n /** The search query. */\n public readonly search = input<string>();\n protected readonly _search = linkedSignal(() => this.search() || '');\n\n /** Function to transform an option value to a search string. Defaults to identity function for strings. */\n public readonly transformValueToSearch = input<(value: T) => string>(this._config.transformValueToSearch);\n\n /** Optional template for rendering each option. */\n public readonly optionTemplate = input<TemplateRef<HlmAutocompleteOption<T>>>();\n\n /** Whether the autocomplete is in a loading state. */\n public readonly loading = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Placeholder text for the input field. */\n public readonly searchPlaceholderText = input('Select an option');\n\n /** Text to display when loading options. */\n public readonly loadingText = input('Loading options...');\n\n /** Text to display when no options are found. */\n public readonly emptyText = input('No options found');\n\n /** Aria label for the toggle button. */\n public readonly ariaLabelToggleButton = input<string>('Toggle options');\n\n /** The id of the input field. */\n public readonly inputId = input<string>(`hlm-autocomplete-input-${++HlmAutocomplete._id}`);\n\n /** Whether the autocomplete is disabled. */\n public readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n protected readonly _disabled = linkedSignal(() => this.disabled());\n\n /** Emitted when the selected value changes. */\n public readonly valueChange = output<T | null>();\n\n /** Emitted when the search query changes. */\n public readonly searchChange = output<string>();\n\n protected _onChange?: ChangeFn<T | null>;\n protected _onTouched?: TouchFn;\n\n protected _setPopoverState(state: 'open' | 'closed') {\n if (state === 'open') {\n this._brnPopover().open();\n } else {\n this._brnPopover().close();\n }\n }\n\n protected _openPopover() {\n if (this._search() || this.filteredOptions().length > 0) {\n // only open if there's a search term or options to show\n this._brnPopover().open();\n }\n }\n\n protected _toggleOptions() {\n if (this._search() || this.filteredOptions().length > 0) {\n // only toggle if there's a search term or options to show\n const state = this._brnPopover().stateComputed();\n this._setPopoverState(state === 'open' ? 'closed' : 'open');\n }\n\n this._inputRef().nativeElement.focus();\n }\n\n protected _onSearchChanged(event: Event) {\n const input = event.target as HTMLInputElement;\n this._search.set(input.value);\n this.searchChange.emit(input.value);\n\n this._clearOption();\n\n if (this._brnPopover().stateComputed() !== 'open' && input.value.length > 0) {\n this._setPopoverState('open');\n }\n }\n\n protected _clearOption() {\n this._value.set(undefined);\n this._onChange?.(null);\n this.valueChange.emit(null);\n }\n\n protected _optionSelected(option: T) {\n this._value.set(option);\n this._onChange?.(option);\n this.valueChange.emit(option);\n\n const searchValue = this.transformValueToSearch()(option);\n\n this._search.set(searchValue);\n this.searchChange.emit(searchValue);\n\n this._setPopoverState('closed');\n }\n\n /** CONTROL VALUE ACCESSOR */\n public writeValue(value: T | null): void {\n this._value.set(value ? value : undefined);\n }\n\n public registerOnChange(fn: ChangeFn<T | null>): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: TouchFn): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n}\n\ninterface HlmAutocompleteOption<T> {\n $implicit: T;\n}\n","/*\n * Public API Surface of autocomplete\n */\n\nimport { NgModule } from '@angular/core';\nimport { HlmAutocomplete } from './lib/autocomplete';\nimport { HlmAutocompleteEmpty } from './lib/autocomplete-empty';\nimport { HlmAutocompleteGroup } from './lib/autocomplete-group';\nimport { HlmAutocompleteItem } from './lib/autocomplete-item';\nimport { HlmAutocompleteList } from './lib/autocomplete-list';\nimport { HlmAutocompleteSearch } from './lib/autocomplete-search';\nimport { HlmAutocompleteSearchInput } from './lib/autocomplete-search-input';\nimport { HlmAutocompleteTrigger } from './lib/autocomplete-trigger';\n\nexport * from './lib/autocomplete';\nexport * from './lib/autocomplete-empty';\nexport * from './lib/autocomplete-group';\nexport * from './lib/autocomplete-item';\nexport * from './lib/autocomplete-list';\nexport * from './lib/autocomplete-search';\nexport * from './lib/autocomplete-search-input';\nexport * from './lib/autocomplete-trigger';\nexport * from './lib/autocomplete.token';\n\nexport const HlmAutocompleteImports = [\n HlmAutocomplete,\n HlmAutocompleteEmpty,\n HlmAutocompleteGroup,\n HlmAutocompleteItem,\n HlmAutocompleteList,\n HlmAutocompleteSearch,\n HlmAutocompleteSearchInput,\n HlmAutocompleteTrigger,\n] as const;\n\n@NgModule({\n imports: [...HlmAutocompleteImports],\n exports: [...HlmAutocompleteImports],\n})\nexport class HlmAutocompleteModule {}\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":"autocomplete.mjs","sources":["../../../projects/autocomplete/src/lib/autocomplete-empty.ts","../../../projects/autocomplete/src/lib/autocomplete-group.ts","../../../projects/autocomplete/src/lib/autocomplete-item.ts","../../../projects/autocomplete/src/lib/autocomplete-list.ts","../../../projects/autocomplete/src/lib/autocomplete-search.ts","../../../projects/autocomplete/src/lib/autocomplete-search-input.ts","../../../projects/autocomplete/src/lib/autocomplete-trigger.ts","../../../projects/autocomplete/src/lib/autocomplete.token.ts","../../../projects/autocomplete/src/lib/autocomplete.ts","../../../projects/autocomplete/src/public-api.ts","../../../projects/autocomplete/src/autocomplete.ts"],"sourcesContent":["import { Directive, computed, input } from '@angular/core';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport type { ClassValue } from 'clsx';\n\n@Directive({\n selector: '[hlmAutocompleteEmpty]',\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class HlmAutocompleteEmpty {\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n protected readonly _computedClass = computed(() => hlm('tw:py-2 tw:text-center tw:text-sm', this.userClass()));\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { BrnAutocompleteGroup } from '@spartan-ng/brain/autocomplete';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\n\n@Component({\n selector: 'hlm-autocomplete-group',\n template: '<ng-content />',\n hostDirectives: [\n {\n directive: BrnAutocompleteGroup,\n inputs: ['id'],\n },\n ],\n host: {\n '[class]': '_computedClass()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmAutocompleteGroup {\n /** The user defined class */\n public readonly userClass = input<string>('', { alias: 'class' });\n\n /** The styles to apply */\n protected readonly _computedClass = computed(() =>\n hlm('tw:text-foreground tw:block tw:overflow-hidden tw:p-1', this.userClass()),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { BrnAutocompleteItem } from '@spartan-ng/brain/autocomplete';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\n\n@Component({\n selector: 'button[hlm-autocomplete-item]',\n template: ` <ng-content /> `,\n hostDirectives: [\n {\n directive: BrnAutocompleteItem,\n inputs: ['value', 'disabled', 'id'],\n outputs: ['selected'],\n },\n ],\n host: {\n '[class]': '_computedClass()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmAutocompleteItem {\n /** The user defined class */\n public readonly userClass = input<string>('', { alias: 'class' });\n\n /** The styles to apply */\n protected readonly _computedClass = computed(() =>\n hlm(\n 'tw:data-[selected]:bg-accent tw:data-[selected]:text-accent-foreground tw:[&>ng-icon]:text-muted-foreground tw:outline-hidden tw:relative tw:flex tw:w-full tw:cursor-default tw:select-none tw:items-center tw:gap-2 tw:rounded-sm tw:px-2 tw:py-1.5 tw:text-sm tw:data-[disabled]:pointer-events-none tw:data-[hidden]:hidden tw:data-[disabled]:opacity-50 tw:[&>ng-icon]:pointer-events-none tw:[&>ng-icon]:shrink-0 tw:[&>ng-icon]:text-base',\n this.userClass(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { BrnAutocompleteList } from '@spartan-ng/brain/autocomplete';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\n\n@Component({\n selector: 'hlm-autocomplete-list',\n template: '<ng-content />',\n host: {\n '[class]': '_computedClass()',\n },\n hostDirectives: [\n {\n directive: BrnAutocompleteList,\n inputs: ['id'],\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmAutocompleteList {\n /** The user defined class */\n public readonly userClass = input<string>('', { alias: 'class' });\n\n /** The styles to apply */\n protected readonly _computedClass = computed(() =>\n hlm('tw:block tw:max-h-60 tw:overflow-y-auto tw:overflow-x-hidden', this.userClass()),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { provideHlmIconConfig } from '@egose/shadcn-theme-ng/icon';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport type { ClassValue } from 'clsx';\n\n@Component({\n selector: 'hlm-autocomplete-search',\n template: ` <ng-content /> `,\n host: {\n '[class]': '_computedClass()',\n },\n providers: [provideHlmIconConfig({ size: 'sm' })],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmAutocompleteSearch {\n /** The user defined class */\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n /** The styles to apply */\n protected readonly _computedClass = computed(() =>\n hlm(\n 'tw:border-input tw:focus-within:border-ring tw:bg-background tw:focus-within:ring-ring/50 tw:shadow-xs tw:dark:bg-input/10 tw:flex tw:h-9 tw:min-w-0 tw:items-center tw:gap-2 tw:rounded-md tw:border tw:px-3 tw:focus-within:ring-[3px] tw:[&>_ng-icon]:flex-none tw:[&>_ng-icon]:opacity-50',\n this.userClass(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { BrnAutocompleteSearchInput } from '@spartan-ng/brain/autocomplete';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport type { ClassValue } from 'clsx';\n\n@Component({\n selector: 'input[hlm-autocomplete-search-input]',\n template: '',\n hostDirectives: [{ directive: BrnAutocompleteSearchInput, inputs: ['value'] }],\n host: {\n '[class]': '_computedClass()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmAutocompleteSearchInput {\n /** The user defined class */\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n /** The styles to apply */\n protected readonly _computedClass = computed(() =>\n hlm(\n 'tw:placeholder:text-muted-foreground tw:flex tw:h-9 tw:w-full tw:bg-transparent tw:py-1 tw:text-base tw:outline-none tw:disabled:cursor-not-allowed tw:disabled:opacity-50 tw:md:text-sm',\n this.userClass(),\n ),\n );\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\n\n@Directive({\n selector: '[hlmAutocompleteTrigger]',\n host: {\n '(click)': 'open()',\n },\n})\nexport class HlmAutocompleteTrigger {\n private readonly _host = inject(ElementRef, { host: true });\n\n private readonly _brnDialog = inject(BrnDialog, { optional: true });\n\n /** Whether the trigger is disabled. */\n public readonly disabledTrigger = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n constructor() {\n if (!this._brnDialog) return;\n\n this._brnDialog.mutableAttachTo.set(this._host.nativeElement);\n }\n\n open() {\n if (this.disabledTrigger()) return;\n\n this._brnDialog?.open();\n }\n}\n","import { inject, InjectionToken, ValueProvider } from '@angular/core';\n\nexport type TransformValueToString<T> = (value: T) => string;\n\nexport interface HlmAutocompleteConfig<T> {\n transformValueToSearch: TransformValueToString<T>;\n}\n\nfunction getDefaultConfig<T>(): HlmAutocompleteConfig<T> {\n return {\n transformValueToSearch: (value: T) => (typeof value === 'string' ? value : String(value)),\n };\n}\n\nconst HlmAutocompleteConfigToken = new InjectionToken<HlmAutocompleteConfig<unknown>>('HlmAutocompleteConfig');\n\nexport function provideHlmAutocompleteConfig<T>(config: Partial<HlmAutocompleteConfig<T>>): ValueProvider {\n return { provide: HlmAutocompleteConfigToken, useValue: { ...getDefaultConfig(), ...config } };\n}\n\nexport function injectHlmAutocompleteConfig<T>(): HlmAutocompleteConfig<T> {\n return inject(HlmAutocompleteConfigToken, { optional: true }) ?? getDefaultConfig();\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n linkedSignal,\n output,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideSearch } from '@ng-icons/lucide';\nimport { BrnAutocomplete, BrnAutocompleteEmpty } from '@spartan-ng/brain/autocomplete';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover, BrnPopoverContent } from '@spartan-ng/brain/popover';\nimport { HlmIcon } from '@egose/shadcn-theme-ng/icon';\nimport { HlmPopoverContent } from '@egose/shadcn-theme-ng/popover';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport type { ClassValue } from 'clsx';\nimport { HlmAutocompleteEmpty } from './autocomplete-empty';\nimport { HlmAutocompleteGroup } from './autocomplete-group';\nimport { HlmAutocompleteItem } from './autocomplete-item';\nimport { HlmAutocompleteList } from './autocomplete-list';\nimport { HlmAutocompleteSearch } from './autocomplete-search';\nimport { HlmAutocompleteSearchInput } from './autocomplete-search-input';\nimport { HlmAutocompleteTrigger } from './autocomplete-trigger';\nimport { injectHlmAutocompleteConfig } from './autocomplete.token';\n\nexport const HLM_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => HlmAutocomplete),\n multi: true,\n};\n\n@Component({\n selector: 'hlm-autocomplete',\n imports: [\n NgTemplateOutlet,\n\n BrnPopover,\n BrnPopoverContent,\n HlmPopoverContent,\n\n BrnAutocomplete,\n BrnAutocompleteEmpty,\n HlmAutocompleteEmpty,\n HlmAutocompleteGroup,\n HlmAutocompleteItem,\n HlmAutocompleteList,\n HlmAutocompleteSearch,\n HlmAutocompleteSearchInput,\n HlmAutocompleteTrigger,\n\n NgIcon,\n HlmIcon,\n ],\n providers: [HLM_AUTOCOMPLETE_VALUE_ACCESSOR, provideIcons({ lucideSearch, lucideChevronDown })],\n template: `\n <brn-popover\n #popover\n align=\"start\"\n autoFocus=\"first-heading\"\n sideOffset=\"5\"\n closeDelay=\"100\"\n [closeOnOutsidePointerEvents]=\"true\"\n >\n <div brnAutocomplete>\n <hlm-autocomplete-search hlmAutocompleteTrigger [disabledTrigger]=\"!_search()\">\n <ng-icon name=\"lucideSearch\" hlm />\n <input\n #input\n type=\"text\"\n autocomplete=\"off\"\n hlm-autocomplete-search-input\n [id]=\"inputId()\"\n [placeholder]=\"searchPlaceholderText()\"\n [disabled]=\"_disabled()\"\n [value]=\"_search()\"\n (input)=\"_onSearchChanged($event)\"\n (keydown.arrowDown)=\"_openPopover()\"\n (click)=\"_click()\"\n />\n\n <button\n class=\"tw:flex tw:items-center tw:justify-center tw:outline-none tw:disabled:cursor-not-allowed tw:[&>_ng-icon]:opacity-50\"\n tabindex=\"-1\"\n type=\"button\"\n [attr.aria-label]=\"ariaLabelToggleButton()\"\n [disabled]=\"_disabled()\"\n (click)=\"_toggleOptions()\"\n >\n <ng-icon name=\"lucideChevronDown\" hlm />\n </button>\n </hlm-autocomplete-search>\n\n <div\n *brnPopoverContent=\"let ctx\"\n hlmPopoverContent\n class=\"tw:p-0\"\n [style.width.px]=\"_elementRef.nativeElement.offsetWidth\"\n >\n <hlm-autocomplete-list\n [class]=\"_computedAutocompleteListClass()\"\n [class.hidden]=\"filteredOptions().length === 0\"\n >\n <hlm-autocomplete-group>\n @for (option of filteredOptions(); track option) {\n <button hlm-autocomplete-item [value]=\"option\" (selected)=\"_optionSelected(option)\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: option }\" />\n } @else {\n {{ option }}\n }\n </button>\n }\n </hlm-autocomplete-group>\n </hlm-autocomplete-list>\n\n <div *brnAutocompleteEmpty hlmAutocompleteEmpty [class]=\"_computedAutocompleteEmptyClass()\">\n @if (loading()) {\n <ng-content select=\"[loading]\">{{ loadingText() }}</ng-content>\n } @else {\n <ng-content select=\"[empty]\">{{ emptyText() }}</ng-content>\n }\n </div>\n </div>\n </div>\n </brn-popover>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class HlmAutocomplete<T> implements ControlValueAccessor {\n private static _id = 0;\n private readonly _config = injectHlmAutocompleteConfig<T>();\n\n private readonly _brnPopover = viewChild.required(BrnPopover);\n private readonly _inputRef = viewChild.required('input', { read: ElementRef });\n\n protected readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n public readonly onSelect = input<(option: string) => void>();\n\n /** The user defined class */\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n protected readonly _computedClass = computed(() => hlm('tw:block tw:w-full', this.userClass()));\n\n /** Custom class for the autocomplete list. */\n public readonly autocompleteListClass = input<ClassValue>('');\n protected readonly _computedAutocompleteListClass = computed(() => hlm('', this.autocompleteListClass()));\n\n /** Custom class for the empty and loading state container. */\n public readonly autocompleteEmptyClass = input<ClassValue>('');\n protected readonly _computedAutocompleteEmptyClass = computed(() => hlm('', this.autocompleteEmptyClass()));\n\n /** The list of filtered options to display in the autocomplete. */\n public readonly filteredOptions = input<T[]>([]);\n\n /** The selected value. */\n public readonly value = input<T>();\n protected readonly _value = linkedSignal(() => this.value());\n\n /** The search query. */\n public readonly search = input<string>();\n protected readonly _search = linkedSignal(() => this.search() || '');\n\n /** Function to transform an option value to a search string. Defaults to identity function for strings. */\n public readonly transformValueToSearch = input<(value: T) => string>(this._config.transformValueToSearch);\n\n /** Optional template for rendering each option. */\n public readonly optionTemplate = input<TemplateRef<HlmAutocompleteOption<T>>>();\n\n /** Whether the autocomplete is in a loading state. */\n public readonly loading = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Placeholder text for the input field. */\n public readonly searchPlaceholderText = input('Select an option');\n\n /** Text to display when loading options. */\n public readonly loadingText = input('Loading options...');\n\n /** Text to display when no options are found. */\n public readonly emptyText = input('No options found');\n\n /** Aria label for the toggle button. */\n public readonly ariaLabelToggleButton = input<string>('Toggle options');\n\n /** The id of the input field. */\n public readonly inputId = input<string>(`hlm-autocomplete-input-${++HlmAutocomplete._id}`);\n\n /** Whether the autocomplete is disabled. */\n public readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n protected readonly _disabled = linkedSignal(() => this.disabled());\n\n /** Emitted when the selected value changes. */\n public readonly valueChange = output<T | null>();\n\n /** Emitted when the search query changes. */\n public readonly searchChange = output<string>();\n\n protected _onChange?: ChangeFn<T | null>;\n protected _onTouched?: TouchFn;\n\n protected _setPopoverState(state: 'open' | 'closed') {\n if (state === 'open') {\n this._brnPopover().open();\n } else {\n this._brnPopover().close();\n }\n }\n\n protected _click() {\n this._toggleOptions();\n }\n\n protected _openPopover() {\n if (this._search() || this.filteredOptions().length > 0) {\n // only open if there's a search term or options to show\n this._brnPopover().open();\n }\n }\n\n protected _toggleOptions() {\n if (this._search() || this.filteredOptions().length > 0) {\n // only toggle if there's a search term or options to show\n const state = this._brnPopover().stateComputed();\n this._setPopoverState(state === 'open' ? 'closed' : 'open');\n }\n\n this._inputRef().nativeElement.focus();\n }\n\n protected _onSearchChanged(event: Event) {\n const input = event.target as HTMLInputElement;\n this._search.set(input.value);\n this.searchChange.emit(input.value);\n\n this._clearOption();\n\n if (this._brnPopover().stateComputed() !== 'open' && input.value.length > 0) {\n this._setPopoverState('open');\n }\n }\n\n protected _clearOption() {\n this._value.set(undefined);\n this._onChange?.(null);\n this.valueChange.emit(null);\n }\n\n protected _optionSelected(option: T) {\n this._value.set(option);\n this._onChange?.(option);\n this.valueChange.emit(option);\n\n const searchValue = this.transformValueToSearch()(option);\n\n if (this.onSelect()) {\n this.onSelect()?.(searchValue);\n } else {\n this._search.set(searchValue);\n this.searchChange.emit(searchValue);\n\n this._setPopoverState('closed');\n }\n }\n\n public clearText(): void {\n this._inputRef().nativeElement.value = '';\n this._search.set('');\n this.searchChange.emit('');\n }\n\n public setPopoverState(state: 'open' | 'closed') {\n this._setPopoverState(state);\n }\n\n /** CONTROL VALUE ACCESSOR */\n public writeValue(value: T | null): void {\n this._value.set(value ? value : undefined);\n }\n\n public registerOnChange(fn: ChangeFn<T | null>): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: TouchFn): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n}\n\ninterface HlmAutocompleteOption<T> {\n $implicit: T;\n}\n","/*\n * Public API Surface of autocomplete\n */\n\nimport { NgModule } from '@angular/core';\nimport { HlmAutocomplete } from './lib/autocomplete';\nimport { HlmAutocompleteEmpty } from './lib/autocomplete-empty';\nimport { HlmAutocompleteGroup } from './lib/autocomplete-group';\nimport { HlmAutocompleteItem } from './lib/autocomplete-item';\nimport { HlmAutocompleteList } from './lib/autocomplete-list';\nimport { HlmAutocompleteSearch } from './lib/autocomplete-search';\nimport { HlmAutocompleteSearchInput } from './lib/autocomplete-search-input';\nimport { HlmAutocompleteTrigger } from './lib/autocomplete-trigger';\n\nexport * from './lib/autocomplete';\nexport * from './lib/autocomplete-empty';\nexport * from './lib/autocomplete-group';\nexport * from './lib/autocomplete-item';\nexport * from './lib/autocomplete-list';\nexport * from './lib/autocomplete-search';\nexport * from './lib/autocomplete-search-input';\nexport * from './lib/autocomplete-trigger';\nexport * from './lib/autocomplete.token';\n\nexport const HlmAutocompleteImports = [\n HlmAutocomplete,\n HlmAutocompleteEmpty,\n HlmAutocompleteGroup,\n HlmAutocompleteItem,\n HlmAutocompleteList,\n HlmAutocompleteSearch,\n HlmAutocompleteSearchInput,\n HlmAutocompleteTrigger,\n] as const;\n\n@NgModule({\n imports: [...HlmAutocompleteImports],\n exports: [...HlmAutocompleteImports],\n})\nexport class HlmAutocompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|