playbook_ui 4.15.0 → 4.15.1.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +0 -3
  3. data/app/pb_kits/playbook/data/menu.yml +0 -5
  4. data/app/pb_kits/playbook/index.js +1 -4
  5. data/app/pb_kits/playbook/packs/examples.js +0 -2
  6. data/app/pb_kits/playbook/pb_button/_button.jsx +1 -9
  7. data/app/pb_kits/playbook/pb_contact/_contact.jsx +0 -1
  8. data/app/pb_kits/playbook/pb_contact/contact.rb +0 -2
  9. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.html.erb +0 -5
  10. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.jsx +0 -4
  11. data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.html.erb +0 -6
  12. data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.jsx +0 -5
  13. data/app/pb_kits/playbook/pb_dashboard/pbChartsLightTheme.js +1 -26
  14. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.jsx +2 -2
  15. data/app/pb_kits/playbook/pb_filter/_filter.jsx +222 -1
  16. data/app/pb_kits/playbook/pb_filter/_filter.scss +13 -16
  17. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +41 -34
  18. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +9 -13
  19. data/app/pb_kits/playbook/pb_filter/docs/_filter_no_background.html.erb +74 -69
  20. data/app/pb_kits/playbook/pb_filter/docs/_filter_no_background.jsx +9 -12
  21. data/app/pb_kits/playbook/pb_filter/docs/_filter_only.html.erb +35 -28
  22. data/app/pb_kits/playbook/pb_filter/docs/_filter_only.jsx +6 -5
  23. data/app/pb_kits/playbook/pb_filter/docs/_filter_single.html.erb +41 -35
  24. data/app/pb_kits/playbook/pb_filter/docs/_filter_single.jsx +10 -12
  25. data/app/pb_kits/playbook/pb_filter/docs/_sort_only.html.erb +18 -12
  26. data/app/pb_kits/playbook/pb_filter/docs/_sort_only.jsx +44 -14
  27. data/app/pb_kits/playbook/pb_filter/templates/_default.html.erb +1 -1
  28. data/app/pb_kits/playbook/pb_layout/_body.jsx +26 -0
  29. data/app/pb_kits/playbook/pb_layout/_layout.jsx +14 -66
  30. data/app/pb_kits/playbook/pb_layout/_sidebar.jsx +26 -0
  31. data/app/pb_kits/playbook/pb_layout/docs/_layout_default.jsx +14 -0
  32. data/app/pb_kits/playbook/pb_layout/docs/example.yml +1 -4
  33. data/app/pb_kits/playbook/pb_layout/docs/index.js +1 -4
  34. data/app/pb_kits/playbook/pb_online_status/_online_status.jsx +14 -31
  35. data/app/pb_kits/playbook/pb_online_status/docs/example.yml +3 -3
  36. data/app/pb_kits/playbook/pb_online_status/docs/index.js +0 -1
  37. data/app/pb_kits/playbook/pb_popover/_popover.jsx +19 -26
  38. data/app/pb_kits/playbook/pb_popover/docs/_popover_portal.jsx +34 -0
  39. data/app/pb_kits/playbook/pb_popover/docs/_popover_with_button.html.erb +4 -0
  40. data/app/pb_kits/playbook/pb_popover/docs/example.yml +3 -0
  41. data/app/pb_kits/playbook/pb_popover/docs/index.js +2 -0
  42. data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_default.html.erb +1 -1
  43. data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_default.jsx +1 -1
  44. data/app/pb_kits/playbook/pb_stat_change/stat_change.rb +1 -1
  45. data/app/pb_kits/playbook/pb_timestamp/_timestamp.jsx +14 -39
  46. data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +3 -3
  47. data/app/pb_kits/playbook/pb_timestamp/docs/index.js +0 -1
  48. data/app/pb_kits/playbook/pb_title_detail/_title_detail.jsx +14 -47
  49. data/app/pb_kits/playbook/pb_title_detail/docs/example.yml +3 -3
  50. data/app/pb_kits/playbook/pb_title_detail/docs/index.js +0 -1
  51. data/app/pb_kits/playbook/plugins/pb_chart.js +1 -49
  52. data/app/pb_kits/playbook/tokens/_colors.scss +0 -4
  53. data/app/pb_kits/playbook/vendor.js +0 -3
  54. data/lib/playbook/version.rb +1 -1
  55. metadata +9 -52
  56. data/app/pb_kits/playbook/packs/kits/pb_progress_step.js +0 -2
  57. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.html.erb +0 -12
  58. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.scss +0 -6
  59. data/app/pb_kits/playbook/pb_circle_chart/circle_chart.rb +0 -81
  60. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.html.erb +0 -19
  61. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_inner_sizes.html.erb +0 -136
  62. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_labels.html.erb +0 -37
  63. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_legend_kit.html.erb +0 -22
  64. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_title.html.erb +0 -38
  65. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +0 -9
  66. data/app/pb_kits/playbook/pb_filter/Filter/CurrentFilters.jsx +0 -56
  67. data/app/pb_kits/playbook/pb_filter/Filter/FilterBackground.jsx +0 -26
  68. data/app/pb_kits/playbook/pb_filter/Filter/FilterDouble.jsx +0 -58
  69. data/app/pb_kits/playbook/pb_filter/Filter/FilterSingle.jsx +0 -46
  70. data/app/pb_kits/playbook/pb_filter/Filter/FiltersPopover.jsx +0 -37
  71. data/app/pb_kits/playbook/pb_filter/Filter/ResultsCount.jsx +0 -34
  72. data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.jsx +0 -85
  73. data/app/pb_kits/playbook/pb_filter/Filter/index.jsx +0 -26
  74. data/app/pb_kits/playbook/pb_layout/docs/_layout_colors.jsx +0 -63
  75. data/app/pb_kits/playbook/pb_layout/docs/_layout_sizes.jsx +0 -87
  76. data/app/pb_kits/playbook/pb_layout/docs/_layout_sizes_dark.jsx +0 -92
  77. data/app/pb_kits/playbook/pb_layout/docs/_layout_transparent.jsx +0 -24
  78. data/app/pb_kits/playbook/pb_online_status/docs/_online_status_default.jsx +0 -19
  79. data/app/pb_kits/playbook/pb_progress_step/_progress_step.html.erb +0 -6
  80. data/app/pb_kits/playbook/pb_progress_step/_progress_step.jsx +0 -35
  81. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +0 -388
  82. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.html.erb +0 -23
  83. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.jsx +0 -44
  84. data/app/pb_kits/playbook/pb_progress_step/docs/_description.md +0 -1
  85. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_dark.html.erb +0 -8
  86. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_dark.jsx +0 -18
  87. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.html.erb +0 -33
  88. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.jsx +0 -39
  89. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.html.erb +0 -33
  90. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.jsx +0 -40
  91. data/app/pb_kits/playbook/pb_progress_step/docs/example.yml +0 -12
  92. data/app/pb_kits/playbook/pb_progress_step/docs/index.js +0 -3
  93. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +0 -33
  94. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +0 -19
  95. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +0 -8
  96. data/app/pb_kits/playbook/pb_title_detail/docs/_title_detail_default.jsx +0 -26
  97. data/app/pb_kits/playbook/pb_tooltip/_tooltip.html.erb +0 -10
  98. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +0 -105
  99. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +0 -10
  100. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +0 -9
  101. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +0 -5
  102. data/app/pb_kits/playbook/pb_tooltip/index.js +0 -80
  103. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +0 -34
@@ -1,46 +0,0 @@
1
- /* @flow */
2
-
3
- import React from 'react'
4
- import { isEmpty } from 'lodash'
5
- import { Flex } from '../../'
6
-
7
- import CurrentFilters, { FilterDescription } from './CurrentFilters'
8
- import FilterBackground, { FilterBackgroundProps } from './FilterBackground'
9
- import FiltersPopover from './FiltersPopover'
10
- import ResultsCount from './ResultsCount'
11
- import SortMenu, { SortingChangeCallback, SortOptions, SortValue } from './SortMenu'
12
-
13
- export type FilterSingleProps = {
14
- children?: Node,
15
- filters?: FilterDescription,
16
- onSortChange?: SortingChangeCallback,
17
- results?: number,
18
- sortOptions?: SortOptions,
19
- sortValue?: SortValue,
20
- } & FilterBackgroundProps
21
-
22
- const FilterSingle = ({ onSortChange, sortOptions, sortValue, filters, results, children, ...bgProps }: FilterSingleProps) => (
23
- <FilterBackground {...bgProps}>
24
- <Flex
25
- orientation="row"
26
- vertical="center"
27
- >
28
- <If condition={children}>
29
- <FiltersPopover>
30
- {children}
31
- </FiltersPopover>
32
- <CurrentFilters filters={filters} />
33
- </If>
34
- <ResultsCount results={results} />
35
- <If condition={!isEmpty(sortOptions)}>
36
- <SortMenu
37
- onChange={onSortChange}
38
- options={sortOptions}
39
- value={sortValue}
40
- />
41
- </If>
42
- </Flex>
43
- </FilterBackground>
44
- )
45
-
46
- export default FilterSingle
@@ -1,37 +0,0 @@
1
- /* @flow */
2
-
3
- import React, { Node, useState } from 'react'
4
- import { CircleIconButton, PbReactPopover } from '../../'
5
-
6
- const FiltersPopoverProps = { children: Node }
7
- const FiltersPopover = ({ children }: FiltersPopoverProps) => {
8
- const [hide, updateHide] = useState(true)
9
- const toggle = () => updateHide(!hide)
10
-
11
- const filterButton = (
12
- <CircleIconButton
13
- icon="filter"
14
- id="filter"
15
- onClick={toggle}
16
- text="filter"
17
- variant="secondary"
18
- />
19
- )
20
-
21
- return (
22
- <PbReactPopover
23
- closeOnClick="outside"
24
- offset
25
- placement="bottom"
26
- reference={filterButton}
27
- shouldClosePopover={updateHide}
28
- show={!hide}
29
- >
30
- <div className="pb-form">
31
- {children}
32
- </div>
33
- </PbReactPopover>
34
- )
35
- }
36
-
37
- export default FiltersPopover
@@ -1,34 +0,0 @@
1
- /* @flow */
2
-
3
- import React from 'react'
4
- import { Caption, TitleCount } from '../../'
5
-
6
- const resultsText = (results: number): string => results == 1 ? 'Result' : 'Results'
7
-
8
- type ResultsCountProps = {
9
- results?: ?number,
10
- title?: boolean,
11
- }
12
- const ResultsCount = ({ results, title }: ResultsCountProps) => (
13
- <Choose>
14
- <When condition={results && title}>
15
- <TitleCount
16
- align="center"
17
- count={results}
18
- title={`${resultsText(results)}:`}
19
- />
20
- </When>
21
- <When condition={results}>
22
- <Caption
23
- className="filter-results"
24
- size="xs"
25
- text={`${results} ${resultsText(results)}`}
26
- />
27
- </When>
28
- <Otherwise>
29
- <div />
30
- </Otherwise>
31
- </Choose>
32
- )
33
-
34
- export default ResultsCount
@@ -1,85 +0,0 @@
1
- /* @flow */
2
-
3
- import React, { useState } from 'react'
4
- import { find, map, partial } from 'lodash'
5
- import { Button, Icon, List, ListItem, PbReactPopover } from '../../'
6
-
7
- export type Direction = 'asc' | 'desc'
8
- export type SortOptions = { [name: string]: string }
9
- export type SortValue = { name: string, dir: Direction }
10
- export type SortingChangeCallback = (SortValue[]) => void
11
-
12
- const nextValue = (value: SortValue[], name: string): Direction => {
13
- const current = find(value, { name })
14
- return {
15
- name,
16
- dir: current && current.dir == 'asc' ? 'desc' : 'asc',
17
- }
18
- }
19
-
20
- const directionIcon = (dir: Direction) => (
21
- dir == 'asc' ? 'sort-amount-up' : 'sort-amount-down'
22
- )
23
-
24
- const renderOptions = (options: SortOptions, value: SortValue[], handleChange: (SortValue) => void) => (
25
- map(options, (label, name) => {
26
- const next = nextValue(value, name)
27
- return (
28
- <ListItem key={`option-${next.name}-${next.dir}`}>
29
- <Button
30
- icon={directionIcon(next.dir)}
31
- onClick={partial(handleChange, next)}
32
- text={` ${label}`}
33
- variant="link"
34
- />
35
- </ListItem>
36
- )
37
- })
38
- )
39
-
40
- export type SortMenuProps = {
41
- value?: SortValue[],
42
- options: SortOptions,
43
- onChange: SortingChangeCallback,
44
- }
45
- const SortMenu = ({ options, value, onChange }: SortMenuProps) => {
46
- const [hide, updateHide] = useState(true)
47
- const toggle = () => updateHide(!hide)
48
- const handleChange = (value: SortValue) => {
49
- updateHide(true)
50
- onChange([value])
51
- }
52
-
53
- const sortButton = (
54
- <Button
55
- id="sort-button"
56
- onClick={toggle}
57
- variant="link"
58
- >
59
- {map(value, ({ dir, name }) => (
60
- <span key={`current-sort-${name}-${dir}`}>
61
- <Icon icon={directionIcon(dir)} />
62
- {` ${options[name]}`}
63
- </span>
64
- ))}
65
- </Button>
66
- )
67
-
68
- return (
69
- <PbReactPopover
70
- className="pb_filter_sort_menu"
71
- closeOnClick="outside"
72
- offset
73
- placement="bottom"
74
- reference={sortButton}
75
- shouldClosePopover={updateHide}
76
- show={!hide}
77
- >
78
- <List>
79
- {renderOptions(options, value, handleChange)}
80
- </List>
81
- </PbReactPopover>
82
- )
83
- }
84
-
85
- export default SortMenu
@@ -1,26 +0,0 @@
1
- /* @flow */
2
-
3
- import React from 'react'
4
-
5
- import FilterSingle, { FilterSingleProps } from './FilterSingle'
6
- import FilterDouble, { FilterDoubleProps } from './FilterDouble'
7
-
8
- type FilterProps = FilterSingleProps | FilterDoubleProps & {
9
- double?: boolean,
10
- }
11
-
12
- const Filter = ({
13
- double = false,
14
- ...templateProps
15
- }: FilterProps) => (
16
- <Choose>
17
- <When condition={double}>
18
- <FilterDouble {...templateProps} />
19
- </When>
20
- <Otherwise>
21
- <FilterSingle {...templateProps} />
22
- </Otherwise>
23
- </Choose>
24
- )
25
-
26
- export default Filter
@@ -1,63 +0,0 @@
1
- import React from 'react'
2
- import { Body, Layout } from '../../'
3
-
4
- const LayoutColor = () => {
5
- return (
6
- <div>
7
- <Layout
8
- collapse="md"
9
- position="left"
10
- size="sm"
11
- >
12
- <Layout.Side>
13
- {'Light'}
14
- </Layout.Side>
15
- <Layout.Body>
16
- {'Body'}
17
- </Layout.Body>
18
- </Layout>
19
-
20
- <br />
21
- <br />
22
-
23
- <Layout
24
- collapse="md"
25
- position="left"
26
- size="sm"
27
- variant="dark"
28
- >
29
- <Layout.Side>
30
- <Body
31
- dark
32
- text="Dark"
33
- />
34
- </Layout.Side>
35
- <Layout.Body>
36
- {'Body'}
37
- </Layout.Body>
38
- </Layout>
39
-
40
- <br />
41
- <br />
42
-
43
- <Layout
44
- collapse="md"
45
- position="left"
46
- size="sm"
47
- variant="gradient"
48
- >
49
- <Layout.Side>
50
- <Body
51
- dark
52
- text="Gradient"
53
- />
54
- </Layout.Side>
55
- <Layout.Body>
56
- {'Body'}
57
- </Layout.Body>
58
- </Layout>
59
- </div>
60
- )
61
- }
62
-
63
- export default LayoutColor
@@ -1,87 +0,0 @@
1
- import React from 'react'
2
- import { Layout } from '../../'
3
-
4
- const LayoutSizes = () => {
5
- return (
6
- <div>
7
- <Layout
8
- collapse="xs"
9
- position="left"
10
- size="xs"
11
- >
12
- <Layout.Side>
13
- {'Side'}
14
- </Layout.Side>
15
- <Layout.Body>
16
- {'Body'}
17
- </Layout.Body>
18
- </Layout>
19
-
20
- <br />
21
- <br />
22
-
23
- <Layout
24
- collapse="xs"
25
- position="left"
26
- size="sm"
27
- >
28
- <Layout.Side>
29
- {'Side'}
30
- </Layout.Side>
31
- <Layout.Body>
32
- {'Body'}
33
- </Layout.Body>
34
- </Layout>
35
-
36
- <br />
37
- <br />
38
-
39
- <Layout
40
- collapse="xs"
41
- position="left"
42
- size="md"
43
- >
44
- <Layout.Side>
45
- {'Side'}
46
- </Layout.Side>
47
- <Layout.Body>
48
- {'Body'}
49
- </Layout.Body>
50
- </Layout>
51
-
52
- <br />
53
- <br />
54
-
55
- <Layout
56
- collapse="xs"
57
- position="left"
58
- size="lg"
59
- >
60
- <Layout.Side>
61
- {'Side'}
62
- </Layout.Side>
63
- <Layout.Body>
64
- {'Body'}
65
- </Layout.Body>
66
- </Layout>
67
-
68
- <br />
69
- <br />
70
-
71
- <Layout
72
- collapse="xs"
73
- position="left"
74
- size="xl"
75
- >
76
- <Layout.Side>
77
- {'Side'}
78
- </Layout.Side>
79
- <Layout.Body>
80
- {'Body'}
81
- </Layout.Body>
82
- </Layout>
83
- </div>
84
- )
85
- }
86
-
87
- export default LayoutSizes
@@ -1,92 +0,0 @@
1
- import React from 'react'
2
- import { Layout } from '../../'
3
-
4
- const LayoutSizesDark = () => {
5
- return (
6
- <div>
7
- <Layout
8
- collapse="xs"
9
- position="left"
10
- size="xs"
11
- variant="dark"
12
- >
13
- <Layout.Side>
14
- {'Side'}
15
- </Layout.Side>
16
- <Layout.Body>
17
- {'Body'}
18
- </Layout.Body>
19
- </Layout>
20
-
21
- <br />
22
- <br />
23
-
24
- <Layout
25
- collapse="xs"
26
- position="left"
27
- size="sm"
28
- variant="dark"
29
- >
30
- <Layout.Side>
31
- {'Side'}
32
- </Layout.Side>
33
- <Layout.Body>
34
- {'Body'}
35
- </Layout.Body>
36
- </Layout>
37
-
38
- <br />
39
- <br />
40
-
41
- <Layout
42
- collapse="xs"
43
- position="left"
44
- size="md"
45
- variant="dark"
46
- >
47
- <Layout.Side>
48
- {'Side'}
49
- </Layout.Side>
50
- <Layout.Body>
51
- {'Body'}
52
- </Layout.Body>
53
- </Layout>
54
-
55
- <br />
56
- <br />
57
-
58
- <Layout
59
- collapse="xs"
60
- position="left"
61
- size="lg"
62
- variant="dark"
63
- >
64
- <Layout.Side>
65
- {'Side'}
66
- </Layout.Side>
67
- <Layout.Body>
68
- {'Body'}
69
- </Layout.Body>
70
- </Layout>
71
-
72
- <br />
73
- <br />
74
-
75
- <Layout
76
- collapse="xs"
77
- position="left"
78
- size="xl"
79
- variant="dark"
80
- >
81
- <Layout.Side>
82
- {'Side'}
83
- </Layout.Side>
84
- <Layout.Body>
85
- {'Body'}
86
- </Layout.Body>
87
- </Layout>
88
- </div>
89
- )
90
- }
91
-
92
- export default LayoutSizesDark
@@ -1,24 +0,0 @@
1
- import React from 'react'
2
- import { Layout } from '../../'
3
-
4
- const LayoutTransparent = () => {
5
- return (
6
- <div>
7
- <Layout
8
- collapse="sm"
9
- position="left"
10
- size="xs"
11
- transparent
12
- >
13
- <Layout.Side>
14
- {'Side'}
15
- </Layout.Side>
16
- <Layout.Body>
17
- {'Body'}
18
- </Layout.Body>
19
- </Layout>
20
- </div>
21
- )
22
- }
23
-
24
- export default LayoutTransparent
@@ -1,19 +0,0 @@
1
- import React from 'react'
2
- import { OnlineStatus } from '../../'
3
-
4
- const OnlineStatusDefault = () => (
5
- <>
6
- <OnlineStatus status="offline" />
7
-
8
- <br />
9
-
10
- <OnlineStatus status="online" />
11
-
12
- <br />
13
-
14
- <OnlineStatus status="away" />
15
-
16
- </>
17
- )
18
-
19
- export default OnlineStatusDefault
@@ -1,6 +0,0 @@
1
- <%= content_tag(:div,
2
- id: object.id,
3
- data: object.data,
4
- class: object.classname) do %>
5
- <%= capture(&object.children) %>
6
- <% end %>
@@ -1,35 +0,0 @@
1
- /* @flow */
2
-
3
- import React from 'react'
4
- import classnames from 'classnames'
5
- import { buildCss } from '../utilities/props'
6
-
7
- type ProgressStepProps = {
8
- className?: String,
9
- data?: String,
10
- id?: String,
11
- children?: Array<React.ReactChild>,
12
- orientation?: 'horizontal' | 'vertical',
13
- icon?: Boolean,
14
- dark?: Boolean,
15
- }
16
-
17
- const ProgressStep = ({
18
- className,
19
- children,
20
- orientation = 'horizontal',
21
- icon = false,
22
- dark = false,
23
- }: ProgressStepProps) => {
24
- const iconStyle = icon === true ? 'icon' : ''
25
- const darkStyle = dark === true ? 'dark' : ''
26
- const progressStepCss = buildCss('pb_progress_step_kit', orientation, iconStyle, darkStyle)
27
-
28
- return (
29
- <div className={classnames(progressStepCss, className)}>
30
- {children}
31
- </div>
32
- )
33
- }
34
-
35
- export default ProgressStep