@clr/angular 13.0.3 → 13.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/button/button-group/button-group.d.ts +5 -3
  2. package/clarity.api.md +72 -22
  3. package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +11 -3
  4. package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +9 -3
  5. package/data/datagrid/datagrid-column.d.ts +10 -1
  6. package/data/datagrid/render/main-renderer.d.ts +3 -2
  7. package/data/stack-view/stack-control.d.ts +7 -2
  8. package/data/tree-view/tree-node.d.ts +1 -1
  9. package/esm2020/accordion/stepper/models/stepper.model.mjs +1 -1
  10. package/esm2020/accordion/stepper/providers/stepper.service.mjs +1 -1
  11. package/esm2020/accordion/stepper/stepper-panel.mjs +1 -1
  12. package/esm2020/button/button-group/button-group.mjs +17 -11
  13. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +37 -16
  14. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +27 -13
  15. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +7 -3
  16. package/esm2020/data/datagrid/datagrid-column.mjs +28 -3
  17. package/esm2020/data/datagrid/datagrid-filter.mjs +1 -1
  18. package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +1 -1
  19. package/esm2020/data/datagrid/render/main-renderer.mjs +9 -6
  20. package/esm2020/data/stack-view/stack-control.mjs +13 -3
  21. package/esm2020/data/stack-view/stack-input.mjs +1 -1
  22. package/esm2020/data/stack-view/stack-select.mjs +1 -1
  23. package/esm2020/data/tree-view/models/declarative-tree-node.model.mjs +1 -1
  24. package/esm2020/data/tree-view/models/recursive-tree-node.model.mjs +1 -1
  25. package/esm2020/data/tree-view/tree-node.mjs +11 -7
  26. package/esm2020/forms/checkbox/checkbox-container.mjs +1 -1
  27. package/esm2020/forms/checkbox/checkbox.mjs +1 -1
  28. package/esm2020/forms/combobox/combobox-container.mjs +1 -1
  29. package/esm2020/forms/combobox/combobox.mjs +1 -4
  30. package/esm2020/forms/combobox/model/pseudo-focus.model.mjs +1 -1
  31. package/esm2020/forms/common/control.mjs +1 -1
  32. package/esm2020/forms/common/error.mjs +1 -1
  33. package/esm2020/forms/common/helper.mjs +1 -1
  34. package/esm2020/forms/common/if-control-state/if-error.mjs +1 -1
  35. package/esm2020/forms/common/if-control-state/if-success.mjs +1 -1
  36. package/esm2020/forms/common/success.mjs +1 -1
  37. package/esm2020/forms/datalist/datalist-container.mjs +1 -1
  38. package/esm2020/forms/datalist/datalist-input.mjs +1 -1
  39. package/esm2020/forms/datepicker/date-container.mjs +1 -1
  40. package/esm2020/forms/datepicker/date-input.mjs +1 -1
  41. package/esm2020/forms/input/input.mjs +1 -1
  42. package/esm2020/forms/password/password.mjs +1 -1
  43. package/esm2020/forms/radio/radio-container.mjs +1 -1
  44. package/esm2020/forms/range/range-container.mjs +1 -1
  45. package/esm2020/forms/select/select-container.mjs +1 -1
  46. package/esm2020/forms/select/select.mjs +1 -1
  47. package/esm2020/forms/textarea/textarea.mjs +1 -1
  48. package/esm2020/layout/nav/header.mjs +25 -8
  49. package/esm2020/layout/nav/nav-level.mjs +109 -7
  50. package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +3 -3
  51. package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +25 -15
  52. package/esm2020/modal/modal-body.mjs +5 -2
  53. package/esm2020/popover/common/abstract-popover.mjs +15 -6
  54. package/esm2020/popover/dropdown/dropdown-menu.mjs +1 -1
  55. package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +5 -3
  56. package/esm2020/popover/signpost/signpost-content.mjs +2 -1
  57. package/esm2020/utils/breakpoints/breakpoints.mjs +15 -1
  58. package/esm2020/utils/destroy/destroy.service.mjs +44 -0
  59. package/esm2020/utils/destroy/index.mjs +7 -0
  60. package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +7 -7
  61. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +21 -16
  62. package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +1 -1
  63. package/esm2020/utils/focus-trap/focus-trap.mjs +141 -0
  64. package/esm2020/utils/index.mjs +2 -1
  65. package/esm2020/utils/popover/popover-content.mjs +14 -8
  66. package/fesm2015/clr-angular.mjs +591 -167
  67. package/fesm2015/clr-angular.mjs.map +1 -1
  68. package/fesm2020/clr-angular.mjs +588 -166
  69. package/fesm2020/clr-angular.mjs.map +1 -1
  70. package/forms/combobox/combobox.d.ts +0 -1
  71. package/layout/nav/header.d.ts +6 -0
  72. package/layout/nav/nav-level.d.ts +16 -4
  73. package/layout/vertical-nav/vertical-nav-link.d.ts +6 -5
  74. package/modal/modal-body.d.ts +1 -0
  75. package/package.json +4 -4
  76. package/popover/common/abstract-popover.d.ts +3 -1
  77. package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +2 -2
  78. package/utils/breakpoints/breakpoints.d.ts +14 -0
  79. package/utils/destroy/destroy.service.d.ts +32 -0
  80. package/utils/destroy/index.d.ts +1 -0
  81. package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +5 -4
  82. package/utils/focus-trap/focus-trap.d.ts +29 -0
  83. package/utils/index.d.ts +1 -0
  84. package/utils/popover/popover-content.d.ts +2 -1
@@ -80,7 +80,6 @@ export declare class ClrCombobox<T> extends WrappedFormControl<ClrComboboxContai
80
80
  private getDisplayNames;
81
81
  ngAfterContentInit(): void;
82
82
  ngAfterViewInit(): void;
83
- ngOnDestroy(): void;
84
83
  static ɵfac: i0.ɵɵFactoryDeclaration<ClrCombobox<any>, [null, null, { optional: true; self: true; }, null, null, null, null, null, null, { optional: true; }, { optional: true; }, null, null, null, null]>;
85
84
  static ɵcmp: i0.ɵɵComponentDeclaration<ClrCombobox<any>, "clr-combobox", never, { "placeholder": "placeholder"; "multiSelect": "clrMulti"; }, { "clrInputChange": "clrInputChange"; "clrOpenChange": "clrOpenChange"; "clrSelectionChange": "clrSelectionChange"; }, ["optionSelected"], ["*"]>;
86
85
  }
@@ -17,7 +17,13 @@ export declare class ClrHeader implements OnDestroy {
17
17
  resetNavTriggers(): void;
18
18
  initializeNavTriggers(navList: number[]): void;
19
19
  closeOpenNav(): void;
20
+ /**
21
+ * @deprecated Will be removed in with @clr/angular v15.0.0
22
+ *
23
+ * Use `openNav(navLevel)` instead to open the navigation and ResponsiveNavService to close it.
24
+ */
20
25
  toggleNav(navLevel: number): void;
26
+ openNav(navLevel: number): void;
21
27
  ngOnDestroy(): void;
22
28
  static ɵfac: i0.ɵɵFactoryDeclaration<ClrHeader, never>;
23
29
  static ɵcmp: i0.ɵɵComponentDeclaration<ClrHeader, "clr-header", never, {}, {}, never, ["*"]>;
@@ -1,20 +1,32 @@
1
- import { ElementRef, OnInit } from '@angular/core';
1
+ import { ElementRef, Injector, OnInit, Renderer2 } from '@angular/core';
2
2
  import { ResponsiveNavigationService } from './providers/responsive-navigation.service';
3
3
  import { ResponsiveNavCodes } from './responsive-nav-codes';
4
+ import { FocusTrap, FocusTrapElement } from '../../utils/focus-trap/focus-trap';
5
+ import '@cds/core/internal-components/close-button/register.js';
4
6
  import * as i0 from "@angular/core";
5
- export declare class ClrNavLevel implements OnInit {
7
+ export declare class ClrNavLevel extends FocusTrap implements OnInit {
6
8
  private responsiveNavService;
7
9
  private elementRef;
8
10
  _level: number;
9
- constructor(responsiveNavService: ResponsiveNavigationService, elementRef: ElementRef);
11
+ closeButtonAriaLabel: string;
12
+ private _subscription;
13
+ private _isOpen;
14
+ constructor(platformId: any, responsiveNavService: ResponsiveNavigationService, elementRef: ElementRef<FocusTrapElement>, renderer: Renderer2, injector: Injector);
10
15
  ngOnInit(): void;
16
+ ngAfterViewInit(): void;
11
17
  addNavClass(level: number): void;
12
18
  get level(): number;
13
19
  get responsiveNavCodes(): ResponsiveNavCodes;
20
+ get isOpen(): boolean;
21
+ onResize(event: Event): void;
14
22
  open(): void;
15
23
  close(): void;
16
24
  onMouseClick(target: any): void;
25
+ protected hideNavigation(): void;
26
+ protected showNavigation(): void;
27
+ protected hideCloseButton(): void;
28
+ protected showCloseButton(): void;
17
29
  ngOnDestroy(): void;
18
30
  static ɵfac: i0.ɵɵFactoryDeclaration<ClrNavLevel, never>;
19
- static ɵdir: i0.ɵɵDirectiveDeclaration<ClrNavLevel, "[clr-nav-level]", never, { "_level": "clr-nav-level"; }, {}, never>;
31
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ClrNavLevel, "[clr-nav-level]", never, { "_level": "clr-nav-level"; "closeButtonAriaLabel": "closeAriaLabel"; }, {}, never>;
20
32
  }
@@ -1,9 +1,10 @@
1
+ import { ChangeDetectorRef, ElementRef, OnDestroy } from '@angular/core';
1
2
  import { VerticalNavGroupService } from './providers/vertical-nav-group.service';
2
3
  import * as i0 from "@angular/core";
3
- export declare class ClrVerticalNavLink {
4
- private _navGroupService;
5
- constructor(_navGroupService: VerticalNavGroupService);
6
- expandParentNavGroup(): void;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<ClrVerticalNavLink, [{ optional: true; }]>;
4
+ export declare class ClrVerticalNavLink implements OnDestroy {
5
+ private destroy$;
6
+ constructor(host: ElementRef<HTMLElement>, ref: ChangeDetectorRef, navGroupService: VerticalNavGroupService | null);
7
+ ngOnDestroy(): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClrVerticalNavLink, [null, null, { optional: true; }]>;
8
9
  static ɵcmp: i0.ɵɵComponentDeclaration<ClrVerticalNavLink, "[clrVerticalNavLink]", never, {}, {}, never, ["[clrVerticalNavIcon]", "*"]>;
9
10
  }
@@ -11,6 +11,7 @@ export declare class ClrModalBody implements OnDestroy {
11
11
  private readonly host;
12
12
  private tabindex;
13
13
  private unlisteners;
14
+ private observer;
14
15
  constructor(renderer: Renderer2, host: ElementRef<HTMLElement>, ngZone: NgZone);
15
16
  ngOnDestroy(): void;
16
17
  private addTabIndex;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@clr/angular",
3
3
  "description": "Angular components for Clarity",
4
- "homepage": "https://clarity.design",
4
+ "homepage": "https://angular.clarity.design",
5
5
  "keywords": [
6
6
  "ng-add",
7
7
  "clarity",
@@ -10,12 +10,12 @@
10
10
  ],
11
11
  "repository": {
12
12
  "type": "git",
13
- "url": "https://github.com/vmware/clarity.git"
13
+ "url": "https://github.com/vmware-clarity/ng-clarity.git"
14
14
  },
15
15
  "author": "Clarity Design System",
16
16
  "license": "MIT",
17
17
  "bugs": {
18
- "url": "https://github.com/vmware/clarity/issues"
18
+ "url": "https://github.com/vmware-clarity/ng-clarity/issues"
19
19
  },
20
20
  "peerDependencies": {
21
21
  "@angular/common": "^13.0.0",
@@ -45,5 +45,5 @@
45
45
  "dependencies": {
46
46
  "tslib": "^2.3.0"
47
47
  },
48
- "version": "13.0.3"
48
+ "version": "13.1.0"
49
49
  }
@@ -1,4 +1,4 @@
1
- import { AfterViewChecked, ElementRef, Injector, OnDestroy, Renderer2 } from '@angular/core';
1
+ import { AfterViewChecked, ElementRef, Injector, OnDestroy, Renderer2, NgZone, ChangeDetectorRef } from '@angular/core';
2
2
  import { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';
3
3
  import { Point } from './popover';
4
4
  import { PopoverOptions } from './popover-options.interface';
@@ -9,6 +9,8 @@ export declare abstract class AbstractPopover implements AfterViewChecked, OnDes
9
9
  protected el: ElementRef;
10
10
  protected toggleService: ClrPopoverToggleService;
11
11
  protected renderer: Renderer2;
12
+ protected ngZone: NgZone;
13
+ protected ref: ChangeDetectorRef;
12
14
  private popoverInstance;
13
15
  private subscription;
14
16
  private updateAnchor;
@@ -1,10 +1,10 @@
1
- import { Renderer2 } from '@angular/core';
1
+ import { OnDestroy, Renderer2 } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
3
  import { ClrPopoverToggleService } from '../../../utils/popover/providers/popover-toggle.service';
4
4
  import { FocusService } from '../../../utils/focus/focus.service';
5
5
  import { FocusableItem } from '../../../utils/focus/focusable-item/focusable-item';
6
6
  import * as i0 from "@angular/core";
7
- export declare class DropdownFocusHandler implements FocusableItem {
7
+ export declare class DropdownFocusHandler implements OnDestroy, FocusableItem {
8
8
  id: string;
9
9
  private renderer;
10
10
  private parent;
@@ -1 +1,15 @@
1
+ /**
2
+ * TODO:
3
+ * Using core functions like:
4
+ * - pluckPixelValue
5
+ * - getCssPropertyValue
6
+ *
7
+ * to get the value of the design token.
8
+ *
9
+ * Note: Memoization/Cache usage possible.
10
+ */
1
11
  export declare const DATEPICKER_ENABLE_BREAKPOINT = 768;
12
+ export declare const SMALL_BREAKPOINT = 576;
13
+ export declare const MEDIUM_BREAKPOINT = 768;
14
+ export declare const LARGE_BREAKPOINT = 992;
15
+ export declare const EXTRA_LARGE_BREAKPOINT = 1200;
@@ -0,0 +1,32 @@
1
+ import { OnDestroy } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * @description
6
+ *
7
+ * Developers should explicitly add this service to providers; it then can be injected
8
+ * into a constructor and used as a notifier for the `takeUntil` operator. This eliminates
9
+ * the need for boilerplates with subscriptions, and we don't need to implement the `OnDestroy`
10
+ * interface and teardown subscriptions there.
11
+ *
12
+ * This can be used as follows:
13
+ * ```ts
14
+ * @Component({
15
+ * selector: 'clr-button-group',
16
+ * templateUrl: 'button-group.html',
17
+ * providers: [ClrDestroyService],
18
+ * })
19
+ * export class ClrButtonGroup {
20
+ * constructor(public buttonGroupNewService: ButtonInGroupService, private destroy$: ClrDestroyService) {}
21
+ *
22
+ * ngAfterContentInit() {
23
+ * this.buttonGroupNewService.changes.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button));
24
+ * }
25
+ * }
26
+ * ```
27
+ */
28
+ export declare class ClrDestroyService extends Subject<void> implements OnDestroy {
29
+ ngOnDestroy(): void;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClrDestroyService, never>;
31
+ static ɵprov: i0.ɵɵInjectableDeclaration<ClrDestroyService>;
32
+ }
@@ -0,0 +1 @@
1
+ export * from './destroy.service';
@@ -1,17 +1,18 @@
1
- import { AfterViewInit, ElementRef, Renderer2 } from '@angular/core';
1
+ import { AfterViewInit, ElementRef, NgZone, OnDestroy, Renderer2 } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class ClrFocusOnViewInit implements AfterViewInit {
3
+ export declare class ClrFocusOnViewInit implements AfterViewInit, OnDestroy {
4
4
  private el;
5
5
  private platformId;
6
6
  private focusOnViewInit;
7
7
  private renderer;
8
- constructor(el: ElementRef, platformId: any, focusOnViewInit: boolean, document: any, renderer: Renderer2);
8
+ private destroy$;
9
+ constructor(el: ElementRef, platformId: any, focusOnViewInit: boolean, document: any, renderer: Renderer2, ngZone: NgZone);
9
10
  private document;
10
11
  private directFocus;
11
- onFocusout(): void;
12
12
  private _isEnabled;
13
13
  set isEnabled(value: boolean | string);
14
14
  ngAfterViewInit(): void;
15
+ ngOnDestroy(): void;
15
16
  private focus;
16
17
  static ɵfac: i0.ɵɵFactoryDeclaration<ClrFocusOnViewInit, never>;
17
18
  static ɵdir: i0.ɵɵDirectiveDeclaration<ClrFocusOnViewInit, "[clrFocusOnViewInit]", never, { "isEnabled": "clrFocusOnViewInit"; }, {}, never>;
@@ -0,0 +1,29 @@
1
+ import { Injector, Renderer2 } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export interface FocusTrapElement extends HTMLElement {
4
+ topReboundElement: HTMLElement | undefined;
5
+ bottomReboundElement: HTMLElement | undefined;
6
+ focusTrapId: string;
7
+ }
8
+ export declare function refocusIfOutsideFocusTrapElement(focusedElement: HTMLElement, focusTrapElement: FocusTrapElement, elementToRefocus?: HTMLElement): void;
9
+ export declare function elementIsOutsideFocusTrapElement(focusedElement: HTMLElement, focusTrapElement: FocusTrapElement): boolean;
10
+ export declare function createFocusTrapReboundElement(document: Document): HTMLSpanElement;
11
+ export declare function addReboundElementsToFocusTrapElement(document: Document, focusTrapElement: FocusTrapElement): void;
12
+ export declare function removeReboundElementsFromFocusTrapElement(focusTrapElement: FocusTrapElement): void;
13
+ export declare function castHtmlElementToFocusTrapElement(el: HTMLElement): FocusTrapElement;
14
+ export declare class FocusTrap {
15
+ protected renderer: Renderer2;
16
+ focusTrapElement: FocusTrapElement;
17
+ private previousFocus;
18
+ private onFocusInEvent;
19
+ private unlisten;
20
+ protected _document: Document;
21
+ firstFocusElement: HTMLElement | FocusTrapElement;
22
+ active: boolean;
23
+ constructor(renderer: Renderer2, injector: Injector, platformId: any, hostElement: FocusTrapElement);
24
+ enableFocusTrap(): void;
25
+ removeFocusTrap(): void;
26
+ private onFocusIn;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<FocusTrap, never>;
28
+ static ɵprov: i0.ɵɵInjectableDeclaration<FocusTrap>;
29
+ }
package/utils/index.d.ts CHANGED
@@ -7,3 +7,4 @@ export * from './drag-and-drop/index';
7
7
  export * from './popover/index';
8
8
  export * from './focus/focus-on-view-init/index';
9
9
  export * from './focus-trap/index';
10
+ export * from './destroy';
@@ -19,7 +19,8 @@ export declare class ClrPopoverContent implements AfterContentChecked, OnDestroy
19
19
  set contentAt(position: ClrPopoverPosition);
20
20
  set outsideClickClose(clickToClose: boolean);
21
21
  set scrollToClose(scrollToClose: boolean);
22
- constructor(document: HTMLDocument, container: ViewContainerRef, template: TemplateRef<any>, renderer: Renderer2, smartPositionService: ClrPopoverPositionService, smartEventsService: ClrPopoverEventsService, smartOpenService: ClrPopoverToggleService);
22
+ private removeClickListenerFn;
23
+ constructor(document: Document, container: ViewContainerRef, template: TemplateRef<any>, renderer: Renderer2, smartPositionService: ClrPopoverPositionService, smartEventsService: ClrPopoverEventsService, smartOpenService: ClrPopoverToggleService);
23
24
  ngAfterViewInit(): void;
24
25
  ngOnDestroy(): void;
25
26
  private removeContent;