playbook_ui 11.4.0 → 11.5.0.pre.alpha.datepicker1
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.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/data/menu.yml +0 -13
- data/app/pb_kits/playbook/pb_badge/badge.test.js +80 -0
- data/app/pb_kits/playbook/pb_button/_button.tsx +7 -2
- data/app/pb_kits/playbook/pb_button/_button_mixins.scss +7 -0
- data/app/pb_kits/playbook/pb_button/button.html.erb +11 -0
- data/app/pb_kits/playbook/pb_button/button.rb +3 -0
- data/app/pb_kits/playbook/pb_button/button.test.js +6 -8
- data/app/pb_kits/playbook/pb_button/docs/_button_block_content.html.erb +1 -1
- data/app/pb_kits/playbook/pb_button/docs/_button_block_content.jsx +12 -9
- data/app/pb_kits/playbook/pb_button/docs/_button_block_content.md +1 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_icon_options.html.erb +2 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_icon_options.jsx +23 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_icon_options.md +1 -0
- data/app/pb_kits/playbook/pb_button/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_button/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_date/_date.tsx +1 -1
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +13 -1
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +24 -19
- data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +1 -1
- data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +9 -0
- data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +25 -3
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_positions.html.erb +44 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_positions.jsx +60 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_positions.md +9 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_positions_element.html.erb +33 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_positions_element.jsx +67 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +4 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_flatpickr_styles.scss +0 -3
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_overrides.scss +4 -4
- data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.tsx +142 -0
- data/app/pb_kits/playbook/pb_date_range_inline/date_range_inline.test.js +116 -0
- data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_default.jsx +1 -1
- data/app/pb_kits/playbook/pb_date_time/{_date_time.jsx → _date_time.tsx} +2 -5
- data/app/pb_kits/playbook/pb_date_time/dateTime.test.js +110 -0
- data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.jsx +1 -1
- data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.jsx +1 -1
- data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.jsx +1 -1
- data/app/pb_kits/playbook/pb_date_year_stacked/{_date_year_stacked.jsx → _date_year_stacked.tsx} +6 -6
- data/app/pb_kits/playbook/pb_date_year_stacked/date_year_stacked.test.js +67 -0
- data/app/pb_kits/playbook/pb_dialog/_dialog.jsx +32 -14
- data/app/pb_kits/playbook/pb_dialog/_dialog.scss +5 -0
- data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_body.jsx +2 -2
- data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_footer.jsx +22 -4
- data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_header.jsx +3 -3
- data/app/pb_kits/playbook/pb_dialog/dialog.test.jsx +79 -17
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_stacked_alert.jsx +55 -93
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_status.jsx +79 -42
- data/app/pb_kits/playbook/pb_file_upload/{_file_upload.jsx → _file_upload.tsx} +6 -10
- data/app/pb_kits/playbook/pb_filter/Filter/FilterDouble.jsx +2 -0
- data/app/pb_kits/playbook/pb_filter/Filter/FilterSingle.jsx +2 -0
- data/app/pb_kits/playbook/pb_filter/Filter/FiltersPopover.jsx +2 -2
- data/app/pb_kits/playbook/pb_filter/docs/_filter_min_width.html.erb +1 -0
- data/app/pb_kits/playbook/pb_filter/docs/_filter_placement.html.erb +34 -0
- data/app/pb_kits/playbook/pb_filter/docs/_filter_placement.jsx +66 -0
- data/app/pb_kits/playbook/pb_filter/docs/_filter_placement.md +4 -0
- data/app/pb_kits/playbook/pb_filter/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_filter/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_filter/filter.html.erb +2 -2
- data/app/pb_kits/playbook/pb_filter/filter.rb +3 -0
- data/app/pb_kits/playbook/pb_filter/filter.test.js +76 -0
- data/app/pb_kits/playbook/pb_form_group/{_form_group.jsx → _form_group.tsx} +1 -4
- data/app/pb_kits/playbook/pb_form_group/form_group.test.js +17 -0
- data/app/pb_kits/playbook/pb_hashtag/_hashtag.tsx +10 -1
- data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_link.html.erb +5 -0
- data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_link.jsx +26 -0
- data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_link.md +1 -0
- data/app/pb_kits/playbook/pb_hashtag/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_hashtag/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_hashtag/hashtag.html.erb +1 -1
- data/app/pb_kits/playbook/pb_hashtag/hashtag.rb +6 -0
- data/app/pb_kits/playbook/pb_hashtag/hashtag.test.js +54 -0
- data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +129 -0
- data/app/pb_kits/playbook/pb_home_address_street/city_emphasis.html.erb +2 -1
- data/app/pb_kits/playbook/pb_home_address_street/city_emphasis.rb +2 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_default.jsx +1 -1
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.jsx +2 -2
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_link.html.erb +12 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_link.jsx +23 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_link.md +1 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/example.yml +3 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +4 -0
- data/app/pb_kits/playbook/pb_home_address_street/home_adress_street.test.js +60 -0
- data/app/pb_kits/playbook/pb_home_address_street/street_emphasis.html.erb +2 -1
- data/app/pb_kits/playbook/pb_home_address_street/street_emphasis.rb +4 -1
- data/app/pb_kits/playbook/pb_icon_stat_value/{_icon_stat_value.jsx → _icon_stat_value.tsx} +2 -4
- data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.test.js +154 -0
- data/app/pb_kits/playbook/pb_icon_value/{_icon_value.jsx → _icon_value.tsx} +2 -4
- data/app/pb_kits/playbook/pb_icon_value/icon_value.test.js +77 -0
- data/app/pb_kits/playbook/pb_label_value/_label_value.tsx +123 -0
- data/app/pb_kits/playbook/pb_label_value/label_value.test.js +109 -0
- data/app/pb_kits/playbook/pb_layout/{_layout.jsx → _layout.tsx} +13 -19
- data/app/pb_kits/playbook/pb_layout/layout.test.js +97 -0
- data/app/pb_kits/playbook/pb_lightbox/lightbox.test.jsx +23 -15
- data/app/pb_kits/playbook/pb_popover/popover.rb +1 -1
- data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +0 -1
- data/app/pb_kits/playbook/pb_time/_time.tsx +2 -2
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.jsx +5 -2
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +9 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.jsx +10 -0
- data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +4 -1
- data/app/pb_kits/playbook/pb_timestamp/timestamp.test.js +164 -0
- data/app/pb_kits/playbook/pb_tooltip/_tooltip.tsx +0 -4
- data/app/pb_kits/playbook/pb_tooltip/tooltip.test.jsx +11 -8
- data/app/pb_kits/playbook/tokens/_colors.scss +74 -74
- data/app/pb_kits/playbook/tokens/_typography.scss +8 -8
- data/app/pb_kits/playbook/utilities/_flexbox.scss +11 -11
- data/app/pb_kits/playbook/utilities/{_align_content.scss → flexbox_global_props/_align_content.scss} +0 -0
- data/app/pb_kits/playbook/utilities/{_align_items.scss → flexbox_global_props/_align_items.scss} +0 -0
- data/app/pb_kits/playbook/utilities/{_align_self.scss → flexbox_global_props/_align_self.scss} +0 -0
- data/app/pb_kits/playbook/utilities/{_flex.scss → flexbox_global_props/_flex.scss} +0 -0
- data/app/pb_kits/playbook/utilities/{_flex_direction.scss → flexbox_global_props/_flex_direction.scss} +0 -0
- data/app/pb_kits/playbook/utilities/{_flex_grow.scss → flexbox_global_props/_flex_grow.scss} +0 -0
- data/app/pb_kits/playbook/utilities/{_flex_shrink.scss → flexbox_global_props/_flex_shrink.scss} +0 -0
- data/app/pb_kits/playbook/utilities/{_flex_wrap.scss → flexbox_global_props/_flex_wrap.scss} +0 -0
- data/app/pb_kits/playbook/utilities/{_justify_content.scss → flexbox_global_props/_justify_content.scss} +0 -0
- data/app/pb_kits/playbook/utilities/{_justify_self.scss → flexbox_global_props/_justify_self.scss} +0 -0
- data/app/pb_kits/playbook/utilities/{_order.scss → flexbox_global_props/_order.scss} +0 -0
- data/app/pb_kits/playbook/utilities/props.ts +1 -1
- data/app/pb_kits/playbook/utilities/test-utils.js +2 -3
- data/app/pb_kits/playbook/utilities/text.ts +1 -1
- data/lib/playbook/version.rb +2 -2
- metadata +56 -25
- data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.jsx +0 -155
- data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.jsx +0 -124
- data/app/pb_kits/playbook/pb_label_value/_label_value.jsx +0 -155
@@ -37,7 +37,7 @@ type DialogProps = {
|
|
37
37
|
opened: boolean,
|
38
38
|
portalClassName?: string,
|
39
39
|
shouldCloseOnOverlayClick: boolean,
|
40
|
-
size?: "sm" | "md" | "lg" | "content",
|
40
|
+
size?: "sm" | "md" | "lg" | "status_size" | "content",
|
41
41
|
status?: "info" | "caution" | "delete" | "error" | "success",
|
42
42
|
text?: string,
|
43
43
|
title?: string,
|
@@ -53,7 +53,7 @@ const Dialog = (props: DialogProps) => {
|
|
53
53
|
className,
|
54
54
|
data = {},
|
55
55
|
id,
|
56
|
-
size =
|
56
|
+
size = "md",
|
57
57
|
children,
|
58
58
|
loading = false,
|
59
59
|
opened,
|
@@ -107,25 +107,35 @@ const Dialog = (props: DialogProps) => {
|
|
107
107
|
}
|
108
108
|
|
109
109
|
const sweetAlertStatus = {
|
110
|
-
|
110
|
+
default: {
|
111
111
|
icon: "exclamation-circle",
|
112
112
|
variant: "default",
|
113
|
+
size: "lg"
|
114
|
+
},
|
115
|
+
info: {
|
116
|
+
icon: "info-circle",
|
117
|
+
variant: "default",
|
118
|
+
size: "lg"
|
113
119
|
},
|
114
120
|
caution: {
|
115
|
-
icon: "triangle
|
121
|
+
icon: "exclamation-triangle",
|
116
122
|
variant: "yellow",
|
123
|
+
size: "lg"
|
117
124
|
},
|
118
125
|
delete: {
|
119
|
-
icon: "trash",
|
126
|
+
icon: "trash-alt",
|
120
127
|
variant: "red",
|
128
|
+
size: "lg"
|
121
129
|
},
|
122
130
|
error: {
|
123
131
|
icon: "times-circle",
|
124
132
|
variant: "red",
|
133
|
+
size: "lg"
|
125
134
|
},
|
126
135
|
success: {
|
127
136
|
icon: "check-circle",
|
128
137
|
variant: "green",
|
138
|
+
size: "lg"
|
129
139
|
},
|
130
140
|
}
|
131
141
|
|
@@ -150,27 +160,35 @@ const Dialog = (props: DialogProps) => {
|
|
150
160
|
shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}
|
151
161
|
status={status}
|
152
162
|
>
|
153
|
-
<If condition={title}>
|
163
|
+
<If condition={title && !status}>
|
154
164
|
<Dialog.Header>{title}</Dialog.Header>
|
155
165
|
</If>
|
156
166
|
<If condition={!status && text}>
|
157
|
-
<Dialog.Body>
|
167
|
+
<Dialog.Body>
|
168
|
+
{text}
|
169
|
+
</Dialog.Body>
|
158
170
|
</If>
|
159
171
|
<If condition={status}>
|
160
|
-
<Dialog.Body
|
161
|
-
|
162
|
-
|
172
|
+
<Dialog.Body
|
173
|
+
padding="md"
|
174
|
+
>
|
175
|
+
<Flex
|
176
|
+
align="center"
|
177
|
+
orientation="column"
|
163
178
|
>
|
164
179
|
<IconCircle
|
165
180
|
icon={sweetAlertStatus[status].icon}
|
181
|
+
size={sweetAlertStatus[status].size}
|
166
182
|
variant={sweetAlertStatus[status].variant}
|
167
183
|
/>
|
168
|
-
<Title
|
184
|
+
<Title
|
185
|
+
marginTop="sm"
|
169
186
|
size={3}
|
170
187
|
>
|
171
188
|
{title}
|
172
189
|
</Title>
|
173
|
-
<Body
|
190
|
+
<Body
|
191
|
+
marginTop="xs"
|
174
192
|
text={text}
|
175
193
|
/>
|
176
194
|
</Flex>
|
@@ -184,9 +202,9 @@ const Dialog = (props: DialogProps) => {
|
|
184
202
|
>
|
185
203
|
{confirmButton}
|
186
204
|
</Button>
|
187
|
-
<Button id=
|
205
|
+
<Button id="cancel-button"
|
188
206
|
onClick={onCancel}
|
189
|
-
variant=
|
207
|
+
variant="link"
|
190
208
|
>
|
191
209
|
{cancelButton}
|
192
210
|
</Button>
|
@@ -59,6 +59,7 @@
|
|
59
59
|
// Local Variables
|
60
60
|
$gutter: $space_lg;
|
61
61
|
$small: 300px;
|
62
|
+
$status_size: 375px;
|
62
63
|
$medium: 500px;
|
63
64
|
$large: 800px;
|
64
65
|
$animation-duration: 0.2s;
|
@@ -78,6 +79,10 @@
|
|
78
79
|
outline: none;
|
79
80
|
animation-timing-function: $easeInOutQuint;
|
80
81
|
|
82
|
+
&[class*="_status_size"] {
|
83
|
+
width: $status_size;
|
84
|
+
}
|
85
|
+
|
81
86
|
&[class*="_sm"] {
|
82
87
|
width: $small;
|
83
88
|
}
|
@@ -7,8 +7,8 @@ import { globalProps } from '../../utilities/globalProps'
|
|
7
7
|
|
8
8
|
// Body component
|
9
9
|
const DialogBody = (props: DialogBodyProps) => {
|
10
|
-
const { children, padding =
|
11
|
-
const bodyCSS = buildCss(
|
10
|
+
const { children, padding = "sm", className } = props
|
11
|
+
const bodyCSS = buildCss("dialog_body")
|
12
12
|
const bodySpacing = globalProps(props, { padding })
|
13
13
|
|
14
14
|
return (
|
@@ -9,17 +9,35 @@ import { globalProps } from '../../utilities/globalProps'
|
|
9
9
|
import Flex from '../../pb_flex/_flex'
|
10
10
|
import SectionSeparator from '../../pb_section_separator/_section_separator'
|
11
11
|
|
12
|
+
|
13
|
+
type DialogFooterProps = {
|
14
|
+
aria?: object,
|
15
|
+
children: array<React.ReactNode> | React.ReactNode | string,
|
16
|
+
className?: string,
|
17
|
+
closeable: boolean,
|
18
|
+
data?: object,
|
19
|
+
id?: string,
|
20
|
+
padding?: string,
|
21
|
+
paddingBottom?: string,
|
22
|
+
paddingX?: string,
|
23
|
+
separator: boolean,
|
24
|
+
spacing?: string,
|
25
|
+
}
|
26
|
+
|
12
27
|
// Footer component
|
13
28
|
const DialogFooter = (props: DialogFooterProps) => {
|
14
29
|
const {
|
15
30
|
children,
|
16
|
-
padding =
|
31
|
+
padding = "sm",
|
32
|
+
paddingBottom = "sm",
|
33
|
+
paddingX = "sm",
|
17
34
|
className,
|
18
|
-
spacing =
|
35
|
+
spacing = "between",
|
19
36
|
separator = false,
|
20
37
|
} = props
|
21
|
-
|
22
|
-
const
|
38
|
+
|
39
|
+
const footerCSS = buildCss("dialog_footer")
|
40
|
+
const footerSpacing = globalProps(props, { padding, paddingBottom, paddingX })
|
23
41
|
|
24
42
|
return (
|
25
43
|
<>
|
@@ -30,8 +30,8 @@ const DialogHeader = (props: DialogHeaderProps) => {
|
|
30
30
|
children,
|
31
31
|
className,
|
32
32
|
data = {},
|
33
|
-
padding =
|
34
|
-
spacing =
|
33
|
+
padding = "sm",
|
34
|
+
spacing = "between",
|
35
35
|
closeable = true,
|
36
36
|
separator = true,
|
37
37
|
} = props
|
@@ -39,7 +39,7 @@ const DialogHeader = (props: DialogHeaderProps) => {
|
|
39
39
|
const ariaProps = buildAriaProps(aria)
|
40
40
|
const dataProps = buildDataProps(data)
|
41
41
|
const api = useContext(DialogContext)
|
42
|
-
const headerCSS = buildCss(
|
42
|
+
const headerCSS = buildCss("dialog_header")
|
43
43
|
const headerSpacing = globalProps(props, { padding })
|
44
44
|
|
45
45
|
/* eslint-disable react/jsx-handler-names */
|
@@ -1,23 +1,85 @@
|
|
1
|
-
import React from 'react'
|
2
|
-
import { render,
|
3
|
-
import { Dialog } from '../'
|
1
|
+
import React, {useState} from 'react'
|
2
|
+
import { render, cleanup, waitFor, fireEvent } from "../utilities/test-utils";
|
3
|
+
import { Dialog, Button } from '../'
|
4
4
|
|
5
|
-
|
5
|
+
const text="Hello Body Text, Nice to meet ya."
|
6
|
+
const title="Header Title is the Title Prop"
|
7
|
+
const size="sm"
|
8
|
+
const confirmButton="Okay"
|
9
|
+
const cancelButton="Cancel Button"
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
+
function DialogTest() {
|
12
|
+
const [isOpen, setIsOpen] = useState(false)
|
13
|
+
const close = () => setIsOpen(false)
|
14
|
+
const open = () => setIsOpen(true)
|
15
|
+
const [isLoading, setIsLoading] = useState(false)
|
16
|
+
return (
|
17
|
+
<>
|
18
|
+
<Button onClick={open}>{'Open Dialog'}</Button>
|
19
|
+
<Dialog
|
20
|
+
cancelButton={cancelButton}
|
21
|
+
className="wrapper"
|
22
|
+
confirmButton={confirmButton}
|
23
|
+
loading={isLoading}
|
24
|
+
onCancel={close}
|
25
|
+
onClose={close}
|
26
|
+
onConfirm={() => setIsLoading(!isLoading)}
|
27
|
+
opened={isOpen}
|
28
|
+
portalClassName="portal"
|
29
|
+
size={size}
|
30
|
+
text={text}
|
31
|
+
title={title}
|
32
|
+
/>
|
33
|
+
</>
|
34
|
+
);
|
35
|
+
}
|
11
36
|
|
12
|
-
test('
|
13
|
-
const testId = 'test1'
|
37
|
+
test('renders the component when clicked', async () => {
|
14
38
|
|
15
|
-
render(
|
16
|
-
<Dialog
|
17
|
-
data={{ testid: testId }}
|
18
|
-
/>
|
19
|
-
)
|
39
|
+
const { queryByText } = render(<DialogTest />);
|
20
40
|
|
21
|
-
|
22
|
-
|
41
|
+
fireEvent.click(queryByText('Open Dialog'));
|
42
|
+
|
43
|
+
await waitFor(() => expect(queryByText("Header Title is the Title Prop")).toBeInTheDocument());
|
44
|
+
|
45
|
+
cleanup()
|
23
46
|
})
|
47
|
+
|
48
|
+
test("renders the title and body text", async () => {
|
49
|
+
|
50
|
+
const { queryByText } = render(<DialogTest />);
|
51
|
+
|
52
|
+
fireEvent.click(queryByText('Open Dialog'));
|
53
|
+
|
54
|
+
await waitFor(() => expect(queryByText("Header Title is the Title Prop")).toHaveTextContent(title));
|
55
|
+
|
56
|
+
await waitFor(() => expect(queryByText("Hello Body Text, Nice to meet ya.")).toHaveTextContent(text));
|
57
|
+
|
58
|
+
cleanup()
|
59
|
+
});
|
60
|
+
|
61
|
+
test("renders the title and body text", async () => {
|
62
|
+
|
63
|
+
const { queryByText } = render(<DialogTest />);
|
64
|
+
|
65
|
+
fireEvent.click(queryByText('Open Dialog'));
|
66
|
+
|
67
|
+
await waitFor(() => expect(queryByText("Header Title is the Title Prop")).toHaveTextContent(title));
|
68
|
+
|
69
|
+
await waitFor(() => expect(queryByText("Hello Body Text, Nice to meet ya.")).toHaveTextContent(text));
|
70
|
+
|
71
|
+
cleanup()
|
72
|
+
});
|
73
|
+
|
74
|
+
test("renders the buttons", async () => {
|
75
|
+
|
76
|
+
const { queryByText } = render(<DialogTest />);
|
77
|
+
|
78
|
+
fireEvent.click(queryByText('Open Dialog'));
|
79
|
+
|
80
|
+
await waitFor(() => expect(queryByText("Okay")).toHaveTextContent(confirmButton));
|
81
|
+
|
82
|
+
await waitFor(() => expect(queryByText("Cancel Button")).toHaveTextContent(cancelButton));
|
83
|
+
|
84
|
+
cleanup()
|
85
|
+
});
|
@@ -1,7 +1,6 @@
|
|
1
1
|
/* eslint-disable react/jsx-handler-names */
|
2
|
-
|
3
2
|
import React, { useState } from "react"
|
4
|
-
import { Button, Dialog, Flex
|
3
|
+
import { Button, Dialog, Flex} from "../.."
|
5
4
|
|
6
5
|
const useDialog = (visible = false) => {
|
7
6
|
const [opened, setOpened] = useState(visible)
|
@@ -10,46 +9,40 @@ const useDialog = (visible = false) => {
|
|
10
9
|
}
|
11
10
|
|
12
11
|
const DialogStackedAlert = () => {
|
13
|
-
const [
|
14
|
-
const [
|
15
|
-
const [
|
16
|
-
const [twoLinkButtonOpen, toggleTwoLinkButtonOpen] = useDialog()
|
17
|
-
|
12
|
+
const [defaultAlertOpened, toggleDefaultAlert] = useDialog()
|
13
|
+
const [cautionAlertOpened, toggleCautionAlert] = useDialog()
|
14
|
+
const [deleteAlertOpened, toggleDeleteAlert] = useDialog()
|
18
15
|
|
19
16
|
const dialogs = [
|
20
17
|
{
|
21
|
-
|
18
|
+
size: "sm",
|
19
|
+
status: "default",
|
22
20
|
text: "Text explaining why there is an alert",
|
23
21
|
title: "Are you sure?",
|
24
|
-
toggle:
|
25
|
-
visible:
|
26
|
-
|
27
|
-
|
28
|
-
{
|
29
|
-
status: "error",
|
30
|
-
text: "Text explaining the error",
|
31
|
-
title: "Error Message",
|
32
|
-
confirmedButton:"Yes, Action",
|
33
|
-
cancelledButton: "Ok, Cancel",
|
34
|
-
toggle: toggleStackedButtonOpen,
|
35
|
-
visible: stackedButtonOpen,
|
22
|
+
toggle: toggleDefaultAlert,
|
23
|
+
visible: defaultAlertOpened,
|
24
|
+
buttonOneText:"Yes, Action",
|
25
|
+
buttonTwoText: "No, Cancel"
|
36
26
|
},
|
37
27
|
{
|
28
|
+
size: "sm",
|
38
29
|
status: "caution",
|
39
30
|
text: "This is the action you will be taking",
|
40
31
|
title: "Are you sure?",
|
41
|
-
toggle:
|
42
|
-
visible:
|
43
|
-
|
32
|
+
toggle: toggleCautionAlert,
|
33
|
+
visible: cautionAlertOpened,
|
34
|
+
buttonOneText:"Yes, Action",
|
35
|
+
buttonTwoText: "No, Cancel"
|
44
36
|
},
|
45
37
|
{
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
38
|
+
size: "sm",
|
39
|
+
status: "delete",
|
40
|
+
text: "You are about to delete ...",
|
41
|
+
title: "Delete",
|
42
|
+
toggle: toggleDeleteAlert,
|
43
|
+
visible: deleteAlertOpened,
|
44
|
+
buttonOneText:"Yes, Delete",
|
45
|
+
buttonTwoText: "No, Cancel"
|
53
46
|
}
|
54
47
|
]
|
55
48
|
|
@@ -58,27 +51,21 @@ const DialogStackedAlert = () => {
|
|
58
51
|
<Flex>
|
59
52
|
<Button
|
60
53
|
marginRight="md"
|
61
|
-
onClick={
|
62
|
-
>
|
63
|
-
{"1 Button Information Status"}
|
64
|
-
</Button>
|
65
|
-
<Button
|
66
|
-
marginRight="md"
|
67
|
-
onClick={toggleStackedButtonOpen}
|
54
|
+
onClick={toggleDefaultAlert}
|
68
55
|
>
|
69
|
-
{"
|
56
|
+
{"Default Status"}
|
70
57
|
</Button>
|
71
58
|
<Button
|
72
59
|
marginRight="md"
|
73
|
-
onClick={
|
60
|
+
onClick={toggleCautionAlert}
|
74
61
|
>
|
75
|
-
{"
|
62
|
+
{"Caution Status"}
|
76
63
|
</Button>
|
77
64
|
<Button
|
78
65
|
marginRight="md"
|
79
|
-
onClick={
|
66
|
+
onClick={toggleDeleteAlert}
|
80
67
|
>
|
81
|
-
{"
|
68
|
+
{"Delete Status"}
|
82
69
|
</Button>
|
83
70
|
</Flex>
|
84
71
|
<Flex>
|
@@ -88,61 +75,36 @@ const DialogStackedAlert = () => {
|
|
88
75
|
key={dialog.status}
|
89
76
|
onClose={dialog.toggle}
|
90
77
|
opened={dialog.visible}
|
91
|
-
size=
|
78
|
+
size={dialog.size}
|
92
79
|
status={dialog.status}
|
93
80
|
text={dialog.text}
|
94
81
|
title={dialog.title}
|
95
82
|
>
|
96
|
-
<
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
vertical="stretch"
|
122
|
-
>
|
123
|
-
<FlexItem flex={1} >
|
124
|
-
<Button
|
125
|
-
fullWidth
|
126
|
-
onClick={dialog.toggle}
|
127
|
-
variant="link"
|
128
|
-
>
|
129
|
-
{dialog.linkConfirmedButton}
|
130
|
-
</Button>
|
131
|
-
</FlexItem>
|
132
|
-
<If condition={dialog.linkCancelledButton}>
|
133
|
-
<SectionSeparator orientation="vertical"/>
|
134
|
-
<FlexItem flex={1}>
|
135
|
-
<Button
|
136
|
-
fullWidth
|
137
|
-
onClick={dialog.toggle}
|
138
|
-
variant="link"
|
139
|
-
>
|
140
|
-
{dialog.linkCancelledButton}
|
141
|
-
</Button>
|
142
|
-
</FlexItem>
|
143
|
-
</If>
|
144
|
-
</Flex>
|
145
|
-
</If>
|
83
|
+
<Dialog.Footer
|
84
|
+
padding="sm"
|
85
|
+
paddingBottom = "none"
|
86
|
+
paddingX="md"
|
87
|
+
>
|
88
|
+
<Button
|
89
|
+
fullWidth
|
90
|
+
onClick={dialog.toggle}
|
91
|
+
>
|
92
|
+
{dialog.buttonOneText}
|
93
|
+
</Button>
|
94
|
+
</Dialog.Footer>
|
95
|
+
<Dialog.Footer
|
96
|
+
padding="sm"
|
97
|
+
paddingBottom = "md"
|
98
|
+
paddingX="md"
|
99
|
+
>
|
100
|
+
<Button
|
101
|
+
fullWidth
|
102
|
+
onClick={dialog.toggle}
|
103
|
+
variant="secondary"
|
104
|
+
>
|
105
|
+
{dialog.buttonTwoText}
|
106
|
+
</Button>
|
107
|
+
</Dialog.Footer>
|
146
108
|
</Dialog>
|
147
109
|
))}
|
148
110
|
</Flex>
|