playbook_ui 14.9.0.pre.alpha.PLAY1731inputmasking4927 → 14.9.0.pre.alpha.PLAY16264818

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +3 -5
  3. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +2 -0
  4. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.jsx +49 -53
  5. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom_rails.html.erb +36 -29
  6. data/app/pb_kits/playbook/pb_body/_body.scss +13 -14
  7. data/app/pb_kits/playbook/pb_body/_body_mixins.scss +16 -22
  8. data/app/pb_kits/playbook/pb_bread_crumbs/docs/_bread_crumbs_default.jsx +0 -6
  9. data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +1 -2
  10. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -1
  11. data/app/pb_kits/playbook/pb_collapsible/_collapsible.tsx +4 -9
  12. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.tsx +2 -2
  13. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.tsx +2 -2
  14. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +0 -5
  15. data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +2 -7
  16. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +2 -8
  17. data/app/pb_kits/playbook/pb_link/_link.scss +3 -3
  18. data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +1 -11
  19. data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +2 -16
  20. data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +1 -1
  21. data/app/pb_kits/playbook/pb_select/_select.tsx +19 -14
  22. data/app/pb_kits/playbook/pb_select/docs/_select_form.jsx +108 -0
  23. data/app/pb_kits/playbook/pb_select/docs/example.yml +1 -0
  24. data/app/pb_kits/playbook/pb_select/docs/index.js +1 -0
  25. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +4 -4
  26. data/app/pb_kits/playbook/pb_selectable_card/selectable_card.html.erb +1 -1
  27. data/app/pb_kits/playbook/pb_stat_change/_stat_change.tsx +36 -44
  28. data/app/pb_kits/playbook/pb_stat_change/stat_change.html.erb +4 -4
  29. data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -5
  30. data/app/pb_kits/playbook/pb_table/docs/index.js +0 -5
  31. data/app/pb_kits/playbook/pb_table/index.ts +26 -100
  32. data/app/pb_kits/playbook/pb_table/styles/_all.scss +1 -2
  33. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +1 -106
  34. data/app/pb_kits/playbook/pb_table/table.html.erb +1 -1
  35. data/app/pb_kits/playbook/pb_table/table.rb +2 -17
  36. data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +3 -35
  37. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +0 -1
  38. data/app/pb_kits/playbook/pb_text_input/docs/index.js +0 -1
  39. data/app/pb_kits/playbook/pb_text_input/text_input.test.js +2 -139
  40. data/app/pb_kits/playbook/pb_title/_title.scss +5 -6
  41. data/app/pb_kits/playbook/pb_title/_title_mixin.scss +0 -13
  42. data/app/pb_kits/playbook/tokens/_titles.scss +8 -0
  43. data/app/pb_kits/playbook/utilities/_hover.scss +2 -11
  44. data/app/pb_kits/playbook/utilities/globalProps.ts +0 -2
  45. data/app/pb_kits/playbook/utilities/hookFormProps.ts +16 -0
  46. data/app/pb_kits/playbook/utilities/test/globalProps/hover.test.js +0 -15
  47. data/dist/chunks/_typeahead-B8fkIeXA.js +22 -0
  48. data/dist/chunks/_weekday_stacked-DxlPBh55.js +45 -0
  49. data/dist/chunks/{lib-CuCy3_xO.js → lib-SyD3buPZ.js} +3 -3
  50. data/dist/chunks/{pb_form_validation-D37k10a0.js → pb_form_validation-Dt8UJgrJ.js} +1 -1
  51. data/dist/chunks/vendor.js +1 -1
  52. data/dist/menu.yml +1 -1
  53. data/dist/playbook-doc.js +1 -1
  54. data/dist/playbook-rails-react-bindings.js +1 -1
  55. data/dist/playbook-rails.js +1 -1
  56. data/dist/playbook.css +1 -1
  57. data/lib/playbook/hover.rb +1 -7
  58. data/lib/playbook/version.rb +1 -1
  59. metadata +8 -20
  60. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns.html.erb +0 -95
  61. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +0 -75
  62. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.md +0 -1
  63. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx +0 -108
  64. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.md +0 -2
  65. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.jsx +0 -94
  66. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.md +0 -0
  67. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.jsx +0 -83
  68. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.md +0 -3
  69. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.jsx +0 -120
  70. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.md +0 -1
  71. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +0 -35
  72. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.jsx +0 -88
  73. data/app/pb_kits/playbook/pb_text_input/inputMask.ts +0 -64
  74. data/dist/chunks/_typeahead-l1kq1p9m.js +0 -22
  75. data/dist/chunks/_weekday_stacked-B28kYXl9.js +0 -45
@@ -1,120 +0,0 @@
1
- import React from 'react'
2
- import {Pill, Background, Table, Icon} from "playbook-ui"
3
-
4
- const TableWithCollapsibleWithNestedTable = (props) => {
5
-
6
- const Content = () => {
7
- return (
8
- <Table
9
- borderRadius="none"
10
- container={false}
11
- size="sm"
12
- {...props}
13
- >
14
- <Table.Head>
15
- <Background
16
- tag="tr"
17
- {...props}
18
- >
19
- <Table.Header>{"Alt Header"}</Table.Header>
20
- <Table.Header>{"Alt Header"}</Table.Header>
21
- <Table.Header>{"Alt Header"}</Table.Header>
22
- <Table.Header>{"Alt Header"}</Table.Header>
23
- </Background>
24
- </Table.Head>
25
- <Table.Body>
26
- <Table.Row>
27
- <Table.Cell>{"Expanded"}</Table.Cell>
28
- <Table.Cell>{"Expanded"}</Table.Cell>
29
- <Table.Cell>{"Expanded"}</Table.Cell>
30
- <Table.Cell>
31
- <Pill text="Pill"
32
- variant="primary"
33
- {...props}
34
- />
35
- </Table.Cell>
36
- </Table.Row>
37
- <Table.Row>
38
- <Table.Cell>{"Expanded"}</Table.Cell>
39
- <Table.Cell>{"Expanded"}</Table.Cell>
40
- <Table.Cell>{"Expanded"}</Table.Cell>
41
- <Table.Cell>
42
- <Pill text="Pill"
43
- variant="primary"
44
- {...props}
45
- />
46
- </Table.Cell>
47
- </Table.Row>
48
- <Table.Row>
49
- <Table.Cell>{"Expanded"}</Table.Cell>
50
- <Table.Cell>{"Expanded"}</Table.Cell>
51
- <Table.Cell>{"Expanded"}</Table.Cell>
52
- <Table.Cell>
53
- <Pill text="Pill"
54
- variant="primary"
55
- {...props}
56
- />
57
- </Table.Cell>
58
- </Table.Row>
59
- </Table.Body>
60
- </Table>
61
- );
62
- };
63
-
64
- return (
65
- <Table
66
- size="sm"
67
- {...props}
68
- >
69
- <Table.Head>
70
- <Table.Row>
71
- <Table.Header>{'Column 1'}</Table.Header>
72
- <Table.Header>{'Column 2'}</Table.Header>
73
- <Table.Header>{'Column 3'}</Table.Header>
74
- <Table.Header>{'Column 4'}</Table.Header>
75
- <Table.Header>{'Column 5'}</Table.Header>
76
- <Table.Header>{''}</Table.Header>
77
- </Table.Row>
78
-
79
- </Table.Head>
80
- <Table.Body>
81
- <Table.Row collapsible
82
- collapsibleContent={<Content/>}
83
- collapsibleSideHighlight={false}
84
- >
85
- <Table.Cell>{'Value 1'}</Table.Cell>
86
- <Table.Cell>{'Value 2'}</Table.Cell>
87
- <Table.Cell>{'Value 3'}</Table.Cell>
88
- <Table.Cell>{'Value 4'}</Table.Cell>
89
- <Table.Cell>{'Value 5'}</Table.Cell>
90
- <Table.Cell textAlign="right">{
91
- <Icon
92
- color="primary"
93
- fixedWidth
94
- icon="chevron-down"
95
- />}
96
- </Table.Cell>
97
-
98
- </Table.Row>
99
- <Table.Row>
100
- <Table.Cell>{'Value 1'}</Table.Cell>
101
- <Table.Cell>{'Value 2'}</Table.Cell>
102
- <Table.Cell>{'Value 3'}</Table.Cell>
103
- <Table.Cell>{'Value 4'}</Table.Cell>
104
- <Table.Cell>{'Value 5'}</Table.Cell>
105
- <Table.Cell>{''}</Table.Cell>
106
- </Table.Row>
107
- <Table.Row>
108
- <Table.Cell>{'Value 1'}</Table.Cell>
109
- <Table.Cell>{'Value 2'}</Table.Cell>
110
- <Table.Cell>{'Value 3'}</Table.Cell>
111
- <Table.Cell>{'Value 4'}</Table.Cell>
112
- <Table.Cell>{'Value 5'}</Table.Cell>
113
- <Table.Cell>{''}</Table.Cell>
114
- </Table.Row>
115
- </Table.Body>
116
- </Table>
117
- )
118
- }
119
-
120
- export default TableWithCollapsibleWithNestedTable
@@ -1 +0,0 @@
1
- The `collapsibleContent` can also be used to display nested Tables within each Row.
@@ -1,35 +0,0 @@
1
- @import "../../tokens/colors";
2
-
3
- .table_collapsible_side_highlight {
4
- border-left: 4px solid $primary;
5
- &.dark {
6
- border-left: 4px solid $active_dark;
7
- }
8
- }
9
-
10
- [class^="pb_table"] {
11
- &.table-sm,
12
- &.table-md,
13
- &.table-lg {
14
- &.table-card {
15
- tbody,
16
- .pb_table_tbody {
17
- tr,
18
- .pb_table_tr {
19
- &.collapsible_table_row {
20
- td,
21
- .pb_table_td {
22
- border-bottom-color: transparent;
23
- }
24
- &:hover {
25
- td,
26
- .pb_table_td {
27
- border-bottom-color: darken($border_light, 10%);
28
- }
29
- }
30
- }
31
- }
32
- }
33
- }
34
- }
35
- }
@@ -1,88 +0,0 @@
1
- import React, { useState } from 'react'
2
-
3
- import Caption from '../../pb_caption/_caption'
4
- import TextInput from '../../pb_text_input/_text_input'
5
- import Title from '../../pb_title/_title'
6
-
7
- const TextInputMask = (props) => {
8
- const [ssn, setSSN] = useState('')
9
- const handleOnChangeSSN = ({ target }) => {
10
- setSSN(target.value)
11
- }
12
- const ref = React.createRef()
13
-
14
- const [formFields, setFormFields] = useState({
15
- currency: '',
16
- zipCode: '',
17
- postalCode: '',
18
- ssn: '',
19
- })
20
-
21
- const handleOnChangeFormField = ({ target }) => {
22
- const { name, value } = target
23
- setFormFields({ ...formFields, [name]: value })
24
- }
25
-
26
- return (
27
- <div>
28
- <TextInput
29
- label="Currency"
30
- mask="currency"
31
- name="currency"
32
- onChange={handleOnChangeFormField}
33
- value={formFields.currency}
34
- {...props}
35
- />
36
- <TextInput
37
- label="Zip Code"
38
- mask="zipCode"
39
- name="zipCode"
40
- onChange={handleOnChangeFormField}
41
- value={formFields.zipCode}
42
- {...props}
43
- />
44
- <TextInput
45
- label="Postal Code"
46
- mask="postalCode"
47
- name="postalCode"
48
- onChange={handleOnChangeFormField}
49
- value={formFields.postalCode}
50
- {...props}
51
- />
52
- <TextInput
53
- label="SSN"
54
- mask="ssn"
55
- name="ssn"
56
- onChange={handleOnChangeFormField}
57
- value={formFields.ssn}
58
- {...props}
59
- />
60
-
61
- <br />
62
- <br />
63
-
64
- <Title>{'Event Handler Props'}</Title>
65
-
66
- <br />
67
- <Caption>{'onChange'}</Caption>
68
-
69
- <br />
70
-
71
- <TextInput
72
- label="SSN"
73
- mask="ssn"
74
- onChange={handleOnChangeSSN}
75
- placeholder="Enter SSN"
76
- ref={ref}
77
- value={ssn}
78
- {...props}
79
- />
80
-
81
- {ssn !== '' && (
82
- <React.Fragment>{`SSN is: ${ssn}`}</React.Fragment>
83
- )}
84
- </div>
85
- )
86
- }
87
-
88
- export default TextInputMask
@@ -1,64 +0,0 @@
1
- type InputMask = {
2
- format: (value: string) => string
3
- pattern: string
4
- placeholder: string
5
- }
6
-
7
- type InputMaskDictionary = {
8
- [key in 'currency' | 'zipCode' | 'postalCode' | 'ssn']: InputMask
9
- }
10
-
11
- const formatCurrency = (value: string): string => {
12
- const numericValue = value.replace(/[^0-9]/g, '').slice(0, 15)
13
-
14
- if (!numericValue) return ''
15
-
16
- const dollars = parseFloat((parseInt(numericValue) / 100).toFixed(2))
17
- if (dollars === 0) return ''
18
-
19
- return new Intl.NumberFormat('en-US', {
20
- style: 'currency',
21
- currency: 'USD',
22
- maximumFractionDigits: 2,
23
- }).format(dollars)
24
- }
25
-
26
- const formatBasicPostal = (value: string): string => {
27
- return value.replace(/\D/g, '').slice(0, 5)
28
- }
29
-
30
- const formatExtendedPostal = (value: string): string => {
31
- const cleaned = value.replace(/\D/g, '').slice(0, 9)
32
- return cleaned.replace(/(\d{5})(?=\d)/, '$1-')
33
- }
34
-
35
- const formatSSN = (value: string): string => {
36
- const cleaned = value.replace(/\D/g, '').slice(0, 9)
37
- return cleaned
38
- .replace(/(\d{5})(?=\d)/, '$1-')
39
- .replace(/(\d{3})(?=\d)/, '$1-')
40
- }
41
-
42
- export const INPUTMASKS: InputMaskDictionary = {
43
- currency: {
44
- format: formatCurrency,
45
- // eslint-disable-next-line no-useless-escape
46
- pattern: '^\\$\\d{1,3}(?:,\\d{3})*(?:\\.\\d{2})?$',
47
- placeholder: '$0.00',
48
- },
49
- zipCode: {
50
- format: formatBasicPostal,
51
- pattern: '\\d{5}',
52
- placeholder: '12345',
53
- },
54
- postalCode: {
55
- format: formatExtendedPostal,
56
- pattern: '\\d{5}-\\d{4}',
57
- placeholder: '12345-6789',
58
- },
59
- ssn: {
60
- format: formatSSN,
61
- pattern: '\\d{3}-\\d{2}-\\d{4}',
62
- placeholder: '123-45-6789',
63
- },
64
- }