@koobiq/components 19.4.1 → 19.6.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.
- package/LICENSE +1 -1
- package/accordion/accordion-content.d.ts +1 -1
- package/accordion/accordion-content.directive.d.ts +22 -7
- package/accordion/accordion-header.directive.d.ts +2 -2
- package/accordion/accordion-item.d.ts +74 -3
- package/accordion/accordion-trigger.component.d.ts +15 -2
- package/accordion/accordion-trigger.directive.d.ts +13 -5
- package/accordion/accordion.component.d.ts +67 -6
- package/accordion/accordion.component.scss +9 -27
- package/accordion/public-api.d.ts +0 -2
- package/actions-panel/actions-panel-container.scss +6 -0
- package/actions-panel/actions-panel-tokens.scss +4 -1
- package/autocomplete/autocomplete.component.d.ts +6 -1
- package/autocomplete/autocomplete.module.d.ts +1 -1
- package/autocomplete/autocomplete.scss +14 -3
- package/badge/badge-tokens.scss +3 -3
- package/button/button-group.d.ts +45 -0
- package/button/button-group.scss +17 -0
- package/button/button.component.d.ts +3 -0
- package/button/button.module.d.ts +2 -1
- package/button/public-api.d.ts +1 -0
- package/button-toggle/button-toggle-tokens.scss +1 -1
- package/checkbox/checkbox.d.ts +5 -4
- package/checkbox/checkbox.scss +5 -5
- package/clamped-text/clamped-list.d.ts +41 -0
- package/clamped-text/clamped-text.d.ts +10 -6
- package/clamped-text/constants.d.ts +21 -1
- package/clamped-text/index.d.ts +1 -0
- package/clamped-text/module.d.ts +2 -1
- package/code-block/code-block-tokens.scss +35 -16
- package/code-block/code-block.d.ts +17 -5
- package/code-block/code-block.module.d.ts +1 -1
- package/code-block/code-block.scss +1 -0
- package/code-block/types.d.ts +9 -0
- package/core/common-behaviors/flex.d.ts +4 -0
- package/core/common-behaviors/index.d.ts +1 -0
- package/core/error/error-state-matcher.d.ts +10 -0
- package/core/form-field/form-field-ref.d.ts +3 -1
- package/core/forms/_forms.scss +10 -3
- package/core/locales/en-US.d.ts +2 -0
- package/core/locales/es-LA.d.ts +2 -0
- package/core/locales/locale-service.d.ts +10 -0
- package/core/locales/pt-BR.d.ts +2 -0
- package/core/locales/ru-RU.d.ts +2 -0
- package/core/locales/tk-TM.d.ts +2 -0
- package/core/locales/types.d.ts +2 -0
- package/core/option/_option-action-theme.scss +1 -0
- package/core/option/_option-theme.scss +4 -17
- package/core/option/action-container.scss +4 -6
- package/core/option/option.d.ts +5 -1
- package/core/option/option.scss +5 -0
- package/core/pop-up/pop-up-trigger.d.ts +11 -2
- package/core/select/common.d.ts +4 -4
- package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +2 -2
- package/core/styles/common/_groups-mixins.scss +79 -0
- package/core/styles/common/_groups.scss +4 -34
- package/core/styles/common/_overlay.scss +5 -1
- package/core/styles/common/_select.scss +4 -0
- package/core/styles/theming/scrollbar-tokens.scss +6 -6
- package/core/styles/visual/_layout.scss +0 -2
- package/core/utils/utils.d.ts +2 -0
- package/datepicker/datepicker-input.directive.d.ts +1 -0
- package/dropdown/dropdown-trigger.directive.d.ts +5 -0
- package/dropdown/dropdown.component.d.ts +2 -1
- package/ellipsis-center/ellipsis-center.directive.d.ts +0 -1
- package/fesm2022/koobiq-components-accordion.mjs +301 -237
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +12 -12
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +16 -16
- package/fesm2022/koobiq-components-app-switcher.mjs +25 -25
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +39 -23
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +14 -14
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +25 -25
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +12 -12
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +146 -24
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +18 -20
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +134 -47
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +54 -22
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +28 -28
- package/fesm2022/koobiq-components-core.mjs +313 -257
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +40 -64
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +7 -7
- package/fesm2022/koobiq-components-dl.mjs +13 -13
- package/fesm2022/koobiq-components-dropdown.mjs +48 -23
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
- package/fesm2022/koobiq-components-ellipsis-center.mjs +8 -9
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +19 -19
- package/fesm2022/koobiq-components-file-upload.mjs +39 -39
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +118 -106
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +77 -65
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +32 -28
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +115 -65
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +28 -26
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +23 -17
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +19 -19
- package/fesm2022/koobiq-components-loader-overlay.mjs +28 -19
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +54 -22
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +96 -63
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar-ic.mjs +34 -34
- package/fesm2022/koobiq-components-navbar.mjs +53 -46
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +16 -16
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +29 -17
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +52 -23
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
- package/fesm2022/koobiq-components-progress-spinner.mjs +14 -14
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +10 -10
- package/fesm2022/koobiq-components-resizer.mjs +10 -10
- package/fesm2022/koobiq-components-risk-level.mjs +7 -7
- package/fesm2022/koobiq-components-scrollbar.mjs +12 -12
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +17 -8
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +342 -58
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +13 -13
- package/fesm2022/koobiq-components-sidepanel.mjs +50 -41
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +62 -13
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +9 -9
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +16 -16
- package/fesm2022/koobiq-components-table.mjs +10 -10
- package/fesm2022/koobiq-components-tabs.mjs +54 -54
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +44 -47
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +10 -9
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +25 -25
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +10 -10
- package/fesm2022/koobiq-components-timezone.mjs +26 -26
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +8 -9
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +16 -16
- package/fesm2022/koobiq-components-toggle.mjs +12 -9
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +95 -52
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +15 -15
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +15 -12
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +64 -52
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +28 -28
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/filter-bar/filter-search.d.ts +10 -1
- package/filter-bar/pipes/pipe-date.scss +5 -16
- package/form-field/form-field.d.ts +25 -1
- package/form-field/form-field.scss +26 -2
- package/icon/icon-button.component.d.ts +3 -0
- package/icon/icon-button.scss +4 -0
- package/inline-edit/inline-edit-tokens.scss +3 -3
- package/inline-edit/inline-edit.d.ts +31 -11
- package/inline-edit/inline-edit.scss +28 -30
- package/input/input-password.d.ts +1 -0
- package/input/input.d.ts +1 -0
- package/link/_link-theme.scss +18 -8
- package/link/link-tokens.scss +9 -6
- package/link/link.component.d.ts +9 -5
- package/loader-overlay/_loader-overlay-theme.scss +12 -0
- package/loader-overlay/loader-overlay-tokens.scss +1 -0
- package/loader-overlay/loader-overlay.component.d.ts +7 -1
- package/markdown/_markdown-theme.scss +3 -31
- package/markdown/markdown-tokens.scss +0 -11
- package/markdown/markdown.component.d.ts +12 -7
- package/markdown/markdown.scss +0 -11
- package/modal/modal-ref.class.d.ts +1 -0
- package/modal/modal.component.d.ts +14 -8
- package/modal/modal.scss +1 -0
- package/modal/modal.type.d.ts +5 -0
- package/navbar/navbar-item.component.d.ts +3 -1
- package/navbar/navbar.scss +3 -0
- package/overflow-items/overflow-items.d.ts +8 -2
- package/package.json +4 -5
- package/popover/popover.component.d.ts +15 -2
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/progress-spinner/progress-spinner.scss +1 -0
- package/schematics/ng-add/index.js +4 -6
- package/scrollbar/scrollbar-tokens.scss +7 -7
- package/search-expandable/search-expandable.d.ts +6 -2
- package/select/public-api.d.ts +1 -0
- package/select/select-common.d.ts +30 -0
- package/select/select.component.d.ts +193 -29
- package/select/select.module.d.ts +3 -2
- package/sidepanel/_sidepanel-theme.scss +1 -7
- package/sidepanel/sidepanel-config.d.ts +10 -2
- package/sidepanel/sidepanel.service.d.ts +0 -1
- package/skeleton/skeleton.d.ts +12 -3
- package/skeleton/skeleton.scss +22 -7
- package/split-button/_split-button-theme.scss +2 -1
- package/tabs/_tabs-common.scss +2 -1
- package/tags/tag-input.d.ts +4 -3
- package/tags/tag-list.component.d.ts +1 -0
- package/tags/tag-tokens.scss +4 -4
- package/textarea/textarea.component.d.ts +1 -0
- package/title/title.directive.d.ts +0 -1
- package/toggle/toggle.component.d.ts +4 -3
- package/tooltip/tooltip-tokens.scss +4 -4
- package/tooltip/tooltip.component.d.ts +22 -2
- package/top-bar/top-bar.scss +3 -0
- package/tree/_tree-theme.scss +0 -19
- package/tree/tree-option.component.d.ts +9 -3
- package/tree/tree-option.scss +9 -5
- package/tree/tree-selection.component.d.ts +2 -0
- package/tree-select/tree-select.component.d.ts +1 -0
- package/accordion/accordion-item.directive.d.ts +0 -72
- package/accordion/accordion-root.directive.d.ts +0 -64
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { CdkConnectedOverlay,
|
|
2
|
-
import { TemplateRef } from '@angular/core';
|
|
1
|
+
import { CdkConnectedOverlay, ScrollStrategy } from '@angular/cdk/overlay';
|
|
2
|
+
import { ElementRef, TemplateRef } from '@angular/core';
|
|
3
3
|
import { KbqComponentColors, PopUpPlacements } from '@koobiq/components/core';
|
|
4
4
|
import { KbqDropdownTrigger } from '@koobiq/components/dropdown';
|
|
5
5
|
import { KbqFormField, KbqLabel } from '@koobiq/components/form-field';
|
|
6
6
|
import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/cdk/a11y";
|
|
9
|
+
export type KbqInlineEditMode = 'view' | 'edit';
|
|
8
10
|
/** @docs-private */
|
|
9
11
|
export declare class KbqFocusRegionItem {
|
|
10
12
|
readonly tabOut: import("@angular/core").OutputEmitterRef<KeyboardEvent>;
|
|
@@ -35,10 +37,10 @@ export declare class KbqInlineEditMenu {
|
|
|
35
37
|
* Edit mode opens in a positioned overlay that matches the view mode width or can be customized.
|
|
36
38
|
*/
|
|
37
39
|
export declare class KbqInlineEdit {
|
|
38
|
-
private readonly elementRef;
|
|
39
|
-
private readonly focusMonitor;
|
|
40
40
|
private readonly overlay;
|
|
41
41
|
private readonly document;
|
|
42
|
+
private readonly resizeObserver;
|
|
43
|
+
protected readonly elementRef: ElementRef<HTMLElement>;
|
|
42
44
|
/**
|
|
43
45
|
* Whether to show save/cancel action buttons in edit mode.
|
|
44
46
|
* @default false
|
|
@@ -64,16 +66,22 @@ export declare class KbqInlineEdit {
|
|
|
64
66
|
readonly getValueHandler: import("@angular/core").InputSignal<(() => unknown) | undefined>;
|
|
65
67
|
/** Handler function to update the value */
|
|
66
68
|
readonly setValueHandler: import("@angular/core").InputSignal<((value: any) => void) | undefined>;
|
|
69
|
+
/** Customizable function that checks if saving on enter available. */
|
|
70
|
+
readonly canSaveOnEnter: import("@angular/core").InputSignal<(event: KeyboardEvent) => boolean>;
|
|
67
71
|
/**
|
|
68
|
-
*
|
|
72
|
+
* CSS selectors for elements in view mode that should handle clicks instead of opening edit mode.
|
|
73
|
+
* Override to replace or extend the default list.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* `<kbq-inline-edit [interactiveSelectors]="['a', 'kbq-tag', 'button']">`
|
|
69
77
|
*/
|
|
70
|
-
readonly
|
|
78
|
+
readonly interactiveSelectors: import("@angular/core").InputSignal<string[]>;
|
|
71
79
|
/** Emitted when the inline edit is saved successfully. */
|
|
72
80
|
protected readonly saved: import("@angular/core").OutputEmitterRef<void>;
|
|
73
81
|
/** Emitted when the inline edit is canceled and changes are discarded. */
|
|
74
82
|
protected readonly canceled: import("@angular/core").OutputEmitterRef<void>;
|
|
75
83
|
/** Emitted when mode switched to edit/view */
|
|
76
|
-
protected readonly modeChange: import("@angular/core").OutputEmitterRef<
|
|
84
|
+
protected readonly modeChange: import("@angular/core").OutputEmitterRef<KbqInlineEditMode>;
|
|
77
85
|
/** @docs-private */
|
|
78
86
|
protected readonly menu: import("@angular/core").Signal<KbqInlineEditMenu | undefined>;
|
|
79
87
|
/** @docs-private */
|
|
@@ -81,21 +89,25 @@ export declare class KbqInlineEdit {
|
|
|
81
89
|
/** @docs-private */
|
|
82
90
|
protected readonly formFieldRef: import("@angular/core").Signal<KbqFormField | undefined>;
|
|
83
91
|
/** @docs-private */
|
|
84
|
-
protected readonly
|
|
92
|
+
protected readonly formFieldRefList: import("@angular/core").Signal<readonly KbqFormField[]>;
|
|
93
|
+
/** @docs-private */
|
|
94
|
+
protected overlayOrigin: HTMLElement;
|
|
85
95
|
/** @docs-private */
|
|
86
96
|
protected readonly tooltipTrigger: import("@angular/core").Signal<KbqTooltipTrigger | undefined>;
|
|
87
97
|
/** @docs-private */
|
|
98
|
+
protected readonly viewContainer: import("@angular/core").Signal<ElementRef<HTMLElement>>;
|
|
99
|
+
/** @docs-private */
|
|
88
100
|
protected readonly overlayDir: import("@angular/core").Signal<CdkConnectedOverlay | undefined>;
|
|
89
101
|
/** @docs-private */
|
|
90
102
|
protected readonly regionItems: import("@angular/core").Signal<readonly KbqFocusRegionItem[]>;
|
|
91
103
|
/** @docs-private */
|
|
92
|
-
protected readonly mode: import("@angular/core").WritableSignal<
|
|
104
|
+
protected readonly mode: import("@angular/core").WritableSignal<KbqInlineEditMode>;
|
|
93
105
|
/** @docs-private */
|
|
94
106
|
protected readonly overlayWidth: import("@angular/core").WritableSignal<string | number>;
|
|
95
107
|
/** @docs-private */
|
|
96
108
|
protected readonly scrollStrategy: import("@angular/core").WritableSignal<ScrollStrategy>;
|
|
97
109
|
/** @docs-private */
|
|
98
|
-
readonly modeAsReadonly: import("@angular/core").Signal<
|
|
110
|
+
readonly modeAsReadonly: import("@angular/core").Signal<KbqInlineEditMode>;
|
|
99
111
|
/** @docs-private */
|
|
100
112
|
protected readonly className: import("@angular/core").Signal<string>;
|
|
101
113
|
/** @docs-private */
|
|
@@ -120,6 +132,13 @@ export declare class KbqInlineEdit {
|
|
|
120
132
|
protected cancel(): void;
|
|
121
133
|
/** @docs-private */
|
|
122
134
|
protected onOverlayKeydown(event: KeyboardEvent): void;
|
|
135
|
+
/**
|
|
136
|
+
* Block propagation of overlay outside click.
|
|
137
|
+
* Used to prevent reopening when target is inline edit itself.
|
|
138
|
+
* @docs-private
|
|
139
|
+
*/
|
|
140
|
+
protected onOverlayOutsideClick($event: Event): void;
|
|
141
|
+
private isInteractiveElement;
|
|
123
142
|
/**
|
|
124
143
|
* Sets up Tab key listeners on region items.
|
|
125
144
|
* Single item: Tab moves to next edit.
|
|
@@ -134,6 +153,7 @@ export declare class KbqInlineEdit {
|
|
|
134
153
|
private setOverlayWidth;
|
|
135
154
|
private openPanel;
|
|
136
155
|
private getInputNativeElement;
|
|
156
|
+
private markAllAsTouched;
|
|
137
157
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqInlineEdit, never>;
|
|
138
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KbqInlineEdit, "kbq-inline-edit", ["kbqInlineEdit"], { "showActions": { "alias": "showActions"; "required": false; "isSignal": true; }; "showTooltipOnError": { "alias": "showTooltipOnError"; "required": false; "isSignal": true; }; "validationTooltip": { "alias": "validationTooltip"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "editModeWidth": { "alias": "editModeWidth"; "required": false; "isSignal": true; }; "tooltipPlacement": { "alias": "tooltipPlacement"; "required": false; "isSignal": true; }; "getValueHandler": { "alias": "getValueHandler"; "required": false; "isSignal": true; }; "setValueHandler": { "alias": "setValueHandler"; "required": false; "isSignal": true; }; "canSaveOnEnter": { "alias": "canSaveOnEnter"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "canceled": "canceled"; "modeChange": "modeChange"; }, ["menu", "label", "
|
|
158
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<KbqInlineEdit, "kbq-inline-edit", ["kbqInlineEdit"], { "showActions": { "alias": "showActions"; "required": false; "isSignal": true; }; "showTooltipOnError": { "alias": "showTooltipOnError"; "required": false; "isSignal": true; }; "validationTooltip": { "alias": "validationTooltip"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "editModeWidth": { "alias": "editModeWidth"; "required": false; "isSignal": true; }; "tooltipPlacement": { "alias": "tooltipPlacement"; "required": false; "isSignal": true; }; "getValueHandler": { "alias": "getValueHandler"; "required": false; "isSignal": true; }; "setValueHandler": { "alias": "setValueHandler"; "required": false; "isSignal": true; }; "canSaveOnEnter": { "alias": "canSaveOnEnter"; "required": false; "isSignal": true; }; "interactiveSelectors": { "alias": "interactiveSelectors"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "canceled": "canceled"; "modeChange": "modeChange"; }, ["menu", "label", "formFieldRefList"], ["kbq-label", "[kbqInlineEditViewMode]", "[kbqInlineEditMenu]", "[kbqInlineEditEditMode]"], true, [{ directive: typeof i1.CdkMonitorFocus; inputs: {}; outputs: {}; }]>;
|
|
139
159
|
}
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
|
|
30
30
|
.kbq-mask__fade {
|
|
31
31
|
background: var(--kbq-mask-background, transparent);
|
|
32
|
-
|
|
32
|
+
// @TODO remove fallback (#DS-3002)
|
|
33
|
+
mask-image: linear-gradient(90deg, transparent, var(--kbq-plt-black, var(--kbq-black-default)));
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
.kbq-mask__container {
|
|
@@ -39,6 +40,17 @@
|
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
@mixin _inline-edit-theme {
|
|
43
|
+
background: var(--kbq-inline-edit-background);
|
|
44
|
+
|
|
45
|
+
&:focus-visible {
|
|
46
|
+
outline: none;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&.cdk-keyboard-focused {
|
|
50
|
+
box-shadow: inset 0 0 0.1px 1px var(--kbq-states-line-focus-theme);
|
|
51
|
+
border-color: var(--kbq-states-line-focus-theme);
|
|
52
|
+
}
|
|
53
|
+
|
|
42
54
|
&.kbq-inline-edit_view {
|
|
43
55
|
&:not(.kbq-inline-edit_disabled) {
|
|
44
56
|
&:hover {
|
|
@@ -68,18 +80,8 @@
|
|
|
68
80
|
}
|
|
69
81
|
|
|
70
82
|
.kbq-inline-edit__focus_container {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
&:focus-visible {
|
|
75
|
-
outline: none;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
&.cdk-keyboard-focused {
|
|
79
|
-
$focused-color: var(--kbq-states-line-focus-theme);
|
|
80
|
-
outline: 1px solid $focused-color;
|
|
81
|
-
border-color: $focused-color;
|
|
82
|
-
}
|
|
83
|
+
display: flex;
|
|
84
|
+
flex-direction: column;
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
|
|
@@ -91,16 +93,18 @@
|
|
|
91
93
|
display: flex;
|
|
92
94
|
flex-direction: column;
|
|
93
95
|
justify-content: center;
|
|
96
|
+
box-sizing: border-box;
|
|
97
|
+
|
|
98
|
+
border: var(--kbq-size-border-width) solid transparent;
|
|
94
99
|
border-radius: var(--kbq-size-border-radius);
|
|
95
100
|
padding: var(--kbq-inline-edit-padding-vertical) var(--kbq-inline-edit-padding-horizontal);
|
|
96
101
|
min-height: var(--kbq-inline-edit-height);
|
|
97
|
-
box-sizing: border-box;
|
|
98
102
|
|
|
99
103
|
@include _inline-edit-theme();
|
|
100
104
|
@include _inline-edit-typography();
|
|
101
105
|
|
|
102
106
|
&:not(.kbq-inline-edit_with-label) {
|
|
103
|
-
--kbq-inline-edit-padding-horizontal: var(--kbq-size-m);
|
|
107
|
+
--kbq-inline-edit-padding-horizontal: calc(var(--kbq-size-m) - var(--kbq-size-border-width));
|
|
104
108
|
}
|
|
105
109
|
|
|
106
110
|
&.kbq-inline-edit_with-label {
|
|
@@ -120,6 +124,12 @@
|
|
|
120
124
|
|
|
121
125
|
&.kbq-inline-edit_view {
|
|
122
126
|
.kbq-inline-edit__view-container {
|
|
127
|
+
display: flex;
|
|
128
|
+
text-overflow: ellipsis;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.kbq-inline-edit__view-content {
|
|
132
|
+
display: inline-block;
|
|
123
133
|
text-overflow: ellipsis;
|
|
124
134
|
}
|
|
125
135
|
}
|
|
@@ -137,14 +147,14 @@
|
|
|
137
147
|
|
|
138
148
|
@include _mask(
|
|
139
149
|
(
|
|
140
|
-
'top':
|
|
141
|
-
'right':
|
|
150
|
+
'top': calc(var(--kbq-size-border-width) * -1),
|
|
151
|
+
'right': calc(var(--kbq-size-border-width) * -1)
|
|
142
152
|
)
|
|
143
153
|
);
|
|
144
154
|
|
|
145
155
|
.kbq-inline-edit__menu-mask {
|
|
146
156
|
opacity: 0;
|
|
147
|
-
height: 100
|
|
157
|
+
height: calc(100% + 2 * var(--kbq-size-border-width));
|
|
148
158
|
justify-content: flex-end;
|
|
149
159
|
border-top-right-radius: var(--kbq-size-border-radius);
|
|
150
160
|
border-bottom-right-radius: var(--kbq-size-border-radius);
|
|
@@ -171,18 +181,6 @@
|
|
|
171
181
|
z-index: 2;
|
|
172
182
|
}
|
|
173
183
|
}
|
|
174
|
-
|
|
175
|
-
.kbq-inline-edit__focus_container {
|
|
176
|
-
position: absolute;
|
|
177
|
-
top: 0;
|
|
178
|
-
left: 0;
|
|
179
|
-
width: calc(100% - 2 * var(--kbq-size-border-width));
|
|
180
|
-
height: calc(100% - 2 * var(--kbq-size-border-width));
|
|
181
|
-
border: var(--kbq-size-border-width) solid transparent;
|
|
182
|
-
border-radius: var(--kbq-size-border-radius);
|
|
183
|
-
// set z-index to hide mask borders
|
|
184
|
-
z-index: 1;
|
|
185
|
-
}
|
|
186
184
|
}
|
|
187
185
|
|
|
188
186
|
.kbq-inline-edit__panel {
|
|
@@ -10,6 +10,7 @@ export declare class KbqInputPassword implements KbqFormFieldControl<any>, OnCha
|
|
|
10
10
|
parentForm: NgForm;
|
|
11
11
|
parentFormGroup: FormGroupDirective;
|
|
12
12
|
defaultErrorStateMatcher: ErrorStateMatcher;
|
|
13
|
+
private readonly useLegacyValidation;
|
|
13
14
|
/** Whether the component is in an error state. */
|
|
14
15
|
errorState: boolean;
|
|
15
16
|
/** An object used to control when error messages are shown. */
|
package/input/input.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export declare class KbqInput implements KbqFormFieldControl<any>, OnChanges, On
|
|
|
12
12
|
parentForm: NgForm;
|
|
13
13
|
parentFormGroup: FormGroupDirective;
|
|
14
14
|
defaultErrorStateMatcher: ErrorStateMatcher;
|
|
15
|
+
private readonly useLegacyValidation;
|
|
15
16
|
/** Whether the component is in an error state. */
|
|
16
17
|
errorState: boolean;
|
|
17
18
|
/** An object used to control when error messages are shown. */
|
package/link/_link-theme.scss
CHANGED
|
@@ -16,9 +16,17 @@
|
|
|
16
16
|
|
|
17
17
|
&.kbq-text-only,
|
|
18
18
|
& .kbq-link__text {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
text-decoration-line: underline;
|
|
20
|
+
text-decoration-style: solid;
|
|
21
|
+
text-decoration-thickness: var(--kbq-link-underline-width);
|
|
22
|
+
text-decoration-color: transparent;
|
|
23
|
+
text-underline-offset: calc(var(--kbq-link-size-multiline-hit-area-gap) + var(--kbq-link-underline-width));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&.kbq-link_multiline {
|
|
27
|
+
padding-top: var(--kbq-link-size-multiline-hit-area-gap);
|
|
28
|
+
padding-bottom: var(--kbq-link-size-multiline-hit-area-gap);
|
|
29
|
+
box-decoration-break: clone;
|
|
22
30
|
}
|
|
23
31
|
|
|
24
32
|
&.kbq-text-with-icon .kbq-icon {
|
|
@@ -104,7 +112,7 @@
|
|
|
104
112
|
&:not(.kbq-link_pseudo, .kbq-link_no-underline) {
|
|
105
113
|
&.kbq-text-only:not(.kbq-text-with-dot),
|
|
106
114
|
& .kbq-link__text {
|
|
107
|
-
|
|
115
|
+
text-decoration-color: var(--kbq-#{$base-path}-border-bottom);
|
|
108
116
|
}
|
|
109
117
|
}
|
|
110
118
|
|
|
@@ -130,7 +138,7 @@
|
|
|
130
138
|
&.kbq-link_pseudo {
|
|
131
139
|
&.kbq-text-only:not(.kbq-text-with-dot),
|
|
132
140
|
& .kbq-link__text {
|
|
133
|
-
|
|
141
|
+
text-decoration-color: var(--kbq-link-state-hover-border-bottom);
|
|
134
142
|
}
|
|
135
143
|
}
|
|
136
144
|
}
|
|
@@ -142,7 +150,7 @@
|
|
|
142
150
|
&.kbq-link_pseudo {
|
|
143
151
|
&.kbq-text-only:not(.kbq-text-with-dot),
|
|
144
152
|
& .kbq-link__text {
|
|
145
|
-
|
|
153
|
+
text-decoration-color: var(--kbq-link-state-active-border-bottom);
|
|
146
154
|
}
|
|
147
155
|
}
|
|
148
156
|
}
|
|
@@ -163,7 +171,9 @@
|
|
|
163
171
|
}
|
|
164
172
|
|
|
165
173
|
&.cdk-keyboard-focused {
|
|
166
|
-
outline:
|
|
174
|
+
outline-style: solid;
|
|
175
|
+
outline-width: var(--kbq-link-size-state-focused-outline-width);
|
|
176
|
+
outline-color: var(--kbq-link-state-focused-outline);
|
|
167
177
|
}
|
|
168
178
|
|
|
169
179
|
&.kbq-disabled {
|
|
@@ -178,7 +188,7 @@
|
|
|
178
188
|
&.kbq-text-only,
|
|
179
189
|
&.kbq-text-with-icon .kbq-link__text,
|
|
180
190
|
&.kbq-text-with-dot .kbq-link__text {
|
|
181
|
-
|
|
191
|
+
text-decoration: none;
|
|
182
192
|
}
|
|
183
193
|
|
|
184
194
|
&::after {
|
package/link/link-tokens.scss
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
.kbq-link {
|
|
2
2
|
--kbq-link-size-state-focused-outline-offset: 0px;
|
|
3
3
|
--kbq-link-size-state-focused-outline-width: 2px;
|
|
4
|
+
--kbq-link-size-multiline-hit-area-gap: calc((1lh - 1em) / 2);
|
|
4
5
|
--kbq-link-size-compact-content-padding: var(--kbq-size-xxs);
|
|
5
6
|
--kbq-link-size-normal-content-padding: var(--kbq-size-xxs);
|
|
6
7
|
--kbq-link-size-big-content-padding: var(--kbq-size-xxs);
|
|
8
|
+
--kbq-link-underline-width: 1px;
|
|
7
9
|
/* THEME TOKENS */
|
|
8
10
|
--kbq-link-text: var(--kbq-foreground-theme);
|
|
9
|
-
--kbq-link-border-bottom: var(--kbq-line-theme-
|
|
11
|
+
--kbq-link-border-bottom: var(--kbq-line-theme-fade);
|
|
10
12
|
--kbq-link-state-visited-text: var(--kbq-foreground-visited);
|
|
11
|
-
|
|
13
|
+
/* @TODO (#DS-3002) */
|
|
14
|
+
--kbq-link-state-visited-border-bottom: var(--kbq-line-visited-fade, var(--kbq-line-visited));
|
|
12
15
|
--kbq-link-state-visited-hover-text: var(--kbq-states-foreground-visited-hover);
|
|
13
|
-
--kbq-link-state-visited-hover-border-
|
|
16
|
+
--kbq-link-state-visited-hover-border-bottomm: var(--kbq-line-visited-fade, var(--kbq-line-visited));
|
|
14
17
|
--kbq-link-state-visited-active-text: var(--kbq-states-foreground-visited-active);
|
|
15
|
-
--kbq-link-state-visited-active-border-
|
|
18
|
+
--kbq-link-state-visited-active-border-bottomm: var(--kbq-line-visited-fade, var(--kbq-line-visited));
|
|
16
19
|
--kbq-link-state-hover-text: var(--kbq-states-foreground-theme-hover);
|
|
17
|
-
--kbq-link-state-hover-border-bottom: var(--kbq-line-theme-
|
|
20
|
+
--kbq-link-state-hover-border-bottom: var(--kbq-line-theme-fade);
|
|
18
21
|
--kbq-link-state-active-text: var(--kbq-states-foreground-theme-active);
|
|
19
|
-
--kbq-link-state-active-border-bottom: var(--kbq-line-theme-
|
|
22
|
+
--kbq-link-state-active-border-bottom: var(--kbq-line-theme-fade);
|
|
20
23
|
--kbq-link-state-focused-outline: var(--kbq-states-line-focus-theme);
|
|
21
24
|
--kbq-link-state-disabled-text: var(--kbq-states-foreground-disabled);
|
|
22
25
|
--kbq-link-state-disabled-border-bottom: var(--kbq-states-line-disabled);
|
package/link/link.component.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
2
|
-
import { AfterContentInit, AfterViewInit,
|
|
2
|
+
import { AfterContentInit, AfterViewInit, DestroyRef, ElementRef, OnDestroy, QueryList, Renderer2 } from '@angular/core';
|
|
3
3
|
import { KbqIcon } from '@koobiq/components/icon';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare const baseURLRegex: RegExp;
|
|
6
6
|
export declare class KbqLink implements AfterContentInit, AfterViewInit, OnDestroy {
|
|
7
7
|
private elementRef;
|
|
8
8
|
private focusMonitor;
|
|
9
|
-
private changeDetector;
|
|
10
9
|
protected readonly renderer: Renderer2;
|
|
11
10
|
protected readonly destroyRef: DestroyRef;
|
|
12
11
|
protected readonly nativeElement: HTMLElement;
|
|
@@ -14,7 +13,8 @@ export declare class KbqLink implements AfterContentInit, AfterViewInit, OnDestr
|
|
|
14
13
|
/** Whether the link is disabled. */
|
|
15
14
|
get disabled(): boolean;
|
|
16
15
|
set disabled(value: boolean);
|
|
17
|
-
private
|
|
16
|
+
/** @docs-private */
|
|
17
|
+
readonly disabledSignal: import("@angular/core").WritableSignal<boolean>;
|
|
18
18
|
get tabIndex(): number;
|
|
19
19
|
set tabIndex(value: number);
|
|
20
20
|
private _tabIndex;
|
|
@@ -22,14 +22,17 @@ export declare class KbqLink implements AfterContentInit, AfterViewInit, OnDestr
|
|
|
22
22
|
noUnderline: boolean;
|
|
23
23
|
big: boolean;
|
|
24
24
|
compact: boolean;
|
|
25
|
+
/** Whether the link has an increased hit area for multiline usage. */
|
|
26
|
+
multiline: boolean;
|
|
25
27
|
useVisited: boolean;
|
|
26
28
|
get hasIcon(): boolean;
|
|
27
29
|
set print(value: any);
|
|
28
30
|
private _print;
|
|
29
31
|
printMode: boolean;
|
|
30
32
|
printUrl: string;
|
|
33
|
+
private _disabled;
|
|
31
34
|
icon: KbqIcon;
|
|
32
|
-
constructor(elementRef: ElementRef<HTMLAnchorElement>, focusMonitor: FocusMonitor
|
|
35
|
+
constructor(elementRef: ElementRef<HTMLAnchorElement>, focusMonitor: FocusMonitor);
|
|
33
36
|
ngAfterViewInit(): void;
|
|
34
37
|
ngOnDestroy(): void;
|
|
35
38
|
focus(): void;
|
|
@@ -38,12 +41,13 @@ export declare class KbqLink implements AfterContentInit, AfterViewInit, OnDestr
|
|
|
38
41
|
private updateClassModifierForIcons;
|
|
39
42
|
private updatePrintUrl;
|
|
40
43
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqLink, never>;
|
|
41
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqLink, "[kbq-link]", ["kbqLink"], { "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "pseudo": { "alias": "pseudo"; "required": false; }; "noUnderline": { "alias": "noUnderline"; "required": false; }; "big": { "alias": "big"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "useVisited": { "alias": "useVisited"; "required": false; }; "print": { "alias": "print"; "required": false; }; }, {}, ["icon", "icons"], never, true, never>;
|
|
44
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqLink, "[kbq-link]", ["kbqLink"], { "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "pseudo": { "alias": "pseudo"; "required": false; }; "noUnderline": { "alias": "noUnderline"; "required": false; }; "big": { "alias": "big"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "multiline": { "alias": "multiline"; "required": false; }; "useVisited": { "alias": "useVisited"; "required": false; }; "print": { "alias": "print"; "required": false; }; }, {}, ["icon", "icons"], never, true, never>;
|
|
42
45
|
static ngAcceptInputType_disabled: unknown;
|
|
43
46
|
static ngAcceptInputType_tabIndex: unknown;
|
|
44
47
|
static ngAcceptInputType_pseudo: unknown;
|
|
45
48
|
static ngAcceptInputType_noUnderline: unknown;
|
|
46
49
|
static ngAcceptInputType_big: unknown;
|
|
47
50
|
static ngAcceptInputType_compact: unknown;
|
|
51
|
+
static ngAcceptInputType_multiline: unknown;
|
|
48
52
|
static ngAcceptInputType_useVisited: unknown;
|
|
49
53
|
}
|
|
@@ -29,6 +29,18 @@
|
|
|
29
29
|
color: var(--kbq-loader-overlay-transparent-caption-color);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
+
|
|
33
|
+
.kbq-loader-overlay_card {
|
|
34
|
+
&.kbq-loader-overlay_filled,
|
|
35
|
+
&.kbq-loader-overlay_transparent {
|
|
36
|
+
background: color-mix(
|
|
37
|
+
in srgb,
|
|
38
|
+
var(--kbq-loader-overlay-card-overlay-background) /* color-mix only allows percentage value */
|
|
39
|
+
calc(var(--kbq-opacity-overlay) * 100%),
|
|
40
|
+
transparent
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
32
44
|
}
|
|
33
45
|
|
|
34
46
|
@mixin kbq-loader-overlay-typography() {
|
|
@@ -15,4 +15,5 @@
|
|
|
15
15
|
--kbq-loader-overlay-filled-overlay-background: var(--kbq-background-bg);
|
|
16
16
|
--kbq-loader-overlay-filled-text-color: var(--kbq-foreground-contrast);
|
|
17
17
|
--kbq-loader-overlay-filled-caption-color: var(--kbq-foreground-contrast-secondary);
|
|
18
|
+
--kbq-loader-overlay-card-overlay-background: var(--kbq-background-card);
|
|
18
19
|
}
|
|
@@ -20,6 +20,11 @@ export declare class KbqLoaderOverlay implements OnInit, OnDestroy {
|
|
|
20
20
|
caption: string;
|
|
21
21
|
size: KbqDefaultSizes;
|
|
22
22
|
transparent: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Uses a semi-transparent background to blend
|
|
25
|
+
* with the underlying card or modal surface. When enabled, overrides `transparent`.
|
|
26
|
+
*/
|
|
27
|
+
card: boolean;
|
|
23
28
|
private parent;
|
|
24
29
|
get isExternalIndicator(): boolean;
|
|
25
30
|
get isExternalText(): boolean;
|
|
@@ -37,5 +42,6 @@ export declare class KbqLoaderOverlay implements OnInit, OnDestroy {
|
|
|
37
42
|
ngOnInit(): void;
|
|
38
43
|
ngOnDestroy(): void;
|
|
39
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqLoaderOverlay, never>;
|
|
40
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KbqLoaderOverlay, "kbq-loader-overlay", never, { "text": { "alias": "text"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "size": { "alias": "size"; "required": false; }; "transparent": { "alias": "transparent"; "required": false; }; }, {}, ["externalIndicator", "externalText", "externalCaption"], ["[kbq-loader-overlay-indicator]", "[kbq-loader-overlay-text]", "[kbq-loader-overlay-caption]"], true, never>;
|
|
45
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<KbqLoaderOverlay, "kbq-loader-overlay", never, { "text": { "alias": "text"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "size": { "alias": "size"; "required": false; }; "transparent": { "alias": "transparent"; "required": false; }; "card": { "alias": "card"; "required": false; }; }, {}, ["externalIndicator", "externalText", "externalCaption"], ["[kbq-loader-overlay-indicator]", "[kbq-loader-overlay-text]", "[kbq-loader-overlay-caption]"], true, never>;
|
|
46
|
+
static ngAcceptInputType_card: unknown;
|
|
41
47
|
}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
.kbq-markdown__pre,
|
|
33
|
-
.kbq-markdown__code:not(.kbq-markdown__a .kbq-markdown__code) {
|
|
33
|
+
.kbq-markdown__code:not(.kbq-markdown__pre > .kbq-markdown__code, .kbq-markdown__a .kbq-markdown__code) {
|
|
34
34
|
color: var(--kbq-markdown-code-text);
|
|
35
35
|
background-color: var(--kbq-markdown-code-background);
|
|
36
36
|
}
|
|
@@ -39,36 +39,8 @@
|
|
|
39
39
|
background-color: var(--kbq-markdown-code-background);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
.kbq-markdown__a {
|
|
43
|
-
|
|
44
|
-
border-bottom-color: var(--kbq-markdown-link-border-bottom, var(--kbq-line-theme-less));
|
|
45
|
-
|
|
46
|
-
&:has(.kbq-markdown__code) {
|
|
47
|
-
display: inline;
|
|
48
|
-
border-bottom: none;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
&:visited {
|
|
52
|
-
color: var(--kbq-markdown-link-state-visited-text, var(--kbq-foreground-visited));
|
|
53
|
-
border-bottom-color: var(--kbq-markdown-link-state-visited-border-bottom, var(--kbq-line-visited));
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
&:hover {
|
|
57
|
-
color: var(--kbq-markdown-link-state-hover-text, var(--kbq-states-foreground-theme-hover));
|
|
58
|
-
transition: color 0ms;
|
|
59
|
-
border-bottom-color: var(--kbq-markdown-link-state-hover-border-bottom, var(--kbq-line-theme-less));
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
&:active {
|
|
63
|
-
color: var(--kbq-markdown-link-state-active, var(--kbq-states-foreground-theme-active));
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
&:focus {
|
|
67
|
-
outline: var(--kbq-markdown-link-state-focused-outline, var(--kbq-link-state-focused-outline)) solid
|
|
68
|
-
var(--kbq-markdown-link-size-state-focused-outline-width, var(--kbq-size-3xs));
|
|
69
|
-
|
|
70
|
-
outline-offset: var(--kbq-markdown-link-size-state-focused-outline-offset, 0);
|
|
71
|
-
}
|
|
42
|
+
.kbq-markdown__a:has(.kbq-markdown__code) {
|
|
43
|
+
text-decoration-line: none;
|
|
72
44
|
}
|
|
73
45
|
|
|
74
46
|
.kbq-markdown__img + em {
|
|
@@ -41,9 +41,6 @@
|
|
|
41
41
|
--kbq-markdown-code-size-multiline-padding: var(--kbq-size-m) var(--kbq-size-l);
|
|
42
42
|
--kbq-markdown-code-size-border-radius: var(--kbq-size-border-radius);
|
|
43
43
|
--kbq-markdown-code-size-border-width: var(--kbq-size-border-width);
|
|
44
|
-
--kbq-markdown-link-size-icon-margin: var(--kbq-link-size-normal-content-padding, var(--kbq-size-xxs));
|
|
45
|
-
--kbq-markdown-link-size-state-focused-outline-offset: var(--kbq-link-size-state-focused-outline-offset);
|
|
46
|
-
--kbq-markdown-link-size-state-focused-outline-width: var(--kbq-link-size-state-focused-outline-width);
|
|
47
44
|
--kbq-markdown-image-size-max-width: var(--kbq-markdown-size-max-width);
|
|
48
45
|
--kbq-markdown-image-size-margin-top: var(--kbq-size-m);
|
|
49
46
|
--kbq-markdown-image-size-margin-bottom: var(--kbq-size-m);
|
|
@@ -71,14 +68,6 @@
|
|
|
71
68
|
--kbq-markdown-code-text: var(--kbq-foreground-contrast);
|
|
72
69
|
--kbq-markdown-code-background: var(--kbq-background-contrast-fade);
|
|
73
70
|
--kbq-markdown-code-border: var(--kbq-line-contrast-less);
|
|
74
|
-
--kbq-markdown-link-text: var(--kbq-link-text);
|
|
75
|
-
--kbq-markdown-link-border-bottom: var(--kbq-link-border-bottom);
|
|
76
|
-
--kbq-markdown-link-state-visited-text: var(--kbq-link-state-visited-text);
|
|
77
|
-
--kbq-markdown-link-state-visited-border-bottom: var(--kbq-link-state-visited-border-bottom);
|
|
78
|
-
--kbq-markdown-link-state-hover-text: var(--kbq-link-state-hover-text);
|
|
79
|
-
--kbq-markdown-link-state-hover-border-bottom: var(--kbq-link-state-hover-border-bottom);
|
|
80
|
-
--kbq-markdown-link-state-active: var(--kbq-link-state-active-text);
|
|
81
|
-
--kbq-markdown-link-state-focused-outline: var(--kbq-link-state-focused-outline);
|
|
82
71
|
--kbq-markdown-image-caption-text: var(--kbq-foreground-contrast-secondary);
|
|
83
72
|
--kbq-markdown-hr-color: var(--kbq-line-contrast-less);
|
|
84
73
|
--kbq-markdown-table-header: var(--kbq-foreground-contrast-secondary);
|
|
@@ -1,26 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InjectionToken, OnDestroy, Provider } from '@angular/core';
|
|
2
2
|
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
|
|
3
3
|
import { MarkedOptions } from 'marked';
|
|
4
4
|
import { KbqMarkdownService } from './markdown.service';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
/** List of options for `marked` library. */
|
|
7
|
-
export declare const KBQ_MARKDOWN_MARKED_OPTIONS: InjectionToken<MarkedOptions
|
|
7
|
+
export declare const KBQ_MARKDOWN_MARKED_OPTIONS: InjectionToken<MarkedOptions<string, string>>;
|
|
8
8
|
/** Utility provider for `KBQ_MARKDOWN_MARKED_OPTIONS`. */
|
|
9
9
|
export declare const kbqMarkdownMarkedOptionsProvider: (options: MarkedOptions) => Provider;
|
|
10
10
|
/** Component which allows to convert `Markdown` into `HTML` */
|
|
11
|
-
export declare class KbqMarkdown {
|
|
11
|
+
export declare class KbqMarkdown implements OnDestroy {
|
|
12
12
|
private readonly markdownService;
|
|
13
|
-
private readonly cdr;
|
|
14
13
|
private sanitizer;
|
|
15
14
|
private readonly markedOptions?;
|
|
16
15
|
private readonly contentWrapper;
|
|
16
|
+
private readonly outputWrapper;
|
|
17
|
+
protected resultHtml: import("@angular/core").WritableSignal<SafeHtml | null>;
|
|
17
18
|
/** `Markdown` text. */
|
|
18
19
|
get markdownText(): string | null;
|
|
19
20
|
set markdownText(value: string | null);
|
|
20
21
|
private _markdownText;
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
private readonly focusMonitor;
|
|
23
|
+
private readonly links;
|
|
24
|
+
constructor(markdownService: KbqMarkdownService, sanitizer: DomSanitizer, markedOptions?: MarkedOptions | undefined);
|
|
25
|
+
ngOnDestroy(): void;
|
|
23
26
|
private getResultHTML;
|
|
24
|
-
|
|
27
|
+
private startMonitoringLinks;
|
|
28
|
+
private stopMonitoringLinks;
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<KbqMarkdown, [null, null, { optional: true; }]>;
|
|
25
30
|
static ɵcmp: i0.ɵɵComponentDeclaration<KbqMarkdown, "kbq-markdown", never, { "markdownText": { "alias": "markdownText"; "required": false; }; }, {}, never, ["*"], true, never>;
|
|
26
31
|
}
|
package/markdown/markdown.scss
CHANGED
|
@@ -33,17 +33,6 @@
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
.kbq-markdown__a {
|
|
37
|
-
display: inline;
|
|
38
|
-
|
|
39
|
-
text-decoration: none;
|
|
40
|
-
cursor: pointer;
|
|
41
|
-
|
|
42
|
-
border-bottom-style: solid;
|
|
43
|
-
border-bottom-width: 1px;
|
|
44
|
-
transition: color ease-out 300ms;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
36
|
.kbq-markdown__p {
|
|
48
37
|
margin-top: var(--kbq-markdown-p-size-margin-top);
|
|
49
38
|
margin-bottom: var(--kbq-markdown-p-size-margin-bottom);
|
|
@@ -6,6 +6,7 @@ import { KbqModalComponent } from './modal.component';
|
|
|
6
6
|
*/
|
|
7
7
|
export declare abstract class KbqModalRef<C = any, R = unknown> {
|
|
8
8
|
abstract afterOpen: Observable<void>;
|
|
9
|
+
abstract beforeClose: Observable<R | undefined>;
|
|
9
10
|
abstract afterClose: Observable<R | undefined>;
|
|
10
11
|
abstract open(): void;
|
|
11
12
|
abstract close(result?: R): void;
|