@ndwnu/design-system 3.0.1 → 4.0.0
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/components/alert/alert.component.d.ts +2 -5
- package/components/alert/alert.model.d.ts +0 -1
- package/components/banner/banner.component.d.ts +38 -0
- package/components/banner/banner.model.d.ts +4 -0
- package/components/banner/index.d.ts +2 -0
- package/components/breadcrumb-group/breadcrumb-group.component.d.ts +1 -1
- package/components/collapsible/collapsible.component.d.ts +0 -1
- package/components/dropdown/dropdown.component.d.ts +4 -4
- package/components/form-field/autosuggest/autosuggest-highlight.pipe.d.ts +7 -0
- package/components/form-field/autosuggest/autosuggest-item/autosuggest-item.component.d.ts +15 -0
- package/components/form-field/autosuggest/autosuggest-trigger.directive.d.ts +35 -0
- package/components/form-field/autosuggest/autosuggest.component.d.ts +30 -0
- package/components/form-field/autosuggest/autosuggest.model.d.ts +1 -0
- package/components/form-field/autosuggest/autosuggest.utils.d.ts +2 -0
- package/components/form-field/autosuggest/index.d.ts +5 -0
- package/components/form-field/checkbox/checkbox.component.d.ts +0 -3
- package/components/form-field/file-upload/file-upload.component.d.ts +4 -11
- package/components/form-field/form-field.component.d.ts +1 -0
- package/components/form-field/index.d.ts +1 -0
- package/components/form-field/radio-button/radio-button.component.d.ts +0 -2
- package/components/form-field/radio-group/radio-group.component.d.ts +0 -1
- package/components/index.d.ts +5 -1
- package/components/layout/index.d.ts +1 -0
- package/components/layout/layout.component.d.ts +11 -0
- package/components/layout-banners/index.d.ts +1 -0
- package/components/layout-banners/layout-banners.component.d.ts +5 -0
- package/components/loader/index.d.ts +1 -0
- package/components/loader/loader.component.d.ts +5 -0
- package/components/main-navigation/main-navigation.component.d.ts +0 -3
- package/components/main-navigation/main-navigation.imports.d.ts +1 -1
- package/components/modal/modal-trigger.directive.d.ts +3 -2
- package/components/modal/modal.component.d.ts +0 -3
- package/components/modal/modal.service.d.ts +1 -0
- package/components/pill/pill.component.d.ts +1 -3
- package/components/tab/tab.component.d.ts +0 -3
- package/components/tab-group/tab-group.component.d.ts +1 -2
- package/components/tag/index.d.ts +1 -0
- package/components/tag/tag.component.d.ts +18 -0
- package/core/styles/ndw-styles.scss +13 -1
- package/core/styles/nwb-styles.scss +13 -1
- package/esm2022/components/accordion/accordion.component.mjs +6 -6
- package/esm2022/components/alert/alert.component.mjs +10 -27
- package/esm2022/components/alert/alert.model.mjs +1 -1
- package/esm2022/components/badge/badge.component.mjs +4 -4
- package/esm2022/components/banner/banner.component.mjs +61 -0
- package/esm2022/components/banner/banner.model.mjs +6 -0
- package/esm2022/components/banner/index.mjs +3 -0
- package/esm2022/components/breadcrumb/breadcrumb.component.mjs +4 -4
- package/esm2022/components/breadcrumb-group/breadcrumb-group.component.mjs +8 -8
- package/esm2022/components/card/card-content/card-content.component.mjs +4 -4
- package/esm2022/components/card/card-footer/card-footer.component.mjs +4 -4
- package/esm2022/components/card/card-header/card-header.component.mjs +4 -5
- package/esm2022/components/card/card.component.mjs +4 -4
- package/esm2022/components/collapsible/collapsible.component.mjs +7 -12
- package/esm2022/components/dropdown/dropdown.component.mjs +9 -16
- package/esm2022/components/form-field/autosuggest/autosuggest-highlight.pipe.mjs +21 -0
- package/esm2022/components/form-field/autosuggest/autosuggest-item/autosuggest-item.component.mjs +34 -0
- package/esm2022/components/form-field/autosuggest/autosuggest-trigger.directive.mjs +160 -0
- package/esm2022/components/form-field/autosuggest/autosuggest.component.mjs +82 -0
- package/esm2022/components/form-field/autosuggest/autosuggest.model.mjs +2 -0
- package/esm2022/components/form-field/autosuggest/autosuggest.utils.mjs +13 -0
- package/esm2022/components/form-field/autosuggest/index.mjs +6 -0
- package/esm2022/components/form-field/checkbox/checkbox.component.mjs +11 -25
- package/esm2022/components/form-field/checkbox-group/checkbox-group.component.mjs +4 -4
- package/esm2022/components/form-field/error/error.component.mjs +4 -4
- package/esm2022/components/form-field/file-upload/file-upload.component.mjs +46 -91
- package/esm2022/components/form-field/form-field.component.mjs +13 -6
- package/esm2022/components/form-field/index.mjs +2 -1
- package/esm2022/components/form-field/info/info.component.mjs +4 -4
- package/esm2022/components/form-field/month-input/month-input.component.mjs +5 -6
- package/esm2022/components/form-field/option-group/option-group.component.mjs +4 -4
- package/esm2022/components/form-field/option-group/option.component.mjs +2 -3
- package/esm2022/components/form-field/radio-button/radio-button.component.mjs +10 -20
- package/esm2022/components/form-field/radio-group/radio-group.component.mjs +9 -11
- package/esm2022/components/form-field/success/success.component.mjs +4 -4
- package/esm2022/components/icon/action-icon/action-icon.component.mjs +2 -2
- package/esm2022/components/icon/icon.component.mjs +4 -4
- package/esm2022/components/index.mjs +6 -2
- package/esm2022/components/layout/index.mjs +2 -0
- package/esm2022/components/layout/layout.component.mjs +20 -0
- package/esm2022/components/layout-banners/index.mjs +2 -0
- package/esm2022/components/layout-banners/layout-banners.component.mjs +11 -0
- package/esm2022/components/loader/index.mjs +2 -0
- package/esm2022/components/loader/loader.component.mjs +11 -0
- package/esm2022/components/main-navigation/main-navigation.component.mjs +11 -29
- package/esm2022/components/main-navigation-menu/main-navigation-menu.component.mjs +4 -4
- package/esm2022/components/modal/modal-content/modal-content.component.mjs +4 -4
- package/esm2022/components/modal/modal-footer/modal-footer.component.mjs +4 -4
- package/esm2022/components/modal/modal-header/modal-header.component.mjs +4 -4
- package/esm2022/components/modal/modal-trigger.directive.mjs +12 -7
- package/esm2022/components/modal/modal.component.mjs +9 -21
- package/esm2022/components/modal/modal.service.mjs +12 -2
- package/esm2022/components/multi-select/multi-select.component.mjs +8 -10
- package/esm2022/components/pill/pill.component.mjs +10 -18
- package/esm2022/components/popover/popover-trigger.directive.mjs +6 -6
- package/esm2022/components/router-breadcrumbs/router-breadcrumbs.component.mjs +4 -4
- package/esm2022/components/tab/tab.component.mjs +11 -27
- package/esm2022/components/tab-group/tab-group.component.mjs +8 -10
- package/esm2022/components/tag/index.mjs +2 -0
- package/esm2022/components/tag/tag.component.mjs +29 -0
- package/esm2022/components/toast/toast.component.mjs +4 -4
- package/esm2022/components/toast/toast.service.mjs +1 -1
- package/esm2022/components/tooltip/tooltip.component.mjs +5 -5
- package/esm2022/components/tooltip/tooltip.directive.mjs +8 -14
- package/esm2022/models/aria.model.mjs +2 -0
- package/esm2022/models/index.mjs +2 -0
- package/fesm2022/ndwnu-design-system.mjs +643 -392
- package/fesm2022/ndwnu-design-system.mjs.map +1 -1
- package/models/aria.model.d.ts +1 -0
- package/models/index.d.ts +1 -0
- package/package.json +1 -1
- package/components/removable-pill/index.d.ts +0 -1
- package/components/removable-pill/removable-pill.component.d.ts +0 -14
- package/esm2022/components/removable-pill/index.mjs +0 -2
- package/esm2022/components/removable-pill/removable-pill.component.mjs +0 -23
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Component, HostBinding, computed, inject, input, model } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';
|
|
3
2
|
import { AccordionService } from '../accordion';
|
|
4
3
|
import { BadgeComponent } from '../badge';
|
|
5
4
|
import { IconComponent } from '../icon';
|
|
@@ -17,9 +16,6 @@ export class CollapsibleComponent {
|
|
|
17
16
|
this.sectionUuid = `section-${this.uuid}`;
|
|
18
17
|
this.animationState = computed(() => (this.expanded() ? 'open' : 'closed'));
|
|
19
18
|
}
|
|
20
|
-
get expandedClass() {
|
|
21
|
-
return this.expanded();
|
|
22
|
-
}
|
|
23
19
|
toggle() {
|
|
24
20
|
this.expanded.set(!this.expanded());
|
|
25
21
|
if (this.expanded()) {
|
|
@@ -27,13 +23,12 @@ export class CollapsibleComponent {
|
|
|
27
23
|
}
|
|
28
24
|
}
|
|
29
25
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CollapsibleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: CollapsibleComponent, isStandalone: true, selector: "ndw-collapsible", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "class.expanded": "
|
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: CollapsibleComponent, isStandalone: true, selector: "ndw-collapsible", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "class.expanded": "expanded()" } }, ngImport: i0, template: "<div class=\"collapsible\">\n <h3 class=\"collapsible__header\">\n <button\n class=\"collapsible__button\"\n type=\"button\"\n [id]=\"toggleUuid\"\n [attr.aria-controls]=\"sectionUuid\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggle()\"\n >\n {{ title() }}\n\n @if (value(); as value) {\n <ndw-badge [value]=\"value\" />\n }\n\n <ndw-icon>keyboard_arrow_down</ndw-icon>\n </button>\n </h3>\n\n <section\n role=\"region\"\n class=\"collapsible__section\"\n [id]=\"sectionUuid\"\n [attr.aria-labelledby]=\"toggleUuid\"\n [@collapsible]=\"animationState()\"\n >\n <ng-content />\n </section>\n</div>\n", styles: [".collapsible{display:block;border-bottom:var(--ndw-border-size-sm) solid var(--ndw-color-grey-200)}.collapsible__header{margin:0}.collapsible__button{overflow:hidden;display:flex;gap:var(--ndw-spacing-xs);justify-content:space-between;align-items:center;padding:0;width:100%;padding-block:var(--ndw-spacing-md);border:none;font-size:var(--ndw-font-size-sm);font-family:var(--ndw-font-family-body);font-weight:var(--ndw-font-weight-bold);word-break:break-word;cursor:pointer;background-color:transparent;transition:color var(--ndw-animation-speed-fast) ease-in-out}.collapsible__button:hover{color:var(--ndw-color-primary)}.collapsible__button:focus-visible{box-shadow:var(--ndw-elevation-info);outline:none;color:var(--ndw-color-primary)}.collapsible__button ndw-icon{margin-left:auto;color:var(--ndw-color-primary);transition:transform var(--ndw-animation-speed-fast) ease-in-out;font-size:var(--ndw-spacing-lg)}.collapsible__section{display:none;height:fit-content;margin-block:0;overflow:hidden;transition:height var(--ndw-animation-speed-fast) ease-in-out}:host(.expanded) .collapsible__header ndw-icon{transform:rotate(-180deg)}:host(.expanded) .collapsible__section{display:block;margin-block:var(--ndw-spacing-sm) var(--ndw-spacing-md)}\n"], dependencies: [{ kind: "component", type: BadgeComponent, selector: "ndw-badge", inputs: ["value", "ariaLabel"] }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }], animations: [collapsibleAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31
27
|
}
|
|
32
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CollapsibleComponent, decorators: [{
|
|
33
29
|
type: Component,
|
|
34
|
-
args: [{
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2NvbGxhcHNpYmxlL2NvbGxhcHNpYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9jb2xsYXBzaWJsZS9jb2xsYXBzaWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFeEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBVS9ELE1BQU0sT0FBTyxvQkFBb0I7SUFSakM7UUFTUyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2pDLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDakMsVUFBSyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBRXhCLGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFZCxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU1QyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBRyxVQUFVLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxnQkFBVyxHQUFHLFdBQVcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBTzlDLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7S0FTL0U7SUFkQyxJQUNXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUlNLE1BQU07UUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDOzhHQTFCVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix5cUJDakJqQywyckJBOEJBLGl3Q0RsQlksY0FBYyxzRkFBRSxhQUFhLHlEQUczQixDQUFDLG9CQUFvQixDQUFDOzsyRkFFdkIsb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLGNBR3JDLENBQUMsb0JBQW9CLENBQUM7OEJBZ0J2QixhQUFhO3NCQUR2QixXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFjY29yZGlvblNlcnZpY2UgfSBmcm9tICcuLi9hY2NvcmRpb24nO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi9iYWRnZSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbic7XG5cbmltcG9ydCB7IGNvbGxhcHNpYmxlQW5pbWF0aW9uIH0gZnJvbSAnLi9jb2xsYXBzaWJsZS5hbmltYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZHctY29sbGFwc2libGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQmFkZ2VDb21wb25lbnQsIEljb25Db21wb25lbnQsIE5nQ2xhc3NdLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sbGFwc2libGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29sbGFwc2libGUuY29tcG9uZW50LnNjc3MnLFxuICBhbmltYXRpb25zOiBbY29sbGFwc2libGVBbmltYXRpb25dLFxufSlcbmV4cG9ydCBjbGFzcyBDb2xsYXBzaWJsZUNvbXBvbmVudCB7XG4gIHB1YmxpYyBpbmRleCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgcHVibGljIHRpdGxlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBwdWJsaWMgdmFsdWUgPSBpbnB1dDxudW1iZXI+KCk7XG5cbiAgcHVibGljIGV4cGFuZGVkID0gbW9kZWwoZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWNjb3JkaW9uU2VydmljZSA9IGluamVjdChBY2NvcmRpb25TZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHV1aWQgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9nZ2xlVXVpZCA9IGB0b2dnbGUtJHt0aGlzLnV1aWR9YDtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3Rpb25VdWlkID0gYHNlY3Rpb24tJHt0aGlzLnV1aWR9YDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmV4cGFuZGVkJylcbiAgcHVibGljIGdldCBleHBhbmRlZENsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGVkKCk7XG4gIH1cblxuICBwdWJsaWMgYW5pbWF0aW9uU3RhdGUgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5leHBhbmRlZCgpID8gJ29wZW4nIDogJ2Nsb3NlZCcpKTtcblxuICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KCF0aGlzLmV4cGFuZGVkKCkpO1xuXG4gICAgaWYgKHRoaXMuZXhwYW5kZWQoKSkge1xuICAgICAgdGhpcy5hY2NvcmRpb25TZXJ2aWNlLnNldEV4cGFuZGVkQ29sbGFwc2libGUodGhpcy5pbmRleCgpKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2xsYXBzaWJsZVwiPlxuICA8aDMgY2xhc3M9XCJjb2xsYXBzaWJsZV9faGVhZGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJjb2xsYXBzaWJsZV9fYnV0dG9uXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2lkXT1cInRvZ2dsZVV1aWRcIlxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJzZWN0aW9uVXVpZFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImV4cGFuZGVkKClcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICA+XG4gICAgICB7eyB0aXRsZSgpIH19XG5cbiAgICAgIEBpZiAodmFsdWUoKTsgYXMgdmFsdWUpIHtcbiAgICAgICAgPG5kdy1iYWRnZSBbdmFsdWVdPVwidmFsdWVcIiAvPlxuICAgICAgfVxuXG4gICAgICA8bmR3LWljb24+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbmR3LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvaDM+XG5cbiAgPHNlY3Rpb25cbiAgICByb2xlPVwicmVnaW9uXCJcbiAgICBjbGFzcz1cImNvbGxhcHNpYmxlX19zZWN0aW9uXCJcbiAgICBbaWRdPVwic2VjdGlvblV1aWRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0b2dnbGVVdWlkXCJcbiAgICBbQGNvbGxhcHNpYmxlXT1cImFuaW1hdGlvblN0YXRlKClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
|
|
30
|
+
args: [{ animations: [collapsibleAnimation], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
31
|
+
'[class.expanded]': 'expanded()',
|
|
32
|
+
}, imports: [BadgeComponent, IconComponent], selector: 'ndw-collapsible', standalone: true, template: "<div class=\"collapsible\">\n <h3 class=\"collapsible__header\">\n <button\n class=\"collapsible__button\"\n type=\"button\"\n [id]=\"toggleUuid\"\n [attr.aria-controls]=\"sectionUuid\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggle()\"\n >\n {{ title() }}\n\n @if (value(); as value) {\n <ndw-badge [value]=\"value\" />\n }\n\n <ndw-icon>keyboard_arrow_down</ndw-icon>\n </button>\n </h3>\n\n <section\n role=\"region\"\n class=\"collapsible__section\"\n [id]=\"sectionUuid\"\n [attr.aria-labelledby]=\"toggleUuid\"\n [@collapsible]=\"animationState()\"\n >\n <ng-content />\n </section>\n</div>\n", styles: [".collapsible{display:block;border-bottom:var(--ndw-border-size-sm) solid var(--ndw-color-grey-200)}.collapsible__header{margin:0}.collapsible__button{overflow:hidden;display:flex;gap:var(--ndw-spacing-xs);justify-content:space-between;align-items:center;padding:0;width:100%;padding-block:var(--ndw-spacing-md);border:none;font-size:var(--ndw-font-size-sm);font-family:var(--ndw-font-family-body);font-weight:var(--ndw-font-weight-bold);word-break:break-word;cursor:pointer;background-color:transparent;transition:color var(--ndw-animation-speed-fast) ease-in-out}.collapsible__button:hover{color:var(--ndw-color-primary)}.collapsible__button:focus-visible{box-shadow:var(--ndw-elevation-info);outline:none;color:var(--ndw-color-primary)}.collapsible__button ndw-icon{margin-left:auto;color:var(--ndw-color-primary);transition:transform var(--ndw-animation-speed-fast) ease-in-out;font-size:var(--ndw-spacing-lg)}.collapsible__section{display:none;height:fit-content;margin-block:0;overflow:hidden;transition:height var(--ndw-animation-speed-fast) ease-in-out}:host(.expanded) .collapsible__header ndw-icon{transform:rotate(-180deg)}:host(.expanded) .collapsible__section{display:block;margin-block:var(--ndw-spacing-sm) var(--ndw-spacing-md)}\n"] }]
|
|
33
|
+
}] });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2NvbGxhcHNpYmxlL2NvbGxhcHNpYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9jb2xsYXBzaWJsZS9jb2xsYXBzaWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQWMvRCxNQUFNLE9BQU8sb0JBQW9CO0lBWmpDO1FBYVMsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNqQyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2pDLFVBQUssR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUV4QixhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWQscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFNUMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQUcsVUFBVSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxXQUFXLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU5QyxtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0tBUy9FO0lBUFEsTUFBTTtRQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNILENBQUM7OEdBckJVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGlxQkNwQmpDLDJyQkE4QkEsdXhDRGhCWSxjQUFjLHNGQUFFLGFBQWEseURBTDNCLENBQUMsb0JBQW9CLENBQUM7OzJGQVd2QixvQkFBb0I7a0JBWmhDLFNBQVM7aUNBQ0ksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFDakIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixrQkFBa0IsRUFBRSxZQUFZO3FCQUNqQyxXQUNRLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxZQUM5QixpQkFBaUIsY0FDZixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFjY29yZGlvblNlcnZpY2UgfSBmcm9tICcuLi9hY2NvcmRpb24nO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi9iYWRnZSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbic7XG5cbmltcG9ydCB7IGNvbGxhcHNpYmxlQW5pbWF0aW9uIH0gZnJvbSAnLi9jb2xsYXBzaWJsZS5hbmltYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgYW5pbWF0aW9uczogW2NvbGxhcHNpYmxlQW5pbWF0aW9uXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmV4cGFuZGVkXSc6ICdleHBhbmRlZCgpJyxcbiAgfSxcbiAgaW1wb3J0czogW0JhZGdlQ29tcG9uZW50LCBJY29uQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICduZHctY29sbGFwc2libGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzdHlsZVVybDogJy4vY29sbGFwc2libGUuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sbGFwc2libGUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBDb2xsYXBzaWJsZUNvbXBvbmVudCB7XG4gIHB1YmxpYyBpbmRleCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgcHVibGljIHRpdGxlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBwdWJsaWMgdmFsdWUgPSBpbnB1dDxudW1iZXI+KCk7XG5cbiAgcHVibGljIGV4cGFuZGVkID0gbW9kZWwoZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWNjb3JkaW9uU2VydmljZSA9IGluamVjdChBY2NvcmRpb25TZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHV1aWQgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9nZ2xlVXVpZCA9IGB0b2dnbGUtJHt0aGlzLnV1aWR9YDtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3Rpb25VdWlkID0gYHNlY3Rpb24tJHt0aGlzLnV1aWR9YDtcblxuICBwdWJsaWMgYW5pbWF0aW9uU3RhdGUgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5leHBhbmRlZCgpID8gJ29wZW4nIDogJ2Nsb3NlZCcpKTtcblxuICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KCF0aGlzLmV4cGFuZGVkKCkpO1xuXG4gICAgaWYgKHRoaXMuZXhwYW5kZWQoKSkge1xuICAgICAgdGhpcy5hY2NvcmRpb25TZXJ2aWNlLnNldEV4cGFuZGVkQ29sbGFwc2libGUodGhpcy5pbmRleCgpKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2xsYXBzaWJsZVwiPlxuICA8aDMgY2xhc3M9XCJjb2xsYXBzaWJsZV9faGVhZGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJjb2xsYXBzaWJsZV9fYnV0dG9uXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2lkXT1cInRvZ2dsZVV1aWRcIlxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJzZWN0aW9uVXVpZFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImV4cGFuZGVkKClcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICA+XG4gICAgICB7eyB0aXRsZSgpIH19XG5cbiAgICAgIEBpZiAodmFsdWUoKTsgYXMgdmFsdWUpIHtcbiAgICAgICAgPG5kdy1iYWRnZSBbdmFsdWVdPVwidmFsdWVcIiAvPlxuICAgICAgfVxuXG4gICAgICA8bmR3LWljb24+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbmR3LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvaDM+XG5cbiAgPHNlY3Rpb25cbiAgICByb2xlPVwicmVnaW9uXCJcbiAgICBjbGFzcz1cImNvbGxhcHNpYmxlX19zZWN0aW9uXCJcbiAgICBbaWRdPVwic2VjdGlvblV1aWRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0b2dnbGVVdWlkXCJcbiAgICBbQGNvbGxhcHNpYmxlXT1cImFuaW1hdGlvblN0YXRlKClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
|
|
@@ -2,8 +2,7 @@ import { ChangeDetectionStrategy, Component, computed, input, output, viewChild,
|
|
|
2
2
|
import { ButtonDirective } from '../button';
|
|
3
3
|
import { IconComponent } from '../icon';
|
|
4
4
|
import { PopoverTriggerDirective } from '../popover';
|
|
5
|
-
import {
|
|
6
|
-
import { RemovablePillComponent } from '../removable-pill';
|
|
5
|
+
import { TagComponent } from '../tag';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
export class DropdownComponent {
|
|
9
8
|
constructor() {
|
|
@@ -12,15 +11,15 @@ export class DropdownComponent {
|
|
|
12
11
|
this.buttonText = input.required();
|
|
13
12
|
this.prefixIcon = input('');
|
|
14
13
|
this.selectAmount = input(0);
|
|
15
|
-
this.
|
|
14
|
+
this.tagClicked = output();
|
|
16
15
|
this.isOpenChange = output();
|
|
17
16
|
this.popoverTrigger = viewChild.required(PopoverTriggerDirective);
|
|
18
17
|
this.dropdownButton = viewChild.required('dropdownButton');
|
|
19
18
|
this.buttonIcon = computed(() => this.popoverTrigger().isOpen() ? 'keyboard_arrow_up' : 'keyboard_arrow_down');
|
|
20
19
|
}
|
|
21
|
-
|
|
20
|
+
onTagClicked($event) {
|
|
22
21
|
$event.stopPropagation();
|
|
23
|
-
this.
|
|
22
|
+
this.tagClicked.emit();
|
|
24
23
|
}
|
|
25
24
|
onKeyDown(event) {
|
|
26
25
|
if (event.key === 'Escape') {
|
|
@@ -34,13 +33,13 @@ export class DropdownComponent {
|
|
|
34
33
|
closeDropdown() {
|
|
35
34
|
this.dropdownButton().nativeElement.focus();
|
|
36
35
|
}
|
|
37
|
-
|
|
36
|
+
onTagKeyDown(event) {
|
|
38
37
|
if (event.key !== 'Enter' || this.disabled()) {
|
|
39
38
|
return;
|
|
40
39
|
}
|
|
41
40
|
event.stopPropagation();
|
|
42
41
|
event.preventDefault();
|
|
43
|
-
this.
|
|
42
|
+
this.tagClicked.emit();
|
|
44
43
|
setTimeout(() => {
|
|
45
44
|
this.dropdownButton().nativeElement.focus();
|
|
46
45
|
});
|
|
@@ -49,16 +48,10 @@ export class DropdownComponent {
|
|
|
49
48
|
this.isOpenChange.emit(isOpen);
|
|
50
49
|
}
|
|
51
50
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
52
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: DropdownComponent, isStandalone: true, selector: "ndw-dropdown", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, chevron: { classPropertyName: "chevron", publicName: "chevron", isSignal: true, isRequired: false, transformFunction: null }, buttonText: { classPropertyName: "buttonText", publicName: "buttonText", isSignal: true, isRequired: true, transformFunction: null }, prefixIcon: { classPropertyName: "prefixIcon", publicName: "prefixIcon", isSignal: true, isRequired: false, transformFunction: null }, selectAmount: { classPropertyName: "selectAmount", publicName: "selectAmount", isSignal: true, isRequired: false, transformFunction: null } }, outputs: {
|
|
51
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: DropdownComponent, isStandalone: true, selector: "ndw-dropdown", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, chevron: { classPropertyName: "chevron", publicName: "chevron", isSignal: true, isRequired: false, transformFunction: null }, buttonText: { classPropertyName: "buttonText", publicName: "buttonText", isSignal: true, isRequired: true, transformFunction: null }, prefixIcon: { classPropertyName: "prefixIcon", publicName: "prefixIcon", isSignal: true, isRequired: false, transformFunction: null }, selectAmount: { classPropertyName: "selectAmount", publicName: "selectAmount", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tagClicked: "tagClicked", isOpenChange: "isOpenChange" }, viewQueries: [{ propertyName: "popoverTrigger", first: true, predicate: PopoverTriggerDirective, descendants: true, isSignal: true }, { propertyName: "dropdownButton", first: true, predicate: ["dropdownButton"], descendants: true, isSignal: true }], ngImport: i0, template: "<button\n type=\"button\"\n #dropdownButton\n ndwButton\n filter\n [ndwPopoverTrigger]=\"dropdownContent\"\n (isOpenChange)=\"isOpenChanged($event)\"\n (keydown)=\"onKeyDown($event)\"\n [disabled]=\"disabled()\"\n aria-haspopup=\"dialog\"\n>\n @if (prefixIcon(); as prefixIconName) {\n <ndw-icon class=\"dropdown-prefix-icon\">{{ prefixIconName }}</ndw-icon>\n }\n\n {{ buttonText() }}\n\n @if (selectAmount()) {\n <ndw-tag\n [attr.disabled]=\"disabled() ? true : null\"\n (keydown)=\"onTagKeyDown($event)\"\n (onClick)=\"onTagClicked($event)\"\n >\n {{ selectAmount() }}\n </ndw-tag>\n }\n\n @if (chevron()) {\n <ndw-icon class=\"button-icon\">{{ buttonIcon() }}</ndw-icon>\n }\n</button>\n\n<ng-template #dropdownContent>\n <div role=\"dialog\" (keydown.escape)=\"closeDropdown()\">\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{display:inline-block}button{width:100%;display:flex;justify-content:space-between}.dropdown-prefix-icon{color:var(--ndw-color-grey-300)}\n"], dependencies: [{ kind: "directive", type: ButtonDirective, selector: "[ndwButton]" }, { kind: "directive", type: PopoverTriggerDirective, selector: "[ndwPopoverTrigger]", inputs: ["popoverPosition", "ndwPopoverTrigger", "toggleOnClick", "isOpen"], outputs: ["popoverToggled", "isOpenChange"], exportAs: ["ndwPopoverTrigger"] }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }, { kind: "component", type: TagComponent, selector: "ndw-tag", inputs: ["disabled", "suffixAriaLabel", "suffixIcon"], outputs: ["onClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
53
52
|
}
|
|
54
53
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
55
54
|
type: Component,
|
|
56
|
-
args: [{ selector: 'ndw-dropdown', standalone: true,
|
|
57
|
-
ButtonDirective,
|
|
58
|
-
PopoverTriggerDirective,
|
|
59
|
-
IconComponent,
|
|
60
|
-
CommonModule,
|
|
61
|
-
RemovablePillComponent,
|
|
62
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n #dropdownButton\n ndwButton\n filter\n [ndwPopoverTrigger]=\"dropdownContent\"\n (isOpenChange)=\"isOpenChanged($event)\"\n (keydown)=\"onKeyDown($event)\"\n [disabled]=\"disabled()\"\n aria-haspopup=\"dialog\"\n>\n @if (prefixIcon(); as prefixIconName) {\n <ndw-icon class=\"dropdown-prefix-icon\">{{ prefixIconName }}</ndw-icon>\n }\n\n {{ buttonText() }}\n\n @if (selectAmount()) {\n <ndw-removable-pill\n [attr.disabled]=\"disabled() ? true : null\"\n (keydown)=\"onKeyDownRemovablePill($event)\"\n (onClick)=\"onRemovablePillClicked($event)\"\n >\n {{ selectAmount() }}\n </ndw-removable-pill>\n }\n\n @if (chevron()) {\n <ndw-icon class=\"button-icon\">{{ buttonIcon() }}</ndw-icon>\n }\n</button>\n\n<ng-template #dropdownContent>\n <div role=\"dialog\" (keydown.escape)=\"closeDropdown()\">\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{display:inline-block}button{width:100%;display:flex;justify-content:space-between}.dropdown-prefix-icon{color:var(--ndw-color-grey-300)}\n"] }]
|
|
55
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [ButtonDirective, PopoverTriggerDirective, IconComponent, TagComponent], selector: 'ndw-dropdown', standalone: true, template: "<button\n type=\"button\"\n #dropdownButton\n ndwButton\n filter\n [ndwPopoverTrigger]=\"dropdownContent\"\n (isOpenChange)=\"isOpenChanged($event)\"\n (keydown)=\"onKeyDown($event)\"\n [disabled]=\"disabled()\"\n aria-haspopup=\"dialog\"\n>\n @if (prefixIcon(); as prefixIconName) {\n <ndw-icon class=\"dropdown-prefix-icon\">{{ prefixIconName }}</ndw-icon>\n }\n\n {{ buttonText() }}\n\n @if (selectAmount()) {\n <ndw-tag\n [attr.disabled]=\"disabled() ? true : null\"\n (keydown)=\"onTagKeyDown($event)\"\n (onClick)=\"onTagClicked($event)\"\n >\n {{ selectAmount() }}\n </ndw-tag>\n }\n\n @if (chevron()) {\n <ndw-icon class=\"button-icon\">{{ buttonIcon() }}</ndw-icon>\n }\n</button>\n\n<ng-template #dropdownContent>\n <div role=\"dialog\" (keydown.escape)=\"closeDropdown()\">\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{display:inline-block}button{width:100%;display:flex;justify-content:space-between}.dropdown-prefix-icon{color:var(--ndw-color-grey-300)}\n"] }]
|
|
63
56
|
}] });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDOztBQVV0QyxNQUFNLE9BQU8saUJBQWlCO0lBUjlCO1FBU2tCLGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsWUFBTyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDdEMsZUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixpQkFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4QixlQUFVLEdBQUcsTUFBTSxFQUFRLENBQUM7UUFDNUIsaUJBQVksR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUVqQyxtQkFBYyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM3RCxtQkFBYyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQWEsZ0JBQWdCLENBQUMsQ0FBQztRQUVsRSxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUN6QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FDN0UsQ0FBQztLQXFDSDtJQW5DUSxZQUFZLENBQUMsTUFBYTtRQUMvQixNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQW9CO1FBQ25DLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQzdDLE9BQU87UUFDVCxDQUFDO1FBRUQsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FBQyxNQUFlO1FBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OEdBbkRVLGlCQUFpQjtrR0FBakIsaUJBQWlCLGsyQkFVd0IsdUJBQXVCLG1MQ2hDN0UsczNCQXFDQSwwTURyQlksZUFBZSx3REFBRSx1QkFBdUIsMk5BQUUsYUFBYSx1RUFBRSxZQUFZOzsyRkFNcEUsaUJBQWlCO2tCQVI3QixTQUFTO3NDQUNTLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxZQUN0RSxjQUFjLGNBR1osSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGNvbXB1dGVkLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uJztcbmltcG9ydCB7IFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi4vcG9wb3Zlcic7XG5pbXBvcnQgeyBUYWdDb21wb25lbnQgfSBmcm9tICcuLi90YWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtCdXR0b25EaXJlY3RpdmUsIFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlLCBJY29uQ29tcG9uZW50LCBUYWdDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ25kdy1kcm9wZG93bicsXG4gIHN0eWxlVXJsOiAnZHJvcGRvd24uY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJ2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBjaGV2cm9uID0gaW5wdXQoKTtcbiAgcHVibGljIHJlYWRvbmx5IGJ1dHRvblRleHQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSBwcmVmaXhJY29uID0gaW5wdXQoJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0QW1vdW50ID0gaW5wdXQoMCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRhZ0NsaWNrZWQgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzT3BlbkNoYW5nZSA9IG91dHB1dDxib29sZWFuPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBwb3BvdmVyVHJpZ2dlciA9IHZpZXdDaGlsZC5yZXF1aXJlZChQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSk7XG4gIHB1YmxpYyByZWFkb25seSBkcm9wZG93bkJ1dHRvbiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignZHJvcGRvd25CdXR0b24nKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYnV0dG9uSWNvbiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5wb3BvdmVyVHJpZ2dlcigpLmlzT3BlbigpID8gJ2tleWJvYXJkX2Fycm93X3VwJyA6ICdrZXlib2FyZF9hcnJvd19kb3duJyxcbiAgKTtcblxuICBwdWJsaWMgb25UYWdDbGlja2VkKCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy50YWdDbGlja2VkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5wb3BvdmVyVHJpZ2dlcigpLmlzT3Blbi5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5wb3BvdmVyVHJpZ2dlcigpLnRvZ2dsZVBvcG92ZXIoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLnBvcG92ZXJUcmlnZ2VyKCkudG9nZ2xlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bkJ1dHRvbigpLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblRhZ0tleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInIHx8IHRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLnRhZ0NsaWNrZWQuZW1pdCgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kcm9wZG93bkJ1dHRvbigpLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc09wZW5DaGFuZ2VkKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoaXNPcGVuKTtcbiAgfVxufVxuIiwiPGJ1dHRvblxuICB0eXBlPVwiYnV0dG9uXCJcbiAgI2Ryb3Bkb3duQnV0dG9uXG4gIG5kd0J1dHRvblxuICBmaWx0ZXJcbiAgW25kd1BvcG92ZXJUcmlnZ2VyXT1cImRyb3Bkb3duQ29udGVudFwiXG4gIChpc09wZW5DaGFuZ2UpPVwiaXNPcGVuQ2hhbmdlZCgkZXZlbnQpXCJcbiAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuPlxuICBAaWYgKHByZWZpeEljb24oKTsgYXMgcHJlZml4SWNvbk5hbWUpIHtcbiAgICA8bmR3LWljb24gY2xhc3M9XCJkcm9wZG93bi1wcmVmaXgtaWNvblwiPnt7IHByZWZpeEljb25OYW1lIH19PC9uZHctaWNvbj5cbiAgfVxuXG4gIHt7IGJ1dHRvblRleHQoKSB9fVxuXG4gIEBpZiAoc2VsZWN0QW1vdW50KCkpIHtcbiAgICA8bmR3LXRhZ1xuICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSA/IHRydWUgOiBudWxsXCJcbiAgICAgIChrZXlkb3duKT1cIm9uVGFnS2V5RG93bigkZXZlbnQpXCJcbiAgICAgIChvbkNsaWNrKT1cIm9uVGFnQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICB7eyBzZWxlY3RBbW91bnQoKSB9fVxuICAgIDwvbmR3LXRhZz5cbiAgfVxuXG4gIEBpZiAoY2hldnJvbigpKSB7XG4gICAgPG5kdy1pY29uIGNsYXNzPVwiYnV0dG9uLWljb25cIj57eyBidXR0b25JY29uKCkgfX08L25kdy1pY29uPlxuICB9XG48L2J1dHRvbj5cblxuPG5nLXRlbXBsYXRlICNkcm9wZG93bkNvbnRlbnQ+XG4gIDxkaXYgcm9sZT1cImRpYWxvZ1wiIChrZXlkb3duLmVzY2FwZSk9XCJjbG9zZURyb3Bkb3duKClcIj5cbiAgICA8bmctY29udGVudCAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class AutosuggestHighlightPipe {
|
|
4
|
+
transform(value, searchTerm) {
|
|
5
|
+
if (!searchTerm || typeof value !== 'string') {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
const regex = new RegExp(`(${searchTerm})`, 'gi');
|
|
9
|
+
return value.replace(regex, '<b>$1</b>');
|
|
10
|
+
}
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
12
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestHighlightPipe, isStandalone: true, name: "ndwAutosuggestHighlight" }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestHighlightPipe, decorators: [{
|
|
15
|
+
type: Pipe,
|
|
16
|
+
args: [{
|
|
17
|
+
name: 'ndwAutosuggestHighlight',
|
|
18
|
+
standalone: true,
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QtaGlnaGxpZ2h0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC1oaWdobGlnaHQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFzQixNQUFNLGVBQWUsQ0FBQzs7QUFNekQsTUFBTSxPQUFPLHdCQUF3QjtJQUM1QixTQUFTLENBQUMsS0FBdUIsRUFBRSxVQUFrQjtRQUMxRCxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzdDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksVUFBVSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDOzhHQVJVLHdCQUF3Qjs0R0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUpwQyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSx5QkFBeUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIHR5cGUgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICduZHdBdXRvc3VnZ2VzdEhpZ2hsaWdodCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9zdWdnZXN0SGlnaGxpZ2h0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcgfCB1bmtub3duLCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmtub3duIHtcbiAgICBpZiAoIXNlYXJjaFRlcm0gfHwgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgKCR7c2VhcmNoVGVybX0pYCwgJ2dpJyk7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UocmVnZXgsICc8Yj4kMTwvYj4nKTtcbiAgfVxufVxuIl19
|
package/esm2022/components/form-field/autosuggest/autosuggest-item/autosuggest-item.component.mjs
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, signal, } from '@angular/core';
|
|
2
|
+
import { AutosuggestHighlightPipe } from '../autosuggest-highlight.pipe';
|
|
3
|
+
import { getSuggestionLabel } from '../autosuggest.utils';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class AutosuggestItemComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.item = input('');
|
|
8
|
+
this.searchTerm = input('');
|
|
9
|
+
this.labelField = input(undefined);
|
|
10
|
+
this.isActive = signal(false);
|
|
11
|
+
this.getLabel = computed(() => {
|
|
12
|
+
return getSuggestionLabel(this.item(), this.labelField());
|
|
13
|
+
});
|
|
14
|
+
this.elementRef = inject(ElementRef);
|
|
15
|
+
}
|
|
16
|
+
setActiveStyles() {
|
|
17
|
+
this.isActive.set(true);
|
|
18
|
+
}
|
|
19
|
+
setInactiveStyles() {
|
|
20
|
+
this.isActive.set(false);
|
|
21
|
+
}
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: AutosuggestItemComponent, isStandalone: true, selector: "ndw-autosuggest-item", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, searchTerm: { classPropertyName: "searchTerm", publicName: "searchTerm", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "tabindex": "-1", "role": "option" }, properties: { "class.active": "isActive()", "attr.aria-selected": "isActive()" } }, ngImport: i0, template: "<span [innerHTML]=\"getLabel() | ndwAutosuggestHighlight: searchTerm()\"></span>\n", styles: [":host{display:block;width:100%;border:0;padding:var(--ndw-spacing-2xs) var(--ndw-spacing-xs);color:var(--ndw-color-grey-700);background-color:var(--ndw-color-white);cursor:pointer;text-align:left;font:inherit;font-size:var(--ndw-font-size-sm)}:host.active,:host:hover,:host:focus{background-color:var(--ndw-color-secondary-050);transition:background-color var(--ndw-animation-speed-very-fast) ease-in-out}:host:active{background-color:var(--ndw-color-secondary-100)}:host span{word-break:break-word}\n"], dependencies: [{ kind: "pipe", type: AutosuggestHighlightPipe, name: "ndwAutosuggestHighlight" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestItemComponent, decorators: [{
|
|
26
|
+
type: Component,
|
|
27
|
+
args: [{ selector: 'ndw-autosuggest-item', standalone: true, imports: [AutosuggestHighlightPipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
28
|
+
tabindex: '-1',
|
|
29
|
+
role: 'option',
|
|
30
|
+
'[class.active]': 'isActive()',
|
|
31
|
+
'[attr.aria-selected]': 'isActive()',
|
|
32
|
+
}, template: "<span [innerHTML]=\"getLabel() | ndwAutosuggestHighlight: searchTerm()\"></span>\n", styles: [":host{display:block;width:100%;border:0;padding:var(--ndw-spacing-2xs) var(--ndw-spacing-xs);color:var(--ndw-color-grey-700);background-color:var(--ndw-color-white);cursor:pointer;text-align:left;font:inherit;font-size:var(--ndw-font-size-sm)}:host.active,:host:hover,:host:focus{background-color:var(--ndw-color-secondary-050);transition:background-color var(--ndw-animation-speed-very-fast) ease-in-out}:host:active{background-color:var(--ndw-color-secondary-100)}:host span{word-break:break-word}\n"] }]
|
|
33
|
+
}] });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC1pdGVtL2F1dG9zdWdnZXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3QtaXRlbS9hdXRvc3VnZ2VzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBZ0IxRCxNQUFNLE9BQU8sd0JBQXdCO0lBZHJDO1FBZWtCLFNBQUksR0FBRyxLQUFLLENBQWEsRUFBRSxDQUFDLENBQUM7UUFDN0IsZUFBVSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvQixlQUFVLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztRQUUzRCxhQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO1FBRUksZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQVN4QztJQVBRLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDOzhHQWxCVSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwrbUJDNUJyQyxvRkFDQSwwaUJEZ0JZLHdCQUF3Qjs7MkZBV3ZCLHdCQUF3QjtrQkFkcEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsd0JBQXdCLENBQUMsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osUUFBUSxFQUFFLElBQUk7d0JBQ2QsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsZ0JBQWdCLEVBQUUsWUFBWTt3QkFDOUIsc0JBQXNCLEVBQUUsWUFBWTtxQkFDckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIaWdobGlnaHRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRvc3VnZ2VzdEhpZ2hsaWdodFBpcGUgfSBmcm9tICcuLi9hdXRvc3VnZ2VzdC1oaWdobGlnaHQucGlwZSc7XG5pbXBvcnQgeyBTdWdnZXN0aW9uIH0gZnJvbSAnLi4vYXV0b3N1Z2dlc3QubW9kZWwnO1xuaW1wb3J0IHsgZ2V0U3VnZ2VzdGlvbkxhYmVsIH0gZnJvbSAnLi4vYXV0b3N1Z2dlc3QudXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZHctYXV0b3N1Z2dlc3QtaXRlbScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBdXRvc3VnZ2VzdEhpZ2hsaWdodFBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b3N1Z2dlc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hdXRvc3VnZ2VzdC1pdGVtLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICB0YWJpbmRleDogJy0xJyxcbiAgICByb2xlOiAnb3B0aW9uJyxcbiAgICAnW2NsYXNzLmFjdGl2ZV0nOiAnaXNBY3RpdmUoKScsXG4gICAgJ1thdHRyLmFyaWEtc2VsZWN0ZWRdJzogJ2lzQWN0aXZlKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvc3VnZ2VzdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBIaWdobGlnaHRhYmxlIHtcbiAgcHVibGljIHJlYWRvbmx5IGl0ZW0gPSBpbnB1dDxTdWdnZXN0aW9uPignJyk7XG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hUZXJtID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHB1YmxpYyByZWFkb25seSBsYWJlbEZpZWxkID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyBpc0FjdGl2ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBnZXRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gZ2V0U3VnZ2VzdGlvbkxhYmVsKHRoaXMuaXRlbSgpLCB0aGlzLmxhYmVsRmllbGQoKSk7XG4gIH0pO1xuXG4gIHB1YmxpYyBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIHB1YmxpYyBzZXRBY3RpdmVTdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FjdGl2ZS5zZXQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SW5hY3RpdmVTdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FjdGl2ZS5zZXQoZmFsc2UpO1xuICB9XG59XG4iLCI8c3BhbiBbaW5uZXJIVE1MXT1cImdldExhYmVsKCkgfCBuZHdBdXRvc3VnZ2VzdEhpZ2hsaWdodDogc2VhcmNoVGVybSgpXCI+PC9zcGFuPlxuIl19
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { ConnectionPositionPair, Overlay, } from '@angular/cdk/overlay';
|
|
2
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
3
|
+
import { ChangeDetectorRef, DestroyRef, Directive, ElementRef, inject, input, output, signal, ViewContainerRef, } from '@angular/core';
|
|
4
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { NgControl } from '@angular/forms';
|
|
6
|
+
import { filter, fromEvent, takeUntil } from 'rxjs';
|
|
7
|
+
import { getSuggestionLabel } from './autosuggest.utils';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class AutosuggestTriggerDirective {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.ndwAutosuggest = input.required();
|
|
12
|
+
this.suggestionSelected = output();
|
|
13
|
+
this.suggestionsRequested = output();
|
|
14
|
+
this.isOpen = signal(false);
|
|
15
|
+
this.selectedSuggestion = signal('');
|
|
16
|
+
this.ngControl = inject(NgControl, { optional: true });
|
|
17
|
+
this.elementRef = inject(ElementRef);
|
|
18
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
19
|
+
this.overlay = inject(Overlay);
|
|
20
|
+
this.destroyRef = inject(DestroyRef);
|
|
21
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
22
|
+
}
|
|
23
|
+
get control() {
|
|
24
|
+
return this.ngControl?.control;
|
|
25
|
+
}
|
|
26
|
+
get origin() {
|
|
27
|
+
return this.elementRef.nativeElement;
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.handleInput();
|
|
31
|
+
this.handleAutosuggestResult();
|
|
32
|
+
}
|
|
33
|
+
handleKeydown(event) {
|
|
34
|
+
const shouldCloseDropdown = ['Escape', 'Tab'].includes(event.key);
|
|
35
|
+
if (shouldCloseDropdown) {
|
|
36
|
+
this.close();
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.updateSearchTerm();
|
|
40
|
+
this.updateSuggestions();
|
|
41
|
+
this.openDropdown();
|
|
42
|
+
this.ndwAutosuggest().handleKeydown(event);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
handleBlur() {
|
|
46
|
+
const forceSelection = this.ndwAutosuggest().forceSelection();
|
|
47
|
+
const selectedSuggestion = this.selectedSuggestion();
|
|
48
|
+
if (forceSelection && !selectedSuggestion) {
|
|
49
|
+
this.updateResult('');
|
|
50
|
+
this.ndwAutosuggest().searchTerm.set('');
|
|
51
|
+
this.ndwAutosuggest().keyManager?.setActiveItem(-1);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
handleInput() {
|
|
55
|
+
fromEvent(this.origin, 'input')
|
|
56
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
57
|
+
.subscribe(() => {
|
|
58
|
+
this.selectedSuggestion.set('');
|
|
59
|
+
const exactMatch = this.findMatchingSuggestion(this.origin.value);
|
|
60
|
+
if (exactMatch) {
|
|
61
|
+
this.updateResult(exactMatch);
|
|
62
|
+
}
|
|
63
|
+
this.updateSearchTerm();
|
|
64
|
+
this.updateSuggestions();
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
updateSuggestions() {
|
|
68
|
+
const searchTerm = this.origin.value;
|
|
69
|
+
this.suggestionsRequested.emit(searchTerm);
|
|
70
|
+
}
|
|
71
|
+
updateSearchTerm() {
|
|
72
|
+
const value = this.origin.value;
|
|
73
|
+
this.ndwAutosuggest().searchTerm.set(value);
|
|
74
|
+
}
|
|
75
|
+
findMatchingSuggestion(searchTerm) {
|
|
76
|
+
return this.ndwAutosuggest()
|
|
77
|
+
.suggestions()
|
|
78
|
+
.find((s) => getSuggestionLabel(s, this.ndwAutosuggest().labelField()).toLocaleLowerCase() ===
|
|
79
|
+
searchTerm.toLocaleLowerCase());
|
|
80
|
+
}
|
|
81
|
+
handleAutosuggestResult() {
|
|
82
|
+
this.ndwAutosuggest()
|
|
83
|
+
.resultSubject.pipe(takeUntilDestroyed(this.destroyRef))
|
|
84
|
+
.subscribe((suggestion) => {
|
|
85
|
+
this.updateResult(suggestion);
|
|
86
|
+
this.close();
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
updateResult(suggestion) {
|
|
90
|
+
const label = getSuggestionLabel(suggestion, this.ndwAutosuggest().labelField());
|
|
91
|
+
this.selectedSuggestion.set(suggestion);
|
|
92
|
+
this.control?.setValue(suggestion);
|
|
93
|
+
this.suggestionSelected.emit(suggestion);
|
|
94
|
+
this.origin.value = label;
|
|
95
|
+
this.changeDetectorRef.markForCheck();
|
|
96
|
+
}
|
|
97
|
+
openDropdown() {
|
|
98
|
+
if (this.overlayRef) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
this.overlayRef = this.overlay.create({
|
|
102
|
+
width: this.origin.offsetWidth,
|
|
103
|
+
backdropClass: '',
|
|
104
|
+
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
105
|
+
positionStrategy: this.getOverlayPosition(),
|
|
106
|
+
});
|
|
107
|
+
const componentTemplate = this.ndwAutosuggest().template();
|
|
108
|
+
if (componentTemplate) {
|
|
109
|
+
const template = new TemplatePortal(componentTemplate, this.viewContainerRef);
|
|
110
|
+
this.overlayRef.attach(template);
|
|
111
|
+
this.isOpen.set(true);
|
|
112
|
+
this.overlayClickOutside(this.overlayRef, this.origin).subscribe(() => this.close());
|
|
113
|
+
this.changeDetectorRef.markForCheck();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
close() {
|
|
117
|
+
if (this.overlayRef) {
|
|
118
|
+
this.overlayRef.detach();
|
|
119
|
+
this.overlayRef = undefined;
|
|
120
|
+
this.isOpen.set(false);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
overlayClickOutside(overlayRef, origin) {
|
|
124
|
+
return fromEvent(document, 'click').pipe(takeUntilDestroyed(this.destroyRef), takeUntil(overlayRef.detachments()), filter((event) => {
|
|
125
|
+
const clickTarget = event.target;
|
|
126
|
+
const notOrigin = clickTarget !== origin;
|
|
127
|
+
const notOverlay = !!overlayRef && overlayRef.overlayElement.contains(clickTarget) === false;
|
|
128
|
+
return notOrigin && notOverlay;
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
getOverlayPosition() {
|
|
132
|
+
const positions = [
|
|
133
|
+
new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),
|
|
134
|
+
];
|
|
135
|
+
return this.overlay
|
|
136
|
+
.position()
|
|
137
|
+
.flexibleConnectedTo(this.origin)
|
|
138
|
+
.withPositions(positions)
|
|
139
|
+
.withFlexibleDimensions(false)
|
|
140
|
+
.withPush(false);
|
|
141
|
+
}
|
|
142
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
143
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.3", type: AutosuggestTriggerDirective, isStandalone: true, selector: "input[ndwAutosuggest], textarea[ndwAutosuggest]", inputs: { ndwAutosuggest: { classPropertyName: "ndwAutosuggest", publicName: "ndwAutosuggest", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { suggestionSelected: "suggestionSelected", suggestionsRequested: "suggestionsRequested" }, host: { attributes: { "autocomplete": "off", "aria-autocomplete": "list", "aria-haspopup": "listbox" }, listeners: { "keydown": "handleKeydown($event)", "blur": "handleBlur()" } }, exportAs: ["ndwAutosuggest"], ngImport: i0 }); }
|
|
144
|
+
}
|
|
145
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestTriggerDirective, decorators: [{
|
|
146
|
+
type: Directive,
|
|
147
|
+
args: [{
|
|
148
|
+
selector: 'input[ndwAutosuggest], textarea[ndwAutosuggest]',
|
|
149
|
+
standalone: true,
|
|
150
|
+
exportAs: 'ndwAutosuggest',
|
|
151
|
+
host: {
|
|
152
|
+
autocomplete: 'off',
|
|
153
|
+
'aria-autocomplete': 'list',
|
|
154
|
+
'aria-haspopup': 'listbox',
|
|
155
|
+
'(keydown)': 'handleKeydown($event)',
|
|
156
|
+
'(blur)': 'handleBlur()',
|
|
157
|
+
},
|
|
158
|
+
}]
|
|
159
|
+
}] });
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QtdHJpZ2dlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsc0JBQXNCLEVBRXRCLE9BQU8sR0FFUixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFDTixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBY3pELE1BQU0sT0FBTywyQkFBMkI7SUFaeEM7UUFha0IsbUJBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF3QixDQUFDO1FBQ3hELHVCQUFrQixHQUFHLE1BQU0sRUFBYyxDQUFDO1FBQzFDLHlCQUFvQixHQUFHLE1BQU0sRUFBVSxDQUFDO1FBR3hDLFdBQU0sR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFL0IsdUJBQWtCLEdBQUcsTUFBTSxDQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRTVDLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsUUFBUSxF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MkI7OzJGQUEzQiwyQkFBMkI7a0JBWnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlEQUFpRDtvQkFDM0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLElBQUksRUFBRTt3QkFDSixZQUFZLEVBQUUsS0FBSzt3QkFDbkIsbUJBQW1CLEVBQUUsTUFBTTt3QkFDM0IsZUFBZSxFQUFFLFNBQVM7d0JBQzFCLFdBQVcsRUFBRSx1QkFBdUI7d0JBQ3BDLFFBQVEsRUFBRSxjQUFjO3FCQUN6QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsXG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIE9uSW5pdCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRvc3VnZ2VzdENvbXBvbmVudCB9IGZyb20gJy4vYXV0b3N1Z2dlc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFN1Z2dlc3Rpb24gfSBmcm9tICcuL2F1dG9zdWdnZXN0Lm1vZGVsJztcbmltcG9ydCB7IGdldFN1Z2dlc3Rpb25MYWJlbCB9IGZyb20gJy4vYXV0b3N1Z2dlc3QudXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpbnB1dFtuZHdBdXRvc3VnZ2VzdF0sIHRleHRhcmVhW25kd0F1dG9zdWdnZXN0XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGV4cG9ydEFzOiAnbmR3QXV0b3N1Z2dlc3QnLFxuICBob3N0OiB7XG4gICAgYXV0b2NvbXBsZXRlOiAnb2ZmJyxcbiAgICAnYXJpYS1hdXRvY29tcGxldGUnOiAnbGlzdCcsXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAnbGlzdGJveCcsXG4gICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknLFxuICAgICcoYmx1ciknOiAnaGFuZGxlQmx1cigpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b3N1Z2dlc3RUcmlnZ2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHJlYWRvbmx5IG5kd0F1dG9zdWdnZXN0ID0gaW5wdXQucmVxdWlyZWQ8QXV0b3N1Z2dlc3RDb21wb25lbnQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzdWdnZXN0aW9uU2VsZWN0ZWQgPSBvdXRwdXQ8U3VnZ2VzdGlvbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHN1Z2dlc3Rpb25zUmVxdWVzdGVkID0gb3V0cHV0PHN0cmluZz4oKTtcblxuICBwdWJsaWMgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IGlzT3BlbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZFN1Z2dlc3Rpb24gPSBzaWduYWw8U3VnZ2VzdGlvbj4oJycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBwcml2YXRlIGdldCBjb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm5nQ29udHJvbD8uY29udHJvbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG9yaWdpbigpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVJbnB1dCgpO1xuICAgIHRoaXMuaGFuZGxlQXV0b3N1Z2dlc3RSZXN1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2hvdWxkQ2xvc2VEcm9wZG93biA9IFsnRXNjYXBlJywgJ1RhYiddLmluY2x1ZGVzKGV2ZW50LmtleSk7XG5cbiAgICBpZiAoc2hvdWxkQ2xvc2VEcm9wZG93bikge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlYXJjaFRlcm0oKTtcbiAgICAgIHRoaXMudXBkYXRlU3VnZ2VzdGlvbnMoKTtcblxuICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICAgIHRoaXMubmR3QXV0b3N1Z2dlc3QoKS5oYW5kbGVLZXlkb3duKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQmx1cigpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JjZVNlbGVjdGlvbiA9IHRoaXMubmR3QXV0b3N1Z2dlc3QoKS5mb3JjZVNlbGVjdGlvbigpO1xuICAgIGNvbnN0IHNlbGVjdGVkU3VnZ2VzdGlvbiA9IHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uKCk7XG5cbiAgICBpZiAoZm9yY2VTZWxlY3Rpb24gJiYgIXNlbGVjdGVkU3VnZ2VzdGlvbikge1xuICAgICAgdGhpcy51cGRhdGVSZXN1bHQoJycpO1xuICAgICAgdGhpcy5uZHdBdXRvc3VnZ2VzdCgpLnNlYXJjaFRlcm0uc2V0KCcnKTtcbiAgICAgIHRoaXMubmR3QXV0b3N1Z2dlc3QoKS5rZXlNYW5hZ2VyPy5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUlucHV0KCk6IHZvaWQge1xuICAgIGZyb21FdmVudCh0aGlzLm9yaWdpbiwgJ2lucHV0JylcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uLnNldCgnJyk7XG5cbiAgICAgICAgY29uc3QgZXhhY3RNYXRjaCA9IHRoaXMuZmluZE1hdGNoaW5nU3VnZ2VzdGlvbih0aGlzLm9yaWdpbi52YWx1ZSk7XG4gICAgICAgIGlmIChleGFjdE1hdGNoKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVSZXN1bHQoZXhhY3RNYXRjaCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaFRlcm0oKTtcbiAgICAgICAgdGhpcy51cGRhdGVTdWdnZXN0aW9ucygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN1Z2dlc3Rpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSB0aGlzLm9yaWdpbi52YWx1ZTtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zUmVxdWVzdGVkLmVtaXQoc2VhcmNoVGVybSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlYXJjaFRlcm0oKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm9yaWdpbi52YWx1ZTtcbiAgICB0aGlzLm5kd0F1dG9zdWdnZXN0KCkuc2VhcmNoVGVybS5zZXQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTWF0Y2hpbmdTdWdnZXN0aW9uKHNlYXJjaFRlcm06IHN0cmluZyk6IFN1Z2dlc3Rpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5uZHdBdXRvc3VnZ2VzdCgpXG4gICAgICAuc3VnZ2VzdGlvbnMoKVxuICAgICAgLmZpbmQoXG4gICAgICAgIChzKSA9PlxuICAgICAgICAgIGdldFN1Z2dlc3Rpb25MYWJlbChzLCB0aGlzLm5kd0F1dG9zdWdnZXN0KCkubGFiZWxGaWVsZCgpKS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PVxuICAgICAgICAgIHNlYXJjaFRlcm0udG9Mb2NhbGVMb3dlckNhc2UoKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUF1dG9zdWdnZXN0UmVzdWx0KCk6IHZvaWQge1xuICAgIHRoaXMubmR3QXV0b3N1Z2dlc3QoKVxuICAgICAgLnJlc3VsdFN1YmplY3QucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN1Z2dlc3Rpb246IFN1Z2dlc3Rpb24pID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSZXN1bHQoc3VnZ2VzdGlvbik7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSZXN1bHQoc3VnZ2VzdGlvbjogU3VnZ2VzdGlvbiB8IG51bGwpOiB2b2lkIHtcbiAgICBjb25zdCBsYWJlbCA9IGdldFN1Z2dlc3Rpb25MYWJlbChzdWdnZXN0aW9uLCB0aGlzLm5kd0F1dG9zdWdnZXN0KCkubGFiZWxGaWVsZCgpKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uLnNldChzdWdnZXN0aW9uKTtcbiAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKHN1Z2dlc3Rpb24pO1xuICAgIHRoaXMuc3VnZ2VzdGlvblNlbGVjdGVkLmVtaXQoc3VnZ2VzdGlvbik7XG5cbiAgICB0aGlzLm9yaWdpbi52YWx1ZSA9IGxhYmVsO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICB3aWR0aDogdGhpcy5vcmlnaW4ub2Zmc2V0V2lkdGgsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnJyxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLmdldE92ZXJsYXlQb3NpdGlvbigpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcG9uZW50VGVtcGxhdGUgPSB0aGlzLm5kd0F1dG9zdWdnZXN0KCkudGVtcGxhdGUoKTtcblxuICAgIGlmIChjb21wb25lbnRUZW1wbGF0ZSkge1xuICAgICAgY29uc3QgdGVtcGxhdGUgPSBuZXcgVGVtcGxhdGVQb3J0YWwoY29tcG9uZW50VGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRlbXBsYXRlKTtcblxuICAgICAgdGhpcy5pc09wZW4uc2V0KHRydWUpO1xuICAgICAgdGhpcy5vdmVybGF5Q2xpY2tPdXRzaWRlKHRoaXMub3ZlcmxheVJlZiwgdGhpcy5vcmlnaW4pLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlKCkpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvdmVybGF5Q2xpY2tPdXRzaWRlKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsIG9yaWdpbjogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+IHtcbiAgICByZXR1cm4gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnY2xpY2snKS5waXBlKFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICB0YWtlVW50aWwob3ZlcmxheVJlZi5kZXRhY2htZW50cygpKSxcbiAgICAgIGZpbHRlcigoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgY2xpY2tUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IG5vdE9yaWdpbiA9IGNsaWNrVGFyZ2V0ICE9PSBvcmlnaW47XG4gICAgICAgIGNvbnN0IG5vdE92ZXJsYXkgPVxuICAgICAgICAgICEhb3ZlcmxheVJlZiAmJiBvdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmNvbnRhaW5zKGNsaWNrVGFyZ2V0KSA9PT0gZmFsc2U7XG4gICAgICAgIHJldHVybiBub3RPcmlnaW4gJiYgbm90T3ZlcmxheTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlQb3NpdGlvbigpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFtcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMub3JpZ2luKVxuICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAud2l0aFB1c2goZmFsc2UpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, input, signal, TemplateRef, viewChild, ViewChildren, } from '@angular/core';
|
|
4
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { IconComponent } from '../../icon/icon.component';
|
|
7
|
+
import { AutosuggestItemComponent } from './autosuggest-item/autosuggest-item.component';
|
|
8
|
+
import { getSuggestionLabel } from './autosuggest.utils';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
const DEFAULT_MAX_RESULTS = 7;
|
|
11
|
+
const DEFAULT_NO_RESULT_TEXT = 'Geen resultaten gevonden. Probeer een andere zoekterm.';
|
|
12
|
+
export class AutosuggestComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.noResultText = input(DEFAULT_NO_RESULT_TEXT);
|
|
15
|
+
this.maxResults = input(DEFAULT_MAX_RESULTS);
|
|
16
|
+
this.forceSelection = input(false);
|
|
17
|
+
this.labelField = input(undefined);
|
|
18
|
+
this.suggestions = input([], {
|
|
19
|
+
transform: (suggestions) => suggestions.slice(0, this.maxResults()),
|
|
20
|
+
});
|
|
21
|
+
this.template = viewChild.required(TemplateRef);
|
|
22
|
+
this.destroyRef = inject(DestroyRef);
|
|
23
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
24
|
+
this.searchTerm = signal('');
|
|
25
|
+
this.resultSubject = new Subject();
|
|
26
|
+
}
|
|
27
|
+
ngOnDestroy() {
|
|
28
|
+
this.keyManager?.destroy();
|
|
29
|
+
}
|
|
30
|
+
ngAfterViewInit() {
|
|
31
|
+
this.initializeKeyManager();
|
|
32
|
+
}
|
|
33
|
+
selectItem(suggestion, index) {
|
|
34
|
+
this.keyManager?.setActiveItem(index);
|
|
35
|
+
this.updateControlValue(suggestion);
|
|
36
|
+
}
|
|
37
|
+
trackBy(item) {
|
|
38
|
+
return getSuggestionLabel(item, this.labelField());
|
|
39
|
+
}
|
|
40
|
+
handleKeydown(event) {
|
|
41
|
+
if (event.key === 'Enter') {
|
|
42
|
+
const item = this.keyManager?.activeItem?.item();
|
|
43
|
+
this.updateControlValue(item);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.keyManager?.onKeydown(event);
|
|
47
|
+
}
|
|
48
|
+
this.changeDetectorRef.markForCheck();
|
|
49
|
+
}
|
|
50
|
+
initializeKeyManager() {
|
|
51
|
+
this.keyManager = new ActiveDescendantKeyManager(this.items)
|
|
52
|
+
.withWrap()
|
|
53
|
+
.withTypeAhead()
|
|
54
|
+
.withVerticalOrientation();
|
|
55
|
+
this.keyManager.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((index) => {
|
|
56
|
+
this.scrollActiveOptionIntoView(index);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
updateControlValue(value) {
|
|
60
|
+
this.resultSubject.next(value);
|
|
61
|
+
}
|
|
62
|
+
scrollActiveOptionIntoView(index) {
|
|
63
|
+
const activeOptionIndex = index || 0;
|
|
64
|
+
const activeOption = this.items.toArray()[activeOptionIndex];
|
|
65
|
+
if (activeOption) {
|
|
66
|
+
activeOption.elementRef.nativeElement.scrollIntoView({
|
|
67
|
+
behavior: 'smooth',
|
|
68
|
+
block: 'nearest',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: AutosuggestComponent, isStandalone: true, selector: "ndw-autosuggest", inputs: { noResultText: { classPropertyName: "noResultText", publicName: "noResultText", isSignal: true, isRequired: false, transformFunction: null }, maxResults: { classPropertyName: "maxResults", publicName: "maxResults", isSignal: true, isRequired: false, transformFunction: null }, forceSelection: { classPropertyName: "forceSelection", publicName: "forceSelection", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "items", predicate: AutosuggestItemComponent, descendants: true }], ngImport: i0, template: "<ng-template>\n @if (suggestions().length > 0) {\n <div class=\"ndw-autosuggest\" role=\"listbox\" tabindex=\"-1\">\n @for (item of suggestions(); track trackBy(item); let i = $index) {\n <!-- Setting the active class here is needed because the angular CDK will not highlight the first option by default. -->\n <ndw-autosuggest-item\n [searchTerm]=\"searchTerm()\"\n [item]=\"item\"\n [labelField]=\"labelField()\"\n (click)=\"selectItem(item, i)\"\n tabindex=\"-1\"\n [class.active]=\"i === keyManager?.activeItemIndex\"\n />\n }\n </div>\n } @else if (!!searchTerm()) {\n <div class=\"ndw-autosuggest\">\n <div class=\"ndw-autosuggest__empty\">\n <ndw-icon>sentiment_dissatisfied</ndw-icon>\n {{ noResultText() }}\n </div>\n </div>\n }\n</ng-template>\n", styles: [":host{display:block;width:100%}.ndw-autosuggest{--dropdown-min-width: 300px;display:block;overflow:hidden;min-width:var(--dropdown-min-width);width:100%;border:1px solid var(--ndw-color-grey-200);border-radius:var(--ndw-border-radius-sm);padding:0;margin-top:2px;background-color:var(--ndw-color-white);box-shadow:var(--ndw-elevation-content)}.ndw-autosuggest>ndw-autocomplete-item:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}.ndw-autosuggest__empty{display:grid;justify-items:center;margin:auto;padding:var(--ndw-spacing-sm) var(--ndw-spacing-md);font-size:var(--ndw-font-size-sm);text-align:center;color:var(--ndw-color-grey-400)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AutosuggestItemComponent, selector: "ndw-autosuggest-item", inputs: ["item", "searchTerm", "labelField"] }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestComponent, decorators: [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'ndw-autosuggest', standalone: true, imports: [CommonModule, AutosuggestItemComponent, IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template>\n @if (suggestions().length > 0) {\n <div class=\"ndw-autosuggest\" role=\"listbox\" tabindex=\"-1\">\n @for (item of suggestions(); track trackBy(item); let i = $index) {\n <!-- Setting the active class here is needed because the angular CDK will not highlight the first option by default. -->\n <ndw-autosuggest-item\n [searchTerm]=\"searchTerm()\"\n [item]=\"item\"\n [labelField]=\"labelField()\"\n (click)=\"selectItem(item, i)\"\n tabindex=\"-1\"\n [class.active]=\"i === keyManager?.activeItemIndex\"\n />\n }\n </div>\n } @else if (!!searchTerm()) {\n <div class=\"ndw-autosuggest\">\n <div class=\"ndw-autosuggest__empty\">\n <ndw-icon>sentiment_dissatisfied</ndw-icon>\n {{ noResultText() }}\n </div>\n </div>\n }\n</ng-template>\n", styles: [":host{display:block;width:100%}.ndw-autosuggest{--dropdown-min-width: 300px;display:block;overflow:hidden;min-width:var(--dropdown-min-width);width:100%;border:1px solid var(--ndw-color-grey-200);border-radius:var(--ndw-border-radius-sm);padding:0;margin-top:2px;background-color:var(--ndw-color-white);box-shadow:var(--ndw-elevation-content)}.ndw-autosuggest>ndw-autocomplete-item:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}.ndw-autosuggest__empty{display:grid;justify-items:center;margin:auto;padding:var(--ndw-spacing-sm) var(--ndw-spacing-md);font-size:var(--ndw-font-size-sm);text-align:center;color:var(--ndw-color-grey-400)}\n"] }]
|
|
78
|
+
}], propDecorators: { items: [{
|
|
79
|
+
type: ViewChildren,
|
|
80
|
+
args: [AutosuggestItemComponent]
|
|
81
|
+
}] } });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFekYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRXpELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLE1BQU0sc0JBQXNCLEdBQUcsd0RBQXdELENBQUM7QUFVeEYsTUFBTSxPQUFPLG9CQUFvQjtJQVJqQztRQVNrQixpQkFBWSxHQUFHLEtBQUssQ0FBUyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JELGVBQVUsR0FBRyxLQUFLLENB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LENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOzhHQXZFVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix5ekJBVU0sV0FBVywyRUFEbEMsd0JBQXdCLGdEQzVDeEMsaTNCQXdCQSwwc0JETVksWUFBWSwrQkFBRSx3QkFBd0IsK0dBQUUsYUFBYTs7MkZBS3BELG9CQUFvQjtrQkFSaEMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxDQUFDLG1CQUcvQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQVdBLEtBQUs7c0JBQW5ELFlBQVk7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBzaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRvc3VnZ2VzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2F1dG9zdWdnZXN0LWl0ZW0vYXV0b3N1Z2dlc3QtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3VnZ2VzdGlvbiB9IGZyb20gJy4vYXV0b3N1Z2dlc3QubW9kZWwnO1xuaW1wb3J0IHsgZ2V0U3VnZ2VzdGlvbkxhYmVsIH0gZnJvbSAnLi9hdXRvc3VnZ2VzdC51dGlscyc7XG5cbmNvbnN0IERFRkFVTFRfTUFYX1JFU1VMVFMgPSA3O1xuY29uc3QgREVGQVVMVF9OT19SRVNVTFRfVEVYVCA9ICdHZWVuIHJlc3VsdGF0ZW4gZ2V2b25kZW4uIFByb2JlZXIgZWVuIGFuZGVyZSB6b2VrdGVybS4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZHctYXV0b3N1Z2dlc3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBdXRvc3VnZ2VzdEl0ZW1Db21wb25lbnQsIEljb25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b3N1Z2dlc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYXV0b3N1Z2dlc3QuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b3N1Z2dlc3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgcmVhZG9ubHkgbm9SZXN1bHRUZXh0ID0gaW5wdXQ8c3RyaW5nPihERUZBVUxUX05PX1JFU1VMVF9URVhUKTtcbiAgcHVibGljIHJlYWRvbmx5IG1heFJlc3VsdHMgPSBpbnB1dDxudW1iZXI+KERFRkFVTFRfTUFYX1JFU1VMVFMpO1xuICBwdWJsaWMgcmVhZG9ubHkgZm9yY2VTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBsYWJlbEZpZWxkID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VnZ2VzdGlvbnMgPSBpbnB1dDxTdWdnZXN0aW9uW10sIFN1Z2dlc3Rpb25bXT4oW10sIHtcbiAgICB0cmFuc2Zvcm06IChzdWdnZXN0aW9uczogU3VnZ2VzdGlvbltdKTogU3VnZ2VzdGlvbltdID0+IHN1Z2dlc3Rpb25zLnNsaWNlKDAsIHRoaXMubWF4UmVzdWx0cygpKSxcbiAgfSk7XG5cbiAgQFZpZXdDaGlsZHJlbihBdXRvc3VnZ2VzdEl0ZW1Db21wb25lbnQpIHB1YmxpYyBpdGVtcyE6IFF1ZXJ5TGlzdDxBdXRvc3VnZ2VzdEl0ZW1Db21wb25lbnQ+O1xuICBwdWJsaWMgdGVtcGxhdGUgPSB2aWV3Q2hpbGQucmVxdWlyZWQoVGVtcGxhdGVSZWYpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcHVibGljIHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgcHVibGljIGtleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPEF1dG9zdWdnZXN0SXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZXN1bHRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8U3VnZ2VzdGlvbj4oKTtcblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyPy5kZXN0cm95KCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUtleU1hbmFnZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RJdGVtKHN1Z2dlc3Rpb246IFN1Z2dlc3Rpb24sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmtleU1hbmFnZXI/LnNldEFjdGl2ZUl0ZW0oaW5kZXgpO1xuICAgIHRoaXMudXBkYXRlQ29udHJvbFZhbHVlKHN1Z2dlc3Rpb24pO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnkoaXRlbTogU3VnZ2VzdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldFN1Z2dlc3Rpb25MYWJlbChpdGVtLCB0aGlzLmxhYmVsRmllbGQoKSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0/Lml0ZW0oKTtcbiAgICAgIHRoaXMudXBkYXRlQ29udHJvbFZhbHVlKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleU1hbmFnZXI/Lm9uS2V5ZG93bihldmVudCk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVLZXlNYW5hZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMua2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcih0aGlzLml0ZW1zKVxuICAgICAgLndpdGhXcmFwKClcbiAgICAgIC53aXRoVHlwZUFoZWFkKClcbiAgICAgIC53aXRoVmVydGljYWxPcmllbnRhdGlvbigpO1xuXG4gICAgdGhpcy5rZXlNYW5hZ2VyLmNoYW5nZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsQWN0aXZlT3B0aW9uSW50b1ZpZXcoaW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250cm9sVmFsdWUodmFsdWU6IFN1Z2dlc3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnJlc3VsdFN1YmplY3QubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbEFjdGl2ZU9wdGlvbkludG9WaWV3KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVPcHRpb25JbmRleCA9IGluZGV4IHx8IDA7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uID0gdGhpcy5pdGVtcy50b0FycmF5KClbYWN0aXZlT3B0aW9uSW5kZXhdO1xuICAgIGlmIChhY3RpdmVPcHRpb24pIHtcbiAgICAgIGFjdGl2ZU9wdGlvbi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZT5cbiAgQGlmIChzdWdnZXN0aW9ucygpLmxlbmd0aCA+IDApIHtcbiAgICA8ZGl2IGNsYXNzPVwibmR3LWF1dG9zdWdnZXN0XCIgcm9sZT1cImxpc3Rib3hcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICBAZm9yIChpdGVtIG9mIHN1Z2dlc3Rpb25zKCk7IHRyYWNrIHRyYWNrQnkoaXRlbSk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDwhLS0gU2V0dGluZyB0aGUgYWN0aXZlIGNsYXNzIGhlcmUgaXMgbmVlZGVkIGJlY2F1c2UgdGhlIGFuZ3VsYXIgQ0RLIHdpbGwgbm90IGhpZ2hsaWdodCB0aGUgZmlyc3Qgb3B0aW9uIGJ5IGRlZmF1bHQuIC0tPlxuICAgICAgICA8bmR3LWF1dG9zdWdnZXN0LWl0ZW1cbiAgICAgICAgICBbc2VhcmNoVGVybV09XCJzZWFyY2hUZXJtKClcIlxuICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgIFtsYWJlbEZpZWxkXT1cImxhYmVsRmllbGQoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSwgaSlcIlxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0ga2V5TWFuYWdlcj8uYWN0aXZlSXRlbUluZGV4XCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSBpZiAoISFzZWFyY2hUZXJtKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwibmR3LWF1dG9zdWdnZXN0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibmR3LWF1dG9zdWdnZXN0X19lbXB0eVwiPlxuICAgICAgICA8bmR3LWljb24+c2VudGltZW50X2Rpc3NhdGlzZmllZDwvbmR3LWljb24+XG4gICAgICAgIHt7IG5vUmVzdWx0VGV4dCgpIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgU3VnZ2VzdGlvbiA9IHN0cmluZyB8IHVua25vd247XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const getSuggestionLabel = (suggestion, field) => {
|
|
2
|
+
if (suggestion == null) {
|
|
3
|
+
return '';
|
|
4
|
+
}
|
|
5
|
+
if (typeof suggestion === 'string') {
|
|
6
|
+
return suggestion;
|
|
7
|
+
}
|
|
8
|
+
if (field && typeof suggestion === 'object') {
|
|
9
|
+
return suggestion[field];
|
|
10
|
+
}
|
|
11
|
+
return JSON.stringify(suggestion);
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFVBQXNCLEVBQUUsS0FBYyxFQUFVLEVBQUU7SUFDbkYsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxLQUFLLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUMsT0FBTyxVQUFVLENBQUMsS0FBZ0MsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3VnZ2VzdGlvbiB9IGZyb20gJy4vYXV0b3N1Z2dlc3QubW9kZWwnO1xuXG5leHBvcnQgY29uc3QgZ2V0U3VnZ2VzdGlvbkxhYmVsID0gKHN1Z2dlc3Rpb246IFN1Z2dlc3Rpb24sIGZpZWxkPzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKHN1Z2dlc3Rpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3VnZ2VzdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gc3VnZ2VzdGlvbjtcbiAgfVxuXG4gIGlmIChmaWVsZCAmJiB0eXBlb2Ygc3VnZ2VzdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gc3VnZ2VzdGlvbltmaWVsZCBhcyBrZXlvZiB0eXBlb2Ygc3VnZ2VzdGlvbl07XG4gIH1cblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc3VnZ2VzdGlvbik7XG59O1xuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './autosuggest-highlight.pipe';
|
|
2
|
+
export * from './autosuggest-item/autosuggest-item.component';
|
|
3
|
+
export * from './autosuggest-trigger.directive';
|
|
4
|
+
export * from './autosuggest.component';
|
|
5
|
+
export * from './autosuggest.model';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dG9zdWdnZXN0LWhpZ2hsaWdodC5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0b3N1Z2dlc3QtaXRlbS9hdXRvc3VnZ2VzdC1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2F1dG9zdWdnZXN0LXRyaWdnZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0b3N1Z2dlc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXV0b3N1Z2dlc3QubW9kZWwnO1xuIl19
|