ng-luna 0.1.1 → 0.1.2

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/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # ng-luna
2
2
 
3
- An Angular component library inspired by Windows XP aesthetics, built with XP.css and IBM Plex fonts.
3
+ An Angular component library inspired by Windows XP aesthetics, built with IBM Plex fonts.
4
4
 
5
5
  ## Overview
6
6
 
7
- ng-luna provides a collection of Angular components styled to match the classic Windows XP design language. The library uses [XP.css](https://botoxparty.github.io/XP.css/) for styling and [IBM Plex](https://www.ibm.com/plex/) fonts for typography.
7
+ ng-luna provides a collection of Angular components styled to match the classic Windows XP design language. The library uses custom styling inspired by Windows XP and [IBM Plex](https://www.ibm.com/plex/) fonts for typography.
8
8
 
9
- All components are **standalone** and implement Angular's reactive forms API where applicable, making them compatible with `FormControl`, `FormGroup`, and `ngModel`.
9
+ All components are **standalone** and implement Angular's reactive forms API where applicable, making them compatible with `FormControl`, `FormGroup`, and `ngModel`. Components are built on **Angular CDK** for enhanced accessibility, keyboard navigation, drag-and-drop, and cross-platform support.
10
10
 
11
11
  ## Installation
12
12
 
@@ -37,8 +37,51 @@ import { ButtonComponent } from 'ng-luna';
37
37
  })
38
38
  ```
39
39
 
40
+ ### Using Bundled Fonts
41
+
42
+ The IBM Plex fonts are **automatically bundled and loaded** when you use any ng-luna component. No additional setup or configuration is required.
43
+
44
+ **Fonts are automatically available:**
45
+ - ✅ Font files are bundled with the library
46
+ - ✅ Fonts load automatically when you use any component
47
+ - ✅ No imports or configuration needed
48
+ - ✅ Works out of the box
49
+
50
+ **Using fonts in your own styles:**
51
+
52
+ Since the fonts are already loaded, you can use them directly in your CSS/SCSS:
53
+
54
+ ```scss
55
+ .my-custom-class {
56
+ font-family: 'IBM Plex Sans', sans-serif;
57
+ }
58
+
59
+ .code-snippet {
60
+ font-family: 'IBM Plex Mono', monospace;
61
+ }
62
+
63
+ .heading {
64
+ font-family: 'IBM Plex Serif', serif;
65
+ }
66
+ ```
67
+
68
+ **Available font families:**
69
+ - `'IBM Plex Sans', sans-serif` - Default sans-serif font used by components
70
+ - `'IBM Plex Mono', monospace` - Monospace font
71
+ - `'IBM Plex Serif', serif` - Serif font
72
+
40
73
  ## Components
41
74
 
75
+ All components extend the `LunaControl` base class, which provides the following common inputs available on every component:
76
+
77
+ - `id?: string` - Element ID
78
+ - `name?: string` - Name attribute
79
+ - `disabled: boolean` - Whether the control is disabled (default: `false`)
80
+ - `tabindex?: number` - Tab index for keyboard navigation
81
+ - `autofocus: boolean` - Whether the control should be autofocused (default: `false`)
82
+
83
+ These inputs are inherited from the base class and available on all components unless otherwise noted in the component-specific documentation below.
84
+
42
85
  ### Button Component
43
86
 
44
87
  The `luna-button` component provides a Windows XP-styled button.
@@ -47,20 +90,16 @@ The `luna-button` component provides a Windows XP-styled button.
47
90
 
48
91
  #### Inputs
49
92
 
50
- - `autofocus: boolean` - Whether the button should be autofocused (default: `false`)
51
93
  - `command?: string` - Command to invoke when the button is clicked
52
94
  - `commandfor?: string` - Element ID that the command is for
53
- - `disabled: boolean` - Whether the button is disabled (default: `false`)
54
95
  - `form?: string` - Form element ID to associate with
55
96
  - `formaction?: string` - URL to submit the form to (for submit buttons)
56
97
  - `formenctype?: FormEnctype` - Form encoding type: `'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain'`
57
98
  - `formmethod?: FormMethod` - HTTP method for form submission: `'get' | 'post'`
58
99
  - `formnovalidate: boolean` - Whether to bypass form validation (default: `false`)
59
100
  - `formtarget?: FormTarget` - Where to display form response: `'_self' | '_blank' | '_parent' | '_top'`
60
- - `name?: string` - Name attribute for the button
61
101
  - `popovertarget?: string` - ID of popover element to control
62
102
  - `popovertargetaction?: PopoverTargetAction` - Popover action: `'show' | 'hide' | 'toggle'`
63
- - `tabindex?: number` - Tab index for keyboard navigation
64
103
  - `type: ButtonType` - Button type: `'button' | 'submit' | 'reset'` (default: `'button'`)
65
104
  - `value?: string` - Value attribute for the button
66
105
 
@@ -87,9 +126,7 @@ The `luna-checkbox` component provides a Windows XP-styled checkbox that impleme
87
126
 
88
127
  #### Inputs
89
128
 
90
- - `disabled: boolean` - Whether the checkbox is disabled (default: `false`)
91
129
  - `label?: string` - Label text for the checkbox
92
- - `name?: string` - Name attribute for the checkbox
93
130
  - `value?: string` - Value attribute for the checkbox
94
131
 
95
132
  #### Outputs
@@ -132,8 +169,6 @@ The `luna-input` component provides a Windows XP-styled text input that implemen
132
169
 
133
170
  #### Inputs
134
171
 
135
- - `disabled: boolean` - Whether the input is disabled (default: `false`)
136
- - `name?: string` - Name attribute for the input
137
172
  - `placeholder?: string` - Placeholder text
138
173
  - `type: InputType` - Input type: `'text' | 'password' | 'email'` (default: `'text'`)
139
174
  - `readonly: boolean` - Whether the input is readonly (default: `false`)
@@ -182,11 +217,11 @@ The `luna-radio` component provides a Windows XP-styled radio button that implem
182
217
 
183
218
  #### Inputs
184
219
 
185
- - `disabled: boolean` - Whether the radio button is disabled (default: `false`)
186
220
  - `label?: string` - Label text for the radio button
187
- - `name?: string` - Name attribute for the radio button (required for grouping)
188
221
  - `value?: string` - Value attribute for the radio button
189
222
 
223
+ **Note:** The `name` attribute is required for grouping radio buttons together.
224
+
190
225
  #### Outputs
191
226
 
192
227
  - `change: EventEmitter<string>` - Emitted when the radio button is selected
@@ -216,8 +251,7 @@ The `luna-select` component provides a Windows XP-styled select dropdown that im
216
251
 
217
252
  #### Inputs
218
253
 
219
- - `disabled: boolean` - Whether the select is disabled (default: `false`)
220
- - `name?: string` - Name attribute for the select
254
+ No additional inputs beyond the common base inputs.
221
255
 
222
256
  #### Outputs
223
257
 
@@ -242,8 +276,6 @@ The `luna-slider` component provides a Windows XP-styled range slider that imple
242
276
 
243
277
  #### Inputs
244
278
 
245
- - `disabled: boolean` - Whether the slider is disabled (default: `false`)
246
- - `name?: string` - Name attribute for the slider
247
279
  - `min: number` - Minimum value (default: `0`)
248
280
  - `max: number` - Maximum value (default: `100`)
249
281
  - `step: number` - Step value (default: `1`)
@@ -268,7 +300,7 @@ The `luna-slider` component provides a Windows XP-styled range slider that imple
268
300
 
269
301
  ### Tabs Component
270
302
 
271
- The `luna-tabs` component provides a Windows XP-styled tab interface.
303
+ The `luna-tabs` component provides a Windows XP-styled tab interface with keyboard navigation support.
272
304
 
273
305
  **Selector:** `luna-tabs`
274
306
 
@@ -281,6 +313,11 @@ The `luna-tabs` component provides a Windows XP-styled tab interface.
281
313
 
282
314
  - `tabChange: EventEmitter<string>` - Emitted when a tab is selected
283
315
 
316
+ #### Keyboard Navigation
317
+
318
+ - **Arrow Left/Right** - Navigate between tabs
319
+ - **Tab** - Move focus to tab panel content
320
+
284
321
  #### Example
285
322
 
286
323
  ```html
@@ -306,8 +343,6 @@ The `luna-textarea` component provides a Windows XP-styled textarea that impleme
306
343
 
307
344
  #### Inputs
308
345
 
309
- - `disabled: boolean` - Whether the textarea is disabled (default: `false`)
310
- - `name?: string` - Name attribute for the textarea
311
346
  - `placeholder?: string` - Placeholder text
312
347
  - `rows?: number` - Number of visible rows
313
348
  - `cols?: number` - Number of visible columns
@@ -332,7 +367,7 @@ The `luna-textarea` component provides a Windows XP-styled textarea that impleme
332
367
 
333
368
  ### Window Component
334
369
 
335
- The `luna-window` component provides a Windows XP-styled window with title bar and controls.
370
+ The `luna-window` component provides a Windows XP-styled draggable window with title bar and controls.
336
371
 
337
372
  **Selector:** `luna-window`
338
373
 
@@ -344,6 +379,8 @@ The `luna-window` component provides a Windows XP-styled window with title bar a
344
379
  - `showHelp: boolean` - Whether to show the help button (default: `false`)
345
380
  - `showClose: boolean` - Whether to show the close button (default: `true`)
346
381
  - `isMaximized: boolean` - Whether the window is currently maximized (default: `false`)
382
+ - `boundaryElement?: string` - CSS selector for element that constrains window dragging
383
+ - `scrollable: boolean` - Whether the window body should be scrollable (default: `false`)
347
384
 
348
385
  #### Outputs
349
386
 
@@ -353,12 +390,18 @@ The `luna-window` component provides a Windows XP-styled window with title bar a
353
390
  - `help: EventEmitter<void>` - Emitted when the help button is clicked
354
391
  - `close: EventEmitter<void>` - Emitted when the close button is clicked
355
392
 
393
+ #### Dragging
394
+
395
+ The window can be dragged by its title bar. Dragging is automatically disabled when the window is maximized.
396
+
356
397
  #### Example
357
398
 
358
399
  ```html
359
400
  <luna-window
360
401
  title="My Application"
361
402
  [showHelp]="true"
403
+ boundaryElement=".container"
404
+ [scrollable]="true"
362
405
  (minimize)="onMinimize()"
363
406
  (maximize)="onMaximize()"
364
407
  (close)="onClose()">
@@ -368,6 +411,21 @@ The `luna-window` component provides a Windows XP-styled window with title bar a
368
411
  </luna-window>
369
412
  ```
370
413
 
414
+ ## Accessibility & CDK Features
415
+
416
+ All components leverage **Angular CDK** for enhanced functionality:
417
+
418
+ - **Focus Management** - All form components track focus states for better accessibility
419
+ - **Keyboard Navigation** - Tabs support arrow key navigation with focus management
420
+ - **Screen Reader Support** - Components announce state changes via `LiveAnnouncer`
421
+ - **Drag & Drop** - Window component supports draggable functionality with boundary constraints
422
+ - **Scrolling** - Window body supports scrollable content areas
423
+ - **Platform Detection** - Components adapt behavior based on platform/browser
424
+ - **RTL Support** - Input and button components support right-to-left layouts
425
+ - **Type Coercion** - Number inputs use type-safe coercion utilities
426
+
427
+ Screen reader announcements are non-intrusive and only audible to assistive technology users.
428
+
371
429
  ## Reactive Forms Support
372
430
 
373
431
  Components that implement `ControlValueAccessor` (checkbox, input, radio, select, slider, textarea) can be used with Angular's reactive forms:
@@ -449,7 +507,6 @@ ng-luna/
449
507
 
450
508
  ## Dependencies
451
509
 
452
- - **XP.css** (v0.2.6) - Windows XP styling framework
453
510
  - **@ibm/plex** (v6.4.1) - IBM Plex font families (fonts are bundled with the library)
454
511
  - **@angular/cdk** (v19.2.17) - Angular Component Dev Kit
455
512
 
@@ -1,4 +1,7 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { EventEmitter, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';
2
+ import { Dir } from '@angular/cdk/bidi';
3
+ import { FocusMonitor } from '@angular/cdk/a11y';
4
+ import { Platform } from '@angular/cdk/platform';
2
5
  import { LunaControl } from '../luna-control';
3
6
  import * as i0 from "@angular/core";
4
7
  export type ButtonType = 'button' | 'submit' | 'reset';
@@ -6,7 +9,11 @@ export type FormEnctype = 'application/x-www-form-urlencoded' | 'multipart/form-
6
9
  export type FormMethod = 'get' | 'post';
7
10
  export type FormTarget = '_self' | '_blank' | '_parent' | '_top';
8
11
  export type PopoverTargetAction = 'show' | 'hide' | 'toggle';
9
- export declare class ButtonComponent extends LunaControl {
12
+ export declare class ButtonComponent extends LunaControl implements AfterViewInit, OnDestroy {
13
+ private elementRef;
14
+ private focusMonitor;
15
+ platform: Platform;
16
+ dir: Dir;
10
17
  command?: string;
11
18
  commandfor?: string;
12
19
  form?: string;
@@ -20,6 +27,9 @@ export declare class ButtonComponent extends LunaControl {
20
27
  type: ButtonType;
21
28
  value?: string;
22
29
  click: EventEmitter<MouseEvent>;
30
+ constructor(elementRef: ElementRef<HTMLElement>, focusMonitor: FocusMonitor, platform: Platform, dir: Dir);
31
+ ngAfterViewInit(): void;
32
+ ngOnDestroy(): void;
23
33
  onClick(event: MouseEvent): void;
24
34
  static ɵfac: i0.ɵɵFactoryDeclaration<ButtonComponent, never>;
25
35
  static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "luna-button", never, { "command": { "alias": "command"; "required": false; }; "commandfor": { "alias": "commandfor"; "required": false; }; "form": { "alias": "form"; "required": false; }; "formaction": { "alias": "formaction"; "required": false; }; "formenctype": { "alias": "formenctype"; "required": false; }; "formmethod": { "alias": "formmethod"; "required": false; }; "formnovalidate": { "alias": "formnovalidate"; "required": false; }; "formtarget": { "alias": "formtarget"; "required": false; }; "popovertarget": { "alias": "popovertarget"; "required": false; }; "popovertargetaction": { "alias": "popovertargetaction"; "required": false; }; "type": { "alias": "type"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "click": "click"; }, never, ["*"], true, never>;
@@ -1,14 +1,23 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { EventEmitter, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';
4
+ import { Platform } from '@angular/cdk/platform';
3
5
  import { LunaControl } from '../luna-control';
4
6
  import * as i0 from "@angular/core";
5
- export declare class CheckboxComponent extends LunaControl implements ControlValueAccessor {
7
+ export declare class CheckboxComponent extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy {
8
+ private elementRef;
9
+ private focusMonitor;
10
+ private liveAnnouncer;
11
+ platform: Platform;
6
12
  label?: string;
7
13
  value?: string;
8
14
  change: EventEmitter<boolean>;
9
15
  checked: boolean;
10
16
  private onChange;
11
17
  private onTouched;
18
+ constructor(elementRef: ElementRef<HTMLElement>, focusMonitor: FocusMonitor, liveAnnouncer: LiveAnnouncer, platform: Platform);
19
+ ngAfterViewInit(): void;
20
+ ngOnDestroy(): void;
12
21
  onCheckboxChange(event: Event): void;
13
22
  writeValue(value: boolean): void;
14
23
  registerOnChange(fn: (value: boolean) => void): void;
@@ -1,9 +1,19 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { EventEmitter, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';
4
+ import { Platform } from '@angular/cdk/platform';
5
+ import { Dir } from '@angular/cdk/bidi';
6
+ import { Clipboard } from '@angular/cdk/clipboard';
3
7
  import { LunaControl } from '../luna-control';
4
8
  import * as i0 from "@angular/core";
5
9
  export type InputType = 'text' | 'password' | 'email';
6
- export declare class InputComponent extends LunaControl implements ControlValueAccessor {
10
+ export declare class InputComponent extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy {
11
+ private elementRef;
12
+ private focusMonitor;
13
+ private liveAnnouncer;
14
+ platform: Platform;
15
+ dir: Dir;
16
+ private clipboard;
7
17
  placeholder?: string;
8
18
  readonly: boolean;
9
19
  type: InputType;
@@ -12,6 +22,10 @@ export declare class InputComponent extends LunaControl implements ControlValueA
12
22
  value: string;
13
23
  private onChange;
14
24
  private onTouched;
25
+ inputElement?: ElementRef<HTMLInputElement>;
26
+ constructor(elementRef: ElementRef<HTMLElement>, focusMonitor: FocusMonitor, liveAnnouncer: LiveAnnouncer, platform: Platform, dir: Dir, clipboard: Clipboard);
27
+ ngAfterViewInit(): void;
28
+ ngOnDestroy(): void;
15
29
  onInputChange(event: Event): void;
16
30
  onInputBlur(event: FocusEvent): void;
17
31
  writeValue(value: string): void;
@@ -1,8 +1,19 @@
1
+ import { OnChanges, SimpleChanges } from '@angular/core';
2
+ import { NumberInput } from '@angular/cdk/coercion';
3
+ import { LiveAnnouncer } from '@angular/cdk/a11y';
1
4
  import { LunaControl } from '../luna-control';
2
5
  import * as i0 from "@angular/core";
3
- export declare class ProgressComponent extends LunaControl {
4
- max: number;
5
- value?: number;
6
+ export declare class ProgressComponent extends LunaControl implements OnChanges {
7
+ private liveAnnouncer;
8
+ set max(value: NumberInput);
9
+ get max(): number;
10
+ set value(value: NumberInput | undefined);
11
+ get value(): number | undefined;
12
+ private _max;
13
+ private _value?;
14
+ private _previousValue?;
15
+ constructor(liveAnnouncer: LiveAnnouncer);
16
+ ngOnChanges(changes: SimpleChanges): void;
6
17
  static ɵfac: i0.ɵɵFactoryDeclaration<ProgressComponent, never>;
7
18
  static ɵcmp: i0.ɵɵComponentDeclaration<ProgressComponent, "luna-progress", never, { "max": { "alias": "max"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, {}, never, never, true, never>;
8
19
  }
@@ -1,14 +1,23 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { EventEmitter, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';
4
+ import { Platform } from '@angular/cdk/platform';
3
5
  import { LunaControl } from '../luna-control';
4
6
  import * as i0 from "@angular/core";
5
- export declare class RadioComponent extends LunaControl implements ControlValueAccessor {
7
+ export declare class RadioComponent extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy {
8
+ private elementRef;
9
+ private focusMonitor;
10
+ private liveAnnouncer;
11
+ platform: Platform;
6
12
  label?: string;
7
13
  value?: string;
8
14
  change: EventEmitter<string>;
9
15
  checked: boolean;
10
16
  private onChange;
11
17
  private onTouched;
18
+ constructor(elementRef: ElementRef<HTMLElement>, focusMonitor: FocusMonitor, liveAnnouncer: LiveAnnouncer, platform: Platform);
19
+ ngAfterViewInit(): void;
20
+ ngOnDestroy(): void;
12
21
  onRadioChange(event: Event): void;
13
22
  writeValue(value: string | null): void;
14
23
  registerOnChange(fn: (value: string | null) => void): void;
@@ -1,12 +1,21 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { EventEmitter, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';
4
+ import { Platform } from '@angular/cdk/platform';
3
5
  import { LunaControl } from '../luna-control';
4
6
  import * as i0 from "@angular/core";
5
- export declare class SelectComponent extends LunaControl implements ControlValueAccessor {
7
+ export declare class SelectComponent extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy {
8
+ private elementRef;
9
+ private focusMonitor;
10
+ private liveAnnouncer;
11
+ platform: Platform;
6
12
  change: EventEmitter<string>;
7
13
  value: string;
8
14
  private onChange;
9
15
  private onTouched;
16
+ constructor(elementRef: ElementRef<HTMLElement>, focusMonitor: FocusMonitor, liveAnnouncer: LiveAnnouncer, platform: Platform);
17
+ ngAfterViewInit(): void;
18
+ ngOnDestroy(): void;
10
19
  onSelectChange(event: Event): void;
11
20
  writeValue(value: string): void;
12
21
  registerOnChange(fn: (value: string) => void): void;
@@ -1,17 +1,33 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { EventEmitter, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';
4
+ import { NumberInput } from '@angular/cdk/coercion';
5
+ import { Platform } from '@angular/cdk/platform';
3
6
  import { LunaControl } from '../luna-control';
4
7
  import * as i0 from "@angular/core";
5
- export declare class SliderComponent extends LunaControl implements ControlValueAccessor {
8
+ export declare class SliderComponent extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy {
9
+ private elementRef;
10
+ private focusMonitor;
11
+ private liveAnnouncer;
12
+ platform: Platform;
6
13
  boxIndicator: boolean;
7
- max: number;
8
- min: number;
9
- step: number;
14
+ set max(value: NumberInput);
15
+ get max(): number;
16
+ set min(value: NumberInput);
17
+ get min(): number;
18
+ set step(value: NumberInput);
19
+ get step(): number;
10
20
  vertical: boolean;
11
21
  change: EventEmitter<number>;
12
22
  value: number;
23
+ private _max;
24
+ private _min;
25
+ private _step;
13
26
  private onChange;
14
27
  private onTouched;
28
+ constructor(elementRef: ElementRef<HTMLElement>, focusMonitor: FocusMonitor, liveAnnouncer: LiveAnnouncer, platform: Platform);
29
+ ngAfterViewInit(): void;
30
+ ngOnDestroy(): void;
15
31
  onSliderChange(event: Event): void;
16
32
  onSliderBlur(): void;
17
33
  writeValue(value: number): void;
@@ -1,4 +1,5 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { EventEmitter, QueryList, ElementRef, AfterViewInit } from '@angular/core';
2
+ import { Platform } from '@angular/cdk/platform';
2
3
  import { LunaControl } from '../luna-control';
3
4
  import * as i0 from "@angular/core";
4
5
  export interface Tab {
@@ -6,12 +7,18 @@ export interface Tab {
6
7
  label: string;
7
8
  content?: string;
8
9
  }
9
- export declare class TabsComponent extends LunaControl {
10
+ export declare class TabsComponent extends LunaControl implements AfterViewInit {
11
+ platform: Platform;
10
12
  activeTabId?: string;
11
13
  tabs: Tab[];
12
14
  tabChange: EventEmitter<string>;
15
+ tabButtons: QueryList<ElementRef<HTMLButtonElement>>;
16
+ private keyManager?;
17
+ constructor(platform: Platform);
18
+ ngAfterViewInit(): void;
13
19
  selectTab(tabId: string): void;
14
20
  isActive(tabId: string): boolean;
21
+ onKeyDown(event: KeyboardEvent): void;
15
22
  static ɵfac: i0.ɵɵFactoryDeclaration<TabsComponent, never>;
16
23
  static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "luna-tabs", never, { "activeTabId": { "alias": "activeTabId"; "required": false; }; "tabs": { "alias": "tabs"; "required": false; }; }, { "tabChange": "tabChange"; }, never, ["*"], true, never>;
17
24
  }
@@ -1,8 +1,14 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { EventEmitter, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';
4
+ import { Platform } from '@angular/cdk/platform';
3
5
  import { LunaControl } from '../luna-control';
4
6
  import * as i0 from "@angular/core";
5
- export declare class TextareaComponent extends LunaControl implements ControlValueAccessor {
7
+ export declare class TextareaComponent extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy {
8
+ private elementRef;
9
+ private focusMonitor;
10
+ private liveAnnouncer;
11
+ platform: Platform;
6
12
  cols?: number;
7
13
  placeholder?: string;
8
14
  readonly: boolean;
@@ -12,6 +18,9 @@ export declare class TextareaComponent extends LunaControl implements ControlVal
12
18
  value: string;
13
19
  private onChange;
14
20
  private onTouched;
21
+ constructor(elementRef: ElementRef<HTMLElement>, focusMonitor: FocusMonitor, liveAnnouncer: LiveAnnouncer, platform: Platform);
22
+ ngAfterViewInit(): void;
23
+ ngOnDestroy(): void;
15
24
  onTextareaChange(event: Event): void;
16
25
  onTextareaBlur(event: FocusEvent): void;
17
26
  writeValue(value: string): void;
@@ -1,7 +1,10 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { EventEmitter, ElementRef, AfterViewInit, OnChanges, SimpleChanges } from '@angular/core';
2
+ import { Platform } from '@angular/cdk/platform';
2
3
  import { LunaControl } from '../luna-control';
3
4
  import * as i0 from "@angular/core";
4
- export declare class WindowComponent extends LunaControl {
5
+ export declare class WindowComponent extends LunaControl implements AfterViewInit, OnChanges {
6
+ private elementRef;
7
+ platform: Platform;
5
8
  isMaximized: boolean;
6
9
  showClose: boolean;
7
10
  showHelp: boolean;
@@ -13,10 +16,19 @@ export declare class WindowComponent extends LunaControl {
13
16
  restore: EventEmitter<void>;
14
17
  help: EventEmitter<void>;
15
18
  close: EventEmitter<void>;
19
+ boundaryElement?: string;
20
+ scrollable: boolean;
21
+ dragDisabled: boolean;
22
+ private dragInstance?;
23
+ constructor(elementRef: ElementRef<HTMLElement>, platform: Platform);
24
+ ngAfterViewInit(): void;
25
+ ngOnChanges(changes: SimpleChanges): void;
26
+ private updateDragState;
27
+ private updateDragBoundary;
16
28
  onMinimize(): void;
17
29
  onMaximize(): void;
18
30
  onHelp(): void;
19
31
  onClose(): void;
20
32
  static ɵfac: i0.ɵɵFactoryDeclaration<WindowComponent, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<WindowComponent, "luna-window", never, { "isMaximized": { "alias": "isMaximized"; "required": false; }; "showClose": { "alias": "showClose"; "required": false; }; "showHelp": { "alias": "showHelp"; "required": false; }; "showMaximize": { "alias": "showMaximize"; "required": false; }; "showMinimize": { "alias": "showMinimize"; "required": false; }; "title": { "alias": "title"; "required": false; }; }, { "minimize": "minimize"; "maximize": "maximize"; "restore": "restore"; "help": "help"; "close": "close"; }, never, ["*", "[slot='status']"], true, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<WindowComponent, "luna-window", never, { "isMaximized": { "alias": "isMaximized"; "required": false; }; "showClose": { "alias": "showClose"; "required": false; }; "showHelp": { "alias": "showHelp"; "required": false; }; "showMaximize": { "alias": "showMaximize"; "required": false; }; "showMinimize": { "alias": "showMinimize"; "required": false; }; "title": { "alias": "title"; "required": false; }; "boundaryElement": { "alias": "boundaryElement"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; }, { "minimize": "minimize"; "maximize": "maximize"; "restore": "restore"; "help": "help"; "close": "close"; }, never, ["*", "*", "[slot='status']"], true, never>;
22
34
  }