@koobiq/components 18.15.0 → 18.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/autocomplete/autocomplete.component.d.ts +5 -2
  2. package/core/option/_option-theme.scss +7 -5
  3. package/core/pop-up/focus-trap-strategy.d.ts +5 -0
  4. package/core/pop-up/index.d.ts +1 -0
  5. package/core/pop-up/pop-up-trigger.d.ts +1 -0
  6. package/datepicker/calendar-header.component.d.ts +2 -8
  7. package/esm2022/autocomplete/autocomplete.component.mjs +18 -6
  8. package/esm2022/core/option/option.mjs +2 -2
  9. package/esm2022/core/pop-up/focus-trap-strategy.mjs +6 -0
  10. package/esm2022/core/pop-up/index.mjs +2 -1
  11. package/esm2022/core/pop-up/pop-up-trigger.mjs +5 -1
  12. package/esm2022/core/version.mjs +2 -2
  13. package/esm2022/datepicker/calendar-header.component.mjs +5 -8
  14. package/esm2022/form-field/form-field.mjs +10 -4
  15. package/esm2022/form-field/validate.directive.mjs +3 -2
  16. package/esm2022/list/list-selection.component.mjs +17 -9
  17. package/esm2022/list/list.component.mjs +2 -2
  18. package/esm2022/markdown/markdown.service.mjs +12 -3
  19. package/esm2022/modal/modal.component.mjs +4 -3
  20. package/esm2022/popover/popover.component.mjs +13 -4
  21. package/esm2022/popover/popover.module.mjs +7 -4
  22. package/esm2022/radio/radio.component.mjs +2 -2
  23. package/esm2022/select/select.component.mjs +8 -5
  24. package/esm2022/select/select.module.mjs +8 -4
  25. package/esm2022/tabs/tab-header.component.mjs +2 -2
  26. package/esm2022/tabs/tab-nav-bar.mjs +3 -3
  27. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  28. package/esm2022/timezone/timezone-select.component.mjs +4 -3
  29. package/esm2022/timezone/timezone.module.mjs +8 -4
  30. package/esm2022/tooltip/tooltip.component.mjs +2 -2
  31. package/esm2022/tree/toggle.mjs +2 -2
  32. package/esm2022/tree/tree-selection.component.mjs +13 -4
  33. package/esm2022/tree/tree.mjs +2 -2
  34. package/esm2022/tree-select/tree-select.component.mjs +9 -7
  35. package/esm2022/tree-select/tree-select.module.mjs +8 -4
  36. package/fesm2022/koobiq-components-autocomplete.mjs +20 -10
  37. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  38. package/fesm2022/koobiq-components-core.mjs +14 -4
  39. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  40. package/fesm2022/koobiq-components-datepicker.mjs +4 -7
  41. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  42. package/fesm2022/koobiq-components-form-field.mjs +11 -4
  43. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  44. package/fesm2022/koobiq-components-list.mjs +19 -12
  45. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  46. package/fesm2022/koobiq-components-markdown.mjs +11 -2
  47. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  48. package/fesm2022/koobiq-components-modal.mjs +3 -2
  49. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  50. package/fesm2022/koobiq-components-popover.mjs +18 -8
  51. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  52. package/fesm2022/koobiq-components-radio.mjs +2 -2
  53. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  54. package/fesm2022/koobiq-components-select.mjs +14 -7
  55. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  56. package/fesm2022/koobiq-components-tabs.mjs +4 -4
  57. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  58. package/fesm2022/koobiq-components-timezone.mjs +12 -7
  59. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  60. package/fesm2022/koobiq-components-tooltip.mjs +1 -1
  61. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  62. package/fesm2022/koobiq-components-tree-select.mjs +15 -9
  63. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  64. package/fesm2022/koobiq-components-tree.mjs +15 -6
  65. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  66. package/form-field/_form-field-theme.scss +23 -10
  67. package/form-field/form-field.d.ts +3 -1
  68. package/form-field/validate.directive.d.ts +1 -1
  69. package/list/_list-theme.scss +6 -4
  70. package/list/list-selection.component.d.ts +12 -8
  71. package/markdown/markdown.service.d.ts +11 -2
  72. package/modal/_modal-theme.scss +1 -1
  73. package/modal/modal.scss +1 -1
  74. package/package.json +6 -6
  75. package/popover/popover.component.d.ts +4 -0
  76. package/radio/_radio-theme.scss +12 -2
  77. package/schematics/ng-add/index.js +5 -18
  78. package/select/select.component.d.ts +1 -1
  79. package/select/select.module.d.ts +2 -1
  80. package/tabs/_tabs-common.scss +14 -0
  81. package/tabs/tab-header.scss +0 -14
  82. package/timezone/timezone.module.d.ts +2 -1
  83. package/tree/_tree-theme.scss +10 -7
  84. package/tree/tree-selection.component.d.ts +6 -2
  85. package/tree-select/tree-select.component.d.ts +1 -1
  86. package/tree-select/tree-select.module.d.ts +2 -1
@@ -40,20 +40,33 @@
40
40
  }
41
41
  }
42
42
 
43
- &.cdk-keyboard-focused {
44
- @include kbq-form-field-state(states-focused);
45
-
46
- & .kbq-form-field__container {
47
- box-shadow: 0 0 0.1px 1px var(--kbq-form-field-states-focused-focus-outline);
48
- }
49
- }
50
-
51
43
  &.kbq-form-field_invalid,
52
44
  &.ng-invalid {
53
45
  @include kbq-form-field-state(states-error);
46
+ }
47
+
48
+ &.kbq-form-field-type-input,
49
+ &.kbq-form-field-type-textarea,
50
+ &.kbq-form-field-type-timepicker,
51
+ &.kbq-form-field-type-datepicker,
52
+ &.kbq-form-field-type-input-password,
53
+ &.kbq-form-field-type-tag-list,
54
+ &.kbq-form-field-type-select.cdk-keyboard-focused {
55
+ &.cdk-focused {
56
+ @include kbq-form-field-state(states-focused);
57
+
58
+ & .kbq-form-field__container {
59
+ box-shadow: 0 0 0.1px 1px var(--kbq-form-field-states-focused-focus-outline);
60
+ }
61
+ }
62
+
63
+ &.kbq-form-field_invalid,
64
+ &.ng-invalid {
65
+ @include kbq-form-field-state(states-error);
54
66
 
55
- &.cdk-keyboard-focused .kbq-form-field__container {
56
- box-shadow: 0 0 0.1px 1px var(--kbq-form-field-states-error-focused-focus-outline);
67
+ & .kbq-form-field__container {
68
+ box-shadow: 0 0 0.1px 1px var(--kbq-form-field-states-error-focused-focus-outline);
69
+ }
57
70
  }
58
71
  }
59
72
 
@@ -1,4 +1,4 @@
1
- import { FocusMonitor } from '@angular/cdk/a11y';
1
+ import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';
2
2
  import { AfterContentChecked, AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy, QueryList } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
4
  import { CanColor, CanColorCtor } from '@koobiq/components/core';
@@ -35,6 +35,8 @@ export declare class KbqFormField extends KbqFormFieldMixinBase implements After
35
35
  hovered: boolean;
36
36
  canCleanerClearByEsc: boolean;
37
37
  private readonly destroyRef;
38
+ get focusOrigin(): FocusOrigin;
39
+ private _focusOrigin;
38
40
  get hasFocus(): boolean;
39
41
  get hasHint(): boolean;
40
42
  get hasSuffix(): boolean;
@@ -49,5 +49,5 @@ export declare class KbqValidateDirective implements AfterContentInit {
49
49
  setMosaicValidationForModelControl(): void;
50
50
  setMosaicValidationForFormControl(): void;
51
51
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqValidateDirective, [null, { optional: true; self: true; }, { optional: true; self: true; }, { optional: true; }, { optional: true; }, { optional: true; }, null]>;
52
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqValidateDirective, " input[kbqInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", ["KbqValidate"], {}, {}, never, never, false, never>;
52
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqValidateDirective, " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", ["KbqValidate"], {}, {}, never, never, false, never>;
53
53
  }
@@ -28,10 +28,6 @@
28
28
  @include kbq-list-item(states-hover);
29
29
  }
30
30
 
31
- &.kbq-focused {
32
- border-color: var(--kbq-list-states-focused-focus-outline-color);
33
- }
34
-
35
31
  &.kbq-selected {
36
32
  @include kbq-list-item(states-selected);
37
33
 
@@ -54,6 +50,12 @@
54
50
  border-top-right-radius: 0;
55
51
  }
56
52
  }
53
+
54
+ .kbq-list-selection.cdk-keyboard-focused {
55
+ & .kbq-list-option.kbq-focused {
56
+ border-color: var(--kbq-list-states-focused-focus-outline-color);
57
+ }
58
+ }
57
59
  }
58
60
 
59
61
  @mixin kbq-list-typography() {
@@ -1,6 +1,7 @@
1
+ import { FocusMonitor } from '@angular/cdk/a11y';
1
2
  import { Clipboard } from '@angular/cdk/clipboard';
2
3
  import { SelectionModel } from '@angular/cdk/collections';
3
- import { AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, QueryList } from '@angular/core';
4
+ import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, QueryList } from '@angular/core';
4
5
  import { ControlValueAccessor } from '@angular/forms';
5
6
  import { FocusKeyManager, IFocusableOption } from '@koobiq/cdk/a11y';
6
7
  import { CanDisable, CanDisableCtor, HasTabIndex, HasTabIndexCtor, KbqOptgroup, KbqOptionActionComponent, KbqTitleTextRef, MultipleMode } from '@koobiq/components/core';
@@ -34,9 +35,10 @@ export declare class KbqListSelectionBase {
34
35
  }
35
36
  /** @docs-private */
36
37
  export declare const KbqListSelectionMixinBase: CanDisableCtor & HasTabIndexCtor & typeof KbqListSelectionBase;
37
- export declare class KbqListSelection extends KbqListSelectionMixinBase implements CanDisable, HasTabIndex, AfterContentInit, ControlValueAccessor {
38
+ export declare class KbqListSelection extends KbqListSelectionMixinBase implements CanDisable, HasTabIndex, AfterContentInit, AfterViewInit, OnDestroy, ControlValueAccessor {
38
39
  private changeDetectorRef;
39
40
  private clipboard;
41
+ protected readonly focusMonitor: FocusMonitor;
40
42
  keyManager: FocusKeyManager<KbqListOption>;
41
43
  options: QueryList<KbqListOption>;
42
44
  readonly onSelectAll: EventEmitter<KbqListSelectAllEvent<KbqListOption>>;
@@ -53,6 +55,12 @@ export declare class KbqListSelection extends KbqListSelectionMixinBase implemen
53
55
  get tabIndex(): any;
54
56
  set tabIndex(value: any);
55
57
  private _tabIndex;
58
+ /**
59
+ * Function used for comparing an option against the selected value when determining which
60
+ * options should appear as selected. The first argument is the value of an options. The second
61
+ * one is a value from the selected value. A boolean must be returned.
62
+ */
63
+ compareWith: (o1: any, o2: any) => boolean;
56
64
  userTabIndex: number | null;
57
65
  get showCheckbox(): boolean;
58
66
  readonly selectionChange: EventEmitter<KbqListSelectionChange>;
@@ -64,13 +72,9 @@ export declare class KbqListSelection extends KbqListSelectionMixinBase implemen
64
72
  private optionFocusSubscription;
65
73
  private optionBlurSubscription;
66
74
  constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, multiple: MultipleMode, clipboard: Clipboard);
67
- /**
68
- * Function used for comparing an option against the selected value when determining which
69
- * options should appear as selected. The first argument is the value of an options. The second
70
- * one is a value from the selected value. A boolean must be returned.
71
- */
72
- compareWith: (o1: any, o2: any) => boolean;
73
75
  ngAfterContentInit(): void;
76
+ ngAfterViewInit(): void;
77
+ ngOnDestroy(): void;
74
78
  focus(): void;
75
79
  blur(): void;
76
80
  selectAll(): void;
@@ -1,8 +1,17 @@
1
1
  import { MarkedOptions } from 'marked';
2
2
  import * as i0 from "@angular/core";
3
- /** Service which allows to convert `Markdown` into `HTML` */
3
+ /**
4
+ * Service for converting Markdown into HTML.
5
+ */
4
6
  export declare class KbqMarkdownService {
5
- /** Parses `Markdown` into `HTML` */
7
+ /**
8
+ * Converts a given Markdown string into HTML.
9
+ * NOTE! Method does not sanitize the output HTML string.
10
+ *
11
+ * @param markdown - The Markdown string to be converted.
12
+ * @param options - Optional MarkedOptions to customize the parsing behavior.
13
+ * @returns The transformed HTML string.
14
+ */
6
15
  parseToHtml(markdown: string, options?: MarkedOptions): string;
7
16
  private transform;
8
17
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqMarkdownService, never>;
@@ -1,7 +1,7 @@
1
1
  @use '../core/styles/common/tokens' as *;
2
2
 
3
3
  @mixin kbq-modal-theme() {
4
- .kbq-modal {
4
+ .kbq-modal-container {
5
5
  background: var(--kbq-modal-container-background);
6
6
  box-shadow: var(--kbq-modal-container-shadow);
7
7
 
package/modal/modal.scss CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  @use './modal-theme' as *;
6
6
 
7
- .kbq-modal {
7
+ .kbq-modal-container {
8
8
  box-sizing: border-box;
9
9
 
10
10
  position: relative;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koobiq/components",
3
- "version": "18.15.0",
3
+ "version": "18.16.1",
4
4
  "description": "koobiq",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,13 +24,13 @@
24
24
  "@angular/cdk": "^18.0.0",
25
25
  "@angular/core": "^18.0.0",
26
26
  "@angular/forms": "^18.0.0",
27
- "@koobiq/cdk": "18.15.0",
28
- "@koobiq/angular-moment-adapter": "18.15.0",
29
- "@koobiq/angular-luxon-adapter": "18.15.0",
27
+ "@koobiq/cdk": "18.16.1",
28
+ "@koobiq/angular-moment-adapter": "18.16.1",
29
+ "@koobiq/angular-luxon-adapter": "18.16.1",
30
30
  "@koobiq/date-formatter": "^3.1.4",
31
31
  "@koobiq/icons": "^9.2.0",
32
- "@koobiq/tokens-builder": "3.10.0",
33
- "@koobiq/design-tokens": "3.10.0",
32
+ "@koobiq/tokens-builder": "3.11.0",
33
+ "@koobiq/design-tokens": "3.11.2",
34
34
  "@radix-ng/primitives": "^0.14.0"
35
35
  },
36
36
  "dependencies": {
@@ -1,3 +1,4 @@
1
+ import { CdkTrapFocus } from '@angular/cdk/a11y';
1
2
  import { CdkScrollable, Overlay, OverlayConfig, ScrollStrategy } from '@angular/cdk/overlay';
2
3
  import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, InjectionToken, TemplateRef, Type } from '@angular/core';
3
4
  import { KbqComponentColors, KbqPopUp, KbqPopUpTrigger, PopUpPlacements, PopUpSizes } from '@koobiq/components/core';
@@ -6,9 +7,11 @@ export declare class KbqPopoverComponent extends KbqPopUp implements AfterViewIn
6
7
  prefix: string;
7
8
  header: string | TemplateRef<any>;
8
9
  footer: string | TemplateRef<any>;
10
+ trigger: KbqPopoverTrigger;
9
11
  isTrapFocus: boolean;
10
12
  hasCloseButton: boolean;
11
13
  popoverContent: ElementRef<HTMLDivElement>;
14
+ cdkTrapFocus: CdkTrapFocus;
12
15
  private debounceTime;
13
16
  private readonly destroyRef;
14
17
  isContentTopOverflow: boolean;
@@ -18,6 +21,7 @@ export declare class KbqPopoverComponent extends KbqPopUp implements AfterViewIn
18
21
  checkContentOverflow(contentElement: HTMLElement): void;
19
22
  updateClassMap(placement: string, customClass: string, size: PopUpSizes): void;
20
23
  updateTrapFocus(isTrapFocus: boolean): void;
24
+ onEscape(): void;
21
25
  protected readonly componentColors: typeof KbqComponentColors;
22
26
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqPopoverComponent, never>;
23
27
  static ɵcmp: i0.ɵɵComponentDeclaration<KbqPopoverComponent, "kbq-popover-component", never, {}, {}, never, never, false, never>;
@@ -6,8 +6,6 @@
6
6
  & .kbq-radio-button__outer-circle {
7
7
  border-color: var(--kbq-#{$base-path}-outer-circle-border);
8
8
  background: var(--kbq-#{$base-path}-outer-circle-background);
9
- // FIXME: move under &.cdk-keyboard-focused, because used only for focused state.
10
- box-shadow: var(--kbq-#{$base-path}-outer-circle-shadow);
11
9
  }
12
10
 
13
11
  & .kbq-radio-button__inner-circle {
@@ -28,12 +26,24 @@
28
26
 
29
27
  &.cdk-keyboard-focused {
30
28
  @include kbq-radio-state($type-name, states-focused);
29
+
30
+ & .kbq-radio-button__outer-circle {
31
+ box-shadow: var(--kbq-radio-#{$type-name}-states-focused-outer-circle-shadow);
32
+ }
31
33
  }
32
34
 
33
35
  &.kbq-selected:not(.kbq-disabled) {
34
36
  @include kbq-radio-state($type-name, states-checked);
35
37
  }
36
38
 
39
+ &.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) {
40
+ @include kbq-radio-state($type-name, states-checked-focused);
41
+
42
+ & .kbq-radio-button__outer-circle {
43
+ box-shadow: var(--kbq-radio-#{$type-name}-states-checked-focused-outer-circle-shadow);
44
+ }
45
+ }
46
+
37
47
  &.kbq-selected.kbq-disabled {
38
48
  @include kbq-radio-state($type-name, states-checked-disabled);
39
49
  }
@@ -11,19 +11,6 @@ function noProject(project) {
11
11
  return `Unable to find project '${project}' in the workspace`;
12
12
  }
13
13
 
14
- const VERSIONS = {
15
- ANGULAR_CDK: '^0.0.0',
16
- KOOBIQ_CDK: '^0.0.0',
17
- KOOBIQ_ANGULAR_LUXON_ADAPTER: '^0.0.0',
18
- KOOBIQ_DATE_FORMATTER: '^0.0.0',
19
- KOOBIQ_DATE_ADAPTER: '^0.0.0',
20
- KOOBIQ_ICONS: '^0.0.0',
21
- KOOBIQ_TOKENS_BUILDER: '^0.0.0',
22
- KOOBIQ_DESIGN_TOKENS: '^0.0.0',
23
- MESSAGEFORMAT_CORE: '^0.0.0',
24
- RADIX_NG: '^0.0.0',
25
- LUXON: '^0.0.0'
26
- };
27
14
  /**
28
15
  * This is executed when `ng add @koobiq/components` is run.
29
16
  * It installs all dependencies in the 'package.json' and runs 'ng-add-setup-project' schematic.
@@ -40,15 +27,15 @@ function ngAdd(options) {
40
27
  }
41
28
  // Installing dependencies
42
29
  utils_packageConfig.addPackageToPackageJson(tree, '@angular/cdk', "^18.2.6");
43
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/cdk', "^18.15.0");
44
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/angular-luxon-adapter', "^18.15.0");
30
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/cdk', "^18.16.1");
31
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/angular-luxon-adapter', "^18.16.1");
45
32
  utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/date-formatter', "^3.2.0");
46
33
  utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/date-adapter', "^3.2.0");
47
34
  utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/icons', "^9.2.0");
48
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/tokens-builder', "^3.10.0");
49
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/design-tokens', "^3.10.0");
35
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/tokens-builder', "^3.11.0");
36
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/design-tokens', "^3.11.2");
50
37
  utils_packageConfig.addPackageToPackageJson(tree, '@messageformat/core', "^3.0.1");
51
- utils_packageConfig.addPackageToPackageJson(tree, '@radix-ng/primitives', VERSIONS.RADIX_NG);
38
+ utils_packageConfig.addPackageToPackageJson(tree, '@radix-ng/primitives', "^0.20.2");
52
39
  utils_packageConfig.addPackageToPackageJson(tree, 'luxon', "^3.4.4");
53
40
  };
54
41
  }
@@ -340,7 +340,7 @@ export declare class KbqSelect extends KbqSelectMixinBase implements AfterConten
340
340
  private _compareWith;
341
341
  private getTotalVisibleItems;
342
342
  private buildTriggerClone;
343
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqSelect, [null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; self: true; }, null, { optional: true; }]>;
343
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqSelect, [null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; host: true; }, { optional: true; self: true; }, null, { optional: true; }]>;
344
344
  static ɵcmp: i0.ɵɵComponentDeclaration<KbqSelect, "kbq-select", ["kbqSelect"], { "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "hiddenItemsText": { "alias": "hiddenItemsText"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "sortComparator": { "alias": "sortComparator"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "compareWith": { "alias": "compareWith"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "panelMinWidth": { "alias": "panelMinWidth"; "required": false; }; "value": { "alias": "value"; "required": false; }; "id": { "alias": "id"; "required": false; }; "hiddenItemsTextFormatter": { "alias": "hiddenItemsTextFormatter"; "required": false; }; }, { "openedChange": "openedChange"; "openedStream": "opened"; "closedStream": "closed"; "selectionChange": "selectionChange"; "valueChange": "valueChange"; }, ["footer", "cdkVirtualForOf", "customTrigger", "customMatcher", "customTagTemplateRef", "cleaner", "search", "options", "optionGroups"], ["kbq-select-matcher, [kbq-select-matcher]", "kbq-select-trigger, [kbq-select-trigger]", "kbq-cleaner", "[kbqSelectSearch]", "[kbq-select-search-empty-result]", "*", "kbq-select-footer,[kbq-select-footer]"], false, never>;
345
345
  static ngAcceptInputType_multiple: unknown;
346
346
  static ngAcceptInputType_panelMinWidth: unknown;
@@ -7,8 +7,9 @@ import * as i5 from "@koobiq/components/icon";
7
7
  import * as i6 from "@koobiq/components/tags";
8
8
  import * as i7 from "@koobiq/components/tooltip";
9
9
  import * as i8 from "@angular/common";
10
+ import * as i9 from "@angular/cdk/a11y";
10
11
  export declare class KbqSelectModule {
11
12
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqSelectModule, never>;
12
- static ɵmod: i0.ɵɵNgModuleDeclaration<KbqSelectModule, [typeof i1.KbqSelect, typeof i2.KbqOptionTooltip], [typeof i3.OverlayModule, typeof i4.KbqOptionModule, typeof i5.KbqIconModule, typeof i6.KbqTagsModule, typeof i7.KbqToolTipModule, typeof i4.KbqSelectSearch, typeof i4.KbqSelectFooter, typeof i4.KbqSelectMatcher, typeof i4.KbqSelectTrigger, typeof i4.KbqSelectSearchEmptyResult, typeof i8.NgClass, typeof i8.NgTemplateOutlet], [typeof i1.KbqSelect, typeof i2.KbqOptionTooltip, typeof i4.KbqOptionModule, typeof i4.KbqSelectSearch, typeof i4.KbqSelectFooter, typeof i4.KbqSelectMatcher, typeof i4.KbqSelectTrigger, typeof i4.KbqSelectSearchEmptyResult]>;
13
+ static ɵmod: i0.ɵɵNgModuleDeclaration<KbqSelectModule, [typeof i1.KbqSelect, typeof i2.KbqOptionTooltip], [typeof i3.OverlayModule, typeof i4.KbqOptionModule, typeof i5.KbqIconModule, typeof i6.KbqTagsModule, typeof i7.KbqToolTipModule, typeof i4.KbqSelectSearch, typeof i4.KbqSelectFooter, typeof i4.KbqSelectMatcher, typeof i4.KbqSelectTrigger, typeof i4.KbqSelectSearchEmptyResult, typeof i8.NgClass, typeof i8.NgTemplateOutlet, typeof i9.A11yModule], [typeof i1.KbqSelect, typeof i2.KbqOptionTooltip, typeof i4.KbqOptionModule, typeof i4.KbqSelectSearch, typeof i4.KbqSelectFooter, typeof i4.KbqSelectMatcher, typeof i4.KbqSelectTrigger, typeof i4.KbqSelectSearchEmptyResult]>;
13
14
  static ɵinj: i0.ɵɵInjectorDeclaration<KbqSelectModule>;
14
15
  }
@@ -112,6 +112,20 @@
112
112
  }
113
113
  }
114
114
 
115
+ .kbq-tab-header_underlined:not(.kbq-tab-header_vertical) .kbq-tab-list__content {
116
+ padding: 8px 0;
117
+ }
118
+
119
+ .kbq-tab-header_underlined:not(.kbq-tab-header_vertical):after {
120
+ content: '';
121
+ position: absolute;
122
+ left: 0;
123
+ bottom: 0;
124
+ right: 0;
125
+ height: 1px;
126
+ background: var(--kbq-line-contrast-less);
127
+ }
128
+
115
129
  .kbq-tab-list__active-tab-underline {
116
130
  display: none;
117
131
  }
@@ -26,20 +26,6 @@
26
26
  flex-direction: column;
27
27
  }
28
28
 
29
- .kbq-tab-header_underlined:not(.kbq-tab-header_vertical) .kbq-tab-list__content {
30
- padding: 8px 0;
31
- }
32
-
33
- .kbq-tab-header_underlined:not(.kbq-tab-header_vertical):after {
34
- content: '';
35
- position: absolute;
36
- left: 0;
37
- bottom: 0;
38
- right: 0;
39
- height: 1px;
40
- background: var(--kbq-line-contrast-less);
41
- }
42
-
43
29
  .kbq-tab-header__container {
44
30
  display: flex;
45
31
  flex-grow: 1;
@@ -12,8 +12,9 @@ import * as i10 from "@koobiq/components/icon";
12
12
  import * as i11 from "@koobiq/components/tags";
13
13
  import * as i12 from "@koobiq/components/tooltip";
14
14
  import * as i13 from "@angular/common";
15
+ import * as i14 from "@angular/cdk/a11y";
15
16
  export declare class KbqTimezoneModule {
16
17
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTimezoneModule, never>;
17
- static ɵmod: i0.ɵɵNgModuleDeclaration<KbqTimezoneModule, [typeof i1.UtcOffsetPipe, typeof i2.CitiesByFilterPipe, typeof i3.KbqTimezoneSelect, typeof i4.KbqTimezoneOption, typeof i5.KbqTimezoneOptionTooltip, typeof i3.KbqTimezoneSelectTrigger], [typeof i6.OverlayModule, typeof i7.KbqFormFieldModule, typeof i8.KbqOptionModule, typeof i9.KbqSelectModule, typeof i10.KbqIconModule, typeof i11.KbqTagsModule, typeof i12.KbqToolTipModule, typeof i8.KbqHighlightModule, typeof i13.NgClass, typeof i13.KeyValuePipe], [typeof i3.KbqTimezoneSelect, typeof i4.KbqTimezoneOption, typeof i5.KbqTimezoneOptionTooltip, typeof i3.KbqTimezoneSelectTrigger]>;
18
+ static ɵmod: i0.ɵɵNgModuleDeclaration<KbqTimezoneModule, [typeof i1.UtcOffsetPipe, typeof i2.CitiesByFilterPipe, typeof i3.KbqTimezoneSelect, typeof i4.KbqTimezoneOption, typeof i5.KbqTimezoneOptionTooltip, typeof i3.KbqTimezoneSelectTrigger], [typeof i6.OverlayModule, typeof i7.KbqFormFieldModule, typeof i8.KbqOptionModule, typeof i9.KbqSelectModule, typeof i10.KbqIconModule, typeof i11.KbqTagsModule, typeof i12.KbqToolTipModule, typeof i8.KbqHighlightModule, typeof i13.NgClass, typeof i13.KeyValuePipe, typeof i14.A11yModule], [typeof i3.KbqTimezoneSelect, typeof i4.KbqTimezoneOption, typeof i5.KbqTimezoneOptionTooltip, typeof i3.KbqTimezoneSelectTrigger]>;
18
19
  static ɵinj: i0.ɵɵInjectorDeclaration<KbqTimezoneModule>;
19
20
  }
@@ -24,8 +24,10 @@
24
24
  }
25
25
 
26
26
  @mixin kbq-tree-theme() {
27
- .kbq-tree-selection:focus {
28
- outline: none;
27
+ .kbq-tree-selection {
28
+ &:focus {
29
+ outline: none;
30
+ }
29
31
  }
30
32
 
31
33
  .kbq-tree-option {
@@ -35,11 +37,6 @@
35
37
  @include kbq-tree-option(states-hover);
36
38
  }
37
39
 
38
- &.kbq-focused,
39
- &.kbq-active {
40
- border-color: var(--kbq-tree-states-focused-focus-outline-color);
41
- }
42
-
43
40
  &.kbq-selected {
44
41
  @include kbq-tree-option(states-selected);
45
42
 
@@ -56,6 +53,12 @@
56
53
  }
57
54
  }
58
55
  }
56
+
57
+ .cdk-keyboard-focused {
58
+ & .kbq-tree-option.kbq-focused {
59
+ border-color: var(--kbq-tree-states-focused-focus-outline-color);
60
+ }
61
+ }
59
62
  }
60
63
 
61
64
  @mixin kbq-tree-typography() {
@@ -1,6 +1,7 @@
1
+ import { FocusMonitor } from '@angular/cdk/a11y';
1
2
  import { Clipboard } from '@angular/cdk/clipboard';
2
3
  import { SelectionModel } from '@angular/cdk/collections';
3
- import { AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, IterableDiffer, IterableDiffers, QueryList, ViewContainerRef } from '@angular/core';
4
+ import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, IterableDiffer, IterableDiffers, OnDestroy, QueryList, ViewContainerRef } from '@angular/core';
4
5
  import { ControlValueAccessor } from '@angular/forms';
5
6
  import { FocusKeyManager } from '@koobiq/cdk/a11y';
6
7
  import { CanDisable, HasTabIndex, MultipleMode } from '@koobiq/components/core';
@@ -36,10 +37,11 @@ interface SelectionModelOption {
36
37
  id: number | string;
37
38
  value: string;
38
39
  }
39
- export declare class KbqTreeSelection extends KbqTreeBase<any> implements ControlValueAccessor, AfterContentInit, CanDisable, HasTabIndex {
40
+ export declare class KbqTreeSelection extends KbqTreeBase<any> implements ControlValueAccessor, AfterContentInit, AfterViewInit, OnDestroy, CanDisable, HasTabIndex {
40
41
  private elementRef;
41
42
  private scheduler;
42
43
  private clipboard;
44
+ protected readonly focusMonitor: FocusMonitor;
43
45
  renderedOptions: QueryList<KbqTreeOption>;
44
46
  keyManager: FocusKeyManager<KbqTreeOption>;
45
47
  selectionModel: SelectionModel<SelectionModelOption>;
@@ -75,7 +77,9 @@ export declare class KbqTreeSelection extends KbqTreeBase<any> implements Contro
75
77
  private optionFocusSubscription;
76
78
  private optionBlurSubscription;
77
79
  constructor(elementRef: ElementRef, scheduler: AsyncScheduler, differs: IterableDiffers, changeDetectorRef: ChangeDetectorRef, multiple: MultipleMode, clipboard: Clipboard);
80
+ ngAfterViewInit(): void;
78
81
  ngAfterContentInit(): void;
82
+ ngOnDestroy(): void;
79
83
  focus($event: any): void;
80
84
  highlightSelectedOption(): void;
81
85
  blur(): void;
@@ -296,7 +296,7 @@ export declare class KbqTreeSelect extends KbqTreeSelectMixinBase implements Aft
296
296
  /** Scrolls the active option into view. */
297
297
  private scrollActiveOptionIntoView;
298
298
  private subscribeOnSearchChanges;
299
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqTreeSelect, [null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; self: true; }, { optional: true; }]>;
299
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqTreeSelect, [null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; host: true; }, { optional: true; self: true; }, { optional: true; }]>;
300
300
  static ɵcmp: i0.ɵɵComponentDeclaration<KbqTreeSelect, "kbq-tree-select", ["kbqTreeSelect"], { "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "hiddenItemsText": { "alias": "hiddenItemsText"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "sortComparator": { "alias": "sortComparator"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "autoSelect": { "alias": "autoSelect"; "required": false; }; "id": { "alias": "id"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "hiddenItemsTextFormatter": { "alias": "hiddenItemsTextFormatter"; "required": false; }; }, { "openedChange": "openedChange"; "openedStream": "opened"; "closedStream": "closed"; "selectionChange": "selectionChange"; "valueChange": "valueChange"; }, ["cleaner", "customTrigger", "customMatcher", "customTagTemplateRef", "tree", "search"], ["kbq-select-matcher, [kbq-select-matcher]", "kbq-select-trigger", "kbq-cleaner", "[kbqSelectSearch]", "[kbq-select-search-empty-result]", "kbq-tree-selection", "kbq-select-footer,[kbq-tree-select-footer]"], false, never>;
301
301
  }
302
302
  export {};
@@ -6,8 +6,9 @@ import * as i4 from "@koobiq/components/icon";
6
6
  import * as i5 from "@koobiq/components/tags";
7
7
  import * as i6 from "@koobiq/components/core";
8
8
  import * as i7 from "@angular/common";
9
+ import * as i8 from "@angular/cdk/a11y";
9
10
  export declare class KbqTreeSelectModule {
10
11
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTreeSelectModule, never>;
11
- static ɵmod: i0.ɵɵNgModuleDeclaration<KbqTreeSelectModule, [typeof i1.KbqTreeSelect], [typeof i2.OverlayModule, typeof i3.KbqTreeModule, typeof i4.KbqIconModule, typeof i5.KbqTagsModule, typeof i6.KbqPseudoCheckboxModule, typeof i6.KbqSelectSearch, typeof i6.KbqSelectFooter, typeof i6.KbqSelectMatcher, typeof i6.KbqSelectTrigger, typeof i6.KbqSelectSearchEmptyResult, typeof i7.NgClass, typeof i7.NgTemplateOutlet], [typeof i1.KbqTreeSelect, typeof i6.KbqSelectSearch, typeof i6.KbqSelectFooter, typeof i6.KbqSelectMatcher, typeof i6.KbqSelectTrigger, typeof i6.KbqSelectSearchEmptyResult]>;
12
+ static ɵmod: i0.ɵɵNgModuleDeclaration<KbqTreeSelectModule, [typeof i1.KbqTreeSelect], [typeof i2.OverlayModule, typeof i3.KbqTreeModule, typeof i4.KbqIconModule, typeof i5.KbqTagsModule, typeof i6.KbqPseudoCheckboxModule, typeof i6.KbqSelectSearch, typeof i6.KbqSelectFooter, typeof i6.KbqSelectMatcher, typeof i6.KbqSelectTrigger, typeof i6.KbqSelectSearchEmptyResult, typeof i7.NgClass, typeof i7.NgTemplateOutlet, typeof i8.A11yModule], [typeof i1.KbqTreeSelect, typeof i6.KbqSelectSearch, typeof i6.KbqSelectFooter, typeof i6.KbqSelectMatcher, typeof i6.KbqSelectTrigger, typeof i6.KbqSelectSearchEmptyResult]>;
12
13
  static ɵinj: i0.ɵɵInjectorDeclaration<KbqTreeSelectModule>;
13
14
  }