Skip to content

Commit 41b1e96

Browse files
committed
הוספת רכיב pf-alert ושינויים בקבצי package ו-tsconfig
1 parent a850589 commit 41b1e96

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+3776
-3
lines changed

elements/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"./pf-accordion/pf-accordion-header.js": "./pf-accordion/pf-accordion-header.js",
1616
"./pf-accordion/pf-accordion-panel.js": "./pf-accordion/pf-accordion-panel.js",
1717
"./pf-accordion/pf-accordion.js": "./pf-accordion/pf-accordion.js",
18+
"./pf-alert/pf-alert.js": "./pf-alert/pf-alert.js",
1819
"./pf-avatar/pf-avatar.js": "./pf-avatar/pf-avatar.js",
1920
"./pf-back-to-top/pf-back-to-top.js": "./pf-back-to-top/pf-back-to-top.js",
2021
"./pf-background-image/pf-background-image.js": "./pf-background-image/pf-background-image.js",

elements/pf-alert/README.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Alert
2+
An Alert is a banner used to notify a user about a change in status or communicate other information. It can be generated with or without a user triggering an action first.
3+
4+
## Usage
5+
An alert is used by wrapping html elements with an `rh-alert` element as slots in order to format the data in the desired manner.
6+
7+
An alert consists of the following slots:
8+
9+
`Header`
10+
- Header text for the alert, appears at the top of the alert.
11+
12+
`Actions`
13+
- Buttons that can be used to perform an action from the alert, such as closing or accepting the alert.
14+
15+
`Anonymous Slot`
16+
- This is the text that is inserted into the state to be displayed in the main content body.
17+
18+
An alert consists of the following attributes:
19+
20+
`dismissable`
21+
- The `dismissable` attribute adds a close button to the top right of the alert allowing the user to dismiss the alert. Clicking the close button dispatches a `close` event, then removes the alert from the page.
22+
23+
An alert has the following events:
24+
25+
`close`
26+
- This is fired when the user clicks the close button enabled by the `dismissable` attribute. Cancelling the event prevents the alert from closing.
27+
28+
## Installation
29+
30+
If using npm/bundlers:
31+
```bash
32+
npm install @rhds/elements
33+
```
34+
35+
Then once installed, import it to your application:
36+
37+
```js
38+
import '@patternfly/elements/pf-alert/pf-alert.js';
39+
```
40+
## Usage
41+
42+
### Basic Alert
43+
44+
```html
45+
<pf-alert>
46+
<h3 slot="header">Default</h3>
47+
<p>Example Alert</p>
48+
<pf-button variant="secondary" slot="actions" data-action="dismiss">Dismiss</pf-button>
49+
<pf-button variant="link" slot="actions" data-action="confirm">Confirm</pf-button>
50+
</pf-alert>
51+
```
52+
53+
### Info Alert (also available `success`, `warning`, `danger`, and `error`)
54+
55+
```html
56+
<pf-alert state="info">
57+
<h3 slot="header">Info</h3>
58+
<p>Example Alert</p>
59+
<pf-button variant="secondary" slot="actions" data-action="dismiss">Dismiss</pf-button>
60+
<pf-button variant="link" slot="actions" data-action="confirm">Confirm</pf-button>
61+
</pf-alert>
62+
```
63+
64+
### Inline Alert
65+
```html
66+
<pf-alert variant="inline">
67+
<h3 slot="header">Default</h3>
68+
<p>Example Alert</p>
69+
<pf-button variant="secondary" slot="actions" data-action="dismiss">Dismiss</pf-button>
70+
<pf-button variant="link" slot="actions" data-action="confirm">Confirm</pf-button>
71+
</pf-alert>
72+
```
73+
74+
### Toast Alert
75+
76+
Alerts may be toasted using the `toast()` function. A toasted alert has a
77+
unique style, a drop shadow, and either disappears after eight seconds, or can persist until the user dismisses it.
78+
79+
```js
80+
import { PfAlert } from '@patternfly/elements/pf-alert/pf-alert.js';
81+
82+
await PfAlert.toast({
83+
heading: 'Toast alert',
84+
message: 'Example toasted alert',
85+
actions: [
86+
{ variant: 'secondary', action: 'confirm', text: 'Confirm' },
87+
{ action: 'dismiss', text: 'Dismiss' }
88+
],
89+
});
90+
91+
```
92+
93+
You can respond to the various actions by listening for the `close` event
94+
95+
```js
96+
document.addEventListener('close', function(event) {
97+
if (event.target instanceof PfAlert) {
98+
switch (event.reason) {
99+
case 'close': // handle alert close ("X" button)
100+
case 'dismiss': // handle alert dismiss (data-action="dismiss")
101+
case 'confirm': // handle alert confirm (data-action="confirm")
102+
}
103+
}
104+
});
105+
106+
```
107+
108+
### Adding an Event Listener to a Basic Alert
109+
110+
If you would like to add custom logic when the alert is closed, you can do so with JavaScript.
111+
```js
112+
// Query for the alert element
113+
const alert = document.querySelector('pf-alert');
114+
alert.addEventListener('close', () => {
115+
// Add code to be executed when the alert element is closed.
116+
});
117+
```
118+
119+
### Preventing the default close behavior in a Basic Alert
120+
```js
121+
// Query for the alert element
122+
const alert = document.querySelector('pf-alert');
123+
alert.addEventListener('close', async function (event) {
124+
// Prevent the alert from closing
125+
event.preventDefault();
126+
// Perform some async task
127+
await alertClosed();
128+
// Close the alert when finished
129+
this.remove();
130+
});
131+
```
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<section id="alert-variant-alternate">
2+
<pf-alert variant="alternate">
3+
<h3 slot="header">Neutral</h3>
4+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
5+
egestas, a sollicitudin mauris tincidunt.</p>
6+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
7+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
8+
</pf-alert>
9+
10+
<pf-alert state="info" variant="alternate">
11+
<h3 slot="header">Info</h3>
12+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
13+
egestas, a sollicitudin mauris tincidunt.</p>
14+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
15+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
16+
</pf-alert>
17+
18+
<pf-alert state="success" variant="alternate">
19+
<h3 slot="header">Success</h3>
20+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
21+
egestas, a sollicitudin mauris tincidunt.</p>
22+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
23+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
24+
</pf-alert>
25+
26+
<pf-alert state="warning" variant="alternate">
27+
<h3 slot="header">Warning</h3>
28+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
29+
egestas, a sollicitudin mauris tincidunt.</p>
30+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
31+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
32+
</pf-alert>
33+
34+
<pf-alert state="danger" variant="alternate">
35+
<h3 slot="header">Danger</h3>
36+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
37+
egestas, a sollicitudin mauris tincidunt.</p>
38+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
39+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
40+
</pf-alert>
41+
42+
<pf-alert state="caution" variant="alternate">
43+
<h3 slot="header">Caution</h3>
44+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
45+
egestas, a sollicitudin mauris tincidunt.</p>
46+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
47+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
48+
</pf-alert>
49+
</section>
50+
51+
<style>
52+
#alert-variant-alternate {
53+
display: grid;
54+
grid-template-columns: repeat(auto-fit, minmax(300px, max(40vh, 40%)));
55+
grid-auto-rows: min-content;
56+
gap: var(--pf-global--spacer--lg, 16px); /* שימוש בטוקן של PF */
57+
}
58+
</style>
59+
60+
<script type="module">
61+
import '@patternfly/elements/pf-alert/pf-alert.js';
62+
import '@patternfly/elements/pf-button/pf-button.js';
63+
</script>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<pf-context-demo>
2+
<pf-alert>
3+
<h3 slot="header">Default</h3>
4+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
5+
egestas, a sollicitudin mauris tincidunt.</p>
6+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
7+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
8+
</pf-alert>
9+
</pf-context-demo>
10+
11+
<script type="module">
12+
import '@patternfly/elements/lib/elements/pf-context-demo/pf-context-demo.js';
13+
import '@patternfly/elements/pf-alert/pf-alert.js';
14+
import '@patternfly/elements/pf-button/pf-button.js';
15+
</script>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<section id="alert-states">
2+
<pf-alert state="danger">
3+
<h3 slot="header">Error - alias of Danger</h3>
4+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
5+
egestas, a sollicitudin mauris tincidunt.</p>
6+
<pf-button slot="actions" variant="link" data-action="dismiss">Dismiss</pf-button>
7+
<pf-button slot="actions" variant="link" data-action="confirm">Confirm</pf-button>
8+
</pf-alert>
9+
10+
<pf-alert state="neutral">
11+
<h3 slot="header">Default - alias of Neutral</h3>
12+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
13+
egestas, a sollicitudin mauris tincidunt.</p>
14+
<pf-button slot="actions" variant="link" data-action="dismiss">Dismiss</pf-button>
15+
<pf-button slot="actions" variant="link" data-action="confirm">Confirm</pf-button>
16+
</pf-alert>
17+
18+
<pf-alert state="info">
19+
<h3 slot="header">Note - alias of Info</h3>
20+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
21+
egestas, a sollicitudin mauris tincidunt.</p>
22+
<pf-button slot="actions" variant="link" data-action="dismiss">Dismiss</pf-button>
23+
<pf-button slot="actions" variant="link" data-action="confirm">Confirm</pf-button>
24+
</pf-alert>
25+
</section>
26+
27+
<style>
28+
#alert-states {
29+
display: grid;
30+
grid-template-columns: repeat(auto-fit, minmax(300px, max(40vh, 40%)));
31+
grid-auto-rows: min-content;
32+
gap: var(--pf-global--spacer--lg, 16px); /* שימוש בטוקן PF */
33+
}
34+
</style>
35+
36+
<script type="module">
37+
import '@patternfly/elements/pf-alert/pf-alert.js';
38+
import '@patternfly/elements/pf-button/pf-button.js';
39+
</script>
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<section id="alert-dismissable">
2+
<pf-alert dismissable>
3+
<h3 slot="header">Default dismissable</h3>
4+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
5+
egestas, a sollicitudin mauris tincidunt.</p>
6+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
7+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
8+
</pf-alert>
9+
10+
<pf-alert variant="alternate" dismissable>
11+
<h3 slot="header">Inline dismissable</h3>
12+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
13+
egestas, a sollicitudin mauris tincidunt.</p>
14+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
15+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
16+
</pf-alert>
17+
18+
<pf-alert toast dismissable>
19+
<h3 slot="header">Toast dismissable</h3>
20+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
21+
egestas, a sollicitudin mauris tincidunt.</p>
22+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
23+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
24+
</pf-alert>
25+
26+
<pf-alert dismissable data-on-close="prevent-default">
27+
<h3 slot="header">Dismissable With Prevent Default</h3>
28+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
29+
egestas, a sollicitudin mauris tincidunt.</p>
30+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
31+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
32+
</pf-alert>
33+
</section>
34+
35+
<script type="module">
36+
/* eslint-disable no-console */
37+
import { AlertCloseEvent } from '@patternfly/elements/pf-alert/pf-alert.js';
38+
import '@patternfly/elements/pf-button/pf-button.js';
39+
40+
document.body.addEventListener('close', event => {
41+
if (event instanceof AlertCloseEvent) {
42+
if (event.target.dataset.onClose === 'prevent-default') {
43+
console.log('prevent default');
44+
event.preventDefault();
45+
} else {
46+
return console.log('close');
47+
}
48+
}
49+
});
50+
</script>
51+
52+
<style>
53+
#alert-dismissable {
54+
display: grid;
55+
grid-template-columns: repeat(auto-fit, minmax(300px, max(40vh, 40%)));
56+
grid-auto-rows: min-content;
57+
gap: var(--pf-global--spacer--lg, 16px); /* שימוש בטוקן PF */
58+
}
59+
</style>

elements/pf-alert/demo/index.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<pf-alert>
2+
<h3 slot="header">Default</h3>
3+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
4+
egestas, a sollicitudin mauris tincidunt.</p>
5+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
6+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
7+
</pf-alert>
8+
9+
<script type="module">
10+
import '@patternfly/elements/pf-alert/pf-alert.js';
11+
import '@patternfly/elements/pf-button/pf-button.js';
12+
</script>

elements/pf-alert/demo/inline.html

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<section id="alert-variant-inline">
2+
<pf-alert variant="inline">
3+
<h3 slot="header">Default</h3>
4+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
5+
egestas, a sollicitudin mauris tincidunt.</p>
6+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
7+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
8+
</pf-alert>
9+
10+
<pf-alert state="info" variant="inline">
11+
<h3 slot="header">Info</h3>
12+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
13+
egestas, a sollicitudin mauris tincidunt.</p>
14+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
15+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
16+
</pf-alert>
17+
18+
<pf-alert state="success" variant="inline">
19+
<h3 slot="header">Success</h3>
20+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
21+
egestas, a sollicitudin mauris tincidunt.</p>
22+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
23+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
24+
</pf-alert>
25+
26+
<pf-alert state="warning" variant="inline">
27+
<h3 slot="header">Warning</h3>
28+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
29+
egestas, a sollicitudin mauris tincidunt.</p>
30+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
31+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
32+
</pf-alert>
33+
34+
<pf-alert state="danger" variant="inline">
35+
<h3 slot="header">Danger</h3>
36+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eleifend elit sed est
37+
egestas, a sollicitudin mauris tincidunt.</p>
38+
<pf-button slot="actions" variant="secondary" data-action="confirm">Confirm</pf-button>
39+
<pf-button slot="actions" variant="link" data-action="dismiss">Cancel</pf-button>
40+
</pf-alert>
41+
</section>
42+
43+
<style>
44+
#alert-variant-inline {
45+
display: grid;
46+
grid-template-columns: repeat(auto-fit, minmax(300px, max(40vh, 40%)));
47+
grid-auto-rows: min-content;
48+
gap: var(--pf-space-lg, 16px);
49+
}
50+
</style>
51+
52+
<script type="module">
53+
import '@patternfly/elements/pf-alert/pf-alert.js';
54+
import '@patternfly/elements/pf-button/pf-button.js';
55+
</script>

0 commit comments

Comments
 (0)