playbook_ui 13.22.0.pre.alpha.playbookgemspecrailsversion2608 → 13.23.0.pre.alpha.PLAY1284investigation2657

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0c894084e0c1cc07610f03f36b5b43f12d06424972c05f2df62ede911084d298
4
- data.tar.gz: b4205145f75c04ae2c6aaf96a4df45a997d66d021ecba6109d70e457b6b24d06
3
+ metadata.gz: 8f32666e4b2500b014dc2554c3ebf3f5f4e3695cc726a3fc1d53bf5b332455a5
4
+ data.tar.gz: ff93821e0818cfbf57b09ece3fe03ce0c5459e4d29161f896d5771a3e8eb3761
5
5
  SHA512:
6
- metadata.gz: 26098e286c2d7a637eeaef8c45707cbada6ce224b2f99bbb7fdca1c7b171ffaded0d6c3aa03b5334740435a841dcdcbcbdaaadfb93c741e975215ff5f8fc0ca7
7
- data.tar.gz: d37f71b2b857b5d475f16228602ed2b6cabd796ee29c15e501a5c415b59b06b6bda5665d324725cb1090aaa7693abcb7de6508ac0b78419145c35de2ad2a5f3b
6
+ metadata.gz: 93c9e3de45864e757c047b19dd7eeed12610d97f234a160183143155ab0dbb88ea6087414e212ffd1037eff4064b239ba7eecfbb30627753f4b4ab1bfcacf1a9
7
+ data.tar.gz: a5264af573a6eac322795be8739d2a3974a72085e3d5d163b79f4b1882899483b5e82f5205c1ced23c85d1dcc10f53d67570c3067645169fe9cf41f08062eca6
@@ -1,9 +1,4 @@
1
- <%= content_tag(:div,
2
- id: object.id,
3
- data: object.data.merge(initials: object.initials),
4
- class: object.classname,
5
- aria: object.aria,
6
- **combined_html_options) do %>
1
+ <%= object.pb_content_tag(:div, data: object.data.merge(initials: object.initials)) do %>
7
2
  <%= content_tag(:div, data: { initials: object.initials }, class: "avatar_wrapper") do %>
8
3
  <%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error }) if object.image_url.present? %>
9
4
  <% end %>
@@ -13,12 +13,12 @@ import classnames from "classnames";
13
13
 
14
14
  type BarGraphProps = {
15
15
  align?: "left" | "right" | "center";
16
- axisTitle: string;
16
+ axisTitle: { name: string; }[] | string;
17
17
  dark?: boolean;
18
18
  xAxisCategories: [];
19
19
  yAxisMin: number;
20
20
  yAxisMax: number;
21
- chartData: { name: string; data: number[] }[];
21
+ chartData: { name: string; data: number[], yAxis: number }[];
22
22
  className?: string;
23
23
  customOptions?: Partial<Highcharts.Options>;
24
24
  id: string;
@@ -37,6 +37,7 @@ type BarGraphProps = {
37
37
  y?: number;
38
38
  aria?: { [key: string]: string };
39
39
  data?: { [key: string]: string };
40
+ axisFormat?: { format: string; }[] | string;
40
41
  };
41
42
 
42
43
 
@@ -51,6 +52,7 @@ const BarGraph = ({
51
52
  colors,
52
53
  htmlOptions = {},
53
54
  customOptions = {},
55
+ axisFormat,
54
56
  id,
55
57
  pointStart,
56
58
  subTitle,
@@ -67,7 +69,7 @@ const BarGraph = ({
67
69
  x = 0,
68
70
  y = 0,
69
71
  ...props
70
- }: BarGraphProps): React.ReactElement => {
72
+ }: BarGraphProps): React.ReactElement => {
71
73
  const ariaProps = buildAriaProps(aria);
72
74
  const dataProps = buildDataProps(data)
73
75
  const htmlProps = buildHtmlProps(htmlOptions);
@@ -89,13 +91,18 @@ const BarGraph = ({
89
91
  subtitle: {
90
92
  text: subTitle,
91
93
  },
92
- yAxis: {
94
+ yAxis: [{
95
+ labels: {
96
+ format: typeof axisFormat === 'string' ? axisFormat : (axisFormat && axisFormat[0] ? axisFormat[0].format : "")
97
+
98
+ },
93
99
  min: yAxisMin,
94
100
  max: yAxisMax,
101
+ opposite: false,
95
102
  title: {
96
- text: axisTitle,
97
- },
98
- },
103
+ text: typeof axisTitle === 'string' ? axisTitle : axisTitle[0].name,
104
+ }
105
+ }],
99
106
  xAxis: {
100
107
  categories: xAxisCategories,
101
108
  },
@@ -124,6 +131,20 @@ const BarGraph = ({
124
131
  credits: false,
125
132
  };
126
133
 
134
+ if (Array.isArray(axisTitle) && axisTitle.length > 1 && axisTitle[1].name) {
135
+ staticOptions.yAxis.push({
136
+ labels: {
137
+ format: typeof axisFormat === 'string' ? axisFormat : axisFormat[1].format,
138
+ },
139
+ min: yAxisMin,
140
+ max: yAxisMax,
141
+ opposite: true,
142
+ title: {
143
+ text: axisTitle[1].name,
144
+ }
145
+ });
146
+ }
147
+
127
148
  if (!toggleLegendClick) {
128
149
  staticOptions.plotOptions.series.events = { legendItemClick: () => false };
129
150
  }
@@ -7,6 +7,7 @@ module Playbook
7
7
  values: %w[left right center],
8
8
  default: "center"
9
9
  prop :axis_title
10
+ prop :axis_format
10
11
  prop :chart_data, type: Playbook::Props::Array,
11
12
  default: []
12
13
  prop :custom_options, default: {}
@@ -51,6 +52,7 @@ module Playbook
51
52
  title: title,
52
53
  subTitle: subtitle,
53
54
  axisTitle: axis_title,
55
+ axisFormat: axis_format,
54
56
  pointStart: point_start,
55
57
  xAxisCategories: x_axis_categories,
56
58
  yAxisMin: y_axis_min,
@@ -0,0 +1,26 @@
1
+ <% data = [{
2
+ name: 'Number of Installations',
3
+ data: [1475,200,3000,654,656]
4
+ }, {
5
+ type: 'spline',
6
+ name: 'Percentage',
7
+ data: [48, 70, 25, 55, 72],
8
+ color: '#F9BB00',
9
+ yAxis: 1
10
+ }] %>
11
+
12
+ <% axis_titles = [{name: "Number of Installations"}, {name: "Percentage"}] %>
13
+
14
+ <% axis_formats = [{format: ""}, {format: "{value}%"}] %>
15
+
16
+ <%= pb_rails("bar_graph", props: {
17
+ axis_format: axis_formats,
18
+ axis_title: axis_titles,
19
+ chart_data: data,
20
+ id: "bar-spline",
21
+ y_axis_min: 0,
22
+ x_axis_categories:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
23
+ subtitle: 'Source: thesolarfoundation.com',
24
+ title: 'Bar Graph with Secondary Y-axis',
25
+ legend: true,
26
+ }) %>
@@ -0,0 +1,36 @@
1
+ import React from 'react'
2
+
3
+ import BarGraph from '../_bar_graph'
4
+
5
+ const chartData = [{
6
+ name: 'Number of Installations',
7
+ data: [1475, 200, 3000, 654, 656],
8
+ }, {
9
+ type: 'spline',
10
+ name: 'Percentage',
11
+ data: [48, 70, 25, 55, 72],
12
+ color: '#F9BB00',
13
+ yAxis: 1
14
+ }]
15
+
16
+ const axisTitles = [ {name: "Number of Installations"}, {name: "Percentage"}]
17
+
18
+ const axisFormats = [{format: ""}, {format: "{value}%"}]
19
+
20
+ const BarGraphSecondaryYAxis= (props) => (
21
+ <div>
22
+ <BarGraph
23
+ axisFormat={axisFormats}
24
+ axisTitle={axisTitles}
25
+ chartData={chartData}
26
+ id="bar-spline"
27
+ legend
28
+ title="Bar Graph with Secondary Y-axis"
29
+ xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May']}
30
+ yAxisMin={0}
31
+ {...props}
32
+ />
33
+ </div>
34
+ )
35
+
36
+ export default BarGraphSecondaryYAxis
@@ -0,0 +1,3 @@
1
+ Optionally add a second yAxis to support secondary datasets (e.x., a spline) by passing` yAxis: 1` to the second node of your `chartData` array.
2
+
3
+ To customize the format and/or title of your secondary yAxis, pass your desired values as arrays through the `axisFormat` and `axisTitle` props, respectively.
@@ -9,6 +9,7 @@ examples:
9
9
  - bar_graph_spline: Spline
10
10
  - bar_graph_colors: Color Overrides
11
11
  - bar_graph_custom: Custom Overrides
12
+ - bar_graph_secondary_y_axis: Secondary Y-Axis
12
13
 
13
14
 
14
15
  react:
@@ -20,3 +21,4 @@ examples:
20
21
  - bar_graph_spline: Spline
21
22
  - bar_graph_colors: Color Overrides
22
23
  - bar_graph_custom: Custom Overrides
24
+ - bar_graph_secondary_y_axis: Secondary Y-Axis
@@ -6,3 +6,4 @@ export { default as BarGraphHeight } from './_bar_graph_height.jsx'
6
6
  export { default as BarGraphSpline } from './_bar_graph_spline.jsx'
7
7
  export { default as BarGraphColors } from './_bar_graph_colors.jsx'
8
8
  export { default as BarGraphCustom } from './_bar_graph_custom.jsx'
9
+ export { default as BarGraphSecondaryYAxis } from './_bar_graph_secondary_y_axis.jsx'
@@ -19,7 +19,7 @@
19
19
  }
20
20
  }
21
21
  b, strong {
22
- @include pb_title_4
22
+ font-weight: $bold;
23
23
  }
24
24
 
25
25
  a {
@@ -29,8 +29,8 @@
29
29
  }
30
30
  }
31
31
 
32
- em {
33
- font-weight: $bold;
32
+ em, i {
33
+ font-style: italic;
34
34
  }
35
35
 
36
36
  small {
@@ -7,17 +7,21 @@ import { get, isString, uniqueId } from 'lodash'
7
7
  import { globalProps } from '../utilities/globalProps'
8
8
  import classnames from 'classnames'
9
9
 
10
- import Control from './components/Control'
11
- import ClearIndicator from './components/ClearIndicator'
12
- import IndicatorsContainer from './components/IndicatorsContainer'
13
- import MenuList from './components/MenuList'
14
- import MultiValue from './components/MultiValue'
15
- import Option from './components/Option'
16
- import Placeholder from './components/Placeholder'
17
- import ValueContainer from './components/ValueContainer'
10
+ import {
11
+ Control,
12
+ ClearIndicator,
13
+ IndicatorsContainer,
14
+ MenuList,
15
+ MultiValue,
16
+ Option,
17
+ Placeholder,
18
+ ValueContainer,
19
+ } from "./components"
20
+
21
+ import * as kitComponents from "./components"
18
22
 
19
23
  import { noop, buildDataProps, buildHtmlProps } from '../utilities/props'
20
- import { Noop } from '../types'
24
+ import { GenericObject, Noop } from '../types'
21
25
 
22
26
  /**
23
27
  * @typedef {object} Props
@@ -29,7 +33,7 @@ import { Noop } from '../types'
29
33
  type TypeaheadProps = {
30
34
  async?: boolean,
31
35
  className?: string,
32
- components?: object,
36
+ components?: GenericObject,
33
37
  createable?: boolean,
34
38
  dark?: boolean,
35
39
  data?: { [key: string]: string },
@@ -100,7 +104,7 @@ const Typeahead = ({
100
104
  multiKit: '',
101
105
  onCreateOption: null as null,
102
106
  plusIcon: false,
103
- onMultiValueClick: (_option: SelectValueType) => { },
107
+ onMultiValueClick: (_option: SelectValueType): any => undefined,
104
108
  ...props,
105
109
  }
106
110
 
@@ -137,19 +141,23 @@ const Typeahead = ({
137
141
  const inlineClass = selectProps.inline ? 'inline' : null
138
142
 
139
143
  return (
140
- <div
141
- {...dataProps}
142
- {...htmlProps}
143
- className={classnames(classes, inlineClass)}
144
+ <div
145
+ {...dataProps}
146
+ {...htmlProps}
147
+ className={classnames(classes, inlineClass)}
144
148
  >
145
149
  <Tag
146
- classNamePrefix="typeahead-kit-select"
147
- error={error}
148
- onChange={handleOnChange}
149
- {...selectProps}
150
+ classNamePrefix="typeahead-kit-select"
151
+ error={error}
152
+ onChange={handleOnChange}
153
+ {...selectProps}
150
154
  />
151
155
  </div>
152
156
  )
153
157
  }
154
158
 
159
+ Object.keys(kitComponents).forEach((k) => {
160
+ (Typeahead as GenericObject)[k] = (kitComponents as {[key: string]: unknown})[k]
161
+ })
162
+
155
163
  export default Typeahead
@@ -1,10 +1,12 @@
1
1
  import React from 'react'
2
2
  import { components } from 'react-select'
3
3
 
4
- const MenuList = (props: any) => (
4
+ const MenuList = (props: any) => {
5
+ return (
5
6
  <components.MenuList {...props}>
6
7
  {props.children}
8
+ {props.footer}
7
9
  </components.MenuList>
8
- )
10
+ )}
9
11
 
10
12
  export default MenuList
@@ -0,0 +1,19 @@
1
+ import Control from './Control'
2
+ import ClearIndicator from './ClearIndicator'
3
+ import IndicatorsContainer from './IndicatorsContainer'
4
+ import MenuList from './MenuList'
5
+ import MultiValue from './MultiValue'
6
+ import Option from './Option'
7
+ import Placeholder from './Placeholder'
8
+ import ValueContainer from './ValueContainer'
9
+
10
+ export {
11
+ Control,
12
+ ClearIndicator,
13
+ IndicatorsContainer,
14
+ MenuList,
15
+ MultiValue,
16
+ Option,
17
+ Placeholder,
18
+ ValueContainer,
19
+ }
@@ -0,0 +1,51 @@
1
+ import React, { useState } from 'react'
2
+
3
+ import {
4
+ Button,
5
+ } from '../..'
6
+
7
+ import Typeahead from '../_typeahead'
8
+
9
+ const options = [
10
+ { label: 'Orange', value: '#FFA500' },
11
+ { label: 'Red', value: '#FF0000' },
12
+ { label: 'Green', value: '#00FF00' },
13
+ { label: 'Blue', value: '#0000FF' },
14
+ { label: 'Amaranth', value: '#9F2B68' },
15
+ { label: 'Key Lime', value: '#DAF7A6' },
16
+ { label: 'Turquois', value: '#00FFD0' },
17
+ ]
18
+
19
+ const TypeaheadCustomMenuList = (props) => {
20
+ const defaultColorOptions = options.slice(0, 3)
21
+ const [colorOptions, setColorOptions] = useState(defaultColorOptions)
22
+
23
+ const moreToLoad = colorOptions.length == defaultColorOptions.length
24
+ const loadColors = moreToLoad ? () => setColorOptions(options) : () => setColorOptions(defaultColorOptions)
25
+
26
+ const menuListProps = {
27
+ footer: (<Button
28
+ margin="sm"
29
+ onClick={loadColors}
30
+ text={`Load ${moreToLoad ? "More" : "Less"}`}
31
+ />)
32
+ }
33
+
34
+ const MenuList = (props) => (
35
+ <Typeahead.MenuList
36
+ {...menuListProps}
37
+ {...props}
38
+ />
39
+ )
40
+
41
+ return (
42
+ <Typeahead
43
+ components={{ MenuList }}
44
+ label="Colors"
45
+ options={colorOptions}
46
+ {...props}
47
+ />
48
+ )
49
+ }
50
+
51
+ export default TypeaheadCustomMenuList
@@ -46,7 +46,7 @@ const TypeaheadWithHighlight = (props) => {
46
46
  if (!inputValue.length) return text
47
47
  return text.replace(
48
48
  new RegExp(inputValue, 'gi'),
49
- highlighted => `<mark>${highlighted}</mark>`
49
+ (highlighted) => `<mark>${highlighted}</mark>`
50
50
  )
51
51
  }
52
52
  return (
@@ -22,3 +22,4 @@ examples:
22
22
  - typeahead_createable: Createable
23
23
  - typeahead_async_createable: Createable (+ Async Data)
24
24
  - typeahead_error_state: Error State
25
+ - typeahead_custom_menu_list: Custom MenuList
@@ -9,3 +9,4 @@ export { default as TypeaheadMultiKit } from './_typeahead_multi_kit.jsx'
9
9
  export { default as TypeaheadCreateable } from './_typeahead_createable.jsx'
10
10
  export { default as TypeaheadAsyncCreateable } from './_typeahead_async_createable.jsx'
11
11
  export { default as TypeaheadErrorState } from './_typeahead_error_state.jsx'
12
+ export { default as TypeaheadCustomMenuList } from './_typeahead_custom_menu_list.jsx'