igniteui-angular 22.1.0-beta.0 → 22.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/igniteui-angular-carousel.mjs +2 -2
- package/fesm2022/igniteui-angular-carousel.mjs.map +1 -1
- package/fesm2022/igniteui-angular-core.mjs +83 -24
- package/fesm2022/igniteui-angular-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs +9 -0
- package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-list.mjs +14 -1
- package/fesm2022/igniteui-angular-list.mjs.map +1 -1
- package/fesm2022/igniteui-angular-navigation-drawer.mjs +6 -1
- package/fesm2022/igniteui-angular-navigation-drawer.mjs.map +1 -1
- package/package.json +1 -1
- package/skills/igniteui-angular-components/SKILL.md +9 -29
- package/skills/igniteui-angular-components/references/charts.md +3 -33
- package/skills/igniteui-angular-components/references/data-display.md +8 -94
- package/skills/igniteui-angular-components/references/directives.md +13 -114
- package/skills/igniteui-angular-components/references/feedback.md +1 -4
- package/skills/igniteui-angular-components/references/form-controls.md +10 -75
- package/skills/igniteui-angular-components/references/layout-manager.md +15 -198
- package/skills/igniteui-angular-components/references/layout.md +1 -4
- package/skills/igniteui-angular-components/references/mcp-setup.md +28 -29
- package/skills/igniteui-angular-components/references/setup.md +6 -4
- package/skills/igniteui-angular-figma-to-app/SKILL.md +37 -25
- package/skills/igniteui-angular-figma-to-app/references/figma-component-map.md +25 -26
- package/skills/igniteui-angular-figma-to-app/references/mcp-setup.md +13 -9
- package/skills/igniteui-angular-figma-to-app/references/validation-patterns.md +2 -2
- package/skills/igniteui-angular-generate-from-image-design/SKILL.md +22 -7
- package/skills/igniteui-angular-generate-from-image-design/references/component-mapping.md +1 -1
- package/skills/igniteui-angular-grids/SKILL.md +21 -25
- package/skills/igniteui-angular-grids/references/data-operations.md +10 -11
- package/skills/igniteui-angular-grids/references/editing.md +3 -4
- package/skills/igniteui-angular-grids/references/features.md +16 -38
- package/skills/igniteui-angular-grids/references/grid-migration.md +6 -8
- package/skills/igniteui-angular-grids/references/paging-remote.md +2 -4
- package/skills/igniteui-angular-grids/references/state.md +4 -5
- package/skills/igniteui-angular-grids/references/structure.md +16 -9
- package/skills/igniteui-angular-grids/references/types.md +19 -33
- package/skills/igniteui-angular-theming/SKILL.md +12 -65
- package/skills/igniteui-angular-theming/references/mcp-setup.md +28 -31
- package/types/igniteui-angular-core.d.ts +32 -5
- package/types/igniteui-angular-list.d.ts +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igniteui-angular-navigation-drawer.mjs","sources":["../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.directives.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.component.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.component.html","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/public_api.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.module.ts","../../../projects/igniteui-angular/navigation-drawer/src/igniteui-angular-navigation-drawer.ts"],"sourcesContent":["import { Directive, HostBinding, Input, TemplateRef, booleanAttribute, inject } from '@angular/core';\n\n@Directive({\n selector: '[igxDrawerItem]',\n exportAs: 'igxDrawerItem',\n standalone: true\n})\nexport class IgxNavDrawerItemDirective {\n\n /**\n * Styles a navigation drawer item as selected.\n * If not set, `active` will have default value `false`.\n *\n * @example\n * ```html\n * <span igxDrawerItem [active]=\"true\">Active Item</span>\n * ```\n */\n @Input({ transform: booleanAttribute }) public active = false;\n\n /**\n * Disables a navigation drawer item.\n * If not set, `disabled` will have default value `false`.\n *\n * @example\n * ```html\n * <span igxDrawerItem [disabled]=\"true\">Disabled Item</span>\n * ```\n */\n @Input({ transform: booleanAttribute }) public disabled = false;\n\n /**\n * Styles a navigation drawer item as a group header.\n * If not set, `isHeader` will have default value `false`.\n *\n * @example\n * ```html\n * <span igxDrawerItem [isHeader]=\"true\">Header</span>\n * ```\n */\n @Input({ transform: booleanAttribute }) public isHeader = false;\n\n /**\n * @hidden\n */\n public readonly activeClass = 'igx-nav-drawer__item--active';\n\n /**\n * @hidden\n */\n public readonly disabledClass = 'igx-nav-drawer__item--disabled';\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer__item')\n public get defaultCSS(): boolean {\n return !this.active && !this.isHeader;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer__item--active')\n public get currentCSS(): boolean {\n return this.active && !this.isHeader && !this.disabled;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer__item--header')\n public get headerCSS(): boolean {\n return this.isHeader;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer__item--disabled')\n public get disabledCSS(): boolean {\n return this.disabled;\n }\n}\n\n@Directive({\n selector: '[igxDrawer]',\n standalone: true\n})\nexport class IgxNavDrawerTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n@Directive({\n selector: '[igxDrawerMini]',\n standalone: true\n})\nexport class IgxNavDrawerMiniTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n","import { AfterContentInit, afterNextRender, afterRenderEffect, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange, ViewChild, Renderer2, booleanAttribute, inject, signal, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport { fromEvent, interval, Subscription } from 'rxjs';\nimport { debounce } from 'rxjs/operators';\nimport { IgxNavigationService, IToggleView } from 'igniteui-angular/core';\nimport { IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavDrawerItemDirective } from './navigation-drawer.directives';\nimport { IgxGestureEvent, IgxTouchManager, PlatformUtil } from 'igniteui-angular/core';\n\nlet NEXT_ID = 0;\n/**\n * **Ignite UI for Angular Navigation Drawer** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/navdrawer)\n *\n * The Ignite UI Navigation Drawer is a collapsible side navigation container commonly used in combination with the Navbar.\n *\n * Example:\n * ```html\n * <igx-nav-drawer id=\"navigation\" [isOpen]=\"true\">\n * <ng-template igxDrawer>\n * <nav>\n * <span igxDrawerItem [isHeader]=\"true\">Email</span>\n * <span igxDrawerItem igxRipple>Inbox</span>\n * <span igxDrawerItem igxRipple>Deleted</span>\n * <span igxDrawerItem igxRipple>Sent</span>\n * </nav>\n * </ng-template>\n * </igx-nav-drawer>\n * ```\n */\n@Component({\n selector: 'igx-nav-drawer',\n templateUrl: 'navigation-drawer.component.html',\n styles: [`\n :host {\n display: block;\n height: 100%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [IgxNavDrawerItemDirective, NgTemplateOutlet]\n})\nexport class IgxNavigationDrawerComponent implements\n IToggleView,\n OnInit,\n AfterContentInit,\n OnDestroy,\n OnChanges {\n private elementRef = inject<ElementRef>(ElementRef);\n private _state = inject(IgxNavigationService, { optional: true });\n private renderer = inject(Renderer2);\n private _document = inject(DOCUMENT);\n private platformUtil = inject(PlatformUtil);\n\n private _isOpen = signal(false);\n private _pinned = signal(false);\n private _miniTemplate = signal<IgxNavDrawerMiniTemplateDirective | undefined>(undefined);\n private _visibleOverlay = computed<boolean>(() => {\n return !this._pinned() && (this._isOpen() || !!this._miniTemplate());\n });\n private _closingAnimation = signal(false);\n\n\n /** @hidden @internal */\n @HostBinding('class.igx-nav-drawer')\n public cssClass = true;\n\n /**\n * ID of the component\n *\n * ```typescript\n * // get\n * let myNavDrawerId = this.navdrawer.id;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer id='navdrawer'></igx-nav-drawer>\n * ```\n */\n @HostBinding('attr.id')\n @Input() public id = `igx-nav-drawer-${NEXT_ID++}`;\n\n /**\n * Position of the Navigation Drawer. Can be \"left\"(default) or \"right\".\n *\n * ```typescript\n * // get\n * let myNavDrawerPosition = this.navdrawer.position;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [position]=\"'left'\"></igx-nav-drawer>\n * ```\n */\n @Input() public position = 'left';\n\n /**\n * Enables the use of touch gestures to manipulate the drawer:\n * - swipe/pan from edge to open, swipe-toggle and pan-drag.\n *\n * ```typescript\n * // get\n * let gesturesEnabled = this.navdrawer.enableGestures;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [enableGestures]='true'></igx-nav-drawer>\n * ```\n */\n @Input({ transform: booleanAttribute }) public enableGestures = true;\n\n /**\n * @hidden\n */\n @Output() public isOpenChange = new EventEmitter<boolean>();\n\n /**\n * Minimum device width required for automatic pin to be toggled.\n * Default is 1024, can be set to a falsy value to disable this behavior.\n *\n * ```typescript\n * // get\n * let navDrawerPinThreshold = this.navdrawer.pinThreshold;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [pinThreshold]='1024'></igx-nav-drawer>\n * ```\n */\n @Input() public pinThreshold = 1024;\n\n /**\n * When pinned the drawer is relatively positioned instead of sitting above content.\n * May require additional layout styling.\n *\n * ```typescript\n * // get\n * let navDrawerIsPinned = this.navdrawer.pin;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [pin]=\"false\"></igx-nav-drawer>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public get pin(): boolean {\n return this._pinned();\n }\n public set pin(v: boolean) {\n this._pinned.set(v);\n }\n\n\n /**\n * Width of the drawer in its open state.\n *\n * ```typescript\n * // get\n * let navDrawerWidth = this.navdrawer.width;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [width]=\"'228px'\"></igx-nav-drawer>\n * ```\n */\n private _width: string;\n\n @Input()\n public get width() {\n return this._width;\n }\n public set width(value: string) {\n this._width = value;\n }\n\n\n /**\n * Enables/disables the animation, when toggling the drawer. Set to `false` by default.\n * ````html\n * <igx-nav-drawer [disableAnimation]=\"true\"></igx-nav-drawer>\n * ````\n */\n @Input({ transform: booleanAttribute }) public disableAnimation = false;\n\n /**\n * Suppresses transitions until the first render has painted, so the drawer\n * settles into its resting (mini/expanded) size without an initial width\n * animation when the aside is first shown as a top-layer popover.\n */\n private _animationsReady = signal(false);\n\n /**\n * Whether transitions are currently suppressed — either explicitly via\n * `disableAnimation`, or implicitly until the first paint has settled.\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer--disable-animation')\n public get animationsDisabled(): boolean {\n return this.disableAnimation || !this._animationsReady();\n }\n\n /**\n * Width of the drawer in its mini state.\n *\n * ```typescript\n * // get\n * let navDrawerMiniWidth = this.navdrawer.miniWidth;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [miniWidth]=\"'34px'\"></igx-nav-drawer>\n * ```\n */\n @Input() public miniWidth: string;\n\n /**\n * Pinned state change output for two-way binding.\n *\n * ```html\n * <igx-nav-drawer [(pin)]='isPinned'></igx-nav-drawer>\n * ```\n */\n @Output() public pinChange = new EventEmitter<boolean>(true);\n /**\n * Event fired as the Navigation Drawer is about to open.\n *\n * ```html\n * <igx-nav-drawer (opening)='onOpening()'></igx-nav-drawer>\n * ```\n */\n @Output() public opening = new EventEmitter();\n /**\n * Event fired when the Navigation Drawer has opened.\n *\n * ```html\n * <igx-nav-drawer (opened)='onOpened()'></igx-nav-drawer>\n * ```\n */\n @Output() public opened = new EventEmitter();\n /**\n * Event fired as the Navigation Drawer is about to close.\n *\n * ```html\n * <igx-nav-drawer (closing)='onClosing()'></igx-nav-drawer>\n * ```\n */\n @Output() public closing = new EventEmitter();\n /**\n * Event fired when the Navigation Drawer has closed.\n *\n * ```html\n * <igx-nav-drawer (closed)='onClosed()'></igx-nav-drawer>\n * ```\n */\n @Output() public closed = new EventEmitter();\n\n /**\n * @hidden\n */\n @ContentChild(IgxNavDrawerTemplateDirective, { read: IgxNavDrawerTemplateDirective })\n protected contentTemplate: IgxNavDrawerTemplateDirective;\n\n @ViewChild('aside', { static: true }) private _drawer: ElementRef<HTMLElement>;\n @ViewChild('overlay', { static: true }) private _overlay: ElementRef<HTMLElement>;\n @ViewChild('dummy', { static: true }) private _styleDummy: ElementRef<HTMLElement>;\n\n /**\n * State of the drawer.\n *\n * ```typescript\n * // get\n * let navDrawerIsOpen = this.navdrawer.isOpen;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [isOpen]='false'></igx-nav-drawer>\n * ```\n *\n * Two-way data binding.\n * ```html\n * <!--set-->\n * <igx-nav-drawer [(isOpen)]='model.isOpen'></igx-nav-drawer>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public get isOpen() {\n return this._isOpen();\n }\n public set isOpen(value) {\n this._isOpen.set(value);\n this.isOpenChange.emit(value);\n }\n\n /**\n * Returns nativeElement of the component.\n *\n * @hidden\n */\n public get element() {\n return this.elementRef.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get template() {\n if (this.miniTemplate && !this.isOpen) {\n return this.miniTemplate.template;\n } else if (this.contentTemplate) {\n return this.contentTemplate.template;\n }\n }\n /**\n * @hidden\n */\n public get miniTemplate(): IgxNavDrawerMiniTemplateDirective {\n return this._miniTemplate();\n }\n\n /**\n * @hidden\n */\n @ContentChild(IgxNavDrawerMiniTemplateDirective, { read: IgxNavDrawerMiniTemplateDirective })\n public set miniTemplate(v: IgxNavDrawerMiniTemplateDirective) {\n this._miniTemplate.set(v);\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-nav-drawer--mini')\n public get isMini(): boolean {\n return !!this.miniTemplate && !this.isOpen;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-nav-drawer--pinned')\n public get pinned(): boolean {\n return !!this.pin;\n }\n\n /**\n * @hidden\n */\n @HostBinding('style.--ig-nav-drawer-size')\n public get normalSize() {\n if (!this.isOpen) {\n return '0px';\n }\n\n return this.width;\n }\n\n /**\n * @hidden\n */\n @HostBinding('style.--ig-nav-drawer-size--mini')\n public get miniSize() {\n if (this.miniTemplate && this.miniWidth) {\n return this.miniWidth;\n }\n }\n\n /** @hidden */\n @HostBinding('style.order')\n public get isPinnedRight() {\n return this.pin && this.position === 'right' ? '1' : '0';\n }\n\n private _gesturesAttached = false;\n private _gestures: IgxTouchManager | null = null;\n private _widthCache: { width: number; miniWidth: number; windowWidth: number } = { width: null, miniWidth: null, windowWidth: null };\n private _resizeObserver: Subscription;\n private css: { [name: string]: string } = {\n drawer: 'igx-nav-drawer__aside',\n mini: 'igx-nav-drawer__aside--mini',\n overlay: 'igx-nav-drawer__overlay',\n styleDummy: 'igx-nav-drawer__style-dummy'\n };\n\n /**\n * @hidden\n */\n public get drawer() {\n return this._drawer?.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get overlay() {\n return this._overlay?.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get styleDummy() {\n return this._styleDummy.nativeElement;\n }\n\n /** Pan animation properties */\n private _panning = false;\n private _panStartWidth: number;\n private _panLimit: number;\n\n /**\n * Property to decide whether to change width or translate the drawer from pan gesture.\n *\n * @hidden\n */\n public get hasAnimateWidth(): boolean {\n return this.pin || !!this.miniTemplate;\n }\n\n private _maxEdgeZone = 50;\n /**\n * Used for touch gestures (swipe and pan).\n * Defaults to 50 (in px) and is extended to at least 110% of the mini template width if available.\n *\n * @hidden\n */\n public get maxEdgeZone() {\n return this._maxEdgeZone;\n }\n\n /**\n * Gets the Drawer width for specific state.\n * Will attempt to evaluate requested state and cache.\n *\n *\n * @hidden\n */\n public get expectedWidth() {\n return this.getExpectedWidth(false);\n }\n\n /**\n * Get the Drawer mini width for specific state.\n * Will attempt to evaluate requested state and cache.\n *\n * @hidden\n */\n public get expectedMiniWidth() {\n return this.getExpectedWidth(true);\n }\n\n /**\n * Exposes optional navigation service\n *\n * @hidden\n */\n public get state() {\n return this._state;\n }\n\n constructor() {\n afterRenderEffect(() => {\n if (this._closingAnimation()) return;\n this.togglePopover(this._visibleOverlay());\n });\n\n // Enable transitions only after the first paint. The initial popover show\n // resolves the aside's width (e.g. to its mini size) as it enters the top\n // layer; deferring past the first frame lets that settle instantly instead\n // of animating from the fallback/expanded width.\n afterNextRender(() => {\n requestAnimationFrame(() => this._animationsReady.set(true));\n });\n }\n\n /**\n * @hidden\n */\n public ngOnInit() {\n // DOM and @Input()-s initialized\n if (this._state) {\n this._state.add(this.id, this);\n }\n }\n\n /**\n * @hidden\n */\n public ngAfterContentInit() {\n // wait for template and ng-content to be ready\n this.updateEdgeZone();\n this.checkPinThreshold();\n\n this.ensureEvents();\n\n // TODO: apply platform-safe Ruler from http://plnkr.co/edit/81nWDyreYMzkunihfRgX?p=preview\n // (https://github.com/angular/angular/issues/6515), blocked by https://github.com/angular/angular/issues/6904\n }\n\n /**\n * @hidden\n */\n public ngOnDestroy() {\n this.detachGestures();\n if (this._state) {\n this._state.remove(this.id);\n }\n if (this._resizeObserver) {\n this._resizeObserver.unsubscribe();\n }\n }\n\n /**\n * @hidden\n */\n public ngOnChanges(changes: { [propName: string]: SimpleChange }) {\n // simple settings can come from attribute set (rather than binding), make sure boolean props are converted\n if (changes.enableGestures && changes.enableGestures.currentValue !== undefined) {\n this.enableGestures = !!(this.enableGestures && this.enableGestures.toString() === 'true');\n this.ensureEvents();\n }\n if (changes.pin && changes.pin.currentValue !== undefined) {\n this.pin = !!(this.pin && this.pin.toString() === 'true');\n this.ensureEvents();\n }\n\n if (changes.pinThreshold) {\n if (this.pinThreshold) {\n this.ensureEvents();\n this.checkPinThreshold();\n }\n }\n\n if (changes.miniWidth) {\n this.updateEdgeZone();\n }\n }\n\n /**\n * Toggle the open state of the Navigation Drawer.\n *\n * ```typescript\n * this.navdrawer.toggle();\n * ```\n */\n public toggle() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Open the Navigation Drawer. Has no effect if already opened.\n *\n * ```typescript\n * this.navdrawer.open();\n * ```\n */\n public open() {\n if (this._panning) {\n this.resetPan();\n }\n\n if (this.isOpen) {\n return;\n }\n\n this.opening.emit();\n this.isOpen = true;\n\n // TODO: Switch to animate API when available\n // var animationCss = this.animate.css();\n // animationCss\n // .setStyles({'width':'50px'}, {'width':'400px'})\n // .start(this.elementRef.nativeElement)\n // .onComplete(() => animationCss.setToStyles({'width':'auto'}).start(this.elementRef.nativeElement));\n\n this.elementRef.nativeElement.addEventListener('transitionend', this.toggleOpenedEvent, false);\n\n requestAnimationFrame(()=>{});\n }\n\n /**\n * Close the Navigation Drawer. Has no effect if already closed.\n *\n * ```typescript\n * this.navdrawer.close();\n * ```\n */\n public close() {\n if (this._panning) {\n this.resetPan();\n }\n\n if (!this.isOpen) {\n return;\n }\n\n this.closing.emit();\n\n // TODO: intersection observer for close popover instead of transitionend\n this._closingAnimation.set(true);\n this.isOpen = false;\n this.elementRef.nativeElement.addEventListener('transitionend', this.toggleClosedEvent, false);\n }\n\n /**\n * @hidden\n */\n protected set_maxEdgeZone(value: number) {\n this._maxEdgeZone = value;\n }\n\n /**\n * Get the Drawer width for specific state. Will attempt to evaluate requested state and cache.\n *\n * @hidden\n * @param [mini] - Request mini width instead\n */\n protected getExpectedWidth(mini?: boolean): number {\n if (mini) {\n if (!this.miniTemplate) {\n return 0;\n }\n if (this.miniWidth) {\n return parseFloat(this.miniWidth);\n } else {\n // if (!this.isOpen) { // This WON'T work due to transition timings...\n // return this.elementRef.nativeElement.children[1].offsetWidth;\n // } else {\n if (this._widthCache.miniWidth === null) {\n // force class for width calc. TODO?\n // force class for width calc. TODO?\n this.renderer.addClass(this.styleDummy, this.css.drawer);\n this.renderer.addClass(this.styleDummy, this.css.mini);\n this._widthCache.miniWidth = this.styleDummy.offsetWidth;\n this.renderer.removeClass(this.styleDummy, this.css.drawer);\n this.renderer.removeClass(this.styleDummy, this.css.mini);\n }\n return this._widthCache.miniWidth;\n }\n } else {\n if (this.width) {\n return parseFloat(this.width);\n } else {\n if (this._widthCache.width === null) {\n // force class for width calc. TODO?\n // force class for width calc. TODO?\n this.renderer.addClass(this.styleDummy, this.css.drawer);\n this._widthCache.width = this.styleDummy.offsetWidth;\n this.renderer.removeClass(this.styleDummy, this.css.drawer);\n }\n return this._widthCache.width;\n }\n }\n }\n\n private getWindowWidth() {\n return (window.innerWidth > 0) ? window.innerWidth : screen.width;\n }\n\n /**\n * Get current Drawer width.\n */\n private getDrawerWidth(): number {\n return this.drawer.offsetWidth;\n }\n\n private ensureEvents() {\n // set listeners for swipe/pan only if needed, but just once\n if (this.enableGestures && !this.pin) {\n if (!this._gesturesAttached) {\n this._gestures = new IgxTouchManager(this._document, {\n pointerDown: (event) => this.panStart(event),\n panMove: (event) => this.pan(event),\n swipe: (event) => this.swipe(event),\n panEnd: (event) => this.panEnd(event),\n panCancel: () => this.panCancel()\n }, { pointerTypes: ['touch'], setPointerCapture: false });\n\n this._gesturesAttached = true;\n }\n } else {\n this.detachGestures();\n }\n if (!this._resizeObserver && this.platformUtil.isBrowser) {\n this._resizeObserver = fromEvent(window, 'resize').pipe(debounce(() => interval(150)))\n .subscribe((value) => {\n this.checkPinThreshold(value);\n });\n }\n }\n\n private detachGestures() {\n this._gestures?.destroy();\n this._gestures = null;\n this._gesturesAttached = false;\n }\n\n private updateEdgeZone() {\n let maxValue;\n\n if (this.miniTemplate) {\n maxValue = Math.max(this._maxEdgeZone, this.getExpectedWidth(true) * 1.1);\n this.set_maxEdgeZone(maxValue);\n }\n }\n\n private checkPinThreshold = (evt?: Event) => {\n if (!this.platformUtil.isBrowser) {\n return;\n }\n let windowWidth;\n if (this.pinThreshold) {\n windowWidth = this.getWindowWidth();\n if (evt && this._widthCache.windowWidth === windowWidth) {\n return;\n }\n this._widthCache.windowWidth = windowWidth;\n if (!this.pin && windowWidth >= this.pinThreshold) {\n this.pin = true;\n this.pinChange.emit(true);\n } else if (this.pin && windowWidth < this.pinThreshold) {\n this.pin = false;\n this.pinChange.emit(false);\n }\n }\n };\n\n private swipe = (evt: IgxGestureEvent) => {\n // TODO: Could also force input type: http://stackoverflow.com/a/27108052\n if (!this.enableGestures || evt.pointerType !== 'touch') {\n return;\n }\n\n // HammerJS swipe is horizontal-only by default, don't check deltaY\n let deltaX;\n let startPosition;\n if (this.position === 'right') {\n // when on the right use inverse of deltaX\n deltaX = -evt.deltaX;\n startPosition = this.getWindowWidth() - (evt.center.x + evt.distance);\n } else {\n deltaX = evt.deltaX;\n startPosition = evt.center.x - evt.distance;\n }\n // only accept closing swipe (ignoring minEdgeZone) when the drawer is expanded:\n if ((this.isOpen && deltaX < 0) ||\n // positive deltaX from the edge:\n (deltaX > 0 && startPosition < this.maxEdgeZone)) {\n this.toggle();\n }\n };\n\n private panStart = (evt: IgxGestureEvent) => {\n if (!this.enableGestures || this.pin || evt.pointerType !== 'touch') {\n return;\n }\n const startPosition = this.position === 'right' ? this.getWindowWidth() - (evt.center.x + evt.distance)\n : evt.center.x - evt.distance;\n\n // cache width during animation, flag to allow further handling\n if (this.isOpen || (startPosition < this.maxEdgeZone)) {\n this._panning = true;\n this._panStartWidth = this.getExpectedWidth(!this.isOpen);\n this._panLimit = this.getExpectedWidth(this.isOpen);\n\n this.renderer.addClass(this.overlay, 'panning');\n this.renderer.addClass(this.drawer, 'panning');\n\n if (!this.hasAnimateWidth) {\n // Translate-mode pan slides the panel via `transform`, but its width is\n // driven by `--ig-nav-drawer-size`, which is forced to 0 while the drawer\n // is closed. Pin the real width for the duration of the gesture so the\n // slide reveals the full panel instead of just its padding/border.\n this.renderer.setStyle(this.drawer, 'width', `${this.getExpectedWidth(false)}px`);\n }\n }\n };\n\n private pan = (evt: IgxGestureEvent) => {\n // TODO: input.deltaX = prevDelta.x + (center.x - offset.x);\n // get actual delta (not total session one) from event?\n // pan WILL also fire after a full swipe, only resize on flag\n if (!this._panning) {\n return;\n }\n const right: boolean = this.position === 'right';\n // when on the right use inverse of deltaX\n const deltaX = right ? -evt.deltaX : evt.deltaX;\n let newX;\n let percent;\n const visibleWidth = this._panStartWidth + deltaX;\n\n if (this.isOpen && deltaX < 0) {\n // when visibleWidth hits limit - stop animating\n if (visibleWidth <= this._panLimit) {\n return;\n }\n\n if (this.hasAnimateWidth) {\n percent = (visibleWidth - this._panLimit) / (this._panStartWidth - this._panLimit);\n newX = visibleWidth;\n } else {\n percent = visibleWidth / this._panStartWidth;\n newX = evt.deltaX;\n }\n this.setXSize(newX, percent.toPrecision(2));\n\n } else if (!this.isOpen && deltaX > 0) {\n // when visibleWidth hits limit - stop animating\n if (visibleWidth >= this._panLimit) {\n return;\n }\n\n if (this.hasAnimateWidth) {\n percent = (visibleWidth - this._panStartWidth) / (this._panLimit - this._panStartWidth);\n newX = visibleWidth;\n } else {\n percent = visibleWidth / this._panLimit;\n newX = (this._panLimit - visibleWidth) * (right ? 1 : -1);\n }\n this.setXSize(newX, percent.toPrecision(2));\n }\n };\n\n private panEnd = (evt: IgxGestureEvent) => {\n if (this._panning) {\n const deltaX = this.position === 'right' ? -evt.deltaX : evt.deltaX;\n const visibleWidth: number = this._panStartWidth + deltaX;\n this.resetPan();\n\n // check if pan brought the drawer to 50%\n if (this.isOpen && visibleWidth <= this._panStartWidth / 2) {\n this.close();\n } else if (!this.isOpen && visibleWidth >= this._panLimit / 2) {\n this.open();\n }\n this._panStartWidth = null;\n }\n };\n\n private panCancel = () => {\n if (this._panning) {\n this.resetPan();\n this._panStartWidth = null;\n }\n };\n\n private resetPan() {\n this._panning = false;\n /* styles fail to apply when set on parent due to extra attributes, prob ng bug */\n /* styles fail to apply when set on parent due to extra attributes, prob ng bug */\n this.renderer.removeClass(this.overlay, 'panning');\n this.renderer.removeClass(this.drawer, 'panning');\n this.renderer.removeStyle(this.drawer, 'width');\n this.setXSize(0, '');\n }\n\n /**\n * Sets the absolute position or width in case the drawer doesn't change position.\n *\n * @param x the number pixels to translate on the X axis or the width to set. 0 width will clear the style instead.\n * @param opacity optional value to apply to the overlay\n */\n private setXSize(x: number, opacity?: string) {\n // Angular polyfills patches window.requestAnimationFrame, but switch to DomAdapter API (TODO)\n window.requestAnimationFrame(() => {\n if (this.hasAnimateWidth) {\n this.renderer.setStyle(this.drawer, 'width', x ? Math.abs(x) + 'px' : '');\n } else {\n this.renderer.setStyle(this.drawer, 'transform', x ? 'translate3d(' + x + 'px,0,0)' : '');\n this.renderer.setStyle(this.drawer, '-webkit-transform', x ? 'translate3d(' + x + 'px,0,0)' : '');\n }\n if (opacity !== undefined) {\n this.renderer.setStyle(this.overlay, 'opacity', opacity);\n }\n });\n }\n\n private togglePopover(show: boolean) {\n // check element and functionality exist:\n if (typeof this.drawer?.showPopover !== 'function') return;\n\n const popoverOpen = this.drawer.matches(':popover-open');\n if (show === popoverOpen) return;\n\n if (show) {\n this.overlay.showPopover();\n this.drawer.showPopover();\n } else {\n this.overlay.hidePopover();\n this.drawer.hidePopover();\n }\n }\n\n private toggleOpenedEvent = () => {\n this.elementRef.nativeElement.removeEventListener('transitionend', this.toggleOpenedEvent, false);\n this.opened.emit();\n };\n\n private toggleClosedEvent = () => {\n this.elementRef.nativeElement.removeEventListener('transitionend', this.toggleClosedEvent, false);\n this._closingAnimation.set(false);\n this.closed.emit();\n };\n}\n","<ng-template #defaultItemsTemplate>\n <div igxDrawerItem [isHeader]=\"true\">Navigation Drawer</div>\n <div igxDrawerItem> Start by adding</div>\n <div igxDrawerItem> <code><ng-template igxDrawer></code> </div>\n <div igxDrawerItem> And some items inside </div>\n <div igxDrawerItem> Style with igxDrawerItem </div>\n <div igxDrawerItem> and igxRipple directives</div>\n <div igxDrawerItem [disabled]=\"true\">Disabled Item</div>\n</ng-template>\n\n<div [hidden]=\"pin\"\n [attr.popover]=\"pin ? null : 'manual'\"\n class=\"igx-nav-drawer__overlay\"\n [class.igx-nav-drawer__overlay--hidden]=\"!isOpen\"\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\"\n (click)=\"close()\" #overlay>\n</div>\n<nav\n class=\"igx-nav-drawer__aside\"\n [attr.popover]=\"pin ? null : 'manual'\"\n [class.igx-nav-drawer__aside--collapsed]=\"!miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--mini]=\"miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--normal]=\"!miniTemplate || isOpen\"\n [class.igx-nav-drawer__aside--pinned]=\"pin\"\n [class.igx-nav-drawer__aside--right]=\"position === 'right'\" #aside\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\">\n\n <ng-container *ngTemplateOutlet=\"template || defaultItemsTemplate\"></ng-container>\n</nav>\n<div class=\"igx-nav-drawer__style-dummy\" #dummy></div>\n","import { IgxNavigationDrawerComponent } from './navigation-drawer.component';\nimport { IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective } from './navigation-drawer.directives';\n\nexport * from './navigation-drawer.component';\nexport * from './navigation-drawer.directives';\n\n/* NOTE: Navigation drawer directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_NAVIGATION_DRAWER_DIRECTIVES = [\n IgxNavigationDrawerComponent,\n IgxNavDrawerItemDirective,\n IgxNavDrawerMiniTemplateDirective,\n IgxNavDrawerTemplateDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_NAVIGATION_DRAWER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n */\n@NgModule({\n imports: [\n ...IGX_NAVIGATION_DRAWER_DIRECTIVES\n ],\n exports: [\n ...IGX_NAVIGATION_DRAWER_DIRECTIVES\n ]\n})\nexport class IgxNavigationDrawerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxNavigationDrawerComponent","i2.IgxNavDrawerItemDirective","i2.IgxNavDrawerMiniTemplateDirective","i2.IgxNavDrawerTemplateDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igniteui-angular-navigation-drawer.mjs","sources":["../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.directives.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.component.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.component.html","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/public_api.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.module.ts","../../../projects/igniteui-angular/navigation-drawer/src/igniteui-angular-navigation-drawer.ts"],"sourcesContent":["import { Directive, HostBinding, Input, TemplateRef, booleanAttribute, inject } from '@angular/core';\n\n@Directive({\n selector: '[igxDrawerItem]',\n exportAs: 'igxDrawerItem',\n standalone: true\n})\nexport class IgxNavDrawerItemDirective {\n\n /**\n * Styles a navigation drawer item as selected.\n * If not set, `active` will have default value `false`.\n *\n * @example\n * ```html\n * <span igxDrawerItem [active]=\"true\">Active Item</span>\n * ```\n */\n @Input({ transform: booleanAttribute }) public active = false;\n\n /**\n * Disables a navigation drawer item.\n * If not set, `disabled` will have default value `false`.\n *\n * @example\n * ```html\n * <span igxDrawerItem [disabled]=\"true\">Disabled Item</span>\n * ```\n */\n @Input({ transform: booleanAttribute }) public disabled = false;\n\n /**\n * Styles a navigation drawer item as a group header.\n * If not set, `isHeader` will have default value `false`.\n *\n * @example\n * ```html\n * <span igxDrawerItem [isHeader]=\"true\">Header</span>\n * ```\n */\n @Input({ transform: booleanAttribute }) public isHeader = false;\n\n /**\n * @hidden\n */\n public readonly activeClass = 'igx-nav-drawer__item--active';\n\n /**\n * @hidden\n */\n public readonly disabledClass = 'igx-nav-drawer__item--disabled';\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer__item')\n public get defaultCSS(): boolean {\n return !this.active && !this.isHeader;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer__item--active')\n public get currentCSS(): boolean {\n return this.active && !this.isHeader && !this.disabled;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer__item--header')\n public get headerCSS(): boolean {\n return this.isHeader;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer__item--disabled')\n public get disabledCSS(): boolean {\n return this.disabled;\n }\n}\n\n@Directive({\n selector: '[igxDrawer]',\n standalone: true\n})\nexport class IgxNavDrawerTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n@Directive({\n selector: '[igxDrawerMini]',\n standalone: true\n})\nexport class IgxNavDrawerMiniTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n","import { AfterContentInit, afterNextRender, afterRenderEffect, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange, ViewChild, Renderer2, booleanAttribute, inject, signal, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport { fromEvent, interval, Subscription } from 'rxjs';\nimport { debounce } from 'rxjs/operators';\nimport { IgxNavigationService, IToggleView } from 'igniteui-angular/core';\nimport { IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavDrawerItemDirective } from './navigation-drawer.directives';\nimport { IgxGestureEvent, IgxTouchManager, PlatformUtil } from 'igniteui-angular/core';\n\nlet NEXT_ID = 0;\n/**\n * **Ignite UI for Angular Navigation Drawer** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/navdrawer)\n *\n * The Ignite UI Navigation Drawer is a collapsible side navigation container commonly used in combination with the Navbar.\n *\n * Example:\n * ```html\n * <igx-nav-drawer id=\"navigation\" [isOpen]=\"true\">\n * <ng-template igxDrawer>\n * <nav>\n * <span igxDrawerItem [isHeader]=\"true\">Email</span>\n * <span igxDrawerItem igxRipple>Inbox</span>\n * <span igxDrawerItem igxRipple>Deleted</span>\n * <span igxDrawerItem igxRipple>Sent</span>\n * </nav>\n * </ng-template>\n * </igx-nav-drawer>\n * ```\n */\n@Component({\n selector: 'igx-nav-drawer',\n templateUrl: 'navigation-drawer.component.html',\n styles: [`\n :host {\n display: block;\n height: 100%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [IgxNavDrawerItemDirective, NgTemplateOutlet]\n})\nexport class IgxNavigationDrawerComponent implements\n IToggleView,\n OnInit,\n AfterContentInit,\n OnDestroy,\n OnChanges {\n private elementRef = inject<ElementRef>(ElementRef);\n private _state = inject(IgxNavigationService, { optional: true });\n private renderer = inject(Renderer2);\n private _document = inject(DOCUMENT);\n private platformUtil = inject(PlatformUtil);\n\n private _isOpen = signal(false);\n private _pinned = signal(false);\n private _miniTemplate = signal<IgxNavDrawerMiniTemplateDirective | undefined>(undefined);\n private _visibleOverlay = computed<boolean>(() => {\n return !this._pinned() && (this._isOpen() || !!this._miniTemplate());\n });\n private _closingAnimation = signal(false);\n\n\n /** @hidden @internal */\n @HostBinding('class.igx-nav-drawer')\n public cssClass = true;\n\n /**\n * ID of the component\n *\n * ```typescript\n * // get\n * let myNavDrawerId = this.navdrawer.id;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer id='navdrawer'></igx-nav-drawer>\n * ```\n */\n @HostBinding('attr.id')\n @Input() public id = `igx-nav-drawer-${NEXT_ID++}`;\n\n /**\n * Position of the Navigation Drawer. Can be \"left\"(default) or \"right\".\n *\n * ```typescript\n * // get\n * let myNavDrawerPosition = this.navdrawer.position;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [position]=\"'left'\"></igx-nav-drawer>\n * ```\n */\n @Input() public position = 'left';\n\n /**\n * Enables the use of touch gestures to manipulate the drawer:\n * - swipe/pan from edge to open, swipe-toggle and pan-drag.\n *\n * ```typescript\n * // get\n * let gesturesEnabled = this.navdrawer.enableGestures;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [enableGestures]='true'></igx-nav-drawer>\n * ```\n */\n @Input({ transform: booleanAttribute }) public enableGestures = true;\n\n /**\n * @hidden\n */\n @Output() public isOpenChange = new EventEmitter<boolean>();\n\n /**\n * Minimum device width required for automatic pin to be toggled.\n * Default is 1024, can be set to a falsy value to disable this behavior.\n *\n * ```typescript\n * // get\n * let navDrawerPinThreshold = this.navdrawer.pinThreshold;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [pinThreshold]='1024'></igx-nav-drawer>\n * ```\n */\n @Input() public pinThreshold = 1024;\n\n /**\n * When pinned the drawer is relatively positioned instead of sitting above content.\n * May require additional layout styling.\n *\n * ```typescript\n * // get\n * let navDrawerIsPinned = this.navdrawer.pin;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [pin]=\"false\"></igx-nav-drawer>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public get pin(): boolean {\n return this._pinned();\n }\n public set pin(v: boolean) {\n this._pinned.set(v);\n }\n\n\n /**\n * Width of the drawer in its open state.\n *\n * ```typescript\n * // get\n * let navDrawerWidth = this.navdrawer.width;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [width]=\"'228px'\"></igx-nav-drawer>\n * ```\n */\n private _width: string;\n\n @Input()\n public get width() {\n return this._width;\n }\n public set width(value: string) {\n this._width = value;\n }\n\n\n /**\n * Enables/disables the animation, when toggling the drawer. Set to `false` by default.\n * ````html\n * <igx-nav-drawer [disableAnimation]=\"true\"></igx-nav-drawer>\n * ````\n */\n @Input({ transform: booleanAttribute }) public disableAnimation = false;\n\n /**\n * Suppresses transitions until the first render has painted, so the drawer\n * settles into its resting (mini/expanded) size without an initial width\n * animation when the aside is first shown as a top-layer popover.\n */\n private _animationsReady = signal(false);\n\n /**\n * Whether transitions are currently suppressed — either explicitly via\n * `disableAnimation`, or implicitly until the first paint has settled.\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer--disable-animation')\n public get animationsDisabled(): boolean {\n return this.disableAnimation || !this._animationsReady();\n }\n\n /**\n * Width of the drawer in its mini state.\n *\n * ```typescript\n * // get\n * let navDrawerMiniWidth = this.navdrawer.miniWidth;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [miniWidth]=\"'34px'\"></igx-nav-drawer>\n * ```\n */\n @Input() public miniWidth: string;\n\n /**\n * Pinned state change output for two-way binding.\n *\n * ```html\n * <igx-nav-drawer [(pin)]='isPinned'></igx-nav-drawer>\n * ```\n */\n @Output() public pinChange = new EventEmitter<boolean>(true);\n /**\n * Event fired as the Navigation Drawer is about to open.\n *\n * ```html\n * <igx-nav-drawer (opening)='onOpening()'></igx-nav-drawer>\n * ```\n */\n @Output() public opening = new EventEmitter();\n /**\n * Event fired when the Navigation Drawer has opened.\n *\n * ```html\n * <igx-nav-drawer (opened)='onOpened()'></igx-nav-drawer>\n * ```\n */\n @Output() public opened = new EventEmitter();\n /**\n * Event fired as the Navigation Drawer is about to close.\n *\n * ```html\n * <igx-nav-drawer (closing)='onClosing()'></igx-nav-drawer>\n * ```\n */\n @Output() public closing = new EventEmitter();\n /**\n * Event fired when the Navigation Drawer has closed.\n *\n * ```html\n * <igx-nav-drawer (closed)='onClosed()'></igx-nav-drawer>\n * ```\n */\n @Output() public closed = new EventEmitter();\n\n /**\n * @hidden\n */\n @ContentChild(IgxNavDrawerTemplateDirective, { read: IgxNavDrawerTemplateDirective })\n protected contentTemplate: IgxNavDrawerTemplateDirective;\n\n @ViewChild('aside', { static: true }) private _drawer: ElementRef<HTMLElement>;\n @ViewChild('overlay', { static: true }) private _overlay: ElementRef<HTMLElement>;\n @ViewChild('dummy', { static: true }) private _styleDummy: ElementRef<HTMLElement>;\n\n /**\n * State of the drawer.\n *\n * ```typescript\n * // get\n * let navDrawerIsOpen = this.navdrawer.isOpen;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [isOpen]='false'></igx-nav-drawer>\n * ```\n *\n * Two-way data binding.\n * ```html\n * <!--set-->\n * <igx-nav-drawer [(isOpen)]='model.isOpen'></igx-nav-drawer>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public get isOpen() {\n return this._isOpen();\n }\n public set isOpen(value) {\n this._isOpen.set(value);\n this.isOpenChange.emit(value);\n }\n\n /**\n * Returns nativeElement of the component.\n *\n * @hidden\n */\n public get element() {\n return this.elementRef.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get template() {\n if (this.miniTemplate && !this.isOpen) {\n return this.miniTemplate.template;\n } else if (this.contentTemplate) {\n return this.contentTemplate.template;\n }\n }\n /**\n * @hidden\n */\n public get miniTemplate(): IgxNavDrawerMiniTemplateDirective {\n return this._miniTemplate();\n }\n\n /**\n * @hidden\n */\n @ContentChild(IgxNavDrawerMiniTemplateDirective, { read: IgxNavDrawerMiniTemplateDirective })\n public set miniTemplate(v: IgxNavDrawerMiniTemplateDirective) {\n this._miniTemplate.set(v);\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-nav-drawer--mini')\n public get isMini(): boolean {\n return !!this.miniTemplate && !this.isOpen;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-nav-drawer--pinned')\n public get pinned(): boolean {\n return !!this.pin;\n }\n\n /**\n * @hidden\n */\n @HostBinding('style.--ig-nav-drawer-size')\n public get normalSize() {\n if (!this.isOpen) {\n return '0px';\n }\n\n return this.width;\n }\n\n /**\n * @hidden\n */\n @HostBinding('style.--ig-nav-drawer-size--mini')\n public get miniSize() {\n if (this.miniTemplate && this.miniWidth) {\n return this.miniWidth;\n }\n }\n\n /** @hidden */\n @HostBinding('style.order')\n public get isPinnedRight() {\n return this.pin && this.position === 'right' ? '1' : '0';\n }\n\n private _gesturesAttached = false;\n private _gestures: IgxTouchManager | null = null;\n private _widthCache: { width: number; miniWidth: number; windowWidth: number } = { width: null, miniWidth: null, windowWidth: null };\n private _resizeObserver: Subscription;\n private css: { [name: string]: string } = {\n drawer: 'igx-nav-drawer__aside',\n mini: 'igx-nav-drawer__aside--mini',\n overlay: 'igx-nav-drawer__overlay',\n styleDummy: 'igx-nav-drawer__style-dummy'\n };\n\n /**\n * @hidden\n */\n public get drawer() {\n return this._drawer?.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get overlay() {\n return this._overlay?.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get styleDummy() {\n return this._styleDummy.nativeElement;\n }\n\n /** Pan animation properties */\n private _panning = false;\n private _panStartWidth: number;\n private _panLimit: number;\n\n /**\n * Property to decide whether to change width or translate the drawer from pan gesture.\n *\n * @hidden\n */\n public get hasAnimateWidth(): boolean {\n return this.pin || !!this.miniTemplate;\n }\n\n private _maxEdgeZone = 50;\n /**\n * Used for touch gestures (swipe and pan).\n * Defaults to 50 (in px) and is extended to at least 110% of the mini template width if available.\n *\n * @hidden\n */\n public get maxEdgeZone() {\n return this._maxEdgeZone;\n }\n\n /**\n * Gets the Drawer width for specific state.\n * Will attempt to evaluate requested state and cache.\n *\n *\n * @hidden\n */\n public get expectedWidth() {\n return this.getExpectedWidth(false);\n }\n\n /**\n * Get the Drawer mini width for specific state.\n * Will attempt to evaluate requested state and cache.\n *\n * @hidden\n */\n public get expectedMiniWidth() {\n return this.getExpectedWidth(true);\n }\n\n /**\n * Exposes optional navigation service\n *\n * @hidden\n */\n public get state() {\n return this._state;\n }\n\n constructor() {\n afterRenderEffect(() => {\n if (this._closingAnimation()) return;\n this.togglePopover(this._visibleOverlay());\n });\n\n // Enable transitions only after the first paint. The initial popover show\n // resolves the aside's width (e.g. to its mini size) as it enters the top\n // layer; deferring past the first frame lets that settle instantly instead\n // of animating from the fallback/expanded width.\n afterNextRender(() => {\n requestAnimationFrame(() => this._animationsReady.set(true));\n });\n }\n\n /**\n * @hidden\n */\n public ngOnInit() {\n // DOM and @Input()-s initialized\n if (this._state) {\n this._state.add(this.id, this);\n }\n }\n\n /**\n * @hidden\n */\n public ngAfterContentInit() {\n // wait for template and ng-content to be ready\n this.updateEdgeZone();\n this.checkPinThreshold();\n\n this.ensureEvents();\n\n // TODO: apply platform-safe Ruler from http://plnkr.co/edit/81nWDyreYMzkunihfRgX?p=preview\n // (https://github.com/angular/angular/issues/6515), blocked by https://github.com/angular/angular/issues/6904\n }\n\n /**\n * @hidden\n */\n public ngOnDestroy() {\n this.detachGestures();\n if (this._state) {\n this._state.remove(this.id);\n }\n if (this._resizeObserver) {\n this._resizeObserver.unsubscribe();\n }\n }\n\n /**\n * @hidden\n */\n public ngOnChanges(changes: { [propName: string]: SimpleChange }) {\n // simple settings can come from attribute set (rather than binding), make sure boolean props are converted\n if (changes.enableGestures && changes.enableGestures.currentValue !== undefined) {\n this.enableGestures = !!(this.enableGestures && this.enableGestures.toString() === 'true');\n this.ensureEvents();\n }\n if (changes.pin && changes.pin.currentValue !== undefined) {\n this.pin = !!(this.pin && this.pin.toString() === 'true');\n this.ensureEvents();\n }\n\n if (changes.pinThreshold) {\n if (this.pinThreshold) {\n this.ensureEvents();\n this.checkPinThreshold();\n }\n }\n\n if (changes.miniWidth) {\n this.updateEdgeZone();\n }\n }\n\n /**\n * Toggle the open state of the Navigation Drawer.\n *\n * ```typescript\n * this.navdrawer.toggle();\n * ```\n */\n public toggle() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Open the Navigation Drawer. Has no effect if already opened.\n *\n * ```typescript\n * this.navdrawer.open();\n * ```\n */\n public open() {\n if (this._panning) {\n this.resetPan();\n }\n\n if (this.isOpen) {\n return;\n }\n\n this.opening.emit();\n this.isOpen = true;\n\n // TODO: Switch to animate API when available\n // var animationCss = this.animate.css();\n // animationCss\n // .setStyles({'width':'50px'}, {'width':'400px'})\n // .start(this.elementRef.nativeElement)\n // .onComplete(() => animationCss.setToStyles({'width':'auto'}).start(this.elementRef.nativeElement));\n\n this.elementRef.nativeElement.addEventListener('transitionend', this.toggleOpenedEvent, false);\n\n requestAnimationFrame(()=>{});\n }\n\n /**\n * Close the Navigation Drawer. Has no effect if already closed.\n *\n * ```typescript\n * this.navdrawer.close();\n * ```\n */\n public close() {\n if (this._panning) {\n this.resetPan();\n }\n\n if (!this.isOpen) {\n return;\n }\n\n this.closing.emit();\n\n // TODO: intersection observer for close popover instead of transitionend\n this._closingAnimation.set(true);\n this.isOpen = false;\n this.elementRef.nativeElement.addEventListener('transitionend', this.toggleClosedEvent, false);\n }\n\n /**\n * @hidden\n */\n protected set_maxEdgeZone(value: number) {\n this._maxEdgeZone = value;\n }\n\n /**\n * Get the Drawer width for specific state. Will attempt to evaluate requested state and cache.\n *\n * @hidden\n * @param [mini] - Request mini width instead\n */\n protected getExpectedWidth(mini?: boolean): number {\n if (mini) {\n if (!this.miniTemplate) {\n return 0;\n }\n if (this.miniWidth) {\n return parseFloat(this.miniWidth);\n } else {\n // if (!this.isOpen) { // This WON'T work due to transition timings...\n // return this.elementRef.nativeElement.children[1].offsetWidth;\n // } else {\n if (this._widthCache.miniWidth === null) {\n // force class for width calc. TODO?\n // force class for width calc. TODO?\n this.renderer.addClass(this.styleDummy, this.css.drawer);\n this.renderer.addClass(this.styleDummy, this.css.mini);\n this._widthCache.miniWidth = this.styleDummy.offsetWidth;\n this.renderer.removeClass(this.styleDummy, this.css.drawer);\n this.renderer.removeClass(this.styleDummy, this.css.mini);\n }\n return this._widthCache.miniWidth;\n }\n } else {\n if (this.width) {\n return parseFloat(this.width);\n } else {\n if (this._widthCache.width === null) {\n // force class for width calc. TODO?\n // force class for width calc. TODO?\n this.renderer.addClass(this.styleDummy, this.css.drawer);\n this._widthCache.width = this.styleDummy.offsetWidth;\n this.renderer.removeClass(this.styleDummy, this.css.drawer);\n }\n return this._widthCache.width;\n }\n }\n }\n\n private getWindowWidth() {\n return (window.innerWidth > 0) ? window.innerWidth : screen.width;\n }\n\n /**\n * Get current Drawer width.\n */\n private getDrawerWidth(): number {\n return this.drawer.offsetWidth;\n }\n\n private ensureEvents() {\n // set listeners for swipe/pan only if needed, but just once\n if (this.enableGestures && !this.pin) {\n if (!this._gesturesAttached) {\n this._gestures = new IgxTouchManager(this._document, {\n pointerDown: (event) => this.panStart(event),\n panMove: (event) => this.pan(event),\n swipe: (event) => this.swipe(event),\n panEnd: (event) => this.panEnd(event),\n panCancel: () => this.panCancel()\n }, { pointerTypes: ['touch'], setPointerCapture: false });\n\n this._gesturesAttached = true;\n }\n } else {\n this.detachGestures();\n }\n if (!this._resizeObserver && this.platformUtil.isBrowser) {\n this._resizeObserver = fromEvent(window, 'resize').pipe(debounce(() => interval(150)))\n .subscribe((value) => {\n this.checkPinThreshold(value);\n });\n }\n }\n\n private detachGestures() {\n this._gestures?.destroy();\n this._gestures = null;\n this._gesturesAttached = false;\n }\n\n private updateEdgeZone() {\n let maxValue;\n\n if (this.miniTemplate) {\n maxValue = Math.max(this._maxEdgeZone, this.getExpectedWidth(true) * 1.1);\n this.set_maxEdgeZone(maxValue);\n }\n }\n\n private checkPinThreshold = (evt?: Event) => {\n if (!this.platformUtil.isBrowser) {\n return;\n }\n let windowWidth;\n if (this.pinThreshold) {\n windowWidth = this.getWindowWidth();\n if (evt && this._widthCache.windowWidth === windowWidth) {\n return;\n }\n this._widthCache.windowWidth = windowWidth;\n if (!this.pin && windowWidth >= this.pinThreshold) {\n this.pin = true;\n this.pinChange.emit(true);\n } else if (this.pin && windowWidth < this.pinThreshold) {\n this.pin = false;\n this.pinChange.emit(false);\n }\n }\n };\n\n private swipe = (evt: IgxGestureEvent) => {\n // TODO: Could also force input type: http://stackoverflow.com/a/27108052\n if (!this.enableGestures || evt.pointerType !== 'touch') {\n return;\n }\n\n // HammerJS swipe is horizontal-only by default, don't check deltaY\n let deltaX;\n let startPosition;\n if (this.position === 'right') {\n // when on the right use inverse of deltaX\n deltaX = -evt.deltaX;\n startPosition = this.getWindowWidth() - (evt.center.x + evt.distance);\n } else {\n deltaX = evt.deltaX;\n startPosition = evt.center.x - evt.distance;\n }\n // only accept closing swipe (ignoring minEdgeZone) when the drawer is expanded:\n if ((this.isOpen && deltaX < 0) ||\n // positive deltaX from the edge:\n (deltaX > 0 && startPosition < this.maxEdgeZone)) {\n this.toggle();\n }\n };\n\n private panStart = (evt: IgxGestureEvent): boolean => {\n if (!this.enableGestures || this.pin || evt.pointerType !== 'touch') {\n return false;\n }\n const startPosition = this.position === 'right' ? this.getWindowWidth() - (evt.center.x + evt.distance)\n : evt.center.x - evt.distance;\n\n // cache width during animation, flag to allow further handling\n if (this.isOpen || (startPosition < this.maxEdgeZone)) {\n this._panning = true;\n this._panStartWidth = this.getExpectedWidth(!this.isOpen);\n this._panLimit = this.getExpectedWidth(this.isOpen);\n\n this.renderer.addClass(this.overlay, 'panning');\n this.renderer.addClass(this.drawer, 'panning');\n\n if (!this.hasAnimateWidth) {\n // Translate-mode pan slides the panel via `transform`, but its width is\n // driven by `--ig-nav-drawer-size`, which is forced to 0 while the drawer\n // is closed. Pin the real width for the duration of the gesture so the\n // slide reveals the full panel instead of just its padding/border.\n this.renderer.setStyle(this.drawer, 'width', `${this.getExpectedWidth(false)}px`);\n }\n return true;\n }\n\n // The touch did not start in the edge zone (and the drawer is closed), so this\n // gesture should be ignored. Returning `false` lets the touch manager stop\n // tracking immediately and not interfere with normal page scrolling.\n return false;\n };\n\n private pan = (evt: IgxGestureEvent) => {\n // TODO: input.deltaX = prevDelta.x + (center.x - offset.x);\n // get actual delta (not total session one) from event?\n // pan WILL also fire after a full swipe, only resize on flag\n if (!this._panning) {\n return;\n }\n const right: boolean = this.position === 'right';\n // when on the right use inverse of deltaX\n const deltaX = right ? -evt.deltaX : evt.deltaX;\n let newX;\n let percent;\n const visibleWidth = this._panStartWidth + deltaX;\n\n if (this.isOpen && deltaX < 0) {\n // when visibleWidth hits limit - stop animating\n if (visibleWidth <= this._panLimit) {\n return;\n }\n\n if (this.hasAnimateWidth) {\n percent = (visibleWidth - this._panLimit) / (this._panStartWidth - this._panLimit);\n newX = visibleWidth;\n } else {\n percent = visibleWidth / this._panStartWidth;\n newX = evt.deltaX;\n }\n this.setXSize(newX, percent.toPrecision(2));\n\n } else if (!this.isOpen && deltaX > 0) {\n // when visibleWidth hits limit - stop animating\n if (visibleWidth >= this._panLimit) {\n return;\n }\n\n if (this.hasAnimateWidth) {\n percent = (visibleWidth - this._panStartWidth) / (this._panLimit - this._panStartWidth);\n newX = visibleWidth;\n } else {\n percent = visibleWidth / this._panLimit;\n newX = (this._panLimit - visibleWidth) * (right ? 1 : -1);\n }\n this.setXSize(newX, percent.toPrecision(2));\n }\n };\n\n private panEnd = (evt: IgxGestureEvent) => {\n if (this._panning) {\n const deltaX = this.position === 'right' ? -evt.deltaX : evt.deltaX;\n const visibleWidth: number = this._panStartWidth + deltaX;\n this.resetPan();\n\n // check if pan brought the drawer to 50%\n if (this.isOpen && visibleWidth <= this._panStartWidth / 2) {\n this.close();\n } else if (!this.isOpen && visibleWidth >= this._panLimit / 2) {\n this.open();\n }\n this._panStartWidth = null;\n }\n };\n\n private panCancel = () => {\n if (this._panning) {\n this.resetPan();\n this._panStartWidth = null;\n }\n };\n\n private resetPan() {\n this._panning = false;\n /* styles fail to apply when set on parent due to extra attributes, prob ng bug */\n /* styles fail to apply when set on parent due to extra attributes, prob ng bug */\n this.renderer.removeClass(this.overlay, 'panning');\n this.renderer.removeClass(this.drawer, 'panning');\n this.renderer.removeStyle(this.drawer, 'width');\n this.setXSize(0, '');\n }\n\n /**\n * Sets the absolute position or width in case the drawer doesn't change position.\n *\n * @param x the number pixels to translate on the X axis or the width to set. 0 width will clear the style instead.\n * @param opacity optional value to apply to the overlay\n */\n private setXSize(x: number, opacity?: string) {\n // Angular polyfills patches window.requestAnimationFrame, but switch to DomAdapter API (TODO)\n window.requestAnimationFrame(() => {\n if (this.hasAnimateWidth) {\n this.renderer.setStyle(this.drawer, 'width', x ? Math.abs(x) + 'px' : '');\n } else {\n this.renderer.setStyle(this.drawer, 'transform', x ? 'translate3d(' + x + 'px,0,0)' : '');\n this.renderer.setStyle(this.drawer, '-webkit-transform', x ? 'translate3d(' + x + 'px,0,0)' : '');\n }\n if (opacity !== undefined) {\n this.renderer.setStyle(this.overlay, 'opacity', opacity);\n }\n });\n }\n\n private togglePopover(show: boolean) {\n // check element and functionality exist:\n if (typeof this.drawer?.showPopover !== 'function') return;\n\n const popoverOpen = this.drawer.matches(':popover-open');\n if (show === popoverOpen) return;\n\n if (show) {\n this.overlay.showPopover();\n this.drawer.showPopover();\n } else {\n this.overlay.hidePopover();\n this.drawer.hidePopover();\n }\n }\n\n private toggleOpenedEvent = () => {\n this.elementRef.nativeElement.removeEventListener('transitionend', this.toggleOpenedEvent, false);\n this.opened.emit();\n };\n\n private toggleClosedEvent = () => {\n this.elementRef.nativeElement.removeEventListener('transitionend', this.toggleClosedEvent, false);\n this._closingAnimation.set(false);\n this.closed.emit();\n };\n}\n","<ng-template #defaultItemsTemplate>\n <div igxDrawerItem [isHeader]=\"true\">Navigation Drawer</div>\n <div igxDrawerItem> Start by adding</div>\n <div igxDrawerItem> <code><ng-template igxDrawer></code> </div>\n <div igxDrawerItem> And some items inside </div>\n <div igxDrawerItem> Style with igxDrawerItem </div>\n <div igxDrawerItem> and igxRipple directives</div>\n <div igxDrawerItem [disabled]=\"true\">Disabled Item</div>\n</ng-template>\n\n<div [hidden]=\"pin\"\n [attr.popover]=\"pin ? null : 'manual'\"\n class=\"igx-nav-drawer__overlay\"\n [class.igx-nav-drawer__overlay--hidden]=\"!isOpen\"\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\"\n (click)=\"close()\" #overlay>\n</div>\n<nav\n class=\"igx-nav-drawer__aside\"\n [attr.popover]=\"pin ? null : 'manual'\"\n [class.igx-nav-drawer__aside--collapsed]=\"!miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--mini]=\"miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--normal]=\"!miniTemplate || isOpen\"\n [class.igx-nav-drawer__aside--pinned]=\"pin\"\n [class.igx-nav-drawer__aside--right]=\"position === 'right'\" #aside\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\">\n\n <ng-container *ngTemplateOutlet=\"template || defaultItemsTemplate\"></ng-container>\n</nav>\n<div class=\"igx-nav-drawer__style-dummy\" #dummy></div>\n","import { IgxNavigationDrawerComponent } from './navigation-drawer.component';\nimport { IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective } from './navigation-drawer.directives';\n\nexport * from './navigation-drawer.component';\nexport * from './navigation-drawer.directives';\n\n/* NOTE: Navigation drawer directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_NAVIGATION_DRAWER_DIRECTIVES = [\n IgxNavigationDrawerComponent,\n IgxNavDrawerItemDirective,\n IgxNavDrawerMiniTemplateDirective,\n IgxNavDrawerTemplateDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_NAVIGATION_DRAWER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n */\n@NgModule({\n imports: [\n ...IGX_NAVIGATION_DRAWER_DIRECTIVES\n ],\n exports: [\n ...IGX_NAVIGATION_DRAWER_DIRECTIVES\n ]\n})\nexport class IgxNavigationDrawerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxNavigationDrawerComponent","i2.IgxNavDrawerItemDirective","i2.IgxNavDrawerMiniTemplateDirective","i2.IgxNavDrawerTemplateDirective"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -7,45 +7,25 @@ user-invocable: true
|
|
|
7
7
|
# Ignite UI for Angular — UI Components
|
|
8
8
|
|
|
9
9
|
## Prerequisites
|
|
10
|
-
- Angular
|
|
10
|
+
- An Angular project on the major version matching the installed `igniteui-angular` package (igniteui-angular majors track Angular majors)
|
|
11
11
|
- `@angular/cli` installed
|
|
12
12
|
- `igniteui-angular` or `@infragistics/igniteui-angular` added to the project via `ng add igniteui-angular` (or the `@infragistics` variant) or `npm install` — see [Package Variants](#package-variants) below.
|
|
13
13
|
- A theme applied to the application (see [`igniteui-angular-theming`](../igniteui-angular-theming/SKILL.md)).
|
|
14
14
|
- `provideAnimations()` in `app.config.ts` — **required before using any overlay or animated component**
|
|
15
|
-
- The **Ignite UI CLI MCP server** (`igniteui-cli`) is available as a tool provider
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
>
|
|
19
|
-
> Before using any Ignite UI CLI MCP tools, you MUST verify the MCP server is available
|
|
20
|
-
> by calling `list_components`. If the tool is not available or the call fails,
|
|
21
|
-
> you MUST automatically configure it by following the setup process steps described below.
|
|
22
|
-
>
|
|
23
|
-
> After writing the file, inform the user that the MCP server has been
|
|
24
|
-
> configured and they may need to reload the editor for the tools to activate.
|
|
25
|
-
> Start the MCP server and wait for that MCP server to start before continuing the component-related work.
|
|
26
|
-
> Do NOT skip this step or ask the user to do it manually.
|
|
16
|
+
## Ignite UI CLI MCP Server (recommended, not required)
|
|
27
17
|
|
|
28
|
-
|
|
18
|
+
The `igniteui-cli` MCP server provides `list_components`, `get_doc`, `search_docs`, `search_api`, and `get_api_reference`. Its **full component docs cover a subset of components** (the catalog grows over releases — call `list_components` once to see what exists; e.g. Combo, Simple Combo, Chat, Tooltip, and grid toolbar/export docs). Where a `get_doc` doc exists, prefer it over the reference files below. `search_api`/`get_api_reference` cover API members (inputs, outputs, methods) for all components — use them for member-level lookups. For everything else, the reference files below are the primary guidance.
|
|
29
19
|
|
|
30
|
-
|
|
20
|
+
If the tools are not available, do not block the task — use the reference files. Suggest that the user run `npx -y igniteui-cli ai-config` from the project root (it configures both the `igniteui-cli` and `igniteui-theming` MCP servers and copies the agent skill files) and reload the editor. MCP servers cannot be started mid-session; the configuration takes effect on the next session. Editor-specific details are in [`references/mcp-setup.md`](./references/mcp-setup.md).
|
|
31
21
|
|
|
32
|
-
##
|
|
22
|
+
## Required Workflow
|
|
33
23
|
|
|
34
|
-
**This file is a routing hub only. It contains
|
|
24
|
+
**This file is a routing hub only. It contains no code examples and no API details.** Component APIs change between releases, so never write component selectors, import paths, input/output names, or directive names from memory — read the relevant reference files first.
|
|
35
25
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
You are **required** to complete ALL of the following steps before producing any component-related code or answer:
|
|
40
|
-
|
|
41
|
-
**STEP 1 — Identify every component or feature involved.**
|
|
42
|
-
Map the user's request to one or more rows in the Task → Reference File table below. A single request often spans multiple categories (e.g., a form inside a Dialog requires reading both `form-controls.md` AND `feedback.md`).
|
|
43
|
-
|
|
44
|
-
**STEP 2 — Read every identified reference file in full (PARALLEL).**
|
|
45
|
-
Call `read_file` (or equivalent) on **all** reference files identified in Step 1 **in a single parallel batch** — do NOT read them one at a time sequentially. You must do this even if you believe you already know the answer. Do not skip, skim, or partially read a reference file.
|
|
46
|
-
|
|
47
|
-
**STEP 3 — Only then produce output.**
|
|
48
|
-
Base your code and explanation exclusively on what you read. If the reference files do not cover something, say so explicitly rather than guessing.
|
|
26
|
+
1. **Identify every component or feature involved.** Map the user's request to one or more rows in the Task → Reference File table below. A single request often spans multiple categories (e.g., a form inside a Dialog requires both `form-controls.md` and `feedback.md`).
|
|
27
|
+
2. **Read every identified reference file in full**, in a single parallel batch of file reads — even if you believe you already know the answer.
|
|
28
|
+
3. **Then produce output**, based only on what you read. If something is not covered by the reference files, look it up with `get_doc`/`search_docs` when the MCP tools are available; otherwise state explicitly that the detail is unverified instead of guessing.
|
|
49
29
|
|
|
50
30
|
### Task → Reference File
|
|
51
31
|
|
|
@@ -4,18 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
- [Overview](#overview)
|
|
6
6
|
- [General Chart Configuration](#general-chart-configuration)
|
|
7
|
-
- [Key Chart Features](#key-chart-features)
|
|
8
7
|
- [Chart Types Reference](#chart-types-reference)
|
|
9
|
-
- [
|
|
10
|
-
- [
|
|
8
|
+
- [Standalone component example](#standalone-component-example)
|
|
9
|
+
- [Common errors and fixes](#common-errors-and-fixes)
|
|
11
10
|
- [Styling & Theming](#styling--theming)
|
|
12
|
-
- [Data Requirements](#data-requirements)
|
|
13
|
-
- [Documentation References](#documentation-references)
|
|
14
11
|
|
|
15
12
|
## Overview
|
|
16
13
|
|
|
17
14
|
Ignite UI for Angular Charts provides 65+ chart types for data visualization. Charts are packaged separately in `igniteui-angular-charts` (or `@infragistics/igniteui-angular-charts` for licensed users).
|
|
18
|
-
This reference gives high-level guidance on when to use each chart type, their key features, and common API members.
|
|
15
|
+
This reference gives high-level guidance on when to use each chart type, their key features, and common API members. The MCP doc catalog currently has no chart docs — use `search_api` for member-level lookups.
|
|
19
16
|
|
|
20
17
|
### Chart Component packages
|
|
21
18
|
- `igniteui-angular-charts` — Category Chart, Financial Chart, Data Chart, Pie Chart, and Sparkline components (NPM)
|
|
@@ -251,30 +248,3 @@ import { IgxCategoryChartModule } from 'igniteui-angular-charts';
|
|
|
251
248
|
- Use host element width/height for responsive sizing
|
|
252
249
|
- Theme colors via `IgxTheme` palette
|
|
253
250
|
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
## Data Requirements
|
|
257
|
-
|
|
258
|
-
### Category Chart (Area, Column, Line, Point, Spline, StepLine, StepArea, Waterfall)
|
|
259
|
-
- Array or list of data items
|
|
260
|
-
- At least 1 numeric column (values)
|
|
261
|
-
- Optionally 1 string/date column (labels)
|
|
262
|
-
- Example: `[{ month: 'Jan', value: 100 }, { month: 'Feb', value: 150 }]`
|
|
263
|
-
|
|
264
|
-
### Financial Chart (Stock)
|
|
265
|
-
- Array of data items with date/time column
|
|
266
|
-
- For Candlestick: 4 numeric columns (O, H, L, C)
|
|
267
|
-
- For Volume: 5 numeric columns (O, H, L, C, Volume)
|
|
268
|
-
- Example: `[{ date: '2024-01-01', open: 100, high: 120, low: 95, close: 115, volume: 1000 }]`
|
|
269
|
-
|
|
270
|
-
### Pie Chart
|
|
271
|
-
- Array of data items
|
|
272
|
-
- 1 label column (category)
|
|
273
|
-
- 1 numeric column (value; segments should sum to 100%)
|
|
274
|
-
- Example: `[{ label: 'Category A', value: 30 }, { label: 'Category B', value: 70 }]`
|
|
275
|
-
|
|
276
|
-
### Sparkline
|
|
277
|
-
- Array of data items (one-dimensional)
|
|
278
|
-
- At least 1 numeric field mapped via `valueMemberPath`
|
|
279
|
-
- Optionally 1 string field mapped via `labelMemberPath` (used for first/last X-axis labels)
|
|
280
|
-
- Example: `[{ label: 'Jan', value: 10 }, { label: 'Feb', value: 25 }, { label: 'Mar', value: 15 }]`
|
|
@@ -16,9 +16,6 @@
|
|
|
16
16
|
- [Progress Indicators](#progress-indicators)
|
|
17
17
|
- [Chat (AI Chat Component)](#chat-ai-chat-component)
|
|
18
18
|
|
|
19
|
-
## Overview
|
|
20
|
-
This reference gives high-level guidance on when to use each data display component, their key features, and common API members. For detailed documentation, call `get_doc` and `get_api_reference` from `igniteui-cli` with the specific component or feature you're interested in.
|
|
21
|
-
|
|
22
19
|
## List
|
|
23
20
|
|
|
24
21
|
```typescript
|
|
@@ -205,7 +202,7 @@ import { IgxCarouselComponent, IgxSlideComponent } from 'igniteui-angular/carous
|
|
|
205
202
|
</igx-carousel>
|
|
206
203
|
```
|
|
207
204
|
|
|
208
|
-
> **
|
|
205
|
+
> **Important:** Carousel uses Angular animations — ensure `provideAnimations()` is present in `app.config.ts`.
|
|
209
206
|
|
|
210
207
|
## Paginator
|
|
211
208
|
|
|
@@ -254,101 +251,18 @@ Types for linear bar: `'default'`, `'info'`, `'success'`, `'warning'`, `'error'`
|
|
|
254
251
|
|
|
255
252
|
## Chat (AI Chat Component)
|
|
256
253
|
|
|
257
|
-
|
|
258
|
-
import { IgxChatComponent } from 'igniteui-angular/chat';
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
```html
|
|
262
|
-
<igx-chat
|
|
263
|
-
[options]="options()"
|
|
264
|
-
[messages]="messages()"
|
|
265
|
-
[draftMessage]="draftMessage"
|
|
266
|
-
[templates]="templates()"
|
|
267
|
-
(messageCreated)="onMessageCreated($event)">
|
|
268
|
-
</igx-chat>
|
|
269
|
-
|
|
270
|
-
<ng-template #messageHeader let-message>
|
|
271
|
-
@if (message.sender !== 'user') {
|
|
272
|
-
<div>
|
|
273
|
-
<span style="font-weight: bold; color: #c00000;"
|
|
274
|
-
>Developer Support</span
|
|
275
|
-
>
|
|
276
|
-
</div>
|
|
277
|
-
}
|
|
278
|
-
</ng-template>
|
|
279
|
-
|
|
280
|
-
<ng-template #suggestionPrefix>
|
|
281
|
-
<span style="font-weight: bold">💡</span>
|
|
282
|
-
</ng-template>
|
|
283
|
-
|
|
284
|
-
<ng-template #messageContent let-message igxChatMessageContext>
|
|
285
|
-
<div [innerHTML]="message.text | fromMarkdown | async"></div>
|
|
286
|
-
</ng-template>
|
|
287
|
-
```
|
|
254
|
+
> **Full doc in the MCP:** `get_doc({ framework: "angular", name: "chat" })` covers messages, attachments, quick replies, typing indicators, templates, and styling. Prefer it over writing chat code from memory.
|
|
288
255
|
|
|
289
256
|
```typescript
|
|
290
257
|
import { IgxChatComponent, IgxChatMessageContextDirective, type IgxChatOptions } from 'igniteui-angular/chat';
|
|
291
|
-
import { MarkdownPipe } from 'igniteui-angular/chat-extras';
|
|
292
|
-
|
|
293
|
-
@Component({
|
|
294
|
-
selector: 'app-chat-features-sample',
|
|
295
|
-
styleUrls: ['./features-sample.component.scss'],
|
|
296
|
-
templateUrl: './features-sample.component.html',
|
|
297
|
-
imports: [IgxChatComponent, IgxChatMessageContextDirective, AsyncPipe, MarkdownPipe]
|
|
298
|
-
})
|
|
299
|
-
export class ChatFeaturesSampleComponent {
|
|
300
|
-
private _messageHeader = viewChild.required('messageHeader');
|
|
301
|
-
private _suggestionPrefix = viewChild.required('suggestionPrefix');
|
|
302
|
-
private _messageContent = viewChild.required('messageContent');
|
|
303
|
-
|
|
304
|
-
...
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
public options = signal<IgxChatOptions>({
|
|
308
|
-
disableAutoScroll: false,
|
|
309
|
-
disableInputAttachments: false,
|
|
310
|
-
inputPlaceholder: 'Type your message here...',
|
|
311
|
-
headerText: 'Developer Support',
|
|
312
|
-
suggestionsPosition: "below-input",
|
|
313
|
-
suggestions: [ 'Send me an e-mail when support is available.' ]
|
|
314
|
-
});
|
|
315
|
-
|
|
316
|
-
public templates = signal({});
|
|
317
|
-
|
|
318
|
-
constructor() {
|
|
319
|
-
effect(() => {
|
|
320
|
-
const messageHeader = this._messageHeader();
|
|
321
|
-
const suggestionPrefix = this._suggestionPrefix();
|
|
322
|
-
const messageContent = this._messageContent();
|
|
323
|
-
|
|
324
|
-
if (messageHeader && suggestionPrefix && messageContent) {
|
|
325
|
-
this.templates.set({
|
|
326
|
-
messageHeader: messageHeader,
|
|
327
|
-
suggestionPrefix: suggestionPrefix,
|
|
328
|
-
messageContent: messageContent
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
public onMessageCreated(e: any): void {
|
|
335
|
-
const newMessage = e;
|
|
336
|
-
this.messages.update(messages => [...messages, newMessage]);
|
|
337
|
-
this.options.update(options => ({ ...options, isTyping: true, suggestions: [] }));
|
|
338
|
-
|
|
339
|
-
const responseMessage = {
|
|
340
|
-
id: Date.now().toString(),
|
|
341
|
-
text: 'Our support team is currently unavailable. We\'ll get back to you as soon as possible.',
|
|
342
|
-
sender: 'support',
|
|
343
|
-
timestamp: Date.now().toString()
|
|
344
|
-
};
|
|
345
|
-
|
|
346
|
-
this.draftMessage = { text: '', attachments: [] };
|
|
347
|
-
this.messages.update(messages => [...messages, responseMessage]);
|
|
348
|
-
this.options.update(options => ({ ...options, isTyping: false }));
|
|
349
|
-
}
|
|
258
|
+
import { MarkdownPipe } from 'igniteui-angular/chat-extras'; // template usage: message.text | fromMarkdown | async
|
|
350
259
|
```
|
|
351
260
|
|
|
261
|
+
Gotchas not obvious from the doc:
|
|
262
|
+
|
|
263
|
+
- The markdown pipe class is `MarkdownPipe` (from `igniteui-angular/chat-extras`) but its template name is `fromMarkdown`, and it is async — combine with `AsyncPipe`.
|
|
264
|
+
- Custom templates (`messageHeader`, `messageContent`, `suggestionPrefix`, …) are passed as one object via the `[templates]` input — collect the `ng-template` refs with `viewChild` and assemble the object in an `effect()` (or `computed()`).
|
|
265
|
+
|
|
352
266
|
## See Also
|
|
353
267
|
|
|
354
268
|
- [`setup.md`](./setup.md) — App providers, architecture, all entry points
|