playbook_ui 7.8.4 → 7.11.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/playbook/application_controller.rb +5 -3
- data/app/helpers/playbook/application_helper.rb +13 -19
- data/app/helpers/playbook/pb_doc_helper.rb +41 -20
- data/app/helpers/playbook/pb_kit_helper.rb +1 -25
- data/app/helpers/playbook/pb_sample_helper.rb +24 -23
- data/app/pb_kits/playbook/_playbook.scss +1 -1
- data/app/pb_kits/playbook/config/_kit_example.html.erb +18 -4
- data/app/pb_kits/playbook/config/_kit_ui.html.erb +21 -21
- data/app/pb_kits/playbook/pb_currency/_currency.html.erb +1 -1
- data/app/pb_kits/playbook/pb_currency/_currency.jsx +16 -1
- data/app/pb_kits/playbook/pb_currency/_currency.scss +23 -1
- data/app/pb_kits/playbook/pb_currency/currency.rb +22 -0
- data/app/pb_kits/playbook/pb_currency/docs/{_currency_small.html.erb → _currency_alignment.html.erb} +3 -3
- data/app/pb_kits/playbook/pb_currency/docs/{_currency_small.jsx → _currency_alignment.jsx} +5 -5
- data/app/pb_kits/playbook/pb_currency/docs/_currency_no_symbol.html.erb +7 -0
- data/app/pb_kits/playbook/pb_currency/docs/_currency_no_symbol.jsx +17 -0
- data/app/pb_kits/playbook/pb_currency/docs/{_currency_large.html.erb → _currency_size.html.erb} +8 -7
- data/app/pb_kits/playbook/pb_currency/docs/{_currency_large.jsx → _currency_size.jsx} +9 -8
- data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.html.erb +24 -0
- data/app/pb_kits/playbook/pb_currency/docs/{_currency_medium.jsx → _currency_variants.jsx} +13 -10
- data/app/pb_kits/playbook/pb_currency/docs/example.yml +8 -6
- data/app/pb_kits/playbook/pb_currency/docs/index.js +4 -3
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_anti_patterns.html.erb +23 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.html.erb +4 -4
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.jsx +2 -2
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.md +3 -1
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_disabled.html.erb +8 -8
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_flatpickr_methods.html.erb +27 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_flatpickr_methods.jsx +44 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.html.erb +4 -4
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_min_max.html.erb +2 -2
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.html.erb +1 -1
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.jsx +1 -1
- data/app/pb_kits/playbook/pb_date_picker/docs/_description.md +4 -2
- data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +3 -1
- data/app/pb_kits/playbook/pb_date_picker/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_filter/Filter/FilterDouble.jsx +20 -3
- data/app/pb_kits/playbook/pb_filter/Filter/FilterSingle.jsx +51 -31
- data/app/pb_kits/playbook/pb_filter/Filter/FiltersPopover.jsx +3 -4
- data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.jsx +2 -2
- data/app/pb_kits/playbook/pb_filter/Filter/index.jsx +17 -16
- data/app/pb_kits/playbook/pb_filter/_filter.html.erb +1 -1
- data/app/pb_kits/playbook/pb_filter/_filter.scss +0 -2
- data/app/pb_kits/playbook/pb_filter/docs/_filter_min_width.html.erb +41 -0
- data/app/pb_kits/playbook/pb_filter/docs/_filter_min_width.jsx +57 -0
- data/app/pb_kits/playbook/pb_filter/docs/_filter_no_background.jsx +0 -41
- data/app/pb_kits/playbook/pb_filter/docs/_filter_no_background.md +1 -0
- data/app/pb_kits/playbook/pb_filter/docs/_filter_no_sort.html.erb +35 -0
- data/app/pb_kits/playbook/pb_filter/docs/_filter_no_sort.jsx +47 -0
- data/app/pb_kits/playbook/pb_filter/docs/_filter_no_sort.md +1 -0
- data/app/pb_kits/playbook/pb_filter/docs/_filter_only.html.erb +1 -1
- data/app/pb_kits/playbook/pb_filter/docs/_filter_single.html.erb +1 -1
- data/app/pb_kits/playbook/pb_filter/docs/example.yml +4 -0
- data/app/pb_kits/playbook/pb_filter/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_filter/filter.rb +1 -0
- data/app/pb_kits/playbook/pb_filter/templates/_core.html.erb +9 -9
- data/app/pb_kits/playbook/pb_filter/templates/_default.html.erb +1 -1
- data/app/pb_kits/playbook/pb_nav/_horizontal_nav.scss +22 -0
- data/app/pb_kits/playbook/pb_nav/_item.jsx +3 -0
- data/app/pb_kits/playbook/pb_nav/_subtle_mixin.scss +47 -0
- data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +2 -46
- data/app/pb_kits/playbook/pb_nav/docs/_new_tab.html.erb +6 -0
- data/app/pb_kits/playbook/pb_nav/docs/_new_tab.jsx +34 -0
- data/app/pb_kits/playbook/pb_nav/docs/_subtle_horizontal_nav.html.erb +6 -0
- data/app/pb_kits/playbook/pb_nav/docs/_subtle_horizontal_nav.jsx +33 -0
- data/app/pb_kits/playbook/pb_nav/docs/example.yml +4 -1
- data/app/pb_kits/playbook/pb_nav/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_nav/item.rb +5 -2
- data/app/pb_kits/playbook/pb_radio/_radio.jsx +4 -3
- data/app/pb_kits/playbook/pb_radio/docs/_radio_default.jsx +3 -0
- data/app/pb_kits/playbook/pb_radio/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_radio/radio.test.js +71 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb +25 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.jsx +45 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +3 -1
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_select/_select.jsx +4 -3
- data/app/pb_kits/playbook/pb_select/select.test.js +51 -0
- data/app/pb_kits/playbook/pb_stat_change/_stat_change.html.erb +1 -1
- data/app/pb_kits/playbook/pb_stat_change/_stat_change.jsx +8 -4
- data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_default.html.erb +1 -1
- data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_unit.html.erb +17 -0
- data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_unit.jsx +28 -0
- data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_unit_two.html.erb +20 -0
- data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_unit_two.jsx +31 -0
- data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_unit_two.md +1 -0
- data/app/pb_kits/playbook/pb_stat_change/docs/example.yml +6 -4
- data/app/pb_kits/playbook/pb_stat_change/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_stat_change/stat_change.rb +12 -7
- data/app/pb_kits/playbook/pb_table/_table.scss +1 -57
- data/app/pb_kits/playbook/pb_table/docs/_table_alignment_shift_row.html.erb +1 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_alignment_shift_row.jsx +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_alignment.scss +32 -0
- data/app/pb_kits/playbook/pb_table/styles/_all.scss +4 -3
- data/app/pb_kits/playbook/pb_table/styles/_side_highlight.scss +24 -0
- data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +8 -4
- data/app/pb_kits/playbook/pb_text_input/docs/_description.md +2 -1
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_custom.jsx +7 -1
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default.jsx +78 -56
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error.jsx +19 -11
- data/app/pb_kits/playbook/pb_text_input/text_input.test.js +77 -0
- data/app/pb_kits/playbook/pb_textarea/_textarea.jsx +5 -5
- data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +10 -7
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +4 -4
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_selectors.html.erb +17 -0
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_selectors.md +3 -0
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +1 -1
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_with_icon_circle.html.erb +10 -0
- data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_tooltip/index.js +87 -37
- data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +3 -1
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +5 -1
- data/app/pb_kits/playbook/pb_typeahead/components/Option.jsx +2 -3
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async.html.erb +19 -3
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async.jsx +4 -2
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async.md +10 -2
- data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +5 -0
- data/app/pb_kits/playbook/react_rails_kits.js +1 -0
- data/lib/playbook.rb +6 -17
- data/lib/playbook/engine.rb +0 -3
- data/{app/pb_kits → lib}/playbook/props.rb +0 -0
- data/{app/pb_kits → lib}/playbook/props/array.rb +0 -0
- data/{app/pb_kits → lib}/playbook/props/base.rb +19 -3
- data/{app/pb_kits → lib}/playbook/props/boolean.rb +0 -0
- data/{app/pb_kits → lib}/playbook/props/date.rb +0 -0
- data/{app/pb_kits → lib}/playbook/props/enum.rb +0 -0
- data/{app/pb_kits → lib}/playbook/props/hash.rb +0 -0
- data/{app/pb_kits → lib}/playbook/props/hash_array.rb +0 -0
- data/{app/pb_kits → lib}/playbook/props/number.rb +0 -0
- data/{app/pb_kits → lib}/playbook/props/number_array.rb +0 -0
- data/{app/pb_kits → lib}/playbook/props/numeric.rb +0 -0
- data/{app/pb_kits → lib}/playbook/props/percentage.rb +0 -0
- data/{app/pb_kits → lib}/playbook/props/proc.rb +0 -0
- data/{app/pb_kits → lib}/playbook/props/string.rb +0 -0
- data/lib/playbook/version.rb +1 -1
- metadata +58 -28
- data/app/helpers/playbook/layout_helper.rb +0 -9
- data/app/pb_kits/playbook/pb_currency/docs/_currency_medium.html.erb +0 -21
- data/app/pb_kits/playbook/pb_table/styles/_mixins.scss +0 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
<%= pb_rails("stat_change", props: {
|
2
|
+
value: 28.4,
|
3
|
+
icon: "chart-line",
|
4
|
+
}) %>
|
5
|
+
|
6
|
+
<br>
|
7
|
+
|
8
|
+
<%= pb_rails("stat_change", props: {
|
9
|
+
value: 6.1,
|
10
|
+
icon: "chart-line-down",
|
11
|
+
}) %>
|
12
|
+
|
13
|
+
<br>
|
14
|
+
|
15
|
+
<%= pb_rails("stat_change", props: {
|
16
|
+
value: 102,
|
17
|
+
}) %>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { StatChange } from '../../'
|
3
|
+
|
4
|
+
const StatChangeUnit = () => {
|
5
|
+
return (
|
6
|
+
<div>
|
7
|
+
<StatChange
|
8
|
+
icon="chart-line"
|
9
|
+
value="28.4"
|
10
|
+
/>
|
11
|
+
|
12
|
+
<br />
|
13
|
+
|
14
|
+
<StatChange
|
15
|
+
icon="chart-line-down"
|
16
|
+
value={6.1}
|
17
|
+
/>
|
18
|
+
|
19
|
+
<br />
|
20
|
+
|
21
|
+
<StatChange
|
22
|
+
value={102}
|
23
|
+
/>
|
24
|
+
</div>
|
25
|
+
)
|
26
|
+
}
|
27
|
+
|
28
|
+
export default StatChangeUnit
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%= pb_rails("stat_change", props: {
|
2
|
+
change: "increase",
|
3
|
+
value: 28.4,
|
4
|
+
icon: "level-up",
|
5
|
+
}) %>
|
6
|
+
|
7
|
+
<br>
|
8
|
+
|
9
|
+
<%= pb_rails("stat_change", props: {
|
10
|
+
change: "decrease",
|
11
|
+
value: 6.1,
|
12
|
+
icon: "level-down",
|
13
|
+
}) %>
|
14
|
+
|
15
|
+
<br>
|
16
|
+
|
17
|
+
<%= pb_rails("stat_change", props: {
|
18
|
+
change: "neutral",
|
19
|
+
value: 102,
|
20
|
+
}) %>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { StatChange } from '../../'
|
3
|
+
|
4
|
+
const StatChangeUnitTwo = () => {
|
5
|
+
return (
|
6
|
+
<div>
|
7
|
+
<StatChange
|
8
|
+
change="increase"
|
9
|
+
icon="level-up"
|
10
|
+
value="28.4"
|
11
|
+
/>
|
12
|
+
|
13
|
+
<br />
|
14
|
+
|
15
|
+
<StatChange
|
16
|
+
change="decrease"
|
17
|
+
icon="level-down"
|
18
|
+
value={6.1}
|
19
|
+
/>
|
20
|
+
|
21
|
+
<br />
|
22
|
+
|
23
|
+
<StatChange
|
24
|
+
change="neutral"
|
25
|
+
value={102}
|
26
|
+
/>
|
27
|
+
</div>
|
28
|
+
)
|
29
|
+
}
|
30
|
+
|
31
|
+
export default StatChangeUnitTwo
|
@@ -0,0 +1 @@
|
|
1
|
+
Increase colors your icon GREEN & Decrease colors your icon RED.
|
@@ -10,6 +10,7 @@ module Playbook
|
|
10
10
|
prop :change, type: Playbook::Props::Enum,
|
11
11
|
values: %w[neutral increase decrease],
|
12
12
|
default: "neutral"
|
13
|
+
prop :icon, type: Playbook::Props::String
|
13
14
|
prop :value, type: Playbook::Props::Numeric
|
14
15
|
|
15
16
|
def status
|
@@ -23,14 +24,18 @@ module Playbook
|
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
29
|
-
"arrow-up"
|
30
|
-
when "decrease"
|
31
|
-
"arrow-down"
|
27
|
+
def returned_icon
|
28
|
+
if icon
|
29
|
+
icon
|
32
30
|
else
|
33
|
-
|
31
|
+
case change
|
32
|
+
when "increase"
|
33
|
+
"arrow-up"
|
34
|
+
when "decrease"
|
35
|
+
"arrow-down"
|
36
|
+
else
|
37
|
+
false
|
38
|
+
end
|
34
39
|
end
|
35
40
|
end
|
36
41
|
|
@@ -1,57 +1 @@
|
|
1
|
-
@import "styles/all";
|
2
|
-
@import "../tokens/colors";
|
3
|
-
|
4
|
-
$pb_table_row_kit_side_highlight_colors: map-merge(map-merge($status_colors, $product_colors), $category_colors);
|
5
|
-
|
6
|
-
@mixin pb_table_row_kit_side_highlight($background) {
|
7
|
-
box-shadow: inset 4px 0 0 0 $background;
|
8
|
-
border-top: 0px;
|
9
|
-
}
|
10
|
-
|
11
|
-
[class^=pb_table] {
|
12
|
-
tbody {
|
13
|
-
[class^=pb_table_row_kit] {
|
14
|
-
@each $color_name, $color_value in $pb_table_row_kit_side_highlight_colors {
|
15
|
-
&[class*=_side_highlight_#{$color_name}] {
|
16
|
-
td {
|
17
|
-
&:first-child {
|
18
|
-
@include pb_table_row_kit_side_highlight($color_value);
|
19
|
-
}
|
20
|
-
}
|
21
|
-
}
|
22
|
-
}
|
23
|
-
}
|
24
|
-
}
|
25
|
-
tr[align=center] th,
|
26
|
-
tr th[align=center] {
|
27
|
-
text-align: center !important;
|
28
|
-
}
|
29
|
-
|
30
|
-
tr[align=right] th,
|
31
|
-
tr th[align=right] {
|
32
|
-
text-align: right !important;
|
33
|
-
}
|
34
|
-
|
35
|
-
tr[shift=up] {
|
36
|
-
vertical-align: top;
|
37
|
-
}
|
38
|
-
tr[shift=down] {
|
39
|
-
vertical-align: bottom;
|
40
|
-
}
|
41
|
-
|
42
|
-
td[shift=up] {
|
43
|
-
vertical-align: top;
|
44
|
-
}
|
45
|
-
td[shift=down] {
|
46
|
-
vertical-align: bottom;
|
47
|
-
}
|
48
|
-
|
49
|
-
th[shift=up] {
|
50
|
-
vertical-align: top;
|
51
|
-
}
|
52
|
-
|
53
|
-
th[shift=down] {
|
54
|
-
vertical-align: bottom;
|
55
|
-
}
|
56
|
-
}
|
57
|
-
|
1
|
+
@import "styles/all";
|
@@ -0,0 +1,32 @@
|
|
1
|
+
[class^=pb_table] {
|
2
|
+
tr {
|
3
|
+
vertical-align: top;
|
4
|
+
}
|
5
|
+
|
6
|
+
// Text Align
|
7
|
+
tr[align=center] th,
|
8
|
+
tr th[align=center] {
|
9
|
+
text-align: center !important;
|
10
|
+
}
|
11
|
+
tr[align=right] th,
|
12
|
+
tr th[align=right] {
|
13
|
+
text-align: right !important;
|
14
|
+
}
|
15
|
+
|
16
|
+
// Column Align
|
17
|
+
tr[shift=up],
|
18
|
+
td[shift=up],
|
19
|
+
th[shift=up] {
|
20
|
+
vertical-align: top;
|
21
|
+
}
|
22
|
+
tr[shift=middle],
|
23
|
+
td[shift=middle],
|
24
|
+
th[shift=middle] {
|
25
|
+
vertical-align: middle;
|
26
|
+
}
|
27
|
+
tr[shift=down],
|
28
|
+
td[shift=down],
|
29
|
+
th[shift=down] {
|
30
|
+
vertical-align: bottom;
|
31
|
+
}
|
32
|
+
}
|
@@ -1,12 +1,13 @@
|
|
1
|
-
@import "
|
2
|
-
@import "mixins";
|
1
|
+
@import "../../tokens/colors";
|
3
2
|
|
3
|
+
@import "variables";
|
4
4
|
@import "reset";
|
5
5
|
@import "structure";
|
6
6
|
@import "table-card";
|
7
7
|
@import "content";
|
8
8
|
@import "headers";
|
9
|
-
|
9
|
+
@import "side_highlight";
|
10
|
+
@import "alignment";
|
10
11
|
@import "hover";
|
11
12
|
@import "as-cards";
|
12
13
|
@import "single-line";
|
@@ -0,0 +1,24 @@
|
|
1
|
+
@import "../../tokens/colors";
|
2
|
+
|
3
|
+
$pb_table_row_kit_side_highlight_colors: map-merge(map-merge($status_colors, $product_colors), $category_colors);
|
4
|
+
|
5
|
+
@mixin pb_table_row_kit_side_highlight($background) {
|
6
|
+
box-shadow: inset 4px 0 0 0 $background;
|
7
|
+
border-top: 0px;
|
8
|
+
}
|
9
|
+
|
10
|
+
[class^=pb_table] {
|
11
|
+
tbody {
|
12
|
+
[class^=pb_table_row_kit] {
|
13
|
+
@each $color_name, $color_value in $pb_table_row_kit_side_highlight_colors {
|
14
|
+
&[class*=_side_highlight_#{$color_name}] {
|
15
|
+
td {
|
16
|
+
&:first-child {
|
17
|
+
@include pb_table_row_kit_side_highlight($color_value);
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/* @flow */
|
2
|
-
import React from 'react'
|
2
|
+
import React, { forwardRef } from 'react'
|
3
3
|
import classnames from 'classnames'
|
4
4
|
import { Body, Caption } from '../'
|
5
5
|
import { globalProps } from '../utilities/globalProps.js'
|
@@ -27,7 +27,10 @@ type TextInputProps = {
|
|
27
27
|
children: Node,
|
28
28
|
}
|
29
29
|
|
30
|
-
const TextInput = (
|
30
|
+
const TextInput = (
|
31
|
+
props: TextInputProps,
|
32
|
+
ref: React.ElementRef<"input">
|
33
|
+
) => {
|
31
34
|
const {
|
32
35
|
aria = {},
|
33
36
|
className,
|
@@ -42,7 +45,7 @@ const TextInput = (props: TextInputProps) => {
|
|
42
45
|
placeholder,
|
43
46
|
required,
|
44
47
|
type = 'text',
|
45
|
-
value,
|
48
|
+
value = '',
|
46
49
|
children = null,
|
47
50
|
} = props
|
48
51
|
|
@@ -78,6 +81,7 @@ const TextInput = (props: TextInputProps) => {
|
|
78
81
|
name={name}
|
79
82
|
onChange={onChange}
|
80
83
|
placeholder={placeholder}
|
84
|
+
ref={ref}
|
81
85
|
required={required}
|
82
86
|
type={type}
|
83
87
|
value={value}
|
@@ -94,4 +98,4 @@ const TextInput = (props: TextInputProps) => {
|
|
94
98
|
)
|
95
99
|
}
|
96
100
|
|
97
|
-
export default TextInput
|
101
|
+
export default forwardRef(TextInput)
|
@@ -1 +1,2 @@
|
|
1
|
-
Area where user can enter small amount of text. Commonly used in forms
|
1
|
+
Area where user can enter small amount of text. Commonly used in forms.<br/>
|
2
|
+
<strong>Note:</strong> This kit does not handle form validation logic.
|
@@ -1,7 +1,11 @@
|
|
1
|
-
import React from 'react'
|
1
|
+
import React, { useState } from 'react'
|
2
2
|
import { TextInput } from '../../'
|
3
3
|
|
4
4
|
const TextInputCustom = () => {
|
5
|
+
const [name, setName] = useState('')
|
6
|
+
const handleUpdateName = ({ target }) => {
|
7
|
+
setName(target.value)
|
8
|
+
}
|
5
9
|
return (
|
6
10
|
<div>
|
7
11
|
<TextInput
|
@@ -9,8 +13,10 @@ const TextInputCustom = () => {
|
|
9
13
|
>
|
10
14
|
<input
|
11
15
|
name="custom-name"
|
16
|
+
onChange={handleUpdateName}
|
12
17
|
placeholder="custom-placeholder"
|
13
18
|
type="text"
|
19
|
+
value={name}
|
14
20
|
/>
|
15
21
|
</TextInput>
|
16
22
|
</div>
|
@@ -1,75 +1,97 @@
|
|
1
|
-
import React from 'react'
|
1
|
+
import React, { useState } from 'react'
|
2
2
|
import {
|
3
3
|
Caption,
|
4
4
|
TextInput,
|
5
5
|
Title,
|
6
6
|
} from '../../'
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
const TextInputDefault = () => {
|
9
|
+
const handleOnChangeFirstName = ({ target }) => {
|
10
|
+
setFirstName(target.value)
|
11
11
|
}
|
12
|
+
const ref = React.createRef()
|
12
13
|
|
13
|
-
|
14
|
-
|
14
|
+
const [firstName, setFirstName] = useState('')
|
15
|
+
const [formFields, setFormFields] = useState({
|
16
|
+
firstName: 'Jane',
|
17
|
+
lastName: 'Doe',
|
18
|
+
phone: '8888888888',
|
19
|
+
email: 'jane@doe.com',
|
20
|
+
zip: 55555,
|
21
|
+
})
|
15
22
|
|
16
|
-
|
17
|
-
|
18
|
-
|
23
|
+
const handleOnChangeFormField = ({ target }) => {
|
24
|
+
const { name, value } = target
|
25
|
+
setFormFields({ ...formFields, [name]: value })
|
26
|
+
}
|
19
27
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
28
|
+
return (
|
29
|
+
<div>
|
30
|
+
<TextInput
|
31
|
+
aria={{ label: 'hello' }}
|
32
|
+
data={{ say: 'hi', yell: 'go' }}
|
33
|
+
id="unique-id"
|
34
|
+
label="First Name"
|
35
|
+
name="firstName"
|
36
|
+
onChange={handleOnChangeFormField}
|
37
|
+
placeholder="Enter first name"
|
38
|
+
value={formFields.firstName}
|
39
|
+
/>
|
40
|
+
<TextInput
|
41
|
+
label="Last Name"
|
42
|
+
name="lastName"
|
43
|
+
onChange={handleOnChangeFormField}
|
44
|
+
placeholder="Enter last name"
|
45
|
+
value={formFields.lastName}
|
46
|
+
/>
|
47
|
+
<TextInput
|
48
|
+
label="Phone Number"
|
49
|
+
name="phone"
|
50
|
+
onChange={handleOnChangeFormField}
|
51
|
+
placeholder="Enter phone number"
|
52
|
+
type="phone"
|
53
|
+
value={formFields.phone}
|
54
|
+
/>
|
55
|
+
<TextInput
|
56
|
+
label="Email Address"
|
57
|
+
name="email"
|
58
|
+
onChange={handleOnChangeFormField}
|
59
|
+
placeholder="Enter email address"
|
60
|
+
type="email"
|
61
|
+
value={formFields.email}
|
62
|
+
/>
|
63
|
+
<TextInput
|
64
|
+
label="Zip Code"
|
65
|
+
name="zip"
|
66
|
+
onChange={handleOnChangeFormField}
|
67
|
+
placeholder="Enter zip code"
|
68
|
+
type="number"
|
69
|
+
value={formFields.zip}
|
70
|
+
/>
|
49
71
|
|
50
|
-
|
51
|
-
|
72
|
+
<br />
|
73
|
+
<br />
|
52
74
|
|
53
|
-
|
75
|
+
<Title>{'Event Handler Props'}</Title>
|
54
76
|
|
55
|
-
|
56
|
-
|
77
|
+
<br />
|
78
|
+
<Caption>{'onChange'}</Caption>
|
57
79
|
|
58
|
-
|
80
|
+
<br />
|
59
81
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
82
|
+
<TextInput
|
83
|
+
label="First Name"
|
84
|
+
onChange={handleOnChangeFirstName}
|
85
|
+
placeholder="Enter first name"
|
86
|
+
ref={ref}
|
87
|
+
value={firstName}
|
88
|
+
/>
|
66
89
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
}
|
90
|
+
<If condition={firstName !== ''}>
|
91
|
+
{`First name is: ${firstName}`}
|
92
|
+
</If>
|
93
|
+
</div>
|
94
|
+
)
|
73
95
|
}
|
74
96
|
|
75
97
|
export default TextInputDefault
|