@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,73 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Whether a file matches an `accept` attribute value, the way the file picker filters:
|
|
4
|
+
* extensions (".pdf"), exact MIME types ("image/png") and wildcards ("image/*"), comma-separated.
|
|
5
|
+
* An empty `accept` accepts everything. Dropped files bypass the picker, so they are checked here.
|
|
6
|
+
*/
|
|
7
|
+
export declare function vdAcceptsFile(file: {
|
|
8
|
+
name: string;
|
|
9
|
+
type: string;
|
|
10
|
+
}, accept: string): boolean;
|
|
11
|
+
interface VdFileCheck {
|
|
12
|
+
accept?: string;
|
|
13
|
+
/** Bytes. */
|
|
14
|
+
maxSize?: number;
|
|
15
|
+
/** Keep at most this many accepted files (e.g. 1 when `multiple` is off). */
|
|
16
|
+
maxFiles?: number;
|
|
17
|
+
}
|
|
18
|
+
type VdFileRejection = 'type' | 'size' | 'count';
|
|
19
|
+
/** Splits files into accepted and rejected (with the reason), in their original order. */
|
|
20
|
+
export declare function vdCheckFiles<T extends {
|
|
21
|
+
name: string;
|
|
22
|
+
type: string;
|
|
23
|
+
size: number;
|
|
24
|
+
}>(files: readonly T[], check: VdFileCheck): {
|
|
25
|
+
accepted: T[];
|
|
26
|
+
rejected: {
|
|
27
|
+
file: T;
|
|
28
|
+
reason: VdFileRejection;
|
|
29
|
+
}[];
|
|
30
|
+
};
|
|
31
|
+
interface VdRejectedFile {
|
|
32
|
+
file: File;
|
|
33
|
+
reason: VdFileRejection;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* File picker and drop target on a `<label>` that wraps a native `<input type="file">`.
|
|
37
|
+
* The input stays the control (keyboard, `accept`, `multiple`, form submission); the label is
|
|
38
|
+
* the click and drop area. Dropped files are checked against `accept` (the picker does that
|
|
39
|
+
* for chosen files), `maxSize` and `multiple`, and written back to the input.
|
|
40
|
+
* Spec: specs/dropzone.md
|
|
41
|
+
*/
|
|
42
|
+
export declare class VdDropzone {
|
|
43
|
+
/** Largest accepted file in bytes. */
|
|
44
|
+
readonly maxSize: import("@angular/core").InputSignalWithTransform<number | undefined, unknown>;
|
|
45
|
+
/** Accepted files, after each pick or drop. */
|
|
46
|
+
readonly filesSelected: import("@angular/core").OutputEmitterRef<File[]>;
|
|
47
|
+
/** Files that didn't pass `accept`, `maxSize` or the single-file limit. */
|
|
48
|
+
readonly filesRejected: import("@angular/core").OutputEmitterRef<VdRejectedFile[]>;
|
|
49
|
+
protected readonly dragging: import("@angular/core").WritableSignal<boolean>;
|
|
50
|
+
private readonly el;
|
|
51
|
+
/** dragenter/leave fire for every child; count to know when the pointer really left. */
|
|
52
|
+
private depth;
|
|
53
|
+
private get control();
|
|
54
|
+
protected onDragEnter(event: DragEvent): void;
|
|
55
|
+
protected onDragOver(event: DragEvent): void;
|
|
56
|
+
protected onDragLeave(): void;
|
|
57
|
+
protected onDrop(event: DragEvent): void;
|
|
58
|
+
protected onChange(event: Event): void;
|
|
59
|
+
private emit;
|
|
60
|
+
private acceptsDrag;
|
|
61
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdDropzone, never>;
|
|
62
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdDropzone, "label[vdDropzone]", never, {
|
|
63
|
+
"maxSize": {
|
|
64
|
+
"alias": "maxSize";
|
|
65
|
+
"required": false;
|
|
66
|
+
"isSignal": true;
|
|
67
|
+
};
|
|
68
|
+
}, {
|
|
69
|
+
"filesSelected": "filesSelected";
|
|
70
|
+
"filesRejected": "filesRejected";
|
|
71
|
+
}, never, never, true, never>;
|
|
72
|
+
}
|
|
73
|
+
export type { VdFileCheck, VdFileRejection, VdRejectedFile };
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
type VdEditableTextSave = (value: string) => void | Promise<void>;
|
|
3
|
+
/** A committed value with a separate draft and explicit application-owned persistence. */
|
|
4
|
+
export declare class VdEditableText {
|
|
5
|
+
readonly value: import("@angular/core").ModelSignal<string>;
|
|
6
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
7
|
+
readonly save: import("@angular/core").InputSignal<VdEditableTextSave | undefined>;
|
|
8
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
9
|
+
readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
10
|
+
readonly maxLength: import("@angular/core").InputSignal<number | null>;
|
|
11
|
+
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
12
|
+
readonly emptyText: import("@angular/core").InputSignal<string | undefined>;
|
|
13
|
+
readonly editLabel: import("@angular/core").InputSignal<((label: string, value: string) => string) | undefined>;
|
|
14
|
+
readonly saveLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
15
|
+
readonly cancelLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
16
|
+
readonly savingText: import("@angular/core").InputSignal<string | undefined>;
|
|
17
|
+
readonly savedText: import("@angular/core").InputSignal<string | undefined>;
|
|
18
|
+
readonly saveErrorText: import("@angular/core").InputSignal<string | undefined>;
|
|
19
|
+
readonly requiredText: import("@angular/core").InputSignal<string | undefined>;
|
|
20
|
+
readonly tooLongText: import("@angular/core").InputSignal<((limit: number) => string) | undefined>;
|
|
21
|
+
readonly saveFailed: import("@angular/core").OutputEmitterRef<unknown>;
|
|
22
|
+
protected readonly t: import("@angular/core").Signal<Pick<{
|
|
23
|
+
emptyText: string;
|
|
24
|
+
editLabel: (label: string, value: string) => string;
|
|
25
|
+
saveLabel: string;
|
|
26
|
+
cancelLabel: string;
|
|
27
|
+
savingText: string;
|
|
28
|
+
savedText: string;
|
|
29
|
+
saveErrorText: string;
|
|
30
|
+
requiredText: string;
|
|
31
|
+
tooLongText: (limit: number) => string;
|
|
32
|
+
}, "emptyText" | "editLabel" | "saveLabel" | "cancelLabel" | "savingText" | "savedText" | "saveErrorText" | "requiredText" | "tooLongText">>;
|
|
33
|
+
protected readonly editing: import("@angular/core").WritableSignal<boolean>;
|
|
34
|
+
protected readonly saving: import("@angular/core").WritableSignal<boolean>;
|
|
35
|
+
protected readonly draft: import("@angular/core").WritableSignal<string>;
|
|
36
|
+
protected readonly issue: import("@angular/core").WritableSignal<"required" | "tooLong" | "save" | null>;
|
|
37
|
+
protected readonly limit: import("@angular/core").Signal<number | null>;
|
|
38
|
+
protected readonly feedback: import("@angular/core").Signal<string>;
|
|
39
|
+
protected readonly announcement: import("@angular/core").WritableSignal<string>;
|
|
40
|
+
protected composing: boolean;
|
|
41
|
+
private readonly host;
|
|
42
|
+
private readonly editor;
|
|
43
|
+
private readonly trigger;
|
|
44
|
+
private readonly injector;
|
|
45
|
+
private destroyed;
|
|
46
|
+
constructor();
|
|
47
|
+
private focusAfterRender;
|
|
48
|
+
protected begin(): void;
|
|
49
|
+
protected changeDraft(event: Event): void;
|
|
50
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
51
|
+
protected cancel(): void;
|
|
52
|
+
protected commit(): Promise<void>;
|
|
53
|
+
private finish;
|
|
54
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdEditableText, never>;
|
|
55
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdEditableText, "vd-editable-text", never, {
|
|
56
|
+
"value": {
|
|
57
|
+
"alias": "value";
|
|
58
|
+
"required": false;
|
|
59
|
+
"isSignal": true;
|
|
60
|
+
};
|
|
61
|
+
"label": {
|
|
62
|
+
"alias": "label";
|
|
63
|
+
"required": true;
|
|
64
|
+
"isSignal": true;
|
|
65
|
+
};
|
|
66
|
+
"save": {
|
|
67
|
+
"alias": "save";
|
|
68
|
+
"required": false;
|
|
69
|
+
"isSignal": true;
|
|
70
|
+
};
|
|
71
|
+
"disabled": {
|
|
72
|
+
"alias": "disabled";
|
|
73
|
+
"required": false;
|
|
74
|
+
"isSignal": true;
|
|
75
|
+
};
|
|
76
|
+
"required": {
|
|
77
|
+
"alias": "required";
|
|
78
|
+
"required": false;
|
|
79
|
+
"isSignal": true;
|
|
80
|
+
};
|
|
81
|
+
"maxLength": {
|
|
82
|
+
"alias": "maxLength";
|
|
83
|
+
"required": false;
|
|
84
|
+
"isSignal": true;
|
|
85
|
+
};
|
|
86
|
+
"hint": {
|
|
87
|
+
"alias": "hint";
|
|
88
|
+
"required": false;
|
|
89
|
+
"isSignal": true;
|
|
90
|
+
};
|
|
91
|
+
"emptyText": {
|
|
92
|
+
"alias": "emptyText";
|
|
93
|
+
"required": false;
|
|
94
|
+
"isSignal": true;
|
|
95
|
+
};
|
|
96
|
+
"editLabel": {
|
|
97
|
+
"alias": "editLabel";
|
|
98
|
+
"required": false;
|
|
99
|
+
"isSignal": true;
|
|
100
|
+
};
|
|
101
|
+
"saveLabel": {
|
|
102
|
+
"alias": "saveLabel";
|
|
103
|
+
"required": false;
|
|
104
|
+
"isSignal": true;
|
|
105
|
+
};
|
|
106
|
+
"cancelLabel": {
|
|
107
|
+
"alias": "cancelLabel";
|
|
108
|
+
"required": false;
|
|
109
|
+
"isSignal": true;
|
|
110
|
+
};
|
|
111
|
+
"savingText": {
|
|
112
|
+
"alias": "savingText";
|
|
113
|
+
"required": false;
|
|
114
|
+
"isSignal": true;
|
|
115
|
+
};
|
|
116
|
+
"savedText": {
|
|
117
|
+
"alias": "savedText";
|
|
118
|
+
"required": false;
|
|
119
|
+
"isSignal": true;
|
|
120
|
+
};
|
|
121
|
+
"saveErrorText": {
|
|
122
|
+
"alias": "saveErrorText";
|
|
123
|
+
"required": false;
|
|
124
|
+
"isSignal": true;
|
|
125
|
+
};
|
|
126
|
+
"requiredText": {
|
|
127
|
+
"alias": "requiredText";
|
|
128
|
+
"required": false;
|
|
129
|
+
"isSignal": true;
|
|
130
|
+
};
|
|
131
|
+
"tooLongText": {
|
|
132
|
+
"alias": "tooLongText";
|
|
133
|
+
"required": false;
|
|
134
|
+
"isSignal": true;
|
|
135
|
+
};
|
|
136
|
+
}, {
|
|
137
|
+
"value": "valueChange";
|
|
138
|
+
"saveFailed": "saveFailed";
|
|
139
|
+
}, never, never, true, never>;
|
|
140
|
+
}
|
|
141
|
+
export type { VdEditableTextSave };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
type VdEmptyStateSize = 'sm' | 'md';
|
|
3
|
+
/**
|
|
4
|
+
* What to show when there is nothing yet (first run), nothing matches (filters), or nothing is
|
|
5
|
+
* left (inbox zero): an icon, a title, one sentence, and the next step. Spec: specs/empty-state.md
|
|
6
|
+
*/
|
|
7
|
+
export declare class VdEmptyState {
|
|
8
|
+
readonly icon: import("@angular/core").InputSignal<"activity" | "alert-circle" | "alert-triangle" | "arrow-down" | "arrow-left" | "arrow-right" | "arrow-up" | "arrow-up-down" | "bell" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "copy" | "credit-card" | "download" | "external-link" | "eye" | "eye-off" | "file" | "folder" | "git-branch" | "globe" | "info" | "key" | "layout-dashboard" | "loader" | "lock" | "log-out" | "mail" | "menu" | "minus" | "monitor" | "moon" | "more-horizontal" | "panel-left" | "pencil" | "plus" | "rocket" | "search" | "settings" | "shield" | "star" | "sun" | "trash" | "trending-down" | "trending-up" | "upload" | "user" | "users" | "x" | "x-circle" | null>;
|
|
9
|
+
/** `sm` fits table cells, cards and menus; `md` fills a page section. */
|
|
10
|
+
readonly size: import("@angular/core").InputSignal<VdEmptyStateSize>;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdEmptyState, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdEmptyState, "[vdEmptyState]", never, {
|
|
13
|
+
"icon": {
|
|
14
|
+
"alias": "icon";
|
|
15
|
+
"required": false;
|
|
16
|
+
"isSignal": true;
|
|
17
|
+
};
|
|
18
|
+
"size": {
|
|
19
|
+
"alias": "size";
|
|
20
|
+
"required": false;
|
|
21
|
+
"isSignal": true;
|
|
22
|
+
};
|
|
23
|
+
}, {}, never, ["*", "[slot=actions]"], true, never>;
|
|
24
|
+
}
|
|
25
|
+
export declare class VdEmptyStateTitle {
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdEmptyStateTitle, never>;
|
|
27
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdEmptyStateTitle, "[vdEmptyStateTitle]", never, {}, {}, never, never, true, never>;
|
|
28
|
+
}
|
|
29
|
+
export declare class VdEmptyStateDescription {
|
|
30
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdEmptyStateDescription, never>;
|
|
31
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdEmptyStateDescription, "[vdEmptyStateDescription]", never, {}, {}, never, never, true, never>;
|
|
32
|
+
}
|
|
33
|
+
export declare const VD_EMPTY_STATE: readonly [typeof VdEmptyState, typeof VdEmptyStateTitle, typeof VdEmptyStateDescription];
|
|
34
|
+
export type { VdEmptyStateSize };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/** Length-based plain-text disclosure with exact source preservation. */
|
|
3
|
+
export declare class VdExpandableText {
|
|
4
|
+
readonly text: import("@angular/core").InputSignal<string>;
|
|
5
|
+
readonly previewLength: import("@angular/core").InputSignal<number>;
|
|
6
|
+
readonly expanded: import("@angular/core").ModelSignal<boolean>;
|
|
7
|
+
readonly expandLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
8
|
+
readonly collapseLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
9
|
+
protected readonly t: import("@angular/core").Signal<Pick<{
|
|
10
|
+
expandLabel: string;
|
|
11
|
+
collapseLabel: string;
|
|
12
|
+
}, "expandLabel" | "collapseLabel">>;
|
|
13
|
+
protected readonly parts: import("@angular/core").Signal<{
|
|
14
|
+
preview: string;
|
|
15
|
+
rest: string;
|
|
16
|
+
}>;
|
|
17
|
+
protected readonly hasMore: import("@angular/core").Signal<boolean>;
|
|
18
|
+
protected readonly restId: string;
|
|
19
|
+
private readonly host;
|
|
20
|
+
private recoverFocus;
|
|
21
|
+
constructor();
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdExpandableText, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdExpandableText, "vd-expandable-text", never, {
|
|
24
|
+
"text": {
|
|
25
|
+
"alias": "text";
|
|
26
|
+
"required": true;
|
|
27
|
+
"isSignal": true;
|
|
28
|
+
};
|
|
29
|
+
"previewLength": {
|
|
30
|
+
"alias": "previewLength";
|
|
31
|
+
"required": false;
|
|
32
|
+
"isSignal": true;
|
|
33
|
+
};
|
|
34
|
+
"expanded": {
|
|
35
|
+
"alias": "expanded";
|
|
36
|
+
"required": false;
|
|
37
|
+
"isSignal": true;
|
|
38
|
+
};
|
|
39
|
+
"expandLabel": {
|
|
40
|
+
"alias": "expandLabel";
|
|
41
|
+
"required": false;
|
|
42
|
+
"isSignal": true;
|
|
43
|
+
};
|
|
44
|
+
"collapseLabel": {
|
|
45
|
+
"alias": "collapseLabel";
|
|
46
|
+
"required": false;
|
|
47
|
+
"isSignal": true;
|
|
48
|
+
};
|
|
49
|
+
}, {
|
|
50
|
+
"expanded": "expandedChange";
|
|
51
|
+
}, never, never, true, never>;
|
|
52
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { DestroyRef, InjectionToken, OnInit, Signal } from "@angular/core";
|
|
3
|
+
import { NgControl } from "@angular/forms";
|
|
4
|
+
/**
|
|
5
|
+
* Label that wraps a checkbox, switch or radio and its text. The whole label is the hit area;
|
|
6
|
+
* the text is the control's accessible name. Spec: specs/checkbox.md
|
|
7
|
+
*/
|
|
8
|
+
export declare class VdChoice {
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdChoice, never>;
|
|
10
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdChoice, "label[vdChoice]", never, {}, {}, never, never, true, never>;
|
|
11
|
+
}
|
|
12
|
+
/** What a form control exposes to its surrounding `vd-field`. */
|
|
13
|
+
interface VdFieldControl {
|
|
14
|
+
readonly id: Signal<string>;
|
|
15
|
+
readonly invalid: Signal<boolean>;
|
|
16
|
+
readonly required: Signal<boolean>;
|
|
17
|
+
readonly disabled: Signal<boolean>;
|
|
18
|
+
}
|
|
19
|
+
/** What `vd-field` exposes to the control inside it. */
|
|
20
|
+
interface VdFieldContext {
|
|
21
|
+
/** Space-separated ids for `aria-describedby` (hint or error), or null. */
|
|
22
|
+
readonly describedBy: Signal<string | null>;
|
|
23
|
+
register(control: VdFieldControl): void;
|
|
24
|
+
unregister(control: VdFieldControl): void;
|
|
25
|
+
}
|
|
26
|
+
export declare const VD_FIELD: InjectionToken<VdFieldContext>;
|
|
27
|
+
/** Deterministic per-app id. Same creation order on server and client keeps hydration stable. */
|
|
28
|
+
export declare function vdUniqueId(prefix: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Label, hint and error around one form control. Wires `for`, `aria-describedby`,
|
|
31
|
+
* and the required marker automatically. Spec: specs/field.md
|
|
32
|
+
*/
|
|
33
|
+
export declare class VdField implements VdFieldContext {
|
|
34
|
+
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
35
|
+
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
36
|
+
/** Additional descriptive IDs, e.g. a character counter; retained beside hint/error. */
|
|
37
|
+
readonly descriptionIds: import("@angular/core").InputSignal<string | undefined>;
|
|
38
|
+
/** Message shown while the control is invalid. Replaces the hint. */
|
|
39
|
+
readonly error: import("@angular/core").InputSignal<string | undefined>;
|
|
40
|
+
protected readonly control: import("@angular/core").WritableSignal<VdFieldControl | null>;
|
|
41
|
+
protected readonly hintId: string;
|
|
42
|
+
protected readonly errorId: string;
|
|
43
|
+
protected readonly showError: import("@angular/core").Signal<boolean>;
|
|
44
|
+
readonly describedBy: import("@angular/core").Signal<string | null>;
|
|
45
|
+
register(control: VdFieldControl): void;
|
|
46
|
+
unregister(control: VdFieldControl): void;
|
|
47
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdField, never>;
|
|
48
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdField, "vd-field", never, {
|
|
49
|
+
"label": {
|
|
50
|
+
"alias": "label";
|
|
51
|
+
"required": false;
|
|
52
|
+
"isSignal": true;
|
|
53
|
+
};
|
|
54
|
+
"hint": {
|
|
55
|
+
"alias": "hint";
|
|
56
|
+
"required": false;
|
|
57
|
+
"isSignal": true;
|
|
58
|
+
};
|
|
59
|
+
"descriptionIds": {
|
|
60
|
+
"alias": "descriptionIds";
|
|
61
|
+
"required": false;
|
|
62
|
+
"isSignal": true;
|
|
63
|
+
};
|
|
64
|
+
"error": {
|
|
65
|
+
"alias": "error";
|
|
66
|
+
"required": false;
|
|
67
|
+
"isSignal": true;
|
|
68
|
+
};
|
|
69
|
+
}, {}, never, ["*"], true, never>;
|
|
70
|
+
}
|
|
71
|
+
type VdFieldsetOrientation = 'vertical' | 'horizontal';
|
|
72
|
+
/**
|
|
73
|
+
* Legend, hint and error around a group of choices (radios, checkboxes). The group is named by
|
|
74
|
+
* the legend; hint and error describe the fieldset itself, so they are announced once when the
|
|
75
|
+
* group is entered, not on every option. Spec: specs/field.md
|
|
76
|
+
*/
|
|
77
|
+
export declare class VdFieldset implements VdFieldContext {
|
|
78
|
+
readonly legend: import("@angular/core").InputSignal<string | undefined>;
|
|
79
|
+
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
80
|
+
/** Shown while any control in the group is displayed invalid. */
|
|
81
|
+
readonly error: import("@angular/core").InputSignal<string | undefined>;
|
|
82
|
+
readonly orientation: import("@angular/core").InputSignal<VdFieldsetOrientation>;
|
|
83
|
+
protected readonly controls: import("@angular/core").WritableSignal<readonly VdFieldControl[]>;
|
|
84
|
+
protected readonly hintId: string;
|
|
85
|
+
protected readonly errorId: string;
|
|
86
|
+
protected readonly required: import("@angular/core").Signal<boolean>;
|
|
87
|
+
protected readonly showError: import("@angular/core").Signal<boolean>;
|
|
88
|
+
protected readonly groupDescribedBy: import("@angular/core").Signal<string | null>;
|
|
89
|
+
/** Controls aren't described individually: the fieldset carries the description. */
|
|
90
|
+
readonly describedBy: import("@angular/core").Signal<string | null>;
|
|
91
|
+
register(control: VdFieldControl): void;
|
|
92
|
+
unregister(control: VdFieldControl): void;
|
|
93
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdFieldset, never>;
|
|
94
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdFieldset, "fieldset[vdFieldset]", never, {
|
|
95
|
+
"legend": {
|
|
96
|
+
"alias": "legend";
|
|
97
|
+
"required": false;
|
|
98
|
+
"isSignal": true;
|
|
99
|
+
};
|
|
100
|
+
"hint": {
|
|
101
|
+
"alias": "hint";
|
|
102
|
+
"required": false;
|
|
103
|
+
"isSignal": true;
|
|
104
|
+
};
|
|
105
|
+
"error": {
|
|
106
|
+
"alias": "error";
|
|
107
|
+
"required": false;
|
|
108
|
+
"isSignal": true;
|
|
109
|
+
};
|
|
110
|
+
"orientation": {
|
|
111
|
+
"alias": "orientation";
|
|
112
|
+
"required": false;
|
|
113
|
+
"isSignal": true;
|
|
114
|
+
};
|
|
115
|
+
}, {}, never, ["*"], true, never>;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Shared behavior for controls on native form elements (input, checkbox, switch):
|
|
119
|
+
* displayed validity from Reactive/Template forms or Signal Forms, `vd-field` registration,
|
|
120
|
+
* and the ARIA/data attributes that go with it. Not part of the styling contract.
|
|
121
|
+
*/
|
|
122
|
+
export declare abstract class VdFieldControlBase implements OnInit {
|
|
123
|
+
/** Invalid state (e.g. a server error). Reactive/Template form validity is detected on its own. */
|
|
124
|
+
readonly invalid: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
125
|
+
/**
|
|
126
|
+
* Optional gate for `invalid`: when explicitly false the error isn't shown yet. Signal Forms
|
|
127
|
+
* binds `invalid`, `touched` and `required` here automatically (FormUiControl contract).
|
|
128
|
+
*/
|
|
129
|
+
readonly touched: import("@angular/core").InputSignal<boolean | undefined>;
|
|
130
|
+
readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
131
|
+
readonly id: import("@angular/core").InputSignal<string>;
|
|
132
|
+
protected readonly field: import("@vadem/ui/field").VdFieldContext | null;
|
|
133
|
+
private readonly ngControl;
|
|
134
|
+
private readonly formField;
|
|
135
|
+
private readonly destroyRef;
|
|
136
|
+
/** Mirrored Reactive/Template forms state; set once the control is resolved (ngOnInit). */
|
|
137
|
+
private readonly ngSource;
|
|
138
|
+
private readonly ngState;
|
|
139
|
+
/** Invalid as displayed: forced, or form-invalid after the user has touched the control. */
|
|
140
|
+
readonly showInvalid: Signal<boolean>;
|
|
141
|
+
private readonly fieldControl;
|
|
142
|
+
constructor();
|
|
143
|
+
ngOnInit(): void;
|
|
144
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdFieldControlBase, never>;
|
|
145
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VdFieldControlBase, never, never, {
|
|
146
|
+
"invalid": {
|
|
147
|
+
"alias": "invalid";
|
|
148
|
+
"required": false;
|
|
149
|
+
"isSignal": true;
|
|
150
|
+
};
|
|
151
|
+
"touched": {
|
|
152
|
+
"alias": "touched";
|
|
153
|
+
"required": false;
|
|
154
|
+
"isSignal": true;
|
|
155
|
+
};
|
|
156
|
+
"required": {
|
|
157
|
+
"alias": "required";
|
|
158
|
+
"required": false;
|
|
159
|
+
"isSignal": true;
|
|
160
|
+
};
|
|
161
|
+
"id": {
|
|
162
|
+
"alias": "id";
|
|
163
|
+
"required": false;
|
|
164
|
+
"isSignal": true;
|
|
165
|
+
};
|
|
166
|
+
}, {}, never, never, true, never>;
|
|
167
|
+
}
|
|
168
|
+
interface VdNgControlState {
|
|
169
|
+
invalid: boolean;
|
|
170
|
+
touched: boolean;
|
|
171
|
+
disabled: boolean;
|
|
172
|
+
required: boolean;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Mirrors a Reactive/Template forms control into a signal (NgControl isn't signal-based).
|
|
176
|
+
* Call once the control is resolved (ngOnInit or later). Returns a static empty state when
|
|
177
|
+
* there's no control or it's a Signal Forms shim without `events`.
|
|
178
|
+
*/
|
|
179
|
+
export declare function vdNgControlState(ngControl: NgControl | null, destroyRef: DestroyRef): Signal<VdNgControlState>;
|
|
180
|
+
export type { VdFieldContext, VdFieldControl, VdFieldsetOrientation, VdNgControlState };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { SafeResourceUrl } from "@angular/platform-browser";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
type PreviewState = 'empty' | 'preparing' | 'loading' | 'ready' | 'error' | 'unsupported' | 'pdf';
|
|
4
|
+
interface PreviewSource {
|
|
5
|
+
file: Blob;
|
|
6
|
+
url: string;
|
|
7
|
+
pdf: SafeResourceUrl | null;
|
|
8
|
+
}
|
|
9
|
+
/** Local file presentation. The caller owns file acquisition and validation. */
|
|
10
|
+
export declare class VdFilePreview {
|
|
11
|
+
readonly open: import("@angular/core").ModelSignal<boolean>;
|
|
12
|
+
readonly file: import("@angular/core").InputSignal<Blob | null>;
|
|
13
|
+
readonly name: import("@angular/core").InputSignal<string | undefined>;
|
|
14
|
+
readonly alt: import("@angular/core").InputSignal<string | undefined>;
|
|
15
|
+
readonly closeLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
16
|
+
readonly downloadLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
17
|
+
readonly loadingText: import("@angular/core").InputSignal<string | undefined>;
|
|
18
|
+
readonly errorText: import("@angular/core").InputSignal<string | undefined>;
|
|
19
|
+
readonly emptyText: import("@angular/core").InputSignal<string | undefined>;
|
|
20
|
+
readonly unsupportedText: import("@angular/core").InputSignal<string | undefined>;
|
|
21
|
+
readonly pdfText: import("@angular/core").InputSignal<string | undefined>;
|
|
22
|
+
readonly titleText: import("@angular/core").InputSignal<string | undefined>;
|
|
23
|
+
protected readonly t: import("@angular/core").Signal<Pick<{
|
|
24
|
+
title: string;
|
|
25
|
+
closeLabel: string;
|
|
26
|
+
downloadLabel: string;
|
|
27
|
+
loadingText: string;
|
|
28
|
+
errorText: string;
|
|
29
|
+
emptyText: string;
|
|
30
|
+
unsupportedText: string;
|
|
31
|
+
pdfText: string;
|
|
32
|
+
}, "title" | "closeLabel" | "downloadLabel" | "loadingText" | "errorText" | "emptyText" | "unsupportedText" | "pdfText">>;
|
|
33
|
+
protected readonly title: import("@angular/core").Signal<string>;
|
|
34
|
+
protected readonly filename: import("@angular/core").Signal<string>;
|
|
35
|
+
protected readonly kind: import("@angular/core").Signal<"unsupported" | "pdf" | "image">;
|
|
36
|
+
private readonly allocated;
|
|
37
|
+
protected readonly source: import("@angular/core").Signal<PreviewSource | null>;
|
|
38
|
+
protected readonly sources: import("@angular/core").Signal<PreviewSource[]>;
|
|
39
|
+
private readonly imageResult;
|
|
40
|
+
protected readonly state: import("@angular/core").Signal<PreviewState>;
|
|
41
|
+
constructor();
|
|
42
|
+
protected imageState(source: PreviewSource, state: 'ready' | 'error'): void;
|
|
43
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdFilePreview, never>;
|
|
44
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdFilePreview, "vd-file-preview", never, {
|
|
45
|
+
"open": {
|
|
46
|
+
"alias": "open";
|
|
47
|
+
"required": false;
|
|
48
|
+
"isSignal": true;
|
|
49
|
+
};
|
|
50
|
+
"file": {
|
|
51
|
+
"alias": "file";
|
|
52
|
+
"required": false;
|
|
53
|
+
"isSignal": true;
|
|
54
|
+
};
|
|
55
|
+
"name": {
|
|
56
|
+
"alias": "name";
|
|
57
|
+
"required": false;
|
|
58
|
+
"isSignal": true;
|
|
59
|
+
};
|
|
60
|
+
"alt": {
|
|
61
|
+
"alias": "alt";
|
|
62
|
+
"required": false;
|
|
63
|
+
"isSignal": true;
|
|
64
|
+
};
|
|
65
|
+
"closeLabel": {
|
|
66
|
+
"alias": "closeLabel";
|
|
67
|
+
"required": false;
|
|
68
|
+
"isSignal": true;
|
|
69
|
+
};
|
|
70
|
+
"downloadLabel": {
|
|
71
|
+
"alias": "downloadLabel";
|
|
72
|
+
"required": false;
|
|
73
|
+
"isSignal": true;
|
|
74
|
+
};
|
|
75
|
+
"loadingText": {
|
|
76
|
+
"alias": "loadingText";
|
|
77
|
+
"required": false;
|
|
78
|
+
"isSignal": true;
|
|
79
|
+
};
|
|
80
|
+
"errorText": {
|
|
81
|
+
"alias": "errorText";
|
|
82
|
+
"required": false;
|
|
83
|
+
"isSignal": true;
|
|
84
|
+
};
|
|
85
|
+
"emptyText": {
|
|
86
|
+
"alias": "emptyText";
|
|
87
|
+
"required": false;
|
|
88
|
+
"isSignal": true;
|
|
89
|
+
};
|
|
90
|
+
"unsupportedText": {
|
|
91
|
+
"alias": "unsupportedText";
|
|
92
|
+
"required": false;
|
|
93
|
+
"isSignal": true;
|
|
94
|
+
};
|
|
95
|
+
"pdfText": {
|
|
96
|
+
"alias": "pdfText";
|
|
97
|
+
"required": false;
|
|
98
|
+
"isSignal": true;
|
|
99
|
+
};
|
|
100
|
+
"titleText": {
|
|
101
|
+
"alias": "titleText";
|
|
102
|
+
"required": false;
|
|
103
|
+
"isSignal": true;
|
|
104
|
+
};
|
|
105
|
+
}, {
|
|
106
|
+
"open": "openChange";
|
|
107
|
+
}, never, never, true, never>;
|
|
108
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { PipeTransform } from "@angular/core";
|
|
3
|
+
type VdFileSizeSystem = 'decimal' | 'binary';
|
|
4
|
+
interface VdFileSizeOptions {
|
|
5
|
+
readonly locale?: string;
|
|
6
|
+
readonly system?: VdFileSizeSystem;
|
|
7
|
+
readonly maximumFractionDigits?: number;
|
|
8
|
+
readonly unknownText?: string;
|
|
9
|
+
}
|
|
10
|
+
/** Formats byte counts only; display strings are never parsed back into values. */
|
|
11
|
+
export declare function vdFormatFileSize(bytes: number | null | undefined, options?: VdFileSizeOptions): string;
|
|
12
|
+
export declare class VdFileSizePipe implements PipeTransform {
|
|
13
|
+
private readonly texts;
|
|
14
|
+
transform(bytes: number | null | undefined, system?: VdFileSizeSystem, maximumFractionDigits?: number, locale?: string, unknownText?: string): string;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdFileSizePipe, never>;
|
|
16
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<VdFileSizePipe, "vdFileSize", true>;
|
|
17
|
+
}
|
|
18
|
+
export type { VdFileSizeOptions, VdFileSizeSystem };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
interface VdFormError {
|
|
3
|
+
/** Raw ID of a visible, enabled, focusable control in the same document. */
|
|
4
|
+
readonly target: string;
|
|
5
|
+
readonly message: string;
|
|
6
|
+
}
|
|
7
|
+
/** Controlled validation navigation; the application owns validation and submit timing. */
|
|
8
|
+
export declare class VdFormErrorSummary {
|
|
9
|
+
readonly errors: import("@angular/core").InputSignal<readonly VdFormError[]>;
|
|
10
|
+
readonly title: import("@angular/core").InputSignal<string | undefined>;
|
|
11
|
+
readonly description: import("@angular/core").InputSignal<string | undefined>;
|
|
12
|
+
protected readonly t: import("@angular/core").Signal<Pick<{
|
|
13
|
+
title: string;
|
|
14
|
+
description: string;
|
|
15
|
+
}, "title" | "description">>;
|
|
16
|
+
protected readonly titleId: string;
|
|
17
|
+
protected readonly descriptionId: string;
|
|
18
|
+
private readonly host;
|
|
19
|
+
private readonly injector;
|
|
20
|
+
private readonly destroyRef;
|
|
21
|
+
private scrollFrame;
|
|
22
|
+
constructor();
|
|
23
|
+
/** Call after a failed submit; passive updates deliberately do not move focus. */
|
|
24
|
+
focus(): void;
|
|
25
|
+
protected fragment(target: string): string;
|
|
26
|
+
protected navigate(event: MouseEvent, id: string): void;
|
|
27
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VdFormErrorSummary, never>;
|
|
28
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VdFormErrorSummary, "vd-form-error-summary", never, {
|
|
29
|
+
"errors": {
|
|
30
|
+
"alias": "errors";
|
|
31
|
+
"required": false;
|
|
32
|
+
"isSignal": true;
|
|
33
|
+
};
|
|
34
|
+
"title": {
|
|
35
|
+
"alias": "title";
|
|
36
|
+
"required": false;
|
|
37
|
+
"isSignal": true;
|
|
38
|
+
};
|
|
39
|
+
"description": {
|
|
40
|
+
"alias": "description";
|
|
41
|
+
"required": false;
|
|
42
|
+
"isSignal": true;
|
|
43
|
+
};
|
|
44
|
+
}, {}, never, never, true, never>;
|
|
45
|
+
}
|
|
46
|
+
export type { VdFormError };
|