@clr/angular 18.2.0 → 18.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -423,12 +423,18 @@ class ClrButtonGroup {
423
423
  }
424
424
  handleFocusOnMenuOpen() {
425
425
  this.popoverService.popoverVisible.pipe(takeUntil(this.destroy$)).subscribe(visible => {
426
- if (visible) {
427
- this.focusHandler.initialize({
428
- menu: this.menu.nativeElement,
429
- menuToggle: this.menuToggle.nativeElement,
430
- });
426
+ // `menu` sits on the element carrying *clrPopoverContent, so the query only
427
+ // resolves once that embedded view has been created and change detection has
428
+ // refreshed it. popoverVisible fires from a setTimeout inside showOverlay(), which
429
+ // is normally late enough - but not guaranteed to be, so dereferencing either
430
+ // ElementRef unguarded can throw and abort this handler.
431
+ if (!visible || !this.menu || !this.menuToggle) {
432
+ return;
431
433
  }
434
+ this.focusHandler.initialize({
435
+ menu: this.menu.nativeElement,
436
+ menuToggle: this.menuToggle.nativeElement,
437
+ });
432
438
  });
433
439
  }
434
440
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrButtonGroup, deps: [{ token: ButtonInGroupService }, { token: i2.ClrPopoverService }, { token: i3.ClrCommonStringsService }, { token: i3.ClrDestroyService }, { token: ButtonGroupFocusHandler }], target: i0.ɵɵFactoryTarget.Component }); }
@@ -1 +1 @@
1
- {"version":3,"file":"clr-angular-button.mjs","sources":["../../../projects/angular/button/providers/button-in-group.service.ts","../../../projects/angular/button/button-group/button.ts","../../../projects/angular/button/providers/button-group-focus.enum.ts","../../../projects/angular/button/providers/button-group-focus-handler.service.ts","../../../projects/angular/button/button-group/button-group.ts","../../../projects/angular/button/button-group/button-group.html","../../../projects/angular/button/button-group/button-group.module.ts","../../../projects/angular/button/button-loading/loading-button.ts","../../../projects/angular/button/button-loading/loading-button.module.ts","../../../projects/angular/button/button.module.ts","../../../projects/angular/button/button-group/index.ts","../../../projects/angular/button/button-loading/index.ts","../../../projects/angular/button/index.ts","../../../projects/angular/button/clr-angular-button.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { ClrButton } from '../button-group/button';\n\n@Injectable()\nexport class ButtonInGroupService {\n private _changes = new Subject<ClrButton>();\n\n get changes(): Observable<ClrButton> {\n return this._changes.asObservable();\n }\n\n updateButtonGroup(button: ClrButton): void {\n this._changes.next(button);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Optional, Output, SkipSelf, TemplateRef, ViewChild } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { ClrLoadingState, LoadingListener, uniqueIdFactory } from '@clr/angular/utils';\n\nimport { ButtonInGroupService } from '../providers/button-in-group.service';\n\n@Component({\n selector: 'clr-button',\n template: `\n <ng-template #buttonProjectedRef>\n <button\n [class]=\"classNames\"\n (click)=\"emitClick()\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.disabled]=\"disabled\"\n [attr.role]=\"role\"\n [attr.id]=\"id\"\n >\n @if (loading) {\n <span class=\"spinner spinner-inline\"></span>\n }\n <ng-content></ng-content>\n </button>\n </ng-template>\n `,\n providers: [{ provide: LoadingListener, useExisting: ClrButton }],\n standalone: false,\n})\nexport class ClrButton implements LoadingListener {\n @Output('click') _click = new EventEmitter<boolean>(false);\n @Input('routerLinkActive') routerLinkActiveClasses: string;\n\n @ViewChild('buttonProjectedRef', { static: true }) templateRef: TemplateRef<ClrButton>;\n\n loading: boolean;\n\n private _inMenu = false;\n private _enableService = false;\n private _classNames = 'btn';\n private _name: string = null;\n private _type: string = null;\n private _disabled: any = null;\n private _id: string = uniqueIdFactory();\n\n constructor(\n @Optional() private readonly routerLinkActive: RouterLinkActive,\n @SkipSelf() @Optional() public buttonInGroupService: ButtonInGroupService\n ) {}\n\n @Input('clrInMenu')\n get inMenu(): boolean {\n return this._inMenu;\n }\n set inMenu(value: boolean) {\n value = !!value;\n if (this._inMenu !== value) {\n this._inMenu = value;\n // We check if the service flag is enabled\n // and if the service exists because the service is optional\n if (this._enableService && this.buttonInGroupService) {\n this.buttonInGroupService.updateButtonGroup(this);\n }\n }\n }\n\n @Input('class')\n get classNames(): string {\n return this.routerLinkActive?.isActive ? `${this._classNames} ${this.routerLinkActiveClasses}` : this._classNames;\n }\n set classNames(value: string) {\n if (typeof value === 'string') {\n const classNames: string[] = value.split(' ');\n if (classNames.indexOf('btn') === -1) {\n classNames.push('btn');\n }\n this._classNames = classNames.join(' ');\n }\n }\n\n @Input('name')\n get name(): string {\n return this._name;\n }\n set name(value: string) {\n if (typeof value === 'string') {\n this._name = value;\n }\n }\n\n @Input('type')\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n if (typeof value === 'string') {\n this._type = value;\n }\n }\n\n @Input('id')\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n if (typeof value === 'string') {\n this._id = value;\n }\n }\n\n @Input('disabled')\n get disabled(): any {\n return this._disabled;\n }\n set disabled(value: any) {\n if (value !== null && value !== false) {\n this._disabled = '';\n } else {\n this._disabled = null;\n }\n }\n\n get role(): string {\n return this.inMenu ? 'menuitem' : null;\n }\n\n ngAfterViewInit() {\n this._enableService = true;\n }\n\n loadingStateChange(state: ClrLoadingState): void {\n this.loading = state === ClrLoadingState.LOADING;\n }\n\n emitClick(): void {\n this._click.emit(true);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum InitialFocus {\n FIRST_ITEM = 'first',\n LAST_ITEM = 'last',\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, Renderer2 } from '@angular/core';\nimport { ClrPopoverService } from '@clr/angular/popover/common';\nimport { FocusableItem, FocusService, Linkers } from '@clr/angular/utils';\n\nimport { InitialFocus } from './button-group-focus.enum';\n@Injectable()\nexport class ButtonGroupFocusHandler {\n initialFocus: InitialFocus = InitialFocus.FIRST_ITEM;\n\n private menu: HTMLElement;\n private menuToggle: HTMLElement;\n private buttons: FocusableItem[];\n private _unlistenFuncs: (() => void)[] = [];\n\n constructor(\n private focusService: FocusService,\n private popoverService: ClrPopoverService,\n private renderer: Renderer2\n ) {}\n\n ngOnDestroy() {\n this._unlistenFuncs.forEach((unlisten: () => void) => unlisten());\n this.focusService.detachListeners(this.menu);\n }\n\n initialize({ menu, menuToggle }: { menu: HTMLElement; menuToggle: HTMLElement }) {\n this.menu = menu;\n this.menuToggle = menuToggle;\n\n this.focusService.registerContainer(this.menu);\n this.listenToKeys();\n this.linkButtons();\n\n switch (this.initialFocus) {\n case InitialFocus.LAST_ITEM:\n this.focusLastItem();\n break;\n default:\n this.focusFirstItem();\n break;\n }\n }\n\n private resetButtonsFocus() {\n this.buttons.forEach(button => {\n button.blur();\n });\n }\n\n private listenToKeys() {\n this._unlistenFuncs.push(\n this.renderer.listen(this.menu, 'keydown.shift.tab', event => this.closeMenu(event, false))\n );\n this._unlistenFuncs.push(this.renderer.listen(this.menu, 'keydown.tab', event => this.closeMenu(event, true)));\n }\n\n private closeMenu(event: KeyboardEvent, focusBackOnToggle: boolean) {\n this.popoverService.toggleWithEvent(event);\n if (focusBackOnToggle) {\n this.menuToggle.focus();\n }\n this.resetButtonsFocus();\n }\n\n private linkButtons() {\n const buttonElements = Array.from(this.menu.children) as HTMLElement[];\n this.buttons = buttonElements.map<FocusableItem>(buttonElement => {\n this._unlistenFuncs.push(this.renderer.listen(buttonElement, 'click', event => this.closeMenu(event, true)));\n return {\n id: buttonElement.id,\n value: buttonElement,\n focus: () => {\n buttonElement.setAttribute('tabindex', '0');\n buttonElement.focus();\n },\n blur: () => {\n buttonElement.setAttribute('tabindex', '-1');\n buttonElement.blur();\n },\n };\n });\n this.resetButtonsFocus();\n Linkers.linkVertical(this.buttons);\n }\n\n private focusFirstItem(): void {\n if (this.buttons.length) {\n this.focusService.moveTo(this.buttons[0]);\n }\n this.initialFocus = InitialFocus.FIRST_ITEM;\n }\n\n private focusLastItem(): void {\n if (this.buttons.length) {\n this.focusService.moveTo(this.buttons[this.buttons.length - 1]);\n }\n this.initialFocus = InitialFocus.FIRST_ITEM;\n }\n}\n\nexport const BUTTON_GROUP_FOCUS_HANDLER_PROVIDER = {\n provide: ButtonGroupFocusHandler,\n};\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport {\n ClrPopoverHostDirective,\n ClrPopoverPosition,\n ClrPopoverService,\n ClrPopoverType,\n DROPDOWN_POSITIONS,\n} from '@clr/angular/popover/common';\nimport {\n ClrCommonStringsService,\n ClrDestroyService,\n FOCUS_SERVICE_PROVIDER,\n uniqueIdFactory,\n} from '@clr/angular/utils';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ClrButton } from './button';\nimport {\n BUTTON_GROUP_FOCUS_HANDLER_PROVIDER,\n ButtonGroupFocusHandler,\n} from '../providers/button-group-focus-handler.service';\nimport { InitialFocus } from '../providers/button-group-focus.enum';\nimport { ButtonInGroupService } from '../providers/button-in-group.service';\n\n@Component({\n selector: 'clr-button-group',\n templateUrl: 'button-group.html',\n providers: [ButtonInGroupService, ClrDestroyService, BUTTON_GROUP_FOCUS_HANDLER_PROVIDER, FOCUS_SERVICE_PROVIDER],\n hostDirectives: [ClrPopoverHostDirective],\n host: { '[class.btn-group]': 'true' },\n standalone: false,\n})\nexport class ClrButtonGroup implements AfterContentInit, AfterViewInit {\n @Input('clrToggleButtonAriaLabel') clrToggleButtonAriaLabel: string = this.commonStrings.keys.rowActions;\n\n @ViewChild('menuToggle') menuToggle: ElementRef<HTMLElement>;\n @ViewChild('menu') menu: ElementRef<HTMLElement>;\n\n @ContentChildren(ClrButton) buttons: QueryList<ClrButton>;\n\n popoverId = uniqueIdFactory();\n InitialFocus = InitialFocus;\n\n inlineButtons: ClrButton[] = [];\n menuButtons: ClrButton[] = [];\n protected popoverType = ClrPopoverType.DROPDOWN;\n private _menuPosition = ClrPopoverPosition.BOTTOM_LEFT;\n\n constructor(\n public buttonGroupNewService: ButtonInGroupService,\n private popoverService: ClrPopoverService,\n public commonStrings: ClrCommonStringsService,\n private destroy$: ClrDestroyService,\n private focusHandler: ButtonGroupFocusHandler\n ) {}\n\n @Input('clrMenuPosition')\n get menuPosition(): ClrPopoverPosition {\n return this._menuPosition;\n }\n set menuPosition(pos: ClrPopoverPosition | string) {\n if (!pos) {\n return;\n }\n\n const posIndex = DROPDOWN_POSITIONS.indexOf(pos as ClrPopoverPosition);\n\n if (posIndex === -1) {\n return;\n }\n\n this._menuPosition = DROPDOWN_POSITIONS[posIndex];\n }\n\n get open() {\n return this.popoverService.open;\n }\n\n /**\n * 1. Initializes the initial Button Group View\n * 2. Subscribes to changes on the ContentChildren\n * in case the user content projection changes\n */\n ngAfterContentInit() {\n this.initializeButtons();\n this.buttonGroupNewService.changes.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button));\n this.buttons.changes.subscribe(() => {\n this.initializeButtons();\n });\n }\n\n ngAfterViewInit() {\n this.handleFocusOnMenuOpen();\n }\n\n /**\n * Moves the button into the other ViewContainer\n * when an update is received.\n *\n * @param button\n */\n rearrangeButton(button: ClrButton): void {\n let fromView: ClrButton[];\n let toView: ClrButton[];\n if (button.inMenu) {\n fromView = this.inlineButtons;\n toView = this.menuButtons;\n } else {\n fromView = this.menuButtons;\n toView = this.inlineButtons;\n }\n const index: number = fromView.indexOf(button);\n if (index > -1) {\n fromView.splice(index, 1);\n const moveIndex = this.getMoveIndex(button);\n if (moveIndex <= toView.length) {\n toView.splice(moveIndex, 0, button);\n }\n }\n }\n\n openMenu(event: Event, initialFocus: InitialFocus) {\n this.focusHandler.initialFocus = initialFocus;\n if (!this.popoverService.open) {\n this.popoverService.toggleWithEvent(event);\n }\n }\n\n /**\n * Author: Eudes\n *\n * Finds the order of a button w.r.t other buttons\n *\n * @param buttonToMove\n * @returns\n */\n getMoveIndex(buttonToMove: ClrButton): number {\n const tempArr: ClrButton[] = this.buttons.filter(button => button.inMenu === buttonToMove.inMenu);\n return tempArr.indexOf(buttonToMove);\n }\n\n initializeButtons(): void {\n const tempInlineButtons: ClrButton[] = [];\n const tempInMenuButtons: ClrButton[] = [];\n this.buttons.forEach(button => {\n if (button.inMenu) {\n tempInMenuButtons.push(button);\n } else {\n tempInlineButtons.push(button);\n }\n });\n this.inlineButtons = tempInlineButtons;\n this.menuButtons = tempInMenuButtons;\n }\n\n private handleFocusOnMenuOpen() {\n this.popoverService.popoverVisible.pipe(takeUntil(this.destroy$)).subscribe(visible => {\n if (visible) {\n this.focusHandler.initialize({\n menu: this.menu.nativeElement,\n menuToggle: this.menuToggle.nativeElement,\n });\n }\n });\n }\n}\n","<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n@for (inlineButton of inlineButtons; track inlineButton) {\n<ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n} @if (menuButtons.length > 0) {\n<div class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\">\n <button\n #menuToggle\n class=\"btn dropdown-toggle\"\n clrPopoverOrigin\n clrPopoverOpenCloseButton\n (keydown.arrowup)=\"openMenu($event, InitialFocus.LAST_ITEM)\"\n (keydown.arrowdown)=\"openMenu($event, InitialFocus.FIRST_ITEM)\"\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"clrToggleButtonAriaLabel\"\n >\n <cds-icon shape=\"ellipsis-horizontal\" [attr.title]=\"commonStrings.keys.more\"></cds-icon>\n </button>\n <div\n #menu\n role=\"menu\"\n class=\"dropdown-menu clr-button-group-menu\"\n [id]=\"popoverId\"\n [attr.id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n *clrPopoverContent=\"open; at menuPosition; type: popoverType; outsideClickToClose: true; scrollToClose: true\"\n >\n @for (menuButton of menuButtons; track menuButton) {\n <ng-template [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n }\n </div>\n</div>\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClrIcon } from '@clr/angular/icon';\nimport { ClrPopoverModuleNext } from '@clr/angular/popover/common';\n\nimport { ClrButton } from './button';\nimport { ClrButtonGroup } from './button-group';\n\nexport const CLR_BUTTON_GROUP_DIRECTIVES: Type<any>[] = [ClrButton, ClrButtonGroup];\n\n@NgModule({\n imports: [CommonModule, ClrIcon, ClrPopoverModuleNext],\n declarations: [CLR_BUTTON_GROUP_DIRECTIVES],\n exports: [CLR_BUTTON_GROUP_DIRECTIVES],\n})\nexport class ClrButtonGroupModule {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, keyframes, style, transition, trigger } from '@angular/animations';\nimport { Component, ElementRef, EventEmitter, Input, Output, Renderer2 } from '@angular/core';\nimport { ClrLoadingState, LoadingListener } from '@clr/angular/utils';\n\n// minimum width to fit loading spinner\nconst MIN_BUTTON_WIDTH = 42;\n\n@Component({\n selector: 'button[clrLoading]',\n template: `\n <span @parent>\n @switch (state) {\n @case (buttonState.LOADING) {\n <span @spinner class=\"spinner spinner-inline\"></span>\n }\n @case (buttonState.SUCCESS) {\n <span\n @validated\n (@validated.done)=\"this.loadingStateChange(this.buttonState.DEFAULT)\"\n class=\"spinner spinner-inline spinner-check\"\n ></span>\n }\n @case (buttonState.DEFAULT) {\n <span @defaultButton class=\"clr-loading-btn-content\">\n <ng-content></ng-content>\n </span>\n }\n }\n </span>\n `,\n providers: [{ provide: LoadingListener, useExisting: ClrLoadingButton }],\n animations: [\n trigger('parent', [\n // Skip :enter animation on first render.\n // The button text/content should only be faded when transitioning to or from a non-default state.\n transition(':enter', []),\n ]),\n trigger('defaultButton', [\n transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),\n // TODO: see if we can get leave animation to work before spinner's enter animation\n transition(':leave', [style({ opacity: 0 })]),\n ]),\n trigger('spinner', [\n transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),\n transition(':leave', [style({ opacity: 1 }), animate('100ms ease-out', style({ opacity: 0 }))]),\n ]),\n trigger('validated', [\n transition(':enter', [\n animate(\n '600ms',\n keyframes([\n style({ transform: 'scale(0,0)', offset: 0 }),\n style({ opacity: 1, offset: 0.2 }),\n style({ transform: 'scale(1.2,1.2)', offset: 0.4 }),\n style({ transform: 'scale(.9,.9)', offset: 0.6 }),\n style({ transform: 'scale(1,1)', offset: 1 }),\n ])\n ),\n ]),\n transition(':leave', [style({ opacity: 1 }), animate('100ms ease-out', style({ opacity: 0 }))]),\n ]),\n ],\n host: { '[attr.disabled]': \"disabled? '' : null\" },\n standalone: false,\n})\nexport class ClrLoadingButton implements LoadingListener {\n @Input('disabled') disabled: boolean;\n\n @Output('clrLoadingChange') clrLoadingChange = new EventEmitter<ClrLoadingState>(false);\n\n buttonState = ClrLoadingState;\n state: ClrLoadingState = ClrLoadingState.DEFAULT;\n\n constructor(\n public el: ElementRef<HTMLButtonElement>,\n private renderer: Renderer2\n ) {}\n\n loadingStateChange(state: ClrLoadingState): void {\n if (state === this.state) {\n return;\n }\n this.state = state;\n\n switch (state) {\n case ClrLoadingState.DEFAULT:\n this.renderer.removeStyle(this.el.nativeElement, 'width');\n this.renderer.removeStyle(this.el.nativeElement, 'transform'); // for chromium render bug see issue https://github.com/vmware/clarity/issues/2700\n if (!this.disabled) {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n break;\n case ClrLoadingState.LOADING:\n this.setExplicitButtonWidth();\n this.renderer.setStyle(this.el.nativeElement, 'transform', 'translatez(0)'); // for chromium render bug see issue https://github.com/vmware/clarity/issues/2700\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', '');\n break;\n case ClrLoadingState.SUCCESS:\n this.setExplicitButtonWidth();\n break;\n case ClrLoadingState.ERROR:\n this.loadingStateChange(ClrLoadingState.DEFAULT);\n break;\n default:\n break;\n }\n this.clrLoadingChange.emit(state);\n }\n\n private setExplicitButtonWidth() {\n if (this.el.nativeElement && this.el.nativeElement.getBoundingClientRect) {\n const boundingClientRect = this.el.nativeElement.getBoundingClientRect();\n const width = Math.max(MIN_BUTTON_WIDTH, boundingClientRect.width);\n this.renderer.setStyle(this.el.nativeElement, 'width', `${width}px`);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrLoadingButton } from './loading-button';\n\nexport const CLR_LOADING_BUTTON_DIRECTIVES: Type<any>[] = [ClrLoadingButton];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_LOADING_BUTTON_DIRECTIVES],\n exports: [CLR_LOADING_BUTTON_DIRECTIVES],\n})\nexport class ClrLoadingButtonModule {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\nimport { ClarityIcons, ellipsisHorizontalIcon } from '@clr/angular/icon';\n\nimport { ClrButtonGroupModule } from './button-group/button-group.module';\nimport { ClrLoadingButtonModule } from './button-loading/loading-button.module';\n\n@NgModule({\n exports: [ClrLoadingButtonModule, ClrButtonGroupModule],\n})\nexport class ClrButtonModule {\n constructor() {\n ClarityIcons.addIcons(ellipsisHorizontalIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './button';\nexport * from './button-group';\nexport * from './button-group.module';\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './loading-button';\nexport * from './loading-button.module';\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './button.module';\nexport * from './button-group/index';\nexport * from './button-loading/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.ButtonInGroupService","i1","i1.ButtonInGroupService","i4.ButtonGroupFocusHandler"],"mappings":"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"}
1
+ {"version":3,"file":"clr-angular-button.mjs","sources":["../../../projects/angular/button/providers/button-in-group.service.ts","../../../projects/angular/button/button-group/button.ts","../../../projects/angular/button/providers/button-group-focus.enum.ts","../../../projects/angular/button/providers/button-group-focus-handler.service.ts","../../../projects/angular/button/button-group/button-group.ts","../../../projects/angular/button/button-group/button-group.html","../../../projects/angular/button/button-group/button-group.module.ts","../../../projects/angular/button/button-loading/loading-button.ts","../../../projects/angular/button/button-loading/loading-button.module.ts","../../../projects/angular/button/button.module.ts","../../../projects/angular/button/button-group/index.ts","../../../projects/angular/button/button-loading/index.ts","../../../projects/angular/button/index.ts","../../../projects/angular/button/clr-angular-button.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { ClrButton } from '../button-group/button';\n\n@Injectable()\nexport class ButtonInGroupService {\n private _changes = new Subject<ClrButton>();\n\n get changes(): Observable<ClrButton> {\n return this._changes.asObservable();\n }\n\n updateButtonGroup(button: ClrButton): void {\n this._changes.next(button);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Optional, Output, SkipSelf, TemplateRef, ViewChild } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { ClrLoadingState, LoadingListener, uniqueIdFactory } from '@clr/angular/utils';\n\nimport { ButtonInGroupService } from '../providers/button-in-group.service';\n\n@Component({\n selector: 'clr-button',\n template: `\n <ng-template #buttonProjectedRef>\n <button\n [class]=\"classNames\"\n (click)=\"emitClick()\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.disabled]=\"disabled\"\n [attr.role]=\"role\"\n [attr.id]=\"id\"\n >\n @if (loading) {\n <span class=\"spinner spinner-inline\"></span>\n }\n <ng-content></ng-content>\n </button>\n </ng-template>\n `,\n providers: [{ provide: LoadingListener, useExisting: ClrButton }],\n standalone: false,\n})\nexport class ClrButton implements LoadingListener {\n @Output('click') _click = new EventEmitter<boolean>(false);\n @Input('routerLinkActive') routerLinkActiveClasses: string;\n\n @ViewChild('buttonProjectedRef', { static: true }) templateRef: TemplateRef<ClrButton>;\n\n loading: boolean;\n\n private _inMenu = false;\n private _enableService = false;\n private _classNames = 'btn';\n private _name: string = null;\n private _type: string = null;\n private _disabled: any = null;\n private _id: string = uniqueIdFactory();\n\n constructor(\n @Optional() private readonly routerLinkActive: RouterLinkActive,\n @SkipSelf() @Optional() public buttonInGroupService: ButtonInGroupService\n ) {}\n\n @Input('clrInMenu')\n get inMenu(): boolean {\n return this._inMenu;\n }\n set inMenu(value: boolean) {\n value = !!value;\n if (this._inMenu !== value) {\n this._inMenu = value;\n // We check if the service flag is enabled\n // and if the service exists because the service is optional\n if (this._enableService && this.buttonInGroupService) {\n this.buttonInGroupService.updateButtonGroup(this);\n }\n }\n }\n\n @Input('class')\n get classNames(): string {\n return this.routerLinkActive?.isActive ? `${this._classNames} ${this.routerLinkActiveClasses}` : this._classNames;\n }\n set classNames(value: string) {\n if (typeof value === 'string') {\n const classNames: string[] = value.split(' ');\n if (classNames.indexOf('btn') === -1) {\n classNames.push('btn');\n }\n this._classNames = classNames.join(' ');\n }\n }\n\n @Input('name')\n get name(): string {\n return this._name;\n }\n set name(value: string) {\n if (typeof value === 'string') {\n this._name = value;\n }\n }\n\n @Input('type')\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n if (typeof value === 'string') {\n this._type = value;\n }\n }\n\n @Input('id')\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n if (typeof value === 'string') {\n this._id = value;\n }\n }\n\n @Input('disabled')\n get disabled(): any {\n return this._disabled;\n }\n set disabled(value: any) {\n if (value !== null && value !== false) {\n this._disabled = '';\n } else {\n this._disabled = null;\n }\n }\n\n get role(): string {\n return this.inMenu ? 'menuitem' : null;\n }\n\n ngAfterViewInit() {\n this._enableService = true;\n }\n\n loadingStateChange(state: ClrLoadingState): void {\n this.loading = state === ClrLoadingState.LOADING;\n }\n\n emitClick(): void {\n this._click.emit(true);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum InitialFocus {\n FIRST_ITEM = 'first',\n LAST_ITEM = 'last',\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, Renderer2 } from '@angular/core';\nimport { ClrPopoverService } from '@clr/angular/popover/common';\nimport { FocusableItem, FocusService, Linkers } from '@clr/angular/utils';\n\nimport { InitialFocus } from './button-group-focus.enum';\n@Injectable()\nexport class ButtonGroupFocusHandler {\n initialFocus: InitialFocus = InitialFocus.FIRST_ITEM;\n\n private menu: HTMLElement;\n private menuToggle: HTMLElement;\n private buttons: FocusableItem[];\n private _unlistenFuncs: (() => void)[] = [];\n\n constructor(\n private focusService: FocusService,\n private popoverService: ClrPopoverService,\n private renderer: Renderer2\n ) {}\n\n ngOnDestroy() {\n this._unlistenFuncs.forEach((unlisten: () => void) => unlisten());\n this.focusService.detachListeners(this.menu);\n }\n\n initialize({ menu, menuToggle }: { menu: HTMLElement; menuToggle: HTMLElement }) {\n this.menu = menu;\n this.menuToggle = menuToggle;\n\n this.focusService.registerContainer(this.menu);\n this.listenToKeys();\n this.linkButtons();\n\n switch (this.initialFocus) {\n case InitialFocus.LAST_ITEM:\n this.focusLastItem();\n break;\n default:\n this.focusFirstItem();\n break;\n }\n }\n\n private resetButtonsFocus() {\n this.buttons.forEach(button => {\n button.blur();\n });\n }\n\n private listenToKeys() {\n this._unlistenFuncs.push(\n this.renderer.listen(this.menu, 'keydown.shift.tab', event => this.closeMenu(event, false))\n );\n this._unlistenFuncs.push(this.renderer.listen(this.menu, 'keydown.tab', event => this.closeMenu(event, true)));\n }\n\n private closeMenu(event: KeyboardEvent, focusBackOnToggle: boolean) {\n this.popoverService.toggleWithEvent(event);\n if (focusBackOnToggle) {\n this.menuToggle.focus();\n }\n this.resetButtonsFocus();\n }\n\n private linkButtons() {\n const buttonElements = Array.from(this.menu.children) as HTMLElement[];\n this.buttons = buttonElements.map<FocusableItem>(buttonElement => {\n this._unlistenFuncs.push(this.renderer.listen(buttonElement, 'click', event => this.closeMenu(event, true)));\n return {\n id: buttonElement.id,\n value: buttonElement,\n focus: () => {\n buttonElement.setAttribute('tabindex', '0');\n buttonElement.focus();\n },\n blur: () => {\n buttonElement.setAttribute('tabindex', '-1');\n buttonElement.blur();\n },\n };\n });\n this.resetButtonsFocus();\n Linkers.linkVertical(this.buttons);\n }\n\n private focusFirstItem(): void {\n if (this.buttons.length) {\n this.focusService.moveTo(this.buttons[0]);\n }\n this.initialFocus = InitialFocus.FIRST_ITEM;\n }\n\n private focusLastItem(): void {\n if (this.buttons.length) {\n this.focusService.moveTo(this.buttons[this.buttons.length - 1]);\n }\n this.initialFocus = InitialFocus.FIRST_ITEM;\n }\n}\n\nexport const BUTTON_GROUP_FOCUS_HANDLER_PROVIDER = {\n provide: ButtonGroupFocusHandler,\n};\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport {\n ClrPopoverHostDirective,\n ClrPopoverPosition,\n ClrPopoverService,\n ClrPopoverType,\n DROPDOWN_POSITIONS,\n} from '@clr/angular/popover/common';\nimport {\n ClrCommonStringsService,\n ClrDestroyService,\n FOCUS_SERVICE_PROVIDER,\n uniqueIdFactory,\n} from '@clr/angular/utils';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ClrButton } from './button';\nimport {\n BUTTON_GROUP_FOCUS_HANDLER_PROVIDER,\n ButtonGroupFocusHandler,\n} from '../providers/button-group-focus-handler.service';\nimport { InitialFocus } from '../providers/button-group-focus.enum';\nimport { ButtonInGroupService } from '../providers/button-in-group.service';\n\n@Component({\n selector: 'clr-button-group',\n templateUrl: 'button-group.html',\n providers: [ButtonInGroupService, ClrDestroyService, BUTTON_GROUP_FOCUS_HANDLER_PROVIDER, FOCUS_SERVICE_PROVIDER],\n hostDirectives: [ClrPopoverHostDirective],\n host: { '[class.btn-group]': 'true' },\n standalone: false,\n})\nexport class ClrButtonGroup implements AfterContentInit, AfterViewInit {\n @Input('clrToggleButtonAriaLabel') clrToggleButtonAriaLabel: string = this.commonStrings.keys.rowActions;\n\n @ViewChild('menuToggle') menuToggle: ElementRef<HTMLElement>;\n @ViewChild('menu') menu: ElementRef<HTMLElement>;\n\n @ContentChildren(ClrButton) buttons: QueryList<ClrButton>;\n\n popoverId = uniqueIdFactory();\n InitialFocus = InitialFocus;\n\n inlineButtons: ClrButton[] = [];\n menuButtons: ClrButton[] = [];\n protected popoverType = ClrPopoverType.DROPDOWN;\n private _menuPosition = ClrPopoverPosition.BOTTOM_LEFT;\n\n constructor(\n public buttonGroupNewService: ButtonInGroupService,\n private popoverService: ClrPopoverService,\n public commonStrings: ClrCommonStringsService,\n private destroy$: ClrDestroyService,\n private focusHandler: ButtonGroupFocusHandler\n ) {}\n\n @Input('clrMenuPosition')\n get menuPosition(): ClrPopoverPosition {\n return this._menuPosition;\n }\n set menuPosition(pos: ClrPopoverPosition | string) {\n if (!pos) {\n return;\n }\n\n const posIndex = DROPDOWN_POSITIONS.indexOf(pos as ClrPopoverPosition);\n\n if (posIndex === -1) {\n return;\n }\n\n this._menuPosition = DROPDOWN_POSITIONS[posIndex];\n }\n\n get open() {\n return this.popoverService.open;\n }\n\n /**\n * 1. Initializes the initial Button Group View\n * 2. Subscribes to changes on the ContentChildren\n * in case the user content projection changes\n */\n ngAfterContentInit() {\n this.initializeButtons();\n this.buttonGroupNewService.changes.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button));\n this.buttons.changes.subscribe(() => {\n this.initializeButtons();\n });\n }\n\n ngAfterViewInit() {\n this.handleFocusOnMenuOpen();\n }\n\n /**\n * Moves the button into the other ViewContainer\n * when an update is received.\n *\n * @param button\n */\n rearrangeButton(button: ClrButton): void {\n let fromView: ClrButton[];\n let toView: ClrButton[];\n if (button.inMenu) {\n fromView = this.inlineButtons;\n toView = this.menuButtons;\n } else {\n fromView = this.menuButtons;\n toView = this.inlineButtons;\n }\n const index: number = fromView.indexOf(button);\n if (index > -1) {\n fromView.splice(index, 1);\n const moveIndex = this.getMoveIndex(button);\n if (moveIndex <= toView.length) {\n toView.splice(moveIndex, 0, button);\n }\n }\n }\n\n openMenu(event: Event, initialFocus: InitialFocus) {\n this.focusHandler.initialFocus = initialFocus;\n if (!this.popoverService.open) {\n this.popoverService.toggleWithEvent(event);\n }\n }\n\n /**\n * Author: Eudes\n *\n * Finds the order of a button w.r.t other buttons\n *\n * @param buttonToMove\n * @returns\n */\n getMoveIndex(buttonToMove: ClrButton): number {\n const tempArr: ClrButton[] = this.buttons.filter(button => button.inMenu === buttonToMove.inMenu);\n return tempArr.indexOf(buttonToMove);\n }\n\n initializeButtons(): void {\n const tempInlineButtons: ClrButton[] = [];\n const tempInMenuButtons: ClrButton[] = [];\n this.buttons.forEach(button => {\n if (button.inMenu) {\n tempInMenuButtons.push(button);\n } else {\n tempInlineButtons.push(button);\n }\n });\n this.inlineButtons = tempInlineButtons;\n this.menuButtons = tempInMenuButtons;\n }\n\n private handleFocusOnMenuOpen() {\n this.popoverService.popoverVisible.pipe(takeUntil(this.destroy$)).subscribe(visible => {\n // `menu` sits on the element carrying *clrPopoverContent, so the query only\n // resolves once that embedded view has been created and change detection has\n // refreshed it. popoverVisible fires from a setTimeout inside showOverlay(), which\n // is normally late enough - but not guaranteed to be, so dereferencing either\n // ElementRef unguarded can throw and abort this handler.\n if (!visible || !this.menu || !this.menuToggle) {\n return;\n }\n\n this.focusHandler.initialize({\n menu: this.menu.nativeElement,\n menuToggle: this.menuToggle.nativeElement,\n });\n });\n }\n}\n","<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n@for (inlineButton of inlineButtons; track inlineButton) {\n<ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n} @if (menuButtons.length > 0) {\n<div class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\">\n <button\n #menuToggle\n class=\"btn dropdown-toggle\"\n clrPopoverOrigin\n clrPopoverOpenCloseButton\n (keydown.arrowup)=\"openMenu($event, InitialFocus.LAST_ITEM)\"\n (keydown.arrowdown)=\"openMenu($event, InitialFocus.FIRST_ITEM)\"\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"clrToggleButtonAriaLabel\"\n >\n <cds-icon shape=\"ellipsis-horizontal\" [attr.title]=\"commonStrings.keys.more\"></cds-icon>\n </button>\n <div\n #menu\n role=\"menu\"\n class=\"dropdown-menu clr-button-group-menu\"\n [id]=\"popoverId\"\n [attr.id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n *clrPopoverContent=\"open; at menuPosition; type: popoverType; outsideClickToClose: true; scrollToClose: true\"\n >\n @for (menuButton of menuButtons; track menuButton) {\n <ng-template [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n }\n </div>\n</div>\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClrIcon } from '@clr/angular/icon';\nimport { ClrPopoverModuleNext } from '@clr/angular/popover/common';\n\nimport { ClrButton } from './button';\nimport { ClrButtonGroup } from './button-group';\n\nexport const CLR_BUTTON_GROUP_DIRECTIVES: Type<any>[] = [ClrButton, ClrButtonGroup];\n\n@NgModule({\n imports: [CommonModule, ClrIcon, ClrPopoverModuleNext],\n declarations: [CLR_BUTTON_GROUP_DIRECTIVES],\n exports: [CLR_BUTTON_GROUP_DIRECTIVES],\n})\nexport class ClrButtonGroupModule {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, keyframes, style, transition, trigger } from '@angular/animations';\nimport { Component, ElementRef, EventEmitter, Input, Output, Renderer2 } from '@angular/core';\nimport { ClrLoadingState, LoadingListener } from '@clr/angular/utils';\n\n// minimum width to fit loading spinner\nconst MIN_BUTTON_WIDTH = 42;\n\n@Component({\n selector: 'button[clrLoading]',\n template: `\n <span @parent>\n @switch (state) {\n @case (buttonState.LOADING) {\n <span @spinner class=\"spinner spinner-inline\"></span>\n }\n @case (buttonState.SUCCESS) {\n <span\n @validated\n (@validated.done)=\"this.loadingStateChange(this.buttonState.DEFAULT)\"\n class=\"spinner spinner-inline spinner-check\"\n ></span>\n }\n @case (buttonState.DEFAULT) {\n <span @defaultButton class=\"clr-loading-btn-content\">\n <ng-content></ng-content>\n </span>\n }\n }\n </span>\n `,\n providers: [{ provide: LoadingListener, useExisting: ClrLoadingButton }],\n animations: [\n trigger('parent', [\n // Skip :enter animation on first render.\n // The button text/content should only be faded when transitioning to or from a non-default state.\n transition(':enter', []),\n ]),\n trigger('defaultButton', [\n transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),\n // TODO: see if we can get leave animation to work before spinner's enter animation\n transition(':leave', [style({ opacity: 0 })]),\n ]),\n trigger('spinner', [\n transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),\n transition(':leave', [style({ opacity: 1 }), animate('100ms ease-out', style({ opacity: 0 }))]),\n ]),\n trigger('validated', [\n transition(':enter', [\n animate(\n '600ms',\n keyframes([\n style({ transform: 'scale(0,0)', offset: 0 }),\n style({ opacity: 1, offset: 0.2 }),\n style({ transform: 'scale(1.2,1.2)', offset: 0.4 }),\n style({ transform: 'scale(.9,.9)', offset: 0.6 }),\n style({ transform: 'scale(1,1)', offset: 1 }),\n ])\n ),\n ]),\n transition(':leave', [style({ opacity: 1 }), animate('100ms ease-out', style({ opacity: 0 }))]),\n ]),\n ],\n host: { '[attr.disabled]': \"disabled? '' : null\" },\n standalone: false,\n})\nexport class ClrLoadingButton implements LoadingListener {\n @Input('disabled') disabled: boolean;\n\n @Output('clrLoadingChange') clrLoadingChange = new EventEmitter<ClrLoadingState>(false);\n\n buttonState = ClrLoadingState;\n state: ClrLoadingState = ClrLoadingState.DEFAULT;\n\n constructor(\n public el: ElementRef<HTMLButtonElement>,\n private renderer: Renderer2\n ) {}\n\n loadingStateChange(state: ClrLoadingState): void {\n if (state === this.state) {\n return;\n }\n this.state = state;\n\n switch (state) {\n case ClrLoadingState.DEFAULT:\n this.renderer.removeStyle(this.el.nativeElement, 'width');\n this.renderer.removeStyle(this.el.nativeElement, 'transform'); // for chromium render bug see issue https://github.com/vmware/clarity/issues/2700\n if (!this.disabled) {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n break;\n case ClrLoadingState.LOADING:\n this.setExplicitButtonWidth();\n this.renderer.setStyle(this.el.nativeElement, 'transform', 'translatez(0)'); // for chromium render bug see issue https://github.com/vmware/clarity/issues/2700\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', '');\n break;\n case ClrLoadingState.SUCCESS:\n this.setExplicitButtonWidth();\n break;\n case ClrLoadingState.ERROR:\n this.loadingStateChange(ClrLoadingState.DEFAULT);\n break;\n default:\n break;\n }\n this.clrLoadingChange.emit(state);\n }\n\n private setExplicitButtonWidth() {\n if (this.el.nativeElement && this.el.nativeElement.getBoundingClientRect) {\n const boundingClientRect = this.el.nativeElement.getBoundingClientRect();\n const width = Math.max(MIN_BUTTON_WIDTH, boundingClientRect.width);\n this.renderer.setStyle(this.el.nativeElement, 'width', `${width}px`);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrLoadingButton } from './loading-button';\n\nexport const CLR_LOADING_BUTTON_DIRECTIVES: Type<any>[] = [ClrLoadingButton];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_LOADING_BUTTON_DIRECTIVES],\n exports: [CLR_LOADING_BUTTON_DIRECTIVES],\n})\nexport class ClrLoadingButtonModule {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\nimport { ClarityIcons, ellipsisHorizontalIcon } from '@clr/angular/icon';\n\nimport { ClrButtonGroupModule } from './button-group/button-group.module';\nimport { ClrLoadingButtonModule } from './button-loading/loading-button.module';\n\n@NgModule({\n exports: [ClrLoadingButtonModule, ClrButtonGroupModule],\n})\nexport class ClrButtonModule {\n constructor() {\n ClarityIcons.addIcons(ellipsisHorizontalIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './button';\nexport * from './button-group';\nexport * from './button-group.module';\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './loading-button';\nexport * from './loading-button.module';\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './button.module';\nexport * from './button-group/index';\nexport * from './button-loading/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.ButtonInGroupService","i1","i1.ButtonInGroupService","i4.ButtonGroupFocusHandler"],"mappings":"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"}
@@ -4064,6 +4064,10 @@ class ClrDatagridRow {
4064
4064
  get identifyBy() {
4065
4065
  return this.items.identifyBy;
4066
4066
  }
4067
+ openDetails(event, detailButton) {
4068
+ event.stopPropagation();
4069
+ this.detailService.toggle(this.item, detailButton);
4070
+ }
4067
4071
  ngOnInit() {
4068
4072
  this.wrappedInjector = new HostWrapper(WrappedRow, this.vcr);
4069
4073
  this.selection.lockItem(this.item, this.clrDgSelectable === false);
@@ -4127,7 +4131,8 @@ class ClrDatagridRow {
4127
4131
  this.selectedChanged.emit(selected);
4128
4132
  }
4129
4133
  }
4130
- toggleExpand() {
4134
+ toggleExpand(event) {
4135
+ event.stopPropagation();
4131
4136
  if (this.expand.expandable) {
4132
4137
  this.expandAnimation.updateStartHeight();
4133
4138
  this.expanded = !this.expanded;
@@ -4195,7 +4200,7 @@ class ClrDatagridRow {
4195
4200
  DatagridIfExpandService,
4196
4201
  { provide: IfExpandService, useExisting: DatagridIfExpandService },
4197
4202
  { provide: LoadingListener, useExisting: DatagridIfExpandService },
4198
- ], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimationDirective, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_fixedCellTemplate", first: true, predicate: ["fixedCellTemplate"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [clrExpandableAnimation]=\"expandAnimationTrigger\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n [class.datagrid-row-clickable]=\"selection.rowSelectionMode\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n>\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n @if (selection.selectionType === SELECTION_TYPE.Multi) {\n <div\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n tabindex=\"-1\"\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n } @if (selection.selectionType === SELECTION_TYPE.Single) {\n <div\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\n type=\"radio\"\n clrRadio\n clrDgSingleSelectionRadio\n [clrDgIdentityFn]=\"identifyBy\"\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [ngModel]=\"selection.currentSingle\"\n (ngModelChange)=\"selection.current = [$event]\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\n </div>\n } @if (rowActionService.hasActionableRow) {\n <div class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n } @if (globalExpandable.hasExpandableRow) {\n <div class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n @if (expand.expandable) { @if (!expand.loading) {\n <button\n tabindex=\"-1\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expand.hasExpandTemplate && !expand.expanded ? null : expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n } @if (expand.loading) {\n <clr-spinner clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n } }\n </div>\n } @if (detailService.enabled) {\n <div class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n @if (!detailHidden) {\n <button\n tabindex=\"-1\"\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [disabled]=\"detailDisabled\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n }\n </div>\n }\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n @if (replaced && !expand.loading) {\n <ng-template [ngTemplateOutlet]=\"detail\"></ng-template>\n } @if (!replaced && !expand.loading) {\n <ng-template [ngTemplateOutlet]=\"detail\"></ng-template>\n }\n </div>\n</div>\n<!--\nWe need the \"project into template\" hacks because we need this in 2 different places\ndepending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n\n<ng-template #fixedCellTemplate>\n <div class=\"datagrid-fixed-column datagrid-cell\" role=\"gridcell\"></div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: i12.ClrRadio, selector: "[clrRadio]" }, { kind: "component", type: i12.ClrRadioWrapper, selector: "clr-radio-wrapper" }, { kind: "directive", type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i13.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i13.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i13.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.ClrExpandableAnimationDirective, selector: "[clrExpandableAnimation]", inputs: ["clrExpandableAnimation"] }, { kind: "component", type: i14.ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "directive", type: ClrDatagridSingleSelectionValueAccessor, selector: "input[type=radio][clrDgSingleSelectionRadio]", inputs: ["value", "clrDgIdentityFn"] }, { kind: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }] }); }
4203
+ ], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimationDirective, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_fixedCellTemplate", first: true, predicate: ["fixedCellTemplate"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [clrExpandableAnimation]=\"expandAnimationTrigger\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n [class.datagrid-row-clickable]=\"selection.rowSelectionMode\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n>\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n @if (selection.selectionType === SELECTION_TYPE.Multi) {\n <div\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n tabindex=\"-1\"\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n } @if (selection.selectionType === SELECTION_TYPE.Single) {\n <div\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\n type=\"radio\"\n clrRadio\n clrDgSingleSelectionRadio\n [clrDgIdentityFn]=\"identifyBy\"\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [ngModel]=\"selection.currentSingle\"\n (ngModelChange)=\"selection.current = [$event]\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\n </div>\n } @if (rowActionService.hasActionableRow) {\n <div class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n } @if (globalExpandable.hasExpandableRow) {\n <div class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n @if (expand.expandable) { @if (!expand.loading) {\n <button\n tabindex=\"-1\"\n (click)=\"toggleExpand($event)\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expand.hasExpandTemplate && !expand.expanded ? null : expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n } @if (expand.loading) {\n <clr-spinner clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n } }\n </div>\n } @if (detailService.enabled) {\n <div class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n @if (!detailHidden) {\n <button\n tabindex=\"-1\"\n (click)=\"openDetails($event, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [disabled]=\"detailDisabled\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n }\n </div>\n }\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n @if (replaced && !expand.loading) {\n <ng-template [ngTemplateOutlet]=\"detail\"></ng-template>\n } @if (!replaced && !expand.loading) {\n <ng-template [ngTemplateOutlet]=\"detail\"></ng-template>\n }\n </div>\n</div>\n<!--\nWe need the \"project into template\" hacks because we need this in 2 different places\ndepending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n\n<ng-template #fixedCellTemplate>\n <div class=\"datagrid-fixed-column datagrid-cell\" role=\"gridcell\"></div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: i12.ClrRadio, selector: "[clrRadio]" }, { kind: "component", type: i12.ClrRadioWrapper, selector: "clr-radio-wrapper" }, { kind: "directive", type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i13.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i13.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i13.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.ClrExpandableAnimationDirective, selector: "[clrExpandableAnimation]", inputs: ["clrExpandableAnimation"] }, { kind: "component", type: i14.ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "directive", type: ClrDatagridSingleSelectionValueAccessor, selector: "input[type=radio][clrDgSingleSelectionRadio]", inputs: ["value", "clrDgIdentityFn"] }, { kind: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }] }); }
4199
4204
  }
4200
4205
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatagridRow, decorators: [{
4201
4206
  type: Component,
@@ -4209,7 +4214,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
4209
4214
  DatagridIfExpandService,
4210
4215
  { provide: IfExpandService, useExisting: DatagridIfExpandService },
4211
4216
  { provide: LoadingListener, useExisting: DatagridIfExpandService },
4212
- ], standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [clrExpandableAnimation]=\"expandAnimationTrigger\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n [class.datagrid-row-clickable]=\"selection.rowSelectionMode\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n>\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n @if (selection.selectionType === SELECTION_TYPE.Multi) {\n <div\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n tabindex=\"-1\"\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n } @if (selection.selectionType === SELECTION_TYPE.Single) {\n <div\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\n type=\"radio\"\n clrRadio\n clrDgSingleSelectionRadio\n [clrDgIdentityFn]=\"identifyBy\"\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [ngModel]=\"selection.currentSingle\"\n (ngModelChange)=\"selection.current = [$event]\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\n </div>\n } @if (rowActionService.hasActionableRow) {\n <div class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n } @if (globalExpandable.hasExpandableRow) {\n <div class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n @if (expand.expandable) { @if (!expand.loading) {\n <button\n tabindex=\"-1\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expand.hasExpandTemplate && !expand.expanded ? null : expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n } @if (expand.loading) {\n <clr-spinner clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n } }\n </div>\n } @if (detailService.enabled) {\n <div class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n @if (!detailHidden) {\n <button\n tabindex=\"-1\"\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [disabled]=\"detailDisabled\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n }\n </div>\n }\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n @if (replaced && !expand.loading) {\n <ng-template [ngTemplateOutlet]=\"detail\"></ng-template>\n } @if (!replaced && !expand.loading) {\n <ng-template [ngTemplateOutlet]=\"detail\"></ng-template>\n }\n </div>\n</div>\n<!--\nWe need the \"project into template\" hacks because we need this in 2 different places\ndepending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n\n<ng-template #fixedCellTemplate>\n <div class=\"datagrid-fixed-column datagrid-cell\" role=\"gridcell\"></div>\n</ng-template>\n" }]
4217
+ ], standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [clrExpandableAnimation]=\"expandAnimationTrigger\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n [class.datagrid-row-clickable]=\"selection.rowSelectionMode\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n>\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n @if (selection.selectionType === SELECTION_TYPE.Multi) {\n <div\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n tabindex=\"-1\"\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n } @if (selection.selectionType === SELECTION_TYPE.Single) {\n <div\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\n type=\"radio\"\n clrRadio\n clrDgSingleSelectionRadio\n [clrDgIdentityFn]=\"identifyBy\"\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [ngModel]=\"selection.currentSingle\"\n (ngModelChange)=\"selection.current = [$event]\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\n </div>\n } @if (rowActionService.hasActionableRow) {\n <div class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n } @if (globalExpandable.hasExpandableRow) {\n <div class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n @if (expand.expandable) { @if (!expand.loading) {\n <button\n tabindex=\"-1\"\n (click)=\"toggleExpand($event)\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expand.hasExpandTemplate && !expand.expanded ? null : expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n } @if (expand.loading) {\n <clr-spinner clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n } }\n </div>\n } @if (detailService.enabled) {\n <div class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n @if (!detailHidden) {\n <button\n tabindex=\"-1\"\n (click)=\"openDetails($event, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [disabled]=\"detailDisabled\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n }\n </div>\n }\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n @if (replaced && !expand.loading) {\n <ng-template [ngTemplateOutlet]=\"detail\"></ng-template>\n } @if (!replaced && !expand.loading) {\n <ng-template [ngTemplateOutlet]=\"detail\"></ng-template>\n }\n </div>\n</div>\n<!--\nWe need the \"project into template\" hacks because we need this in 2 different places\ndepending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n\n<ng-template #fixedCellTemplate>\n <div class=\"datagrid-fixed-column datagrid-cell\" role=\"gridcell\"></div>\n</ng-template>\n" }]
4213
4218
  }], ctorParameters: () => [{ type: Selection }, { type: RowActionService }, { type: ExpandableRowsCount }, { type: DatagridIfExpandService }, { type: DetailService }, { type: DisplayModeService }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i2.ClrCommonStringsService }, { type: Items }, { type: undefined, decorators: [{
4214
4219
  type: Inject,
4215
4220
  args: [DOCUMENT]
@@ -5529,6 +5534,7 @@ class ClrDatagridActionOverflow {
5529
5534
  [attr.aria-label]="buttonLabel || commonStrings.keys.rowActions"
5530
5535
  clrPopoverOrigin
5531
5536
  clrPopoverOpenCloseButton
5537
+ (click)="$event.stopPropagation()"
5532
5538
  >
5533
5539
  <cds-icon shape="ellipsis-vertical" [attr.title]="buttonLabel || commonStrings.keys.rowActions"></cds-icon>
5534
5540
  </button>
@@ -5571,6 +5577,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
5571
5577
  [attr.aria-label]="buttonLabel || commonStrings.keys.rowActions"
5572
5578
  clrPopoverOrigin
5573
5579
  clrPopoverOpenCloseButton
5580
+ (click)="$event.stopPropagation()"
5574
5581
  >
5575
5582
  <cds-icon shape="ellipsis-vertical" [attr.title]="buttonLabel || commonStrings.keys.rowActions"></cds-icon>
5576
5583
  </button>