@tekus/design-system 5.1.3 → 5.3.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.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@tekus/design-system/components/date-picker" />
5
+ export * from './public-api';
@@ -0,0 +1 @@
1
+ export * from './src/date-picker.component';
@@ -0,0 +1,156 @@
1
+ import { EventEmitter, OnInit, OnDestroy } from '@angular/core';
2
+ import { FormControl, ControlValueAccessor } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export type DateValue = Date | [Date, Date] | null;
5
+ export declare class DatePickerComponent implements OnInit, OnDestroy, ControlValueAccessor {
6
+ /**
7
+ * @property {'single' | 'range'} selectionMode
8
+ * @description
9
+ * Defines how the datepicker behaves:
10
+ * - `'single'`: select one date
11
+ * - `'range'`: select a pair of dates [start, end]
12
+ * @default 'range'
13
+ */
14
+ selectionMode: 'single' | 'range';
15
+ /**
16
+ * @property {boolean} readonlyInput
17
+ * @description
18
+ * Disables manual typing in the input and forces the user to select via the calendar.
19
+ * @default true
20
+ */
21
+ readonlyInput: boolean;
22
+ /**
23
+ * @property {boolean} showClear
24
+ * @description
25
+ * Displays a clear button that resets the datepicker value.
26
+ * @default true
27
+ */
28
+ showClear: boolean;
29
+ /**
30
+ * @property {boolean} showIcon
31
+ * @description
32
+ * Shows the calendar icon inside the input.
33
+ * @default true
34
+ */
35
+ showIcon: boolean;
36
+ /**
37
+ * @property {string} dateFormat
38
+ * @description
39
+ * Format used by PrimeNG for displaying dates.
40
+ * @default 'mm/dd/yy'
41
+ */
42
+ dateFormat: string;
43
+ /**
44
+ * @property {Date | null} maxDate
45
+ * @description
46
+ * Maximum selectable date. When set, the calendar will prevent selecting dates after this value.
47
+ * Provide a JavaScript Date object. Use `null` to allow any future date.
48
+ * @default null
49
+ */
50
+ maxDate: Date | null;
51
+ /**
52
+ * @property {Date | null} minDate
53
+ * @description
54
+ * Minimum selectable date. When set, the calendar will prevent selecting dates before this value.
55
+ * Provide a JavaScript Date object. Use `null` to allow any past date.
56
+ * @default null
57
+ */
58
+ minDate: Date | null;
59
+ /**
60
+ * @property {string} labelText
61
+ * @description
62
+ * Label shown by the float-label wrapper.
63
+ * @default 'Select a date'
64
+ */
65
+ labelText: string;
66
+ /**
67
+ * @private
68
+ * @property {FormControl<DateValue>} internalControl
69
+ * @description
70
+ * The internal FormControl used in the template. It handles value synchronization
71
+ * for both CVA and the optional external control input.
72
+ */
73
+ internalControl: FormControl<DateValue>;
74
+ /**
75
+ * @private
76
+ * @property {Subscription} sub
77
+ * @description Subscription to the valueChanges observable.
78
+ */
79
+ private sub;
80
+ private onChange;
81
+ private onTouched;
82
+ /**
83
+ * @property {FormControl<DateValue> | null} control
84
+ * @description
85
+ * Allows passing an external FormControl (traditional Reactive Forms usage).
86
+ * If provided, it overrides the internal control.
87
+ */
88
+ set control(ctrl: FormControl<DateValue> | null);
89
+ get control(): FormControl<DateValue>;
90
+ /**
91
+ * @event handleSelect
92
+ * @description
93
+ * Emitted when:
94
+ * - single mode → a valid Date is selected
95
+ * - range mode → both start and end dates are selected
96
+ *
97
+ * Payload:
98
+ * - Date (single mode)
99
+ * - [Date, Date] (completed range)
100
+ */
101
+ handleSelect: EventEmitter<DateValue>;
102
+ /**
103
+ * @event handleClear
104
+ * @description
105
+ * Emitted when the control's value becomes `null`.
106
+ */
107
+ handleClear: EventEmitter<void>;
108
+ /**
109
+ * @property faCalendarDay
110
+ * @description
111
+ * Icon displayed inside the datepicker input.
112
+ */
113
+ faCalendarDay: import("@fortawesome/fontawesome-common-types").IconDefinition;
114
+ /**
115
+ * @method writeValue
116
+ * @description Writes a new value from the form model (ngModel or formControl) into the component.
117
+ */
118
+ writeValue(value: DateValue): void;
119
+ /**
120
+ * @method registerOnChange
121
+ * @description Registers a callback function to be called when the control's value changes.
122
+ */
123
+ registerOnChange(fn: (value: DateValue) => void): void;
124
+ /**
125
+ * @method registerOnTouched
126
+ * @description Registers a callback function to be called when the control receives a blur event (is touched).
127
+ */
128
+ registerOnTouched(fn: () => void): void;
129
+ /**
130
+ * @method setDisabledState
131
+ * @description Called when the control should be disabled or enabled.
132
+ */
133
+ setDisabledState(isDisabled: boolean): void;
134
+ /**
135
+ * @method ngOnInit
136
+ * @description
137
+ * Subscribes to the internal control's valueChanges:
138
+ * 1. Notifies the external form (CVA) via `this.onChange()`.
139
+ * 2. Emits the semantic events `handleSelect` or `handleClear`.
140
+ */
141
+ ngOnInit(): void;
142
+ /**
143
+ * @method ngOnDestroy
144
+ * @description Cleans up the internal subscription when the component is destroyed.
145
+ */
146
+ ngOnDestroy(): void;
147
+ /**
148
+ * @method clear
149
+ * @description
150
+ * Programmatically clears the control's value,
151
+ * which automatically triggers `handleClear`.
152
+ */
153
+ clear(): void;
154
+ static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerComponent, never>;
155
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerComponent, "tk-date-picker", never, { "selectionMode": { "alias": "selectionMode"; "required": false; }; "readonlyInput": { "alias": "readonlyInput"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "showIcon": { "alias": "showIcon"; "required": false; }; "dateFormat": { "alias": "dateFormat"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "labelText": { "alias": "labelText"; "required": false; }; "control": { "alias": "control"; "required": false; }; }, { "handleSelect": "handleSelect"; "handleClear": "handleClear"; }, never, never, true, never>;
156
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@tekus/design-system/components/modal" />
5
+ export * from './public-api';
@@ -0,0 +1,3 @@
1
+ export * from './src/modal.component';
2
+ export * from './src/services/modal.service';
3
+ export * from './src/modal.types';
@@ -0,0 +1,83 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { ModalFooterButton, ModalSizeType } from './modal.types';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * @component ModalComponent
6
+ * @description
7
+ * A programmatically controlled modal dialog used for displaying dynamic content, titles, and footer actions.
8
+ * The modal is not instantiated via template bindings, but rather opened through a service with a configuration object.
9
+ *
10
+ * This component supports:
11
+ * - Configurable title and content.
12
+ * - Optional footer buttons with callbacks and return values.
13
+ * - Multiple sizes: `'small' | 'large' | 'full'`.
14
+ * - Closable modal and outside-click behavior.
15
+ * - Passing arbitrary data to the modal instance.
16
+ *
17
+ * @usage
18
+ * ### Open a modal from TypeScript using the modal service
19
+ * ```ts
20
+ * this.modalService.open({
21
+ * title: 'Demo Modal',
22
+ * content: 'This modal is opened from TypeScript using the service.',
23
+ * footerButtons: [
24
+ * {
25
+ * label: 'Accept',
26
+ * severity: 'secondary',
27
+ * action: () => console.log('Accept clicked'),
28
+ * returnValue: true,
29
+ * },
30
+ * {
31
+ * label: 'Cancel',
32
+ * severity: 'danger',
33
+ * action: () => console.log('Cancel clicked'),
34
+ * returnValue: false,
35
+ * },
36
+ * ],
37
+ * size: 'small',
38
+ * closable: true,
39
+ * closeOnOutsideClick: false,
40
+ * }).subscribe((result) => {
41
+ * console.log('Modal closed with value:', result);
42
+ * });
43
+ * ```
44
+ */
45
+ export declare class ModalComponent {
46
+ /** The title displayed at the top of the modal */
47
+ title: import("@angular/core").InputSignal<string>;
48
+ /** The main content of the modal */
49
+ content: import("@angular/core").InputSignal<string | null>;
50
+ /** Array of footer buttons with label, callback, and return value */
51
+ footerButtons: import("@angular/core").InputSignal<ModalFooterButton[]>;
52
+ /** Modal size: 'small', 'large', or 'full' */
53
+ size: import("@angular/core").InputSignal<ModalSizeType>;
54
+ /** Whether the modal can be closed by the user */
55
+ closable: import("@angular/core").InputSignal<boolean>;
56
+ /** Whether clicking outside closes the modal */
57
+ closeOnOutsideClick: import("@angular/core").InputSignal<boolean>;
58
+ /** Computed: whether the modal has footer buttons */
59
+ hasFooter: import("@angular/core").Signal<boolean>;
60
+ /** Computed: calculates modal width based on `size` */
61
+ modalWidth: import("@angular/core").Signal<"67.5rem" | "98vw" | "25rem">;
62
+ /** Visibility flag */
63
+ isOpened: boolean;
64
+ /** Emits when the modal closes, passing the return value from footer buttons or null */
65
+ readonly onClose: EventEmitter<unknown>;
66
+ private alreadyEmitted;
67
+ private returnValueOnClose;
68
+ /** Opens the modal */
69
+ open(): void;
70
+ /** Closes the modal and emits onClose with null */
71
+ handleClose(): void;
72
+ /** Closes the modal without emitting an event */
73
+ close(): void;
74
+ /**
75
+ * Handles footer button actions.
76
+ * Executes the action callback, emits `onClose` with the provided returnValue, then closes the modal.
77
+ * @param action Callback to execute when the button is clicked
78
+ * @param returnValue Value emitted on modal close
79
+ */
80
+ handleAction(action: () => void, returnValue: unknown): void;
81
+ static ɵfac: i0.ɵɵFactoryDeclaration<ModalComponent, never>;
82
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModalComponent, "tk-modal", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "footerButtons": { "alias": "footerButtons"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "closeOnOutsideClick": { "alias": "closeOnOutsideClick"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
83
+ }
@@ -0,0 +1,16 @@
1
+ export type ModalSizeType = 'small' | 'large' | 'full';
2
+ export type SeverityType = 'primary' | 'secondary' | 'danger';
3
+ export interface ModalFooterButton {
4
+ label: string;
5
+ severity: SeverityType;
6
+ action: () => void;
7
+ returnValue?: unknown;
8
+ }
9
+ export interface ModalConfig {
10
+ title: string;
11
+ content?: string;
12
+ footerButtons?: ModalFooterButton[];
13
+ size?: ModalSizeType;
14
+ closable?: boolean;
15
+ closeOnOutsideClick?: boolean;
16
+ }
@@ -0,0 +1,16 @@
1
+ import { ApplicationRef, ComponentRef, Injector } from '@angular/core';
2
+ import { ModalComponent } from '../modal.component';
3
+ import { Observable } from 'rxjs';
4
+ import { ModalConfig } from '../modal.types';
5
+ import * as i0 from "@angular/core";
6
+ export declare class ModalService {
7
+ private readonly injector;
8
+ private readonly appRef;
9
+ private modalRef;
10
+ constructor(injector: Injector, appRef: ApplicationRef);
11
+ get _modalRefForTesting(): ComponentRef<ModalComponent> | null;
12
+ set _modalRefForTesting(ref: ComponentRef<ModalComponent> | null);
13
+ open(config: ModalConfig): Observable<unknown>;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<ModalService, never>;
15
+ static ɵprov: i0.ɵɵInjectableDeclaration<ModalService>;
16
+ }
@@ -102,11 +102,11 @@ class ButtonComponent {
102
102
  this.clicked.emit('mouse');
103
103
  }
104
104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
105
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ButtonComponent, isStandalone: true, selector: "tk-button", inputs: { label: "label", disabled: "disabled", type: "type", severity: "severity", link: "link" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<p-button\n class=\"tk-button\"\n [label]=\"label\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n [severity]=\"link ? null : severity\"\n [link]=\"link\"\n (click)=\"onButtonClick()\"\n (keydown.enter)=\"onButtonClick()\"\n (keydown.space)=\"onButtonClick()\">\n</p-button>\n", styles: [":host ::ng-deep .p-button.p-button-primary .p-button-label,:host ::ng-deep .p-button.p-button-secondary .p-button-label,:host ::ng-deep .p-button.p-button-danger .p-button-label{color:var(--tk-surface-0, #ffffff)!important}:host ::ng-deep .p-button.p-button-link .p-button-label{color:var(--tk-primary-500, #16006f)!important}:host ::ng-deep .p-button.p-button-link:hover .p-button-label{color:var(--tk-primary-400, #45338c)!important}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }] }); }
105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ButtonComponent, isStandalone: true, selector: "tk-button", inputs: { label: "label", disabled: "disabled", type: "type", severity: "severity", link: "link" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<p-button\n class=\"tk-button\"\n [label]=\"label\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n [severity]=\"link ? null : severity\"\n [link]=\"link\"\n (click)=\"onButtonClick()\"\n (keydown.enter)=\"onButtonClick()\"\n (keydown.space)=\"onButtonClick()\">\n</p-button>\n", styles: [":host ::ng-deep .p-button.p-button-primary .p-button-label,:host ::ng-deep .p-button.p-button-danger .p-button-label{color:var(--tk-color-base-surface-0, #ffffff)!important}:host ::ng-deep .p-button.p-button-link .p-button-label{color:var(--tk-color-base-primary-500, #16006f)!important}:host ::ng-deep .p-button.p-button-link:hover .p-button-label{color:var(--tk-color-base-primary-400, #45338c)!important}:host ::ng-deep .p-button.p-button-secondary .p-button-label{color:var(--tk-color-base-surface-500, #8a8a8b)!important}:host ::ng-deep .p-button.p-button-secondary .p-button-label,:host ::ng-deep .p-button.p-button-danger .p-button-label{font-weight:var(--tk-font-weight-400, 400)}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }] }); }
106
106
  }
107
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ButtonComponent, decorators: [{
108
108
  type: Component,
109
- args: [{ selector: 'tk-button', standalone: true, imports: [ButtonModule], template: "<p-button\n class=\"tk-button\"\n [label]=\"label\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n [severity]=\"link ? null : severity\"\n [link]=\"link\"\n (click)=\"onButtonClick()\"\n (keydown.enter)=\"onButtonClick()\"\n (keydown.space)=\"onButtonClick()\">\n</p-button>\n", styles: [":host ::ng-deep .p-button.p-button-primary .p-button-label,:host ::ng-deep .p-button.p-button-secondary .p-button-label,:host ::ng-deep .p-button.p-button-danger .p-button-label{color:var(--tk-surface-0, #ffffff)!important}:host ::ng-deep .p-button.p-button-link .p-button-label{color:var(--tk-primary-500, #16006f)!important}:host ::ng-deep .p-button.p-button-link:hover .p-button-label{color:var(--tk-primary-400, #45338c)!important}\n"] }]
109
+ args: [{ selector: 'tk-button', standalone: true, imports: [ButtonModule], template: "<p-button\n class=\"tk-button\"\n [label]=\"label\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n [severity]=\"link ? null : severity\"\n [link]=\"link\"\n (click)=\"onButtonClick()\"\n (keydown.enter)=\"onButtonClick()\"\n (keydown.space)=\"onButtonClick()\">\n</p-button>\n", styles: [":host ::ng-deep .p-button.p-button-primary .p-button-label,:host ::ng-deep .p-button.p-button-danger .p-button-label{color:var(--tk-color-base-surface-0, #ffffff)!important}:host ::ng-deep .p-button.p-button-link .p-button-label{color:var(--tk-color-base-primary-500, #16006f)!important}:host ::ng-deep .p-button.p-button-link:hover .p-button-label{color:var(--tk-color-base-primary-400, #45338c)!important}:host ::ng-deep .p-button.p-button-secondary .p-button-label{color:var(--tk-color-base-surface-500, #8a8a8b)!important}:host ::ng-deep .p-button.p-button-secondary .p-button-label,:host ::ng-deep .p-button.p-button-danger .p-button-label{font-weight:var(--tk-font-weight-400, 400)}\n"] }]
110
110
  }], propDecorators: { label: [{
111
111
  type: Input
112
112
  }], disabled: [{
@@ -1 +1 @@
1
- {"version":3,"file":"tekus-design-system-components-button.mjs","sources":["../../../projects/design-system/components/button/src/button.component.ts","../../../projects/design-system/components/button/src/button.component.html","../../../projects/design-system/components/button/tekus-design-system-components-button.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\n\nexport type ButtonSeverity = 'primary' | 'secondary' | 'danger';\n\n/**\n * @component ButtonComponent\n * @description\n * Atomic button component that provides a reusable and customizable button element\n * across the application.\n * It uses PrimeNG’s `ButtonModule` under the hood and allows setting different visual\n * variants (severity), button types, and disabled states.\n *\n * This component ensures consistent design and behavior in all button interactions.\n * It is accessible via both mouse clicks and keyboard actions (Enter/Space).\n *\n * @usage\n * ```html\n * <tk-button\n * label=\"Save\"\n * [severity]=\"'primary'\"\n * [type]=\"'submit'\"\n * (clicked)=\"handleSave()\">\n * </tk-button>\n *\n * <tk-button\n * label=\"Cancel\"\n * [severity]=\"'secondary'\"\n * [disabled]=\"true\">\n * </tk-button>\n * ```\n */\n@Component({\n selector: 'tk-button',\n standalone: true,\n imports: [ButtonModule],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n})\nexport class ButtonComponent {\n /**\n * @property {string} label\n * @description\n * Text displayed inside the button.\n *\n * @default `'Label'`\n */\n @Input() label = 'Label';\n\n /**\n * @property {boolean} disabled\n * @description\n * Disables the button, preventing user interaction and applying a visual style\n * that indicates the inactive state.\n *\n * @default `false`\n */\n @Input() disabled = false;\n\n /**\n * @property {'button' | 'submit'} type\n * @description\n * Defines the button’s HTML type attribute.\n * - `'button'`: Standard clickable button (default).\n * - `'submit'`: Used to submit forms.\n *\n * @default `'button'`\n */\n @Input() type: 'button' | 'submit' = 'button';\n\n /**\n * @property {ButtonSeverity} severity\n * @description\n * Defines the visual importance or style of the button.\n * - `'primary'`: Default, neutral action.\n * - `'secondary'`: Secondary option.\n * - `'danger'`: Destructive or warning actions.\n *\n * @default `'secondary'`\n */\n @Input() severity: ButtonSeverity = 'primary';\n\n /**\n * @property {boolean} link\n * @description\n * When true, the button will be styled as a link (text only with underline).\n *\n * @default false\n */\n @Input() link = false;\n\n /**\n * @event clicked\n * @description\n * Emits when the button is activated via click or keyboard (Enter/Space),\n * unless the button is disabled.\n *\n * @example\n * ```html\n * <tk-button label=\"Click me\" (clicked)=\"handleClick()\"></tk-button>\n * ```\n */\n @Output() clicked = new EventEmitter<'mouse' | 'keyboard'>();\n\n /**\n * @method onButtonClick\n * @description\n * Handles the native click event. Emits the `clicked` event if the button\n * is not disabled.\n */\n onButtonClick(): void {\n if (!this.disabled) this.clicked.emit('mouse');\n }\n}\n","<p-button\n class=\"tk-button\"\n [label]=\"label\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n [severity]=\"link ? null : severity\"\n [link]=\"link\"\n (click)=\"onButtonClick()\"\n (keydown.enter)=\"onButtonClick()\"\n (keydown.space)=\"onButtonClick()\">\n</p-button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;MAQU,eAAe,CAAA;AAP5B,IAAA,WAAA,GAAA;AAQE;;;;;;AAMG;QACM,IAAK,CAAA,KAAA,GAAG,OAAO;AAExB;;;;;;;AAOG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;;;;AAQG;QACM,IAAI,CAAA,IAAA,GAAwB,QAAQ;AAE7C;;;;;;;;;AASG;QACM,IAAQ,CAAA,QAAA,GAAmB,SAAS;AAE7C;;;;;;AAMG;QACM,IAAI,CAAA,IAAA,GAAG,KAAK;AAErB;;;;;;;;;;AAUG;AACO,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAwB;AAW7D;AATC;;;;;AAKG;IACH,aAAa,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;;+GAxErC,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvC5B,8RAWA,EAAA,MAAA,EAAA,CAAA,ubAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDwBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACT,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,8RAAA,EAAA,MAAA,EAAA,CAAA,ubAAA,CAAA,EAAA;8BAYd,KAAK,EAAA,CAAA;sBAAb;gBAUQ,QAAQ,EAAA,CAAA;sBAAhB;gBAWQ,IAAI,EAAA,CAAA;sBAAZ;gBAYQ,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,IAAI,EAAA,CAAA;sBAAZ;gBAaS,OAAO,EAAA,CAAA;sBAAhB;;;AEtGH;;AAEG;;;;"}
1
+ {"version":3,"file":"tekus-design-system-components-button.mjs","sources":["../../../projects/design-system/components/button/src/button.component.ts","../../../projects/design-system/components/button/src/button.component.html","../../../projects/design-system/components/button/tekus-design-system-components-button.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\n\nexport type ButtonSeverity = 'primary' | 'secondary' | 'danger';\n\n/**\n * @component ButtonComponent\n * @description\n * Atomic button component that provides a reusable and customizable button element\n * across the application.\n * It uses PrimeNG’s `ButtonModule` under the hood and allows setting different visual\n * variants (severity), button types, and disabled states.\n *\n * This component ensures consistent design and behavior in all button interactions.\n * It is accessible via both mouse clicks and keyboard actions (Enter/Space).\n *\n * @usage\n * ```html\n * <tk-button\n * label=\"Save\"\n * [severity]=\"'primary'\"\n * [type]=\"'submit'\"\n * (clicked)=\"handleSave()\">\n * </tk-button>\n *\n * <tk-button\n * label=\"Cancel\"\n * [severity]=\"'secondary'\"\n * [disabled]=\"true\">\n * </tk-button>\n * ```\n */\n@Component({\n selector: 'tk-button',\n standalone: true,\n imports: [ButtonModule],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n})\nexport class ButtonComponent {\n /**\n * @property {string} label\n * @description\n * Text displayed inside the button.\n *\n * @default `'Label'`\n */\n @Input() label = 'Label';\n\n /**\n * @property {boolean} disabled\n * @description\n * Disables the button, preventing user interaction and applying a visual style\n * that indicates the inactive state.\n *\n * @default `false`\n */\n @Input() disabled = false;\n\n /**\n * @property {'button' | 'submit'} type\n * @description\n * Defines the button’s HTML type attribute.\n * - `'button'`: Standard clickable button (default).\n * - `'submit'`: Used to submit forms.\n *\n * @default `'button'`\n */\n @Input() type: 'button' | 'submit' = 'button';\n\n /**\n * @property {ButtonSeverity} severity\n * @description\n * Defines the visual importance or style of the button.\n * - `'primary'`: Default, neutral action.\n * - `'secondary'`: Secondary option.\n * - `'danger'`: Destructive or warning actions.\n *\n * @default `'secondary'`\n */\n @Input() severity: ButtonSeverity = 'primary';\n\n /**\n * @property {boolean} link\n * @description\n * When true, the button will be styled as a link (text only with underline).\n *\n * @default false\n */\n @Input() link = false;\n\n /**\n * @event clicked\n * @description\n * Emits when the button is activated via click or keyboard (Enter/Space),\n * unless the button is disabled.\n *\n * @example\n * ```html\n * <tk-button label=\"Click me\" (clicked)=\"handleClick()\"></tk-button>\n * ```\n */\n @Output() clicked = new EventEmitter<'mouse' | 'keyboard'>();\n\n /**\n * @method onButtonClick\n * @description\n * Handles the native click event. Emits the `clicked` event if the button\n * is not disabled.\n */\n onButtonClick(): void {\n if (!this.disabled) this.clicked.emit('mouse');\n }\n}\n","<p-button\n class=\"tk-button\"\n [label]=\"label\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n [severity]=\"link ? null : severity\"\n [link]=\"link\"\n (click)=\"onButtonClick()\"\n (keydown.enter)=\"onButtonClick()\"\n (keydown.space)=\"onButtonClick()\">\n</p-button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;MAQU,eAAe,CAAA;AAP5B,IAAA,WAAA,GAAA;AAQE;;;;;;AAMG;QACM,IAAK,CAAA,KAAA,GAAG,OAAO;AAExB;;;;;;;AAOG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;;;;;;;AAQG;QACM,IAAI,CAAA,IAAA,GAAwB,QAAQ;AAE7C;;;;;;;;;AASG;QACM,IAAQ,CAAA,QAAA,GAAmB,SAAS;AAE7C;;;;;;AAMG;QACM,IAAI,CAAA,IAAA,GAAG,KAAK;AAErB;;;;;;;;;;AAUG;AACO,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAwB;AAW7D;AATC;;;;;AAKG;IACH,aAAa,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;;+GAxErC,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvC5B,8RAWA,EAAA,MAAA,EAAA,CAAA,orBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDwBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACT,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,8RAAA,EAAA,MAAA,EAAA,CAAA,orBAAA,CAAA,EAAA;8BAYd,KAAK,EAAA,CAAA;sBAAb;gBAUQ,QAAQ,EAAA,CAAA;sBAAhB;gBAWQ,IAAI,EAAA,CAAA;sBAAZ;gBAYQ,QAAQ,EAAA,CAAA;sBAAhB;gBASQ,IAAI,EAAA,CAAA;sBAAZ;gBAaS,OAAO,EAAA,CAAA;sBAAhB;;;AEtGH;;AAEG;;;;"}
@@ -0,0 +1,266 @@
1
+ import * as i0 from '@angular/core';
2
+ import { forwardRef, EventEmitter, Output, Input, Component } from '@angular/core';
3
+ import * as i1 from '@angular/forms';
4
+ import { NG_VALUE_ACCESSOR, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
+ import * as i2 from 'primeng/datepicker';
6
+ import { DatePickerModule } from 'primeng/datepicker';
7
+ import * as i3 from 'primeng/floatlabel';
8
+ import { FloatLabelModule } from 'primeng/floatlabel';
9
+ import { FaIconComponent } from '@fortawesome/angular-fontawesome';
10
+ import { faCalendarDay } from '@fortawesome/pro-regular-svg-icons';
11
+
12
+ const TK_DATE_PICKER_VALUE_ACCESSOR = {
13
+ provide: NG_VALUE_ACCESSOR,
14
+ useExisting: forwardRef(() => DatePickerComponent),
15
+ multi: true,
16
+ };
17
+ /**
18
+ * @component DatePickerComponent
19
+ * @description
20
+ * A wrapper around PrimeNG's DatePicker component with support for single-date
21
+ * and range selection modes. It is compatible with both Reactive Forms (formControlName, [control])
22
+ * and Template-Driven Forms ([(ngModel)]).
23
+ *
24
+ * The component emits:
25
+ * - `handleSelect` when a valid single date or a completed date range is selected.
26
+ * - `handleClear` when the control is cleared (value becomes `null`).
27
+ */
28
+ class DatePickerComponent {
29
+ constructor() {
30
+ /**
31
+ * @property {'single' | 'range'} selectionMode
32
+ * @description
33
+ * Defines how the datepicker behaves:
34
+ * - `'single'`: select one date
35
+ * - `'range'`: select a pair of dates [start, end]
36
+ * @default 'range'
37
+ */
38
+ this.selectionMode = 'range';
39
+ /**
40
+ * @property {boolean} readonlyInput
41
+ * @description
42
+ * Disables manual typing in the input and forces the user to select via the calendar.
43
+ * @default true
44
+ */
45
+ this.readonlyInput = true;
46
+ /**
47
+ * @property {boolean} showClear
48
+ * @description
49
+ * Displays a clear button that resets the datepicker value.
50
+ * @default true
51
+ */
52
+ this.showClear = true;
53
+ /**
54
+ * @property {boolean} showIcon
55
+ * @description
56
+ * Shows the calendar icon inside the input.
57
+ * @default true
58
+ */
59
+ this.showIcon = true;
60
+ /**
61
+ * @property {string} dateFormat
62
+ * @description
63
+ * Format used by PrimeNG for displaying dates.
64
+ * @default 'mm/dd/yy'
65
+ */
66
+ this.dateFormat = 'mm/dd/yy';
67
+ /**
68
+ * @property {Date | null} maxDate
69
+ * @description
70
+ * Maximum selectable date. When set, the calendar will prevent selecting dates after this value.
71
+ * Provide a JavaScript Date object. Use `null` to allow any future date.
72
+ * @default null
73
+ */
74
+ this.maxDate = null;
75
+ /**
76
+ * @property {Date | null} minDate
77
+ * @description
78
+ * Minimum selectable date. When set, the calendar will prevent selecting dates before this value.
79
+ * Provide a JavaScript Date object. Use `null` to allow any past date.
80
+ * @default null
81
+ */
82
+ this.minDate = null;
83
+ /**
84
+ * @property {string} labelText
85
+ * @description
86
+ * Label shown by the float-label wrapper.
87
+ * @default 'Select a date'
88
+ */
89
+ this.labelText = 'Select a date';
90
+ /**
91
+ * @private
92
+ * @property {FormControl<DateValue>} internalControl
93
+ * @description
94
+ * The internal FormControl used in the template. It handles value synchronization
95
+ * for both CVA and the optional external control input.
96
+ */
97
+ this.internalControl = new FormControl(null);
98
+ // Functions registered by ControlValueAccessor to communicate with the outside form
99
+ this.onChange = () => { };
100
+ this.onTouched = () => { };
101
+ /**
102
+ * @event handleSelect
103
+ * @description
104
+ * Emitted when:
105
+ * - single mode → a valid Date is selected
106
+ * - range mode → both start and end dates are selected
107
+ *
108
+ * Payload:
109
+ * - Date (single mode)
110
+ * - [Date, Date] (completed range)
111
+ */
112
+ this.handleSelect = new EventEmitter();
113
+ /**
114
+ * @event handleClear
115
+ * @description
116
+ * Emitted when the control's value becomes `null`.
117
+ */
118
+ this.handleClear = new EventEmitter();
119
+ /**
120
+ * @property faCalendarDay
121
+ * @description
122
+ * Icon displayed inside the datepicker input.
123
+ */
124
+ this.faCalendarDay = faCalendarDay;
125
+ }
126
+ /**
127
+ * @property {FormControl<DateValue> | null} control
128
+ * @description
129
+ * Allows passing an external FormControl (traditional Reactive Forms usage).
130
+ * If provided, it overrides the internal control.
131
+ */
132
+ set control(ctrl) {
133
+ // If the user provides a control, we use that control for everything.
134
+ if (ctrl) {
135
+ this.internalControl = ctrl;
136
+ }
137
+ }
138
+ get control() {
139
+ return this.internalControl;
140
+ }
141
+ /**
142
+ * @method writeValue
143
+ * @description Writes a new value from the form model (ngModel or formControl) into the component.
144
+ */
145
+ writeValue(value) {
146
+ if (value !== undefined) {
147
+ // Use { emitEvent: false } to prevent an unnecessary valueChanges loop.
148
+ this.internalControl.setValue(value, { emitEvent: false });
149
+ }
150
+ }
151
+ /**
152
+ * @method registerOnChange
153
+ * @description Registers a callback function to be called when the control's value changes.
154
+ */
155
+ registerOnChange(fn) {
156
+ this.onChange = fn;
157
+ }
158
+ /**
159
+ * @method registerOnTouched
160
+ * @description Registers a callback function to be called when the control receives a blur event (is touched).
161
+ */
162
+ registerOnTouched(fn) {
163
+ this.onTouched = fn;
164
+ }
165
+ /**
166
+ * @method setDisabledState
167
+ * @description Called when the control should be disabled or enabled.
168
+ */
169
+ setDisabledState(isDisabled) {
170
+ const actionMap = {
171
+ true: () => this.internalControl.disable(),
172
+ false: () => this.internalControl.enable(),
173
+ };
174
+ actionMap[String(isDisabled)]();
175
+ }
176
+ /**
177
+ * @method ngOnInit
178
+ * @description
179
+ * Subscribes to the internal control's valueChanges:
180
+ * 1. Notifies the external form (CVA) via `this.onChange()`.
181
+ * 2. Emits the semantic events `handleSelect` or `handleClear`.
182
+ */
183
+ ngOnInit() {
184
+ this.sub = this.internalControl.valueChanges.subscribe(value => {
185
+ // Notify the CVA / External Form
186
+ this.onChange(value);
187
+ this.onTouched();
188
+ if (value === null) {
189
+ this.handleClear.emit();
190
+ return;
191
+ }
192
+ // RANGE MODE
193
+ if (this.selectionMode === 'range') {
194
+ if (Array.isArray(value)) {
195
+ const [start, end] = value;
196
+ // Emit ONLY when both dates exist
197
+ if (start instanceof Date && end instanceof Date) {
198
+ this.handleSelect.emit([start, end]);
199
+ }
200
+ }
201
+ return;
202
+ }
203
+ // SINGLE MODE
204
+ if (this.selectionMode === 'single' && value instanceof Date) {
205
+ this.handleSelect.emit(value);
206
+ }
207
+ });
208
+ }
209
+ /**
210
+ * @method ngOnDestroy
211
+ * @description Cleans up the internal subscription when the component is destroyed.
212
+ */
213
+ ngOnDestroy() {
214
+ this.sub?.unsubscribe();
215
+ }
216
+ /**
217
+ * @method clear
218
+ * @description
219
+ * Programmatically clears the control's value,
220
+ * which automatically triggers `handleClear`.
221
+ */
222
+ clear() {
223
+ this.internalControl.setValue(null);
224
+ }
225
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
226
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DatePickerComponent, isStandalone: true, selector: "tk-date-picker", inputs: { selectionMode: "selectionMode", readonlyInput: "readonlyInput", showClear: "showClear", showIcon: "showIcon", dateFormat: "dateFormat", maxDate: "maxDate", minDate: "minDate", labelText: "labelText", control: "control" }, outputs: { handleSelect: "handleSelect", handleClear: "handleClear" }, providers: [TK_DATE_PICKER_VALUE_ACCESSOR], ngImport: i0, template: "<div class=\"datepicker-container\">\n <p-floatlabel>\n <p-datepicker\n inputId=\"datepicker\"\n iconDisplay=\"input\"\n [formControl]=\"internalControl\"\n [selectionMode]=\"selectionMode\"\n [readonlyInput]=\"readonlyInput\"\n [showClear]=\"showClear\"\n [showIcon]=\"showIcon\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [dateFormat]=\"dateFormat\">\n <ng-template #inputicon let-clickCallBack=\"clickCallBack\">\n <fa-icon\n tabindex=\"0\"\n [icon]=\"faCalendarDay\"\n (keydown.enter)=\"clickCallBack($event)\"\n (keydown.space)=\"clickCallBack($event)\"\n (click)=\"clickCallBack($event)\">\n </fa-icon>\n </ng-template>\n </p-datepicker>\n\n <label for=\"datepicker\">{{ labelText }}</label>\n </p-floatlabel>\n</div>\n", styles: [":host ::ng-deep .p-datepicker{width:100%}:host ::ng-deep .p-datepicker-input{border:none;border-bottom:1px solid var(--tk-color-border-default, #cecdcd);border-radius:0}:host ::ng-deep .p-datepicker-input:focus{border-color:var(--tk-color-accent-default, #16006f)}:host ::ng-deep .p-datepicker-decade{color:var(--tk-color-text-default, #121214)}:host ::ng-deep .p-datepicker-clear-icon{color:var(--tk-surface-700, #424243);inset-inline-end:2.5rem!important}:host ::ng-deep .p-floatlabel:has(.p-inputwrapper-filled) label,:host ::ng-deep .p-floatlabel:has(input:focus) label{color:var(--tk-primary-500, #16006f)}:host ::ng-deep .p-floatlabel label{color:var(--tk-surface-700, #8a8a8b);font-family:var(--tk-font-family, Poppins, sans-serif);font-size:var(--tk-font-size-2xs, 1rem);font-weight:var(--tk-font-weight-400, 400)}:host ::ng-deep .p-datepicker-day-selected-range{background-color:var(--tk-primary-100, #b7b0d2);color:var(--tk-primary-700, #10004f)}:host ::ng-deep .p-datepicker-panel{top:-383px!important}.datepicker-container{margin-top:var(--tk-spacing-base-200, 2rem)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i2.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "fluid", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "size", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "ngmodule", type: FloatLabelModule }, { kind: "component", type: i3.FloatLabel, selector: "p-floatlabel, p-floatLabel, p-float-label", inputs: ["variant"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] }); }
227
+ }
228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DatePickerComponent, decorators: [{
229
+ type: Component,
230
+ args: [{ selector: 'tk-date-picker', standalone: true, imports: [
231
+ FormsModule,
232
+ ReactiveFormsModule,
233
+ DatePickerModule,
234
+ FloatLabelModule,
235
+ FaIconComponent,
236
+ ], providers: [TK_DATE_PICKER_VALUE_ACCESSOR], template: "<div class=\"datepicker-container\">\n <p-floatlabel>\n <p-datepicker\n inputId=\"datepicker\"\n iconDisplay=\"input\"\n [formControl]=\"internalControl\"\n [selectionMode]=\"selectionMode\"\n [readonlyInput]=\"readonlyInput\"\n [showClear]=\"showClear\"\n [showIcon]=\"showIcon\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [dateFormat]=\"dateFormat\">\n <ng-template #inputicon let-clickCallBack=\"clickCallBack\">\n <fa-icon\n tabindex=\"0\"\n [icon]=\"faCalendarDay\"\n (keydown.enter)=\"clickCallBack($event)\"\n (keydown.space)=\"clickCallBack($event)\"\n (click)=\"clickCallBack($event)\">\n </fa-icon>\n </ng-template>\n </p-datepicker>\n\n <label for=\"datepicker\">{{ labelText }}</label>\n </p-floatlabel>\n</div>\n", styles: [":host ::ng-deep .p-datepicker{width:100%}:host ::ng-deep .p-datepicker-input{border:none;border-bottom:1px solid var(--tk-color-border-default, #cecdcd);border-radius:0}:host ::ng-deep .p-datepicker-input:focus{border-color:var(--tk-color-accent-default, #16006f)}:host ::ng-deep .p-datepicker-decade{color:var(--tk-color-text-default, #121214)}:host ::ng-deep .p-datepicker-clear-icon{color:var(--tk-surface-700, #424243);inset-inline-end:2.5rem!important}:host ::ng-deep .p-floatlabel:has(.p-inputwrapper-filled) label,:host ::ng-deep .p-floatlabel:has(input:focus) label{color:var(--tk-primary-500, #16006f)}:host ::ng-deep .p-floatlabel label{color:var(--tk-surface-700, #8a8a8b);font-family:var(--tk-font-family, Poppins, sans-serif);font-size:var(--tk-font-size-2xs, 1rem);font-weight:var(--tk-font-weight-400, 400)}:host ::ng-deep .p-datepicker-day-selected-range{background-color:var(--tk-primary-100, #b7b0d2);color:var(--tk-primary-700, #10004f)}:host ::ng-deep .p-datepicker-panel{top:-383px!important}.datepicker-container{margin-top:var(--tk-spacing-base-200, 2rem)}\n"] }]
237
+ }], propDecorators: { selectionMode: [{
238
+ type: Input
239
+ }], readonlyInput: [{
240
+ type: Input
241
+ }], showClear: [{
242
+ type: Input
243
+ }], showIcon: [{
244
+ type: Input
245
+ }], dateFormat: [{
246
+ type: Input
247
+ }], maxDate: [{
248
+ type: Input
249
+ }], minDate: [{
250
+ type: Input
251
+ }], labelText: [{
252
+ type: Input
253
+ }], control: [{
254
+ type: Input
255
+ }], handleSelect: [{
256
+ type: Output
257
+ }], handleClear: [{
258
+ type: Output
259
+ }] } });
260
+
261
+ /**
262
+ * Generated bundle index. Do not edit.
263
+ */
264
+
265
+ export { DatePickerComponent };
266
+ //# sourceMappingURL=tekus-design-system-components-date-picker.mjs.map