@koobiq/components 18.14.0 → 18.16.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 (101) hide show
  1. package/LICENSE +1 -1
  2. package/autocomplete/autocomplete.component.d.ts +5 -2
  3. package/button-toggle/_button-toggle-theme.scss +0 -4
  4. package/button-toggle/button-toggle-tokens.scss +1 -4
  5. package/button-toggle/button-toggle.scss +11 -0
  6. package/core/option/_option-theme.scss +7 -5
  7. package/core/pop-up/focus-trap-strategy.d.ts +5 -0
  8. package/core/pop-up/index.d.ts +1 -0
  9. package/core/pop-up/pop-up-trigger.d.ts +1 -0
  10. package/core/select/common.d.ts +17 -0
  11. package/core/select/constants.d.ts +0 -18
  12. package/datepicker/calendar-header.component.d.ts +2 -8
  13. package/esm2022/autocomplete/autocomplete.component.mjs +18 -6
  14. package/esm2022/button-toggle/button-toggle.component.mjs +2 -2
  15. package/esm2022/core/option/option.mjs +2 -2
  16. package/esm2022/core/pop-up/focus-trap-strategy.mjs +6 -0
  17. package/esm2022/core/pop-up/index.mjs +2 -1
  18. package/esm2022/core/pop-up/pop-up-trigger.mjs +5 -1
  19. package/esm2022/core/select/common.mjs +63 -1
  20. package/esm2022/core/select/constants.mjs +1 -19
  21. package/esm2022/core/version.mjs +2 -2
  22. package/esm2022/datepicker/calendar-header.component.mjs +5 -8
  23. package/esm2022/form-field/form-field.mjs +10 -4
  24. package/esm2022/form-field/validate.directive.mjs +3 -2
  25. package/esm2022/list/list-selection.component.mjs +17 -9
  26. package/esm2022/list/list.component.mjs +2 -2
  27. package/esm2022/markdown/markdown.service.mjs +12 -3
  28. package/esm2022/modal/modal.component.mjs +4 -3
  29. package/esm2022/popover/popover.component.mjs +13 -4
  30. package/esm2022/popover/popover.module.mjs +7 -4
  31. package/esm2022/radio/radio.component.mjs +2 -2
  32. package/esm2022/select/select.component.mjs +11 -82
  33. package/esm2022/select/select.module.mjs +8 -4
  34. package/esm2022/tabs/tab-header.component.mjs +2 -2
  35. package/esm2022/tabs/tab-nav-bar.mjs +3 -3
  36. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  37. package/esm2022/timezone/timezone-select.component.mjs +4 -3
  38. package/esm2022/timezone/timezone.module.mjs +8 -4
  39. package/esm2022/tooltip/tooltip.component.mjs +2 -2
  40. package/esm2022/tree/toggle.mjs +2 -2
  41. package/esm2022/tree/tree-selection.component.mjs +13 -4
  42. package/esm2022/tree/tree.mjs +2 -2
  43. package/esm2022/tree-select/tree-select.component.mjs +27 -60
  44. package/esm2022/tree-select/tree-select.module.mjs +8 -4
  45. package/fesm2022/koobiq-components-autocomplete.mjs +20 -10
  46. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  47. package/fesm2022/koobiq-components-button-toggle.mjs +2 -2
  48. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  49. package/fesm2022/koobiq-components-core.mjs +90 -37
  50. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  51. package/fesm2022/koobiq-components-datepicker.mjs +4 -7
  52. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  53. package/fesm2022/koobiq-components-form-field.mjs +11 -4
  54. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  55. package/fesm2022/koobiq-components-list.mjs +19 -12
  56. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  57. package/fesm2022/koobiq-components-markdown.mjs +11 -2
  58. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  59. package/fesm2022/koobiq-components-modal.mjs +3 -2
  60. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  61. package/fesm2022/koobiq-components-popover.mjs +18 -8
  62. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  63. package/fesm2022/koobiq-components-radio.mjs +2 -2
  64. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  65. package/fesm2022/koobiq-components-select.mjs +17 -84
  66. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  67. package/fesm2022/koobiq-components-tabs.mjs +4 -4
  68. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  69. package/fesm2022/koobiq-components-timezone.mjs +12 -7
  70. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  71. package/fesm2022/koobiq-components-tooltip.mjs +1 -1
  72. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  73. package/fesm2022/koobiq-components-tree-select.mjs +32 -61
  74. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  75. package/fesm2022/koobiq-components-tree.mjs +15 -6
  76. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  77. package/form-field/_form-field-theme.scss +23 -10
  78. package/form-field/form-field.d.ts +3 -1
  79. package/form-field/validate.directive.d.ts +1 -1
  80. package/link/_link-theme.scss +6 -4
  81. package/list/_list-theme.scss +6 -4
  82. package/list/list-selection.component.d.ts +12 -8
  83. package/markdown/markdown.service.d.ts +11 -2
  84. package/modal/_modal-theme.scss +1 -1
  85. package/modal/modal.scss +1 -1
  86. package/package.json +6 -6
  87. package/popover/popover.component.d.ts +4 -0
  88. package/prebuilt-themes/dark-theme.css +1 -1
  89. package/prebuilt-themes/light-theme.css +1 -1
  90. package/prebuilt-themes/theme.css +1 -1
  91. package/radio/_radio-theme.scss +12 -2
  92. package/schematics/ng-add/index.js +5 -18
  93. package/select/select.component.d.ts +3 -16
  94. package/select/select.module.d.ts +2 -1
  95. package/tabs/_tabs-common.scss +28 -0
  96. package/tabs/tab-header.scss +0 -28
  97. package/timezone/timezone.module.d.ts +2 -1
  98. package/tree/_tree-theme.scss +10 -7
  99. package/tree/tree-selection.component.d.ts +6 -2
  100. package/tree-select/tree-select.component.d.ts +5 -16
  101. package/tree-select/tree-select.module.d.ts +2 -1
@@ -40,20 +40,33 @@
40
40
  }
41
41
  }
42
42
 
43
- &.cdk-focused {
44
- @include kbq-form-field-state(states-focused);
45
-
46
- & .kbq-form-field__container {
47
- box-shadow: 0 0 0.1px 1px var(--kbq-form-field-states-focused-focus-outline);
48
- }
49
- }
50
-
51
43
  &.kbq-form-field_invalid,
52
44
  &.ng-invalid {
53
45
  @include kbq-form-field-state(states-error);
46
+ }
47
+
48
+ &.kbq-form-field-type-input,
49
+ &.kbq-form-field-type-textarea,
50
+ &.kbq-form-field-type-timepicker,
51
+ &.kbq-form-field-type-datepicker,
52
+ &.kbq-form-field-type-input-password,
53
+ &.kbq-form-field-type-tag-list,
54
+ &.kbq-form-field-type-select.cdk-keyboard-focused {
55
+ &.cdk-focused {
56
+ @include kbq-form-field-state(states-focused);
57
+
58
+ & .kbq-form-field__container {
59
+ box-shadow: 0 0 0.1px 1px var(--kbq-form-field-states-focused-focus-outline);
60
+ }
61
+ }
62
+
63
+ &.kbq-form-field_invalid,
64
+ &.ng-invalid {
65
+ @include kbq-form-field-state(states-error);
54
66
 
55
- &.cdk-focused .kbq-form-field__container {
56
- box-shadow: 0 0 0.1px 1px var(--kbq-form-field-states-error-focused-focus-outline);
67
+ & .kbq-form-field__container {
68
+ box-shadow: 0 0 0.1px 1px var(--kbq-form-field-states-error-focused-focus-outline);
69
+ }
57
70
  }
58
71
  }
59
72
 
@@ -1,4 +1,4 @@
1
- import { FocusMonitor } from '@angular/cdk/a11y';
1
+ import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';
2
2
  import { AfterContentChecked, AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy, QueryList } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
4
  import { CanColor, CanColorCtor } from '@koobiq/components/core';
@@ -35,6 +35,8 @@ export declare class KbqFormField extends KbqFormFieldMixinBase implements After
35
35
  hovered: boolean;
36
36
  canCleanerClearByEsc: boolean;
37
37
  private readonly destroyRef;
38
+ get focusOrigin(): FocusOrigin;
39
+ private _focusOrigin;
38
40
  get hasFocus(): boolean;
39
41
  get hasHint(): boolean;
40
42
  get hasSuffix(): boolean;
@@ -49,5 +49,5 @@ export declare class KbqValidateDirective implements AfterContentInit {
49
49
  setMosaicValidationForModelControl(): void;
50
50
  setMosaicValidationForFormControl(): void;
51
51
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqValidateDirective, [null, { optional: true; self: true; }, { optional: true; self: true; }, { optional: true; }, { optional: true; }, { optional: true; }, null]>;
52
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqValidateDirective, " input[kbqInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", ["KbqValidate"], {}, {}, never, never, false, never>;
52
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqValidateDirective, " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", ["KbqValidate"], {}, {}, never, never, false, never>;
53
53
  }
@@ -101,10 +101,12 @@
101
101
 
102
102
  color: var(--kbq-#{$base-path}-text);
103
103
 
104
- &.kbq-text-only,
105
- &.kbq-text-with-icon .kbq-link__text,
106
- &.kbq-text-with-dot .kbq-link__text {
107
- border-bottom-color: var(--kbq-#{$base-path}-border-bottom);
104
+ &:not(.kbq-link_pseudo) {
105
+ &.kbq-text-only,
106
+ &.kbq-text-with-icon .kbq-link__text,
107
+ &.kbq-text-with-dot .kbq-link__text {
108
+ border-bottom-color: var(--kbq-#{$base-path}-border-bottom);
109
+ }
108
110
  }
109
111
 
110
112
  & .kbq-icon {
@@ -28,10 +28,6 @@
28
28
  @include kbq-list-item(states-hover);
29
29
  }
30
30
 
31
- &.kbq-focused {
32
- border-color: var(--kbq-list-states-focused-focus-outline-color);
33
- }
34
-
35
31
  &.kbq-selected {
36
32
  @include kbq-list-item(states-selected);
37
33
 
@@ -54,6 +50,12 @@
54
50
  border-top-right-radius: 0;
55
51
  }
56
52
  }
53
+
54
+ .kbq-list-selection.cdk-keyboard-focused {
55
+ & .kbq-list-option.kbq-focused {
56
+ border-color: var(--kbq-list-states-focused-focus-outline-color);
57
+ }
58
+ }
57
59
  }
58
60
 
59
61
  @mixin kbq-list-typography() {
@@ -1,6 +1,7 @@
1
+ import { FocusMonitor } from '@angular/cdk/a11y';
1
2
  import { Clipboard } from '@angular/cdk/clipboard';
2
3
  import { SelectionModel } from '@angular/cdk/collections';
3
- import { AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, QueryList } from '@angular/core';
4
+ import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, QueryList } from '@angular/core';
4
5
  import { ControlValueAccessor } from '@angular/forms';
5
6
  import { FocusKeyManager, IFocusableOption } from '@koobiq/cdk/a11y';
6
7
  import { CanDisable, CanDisableCtor, HasTabIndex, HasTabIndexCtor, KbqOptgroup, KbqOptionActionComponent, KbqTitleTextRef, MultipleMode } from '@koobiq/components/core';
@@ -34,9 +35,10 @@ export declare class KbqListSelectionBase {
34
35
  }
35
36
  /** @docs-private */
36
37
  export declare const KbqListSelectionMixinBase: CanDisableCtor & HasTabIndexCtor & typeof KbqListSelectionBase;
37
- export declare class KbqListSelection extends KbqListSelectionMixinBase implements CanDisable, HasTabIndex, AfterContentInit, ControlValueAccessor {
38
+ export declare class KbqListSelection extends KbqListSelectionMixinBase implements CanDisable, HasTabIndex, AfterContentInit, AfterViewInit, OnDestroy, ControlValueAccessor {
38
39
  private changeDetectorRef;
39
40
  private clipboard;
41
+ protected readonly focusMonitor: FocusMonitor;
40
42
  keyManager: FocusKeyManager<KbqListOption>;
41
43
  options: QueryList<KbqListOption>;
42
44
  readonly onSelectAll: EventEmitter<KbqListSelectAllEvent<KbqListOption>>;
@@ -53,6 +55,12 @@ export declare class KbqListSelection extends KbqListSelectionMixinBase implemen
53
55
  get tabIndex(): any;
54
56
  set tabIndex(value: any);
55
57
  private _tabIndex;
58
+ /**
59
+ * Function used for comparing an option against the selected value when determining which
60
+ * options should appear as selected. The first argument is the value of an options. The second
61
+ * one is a value from the selected value. A boolean must be returned.
62
+ */
63
+ compareWith: (o1: any, o2: any) => boolean;
56
64
  userTabIndex: number | null;
57
65
  get showCheckbox(): boolean;
58
66
  readonly selectionChange: EventEmitter<KbqListSelectionChange>;
@@ -64,13 +72,9 @@ export declare class KbqListSelection extends KbqListSelectionMixinBase implemen
64
72
  private optionFocusSubscription;
65
73
  private optionBlurSubscription;
66
74
  constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, multiple: MultipleMode, clipboard: Clipboard);
67
- /**
68
- * Function used for comparing an option against the selected value when determining which
69
- * options should appear as selected. The first argument is the value of an options. The second
70
- * one is a value from the selected value. A boolean must be returned.
71
- */
72
- compareWith: (o1: any, o2: any) => boolean;
73
75
  ngAfterContentInit(): void;
76
+ ngAfterViewInit(): void;
77
+ ngOnDestroy(): void;
74
78
  focus(): void;
75
79
  blur(): void;
76
80
  selectAll(): void;
@@ -1,8 +1,17 @@
1
1
  import { MarkedOptions } from 'marked';
2
2
  import * as i0 from "@angular/core";
3
- /** Service which allows to convert `Markdown` into `HTML` */
3
+ /**
4
+ * Service for converting Markdown into HTML.
5
+ */
4
6
  export declare class KbqMarkdownService {
5
- /** Parses `Markdown` into `HTML` */
7
+ /**
8
+ * Converts a given Markdown string into HTML.
9
+ * NOTE! Method does not sanitize the output HTML string.
10
+ *
11
+ * @param markdown - The Markdown string to be converted.
12
+ * @param options - Optional MarkedOptions to customize the parsing behavior.
13
+ * @returns The transformed HTML string.
14
+ */
6
15
  parseToHtml(markdown: string, options?: MarkedOptions): string;
7
16
  private transform;
8
17
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqMarkdownService, never>;
@@ -1,7 +1,7 @@
1
1
  @use '../core/styles/common/tokens' as *;
2
2
 
3
3
  @mixin kbq-modal-theme() {
4
- .kbq-modal {
4
+ .kbq-modal-container {
5
5
  background: var(--kbq-modal-container-background);
6
6
  box-shadow: var(--kbq-modal-container-shadow);
7
7
 
package/modal/modal.scss CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  @use './modal-theme' as *;
6
6
 
7
- .kbq-modal {
7
+ .kbq-modal-container {
8
8
  box-sizing: border-box;
9
9
 
10
10
  position: relative;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koobiq/components",
3
- "version": "18.14.0",
3
+ "version": "18.16.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.14.0",
28
- "@koobiq/angular-moment-adapter": "18.14.0",
29
- "@koobiq/angular-luxon-adapter": "18.14.0",
27
+ "@koobiq/cdk": "18.16.0",
28
+ "@koobiq/angular-moment-adapter": "18.16.0",
29
+ "@koobiq/angular-luxon-adapter": "18.16.0",
30
30
  "@koobiq/date-formatter": "^3.1.4",
31
31
  "@koobiq/icons": "^9.2.0",
32
- "@koobiq/tokens-builder": "3.10.0",
33
- "@koobiq/design-tokens": "3.10.0",
32
+ "@koobiq/tokens-builder": "3.11.0",
33
+ "@koobiq/design-tokens": "3.11.2",
34
34
  "@radix-ng/primitives": "^0.14.0"
35
35
  },
36
36
  "dependencies": {
@@ -1,3 +1,4 @@
1
+ import { CdkTrapFocus } from '@angular/cdk/a11y';
1
2
  import { CdkScrollable, Overlay, OverlayConfig, ScrollStrategy } from '@angular/cdk/overlay';
2
3
  import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, InjectionToken, TemplateRef, Type } from '@angular/core';
3
4
  import { KbqComponentColors, KbqPopUp, KbqPopUpTrigger, PopUpPlacements, PopUpSizes } from '@koobiq/components/core';
@@ -6,9 +7,11 @@ export declare class KbqPopoverComponent extends KbqPopUp implements AfterViewIn
6
7
  prefix: string;
7
8
  header: string | TemplateRef<any>;
8
9
  footer: string | TemplateRef<any>;
10
+ trigger: KbqPopoverTrigger;
9
11
  isTrapFocus: boolean;
10
12
  hasCloseButton: boolean;
11
13
  popoverContent: ElementRef<HTMLDivElement>;
14
+ cdkTrapFocus: CdkTrapFocus;
12
15
  private debounceTime;
13
16
  private readonly destroyRef;
14
17
  isContentTopOverflow: boolean;
@@ -18,6 +21,7 @@ export declare class KbqPopoverComponent extends KbqPopUp implements AfterViewIn
18
21
  checkContentOverflow(contentElement: HTMLElement): void;
19
22
  updateClassMap(placement: string, customClass: string, size: PopUpSizes): void;
20
23
  updateTrapFocus(isTrapFocus: boolean): void;
24
+ onEscape(): void;
21
25
  protected readonly componentColors: typeof KbqComponentColors;
22
26
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqPopoverComponent, never>;
23
27
  static ɵcmp: i0.ɵɵComponentDeclaration<KbqPopoverComponent, "kbq-popover-component", never, {}, {}, never, never, false, never>;