playbook_ui_docs 16.1.0.pre.alpha.PLAY276913866 → 16.1.0.pre.alpha.play2724typeaheadindicator13970

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_required_indicator.html.erb +6 -0
  3. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_required_indicator.jsx +17 -0
  4. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_required_indicator.md +3 -0
  5. data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +2 -0
  6. data/app/pb_kits/playbook/pb_checkbox/docs/index.js +1 -0
  7. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_rails.md +3 -0
  8. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_react.md +3 -0
  9. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.html.erb +52 -0
  10. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.jsx +72 -0
  11. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.md +5 -0
  12. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height.jsx +33 -0
  13. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.html.erb +20 -0
  14. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.md +8 -0
  15. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_react.md +8 -0
  16. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.html.erb +9 -0
  17. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.jsx +33 -0
  18. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.md +3 -0
  19. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +6 -0
  20. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +4 -1
  21. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +2 -2
  22. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +16 -9
  23. data/app/pb_kits/playbook/pb_form/docs/_form_with_required_indicator.html.erb +5 -2
  24. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +5 -5
  25. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +4 -4
  26. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx +1 -0
  27. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.html.erb +7 -0
  28. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.jsx +24 -0
  29. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.md +3 -0
  30. data/app/pb_kits/playbook/pb_passphrase/docs/example.yml +2 -0
  31. data/app/pb_kits/playbook/pb_passphrase/docs/index.js +1 -0
  32. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.html.erb +5 -0
  33. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.jsx +14 -0
  34. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.md +3 -0
  35. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +2 -0
  36. data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +1 -0
  37. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_required_indicator.html.erb +16 -0
  38. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_required_indicator.jsx +23 -0
  39. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_required_indicator.md +3 -0
  40. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.html.erb +1 -1
  41. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.jsx +1 -1
  42. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +2 -0
  43. data/app/pb_kits/playbook/pb_typeahead/docs/index.js +22 -21
  44. metadata +26 -3
  45. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.md +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e55b8a5d61e60fca3fa3389d212520db49fe0d4fb7a53169e8a5c8bc33ae0683
4
- data.tar.gz: 2378b703c315b159eeacc1a17ede32f32ac27129582ca92c8d2384087fd39d1a
3
+ metadata.gz: f2244321e6df53f534ad1394dcaa7de6fe6852fed34b8ac66828789edfa3eea8
4
+ data.tar.gz: bde52fc6f901cab38d117de1cf6acb4511ce5842c7b601a316b759cffdc029cf
5
5
  SHA512:
6
- metadata.gz: 49d4b90d0558deaf3b7e5423b6603adcf33e32ce524fd876906e1cce58e3f1fcf35f080609b6b5ff7186e876fb86b55aa03c6eeb27b574e2c8f14f092abf2e5a
7
- data.tar.gz: 19697a27c0179f148de23ef8518ca3a9d86b87dfa894c1005948ae88af03141927f3a8e0a9756c640c7665a099f11aa5f657fb359df422bf9f5c266c2f0d6b55
6
+ metadata.gz: 18ed1b23c502a71de038ffd826f99f0f997d20c742c3edfcf2e2d7d00e5c24a48bed6c585da38a72cb32a1bb050864e9bfbff188fe4be90e49010e2b47705aee
7
+ data.tar.gz: 12c47bdabe77b9be9ae0c068c23c095e8bea3d4058923840978ed561c0ef0927d76c2ce0b72600d6ec58704c0046aba787fd435610d2758577113ed837bcf10f
@@ -0,0 +1,6 @@
1
+ <%= pb_rails("checkbox" , props: {
2
+ required_indicator: true,
3
+ text: "Checkbox Label",
4
+ value: "checkbox-value",
5
+ name: "checkbox-name"
6
+ }) %>
@@ -0,0 +1,17 @@
1
+ import React from 'react'
2
+ import Checkbox from '../_checkbox'
3
+
4
+ const CheckboxRequiredIndicator = () => {
5
+ return (
6
+ <div>
7
+ <Checkbox
8
+ name="checkbox-name"
9
+ requiredIndicator
10
+ text="Checkbox label"
11
+ value="check-box value"
12
+ />
13
+ </div>
14
+ )
15
+ }
16
+
17
+ export default CheckboxRequiredIndicator
@@ -0,0 +1,3 @@
1
+ The `requiredIndicator`/`required_indicator` prop displays a red asterisk (*) next to the label, visually indicating that the field is required. This is purely visual and does not enforce validation.
2
+
3
+ You can use `requiredIndicator`/`required_indicator` with any validation approach: HTML5 validation via the `required` prop, client-side validation, or backend validation. For this reason, it works independently and doesn't need to be paired with the `required` prop.
@@ -8,6 +8,7 @@ examples:
8
8
  - checkbox_indeterminate: Indeterminate Checkbox
9
9
  - checkbox_disabled: Disabled Checkbox
10
10
  - checkbox_form: Form and Hidden Input
11
+ # - checkbox_required_indicator: Required Indicator
11
12
 
12
13
  react:
13
14
  - checkbox_default: Default
@@ -17,6 +18,7 @@ examples:
17
18
  - checkbox_error: Default w/ Error
18
19
  - checkbox_indeterminate: Indeterminate Checkbox
19
20
  - checkbox_disabled: Disabled Checkbox
21
+ # - checkbox_required_indicator: Required Indicator
20
22
 
21
23
  swift:
22
24
  - checkbox_default_swift: Default
@@ -5,3 +5,4 @@ export { default as CheckboxError } from './_checkbox_error.jsx'
5
5
  export { default as CheckboxChecked } from './_checkbox_checked.jsx'
6
6
  export { default as CheckboxIndeterminate } from './_checkbox_indeterminate.jsx'
7
7
  export { default as CheckboxDisabled } from './_checkbox_disabled.jsx'
8
+ export { default as CheckboxRequiredIndicator } from './_checkbox_required_indicator.jsx'
@@ -0,0 +1,3 @@
1
+ The `blank_selection` prop adds a blank option at the top of the dropdown options list. This allows users to explicitly clear their selection by choosing the blank option.
2
+
3
+ The blank selection option appears as the first item in the dropdown and has an empty value (`id: ""`, `value: ""`). When selected, it effectively clears the dropdown selection.
@@ -0,0 +1,3 @@
1
+ The `blankSelection` prop adds a blank option at the top of the dropdown options list. This allows users to explicitly clear their selection by choosing the blank option.
2
+
3
+ The blank selection option appears as the first item in the dropdown and has an empty value (`id: ""`, `value: ""`). When selected, it effectively clears the dropdown selection.
@@ -0,0 +1,52 @@
1
+ <%
2
+ options = [
3
+ { label: 'United States', value: 'unitedStates', id: 'us' },
4
+ { label: 'Canada', value: 'canada', id: 'ca' },
5
+ { label: 'Pakistan', value: 'pakistan', id: 'pk' },
6
+ ]
7
+ %>
8
+
9
+ <%= pb_rails("dropdown", props: {
10
+ id: "date-range-quickpick-reset-closeable",
11
+ label: "Quick Pick",
12
+ variant: "quickpick",
13
+ clearable: false
14
+ }) %>
15
+
16
+ <%= pb_rails("button", props: {
17
+ margin_y: "md",
18
+ text: "Reset",
19
+ html_options: {
20
+ onclick: "handleReset()"
21
+ }
22
+ }) %>
23
+
24
+ <%= pb_rails("dropdown", props: {
25
+ id: "closeable-default",
26
+ options: options,
27
+ clearable: false,
28
+ default_value: options.last,
29
+ margin_bottom: "md",
30
+ label: "Default"
31
+ }) %>
32
+
33
+ <%= pb_rails("dropdown", props: {
34
+ id: "closeable-subtle",
35
+ options: options,
36
+ clearable: false,
37
+ default_value: options.second,
38
+ variant: "subtle",
39
+ separators: false,
40
+ label: "Subtle"
41
+ }) %>
42
+
43
+ <script>
44
+ function handleReset() {
45
+ const dropdown = document.querySelector("#date-range-quickpick-reset-closeable[data-pb-dropdown]");
46
+ const instance = dropdown?._pbDropdownInstance;
47
+
48
+ if (instance) {
49
+ instance.clearSelection();
50
+ }
51
+ }
52
+ </script>
@@ -0,0 +1,72 @@
1
+ import React, { useRef } from 'react'
2
+
3
+ import Button from '../../pb_button/_button'
4
+ import Dropdown from '../../pb_dropdown/_dropdown'
5
+
6
+ const DropdownWithClearable = (props) => {
7
+ const dropdownRef = useRef(null)
8
+
9
+ const options = [
10
+ {
11
+ label: "United States",
12
+ value: "unitedStates",
13
+ id: "us"
14
+ },
15
+ {
16
+ label: "Canada",
17
+ value: "canada",
18
+ id: "ca"
19
+ },
20
+ {
21
+ label: "Pakistan",
22
+ value: "pakistan",
23
+ id: "pk"
24
+ }
25
+ ]
26
+
27
+ const handleReset = () => {
28
+ if (dropdownRef.current) {
29
+ dropdownRef.current.clearSelected()
30
+ }
31
+ }
32
+
33
+ return (
34
+ <>
35
+ <Dropdown
36
+ clearable={false}
37
+ label="Quick Pick"
38
+ onSelect={() => {}}
39
+ ref={dropdownRef}
40
+ variant="quickpick"
41
+ {...props}
42
+ />
43
+ <Button
44
+ marginY="md"
45
+ onClick={handleReset}
46
+ text="Reset"
47
+ />
48
+
49
+ <Dropdown
50
+ clearable={false}
51
+ defaultValue={options[options.length - 1]}
52
+ label="Default"
53
+ marginBottom="md"
54
+ options={options}
55
+ variant="default"
56
+ {...props}
57
+ />
58
+
59
+ <Dropdown
60
+ clearable={false}
61
+ defaultValue={options[1]}
62
+ label="Subtle"
63
+ options={options}
64
+ separators={false}
65
+ variant="subtle"
66
+ {...props}
67
+ />
68
+ </>
69
+ )
70
+ }
71
+
72
+ export default DropdownWithClearable
@@ -0,0 +1,5 @@
1
+ The `clearable` prop controls whether the clear (X) button appears in the dropdown. When set to `false`, the clear button is hidden.
2
+
3
+ This is useful in two scenarios:
4
+ 1. When you have a separate "Reset" or "Defaults" button that handles clearing the selection (as shown in the Quick Pick example)
5
+ 2. When you don't want to provide any way to clear the selection (as shown in the Default and Subtle examples)
@@ -0,0 +1,33 @@
1
+ import React from 'react'
2
+ import Dropdown from '../../pb_dropdown/_dropdown'
3
+
4
+ const DropdownWithConstrainHeight = (props) => {
5
+ // Create a long list of options to demonstrate height constraint
6
+ const options = Array.from({ length: 30 }, (_, i) => ({
7
+ label: `Option ${i + 1}`,
8
+ value: `option_${i + 1}`,
9
+ id: `opt_${i + 1}`
10
+ }))
11
+
12
+ return (
13
+ <>
14
+ <Dropdown
15
+ data={{ testid: "dropdown-no-constrain" }}
16
+ label="Without Constrain Height (Default)"
17
+ marginBottom="md"
18
+ options={options}
19
+ {...props}
20
+ />
21
+
22
+ <Dropdown
23
+ constrainHeight
24
+ data={{ testid: "dropdown-constrain" }}
25
+ label="With Constrain Height"
26
+ options={options}
27
+ {...props}
28
+ />
29
+ </>
30
+ )
31
+ }
32
+
33
+ export default DropdownWithConstrainHeight
@@ -0,0 +1,20 @@
1
+ <%
2
+ # Create a long list of options to demonstrate height constraint
3
+ options = (1..30).map do |i|
4
+ { label: "Option #{i}", value: "option_#{i}", id: "opt_#{i}" }
5
+ end
6
+ %>
7
+
8
+ <%= pb_rails("dropdown", props: {
9
+ id: "dropdown-no-constrain",
10
+ options: options,
11
+ label: "Without Constrain Height (Default)",
12
+ margin_bottom: "md"
13
+ }) %>
14
+
15
+ <%= pb_rails("dropdown", props: {
16
+ id: "dropdown-constrain",
17
+ options: options,
18
+ constrain_height: true,
19
+ label: "With Constrain Height"
20
+ }) %>
@@ -0,0 +1,8 @@
1
+ The `constrain_height` prop limits the dropdown container height to 18em and enables vertical scrolling when the content exceeds this height. This prevents long dropdown lists from rendering off-screen.
2
+
3
+ When `constrain_height` is `true`, the dropdown will:
4
+ - Have a maximum height of 18em
5
+ - Show a scrollbar when content exceeds the max height
6
+ - Prevent the dropdown from extending beyond the viewport
7
+
8
+ This is particularly useful for dropdowns with many options, such as long lists or quickpick variants with many date range options.
@@ -0,0 +1,8 @@
1
+ The `constrainHeight` prop limits the dropdown container height to 18em and enables vertical scrolling when the content exceeds this height. This prevents long dropdown lists from rendering off-screen.
2
+
3
+ When `constrainHeight` is `true`, the dropdown will:
4
+ - Have a maximum height of 18em
5
+ - Show a scrollbar when content exceeds the max height
6
+ - Prevent the dropdown from extending beyond the viewport
7
+
8
+ This is particularly useful for dropdowns with many options, such as long lists or quickpick variants with many date range options.
@@ -0,0 +1,9 @@
1
+ <%
2
+ options = [
3
+ { label: 'United States', value: 'unitedStates', id: 'us' },
4
+ { label: 'Canada', value: 'canada', id: 'ca' },
5
+ { label: 'Pakistan', value: 'pakistan', id: 'pk' },
6
+ ]
7
+ %>
8
+
9
+ <%= pb_rails("dropdown", props: { options: options, placeholder: "Choose a country" }) %>
@@ -0,0 +1,33 @@
1
+ import React from 'react'
2
+ import Dropdown from '../../pb_dropdown/_dropdown'
3
+
4
+ const DropdownWithPlaceholder = (props) => {
5
+
6
+ const options = [
7
+ {
8
+ label: "United States",
9
+ value: "unitedStates",
10
+ id: "us"
11
+ },
12
+ {
13
+ label: "Canada",
14
+ value: "canada",
15
+ id: "ca"
16
+ },
17
+ {
18
+ label: "Pakistan",
19
+ value: "pakistan",
20
+ id: "pk"
21
+ }
22
+ ];
23
+
24
+ return (
25
+ <Dropdown
26
+ options={options}
27
+ placeholder="Choose a country"
28
+ {...props}
29
+ />
30
+ )
31
+ }
32
+
33
+ export default DropdownWithPlaceholder
@@ -0,0 +1,3 @@
1
+ The `placeholder` prop allows you to customize the placeholder text that appears when no option is selected in the dropdown.
2
+
3
+ The placeholder prop works with all dropdown variants (`default`, `subtle`, and `quickpick`). When no option is selected, the placeholder text is displayed. When an option is selected, the placeholder is replaced by the selected option's label. The default placeholder text is "Select..." if no placeholder is provided.
@@ -21,7 +21,10 @@ examples:
21
21
  - dropdown_default_value: Default Value
22
22
  - dropdown_multi_select_with_default: Multi Select Default Value
23
23
  - dropdown_blank_selection: Blank Selection
24
+ - dropdown_with_placeholder: Placeholder
24
25
  - dropdown_separators_hidden: Separators Hidden
26
+ - dropdown_with_clearable: Clearable
27
+ - dropdown_with_constrain_height_rails: Constrain Height
25
28
  - dropdown_quickpick_rails: Quick Pick Variant
26
29
  - dropdown_quickpick_range_end_rails: Quick Pick Variant (Range Ends Today)
27
30
  - dropdown_quickpick_default_dates: Quick Pick Variant (Default Dates)
@@ -52,7 +55,10 @@ examples:
52
55
  - dropdown_default_value: Default Value
53
56
  - dropdown_multi_select_with_default: Multi Select Default Value
54
57
  - dropdown_blank_selection: Blank Selection
58
+ - dropdown_with_placeholder: Placeholder
55
59
  - dropdown_clear_selection: Clear Selection
60
+ - dropdown_with_clearable: Clearable
61
+ - dropdown_with_constrain_height: Constrain Height
56
62
  - dropdown_separators_hidden: Separators Hidden
57
63
  - dropdown_with_external_control: useDropdown Hook
58
64
  - dropdown_quickpick: Quick Pick Variant
@@ -11,6 +11,7 @@ export { default as DropdownSubcomponentStructure } from './_dropdown_subcompone
11
11
  export { default as DropdownError } from './_dropdown_error.jsx'
12
12
  export { default as DropdownDefaultValue } from './_dropdown_default_value.jsx'
13
13
  export { default as DropdownBlankSelection } from './_dropdown_blank_selection.jsx'
14
+ export { default as DropdownWithPlaceholder } from './_dropdown_with_placeholder.jsx'
14
15
  export { default as DropdownClearSelection } from './_dropdown_clear_selection.jsx'
15
16
  export { default as DropdownSubtleVariant } from './_dropdown_subtle_variant.jsx'
16
17
  export { default as DropdownSeparatorsHidden } from './_dropdown_separators_hidden.jsx'
@@ -27,4 +28,6 @@ export { default as DropdownQuickpick } from './_dropdown_quickpick.jsx'
27
28
  export { default as DropdownQuickpickRangeEnd } from './_dropdown_quickpick_range_end.jsx'
28
29
  export { default as DropdownQuickpickDefaultDates } from './_dropdown_quickpick_default_dates.jsx'
29
30
  export { default as DropdownQuickpickWithDatePickers } from './_dropdown_quickpick_with_date_pickers.jsx'
30
- export { default as DropdownQuickpickCustom } from './_dropdown_quickpick_custom.jsx'
31
+ export { default as DropdownQuickpickCustom } from './_dropdown_quickpick_custom.jsx'
32
+ export { default as DropdownWithClearable } from './_dropdown_with_clearable.jsx'
33
+ export { default as DropdownWithConstrainHeight } from './_dropdown_with_constrain_height.jsx'
@@ -1,7 +1,7 @@
1
1
  <%=
2
2
  pb_rails("filter", props: {
3
3
  min_width: "360px",
4
- id: "1",
4
+ id: "filter-demo-1",
5
5
  margin_bottom: "xl",
6
6
  filters: [
7
7
  { name: "name", value: "John Wick" },
@@ -44,7 +44,7 @@
44
44
  <%=
45
45
  pb_rails("filter", props: {
46
46
  min_width: "360px",
47
- id: "def2",
47
+ id: "filter-demo-2",
48
48
  sort_menu: [
49
49
  { item: "Popularity", link: "?q[sorts]=managers_popularity+asc", active: true, direction: "desc" },
50
50
  { item: "Mananger's Title", link: "?q[sorts]=managers_title+asc", active: false },
@@ -1,4 +1,4 @@
1
- import React from 'react'
1
+ import React, { useState } from 'react'
2
2
 
3
3
  import Button from '../../pb_button/_button'
4
4
  import Filter from '../../pb_filter/_filter'
@@ -6,11 +6,18 @@ import Flex from '../../pb_flex/_flex'
6
6
  import Select from '../../pb_select/_select'
7
7
  import TextInput from '../../pb_text_input/_text_input'
8
8
 
9
- const SortingChangeCallback = (sortOptions) => {
10
- alert(JSON.stringify(sortOptions[0]))
11
- }
12
-
13
9
  const FilterDefault = (props) => {
10
+ const [sortValue, setSortValue] = useState([{ name: 'popularity', dir: 'desc' }])
11
+ const [sortValue2, setSortValue2] = useState([{ name: 'popularity', dir: 'desc' }])
12
+
13
+ const handleSortChange = (sortOptions) => {
14
+ setSortValue(sortOptions)
15
+ alert(JSON.stringify(sortOptions[0]))
16
+ }
17
+
18
+ const handleSortChange2 = (sortOptions) => {
19
+ setSortValue2(sortOptions)
20
+ }
14
21
  const options = [
15
22
  { value: 'USA' },
16
23
  { value: 'Canada' },
@@ -29,7 +36,7 @@ const FilterDefault = (props) => {
29
36
  }}
30
37
  marginBottom="xl"
31
38
  minWidth="375px"
32
- onSortChange={SortingChangeCallback}
39
+ onSortChange={handleSortChange}
33
40
  results={1}
34
41
  sortOptions={{
35
42
  popularity: 'Popularity',
@@ -38,7 +45,7 @@ const FilterDefault = (props) => {
38
45
  // eslint-disable-next-line
39
46
  manager_name: 'Manager\'s Name',
40
47
  }}
41
- sortValue={[{ name: 'popularity', dir: 'desc' }]}
48
+ sortValue={sortValue}
42
49
  {...props}
43
50
  >
44
51
  {({ closePopover }) => (
@@ -82,7 +89,7 @@ const FilterDefault = (props) => {
82
89
  <Filter
83
90
  double
84
91
  minWidth="375px"
85
- onSortChange={SortingChangeCallback}
92
+ onSortChange={handleSortChange2}
86
93
  results={0}
87
94
  sortOptions={{
88
95
  popularity: 'Popularity',
@@ -91,7 +98,7 @@ const FilterDefault = (props) => {
91
98
  // eslint-disable-next-line
92
99
  manager_name: 'Manager\'s Name',
93
100
  }}
94
- sortValue={[{ name: 'popularity', dir: 'desc' }]}
101
+ sortValue={sortValue2}
95
102
  {...props}
96
103
  >
97
104
  {({ closePopover }) => (
@@ -1,13 +1,16 @@
1
1
  <%= pb_form_with(scope: :example, url: "", method: :get, validate: true) do |form| %>
2
+ <%= form.typeahead :example_typeahead_field, props: { label: true, required: true, required_indicator: true } %>
2
3
  <%= form.text_field :example_text_field, props: { label: true, required: true, required_indicator: true } %>
3
4
  <%= form.text_field :example_text_field_2, props: { label: "Text Field Custom Label", required: true, required_indicator: true } %>
4
- <%= form.text_area :example_text_area, props: { label: true, required: true, required_indicator: true } %>
5
- <%= form.text_area :example_text_area_2, props: { label: "Textarea Custom Label", required: true, required_indicator: true } %>
5
+ <%= form.phone_number_field :example_phone_number_field, props: { label: true, required: true, required_indicator: true } %>
6
6
  <%= form.email_field :example_email_field, props: { label: true, required: true, required_indicator: true } %>
7
7
  <%= form.number_field :example_number_field, props: { label: true, required: true, required_indicator: true } %>
8
8
  <%= form.search_field :example_search_field, props: { label: true, required: true, required_indicator: true } %>
9
9
  <%= form.password_field :example_password_field, props: { label: true, required: true, required_indicator: true } %>
10
10
  <%= form.url_field :example_url_field, props: { label: true, required: true, required_indicator: true } %>
11
+ <%= form.text_area :example_text_area, props: { label: true, required: true, required_indicator: true } %>
12
+ <%= form.text_area :example_text_area_2, props: { label: "Textarea Custom Label", required: true, required_indicator: true } %>
13
+ <%# <%= form.check_box :example_checkbox, props: { label: true, text: "Checkbox Label", required: true, required_indicator: true } %>
11
14
 
12
15
  <%= form.actions do |action| %>
13
16
  <%= action.submit %>
@@ -15,7 +15,7 @@
15
15
  options: names,
16
16
  label: "Truncation Within Typeahead",
17
17
  pills: true,
18
- truncate: 1,
18
+ truncate: "1",
19
19
  }) %>
20
20
 
21
21
  <%= pb_rails("caption", props: { text: "Form Pill Truncation" }) %>
@@ -24,19 +24,19 @@
24
24
  name: "Princess Amelia Mignonette Grimaldi Thermopolis Renaldo",
25
25
  avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
26
26
  tabindex: 0,
27
- truncate: 1,
27
+ truncate: "1",
28
28
  id: "truncation-1"
29
29
  }) %>
30
30
  <%= pb_rails("form_pill", props: {
31
31
  icon: "badge-check",
32
32
  text: "icon and a very long tag to show truncation",
33
33
  tabindex: 0,
34
- truncate: 1,
34
+ truncate: "1",
35
35
  id: "truncation-2"
36
36
  }) %>
37
37
  <%= pb_rails("form_pill", props: {
38
38
  text: "form pill long tag no tooltip show truncation",
39
39
  tabindex: 0,
40
- truncate: 1,
40
+ truncate: "1",
41
41
  }) %>
42
- <% end %>
42
+ <% end %>
@@ -21,7 +21,7 @@ const FormPillTruncatedText = (props) => {
21
21
  isMulti
22
22
  label="Truncation Within Typeahead"
23
23
  options={names}
24
- truncate={1}
24
+ truncate={"1"}
25
25
  {...props}
26
26
  />
27
27
  <Caption text="Form Pill Truncation"/>
@@ -31,20 +31,20 @@ const FormPillTruncatedText = (props) => {
31
31
  name="Princess Amelia Mignonette Grimaldi Thermopolis Renaldo"
32
32
  onClick={() => alert('Click!')}
33
33
  tabIndex={0}
34
- truncate={1}
34
+ truncate={"1"}
35
35
  />
36
36
  <FormPill
37
37
  icon="badge-check"
38
38
  onClick={() => {alert('Click!')}}
39
39
  tabIndex={0}
40
40
  text="icon and a very long tag to show truncation"
41
- truncate={1}
41
+ truncate={"1"}
42
42
  />
43
43
  <FormPill
44
44
  onClick={() => {alert('Click!')}}
45
45
  tabIndex={0}
46
46
  text="form pill with a very long tag to show truncation"
47
- truncate={1}
47
+ truncate={"1"}
48
48
  />
49
49
  </Card>
50
50
  </>
@@ -120,6 +120,7 @@ const PassphraseMeterSettings = (props) => {
120
120
  "These examples will all share the same input value. Type in any of the inputs to see how the strength meter changes in response to different settings."
121
121
  }
122
122
  </Body>
123
+ <br/>
123
124
  <Passphrase
124
125
  label={"Type your passphrase"}
125
126
  onChange={handleChange}
@@ -0,0 +1,7 @@
1
+ <%= pb_rails("passphrase", props: {
2
+ id: "passphrase_required_indicator",
3
+ label: "Passphrase",
4
+ placeholder: "Enter passphrase",
5
+ required_indicator: true,
6
+ value: "passphrase",
7
+ }) %>
@@ -0,0 +1,24 @@
1
+ import React, { useState } from 'react'
2
+
3
+ import Passphrase from '../_passphrase'
4
+
5
+ const PassphraseRequiredIndicator = (props) => {
6
+ const [passphrase, setPassphrase] = useState('')
7
+ const handleOnChangePassphrase = (e) => {
8
+ setPassphrase(e.target ? e.target.value : e)
9
+ }
10
+
11
+ return (
12
+ <Passphrase
13
+ id="passphrase_required_indicator"
14
+ label="Passphrase"
15
+ name="passphrase"
16
+ onChange={handleOnChangePassphrase}
17
+ requiredIndicator
18
+ value={passphrase}
19
+ {...props}
20
+ />
21
+ )
22
+ }
23
+
24
+ export default PassphraseRequiredIndicator
@@ -0,0 +1,3 @@
1
+ The `requiredIndicator`/`required_indicator` prop displays a red asterisk (*) next to the label, visually indicating that the field is required. This is purely visual and does not enforce validation.
2
+
3
+ You can use `requiredIndicator`/`required_indicator` with any validation approach: HTML5 validation via the `required` prop, client-side validation, or backend validation. For this reason, it works independently and doesn't need to be paired with the `required` prop.
@@ -9,6 +9,7 @@ examples:
9
9
  - passphrase_strength_change: Strength Change
10
10
  - passphrase_common: Common Passphrases
11
11
  - passphrase_breached: Breached Passphrases
12
+ - passphrase_required_indicator: Required Indicator
12
13
 
13
14
  react:
14
15
  - passphrase_default: Default
@@ -19,3 +20,4 @@ examples:
19
20
  - passphrase_strength_change: Strength Change
20
21
  - passphrase_common: Common Passphrases
21
22
  - passphrase_breached: Breached Passphrases
23
+ - passphrase_required_indicator: Required Indicator
@@ -6,3 +6,4 @@ export { default as PassphraseTips } from './_passphrase_tips'
6
6
  export { default as PassphraseStrengthChange } from './_passphrase_strength_change'
7
7
  export { default as PassphraseCommon } from './_passphrase_common'
8
8
  export { default as PassphraseBreached } from './_passphrase_breached'
9
+ export { default as PassphraseRequiredIndicator } from './_passphrase_required_indicator.jsx'
@@ -0,0 +1,5 @@
1
+ <%= pb_rails("phone_number_input", props: {
2
+ id: "phone_number_input_required_indicator",
3
+ label: "Required Phone Number",
4
+ required_indicator: true,
5
+ }) %>
@@ -0,0 +1,14 @@
1
+ import React from 'react'
2
+ import PhoneNumberInput from '../../pb_phone_number_input/_phone_number_input'
3
+
4
+ const PhoneNumberInputRequiredIndicator = (props) => (
5
+ <>
6
+ <PhoneNumberInput
7
+ id='phone_number_input_required_indicator'
8
+ label='Phone Number'
9
+ requiredIndicator
10
+ {...props} />
11
+ </>
12
+ )
13
+
14
+ export default PhoneNumberInputRequiredIndicator
@@ -0,0 +1,3 @@
1
+ The `requiredIndicator`/`required_indicator` prop displays a red asterisk (*) next to the label, visually indicating that the field is required. This is purely visual and does not enforce validation.
2
+
3
+ You can use `requiredIndicator`/`required_indicator` with any validation approach: HTML5 validation via the `required` prop, client-side validation, or backend validation. For this reason, it works independently and doesn't need to be paired with the `required` prop.
@@ -12,6 +12,7 @@ examples:
12
12
  - phone_number_input_format: Format as You Type
13
13
  - phone_number_input_strict_mode: Strict Mode
14
14
  - phone_number_input_country_search: Country Search
15
+ - phone_number_input_required_indicator: Required Indicator
15
16
 
16
17
  rails:
17
18
  - phone_number_input_default: Default
@@ -24,3 +25,4 @@ examples:
24
25
  - phone_number_input_strict_mode: Strict Mode
25
26
  - phone_number_input_hidden_inputs: Hidden Inputs
26
27
  - phone_number_input_country_search: Country Search
28
+ - phone_number_input_required_indicator: Required Indicator
@@ -9,3 +9,4 @@ export { default as PhoneNumberInputAccessInputElement } from './_phone_number_i
9
9
  export { default as PhoneNumberInputFormat } from './_phone_number_input_format'
10
10
  export { default as PhoneNumberInputStrictMode } from './_phone_number_input_strict_mode'
11
11
  export { default as PhoneNumberInputCountrySearch } from './_phone_number_input_country_search'
12
+ export { default as PhoneNumberInputRequiredIndicator } from './_phone_number_input_required_indicator.jsx'
@@ -0,0 +1,16 @@
1
+ <%
2
+ options = [
3
+ { label: 'Orange', value: '#FFA500' },
4
+ { label: 'Red', value: '#FF0000' },
5
+ { label: 'Green', value: '#00FF00' },
6
+ { label: 'Blue', value: '#0000FF' },
7
+ ]
8
+ %>
9
+
10
+ <%= pb_rails("typeahead", props: {
11
+ id: "typeahead-required-indicator",
12
+ is_multi: false,
13
+ label: "Colors",
14
+ options: options,
15
+ required_indicator: true,
16
+ }) %>
@@ -0,0 +1,23 @@
1
+ import React from "react"
2
+ import Typeahead from "../../pb_typeahead/_typeahead"
3
+
4
+ const options = [
5
+ {label: "Orange", value: "#FFA500"},
6
+ {label: "Red", value: "#FF0000"},
7
+ {label: "Green", value: "#00FF00"},
8
+ {label: "Blue", value: "#0000FF"},
9
+ ]
10
+
11
+ const TypeaheadRequiredIndicator = (props) => {
12
+ return (
13
+ <Typeahead
14
+ id="typeahead_required_indicator"
15
+ label="Colors"
16
+ options={options}
17
+ requiredIndicator
18
+ {...props}
19
+ />
20
+ )
21
+ }
22
+
23
+ export default TypeaheadRequiredIndicator
@@ -0,0 +1,3 @@
1
+ The `requiredIndicator`/`required_indicator` prop displays a red asterisk (*) next to the label, visually indicating that the field is required. This is purely visual and does not enforce validation.
2
+
3
+ You can use `requiredIndicator`/`required_indicator` with any validation approach: HTML5 validation via the `required` prop, client-side validation, or backend validation. For this reason, it works independently and doesn't need to be paired with the `required` prop.
@@ -15,5 +15,5 @@
15
15
  options: names,
16
16
  label: "Truncation Within Typeahead",
17
17
  pills: true,
18
- truncate: 1,
18
+ truncate: "1",
19
19
  }) %>
@@ -17,7 +17,7 @@ const TypeaheadTruncatedText = (props) => {
17
17
  isMulti
18
18
  label="Truncation Within Typeahead"
19
19
  options={names}
20
- truncate={1}
20
+ truncate={"1"}
21
21
  {...props}
22
22
  />
23
23
  </>
@@ -19,6 +19,7 @@ examples:
19
19
  - typeahead_dynamic_options_pure_rails: Dynamic Options (Pure Rails)
20
20
  - typeahead_disabled: Disabled
21
21
  - typeahead_preserve_input: Preserve Search Input
22
+ - typeahead_required_indicator: Required Indicator
22
23
 
23
24
  react:
24
25
  - typeahead_default: Default
@@ -42,3 +43,4 @@ examples:
42
43
  - typeahead_truncated_text: Truncated Text
43
44
  - typeahead_disabled: Disabled
44
45
  - typeahead_preserve_input: Preserve Search Input
46
+ - typeahead_required_indicator: Required Indicator
@@ -1,21 +1,22 @@
1
- export { default as TypeaheadDefault } from './_typeahead_default.jsx'
2
- export { default as TypeaheadWithHighlight } from './_typeahead_with_highlight.jsx'
3
- export { default as TypeaheadWithPills } from './_typeahead_with_pills.jsx'
4
- export { default as TypeaheadWithPillsAsync } from './_typeahead_with_pills_async.jsx'
5
- export { default as TypeaheadWithPillsAsyncUsers } from './_typeahead_with_pills_async_users.jsx'
6
- export { default as TypeaheadWithPillsAsyncCustomOptions } from './_typeahead_with_pills_async_custom_options.jsx'
7
- export { default as TypeaheadInline } from './_typeahead_inline.jsx'
8
- export { default as TypeaheadMultiKit } from './_typeahead_multi_kit.jsx'
9
- export { default as TypeaheadCreateable } from './_typeahead_createable.jsx'
10
- export { default as TypeaheadAsyncCreateable } from './_typeahead_async_createable.jsx'
11
- export { default as TypeaheadErrorState } from './_typeahead_error_state.jsx'
12
- export { default as TypeaheadCustomMenuList } from './_typeahead_custom_menu_list.jsx'
13
- export { default as TypeaheadMarginBottom } from './_typeahead_margin_bottom.jsx'
14
- export { default as TypeaheadWithPillsColor } from './_typeahead_with_pills_color.jsx'
15
- export { default as TypeaheadTruncatedText } from './_typeahead_truncated_text.jsx'
16
- export { default as TypeaheadReactHook } from './_typeahead_react_hook.jsx'
17
- export { default as TypeaheadDisabled } from './_typeahead_disabled.jsx'
18
- export { default as TypeaheadPreserveInput } from './_typeahead_preserve_input.jsx'
19
- export { default as TypeaheadDefaultValue } from './_typeahead_default_value.jsx'
20
- export { default as TypeaheadCustomOptions } from './_typeahead_custom_options.jsx'
21
- export { default as TypeaheadInputDisplay } from './_typeahead_input_display.jsx'
1
+ export {default as TypeaheadDefault} from "./_typeahead_default.jsx"
2
+ export {default as TypeaheadWithHighlight} from "./_typeahead_with_highlight.jsx"
3
+ export {default as TypeaheadWithPills} from "./_typeahead_with_pills.jsx"
4
+ export {default as TypeaheadWithPillsAsync} from "./_typeahead_with_pills_async.jsx"
5
+ export {default as TypeaheadWithPillsAsyncUsers} from "./_typeahead_with_pills_async_users.jsx"
6
+ export {default as TypeaheadWithPillsAsyncCustomOptions} from "./_typeahead_with_pills_async_custom_options.jsx"
7
+ export {default as TypeaheadInline} from "./_typeahead_inline.jsx"
8
+ export {default as TypeaheadMultiKit} from "./_typeahead_multi_kit.jsx"
9
+ export {default as TypeaheadCreateable} from "./_typeahead_createable.jsx"
10
+ export {default as TypeaheadAsyncCreateable} from "./_typeahead_async_createable.jsx"
11
+ export {default as TypeaheadErrorState} from "./_typeahead_error_state.jsx"
12
+ export {default as TypeaheadCustomMenuList} from "./_typeahead_custom_menu_list.jsx"
13
+ export {default as TypeaheadMarginBottom} from "./_typeahead_margin_bottom.jsx"
14
+ export {default as TypeaheadWithPillsColor} from "./_typeahead_with_pills_color.jsx"
15
+ export {default as TypeaheadTruncatedText} from "./_typeahead_truncated_text.jsx"
16
+ export {default as TypeaheadReactHook} from "./_typeahead_react_hook.jsx"
17
+ export {default as TypeaheadDisabled} from "./_typeahead_disabled.jsx"
18
+ export {default as TypeaheadPreserveInput} from "./_typeahead_preserve_input.jsx"
19
+ export {default as TypeaheadDefaultValue} from "./_typeahead_default_value.jsx"
20
+ export {default as TypeaheadCustomOptions} from "./_typeahead_custom_options.jsx"
21
+ export {default as TypeaheadInputDisplay} from "./_typeahead_input_display.jsx"
22
+ export {default as TypeaheadRequiredIndicator} from "./_typeahead_required_indicator.jsx"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui_docs
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.1.0.pre.alpha.PLAY276913866
4
+ version: 16.1.0.pre.alpha.play2724typeaheadindicator13970
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2026-01-27 00:00:00.000000000 Z
12
+ date: 2026-01-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: playbook_ui
@@ -419,6 +419,9 @@ files:
419
419
  - app/pb_kits/playbook/pb_checkbox/docs/_checkbox_props_swift.md
420
420
  - app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.jsx
421
421
  - app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.md
422
+ - app/pb_kits/playbook/pb_checkbox/docs/_checkbox_required_indicator.html.erb
423
+ - app/pb_kits/playbook/pb_checkbox/docs/_checkbox_required_indicator.jsx
424
+ - app/pb_kits/playbook/pb_checkbox/docs/_checkbox_required_indicator.md
422
425
  - app/pb_kits/playbook/pb_checkbox/docs/_description.md
423
426
  - app/pb_kits/playbook/pb_checkbox/docs/example.yml
424
427
  - app/pb_kits/playbook/pb_checkbox/docs/index.js
@@ -576,7 +579,6 @@ files:
576
579
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_anti_patterns.html.erb
577
580
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.html.erb
578
581
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.jsx
579
- - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.md
580
582
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.html.erb
581
583
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.jsx
582
584
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.md
@@ -841,6 +843,8 @@ files:
841
843
  - app/pb_kits/playbook/pb_draggable/docs/index.js
842
844
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection.html.erb
843
845
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection.jsx
846
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_rails.md
847
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_react.md
844
848
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.jsx
845
849
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.md
846
850
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.jsx
@@ -902,6 +906,13 @@ files:
902
906
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.html.erb
903
907
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.jsx
904
908
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.md
909
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.html.erb
910
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.jsx
911
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.md
912
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height.jsx
913
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.html.erb
914
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.md
915
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_react.md
905
916
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_active_style_options.jsx
906
917
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_active_style_options_react.md
907
918
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.jsx
@@ -932,6 +943,9 @@ files:
932
943
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.html.erb
933
944
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.jsx
934
945
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.md
946
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.html.erb
947
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.jsx
948
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.md
935
949
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.jsx
936
950
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.md
937
951
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.html.erb
@@ -1616,6 +1630,9 @@ files:
1616
1630
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.html.erb
1617
1631
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx
1618
1632
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.md
1633
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.html.erb
1634
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.jsx
1635
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.md
1619
1636
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.html.erb
1620
1637
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.jsx
1621
1638
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.md
@@ -1779,6 +1796,9 @@ files:
1779
1796
  - app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_preferred_countries.html.erb
1780
1797
  - app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_preferred_countries.jsx
1781
1798
  - app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_preferred_countries.md
1799
+ - app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.html.erb
1800
+ - app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.jsx
1801
+ - app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.md
1782
1802
  - app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.html.erb
1783
1803
  - app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.jsx
1784
1804
  - app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.md
@@ -2589,6 +2609,9 @@ files:
2589
2609
  - app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input_react.md
2590
2610
  - app/pb_kits/playbook/pb_typeahead/docs/_typeahead_react_hook.jsx
2591
2611
  - app/pb_kits/playbook/pb_typeahead/docs/_typeahead_react_hook.md
2612
+ - app/pb_kits/playbook/pb_typeahead/docs/_typeahead_required_indicator.html.erb
2613
+ - app/pb_kits/playbook/pb_typeahead/docs/_typeahead_required_indicator.jsx
2614
+ - app/pb_kits/playbook/pb_typeahead/docs/_typeahead_required_indicator.md
2592
2615
  - app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.html.erb
2593
2616
  - app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.jsx
2594
2617
  - app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.md
@@ -1 +0,0 @@
1
- Add a `pickerId` to your Date Picker so that clicking the label will move focus directly to the input.