@vadem/ui 0.0.0-stage → 0.0.1
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-lucide.txt +43 -0
- package/README.md +19 -2
- package/fesm2022/vadem-ui-accordion.mjs +139 -0
- package/fesm2022/vadem-ui-accordion.mjs.map +1 -0
- package/fesm2022/vadem-ui-active-filters.mjs +355 -0
- package/fesm2022/vadem-ui-active-filters.mjs.map +1 -0
- package/fesm2022/vadem-ui-alert-dialog.mjs +433 -0
- package/fesm2022/vadem-ui-alert-dialog.mjs.map +1 -0
- package/fesm2022/vadem-ui-alert.mjs +266 -0
- package/fesm2022/vadem-ui-alert.mjs.map +1 -0
- package/fesm2022/vadem-ui-autocomplete.mjs +715 -0
- package/fesm2022/vadem-ui-autocomplete.mjs.map +1 -0
- package/fesm2022/vadem-ui-avatar.mjs +219 -0
- package/fesm2022/vadem-ui-avatar.mjs.map +1 -0
- package/fesm2022/vadem-ui-badge.mjs +86 -0
- package/fesm2022/vadem-ui-badge.mjs.map +1 -0
- package/fesm2022/vadem-ui-breadcrumbs.mjs +61 -0
- package/fesm2022/vadem-ui-breadcrumbs.mjs.map +1 -0
- package/fesm2022/vadem-ui-button.mjs +220 -0
- package/fesm2022/vadem-ui-button.mjs.map +1 -0
- package/fesm2022/vadem-ui-calendar.mjs +1314 -0
- package/fesm2022/vadem-ui-calendar.mjs.map +1 -0
- package/fesm2022/vadem-ui-card.mjs +271 -0
- package/fesm2022/vadem-ui-card.mjs.map +1 -0
- package/fesm2022/vadem-ui-character-count.mjs +269 -0
- package/fesm2022/vadem-ui-character-count.mjs.map +1 -0
- package/fesm2022/vadem-ui-chart.mjs +1984 -0
- package/fesm2022/vadem-ui-chart.mjs.map +1 -0
- package/fesm2022/vadem-ui-checkbox.mjs +67 -0
- package/fesm2022/vadem-ui-checkbox.mjs.map +1 -0
- package/fesm2022/vadem-ui-color-picker.mjs +815 -0
- package/fesm2022/vadem-ui-color-picker.mjs.map +1 -0
- package/fesm2022/vadem-ui-command.mjs +735 -0
- package/fesm2022/vadem-ui-command.mjs.map +1 -0
- package/fesm2022/vadem-ui-copy-button.mjs +375 -0
- package/fesm2022/vadem-ui-copy-button.mjs.map +1 -0
- package/fesm2022/vadem-ui-date-range-picker.mjs +1011 -0
- package/fesm2022/vadem-ui-date-range-picker.mjs.map +1 -0
- package/fesm2022/vadem-ui-description-list.mjs +59 -0
- package/fesm2022/vadem-ui-description-list.mjs.map +1 -0
- package/fesm2022/vadem-ui-dialog.mjs +587 -0
- package/fesm2022/vadem-ui-dialog.mjs.map +1 -0
- package/fesm2022/vadem-ui-dropzone.mjs +176 -0
- package/fesm2022/vadem-ui-dropzone.mjs.map +1 -0
- package/fesm2022/vadem-ui-editable-text.mjs +641 -0
- package/fesm2022/vadem-ui-editable-text.mjs.map +1 -0
- package/fesm2022/vadem-ui-empty-state.mjs +175 -0
- package/fesm2022/vadem-ui-empty-state.mjs.map +1 -0
- package/fesm2022/vadem-ui-expandable-text.mjs +244 -0
- package/fesm2022/vadem-ui-expandable-text.mjs.map +1 -0
- package/fesm2022/vadem-ui-field.mjs +583 -0
- package/fesm2022/vadem-ui-field.mjs.map +1 -0
- package/fesm2022/vadem-ui-file-preview.mjs +532 -0
- package/fesm2022/vadem-ui-file-preview.mjs.map +1 -0
- package/fesm2022/vadem-ui-file-size.mjs +83 -0
- package/fesm2022/vadem-ui-file-size.mjs.map +1 -0
- package/fesm2022/vadem-ui-form-error-summary.mjs +201 -0
- package/fesm2022/vadem-ui-form-error-summary.mjs.map +1 -0
- package/fesm2022/vadem-ui-icon.mjs +303 -0
- package/fesm2022/vadem-ui-icon.mjs.map +1 -0
- package/fesm2022/vadem-ui-input.mjs +120 -0
- package/fesm2022/vadem-ui-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-kbd.mjs +286 -0
- package/fesm2022/vadem-ui-kbd.mjs.map +1 -0
- package/fesm2022/vadem-ui-keyboard.mjs +105 -0
- package/fesm2022/vadem-ui-keyboard.mjs.map +1 -0
- package/fesm2022/vadem-ui-locale.mjs +443 -0
- package/fesm2022/vadem-ui-locale.mjs.map +1 -0
- package/fesm2022/vadem-ui-menu.mjs +637 -0
- package/fesm2022/vadem-ui-menu.mjs.map +1 -0
- package/fesm2022/vadem-ui-navigation-list.mjs +130 -0
- package/fesm2022/vadem-ui-navigation-list.mjs.map +1 -0
- package/fesm2022/vadem-ui-number-input.mjs +264 -0
- package/fesm2022/vadem-ui-number-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-otp-input.mjs +86 -0
- package/fesm2022/vadem-ui-otp-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-pagination.mjs +353 -0
- package/fesm2022/vadem-ui-pagination.mjs.map +1 -0
- package/fesm2022/vadem-ui-password-input.mjs +213 -0
- package/fesm2022/vadem-ui-password-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-popover.mjs +178 -0
- package/fesm2022/vadem-ui-popover.mjs.map +1 -0
- package/fesm2022/vadem-ui-progress.mjs +331 -0
- package/fesm2022/vadem-ui-progress.mjs.map +1 -0
- package/fesm2022/vadem-ui-radio.mjs +39 -0
- package/fesm2022/vadem-ui-radio.mjs.map +1 -0
- package/fesm2022/vadem-ui-range-slider.mjs +561 -0
- package/fesm2022/vadem-ui-range-slider.mjs.map +1 -0
- package/fesm2022/vadem-ui-rating.mjs +404 -0
- package/fesm2022/vadem-ui-rating.mjs.map +1 -0
- package/fesm2022/vadem-ui-relative-time.mjs +217 -0
- package/fesm2022/vadem-ui-relative-time.mjs.map +1 -0
- package/fesm2022/vadem-ui-reorder-list.mjs +601 -0
- package/fesm2022/vadem-ui-reorder-list.mjs.map +1 -0
- package/fesm2022/vadem-ui-scroll-area.mjs +65 -0
- package/fesm2022/vadem-ui-scroll-area.mjs.map +1 -0
- package/fesm2022/vadem-ui-search-input.mjs +307 -0
- package/fesm2022/vadem-ui-search-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-segmented.mjs +297 -0
- package/fesm2022/vadem-ui-segmented.mjs.map +1 -0
- package/fesm2022/vadem-ui-select.mjs +1462 -0
- package/fesm2022/vadem-ui-select.mjs.map +1 -0
- package/fesm2022/vadem-ui-sidebar.mjs +493 -0
- package/fesm2022/vadem-ui-sidebar.mjs.map +1 -0
- package/fesm2022/vadem-ui-skeleton.mjs +106 -0
- package/fesm2022/vadem-ui-skeleton.mjs.map +1 -0
- package/fesm2022/vadem-ui-slider.mjs +60 -0
- package/fesm2022/vadem-ui-slider.mjs.map +1 -0
- package/fesm2022/vadem-ui-splitter.mjs +438 -0
- package/fesm2022/vadem-ui-splitter.mjs.map +1 -0
- package/fesm2022/vadem-ui-stat.mjs +369 -0
- package/fesm2022/vadem-ui-stat.mjs.map +1 -0
- package/fesm2022/vadem-ui-stepper.mjs +483 -0
- package/fesm2022/vadem-ui-stepper.mjs.map +1 -0
- package/fesm2022/vadem-ui-switch.mjs +45 -0
- package/fesm2022/vadem-ui-switch.mjs.map +1 -0
- package/fesm2022/vadem-ui-table.mjs +593 -0
- package/fesm2022/vadem-ui-table.mjs.map +1 -0
- package/fesm2022/vadem-ui-tabs.mjs +405 -0
- package/fesm2022/vadem-ui-tabs.mjs.map +1 -0
- package/fesm2022/vadem-ui-tag-input.mjs +685 -0
- package/fesm2022/vadem-ui-tag-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-text-highlight.mjs +126 -0
- package/fesm2022/vadem-ui-text-highlight.mjs.map +1 -0
- package/fesm2022/vadem-ui-time-input.mjs +430 -0
- package/fesm2022/vadem-ui-time-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-timeline.mjs +313 -0
- package/fesm2022/vadem-ui-timeline.mjs.map +1 -0
- package/fesm2022/vadem-ui-toast.mjs +397 -0
- package/fesm2022/vadem-ui-toast.mjs.map +1 -0
- package/fesm2022/vadem-ui-toolbar.mjs +396 -0
- package/fesm2022/vadem-ui-toolbar.mjs.map +1 -0
- package/fesm2022/vadem-ui-tooltip.mjs +218 -0
- package/fesm2022/vadem-ui-tooltip.mjs.map +1 -0
- package/fesm2022/vadem-ui-tree.mjs +551 -0
- package/fesm2022/vadem-ui-tree.mjs.map +1 -0
- package/fesm2022/vadem-ui-upload-list.mjs +408 -0
- package/fesm2022/vadem-ui-upload-list.mjs.map +1 -0
- package/fesm2022/vadem-ui.mjs +4 -0
- package/fesm2022/vadem-ui.mjs.map +1 -0
- package/fonts/jetbrains-mono/OFL.txt +93 -0
- package/fonts/jetbrains-mono/jetbrains-mono-cyrillic.woff2 +0 -0
- package/fonts/jetbrains-mono/jetbrains-mono-latin.woff2 +0 -0
- package/fonts/manrope/OFL.txt +93 -0
- package/fonts/manrope/manrope-cyrillic.woff2 +0 -0
- package/fonts/manrope/manrope-latin.woff2 +0 -0
- package/package.json +306 -3
- package/styles/base.css +160 -0
- package/styles/components/accordion.css +130 -0
- package/styles/components/active-filters.css +42 -0
- package/styles/components/alert-dialog.css +34 -0
- package/styles/components/alert.css +159 -0
- package/styles/components/autocomplete.css +97 -0
- package/styles/components/avatar.css +90 -0
- package/styles/components/badge.css +91 -0
- package/styles/components/breadcrumbs.css +94 -0
- package/styles/components/button.css +174 -0
- package/styles/components/calendar.css +186 -0
- package/styles/components/card.css +206 -0
- package/styles/components/character-count.css +41 -0
- package/styles/components/chart.css +308 -0
- package/styles/components/checkbox.css +115 -0
- package/styles/components/color-picker.css +158 -0
- package/styles/components/command.css +175 -0
- package/styles/components/copy-button.css +58 -0
- package/styles/components/date-range-picker.css +153 -0
- package/styles/components/description-list.css +69 -0
- package/styles/components/dialog.css +334 -0
- package/styles/components/dropzone.css +89 -0
- package/styles/components/editable-text.css +58 -0
- package/styles/components/empty-state.css +72 -0
- package/styles/components/expandable-text.css +24 -0
- package/styles/components/field.css +148 -0
- package/styles/components/file-preview.css +65 -0
- package/styles/components/form-error-summary.css +71 -0
- package/styles/components/icon.css +38 -0
- package/styles/components/index.css +80 -0
- package/styles/components/input.css +171 -0
- package/styles/components/kbd.css +42 -0
- package/styles/components/menu.css +168 -0
- package/styles/components/multi-select.css +156 -0
- package/styles/components/navigation-list.css +147 -0
- package/styles/components/number-input.css +33 -0
- package/styles/components/otp-input.css +26 -0
- package/styles/components/pagination.css +127 -0
- package/styles/components/password-input.css +20 -0
- package/styles/components/popover.css +93 -0
- package/styles/components/progress-ring.css +112 -0
- package/styles/components/progress.css +162 -0
- package/styles/components/radio.css +117 -0
- package/styles/components/range-slider.css +158 -0
- package/styles/components/rating.css +100 -0
- package/styles/components/reorder-list.css +143 -0
- package/styles/components/scroll-area.css +39 -0
- package/styles/components/search-input.css +25 -0
- package/styles/components/segmented.css +136 -0
- package/styles/components/select.css +257 -0
- package/styles/components/sidebar.css +105 -0
- package/styles/components/skeleton.css +83 -0
- package/styles/components/slider.css +132 -0
- package/styles/components/splitter.css +83 -0
- package/styles/components/stat.css +62 -0
- package/styles/components/stepper.css +236 -0
- package/styles/components/switch.css +107 -0
- package/styles/components/table.css +195 -0
- package/styles/components/tabs.css +198 -0
- package/styles/components/tag-input.css +138 -0
- package/styles/components/text-highlight.css +22 -0
- package/styles/components/time-input.css +96 -0
- package/styles/components/timeline.css +182 -0
- package/styles/components/toast.css +146 -0
- package/styles/components/toolbar.css +72 -0
- package/styles/components/tooltip.css +93 -0
- package/styles/components/tree.css +88 -0
- package/styles/components/upload-list.css +113 -0
- package/styles/fonts.css +67 -0
- package/styles/index.css +14 -0
- package/styles/reset.css +57 -0
- package/styles/tokens/primitives.css +364 -0
- package/styles/tokens/semantic.css +233 -0
- package/types/vadem-ui-accordion.d.ts +43 -0
- package/types/vadem-ui-active-filters.d.ts +73 -0
- package/types/vadem-ui-alert-dialog.d.ts +87 -0
- package/types/vadem-ui-alert.d.ts +64 -0
- package/types/vadem-ui-autocomplete.d.ts +156 -0
- package/types/vadem-ui-avatar.d.ts +59 -0
- package/types/vadem-ui-badge.d.ts +25 -0
- package/types/vadem-ui-breadcrumbs.d.ts +22 -0
- package/types/vadem-ui-button.d.ts +52 -0
- package/types/vadem-ui-calendar.d.ts +327 -0
- package/types/vadem-ui-card.d.ts +58 -0
- package/types/vadem-ui-character-count.d.ts +71 -0
- package/types/vadem-ui-chart.d.ts +452 -0
- package/types/vadem-ui-checkbox.d.ts +20 -0
- package/types/vadem-ui-color-picker.d.ts +171 -0
- package/types/vadem-ui-command.d.ts +145 -0
- package/types/vadem-ui-copy-button.d.ts +90 -0
- package/types/vadem-ui-date-range-picker.d.ts +216 -0
- package/types/vadem-ui-description-list.d.ts +15 -0
- package/types/vadem-ui-dialog.d.ts +174 -0
- package/types/vadem-ui-dropzone.d.ts +73 -0
- package/types/vadem-ui-editable-text.d.ts +141 -0
- package/types/vadem-ui-empty-state.d.ts +34 -0
- package/types/vadem-ui-expandable-text.d.ts +52 -0
- package/types/vadem-ui-field.d.ts +180 -0
- package/types/vadem-ui-file-preview.d.ts +108 -0
- package/types/vadem-ui-file-size.d.ts +18 -0
- package/types/vadem-ui-form-error-summary.d.ts +46 -0
- package/types/vadem-ui-icon.d.ts +152 -0
- package/types/vadem-ui-input.d.ts +31 -0
- package/types/vadem-ui-kbd.d.ts +66 -0
- package/types/vadem-ui-keyboard.d.ts +61 -0
- package/types/vadem-ui-locale.d.ts +241 -0
- package/types/vadem-ui-menu.d.ts +132 -0
- package/types/vadem-ui-navigation-list.d.ts +28 -0
- package/types/vadem-ui-number-input.d.ts +39 -0
- package/types/vadem-ui-otp-input.d.ts +15 -0
- package/types/vadem-ui-pagination.d.ts +96 -0
- package/types/vadem-ui-password-input.d.ts +36 -0
- package/types/vadem-ui-popover.d.ts +48 -0
- package/types/vadem-ui-progress.d.ts +95 -0
- package/types/vadem-ui-radio.d.ts +11 -0
- package/types/vadem-ui-range-slider.d.ts +136 -0
- package/types/vadem-ui-rating.d.ts +95 -0
- package/types/vadem-ui-relative-time.d.ts +58 -0
- package/types/vadem-ui-reorder-list.d.ts +120 -0
- package/types/vadem-ui-scroll-area.d.ts +13 -0
- package/types/vadem-ui-search-input.d.ts +58 -0
- package/types/vadem-ui-segmented.d.ts +76 -0
- package/types/vadem-ui-select.d.ts +303 -0
- package/types/vadem-ui-sidebar.d.ts +70 -0
- package/types/vadem-ui-skeleton.d.ts +28 -0
- package/types/vadem-ui-slider.d.ts +17 -0
- package/types/vadem-ui-splitter.d.ts +99 -0
- package/types/vadem-ui-stat.d.ts +101 -0
- package/types/vadem-ui-stepper.d.ts +108 -0
- package/types/vadem-ui-switch.d.ts +10 -0
- package/types/vadem-ui-table.d.ts +172 -0
- package/types/vadem-ui-tabs.d.ts +101 -0
- package/types/vadem-ui-tag-input.d.ts +170 -0
- package/types/vadem-ui-text-highlight.d.ts +27 -0
- package/types/vadem-ui-time-input.d.ts +47 -0
- package/types/vadem-ui-timeline.d.ts +54 -0
- package/types/vadem-ui-toast.d.ts +104 -0
- package/types/vadem-ui-toolbar.d.ts +80 -0
- package/types/vadem-ui-tooltip.d.ts +71 -0
- package/types/vadem-ui-tree.d.ts +123 -0
- package/types/vadem-ui-upload-list.d.ts +70 -0
- package/types/vadem-ui.d.ts +1 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { InjectionToken, ModelSignal, OnInit, Signal } from "@angular/core";
|
|
3
|
+
import { ControlValueAccessor } from "@angular/forms";
|
|
4
|
+
/** One option of select, combobox, or multi-select. Specs: select.md, multi-select.md. */
|
|
5
|
+
export declare class VdOption implements OnInit {
|
|
6
|
+
readonly value: import("@angular/core").InputSignal<string>;
|
|
7
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
8
|
+
/** Text for the trigger, typeahead and filtering. Defaults to the option's text content. */
|
|
9
|
+
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
10
|
+
protected readonly host: VdListboxHost;
|
|
11
|
+
readonly el: HTMLElement;
|
|
12
|
+
readonly id: string;
|
|
13
|
+
private readonly destroyRef;
|
|
14
|
+
protected readonly selected: import("@angular/core").Signal<boolean>;
|
|
15
|
+
protected readonly active: import("@angular/core").Signal<boolean>;
|
|
16
|
+
protected readonly visible: import("@angular/core").Signal<boolean>;
|
|
17
|
+
textLabel(): string;
|
|
18
|
+
ngOnInit(): void;
|
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdOption, never>;
|
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdOption, "vd-option", never, {
|
|
21
|
+
"value": {
|
|
22
|
+
"alias": "value";
|
|
23
|
+
"required": true;
|
|
24
|
+
"isSignal": true;
|
|
25
|
+
};
|
|
26
|
+
"disabled": {
|
|
27
|
+
"alias": "disabled";
|
|
28
|
+
"required": false;
|
|
29
|
+
"isSignal": true;
|
|
30
|
+
};
|
|
31
|
+
"label": {
|
|
32
|
+
"alias": "label";
|
|
33
|
+
"required": false;
|
|
34
|
+
"isSignal": true;
|
|
35
|
+
};
|
|
36
|
+
}, {}, never, ["*"], true, never>;
|
|
37
|
+
}
|
|
38
|
+
/** What an option needs from the select, combobox, or multi-select that owns it. */
|
|
39
|
+
interface VdListboxHost {
|
|
40
|
+
isSelected(option: VdOption): boolean;
|
|
41
|
+
isActive(option: VdOption): boolean;
|
|
42
|
+
isVisible(option: VdOption): boolean;
|
|
43
|
+
choose(option: VdOption): void;
|
|
44
|
+
hover(option: VdOption): void;
|
|
45
|
+
register(option: VdOption): () => void;
|
|
46
|
+
}
|
|
47
|
+
declare const VD_LISTBOX: InjectionToken<VdListboxHost>;
|
|
48
|
+
type VdSelectSize = 'sm' | 'md' | 'lg';
|
|
49
|
+
/**
|
|
50
|
+
* Shared behavior of select, combobox, and multi-select: option registry, active option
|
|
51
|
+
* (aria-activedescendant - focus stays on the combobox element), popover listbox anchored to
|
|
52
|
+
* the field, value + ControlValueAccessor, and `vd-field` wiring.
|
|
53
|
+
*/
|
|
54
|
+
declare abstract class VdListboxBase<T = string | null> implements VdListboxHost, ControlValueAccessor, OnInit {
|
|
55
|
+
/** Concrete controls define a single-value or array-valued selection model. */
|
|
56
|
+
abstract readonly value: ModelSignal<T>;
|
|
57
|
+
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
58
|
+
readonly size: import("@angular/core").InputSignal<VdSelectSize>;
|
|
59
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
60
|
+
/** Invalid state (e.g. server error); form validity is detected after touch. */
|
|
61
|
+
readonly invalid: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
62
|
+
/** Gate for `invalid`; Signal Forms binds it (FormUiControl contract). */
|
|
63
|
+
readonly touched: import("@angular/core").InputSignal<boolean | undefined>;
|
|
64
|
+
readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
65
|
+
/** Shown when no option is visible (e.g. nothing matches the filter). */
|
|
66
|
+
readonly emptyText: import("@angular/core").InputSignal<string | undefined>;
|
|
67
|
+
/** Text inputs resolved against the active VD_LOCALE. */
|
|
68
|
+
protected readonly t: Signal<Pick<{
|
|
69
|
+
emptyText: string;
|
|
70
|
+
}, "emptyText">>;
|
|
71
|
+
/** Accessible name when there's no `vd-field` label; applied to the inner combobox element. */
|
|
72
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
73
|
+
readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
|
|
74
|
+
readonly listboxId: string;
|
|
75
|
+
readonly controlId: string;
|
|
76
|
+
protected readonly field: import("@vadem/ui/field").VdFieldContext | null;
|
|
77
|
+
protected readonly hostEl: HTMLElement;
|
|
78
|
+
private readonly injector;
|
|
79
|
+
private readonly destroyRef;
|
|
80
|
+
private readonly options;
|
|
81
|
+
protected readonly open: import("@angular/core").WritableSignal<boolean>;
|
|
82
|
+
protected readonly activeId: import("@angular/core").WritableSignal<string | null>;
|
|
83
|
+
private readonly formDisabled;
|
|
84
|
+
private readonly ngSource;
|
|
85
|
+
private readonly typeahead;
|
|
86
|
+
/** The popover listbox element. */
|
|
87
|
+
protected abstract listEl(): HTMLElement | undefined;
|
|
88
|
+
/** What the listbox is anchored to (the visible field). */
|
|
89
|
+
protected abstract anchorEl(): HTMLElement | undefined;
|
|
90
|
+
protected readonly ordered: Signal<VdOption[]>;
|
|
91
|
+
protected readonly visibleOptions: Signal<VdOption[]>;
|
|
92
|
+
protected readonly selectedOption: Signal<VdOption | undefined>;
|
|
93
|
+
protected readonly selectedLabel: Signal<string>;
|
|
94
|
+
protected readonly isDisabled: Signal<boolean>;
|
|
95
|
+
private readonly ngState;
|
|
96
|
+
protected readonly showInvalid: Signal<boolean>;
|
|
97
|
+
protected readonly isRequired: Signal<boolean>;
|
|
98
|
+
protected readonly describedBy: Signal<string | null>;
|
|
99
|
+
private onChange;
|
|
100
|
+
private onTouched;
|
|
101
|
+
constructor();
|
|
102
|
+
ngOnInit(): void;
|
|
103
|
+
abstract isSelected(option: VdOption): boolean;
|
|
104
|
+
isActive(option: VdOption): boolean;
|
|
105
|
+
isVisible(_option: VdOption): boolean;
|
|
106
|
+
abstract choose(option: VdOption): void;
|
|
107
|
+
hover(option: VdOption): void;
|
|
108
|
+
register(option: VdOption): () => void;
|
|
109
|
+
abstract writeValue(value: T | null): void;
|
|
110
|
+
registerOnChange(fn: (value: T) => void): void;
|
|
111
|
+
registerOnTouched(fn: () => void): void;
|
|
112
|
+
setDisabledState(disabled: boolean): void;
|
|
113
|
+
/** Hook for subclasses after an option was chosen. */
|
|
114
|
+
protected onChosen(_option: VdOption): void;
|
|
115
|
+
/** Hook for subclasses after the list closed (any reason). */
|
|
116
|
+
protected onClosed(): void;
|
|
117
|
+
protected setValue(value: T): void;
|
|
118
|
+
protected markTouched(): void;
|
|
119
|
+
protected openList(start?: 'selected' | 'first' | 'last'): void;
|
|
120
|
+
protected closeList(): void;
|
|
121
|
+
protected activate(start: 'selected' | 'first' | 'last'): void;
|
|
122
|
+
/** Handles list navigation keys. Returns true when the key was used. */
|
|
123
|
+
protected navigate(event: KeyboardEvent): boolean;
|
|
124
|
+
/** Feeds a printable key to typeahead. Returns the matched option, if any. */
|
|
125
|
+
protected typeaheadMatch(event: KeyboardEvent): VdOption | undefined;
|
|
126
|
+
protected activeOption(): VdOption | undefined;
|
|
127
|
+
private afterClose;
|
|
128
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdListboxBase<any>, never>;
|
|
129
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdListboxBase<any>, never, never, {
|
|
130
|
+
"placeholder": {
|
|
131
|
+
"alias": "placeholder";
|
|
132
|
+
"required": false;
|
|
133
|
+
"isSignal": true;
|
|
134
|
+
};
|
|
135
|
+
"size": {
|
|
136
|
+
"alias": "size";
|
|
137
|
+
"required": false;
|
|
138
|
+
"isSignal": true;
|
|
139
|
+
};
|
|
140
|
+
"disabled": {
|
|
141
|
+
"alias": "disabled";
|
|
142
|
+
"required": false;
|
|
143
|
+
"isSignal": true;
|
|
144
|
+
};
|
|
145
|
+
"invalid": {
|
|
146
|
+
"alias": "invalid";
|
|
147
|
+
"required": false;
|
|
148
|
+
"isSignal": true;
|
|
149
|
+
};
|
|
150
|
+
"touched": {
|
|
151
|
+
"alias": "touched";
|
|
152
|
+
"required": false;
|
|
153
|
+
"isSignal": true;
|
|
154
|
+
};
|
|
155
|
+
"required": {
|
|
156
|
+
"alias": "required";
|
|
157
|
+
"required": false;
|
|
158
|
+
"isSignal": true;
|
|
159
|
+
};
|
|
160
|
+
"emptyText": {
|
|
161
|
+
"alias": "emptyText";
|
|
162
|
+
"required": false;
|
|
163
|
+
"isSignal": true;
|
|
164
|
+
};
|
|
165
|
+
"ariaLabel": {
|
|
166
|
+
"alias": "aria-label";
|
|
167
|
+
"required": false;
|
|
168
|
+
"isSignal": true;
|
|
169
|
+
};
|
|
170
|
+
"ariaLabelledby": {
|
|
171
|
+
"alias": "aria-labelledby";
|
|
172
|
+
"required": false;
|
|
173
|
+
"isSignal": true;
|
|
174
|
+
};
|
|
175
|
+
}, {}, never, never, true, never>;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Editable combobox with list autocomplete (APG): type to filter, pick with arrows + Enter or
|
|
179
|
+
* click. The value is always one of the options; free text reverts on blur. Spec: specs/select.md
|
|
180
|
+
*/
|
|
181
|
+
export declare class VdCombobox extends VdListboxBase {
|
|
182
|
+
readonly value: import("@angular/core").ModelSignal<string | null>;
|
|
183
|
+
isSelected(option: VdOption): boolean;
|
|
184
|
+
writeValue(value: string | null): void;
|
|
185
|
+
choose(option: VdOption): void;
|
|
186
|
+
private readonly fieldRef;
|
|
187
|
+
private readonly inputRef;
|
|
188
|
+
private readonly list;
|
|
189
|
+
/** Text being typed; `null` when not filtering (the input shows the selected label). */
|
|
190
|
+
private readonly query;
|
|
191
|
+
protected readonly inputText: import("@angular/core").Signal<string>;
|
|
192
|
+
protected listEl(): HTMLElement | undefined;
|
|
193
|
+
protected anchorEl(): HTMLElement | undefined;
|
|
194
|
+
focus(): void;
|
|
195
|
+
isVisible(option: VdOption): boolean;
|
|
196
|
+
protected onChosen(): void;
|
|
197
|
+
protected onClosed(): void;
|
|
198
|
+
/** Whether the list was open when the press started (light dismiss may close it first). */
|
|
199
|
+
private wasOpen;
|
|
200
|
+
protected onFieldPointerDown(event: PointerEvent): void;
|
|
201
|
+
protected onFieldClick(event: MouseEvent): void;
|
|
202
|
+
protected onInput(event: Event): void;
|
|
203
|
+
protected onBlur(): void;
|
|
204
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
205
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdCombobox, never>;
|
|
206
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdCombobox, "vd-combobox", never, {
|
|
207
|
+
"value": {
|
|
208
|
+
"alias": "value";
|
|
209
|
+
"required": false;
|
|
210
|
+
"isSignal": true;
|
|
211
|
+
};
|
|
212
|
+
}, {
|
|
213
|
+
"value": "valueChange";
|
|
214
|
+
}, never, ["*"], true, never>;
|
|
215
|
+
}
|
|
216
|
+
/** Searchable multiple selection. Spec: specs/multi-select.md. */
|
|
217
|
+
export declare class VdMultiSelect extends VdListboxBase<string[]> {
|
|
218
|
+
readonly value: import("@angular/core").ModelSignal<string[]>;
|
|
219
|
+
readonly removeLabel: import("@angular/core").InputSignal<((label: string) => string) | undefined>;
|
|
220
|
+
readonly selectionLabel: import("@angular/core").InputSignal<((count: number) => string) | undefined>;
|
|
221
|
+
/** Text inputs resolved against the active VD_LOCALE. */
|
|
222
|
+
protected readonly multiTexts: import("@angular/core").Signal<Pick<{
|
|
223
|
+
removeLabel: (label: string) => string;
|
|
224
|
+
selectionLabel: (count: number) => string;
|
|
225
|
+
}, "removeLabel" | "selectionLabel">>;
|
|
226
|
+
private readonly fieldRef;
|
|
227
|
+
private readonly inputRef;
|
|
228
|
+
private readonly list;
|
|
229
|
+
protected readonly query: import("@angular/core").WritableSignal<string>;
|
|
230
|
+
protected readonly summaryId: string;
|
|
231
|
+
protected readonly descriptionIds: import("@angular/core").Signal<string>;
|
|
232
|
+
protected readonly selectedItems: import("@angular/core").Signal<{
|
|
233
|
+
value: string;
|
|
234
|
+
label: string;
|
|
235
|
+
disabled: boolean;
|
|
236
|
+
}[]>;
|
|
237
|
+
constructor();
|
|
238
|
+
protected listEl(): HTMLElement | undefined;
|
|
239
|
+
protected anchorEl(): HTMLElement | undefined;
|
|
240
|
+
focus(): void;
|
|
241
|
+
isSelected(option: VdOption): boolean;
|
|
242
|
+
isVisible(option: VdOption): boolean;
|
|
243
|
+
choose(option: VdOption): void;
|
|
244
|
+
writeValue(value: string[] | null): void;
|
|
245
|
+
protected remove(value: string): void;
|
|
246
|
+
protected onInput(event: Event): void;
|
|
247
|
+
protected onFocusOut(event: FocusEvent): void;
|
|
248
|
+
protected onFieldPointerDown(event: PointerEvent): void;
|
|
249
|
+
protected onClosed(): void;
|
|
250
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
251
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdMultiSelect, never>;
|
|
252
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdMultiSelect, "vd-multi-select", never, {
|
|
253
|
+
"value": {
|
|
254
|
+
"alias": "value";
|
|
255
|
+
"required": false;
|
|
256
|
+
"isSignal": true;
|
|
257
|
+
};
|
|
258
|
+
"removeLabel": {
|
|
259
|
+
"alias": "removeLabel";
|
|
260
|
+
"required": false;
|
|
261
|
+
"isSignal": true;
|
|
262
|
+
};
|
|
263
|
+
"selectionLabel": {
|
|
264
|
+
"alias": "selectionLabel";
|
|
265
|
+
"required": false;
|
|
266
|
+
"isSignal": true;
|
|
267
|
+
};
|
|
268
|
+
}, {
|
|
269
|
+
"value": "valueChange";
|
|
270
|
+
}, never, ["*"], true, never>;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Select-only combobox (APG): a button that opens a listbox; focus stays on the button and the
|
|
274
|
+
* active option is exposed with aria-activedescendant. Spec: specs/select.md
|
|
275
|
+
*/
|
|
276
|
+
export declare class VdSelect extends VdListboxBase {
|
|
277
|
+
readonly value: import("@angular/core").ModelSignal<string | null>;
|
|
278
|
+
isSelected(option: VdOption): boolean;
|
|
279
|
+
writeValue(value: string | null): void;
|
|
280
|
+
choose(option: VdOption): void;
|
|
281
|
+
private readonly trigger;
|
|
282
|
+
private readonly list;
|
|
283
|
+
/** Light dismiss closes the list on pointerdown; the following click must not reopen it. */
|
|
284
|
+
protected wasOpen: boolean;
|
|
285
|
+
protected listEl(): HTMLElement | undefined;
|
|
286
|
+
protected anchorEl(): HTMLElement | undefined;
|
|
287
|
+
focus(): void;
|
|
288
|
+
protected onClick(): void;
|
|
289
|
+
protected onBlur(): void;
|
|
290
|
+
protected onClosed(): void;
|
|
291
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
292
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdSelect, never>;
|
|
293
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdSelect, "vd-select", never, {
|
|
294
|
+
"value": {
|
|
295
|
+
"alias": "value";
|
|
296
|
+
"required": false;
|
|
297
|
+
"isSignal": true;
|
|
298
|
+
};
|
|
299
|
+
}, {
|
|
300
|
+
"value": "valueChange";
|
|
301
|
+
}, never, ["*"], true, never>;
|
|
302
|
+
}
|
|
303
|
+
export type { VdSelectSize };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { TemplateRef } from "@angular/core";
|
|
3
|
+
type VdSidebarMode = 'docked' | 'drawer';
|
|
4
|
+
/** Sidebar content, authored once and rendered either docked or inside the drawer. */
|
|
5
|
+
export declare class VdSidebar {
|
|
6
|
+
readonly template: TemplateRef<any>;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdSidebar, never>;
|
|
8
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdSidebar, "ng-template[vdSidebar]", never, {}, {}, never, never, true, never>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* App shell: docked sidebar (collapsible to an icon rail) on wide viewports, start-edge
|
|
12
|
+
* Dialog drawer on narrow ones. The breakpoint lives in CSS. Spec: specs/sidebar.md
|
|
13
|
+
*/
|
|
14
|
+
export declare class VdSidebarLayout {
|
|
15
|
+
/** Drawer dialog title. */
|
|
16
|
+
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
17
|
+
/** Accessible name of the drawer close button. */
|
|
18
|
+
readonly closeLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
19
|
+
/** Text inputs resolved against the active VD_LOCALE. */
|
|
20
|
+
protected readonly t: import("@angular/core").Signal<Pick<{
|
|
21
|
+
label: string;
|
|
22
|
+
closeLabel: string;
|
|
23
|
+
}, "label" | "closeLabel">>;
|
|
24
|
+
/** Docked rail state. */
|
|
25
|
+
readonly collapsed: import("@angular/core").ModelSignal<boolean>;
|
|
26
|
+
readonly sidebarId: string;
|
|
27
|
+
readonly mode: import("@angular/core").WritableSignal<VdSidebarMode>;
|
|
28
|
+
readonly drawerOpen: import("@angular/core").WritableSignal<boolean>;
|
|
29
|
+
/** Collapsed rail is only visible while docked; the drawer always shows full content. */
|
|
30
|
+
readonly rail: import("@angular/core").Signal<boolean>;
|
|
31
|
+
protected readonly content: import("@angular/core").Signal<VdSidebar | undefined>;
|
|
32
|
+
private readonly docked;
|
|
33
|
+
private readonly drawer;
|
|
34
|
+
private readonly drawerBody;
|
|
35
|
+
private readonly el;
|
|
36
|
+
constructor();
|
|
37
|
+
/** Collapses/expands the rail when docked, opens the drawer otherwise. */
|
|
38
|
+
toggle(): void;
|
|
39
|
+
/** Following a link closes the drawer; modified clicks open elsewhere and keep it open. */
|
|
40
|
+
private closeOnNavigate;
|
|
41
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdSidebarLayout, never>;
|
|
42
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdSidebarLayout, "vd-sidebar-layout", never, {
|
|
43
|
+
"label": {
|
|
44
|
+
"alias": "label";
|
|
45
|
+
"required": false;
|
|
46
|
+
"isSignal": true;
|
|
47
|
+
};
|
|
48
|
+
"closeLabel": {
|
|
49
|
+
"alias": "closeLabel";
|
|
50
|
+
"required": false;
|
|
51
|
+
"isSignal": true;
|
|
52
|
+
};
|
|
53
|
+
"collapsed": {
|
|
54
|
+
"alias": "collapsed";
|
|
55
|
+
"required": false;
|
|
56
|
+
"isSignal": true;
|
|
57
|
+
};
|
|
58
|
+
}, {
|
|
59
|
+
"collapsed": "collapsedChange";
|
|
60
|
+
}, ["content"], ["*"], true, never>;
|
|
61
|
+
}
|
|
62
|
+
/** Toggles the rail (docked) or opens the drawer (narrow viewports). */
|
|
63
|
+
export declare class VdSidebarToggle {
|
|
64
|
+
protected readonly layout: VdSidebarLayout;
|
|
65
|
+
protected readonly expanded: import("@angular/core").Signal<boolean>;
|
|
66
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdSidebarToggle, never>;
|
|
67
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdSidebarToggle, "button[vdSidebarToggle]", never, {}, {}, never, never, true, never>;
|
|
68
|
+
}
|
|
69
|
+
export declare const VD_SIDEBAR: readonly [typeof VdSidebarLayout, typeof VdSidebar, typeof VdSidebarToggle];
|
|
70
|
+
export type { VdSidebarMode };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
type VdSkeletonShape = 'text' | 'circle' | 'rectangle';
|
|
3
|
+
type VdSkeletonSize = 'sm' | 'md' | 'lg';
|
|
4
|
+
/** Decorative placeholder. Loading status and lifecycle belong to its consumer. */
|
|
5
|
+
export declare class VdSkeleton {
|
|
6
|
+
readonly shape: import("@angular/core").InputSignal<VdSkeletonShape | null>;
|
|
7
|
+
readonly size: import("@angular/core").InputSignal<VdSkeletonSize>;
|
|
8
|
+
readonly animated: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdSkeleton, never>;
|
|
10
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdSkeleton, "[vdSkeleton]", never, {
|
|
11
|
+
"shape": {
|
|
12
|
+
"alias": "shape";
|
|
13
|
+
"required": false;
|
|
14
|
+
"isSignal": true;
|
|
15
|
+
};
|
|
16
|
+
"size": {
|
|
17
|
+
"alias": "size";
|
|
18
|
+
"required": false;
|
|
19
|
+
"isSignal": true;
|
|
20
|
+
};
|
|
21
|
+
"animated": {
|
|
22
|
+
"alias": "animated";
|
|
23
|
+
"required": false;
|
|
24
|
+
"isSignal": true;
|
|
25
|
+
};
|
|
26
|
+
}, {}, never, never, true, never>;
|
|
27
|
+
}
|
|
28
|
+
export type { VdSkeletonShape, VdSkeletonSize };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { VdFieldControlBase } from "@vadem/ui/field";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/** Filled share of a range input in percent (0-100), from its min/max/value. */
|
|
4
|
+
export declare function vdSliderFill(value: number, min: number, max: number): number;
|
|
5
|
+
/**
|
|
6
|
+
* Styles a native `<input type="range">`. Value, keyboard (arrows, PageUp/Down, Home/End),
|
|
7
|
+
* forms and labelling stay native; the directive only keeps the filled part of the track in
|
|
8
|
+
* sync (`--vd-slider-fill`) for engines without a native progress pseudo-element.
|
|
9
|
+
* Spec: specs/slider.md
|
|
10
|
+
*/
|
|
11
|
+
export declare class VdSlider extends VdFieldControlBase {
|
|
12
|
+
private readonly el;
|
|
13
|
+
constructor();
|
|
14
|
+
protected sync(): void;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdSlider, never>;
|
|
16
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdSlider, "input[type=range][vdSlider]", never, {}, {}, never, never, true, never>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { VdOrientation } from "@vadem/ui/keyboard";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
interface VdSplitterBounds {
|
|
4
|
+
min: number;
|
|
5
|
+
max: number;
|
|
6
|
+
}
|
|
7
|
+
/** Nonzero panes keep their scrollable content reachable; invalid/reversed bounds become fixed. */
|
|
8
|
+
declare function vdSplitterBounds(min: number, max: number): VdSplitterBounds;
|
|
9
|
+
declare function vdSplitterValue(value: number, bounds: VdSplitterBounds): number;
|
|
10
|
+
declare function vdSplitterKey(key: string, value: number, bounds: VdSplitterBounds, orientation: 'horizontal' | 'vertical', dir: 'ltr' | 'rtl', step: number): number | null;
|
|
11
|
+
declare function vdSplitterDrag(value: number, delta: number, span: number, bounds: VdSplitterBounds, reverse: boolean): number;
|
|
12
|
+
export declare class VdSplitter {
|
|
13
|
+
readonly value: import("@angular/core").ModelSignal<number>;
|
|
14
|
+
readonly min: import("@angular/core").InputSignal<number>;
|
|
15
|
+
readonly max: import("@angular/core").InputSignal<number>;
|
|
16
|
+
readonly step: import("@angular/core").InputSignal<number>;
|
|
17
|
+
/** Layout axis: horizontal means side by side, vertical means stacked panes. */
|
|
18
|
+
readonly orientation: import("@angular/core").InputSignal<VdOrientation>;
|
|
19
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
20
|
+
readonly dragging: import("@angular/core").WritableSignal<boolean>;
|
|
21
|
+
readonly bounds: import("@angular/core").Signal<VdSplitterBounds>;
|
|
22
|
+
readonly position: import("@angular/core").Signal<number>;
|
|
23
|
+
private readonly descendants;
|
|
24
|
+
readonly panes: import("@angular/core").Signal<VdSplitterPane[]>;
|
|
25
|
+
readonly locked: import("@angular/core").Signal<boolean>;
|
|
26
|
+
readonly element: HTMLElement;
|
|
27
|
+
resize(value: number): void;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdSplitter, never>;
|
|
29
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdSplitter, "[vdSplitter]", ["vdSplitter"], {
|
|
30
|
+
"value": {
|
|
31
|
+
"alias": "value";
|
|
32
|
+
"required": false;
|
|
33
|
+
"isSignal": true;
|
|
34
|
+
};
|
|
35
|
+
"min": {
|
|
36
|
+
"alias": "min";
|
|
37
|
+
"required": false;
|
|
38
|
+
"isSignal": true;
|
|
39
|
+
};
|
|
40
|
+
"max": {
|
|
41
|
+
"alias": "max";
|
|
42
|
+
"required": false;
|
|
43
|
+
"isSignal": true;
|
|
44
|
+
};
|
|
45
|
+
"step": {
|
|
46
|
+
"alias": "step";
|
|
47
|
+
"required": false;
|
|
48
|
+
"isSignal": true;
|
|
49
|
+
};
|
|
50
|
+
"orientation": {
|
|
51
|
+
"alias": "orientation";
|
|
52
|
+
"required": false;
|
|
53
|
+
"isSignal": true;
|
|
54
|
+
};
|
|
55
|
+
"disabled": {
|
|
56
|
+
"alias": "disabled";
|
|
57
|
+
"required": false;
|
|
58
|
+
"isSignal": true;
|
|
59
|
+
};
|
|
60
|
+
}, {
|
|
61
|
+
"value": "valueChange";
|
|
62
|
+
}, ["descendants"], never, true, never>;
|
|
63
|
+
}
|
|
64
|
+
export declare class VdSplitterPane {
|
|
65
|
+
readonly splitter: VdSplitter;
|
|
66
|
+
readonly id: import("@angular/core").InputSignal<string>;
|
|
67
|
+
readonly element: HTMLElement;
|
|
68
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdSplitterPane, never>;
|
|
69
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdSplitterPane, "[vdSplitterPane]", never, {
|
|
70
|
+
"id": {
|
|
71
|
+
"alias": "id";
|
|
72
|
+
"required": false;
|
|
73
|
+
"isSignal": true;
|
|
74
|
+
};
|
|
75
|
+
}, {}, never, never, true, never>;
|
|
76
|
+
}
|
|
77
|
+
export declare class VdSplitterHandle {
|
|
78
|
+
/** Match the primary pane's name; consumers can provide aria-labelledby for its heading. */
|
|
79
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
80
|
+
readonly splitter: VdSplitter;
|
|
81
|
+
private readonly element;
|
|
82
|
+
private drag;
|
|
83
|
+
constructor();
|
|
84
|
+
private direction;
|
|
85
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
86
|
+
protected onPointerDown(event: PointerEvent): void;
|
|
87
|
+
protected onPointerMove(event: PointerEvent): void;
|
|
88
|
+
protected onPointerEnd(event: PointerEvent): void;
|
|
89
|
+
private finish;
|
|
90
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdSplitterHandle, never>;
|
|
91
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdSplitterHandle, "[vdSplitterHandle]", never, {
|
|
92
|
+
"label": {
|
|
93
|
+
"alias": "label";
|
|
94
|
+
"required": true;
|
|
95
|
+
"isSignal": true;
|
|
96
|
+
};
|
|
97
|
+
}, {}, never, never, true, never>;
|
|
98
|
+
}
|
|
99
|
+
export declare const VD_SPLITTER: readonly [typeof VdSplitter, typeof VdSplitterPane, typeof VdSplitterHandle];
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { VdBadgeVariant } from "@vadem/ui/badge";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
type VdStatTrend = 'up' | 'down' | 'flat';
|
|
4
|
+
/** Whether the change is good news; defaults from the trend (up = positive). */
|
|
5
|
+
type VdStatSentiment = 'positive' | 'negative' | 'neutral';
|
|
6
|
+
type VdStatSize = 'sm' | 'md';
|
|
7
|
+
/**
|
|
8
|
+
* A key figure: label, value, optional change and caption. Values arrive formatted by the
|
|
9
|
+
* application (Intl). Spec: specs/stat.md
|
|
10
|
+
*/
|
|
11
|
+
export declare class VdStat {
|
|
12
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
13
|
+
/** Formatted value, e.g. "₴ 48 920". */
|
|
14
|
+
readonly value: import("@angular/core").InputSignal<string>;
|
|
15
|
+
/** Formatted change, e.g. "+12,4%". */
|
|
16
|
+
readonly delta: import("@angular/core").InputSignal<string | undefined>;
|
|
17
|
+
readonly trend: import("@angular/core").InputSignal<VdStatTrend>;
|
|
18
|
+
readonly sentiment: import("@angular/core").InputSignal<VdStatSentiment | undefined>;
|
|
19
|
+
readonly caption: import("@angular/core").InputSignal<string | undefined>;
|
|
20
|
+
readonly size: import("@angular/core").InputSignal<VdStatSize>;
|
|
21
|
+
/** Placeholders while the figure loads; the label stays visible. */
|
|
22
|
+
readonly loading: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
23
|
+
readonly increaseLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
24
|
+
readonly decreaseLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
25
|
+
readonly unchangedLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
26
|
+
/** Text inputs resolved against the active VD_LOCALE. */
|
|
27
|
+
protected readonly t: import("@angular/core").Signal<Pick<{
|
|
28
|
+
increaseLabel: string;
|
|
29
|
+
decreaseLabel: string;
|
|
30
|
+
unchangedLabel: string;
|
|
31
|
+
}, "increaseLabel" | "decreaseLabel" | "unchangedLabel">>;
|
|
32
|
+
protected readonly resolvedSentiment: import("@angular/core").Signal<VdStatSentiment>;
|
|
33
|
+
/** The change uses the library's Badge, coloured by sentiment. */
|
|
34
|
+
protected readonly badgeVariant: import("@angular/core").Signal<VdBadgeVariant>;
|
|
35
|
+
/**
|
|
36
|
+
* Numbers and currency signs have no strong direction, so an isolated value would inherit the
|
|
37
|
+
* page's RTL and reverse "₴ 48 920". Values with RTL letters ("48 ر.س") stay RTL.
|
|
38
|
+
*/
|
|
39
|
+
protected directionOf(text: string): 'ltr' | 'rtl';
|
|
40
|
+
/** Direction in words: color and arrow are only extra cues. */
|
|
41
|
+
protected readonly trendName: import("@angular/core").Signal<string>;
|
|
42
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdStat, never>;
|
|
43
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdStat, "vd-stat", never, {
|
|
44
|
+
"label": {
|
|
45
|
+
"alias": "label";
|
|
46
|
+
"required": true;
|
|
47
|
+
"isSignal": true;
|
|
48
|
+
};
|
|
49
|
+
"value": {
|
|
50
|
+
"alias": "value";
|
|
51
|
+
"required": false;
|
|
52
|
+
"isSignal": true;
|
|
53
|
+
};
|
|
54
|
+
"delta": {
|
|
55
|
+
"alias": "delta";
|
|
56
|
+
"required": false;
|
|
57
|
+
"isSignal": true;
|
|
58
|
+
};
|
|
59
|
+
"trend": {
|
|
60
|
+
"alias": "trend";
|
|
61
|
+
"required": false;
|
|
62
|
+
"isSignal": true;
|
|
63
|
+
};
|
|
64
|
+
"sentiment": {
|
|
65
|
+
"alias": "sentiment";
|
|
66
|
+
"required": false;
|
|
67
|
+
"isSignal": true;
|
|
68
|
+
};
|
|
69
|
+
"caption": {
|
|
70
|
+
"alias": "caption";
|
|
71
|
+
"required": false;
|
|
72
|
+
"isSignal": true;
|
|
73
|
+
};
|
|
74
|
+
"size": {
|
|
75
|
+
"alias": "size";
|
|
76
|
+
"required": false;
|
|
77
|
+
"isSignal": true;
|
|
78
|
+
};
|
|
79
|
+
"loading": {
|
|
80
|
+
"alias": "loading";
|
|
81
|
+
"required": false;
|
|
82
|
+
"isSignal": true;
|
|
83
|
+
};
|
|
84
|
+
"increaseLabel": {
|
|
85
|
+
"alias": "increaseLabel";
|
|
86
|
+
"required": false;
|
|
87
|
+
"isSignal": true;
|
|
88
|
+
};
|
|
89
|
+
"decreaseLabel": {
|
|
90
|
+
"alias": "decreaseLabel";
|
|
91
|
+
"required": false;
|
|
92
|
+
"isSignal": true;
|
|
93
|
+
};
|
|
94
|
+
"unchangedLabel": {
|
|
95
|
+
"alias": "unchangedLabel";
|
|
96
|
+
"required": false;
|
|
97
|
+
"isSignal": true;
|
|
98
|
+
};
|
|
99
|
+
}, {}, never, ["*"], true, never>;
|
|
100
|
+
}
|
|
101
|
+
export type { VdStatSentiment, VdStatSize, VdStatTrend };
|