@lucca-front/ng 17.2.0 → 17.2.2
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/button/button.component.d.ts +1 -2
- package/callout/callout-feedback-list/callout-feedback-list.component.d.ts +1 -2
- package/core/public-api.d.ts +1 -1
- package/core/tools/class.d.ts +11 -0
- package/core-select/api/api-v3.directive.d.ts +25 -0
- package/core-select/api/api-v4.directive.d.ts +22 -0
- package/core-select/api/api.directive.d.ts +31 -0
- package/core-select/api/index.d.ts +5 -0
- package/core-select/api/public-api.d.ts +3 -0
- package/core-select/input/select-input.component.d.ts +3 -3
- package/core-select/option/option.component.d.ts +1 -0
- package/esm2022/button/button.component.mjs +7 -8
- package/esm2022/callout/callout-feedback-list/callout-feedback-list.component.mjs +6 -7
- package/esm2022/core/public-api.mjs +2 -2
- package/esm2022/core/tools/class.mjs +75 -0
- package/esm2022/core-select/api/api-v3.directive.mjs +62 -0
- package/esm2022/core-select/api/api-v4.directive.mjs +56 -0
- package/esm2022/core-select/api/api.directive.mjs +46 -0
- package/esm2022/core-select/api/lucca-front-ng-core-select-api.mjs +5 -0
- package/esm2022/core-select/api/public-api.mjs +4 -0
- package/esm2022/core-select/input/select-input.component.mjs +13 -12
- package/esm2022/core-select/option/option.component.mjs +5 -4
- package/esm2022/empty-state/empty-state-page/empty-state-page.component.mjs +3 -3
- package/esm2022/empty-state/empty-state-section/empty-state-section.component.mjs +3 -3
- package/esm2022/establishment/select/establishment-select.token.mjs +4 -0
- package/esm2022/establishment/select/input/establishment-select-input.component.mjs +13 -16
- package/esm2022/establishment/select/legal-unit-selector/legal-unit-selector.directive.mjs +9 -10
- package/esm2022/establishment/select/searcher/establishment-searcher.component.mjs +9 -10
- package/esm2022/establishment/select/select-all/establishment-select-all.component.mjs +9 -10
- package/esm2022/form-field/form-field.component.mjs +11 -10
- package/esm2022/icon/icon.component.mjs +3 -3
- package/esm2022/inline-message/inline-message.component.mjs +7 -8
- package/esm2022/multi-select/displayer/default-displayer.component.mjs +4 -2
- package/esm2022/multi-select/input/panel-ref.factory.mjs +6 -6
- package/esm2022/multi-select/input/select-input.component.mjs +3 -10
- package/esm2022/multi-select/panel/panel.component.mjs +18 -18
- package/esm2022/multi-select/select.model.mjs +2 -2
- package/esm2022/numeric-badge/numeric-badge.component.mjs +7 -8
- package/esm2022/option/item/option-item.component.mjs +3 -3
- package/esm2022/option/item/tree-option-item.component.mjs +3 -3
- package/esm2022/simple-select/api/api-v3.directive.mjs +6 -62
- package/esm2022/simple-select/api/api-v4.directive.mjs +6 -56
- package/esm2022/simple-select/api/api.directive.mjs +6 -40
- package/esm2022/simple-select/input/panel-ref.factory.mjs +7 -7
- package/esm2022/simple-select/input/select-input.component.mjs +2 -9
- package/esm2022/simple-select/panel/option-selected.pipe.mjs +17 -0
- package/esm2022/simple-select/panel/panel.component.mjs +21 -20
- package/esm2022/simple-select/select.model.mjs +2 -2
- package/establishment/select/establishment-select.token.d.ts +4 -0
- package/establishment/select/input/establishment-select-input.component.d.ts +2 -2
- package/establishment/select/legal-unit-selector/legal-unit-selector.directive.d.ts +2 -2
- package/establishment/select/searcher/establishment-searcher.component.d.ts +2 -2
- package/establishment/select/select-all/establishment-select-all.component.d.ts +2 -2
- package/fesm2022/lucca-front-ng-button.mjs +6 -7
- package/fesm2022/lucca-front-ng-button.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-callout.mjs +5 -6
- package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-api.mjs +162 -0
- package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -0
- package/fesm2022/lucca-front-ng-core-select.mjs +16 -14
- package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core.mjs +72 -22
- package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-empty-state.mjs +4 -4
- package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-establishment.mjs +32 -39
- package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-field.mjs +10 -9
- package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-icon.mjs +2 -2
- package/fesm2022/lucca-front-ng-icon.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-inline-message.mjs +6 -7
- package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-multi-select.mjs +26 -31
- package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-numeric-badge.mjs +6 -7
- package/fesm2022/lucca-front-ng-numeric-badge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-option.mjs +4 -4
- package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-simple-select-api.mjs +13 -146
- package/fesm2022/lucca-front-ng-simple-select-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-simple-select.mjs +40 -32
- package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
- package/form-field/form-field.component.d.ts +1 -2
- package/inline-message/inline-message.component.d.ts +1 -2
- package/multi-select/input/panel-ref.factory.d.ts +2 -2
- package/multi-select/panel/panel.component.d.ts +5 -5
- package/multi-select/select.model.d.ts +3 -12
- package/numeric-badge/numeric-badge.component.d.ts +1 -2
- package/package.json +26 -20
- package/simple-select/api/api-v3.directive.d.ts +5 -25
- package/simple-select/api/api-v4.directive.d.ts +5 -22
- package/simple-select/api/api.directive.d.ts +5 -32
- package/simple-select/input/panel-ref.factory.d.ts +2 -2
- package/simple-select/panel/option-selected.pipe.d.ts +7 -0
- package/simple-select/panel/panel.component.d.ts +5 -5
- package/simple-select/select.model.d.ts +3 -12
- package/src/definitions/option/_option-item.scss +1 -0
- package/core/tools/ng-clazz.directive.d.ts +0 -9
- package/esm2022/core/tools/ng-clazz.directive.mjs +0 -26
|
@@ -1,152 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as i0 from '@angular/core';
|
|
3
|
-
import { inject, Directive, Input } from '@angular/core';
|
|
4
|
-
import { Subject, scan, startWith, debounceTime, BehaviorSubject, takeUntil, of, catchError, tap, concatMap, takeWhile, switchMap, combineLatest, ReplaySubject, map, take } from 'rxjs';
|
|
5
|
-
import { ALuSelectInputComponent } from '@lucca-front/ng/core-select';
|
|
1
|
+
import { LuCoreSelectApiV3Directive, LuCoreSelectApiV4Directive, ALuCoreSelectApiDirective } from '@lucca-front/ng/core-select/api';
|
|
6
2
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
this.destroy$ = new Subject();
|
|
12
|
-
this.pageSize = MAGIC_PAGE_SIZE;
|
|
13
|
-
this.debounceDuration = MAGIC_DEBOUNCE_DURATION;
|
|
14
|
-
this.select = inject(ALuSelectInputComponent);
|
|
15
|
-
this.page$ = this.select.nextPage.pipe(scan((page) => page + 1, 0), startWith(0));
|
|
16
|
-
this.clue$ = this.select.clueChange.pipe(startWith(''), debounceTime(this.debounceDuration));
|
|
17
|
-
this.loading$ = new BehaviorSubject(false);
|
|
18
|
-
}
|
|
19
|
-
ngOnInit() {
|
|
20
|
-
this.select.optionComparer = this.optionComparer;
|
|
21
|
-
this.buildOptions().pipe(takeUntil(this.destroy$)).subscribe(this.select.options$);
|
|
22
|
-
this.loading$.pipe(debounceTime(0), takeUntil(this.destroy$)).subscribe(this.select.loading$);
|
|
23
|
-
}
|
|
24
|
-
buildOptions() {
|
|
25
|
-
return combineLatest([this.params$.pipe(debounceTime(0)), this.select.isPanelOpen$]).pipe(switchMap(([params, isOpened]) => isOpened
|
|
26
|
-
? this.page$.pipe(concatMap((page) => {
|
|
27
|
-
this.loading$.next(true);
|
|
28
|
-
return this.getOptions(params, page).pipe(catchError(() => of([])), tap(() => this.loading$.next(false)));
|
|
29
|
-
}), takeWhile((items) => items.length === this.pageSize, true), scan((acc, items) => [...acc, ...items], []))
|
|
30
|
-
: of([])));
|
|
31
|
-
}
|
|
32
|
-
ngOnDestroy() {
|
|
33
|
-
this.destroy$.next();
|
|
34
|
-
this.destroy$.complete();
|
|
35
|
-
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: ALuSimpleSelectApiDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
37
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: ALuSimpleSelectApiDirective, ngImport: i0 }); }
|
|
38
|
-
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: ALuSimpleSelectApiDirective, decorators: [{
|
|
40
|
-
type: Directive
|
|
41
|
-
}] });
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated use LuCoreSelectApiV3Directive from @lucca-front/ng/core-select/api instead
|
|
5
|
+
*/
|
|
6
|
+
const LuSimpleSelectApiV3Directive = LuCoreSelectApiV3Directive;
|
|
42
7
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
this.fields$ = new BehaviorSubject('id,name');
|
|
48
|
-
this.orderBy$ = new BehaviorSubject('name,asc');
|
|
49
|
-
this.filters$ = new BehaviorSubject({});
|
|
50
|
-
this.httpClient = inject(HttpClient);
|
|
51
|
-
this.params$ = combineLatest([this.fields$, this.filters$, this.orderBy$, this.clue$]).pipe(map(([fields, filters, orderBy, clue]) => ({
|
|
52
|
-
...filters,
|
|
53
|
-
fields,
|
|
54
|
-
...(orderBy ? { orderBy } : {}),
|
|
55
|
-
...(clue ? { name: `like,${clue}` } : {}),
|
|
56
|
-
})));
|
|
57
|
-
this.optionComparer = (a, b) => a.id === b.id;
|
|
58
|
-
}
|
|
59
|
-
set apiV3(value) {
|
|
60
|
-
this.url$.next(value);
|
|
61
|
-
}
|
|
62
|
-
set fields(value) {
|
|
63
|
-
this.fields$.next(value);
|
|
64
|
-
}
|
|
65
|
-
set orderBy(value) {
|
|
66
|
-
this.orderBy$.next(value);
|
|
67
|
-
}
|
|
68
|
-
set filters(value) {
|
|
69
|
-
this.filters$.next(value);
|
|
70
|
-
}
|
|
71
|
-
getOptions(params, page) {
|
|
72
|
-
return this.url$.pipe(take(1), switchMap((url) => this.httpClient.get(url, {
|
|
73
|
-
params: {
|
|
74
|
-
...params,
|
|
75
|
-
paging: `${page * this.pageSize},${this.pageSize}`,
|
|
76
|
-
},
|
|
77
|
-
})), map((res) => res.data.items));
|
|
78
|
-
}
|
|
79
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuSimpleSelectApiV3Directive, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
80
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: LuSimpleSelectApiV3Directive, isStandalone: true, selector: "lu-simple-select[apiV3],lu-multi-select[apiV3]", inputs: { apiV3: "apiV3", fields: "fields", orderBy: "orderBy", filters: "filters" }, usesInheritance: true, ngImport: i0 }); }
|
|
81
|
-
}
|
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuSimpleSelectApiV3Directive, decorators: [{
|
|
83
|
-
type: Directive,
|
|
84
|
-
args: [{
|
|
85
|
-
// The attribute is already prefixed with "lu-simple-select"
|
|
86
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
87
|
-
selector: 'lu-simple-select[apiV3],lu-multi-select[apiV3]',
|
|
88
|
-
standalone: true,
|
|
89
|
-
}]
|
|
90
|
-
}], propDecorators: { apiV3: [{
|
|
91
|
-
type: Input
|
|
92
|
-
}], fields: [{
|
|
93
|
-
type: Input
|
|
94
|
-
}], orderBy: [{
|
|
95
|
-
type: Input
|
|
96
|
-
}], filters: [{
|
|
97
|
-
type: Input
|
|
98
|
-
}] } });
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated use LuCoreSelectApiV4Directive from @lucca-front/ng/core-select/api instead
|
|
10
|
+
*/
|
|
11
|
+
const LuSimpleSelectApiV4Directive = LuCoreSelectApiV4Directive;
|
|
99
12
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
this.sort$ = new BehaviorSubject('+name');
|
|
105
|
-
this.filters$ = new BehaviorSubject({});
|
|
106
|
-
this.httpClient = inject(HttpClient);
|
|
107
|
-
this.params$ = combineLatest([this.filters$, this.sort$, this.clue$]).pipe(map(([filters, sort, clue]) => ({
|
|
108
|
-
...filters,
|
|
109
|
-
...(sort ? { sort } : {}),
|
|
110
|
-
...(clue ? { search: clue } : {}),
|
|
111
|
-
})));
|
|
112
|
-
this.optionComparer = (a, b) => a.id === b.id;
|
|
113
|
-
}
|
|
114
|
-
set apiV4(value) {
|
|
115
|
-
this.url$.next(value);
|
|
116
|
-
}
|
|
117
|
-
set sort(value) {
|
|
118
|
-
this.sort$.next(value);
|
|
119
|
-
}
|
|
120
|
-
set filters(value) {
|
|
121
|
-
this.filters$.next(value);
|
|
122
|
-
}
|
|
123
|
-
getOptions(params, page) {
|
|
124
|
-
return this.url$.pipe(take(1), switchMap((url) => this.httpClient.get(url, {
|
|
125
|
-
params: {
|
|
126
|
-
...params,
|
|
127
|
-
page: page + 1,
|
|
128
|
-
limit: this.pageSize,
|
|
129
|
-
},
|
|
130
|
-
})), map((res) => (Array.isArray(res) ? res : res?.items) ?? []));
|
|
131
|
-
}
|
|
132
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuSimpleSelectApiV4Directive, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
133
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: LuSimpleSelectApiV4Directive, isStandalone: true, selector: "lu-simple-select[apiV4],lu-multi-select[apiV4]", inputs: { apiV4: "apiV4", sort: "sort", filters: "filters" }, usesInheritance: true, ngImport: i0 }); }
|
|
134
|
-
}
|
|
135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuSimpleSelectApiV4Directive, decorators: [{
|
|
136
|
-
type: Directive,
|
|
137
|
-
args: [{
|
|
138
|
-
// The attribute is already prefixed with "lu-simple-select"
|
|
139
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
140
|
-
selector: 'lu-simple-select[apiV4],lu-multi-select[apiV4]',
|
|
141
|
-
standalone: true,
|
|
142
|
-
}]
|
|
143
|
-
}], propDecorators: { apiV4: [{
|
|
144
|
-
type: Input
|
|
145
|
-
}], sort: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], filters: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}] } });
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated use ALuCoreSelectApiDirective from @lucca-front/ng/core-select/api instead
|
|
15
|
+
*/
|
|
16
|
+
const ALuSimpleSelectApiDirective = ALuCoreSelectApiDirective;
|
|
150
17
|
|
|
151
18
|
/**
|
|
152
19
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-simple-select-api.mjs","sources":["../../../packages/ng/simple-select/api/api.directive.ts","../../../packages/ng/simple-select/api/api-v3.directive.ts","../../../packages/ng/simple-select/api/api-v4.directive.ts","../../../packages/ng/simple-select/api/lucca-front-ng-simple-select-api.ts"],"sourcesContent":["import { Directive, inject, OnDestroy, OnInit } from '@angular/core';\nimport { ALuSelectInputComponent } from '@lucca-front/ng/core-select';\nimport { BehaviorSubject, catchError, combineLatest, concatMap, debounceTime, Observable, of, scan, startWith, Subject, switchMap, takeUntil, takeWhile, tap } from 'rxjs';\n\nexport const MAGIC_PAGE_SIZE = 20;\nexport const MAGIC_DEBOUNCE_DURATION = 250;\n\n@Directive()\nexport abstract class ALuSimpleSelectApiDirective<TOption, TParams = Record<string, string | number | boolean>> implements OnDestroy, OnInit {\n\tprotected destroy$ = new Subject<void>();\n\tprotected pageSize = MAGIC_PAGE_SIZE;\n\tprotected debounceDuration = MAGIC_DEBOUNCE_DURATION;\n\n\tprotected select = inject<ALuSelectInputComponent<TOption, unknown>>(ALuSelectInputComponent);\n\n\tprotected page$ = this.select.nextPage.pipe(\n\t\tscan((page) => page + 1, 0),\n\t\tstartWith(0),\n\t);\n\n\tprotected clue$ = this.select.clueChange.pipe(startWith(''), debounceTime(this.debounceDuration));\n\n\t/**\n\t * Create an object that will be used as params for the api call\n\t */\n\tprotected abstract params$: Observable<TParams>;\n\n\t/**\n\t * Compare two options to know if they are the same. For example, compare by id or by JSON\n\t */\n\tprotected abstract optionComparer: (a: TOption, b: TOption) => boolean;\n\n\t/**\n\t * Return the options for the given params and page\n\t */\n\tprotected abstract getOptions(params: TParams, page: number): Observable<TOption[]>;\n\n\tprotected loading$ = new BehaviorSubject(false);\n\n\tpublic ngOnInit(): void {\n\t\tthis.select.optionComparer = this.optionComparer;\n\t\tthis.buildOptions().pipe(takeUntil(this.destroy$)).subscribe(this.select.options$);\n\t\tthis.loading$.pipe(debounceTime(0), takeUntil(this.destroy$)).subscribe(this.select.loading$);\n\t}\n\n\tprotected buildOptions(): Observable<TOption[]> {\n\t\treturn combineLatest([this.params$.pipe(debounceTime(0)), this.select.isPanelOpen$]).pipe(\n\t\t\tswitchMap(([params, isOpened]) =>\n\t\t\t\tisOpened\n\t\t\t\t\t? this.page$.pipe(\n\t\t\t\t\t\t\tconcatMap((page) => {\n\t\t\t\t\t\t\t\tthis.loading$.next(true);\n\t\t\t\t\t\t\t\treturn this.getOptions(params, page).pipe(\n\t\t\t\t\t\t\t\t\tcatchError(() => of([] as TOption[])),\n\t\t\t\t\t\t\t\t\ttap(() => this.loading$.next(false)),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\ttakeWhile((items) => items.length === this.pageSize, true),\n\t\t\t\t\t\t\tscan((acc, items) => [...acc, ...items], [] as TOption[]),\n\t\t\t\t\t )\n\t\t\t\t\t: of([] as TOption[]),\n\t\t\t),\n\t\t);\n\t}\n\n\tpublic ngOnDestroy(): void {\n\t\tthis.destroy$.next();\n\t\tthis.destroy$.complete();\n\t}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Directive, inject, Input } from '@angular/core';\nimport { ILuApiCollectionResponse, ILuApiItem } from '@lucca-front/ng/api';\nimport { BehaviorSubject, combineLatest, map, Observable, ReplaySubject, switchMap, take } from 'rxjs';\nimport { ALuSimpleSelectApiDirective } from './api.directive';\n\n@Directive({\n\t// The attribute is already prefixed with \"lu-simple-select\"\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[apiV3],lu-multi-select[apiV3]',\n\tstandalone: true,\n})\nexport class LuSimpleSelectApiV3Directive<T extends ILuApiItem> extends ALuSimpleSelectApiDirective<T> {\n\t@Input()\n\tpublic set apiV3(value: string) {\n\t\tthis.url$.next(value);\n\t}\n\n\t@Input()\n\tpublic set fields(value: string) {\n\t\tthis.fields$.next(value);\n\t}\n\n\t@Input()\n\tpublic set orderBy(value: string | null) {\n\t\tthis.orderBy$.next(value);\n\t}\n\n\t@Input()\n\tpublic set filters(value: Record<string, string | number | boolean>) {\n\t\tthis.filters$.next(value);\n\t}\n\n\tprotected url$ = new ReplaySubject<string>(1);\n\tprotected fields$ = new BehaviorSubject<string>('id,name');\n\tprotected orderBy$ = new BehaviorSubject<string | null>('name,asc');\n\tprotected filters$ = new BehaviorSubject<Record<string, string | number | boolean>>({});\n\n\tprotected httpClient = inject(HttpClient);\n\n\tprotected override params$ = combineLatest([this.fields$, this.filters$, this.orderBy$, this.clue$]).pipe(\n\t\tmap(([fields, filters, orderBy, clue]) => ({\n\t\t\t...filters,\n\t\t\tfields,\n\t\t\t...(orderBy ? { orderBy } : {}),\n\t\t\t...(clue ? { name: `like,${clue}` } : {}),\n\t\t})),\n\t);\n\n\tprotected override getOptions(params: Record<string, string | number | boolean>, page: number): Observable<T[]> {\n\t\treturn this.url$.pipe(\n\t\t\ttake(1),\n\t\t\tswitchMap((url) =>\n\t\t\t\tthis.httpClient.get<ILuApiCollectionResponse<T>>(url, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\t...params,\n\t\t\t\t\t\tpaging: `${page * this.pageSize},${this.pageSize}`,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t\tmap((res) => res.data.items),\n\t\t);\n\t}\n\n\tprotected override optionComparer = (a: T, b: T) => a.id === b.id;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Directive, inject, Input } from '@angular/core';\nimport { ILuApiItem } from '@lucca-front/ng/api';\nimport { BehaviorSubject, combineLatest, map, Observable, ReplaySubject, switchMap, take } from 'rxjs';\nimport { ALuSimpleSelectApiDirective } from './api.directive';\n\n@Directive({\n\t// The attribute is already prefixed with \"lu-simple-select\"\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[apiV4],lu-multi-select[apiV4]',\n\tstandalone: true,\n})\nexport class LuSimpleSelectApiV4Directive<T extends ILuApiItem> extends ALuSimpleSelectApiDirective<T> {\n\t@Input()\n\tpublic set apiV4(value: string) {\n\t\tthis.url$.next(value);\n\t}\n\n\t@Input()\n\tpublic set sort(value: string | null) {\n\t\tthis.sort$.next(value);\n\t}\n\n\t@Input()\n\tpublic set filters(value: Record<string, string | number | boolean>) {\n\t\tthis.filters$.next(value);\n\t}\n\n\tprotected url$ = new ReplaySubject<string>(1);\n\tprotected sort$ = new BehaviorSubject<string | null>('+name');\n\tprotected filters$ = new BehaviorSubject<Record<string, string | number | boolean>>({});\n\n\tprotected httpClient = inject(HttpClient);\n\n\tprotected override params$ = combineLatest([this.filters$, this.sort$, this.clue$]).pipe(\n\t\tmap(([filters, sort, clue]) => ({\n\t\t\t...filters,\n\t\t\t...(sort ? { sort } : {}),\n\t\t\t...(clue ? { search: clue } : {}),\n\t\t})),\n\t);\n\n\tprotected override getOptions(params: Record<string, string | number | boolean>, page: number): Observable<T[]> {\n\t\treturn this.url$.pipe(\n\t\t\ttake(1),\n\t\t\tswitchMap((url) =>\n\t\t\t\tthis.httpClient.get<T[] | { items: T[] }>(url, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\t...params,\n\t\t\t\t\t\tpage: page + 1,\n\t\t\t\t\t\tlimit: this.pageSize,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t\tmap((res) => (Array.isArray(res) ? res : res?.items) ?? []),\n\t\t);\n\t}\n\n\tprotected override optionComparer = (a: T, b: T) => a.id === b.id;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lucca-front-ng-simple-select-api.mjs","sources":["../../../packages/ng/simple-select/api/api-v3.directive.ts","../../../packages/ng/simple-select/api/api-v4.directive.ts","../../../packages/ng/simple-select/api/api.directive.ts","../../../packages/ng/simple-select/api/lucca-front-ng-simple-select-api.ts"],"sourcesContent":["import { LuCoreSelectApiV3Directive } from '@lucca-front/ng/core-select/api';\n\n/**\n * @deprecated use LuCoreSelectApiV3Directive from @lucca-front/ng/core-select/api instead\n */\nexport const LuSimpleSelectApiV3Directive = LuCoreSelectApiV3Directive;\n","import { LuCoreSelectApiV4Directive } from '@lucca-front/ng/core-select/api';\n\n/**\n * @deprecated use LuCoreSelectApiV4Directive from @lucca-front/ng/core-select/api instead\n */\nexport const LuSimpleSelectApiV4Directive = LuCoreSelectApiV4Directive;\n","import { ALuCoreSelectApiDirective } from '@lucca-front/ng/core-select/api';\n\n/**\n * @deprecated use ALuCoreSelectApiDirective from @lucca-front/ng/core-select/api instead\n */\nexport const ALuSimpleSelectApiDirective = ALuCoreSelectApiDirective;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAEA;;AAEG;AACI,MAAM,4BAA4B,GAAG;;ACH5C;;AAEG;AACI,MAAM,4BAA4B,GAAG;;ACH5C;;AAEG;AACI,MAAM,2BAA2B,GAAG;;ACL3C;;AAEG;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Overlay, OverlayPositionBuilder, ScrollStrategyOptions, OverlayModule } from '@angular/cdk/overlay';
|
|
2
2
|
import { AsyncPipe, NgIf, NgFor, NgTemplateOutlet } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, inject, Component, ChangeDetectionStrategy, ViewChildren, Injector, ElementRef, Injectable, forwardRef, ViewEncapsulation } from '@angular/core';
|
|
4
|
+
import { InjectionToken, Pipe, inject, Component, ChangeDetectionStrategy, ViewChildren, Injector, ElementRef, Injectable, forwardRef, ViewEncapsulation } from '@angular/core';
|
|
5
5
|
import * as i1$1 from '@angular/forms';
|
|
6
6
|
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
7
7
|
import { getIntl } from '@lucca-front/ng/core';
|
|
@@ -12,7 +12,7 @@ import { ComponentPortal } from '@angular/cdk/portal';
|
|
|
12
12
|
import { map, EMPTY, takeUntil, asyncScheduler, observeOn, filter, take } from 'rxjs';
|
|
13
13
|
import * as i1 from '@angular/cdk/a11y';
|
|
14
14
|
import { ActiveDescendantKeyManager, A11yModule } from '@angular/cdk/a11y';
|
|
15
|
-
import {
|
|
15
|
+
import { switchMap, debounceTime } from 'rxjs/operators';
|
|
16
16
|
|
|
17
17
|
const LU_SIMPLE_SELECT_TRANSLATIONS = new InjectionToken('LuSimpleSelectTranslations', {
|
|
18
18
|
factory: () => luSimpleSelectTranslations,
|
|
@@ -55,21 +55,36 @@ const luSimpleSelectTranslations = {
|
|
|
55
55
|
},
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
-
const
|
|
58
|
+
const SIMPLE_SELECT_INPUT = new InjectionToken('SimpleSelectInput');
|
|
59
|
+
|
|
60
|
+
class LuIsOptionSelectedPipe {
|
|
61
|
+
transform(option, comparer, selectedOption) {
|
|
62
|
+
return !!selectedOption && comparer(option, selectedOption);
|
|
63
|
+
}
|
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuIsOptionSelectedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
65
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.2", ngImport: i0, type: LuIsOptionSelectedPipe, isStandalone: true, name: "luIsOptionSelected" }); }
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuIsOptionSelectedPipe, decorators: [{
|
|
68
|
+
type: Pipe,
|
|
69
|
+
args: [{
|
|
70
|
+
name: 'luIsOptionSelected',
|
|
71
|
+
standalone: true,
|
|
72
|
+
}]
|
|
73
|
+
}] });
|
|
59
74
|
|
|
60
75
|
class LuSelectPanelComponent {
|
|
61
76
|
constructor() {
|
|
62
|
-
this.
|
|
77
|
+
this.selectInput = inject(SIMPLE_SELECT_INPUT);
|
|
63
78
|
this.panelRef = inject(LuSelectPanelRef);
|
|
64
79
|
this.selectId = inject(SELECT_ID);
|
|
65
80
|
this.intl = getIntl(LU_SIMPLE_SELECT_TRANSLATIONS);
|
|
66
|
-
this.options$ = this.
|
|
67
|
-
this.
|
|
68
|
-
this.
|
|
69
|
-
this.
|
|
70
|
-
this.
|
|
71
|
-
this.initialValue = this.
|
|
72
|
-
this.optionTpl = this.
|
|
81
|
+
this.options$ = this.selectInput.options$;
|
|
82
|
+
this.grouping = this.selectInput.grouping;
|
|
83
|
+
this.groups$ = this.grouping ? this.options$.pipe(map((options) => ɵgenerateGroups(options, this.grouping.selector))) : EMPTY;
|
|
84
|
+
this.loading$ = this.selectInput.loading$;
|
|
85
|
+
this.optionComparer = this.selectInput.optionComparer;
|
|
86
|
+
this.initialValue = this.selectInput.value;
|
|
87
|
+
this.optionTpl = this.selectInput.optionTpl;
|
|
73
88
|
}
|
|
74
89
|
get keyManager() {
|
|
75
90
|
return this._keyManager;
|
|
@@ -96,7 +111,7 @@ class LuSelectPanelComponent {
|
|
|
96
111
|
this.keyManager.change
|
|
97
112
|
.pipe(map(() => this.keyManager.activeItem?.id), takeUntil(this.panelRef.closed))
|
|
98
113
|
.subscribe((activeDescendant) => this.panelRef.activeOptionIdChanged.emit(activeDescendant));
|
|
99
|
-
if (this.initialValue) {
|
|
114
|
+
if (this.initialValue && !this.selectInput.clue) {
|
|
100
115
|
this.options$
|
|
101
116
|
?.pipe(observeOn(asyncScheduler), map((options) => options.findIndex((o) => this.optionComparer(o, this.initialValue))), filter((index) => index !== -1), take(1), takeUntil(this.panelRef.closed))
|
|
102
117
|
.subscribe((selectedIndex) => this.keyManager.setActiveItem(selectedIndex));
|
|
@@ -106,33 +121,33 @@ class LuSelectPanelComponent {
|
|
|
106
121
|
setTimeout(() => this.keyManager.setFirstItemActive());
|
|
107
122
|
}
|
|
108
123
|
/**
|
|
109
|
-
* On new options, we want to select the first element with key manager
|
|
124
|
+
* On new options after a search, we want to select the first element with key manager
|
|
110
125
|
*/
|
|
111
|
-
this.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
126
|
+
if (this.selectInput.searchable) {
|
|
127
|
+
this.selectInput.clueChange
|
|
128
|
+
.pipe(switchMap(() => this.optionsQL.changes.pipe(take(1))), debounceTime(0), takeUntil(this.panelRef.closed))
|
|
129
|
+
.subscribe(() => this.keyManager.setFirstItemActive());
|
|
130
|
+
}
|
|
116
131
|
}
|
|
117
132
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuSelectPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: LuSelectPanelComponent, isStandalone: true, selector: "lu-select-panel", viewQueries: [{ propertyName: "optionsQL", predicate: ɵLuOptionComponent, descendants: true }], ngImport: i0, template: "<div\n\tclass=\"lu-picker-panel lu-option-picker-panel\"\n\tcdkTrapFocus\n\t*ngIf=\"{ options: options$ | async } as ctx\"\n\t[cdkTrapFocusAutoCapture]=\"true\"\n>\n\t<div class=\"lu-picker-content\" [class.is-loading]=\"loading$ | async\" (scroll)=\"onScroll($event)\">\n\t\t<div class=\"lu-picker-content-option\" role=\"listbox\">\n\t\t\t<ng-container *ngIf=\"grouping\">\n\t\t\t\t<div\n\t\t\t\t\t*ngFor=\"let group of groups$ | async\"\n\t\t\t\t\tclass=\"lu-picker-content-option-group\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\t[attr.aria-labelledby]=\"selectId + '-group-' + group.key\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"lu-picker-content-option-group-title\" role=\"presentation\" [id]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"grouping.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: group.options }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"!grouping\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\"></ng-template>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #optionsList let-options>\n\t\t\t\t<lu-select-option\n\t\t\t\t\t*ngFor=\"let option of options; let index = index\"\n\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'center' }\"\n\t\t\t\t\t[isSelected]=\"option
|
|
133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: LuSelectPanelComponent, isStandalone: true, selector: "lu-select-panel", viewQueries: [{ propertyName: "optionsQL", predicate: ɵLuOptionComponent, descendants: true }], ngImport: i0, template: "<div\n\tclass=\"lu-picker-panel lu-option-picker-panel\"\n\tcdkTrapFocus\n\t*ngIf=\"{ options: (options$ | async) || [] } as ctx\"\n\t[cdkTrapFocusAutoCapture]=\"true\"\n>\n\t<div class=\"lu-picker-content\" [class.is-loading]=\"loading$ | async\" (scroll)=\"onScroll($event)\">\n\t\t<div class=\"lu-picker-content-option\" role=\"listbox\">\n\t\t\t<ng-container *ngIf=\"grouping\">\n\t\t\t\t<div\n\t\t\t\t\t*ngFor=\"let group of groups$ | async\"\n\t\t\t\t\tclass=\"lu-picker-content-option-group\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\t[attr.aria-labelledby]=\"selectId + '-group-' + group.key\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"lu-picker-content-option-group-title\" role=\"presentation\" [id]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"grouping.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: group.options }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"!grouping\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\"></ng-template>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #optionsList let-options>\n\t\t\t\t<lu-select-option\n\t\t\t\t\t*ngFor=\"let option of options; let index = index\"\n\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'center' }\"\n\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected:optionComparer:selected\"\n\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\n\t\t\t\t></lu-select-option>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-picker-content-option-emptyState\" *ngIf=\"ctx.options.length === 0 && (loading$ | async) === false\">\n\t\t\t\t{{intl.emptyResults}}\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"loading$ | async\" class=\"lu-picker-content-loading\">\n\t\t\t<div class=\"loading\"></div>\n\t\t\t<span>{{intl.loading}}</span>\n\t\t</div>\n\t</div>\n\t<!--<div class=\"lu-picker-content-add\">\n\t\t<button class=\"button mod-text mod-icon palette-primary\" type=\"button\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-mathsPlus\"></span>Add a new supplier\n\t\t</button>\n\t</div>-->\n</div>\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XXS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: 6px;--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: 2rem}.textfield.mod-search{width:100%}.textfield-input{outline:none}.checkbox.mod-formerEmployee{padding:var(--spacings-XXS) var(--components-options-item-padding-horizontal);border-bottom:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-grey-50);font-style:italic}.optionPlaceholder{display:block;padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-grey-600)}\n"], dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ɵLuOptionComponent, selector: "lu-select-option", inputs: ["optionTpl", "isSelected", "option", "optionIndex", "scrollIntoViewOptions"] }, { kind: "pipe", type: LuIsOptionSelectedPipe, name: "luIsOptionSelected" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
119
134
|
}
|
|
120
135
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuSelectPanelComponent, decorators: [{
|
|
121
136
|
type: Component,
|
|
122
|
-
args: [{ selector: 'lu-select-panel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [A11yModule, AsyncPipe, FormsModule, NgIf, NgFor, NgTemplateOutlet, ɵLuOptionComponent], template: "<div\n\tclass=\"lu-picker-panel lu-option-picker-panel\"\n\tcdkTrapFocus\n\t*ngIf=\"{ options: options$ | async } as ctx\"\n\t[cdkTrapFocusAutoCapture]=\"true\"\n>\n\t<div class=\"lu-picker-content\" [class.is-loading]=\"loading$ | async\" (scroll)=\"onScroll($event)\">\n\t\t<div class=\"lu-picker-content-option\" role=\"listbox\">\n\t\t\t<ng-container *ngIf=\"grouping\">\n\t\t\t\t<div\n\t\t\t\t\t*ngFor=\"let group of groups$ | async\"\n\t\t\t\t\tclass=\"lu-picker-content-option-group\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\t[attr.aria-labelledby]=\"selectId + '-group-' + group.key\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"lu-picker-content-option-group-title\" role=\"presentation\" [id]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"grouping.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: group.options }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"!grouping\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\"></ng-template>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #optionsList let-options>\n\t\t\t\t<lu-select-option\n\t\t\t\t\t*ngFor=\"let option of options; let index = index\"\n\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'center' }\"\n\t\t\t\t\t[isSelected]=\"option
|
|
137
|
+
args: [{ selector: 'lu-select-panel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [A11yModule, AsyncPipe, FormsModule, NgIf, NgFor, NgTemplateOutlet, ɵLuOptionComponent, LuIsOptionSelectedPipe], template: "<div\n\tclass=\"lu-picker-panel lu-option-picker-panel\"\n\tcdkTrapFocus\n\t*ngIf=\"{ options: (options$ | async) || [] } as ctx\"\n\t[cdkTrapFocusAutoCapture]=\"true\"\n>\n\t<div class=\"lu-picker-content\" [class.is-loading]=\"loading$ | async\" (scroll)=\"onScroll($event)\">\n\t\t<div class=\"lu-picker-content-option\" role=\"listbox\">\n\t\t\t<ng-container *ngIf=\"grouping\">\n\t\t\t\t<div\n\t\t\t\t\t*ngFor=\"let group of groups$ | async\"\n\t\t\t\t\tclass=\"lu-picker-content-option-group\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\t[attr.aria-labelledby]=\"selectId + '-group-' + group.key\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"lu-picker-content-option-group-title\" role=\"presentation\" [id]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"grouping.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: group.options }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"!grouping\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\"></ng-template>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #optionsList let-options>\n\t\t\t\t<lu-select-option\n\t\t\t\t\t*ngFor=\"let option of options; let index = index\"\n\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'center' }\"\n\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected:optionComparer:selected\"\n\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\n\t\t\t\t></lu-select-option>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-picker-content-option-emptyState\" *ngIf=\"ctx.options.length === 0 && (loading$ | async) === false\">\n\t\t\t\t{{intl.emptyResults}}\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"loading$ | async\" class=\"lu-picker-content-loading\">\n\t\t\t<div class=\"loading\"></div>\n\t\t\t<span>{{intl.loading}}</span>\n\t\t</div>\n\t</div>\n\t<!--<div class=\"lu-picker-content-add\">\n\t\t<button class=\"button mod-text mod-icon palette-primary\" type=\"button\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-mathsPlus\"></span>Add a new supplier\n\t\t</button>\n\t</div>-->\n</div>\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XXS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: 6px;--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: 2rem}.textfield.mod-search{width:100%}.textfield-input{outline:none}.checkbox.mod-formerEmployee{padding:var(--spacings-XXS) var(--components-options-item-padding-horizontal);border-bottom:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-grey-50);font-style:italic}.optionPlaceholder{display:block;padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-grey-600)}\n"] }]
|
|
123
138
|
}], propDecorators: { optionsQL: [{
|
|
124
139
|
type: ViewChildren,
|
|
125
140
|
args: [ɵLuOptionComponent]
|
|
126
141
|
}] } });
|
|
127
142
|
|
|
128
143
|
class SelectPanelRef extends LuSelectPanelRef {
|
|
129
|
-
constructor(overlayRef, parentInjector,
|
|
144
|
+
constructor(overlayRef, parentInjector, selectInput) {
|
|
130
145
|
super();
|
|
131
146
|
this.overlayRef = overlayRef;
|
|
132
147
|
const injector = Injector.create({
|
|
133
148
|
providers: [
|
|
134
149
|
{ provide: LuSelectPanelRef, useValue: this },
|
|
135
|
-
{ provide:
|
|
150
|
+
{ provide: SIMPLE_SELECT_INPUT, useValue: selectInput },
|
|
136
151
|
],
|
|
137
152
|
parent: parentInjector,
|
|
138
153
|
});
|
|
@@ -169,10 +184,10 @@ class LuSimpleSelectPanelRefFactory {
|
|
|
169
184
|
this.scrollStrategies = inject(ScrollStrategyOptions);
|
|
170
185
|
this.parentInjector = inject(Injector);
|
|
171
186
|
}
|
|
172
|
-
buildPanelRef(
|
|
187
|
+
buildPanelRef(selectInput, overlayConfigOverride = {}) {
|
|
173
188
|
const overlayConfig = this.buildOverlayConfig(overlayConfigOverride);
|
|
174
189
|
const overlayRef = this.overlay.create(overlayConfig);
|
|
175
|
-
return new SelectPanelRef(overlayRef, this.parentInjector,
|
|
190
|
+
return new SelectPanelRef(overlayRef, this.parentInjector, selectInput);
|
|
176
191
|
}
|
|
177
192
|
buildOverlayConfig(overlayConfigOverride = {}) {
|
|
178
193
|
const overlayConfig = overlayConfigOverride || {};
|
|
@@ -222,14 +237,7 @@ class LuSimpleSelectInputComponent extends ALuSelectInputComponent {
|
|
|
222
237
|
this.panelRefFactory = inject(LuSimpleSelectPanelRefFactory);
|
|
223
238
|
}
|
|
224
239
|
buildPanelRef() {
|
|
225
|
-
return this.panelRefFactory.buildPanelRef(
|
|
226
|
-
initialValue: this.value,
|
|
227
|
-
optionComparer: this.optionComparer,
|
|
228
|
-
options$: this.options$,
|
|
229
|
-
loading$: this.loading$,
|
|
230
|
-
optionTpl: this.optionTpl,
|
|
231
|
-
grouping: this.grouping,
|
|
232
|
-
}, this.overlayConfig);
|
|
240
|
+
return this.panelRefFactory.buildPanelRef(this, this.overlayConfig);
|
|
233
241
|
}
|
|
234
242
|
get hasValue() {
|
|
235
243
|
return this.value !== null && this.value !== undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-simple-select.mjs","sources":["../../../packages/ng/simple-select/select.translate.ts","../../../packages/ng/simple-select/select.model.ts","../../../packages/ng/simple-select/panel/panel.component.ts","../../../packages/ng/simple-select/panel/panel.component.html","../../../packages/ng/simple-select/input/panel-ref.factory.ts","../../../packages/ng/simple-select/input/select-input.component.ts","../../../packages/ng/simple-select/input/select-input.component.html","../../../packages/ng/simple-select/lucca-front-ng-simple-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ILuTranslation } from '@lucca-front/ng/core';\n\nexport const LU_SIMPLE_SELECT_TRANSLATIONS = new InjectionToken('LuSimpleSelectTranslations', {\n\tfactory: () => luSimpleSelectTranslations,\n});\n\nexport interface ILuSimpleSelectLabel {\n\tplaceholder: string;\n\tclear: string;\n\tclearSearch: string;\n\temptyResults: string;\n\tloading: string;\n}\n\nexport const luSimpleSelectTranslations: ILuTranslation<ILuSimpleSelectLabel> = {\n\ten: {\n\t\tplaceholder: 'Select an option',\n\t\tclear: 'Clear',\n\t\tclearSearch: 'Clear search',\n\t\temptyResults: 'No results',\n\t\tloading: 'Loading...',\n\t},\n\tfr: {\n\t\tplaceholder: 'Sélectionnez une option',\n\t\tclear: 'Effacer',\n\t\tclearSearch: 'Vider la recherche',\n\t\temptyResults: 'Aucun résultat pour votre recherche',\n\t\tloading: 'Chargement en cours...',\n\t},\n\tde: {\n\t\tplaceholder: 'Wählen Sie eine Option',\n\t\tclear: 'Löschen',\n\t\tclearSearch: 'Suche löschen',\n\t\temptyResults: 'Keine Ergebnisse für Ihre Suche',\n\t\tloading: 'Wird geladen...',\n\t},\n\tes: {\n\t\tplaceholder: 'Seleccione una opción',\n\t\tclear: 'Borrar',\n\t\tclearSearch: 'Borrar búsqueda',\n\t\temptyResults: 'No hay resultados para su búsqueda',\n\t\tloading: 'Cargando...',\n\t},\n\tpt: {\n\t\tplaceholder: 'Selecione uma opção',\n\t\tclear: 'Limpar',\n\t\tclearSearch: 'Limpar pesquisa',\n\t\temptyResults: 'Nenhum resultado para sua pesquisa',\n\t\tloading: 'Carregando...',\n\t},\n};\n","import { InjectionToken, TemplateRef, Type } from '@angular/core';\nimport { LuOptionContext, LuOptionGroupDirective } from '@lucca-front/ng/core-select';\nimport { Observable } from 'rxjs';\n\nexport interface ILuSimpleSelectPanelData<T> {\n\toptions$: Observable<T[]>;\n\tloading$: Observable<boolean>;\n\toptionComparer: (option1: T, option2: T) => boolean;\n\tinitialValue: T | undefined;\n\toptionTpl: TemplateRef<LuOptionContext<T>> | Type<unknown>;\n\tgrouping?: LuOptionGroupDirective<T, T, unknown>;\n}\n\nexport const SIMPLE_SELECT_PANEL_DATA = new InjectionToken<ILuSimpleSelectPanelData<unknown>>('SimpleSelectPanelData');\n","import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, QueryList, ViewChildren, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LuSelectPanelRef, SELECT_ID, ɵLuOptionComponent, ɵgenerateGroups } from '@lucca-front/ng/core-select';\nimport { EMPTY, asyncScheduler, filter, map, observeOn, take, takeUntil } from 'rxjs';\nimport { skip } from 'rxjs/operators';\nimport { ILuSimpleSelectPanelData, SIMPLE_SELECT_PANEL_DATA } from '../select.model';\nimport { LU_SIMPLE_SELECT_TRANSLATIONS } from '../select.translate';\n\n@Component({\n\tselector: 'lu-select-panel',\n\ttemplateUrl: './panel.component.html',\n\tstyleUrls: ['./panel.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [A11yModule, AsyncPipe, FormsModule, NgIf, NgFor, NgTemplateOutlet, ɵLuOptionComponent],\n})\nexport class LuSelectPanelComponent<T> implements AfterViewInit {\n\tprotected panelData = inject<ILuSimpleSelectPanelData<T>>(SIMPLE_SELECT_PANEL_DATA);\n\tpublic panelRef = inject<LuSelectPanelRef<T, T>>(LuSelectPanelRef);\n\tpublic selectId = inject(SELECT_ID);\n\tpublic intl = getIntl(LU_SIMPLE_SELECT_TRANSLATIONS);\n\n\toptions$ = this.panelData.options$;\n\tgroups$ = this.panelData.grouping ? this.panelData.options$.pipe(map((options) => ɵgenerateGroups(options, this.panelData.grouping.selector))) : EMPTY;\n\tloading$ = this.panelData.loading$;\n\toptionComparer = this.panelData.optionComparer;\n\tgrouping = this.panelData.grouping;\n\tinitialValue: T | undefined = this.panelData.initialValue;\n\toptionTpl = this.panelData.optionTpl;\n\n\t@ViewChildren(ɵLuOptionComponent) optionsQL: QueryList<ɵLuOptionComponent<T>>;\n\tprivate _keyManager: ActiveDescendantKeyManager<ɵLuOptionComponent<T>>;\n\n\tpublic get keyManager(): ActiveDescendantKeyManager<ɵLuOptionComponent<T>> {\n\t\treturn this._keyManager;\n\t}\n\n\tpublic get selected(): T | undefined {\n\t\treturn this.initialValue;\n\t}\n\n\tonScroll(evt: Event): void {\n\t\tif (!(evt.target instanceof HTMLElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.target.scrollTop === 0) {\n\t\t\tthis.panelRef.previousPage.emit();\n\t\t}\n\n\t\tif (evt.target.scrollHeight - evt.target.scrollTop - evt.target.clientHeight < 1) {\n\t\t\tthis.panelRef.nextPage.emit();\n\t\t}\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (!this.optionsQL) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._keyManager = new ActiveDescendantKeyManager(this.optionsQL).withHomeAndEnd();\n\n\t\tthis.keyManager.change\n\t\t\t.pipe(\n\t\t\t\tmap(() => this.keyManager.activeItem?.id),\n\t\t\t\ttakeUntil(this.panelRef.closed),\n\t\t\t)\n\t\t\t.subscribe((activeDescendant) => this.panelRef.activeOptionIdChanged.emit(activeDescendant));\n\n\t\tif (this.initialValue) {\n\t\t\tthis.options$\n\t\t\t\t?.pipe(\n\t\t\t\t\tobserveOn(asyncScheduler),\n\t\t\t\t\tmap((options) => options.findIndex((o) => this.optionComparer(o, this.initialValue))),\n\t\t\t\t\tfilter((index) => index !== -1),\n\t\t\t\t\ttake(1),\n\t\t\t\t\ttakeUntil(this.panelRef.closed),\n\t\t\t\t)\n\t\t\t\t.subscribe((selectedIndex) => this.keyManager.setActiveItem(selectedIndex));\n\t\t} else {\n\t\t\t// If no initial Value, set first as active\n\t\t\tsetTimeout(() => this.keyManager.setFirstItemActive());\n\t\t}\n\n\t\t/**\n\t\t * On new options, we want to select the first element with key manager\n\t\t */\n\t\tthis.options$\n\t\t\t?.pipe(\n\t\t\t\tobserveOn(asyncScheduler),\n\t\t\t\t// Skip first so we don't override \"select currently active\", we only want new options anyways\n\t\t\t\tskip(1),\n\t\t\t\ttakeUntil(this.panelRef.closed),\n\t\t\t)\n\t\t\t.subscribe(() => this.keyManager.setFirstItemActive());\n\t}\n}\n","<div\n\tclass=\"lu-picker-panel lu-option-picker-panel\"\n\tcdkTrapFocus\n\t*ngIf=\"{ options: options$ | async } as ctx\"\n\t[cdkTrapFocusAutoCapture]=\"true\"\n>\n\t<div class=\"lu-picker-content\" [class.is-loading]=\"loading$ | async\" (scroll)=\"onScroll($event)\">\n\t\t<div class=\"lu-picker-content-option\" role=\"listbox\">\n\t\t\t<ng-container *ngIf=\"grouping\">\n\t\t\t\t<div\n\t\t\t\t\t*ngFor=\"let group of groups$ | async\"\n\t\t\t\t\tclass=\"lu-picker-content-option-group\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\t[attr.aria-labelledby]=\"selectId + '-group-' + group.key\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"lu-picker-content-option-group-title\" role=\"presentation\" [id]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"grouping.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: group.options }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"!grouping\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\"></ng-template>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #optionsList let-options>\n\t\t\t\t<lu-select-option\n\t\t\t\t\t*ngFor=\"let option of options; let index = index\"\n\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'center' }\"\n\t\t\t\t\t[isSelected]=\"option === selected\"\n\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\n\t\t\t\t></lu-select-option>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-picker-content-option-emptyState\" *ngIf=\"ctx.options.length === 0 && (loading$ | async) === false\">\n\t\t\t\t{{intl.emptyResults}}\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"loading$ | async\" class=\"lu-picker-content-loading\">\n\t\t\t<div class=\"loading\"></div>\n\t\t\t<span>{{intl.loading}}</span>\n\t\t</div>\n\t</div>\n\t<!--<div class=\"lu-picker-content-add\">\n\t\t<button class=\"button mod-text mod-icon palette-primary\" type=\"button\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-mathsPlus\"></span>Add a new supplier\n\t\t</button>\n\t</div>-->\n</div>\n","import { Overlay, OverlayConfig, OverlayPositionBuilder, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, ElementRef, inject, Injectable, Injector } from '@angular/core';\nimport { LuSelectPanelRef } from '@lucca-front/ng/core-select';\nimport { takeUntil } from 'rxjs';\nimport { LuSelectPanelComponent } from '../panel';\nimport { ILuSimpleSelectPanelData, SIMPLE_SELECT_PANEL_DATA } from '../select.model';\n\nclass SelectPanelRef<T> extends LuSelectPanelRef<T, T> {\n\tinstance: LuSelectPanelComponent<T>;\n\tprivate panelRef: ComponentRef<LuSelectPanelComponent<T>>;\n\tprivate portalRef: ComponentPortal<LuSelectPanelComponent<T>>;\n\n\tconstructor(private overlayRef: OverlayRef, parentInjector: Injector, panelData: ILuSimpleSelectPanelData<T>) {\n\t\tsuper();\n\n\t\tconst injector = Injector.create({\n\t\t\tproviders: [\n\t\t\t\t{ provide: LuSelectPanelRef, useValue: this },\n\t\t\t\t{ provide: SIMPLE_SELECT_PANEL_DATA, useValue: panelData },\n\t\t\t],\n\t\t\tparent: parentInjector,\n\t\t});\n\n\t\tthis.portalRef = new ComponentPortal<LuSelectPanelComponent<T>>(LuSelectPanelComponent, undefined, injector);\n\t\tthis.panelRef = overlayRef.attach(this.portalRef);\n\t\tthis.instance = this.panelRef.instance;\n\n\t\toverlayRef\n\t\t\t.backdropClick()\n\t\t\t.pipe(takeUntil(this.closed))\n\t\t\t.subscribe(() => this.close());\n\t}\n\n\temitValue(value: T): void {\n\t\tthis.valueChanged.emit(value);\n\t\tthis.close();\n\t}\n\n\toverride handleKeyManagerEvent(event: KeyboardEvent) {\n\t\tthis.instance.keyManager.onKeydown(event);\n\t}\n\n\toverride close(): void {\n\t\tsuper.close();\n\t\tthis.panelRef.destroy();\n\t\tthis.overlayRef.detach();\n\t}\n\n\tselectCurrentlyHighlightedValue(): void {\n\t\tthis.emitValue(this.instance.keyManager.activeItem?.option);\n\t\tthis.close();\n\t}\n}\n\n@Injectable()\nexport class LuSimpleSelectPanelRefFactory {\n\tprotected overlay = inject(Overlay);\n\tprotected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprotected positionBuilder = inject(OverlayPositionBuilder);\n\tprotected scrollStrategies = inject(ScrollStrategyOptions);\n\tprotected parentInjector = inject(Injector);\n\n\tbuildPanelRef<T>(panelData: ILuSimpleSelectPanelData<T>, overlayConfigOverride: OverlayConfig = {}): LuSelectPanelRef<T, T> {\n\t\tconst overlayConfig = this.buildOverlayConfig(overlayConfigOverride);\n\t\tconst overlayRef = this.overlay.create(overlayConfig);\n\n\t\treturn new SelectPanelRef(overlayRef, this.parentInjector, panelData);\n\t}\n\n\tprotected buildOverlayConfig(overlayConfigOverride: OverlayConfig = {}): OverlayConfig {\n\t\tconst overlayConfig: OverlayConfig = overlayConfigOverride || {};\n\t\toverlayConfig.positionStrategy = this.positionBuilder.flexibleConnectedTo(this.elementRef).withPositions([\n\t\t\t{\n\t\t\t\toriginX: 'start',\n\t\t\t\toriginY: 'bottom',\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: 'top',\n\t\t\t},\n\t\t\t{\n\t\t\t\toriginX: 'end',\n\t\t\t\toriginY: 'bottom',\n\t\t\t\toverlayX: 'end',\n\t\t\t\toverlayY: 'top',\n\t\t\t},\n\t\t\t{\n\t\t\t\toriginX: 'start',\n\t\t\t\toriginY: 'top',\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: 'bottom',\n\t\t\t},\n\t\t\t{\n\t\t\t\toriginX: 'end',\n\t\t\t\toriginY: 'top',\n\t\t\t\toverlayX: 'end',\n\t\t\t\toverlayY: 'bottom',\n\t\t\t},\n\t\t]);\n\t\toverlayConfig.scrollStrategy = this.scrollStrategies.reposition();\n\t\toverlayConfig.minWidth = this.elementRef.nativeElement.clientWidth;\n\t\toverlayConfig.maxHeight = '100vh';\n\t\toverlayConfig.maxWidth = '100vw';\n\n\t\treturn overlayConfig;\n\t}\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, forwardRef, inject } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LuSelectPanelRef, provideLuSelectLabelsAndIds, provideLuSelectOverlayContainer, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { InputDirective } from '@lucca-front/ng/form-field';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LU_SIMPLE_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuSimpleSelectPanelRefFactory } from './panel-ref.factory';\n\n@Component({\n\tselector: 'lu-simple-select',\n\ttemplateUrl: './select-input.component.html',\n\tstyleUrls: ['./select-input.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [AsyncPipe, ɵLuOptionOutletDirective, NgIf, OverlayModule, IconComponent, FormsModule, InputDirective],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => LuSimpleSelectInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\t{\n\t\t\tprovide: ALuSelectInputComponent,\n\t\t\tuseExisting: forwardRef(() => LuSimpleSelectInputComponent),\n\t\t},\n\t\tLuSimpleSelectPanelRefFactory,\n\t\tprovideLuSelectOverlayContainer(),\n\t\tprovideLuSelectLabelsAndIds(),\n\t],\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'simpleSelect',\n\t},\n})\nexport class LuSimpleSelectInputComponent<T> extends ALuSelectInputComponent<T, T> implements ControlValueAccessor {\n\tintl = getIntl(LU_SIMPLE_SELECT_TRANSLATIONS);\n\n\tprotected panelRefFactory = inject(LuSimpleSelectPanelRefFactory);\n\n\tprotected buildPanelRef(): LuSelectPanelRef<T, T> {\n\t\treturn this.panelRefFactory.buildPanelRef(\n\t\t\t{\n\t\t\t\tinitialValue: this.value,\n\t\t\t\toptionComparer: this.optionComparer,\n\t\t\t\toptions$: this.options$,\n\t\t\t\tloading$: this.loading$,\n\t\t\t\toptionTpl: this.optionTpl,\n\t\t\t\tgrouping: this.grouping,\n\t\t\t},\n\t\t\tthis.overlayConfig,\n\t\t);\n\t}\n\n\tprotected get hasValue(): boolean {\n\t\treturn this.value !== null && this.value !== undefined;\n\t}\n}\n","<input\n\tclass=\"simpleSelect-input\"\n\ttype=\"text\"\n\trole=\"combobox\"\n\taria-haspopup=\"listbox\"\n\t[attr.aria-activedescendant]=\"activeDescendant$ | async\"\n\t[attr.aria-expanded]=\"isPanelOpen\"\n\t[attr.aria-controls]=\"ariaControls\"\n\tplaceholder=\"{{inputPlaceholder}}\"\n\t[(ngModel)]=\"clue\"\n\t(ngModelChange)=\"clueChanged($event)\"\n\t[readonly]=\"!searchable\"\n\t[disabled]=\"disabled\"\n\tluInput\n\t#inputElement\n/>\n<div class=\"simpleSelect-value\">\n\t<ng-container *luOptionOutlet=\"valueTpl || optionTpl; value: value\"></ng-container>\n</div>\n<button\n\t*ngIf=\"clearable && hasValue\"\n\tclass=\"simpleSelect-clear clear\"\n\trole=\"button\"\n\ttype=\"button\"\n\t(click)=\"clearValue($event)\"\n\t(keydown.space)=\"clearValue($event)\"\n>\n\t<span class=\"u-mask\">{{intl.clear}}</span>\n</button>\n<span aria-hidden=\"true\" class=\"simpleSelect-arrow lucca-icon icon-arrowChevronBottom\"></span>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lucca-front-ng-simple-select.mjs","sources":["../../../packages/ng/simple-select/select.translate.ts","../../../packages/ng/simple-select/select.model.ts","../../../packages/ng/simple-select/panel/option-selected.pipe.ts","../../../packages/ng/simple-select/panel/panel.component.ts","../../../packages/ng/simple-select/panel/panel.component.html","../../../packages/ng/simple-select/input/panel-ref.factory.ts","../../../packages/ng/simple-select/input/select-input.component.ts","../../../packages/ng/simple-select/input/select-input.component.html","../../../packages/ng/simple-select/lucca-front-ng-simple-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ILuTranslation } from '@lucca-front/ng/core';\n\nexport const LU_SIMPLE_SELECT_TRANSLATIONS = new InjectionToken('LuSimpleSelectTranslations', {\n\tfactory: () => luSimpleSelectTranslations,\n});\n\nexport interface ILuSimpleSelectLabel {\n\tplaceholder: string;\n\tclear: string;\n\tclearSearch: string;\n\temptyResults: string;\n\tloading: string;\n}\n\nexport const luSimpleSelectTranslations: ILuTranslation<ILuSimpleSelectLabel> = {\n\ten: {\n\t\tplaceholder: 'Select an option',\n\t\tclear: 'Clear',\n\t\tclearSearch: 'Clear search',\n\t\temptyResults: 'No results',\n\t\tloading: 'Loading...',\n\t},\n\tfr: {\n\t\tplaceholder: 'Sélectionnez une option',\n\t\tclear: 'Effacer',\n\t\tclearSearch: 'Vider la recherche',\n\t\temptyResults: 'Aucun résultat pour votre recherche',\n\t\tloading: 'Chargement en cours...',\n\t},\n\tde: {\n\t\tplaceholder: 'Wählen Sie eine Option',\n\t\tclear: 'Löschen',\n\t\tclearSearch: 'Suche löschen',\n\t\temptyResults: 'Keine Ergebnisse für Ihre Suche',\n\t\tloading: 'Wird geladen...',\n\t},\n\tes: {\n\t\tplaceholder: 'Seleccione una opción',\n\t\tclear: 'Borrar',\n\t\tclearSearch: 'Borrar búsqueda',\n\t\temptyResults: 'No hay resultados para su búsqueda',\n\t\tloading: 'Cargando...',\n\t},\n\tpt: {\n\t\tplaceholder: 'Selecione uma opção',\n\t\tclear: 'Limpar',\n\t\tclearSearch: 'Limpar pesquisa',\n\t\temptyResults: 'Nenhum resultado para sua pesquisa',\n\t\tloading: 'Carregando...',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport type { LuSimpleSelectInputComponent } from './input';\n\nexport const SIMPLE_SELECT_INPUT = new InjectionToken<LuSimpleSelectInputComponent<unknown>>('SimpleSelectInput');\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'luIsOptionSelected',\n\tstandalone: true,\n})\nexport class LuIsOptionSelectedPipe implements PipeTransform {\n\ttransform<T>(option: T, comparer: (option1: T, option2: T) => boolean, selectedOption: T): boolean {\n\t\treturn !!selectedOption && comparer(option, selectedOption);\n\t}\n}\n","import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, QueryList, ViewChildren, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LuSelectPanelRef, SELECT_ID, ɵLuOptionComponent, ɵgenerateGroups } from '@lucca-front/ng/core-select';\nimport { EMPTY, asyncScheduler, filter, map, observeOn, take, takeUntil } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\nimport { LuSimpleSelectInputComponent } from '../input/select-input.component';\nimport { SIMPLE_SELECT_INPUT } from '../select.model';\nimport { LU_SIMPLE_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuIsOptionSelectedPipe } from './option-selected.pipe';\n\n@Component({\n\tselector: 'lu-select-panel',\n\ttemplateUrl: './panel.component.html',\n\tstyleUrls: ['./panel.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [A11yModule, AsyncPipe, FormsModule, NgIf, NgFor, NgTemplateOutlet, ɵLuOptionComponent, LuIsOptionSelectedPipe],\n})\nexport class LuSelectPanelComponent<T> implements AfterViewInit {\n\tpublic selectInput = inject<LuSimpleSelectInputComponent<T>>(SIMPLE_SELECT_INPUT);\n\tpublic panelRef = inject<LuSelectPanelRef<T, T>>(LuSelectPanelRef);\n\tpublic selectId = inject(SELECT_ID);\n\tpublic intl = getIntl(LU_SIMPLE_SELECT_TRANSLATIONS);\n\n\toptions$ = this.selectInput.options$;\n\tgrouping = this.selectInput.grouping;\n\tgroups$ = this.grouping ? this.options$.pipe(map((options) => ɵgenerateGroups(options, this.grouping.selector))) : EMPTY;\n\tloading$ = this.selectInput.loading$;\n\toptionComparer = this.selectInput.optionComparer;\n\tinitialValue: T | undefined = this.selectInput.value;\n\toptionTpl = this.selectInput.optionTpl;\n\n\t@ViewChildren(ɵLuOptionComponent) optionsQL: QueryList<ɵLuOptionComponent<T>>;\n\tprivate _keyManager: ActiveDescendantKeyManager<ɵLuOptionComponent<T>>;\n\n\tpublic get keyManager(): ActiveDescendantKeyManager<ɵLuOptionComponent<T>> {\n\t\treturn this._keyManager;\n\t}\n\n\tpublic get selected(): T | undefined {\n\t\treturn this.initialValue;\n\t}\n\n\tonScroll(evt: Event): void {\n\t\tif (!(evt.target instanceof HTMLElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.target.scrollTop === 0) {\n\t\t\tthis.panelRef.previousPage.emit();\n\t\t}\n\n\t\tif (evt.target.scrollHeight - evt.target.scrollTop - evt.target.clientHeight < 1) {\n\t\t\tthis.panelRef.nextPage.emit();\n\t\t}\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (!this.optionsQL) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._keyManager = new ActiveDescendantKeyManager(this.optionsQL).withHomeAndEnd();\n\n\t\tthis.keyManager.change\n\t\t\t.pipe(\n\t\t\t\tmap(() => this.keyManager.activeItem?.id),\n\t\t\t\ttakeUntil(this.panelRef.closed),\n\t\t\t)\n\t\t\t.subscribe((activeDescendant) => this.panelRef.activeOptionIdChanged.emit(activeDescendant));\n\n\t\tif (this.initialValue && !this.selectInput.clue) {\n\t\t\tthis.options$\n\t\t\t\t?.pipe(\n\t\t\t\t\tobserveOn(asyncScheduler),\n\t\t\t\t\tmap((options) => options.findIndex((o) => this.optionComparer(o, this.initialValue))),\n\t\t\t\t\tfilter((index) => index !== -1),\n\t\t\t\t\ttake(1),\n\t\t\t\t\ttakeUntil(this.panelRef.closed),\n\t\t\t\t)\n\t\t\t\t.subscribe((selectedIndex) => this.keyManager.setActiveItem(selectedIndex));\n\t\t} else {\n\t\t\t// If no initial Value, set first as active\n\t\t\tsetTimeout(() => this.keyManager.setFirstItemActive());\n\t\t}\n\n\t\t/**\n\t\t * On new options after a search, we want to select the first element with key manager\n\t\t */\n\t\tif (this.selectInput.searchable) {\n\t\t\tthis.selectInput.clueChange\n\t\t\t\t.pipe(\n\t\t\t\t\tswitchMap(() => this.optionsQL.changes.pipe(take(1))),\n\t\t\t\t\tdebounceTime(0),\n\t\t\t\t\ttakeUntil(this.panelRef.closed),\n\t\t\t\t)\n\t\t\t\t.subscribe(() => this.keyManager.setFirstItemActive());\n\t\t}\n\t}\n}\n","<div\n\tclass=\"lu-picker-panel lu-option-picker-panel\"\n\tcdkTrapFocus\n\t*ngIf=\"{ options: (options$ | async) || [] } as ctx\"\n\t[cdkTrapFocusAutoCapture]=\"true\"\n>\n\t<div class=\"lu-picker-content\" [class.is-loading]=\"loading$ | async\" (scroll)=\"onScroll($event)\">\n\t\t<div class=\"lu-picker-content-option\" role=\"listbox\">\n\t\t\t<ng-container *ngIf=\"grouping\">\n\t\t\t\t<div\n\t\t\t\t\t*ngFor=\"let group of groups$ | async\"\n\t\t\t\t\tclass=\"lu-picker-content-option-group\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\t[attr.aria-labelledby]=\"selectId + '-group-' + group.key\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"lu-picker-content-option-group-title\" role=\"presentation\" [id]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"grouping.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: group.options }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"!grouping\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\"></ng-template>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #optionsList let-options>\n\t\t\t\t<lu-select-option\n\t\t\t\t\t*ngFor=\"let option of options; let index = index\"\n\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'center' }\"\n\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected:optionComparer:selected\"\n\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\n\t\t\t\t></lu-select-option>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-picker-content-option-emptyState\" *ngIf=\"ctx.options.length === 0 && (loading$ | async) === false\">\n\t\t\t\t{{intl.emptyResults}}\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"loading$ | async\" class=\"lu-picker-content-loading\">\n\t\t\t<div class=\"loading\"></div>\n\t\t\t<span>{{intl.loading}}</span>\n\t\t</div>\n\t</div>\n\t<!--<div class=\"lu-picker-content-add\">\n\t\t<button class=\"button mod-text mod-icon palette-primary\" type=\"button\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-mathsPlus\"></span>Add a new supplier\n\t\t</button>\n\t</div>-->\n</div>\n","import { Overlay, OverlayConfig, OverlayPositionBuilder, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, ElementRef, Injectable, Injector, inject } from '@angular/core';\nimport { LuSelectPanelRef } from '@lucca-front/ng/core-select';\nimport { takeUntil } from 'rxjs';\nimport { LuSelectPanelComponent } from '../panel';\nimport { SIMPLE_SELECT_INPUT } from '../select.model';\nimport { LuSimpleSelectInputComponent } from './select-input.component';\n\nclass SelectPanelRef<T> extends LuSelectPanelRef<T, T> {\n\tinstance: LuSelectPanelComponent<T>;\n\tprivate panelRef: ComponentRef<LuSelectPanelComponent<T>>;\n\tprivate portalRef: ComponentPortal<LuSelectPanelComponent<T>>;\n\n\tconstructor(private overlayRef: OverlayRef, parentInjector: Injector, selectInput: LuSimpleSelectInputComponent<T>) {\n\t\tsuper();\n\n\t\tconst injector = Injector.create({\n\t\t\tproviders: [\n\t\t\t\t{ provide: LuSelectPanelRef, useValue: this },\n\t\t\t\t{ provide: SIMPLE_SELECT_INPUT, useValue: selectInput },\n\t\t\t],\n\t\t\tparent: parentInjector,\n\t\t});\n\n\t\tthis.portalRef = new ComponentPortal<LuSelectPanelComponent<T>>(LuSelectPanelComponent, undefined, injector);\n\t\tthis.panelRef = overlayRef.attach(this.portalRef);\n\t\tthis.instance = this.panelRef.instance;\n\n\t\toverlayRef\n\t\t\t.backdropClick()\n\t\t\t.pipe(takeUntil(this.closed))\n\t\t\t.subscribe(() => this.close());\n\t}\n\n\temitValue(value: T): void {\n\t\tthis.valueChanged.emit(value);\n\t\tthis.close();\n\t}\n\n\toverride handleKeyManagerEvent(event: KeyboardEvent) {\n\t\tthis.instance.keyManager.onKeydown(event);\n\t}\n\n\toverride close(): void {\n\t\tsuper.close();\n\t\tthis.panelRef.destroy();\n\t\tthis.overlayRef.detach();\n\t}\n\n\tselectCurrentlyHighlightedValue(): void {\n\t\tthis.emitValue(this.instance.keyManager.activeItem?.option);\n\t\tthis.close();\n\t}\n}\n\n@Injectable()\nexport class LuSimpleSelectPanelRefFactory {\n\tprotected overlay = inject(Overlay);\n\tprotected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprotected positionBuilder = inject(OverlayPositionBuilder);\n\tprotected scrollStrategies = inject(ScrollStrategyOptions);\n\tprotected parentInjector = inject(Injector);\n\n\tbuildPanelRef<T>(selectInput: LuSimpleSelectInputComponent<T>, overlayConfigOverride: OverlayConfig = {}): LuSelectPanelRef<T, T> {\n\t\tconst overlayConfig = this.buildOverlayConfig(overlayConfigOverride);\n\t\tconst overlayRef = this.overlay.create(overlayConfig);\n\n\t\treturn new SelectPanelRef(overlayRef, this.parentInjector, selectInput);\n\t}\n\n\tprotected buildOverlayConfig(overlayConfigOverride: OverlayConfig = {}): OverlayConfig {\n\t\tconst overlayConfig: OverlayConfig = overlayConfigOverride || {};\n\t\toverlayConfig.positionStrategy = this.positionBuilder.flexibleConnectedTo(this.elementRef).withPositions([\n\t\t\t{\n\t\t\t\toriginX: 'start',\n\t\t\t\toriginY: 'bottom',\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: 'top',\n\t\t\t},\n\t\t\t{\n\t\t\t\toriginX: 'end',\n\t\t\t\toriginY: 'bottom',\n\t\t\t\toverlayX: 'end',\n\t\t\t\toverlayY: 'top',\n\t\t\t},\n\t\t\t{\n\t\t\t\toriginX: 'start',\n\t\t\t\toriginY: 'top',\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: 'bottom',\n\t\t\t},\n\t\t\t{\n\t\t\t\toriginX: 'end',\n\t\t\t\toriginY: 'top',\n\t\t\t\toverlayX: 'end',\n\t\t\t\toverlayY: 'bottom',\n\t\t\t},\n\t\t]);\n\t\toverlayConfig.scrollStrategy = this.scrollStrategies.reposition();\n\t\toverlayConfig.minWidth = this.elementRef.nativeElement.clientWidth;\n\t\toverlayConfig.maxHeight = '100vh';\n\t\toverlayConfig.maxWidth = '100vw';\n\n\t\treturn overlayConfig;\n\t}\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, forwardRef, inject } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LuSelectPanelRef, provideLuSelectLabelsAndIds, provideLuSelectOverlayContainer, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { InputDirective } from '@lucca-front/ng/form-field';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LU_SIMPLE_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuSimpleSelectPanelRefFactory } from './panel-ref.factory';\n\n@Component({\n\tselector: 'lu-simple-select',\n\ttemplateUrl: './select-input.component.html',\n\tstyleUrls: ['./select-input.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [AsyncPipe, ɵLuOptionOutletDirective, NgIf, OverlayModule, IconComponent, FormsModule, InputDirective],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => LuSimpleSelectInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\t{\n\t\t\tprovide: ALuSelectInputComponent,\n\t\t\tuseExisting: forwardRef(() => LuSimpleSelectInputComponent),\n\t\t},\n\t\tLuSimpleSelectPanelRefFactory,\n\t\tprovideLuSelectOverlayContainer(),\n\t\tprovideLuSelectLabelsAndIds(),\n\t],\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'simpleSelect',\n\t},\n})\nexport class LuSimpleSelectInputComponent<T> extends ALuSelectInputComponent<T, T> implements ControlValueAccessor {\n\tintl = getIntl(LU_SIMPLE_SELECT_TRANSLATIONS);\n\n\tprotected panelRefFactory = inject(LuSimpleSelectPanelRefFactory);\n\n\tprotected buildPanelRef(): LuSelectPanelRef<T, T> {\n\t\treturn this.panelRefFactory.buildPanelRef(this, this.overlayConfig);\n\t}\n\n\tprotected get hasValue(): boolean {\n\t\treturn this.value !== null && this.value !== undefined;\n\t}\n}\n","<input\n\tclass=\"simpleSelect-input\"\n\ttype=\"text\"\n\trole=\"combobox\"\n\taria-haspopup=\"listbox\"\n\t[attr.aria-activedescendant]=\"activeDescendant$ | async\"\n\t[attr.aria-expanded]=\"isPanelOpen\"\n\t[attr.aria-controls]=\"ariaControls\"\n\tplaceholder=\"{{inputPlaceholder}}\"\n\t[(ngModel)]=\"clue\"\n\t(ngModelChange)=\"clueChanged($event)\"\n\t[readonly]=\"!searchable\"\n\t[disabled]=\"disabled\"\n\tluInput\n\t#inputElement\n/>\n<div class=\"simpleSelect-value\">\n\t<ng-container *luOptionOutlet=\"valueTpl || optionTpl; value: value\"></ng-container>\n</div>\n<button\n\t*ngIf=\"clearable && hasValue\"\n\tclass=\"simpleSelect-clear clear\"\n\trole=\"button\"\n\ttype=\"button\"\n\t(click)=\"clearValue($event)\"\n\t(keydown.space)=\"clearValue($event)\"\n>\n\t<span class=\"u-mask\">{{intl.clear}}</span>\n</button>\n<span aria-hidden=\"true\" class=\"simpleSelect-arrow lucca-icon icon-arrowChevronBottom\"></span>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -6,7 +6,6 @@ import { InlineMessageState } from '@lucca-front/ng/inline-message';
|
|
|
6
6
|
import { SafeHtml } from '@angular/platform-browser';
|
|
7
7
|
import { NgControl, Validator } from '@angular/forms';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@lucca-front/ng/core";
|
|
10
9
|
export declare class FormFieldComponent implements OnChanges, OnDestroy, DoCheck {
|
|
11
10
|
#private;
|
|
12
11
|
set validators(validators: QueryList<Validator | undefined>);
|
|
@@ -38,6 +37,6 @@ export declare class FormFieldComponent implements OnChanges, OnDestroy, DoCheck
|
|
|
38
37
|
ngOnDestroy(): void;
|
|
39
38
|
ngDoCheck(): void;
|
|
40
39
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormFieldComponent, never>;
|
|
41
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FormFieldComponent, "lu-form-field", never, { "label": { "alias": "label"; "required": true; }; "hiddenLabel": { "alias": "hiddenLabel"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "inlineMessage": { "alias": "inlineMessage"; "required": false; }; "inlineMessageState": { "alias": "inlineMessageState"; "required": false; }; "size": { "alias": "size"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; }, {}, ["control", "validators"], ["*"], true,
|
|
40
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormFieldComponent, "lu-form-field", never, { "label": { "alias": "label"; "required": true; }; "hiddenLabel": { "alias": "hiddenLabel"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "inlineMessage": { "alias": "inlineMessage"; "required": false; }; "inlineMessageState": { "alias": "inlineMessageState"; "required": false; }; "size": { "alias": "size"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; }, {}, ["control", "validators"], ["*"], true, never>;
|
|
42
41
|
static ngAcceptInputType_hiddenLabel: unknown;
|
|
43
42
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { OnChanges } from '@angular/core';
|
|
2
2
|
import { InlineMessageState } from './inline-message-state';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@lucca-front/ng/core";
|
|
5
4
|
export declare class InlineMessageComponent implements OnChanges {
|
|
6
5
|
#private;
|
|
7
6
|
label: string;
|
|
@@ -9,5 +8,5 @@ export declare class InlineMessageComponent implements OnChanges {
|
|
|
9
8
|
size: 'S' | 'M';
|
|
10
9
|
ngOnChanges(): void;
|
|
11
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<InlineMessageComponent, never>;
|
|
12
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<InlineMessageComponent, "lu-inline-message", never, { "label": { "alias": "label"; "required": true; }; "state": { "alias": "state"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true,
|
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<InlineMessageComponent, "lu-inline-message", never, { "label": { "alias": "label"; "required": true; }; "state": { "alias": "state"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
|
|
13
12
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ConnectedPosition, Overlay, OverlayConfig, OverlayPositionBuilder, ScrollStrategyOptions } from '@angular/cdk/overlay';
|
|
2
2
|
import { ElementRef, Injector } from '@angular/core';
|
|
3
|
-
import { ILuMultiSelectPanelData } from '../select.model';
|
|
4
3
|
import { LuMultiSelectPanelRef } from './panel.model';
|
|
4
|
+
import { LuMultiSelectInputComponent } from './select-input.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class LuMultiSelectPanelRefFactory {
|
|
7
7
|
protected overlay: Overlay;
|
|
@@ -9,7 +9,7 @@ export declare class LuMultiSelectPanelRefFactory {
|
|
|
9
9
|
protected positionBuilder: OverlayPositionBuilder;
|
|
10
10
|
protected scrollStrategies: ScrollStrategyOptions;
|
|
11
11
|
protected parentInjector: Injector;
|
|
12
|
-
buildPanelRef<T>(
|
|
12
|
+
buildPanelRef<T>(selectInput: LuMultiSelectInputComponent<T>, defaultOverlayConfigOverride?: OverlayConfig): LuMultiSelectPanelRef<T>;
|
|
13
13
|
protected buildDefaultOverlayConfig(overlayConfigOverride?: OverlayConfig): OverlayConfig;
|
|
14
14
|
protected buildPosition(yDirection: 'top' | 'bottom', xDirection: 'left' | 'right', config: {
|
|
15
15
|
offsetX?: number;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
2
2
|
import { AfterViewInit, QueryList } from '@angular/core';
|
|
3
3
|
import { ɵLuOptionComponent } from '@lucca-front/ng/core-select';
|
|
4
|
+
import { LuMultiSelectInputComponent } from '../input';
|
|
4
5
|
import { LuMultiSelectPanelRef } from '../input/panel.model';
|
|
5
|
-
import { ILuMultiSelectPanelData } from '../select.model';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class LuMultiSelectPanelComponent<T> implements AfterViewInit {
|
|
8
|
-
protected
|
|
8
|
+
protected selectInput: LuMultiSelectInputComponent<T>;
|
|
9
9
|
panelRef: LuMultiSelectPanelRef<T>;
|
|
10
10
|
selectId: number;
|
|
11
11
|
intl: import("../select.translate").ILuMultiSelectLabel;
|
|
12
|
-
options$: import("rxjs").
|
|
13
|
-
groups$: import("rxjs").Observable<import("@lucca-front/ng/core-select").LuOptionGroup<T, unknown>[]>;
|
|
12
|
+
options$: import("rxjs").ReplaySubject<T[]>;
|
|
14
13
|
grouping: import("@lucca-front/ng/core-select").LuOptionGroupDirective<T, T[], unknown>;
|
|
15
|
-
|
|
14
|
+
groups$: import("rxjs").Observable<import("@lucca-front/ng/core-select").LuOptionGroup<T, unknown>[]>;
|
|
15
|
+
loading$: import("rxjs").BehaviorSubject<boolean>;
|
|
16
16
|
optionComparer: (option1: T, option2: T) => boolean;
|
|
17
17
|
selectedOptions: T[];
|
|
18
18
|
optionTpl: import("@angular/core").Type<unknown> | import("@angular/core").TemplateRef<import("@lucca-front/ng/core-select").LuOptionContext<T>>;
|