@vsn-ux/ngx-gaia 0.11.5 → 0.11.6

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
@@ -48,8 +48,8 @@ ng add @vsn-ux/ngx-gaia
48
48
  If you use [Claude Code](https://claude.ai/code), you can install the ngx-gaia plugin for better AI assistance with components:
49
49
 
50
50
  ```sh
51
- /plugin marketplace add ./node_modules/@vsn-ux/ngx-gaia/claude --scope project
52
- /plugin install ngx-gaia@ngx-gaia --scope project
51
+ /plugin marketplace add visma-software-nordic/claude-code-marketplace
52
+ /plugin install ngx-gaia@visma-software-nordic-marketplace
53
53
  ```
54
54
 
55
55
  ## Browser support
package/docs/alert.md CHANGED
@@ -6,7 +6,7 @@ Alert components for displaying contextual notifications with optional progress
6
6
 
7
7
  ## `<ga-alert>`
8
8
 
9
- Alert component for displaying notifications and contextual information. Uses `role="alert"` for screen reader announcements.
9
+ Alert component for displaying notifications and contextual information. Uses dynamic ARIA attributes based on variant for proper accessibility.
10
10
 
11
11
  ### Inputs:
12
12
 
@@ -16,10 +16,12 @@ Alert component for displaying notifications and contextual information. Uses `r
16
16
  - `progress: number | 'indeterminate'` - Progress value 0-100 or indeterminate state
17
17
  - `progressLabel: string` - Accessible label for progress bar
18
18
  - `progressLabelledBy: string` - ID of element labeling progress bar
19
+ - `role: 'alert' | 'status' | string` - ARIA role override (default: 'alert' for error, 'status' for others)
20
+ - `aria-live: 'assertive' | 'polite' | 'off'` - ARIA live region behavior (default: 'assertive' for error, 'polite' for others)
19
21
 
20
22
  ### Outputs:
21
23
 
22
- - `dismiss: EventEmitter<void>` - Emitted when dismiss button is clicked
24
+ - `dismiss()` - Emitted when dismiss button is clicked
23
25
 
24
26
  ### Properties:
25
27
 
package/docs/badge.md CHANGED
@@ -6,12 +6,12 @@ Badge component for displaying status indicators and labels.
6
6
 
7
7
  ## `<ga-badge>`
8
8
 
9
- ### Inputs:
9
+ ### Inputs
10
10
 
11
11
  - `variant: 'default' | 'default-inverted' | 'information' | 'error' | 'warning' | 'success' | 'muted' | 'disabled'` - Badge variant (default: 'default')
12
12
  - `type: 'text' | 'dot'` - Badge type (default: 'text')
13
13
 
14
- ## Examples:
14
+ ## Examples
15
15
 
16
16
  Badge variants
17
17
 
package/docs/button.md CHANGED
@@ -13,6 +13,7 @@ Button directive for styling button and anchor elements.
13
13
  - `gaButton: GaButtonType | ""` - Button variant ('primary' | 'secondary' | 'ghost' | 'transparent', default: 'secondary')
14
14
  - `gaButtonLoading: boolean` - Show loading state (default: false)
15
15
  - `gaButtonLoadingLabel: string` - Loading state label
16
+ - `disabled: boolean` - Disabled state (default: false)
16
17
 
17
18
  ## `[gaIconButton]`
18
19
 
@@ -24,10 +25,11 @@ Icon button directive for buttons with icons.
24
25
  - `gaIconButtonVariant: GaIconButtonVariant` - Button variant (default: 'secondary')
25
26
  - `gaIconButtonLoading: boolean` - Show loading state (default: false)
26
27
  - `gaIconButtonLoadingLabel: string` - Loading state label
28
+ - `disabled: boolean` - Disabled state (default: false)
27
29
 
28
30
  ## GaButtonI18n
29
31
 
30
- Service for button internationalization.
32
+ Abstract class for button internationalization.
31
33
 
32
34
  ### Properties:
33
35
 
package/docs/card.md CHANGED
@@ -6,19 +6,37 @@ Card component for grouping related content.
6
6
 
7
7
  ## `<ga-card>`
8
8
 
9
- ### Inputs:
9
+ ### Inputs
10
10
 
11
11
  - `selectable: boolean` - Can be selected (default: false)
12
12
  - `selected: boolean` - Is selected (default: false)
13
13
  - `disabled: boolean` - Disabled state (default: false)
14
14
 
15
- ## Examples:
15
+ ## Examples
16
16
 
17
- Selectable card
17
+ Basic card
18
+
19
+ ```html
20
+ <ga-card>
21
+ <h3>Card Title</h3>
22
+ <p>Card content goes here.</p>
23
+ </ga-card>
24
+ ```
25
+
26
+ Selectable card with selection binding
18
27
 
19
28
  ```html
20
29
  <ga-card selectable [selected]="isSelected">
21
30
  <h3>Card Title</h3>
22
- <p>Card content</p>
31
+ <p>Click to select this card.</p>
32
+ </ga-card>
33
+ ```
34
+
35
+ Disabled card
36
+
37
+ ```html
38
+ <ga-card disabled>
39
+ <h3>Unavailable</h3>
40
+ <p>This card is disabled.</p>
23
41
  </ga-card>
24
42
  ```
package/docs/checkbox.md CHANGED
@@ -13,6 +13,13 @@ Checkbox component for boolean selections.
13
13
  - `indeterminate: boolean` - Indeterminate state (default: false)
14
14
  - `name: string | null` - Input name (default: null)
15
15
  - `id: string | null` - Input ID (default: null)
16
+ - `disabled: boolean` - Disabled state (default: false)
17
+ - `required: boolean` - Required state (default: false)
18
+ - `aria-label: string | null` - ARIA label (default: null)
19
+ - `aria-labelledby: string | null` - ARIA labelledby (default: null)
20
+ - `aria-describedby: string | null` - ARIA describedby (default: null)
21
+ - `aria-invalid: string | null` - ARIA invalid override (default: null)
22
+ - `aria-errormessage: string | null` - ARIA error message ID (default: null)
16
23
 
17
24
  ### Outputs:
18
25
 
package/docs/chip.md CHANGED
@@ -19,7 +19,7 @@ Container component for managing chip selection and keyboard navigation.
19
19
 
20
20
  ### Outputs:
21
21
 
22
- - `valueChange(value: any | any[])` - Emitted when selection changes
22
+ - `valueChange: readonly T[]` - Emitted when selection changes
23
23
 
24
24
  ### Methods:
25
25
 
@@ -38,6 +38,7 @@ Data select component that automatically generates options from an items array.
38
38
  - `groupBy: string | ((item: IGaSelectOption) => string)` - Property or function for grouping options
39
39
  - `loading: boolean` - Show loading spinner (default: false)
40
40
  - `withOptionInput: boolean | null` - Show radio/checkbox in options (default: null)
41
+ - `valueDisplayLimit: number | null` - Limit number of displayed values in multi-select (default: null)
41
42
 
42
43
  ### Outputs:
43
44
 
@@ -93,10 +94,7 @@ Service for data-select internationalization.
93
94
  - `clearLabel: string` - Label for clear button (default: 'Clear')
94
95
  - `searchInputLabel: string` - Accessible label for search input (default: 'Search')
95
96
  - `noOptionsLabel: string` - Message when no options available (default: 'No options')
96
-
97
- ## GaDataSelectRequiredValidator
98
-
99
- Built-in required validator for Angular Forms integration.
97
+ - `displayLimitReachedLabel: (counter: number) => string` - Label when display limit reached (default: '+{counter} more')
100
98
 
101
99
  ## Providers:
102
100
 
@@ -140,6 +138,23 @@ Multi-select mode
140
138
  selectedValues = ['Option 1', 'Option 2'];
141
139
  ```
142
140
 
141
+ Multi-select with display limit
142
+
143
+ ```html
144
+ <ga-data-select
145
+ multiple
146
+ [valueDisplayLimit]="2"
147
+ placeholder="Select multiple"
148
+ [items]="options"
149
+ [(value)]="selectedValues"
150
+ />
151
+ ```
152
+
153
+ ```typescript
154
+ // When more than 2 values selected, shows "+N more" label
155
+ selectedValues = ['Option 1', 'Option 2', 'Option 3'];
156
+ ```
157
+
143
158
  Searchable with built-in filtering
144
159
 
145
160
  ```html
@@ -320,6 +335,7 @@ provideGaDataSelectI18n({
320
335
  clearLabel: 'Clear',
321
336
  searchInputLabel: 'Search',
322
337
  noOptionsLabel: 'No results found',
338
+ displayLimitReachedLabel: (count) => `+${count} more`,
323
339
  });
324
340
 
325
341
  // Factory function with injection context
@@ -329,6 +345,7 @@ provideGaDataSelectI18n(() => {
329
345
  clearLabel: i18n.translate('clear'),
330
346
  searchInputLabel: i18n.translate('search'),
331
347
  noOptionsLabel: i18n.translate('no-results'),
348
+ displayLimitReachedLabel: (count) => i18n.translate('more', { count }),
332
349
  };
333
350
  });
334
351
  ```
@@ -8,75 +8,114 @@ Comprehensive datepicker with input integration, toggles, and multiple value ada
8
8
 
9
9
  Inline datepicker component for date selection.
10
10
 
11
- ### Inputs:
11
+ ### Inputs
12
12
 
13
- - `value: any` - Selected date value (model binding)
13
+ - `value: any` - Selected date value (two-way binding)
14
14
  - `min: any` - Minimum selectable date
15
15
  - `max: any` - Maximum selectable date
16
16
 
17
- ### Outputs:
17
+ ### Outputs
18
18
 
19
- - `valueChange(value: any)` - Emitted when date is selected
19
+ - `valueChange: any` - Emitted when date is selected
20
20
 
21
- ## `[gaDatepicker]`
21
+ ## `input[gaDatepickerInput]`
22
22
 
23
- Input directive for datepicker integration.
23
+ Input directive for datepicker integration. Implements ControlValueAccessor and Validator.
24
24
 
25
- ### Inputs:
25
+ ### Inputs
26
26
 
27
- - `gaDatepicker: GaDatepickerComponent` - Associated datepicker instance
27
+ - `value: any` - Selected date value (default: null)
28
+ - `disabled: boolean` - Disabled state (default: false)
28
29
  - `min: any` - Minimum date constraint
29
30
  - `max: any` - Maximum date constraint
30
31
 
31
- ### Outputs:
32
+ ### Outputs
32
33
 
33
- - `dateChange(value: any)` - Emitted when the input loses focus (blur) and the date has changed
34
- - `dateInput(value: any)` - Emitted immediately when the user types in the text input and the parsed value changes
34
+ - `dateInput: any` - Emitted immediately when user types and parsed value changes
35
+ - `dateChange: any` - Emitted on blur when date has changed
36
+
37
+ ### Validation Errors
38
+
39
+ - `dateFormat` - Invalid date format
40
+ - `minDate` - Date is before minimum
41
+ - `maxDate` - Date is after maximum
35
42
 
36
43
  ## `<ga-datepicker-toggle>`
37
44
 
38
- Toggle button component for opening datepicker.
45
+ Toggle button component for opening datepicker overlay.
46
+
47
+ ### Inputs
39
48
 
40
- ### Inputs:
49
+ - `for: GaDatepickerInputDirective` - Associated datepicker input directive (required)
41
50
 
42
- - `for: GaDatepickerComponent` - Associated datepicker instance
51
+ ### Methods
52
+
53
+ - `open()` - Open the datepicker overlay
54
+ - `close()` - Close the datepicker overlay
55
+ - `toggle()` - Toggle the datepicker overlay
43
56
 
44
57
  ## GaDatepickerI18n
45
58
 
46
- Service for datepicker internationalization.
59
+ Abstract class for datepicker internationalization.
47
60
 
48
- ### Methods:
61
+ ### Properties
49
62
 
63
+ - `previousLabel: string` - Previous navigation button label
64
+ - `nextLabel: string` - Next navigation button label
65
+ - `selectMonthLabel: string` - Month selector label
66
+ - `selectYearLabel: string` - Year selector label
67
+ - `openCalendarLabel: string` - Calendar toggle button label
68
+ - `todayButtonLabel: string` - Today button label
50
69
  - `weekDays: string[]` - Week day labels
51
70
  - `monthNames: string[]` - Full month names
52
71
  - `monthNamesShort: string[]` - Abbreviated month names
53
72
 
54
73
  ## GaDatepickerParserFormatter
55
74
 
56
- Service for parsing and formatting date strings.
75
+ Abstract class for parsing and formatting date strings.
57
76
 
58
- ### Methods:
77
+ ### Methods
59
78
 
60
- - `parse(value: string): any` - Parse string to date value
61
- - `format(value: any): string` - Format date value to string
79
+ - `parse(value: string): GaDatepickerStruct | null` - Parse string to date struct
80
+ - `format(date: GaDatepickerStruct | null): string` - Format date struct to string
62
81
 
63
82
  ## GaDatepickerValueAdapter
64
83
 
65
- Abstract service for converting between external and internal date representations.
84
+ Abstract class for converting between external and internal date representations.
85
+
86
+ ### Methods
87
+
88
+ - `toStruct(value: T | null): GaDatepickerStruct | null` - Convert external value to struct
89
+ - `fromStruct(struct: GaDatepickerStruct | null): T | null` - Convert struct to external value
90
+
91
+ ## GaDatepickerStruct
92
+
93
+ Interface for internal date representation.
94
+
95
+ ```typescript
96
+ interface GaDatepickerStruct {
97
+ year: number;
98
+ month: number; // 1-12 (January = 1)
99
+ day: number;
100
+ }
101
+ ```
66
102
 
67
- ## Value Adapters:
103
+ ## Value Adapters
68
104
 
69
- - `GaDateStructAdapter` - Works with `{year, month, day}` objects
70
- - `GaDateNativeUtcAdapter` - Works with native Date objects in UTC
71
- - `GaDateNativeUtcIsoAdapter` - Works with ISO date strings
105
+ - `GaDatepickerStructValueAdapter` - Works with `GaDatepickerStruct` objects (default)
106
+ - `GaDatepickerNativeUtcValueAdapter` - Works with native Date objects in UTC
107
+ - `GaDatepickerNativeUtcIsoValueAdapter` - Works with ISO date strings
72
108
 
73
- ## Providers:
109
+ ## Providers
74
110
 
75
- - `provideGaDatepickerI18n(value: GaDatepickerI18n)` - Configure datepicker i18n
76
- - `provideGaDatepickerParserFormatter(value: GaDatepickerParserFormatter)` - Configure parser/formatter
77
- - `provideGaDatepickerValueAdapter<T>(value: GaDatepickerValueAdapter<T>)` - Configure value adapter
111
+ - `provideGaDatepickerI18n(value)` - Configure i18n (accepts class, object, or factory)
112
+ - `provideGaDatepickerParserFormatter(value)` - Configure parser/formatter (accepts class or factory)
113
+ - `provideGaDatepickerValueAdapter<T>(value)` - Configure value adapter (accepts class)
114
+ - `extendGaDateParserFormatter(formats)` - Extend default date formats for additional locales
78
115
 
79
- ## Examples:
116
+ ## Examples
117
+
118
+ Basic inline datepicker:
80
119
 
81
120
  ```html
82
121
  <ga-datepicker
@@ -84,11 +123,40 @@ Abstract service for converting between external and internal date representatio
84
123
  [min]="minDate"
85
124
  [max]="maxDate"
86
125
  ></ga-datepicker>
126
+ ```
127
+
128
+ Datepicker with input and toggle:
87
129
 
130
+ ```html
88
131
  <ga-form-field>
89
132
  <label gaFieldLabel>Select Date</label>
90
- <input gaInput [gaDatepicker]="picker" [(ngModel)]="date" />
91
- <ga-datepicker-toggle [for]="picker"></ga-datepicker-toggle>
133
+ <input
134
+ gaInput
135
+ gaDatepickerInput
136
+ #dateInput="gaDatepickerInput"
137
+ [(ngModel)]="date"
138
+ />
139
+ <ga-datepicker-toggle [for]="dateInput"></ga-datepicker-toggle>
92
140
  </ga-form-field>
93
- <ga-datepicker #picker></ga-datepicker>
141
+ ```
142
+
143
+ Using native Date adapter:
144
+
145
+ ```typescript
146
+ providers: [provideGaDatepickerValueAdapter(GaDatepickerNativeUtcValueAdapter)];
147
+ ```
148
+
149
+ Custom i18n labels:
150
+
151
+ ```typescript
152
+ providers: [
153
+ provideGaDatepickerI18n({
154
+ previousLabel: 'Forrige',
155
+ nextLabel: 'Neste',
156
+ selectMonthLabel: 'Velg maaned',
157
+ selectYearLabel: 'Velg aar',
158
+ openCalendarLabel: 'Aapne kalender',
159
+ todayButtonLabel: 'I dag',
160
+ }),
161
+ ];
94
162
  ```
package/docs/icon.md CHANGED
@@ -6,17 +6,37 @@ Icon component for displaying Lucide icons.
6
6
 
7
7
  ## `<ga-icon>`
8
8
 
9
- ### Inputs:
9
+ ### Inputs
10
10
 
11
11
  - `icon: GaIconData | string` - Lucide icon (required)
12
- - `size: string | number` - Icon size (default: 24)
13
- - `color: string` - Icon color
14
- - `strokeWidth: number` - Stroke width
12
+ - `size: string | number` - Icon size in pixels or CSS size string (default: 24)
13
+ - `color: string` - Icon color as CSS color value
14
+ - `strokeWidth: number` - Stroke width of the icon
15
15
 
16
- ## Examples:
16
+ ## Examples
17
17
 
18
- Icon with custom styling
18
+ Basic usage
19
19
 
20
20
  ```html
21
- <ga-icon [icon]="icons.Settings" size="32" color="var(--ga-color-primary)" />
21
+ <ga-icon [icon]="icons.PackageOpen" />
22
+ ```
23
+
24
+ Custom size
25
+
26
+ ```html
27
+ <ga-icon [icon]="icons.PackageOpen" size="16" />
28
+ <ga-icon [icon]="icons.PackageOpen" size="32" />
29
+ ```
30
+
31
+ Custom color
32
+
33
+ ```html
34
+ <ga-icon [icon]="icons.TriangleAlert" color="var(--ga-color-error)" />
35
+ ```
36
+
37
+ Custom stroke width
38
+
39
+ ```html
40
+ <ga-icon [icon]="icons.PackageOpen" [strokeWidth]="1" />
41
+ <ga-icon [icon]="icons.PackageOpen" [strokeWidth]="3" />
22
42
  ```
package/docs/input.md CHANGED
@@ -8,22 +8,60 @@ Input components and directives for text input fields.
8
8
 
9
9
  Input directive for styling input elements.
10
10
 
11
- ### Inputs:
11
+ Export: `gaInput`
12
12
 
13
- - `id: string` - Element ID
13
+ ### Inputs
14
+
15
+ - `id: string` - Element ID (default: auto-generated)
14
16
  - `disabled: boolean` - Disabled state
15
17
  - `invalid: boolean` - Invalid state styling
16
18
 
19
+ ### Methods
20
+
21
+ - `focus(): void` - Focuses the input element
22
+
17
23
  ## `<ga-input>`
18
24
 
19
- Input component wrapper.
25
+ Wrapper component for inputs with prefix/suffix elements.
20
26
 
21
- ## Examples:
27
+ ## Examples
28
+
29
+ Basic input
22
30
 
23
31
  ```html
24
32
  <input gaInput type="text" placeholder="Enter text" [(ngModel)]="value" />
33
+ ```
34
+
35
+ Input with prefix icon
36
+
37
+ ```html
38
+ <ga-input>
39
+ <ga-icon [icon]="MailIcon" size="24" />
40
+ <input gaInput type="text" placeholder="Email" [(ngModel)]="email" />
41
+ </ga-input>
42
+ ```
43
+
44
+ Input with suffix button
25
45
 
46
+ ```html
26
47
  <ga-input>
27
- <input type="text" placeholder="Wrapped input" [(ngModel)]="value" />
48
+ <input gaInput type="text" placeholder="Search" [(ngModel)]="search" />
49
+ <button type="button" aria-label="clear" (click)="search = ''">
50
+ <ga-icon [icon]="CircleXIcon" size="16" />
51
+ </button>
28
52
  </ga-input>
29
53
  ```
54
+
55
+ Programmatic focus
56
+
57
+ ```typescript
58
+ @ViewChild('myInput', { read: GaInputDirective }) myInput: GaInputDirective;
59
+
60
+ focusInput() {
61
+ this.myInput.focus();
62
+ }
63
+ ```
64
+
65
+ ```html
66
+ <input gaInput #myInput type="text" />
67
+ ```
package/docs/link.md CHANGED
@@ -4,11 +4,11 @@ Link directive for styled navigation links.
4
4
 
5
5
  **Angular module: GaLinkModule**
6
6
 
7
- ## `[gaLink]`
7
+ ## `a[gaLink]`, `button[gaLink]`
8
8
 
9
- Link directive.
9
+ Link directive for anchor and button elements.
10
10
 
11
- ### Inputs:
11
+ ### Inputs
12
12
 
13
13
  - `gaLink: 'inline' | ''` - Link variant (default: '')
14
14
  - `gaLinkSize: 'small' | 'medium' | 'large'` - Link size (default: 'medium')
@@ -16,7 +16,7 @@ Link directive.
16
16
  - `gaLinkLeadingIcon: GaIconData | string` - Leading icon (default: '')
17
17
  - `gaLinkTrailingIcon: GaIconData | string` - Trailing icon (default: '')
18
18
 
19
- ## Examples:
19
+ ## Examples
20
20
 
21
21
  Link variants
22
22
 
package/docs/menu.md CHANGED
@@ -16,11 +16,12 @@ Menu title component.
16
16
 
17
17
  Menu item directive.
18
18
 
19
- ### Inputs:
19
+ ### Inputs
20
20
 
21
- - `gaMenuItemIcon: GaIconData` - Item icon
21
+ - `gaMenuItemIcon: GaIconData | string` - Item icon
22
22
  - `gaMenuItemDescription: string` - Item description
23
23
  - `gaMenuItemShortcut: string` - Keyboard shortcut
24
+ - `gaMenuItemSelected: boolean` - Selected state (default: false)
24
25
 
25
26
  ## `<ga-menu-separator>`
26
27
 
@@ -28,22 +29,22 @@ Menu separator component.
28
29
 
29
30
  ## `<ga-menu-trigger-icon>`
30
31
 
31
- Trigger icon component.
32
+ Trigger icon component that shows chevron up/down based on menu state.
32
33
 
33
34
  ## `[gaMenuTrigger]`
34
35
 
35
- Menu trigger directive.
36
+ Menu trigger directive. Export as `gaMenuTrigger` for template reference.
36
37
 
37
- ### Inputs:
38
+ ### Inputs
38
39
 
39
- - `gaMenuTrigger: TemplateRef` - Menu template (required)
40
+ - `gaMenuTrigger: TemplateRef<any>` - Menu template (required)
40
41
 
41
- ### Outputs:
42
+ ### Outputs
42
43
 
43
- - `gaMenuOpened()` - Opened event
44
- - `gaMenuClosed()` - Closed event
44
+ - `gaMenuOpened: void` - Emitted when menu opens
45
+ - `gaMenuClosed: void` - Emitted when menu closes
45
46
 
46
- ## Examples:
47
+ ## Examples
47
48
 
48
49
  Menu with trigger
49
50