playbook_ui 16.1.0.pre.alpha.play277814027 → 16.1.0.pre.rc.0
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/pb_advanced_table/Components/RegularTableView.tsx +2 -12
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +0 -4
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +0 -33
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.md +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +1 -51
- data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +0 -34
- data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +0 -19
- data/app/pb_kits/playbook/pb_background/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_background/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +5 -14
- data/app/pb_kits/playbook/pb_dialog/_dialog.scss +6 -8
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +0 -6
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +2 -37
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +0 -6
- data/app/pb_kits/playbook/pb_dropdown/docs/index.js +1 -4
- data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +2 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +0 -6
- data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +0 -94
- data/app/pb_kits/playbook/pb_dropdown/dropdown_container.rb +1 -5
- data/app/pb_kits/playbook/pb_dropdown/index.js +4 -59
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownContainer.tsx +0 -3
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +1 -2
- data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.tsx +1 -1
- data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +2 -2
- data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +9 -16
- data/app/pb_kits/playbook/pb_filter/filter.rb +2 -2
- data/app/pb_kits/playbook/pb_form/docs/_form_with_required_indicator.html.erb +1 -5
- data/app/pb_kits/playbook/pb_form/pb_form_validation.js +2 -9
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +5 -5
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +4 -4
- data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +0 -4
- data/app/pb_kits/playbook/pb_icon/icon.rb +1 -6
- data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +33 -35
- data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.jsx +1 -1
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.md +1 -1
- data/app/pb_kits/playbook/pb_multiple_users/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_multiple_users/multiple_users.html.erb +7 -51
- data/app/pb_kits/playbook/pb_multiple_users/multiple_users.rb +0 -1
- data/app/pb_kits/playbook/pb_passphrase/_passphrase.tsx +5 -20
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx +0 -1
- data/app/pb_kits/playbook/pb_passphrase/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_passphrase/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_passphrase/passphrase.rb +0 -2
- data/app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx +1 -30
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +0 -3
- data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +0 -3
- data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.test.js +3 -34
- data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.tsx +6 -33
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +0 -3
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +0 -2
- data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.rb +0 -5
- data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.test.js +18 -33
- data/app/pb_kits/playbook/pb_textarea/_textarea.tsx +11 -39
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.html.erb +3 -3
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.jsx +0 -3
- data/app/pb_kits/playbook/pb_textarea/docs/example.yml +1 -4
- data/app/pb_kits/playbook/pb_textarea/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_textarea/index.ts +5 -12
- data/app/pb_kits/playbook/pb_textarea/textarea.html.erb +14 -30
- data/app/pb_kits/playbook/pb_textarea/textarea.rb +0 -36
- data/app/pb_kits/playbook/pb_textarea/textarea.test.js +1 -18
- data/app/pb_kits/playbook/pb_time_picker/_time_picker.tsx +11 -97
- data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_on_handler.jsx +2 -5
- data/app/pb_kits/playbook/pb_time_picker/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_time_picker/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_time_picker/time_picker.rb +0 -3
- data/app/pb_kits/playbook/pb_time_picker/time_picker.test.jsx +1 -47
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +1 -24
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +1 -2
- data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -4
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.html.erb +1 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.jsx +1 -1
- data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +0 -4
- data/dist/chunks/{_pb_line_graph-BgKF_zz1.js → _pb_line_graph-hxi01lk7.js} +1 -1
- data/dist/chunks/_typeahead-BgLnlhzP.js +1 -0
- data/dist/chunks/{globalProps-BhVYCqRf.js → globalProps-DgYwLYNx.js} +1 -1
- data/dist/chunks/{lib-DD34ZrWL.js → lib-NLxTo8OB.js} +1 -1
- data/dist/chunks/vendor.js +3 -3
- data/dist/menu.yml +2 -2
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/align_content.rb +3 -13
- data/lib/playbook/align_items.rb +3 -13
- data/lib/playbook/align_self.rb +3 -13
- data/lib/playbook/display.rb +0 -5
- data/lib/playbook/flex.rb +3 -13
- data/lib/playbook/flex_direction.rb +3 -13
- data/lib/playbook/flex_grow.rb +3 -13
- data/lib/playbook/flex_shrink.rb +3 -13
- data/lib/playbook/flex_wrap.rb +3 -13
- data/lib/playbook/forms/builder/phone_number_field.rb +0 -9
- data/lib/playbook/justify_content.rb +3 -13
- data/lib/playbook/justify_self.rb +3 -13
- data/lib/playbook/order.rb +3 -13
- data/lib/playbook/spacing.rb +9 -39
- data/lib/playbook/text_align.rb +3 -13
- data/lib/playbook/truncate.rb +1 -1
- data/lib/playbook/version.rb +2 -2
- data/lib/playbook/vertical_align.rb +3 -13
- data/lib/playbook/z_index.rb +0 -5
- metadata +6 -72
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_custom.jsx +0 -71
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_custom.md +0 -4
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading_rails.html.erb +0 -64
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading_rails.md +0 -18
- data/app/pb_kits/playbook/pb_background/docs/_background_responsive.jsx +0 -30
- data/app/pb_kits/playbook/pb_background/docs/_background_responsive.md +0 -1
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_rails.md +0 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_react.md +0 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.html.erb +0 -52
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.jsx +0 -72
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.md +0 -5
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height.jsx +0 -33
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.html.erb +0 -20
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.md +0 -8
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_react.md +0 -8
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.html.erb +0 -9
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.jsx +0 -33
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.md +0 -3
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_input_display.html.erb +0 -74
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_input_display.jsx +0 -87
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_input_display.md +0 -3
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.html.erb +0 -30
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.html.erb +0 -7
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.jsx +0 -24
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.html.erb +0 -5
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.jsx +0 -14
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_required_indicator.jsx +0 -35
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.html.erb +0 -10
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.jsx +0 -21
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_table/docs/_sections.yml +0 -68
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.md +0 -1
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_input_options.html.erb +0 -39
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_input_options.md +0 -3
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_required_indicator.html.erb +0 -5
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_required_indicator.jsx +0 -25
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.html.erb +0 -6
- data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.jsx +0 -16
- data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.md +0 -3
- data/app/pb_kits/playbook/utilities/test/globalProps/borderRadius.test.js +0 -33
- data/app/pb_kits/playbook/utilities/test/globalProps/bottom.test.js +0 -60
- data/app/pb_kits/playbook/utilities/test/globalProps/cursor.test.js +0 -42
- data/app/pb_kits/playbook/utilities/test/globalProps/dark.test.js +0 -33
- data/app/pb_kits/playbook/utilities/test/globalProps/gap.test.js +0 -87
- data/app/pb_kits/playbook/utilities/test/globalProps/globalProps.integration.test.js +0 -936
- data/app/pb_kits/playbook/utilities/test/globalProps/height.test.js +0 -68
- data/app/pb_kits/playbook/utilities/test/globalProps/htmlOptions.test.js +0 -510
- data/app/pb_kits/playbook/utilities/test/globalProps/left.test.js +0 -60
- data/app/pb_kits/playbook/utilities/test/globalProps/lineHeight.test.js +0 -33
- data/app/pb_kits/playbook/utilities/test/globalProps/margin.test.js +0 -95
- data/app/pb_kits/playbook/utilities/test/globalProps/numberSpacing.test.js +0 -33
- data/app/pb_kits/playbook/utilities/test/globalProps/overflow.test.js +0 -68
- data/app/pb_kits/playbook/utilities/test/globalProps/padding.test.js +0 -95
- data/app/pb_kits/playbook/utilities/test/globalProps/position.test.js +0 -33
- data/app/pb_kits/playbook/utilities/test/globalProps/right.test.js +0 -60
- data/app/pb_kits/playbook/utilities/test/globalProps/shadow.test.js +0 -33
- data/app/pb_kits/playbook/utilities/test/globalProps/textAlign.test.js +0 -41
- data/app/pb_kits/playbook/utilities/test/globalProps/top.test.js +0 -60
- data/app/pb_kits/playbook/utilities/test/globalProps/verticalAlign.test.js +0 -40
- data/app/pb_kits/playbook/utilities/test/globalProps/width.test.js +0 -66
- data/app/pb_kits/playbook/utilities/test/globalProps/zIndex.test.js +0 -50
- data/dist/chunks/_typeahead-CWA5wlah.js +0 -1
|
@@ -13,7 +13,6 @@ import Body from '../pb_body/_body'
|
|
|
13
13
|
import Caption from '../pb_caption/_caption'
|
|
14
14
|
import Flex from '../pb_flex/_flex'
|
|
15
15
|
import FlexItem from '../pb_flex/_flex_item'
|
|
16
|
-
import colors from '../tokens/exports/_colors.module.scss'
|
|
17
16
|
|
|
18
17
|
import { stripEmojisForPaste, applyEmojiMask } from '../utilities/emojiMask'
|
|
19
18
|
|
|
@@ -37,7 +36,6 @@ type TextareaProps = {
|
|
|
37
36
|
value?: string,
|
|
38
37
|
name?: string,
|
|
39
38
|
required?: boolean,
|
|
40
|
-
requiredIndicator?: boolean,
|
|
41
39
|
rows?: number,
|
|
42
40
|
resize: "none" | "both" | "horizontal" | "vertical" | "auto",
|
|
43
41
|
onChange?: InputCallback<HTMLTextAreaElement>,
|
|
@@ -52,7 +50,6 @@ const Textarea = ({
|
|
|
52
50
|
disabled,
|
|
53
51
|
emojiMask = false,
|
|
54
52
|
htmlOptions = {},
|
|
55
|
-
id,
|
|
56
53
|
inline = false,
|
|
57
54
|
resize = 'none',
|
|
58
55
|
error,
|
|
@@ -63,7 +60,6 @@ const Textarea = ({
|
|
|
63
60
|
onChange = () => {},
|
|
64
61
|
placeholder,
|
|
65
62
|
required,
|
|
66
|
-
requiredIndicator = false,
|
|
67
63
|
rows = 4,
|
|
68
64
|
value,
|
|
69
65
|
...props
|
|
@@ -88,7 +84,7 @@ const Textarea = ({
|
|
|
88
84
|
if (emojiMask) {
|
|
89
85
|
const pastedText = e.clipboardData.getData('text')
|
|
90
86
|
const filteredText = stripEmojisForPaste(pastedText)
|
|
91
|
-
|
|
87
|
+
|
|
92
88
|
if (pastedText !== filteredText) {
|
|
93
89
|
e.preventDefault()
|
|
94
90
|
const textarea = e.currentTarget
|
|
@@ -97,10 +93,10 @@ const Textarea = ({
|
|
|
97
93
|
const currentValue = textarea.value
|
|
98
94
|
const newValue = currentValue.slice(0, start) + filteredText + currentValue.slice(end)
|
|
99
95
|
const newCursorPosition = start + filteredText.length
|
|
100
|
-
|
|
96
|
+
|
|
101
97
|
textarea.value = newValue
|
|
102
98
|
textarea.selectionStart = textarea.selectionEnd = newCursorPosition
|
|
103
|
-
|
|
99
|
+
|
|
104
100
|
onChange({ ...e, target: textarea, currentTarget: textarea } as unknown as ChangeEvent<HTMLTextAreaElement>)
|
|
105
101
|
}
|
|
106
102
|
}
|
|
@@ -120,7 +116,6 @@ const Textarea = ({
|
|
|
120
116
|
const characterCounter = () => {
|
|
121
117
|
return maxCharacters && characterCount ? `${checkIfZero(characterCount)} / ${maxCharacters}` : `${checkIfZero(characterCount)}`
|
|
122
118
|
}
|
|
123
|
-
const errorId = error ? `${id}-error` : undefined
|
|
124
119
|
|
|
125
120
|
return (
|
|
126
121
|
<div
|
|
@@ -129,27 +124,10 @@ const Textarea = ({
|
|
|
129
124
|
{...htmlProps}
|
|
130
125
|
className={classes}
|
|
131
126
|
>
|
|
132
|
-
|
|
133
|
-
<label htmlFor={id}>
|
|
134
|
-
{
|
|
135
|
-
requiredIndicator ? (
|
|
136
|
-
<Caption className="pb_text_input_kit_label">
|
|
137
|
-
{label} <span style={{ color: `${colors.error}` }}>*</span>
|
|
138
|
-
</Caption>
|
|
139
|
-
) : (
|
|
140
|
-
<Caption className="pb_text_input_kit_label"
|
|
141
|
-
text={label}
|
|
142
|
-
/>
|
|
143
|
-
)
|
|
144
|
-
}
|
|
145
|
-
</label>
|
|
146
|
-
)}
|
|
127
|
+
<Caption text={label} />
|
|
147
128
|
{children || (
|
|
148
129
|
<textarea
|
|
149
|
-
aria-describedby={errorId}
|
|
150
|
-
aria-invalid={!!error}
|
|
151
130
|
disabled={disabled}
|
|
152
|
-
id={id}
|
|
153
131
|
name={name}
|
|
154
132
|
onChange={emojiMask ? handleChange : onChange}
|
|
155
133
|
onPaste={emojiMask ? handlePaste : undefined}
|
|
@@ -165,22 +143,19 @@ const Textarea = ({
|
|
|
165
143
|
{error ? (
|
|
166
144
|
<>
|
|
167
145
|
{characterCount ? (
|
|
168
|
-
<Flex
|
|
169
|
-
spacing="between"
|
|
146
|
+
<Flex
|
|
147
|
+
spacing="between"
|
|
170
148
|
vertical="center"
|
|
171
149
|
>
|
|
172
150
|
<FlexItem>
|
|
173
|
-
<Body
|
|
174
|
-
aria={{ atomic: "true", live: "polite" }}
|
|
175
|
-
htmlOptions={{ role: "alert" }}
|
|
176
|
-
id={errorId}
|
|
151
|
+
<Body
|
|
177
152
|
margin="none"
|
|
178
153
|
status="negative"
|
|
179
|
-
text={error}
|
|
154
|
+
text={error}
|
|
180
155
|
/>
|
|
181
156
|
</FlexItem>
|
|
182
157
|
<FlexItem>
|
|
183
|
-
<Caption
|
|
158
|
+
<Caption
|
|
184
159
|
margin="none"
|
|
185
160
|
size="xs"
|
|
186
161
|
text={characterCounter()}
|
|
@@ -188,10 +163,7 @@ const Textarea = ({
|
|
|
188
163
|
</FlexItem>
|
|
189
164
|
</Flex>
|
|
190
165
|
) : (
|
|
191
|
-
<Body
|
|
192
|
-
aria={{ atomic: "true", live: "polite" }}
|
|
193
|
-
htmlOptions={{ role: "alert" }}
|
|
194
|
-
id={errorId}
|
|
166
|
+
<Body
|
|
195
167
|
status="negative"
|
|
196
168
|
text={error}
|
|
197
169
|
/>
|
|
@@ -199,7 +171,7 @@ const Textarea = ({
|
|
|
199
171
|
</>
|
|
200
172
|
) : (
|
|
201
173
|
noCount && (
|
|
202
|
-
<Caption
|
|
174
|
+
<Caption
|
|
203
175
|
margin="none"
|
|
204
176
|
size="xs"
|
|
205
177
|
text={characterCounter()}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
<%= pb_rails("textarea", props: { label: "Label", rows: 4
|
|
1
|
+
<%= pb_rails("textarea", props: { label: "Label", rows: 4}) %>
|
|
2
2
|
|
|
3
3
|
<br/>
|
|
4
4
|
|
|
5
|
-
<%= pb_rails("textarea", props: { label: "Label", placeholder: "Placeholder text"
|
|
5
|
+
<%= pb_rails("textarea", props: { label: "Label", placeholder: "Placeholder text" }) %>
|
|
6
6
|
|
|
7
7
|
<br/>
|
|
8
8
|
|
|
9
|
-
<%= pb_rails("textarea", props: { label: "Label", name: "comment", value: "Default value text"
|
|
9
|
+
<%= pb_rails("textarea", props: { label: "Label", name: "comment", value: "Default value text" }) %>
|
|
@@ -13,7 +13,6 @@ const TextareaDefault = (props) => {
|
|
|
13
13
|
label="Label"
|
|
14
14
|
rows={4}
|
|
15
15
|
{...props}
|
|
16
|
-
id="default-example-1"
|
|
17
16
|
/>
|
|
18
17
|
|
|
19
18
|
<br />
|
|
@@ -22,7 +21,6 @@ const TextareaDefault = (props) => {
|
|
|
22
21
|
label="Label"
|
|
23
22
|
placeholder="Placeholder text"
|
|
24
23
|
{...props}
|
|
25
|
-
id="default-example-2"
|
|
26
24
|
/>
|
|
27
25
|
|
|
28
26
|
<br />
|
|
@@ -34,7 +32,6 @@ const TextareaDefault = (props) => {
|
|
|
34
32
|
placeholder="Placeholder text"
|
|
35
33
|
value={value}
|
|
36
34
|
{...props}
|
|
37
|
-
id="default-example-3"
|
|
38
35
|
/>
|
|
39
36
|
|
|
40
37
|
</div>
|
|
@@ -8,8 +8,6 @@ examples:
|
|
|
8
8
|
- textarea_character_counter: Character Counter
|
|
9
9
|
- textarea_inline: Inline
|
|
10
10
|
- textarea_emoji_mask: Emoji Mask
|
|
11
|
-
- textarea_required_indicator: Required Indicator
|
|
12
|
-
- textarea_input_options: Input Options
|
|
13
11
|
|
|
14
12
|
react:
|
|
15
13
|
- textarea_default: Default
|
|
@@ -19,9 +17,8 @@ examples:
|
|
|
19
17
|
- textarea_character_counter: Character Counter
|
|
20
18
|
- textarea_inline: Inline
|
|
21
19
|
- textarea_emoji_mask: Emoji Mask
|
|
22
|
-
- textarea_required_indicator: Required Indicator
|
|
23
20
|
|
|
24
21
|
swift:
|
|
25
22
|
- textarea_default_swift: Default
|
|
26
23
|
- textarea_error_swift: Textarea w/ Error
|
|
27
|
-
- textarea_props_swift: ""
|
|
24
|
+
- textarea_props_swift: ""
|
|
@@ -5,4 +5,3 @@ export { default as TextareaError } from './_textarea_error.jsx'
|
|
|
5
5
|
export { default as TextareaCharacterCounter } from './_textarea_character_counter.jsx'
|
|
6
6
|
export { default as TextareaInline } from './_textarea_inline.jsx'
|
|
7
7
|
export { default as TextareaEmojiMask } from './_textarea_emoji_mask.jsx'
|
|
8
|
-
export { default as TextareaRequiredIndicator } from './_textarea_required_indicator.jsx'
|
|
@@ -11,21 +11,18 @@ export default class PbTextarea extends PbEnhancedElement {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
hasEmojiMask(): boolean {
|
|
14
|
-
if (!this.element) return false
|
|
15
14
|
return (this.element as HTMLElement).dataset.pbEmojiMask === "true"
|
|
16
15
|
}
|
|
17
16
|
|
|
18
|
-
onInput
|
|
19
|
-
if (!this.element) return
|
|
20
|
-
|
|
17
|
+
onInput(): void {
|
|
21
18
|
if ((this.element as HTMLElement).closest('.resize_auto')) {
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
this.style.height = 'auto'
|
|
20
|
+
this.style.height = (this.scrollHeight) + 'px'
|
|
24
21
|
}
|
|
25
22
|
}
|
|
26
23
|
|
|
27
24
|
handleEmojiInput = (): void => {
|
|
28
|
-
if (!this.
|
|
25
|
+
if (!this.hasEmojiMask()) return
|
|
29
26
|
|
|
30
27
|
if (this.skipNextEmojiFilter) {
|
|
31
28
|
this.skipNextEmojiFilter = false
|
|
@@ -36,7 +33,7 @@ export default class PbTextarea extends PbEnhancedElement {
|
|
|
36
33
|
}
|
|
37
34
|
|
|
38
35
|
handleEmojiPaste = (event: ClipboardEvent): void => {
|
|
39
|
-
if (!this.
|
|
36
|
+
if (!this.hasEmojiMask()) return
|
|
40
37
|
|
|
41
38
|
const pastedText = event.clipboardData?.getData('text') || ''
|
|
42
39
|
const filteredText = stripEmojisForPaste(pastedText)
|
|
@@ -60,8 +57,6 @@ export default class PbTextarea extends PbEnhancedElement {
|
|
|
60
57
|
}
|
|
61
58
|
|
|
62
59
|
connect(): void {
|
|
63
|
-
if (!this.element) return
|
|
64
|
-
|
|
65
60
|
if ((this.element as HTMLElement).closest('.resize_auto')) {
|
|
66
61
|
this.element.setAttribute('style', 'height:' + (this.element as HTMLTextAreaElement).scrollHeight + 'px;overflow-y:hidden;')
|
|
67
62
|
this.element.addEventListener('input', this.onInput, false)
|
|
@@ -74,8 +69,6 @@ export default class PbTextarea extends PbEnhancedElement {
|
|
|
74
69
|
}
|
|
75
70
|
|
|
76
71
|
disconnect(): void {
|
|
77
|
-
if (!this.element) return
|
|
78
|
-
|
|
79
72
|
this.element.removeEventListener('input', this.onInput, false)
|
|
80
73
|
this.element.removeEventListener('input', this.handleEmojiInput, false)
|
|
81
74
|
this.element.removeEventListener('paste', this.handleEmojiPaste as EventListener, false)
|
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
<%= pb_content_tag
|
|
1
|
+
<%= pb_content_tag do %>
|
|
2
2
|
<% if object.label.present? %>
|
|
3
|
-
|
|
4
|
-
<% if object.required_indicator %>
|
|
5
|
-
<%= pb_rails("caption", props: { text: object.label, dark: object.dark }) do %>
|
|
6
|
-
<%= object.label %><span style="color: #DA0014;"> *</span>
|
|
7
|
-
<% end %>
|
|
8
|
-
<% else %>
|
|
9
|
-
<%= pb_rails("caption", props: {text: object.label, dark: object.dark}) %>
|
|
10
|
-
<% end %>
|
|
11
|
-
</label>
|
|
3
|
+
<%= pb_rails("caption", props: {text: object.label, dark: object.dark}) %>
|
|
12
4
|
<% end %>
|
|
13
5
|
<% if content.present? %>
|
|
14
6
|
<%= content %>
|
|
@@ -16,36 +8,28 @@
|
|
|
16
8
|
<%= pb_rails("body", props: { dark: object.dark, status: "negative", text: object.error }) %>
|
|
17
9
|
<% end %>
|
|
18
10
|
<% else %>
|
|
19
|
-
<%=
|
|
20
|
-
object
|
|
21
|
-
|
|
22
|
-
object.
|
|
11
|
+
<%= text_area(
|
|
12
|
+
:object,
|
|
13
|
+
:method,
|
|
14
|
+
:data => object.textarea_options[:data],
|
|
15
|
+
:max_characters => object.max_characters,
|
|
16
|
+
:name => object.name,
|
|
17
|
+
:onkeyup => object.onkeyup,
|
|
18
|
+
:placeholder => object.placeholder,
|
|
19
|
+
:rows => object.rows,
|
|
20
|
+
:value => object.value) %>
|
|
23
21
|
<% if object.error %>
|
|
24
22
|
<% if object.character_count %>
|
|
25
23
|
<%= pb_rails("flex", props: { spacing: "between", vertical: "center" }) do %>
|
|
26
24
|
<%= pb_rails("flex/flex_item") do %>
|
|
27
|
-
|
|
28
|
-
dark: object.dark,
|
|
29
|
-
status: "negative",
|
|
30
|
-
text: object.error,
|
|
31
|
-
id: object.error_id,
|
|
32
|
-
aria: { atomic: "true", live: "polite" },
|
|
33
|
-
html_options: { role: "alert" },
|
|
34
|
-
}) %>
|
|
25
|
+
<%= pb_rails("body", props: { dark: object.dark, status: "negative", text: object.error }) %>
|
|
35
26
|
<% end %>
|
|
36
27
|
<%= pb_rails("flex/flex_item") do %>
|
|
37
28
|
<%= pb_rails("caption", props: { margin: "none", size: "xs", text: object.character_counter }) %>
|
|
38
29
|
<% end %>
|
|
39
30
|
<% end %>
|
|
40
31
|
<% else %>
|
|
41
|
-
<%= pb_rails("body", props: {
|
|
42
|
-
dark: object.dark,
|
|
43
|
-
status: "negative",
|
|
44
|
-
text: object.error,
|
|
45
|
-
id: object.error_id,
|
|
46
|
-
aria: { atomic: "true", live: "polite" },
|
|
47
|
-
html_options: { role: "alert" },
|
|
48
|
-
}) %>
|
|
32
|
+
<%= pb_rails("body", props: { dark: object.dark, status: "negative", text: object.error }) %>
|
|
49
33
|
<% end %>
|
|
50
34
|
<% else %>
|
|
51
35
|
<%= pb_rails("caption", props: { margin: "none", size: "xs", text: object.character_counter }) %>
|
|
@@ -8,8 +8,6 @@ module Playbook
|
|
|
8
8
|
prop :error
|
|
9
9
|
prop :inline, type: Playbook::Props::Boolean,
|
|
10
10
|
default: false
|
|
11
|
-
prop :input_options, type: Playbook::Props::HashProp,
|
|
12
|
-
default: {}
|
|
13
11
|
prop :label
|
|
14
12
|
prop :method
|
|
15
13
|
prop :name
|
|
@@ -23,8 +21,6 @@ module Playbook
|
|
|
23
21
|
prop :character_count
|
|
24
22
|
prop :onkeyup
|
|
25
23
|
prop :max_characters
|
|
26
|
-
prop :required_indicator, type: Playbook::Props::Boolean,
|
|
27
|
-
default: false
|
|
28
24
|
|
|
29
25
|
def classname
|
|
30
26
|
generate_classname("pb_textarea_kit") + error_class + resize_class + inline_class
|
|
@@ -40,38 +36,6 @@ module Playbook
|
|
|
40
36
|
}
|
|
41
37
|
end
|
|
42
38
|
|
|
43
|
-
def all_textarea_attributes
|
|
44
|
-
# Merge data attributes: emoji_mask data + input_options data
|
|
45
|
-
data_attrs = textarea_options[:data] || {}
|
|
46
|
-
input_data = input_options[:data] || {}
|
|
47
|
-
merged_data = data_attrs.merge(input_data)
|
|
48
|
-
|
|
49
|
-
base_attributes = {
|
|
50
|
-
'aria-describedby': error.present? ? error_id : nil,
|
|
51
|
-
'aria-invalid': error.present?,
|
|
52
|
-
id: input_options[:id] || id || "object_method",
|
|
53
|
-
max_characters: max_characters,
|
|
54
|
-
name: name,
|
|
55
|
-
onkeyup: onkeyup,
|
|
56
|
-
placeholder: placeholder,
|
|
57
|
-
rows: rows,
|
|
58
|
-
value: value,
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
# Merge input_options (excluding data to handle separately)
|
|
62
|
-
input_options_without_data = input_options.except(:data)
|
|
63
|
-
result = base_attributes.merge(input_options_without_data)
|
|
64
|
-
|
|
65
|
-
# Add merged data if present (input_options data takes precedence over emoji_mask data)
|
|
66
|
-
result[:data] = merged_data unless merged_data.empty?
|
|
67
|
-
|
|
68
|
-
result
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def error_id
|
|
72
|
-
"#{id}-error" if error.present?
|
|
73
|
-
end
|
|
74
|
-
|
|
75
39
|
private
|
|
76
40
|
|
|
77
41
|
def error_class
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useState } from "react"
|
|
2
|
-
import { render, screen, fireEvent
|
|
2
|
+
import { render, screen, fireEvent } from "../utilities/test-utils"
|
|
3
3
|
|
|
4
4
|
import Textarea from "./_textarea"
|
|
5
5
|
|
|
@@ -265,21 +265,4 @@ describe("Textarea Emoji Mask", () => {
|
|
|
265
265
|
fireEvent.change(textarea, { target: { value: 'àëǒüñ' } })
|
|
266
266
|
expect(textarea.value).toBe('àëǒüñ')
|
|
267
267
|
})
|
|
268
|
-
|
|
269
|
-
test('renders required indicator asterisk when requiredIndicator is true', () => {
|
|
270
|
-
render(
|
|
271
|
-
<Textarea
|
|
272
|
-
data={{ testid: testId }}
|
|
273
|
-
label="Name"
|
|
274
|
-
required
|
|
275
|
-
requiredIndicator
|
|
276
|
-
/>
|
|
277
|
-
)
|
|
278
|
-
|
|
279
|
-
const kit = screen.getByTestId(testId)
|
|
280
|
-
const label = within(kit).getByText(/Name/)
|
|
281
|
-
|
|
282
|
-
expect(label).toBeInTheDocument()
|
|
283
|
-
expect(kit).toHaveTextContent('*')
|
|
284
|
-
})
|
|
285
268
|
})
|
|
@@ -5,12 +5,12 @@ import { globalProps, GlobalProps } from '../utilities/globalProps'
|
|
|
5
5
|
import Caption from '../pb_caption/_caption'
|
|
6
6
|
import SelectableCard from '../pb_selectable_card/_selectable_card'
|
|
7
7
|
import TextInput from '../pb_text_input/_text_input'
|
|
8
|
-
import colors from '../tokens/exports/_colors.module.scss'
|
|
9
8
|
|
|
10
9
|
import {
|
|
11
10
|
parseTime,
|
|
12
11
|
parseTimeToMinutes,
|
|
13
12
|
isTimeInRange as isTimeInRangeHelper,
|
|
13
|
+
isHourDisabled as isHourDisabledHelper,
|
|
14
14
|
isAnyAMTimeValid as isAnyAMTimeValidHelper,
|
|
15
15
|
isAnyPMTimeValid as isAnyPMTimeValidHelper,
|
|
16
16
|
getDisplayTime,
|
|
@@ -48,7 +48,6 @@ type TimePickerProps = {
|
|
|
48
48
|
onChange?: (time: string) => void,
|
|
49
49
|
onClose?: (time: string) => void,
|
|
50
50
|
required?: boolean,
|
|
51
|
-
requiredIndicator?: boolean,
|
|
52
51
|
showTimezone?: boolean,
|
|
53
52
|
timeFormat?: TimeFormat,
|
|
54
53
|
validationMessage?: string,
|
|
@@ -73,7 +72,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
73
72
|
onChange,
|
|
74
73
|
onClose,
|
|
75
74
|
required = false,
|
|
76
|
-
requiredIndicator = false,
|
|
77
75
|
showTimezone = false,
|
|
78
76
|
timeFormat = 'AMPM',
|
|
79
77
|
validationMessage,
|
|
@@ -116,6 +114,10 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
116
114
|
return isTimeInRangeHelper(h, m, mer, timeFormat, minTimeMinutes, maxTimeMinutes)
|
|
117
115
|
}
|
|
118
116
|
|
|
117
|
+
const isHourDisabled = (h: number, mer?: 'AM' | 'PM'): boolean => {
|
|
118
|
+
return isHourDisabledHelper(h, mer, timeFormat, minTimeMinutes, maxTimeMinutes)
|
|
119
|
+
}
|
|
120
|
+
|
|
119
121
|
const isCurrentTimeValid = (h: number, m: number, mer: 'AM' | 'PM'): boolean => {
|
|
120
122
|
return isTimeInRange(h, m, mer)
|
|
121
123
|
}
|
|
@@ -185,28 +187,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
185
187
|
const [showHourDropdown, setShowHourDropdown] = useState(false)
|
|
186
188
|
const [showMinuteDropdown, setShowMinuteDropdown] = useState(false)
|
|
187
189
|
|
|
188
|
-
// Clicking the clock add-on opens the dropdown
|
|
189
|
-
useEffect(() => {
|
|
190
|
-
if (disabled) return
|
|
191
|
-
|
|
192
|
-
const addOnCard = document.querySelector(`#${uniqueId}-input`)?.closest('.text_input_wrapper_add_on')?.querySelector('.add-on-card') as HTMLElement
|
|
193
|
-
|
|
194
|
-
if (addOnCard) {
|
|
195
|
-
const handleAddOnClick = (e: Event) => {
|
|
196
|
-
e.preventDefault()
|
|
197
|
-
e.stopPropagation()
|
|
198
|
-
setShowDropdown(true)
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
addOnCard.addEventListener('click', handleAddOnClick)
|
|
202
|
-
addOnCard.style.cursor = 'pointer'
|
|
203
|
-
|
|
204
|
-
return () => {
|
|
205
|
-
addOnCard.removeEventListener('click', handleAddOnClick)
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}, [uniqueId, disabled, setShowDropdown])
|
|
209
|
-
|
|
210
190
|
// Input dropdown scrolling
|
|
211
191
|
const scrollDropdownToSelected = (dropdownRef: React.RefObject<HTMLDivElement>) => {
|
|
212
192
|
if (dropdownRef.current) {
|
|
@@ -389,10 +369,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
389
369
|
}
|
|
390
370
|
}
|
|
391
371
|
|
|
392
|
-
const handleHourFocus = (e: React.FocusEvent<HTMLInputElement>) => {
|
|
393
|
-
e.target.select()
|
|
394
|
-
}
|
|
395
|
-
|
|
396
372
|
const handleHourBlur = () => {
|
|
397
373
|
const result = normalizeHourOnBlur(hourInputValue, hour, timeFormat)
|
|
398
374
|
setHour(result.hour)
|
|
@@ -417,10 +393,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
417
393
|
}
|
|
418
394
|
}
|
|
419
395
|
|
|
420
|
-
const handleMinuteFocus = (e: React.FocusEvent<HTMLInputElement>) => {
|
|
421
|
-
e.target.select()
|
|
422
|
-
}
|
|
423
|
-
|
|
424
396
|
const handleMinuteBlur = () => {
|
|
425
397
|
const result = normalizeMinuteOnBlur(minuteInputValue, minute)
|
|
426
398
|
setMinute(result.minute)
|
|
@@ -510,30 +482,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
510
482
|
e.preventDefault()
|
|
511
483
|
setShowHourDropdown(false)
|
|
512
484
|
closeDropdown()
|
|
513
|
-
} else if (e.key === 'ArrowDown') {
|
|
514
|
-
// ArrowDown increases value (like scrolling down a list)
|
|
515
|
-
e.preventDefault()
|
|
516
|
-
const { maxHour, minHour } = getHourConstraints(timeFormat)
|
|
517
|
-
const newHour = hour >= maxHour ? minHour : hour + 1
|
|
518
|
-
setHour(newHour)
|
|
519
|
-
setHourInputValue(timeFormat === '24hour' ? newHour.toString().padStart(2, '0') : newHour.toString())
|
|
520
|
-
setHasSelectedTime(true)
|
|
521
|
-
const timeString = get24HourTime(newHour, minute, meridiem, timeFormat)
|
|
522
|
-
if (onChange) {
|
|
523
|
-
onChange(timeString)
|
|
524
|
-
}
|
|
525
|
-
} else if (e.key === 'ArrowUp') {
|
|
526
|
-
// ArrowUp decreases value (like scrolling up a list)
|
|
527
|
-
e.preventDefault()
|
|
528
|
-
const { maxHour, minHour } = getHourConstraints(timeFormat)
|
|
529
|
-
const newHour = hour <= minHour ? maxHour : hour - 1
|
|
530
|
-
setHour(newHour)
|
|
531
|
-
setHourInputValue(timeFormat === '24hour' ? newHour.toString().padStart(2, '0') : newHour.toString())
|
|
532
|
-
setHasSelectedTime(true)
|
|
533
|
-
const timeString = get24HourTime(newHour, minute, meridiem, timeFormat)
|
|
534
|
-
if (onChange) {
|
|
535
|
-
onChange(timeString)
|
|
536
|
-
}
|
|
537
485
|
}
|
|
538
486
|
}
|
|
539
487
|
|
|
@@ -565,28 +513,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
565
513
|
e.preventDefault()
|
|
566
514
|
setShowMinuteDropdown(false)
|
|
567
515
|
closeDropdown()
|
|
568
|
-
} else if (e.key === 'ArrowDown') {
|
|
569
|
-
// ArrowDown increases value (like scrolling down a list)
|
|
570
|
-
e.preventDefault()
|
|
571
|
-
const newMinute = minute >= 59 ? 0 : minute + 1
|
|
572
|
-
setMinute(newMinute)
|
|
573
|
-
setMinuteInputValue(newMinute.toString().padStart(2, '0'))
|
|
574
|
-
setHasSelectedTime(true)
|
|
575
|
-
const timeString = get24HourTime(hour, newMinute, meridiem, timeFormat)
|
|
576
|
-
if (onChange) {
|
|
577
|
-
onChange(timeString)
|
|
578
|
-
}
|
|
579
|
-
} else if (e.key === 'ArrowUp') {
|
|
580
|
-
// ArrowUp decreases value (like scrolling up a list)
|
|
581
|
-
e.preventDefault()
|
|
582
|
-
const newMinute = minute <= 0 ? 59 : minute - 1
|
|
583
|
-
setMinute(newMinute)
|
|
584
|
-
setMinuteInputValue(newMinute.toString().padStart(2, '0'))
|
|
585
|
-
setHasSelectedTime(true)
|
|
586
|
-
const timeString = get24HourTime(hour, newMinute, meridiem, timeFormat)
|
|
587
|
-
if (onChange) {
|
|
588
|
-
onChange(timeString)
|
|
589
|
-
}
|
|
590
516
|
}
|
|
591
517
|
}
|
|
592
518
|
|
|
@@ -699,22 +625,12 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
699
625
|
>
|
|
700
626
|
{label && (
|
|
701
627
|
<label htmlFor={`${uniqueId}-input`}>
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
{label} <span style={{ color: `${colors.error}` }}>{'*'}</span>
|
|
709
|
-
</Caption>
|
|
710
|
-
) : (
|
|
711
|
-
<Caption
|
|
712
|
-
className="pb_time_picker_kit_label"
|
|
713
|
-
marginBottom="xs"
|
|
714
|
-
size="md"
|
|
715
|
-
text={label}
|
|
716
|
-
/>
|
|
717
|
-
)}
|
|
628
|
+
<Caption
|
|
629
|
+
className="pb_time_picker_kit_label"
|
|
630
|
+
marginBottom="xs"
|
|
631
|
+
size="md"
|
|
632
|
+
text={label}
|
|
633
|
+
/>
|
|
718
634
|
</label>
|
|
719
635
|
)}
|
|
720
636
|
<div className="time_picker_wrapper">
|
|
@@ -773,7 +689,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
773
689
|
onBlur={handleHourBlur}
|
|
774
690
|
onChange={handleHourChange}
|
|
775
691
|
onClick={() => { setShowHourDropdown(!showHourDropdown); setShowMinuteDropdown(false) }}
|
|
776
|
-
onFocus={handleHourFocus}
|
|
777
692
|
onKeyDown={handleHourKeyDown}
|
|
778
693
|
pattern="[0-9]*"
|
|
779
694
|
ref={hourInputRef}
|
|
@@ -819,7 +734,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
819
734
|
onBlur={handleMinuteBlur}
|
|
820
735
|
onChange={handleMinuteChange}
|
|
821
736
|
onClick={() => { setShowMinuteDropdown(!showMinuteDropdown); setShowHourDropdown(false) }}
|
|
822
|
-
onFocus={handleMinuteFocus}
|
|
823
737
|
onKeyDown={handleMinuteKeyDown}
|
|
824
738
|
pattern="[0-9]*"
|
|
825
739
|
ref={minuteInputRef}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { useState } from 'react'
|
|
2
2
|
import TimePicker from '../../pb_time_picker/_time_picker'
|
|
3
3
|
import Body from '../../pb_body/_body'
|
|
4
|
-
import Flex from '../../pb_flex/_flex'
|
|
5
4
|
|
|
6
5
|
const TimePickerOnHandler = (props) => {
|
|
7
6
|
const [selectedTime, setSelectedTime] = useState('')
|
|
@@ -18,9 +17,7 @@ const TimePickerOnHandler = (props) => {
|
|
|
18
17
|
return (
|
|
19
18
|
<div>
|
|
20
19
|
{(selectedTime || closedTime) && (
|
|
21
|
-
<
|
|
22
|
-
orientation="column"
|
|
23
|
-
>
|
|
20
|
+
<div style={{ marginBottom: '16px' }}>
|
|
24
21
|
{selectedTime && (
|
|
25
22
|
<Body
|
|
26
23
|
text={`onChange: ${selectedTime}`}
|
|
@@ -32,7 +29,7 @@ const TimePickerOnHandler = (props) => {
|
|
|
32
29
|
text={`onClose: ${closedTime}`}
|
|
33
30
|
/>
|
|
34
31
|
)}
|
|
35
|
-
</
|
|
32
|
+
</div>
|
|
36
33
|
)}
|
|
37
34
|
<TimePicker
|
|
38
35
|
id="time-picker-on-handler"
|
|
@@ -9,7 +9,6 @@ examples:
|
|
|
9
9
|
- time_picker_min_max_time: Min & Max Time
|
|
10
10
|
- time_picker_error: Error
|
|
11
11
|
- time_picker_disabled: Disabled
|
|
12
|
-
- time_picker_required_indicator: Required Indicator
|
|
13
12
|
- time_picker_input_options: Input Options
|
|
14
13
|
|
|
15
14
|
|
|
@@ -22,5 +21,4 @@ examples:
|
|
|
22
21
|
- time_picker_min_max_time: Min & Max Time
|
|
23
22
|
- time_picker_error: Error
|
|
24
23
|
- time_picker_disabled: Disabled
|
|
25
|
-
- time_picker_required_indicator: Required Indicator
|
|
26
24
|
- time_picker_on_handler: onChange & onClose Handlers
|
|
@@ -7,4 +7,3 @@ export { default as TimePickerOnHandler } from './_time_picker_on_handler.jsx'
|
|
|
7
7
|
export { default as TimePickerMinMaxTime } from './_time_picker_min_max_time.jsx'
|
|
8
8
|
export { default as TimePickerError } from './_time_picker_error.jsx'
|
|
9
9
|
export { default as TimePickerDisabled } from './_time_picker_disabled.jsx'
|
|
10
|
-
export { default as TimePickerRequiredIndicator } from './_time_picker_required_indicator.jsx'
|
|
@@ -16,8 +16,6 @@ module Playbook
|
|
|
16
16
|
prop :name, type: Playbook::Props::String
|
|
17
17
|
prop :required, type: Playbook::Props::Boolean,
|
|
18
18
|
default: false
|
|
19
|
-
prop :required_indicator, type: Playbook::Props::Boolean,
|
|
20
|
-
default: false
|
|
21
19
|
prop :show_timezone, type: Playbook::Props::Boolean,
|
|
22
20
|
default: false
|
|
23
21
|
prop :time_format, type: Playbook::Props::Enum,
|
|
@@ -70,7 +68,6 @@ module Playbook
|
|
|
70
68
|
minTime: min_time,
|
|
71
69
|
name: name,
|
|
72
70
|
required: required,
|
|
73
|
-
requiredIndicator: required_indicator,
|
|
74
71
|
showTimezone: show_timezone,
|
|
75
72
|
timeFormat: time_format,
|
|
76
73
|
validationMessage: validation_message,
|