playbook_ui_docs 13.24.0.pre.alpha.play1305drycontenttag2689 β†’ 13.25.0.pre.alpha.PBNTR272Dropdownkitv42769

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_currency/docs/_currency_alignment_swift.md +43 -0
  3. data/app/pb_kits/playbook/pb_currency/docs/_currency_props_swift.md +12 -0
  4. data/app/pb_kits/playbook/pb_currency/docs/_currency_size_swift.md +31 -0
  5. data/app/pb_kits/playbook/pb_currency/docs/example.yml +5 -0
  6. data/app/pb_kits/playbook/pb_date_range_stacked/docs/_date_range_stacked_default_swift.md +14 -0
  7. data/app/pb_kits/playbook/pb_date_range_stacked/docs/_date_range_stacked_props_swift.md +9 -0
  8. data/app/pb_kits/playbook/pb_date_range_stacked/docs/example.yml +4 -0
  9. data/app/pb_kits/playbook/pb_dialog/docs/example.yml +1 -1
  10. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.jsx +38 -0
  11. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.md +1 -0
  12. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +87 -0
  13. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.md +1 -0
  14. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.jsx +102 -0
  15. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.md +1 -0
  16. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.jsx +104 -0
  17. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.md +5 -0
  18. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_options.jsx +63 -0
  19. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_options.md +1 -0
  20. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_padding.jsx +48 -0
  21. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_padding.md +1 -0
  22. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_trigger.jsx +77 -0
  23. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_trigger.md +1 -0
  24. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_external_control.jsx +62 -0
  25. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_hook.jsx +75 -0
  26. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.jsx +39 -0
  27. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.md +1 -0
  28. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +15 -0
  29. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +10 -0
  30. data/dist/menu.yml +5 -1
  31. data/dist/playbook-doc.js +10 -10
  32. metadata +28 -3
  33. /data/app/pb_kits/playbook/pb_dialog/docs/{_dialog_props_table.md β†’ _dialog_props_swift.md} +0 -0
@@ -0,0 +1,77 @@
1
+ import React, { useState } from 'react'
2
+ import { Dropdown, Icon, Body, FlexItem, Flex, IconCircle } from '../..'
3
+
4
+ const DropdownWithCustomTrigger = (props) => {
5
+
6
+ const [selectedOption, setSelectedOption] = useState();
7
+
8
+ const options = [
9
+ {
10
+ label: "United States",
11
+ value: "United States",
12
+ areaCode: "+1",
13
+ icon: "πŸ‡ΊπŸ‡Έ",
14
+ id: "United-states"
15
+ },
16
+ {
17
+ label: "Canada",
18
+ value: "Canada",
19
+ areaCode: "+1",
20
+ icon: "πŸ‡¨πŸ‡¦",
21
+ id: "canada"
22
+ },
23
+ {
24
+ label: "Pakistan",
25
+ value: "Pakistan",
26
+ areaCode: "+92",
27
+ icon: "πŸ‡΅πŸ‡°",
28
+ id: "pakistan"
29
+ }
30
+ ];
31
+
32
+
33
+ return (
34
+ <div>
35
+ <Dropdown
36
+ onSelect={(selectedItem) => setSelectedOption(selectedItem)}
37
+ options={options}
38
+ {...props}
39
+ >
40
+ <Dropdown.Trigger>
41
+ <div key={selectedOption ? selectedOption.icon : "flag"}>
42
+ <IconCircle
43
+ cursor="pointer"
44
+ icon={selectedOption ? selectedOption.icon : "flag"}
45
+ variant="royal"
46
+ />
47
+ </div>
48
+ </Dropdown.Trigger>
49
+ <Dropdown.Container maxWidth="xs">
50
+ {options.map((option) => (
51
+ <Dropdown.Option key={option.id}
52
+ option={option}
53
+ >
54
+ <>
55
+ <FlexItem>
56
+ <Flex>
57
+ <Icon icon={option.icon}
58
+ paddingRight="xs"
59
+ />
60
+ <Body text={option.label} />
61
+ </Flex>
62
+ </FlexItem>
63
+ <FlexItem>
64
+ <Body color="light"
65
+ text={option.areaCode}
66
+ />
67
+ </FlexItem>
68
+ </>
69
+ </Dropdown.Option>
70
+ ))}
71
+ </Dropdown.Container>
72
+ </Dropdown>
73
+ </div>
74
+ )
75
+ }
76
+
77
+ export default DropdownWithCustomTrigger
@@ -0,0 +1 @@
1
+ The Dropdown can also be given a custom Trigger by passing children to the `Dropdown.Trigger` subcomponent as shown in this example. Here we are using the IconCircle kit.
@@ -0,0 +1,62 @@
1
+ import React, { useState } from 'react'
2
+ import { Dropdown, useDropdown, Button } from '../../'
3
+
4
+ const DropdownWithExternalControl = (props) => {
5
+ // eslint-disable-next-line no-unused-vars
6
+ const [selectedOption, setSelectedOption] = useState();
7
+ const [isDropDownClosed, setIsDropdownClosed] = useDropdown(true);
8
+
9
+ const options = [
10
+ {
11
+ label: "United States",
12
+ value: "United States",
13
+ areaCode: "+1",
14
+ icon: "πŸ‡ΊπŸ‡Έ",
15
+ id: "United-states"
16
+ },
17
+ {
18
+ label: "Canada",
19
+ value: "Canada",
20
+ areaCode: "+1",
21
+ icon: "πŸ‡¨πŸ‡¦",
22
+ id: "canada"
23
+ },
24
+ {
25
+ label: "Pakistan",
26
+ value: "Pakistan",
27
+ areaCode: "+92",
28
+ icon: "πŸ‡΅πŸ‡°",
29
+ id: "pakistan"
30
+ }
31
+ ];
32
+
33
+ return (
34
+ <div>
35
+ <Button
36
+ data={{dropdown:'pb-dropdown-trigger'}}
37
+ marginBottom='sm'
38
+ onClick={() => setIsDropdownClosed(!isDropDownClosed)}
39
+ padding="none"
40
+ tabIndex={0}
41
+ variant="link"
42
+ >
43
+ {isDropDownClosed ? "Open Dropdown" : "Close Dropdown"}
44
+ </Button>
45
+
46
+ <Dropdown
47
+ isClosed={isDropDownClosed}
48
+ onSelect={(selectedItem) => setSelectedOption(selectedItem)}
49
+ options={options}
50
+ {...props}
51
+ >
52
+ {options.map((option) => (
53
+ <Dropdown.Option key={option.id}
54
+ option={option}
55
+ />
56
+ ))}
57
+ </Dropdown>
58
+ </div>
59
+ )
60
+ }
61
+
62
+ export default DropdownWithExternalControl
@@ -0,0 +1,75 @@
1
+ import React, { useState, useRef } from 'react'
2
+ import { Dropdown, useDropdown, CircleIconButton, Icon, Body, FlexItem, Flex } from '../..'
3
+
4
+ const DropdownWithHook = (props) => {
5
+ // eslint-disable-next-line no-unused-vars
6
+ const [selectedOption, setSelectedOption] = useState();
7
+ const [isDropDownClosed, setIsDropdownClosed] = useDropdown(true);
8
+ const buttonRef = useRef(null);
9
+
10
+ const options = [
11
+ {
12
+ label: "United States",
13
+ value: "United States",
14
+ areaCode: "+1",
15
+ icon: "πŸ‡ΊπŸ‡Έ",
16
+ id: "United-states"
17
+ },
18
+ {
19
+ label: "Canada",
20
+ value: "Canada",
21
+ areaCode: "+1",
22
+ icon: "πŸ‡¨πŸ‡¦",
23
+ id: "canada"
24
+ },
25
+ {
26
+ label: "Pakistan",
27
+ value: "Pakistan",
28
+ areaCode: "+92",
29
+ icon: "πŸ‡΅πŸ‡°",
30
+ id: "pakistan"
31
+ }
32
+ ];
33
+
34
+ return (
35
+ <div>
36
+ <CircleIconButton
37
+ htmlOptions={{ref: buttonRef}}
38
+ icon={"flag"}
39
+ onClick={() => setIsDropdownClosed(!isDropDownClosed)}
40
+ variant="secondary"
41
+ />
42
+ <Dropdown
43
+ isClosed={isDropDownClosed}
44
+ onSelect={(selectedItem) => setSelectedOption(selectedItem)}
45
+ options={options}
46
+ triggerRef={buttonRef}
47
+ {...props}
48
+ >
49
+ {options.map((option) => (
50
+ <Dropdown.Option key={option.id}
51
+ option={option}
52
+ >
53
+ <>
54
+ <FlexItem>
55
+ <Flex paddingRight='md'>
56
+ <Icon icon={option.icon}
57
+ paddingRight="xs"
58
+ />
59
+ <Body text={option.label} />
60
+ </Flex>
61
+ </FlexItem>
62
+ <FlexItem>
63
+ <Body color="light"
64
+ text={option.areaCode}
65
+ />
66
+ </FlexItem>
67
+ </>
68
+ </Dropdown.Option>
69
+ ))}
70
+ </Dropdown>
71
+ </div>
72
+ )
73
+ }
74
+
75
+ export default DropdownWithHook
@@ -0,0 +1,39 @@
1
+ import React from 'react'
2
+ import { Dropdown } from '../..'
3
+
4
+ const DropdownDefault = (props) => {
5
+
6
+ const options = [
7
+ {
8
+ label: "United States",
9
+ value: "United States",
10
+ },
11
+ {
12
+ label: "Canada",
13
+ value: "Canada",
14
+ },
15
+ {
16
+ label: "Pakistan",
17
+ value: "Pakistan",
18
+ }
19
+ ];
20
+
21
+
22
+ return (
23
+ <div>
24
+ <Dropdown
25
+ label="Select a Country"
26
+ options={options}
27
+ {...props}
28
+ >
29
+ {options.map((option) => (
30
+ <Dropdown.Option key={option.id}
31
+ option={option}
32
+ />
33
+ ))}
34
+ </Dropdown>
35
+ </div>
36
+ )
37
+ }
38
+
39
+ export default DropdownDefault
@@ -0,0 +1 @@
1
+ The optional `label` prop takes a string value that if present will render that string as the label for the Dropdown.
@@ -0,0 +1,15 @@
1
+ examples:
2
+
3
+
4
+ react:
5
+ - dropdown_default: Default
6
+ - dropdown_with_label: With Label
7
+ - dropdown_with_custom_options: Custom Options
8
+ - dropdown_with_custom_display: Custom Display
9
+ - dropdown_with_custom_trigger: Custom Trigger
10
+ - dropdown_with_custom_padding: Custom Padding for Dropdown Options
11
+ # - dropdown_with_autocomplete: Autocomplete
12
+ # - dropdown_with_autocomplete_and_custom_display: Autocomplete with Custom Display
13
+ # - dropdown_with_external_control: useDropdown Hook
14
+ # - dropdown_with_hook: useDropdown Hook with Any Trigger
15
+
@@ -0,0 +1,10 @@
1
+ export { default as DropdownDefault } from './_dropdown_default.jsx'
2
+ export { default as DropdownWithCustomDisplay } from './_dropdown_with_custom_display.jsx'
3
+ export { default as DropdownWithCustomOptions } from './_dropdown_with_custom_options.jsx'
4
+ export { default as DropdownWithCustomTrigger } from './_dropdown_with_custom_trigger.jsx'
5
+ export { default as DropdownWithAutocomplete } from './_dropdown_with_autocomplete.jsx'
6
+ export { default as DropdownWithAutocompleteAndCustomDisplay } from './_dropdown_with_autocomplete_and_custom_display.jsx'
7
+ export { default as DropdownWithCustomPadding } from './_dropdown_with_custom_padding.jsx'
8
+ export { default as DropdownWithLabel } from './_dropdown_with_label.jsx'
9
+ export { default as DropdownWithExternalControl } from './_dropdown_with_external_control.jsx'
10
+ export { default as DropdownWithHook } from './_dropdown_with_hook.jsx'
data/dist/menu.yml CHANGED
@@ -254,6 +254,10 @@ kits:
254
254
  platforms: *web
255
255
  description: Playbook's date picker is built using flatpickr, a vanilla js library. Common date picker use cases and features have been adapted into simple prop based configuration detailed in the docs below.
256
256
  status: "stable"
257
+ - name: dropdown
258
+ platforms: *react_only
259
+ description: ""
260
+ status: "beta"
257
261
  - name: "multi_level_select"
258
262
  platforms: *web
259
263
  description: The MultiLevelSelect kit renders a multi leveled select dropdown based on data from the user.
@@ -460,4 +464,4 @@ kits:
460
464
  - name: "user"
461
465
  platforms: *web
462
466
  description: This kit was created for having a systematic way of displaying users with avatar, titles, name and territory. This is a versatile kit with features than can be added to display more info.
463
- status: "stable"
467
+ status: "stable"