@magicx-eng/ai-autocomplete-angular 0.28.0 → 0.28.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/esm2020/lib/ai-autocomplete-dropdown/ai-autocomplete-dropdown.component.mjs +12 -3
- package/esm2020/lib/internal/layout/grid.component.mjs +2 -2
- package/fesm2015/magicx-eng-ai-autocomplete-angular.mjs +15 -6
- package/fesm2015/magicx-eng-ai-autocomplete-angular.mjs.map +1 -1
- package/fesm2020/magicx-eng-ai-autocomplete-angular.mjs +13 -4
- package/fesm2020/magicx-eng-ai-autocomplete-angular.mjs.map +1 -1
- package/lib/ai-autocomplete-dropdown/ai-autocomplete-dropdown.component.d.ts +3 -0
- package/lib/ai-autocomplete-dropdown/ai-autocomplete-dropdown.component.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { WEEKDAY_LABELS as WEEKDAY_LABELS$1, cellIso as cellIso$1, monthLabel as monthLabel$1, cellDay as cellDay$1, isoDate as isoDate$1, dateCellMarks as dateCellMarks$1, visibleDateRange as visibleDateRange$1, productInitial, attachProductRowWheel, optionsGridTemplateColumns, optionLabel as optionLabel$1, optionImageSrc as optionImageSrc$1, formatOptionCount as formatOptionCount$1, sanitizeOptionIconSvg as sanitizeOptionIconSvg$1, planOptionsGrid, sameOptionRows, isOptionsGridMobileViewport, needsOptionsGridMeasurement, measureOptionsGrid, optionEnterDelayMs, SCROLL_ARROW_LABEL, buildAttributionUrl, attachScrollArrow, isCalendarFormat, getFooterHint, AIAutocomplete, dateSelectionFor, identifiedParamLabel, renderEditableContent, getCursorOffset, extractPlainText, plainTextLength, setCursorOffset, ModeController, buildSubmitResult as buildSubmitResult$1, withSkippedParams as withSkippedParams$1, formatDate as formatDate$1, parseDate as parseDate$1, parseLooseDate as parseLooseDate$1, DATE_RANGE_META_END as DATE_RANGE_META_END$1, DATE_RANGE_META_START as DATE_RANGE_META_START$1, formatDateRange as formatDateRange$1, parseLooseDateRange as parseLooseDateRange$1, selectedRangeFor as selectedRangeFor$1, DEFAULT_OPTION_COUNT_UNIT as DEFAULT_OPTION_COUNT_UNIT$1, optionCountLabel as optionCountLabel$1, optionHasImage as optionHasImage$1, PRODUCT_PATH_PREFIX as PRODUCT_PATH_PREFIX$1, productFromMatchedItem as productFromMatchedItem$1, productsFromCustomFields as productsFromCustomFields$1 } from '@magicx-eng/ai-autocomplete-vanilla';
|
|
1
|
+
import { WEEKDAY_LABELS as WEEKDAY_LABELS$1, cellIso as cellIso$1, monthLabel as monthLabel$1, cellDay as cellDay$1, isoDate as isoDate$1, dateCellMarks as dateCellMarks$1, visibleDateRange as visibleDateRange$1, productInitial, attachProductRowWheel, optionsGridTemplateColumns, optionLabel as optionLabel$1, optionImageSrc as optionImageSrc$1, formatOptionCount as formatOptionCount$1, sanitizeOptionIconSvg as sanitizeOptionIconSvg$1, planOptionsGrid, sameOptionRows, isOptionsGridMobileViewport, needsOptionsGridMeasurement, measureOptionsGrid, optionEnterDelayMs, SCROLL_ARROW_LABEL, buildAttributionUrl, containScroll, attachScrollArrow, isCalendarFormat, getFooterHint, AIAutocomplete, dateSelectionFor, identifiedParamLabel, renderEditableContent, getCursorOffset, extractPlainText, plainTextLength, setCursorOffset, ModeController, buildSubmitResult as buildSubmitResult$1, withSkippedParams as withSkippedParams$1, formatDate as formatDate$1, parseDate as parseDate$1, parseLooseDate as parseLooseDate$1, DATE_RANGE_META_END as DATE_RANGE_META_END$1, DATE_RANGE_META_START as DATE_RANGE_META_START$1, formatDateRange as formatDateRange$1, parseLooseDateRange as parseLooseDateRange$1, selectedRangeFor as selectedRangeFor$1, DEFAULT_OPTION_COUNT_UNIT as DEFAULT_OPTION_COUNT_UNIT$1, optionCountLabel as optionCountLabel$1, optionHasImage as optionHasImage$1, PRODUCT_PATH_PREFIX as PRODUCT_PATH_PREFIX$1, productFromMatchedItem as productFromMatchedItem$1, productsFromCustomFields as productsFromCustomFields$1 } from '@magicx-eng/ai-autocomplete-vanilla';
|
|
2
2
|
import * as i1 from '@angular/common';
|
|
3
3
|
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, inject, ChangeDetectorRef, HostListener, ElementRef,
|
|
5
|
+
import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, inject, ChangeDetectorRef, HostListener, ElementRef, NgZone, Renderer2, Directive, PLATFORM_ID, forwardRef, NgModule } from '@angular/core';
|
|
6
6
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
7
7
|
import { BehaviorSubject, combineLatest, map as map$1, distinctUntilChanged, shareReplay, Subject, takeUntil } from 'rxjs';
|
|
8
8
|
import { map } from 'rxjs/operators';
|
|
@@ -466,10 +466,10 @@ class GridComponent {
|
|
|
466
466
|
}
|
|
467
467
|
}
|
|
468
468
|
GridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
469
|
-
GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GridComponent, isStandalone: true, selector: "aia-grid", inputs: { min: "min", max: "max", gap: "gap", scroll: "scroll", maxHeight: "maxHeight", scrollResetKey: "scrollResetKey", cols: "cols", template: "template", group: "group" }, host: { classAttribute: "aia-grid-host" }, viewQueries: [{ propertyName: "gridRef", first: true, predicate: ["grid"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #grid\n class=\"aia-grid\"\n [attr.data-scroll]=\"scroll ? '' : null\"\n [attr.data-aia-group]=\"group ?? null\"\n [style.--aia-grid-min]=\"min\"\n [style.--aia-grid-max]=\"max\"\n [style.--aia-grid-gap]=\"gap\"\n [style.--aia-grid-max-height]=\"maxHeight\"\n [style.grid-template-columns]=\"templateColumns\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".aia-grid-host{display:contents}.aia-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(var(--aia-grid-min),100%),var(--aia-grid-max, 1fr)));gap:var(--aia-grid-gap, 0)}.aia-grid[data-scroll]{grid-auto-rows:min-content;align-content:start;justify-content:start;max-height:var(--aia-grid-max-height, 120px);overflow-y:auto;
|
|
469
|
+
GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GridComponent, isStandalone: true, selector: "aia-grid", inputs: { min: "min", max: "max", gap: "gap", scroll: "scroll", maxHeight: "maxHeight", scrollResetKey: "scrollResetKey", cols: "cols", template: "template", group: "group" }, host: { classAttribute: "aia-grid-host" }, viewQueries: [{ propertyName: "gridRef", first: true, predicate: ["grid"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #grid\n class=\"aia-grid\"\n [attr.data-scroll]=\"scroll ? '' : null\"\n [attr.data-aia-group]=\"group ?? null\"\n [style.--aia-grid-min]=\"min\"\n [style.--aia-grid-max]=\"max\"\n [style.--aia-grid-gap]=\"gap\"\n [style.--aia-grid-max-height]=\"maxHeight\"\n [style.grid-template-columns]=\"templateColumns\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".aia-grid-host{display:contents}.aia-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(var(--aia-grid-min),100%),var(--aia-grid-max, 1fr)));gap:var(--aia-grid-gap, 0)}.aia-grid[data-scroll]{grid-auto-rows:min-content;align-content:start;justify-content:start;max-height:var(--aia-grid-max-height, 120px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}.aia-grid[data-scroll]::-webkit-scrollbar{display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
470
470
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GridComponent, decorators: [{
|
|
471
471
|
type: Component,
|
|
472
|
-
args: [{ selector: "aia-grid", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: "aia-grid-host" }, template: "<div\n #grid\n class=\"aia-grid\"\n [attr.data-scroll]=\"scroll ? '' : null\"\n [attr.data-aia-group]=\"group ?? null\"\n [style.--aia-grid-min]=\"min\"\n [style.--aia-grid-max]=\"max\"\n [style.--aia-grid-gap]=\"gap\"\n [style.--aia-grid-max-height]=\"maxHeight\"\n [style.grid-template-columns]=\"templateColumns\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".aia-grid-host{display:contents}.aia-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(var(--aia-grid-min),100%),var(--aia-grid-max, 1fr)));gap:var(--aia-grid-gap, 0)}.aia-grid[data-scroll]{grid-auto-rows:min-content;align-content:start;justify-content:start;max-height:var(--aia-grid-max-height, 120px);overflow-y:auto;
|
|
472
|
+
args: [{ selector: "aia-grid", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: "aia-grid-host" }, template: "<div\n #grid\n class=\"aia-grid\"\n [attr.data-scroll]=\"scroll ? '' : null\"\n [attr.data-aia-group]=\"group ?? null\"\n [style.--aia-grid-min]=\"min\"\n [style.--aia-grid-max]=\"max\"\n [style.--aia-grid-gap]=\"gap\"\n [style.--aia-grid-max-height]=\"maxHeight\"\n [style.grid-template-columns]=\"templateColumns\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".aia-grid-host{display:contents}.aia-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(var(--aia-grid-min),100%),var(--aia-grid-max, 1fr)));gap:var(--aia-grid-gap, 0)}.aia-grid[data-scroll]{grid-auto-rows:min-content;align-content:start;justify-content:start;max-height:var(--aia-grid-max-height, 120px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}.aia-grid[data-scroll]::-webkit-scrollbar{display:none}\n"] }]
|
|
473
473
|
}], propDecorators: { min: [{
|
|
474
474
|
type: Input
|
|
475
475
|
}], max: [{
|
|
@@ -868,6 +868,8 @@ class AIAutocompleteDropdownComponent {
|
|
|
868
868
|
/** Concrete resolved mode, or null when `mode` is unset (inherit from ancestor). */
|
|
869
869
|
this.resolvedMode = null;
|
|
870
870
|
this.cdr = inject(ChangeDetectorRef);
|
|
871
|
+
this.host = inject(ElementRef);
|
|
872
|
+
this.zone = inject(NgZone);
|
|
871
873
|
/** Fallback skeleton-bar widths used when loading with zero cached options. */
|
|
872
874
|
this.fallbackSkeletonBarWidths = [159, 119, 164];
|
|
873
875
|
/** Accessible name of the "more below" scroll arrow. */
|
|
@@ -914,6 +916,12 @@ class AIAutocompleteDropdownComponent {
|
|
|
914
916
|
this.showOptionCounts$.next(this.showOptionCounts);
|
|
915
917
|
this.applyMode();
|
|
916
918
|
this.initVm();
|
|
919
|
+
// Wheel/touch over the dropdown never scrolls the page behind it. On the
|
|
920
|
+
// host, so it survives the *ngIf root coming and going; outside the zone,
|
|
921
|
+
// so a wheel gesture doesn't run change detection on every event.
|
|
922
|
+
this.zone.runOutsideAngular(() => {
|
|
923
|
+
this.releaseScroll = containScroll(this.host.nativeElement);
|
|
924
|
+
});
|
|
917
925
|
}
|
|
918
926
|
ngOnChanges(changes) {
|
|
919
927
|
if (changes["showPills"]) {
|
|
@@ -973,6 +981,7 @@ class AIAutocompleteDropdownComponent {
|
|
|
973
981
|
}
|
|
974
982
|
ngOnDestroy() {
|
|
975
983
|
this.teardownModeListener();
|
|
984
|
+
this.releaseScroll?.();
|
|
976
985
|
this.scrollArrowBinding?.controller.destroy();
|
|
977
986
|
this.scrollArrowBinding = null;
|
|
978
987
|
}
|