@daffodil/design 0.92.3 → 0.93.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/README.md +4 -4
- package/beacon/README.md +61 -0
- package/beacon/src/beacon-theme.scss +61 -0
- package/breadcrumb/README.md +13 -35
- package/button/README.md +28 -50
- package/card/README.md +8 -22
- package/card/src/card/stroked/stroked-theme.scss +8 -1
- package/card/src/card-base-theme.scss +12 -1
- package/container/README.md +4 -26
- package/fesm2022/daffodil-design-accordion.mjs +15 -15
- package/fesm2022/daffodil-design-accordion.mjs.map +1 -1
- package/fesm2022/daffodil-design-article.mjs +30 -30
- package/fesm2022/daffodil-design-article.mjs.map +1 -1
- package/fesm2022/daffodil-design-beacon.mjs +48 -0
- package/fesm2022/daffodil-design-beacon.mjs.map +1 -0
- package/fesm2022/daffodil-design-breadcrumb.mjs +20 -20
- package/fesm2022/daffodil-design-breadcrumb.mjs.map +1 -1
- package/fesm2022/daffodil-design-button.mjs +37 -49
- package/fesm2022/daffodil-design-button.mjs.map +1 -1
- package/fesm2022/daffodil-design-callout.mjs +22 -22
- package/fesm2022/daffodil-design-callout.mjs.map +1 -1
- package/fesm2022/daffodil-design-card.mjs +31 -31
- package/fesm2022/daffodil-design-card.mjs.map +1 -1
- package/fesm2022/daffodil-design-checkbox.mjs +13 -13
- package/fesm2022/daffodil-design-checkbox.mjs.map +1 -1
- package/fesm2022/daffodil-design-container.mjs +7 -7
- package/fesm2022/daffodil-design-container.mjs.map +1 -1
- package/fesm2022/daffodil-design-form-field.mjs +13 -12
- package/fesm2022/daffodil-design-form-field.mjs.map +1 -1
- package/fesm2022/daffodil-design-form.mjs +9 -9
- package/fesm2022/daffodil-design-form.mjs.map +1 -1
- package/fesm2022/daffodil-design-hero.mjs +22 -22
- package/fesm2022/daffodil-design-hero.mjs.map +1 -1
- package/fesm2022/daffodil-design-image.mjs +8 -8
- package/fesm2022/daffodil-design-image.mjs.map +1 -1
- package/fesm2022/daffodil-design-input.mjs +12 -11
- package/fesm2022/daffodil-design-input.mjs.map +1 -1
- package/fesm2022/daffodil-design-link-set.mjs +16 -16
- package/fesm2022/daffodil-design-link-set.mjs.map +1 -1
- package/fesm2022/daffodil-design-list.mjs +20 -17
- package/fesm2022/daffodil-design-list.mjs.map +1 -1
- package/fesm2022/daffodil-design-loading-icon.mjs +7 -7
- package/fesm2022/daffodil-design-loading-icon.mjs.map +1 -1
- package/fesm2022/daffodil-design-media-gallery.mjs +13 -13
- package/fesm2022/daffodil-design-media-gallery.mjs.map +1 -1
- package/fesm2022/daffodil-design-menu.mjs +20 -20
- package/fesm2022/daffodil-design-menu.mjs.map +1 -1
- package/fesm2022/daffodil-design-modal.mjs +33 -27
- package/fesm2022/daffodil-design-modal.mjs.map +1 -1
- package/fesm2022/daffodil-design-native-select.mjs +5 -3
- package/fesm2022/daffodil-design-native-select.mjs.map +1 -1
- package/fesm2022/daffodil-design-navbar.mjs +9 -9
- package/fesm2022/daffodil-design-navbar.mjs.map +1 -1
- package/fesm2022/daffodil-design-notification.mjs +16 -16
- package/fesm2022/daffodil-design-notification.mjs.map +1 -1
- package/fesm2022/daffodil-design-paginator.mjs +8 -8
- package/fesm2022/daffodil-design-paginator.mjs.map +1 -1
- package/fesm2022/daffodil-design-progress-bar.mjs +11 -11
- package/fesm2022/daffodil-design-progress-bar.mjs.map +1 -1
- package/fesm2022/daffodil-design-quantity-field.mjs +13 -13
- package/fesm2022/daffodil-design-quantity-field.mjs.map +1 -1
- package/fesm2022/daffodil-design-radio.mjs +16 -16
- package/fesm2022/daffodil-design-radio.mjs.map +1 -1
- package/fesm2022/daffodil-design-select.mjs +11 -11
- package/fesm2022/daffodil-design-select.mjs.map +1 -1
- package/fesm2022/daffodil-design-sidebar.mjs +36 -30
- package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
- package/fesm2022/daffodil-design-spinner.mjs +8 -8
- package/fesm2022/daffodil-design-spinner.mjs.map +1 -1
- package/fesm2022/daffodil-design-switch.mjs +3 -3
- package/fesm2022/daffodil-design-switch.mjs.map +1 -1
- package/fesm2022/daffodil-design-tabs.mjs +17 -25
- package/fesm2022/daffodil-design-tabs.mjs.map +1 -1
- package/fesm2022/daffodil-design-tag.mjs +43 -35
- package/fesm2022/daffodil-design-tag.mjs.map +1 -1
- package/fesm2022/daffodil-design-testing.mjs +19 -0
- package/fesm2022/daffodil-design-testing.mjs.map +1 -0
- package/fesm2022/daffodil-design-text-snippet.mjs +3 -3
- package/fesm2022/daffodil-design-text-snippet.mjs.map +1 -1
- package/fesm2022/daffodil-design-textarea.mjs +3 -3
- package/fesm2022/daffodil-design-textarea.mjs.map +1 -1
- package/fesm2022/daffodil-design-toast.mjs +22 -22
- package/fesm2022/daffodil-design-toast.mjs.map +1 -1
- package/fesm2022/daffodil-design-tree.mjs +27 -25
- package/fesm2022/daffodil-design-tree.mjs.map +1 -1
- package/fesm2022/daffodil-design-youtube-player.mjs +22 -11
- package/fesm2022/daffodil-design-youtube-player.mjs.map +1 -1
- package/fesm2022/daffodil-design.mjs +126 -160
- package/fesm2022/daffodil-design.mjs.map +1 -1
- package/form/README.md +15 -6
- package/hero/README.md +14 -49
- package/image/README.md +6 -29
- package/input/README.md +8 -34
- package/list/README.md +29 -55
- package/list/src/list-theme.scss +16 -2
- package/media-gallery/README.md +36 -43
- package/menu/README.md +24 -55
- package/menu/src/menu-theme.scss +12 -2
- package/modal/README.md +15 -45
- package/native-select/README.md +8 -6
- package/navbar/README.md +18 -27
- package/notification/README.md +14 -49
- package/package.json +1 -1
- package/paginator/README.md +11 -31
- package/paginator/src/paginator-theme.scss +16 -2
- package/progress-bar/README.md +14 -41
- package/scss/global.scss +25 -2
- package/scss/theme.scss +2 -0
- package/select/README.md +5 -6
- package/select/src/select-theme.scss +10 -2
- package/sidebar/README.md +1 -1
- package/spinner/README.md +15 -9
- package/switch/README.md +17 -6
- package/tabs/README.md +39 -39
- package/tag/README.md +31 -31
- package/tag/src/tag-theme.scss +100 -3
- package/textarea/README.md +9 -7
- package/toast/README.md +55 -52
- package/tree/README.md +12 -43
- package/tree/src/tree-theme.scss +8 -4
- package/{accordion/index.d.ts → types/daffodil-design-accordion.d.ts} +1 -1
- package/types/daffodil-design-beacon.d.ts +26 -0
- package/{button/index.d.ts → types/daffodil-design-button.d.ts} +7 -8
- package/{input/index.d.ts → types/daffodil-design-input.d.ts} +4 -1
- package/{list/index.d.ts → types/daffodil-design-list.d.ts} +4 -1
- package/{menu/index.d.ts → types/daffodil-design-menu.d.ts} +3 -3
- package/{modal/index.d.ts → types/daffodil-design-modal.d.ts} +11 -5
- package/{native-select/index.d.ts → types/daffodil-design-native-select.d.ts} +3 -1
- package/{sidebar/index.d.ts → types/daffodil-design-sidebar.d.ts} +9 -3
- package/{tabs/index.d.ts → types/daffodil-design-tabs.d.ts} +0 -6
- package/types/daffodil-design-tag.d.ts +80 -0
- package/types/daffodil-design-testing.d.ts +11 -0
- package/{tree/index.d.ts → types/daffodil-design-tree.d.ts} +2 -0
- package/{youtube-player/index.d.ts → types/daffodil-design-youtube-player.d.ts} +15 -0
- package/{index.d.ts → types/daffodil-design.d.ts} +25 -67
- package/tag/index.d.ts +0 -71
- /package/{article/index.d.ts → types/daffodil-design-article.d.ts} +0 -0
- /package/{breadcrumb/index.d.ts → types/daffodil-design-breadcrumb.d.ts} +0 -0
- /package/{callout/index.d.ts → types/daffodil-design-callout.d.ts} +0 -0
- /package/{card/index.d.ts → types/daffodil-design-card.d.ts} +0 -0
- /package/{checkbox/index.d.ts → types/daffodil-design-checkbox.d.ts} +0 -0
- /package/{container/index.d.ts → types/daffodil-design-container.d.ts} +0 -0
- /package/{form-field/index.d.ts → types/daffodil-design-form-field.d.ts} +0 -0
- /package/{form/index.d.ts → types/daffodil-design-form.d.ts} +0 -0
- /package/{hero/index.d.ts → types/daffodil-design-hero.d.ts} +0 -0
- /package/{image/index.d.ts → types/daffodil-design-image.d.ts} +0 -0
- /package/{link-set/index.d.ts → types/daffodil-design-link-set.d.ts} +0 -0
- /package/{loading-icon/index.d.ts → types/daffodil-design-loading-icon.d.ts} +0 -0
- /package/{media-gallery/index.d.ts → types/daffodil-design-media-gallery.d.ts} +0 -0
- /package/{navbar/index.d.ts → types/daffodil-design-navbar.d.ts} +0 -0
- /package/{notification/index.d.ts → types/daffodil-design-notification.d.ts} +0 -0
- /package/{paginator/index.d.ts → types/daffodil-design-paginator.d.ts} +0 -0
- /package/{progress-bar/index.d.ts → types/daffodil-design-progress-bar.d.ts} +0 -0
- /package/{quantity-field/index.d.ts → types/daffodil-design-quantity-field.d.ts} +0 -0
- /package/{radio/index.d.ts → types/daffodil-design-radio.d.ts} +0 -0
- /package/{select/index.d.ts → types/daffodil-design-select.d.ts} +0 -0
- /package/{spinner/index.d.ts → types/daffodil-design-spinner.d.ts} +0 -0
- /package/{switch/index.d.ts → types/daffodil-design-switch.d.ts} +0 -0
- /package/{text-snippet/index.d.ts → types/daffodil-design-text-snippet.d.ts} +0 -0
- /package/{textarea/index.d.ts → types/daffodil-design-textarea.d.ts} +0 -0
- /package/{toast/index.d.ts → types/daffodil-design-toast.d.ts} +0 -0
package/textarea/README.md
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
Textarea works alongside the HTML textarea element, with additional custom styling and functionality.
|
|
3
3
|
|
|
4
4
|
## Overview
|
|
5
|
-
Textarea has the same functionality as a native HTML textarea element, with additional custom styling and functionality. It **cannot** be used by itself and must be contained within a [form field](/libs/design/
|
|
5
|
+
Textarea has the same functionality as a native HTML textarea element, with additional custom styling and functionality. It **cannot** be used by itself and must be contained within a [form field](/libs/design/form-field/README.md).
|
|
6
6
|
|
|
7
7
|
<daff-docs-example-viewer example="basic-textarea"></daff-docs-example-viewer>
|
|
8
8
|
|
|
9
9
|
## Usage
|
|
10
|
-
|
|
10
|
+
Import `DaffTextareaComponent` into your component:
|
|
11
11
|
|
|
12
12
|
```ts
|
|
13
13
|
import { DaffTextareaComponent } from '@daffodil/design/textarea';
|
|
@@ -25,7 +25,6 @@ export class CustomComponent {}
|
|
|
25
25
|
## Anatomy
|
|
26
26
|
Textarea must be used inside `<daff-form-field>` to enable proper state management and provide enhanced UI features such as hints, error messages, prefixes, and suffixes. The form field component also ensures accessibility compliance. For more details, see the [form field documentation](/libs/design/form-field/README.md).
|
|
27
27
|
|
|
28
|
-
### Basic structure
|
|
29
28
|
```html
|
|
30
29
|
<daff-form-field>
|
|
31
30
|
<daff-form-label>Comments</daff-form-label>
|
|
@@ -33,7 +32,7 @@ Textarea must be used inside `<daff-form-field>` to enable proper state manageme
|
|
|
33
32
|
</daff-form-field>
|
|
34
33
|
```
|
|
35
34
|
|
|
36
|
-
##
|
|
35
|
+
## Features
|
|
37
36
|
|
|
38
37
|
### Disabled
|
|
39
38
|
Textarea can be disabled in two ways: using Angular's reactive forms with `FormControl` or with the native HTML `disabled` attribute.
|
|
@@ -47,12 +46,15 @@ Textarea supports validation and error messages through Angular's form validatio
|
|
|
47
46
|
|
|
48
47
|
Multiple error messages can be displayed conditionally based on the type of validation error. The form field component handles the styling and positioning of error messages.
|
|
49
48
|
|
|
50
|
-
|
|
49
|
+
### Hints
|
|
51
50
|
Hints provide additional context or instructions to help users complete the textarea field correctly. Use `<daff-hint>` within the form field to display helpful information below the textarea. Unlike error messages, hints are always visible and provide guidance rather than validation feedback.
|
|
52
51
|
|
|
53
52
|
<daff-docs-example-viewer example="textarea-hint"></daff-docs-example-viewer>
|
|
54
53
|
|
|
55
54
|
## Accessibility
|
|
56
|
-
When `<daff-form-label>` is used within `<daff-form-field>`, the label automatically associates with the textarea using the `for` and `id` attributes.
|
|
57
55
|
|
|
58
|
-
|
|
56
|
+
### Built-in behavior
|
|
57
|
+
- When `<daff-form-label>` is used within `<daff-form-field>`, the label automatically associates with the textarea using the `for` and `id` attributes.
|
|
58
|
+
|
|
59
|
+
### Developer responsibilities
|
|
60
|
+
- If a `<daff-form-label>` is not specified, use the `<label>` element to associate text with form elements explicitly. The `for` attribute of the label must exactly match the `id` of the form control.
|
package/toast/README.md
CHANGED
|
@@ -4,81 +4,79 @@ Toasts are notifications that provide application-level information. They are de
|
|
|
4
4
|
## Overview
|
|
5
5
|
Toasts communicate updates about actions or events that require attention but are not directly tied to specific page content.
|
|
6
6
|
|
|
7
|
-
For short messages tied to page-level content or actions, use the [
|
|
7
|
+
For short messages tied to page-level content or actions, use the [notification](/libs/design/notification/README.md) component.
|
|
8
8
|
|
|
9
9
|
<daff-docs-example-viewer example="default-toast"></daff-docs-example-viewer>
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
12
|
-
Add `provideDaffToast()` to
|
|
12
|
+
Add `provideDaffToast()` to your application's root providers:
|
|
13
13
|
|
|
14
14
|
```ts
|
|
15
|
+
import { ApplicationConfig } from '@angular/core';
|
|
15
16
|
import { provideDaffToast } from '@daffodil/design/toast';
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
export const appConfig: ApplicationConfig = {
|
|
18
19
|
providers: [
|
|
19
20
|
provideDaffToast(),
|
|
20
|
-
]
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
export class AppModule {}
|
|
21
|
+
],
|
|
22
|
+
};
|
|
24
23
|
```
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
When opening a toast with the `DaffToastService`, you can provide a `title`, `message`, and `actions` to define its content.
|
|
28
|
-
|
|
29
|
-
**Title**\
|
|
30
|
-
The primary text that summarizes the purpose of the toast.
|
|
31
|
-
|
|
32
|
-
**Message**\
|
|
33
|
-
Provides additional details or context about the toast. Keep this brief—ideally one to two short sentences.
|
|
34
|
-
|
|
35
|
-
**Actions**\
|
|
36
|
-
Include actionable buttons related to the toast. **A maximum of two buttons is recommended** to keep the toast concise.
|
|
25
|
+
Then inject `DaffToastService` to open toasts from your component:
|
|
37
26
|
|
|
38
27
|
```ts
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
});
|
|
28
|
+
import { DaffToastService } from '@daffodil/design/toast';
|
|
29
|
+
|
|
30
|
+
@Component({
|
|
31
|
+
selector: 'custom-component',
|
|
32
|
+
templateUrl: './custom-component.component.html',
|
|
33
|
+
})
|
|
34
|
+
export class CustomComponent {
|
|
35
|
+
constructor(private toastService: DaffToastService) {}
|
|
48
36
|
}
|
|
49
37
|
```
|
|
50
38
|
|
|
51
|
-
##
|
|
52
|
-
|
|
39
|
+
## Anatomy
|
|
40
|
+
A toast is composed of a title, message, and optional actions:
|
|
53
41
|
|
|
54
|
-
|
|
42
|
+
```ts
|
|
43
|
+
this.toastService.open({
|
|
44
|
+
title: 'Update available',
|
|
45
|
+
message: 'A new version of this page is available.',
|
|
46
|
+
actions: [
|
|
47
|
+
{ content: 'Update', color: 'theme-contrast', size: 'sm' },
|
|
48
|
+
{ content: 'Remind me later', type: 'flat', size: 'sm' },
|
|
49
|
+
],
|
|
50
|
+
});
|
|
51
|
+
```
|
|
55
52
|
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
- **`title`**: The primary text that summarizes the purpose of the toast.
|
|
54
|
+
- **`message`**: Additional details or context about the toast. Keep this brief — ideally one to two short sentences.
|
|
55
|
+
- **`actions`**: Actionable buttons related to the toast. A maximum of two buttons is recommended to keep the toast concise.
|
|
56
|
+
|
|
57
|
+
## Features
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
### Dismissal
|
|
60
|
+
Toasts can be dismissed automatically via a timed duration or manually with a close button. Both `duration` and `dismissible` can be configured when opening a toast with the `DaffToastService`.
|
|
60
61
|
|
|
61
|
-
|
|
62
|
+
By default, toasts without actions dismiss automatically after `5000ms`. Toasts with actions remain visible until dismissed manually or until an action is taken.
|
|
62
63
|
|
|
63
|
-
|
|
64
|
-
The close button is hidden by default. When a toast contains actions, the `dismissible` property is ignored.
|
|
64
|
+
<daff-docs-example-viewer example="custom-duration-toast"></daff-docs-example-viewer>
|
|
65
65
|
|
|
66
|
-
For non-actionable toasts,
|
|
66
|
+
For non-actionable toasts, set `dismissible: true` to display a close button. When a toast contains actions, the `dismissible` property is ignored.
|
|
67
67
|
|
|
68
68
|
<daff-docs-example-viewer example="dismissible-toast"></daff-docs-example-viewer>
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
### Stack limit
|
|
71
71
|
A maximum of three toasts can be displayed at once. Toasts stack vertically with the most recent toast at the top.
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
### Statuses
|
|
74
74
|
Toast status can be set when opening a toast through the `DaffToastService` by using a `DaffStatus` value.
|
|
75
75
|
|
|
76
76
|
<daff-docs-example-viewer example="toast-status"></daff-docs-example-viewer>
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
On desktop, toasts appear in the top-right corner by default.
|
|
80
|
-
|
|
81
|
-
You can customize their position using the `position` property in `provideDaffToast()`:
|
|
78
|
+
### Positions
|
|
79
|
+
On desktop, toasts appear in the top-right corner by default. Customize their position using the `position` property in `provideDaffToast()`:
|
|
82
80
|
|
|
83
81
|
```ts
|
|
84
82
|
providers: [
|
|
@@ -91,16 +89,21 @@ providers: [
|
|
|
91
89
|
],
|
|
92
90
|
```
|
|
93
91
|
|
|
94
|
-
> Note
|
|
92
|
+
> **Note**
|
|
93
|
+
>
|
|
94
|
+
> On mobile, toasts always appear in the bottom-center position, regardless of configuration settings.
|
|
95
|
+
|
|
96
|
+
## Best practices
|
|
97
|
+
- Keep messages brief — toasts are temporary and easy to miss.
|
|
98
|
+
- Limit actions to two buttons so the toast stays scannable.
|
|
99
|
+
- Avoid setting a duration on actionable toasts, as they may disappear before the user can interact with them.
|
|
95
100
|
|
|
96
101
|
## Accessibility
|
|
97
|
-
Toasts announce their messages using appropriate ARIA roles:
|
|
98
|
-
- `role="status"` (default): Equivalent to `aria-live="polite"`, announcing messages without interrupting the user.
|
|
99
|
-
- role="alertdialog": Used when a toast contains actions. The toast will be focus trapped, and focus immediately moves to the actions.
|
|
100
102
|
|
|
101
|
-
|
|
103
|
+
### Built-in behavior
|
|
104
|
+
- Toasts without actions use `role="status"` (equivalent to `aria-live="polite"`), announcing messages without interrupting the user.
|
|
105
|
+
- Toasts with actions use `role="alertdialog"`, are focus trapped, and focus moves immediately to the actions.
|
|
106
|
+
- `ESC` dismisses a focus trapped actionable toast.
|
|
102
107
|
|
|
103
|
-
###
|
|
104
|
-
|
|
105
|
-
| ----- | ------ |
|
|
106
|
-
| `ESC` | Dismisses a toast if it has actions and is focus trapped. |
|
|
108
|
+
### Developer responsibilities
|
|
109
|
+
- Avoid setting a duration on actionable toasts so users have time to interact with them.
|
package/tree/README.md
CHANGED
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
Trees display hierarchical information in a nested, expandable format.
|
|
3
3
|
|
|
4
4
|
## Overview
|
|
5
|
-
Trees help users navigate complex structures by organizing content into parent and child relationships. They're commonly used for navigation menus, file browsers, and category lists. For flat lists without nested content, use the [
|
|
5
|
+
Trees help users navigate complex structures by organizing content into parent and child relationships. They're commonly used for navigation menus, file browsers, and category lists. For flat lists without nested content, use the [Navigation List](/libs/design/list/README.md) instead.
|
|
6
6
|
|
|
7
7
|
<daff-docs-example-viewer example="basic-tree"></daff-docs-example-viewer>
|
|
8
8
|
|
|
9
9
|
## Usage
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
To use tree in a standalone component, import `DAFF_TREE_COMPONENTS` directly into your custom component:
|
|
11
|
+
Import `DAFF_TREE_COMPONENTS` into your component:
|
|
13
12
|
|
|
14
13
|
```ts
|
|
15
14
|
import { DAFF_TREE_COMPONENTS } from '@daffodil/design/tree';
|
|
@@ -24,48 +23,13 @@ import { DAFF_TREE_COMPONENTS } from '@daffodil/design/tree';
|
|
|
24
23
|
export class CustomComponent {}
|
|
25
24
|
```
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
```ts
|
|
31
|
-
import { NgModule } from '@angular/core';
|
|
32
|
-
import { DaffTreeModule } from '@daffodil/design/tree';
|
|
33
|
-
import { CustomComponent } from './custom.component';
|
|
34
|
-
|
|
35
|
-
@NgModule({
|
|
36
|
-
declarations: [
|
|
37
|
-
CustomComponent,
|
|
38
|
-
],
|
|
39
|
-
exports: [
|
|
40
|
-
CustomComponent,
|
|
41
|
-
],
|
|
42
|
-
imports: [
|
|
43
|
-
DaffTreeModule,
|
|
44
|
-
],
|
|
45
|
-
})
|
|
46
|
-
export class CustomComponentModule { }
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
> **Warning**
|
|
50
|
-
>
|
|
51
|
-
> This method is deprecated. It's recommended to update all custom components to standalone.
|
|
26
|
+
> **Deprecation notice:**
|
|
27
|
+
>
|
|
28
|
+
> `DaffTreeModule` is deprecated. Use the standalone component imports instead.
|
|
52
29
|
|
|
53
30
|
## Anatomy
|
|
54
|
-
A tree
|
|
55
|
-
|
|
56
|
-
### Container
|
|
57
|
-
`<daff-tree>`: The main wrapper that holds the tree and accepts your data.
|
|
58
|
-
|
|
59
|
-
### Node templates
|
|
60
|
-
Define how each tree item looks:
|
|
31
|
+
A tree is composed of a container, node templates, and tree items:
|
|
61
32
|
|
|
62
|
-
- `#daffTreeItemWithChildrenTpl`: For items that can expand to show children. Click handling and icons are added automatically.
|
|
63
|
-
- `#daffTreeItemTpl`: For items at the end of a branch with no children.
|
|
64
|
-
|
|
65
|
-
### Tree item
|
|
66
|
-
`[daffTreeItem]`: Added to links or buttons inside your templates to connect them to the tree.
|
|
67
|
-
|
|
68
|
-
### Basic structure
|
|
69
33
|
```html
|
|
70
34
|
<daff-tree [tree]="treeData">
|
|
71
35
|
<ng-template #daffTreeItemWithChildrenTpl let-node>
|
|
@@ -78,10 +42,15 @@ Define how each tree item looks:
|
|
|
78
42
|
</daff-tree>
|
|
79
43
|
```
|
|
80
44
|
|
|
45
|
+
- **`<daff-tree>`**: The main wrapper that holds the tree and accepts your data.
|
|
46
|
+
- **`#daffTreeItemWithChildrenTpl`**: The template for items that can expand to show children. Click handling and icons are added automatically.
|
|
47
|
+
- **`#daffTreeItemTpl`**: The template for items at the end of a branch with no children.
|
|
48
|
+
- **`[daffTreeItem]`**: Added to links or buttons inside your templates to connect them to the tree.
|
|
49
|
+
|
|
81
50
|
## Accessibility
|
|
82
51
|
The tree follows the [disclosure navigation menu](https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/examples/disclosure-navigation/) pattern rather than the [tree view](https://www.w3.org/WAI/ARIA/apg/patterns/treeview/) pattern.
|
|
83
52
|
|
|
84
|
-
###
|
|
53
|
+
### Built-in behavior
|
|
85
54
|
- Unique `id` automatically assigned to each tree item
|
|
86
55
|
- `aria-expanded` indicating whether a parent item is open or closed
|
|
87
56
|
|
package/tree/src/tree-theme.scss
CHANGED
|
@@ -15,8 +15,10 @@
|
|
|
15
15
|
background-color: $base;
|
|
16
16
|
color: daff-color($neutral, 90);
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
@media (hover: hover) {
|
|
19
|
+
&:hover {
|
|
20
|
+
background-color: daff-color($neutral, 20);
|
|
21
|
+
}
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
&::after {
|
|
@@ -37,8 +39,10 @@
|
|
|
37
39
|
background-color: $base;
|
|
38
40
|
color: daff-color($neutral, 20);
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
@media (hover: hover) {
|
|
43
|
+
&:hover {
|
|
44
|
+
background-color: daff-color($neutral, 90);
|
|
45
|
+
}
|
|
42
46
|
}
|
|
43
47
|
|
|
44
48
|
&::after {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import * as i1 from '@daffodil/design';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The cadence of the beacon ring, e.g. how long one expand-and-fade cycle takes.
|
|
6
|
+
*
|
|
7
|
+
* - `slow` - a relaxed 3.6s cycle.
|
|
8
|
+
* - `normal` - the default 2.4s cycle.
|
|
9
|
+
* - `fast` - an urgent 1.2s cycle.
|
|
10
|
+
*/
|
|
11
|
+
type DaffBeaconSpeed = 'slow' | 'normal' | 'fast';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* DaffBeaconComponent is a small indicator that draws visual attention to a specific location or element.
|
|
15
|
+
*/
|
|
16
|
+
declare class DaffBeaconComponent {
|
|
17
|
+
/**
|
|
18
|
+
* How fast the beacon pulses.
|
|
19
|
+
*/
|
|
20
|
+
speed: i0.InputSignal<DaffBeaconSpeed>;
|
|
21
|
+
constructor();
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DaffBeaconComponent, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DaffBeaconComponent, "daff-beacon", never, { "speed": { "alias": "speed"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.DaffColorableDirective; inputs: { "color": "color"; }; outputs: {}; }, { directive: typeof i1.DaffStatusableDirective; inputs: { "status": "status"; }; outputs: {}; }, { directive: typeof i1.DaffSizableDirective; inputs: { "size": "size"; }; outputs: {}; }]>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { DaffBeaconComponent };
|
|
@@ -33,12 +33,11 @@ declare class DaffButtonBaseDirective implements DaffDisableable {
|
|
|
33
33
|
/**
|
|
34
34
|
* Sets the tabindex.
|
|
35
35
|
*/
|
|
36
|
-
tabindex: number
|
|
36
|
+
tabindex: i0.InputSignal<number>;
|
|
37
37
|
/**
|
|
38
38
|
* The disabled state of the button.
|
|
39
39
|
*/
|
|
40
|
-
get disabled():
|
|
41
|
-
set disabled(value: any);
|
|
40
|
+
get disabled(): boolean;
|
|
42
41
|
/**
|
|
43
42
|
* @docs-private
|
|
44
43
|
*
|
|
@@ -52,7 +51,7 @@ declare class DaffButtonBaseDirective implements DaffDisableable {
|
|
|
52
51
|
*/
|
|
53
52
|
get buttonSize(): _daffodil_design_button.DaffButtonSize;
|
|
54
53
|
static ɵfac: i0.ɵɵFactoryDeclaration<DaffButtonBaseDirective, never>;
|
|
55
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<DaffButtonBaseDirective, "[daffButtonBase]", never, { "tabindex": { "alias": "tabindex"; "required": false;
|
|
54
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<DaffButtonBaseDirective, "[daffButtonBase]", never, { "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; }, {}, ["_prefix", "_suffix"], never, true, [{ directive: typeof i1.DaffArticleEncapsulatedDirective; inputs: {}; outputs: {}; }, { directive: typeof DaffButtonSizableDirective; inputs: { "size": "size"; }; outputs: {}; }, { directive: typeof i1.DaffStatusableDirective; inputs: { "status": "status"; }; outputs: {}; }, { directive: typeof i1.DaffColorableDirective; inputs: { "color": "color"; }; outputs: {}; }, { directive: typeof i1.DaffDisableableDirective; inputs: { "disabled": "disabled"; }; outputs: {}; }, { directive: typeof i1.DaffLoadableDirective; inputs: { "loading": "loading"; }; outputs: {}; }]>;
|
|
56
55
|
}
|
|
57
56
|
|
|
58
57
|
/**
|
|
@@ -77,9 +76,9 @@ declare class DaffButtonComponent extends DaffButtonBaseDirective {
|
|
|
77
76
|
/**
|
|
78
77
|
* Whether or not the button displays a shadow.
|
|
79
78
|
*/
|
|
80
|
-
elevated: boolean
|
|
79
|
+
elevated: i0.InputSignal<boolean>;
|
|
81
80
|
static ɵfac: i0.ɵɵFactoryDeclaration<DaffButtonComponent, never>;
|
|
82
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DaffButtonComponent, "button[daff-button],a[daff-button]", never, { "elevated": { "alias": "elevated"; "required": false; }; }, {}, never, ["[daffPrefix]", "*", "[daffSuffix]"], true, never>;
|
|
81
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DaffButtonComponent, "button[daff-button],a[daff-button]", never, { "elevated": { "alias": "elevated"; "required": false; "isSignal": true; }; }, {}, never, ["[daffPrefix]", "*", "[daffSuffix]"], true, never>;
|
|
83
82
|
}
|
|
84
83
|
|
|
85
84
|
/**
|
|
@@ -175,9 +174,9 @@ declare class DaffStrokedButtonComponent extends DaffButtonBaseDirective {
|
|
|
175
174
|
/**
|
|
176
175
|
* Whether or not the button displays a shadow.
|
|
177
176
|
*/
|
|
178
|
-
elevated: boolean
|
|
177
|
+
elevated: i0.InputSignal<boolean>;
|
|
179
178
|
static ɵfac: i0.ɵɵFactoryDeclaration<DaffStrokedButtonComponent, never>;
|
|
180
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DaffStrokedButtonComponent, "button[daff-stroked-button],a[daff-stroked-button]", never, { "elevated": { "alias": "elevated"; "required": false; }; }, {}, never, ["[daffPrefix]", "*", "[daffSuffix]"], true, never>;
|
|
179
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DaffStrokedButtonComponent, "button[daff-stroked-button],a[daff-stroked-button]", never, { "elevated": { "alias": "elevated"; "required": false; "isSignal": true; }; }, {}, never, ["[daffPrefix]", "*", "[daffSuffix]"], true, never>;
|
|
181
180
|
}
|
|
182
181
|
|
|
183
182
|
/**
|
|
@@ -19,7 +19,10 @@ declare class DaffInputComponent extends DaffFormFieldControl<string> implements
|
|
|
19
19
|
* Implemented as part of DaffFormFieldControl.
|
|
20
20
|
*/
|
|
21
21
|
focused: boolean;
|
|
22
|
-
|
|
22
|
+
/**
|
|
23
|
+
* @docs-private
|
|
24
|
+
*/
|
|
25
|
+
get _id(): string;
|
|
23
26
|
/**
|
|
24
27
|
* @docs-private
|
|
25
28
|
*
|
|
@@ -54,7 +54,10 @@ declare class DaffListItemComponent {
|
|
|
54
54
|
*/
|
|
55
55
|
_prefix: DaffPrefixDirective;
|
|
56
56
|
constructor(elementRef: ElementRef);
|
|
57
|
-
|
|
57
|
+
/**
|
|
58
|
+
* @docs-private
|
|
59
|
+
*/
|
|
60
|
+
get _isAnchor(): boolean;
|
|
58
61
|
static ɵfac: i0.ɵɵFactoryDeclaration<DaffListItemComponent, never>;
|
|
59
62
|
static ɵcmp: i0.ɵɵComponentDeclaration<DaffListItemComponent, "daff-list-item,a[daff-list-item]", never, { "active": { "alias": "active"; "required": false; }; }, {}, ["_prefix"], ["[daffPrefix]", "*"], true, never>;
|
|
60
63
|
}
|
|
@@ -56,8 +56,8 @@ declare class DaffMenuActivatorDirective implements OnDestroy {
|
|
|
56
56
|
private viewContainerRef;
|
|
57
57
|
private cdRef;
|
|
58
58
|
private _destroyed$;
|
|
59
|
-
private _open;
|
|
60
59
|
private _defaultMenuId;
|
|
60
|
+
protected _open: boolean;
|
|
61
61
|
readonly isOpen: i0.WritableSignal<boolean>;
|
|
62
62
|
/**
|
|
63
63
|
* The menu content to display when activated.
|
|
@@ -71,7 +71,7 @@ declare class DaffMenuActivatorDirective implements OnDestroy {
|
|
|
71
71
|
/**
|
|
72
72
|
* The resolved menu ID.
|
|
73
73
|
*/
|
|
74
|
-
|
|
74
|
+
protected menuId: i0.Signal<string>;
|
|
75
75
|
/**
|
|
76
76
|
* @docs-private
|
|
77
77
|
*/
|
|
@@ -139,7 +139,7 @@ declare class DaffMenuComponent implements AfterContentInit, AfterViewInit {
|
|
|
139
139
|
/**
|
|
140
140
|
* @docs-private
|
|
141
141
|
*
|
|
142
|
-
*
|
|
142
|
+
* Handles keyboard navigation.
|
|
143
143
|
*/
|
|
144
144
|
handleKeydown(event: KeyboardEvent): void;
|
|
145
145
|
/**
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as rxjs from 'rxjs';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { Type, AfterContentInit, AfterViewInit, OnDestroy, ElementRef, ChangeDetectorRef } from '@angular/core';
|
|
3
5
|
import { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';
|
|
4
6
|
import * as i2 from '@angular/cdk/portal';
|
|
5
7
|
import { ComponentPortal } from '@angular/cdk/portal';
|
|
6
|
-
import * as i0 from '@angular/core';
|
|
7
|
-
import { Type, AfterContentInit, AfterViewInit, OnDestroy, ElementRef, ChangeDetectorRef } from '@angular/core';
|
|
8
8
|
import * as i1 from '@daffodil/design';
|
|
9
9
|
import { DaffOpenable, DaffOpenableDirective, DaffFocusStackService } from '@daffodil/design';
|
|
10
10
|
import * as i3 from '@angular/cdk/overlay';
|
|
@@ -91,7 +91,10 @@ declare class DaffModalComponent implements AfterContentInit, AfterViewInit, OnD
|
|
|
91
91
|
private openDirective;
|
|
92
92
|
private _focusStack;
|
|
93
93
|
private changeDetector;
|
|
94
|
-
|
|
94
|
+
/**
|
|
95
|
+
* @docs-private
|
|
96
|
+
*/
|
|
97
|
+
readonly closing: i0.WritableSignal<boolean>;
|
|
95
98
|
private _ariaLabelledBy;
|
|
96
99
|
/**
|
|
97
100
|
* @docs-private
|
|
@@ -137,7 +140,7 @@ declare class DaffModalComponent implements AfterContentInit, AfterViewInit, OnD
|
|
|
137
140
|
/**
|
|
138
141
|
* Tracks the open state of the modal.
|
|
139
142
|
*/
|
|
140
|
-
get open(): boolean
|
|
143
|
+
get open(): i0.ModelSignal<boolean>;
|
|
141
144
|
/**
|
|
142
145
|
* @docs-private
|
|
143
146
|
*
|
|
@@ -179,7 +182,10 @@ declare class DaffModalHeaderComponent {
|
|
|
179
182
|
*/
|
|
180
183
|
declare class DaffModalTitleDirective {
|
|
181
184
|
private modal;
|
|
182
|
-
|
|
185
|
+
/**
|
|
186
|
+
* @docs-private
|
|
187
|
+
*/
|
|
188
|
+
_id: string;
|
|
183
189
|
constructor(modal: DaffModalComponent);
|
|
184
190
|
static ɵfac: i0.ɵɵFactoryDeclaration<DaffModalTitleDirective, [{ optional: true; }]>;
|
|
185
191
|
static ɵdir: i0.ɵɵDirectiveDeclaration<DaffModalTitleDirective, "[daffModalTitle]", never, {}, {}, never, never, true, never>;
|
|
@@ -26,9 +26,11 @@ declare class DaffNativeSelectComponent extends DaffFormFieldControl<string> imp
|
|
|
26
26
|
*/
|
|
27
27
|
focused: boolean;
|
|
28
28
|
/**
|
|
29
|
+
* @docs-private
|
|
30
|
+
*
|
|
29
31
|
* Implemented as part of DaffFormFieldControl.
|
|
30
32
|
*/
|
|
31
|
-
|
|
33
|
+
get _id(): string;
|
|
32
34
|
constructor(
|
|
33
35
|
/**
|
|
34
36
|
* @docs-private
|
|
@@ -94,7 +94,7 @@ declare class DaffSidebarComponent implements DaffOpenable {
|
|
|
94
94
|
/**
|
|
95
95
|
* @docs-private
|
|
96
96
|
*/
|
|
97
|
-
get open(): boolean
|
|
97
|
+
get open(): i0.ModelSignal<boolean>;
|
|
98
98
|
constructor(_elementRef: ElementRef<HTMLElement>, _ngZone: NgZone, _focusTrapFactory: ConfigurableFocusTrapFactory, _focusStack: DaffFocusStackService, openDirective: DaffOpenableDirective, _doc: any);
|
|
99
99
|
private _focusTrap;
|
|
100
100
|
/**
|
|
@@ -207,8 +207,14 @@ declare class DaffSidebarViewportComponent implements AfterContentChecked, OnDes
|
|
|
207
207
|
* right when there are child sidebars.
|
|
208
208
|
*/
|
|
209
209
|
private _shift;
|
|
210
|
-
|
|
211
|
-
|
|
210
|
+
/**
|
|
211
|
+
* @docs-private
|
|
212
|
+
*/
|
|
213
|
+
_isPaddedLeft: boolean;
|
|
214
|
+
/**
|
|
215
|
+
* @docs-private
|
|
216
|
+
*/
|
|
217
|
+
_isPaddedRight: boolean;
|
|
212
218
|
/**
|
|
213
219
|
* @docs-private
|
|
214
220
|
*
|
|
@@ -176,12 +176,6 @@ declare class DaffTabsComponent implements AfterContentInit, OnInit {
|
|
|
176
176
|
* The tab that is selected on initial load. If it's not used, the first tab in the tablist will be selected by default.
|
|
177
177
|
*/
|
|
178
178
|
initiallySelected: string;
|
|
179
|
-
/**
|
|
180
|
-
* @docs-private
|
|
181
|
-
*
|
|
182
|
-
* aria-label for the tab.
|
|
183
|
-
*/
|
|
184
|
-
private externalAriaLabel;
|
|
185
179
|
/**
|
|
186
180
|
* `aria-label` to label the tablist.
|
|
187
181
|
*/
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as _fortawesome_fontawesome_common_types from '@fortawesome/fontawesome-common-types';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { EventEmitter } from '@angular/core';
|
|
4
|
+
import * as i1 from '@daffodil/design';
|
|
5
|
+
import { DaffSizableDirective, DaffSizeSmallType, DaffSizeMediumType, DaffSizeLargeType, DaffDisableable, DaffPrefixDirective, DaffStatus, DaffDisableableDirective, DaffStatusableDirective } from '@daffodil/design';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The size types that the DaffTagComponent can implement.
|
|
9
|
+
*/
|
|
10
|
+
type DaffTagSize = DaffSizeSmallType | DaffSizeMediumType | DaffSizeLargeType;
|
|
11
|
+
declare class DaffTagSizableDirective extends DaffSizableDirective<DaffTagSize> {
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DaffTagSizableDirective, never>;
|
|
13
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<DaffTagSizableDirective, never, never, {}, {}, never, never, true, never>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* DaffTagComponent is an interactive indicator and filter that can be edited or removed, used to represent selections, categories, or applied filters.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```html
|
|
21
|
+
* <daff-tag [dismissible]="true" (closeTag)="onCloseTag()">
|
|
22
|
+
* <fa-icon daffPrefix [icon]="faCircleCheck"></fa-icon>
|
|
23
|
+
* Label
|
|
24
|
+
* </daff-tag>
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
declare class DaffTagComponent implements DaffDisableable {
|
|
28
|
+
private size;
|
|
29
|
+
private disabledDirective;
|
|
30
|
+
private statusable;
|
|
31
|
+
/**
|
|
32
|
+
* @docs-private
|
|
33
|
+
*/
|
|
34
|
+
faTimes: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
35
|
+
/**
|
|
36
|
+
* @docs-private
|
|
37
|
+
*/
|
|
38
|
+
_prefix: DaffPrefixDirective;
|
|
39
|
+
/**
|
|
40
|
+
* @docs-private
|
|
41
|
+
*
|
|
42
|
+
* Internal function to access the disabled property of the DaffDisableableDirective.
|
|
43
|
+
*/
|
|
44
|
+
get disabled(): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* @deprecated Deprecated in version 0.93.0. Deprecated in version 0.93.1. Will be removed in version 0.96.0.
|
|
47
|
+
*
|
|
48
|
+
* Sets the status on the tag.
|
|
49
|
+
*/
|
|
50
|
+
get status(): DaffStatus;
|
|
51
|
+
set status(value: DaffStatus);
|
|
52
|
+
/**
|
|
53
|
+
* Whether the tag can be dismissed by the user.
|
|
54
|
+
* Displays a close icon if `true`.
|
|
55
|
+
*/
|
|
56
|
+
dismissible: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Emits when the tag is closed.
|
|
59
|
+
*/
|
|
60
|
+
closeTag: EventEmitter<void>;
|
|
61
|
+
/**
|
|
62
|
+
* @docs-private
|
|
63
|
+
*
|
|
64
|
+
* Internal handler for the close icon click.
|
|
65
|
+
*/
|
|
66
|
+
onCloseTag(event: Event): void;
|
|
67
|
+
constructor(size: DaffTagSizableDirective, disabledDirective: DaffDisableableDirective, statusable: DaffStatusableDirective);
|
|
68
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DaffTagComponent, never>;
|
|
69
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DaffTagComponent, "daff-tag", never, { "status": { "alias": "status"; "required": false; }; "dismissible": { "alias": "dismissible"; "required": false; }; }, { "closeTag": "closeTag"; }, ["_prefix"], ["[daffPrefix]", "*"], true, [{ directive: typeof i1.DaffArticleEncapsulatedDirective; inputs: {}; outputs: {}; }, { directive: typeof DaffTagSizableDirective; inputs: { "size": "size"; }; outputs: {}; }, { directive: typeof i1.DaffColorableDirective; inputs: { "color": "color"; }; outputs: {}; }, { directive: typeof i1.DaffStatusableDirective; inputs: {}; outputs: {}; }, { directive: typeof i1.DaffDisableableDirective; inputs: { "disabled": "disabled"; }; outputs: {}; }]>;
|
|
70
|
+
static ngAcceptInputType_dismissible: unknown;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* @docs-private
|
|
75
|
+
*
|
|
76
|
+
* `DAFF_TAG_COMPONENTS` imports all the available components and directives.
|
|
77
|
+
*/
|
|
78
|
+
declare const DAFF_TAG_COMPONENTS: readonly [typeof DaffTagComponent, typeof DaffTagSizableDirective, typeof DaffPrefixDirective];
|
|
79
|
+
|
|
80
|
+
export { DAFF_TAG_COMPONENTS, DaffTagComponent, DaffTagSizableDirective };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replaces the element's native focus/blur methods with ones that dispatch the corresponding events directly,
|
|
3
|
+
* so tests do not depend on the document actually having focus. Chrome only
|
|
4
|
+
* moves `document.activeElement` without firing focus events when the document
|
|
5
|
+
* is unfocused, which makes native-focus-driven tests order-dependent.
|
|
6
|
+
*
|
|
7
|
+
* This originally comes from https://github.com/angular/components/blob/7d09f9153fabfe4cdd13a096d9e6d43f472812e5/src/cdk/testing/testbed/fake-events/element-focus.ts#L30
|
|
8
|
+
*/
|
|
9
|
+
declare function patchElementFocus(element: HTMLElement): void;
|
|
10
|
+
|
|
11
|
+
export { patchElementFocus };
|