@koobiq/components 18.30.0 → 18.31.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 (72) hide show
  1. package/core/common-behaviors/error-state.d.ts +18 -0
  2. package/core/common-behaviors/index.d.ts +1 -1
  3. package/core/option/_option-theme.scss +24 -2
  4. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +1 -1
  5. package/datepicker/datepicker-input.directive.d.ts +14 -5
  6. package/datepicker/datepicker-module.d.ts +1 -1
  7. package/datepicker/datepicker-toggle.component.d.ts +22 -0
  8. package/datepicker/datepicker-toggle.scss +6 -0
  9. package/esm2022/core/common-behaviors/error-state.mjs +28 -1
  10. package/esm2022/core/common-behaviors/index.mjs +2 -2
  11. package/esm2022/core/option/option.mjs +2 -2
  12. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  13. package/esm2022/core/version.mjs +2 -2
  14. package/esm2022/datepicker/calendar-header.component.mjs +1 -1
  15. package/esm2022/datepicker/datepicker-input.directive.mjs +66 -6
  16. package/esm2022/datepicker/datepicker-module.mjs +8 -3
  17. package/esm2022/datepicker/datepicker-toggle.component.mjs +94 -10
  18. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  19. package/esm2022/filter-bar/filter-bar.mjs +11 -3
  20. package/esm2022/filter-bar/filter-bar.types.mjs +1 -1
  21. package/esm2022/filter-bar/pipe-add.mjs +2 -2
  22. package/esm2022/filter-bar/pipes/pipe-date.mjs +2 -2
  23. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +2 -2
  24. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +29 -9
  25. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +30 -10
  26. package/esm2022/filter-bar/pipes/pipe-select.mjs +2 -2
  27. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +2 -2
  28. package/esm2022/icon/icon-button.component.mjs +2 -2
  29. package/esm2022/list/list-selection.component.mjs +5 -4
  30. package/esm2022/list/list.component.mjs +2 -2
  31. package/esm2022/select/select.component.mjs +30 -12
  32. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  33. package/esm2022/timezone/timezone-select.component.mjs +2 -2
  34. package/esm2022/tree/toggle.mjs +2 -2
  35. package/esm2022/tree/tree-option.component.mjs +5 -4
  36. package/esm2022/tree/tree-selection.component.mjs +2 -2
  37. package/esm2022/tree/tree.mjs +2 -2
  38. package/esm2022/tree-select/tree-select.component.mjs +32 -13
  39. package/fesm2022/koobiq-components-core.mjs +33 -6
  40. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  41. package/fesm2022/koobiq-components-datepicker.mjs +159 -11
  42. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  43. package/fesm2022/koobiq-components-dropdown.mjs +2 -2
  44. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  45. package/fesm2022/koobiq-components-filter-bar.mjs +71 -23
  46. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  47. package/fesm2022/koobiq-components-icon.mjs +2 -2
  48. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  49. package/fesm2022/koobiq-components-list.mjs +6 -5
  50. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  51. package/fesm2022/koobiq-components-select.mjs +29 -11
  52. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  53. package/fesm2022/koobiq-components-timezone.mjs +4 -4
  54. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  55. package/fesm2022/koobiq-components-tree-select.mjs +31 -12
  56. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  57. package/fesm2022/koobiq-components-tree.mjs +10 -9
  58. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  59. package/filter-bar/filter-bar.d.ts +7 -1
  60. package/filter-bar/filter-bar.types.d.ts +5 -0
  61. package/filter-bar/pipes/pipe-multi-select.d.ts +5 -1
  62. package/filter-bar/pipes/pipe-multi-tree-select.d.ts +5 -1
  63. package/icon/_icon-button-theme.scss +67 -85
  64. package/list/_list-theme.scss +24 -2
  65. package/list/list-tokens.scss +5 -0
  66. package/package.json +6 -6
  67. package/schematics/ng-add/index.js +5 -5
  68. package/select/select.component.d.ts +8 -1
  69. package/tree/_tree-theme.scss +30 -7
  70. package/tree/tree-option.scss +5 -2
  71. package/tree/tree-tokens.scss +5 -0
  72. package/tree-select/tree-select.component.d.ts +8 -1
@@ -15,6 +15,11 @@ export declare class KbqFilterBar {
15
15
  filters: KbqFilters;
16
16
  /** @docs-private */
17
17
  filterReset: KbqFilterReset;
18
+ /**
19
+ * This is special logic that unselect all items when all selected because "all selected = nothing selected".
20
+ * Default is true
21
+ * */
22
+ selectedAllEqualsSelectedNothing: boolean;
18
23
  /** Filter that is currently selected */
19
24
  get filter(): KbqFilter | null;
20
25
  set filter(value: KbqFilter | null);
@@ -67,5 +72,6 @@ export declare class KbqFilterBar {
67
72
  private updateLocaleParams;
68
73
  private initDefaultParams;
69
74
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterBar, never>;
70
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilterBar, "kbq-filter-bar, [kbq-filter-bar]", never, { "filter": { "alias": "filter"; "required": false; }; "pipeTemplates": { "alias": "pipeTemplates"; "required": false; }; }, { "filterChange": "filterChange"; "onChangePipe": "onChangePipe"; "onRemovePipe": "onRemovePipe"; "onClosePipe": "onClosePipe"; }, ["filters", "filterReset"], ["kbq-filters", "*", "kbq-pipe-add", "kbq-filter-reset", "kbq-filter-search, [kbq-filter-search]", "kbq-filter-refresher, [kbq-filter-refresher]"], true, never>;
75
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilterBar, "kbq-filter-bar, [kbq-filter-bar]", never, { "selectedAllEqualsSelectedNothing": { "alias": "selectedAllEqualsSelectedNothing"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "pipeTemplates": { "alias": "pipeTemplates"; "required": false; }; }, { "filterChange": "filterChange"; "onChangePipe": "onChangePipe"; "onRemovePipe": "onRemovePipe"; "onClosePipe": "onClosePipe"; }, ["filters", "filterReset"], ["kbq-filters", "*", "kbq-pipe-add", "kbq-filter-reset", "kbq-filter-search, [kbq-filter-search]", "kbq-filter-refresher, [kbq-filter-refresher]"], true, never>;
76
+ static ngAcceptInputType_selectedAllEqualsSelectedNothing: unknown;
71
77
  }
@@ -88,6 +88,11 @@ export interface KbqPipe {
88
88
  value: unknown | null;
89
89
  search?: boolean;
90
90
  selectAll?: boolean;
91
+ /**
92
+ * This is special logic that unselect all items when all selected because "all selected = nothing selected".
93
+ * Default is true
94
+ * */
95
+ selectedAllEqualsSelectedNothing?: boolean;
91
96
  /** @deprecated use cleanable = false and removable = false instead */
92
97
  required?: boolean;
93
98
  cleanable: boolean;
@@ -25,6 +25,7 @@ export declare class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectVa
25
25
  get allVisibleOptionsSelected(): boolean;
26
26
  /** true if all options selected */
27
27
  get allOptionsSelected(): boolean;
28
+ get selectedAllEqualsSelectedNothing(): boolean;
28
29
  private get visibleOptions();
29
30
  private selectionAllInProgress;
30
31
  /** @docs-private */
@@ -38,9 +39,12 @@ export declare class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectVa
38
39
  /** @docs-private */
39
40
  toggleSelectionAllByEnterKey(): void;
40
41
  /** @docs-private */
41
- toggleSelectionAll(): void;
42
+ toggleSelectionAll(emitEvent?: boolean): void;
43
+ private emitChangePipeEvent;
42
44
  /** Comparator of selected options */
43
45
  compareByValue: (o1: any, o2: any) => boolean;
46
+ /** handler for select all options in select */
47
+ selectAllHandler: (event: KeyboardEvent) => void;
44
48
  onClose(): void;
45
49
  /** opens select */
46
50
  open(): void;
@@ -28,6 +28,7 @@ export declare class KbqPipeMultiTreeSelectComponent extends KbqBasePipe<KbqSele
28
28
  get numberOfSelectedLeaves(): number;
29
29
  /** true if all options selected */
30
30
  get allOptionsSelected(): boolean;
31
+ get selectedAllEqualsSelectedNothing(): boolean;
31
32
  /** true if all visible options selected */
32
33
  get allVisibleOptionsSelected(): boolean;
33
34
  constructor();
@@ -38,13 +39,16 @@ export declare class KbqPipeMultiTreeSelectComponent extends KbqBasePipe<KbqSele
38
39
  value: any;
39
40
  }): void;
40
41
  searchKeydownHandler(): void;
41
- toggleSelectAllNode(): void;
42
+ toggleSelectAllNode(emitEvent?: boolean): void;
42
43
  /** updates values for selection and value template */
43
44
  updateTemplates: (templates: KbqPipeTemplate[] | null) => void;
44
45
  /** opens select */
45
46
  open(): void;
46
47
  onOpen(): void;
47
48
  onClose(): void;
49
+ /** handler for select all options in select */
50
+ selectAllHandler: (event: KeyboardEvent) => void;
51
+ private emitChangePipeEvent;
48
52
  private toggleParents;
49
53
  private transformer;
50
54
  private getLevel;
@@ -1,110 +1,92 @@
1
+ @use 'sass:map';
2
+
3
+ @mixin _kbq-icon-button-color($map) {
4
+ color: map.get($map, default);
5
+
6
+ &:hover {
7
+ color: map.get($map, hover);
8
+ }
9
+
10
+ &:active,
11
+ &.kbq-active {
12
+ color: map.get($map, active);
13
+ }
14
+
15
+ &.kbq-disabled {
16
+ color: map.get($map, disabled);
17
+ }
18
+ }
19
+
1
20
  @mixin kbq-icon-button-theme() {
2
21
  .kbq-icon-button {
3
22
  &:focus {
4
23
  outline: none;
5
24
  }
6
25
 
7
- // FIXME: move to unified mixin
8
26
  &.kbq-theme {
9
- color: var(--kbq-icon-button-theme-default);
10
-
11
- &:active,
12
- &.kbq-active {
13
- color: var(--kbq-icon-button-theme-states-active);
14
- }
15
-
16
- &:not(.kbq-disabled):hover {
17
- color: var(--kbq-icon-button-theme-states-hover);
18
- }
19
-
20
- &.kbq-disabled {
21
- color: var(--kbq-icon-button-theme-states-disabled);
22
- }
27
+ @include _kbq-icon-button-color(
28
+ (
29
+ default: var(--kbq-icon-button-theme-default),
30
+ hover: var(--kbq-icon-button-theme-states-hover),
31
+ active: var(--kbq-icon-button-theme-states-active),
32
+ disabled: var(--kbq-icon-button-theme-states-disabled)
33
+ )
34
+ );
23
35
  }
24
36
 
25
37
  &.kbq-contrast {
26
- color: var(--kbq-icon-button-contrast-default);
27
-
28
- &:active,
29
- &.kbq-active {
30
- color: var(--kbq-icon-button-contrast-states-active);
31
- }
32
-
33
- &:not(.kbq-disabled):hover {
34
- color: var(--kbq-icon-button-contrast-states-hover);
35
- }
36
-
37
- &.kbq-disabled {
38
- color: var(--kbq-icon-button-contrast-states-disabled);
39
- }
38
+ @include _kbq-icon-button-color(
39
+ (
40
+ default: var(--kbq-icon-button-contrast-default),
41
+ hover: var(--kbq-icon-button-contrast-states-hover),
42
+ active: var(--kbq-icon-button-contrast-states-active),
43
+ disabled: var(--kbq-icon-button-contrast-states-disabled)
44
+ )
45
+ );
40
46
  }
41
47
 
42
48
  &.kbq-contrast-fade {
43
- color: var(--kbq-icon-button-fade-contrast-default);
44
-
45
- &:active,
46
- &.kbq-active {
47
- color: var(--kbq-icon-button-fade-contrast-states-active);
48
- }
49
-
50
- &:not(.kbq-disabled):hover {
51
- color: var(--kbq-icon-button-fade-contrast-states-hover);
52
- }
53
-
54
- &.kbq-disabled {
55
- color: var(--kbq-icon-button-fade-contrast-states-disabled);
56
- }
49
+ @include _kbq-icon-button-color(
50
+ (
51
+ default: var(--kbq-icon-button-fade-contrast-default),
52
+ hover: var(--kbq-icon-button-fade-contrast-states-hover),
53
+ active: var(--kbq-icon-button-fade-contrast-states-active),
54
+ disabled: var(--kbq-icon-button-fade-contrast-states-disabled)
55
+ )
56
+ );
57
57
  }
58
58
 
59
59
  &.kbq-error {
60
- color: var(--kbq-icon-button-error-default);
61
-
62
- &:active,
63
- &.kbq-active {
64
- color: var(--kbq-icon-button-error-states-active);
65
- }
66
-
67
- &:not(.kbq-disabled):hover {
68
- color: var(--kbq-icon-button-error-states-hover);
69
- }
70
-
71
- &.kbq-disabled {
72
- color: var(--kbq-icon-button-error-states-disabled);
73
- }
60
+ @include _kbq-icon-button-color(
61
+ (
62
+ default: var(--kbq-icon-button-error-default),
63
+ hover: var(--kbq-icon-button-error-states-hover),
64
+ active: var(--kbq-icon-button-error-states-active),
65
+ disabled: var(--kbq-icon-button-error-states-disabled)
66
+ )
67
+ );
74
68
  }
75
69
 
76
70
  &.kbq-success {
77
- color: var(--kbq-icon-button-success-default);
78
-
79
- &:active,
80
- &.kbq-active {
81
- color: var(--kbq-icon-button-success-states-active);
82
- }
83
-
84
- &:not(.kbq-disabled):hover {
85
- color: var(--kbq-icon-button-success-states-hover);
86
- }
87
-
88
- &.kbq-disabled {
89
- color: var(--kbq-icon-button-success-states-disabled);
90
- }
71
+ @include _kbq-icon-button-color(
72
+ (
73
+ default: var(--kbq-icon-button-success-default),
74
+ hover: var(--kbq-icon-button-success-states-hover),
75
+ active: var(--kbq-icon-button-success-states-active),
76
+ disabled: var(--kbq-icon-button-success-states-disabled)
77
+ )
78
+ );
91
79
  }
92
80
 
93
81
  &.kbq-warning {
94
- color: var(--kbq-icon-button-warning-default);
95
-
96
- &:active,
97
- &.kbq-active {
98
- color: var(--kbq-icon-button-warning-states-active);
99
- }
100
-
101
- &:not(.kbq-disabled):hover {
102
- color: var(--kbq-icon-button-warning-states-hover);
103
- }
104
-
105
- &.kbq-disabled {
106
- color: var(--kbq-icon-button-warning-states-disabled);
107
- }
82
+ @include _kbq-icon-button-color(
83
+ (
84
+ default: var(--kbq-icon-button-warning-default),
85
+ hover: var(--kbq-icon-button-warning-states-hover),
86
+ active: var(--kbq-icon-button-warning-states-active),
87
+ disabled: var(--kbq-icon-button-warning-states-disabled)
88
+ )
89
+ );
108
90
  }
109
91
 
110
92
  &.cdk-keyboard-focused {
@@ -28,12 +28,20 @@
28
28
  @include _kbq-list-item(states-hover);
29
29
  }
30
30
 
31
- &.kbq-selected {
31
+ &:active:not(.kbq-disabled) {
32
+ @include _kbq-list-item(states-active);
33
+ }
34
+
35
+ &.kbq-selected:not(.kbq-disabled) {
32
36
  @include _kbq-list-item(states-selected);
33
37
 
34
- &:hover:not(.kbq-disabled) {
38
+ &:hover {
35
39
  @include _kbq-list-item(states-selected-hover);
36
40
  }
41
+
42
+ &:active {
43
+ @include _kbq-list-item(states-selected-active);
44
+ }
37
45
  }
38
46
 
39
47
  &.kbq-disabled {
@@ -41,6 +49,20 @@
41
49
  }
42
50
  }
43
51
 
52
+ .kbq-list-option.kbq-list-option_multiple {
53
+ &.kbq-selected:not(.kbq-disabled) {
54
+ @include _kbq-list-item(multiple-states-selected);
55
+
56
+ &:hover {
57
+ @include _kbq-list-item(multiple-states-selected-hover);
58
+ }
59
+
60
+ &:active {
61
+ @include _kbq-list-item(multiple-states-selected-active);
62
+ }
63
+ }
64
+ }
65
+
44
66
  .kbq-list-selection.cdk-keyboard-focused {
45
67
  & .kbq-list-option.kbq-focused {
46
68
  border-color: var(--kbq-list-states-focused-focus-outline-color);
@@ -5,14 +5,19 @@
5
5
  --kbq-list-default-icon-button-color: var(--kbq-icon-contrast-fade);
6
6
  --kbq-list-default-caption-color: var(--kbq-foreground-contrast-secondary);
7
7
  --kbq-list-states-hover-container-background: var(--kbq-states-background-transparent-hover);
8
+ --kbq-list-states-active-container-background: var(--kbq-states-background-transparent-active);
8
9
  --kbq-list-states-hover-text-color: var(--kbq-foreground-contrast);
9
10
  --kbq-list-states-hover-icon-color: var(--kbq-icon-contrast);
10
11
  --kbq-list-states-hover-icon-button-color: var(--kbq-icon-contrast-fade);
11
12
  --kbq-list-states-selected-container-background: var(--kbq-background-theme-less);
13
+ --kbq-list-multiple-states-selected-container-background: var(--kbq-background-contrast-less);
12
14
  --kbq-list-states-selected-text-color: var(--kbq-foreground-contrast);
13
15
  --kbq-list-states-selected-icon-color: var(--kbq-icon-contrast);
14
16
  --kbq-list-states-selected-icon-button-color: var(--kbq-icon-contrast-fade);
15
17
  --kbq-list-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);
18
+ --kbq-list-multiple-states-selected-hover-container-background: var(--kbq-states-background-contrast-less-hover);
19
+ --kbq-list-states-selected-active-container-background: var(--kbq-states-background-theme-less-active);
20
+ --kbq-list-multiple-states-selected-active-container-background: var(--kbq-states-background-contrast-less-active);
16
21
  --kbq-list-states-selected-hover-text-color: var(--kbq-foreground-contrast);
17
22
  --kbq-list-states-selected-hover-icon-color: var(--kbq-icon-contrast);
18
23
  --kbq-list-states-selected-hover-icon-button-color: var(--kbq-icon-contrast-fade);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koobiq/components",
3
- "version": "18.30.0",
3
+ "version": "18.31.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.30.0",
28
- "@koobiq/angular-moment-adapter": "18.30.0",
29
- "@koobiq/angular-luxon-adapter": "18.30.0",
27
+ "@koobiq/cdk": "18.31.0",
28
+ "@koobiq/angular-moment-adapter": "18.31.0",
29
+ "@koobiq/angular-luxon-adapter": "18.31.0",
30
30
  "@koobiq/date-formatter": "^3.2.3",
31
- "@koobiq/icons": "^10.1.0",
31
+ "@koobiq/icons": "^10.4.0",
32
32
  "@koobiq/tokens-builder": "3.11.0",
33
- "@koobiq/design-tokens": "3.13.2",
33
+ "@koobiq/design-tokens": "3.14.0",
34
34
  "@radix-ng/primitives": "^0.23.0"
35
35
  },
36
36
  "dependencies": {
@@ -27,13 +27,13 @@ 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.30.0");
31
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/angular-luxon-adapter', "^18.30.0");
30
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/cdk', "^18.31.0");
31
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/angular-luxon-adapter', "^18.31.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
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/icons', "^10.1.0");
35
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/tokens-builder', "^3.13.2");
36
- utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/design-tokens', "^3.13.2");
34
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/icons', "^10.4.0");
35
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/tokens-builder', "^3.14.0");
36
+ utils_packageConfig.addPackageToPackageJson(tree, '@koobiq/design-tokens', "^3.14.0");
37
37
  utils_packageConfig.addPackageToPackageJson(tree, '@messageformat/core', "^3.4.0");
38
38
  utils_packageConfig.addPackageToPackageJson(tree, '@radix-ng/primitives', "^0.23.0");
39
39
  utils_packageConfig.addPackageToPackageJson(tree, 'luxon', "^3.6.1");
@@ -165,6 +165,11 @@ export declare class KbqSelect extends KbqAbstractSelect implements AfterContent
165
165
  */
166
166
  get compareWith(): (o1: any, o2: any) => boolean;
167
167
  set compareWith(fn: (o1: any, o2: any) => boolean);
168
+ /**
169
+ * Function for handling the combination Ctrl + A (select all). By default, the internal handler is used.
170
+ */
171
+ get selectAllHandler(): (event: KeyboardEvent, select: KbqSelect) => void;
172
+ set selectAllHandler(fn: (event: KeyboardEvent, select: KbqSelect) => void);
168
173
  /**
169
174
  * Width of the panel. If set to `auto`, the panel will match the trigger width.
170
175
  * If set to null or an empty string, the panel will grow to match the longest option's text.
@@ -339,10 +344,12 @@ export declare class KbqSelect extends KbqAbstractSelect implements AfterContent
339
344
  private getOverlayWidth;
340
345
  /** Comparison function to specify which option is displayed. Defaults to object equality. */
341
346
  private _compareWith;
347
+ /** Function for handling the combination Ctrl + A (select all). By default, the internal handler is used. */
348
+ private _selectAllHandler;
342
349
  private getTotalVisibleItems;
343
350
  private buildTriggerClone;
344
351
  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; }]>;
345
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqSelect, "kbq-select", ["kbqSelect"], { "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; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "disabled": { "alias": "disabled"; "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>;
352
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqSelect, "kbq-select", ["kbqSelect"], { "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; }; "selectAllHandler": { "alias": "selectAllHandler"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "panelMinWidth": { "alias": "panelMinWidth"; "required": false; }; "value": { "alias": "value"; "required": false; }; "id": { "alias": "id"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "disabled": { "alias": "disabled"; "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>;
346
353
  static ngAcceptInputType_multiple: unknown;
347
354
  static ngAcceptInputType_panelMinWidth: unknown;
348
355
  static ngAcceptInputType_tabIndex: unknown;
@@ -33,15 +33,38 @@
33
33
  .kbq-tree-option {
34
34
  @include kbq-tree-option(default);
35
35
 
36
- &:hover:not(.kbq-disabled) {
37
- @include kbq-tree-option(states-hover);
38
- }
36
+ &:not(.kbq-disabled) {
37
+ &:hover {
38
+ @include kbq-tree-option(states-hover);
39
+ }
40
+
41
+ &:active {
42
+ background: var(--kbq-tree-states-active-container-background);
43
+ }
44
+
45
+ &.kbq-selected {
46
+ @include kbq-tree-option(states-selected);
47
+
48
+ &:hover {
49
+ @include kbq-tree-option(states-selected-hover);
50
+ }
51
+
52
+ &:active {
53
+ background: var(--kbq-tree-states-selected-active-container-background);
54
+ }
55
+ }
56
+
57
+ &.kbq-checked:not(.kbq-selected),
58
+ &.kbq-tree-option_multiple.kbq-selected {
59
+ background: var(--kbq-tree-multiple-states-selected-container-background);
39
60
 
40
- &.kbq-selected {
41
- @include kbq-tree-option(states-selected);
61
+ &:hover {
62
+ background: var(--kbq-tree-multiple-states-selected-hover-container-background);
63
+ }
42
64
 
43
- &:hover:not(.kbq-disabled) {
44
- @include kbq-tree-option(states-selected-hover);
65
+ &:active {
66
+ background: var(--kbq-tree-multiple-states-selected-active-container-background);
67
+ }
45
68
  }
46
69
  }
47
70
 
@@ -70,12 +70,15 @@
70
70
  }
71
71
  }
72
72
 
73
- &:is(.kbq-selected, .kbq-focused, .kbq-active):has(+ :is(.kbq-selected, .kbq-focused, .kbq-active)) {
73
+ &:is(.kbq-checked, .kbq-selected, .kbq-focused, .kbq-active):has(
74
+ + :is(.kbq-checked, .kbq-selected, .kbq-focused, .kbq-active)
75
+ ) {
74
76
  border-bottom-left-radius: 0;
75
77
  border-bottom-right-radius: 0;
76
78
  }
77
79
 
78
- &:is(.kbq-selected, .kbq-focused, .kbq-active) + :is(.kbq-selected, .kbq-focused, .kbq-active) {
80
+ &:is(.kbq-checked, .kbq-selected, .kbq-focused, .kbq-active)
81
+ + :is(.kbq-checked, .kbq-selected, .kbq-focused, .kbq-active) {
79
82
  border-top-left-radius: 0;
80
83
  border-top-right-radius: 0;
81
84
  }
@@ -16,6 +16,7 @@
16
16
  --kbq-tree-default-action-button-color: var(--kbq-icon-contrast-fade);
17
17
  --kbq-tree-default-caption-color: var(--kbq-foreground-contrast-secondary);
18
18
  --kbq-tree-states-hover-container-background: var(--kbq-states-background-transparent-hover);
19
+ --kbq-tree-states-active-container-background: var(--kbq-states-background-transparent-active);
19
20
  --kbq-tree-states-hover-text-color: var(--kbq-foreground-contrast);
20
21
  --kbq-tree-states-hover-icon-color: var(--kbq-icon-contrast);
21
22
  --kbq-tree-states-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);
@@ -23,12 +24,16 @@
23
24
  --kbq-tree-states-hover-caption-color: var(--kbq-foreground-contrast-secondary);
24
25
  --kbq-tree-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);
25
26
  --kbq-tree-states-selected-container-background: var(--kbq-background-theme-less);
27
+ --kbq-tree-multiple-states-selected-container-background: var(--kbq-background-contrast-less);
26
28
  --kbq-tree-states-selected-text-color: var(--kbq-foreground-contrast);
27
29
  --kbq-tree-states-selected-icon-color: var(--kbq-icon-contrast);
28
30
  --kbq-tree-states-selected-tree-toggle-color: var(--kbq-icon-contrast-fade);
29
31
  --kbq-tree-states-selected-action-button-color: var(--kbq-icon-contrast-fade);
30
32
  --kbq-tree-states-selected-caption-color: var(--kbq-foreground-contrast-secondary);
31
33
  --kbq-tree-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);
34
+ --kbq-tree-states-selected-active-container-background: var(--kbq-states-background-theme-less-active);
35
+ --kbq-tree-multiple-states-selected-hover-container-background: var(--kbq-states-background-contrast-less-hover);
36
+ --kbq-tree-multiple-states-selected-active-container-background: var(--kbq-states-background-contrast-less-active);
32
37
  --kbq-tree-states-selected-hover-text-color: var(--kbq-foreground-contrast);
33
38
  --kbq-tree-states-selected-hover-icon-color: var(--kbq-icon-contrast);
34
39
  --kbq-tree-states-selected-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);
@@ -164,6 +164,13 @@ export declare class KbqTreeSelect extends KbqAbstractSelect implements AfterCon
164
164
  get disabled(): boolean;
165
165
  set disabled(value: boolean);
166
166
  private _disabled;
167
+ /**
168
+ * Function for handling the combination Ctrl + A (select all). By default, the internal handler is used.
169
+ */
170
+ get selectAllHandler(): (event: KeyboardEvent, select: KbqTreeSelect) => void;
171
+ set selectAllHandler(fn: (event: KeyboardEvent, select: KbqTreeSelect) => void);
172
+ /** Function for handling the combination Ctrl + A (select all). By default, the internal handler is used. */
173
+ private _selectAllHandler;
167
174
  /** Whether the select is focused. */
168
175
  get focused(): boolean;
169
176
  set focused(value: boolean);
@@ -295,7 +302,7 @@ export declare class KbqTreeSelect extends KbqAbstractSelect implements AfterCon
295
302
  private scrollActiveOptionIntoView;
296
303
  private subscribeOnSearchChanges;
297
304
  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; }]>;
298
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqTreeSelect, "kbq-tree-select", ["kbqTreeSelect"], { "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; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "disabled": { "alias": "disabled"; "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-select-trigger]", "kbq-cleaner", "[kbqSelectSearch]", "[kbq-select-search-empty-result]", "kbq-tree-selection", "kbq-select-footer,[kbq-tree-select-footer]"], false, never>;
305
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqTreeSelect, "kbq-tree-select", ["kbqTreeSelect"], { "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; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "selectAllHandler": { "alias": "selectAllHandler"; "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-select-trigger]", "kbq-cleaner", "[kbqSelectSearch]", "[kbq-select-search-empty-result]", "kbq-tree-selection", "kbq-select-footer,[kbq-tree-select-footer]"], false, never>;
299
306
  static ngAcceptInputType_tabIndex: unknown;
300
307
  static ngAcceptInputType_disabled: unknown;
301
308
  }