@koobiq/components 18.29.0 → 18.30.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 (78) hide show
  1. package/code-block/_code-block-theme.scss +4 -12
  2. package/code-block/code-block-tokens.scss +3 -2
  3. package/code-block/code-block.scss +41 -10
  4. package/core/formatters/filesize/size.d.ts +19 -3
  5. package/core/forms/validators.d.ts +13 -0
  6. package/core/pop-up/pop-up-trigger.d.ts +3 -4
  7. package/core/pop-up/pop-up.d.ts +2 -1
  8. package/core/select/common.d.ts +3 -3
  9. package/ellipsis-center/ellipsis-center.directive.d.ts +8 -2
  10. package/esm2022/actions-panel/actions-panel-container.mjs +2 -2
  11. package/esm2022/code-block/code-block.mjs +6 -3
  12. package/esm2022/core/formatters/filesize/formatter.mjs +6 -9
  13. package/esm2022/core/formatters/filesize/size.mjs +15 -17
  14. package/esm2022/core/forms/validators.mjs +22 -1
  15. package/esm2022/core/pop-up/pop-up-trigger.mjs +19 -10
  16. package/esm2022/core/pop-up/pop-up.mjs +6 -2
  17. package/esm2022/core/select/common.mjs +6 -4
  18. package/esm2022/core/version.mjs +2 -2
  19. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +14 -4
  20. package/esm2022/file-upload/file-upload.mjs +2 -1
  21. package/esm2022/file-upload/multiple-file-upload.component.mjs +21 -7
  22. package/esm2022/file-upload/single-file-upload.component.mjs +16 -7
  23. package/esm2022/filter-bar/filter-search.mjs +2 -2
  24. package/esm2022/filter-bar/filters.mjs +2 -2
  25. package/esm2022/filter-bar/pipe-add.mjs +2 -2
  26. package/esm2022/filter-bar/pipes/pipe-button.mjs +1 -1
  27. package/esm2022/filter-bar/pipes/pipe-date.mjs +2 -2
  28. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +2 -2
  29. package/esm2022/filter-bar/pipes/pipe-text.mjs +2 -2
  30. package/esm2022/form-field/form-field.mjs +8 -8
  31. package/esm2022/form-field/stepper.mjs +20 -4
  32. package/esm2022/overflow-items/overflow-items.mjs +43 -70
  33. package/esm2022/popover/popover.component.mjs +10 -4
  34. package/esm2022/select/select.component.mjs +5 -6
  35. package/esm2022/tabs/tab-group.component.mjs +1 -1
  36. package/esm2022/tooltip/tooltip.component.mjs +12 -3
  37. package/esm2022/top-bar/top-bar.mjs +2 -2
  38. package/fesm2022/koobiq-components-actions-panel.mjs +1 -1
  39. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  40. package/fesm2022/koobiq-components-code-block.mjs +5 -2
  41. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  42. package/fesm2022/koobiq-components-core.mjs +68 -37
  43. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  44. package/fesm2022/koobiq-components-ellipsis-center.mjs +13 -3
  45. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  46. package/fesm2022/koobiq-components-file-upload.mjs +32 -10
  47. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  48. package/fesm2022/koobiq-components-filter-bar.mjs +7 -7
  49. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  50. package/fesm2022/koobiq-components-form-field.mjs +25 -10
  51. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  52. package/fesm2022/koobiq-components-overflow-items.mjs +42 -69
  53. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  54. package/fesm2022/koobiq-components-popover.mjs +9 -3
  55. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  56. package/fesm2022/koobiq-components-select.mjs +4 -5
  57. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  58. package/fesm2022/koobiq-components-tabs.mjs +1 -1
  59. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  60. package/fesm2022/koobiq-components-tooltip.mjs +11 -2
  61. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  62. package/fesm2022/koobiq-components-top-bar.mjs +2 -2
  63. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  64. package/file-upload/_file-upload-theme.scss +38 -22
  65. package/file-upload/file-upload-tokens.scss +37 -14
  66. package/file-upload/file-upload.d.ts +1 -0
  67. package/file-upload/multiple-file-upload.component.d.ts +12 -5
  68. package/file-upload/multiple-file-upload.component.scss +66 -69
  69. package/file-upload/single-file-upload.component.d.ts +7 -1
  70. package/file-upload/single-file-upload.component.scss +8 -0
  71. package/form-field/form-field.d.ts +3 -1
  72. package/form-field/stepper.d.ts +15 -1
  73. package/overflow-items/overflow-items.d.ts +16 -25
  74. package/package.json +4 -4
  75. package/popover/popover.component.d.ts +4 -2
  76. package/schematics/ng-add/index.js +2 -2
  77. package/tooltip/tooltip.component.d.ts +8 -1
  78. package/top-bar/top-bar.scss +1 -0
@@ -18,58 +18,35 @@
18
18
 
19
19
  min-width: var(--kbq-file-upload-size-multiple-big-container-min-width);
20
20
 
21
- & .dropzone {
21
+ .dropzone {
22
22
  gap: var(--kbq-file-upload-size-multiple-big-container-content-gap-horizontal);
23
23
  }
24
24
 
25
- & .dropzone__text {
26
- & .multiple__header {
27
- display: block;
28
- }
29
-
30
- & .multiple__caption {
31
- display: block;
25
+ .dropzone__text {
26
+ .multiple__caption {
32
27
  padding-top: var(--kbq-file-upload-size-multiple-big-text-block-content-gap-vertical);
33
- // гап не применяется тк не флекс. в целом гап не нужен, тк по логике дизайна ссылка от текста отделяется пробелом
34
- gap: var(--kbq-file-upload-size-multiple-big-text-block-content-gap-horizontal);
35
28
  }
36
29
  }
37
30
  }
38
31
 
39
32
  &.compact:not(.selected) {
40
- padding: var(--kbq-file-upload-size-single-container-padding-vertical)
41
- var(--kbq-file-upload-size-single-container-padding-horizontal);
42
-
43
- & .dropzone {
44
- gap: var(--kbq-file-upload-size-single-container-content-gap-horizontal);
33
+ padding: var(--kbq-file-upload-multiple-compact-container-padding-vertical)
34
+ var(--kbq-file-upload-multiple-compact-container-padding-horizontal);
45
35
 
46
- & .dropzone__text.multiple__caption {
47
- padding-top: var(--kbq-file-upload-size-single-text-block-padding-vertical);
36
+ .dropzone {
37
+ gap: var(--kbq-file-upload-multiple-compact-container-content-gap-horizontal);
48
38
 
49
- padding-bottom: var(--kbq-file-upload-size-single-text-block-padding-vertical);
39
+ .dropzone__text.multiple__caption {
40
+ padding-top: var(--kbq-file-upload-multiple-compact-text-block-padding-vertical);
50
41
 
51
- gap: var(--kbq-file-upload-size-single-text-block-content-gap-horizontal);
42
+ padding-bottom: var(--kbq-file-upload-multiple-compact-text-block-padding-vertical);
52
43
  }
53
44
  }
54
45
  }
55
46
 
56
- & .kbq-list-option.multiple__uploaded-item {
57
- padding: 0;
58
-
59
- & .kbq-list-text {
60
- padding: calc(
61
- var(--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical) - var(
62
- --kbq-list-size-container-focus-outline-width,
63
- var(--kbq-size-3xs)
64
- )
65
- )
66
- calc(
67
- var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal) - var(
68
- --kbq-list-size-container-focus-outline-width,
69
- var(--kbq-size-3xs)
70
- )
71
- );
72
- }
47
+ .kbq-list-option.multiple__uploaded-item {
48
+ border-radius: 0;
49
+ padding: 0 calc(var(--kbq-size-3xs) - var(--kbq-file-upload-size-multiple-big-container-border-width));
73
50
 
74
51
  .kbq-icon {
75
52
  margin-right: 0;
@@ -86,67 +63,87 @@
86
63
  align-items: center;
87
64
 
88
65
  .kbq-file-upload__file {
89
- width: 65%;
90
- max-width: 65%;
91
-
92
- gap: var(--kbq-file-upload-size-multiple-big-grid-cell-content-gap-horizontal);
66
+ flex-grow: 1;
93
67
  }
94
68
 
95
69
  .kbq-file-upload__size {
96
- width: var(--kbq-size-7xl);
97
- min-width: var(--kbq-size-7xl);
98
- text-align: left;
70
+ width: var(--kbq-file-upload-size-multiple-big-grid-cell-file-size-width);
71
+ min-width: var(--kbq-file-upload-size-multiple-big-grid-cell-file-size-width);
72
+ max-width: var(--kbq-file-upload-size-multiple-big-grid-cell-file-size-width);
99
73
  flex-grow: 1;
74
+ flex-shrink: 1;
75
+ text-align: left;
100
76
  }
101
77
  }
102
78
 
103
79
  .kbq-file-upload__row {
80
+ .kbq-file-upload__grid-cell {
81
+ padding: 0 var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal);
82
+ }
83
+
104
84
  .kbq-file-upload__file {
105
85
  display: flex;
106
86
  align-items: center;
87
+ gap: var(--kbq-file-upload-size-multiple-big-grid-cell-content-gap-horizontal);
107
88
 
108
89
  .file-item__text {
109
- margin-left: 0;
110
90
  width: 90%;
111
91
  }
112
92
  }
93
+
94
+ .kbq-file-upload__action {
95
+ $list-option-border-width: var(--kbq-size-3xs);
96
+ display: flex;
97
+ justify-content: center;
98
+ align-items: center;
99
+ padding-top: calc(
100
+ var(--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical) - $list-option-border-width
101
+ );
102
+ padding-bottom: calc(
103
+ var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal) - $list-option-border-width
104
+ );
105
+ min-height: var(--kbq-size-xxl);
106
+ min-width: var(--kbq-size-xxl);
107
+ }
113
108
  }
114
109
 
115
110
  .kbq-file-multiple-uploaded__header {
116
- border-bottom-width: 1px;
111
+ margin: -1px;
112
+ border-bottom-width: var(--kbq-file-upload-size-multiple-big-container-border-width);
117
113
  border-bottom-style: solid;
118
114
 
119
- .kbq-file-multiple-uploaded__header-inner {
120
- padding: kbq-sum-series-css-variables([file-upload-size-multiple-big-grid-cell-padding-vertical, 2px])
121
- kbq-sum-series-css-variables([file-upload-size-multiple-big-grid-cell-padding-horizontal 2px]);
115
+ padding: 0 var(--kbq-size-xxs);
116
+
117
+ .kbq-file-upload__grid-cell {
118
+ $header-cell-vertical-padding: 10px;
119
+ padding: $header-cell-vertical-padding var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal)
120
+ calc($header-cell-vertical-padding - var(--kbq-file-upload-size-multiple-big-container-border-width))
121
+ var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal);
122
+ }
123
+
124
+ .kbq-file-upload__action {
125
+ min-height: var(--kbq-size-xxl);
126
+ min-width: var(--kbq-size-xxl);
127
+ padding: var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal)
128
+ var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal)
129
+ calc(
130
+ var(--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical) - var(
131
+ --kbq-file-upload-size-multiple-big-container-border-width
132
+ )
133
+ );
122
134
  }
123
135
  }
124
136
 
125
137
  .btn-upload {
126
- padding: kbq-difference-series-css-variables(
127
- [ file-upload-size-single-container-padding-vertical,
128
- file-upload-size-single-container-border-width]
129
- )
130
- kbq-difference-series-css-variables(
131
- [ file-upload-size-single-container-padding-horizontal,
132
- file-upload-size-single-container-border-width]
133
- );
134
- border-top-left-radius: var(--kbq-file-upload-size-single-container-border-radius);
138
+ margin: -1px;
139
+ padding: calc(var(--kbq-size-m) - var(--kbq-file-upload-size-multiple-big-container-border-width))
140
+ var(--kbq-size-m) var(--kbq-size-m) var(--kbq-size-m);
135
141
 
136
- border-top-right-radius: var(--kbq-file-upload-size-single-container-border-radius);
137
- border-top-width: var(--kbq-file-upload-size-single-container-border-width);
142
+ border-top-width: var(--kbq-file-upload-size-multiple-big-container-border-width);
138
143
  border-top-style: dashed;
139
144
 
140
- & .dropzone {
141
- gap: var(--kbq-file-upload-size-single-container-content-gap-horizontal);
142
-
143
- & .dropzone__text.multiple__caption {
144
- padding-top: var(--kbq-file-upload-size-single-text-block-padding-vertical);
145
-
146
- padding-bottom: var(--kbq-file-upload-size-single-text-block-padding-vertical);
147
-
148
- gap: var(--kbq-file-upload-size-single-text-block-content-gap-horizontal);
149
- }
145
+ .dropzone {
146
+ gap: var(--kbq-file-upload-size-multiple-big-dropzone-content-gap-horizontal);
150
147
  }
151
148
  }
152
149
 
@@ -27,6 +27,11 @@ export declare class KbqSingleFileUploadComponent extends KbqFileUploadBase impl
27
27
  private _file;
28
28
  get file(): KbqFileItem | null;
29
29
  set file(currentFile: KbqFileItem | null);
30
+ /**
31
+ * Controls whether to display the file size information.
32
+ * @default true
33
+ */
34
+ showFileSize: boolean;
30
35
  /** Emits an event containing updated file.
31
36
  * public output will be renamed to fileChange in next major release (#DS-3700) */
32
37
  fileChange: EventEmitter<KbqFileItem | null>;
@@ -88,5 +93,6 @@ export declare class KbqSingleFileUploadComponent extends KbqFileUploadBase impl
88
93
  private initDefaultParams;
89
94
  private getCaptionText;
90
95
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqSingleFileUploadComponent, never>;
91
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqSingleFileUploadComponent, "kbq-single-file-upload,kbq-file-upload:not([multiple])", never, { "progressMode": { "alias": "progressMode"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "customValidation": { "alias": "customValidation"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "file": { "alias": "file"; "required": false; }; }, { "fileChange": "fileQueueChange"; }, ["hint"], ["[kbq-icon]", "kbq-hint"], false, never>;
96
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqSingleFileUploadComponent, "kbq-single-file-upload,kbq-file-upload:not([multiple])", never, { "progressMode": { "alias": "progressMode"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "customValidation": { "alias": "customValidation"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "file": { "alias": "file"; "required": false; }; "showFileSize": { "alias": "showFileSize"; "required": false; }; }, { "fileChange": "fileQueueChange"; }, ["hint"], ["[kbq-icon]", "kbq-hint"], false, never>;
97
+ static ngAcceptInputType_showFileSize: unknown;
92
98
  }
@@ -44,5 +44,13 @@
44
44
  flex-grow: 1;
45
45
  }
46
46
  }
47
+
48
+ .kbq-file-item__size {
49
+ padding: 0 var(--kbq-size-s);
50
+ }
51
+
52
+ .kbq-file-upload__action {
53
+ padding: var(--kbq-size-xxs);
54
+ }
47
55
  }
48
56
  }
@@ -38,7 +38,9 @@ export declare class KbqFormField extends KbqColorDirective implements AfterCont
38
38
  get hasPasswordToggle(): boolean;
39
39
  get canShowCleaner(): boolean;
40
40
  get disabled(): boolean;
41
- get canShowStepper(): boolean;
41
+ /** @deprecated stepper should be always visible when provided, so this parameter is redundant,
42
+ * use `hasStepper` instead */
43
+ canShowStepper: boolean;
42
44
  constructor(changeDetectorRef: ChangeDetectorRef, focusMonitor: FocusMonitor);
43
45
  ngAfterContentInit(): void;
44
46
  ngAfterContentChecked(): void;
@@ -1,11 +1,25 @@
1
1
  import { EventEmitter } from '@angular/core';
2
+ import { KbqFormFieldControl } from './form-field-control';
2
3
  import * as i0 from "@angular/core";
4
+ /**
5
+ * Used as temporary solution to resolve circular dependency.
6
+ * Moving `KbqStepper` to standalone will resolve the issue
7
+ */
8
+ type KbqNumberInput = KbqFormFieldControl<unknown> & {
9
+ stepUp: (val: number) => void;
10
+ stepDown: (val: number) => void;
11
+ step: number;
12
+ };
3
13
  export declare class KbqStepper {
14
+ private readonly formField;
4
15
  readonly stepUp: EventEmitter<void>;
5
16
  readonly stepDown: EventEmitter<void>;
6
- connectTo(numberInput: any): void;
17
+ /** Form field number control. */
18
+ protected get control(): KbqNumberInput;
19
+ connectTo(numberInput: KbqNumberInput): void;
7
20
  onStepUp($event: MouseEvent): void;
8
21
  onStepDown($event: MouseEvent): void;
9
22
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqStepper, never>;
10
23
  static ɵcmp: i0.ɵɵComponentDeclaration<KbqStepper, "kbq-stepper", never, {}, { "stepUp": "stepUp"; "stepDown": "stepDown"; }, never, never, false, never>;
11
24
  }
25
+ export {};
@@ -1,4 +1,3 @@
1
- import { ElementRef } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
3
2
  /**
4
3
  * Manages the visibility of the element.
@@ -7,18 +6,14 @@ import * as i0 from "@angular/core";
7
6
  */
8
7
  export declare class ElementVisibilityManager {
9
8
  private readonly renderer;
10
- /**
11
- * Reference to the element.
12
- *
13
- * @docs-private
14
- */
15
- readonly elementRef: ElementRef<any>;
9
+ private readonly elementRef;
10
+ private readonly hiddenState;
16
11
  /**
17
12
  * Whether the element is hidden.
18
13
  *
19
14
  * @docs-private
20
15
  */
21
- readonly hidden: import("@angular/core").WritableSignal<boolean>;
16
+ readonly hidden: import("@angular/core").Signal<boolean>;
22
17
  /**
23
18
  * Hides the element.
24
19
  *
@@ -59,6 +54,10 @@ export declare class KbqOverflowItem extends ElementVisibilityManager {
59
54
  * @default false
60
55
  */
61
56
  readonly alwaysVisible: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
57
+ /**
58
+ * @docs-private
59
+ */
60
+ hide(): void;
62
61
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqOverflowItem, never>;
63
62
  static ɵdir: i0.ɵɵDirectiveDeclaration<KbqOverflowItem, "[kbqOverflowItem]", ["kbqOverflowItem"], { "id": { "alias": "kbqOverflowItem"; "required": true; "isSignal": true; }; "order": { "alias": "order"; "required": false; "isSignal": true; }; "alwaysVisible": { "alias": "alwaysVisible"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
64
63
  }
@@ -68,14 +67,10 @@ export declare class KbqOverflowItem extends ElementVisibilityManager {
68
67
  export declare class KbqOverflowItems {
69
68
  /**
70
69
  * `KbqOverflowItem` directive references.
71
- *
72
- * @docs-private
73
70
  */
74
71
  private readonly items;
75
72
  /**
76
73
  * `KbqOverflowItemsResult` directive reference.
77
- *
78
- * @docs-private
79
74
  */
80
75
  private readonly result;
81
76
  /**
@@ -104,31 +99,27 @@ export declare class KbqOverflowItems {
104
99
  private readonly document;
105
100
  constructor();
106
101
  /**
107
- * Returns a list of items sorted by their specified `order` value.
102
+ * Sort items by their `order` attribute.
108
103
  * If an item does not have an `order` defined, its index is used as a fallback.
109
- * This ensures a stable order while allowing custom positioning.
110
104
  */
111
- private getSortedItemsByOrder;
105
+ private sortItemsByOrder;
112
106
  /**
113
- * Calculates the visibility of items, based on the container width and `reverseOverflowOrder` property.
107
+ * Excludes items that have the `alwaysVisible` attribute.
114
108
  */
115
- private calculateItemsVisibility;
109
+ private excludeAlwaysVisibleItems;
116
110
  /**
117
- * Returns the width of the element including margins.
111
+ * Manages the visibility of items based on the available space in the container and returns the hidden items.
112
+ * Direction of hiding is determined by the `reverseOverflowOrder` attribute.
118
113
  */
119
- private getElementWidthWithMargins;
114
+ private getHiddenItems;
120
115
  /**
121
116
  * This method sets the necessary styles for the directive.
122
117
  */
123
118
  private setStyles;
124
119
  /**
125
- * Determines if the given item is hidden.
126
- */
127
- private isHiddenItem;
128
- /**
129
- * Returns the window object.
120
+ * Determines if the given element has a scrollbar.
130
121
  */
131
- private getWindow;
122
+ private readonly hasScrollbar;
132
123
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqOverflowItems, never>;
133
124
  static ɵdir: i0.ɵɵDirectiveDeclaration<KbqOverflowItems, "[kbqOverflowItems]", ["kbqOverflowItems"], { "reverseOverflowOrder": { "alias": "reverseOverflowOrder"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; }, { "changes": "changes"; }, ["items", "result"], never, true, never>;
134
125
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koobiq/components",
3
- "version": "18.29.0",
3
+ "version": "18.30.0",
4
4
  "description": "koobiq",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,9 +24,9 @@
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.29.0",
28
- "@koobiq/angular-moment-adapter": "18.29.0",
29
- "@koobiq/angular-luxon-adapter": "18.29.0",
27
+ "@koobiq/cdk": "18.30.0",
28
+ "@koobiq/angular-moment-adapter": "18.30.0",
29
+ "@koobiq/angular-luxon-adapter": "18.30.0",
30
30
  "@koobiq/date-formatter": "^3.2.3",
31
31
  "@koobiq/icons": "^10.1.0",
32
32
  "@koobiq/tokens-builder": "3.11.0",
@@ -14,7 +14,6 @@ export declare class KbqPopoverComponent extends KbqPopUp implements AfterViewIn
14
14
  elementRef: ElementRef;
15
15
  cdkTrapFocus: CdkTrapFocus;
16
16
  private debounceTime;
17
- private readonly destroyRef;
18
17
  isContentTopOverflow: boolean;
19
18
  isContentBottomOverflow: boolean;
20
19
  ngAfterViewInit(): void;
@@ -82,6 +81,8 @@ export declare class KbqPopoverTrigger extends KbqPopUpTrigger<KbqPopoverCompone
82
81
  backdropClass: string;
83
82
  arrow: boolean;
84
83
  offset: number | null;
84
+ /** Delay before closing in milliseconds. The default value for kbqTrigger=PopUpTriggers.Hover is 500 ms. */
85
+ leaveDelay: number;
85
86
  placementChange: EventEmitter<any>;
86
87
  visibleChange: EventEmitter<boolean>;
87
88
  protected originSelector: string;
@@ -98,7 +99,8 @@ export declare class KbqPopoverTrigger extends KbqPopUpTrigger<KbqPopoverCompone
98
99
  closingActions(): import("rxjs").Observable<void | CdkScrollable | MouseEvent>;
99
100
  private hideIfNotInViewPort;
100
101
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqPopoverTrigger, never>;
101
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqPopoverTrigger, "[kbqPopover]", ["kbqPopover"], { "popoverVisible": { "alias": "kbqPopoverVisible"; "required": false; }; "popoverPlacement": { "alias": "kbqPopoverPlacement"; "required": false; }; "popoverPlacementPriority": { "alias": "kbqPopoverPlacementPriority"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "header": { "alias": "kbqPopoverHeader"; "required": false; }; "content": { "alias": "kbqPopoverContent"; "required": false; }; "footer": { "alias": "kbqPopoverFooter"; "required": false; }; "disabled": { "alias": "kbqPopoverDisabled"; "required": false; }; "trigger": { "alias": "kbqTrigger"; "required": false; }; "size": { "alias": "kbqPopoverSize"; "required": false; }; "customClass": { "alias": "kbqPopoverClass"; "required": false; }; "hasCloseButton": { "alias": "hasCloseButton"; "required": false; }; "closeOnScroll": { "alias": "closeOnScroll"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "arrow": { "alias": "kbqPopoverArrow"; "required": false; }; "offset": { "alias": "kbqPopoverOffset"; "required": false; }; }, { "placementChange": "kbqPopoverPlacementChange"; "visibleChange": "kbqPopoverVisibleChange"; }, never, never, false, never>;
102
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqPopoverTrigger, "[kbqPopover]", ["kbqPopover"], { "popoverVisible": { "alias": "kbqPopoverVisible"; "required": false; }; "popoverPlacement": { "alias": "kbqPopoverPlacement"; "required": false; }; "popoverPlacementPriority": { "alias": "kbqPopoverPlacementPriority"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "header": { "alias": "kbqPopoverHeader"; "required": false; }; "content": { "alias": "kbqPopoverContent"; "required": false; }; "footer": { "alias": "kbqPopoverFooter"; "required": false; }; "disabled": { "alias": "kbqPopoverDisabled"; "required": false; }; "trigger": { "alias": "kbqTrigger"; "required": false; }; "size": { "alias": "kbqPopoverSize"; "required": false; }; "customClass": { "alias": "kbqPopoverClass"; "required": false; }; "hasCloseButton": { "alias": "hasCloseButton"; "required": false; }; "closeOnScroll": { "alias": "closeOnScroll"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "arrow": { "alias": "kbqPopoverArrow"; "required": false; }; "offset": { "alias": "kbqPopoverOffset"; "required": false; }; "leaveDelay": { "alias": "kbqLeaveDelay"; "required": false; }; }, { "placementChange": "kbqPopoverPlacementChange"; "visibleChange": "kbqPopoverVisibleChange"; }, never, never, false, never>;
102
103
  static ngAcceptInputType_arrow: unknown;
103
104
  static ngAcceptInputType_offset: unknown;
105
+ static ngAcceptInputType_leaveDelay: unknown;
104
106
  }
@@ -27,8 +27,8 @@ function ngAdd(options) {
27
27
  }
28
28
  // Installing dependencies
29
29
  utils_packageConfig.addPackageToPackageJson(tree, '@angular/cdk', "^18.2.14");
30
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/cdk', "^18.29.0");
31
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/angular-luxon-adapter', "^18.29.0");
30
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/cdk', "^18.30.0");
31
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/angular-luxon-adapter', "^18.30.0");
32
32
  utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/date-formatter', "^3.2.3");
33
33
  utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/date-adapter', "^3.2.3");
34
34
  utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/icons', "^10.1.0");
@@ -42,6 +42,12 @@ export declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipCompone
42
42
  protected scrollStrategy: () => ScrollStrategy;
43
43
  protected parentPopup: KbqParentPopup | null;
44
44
  protected focusMonitor: FocusMonitor;
45
+ /**
46
+ * Changes hiding behavior. By default, tooltip is hidden on mouseleave from trigger.
47
+ * Setting hideWithTimeout to true will delay tooltip hiding and will not hide when the mouse moves from trigger
48
+ * to tooltip.
49
+ */
50
+ hideWithTimeout: boolean;
45
51
  get tooltipVisible(): boolean;
46
52
  set tooltipVisible(value: boolean);
47
53
  get tooltipPlacement(): PopUpPlacements;
@@ -96,7 +102,8 @@ export declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipCompone
96
102
  updateClassMap(newPlacement?: string): void;
97
103
  protected applyRelativeToPointer(): void;
98
104
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTooltipTrigger, never>;
99
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTooltipTrigger, "[kbqTooltip]", ["kbqTooltip"], { "tooltipVisible": { "alias": "kbqVisible"; "required": false; }; "tooltipPlacement": { "alias": "kbqPlacement"; "required": false; }; "relativeToPointer": { "alias": "kbqRelativeToPointer"; "required": false; }; "tooltipPlacementPriority": { "alias": "kbqPlacementPriority"; "required": false; }; "content": { "alias": "kbqTooltip"; "required": false; }; "disabled": { "alias": "kbqTooltipDisabled"; "required": false; }; "enterDelay": { "alias": "kbqEnterDelay"; "required": false; }; "leaveDelay": { "alias": "kbqLeaveDelay"; "required": false; }; "trigger": { "alias": "kbqTrigger"; "required": false; }; "customClass": { "alias": "kbqTooltipClass"; "required": false; }; "context": { "alias": "kbqTooltipContext"; "required": false; }; "color": { "alias": "kbqTooltipColor"; "required": false; }; "arrow": { "alias": "kbqTooltipArrow"; "required": false; }; "offset": { "alias": "kbqTooltipOffset"; "required": false; }; }, { "placementChange": "kbqPlacementChange"; "visibleChange": "kbqVisibleChange"; }, never, never, true, never>;
105
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTooltipTrigger, "[kbqTooltip]", ["kbqTooltip"], { "hideWithTimeout": { "alias": "hideWithTimeout"; "required": false; }; "tooltipVisible": { "alias": "kbqVisible"; "required": false; }; "tooltipPlacement": { "alias": "kbqPlacement"; "required": false; }; "relativeToPointer": { "alias": "kbqRelativeToPointer"; "required": false; }; "tooltipPlacementPriority": { "alias": "kbqPlacementPriority"; "required": false; }; "content": { "alias": "kbqTooltip"; "required": false; }; "disabled": { "alias": "kbqTooltipDisabled"; "required": false; }; "enterDelay": { "alias": "kbqEnterDelay"; "required": false; }; "leaveDelay": { "alias": "kbqLeaveDelay"; "required": false; }; "trigger": { "alias": "kbqTrigger"; "required": false; }; "customClass": { "alias": "kbqTooltipClass"; "required": false; }; "context": { "alias": "kbqTooltipContext"; "required": false; }; "color": { "alias": "kbqTooltipColor"; "required": false; }; "arrow": { "alias": "kbqTooltipArrow"; "required": false; }; "offset": { "alias": "kbqTooltipOffset"; "required": false; }; }, { "placementChange": "kbqPlacementChange"; "visibleChange": "kbqVisibleChange"; }, never, never, true, never>;
106
+ static ngAcceptInputType_hideWithTimeout: unknown;
100
107
  static ngAcceptInputType_relativeToPointer: unknown;
101
108
  static ngAcceptInputType_arrow: unknown;
102
109
  static ngAcceptInputType_offset: unknown;
@@ -33,6 +33,7 @@
33
33
 
34
34
  .kbq-top-bar-container__with-overflow-items {
35
35
  gap: unset;
36
+ justify-content: unset;
36
37
  padding: 1px;
37
38
 
38
39
  > .kbq-overflow-item {