@dso-design-system/ui 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/esm2022/lib/alert/alert.component.mjs +54 -0
  2. package/esm2022/lib/badge/badge.component.mjs +22 -0
  3. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +29 -0
  4. package/esm2022/lib/checkbox/checkbox.component.mjs +82 -0
  5. package/esm2022/lib/datepicker/datepicker.component.mjs +161 -0
  6. package/esm2022/lib/dialog/dialog.component.mjs +25 -0
  7. package/esm2022/lib/directives/truncate.directive.mjs +71 -0
  8. package/esm2022/lib/dropdown-list/dropdown-list.component.mjs +89 -0
  9. package/esm2022/lib/file-upload-items/file-upload-items.component.mjs +65 -0
  10. package/esm2022/lib/file-upload-multiple/file-upload-multiple.component.mjs +232 -0
  11. package/esm2022/lib/file-upload-multiple/upload-item.model.mjs +2 -0
  12. package/esm2022/lib/file-upload-multiple/upload-simulator.service.mjs +76 -0
  13. package/esm2022/lib/file-upload-single/file-upload-single.component.mjs +100 -0
  14. package/esm2022/lib/input-text/input-text.component.mjs +93 -0
  15. package/esm2022/lib/pagination/pagination.component.mjs +115 -0
  16. package/esm2022/lib/progress-bar/progress-bar.component.mjs +25 -0
  17. package/esm2022/lib/radio/radio.component.mjs +41 -0
  18. package/esm2022/lib/select-dropdown/select-dropdown.component.mjs +228 -0
  19. package/esm2022/lib/service/toast.service.mjs +20 -0
  20. package/esm2022/lib/side-navigation-bar/side-navigation-bar.component.mjs +113 -0
  21. package/esm2022/lib/spinner/spinner.component.mjs +60 -0
  22. package/esm2022/lib/table/table.component.mjs +136 -0
  23. package/esm2022/lib/tabs/tab.component.mjs +20 -0
  24. package/esm2022/lib/tabs/tabs.component.mjs +40 -0
  25. package/esm2022/lib/tag/tag.component.mjs +27 -0
  26. package/esm2022/lib/text-area/text-area.component.mjs +74 -0
  27. package/esm2022/lib/toast/toast.component.mjs +36 -0
  28. package/esm2022/lib/tooltip/tooltip.component.mjs +38 -0
  29. package/esm2022/lib/tooltip/tooltip.directive.mjs +105 -0
  30. package/esm2022/lib/top-navigation-bar/top-navigation-bar.component.mjs +24 -0
  31. package/esm2022/public-api.mjs +27 -2
  32. package/fesm2022/dso-design-system-ui.mjs +2056 -3
  33. package/fesm2022/dso-design-system-ui.mjs.map +1 -1
  34. package/lib/alert/alert.component.d.ts +20 -0
  35. package/lib/badge/badge.component.d.ts +8 -0
  36. package/lib/breadcrumb/breadcrumb.component.d.ts +15 -0
  37. package/lib/checkbox/checkbox.component.d.ts +42 -0
  38. package/lib/datepicker/datepicker.component.d.ts +48 -0
  39. package/lib/dialog/dialog.component.d.ts +10 -0
  40. package/lib/directives/truncate.directive.d.ts +23 -0
  41. package/lib/dropdown-list/dropdown-list.component.d.ts +33 -0
  42. package/lib/file-upload-items/file-upload-items.component.d.ts +27 -0
  43. package/lib/file-upload-multiple/file-upload-multiple.component.d.ts +44 -0
  44. package/lib/file-upload-multiple/upload-item.model.d.ts +7 -0
  45. package/lib/file-upload-multiple/upload-simulator.service.d.ts +34 -0
  46. package/lib/file-upload-single/file-upload-single.component.d.ts +28 -0
  47. package/lib/input-text/input-text.component.d.ts +24 -0
  48. package/lib/pagination/pagination.component.d.ts +31 -0
  49. package/lib/progress-bar/progress-bar.component.d.ts +11 -0
  50. package/lib/radio/radio.component.d.ts +14 -0
  51. package/lib/select-dropdown/select-dropdown.component.d.ts +78 -0
  52. package/lib/service/toast.service.d.ts +16 -0
  53. package/lib/side-navigation-bar/side-navigation-bar.component.d.ts +74 -0
  54. package/lib/spinner/spinner.component.d.ts +23 -0
  55. package/lib/table/table.component.d.ts +43 -0
  56. package/lib/tabs/tab.component.d.ts +9 -0
  57. package/lib/tabs/tabs.component.d.ts +15 -0
  58. package/lib/tag/tag.component.d.ts +10 -0
  59. package/lib/text-area/text-area.component.d.ts +21 -0
  60. package/lib/toast/toast.component.d.ts +13 -0
  61. package/lib/tooltip/tooltip.component.d.ts +15 -0
  62. package/lib/tooltip/tooltip.directive.d.ts +19 -0
  63. package/lib/top-navigation-bar/top-navigation-bar.component.d.ts +16 -0
  64. package/package.json +1 -1
  65. package/public-api.d.ts +25 -0
@@ -0,0 +1,42 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Reusable Checkbox Component
5
+ *
6
+ * Features:
7
+ * - Optional label
8
+ * - Configurable size, error state, and disabled state
9
+ * - Emits changes to parent component
10
+ * - Supports custom icons
11
+ */
12
+ export declare class CheckboxComponent {
13
+ /** Text label displayed next to the checkbox */
14
+ label?: string;
15
+ /** Whether the checkbox is checked */
16
+ isChecked: boolean;
17
+ /** Whether the checkbox is disabled */
18
+ disabled: boolean;
19
+ /** Size of the checkbox: small, medium, or large */
20
+ size: 'small' | 'medium' | 'large';
21
+ /** Error state for styling purposes */
22
+ error: boolean;
23
+ /** Whether the checkbox is required */
24
+ required: boolean;
25
+ /** Error message to display when error is true */
26
+ errorMessage: string;
27
+ /** Icon name for the checkbox (default is a checkmark) */
28
+ iconName: string;
29
+ /** Emits the updated checked state whenever the checkbox is toggled */
30
+ change: EventEmitter<boolean>;
31
+ /**
32
+ * Toggles the checked state of the checkbox
33
+ * and emits the new value to the parent component
34
+ */
35
+ toggleCheckbox(): void;
36
+ /**
37
+ * Maps the checkbox size to icon size
38
+ */
39
+ getIconSize(): 'small' | 'medium' | 'large';
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent, never>;
41
+ static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "dso-checkbox", never, { "label": { "alias": "label"; "required": false; }; "isChecked": { "alias": "isChecked"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "error": { "alias": "error"; "required": false; }; "required": { "alias": "required"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; }; }, { "change": "change"; }, never, never, true, never>;
42
+ }
@@ -0,0 +1,48 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class DatepickerComponent {
4
+ /** Label displayed above the input */
5
+ inputTextLabel: string;
6
+ /** Disable the datepicker input */
7
+ isDisabled: boolean;
8
+ /** Currently selected date */
9
+ selectedDate: Date | null;
10
+ /** Whether the calendar popup is visible */
11
+ calendarVisible: boolean;
12
+ /** Current month displayed in the calendar */
13
+ currentMonth: Date;
14
+ /** View mode: day, month, or year */
15
+ viewMode: 'day' | 'month' | 'year';
16
+ /** Minimum and maximum year range */
17
+ minYear: number;
18
+ maxYear: number;
19
+ /** Month names for display */
20
+ months: string[];
21
+ yearListRef: ElementRef<HTMLDivElement>;
22
+ calendarWrapper: ElementRef<HTMLDivElement>;
23
+ /** Toggle the calendar popup */
24
+ toggleCalendar(): void;
25
+ /** Close calendar if clicking outside */
26
+ handleClickOutside(event: Event): void;
27
+ switchToMonthView(): void;
28
+ switchToYearView(): void;
29
+ changeMonth(direction: number): void;
30
+ changeYear(direction: number): void;
31
+ /** Returns array of days in the current month, with leading nulls for empty grid cells */
32
+ getDaysInMonth(): (number | null)[];
33
+ /** Returns array of years in the defined range */
34
+ getYearsRange(): number[];
35
+ /** Scroll the year list to show the current year */
36
+ scrollToCurrentYear(): void;
37
+ selectDate(day: number | null): void;
38
+ selectMonth(monthIndex: number): void;
39
+ selectYear(year: number): void;
40
+ /** Check if a day is currently selected */
41
+ isSelected(day: number | null): boolean;
42
+ /** Set today’s date */
43
+ setToday(): void;
44
+ /** Clear the selected date */
45
+ clearDate(): void;
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<DatepickerComponent, never>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatepickerComponent, "dso-datepicker", never, { "inputTextLabel": { "alias": "inputTextLabel"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; }, {}, never, never, true, never>;
48
+ }
@@ -0,0 +1,10 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class DialogComponent {
4
+ visible: boolean;
5
+ title: string;
6
+ close: EventEmitter<void>;
7
+ onClose(): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<DialogComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<DialogComponent, "dso-dialog", never, { "visible": { "alias": "visible"; "required": false; }; "title": { "alias": "title"; "required": false; }; }, { "close": "close"; }, never, ["*"], true, never>;
10
+ }
@@ -0,0 +1,23 @@
1
+ import { ElementRef, AfterViewInit } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class DsoTruncateDirective implements AfterViewInit {
4
+ private el;
5
+ /**
6
+ * Enable or disable truncation.
7
+ * Can be used as `<div dsoTruncate>` (enabled by default) or `[dsoTruncate]="false"`.
8
+ */
9
+ enableTruncate: boolean | '';
10
+ /** Optional: override tooltip text when text is truncated */
11
+ truncateTooltipText?: string;
12
+ constructor(el: ElementRef<HTMLElement>);
13
+ /** Initialize truncation after the view is loaded */
14
+ ngAfterViewInit(): void;
15
+ /** Re-check overflow and update tooltip on window resize */
16
+ onResize(): void;
17
+ /** Apply CSS styles necessary for truncation */
18
+ private applyTruncationStyles;
19
+ /** Update tooltip based on overflow state */
20
+ private updateTooltip;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<DsoTruncateDirective, never>;
22
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DsoTruncateDirective, "[dsoTruncate]", never, { "enableTruncate": { "alias": "dsoTruncate"; "required": false; }; "truncateTooltipText": { "alias": "truncateTooltipText"; "required": false; }; }, {}, never, never, true, never>;
23
+ }
@@ -0,0 +1,33 @@
1
+ import { EventEmitter, ElementRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class DropdownListComponent {
4
+ /** Reference to the root <div> to detect clicks inside/outside dropdown */
5
+ root: ElementRef;
6
+ /** Options to display in the dropdown. Each option has a label and a value */
7
+ options: {
8
+ label: string;
9
+ value: any;
10
+ }[];
11
+ /** Placeholder text when no option is selected */
12
+ placeholder: string;
13
+ /** Currently selected value */
14
+ value: any;
15
+ /** Disable dropdown interaction */
16
+ disabled: boolean;
17
+ /** Emits the selected value when user clicks an option */
18
+ selectionChange: EventEmitter<any>;
19
+ /** Tracks whether the dropdown list is open or closed */
20
+ isOpen: boolean;
21
+ /** Toggle dropdown open/close when trigger is clicked */
22
+ toggle(): void;
23
+ /** Handle option selection */
24
+ select(option: {
25
+ label: string;
26
+ value: any;
27
+ }): void;
28
+ handleOutsideClick(event: Event): void;
29
+ /** Returns label of selected value or placeholder if none selected */
30
+ get selectedLabel(): string;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<DropdownListComponent, never>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<DropdownListComponent, "dso-dropdown-list", never, { "options": { "alias": "options"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
33
+ }
@@ -0,0 +1,27 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { UploadItem } from '../file-upload-multiple/upload-item.model';
3
+ import * as i0 from "@angular/core";
4
+ export declare class FileUploadItemComponent {
5
+ /** The file upload item to display */
6
+ item: UploadItem;
7
+ /** Emitted when the user retries a failed upload */
8
+ retry: EventEmitter<void>;
9
+ /** Emitted when the user removes the file from the list */
10
+ remove: EventEmitter<void>;
11
+ /** Emitted when the user cancels an ongoing upload */
12
+ cancel: EventEmitter<void>;
13
+ /**
14
+ * Format the file size into a human-readable string
15
+ * @param size - size in bytes
16
+ * @returns formatted string like '12.3 KB', '1.5 MB'
17
+ */
18
+ formatSize(size: number): string;
19
+ /**
20
+ * Get an icon name for the file based on its type or extension
21
+ * @param item - the UploadItem
22
+ * @returns icon name string
23
+ */
24
+ getFileIcon(item: UploadItem): string;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadItemComponent, never>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileUploadItemComponent, "dso-file-item", never, { "item": { "alias": "item"; "required": false; }; }, { "retry": "retry"; "remove": "remove"; "cancel": "cancel"; }, never, never, true, never>;
27
+ }
@@ -0,0 +1,44 @@
1
+ import { UploadItem } from './upload-item.model';
2
+ import { UploadSimulatorService } from './upload-simulator.service';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * FileUploadMultiComponent
6
+ * -------------------------
7
+ * This component handles:
8
+ * - Drag & drop file uploads
9
+ * - Selecting multiple files through <input type="file">
10
+ * - Upload progress per file
11
+ * - Cancelling an upload
12
+ * - Retrying failed uploads
13
+ * - Removing items from the queue
14
+ *
15
+ * UploadSimulatorService is used to mimic real upload behavior.
16
+ * Later, you can replace it with a real HTTP upload service.
17
+ */
18
+ export declare class FileUploadMultiComponent {
19
+ private sim;
20
+ /** All files being managed (uploaded, uploading, failed, completed). */
21
+ uploadQueue: UploadItem[];
22
+ /** True while user drags a file over the drop zone. */
23
+ isDragOver: boolean;
24
+ constructor(sim: UploadSimulatorService);
25
+ onDragOver(event: DragEvent): void;
26
+ onDragLeave(event: DragEvent): void;
27
+ onDrop(event: DragEvent): void;
28
+ onFileSelected(event: Event): void;
29
+ handleFiles(fileList: FileList): void;
30
+ startUpload(item: UploadItem): void;
31
+ onDropZoneClick(fileInput: HTMLInputElement): void;
32
+ onBrowseButtonClick(event: Event, fileInput: HTMLInputElement): void;
33
+ cancelUpload(item: UploadItem): void;
34
+ retryUpload(item: UploadItem): void;
35
+ removeItem(item: UploadItem): void;
36
+ /**
37
+ * Converts bytes → human readable sizes.
38
+ */
39
+ formatSize(size: number): string;
40
+ getThumbnail(item: UploadItem): string | null;
41
+ getFileIcon(item: UploadItem): string;
42
+ static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadMultiComponent, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileUploadMultiComponent, "dso-file-upload-multi", never, {}, {}, never, never, true, never>;
44
+ }
@@ -0,0 +1,7 @@
1
+ export interface UploadItem {
2
+ file: File;
3
+ progress: number | null;
4
+ status: 'queued' | 'uploading' | 'completed' | 'failed' | 'cancelled';
5
+ controller?: AbortController;
6
+ hideProgressBar?: boolean;
7
+ }
@@ -0,0 +1,34 @@
1
+ import { UploadItem } from './upload-item.model';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * UploadSimulatorService
5
+ * -----------------------
6
+ * This service simulates an upload process.
7
+ * It is ONLY for demo and UI development. Later, it can
8
+ * be replaced with a real HTTP upload service without
9
+ * changing the UI components.
10
+ *
11
+ * How it works:
12
+ * - Every 300ms, a timer increases the upload progress.
13
+ * - Progress increases by a random amount (to look realistic).
14
+ * - When it reaches 100%, the upload is marked complete.
15
+ * - There is a 10% chance the upload "fails" to simulate errors.
16
+ * - If an upload is cancelled, the interval stops immediately.
17
+ *
18
+ * This pattern mimics:
19
+ * - progress events (like HttpClient upload events)
20
+ * - cancellation (AbortController / unsubscribe)
21
+ */
22
+ export declare class UploadSimulatorService {
23
+ /**
24
+ * Simulates uploading a single file.
25
+ *
26
+ * @param item The UploadItem being uploaded
27
+ * @param onProgress Callback fired whenever progress changes
28
+ * @param onComplete Callback fired when upload reaches 100%
29
+ * @param onError Callback fired when upload "fails"
30
+ */
31
+ simulateUpload(item: UploadItem, onProgress: (value: number) => void, onComplete: () => void, onError: () => void): void;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<UploadSimulatorService, never>;
33
+ static ɵprov: i0.ɵɵInjectableDeclaration<UploadSimulatorService>;
34
+ }
@@ -0,0 +1,28 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { UploadItem } from '../file-upload-multiple/upload-item.model';
3
+ import { UploadSimulatorService } from '../file-upload-multiple/upload-simulator.service';
4
+ import * as i0 from "@angular/core";
5
+ export declare class FileUploadSingleComponent {
6
+ private sim;
7
+ /** Button label text */
8
+ btnLabel: string;
9
+ /** Allowed file types, e.g. ".png,.jpg,.pdf" */
10
+ accept: string;
11
+ /** Emit the selected file to parent component */
12
+ fileSelected: EventEmitter<File>;
13
+ /** The currently uploaded file shown in the UI */
14
+ item: UploadItem | null;
15
+ constructor(sim: UploadSimulatorService);
16
+ /** Trigger the hidden file input click */
17
+ onButtonClick(input: HTMLInputElement): void;
18
+ /** Handle file selection from input */
19
+ onFileChange(event: Event): void;
20
+ /** Start upload simulation */
21
+ startUpload(): void;
22
+ /** Retry failed upload */
23
+ retry(): void;
24
+ /** Cancel or remove the file from UI */
25
+ clearFile(): void;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadSingleComponent, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileUploadSingleComponent, "dso-file-upload-single", never, { "btnLabel": { "alias": "btnLabel"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; }, { "fileSelected": "fileSelected"; }, never, never, true, never>;
28
+ }
@@ -0,0 +1,24 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TextInputComponent {
4
+ inputLabel: string;
5
+ value: string;
6
+ placeholder: string;
7
+ type: string;
8
+ isDisabled: boolean;
9
+ helperText: string;
10
+ errorText: string;
11
+ enableValidation: boolean;
12
+ maxLength: number;
13
+ valueChange: EventEmitter<string>;
14
+ isTouched: boolean;
15
+ isInvalid: boolean;
16
+ charCount: number;
17
+ isExceeded: boolean;
18
+ onInputChange(event: any): void;
19
+ onBlur(): void;
20
+ getCharCountStyle(): "" | "char-count-error";
21
+ checkValidity(): void;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextInputComponent, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<TextInputComponent, "dso-input-text", never, { "inputLabel": { "alias": "inputLabel"; "required": false; }; "value": { "alias": "value"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "type": { "alias": "type"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "enableValidation": { "alias": "enableValidation"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
24
+ }
@@ -0,0 +1,31 @@
1
+ import { EventEmitter, OnChanges } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class PaginationComponent implements OnChanges {
4
+ page: number;
5
+ pageSize: number;
6
+ totalItems: number;
7
+ pageSizes: number[];
8
+ pageChange: EventEmitter<number>;
9
+ pageSizeChange: EventEmitter<number>;
10
+ pageNumbers: number[];
11
+ jumpPageNumber: number | null;
12
+ pageSizeOptions: {
13
+ label: string;
14
+ value: number;
15
+ }[];
16
+ ngOnChanges(): void;
17
+ get totalPages(): number;
18
+ get startItem(): number;
19
+ get endItem(): number;
20
+ private buildPageSizeOptions;
21
+ private generatePageNumbers;
22
+ goToPage(page: number): void;
23
+ goFirst(): void;
24
+ goPrevious(): void;
25
+ goNext(): void;
26
+ goLast(): void;
27
+ onPageSizeChange(newSize: number): void;
28
+ jumpToPage(): void;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<PaginationComponent, never>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<PaginationComponent, "dso-pagination", never, { "page": { "alias": "page"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "totalItems": { "alias": "totalItems"; "required": false; }; "pageSizes": { "alias": "pageSizes"; "required": false; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
31
+ }
@@ -0,0 +1,11 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class ProgressBarComponent {
3
+ /** Progress value (0–100). If null, shows indeterminate animation. */
4
+ value: number | null;
5
+ /** Color variants */
6
+ color: 'primary' | 'success' | 'warning' | 'danger';
7
+ /** Optional animation toggle */
8
+ animated: boolean;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProgressBarComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProgressBarComponent, "dso-progress-bar", never, { "value": { "alias": "value"; "required": false; }; "color": { "alias": "color"; "required": false; }; "animated": { "alias": "animated"; "required": false; }; }, {}, never, never, true, never>;
11
+ }
@@ -0,0 +1,14 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class RadioComponent {
4
+ label?: string;
5
+ value: string;
6
+ name: string;
7
+ disabled: boolean;
8
+ error: boolean;
9
+ isChecked: boolean;
10
+ change: EventEmitter<string>;
11
+ toggleRadio(event: Event): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<RadioComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<RadioComponent, "dso-radio", never, { "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; "name": { "alias": "name"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "error": { "alias": "error"; "required": false; }; "isChecked": { "alias": "isChecked"; "required": false; }; }, { "change": "change"; }, never, never, true, never>;
14
+ }
@@ -0,0 +1,78 @@
1
+ import { EventEmitter, ElementRef, OnInit, OnDestroy } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class SingleSelectComponent implements OnInit, OnDestroy {
4
+ private elementRef;
5
+ dropdownListRef: ElementRef<HTMLUListElement>;
6
+ options: {
7
+ value: string;
8
+ label: string;
9
+ }[];
10
+ dropdownPosition: 'top' | 'bottom';
11
+ placeholder: string;
12
+ inputTextLabel: string;
13
+ isDisabled: boolean;
14
+ enableValidation: boolean;
15
+ helperText?: string;
16
+ selectIconName: string | null;
17
+ errorText: string;
18
+ selectionChange: EventEmitter<any>;
19
+ selectedOption: any;
20
+ searchQuery: string;
21
+ filteredOptions: any[];
22
+ isOpen: boolean;
23
+ isInvalid: boolean;
24
+ isExceeded: boolean;
25
+ hasOpened: boolean;
26
+ hasInteracted: boolean;
27
+ lastScrollTop: number;
28
+ constructor(elementRef: ElementRef);
29
+ /**
30
+ * //Handles dropdown scroll events to persist scroll position
31
+ */
32
+ onDropdownScroll(): void;
33
+ /**
34
+ * Detects clicks outside of the component to close the dropdown if open
35
+ */
36
+ onOutsideClick(event: MouseEvent): void;
37
+ /**
38
+ * Initialize component data on creation
39
+ */
40
+ ngOnInit(): void;
41
+ ngOnDestroy(): void;
42
+ /**
43
+ * Handles click on the main select box
44
+ * Prevents opening if disabled
45
+ */
46
+ onSelectClick(event: MouseEvent): void;
47
+ /**
48
+ * Toggles dropdown open/close state and restores scroll position if opening
49
+ */
50
+ toggleDropdown(event: MouseEvent): void;
51
+ /**
52
+ * Filters dropdown options based on current search query
53
+ */
54
+ filterOptions(): void;
55
+ /**
56
+ * Handles option selection:
57
+ * - Updates selected option
58
+ * - Validates
59
+ * - Emits selection change event
60
+ * - Closes dropdown
61
+ */
62
+ selectOption(event: Event, option: any): void;
63
+ /**
64
+ * Clears the selected option and resets validation and scroll
65
+ */
66
+ clearSelection(event: MouseEvent): void;
67
+ /**
68
+ * Checks validity based on current selection if validation is enabled
69
+ */
70
+ checkValidity(): void;
71
+ /**
72
+ * Returns the icon path if icon name is provided
73
+ */
74
+ getIconPath(): string;
75
+ showError(): boolean;
76
+ static ɵfac: i0.ɵɵFactoryDeclaration<SingleSelectComponent, never>;
77
+ static ɵcmp: i0.ɵɵComponentDeclaration<SingleSelectComponent, "dso-single-select", never, { "options": { "alias": "options"; "required": false; }; "dropdownPosition": { "alias": "dropdownPosition"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "inputTextLabel": { "alias": "inputTextLabel"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; "enableValidation": { "alias": "enableValidation"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "selectIconName": { "alias": "selectIconName"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
78
+ }
@@ -0,0 +1,16 @@
1
+ import * as i0 from "@angular/core";
2
+ export type ToastVariant = 'success' | 'info' | 'warning' | 'danger' | 'neutral';
3
+ export type ToastPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'top-center' | 'bottom-center';
4
+ export interface ToastMessage {
5
+ header?: string;
6
+ message: string;
7
+ variant?: ToastVariant;
8
+ duration?: number;
9
+ }
10
+ export declare class ToastService {
11
+ private toastSubject;
12
+ toast$: import("rxjs").Observable<ToastMessage>;
13
+ show(header: string, message: string, variant: ToastVariant, duration: 3000): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToastService, never>;
15
+ static ɵprov: i0.ɵɵInjectableDeclaration<ToastService>;
16
+ }
@@ -0,0 +1,74 @@
1
+ import { ElementRef, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Interface defining a single sidebar menu item.
5
+ *
6
+ * - `label`: The text to display for the menu item.
7
+ * - `iconName`: Optional icon to display using <dso-icon>.
8
+ * - `route`: Optional router path to navigate when clicked.
9
+ * - `isActive`: Whether this menu item is currently active.
10
+ */
11
+ export interface SideNavItem {
12
+ label: string;
13
+ iconName?: string;
14
+ route?: string;
15
+ isActive?: boolean;
16
+ }
17
+ /**
18
+ * DSO Side Navigation Component
19
+ *
20
+ * Features:
21
+ * - Configurable title/logo area.
22
+ * - Dynamic menu items with icons and routing.
23
+ * - Supports default active item by route or index.
24
+ * - Click-outside detection to close the sidebar.
25
+ * - Optional overlay for dimming the background.
26
+ */
27
+ export declare class SideNavComponent {
28
+ private host;
29
+ /** Title displayed next to the logo */
30
+ title: string;
31
+ /** List of navigation items */
32
+ items: SideNavItem[];
33
+ /** Controls whether the sidebar is visible */
34
+ open: boolean;
35
+ /** Enable/disable background overlay when sidebar is open */
36
+ overlay: boolean;
37
+ /** Optional: default active menu item by route */
38
+ defaultActiveRoute?: string;
39
+ /** Optional: default active menu item by index */
40
+ defaultActiveIndex?: number;
41
+ /** Event emitted when sidebar is closed */
42
+ closed: EventEmitter<void>;
43
+ /**
44
+ * ElementRef to the component host element.
45
+ * Used for detecting click-outside events.
46
+ */
47
+ constructor(host: ElementRef);
48
+ /**
49
+ * Lifecycle hook: initialize default active menu item.
50
+ */
51
+ ngOnInit(): void;
52
+ /**
53
+ * Close the sidebar and emit the `closed` event.
54
+ * Can be called manually or via click-outside detection.
55
+ */
56
+ closeSidebar(): void;
57
+ /**
58
+ * HostListener to detect clicks anywhere in the document.
59
+ * If the click happens outside the sidebar while it's open, it triggers closeSidebar().
60
+ *
61
+ * @param event MouseEvent triggered on document click
62
+ */
63
+ onDocumentClick(event: MouseEvent): void;
64
+ /**
65
+ * Called when a sidebar menu item is clicked.
66
+ * - Marks the clicked item as active.
67
+ * - Optionally, navigation can be handled via `[routerLink]`.
68
+ *
69
+ * @param item The menu item that was clicked
70
+ */
71
+ onItemClick(item: SideNavItem): void;
72
+ static ɵfac: i0.ɵɵFactoryDeclaration<SideNavComponent, never>;
73
+ static ɵcmp: i0.ɵɵComponentDeclaration<SideNavComponent, "dso-side-nav", never, { "title": { "alias": "title"; "required": false; }; "items": { "alias": "items"; "required": false; }; "open": { "alias": "open"; "required": false; }; "overlay": { "alias": "overlay"; "required": false; }; "defaultActiveRoute": { "alias": "defaultActiveRoute"; "required": false; }; "defaultActiveIndex": { "alias": "defaultActiveIndex"; "required": false; }; }, { "closed": "closed"; }, never, ["[dso-side-logo]", "[dso-side-footer]"], true, never>;
74
+ }
@@ -0,0 +1,23 @@
1
+ import { ElementRef, AfterViewInit } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class SpinnerComponent implements AfterViewInit {
4
+ private el;
5
+ /** Size presets */
6
+ size: 'small' | 'medium' | 'large';
7
+ /** Color variants */
8
+ color: 'primary' | 'success' | 'warning' | 'danger';
9
+ /** Overlay background toggle */
10
+ overlay: boolean;
11
+ /** Custom overlay background color */
12
+ overlayColor: string;
13
+ /** Optional illustration (inside spinner) */
14
+ illustrationSrc?: string | null;
15
+ /** Optional label text (below spinner) */
16
+ label?: string;
17
+ animationSrc?: string;
18
+ constructor(el: ElementRef);
19
+ ngAfterViewInit(): void;
20
+ get isIllustrated(): boolean;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpinnerComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpinnerComponent, "dso-spinner", never, { "size": { "alias": "size"; "required": false; }; "color": { "alias": "color"; "required": false; }; "overlay": { "alias": "overlay"; "required": false; }; "overlayColor": { "alias": "overlayColor"; "required": false; }; "illustrationSrc": { "alias": "illustrationSrc"; "required": false; }; "label": { "alias": "label"; "required": false; }; "animationSrc": { "alias": "animationSrc"; "required": false; }; }, {}, never, never, true, never>;
23
+ }
@@ -0,0 +1,43 @@
1
+ import { OnChanges, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export interface TableColumn {
4
+ key: string;
5
+ label: string;
6
+ minWidth?: string;
7
+ maxWidth?: string;
8
+ truncate?: boolean;
9
+ type?: 'text' | 'checkbox' | 'action';
10
+ sortable?: boolean;
11
+ sticky?: boolean;
12
+ }
13
+ export declare class TableComponent implements OnChanges {
14
+ columns: TableColumn[];
15
+ rows: any[];
16
+ defaultSortColumn?: string;
17
+ defaultSortDirection: 'asc' | 'desc';
18
+ stickyHeader: boolean;
19
+ maxTableHeight?: string;
20
+ sortChange: EventEmitter<{
21
+ column: string;
22
+ direction: "asc" | "desc";
23
+ }>;
24
+ sortColumn: string | null;
25
+ sortDirection: 'asc' | 'desc';
26
+ ngOnChanges(): void;
27
+ sort(colKey: string): void;
28
+ getColumnStyle(col: TableColumn): {
29
+ 'min-width': string;
30
+ 'max-width': string;
31
+ width: string;
32
+ };
33
+ shouldTruncateNative(cell: HTMLElement): boolean;
34
+ selectedRows: Set<any>;
35
+ toggleRow(row: any): void;
36
+ isRowSelected(row: any): boolean;
37
+ get allSelected(): boolean;
38
+ toggleSelectAll(): void;
39
+ onEditRow(row: any): void;
40
+ onDeleteRow(row: any): void;
41
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent, never>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "dso-table", never, { "columns": { "alias": "columns"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "defaultSortColumn": { "alias": "defaultSortColumn"; "required": false; }; "defaultSortDirection": { "alias": "defaultSortDirection"; "required": false; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; }; "maxTableHeight": { "alias": "maxTableHeight"; "required": false; }; }, { "sortChange": "sortChange"; }, never, never, true, never>;
43
+ }
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class TabComponent {
3
+ /** Label for the tab shown in the tabs header */
4
+ label: string;
5
+ /** Is this tab currently active? Controlled by TabsComponent */
6
+ active: boolean;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<TabComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<TabComponent, "dso-tab", never, { "label": { "alias": "label"; "required": false; }; }, {}, never, ["*"], true, never>;
9
+ }