@ks-digital/designsystem-angular 0.0.1-alpha.64 → 0.0.1-alpha.66
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/fesm2022/ks-digital-designsystem-angular-spinner.mjs +22 -5
- package/fesm2022/ks-digital-designsystem-angular-spinner.mjs.map +1 -1
- package/fesm2022/ks-digital-designsystem-angular-suggestion.mjs +42 -40
- package/fesm2022/ks-digital-designsystem-angular-suggestion.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ks-digital-designsystem-angular-spinner.d.ts +1 -0
- package/types/ks-digital-designsystem-angular-suggestion.d.ts +41 -41
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, booleanAttribute, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
+
import { input, booleanAttribute, effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import * as i1 from '@ks-digital/designsystem-angular/__internals';
|
|
4
|
-
import { HostColor } from '@ks-digital/designsystem-angular/__internals';
|
|
4
|
+
import { logIfDevMode, HostColor } from '@ks-digital/designsystem-angular/__internals';
|
|
5
5
|
|
|
6
6
|
class Spinner {
|
|
7
7
|
/**
|
|
@@ -13,18 +13,30 @@ class Spinner {
|
|
|
13
13
|
*/
|
|
14
14
|
ariaHidden = input(undefined, { ...(ngDevMode ? { debugName: "ariaHidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute,
|
|
15
15
|
alias: 'aria-hidden' });
|
|
16
|
+
constructor() {
|
|
17
|
+
effect(() => {
|
|
18
|
+
if (this.ariaLabel() === undefined && !this.ariaHidden()) {
|
|
19
|
+
logIfDevMode({
|
|
20
|
+
component: 'ksd-spinner',
|
|
21
|
+
message: 'Either `aria-label` or `aria-hidden` must be provided.',
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
16
26
|
/**
|
|
17
27
|
* Changes size for descendant Designsystemet components. Select from predefined sizes.
|
|
18
28
|
* @attribute data-size
|
|
19
29
|
*/
|
|
20
30
|
dataSize = input(undefined, { ...(ngDevMode ? { debugName: "dataSize" } : /* istanbul ignore next */ {}), alias: 'data-size' });
|
|
21
31
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Spinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.8", type: Spinner, isStandalone: true, selector: "ksd-spinner", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaHidden: { classPropertyName: "ariaHidden", publicName: "aria-hidden", isSignal: true, isRequired: false, transformFunction: null }, dataSize: { classPropertyName: "dataSize", publicName: "data-size", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.HostColor, inputs: ["data-color", "data-color"] }], ngImport: i0, template: `
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.8", type: Spinner, isStandalone: true, selector: "ksd-spinner", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaHidden: { classPropertyName: "ariaHidden", publicName: "aria-hidden", isSignal: true, isRequired: false, transformFunction: null }, dataSize: { classPropertyName: "dataSize", publicName: "data-size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-label": "null", "attr.aria-hidden": "null" } }, hostDirectives: [{ directive: i1.HostColor, inputs: ["data-color", "data-color"] }], ngImport: i0, template: `
|
|
23
33
|
<svg
|
|
24
34
|
class="ds-spinner"
|
|
25
35
|
role="img"
|
|
26
36
|
viewBox="0 0 50 50"
|
|
27
37
|
[attr.data-size]="dataSize()"
|
|
38
|
+
[attr.aria-label]="ariaLabel()"
|
|
39
|
+
[attr.aria-hidden]="ariaHidden() || undefined"
|
|
28
40
|
>
|
|
29
41
|
<circle
|
|
30
42
|
class="ds-spinner__background"
|
|
@@ -53,6 +65,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
53
65
|
role="img"
|
|
54
66
|
viewBox="0 0 50 50"
|
|
55
67
|
[attr.data-size]="dataSize()"
|
|
68
|
+
[attr.aria-label]="ariaLabel()"
|
|
69
|
+
[attr.aria-hidden]="ariaHidden() || undefined"
|
|
56
70
|
>
|
|
57
71
|
<circle
|
|
58
72
|
class="ds-spinner__background"
|
|
@@ -71,13 +85,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
71
85
|
stroke-width="5"
|
|
72
86
|
/>
|
|
73
87
|
</svg>
|
|
74
|
-
`,
|
|
88
|
+
`, host: {
|
|
89
|
+
'[attr.aria-label]': 'null',
|
|
90
|
+
'[attr.aria-hidden]': 'null',
|
|
91
|
+
}, hostDirectives: [
|
|
75
92
|
{
|
|
76
93
|
directive: HostColor,
|
|
77
94
|
inputs: ['data-color'],
|
|
78
95
|
},
|
|
79
96
|
], styles: [":host{display:contents}\n"] }]
|
|
80
|
-
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaHidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-hidden", required: false }] }], dataSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "data-size", required: false }] }] } });
|
|
97
|
+
}], ctorParameters: () => [], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaHidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-hidden", required: false }] }], dataSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "data-size", required: false }] }] } });
|
|
81
98
|
|
|
82
99
|
/**
|
|
83
100
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ks-digital-designsystem-angular-spinner.mjs","sources":["../../../../packages/angular/spinner/src/spinner.ts","../../../../packages/angular/spinner/src/ks-digital-designsystem-angular-spinner.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n} from '@angular/core'\nimport {
|
|
1
|
+
{"version":3,"file":"ks-digital-designsystem-angular-spinner.mjs","sources":["../../../../packages/angular/spinner/src/spinner.ts","../../../../packages/angular/spinner/src/ks-digital-designsystem-angular-spinner.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n effect,\n input,\n} from '@angular/core'\nimport {\n HostColor,\n logIfDevMode,\n} from '@ks-digital/designsystem-angular/__internals'\nimport { SpinnerSize } from './spinner-sizes'\n\n@Component({\n selector: 'ksd-spinner',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: `\n :host {\n display: contents;\n }\n `,\n template: `\n <svg\n class=\"ds-spinner\"\n role=\"img\"\n viewBox=\"0 0 50 50\"\n [attr.data-size]=\"dataSize()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-hidden]=\"ariaHidden() || undefined\"\n >\n <circle\n class=\"ds-spinner__background\"\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n stroke-width=\"5\"\n />\n <circle\n class=\"ds-spinner__circle\"\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n stroke-width=\"5\"\n />\n </svg>\n `,\n host: {\n '[attr.aria-label]': 'null',\n '[attr.aria-hidden]': 'null',\n },\n hostDirectives: [\n {\n directive: HostColor,\n inputs: ['data-color'],\n },\n ],\n})\nexport class Spinner {\n /**\n * Aria-label for the spinner\n */\n readonly ariaLabel = input<string>(undefined, { alias: 'aria-label' })\n\n /**\n * Aria-hidden for the spinner\n */\n readonly ariaHidden = input(undefined, {\n transform: booleanAttribute,\n alias: 'aria-hidden',\n })\n\n constructor() {\n effect(() => {\n if (this.ariaLabel() === undefined && !this.ariaHidden()) {\n logIfDevMode({\n component: 'ksd-spinner',\n message: 'Either `aria-label` or `aria-hidden` must be provided.',\n })\n }\n })\n }\n\n /**\n * Changes size for descendant Designsystemet components. Select from predefined sizes.\n * @attribute data-size\n */\n readonly dataSize = input<SpinnerSize>(undefined, {\n alias: 'data-size',\n })\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MA2Da,OAAO,CAAA;AAClB;;AAEG;IACM,SAAS,GAAG,KAAK,CAAS,SAAS,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;AAEtE;;AAEG;AACM,IAAA,UAAU,GAAG,KAAK,CAAC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EACnC,SAAS,EAAE,gBAAgB;QAC3B,KAAK,EAAE,aAAa,EAAA,CACpB;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AACxD,gBAAA,YAAY,CAAC;AACX,oBAAA,SAAS,EAAE,aAAa;AACxB,oBAAA,OAAO,EAAE,wDAAwD;AAClE,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;IACM,QAAQ,GAAG,KAAK,CAAc,SAAS,gFAC9C,KAAK,EAAE,WAAW,EAAA,CAClB;uGA/BS,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtCR;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAYU,OAAO,EAAA,UAAA,EAAA,CAAA;kBA9CnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,eAAA,EACN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAMrC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BT,EAAA,IAAA,EACK;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,oBAAoB,EAAE,MAAM;qBAC7B,EAAA,cAAA,EACe;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,SAAS;4BACpB,MAAM,EAAE,CAAC,YAAY,CAAC;AACvB,yBAAA;AACF,qBAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACzDH;;AAEG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
1
2
|
import * as i0 from '@angular/core';
|
|
2
3
|
import { viewChild, ChangeDetectionStrategy, Component, input, CUSTOM_ELEMENTS_SCHEMA, contentChildren, contentChild, booleanAttribute, model, computed, afterNextRender, effect } from '@angular/core';
|
|
3
4
|
import '@digdir/designsystemet-web';
|
|
4
5
|
import * as i1 from '@ks-digital/designsystem-angular/__internals';
|
|
5
6
|
import { HostSize, HostColor } from '@ks-digital/designsystem-angular/__internals';
|
|
6
|
-
import { NgTemplateOutlet } from '@angular/common';
|
|
7
7
|
|
|
8
8
|
class SuggestionListEmpty {
|
|
9
9
|
/**
|
|
@@ -60,24 +60,7 @@ class SuggestionList {
|
|
|
60
60
|
options = contentChildren(SuggestionListOption, { ...(ngDevMode ? { debugName: "options" } : /* istanbul ignore next */ {}), descendants: true });
|
|
61
61
|
empty = contentChild(SuggestionListEmpty, ...(ngDevMode ? [{ debugName: "empty" }] : /* istanbul ignore next */ []));
|
|
62
62
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SuggestionList, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
63
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
64
|
-
<u-datalist
|
|
65
|
-
data-nofilter
|
|
66
|
-
[attr.data-sr-singular]="singular()"
|
|
67
|
-
[attr.data-sr-plural]="plural()"
|
|
68
|
-
>
|
|
69
|
-
@for (option of options(); track option) {
|
|
70
|
-
<u-option [value]="option.value()">
|
|
71
|
-
<ng-container *ngTemplateOutlet="option.templateRef()" />
|
|
72
|
-
</u-option>
|
|
73
|
-
}
|
|
74
|
-
@if (empty()?.templateRef()) {
|
|
75
|
-
<u-option data-empty value="" hidden>
|
|
76
|
-
<ng-container *ngTemplateOutlet="empty()?.templateRef()" />
|
|
77
|
-
</u-option>
|
|
78
|
-
}
|
|
79
|
-
</u-datalist>
|
|
80
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
63
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.8", type: SuggestionList, isStandalone: true, selector: "ksd-suggestion-list", inputs: { singular: { classPropertyName: "singular", publicName: "singular", isSignal: true, isRequired: false, transformFunction: null }, plural: { classPropertyName: "plural", publicName: "plural", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: none;" }, queries: [{ propertyName: "options", predicate: SuggestionListOption, descendants: true, isSignal: true }, { propertyName: "empty", first: true, predicate: SuggestionListEmpty, descendants: true, isSignal: true }], ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
81
64
|
}
|
|
82
65
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SuggestionList, decorators: [{
|
|
83
66
|
type: Component,
|
|
@@ -85,28 +68,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
85
68
|
selector: 'ksd-suggestion-list',
|
|
86
69
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
87
70
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
88
|
-
imports: [NgTemplateOutlet],
|
|
89
71
|
host: {
|
|
90
|
-
style: 'display:
|
|
72
|
+
style: 'display: none;',
|
|
91
73
|
},
|
|
92
|
-
template:
|
|
93
|
-
<u-datalist
|
|
94
|
-
data-nofilter
|
|
95
|
-
[attr.data-sr-singular]="singular()"
|
|
96
|
-
[attr.data-sr-plural]="plural()"
|
|
97
|
-
>
|
|
98
|
-
@for (option of options(); track option) {
|
|
99
|
-
<u-option [value]="option.value()">
|
|
100
|
-
<ng-container *ngTemplateOutlet="option.templateRef()" />
|
|
101
|
-
</u-option>
|
|
102
|
-
}
|
|
103
|
-
@if (empty()?.templateRef()) {
|
|
104
|
-
<u-option data-empty value="" hidden>
|
|
105
|
-
<ng-container *ngTemplateOutlet="empty()?.templateRef()" />
|
|
106
|
-
</u-option>
|
|
107
|
-
}
|
|
108
|
-
</u-datalist>
|
|
109
|
-
`,
|
|
74
|
+
template: ``,
|
|
110
75
|
}]
|
|
111
76
|
}], propDecorators: { singular: [{ type: i0.Input, args: [{ isSignal: true, alias: "singular", required: false }] }], plural: [{ type: i0.Input, args: [{ isSignal: true, alias: "plural", required: false }] }], options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SuggestionListOption), { ...{
|
|
112
77
|
descendants: true,
|
|
@@ -234,8 +199,26 @@ class Suggestion {
|
|
|
234
199
|
<data [attr.value]="option.value">{{ option.label }}</data>
|
|
235
200
|
}
|
|
236
201
|
<ng-content />
|
|
202
|
+
<u-datalist
|
|
203
|
+
popover="manual"
|
|
204
|
+
data-is-floating="true"
|
|
205
|
+
data-nofilter
|
|
206
|
+
[attr.data-sr-singular]="suggestionList()?.singular()"
|
|
207
|
+
[attr.data-sr-plural]="suggestionList()?.plural()"
|
|
208
|
+
>
|
|
209
|
+
@for (option of suggestionList()?.options() ?? []; track option) {
|
|
210
|
+
<u-option [value]="option.value()">
|
|
211
|
+
<ng-container *ngTemplateOutlet="option.templateRef()" />
|
|
212
|
+
</u-option>
|
|
213
|
+
}
|
|
214
|
+
@if (suggestionList()?.empty()?.templateRef(); as emptyTpl) {
|
|
215
|
+
<u-option data-empty value="" hidden>
|
|
216
|
+
<ng-container *ngTemplateOutlet="emptyTpl" />
|
|
217
|
+
</u-option>
|
|
218
|
+
}
|
|
219
|
+
</u-datalist>
|
|
237
220
|
</ds-suggestion>
|
|
238
|
-
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
221
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
239
222
|
}
|
|
240
223
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Suggestion, decorators: [{
|
|
241
224
|
type: Component,
|
|
@@ -253,6 +236,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
253
236
|
},
|
|
254
237
|
],
|
|
255
238
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
239
|
+
imports: [NgTemplateOutlet],
|
|
256
240
|
host: {},
|
|
257
241
|
template: `
|
|
258
242
|
<ds-suggestion
|
|
@@ -268,6 +252,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
268
252
|
<data [attr.value]="option.value">{{ option.label }}</data>
|
|
269
253
|
}
|
|
270
254
|
<ng-content />
|
|
255
|
+
<u-datalist
|
|
256
|
+
popover="manual"
|
|
257
|
+
data-is-floating="true"
|
|
258
|
+
data-nofilter
|
|
259
|
+
[attr.data-sr-singular]="suggestionList()?.singular()"
|
|
260
|
+
[attr.data-sr-plural]="suggestionList()?.plural()"
|
|
261
|
+
>
|
|
262
|
+
@for (option of suggestionList()?.options() ?? []; track option) {
|
|
263
|
+
<u-option [value]="option.value()">
|
|
264
|
+
<ng-container *ngTemplateOutlet="option.templateRef()" />
|
|
265
|
+
</u-option>
|
|
266
|
+
}
|
|
267
|
+
@if (suggestionList()?.empty()?.templateRef(); as emptyTpl) {
|
|
268
|
+
<u-option data-empty value="" hidden>
|
|
269
|
+
<ng-container *ngTemplateOutlet="emptyTpl" />
|
|
270
|
+
</u-option>
|
|
271
|
+
}
|
|
272
|
+
</u-datalist>
|
|
271
273
|
</ds-suggestion>
|
|
272
274
|
`,
|
|
273
275
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ks-digital-designsystem-angular-suggestion.mjs","sources":["../../../../packages/angular/suggestion/src/suggestion-list-empty.ts","../../../../packages/angular/suggestion/src/suggestion-list-option.ts","../../../../packages/angular/suggestion/src/suggestion-list.ts","../../../../packages/angular/suggestion/src/suggestion.utils.ts","../../../../packages/angular/suggestion/src/suggestion.ts","../../../../packages/angular/suggestion/src/ks-digital-designsystem-angular-suggestion.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n viewChild,\n} from '@angular/core'\n\n@Component({\n selector: 'ksd-suggestion-list-empty',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ` <ng-template #tpl><ng-content /></ng-template> `,\n})\nexport class SuggestionListEmpty {\n /**\n * Hack to get the content from parent component so that we can\n * keep the dom structure needed without additional host elements\n */\n templateRef = viewChild<TemplateRef<unknown>>('tpl')\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n input,\n TemplateRef,\n viewChild,\n} from '@angular/core'\n\n@Component({\n selector: 'ksd-suggestion-list-option',\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [],\n template: ` <ng-template #tpl><ng-content /></ng-template> `,\n})\nexport class SuggestionListOption {\n /**\n * Hack to get the content from parent component so that we can\n * keep the dom structure needed without additional host elements\n */\n templateRef = viewChild<TemplateRef<unknown>>('tpl')\n\n value = input.required<string>()\n}\n","import { NgTemplateOutlet } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n contentChildren,\n CUSTOM_ELEMENTS_SCHEMA,\n input,\n} from '@angular/core'\nimport { SuggestionListEmpty } from './suggestion-list-empty'\nimport { SuggestionListOption } from './suggestion-list-option'\n\n@Component({\n selector: 'ksd-suggestion-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [NgTemplateOutlet],\n host: {\n style: 'display: contents;',\n },\n template: `\n <u-datalist\n data-nofilter\n [attr.data-sr-singular]=\"singular()\"\n [attr.data-sr-plural]=\"plural()\"\n >\n @for (option of options(); track option) {\n <u-option [value]=\"option.value()\">\n <ng-container *ngTemplateOutlet=\"option.templateRef()\" />\n </u-option>\n }\n @if (empty()?.templateRef()) {\n <u-option data-empty value=\"\" hidden>\n <ng-container *ngTemplateOutlet=\"empty()?.templateRef()\" />\n </u-option>\n }\n </u-datalist>\n `,\n})\nexport class SuggestionList {\n /**\n * Screen reader announcement template for singular result count.\n *\n * @default '%d forslag'\n */\n readonly singular = input('%d forslag')\n\n /**\n * Screen reader announcement template for plural result count.\n *\n * @default '%d forslag'\n */\n readonly plural = input('%d forslag')\n\n readonly options = contentChildren(SuggestionListOption, {\n descendants: true,\n })\n\n protected readonly empty = contentChild(SuggestionListEmpty)\n}\n","import type { SuggestionItem, SuggestionModelValue } from './suggestion.types'\n\nexport const sanitizeItems = (\n values: SuggestionModelValue,\n): SuggestionItem[] =>\n !values ? [] : Array.isArray(values) ? values : [values]\n\nconst toItem = (data: HTMLDataElement): SuggestionItem => ({\n label: data.textContent?.trim() || data.value,\n value: data.value,\n})\n\nexport const nextSelected = (\n data: HTMLDataElement,\n previous: SuggestionModelValue,\n multiple: boolean,\n): SuggestionItem | SuggestionItem[] | undefined => {\n const item = toItem(data)\n\n if (!multiple) {\n return data.isConnected ? undefined : item\n }\n\n const prevItems = sanitizeItems(previous)\n return data.isConnected\n ? prevItems.filter(({ value }) => value !== item.value)\n : [...prevItems, item]\n}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n CUSTOM_ELEMENTS_SCHEMA,\n effect,\n ElementRef,\n input,\n model,\n viewChild,\n} from '@angular/core'\nimport '@digdir/designsystemet-web'\nimport {\n HostColor,\n HostSize,\n} from '@ks-digital/designsystem-angular/__internals'\nimport { SuggestionList } from './suggestion-list'\nimport type {\n SuggestionFilter,\n SuggestionFilterArgs,\n SuggestionItem,\n} from './suggestion.types'\nimport { nextSelected, sanitizeItems } from './suggestion.utils'\n\nconst defaultFilter = ({ label, input }: SuggestionFilterArgs) =>\n label.toLowerCase().includes(input.value.trim().toLowerCase())\n\n@Component({\n selector: 'ksd-suggestion',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: HostSize,\n inputs: ['data-size'],\n },\n {\n directive: HostColor,\n inputs: ['data-color'],\n },\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n host: {},\n template: `\n <ds-suggestion\n #suggestionElement\n class=\"ds-suggestion\"\n [attr.data-multiple]=\"multiple() || undefined\"\n [attr.data-creatable]=\"creatable() || undefined\"\n (comboboxbeforeselect)=\"onSelect($event)\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n >\n @for (option of selectedArray(); track option.value) {\n <data [attr.value]=\"option.value\">{{ option.label }}</data>\n }\n <ng-content />\n </ds-suggestion>\n `,\n})\nexport class Suggestion {\n /**\n * Allows the user to select multiple items\n *\n * @default false\n */\n multiple = input(false, { transform: booleanAttribute })\n\n /**\n * Allows the user to create new items\n *\n * @default false\n */\n creatable = input(false, { transform: booleanAttribute })\n\n /**\n * Filter options; boolean or a custom callback.\n *\n * @default true\n */\n filter = input<boolean | SuggestionFilter>(true)\n\n /**\n * Model for the selected item(s).\n *\n * @default undefined\n */\n selected = model<SuggestionItem | SuggestionItem[] | undefined>(undefined)\n\n protected selectedArray = computed(() => sanitizeItems(this.selected()))\n private readonly suggestionElement =\n viewChild<ElementRef<HTMLElement>>('suggestionElement')\n private readonly suggestionList = contentChild(SuggestionList)\n\n constructor() {\n afterNextRender(() => this.syncOptions(null))\n\n effect(() => {\n this.suggestionList()?.options()\n queueMicrotask(() => this.syncOptions(null))\n })\n }\n\n protected onSelect(event: Event) {\n const customEvent = event as CustomEvent<HTMLDataElement | undefined>\n customEvent.preventDefault()\n\n const data = customEvent.detail\n if (!data) return\n\n this.selected.set(nextSelected(data, this.selected(), this.multiple()))\n }\n\n protected onKeyDown(event: Event) {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key !== 'Escape') return\n\n event.preventDefault()\n }\n\n protected onInput(event: Event) {\n const inputElement = event.target as HTMLInputElement | null\n setTimeout(() => this.syncOptions(inputElement))\n }\n\n private syncOptions(inputElement: HTMLInputElement | null) {\n const suggestionElement = this.suggestionElement()?.nativeElement\n if (!suggestionElement) return\n\n const input =\n inputElement ?? suggestionElement.querySelector<HTMLInputElement>('input')\n\n const options = Array.from(\n suggestionElement.querySelectorAll<HTMLOptionElement>(\n 'u-option:not([data-empty])',\n ),\n )\n\n const filter = this.filter()\n const filterFn = filter === true ? defaultFilter : filter\n\n if (filterFn && input) {\n let index = 0\n for (const option of options) {\n option.disabled = !filterFn({\n index,\n input,\n label: option.label,\n optionElement: option,\n text: option.text,\n value: option.value,\n })\n index++\n }\n } else {\n for (const option of options) {\n option.disabled = false\n }\n }\n\n const visibleOptions = options.filter(\n (option) => !option.disabled && !option.hidden,\n )\n const emptyOption = suggestionElement.querySelector<HTMLOptionElement>(\n 'u-option[data-empty]',\n )\n\n if (!emptyOption) return\n\n if (visibleOptions.length === 0) {\n emptyOption.removeAttribute('hidden')\n return\n }\n\n emptyOption.setAttribute('hidden', '')\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ks-digital-designsystem-angular-suggestion.mjs","sources":["../../../../packages/angular/suggestion/src/suggestion-list-empty.ts","../../../../packages/angular/suggestion/src/suggestion-list-option.ts","../../../../packages/angular/suggestion/src/suggestion-list.ts","../../../../packages/angular/suggestion/src/suggestion.utils.ts","../../../../packages/angular/suggestion/src/suggestion.ts","../../../../packages/angular/suggestion/src/ks-digital-designsystem-angular-suggestion.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n viewChild,\n} from '@angular/core'\n\n@Component({\n selector: 'ksd-suggestion-list-empty',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ` <ng-template #tpl><ng-content /></ng-template> `,\n})\nexport class SuggestionListEmpty {\n /**\n * Hack to get the content from parent component so that we can\n * keep the dom structure needed without additional host elements\n */\n templateRef = viewChild<TemplateRef<unknown>>('tpl')\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n input,\n TemplateRef,\n viewChild,\n} from '@angular/core'\n\n@Component({\n selector: 'ksd-suggestion-list-option',\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [],\n template: ` <ng-template #tpl><ng-content /></ng-template> `,\n})\nexport class SuggestionListOption {\n /**\n * Hack to get the content from parent component so that we can\n * keep the dom structure needed without additional host elements\n */\n templateRef = viewChild<TemplateRef<unknown>>('tpl')\n\n value = input.required<string>()\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n contentChildren,\n CUSTOM_ELEMENTS_SCHEMA,\n input,\n} from '@angular/core'\nimport { SuggestionListEmpty } from './suggestion-list-empty'\nimport { SuggestionListOption } from './suggestion-list-option'\n\n@Component({\n selector: 'ksd-suggestion-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n host: {\n style: 'display: none;',\n },\n template: ``,\n})\nexport class SuggestionList {\n /**\n * Screen reader announcement template for singular result count.\n *\n * @default '%d forslag'\n */\n readonly singular = input('%d forslag')\n\n /**\n * Screen reader announcement template for plural result count.\n *\n * @default '%d forslag'\n */\n readonly plural = input('%d forslag')\n\n readonly options = contentChildren(SuggestionListOption, {\n descendants: true,\n })\n\n readonly empty = contentChild(SuggestionListEmpty)\n}\n","import type { SuggestionItem, SuggestionModelValue } from './suggestion.types'\n\nexport const sanitizeItems = (\n values: SuggestionModelValue,\n): SuggestionItem[] =>\n !values ? [] : Array.isArray(values) ? values : [values]\n\nconst toItem = (data: HTMLDataElement): SuggestionItem => ({\n label: data.textContent?.trim() || data.value,\n value: data.value,\n})\n\nexport const nextSelected = (\n data: HTMLDataElement,\n previous: SuggestionModelValue,\n multiple: boolean,\n): SuggestionItem | SuggestionItem[] | undefined => {\n const item = toItem(data)\n\n if (!multiple) {\n return data.isConnected ? undefined : item\n }\n\n const prevItems = sanitizeItems(previous)\n return data.isConnected\n ? prevItems.filter(({ value }) => value !== item.value)\n : [...prevItems, item]\n}\n","import { NgTemplateOutlet } from '@angular/common'\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n CUSTOM_ELEMENTS_SCHEMA,\n effect,\n ElementRef,\n input,\n model,\n viewChild,\n} from '@angular/core'\nimport '@digdir/designsystemet-web'\nimport {\n HostColor,\n HostSize,\n} from '@ks-digital/designsystem-angular/__internals'\nimport { SuggestionList } from './suggestion-list'\nimport type {\n SuggestionFilter,\n SuggestionFilterArgs,\n SuggestionItem,\n} from './suggestion.types'\nimport { nextSelected, sanitizeItems } from './suggestion.utils'\n\nconst defaultFilter = ({ label, input }: SuggestionFilterArgs) =>\n label.toLowerCase().includes(input.value.trim().toLowerCase())\n\n@Component({\n selector: 'ksd-suggestion',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: HostSize,\n inputs: ['data-size'],\n },\n {\n directive: HostColor,\n inputs: ['data-color'],\n },\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [NgTemplateOutlet],\n host: {},\n template: `\n <ds-suggestion\n #suggestionElement\n class=\"ds-suggestion\"\n [attr.data-multiple]=\"multiple() || undefined\"\n [attr.data-creatable]=\"creatable() || undefined\"\n (comboboxbeforeselect)=\"onSelect($event)\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n >\n @for (option of selectedArray(); track option.value) {\n <data [attr.value]=\"option.value\">{{ option.label }}</data>\n }\n <ng-content />\n <u-datalist\n popover=\"manual\"\n data-is-floating=\"true\"\n data-nofilter\n [attr.data-sr-singular]=\"suggestionList()?.singular()\"\n [attr.data-sr-plural]=\"suggestionList()?.plural()\"\n >\n @for (option of suggestionList()?.options() ?? []; track option) {\n <u-option [value]=\"option.value()\">\n <ng-container *ngTemplateOutlet=\"option.templateRef()\" />\n </u-option>\n }\n @if (suggestionList()?.empty()?.templateRef(); as emptyTpl) {\n <u-option data-empty value=\"\" hidden>\n <ng-container *ngTemplateOutlet=\"emptyTpl\" />\n </u-option>\n }\n </u-datalist>\n </ds-suggestion>\n `,\n})\nexport class Suggestion {\n /**\n * Allows the user to select multiple items\n *\n * @default false\n */\n multiple = input(false, { transform: booleanAttribute })\n\n /**\n * Allows the user to create new items\n *\n * @default false\n */\n creatable = input(false, { transform: booleanAttribute })\n\n /**\n * Filter options; boolean or a custom callback.\n *\n * @default true\n */\n filter = input<boolean | SuggestionFilter>(true)\n\n /**\n * Model for the selected item(s).\n *\n * @default undefined\n */\n selected = model<SuggestionItem | SuggestionItem[] | undefined>(undefined)\n\n protected selectedArray = computed(() => sanitizeItems(this.selected()))\n private readonly suggestionElement =\n viewChild<ElementRef<HTMLElement>>('suggestionElement')\n protected readonly suggestionList = contentChild(SuggestionList)\n\n constructor() {\n afterNextRender(() => this.syncOptions(null))\n\n effect(() => {\n this.suggestionList()?.options()\n queueMicrotask(() => this.syncOptions(null))\n })\n }\n\n protected onSelect(event: Event) {\n const customEvent = event as CustomEvent<HTMLDataElement | undefined>\n customEvent.preventDefault()\n\n const data = customEvent.detail\n if (!data) return\n\n this.selected.set(nextSelected(data, this.selected(), this.multiple()))\n }\n\n protected onKeyDown(event: Event) {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key !== 'Escape') return\n\n event.preventDefault()\n }\n\n protected onInput(event: Event) {\n const inputElement = event.target as HTMLInputElement | null\n setTimeout(() => this.syncOptions(inputElement))\n }\n\n private syncOptions(inputElement: HTMLInputElement | null) {\n const suggestionElement = this.suggestionElement()?.nativeElement\n if (!suggestionElement) return\n\n const input =\n inputElement ?? suggestionElement.querySelector<HTMLInputElement>('input')\n\n const options = Array.from(\n suggestionElement.querySelectorAll<HTMLOptionElement>(\n 'u-option:not([data-empty])',\n ),\n )\n\n const filter = this.filter()\n const filterFn = filter === true ? defaultFilter : filter\n\n if (filterFn && input) {\n let index = 0\n for (const option of options) {\n option.disabled = !filterFn({\n index,\n input,\n label: option.label,\n optionElement: option,\n text: option.text,\n value: option.value,\n })\n index++\n }\n } else {\n for (const option of options) {\n option.disabled = false\n }\n }\n\n const visibleOptions = options.filter(\n (option) => !option.disabled && !option.hidden,\n )\n const emptyOption = suggestionElement.querySelector<HTMLOptionElement>(\n 'u-option[data-empty]',\n )\n\n if (!emptyOption) return\n\n if (visibleOptions.length === 0) {\n emptyOption.removeAttribute('hidden')\n return\n }\n\n emptyOption.setAttribute('hidden', '')\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -10,6 +10,7 @@ declare class Spinner {
|
|
|
10
10
|
* Aria-hidden for the spinner
|
|
11
11
|
*/
|
|
12
12
|
readonly ariaHidden: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
|
|
13
|
+
constructor();
|
|
13
14
|
/**
|
|
14
15
|
* Changes size for descendant Designsystemet components. Select from predefined sizes.
|
|
15
16
|
* @attribute data-size
|
|
@@ -2,6 +2,46 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import { TemplateRef } from '@angular/core';
|
|
3
3
|
import * as i1 from '@ks-digital/designsystem-angular/__internals';
|
|
4
4
|
|
|
5
|
+
declare class SuggestionListEmpty {
|
|
6
|
+
/**
|
|
7
|
+
* Hack to get the content from parent component so that we can
|
|
8
|
+
* keep the dom structure needed without additional host elements
|
|
9
|
+
*/
|
|
10
|
+
templateRef: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
11
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuggestionListEmpty, never>;
|
|
12
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuggestionListEmpty, "ksd-suggestion-list-empty", never, {}, {}, never, ["*"], true, never>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
declare class SuggestionListOption {
|
|
16
|
+
/**
|
|
17
|
+
* Hack to get the content from parent component so that we can
|
|
18
|
+
* keep the dom structure needed without additional host elements
|
|
19
|
+
*/
|
|
20
|
+
templateRef: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
21
|
+
value: _angular_core.InputSignal<string>;
|
|
22
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuggestionListOption, never>;
|
|
23
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuggestionListOption, "ksd-suggestion-list-option", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
declare class SuggestionList {
|
|
27
|
+
/**
|
|
28
|
+
* Screen reader announcement template for singular result count.
|
|
29
|
+
*
|
|
30
|
+
* @default '%d forslag'
|
|
31
|
+
*/
|
|
32
|
+
readonly singular: _angular_core.InputSignal<string>;
|
|
33
|
+
/**
|
|
34
|
+
* Screen reader announcement template for plural result count.
|
|
35
|
+
*
|
|
36
|
+
* @default '%d forslag'
|
|
37
|
+
*/
|
|
38
|
+
readonly plural: _angular_core.InputSignal<string>;
|
|
39
|
+
readonly options: _angular_core.Signal<readonly SuggestionListOption[]>;
|
|
40
|
+
readonly empty: _angular_core.Signal<SuggestionListEmpty | undefined>;
|
|
41
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuggestionList, never>;
|
|
42
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuggestionList, "ksd-suggestion-list", never, { "singular": { "alias": "singular"; "required": false; "isSignal": true; }; "plural": { "alias": "plural"; "required": false; "isSignal": true; }; }, {}, ["options", "empty"], never, true, never>;
|
|
43
|
+
}
|
|
44
|
+
|
|
5
45
|
type SuggestionItem = {
|
|
6
46
|
label: string;
|
|
7
47
|
value: string;
|
|
@@ -43,7 +83,7 @@ declare class Suggestion {
|
|
|
43
83
|
selected: _angular_core.ModelSignal<SuggestionItem | SuggestionItem[] | undefined>;
|
|
44
84
|
protected selectedArray: _angular_core.Signal<SuggestionItem[]>;
|
|
45
85
|
private readonly suggestionElement;
|
|
46
|
-
|
|
86
|
+
protected readonly suggestionList: _angular_core.Signal<SuggestionList | undefined>;
|
|
47
87
|
constructor();
|
|
48
88
|
protected onSelect(event: Event): void;
|
|
49
89
|
protected onKeyDown(event: Event): void;
|
|
@@ -53,45 +93,5 @@ declare class Suggestion {
|
|
|
53
93
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Suggestion, "ksd-suggestion", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "creatable": { "alias": "creatable"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; }, ["suggestionList"], ["*"], true, [{ directive: typeof i1.HostSize; inputs: { "data-size": "data-size"; }; outputs: {}; }, { directive: typeof i1.HostColor; inputs: { "data-color": "data-color"; }; outputs: {}; }]>;
|
|
54
94
|
}
|
|
55
95
|
|
|
56
|
-
declare class SuggestionListEmpty {
|
|
57
|
-
/**
|
|
58
|
-
* Hack to get the content from parent component so that we can
|
|
59
|
-
* keep the dom structure needed without additional host elements
|
|
60
|
-
*/
|
|
61
|
-
templateRef: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
62
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuggestionListEmpty, never>;
|
|
63
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuggestionListEmpty, "ksd-suggestion-list-empty", never, {}, {}, never, ["*"], true, never>;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
declare class SuggestionListOption {
|
|
67
|
-
/**
|
|
68
|
-
* Hack to get the content from parent component so that we can
|
|
69
|
-
* keep the dom structure needed without additional host elements
|
|
70
|
-
*/
|
|
71
|
-
templateRef: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
72
|
-
value: _angular_core.InputSignal<string>;
|
|
73
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuggestionListOption, never>;
|
|
74
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuggestionListOption, "ksd-suggestion-list-option", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
declare class SuggestionList {
|
|
78
|
-
/**
|
|
79
|
-
* Screen reader announcement template for singular result count.
|
|
80
|
-
*
|
|
81
|
-
* @default '%d forslag'
|
|
82
|
-
*/
|
|
83
|
-
readonly singular: _angular_core.InputSignal<string>;
|
|
84
|
-
/**
|
|
85
|
-
* Screen reader announcement template for plural result count.
|
|
86
|
-
*
|
|
87
|
-
* @default '%d forslag'
|
|
88
|
-
*/
|
|
89
|
-
readonly plural: _angular_core.InputSignal<string>;
|
|
90
|
-
readonly options: _angular_core.Signal<readonly SuggestionListOption[]>;
|
|
91
|
-
protected readonly empty: _angular_core.Signal<SuggestionListEmpty | undefined>;
|
|
92
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuggestionList, never>;
|
|
93
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuggestionList, "ksd-suggestion-list", never, { "singular": { "alias": "singular"; "required": false; "isSignal": true; }; "plural": { "alias": "plural"; "required": false; "isSignal": true; }; }, {}, ["options", "empty"], never, true, never>;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
96
|
export { Suggestion, SuggestionList, SuggestionListEmpty, SuggestionListOption };
|
|
97
97
|
export type { SuggestionFilter, SuggestionFilterArgs, SuggestionItem };
|