@koobiq/components 18.12.1 → 18.14.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 (170) hide show
  1. package/accordion/accordion.component.d.ts +5 -5
  2. package/alert/alert-tokens.scss +4 -4
  3. package/breadcrumbs/breadcrumbs-tokens.scss +9 -0
  4. package/breadcrumbs/breadcrumbs.d.ts +117 -0
  5. package/breadcrumbs/breadcrumbs.module.d.ts +7 -0
  6. package/breadcrumbs/breadcrumbs.scss +149 -0
  7. package/breadcrumbs/index.d.ts +1 -0
  8. package/breadcrumbs/public-api.d.ts +2 -0
  9. package/button/button.component.d.ts +3 -2
  10. package/button-toggle/button-toggle.component.d.ts +3 -2
  11. package/checkbox/checkbox-tokens.scss +2 -2
  12. package/core/common-behaviors/index.d.ts +1 -0
  13. package/core/common-behaviors/size.d.ts +4 -0
  14. package/core/locales/formatters.d.ts +36 -0
  15. package/core/locales/index.d.ts +1 -0
  16. package/core/locales/locale-service.d.ts +79 -0
  17. package/core/locales/tk-TM.d.ts +45 -0
  18. package/core/option/_optgroup-theme.scss +5 -4
  19. package/core/option/optgroup.d.ts +1 -0
  20. package/core/option/optgroup.scss +4 -1
  21. package/core/option/option-tokens.scss +1 -0
  22. package/core/option/option.scss +1 -0
  23. package/core/pop-up/constants.d.ts +11 -0
  24. package/core/pop-up/pop-up-trigger.d.ts +6 -0
  25. package/core/selection/pseudo-checkbox/pseudo-checkbox-tokens.scss +2 -2
  26. package/core/styles/common/_list.scss +0 -1
  27. package/core/styles/theming/_theming.scss +1 -3
  28. package/dropdown/_dropdown-theme.scss +2 -0
  29. package/dropdown/dropdown-item.scss +2 -0
  30. package/dropdown/dropdown-tokens.scss +1 -0
  31. package/dropdown/dropdown.scss +0 -2
  32. package/ellipsis-center/ellipsis-center.directive.d.ts +2 -1
  33. package/esm2022/accordion/accordion.component.mjs +11 -10
  34. package/esm2022/alert/alert.component.mjs +2 -2
  35. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +4 -6
  36. package/esm2022/breadcrumbs/breadcrumbs.mjs +218 -0
  37. package/esm2022/breadcrumbs/breadcrumbs.module.mjs +31 -0
  38. package/esm2022/breadcrumbs/index.mjs +2 -0
  39. package/esm2022/breadcrumbs/koobiq-components-breadcrumbs.mjs +5 -0
  40. package/esm2022/breadcrumbs/public-api.mjs +3 -0
  41. package/esm2022/button/button.component.mjs +3 -1
  42. package/esm2022/button-toggle/button-toggle.component.mjs +4 -2
  43. package/esm2022/checkbox/checkbox.mjs +2 -2
  44. package/esm2022/core/common-behaviors/index.mjs +1 -1
  45. package/esm2022/core/common-behaviors/size.mjs +2 -0
  46. package/esm2022/core/locales/formatters.mjs +37 -1
  47. package/esm2022/core/locales/index.mjs +2 -1
  48. package/esm2022/core/locales/locale-service.mjs +7 -4
  49. package/esm2022/core/locales/tk-TM.mjs +44 -0
  50. package/esm2022/core/option/action.mjs +3 -4
  51. package/esm2022/core/option/optgroup.mjs +4 -3
  52. package/esm2022/core/option/option.mjs +2 -2
  53. package/esm2022/core/pop-up/constants.mjs +13 -1
  54. package/esm2022/core/pop-up/pop-up-trigger.mjs +50 -3
  55. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +2 -2
  56. package/esm2022/core/version.mjs +2 -2
  57. package/esm2022/datepicker/datepicker.component.mjs +6 -4
  58. package/esm2022/dropdown/dropdown-item.component.mjs +2 -2
  59. package/esm2022/dropdown/dropdown-trigger.directive.mjs +3 -1
  60. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  61. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +6 -3
  62. package/esm2022/file-upload/multiple-file-upload.component.mjs +2 -2
  63. package/esm2022/file-upload/single-file-upload.component.mjs +2 -2
  64. package/esm2022/form-field/form-field.mjs +5 -5
  65. package/esm2022/icon/icon-button.component.mjs +3 -1
  66. package/esm2022/link/link.component.mjs +4 -2
  67. package/esm2022/list/list-selection.component.mjs +2 -2
  68. package/esm2022/list/list.component.mjs +2 -2
  69. package/esm2022/navbar/navbar-item.component.mjs +4 -2
  70. package/esm2022/navbar/navbar.component.mjs +6 -4
  71. package/esm2022/overflow-items/index.mjs +3 -0
  72. package/esm2022/overflow-items/koobiq-components-overflow-items.mjs +5 -0
  73. package/esm2022/overflow-items/module.mjs +25 -0
  74. package/esm2022/overflow-items/overflow-items.mjs +269 -0
  75. package/esm2022/popover/popover.component.mjs +4 -2
  76. package/esm2022/progress-spinner/progress-spinner.component.mjs +1 -1
  77. package/esm2022/radio/radio.component.mjs +2 -2
  78. package/esm2022/select/select-option.directive.mjs +17 -19
  79. package/esm2022/select/select.component.mjs +3 -3
  80. package/esm2022/tabs/tab-nav-bar.mjs +16 -16
  81. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  82. package/esm2022/timezone/timezone-option.directive.mjs +15 -12
  83. package/esm2022/title/title.directive.mjs +9 -18
  84. package/esm2022/toggle/toggle.component.mjs +14 -12
  85. package/esm2022/tooltip/tooltip.component.mjs +30 -27
  86. package/esm2022/tree/toggle.mjs +2 -2
  87. package/esm2022/tree/tree-option.component.mjs +2 -2
  88. package/esm2022/tree/tree-selection.component.mjs +2 -2
  89. package/esm2022/tree/tree.mjs +2 -2
  90. package/esm2022/tree-select/tree-select.component.mjs +5 -5
  91. package/fesm2022/koobiq-components-accordion.mjs +9 -7
  92. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  93. package/fesm2022/koobiq-components-alert.mjs +2 -2
  94. package/fesm2022/koobiq-components-autocomplete.mjs +3 -5
  95. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  96. package/fesm2022/koobiq-components-breadcrumbs.mjs +253 -0
  97. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -0
  98. package/fesm2022/koobiq-components-button-toggle.mjs +3 -1
  99. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-button.mjs +2 -0
  101. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  102. package/fesm2022/koobiq-components-checkbox.mjs +2 -2
  103. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  104. package/fesm2022/koobiq-components-core.mjs +155 -14
  105. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  106. package/fesm2022/koobiq-components-datepicker.mjs +5 -3
  107. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  108. package/fesm2022/koobiq-components-dropdown.mjs +6 -5
  109. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  110. package/fesm2022/koobiq-components-ellipsis-center.mjs +5 -2
  111. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  112. package/fesm2022/koobiq-components-file-upload.mjs +4 -4
  113. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  114. package/fesm2022/koobiq-components-form-field.mjs +4 -4
  115. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  116. package/fesm2022/koobiq-components-icon.mjs +2 -0
  117. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  118. package/fesm2022/koobiq-components-link.mjs +3 -1
  119. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  120. package/fesm2022/koobiq-components-list.mjs +4 -4
  121. package/fesm2022/koobiq-components-navbar.mjs +8 -4
  122. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  123. package/fesm2022/koobiq-components-overflow-items.mjs +298 -0
  124. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -0
  125. package/fesm2022/koobiq-components-popover.mjs +3 -1
  126. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  127. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  128. package/fesm2022/koobiq-components-radio.mjs +2 -2
  129. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  130. package/fesm2022/koobiq-components-select.mjs +18 -20
  131. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  132. package/fesm2022/koobiq-components-tabs.mjs +15 -15
  133. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  134. package/fesm2022/koobiq-components-timezone.mjs +16 -13
  135. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  136. package/fesm2022/koobiq-components-title.mjs +8 -17
  137. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  138. package/fesm2022/koobiq-components-toggle.mjs +13 -11
  139. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  140. package/fesm2022/koobiq-components-tooltip.mjs +30 -27
  141. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  142. package/fesm2022/koobiq-components-tree-select.mjs +4 -4
  143. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  144. package/fesm2022/koobiq-components-tree.mjs +8 -8
  145. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  146. package/file-upload/file-upload-tokens.scss +2 -2
  147. package/form-field/form-field-tokens.scss +5 -1
  148. package/icon/icon-button.component.d.ts +3 -2
  149. package/link/link.component.d.ts +3 -2
  150. package/list/list.scss +2 -0
  151. package/navbar/navbar-item.component.d.ts +2 -1
  152. package/navbar/navbar.component.d.ts +2 -1
  153. package/overflow-items/index.d.ts +2 -0
  154. package/overflow-items/module.d.ts +7 -0
  155. package/overflow-items/overflow-items.d.ts +132 -0
  156. package/overflow-items/overflow-items.scss +20 -0
  157. package/package.json +18 -6
  158. package/popover/popover.component.d.ts +1 -0
  159. package/radio/radio-tokens.scss +1 -1
  160. package/schematics/ng-add/index.js +6 -6
  161. package/select/select-option.directive.d.ts +3 -1
  162. package/tabs/tab-nav-bar.d.ts +0 -1
  163. package/timezone/timezone-option.directive.d.ts +1 -0
  164. package/title/title.directive.d.ts +2 -2
  165. package/toggle/toggle-tokens.scss +1 -1
  166. package/toggle/toggle.component.d.ts +6 -5
  167. package/tooltip/tooltip.component.d.ts +3 -3
  168. package/tree/tree-option.scss +1 -1
  169. package/tree/tree-tokens.scss +1 -0
  170. package/tree-select/tree-select-tokens.scss +4 -0
@@ -31,7 +31,7 @@
31
31
  --kbq-file-upload-single-states-on-drag-left-icon-color: var(--kbq-icon-contrast-fade);
32
32
  --kbq-file-upload-single-states-on-drag-text-block-color: var(--kbq-foreground-contrast);
33
33
  --kbq-file-upload-single-states-error-container-border: var(--kbq-line-error);
34
- --kbq-file-upload-single-states-error-container-background: var(--kbq-states-background-error-less);
34
+ --kbq-file-upload-single-states-error-container-background: var(--kbq-background-error-less);
35
35
  --kbq-file-upload-single-states-error-left-icon-color: var(--kbq-icon-error);
36
36
  --kbq-file-upload-single-states-error-text-block-color: var(--kbq-foreground-error);
37
37
  --kbq-file-upload-single-states-disabled-container-border: var(--kbq-states-line-disabled);
@@ -54,7 +54,7 @@
54
54
  --kbq-file-upload-multiple-states-on-drag-icon-button-color: var(--kbq-icon-contrast);
55
55
  --kbq-file-upload-multiple-states-on-drag-text-block-color: var(--kbq-foreground-contrast);
56
56
  --kbq-file-upload-multiple-states-on-drag-grid-divider-color: var(--kbq-line-contrast-less);
57
- --kbq-file-upload-multiple-states-error-grid-cell-background: var(--kbq-states-background-error-less);
57
+ --kbq-file-upload-multiple-states-error-grid-cell-background: var(--kbq-background-error-less);
58
58
  --kbq-file-upload-multiple-states-error-left-icon-color: var(--kbq-icon-error);
59
59
  --kbq-file-upload-multiple-states-error-text-block-color: var(--kbq-foreground-error);
60
60
  --kbq-file-upload-multiple-states-error-icon-button-color: var(--kbq-icon-error);
@@ -21,7 +21,7 @@
21
21
  --kbq-form-field-states-focused-text: var(--kbq-foreground-contrast);
22
22
  --kbq-form-field-states-focused-focus-outline: var(--kbq-states-line-focus-theme);
23
23
  --kbq-form-field-states-error-border-color: var(--kbq-line-error);
24
- --kbq-form-field-states-error-background: var(--kbq-states-background-error-less);
24
+ --kbq-form-field-states-error-background: var(--kbq-background-error-less);
25
25
  --kbq-form-field-states-error-placeholder: var(--kbq-foreground-error-tertiary);
26
26
  --kbq-form-field-states-error-text: var(--kbq-foreground-error);
27
27
  --kbq-form-field-states-error-focused-focus-outline: var(--kbq-states-line-focus-error);
@@ -35,3 +35,7 @@
35
35
  --kbq-form-field-states-disabled-text: var(--kbq-states-foreground-disabled);
36
36
  --kbq-form-field-hint-text: var(--kbq-foreground-contrast-secondary);
37
37
  }
38
+
39
+ :where(.kbq-dark) {
40
+ --kbq-form-field-states-error-placeholder: var(--kbq-foreground-error-secondary);
41
+ }
@@ -1,9 +1,9 @@
1
1
  import { FocusMonitor } from '@angular/cdk/a11y';
2
- import { ChangeDetectorRef, ElementRef, OnDestroy } from '@angular/core';
2
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy } from '@angular/core';
3
3
  import { CanColor, KbqFormFieldRef } from '@koobiq/components/core';
4
4
  import { KbqIcon } from './icon.component';
5
5
  import * as i0 from "@angular/core";
6
- export declare class KbqIconButton extends KbqIcon implements OnDestroy, CanColor {
6
+ export declare class KbqIconButton extends KbqIcon implements AfterViewInit, OnDestroy, CanColor {
7
7
  protected changeDetectorRef: ChangeDetectorRef;
8
8
  private focusMonitor;
9
9
  small: boolean;
@@ -16,6 +16,7 @@ export declare class KbqIconButton extends KbqIcon implements OnDestroy, CanColo
16
16
  private _disabled;
17
17
  name: string;
18
18
  constructor(elementRef: ElementRef, iconName: string, formField: KbqFormFieldRef, changeDetectorRef: ChangeDetectorRef, focusMonitor: FocusMonitor);
19
+ ngAfterViewInit(): void;
19
20
  ngOnDestroy(): void;
20
21
  private runFocusMonitor;
21
22
  private stopFocusMonitor;
@@ -1,5 +1,5 @@
1
1
  import { FocusMonitor } from '@angular/cdk/a11y';
2
- import { ChangeDetectorRef, ElementRef, OnDestroy } from '@angular/core';
2
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy } from '@angular/core';
3
3
  import { CanDisable, CanDisableCtor, HasTabIndex, HasTabIndexCtor } from '@koobiq/components/core';
4
4
  import { KbqIcon } from '@koobiq/components/icon';
5
5
  import * as i0 from "@angular/core";
@@ -9,7 +9,7 @@ export declare class KbqLinkBase {
9
9
  /** @docs-private */
10
10
  export declare const KbqLinkMixinBase: HasTabIndexCtor & CanDisableCtor & typeof KbqLinkBase;
11
11
  export declare const baseURLRegex: RegExp;
12
- export declare class KbqLink extends KbqLinkMixinBase implements OnDestroy, HasTabIndex, CanDisable {
12
+ export declare class KbqLink extends KbqLinkMixinBase implements AfterViewInit, OnDestroy, HasTabIndex, CanDisable {
13
13
  private elementRef;
14
14
  private focusMonitor;
15
15
  private changeDetector;
@@ -29,6 +29,7 @@ export declare class KbqLink extends KbqLinkMixinBase implements OnDestroy, HasT
29
29
  printUrl: string;
30
30
  icon: KbqIcon;
31
31
  constructor(elementRef: ElementRef, focusMonitor: FocusMonitor, changeDetector: ChangeDetectorRef);
32
+ ngAfterViewInit(): void;
32
33
  ngOnDestroy(): void;
33
34
  focus(): void;
34
35
  getHostElement(): any;
package/list/list.scss CHANGED
@@ -15,6 +15,8 @@
15
15
 
16
16
  @include list.kbq-list-item-base();
17
17
 
18
+ border-radius: var(--kbq-size-border-radius);
19
+
18
20
  &:not(.kbq-disabled) {
19
21
  cursor: pointer;
20
22
  }
@@ -51,7 +51,7 @@ export declare class KbqNavbarDivider {
51
51
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqNavbarDivider, never>;
52
52
  static ɵdir: i0.ɵɵDirectiveDeclaration<KbqNavbarDivider, "kbq-navbar-divider", never, {}, {}, never, never, false, never>;
53
53
  }
54
- export declare class KbqNavbarFocusableItem implements IFocusableOption, AfterContentInit, OnDestroy {
54
+ export declare class KbqNavbarFocusableItem implements AfterContentInit, AfterViewInit, OnDestroy, IFocusableOption {
55
55
  private elementRef;
56
56
  private changeDetector;
57
57
  private focusMonitor;
@@ -73,6 +73,7 @@ export declare class KbqNavbarFocusableItem implements IFocusableOption, AfterCo
73
73
  private _disabled;
74
74
  get tabIndex(): number;
75
75
  constructor(elementRef: ElementRef<HTMLElement>, changeDetector: ChangeDetectorRef, focusMonitor: FocusMonitor, ngZone: NgZone);
76
+ ngAfterViewInit(): void;
76
77
  ngAfterContentInit(): void;
77
78
  ngOnDestroy(): void;
78
79
  setTooltip(value: KbqTooltipTrigger): void;
@@ -5,7 +5,7 @@ import { Observable, Subject } from 'rxjs';
5
5
  import { KbqNavbarFocusableItem, KbqNavbarFocusableItemEvent, KbqNavbarItem, KbqNavbarRectangleElement } from './navbar-item.component';
6
6
  import * as i0 from "@angular/core";
7
7
  export type KbqNavbarContainerPositionType = 'left' | 'right';
8
- export declare class KbqFocusableComponent implements AfterContentInit, OnDestroy {
8
+ export declare class KbqFocusableComponent implements AfterContentInit, AfterViewInit, OnDestroy {
9
9
  protected readonly changeDetectorRef: ChangeDetectorRef;
10
10
  protected readonly elementRef: ElementRef;
11
11
  protected readonly focusMonitor: FocusMonitor;
@@ -21,6 +21,7 @@ export declare class KbqFocusableComponent implements AfterContentInit, OnDestro
21
21
  private optionBlurSubscription;
22
22
  constructor(changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef, focusMonitor: FocusMonitor);
23
23
  ngAfterContentInit(): void;
24
+ ngAfterViewInit(): void;
24
25
  ngOnDestroy(): void;
25
26
  focus(): void;
26
27
  blur(): void;
@@ -0,0 +1,2 @@
1
+ export * from './module';
2
+ export * from './overflow-items';
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./overflow-items";
3
+ export declare class KbqOverflowItemsModule {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqOverflowItemsModule, never>;
5
+ static ɵmod: i0.ɵɵNgModuleDeclaration<KbqOverflowItemsModule, never, [typeof i1.KbqOverflowItems, typeof i1.KbqOverflowItem, typeof i1.KbqOverflowItemsResult], [typeof i1.KbqOverflowItems, typeof i1.KbqOverflowItem, typeof i1.KbqOverflowItemsResult]>;
6
+ static ɵinj: i0.ɵɵInjectorDeclaration<KbqOverflowItemsModule>;
7
+ }
@@ -0,0 +1,132 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Template context for the `KbqOverflowItemsResult` directive.
5
+ *
6
+ * @see `KbqOverflowItemsResult`
7
+ */
8
+ export type KbqOverflowItemsResultContext = {
9
+ /**
10
+ * Set of hidden item ID's.
11
+ *
12
+ * Example:
13
+ *
14
+ * ```html
15
+ * <ng-template kbqOverflowItemsResult let-hiddenItemIDs>
16
+ * {{ hiddenItemIDs.size }}
17
+ * </ng-template>
18
+ * ````
19
+ */
20
+ $implicit: ReadonlySet<unknown>;
21
+ /**
22
+ * Set of hidden item ID's.
23
+ *
24
+ * Example:
25
+ *
26
+ * ```html
27
+ * <ng-template kbqOverflowItemsResult let-hiddenItemIDs="hiddenItemIDs">
28
+ * @if (hiddenItemIDs.has(SOME_ID)) {...}
29
+ * </ng-template>
30
+ * ````
31
+ */
32
+ hiddenItemIDs: ReadonlySet<unknown>;
33
+ };
34
+ /**
35
+ * Directive for providing `KbqOverflowItemsResultContext` to the `KbqOverflowItems` component.
36
+ *
37
+ * @see `KbqOverflowItemsResultContext`
38
+ */
39
+ export declare class KbqOverflowItemsResult {
40
+ /**
41
+ * TemplateRef for the overflow result.
42
+ *
43
+ * @docs-private
44
+ */
45
+ readonly templateRef: TemplateRef<KbqOverflowItemsResultContext>;
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqOverflowItemsResult, never>;
47
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqOverflowItemsResult, "ng-template[kbqOverflowItemsResult]", never, {}, {}, never, never, true, never>;
48
+ }
49
+ /**
50
+ * Structure directive for providing items to the `KbqOverflowItems`.
51
+ */
52
+ export declare class KbqOverflowItem {
53
+ /**
54
+ * Identifier for the item.
55
+ */
56
+ readonly id: import("@angular/core").InputSignal<unknown>;
57
+ /**
58
+ * Whether the item is hidden.
59
+ *
60
+ * @docs-private
61
+ */
62
+ readonly hidden: import("@angular/core").WritableSignal<boolean>;
63
+ /**
64
+ * TemplateRef for the item.
65
+ *
66
+ * @docs-private
67
+ */
68
+ readonly templateRef: TemplateRef<any>;
69
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqOverflowItem, never>;
70
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqOverflowItem, "[kbqOverflowItem]", never, { "id": { "alias": "kbqOverflowItem"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
71
+ }
72
+ /**
73
+ * Component for automatically hiding elements with dynamic adaptation to the container width.
74
+ */
75
+ export declare class KbqOverflowItems {
76
+ private readonly itemElementRefs;
77
+ /**
78
+ * `KbqOverflowItem` directive references.
79
+ *
80
+ * @docs-private
81
+ */
82
+ protected readonly items: import("@angular/core").Signal<readonly KbqOverflowItem[]>;
83
+ /**
84
+ * `KbqOverflowItemsResult` directive reference.
85
+ *
86
+ * @docs-private
87
+ */
88
+ protected readonly result: import("@angular/core").Signal<KbqOverflowItemsResult | undefined>;
89
+ private readonly resultElementRef;
90
+ /**
91
+ * Template context for the `KbqOverflowItemsResult` directive.
92
+ *
93
+ * @docs-private
94
+ */
95
+ protected readonly resultTemplateContext: import("@angular/core").Signal<KbqOverflowItemsResultContext>;
96
+ /**
97
+ * Whether the overflow result is hidden.
98
+ *
99
+ * @docs-private
100
+ */
101
+ protected readonly resultHidden: import("@angular/core").Signal<boolean>;
102
+ /**
103
+ * Whether the overflow order should be reversed.
104
+ * Also changes the position of the `resultTemplateRef`.
105
+ *
106
+ * @default false
107
+ */
108
+ readonly reverseOverflowOrder: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
109
+ private readonly elementRef;
110
+ private readonly resizeObserver;
111
+ private readonly contentObserver;
112
+ constructor();
113
+ /**
114
+ * Updates the visibility of items based on the container width.
115
+ *
116
+ * This method calculates whether items should be hidden or shown by comparing the scroll width of the container
117
+ * with its visible width. It determines which items are visible and which are hidden, and applies the hiding logic
118
+ * based on the `reverseOverflowOrder` flag.
119
+ *
120
+ * The function operates recursively to adjust the visibility of items until the overflow condition is resolved.
121
+ *
122
+ * - If the container is overflown, it hides the last visible item from the end (or start if `reverseOverflowOrder`)
123
+ * and checks if further adjustments are needed.
124
+ * - If the container is not overflown, it reveals the first hidden item from the start
125
+ * (or end if `reverseOverflowOrder`), ensuring it fits within the visible area.
126
+ */
127
+ private updateItemsVisibility;
128
+ /** @TODO Should use `Array.prototype.findLast` after migrating to ES2023 */
129
+ private findLast;
130
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqOverflowItems, never>;
131
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqOverflowItems, "kbq-overflow-items", never, { "reverseOverflowOrder": { "alias": "reverseOverflowOrder"; "required": false; "isSignal": true; }; }, {}, ["items", "result"], never, true, never>;
132
+ }
@@ -0,0 +1,20 @@
1
+ :host {
2
+ position: relative;
3
+ display: flex;
4
+ flex-grow: 1;
5
+ overflow: hidden;
6
+ flex-wrap: nowrap;
7
+ white-space: nowrap;
8
+ }
9
+
10
+ .kbq-overflow-items__item,
11
+ .kbq-overflow-items__result {
12
+ display: flex;
13
+ align-items: center;
14
+
15
+ &.kbq-overflow-items__item_hidden,
16
+ &.kbq-overflow-items__result_hidden {
17
+ visibility: hidden;
18
+ position: absolute;
19
+ }
20
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koobiq/components",
3
- "version": "18.12.1",
3
+ "version": "18.14.0",
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.12.1",
28
- "@koobiq/angular-moment-adapter": "18.12.1",
29
- "@koobiq/angular-luxon-adapter": "18.12.1",
27
+ "@koobiq/cdk": "18.14.0",
28
+ "@koobiq/angular-moment-adapter": "18.14.0",
29
+ "@koobiq/angular-luxon-adapter": "18.14.0",
30
30
  "@koobiq/date-formatter": "^3.1.4",
31
31
  "@koobiq/icons": "^9.2.0",
32
- "@koobiq/tokens-builder": "3.8.1",
33
- "@koobiq/design-tokens": "3.8.1",
32
+ "@koobiq/tokens-builder": "3.10.0",
33
+ "@koobiq/design-tokens": "3.10.0",
34
34
  "@radix-ng/primitives": "^0.14.0"
35
35
  },
36
36
  "dependencies": {
@@ -88,6 +88,12 @@
88
88
  "esm": "./esm2022/badge/koobiq-components-badge.mjs",
89
89
  "default": "./fesm2022/koobiq-components-badge.mjs"
90
90
  },
91
+ "./breadcrumbs": {
92
+ "types": "./breadcrumbs/index.d.ts",
93
+ "esm2022": "./esm2022/breadcrumbs/koobiq-components-breadcrumbs.mjs",
94
+ "esm": "./esm2022/breadcrumbs/koobiq-components-breadcrumbs.mjs",
95
+ "default": "./fesm2022/koobiq-components-breadcrumbs.mjs"
96
+ },
91
97
  "./button": {
92
98
  "types": "./button/index.d.ts",
93
99
  "esm2022": "./esm2022/button/koobiq-components-button.mjs",
@@ -214,6 +220,12 @@
214
220
  "esm": "./esm2022/navbar/koobiq-components-navbar.mjs",
215
221
  "default": "./fesm2022/koobiq-components-navbar.mjs"
216
222
  },
223
+ "./overflow-items": {
224
+ "types": "./overflow-items/index.d.ts",
225
+ "esm2022": "./esm2022/overflow-items/koobiq-components-overflow-items.mjs",
226
+ "esm": "./esm2022/overflow-items/koobiq-components-overflow-items.mjs",
227
+ "default": "./fesm2022/koobiq-components-overflow-items.mjs"
228
+ },
217
229
  "./popover": {
218
230
  "types": "./popover/index.d.ts",
219
231
  "esm2022": "./esm2022/popover/koobiq-components-popover.mjs",
@@ -75,6 +75,7 @@ export declare class KbqPopoverTrigger extends KbqPopUpTrigger<KbqPopoverCompone
75
75
  private _closeOnScroll;
76
76
  get hasClickTrigger(): boolean;
77
77
  backdropClass: string;
78
+ arrow: boolean;
78
79
  placementChange: EventEmitter<any>;
79
80
  visibleChange: EventEmitter<boolean>;
80
81
  protected originSelector: string;
@@ -47,7 +47,7 @@
47
47
  --kbq-radio-error-states-checked-disabled-outer-circle-background: var(--kbq-states-background-disabled);
48
48
  --kbq-radio-error-states-checked-disabled-inner-circle-background: var(--kbq-states-icon-disabled);
49
49
  --kbq-radio-error-states-focused-outer-circle-border: transparent;
50
- --kbq-radio-error-states-focused-outer-circle-background: var(--kbq-states-background-error-less);
50
+ --kbq-radio-error-states-focused-outer-circle-background: var(--kbq-background-error-less);
51
51
  --kbq-radio-error-states-focused-inner-circle-background: transparent;
52
52
  --kbq-radio-error-states-focused-outer-circle-shadow: 0 0 0.1px 2px var(--kbq-states-line-focus-error);
53
53
  --kbq-radio-error-states-checked-focused-outer-circle-border: transparent;
@@ -40,13 +40,13 @@ function ngAdd(options) {
40
40
  }
41
41
  // Installing dependencies
42
42
  utils_packageConfig.addPackageToPackageJson(tree, '@angular/cdk', "^18.2.6");
43
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/cdk', "^18.12.1");
44
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/angular-luxon-adapter', "^18.12.1");
45
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/date-formatter', "^3.1.4");
46
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/date-adapter', "^3.1.4");
43
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/cdk', "^18.14.0");
44
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/angular-luxon-adapter', "^18.14.0");
45
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/date-formatter', "^3.2.0");
46
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/date-adapter', "^3.2.0");
47
47
  utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/icons', "^9.2.0");
48
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/tokens-builder', "^3.8.1");
49
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/design-tokens', "^3.9.0");
48
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/tokens-builder', "^3.10.0");
49
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/design-tokens', "^3.10.0");
50
50
  utils_packageConfig.addPackageToPackageJson(tree, '@messageformat/core', "^3.0.1");
51
51
  utils_packageConfig.addPackageToPackageJson(tree, '@radix-ng/primitives', VERSIONS.RADIX_NG);
52
52
  utils_packageConfig.addPackageToPackageJson(tree, 'luxon', "^3.4.4");
@@ -5,7 +5,9 @@ import * as i0 from "@angular/core";
5
5
  export declare class KbqOptionTooltip extends KbqTooltipTrigger implements AfterViewInit, OnDestroy {
6
6
  private option;
7
7
  private resizeObserver;
8
- private mutationObserver;
8
+ private resizeObserverSubscription;
9
+ private contentObserver;
10
+ private contentObserverSubscription;
9
11
  get textElement(): HTMLElement;
10
12
  get isOverflown(): boolean;
11
13
  constructor(option: KbqOption);
@@ -63,7 +63,6 @@ export declare class KbqTabLink implements OnDestroy, AfterViewInit {
63
63
  private readonly focusMonitor;
64
64
  private readonly renderer;
65
65
  private readonly tabNavBar;
66
- constructor();
67
66
  ngAfterViewInit(): void;
68
67
  ngOnDestroy(): void;
69
68
  private addClassModifierForIcons;
@@ -7,6 +7,7 @@ export declare class KbqTimezoneOptionTooltip extends KbqTooltipTrigger implemen
7
7
  private changeDetectorRef;
8
8
  private option;
9
9
  private resizeObserver;
10
+ private resizeObserverSubscription;
10
11
  constructor(changeDetectorRef: ChangeDetectorRef, option: KbqTimezoneOption);
11
12
  ngAfterViewInit(): void;
12
13
  ngOnDestroy(): void;
@@ -5,6 +5,7 @@ import { Subject } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class KbqTitleDirective extends KbqTooltipTrigger implements AfterViewInit, OnDestroy {
7
7
  private componentInstance?;
8
+ private contentObserver;
8
9
  get isOverflown(): boolean;
9
10
  get viewValue(): string;
10
11
  get parent(): HTMLElement;
@@ -12,7 +13,7 @@ export declare class KbqTitleDirective extends KbqTooltipTrigger implements Afte
12
13
  readonly resizeStream: Subject<Event>;
13
14
  private readonly debounceInterval;
14
15
  private resizeSubscription;
15
- private mutationSubscription;
16
+ private contentObserverSubscription;
16
17
  private focusMonitorSubscription;
17
18
  private childContainer;
18
19
  private parentContainer;
@@ -21,7 +22,6 @@ export declare class KbqTitleDirective extends KbqTooltipTrigger implements Afte
21
22
  ngOnDestroy(): void;
22
23
  handleElementEnter(): void;
23
24
  hideTooltip(): void;
24
- private createMutationObserver;
25
25
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTitleDirective, [{ optional: true; host: true; }]>;
26
26
  static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTitleDirective, "[kbq-title]", ["kbqTitle"], {}, {}, ["childContainer", "parentContainer"], never, false, never>;
27
27
  }
@@ -44,7 +44,7 @@
44
44
  --kbq-toggle-error-states-checked-hover-background: var(--kbq-states-background-error-hover);
45
45
  --kbq-toggle-error-states-checked-hover-circle-background: var(--kbq-icon-white);
46
46
  --kbq-toggle-error-states-focused-border: var(--kbq-states-line-focus-error);
47
- --kbq-toggle-error-states-focused-background: var(--kbq-states-background-error-less);
47
+ --kbq-toggle-error-states-focused-background: var(--kbq-background-error-less);
48
48
  --kbq-toggle-error-states-focused-circle-background: var(--kbq-icon-error);
49
49
  --kbq-toggle-error-states-focused-focus-outline: var(--kbq-states-line-focus-error);
50
50
  --kbq-toggle-error-states-checked-focused-border: var(--kbq-states-line-focus-error);
@@ -1,5 +1,5 @@
1
1
  import { FocusMonitor } from '@angular/cdk/a11y';
2
- import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy } from '@angular/core';
2
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy } from '@angular/core';
3
3
  import { ControlValueAccessor } from '@angular/forms';
4
4
  import { CanColor, CanColorCtor, CanDisable, CanDisableCtor, HasTabIndex, HasTabIndexCtor } from '@koobiq/components/core';
5
5
  import * as i0 from "@angular/core";
@@ -15,10 +15,10 @@ export declare class KbqToggleChange {
15
15
  source: KbqToggleComponent;
16
16
  checked: boolean;
17
17
  }
18
- export declare class KbqToggleComponent extends KbqToggleMixinBase implements ControlValueAccessor, CanColor, CanDisable, HasTabIndex, OnDestroy {
18
+ export declare class KbqToggleComponent extends KbqToggleMixinBase implements AfterViewInit, ControlValueAccessor, CanColor, CanDisable, HasTabIndex, OnDestroy {
19
19
  elementRef: ElementRef;
20
- private _focusMonitor;
21
- private _changeDetectorRef;
20
+ private focusMonitor;
21
+ private changeDetectorRef;
22
22
  big: boolean;
23
23
  inputElement: ElementRef;
24
24
  labelPosition: ToggleLabelPositionType;
@@ -36,7 +36,8 @@ export declare class KbqToggleComponent extends KbqToggleMixinBase implements Co
36
36
  private _checked;
37
37
  readonly change: EventEmitter<KbqToggleChange>;
38
38
  private uniqueId;
39
- constructor(elementRef: ElementRef, _focusMonitor: FocusMonitor, _changeDetectorRef: ChangeDetectorRef);
39
+ constructor(elementRef: ElementRef, focusMonitor: FocusMonitor, changeDetectorRef: ChangeDetectorRef);
40
+ ngAfterViewInit(): void;
40
41
  ngOnDestroy(): void;
41
42
  focus(): void;
42
43
  getAriaChecked(): boolean;
@@ -1,6 +1,6 @@
1
1
  import { FocusMonitor } from '@angular/cdk/a11y';
2
2
  import { Overlay, OverlayConfig, ScrollStrategy } from '@angular/cdk/overlay';
3
- import { ElementRef, EventEmitter, InjectionToken, OnDestroy, TemplateRef, Type } from '@angular/core';
3
+ import { AfterViewInit, ElementRef, EventEmitter, InjectionToken, OnDestroy, TemplateRef, Type } from '@angular/core';
4
4
  import { KbqComponentColors, KbqParentPopup, KbqPopUp, KbqPopUpTrigger, PopUpPlacements } from '@koobiq/components/core';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare enum TooltipModifier {
@@ -38,7 +38,7 @@ export declare const KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER: {
38
38
  deps: (typeof Overlay)[];
39
39
  useFactory: typeof kbqTooltipScrollStrategyFactory;
40
40
  };
41
- export declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipComponent> implements OnDestroy {
41
+ export declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipComponent> implements AfterViewInit, OnDestroy {
42
42
  protected scrollStrategy: () => ScrollStrategy;
43
43
  protected parentPopup: KbqParentPopup | null;
44
44
  protected focusMonitor: FocusMonitor;
@@ -78,7 +78,7 @@ export declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipCompone
78
78
  protected originSelector: string;
79
79
  protected overlayConfig: OverlayConfig;
80
80
  protected modifier: TooltipModifier;
81
- constructor();
81
+ ngAfterViewInit(): void;
82
82
  ngOnDestroy(): void;
83
83
  show(delay?: number): void;
84
84
  /**
@@ -16,7 +16,7 @@
16
16
  border-width: var(--kbq-tree-size-container-focus-outline-width);
17
17
  border-style: solid;
18
18
  border-color: transparent;
19
- border-radius: var(--kbq-size-border-radius);
19
+ border-radius: var(--kbq-tree-option-border-radius);
20
20
 
21
21
  padding-top: kbq-difference-series-css-variables(
22
22
  [ tree-size-container-padding-vertical,
@@ -7,6 +7,7 @@
7
7
  --kbq-tree-size-container-content-gap-vertical: 0px;
8
8
  --kbq-tree-size-container-focus-outline-width: var(--kbq-size-3xs);
9
9
  --kbq-tree-size-text-padding-vertical: var(--kbq-size-3xs);
10
+ --kbq-tree-option-border-radius: var(--kbq-size-border-radius);
10
11
  /* THEME TOKENS */
11
12
  --kbq-tree-default-container-background: transparent;
12
13
  --kbq-tree-default-text-color: var(--kbq-foreground-contrast);
@@ -3,3 +3,7 @@
3
3
  --kbq-select-panel-dropdown-background: var(--kbq-background-card);
4
4
  --kbq-select-panel-dropdown-shadow: var(--kbq-shadow-popup);
5
5
  }
6
+
7
+ .kbq-tree-select__panel .kbq-tree-selection {
8
+ --kbq-tree-option-border-radius: var(--kbq-size-xs);
9
+ }