playbook_ui 12.6.0 → 12.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +9 -6
  3. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +61 -44
  4. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +1 -0
  5. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.html.erb +1 -0
  6. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.jsx +14 -0
  7. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.md +1 -0
  8. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +2 -1
  9. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +1 -0
  10. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_input_styles.scss +68 -0
  11. data/app/pb_kits/playbook/pb_docs/kit_example.html.erb +1 -1
  12. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +21 -4
  13. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.html.erb +72 -0
  14. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.md +3 -1
  15. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -1
  16. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.html.erb +3 -0
  17. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +21 -0
  18. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.test.jsx +1 -2
  19. data/app/pb_kits/playbook/pb_nav/_nav.jsx +3 -0
  20. data/app/pb_kits/playbook/pb_nav/nav.html.erb +1 -1
  21. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +52 -16
  22. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +22 -20
  23. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +16 -24
  24. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +2 -1
  25. data/app/pb_kits/playbook/pb_section_separator/_section_separator_mixin.scss +0 -7
  26. data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +0 -2
  27. data/app/pb_kits/playbook/pb_section_separator/docs/index.js +0 -1
  28. data/app/pb_kits/playbook/pb_section_separator/section_separator.html.erb +3 -1
  29. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.scss +19 -0
  30. data/app/pb_kits/playbook/pb_selectable_card_icon/selectable_card_icon.html.erb +0 -2
  31. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +3 -0
  32. data/app/pb_kits/playbook/pb_tooltip/_tooltip.tsx +41 -35
  33. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_delay.jsx +56 -0
  34. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_delay.md +5 -0
  35. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +1 -0
  36. data/app/pb_kits/playbook/pb_tooltip/docs/index.js +1 -0
  37. data/app/pb_kits/playbook/playbook-rails-react-bindings.js +2 -0
  38. data/lib/playbook/version.rb +2 -2
  39. metadata +11 -4
  40. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text_background.html.erb +0 -1
  41. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text_background.jsx +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ffe02f5811c58c2f395f4dc42933e6277b77d392e3cbc9657611b91c9d82617
4
- data.tar.gz: b45d5e741b3d219bee86e6f37d8c3c8f7d1f4cbfb482b77fe352acfd703c64ad
3
+ metadata.gz: 127ac17d49b80d6d30ec216a6f2e0a7e81908664c6a85b1341bdce717f12699a
4
+ data.tar.gz: e15e17d77315240d2c81ea9df13c84d5b6633c55ac9f19a4e0b5ed24e5b2df1e
5
5
  SHA512:
6
- metadata.gz: b86a515a02c0c3cbd155a4840243d2e50bcefca3ed2a34cca2d67078087b0e2db728fae764e01d526f4da9579aa9249fc9ae245ca435b786a8c75b6a7225bf82
7
- data.tar.gz: bc734f1f1b3cd1ae6d20754334dc6a5590d77bd393a5bcad9fb73f33d330c8d46b6f5ee6eaae0d1ada5754e4e349cdf2d1b9dd2ff307decace3ed1a5a46a0b0d
6
+ metadata.gz: b7089e126a6c6340ccde8c062ad95411bf8c3470cefce3c9309bb591e0efc0a5fac5f56b3984c37ca0f12bd8710c3e7a646f1d77405ec3b2f3d412b3d69de452
7
+ data.tar.gz: b7abd953f3e8c3215b7b142790c5ac6fd15e99b0b44cf3a425dfa7b7c41db5e1f19f9696a363305f055a76d4c7cd2ab8d8387004465eeb90016350c839cad40a
@@ -5,8 +5,7 @@
5
5
  @import "./sass_partials/inline_styles";
6
6
  @import "./sass_partials/month_and_year_styles";
7
7
  @import "./sass_partials/time_selection_styles";
8
-
9
-
8
+ @import "./sass_partials/input_styles";
10
9
 
11
10
  [class^=pb_date_picker_kit] {
12
11
  .input_wrapper {
@@ -20,8 +19,10 @@
20
19
  @import "./sass_partials/calendar_input_icon";
21
20
  }
22
21
 
23
- &:focus, :focus-within {
24
- div.cal_icon_wrapper, input.text_input{
22
+ &:focus,
23
+ :focus-within {
24
+ div.cal_icon_wrapper,
25
+ input.date_picker_input {
25
26
  @include transition_default;
26
27
  border-color: $primary;
27
28
  }
@@ -33,18 +34,20 @@
33
34
  @import "./sass_partials/header_styles";
34
35
  @import "./sass_partials/overrides";
35
36
 
36
- .text_input.flatpickr-input {
37
+ .date_picker_input.flatpickr-input {
37
38
  text-overflow: ellipsis;
38
39
  padding-right: $space_xl + 10 !important;
39
40
  }
41
+
40
42
  // Calendar Shadow and Border
41
43
  .flatpickr-calendar {
42
44
  box-shadow: $shadow_deeper;
43
45
  border: 1px solid $border_light;
44
46
  }
47
+
45
48
  // Hide Caret
46
49
  &:before,
47
50
  &:after {
48
51
  content: none;
49
52
  }
50
- }
53
+ }
@@ -5,13 +5,13 @@ import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
5
5
  import { deprecatedProps, globalProps, GlobalProps } from '../utilities/globalProps'
6
6
 
7
7
  import datePickerHelper from './date_picker_helper'
8
-
9
8
  import Icon from '../pb_icon/_icon'
10
- import TextInput from '../pb_text_input/_text_input'
9
+ import Caption from '../pb_caption/_caption'
10
+ import Body from '../pb_body/_body'
11
11
 
12
12
  type DatePickerProps = {
13
13
  allowInput?: boolean,
14
- aria?: {[key: string]: string},
14
+ aria?: { [key: string]: string },
15
15
  className?: string,
16
16
  dark?: boolean,
17
17
  data?: { [key: string]: string },
@@ -27,15 +27,15 @@ type DatePickerProps = {
27
27
  hideLabel?: boolean,
28
28
  id?: string,
29
29
  inLine?: boolean,
30
- inputAria?: {[key: string]: string},
31
- inputData?: {[key: string]: string},
32
- inputOnChange?: (arg: string) => void,
30
+ inputAria?: { [key: string]: string },
31
+ inputData?: { [key: string]: string },
32
+ inputOnChange?: (e: React.FormEvent<HTMLInputElement>) => void,
33
33
  inputValue?: any,
34
34
  label?: string,
35
35
  maxDate: string,
36
36
  minDate: string,
37
37
  name: string,
38
- pickerId?: ArrayLike<Node> | Node | string,
38
+ pickerId?: string,
39
39
  placeholder?: string,
40
40
  positionElement?: HTMLElement | null,
41
41
  scrollContainer?: string,
@@ -68,8 +68,8 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
68
68
  hideLabel = false,
69
69
  id,
70
70
  inLine = false,
71
- inputAria,
72
- inputData,
71
+ inputAria = {},
72
+ inputData = {},
73
73
  inputOnChange,
74
74
  inputValue,
75
75
  label = 'Date Picker',
@@ -87,11 +87,14 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
87
87
  selectionType = '',
88
88
  showTimezone = false,
89
89
  staticPosition = true,
90
- yearRange = [ 1900, 2100 ],
90
+ yearRange = [1900, 2100],
91
91
  } = props
92
92
 
93
93
  const ariaProps = buildAriaProps(aria)
94
94
  const dataProps = buildDataProps(data)
95
+ const inputAriaProps = buildAriaProps(inputAria)
96
+ const inputDataProps = buildDataProps(inputData)
97
+
95
98
  const classes = classnames(
96
99
  buildCss('pb_date_picker_kit'),
97
100
  globalProps(props),
@@ -128,13 +131,13 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
128
131
 
129
132
  const iconWrapperClass = () => {
130
133
  let base = 'cal_icon_wrapper'
131
- if (dark){
134
+ if (dark) {
132
135
  base += ' dark'
133
136
  }
134
- if (hideLabel){
137
+ if (hideLabel) {
135
138
  base += ' no_label_shift'
136
139
  }
137
- if (error){
140
+ if (error) {
138
141
  base += ' error'
139
142
  }
140
143
  return base
@@ -142,61 +145,75 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
142
145
 
143
146
  return (
144
147
  <div
145
- {...ariaProps}
146
- {...dataProps}
147
- className={classes}
148
- id={id}
148
+ {...ariaProps}
149
+ {...dataProps}
150
+ className={classes}
151
+ id={id}
149
152
  >
150
- <div className="input_wrapper">
151
- <TextInput
152
- aria={inputAria}
153
+ <div
154
+ {...inputAriaProps}
155
+ {...inputDataProps}
156
+ className="input_wrapper">
157
+
158
+ <Caption
159
+ className="pb_date_picker_kit_label"
160
+ text={hideLabel ? null : label}
161
+ />
162
+
163
+ <div className="date_picker_input_wrapper">
164
+ <input
153
165
  autoComplete="off"
154
- dark={dark}
155
- data={inputData}
166
+ className="date_picker_input"
156
167
  disabled={disableInput}
157
- error={error}
158
168
  id={pickerId}
159
- label={hideLabel ? null : label}
160
169
  name={name}
161
170
  onChange={inputOnChange}
162
171
  placeholder={placeholder}
163
172
  value={inputValue}
164
- />
173
+ />
165
174
 
166
- { !hideIcon &&
175
+ {error && <Body
176
+ status="negative"
177
+ text={error}
178
+ variant={null}
179
+ />
180
+ }
181
+ </div>
182
+
183
+ {!hideIcon &&
167
184
  <div
168
- className={iconWrapperClass()}
169
- id={`cal-icon-${pickerId}`}
185
+ className={iconWrapperClass()}
186
+ id={`cal-icon-${pickerId}`}
170
187
  >
171
- <Icon
188
+ <Icon
172
189
  className="cal_icon"
173
190
  icon="calendar-alt"
174
- />
175
- </div>
191
+ />
192
+ </div>
176
193
  }
177
194
 
178
- { hideIcon && inLine ?
195
+ {hideIcon && inLine ?
179
196
  <div>
180
197
  <div
181
- className={iconWrapperClass()}
182
- id={`${pickerId}-icon-plus`}
198
+ className={iconWrapperClass()}
199
+ id={`${pickerId}-icon-plus`}
183
200
  >
184
201
  <Icon
185
- className="date-picker-plus-icon"
186
- icon="plus"
202
+ className="date-picker-plus-icon"
203
+ icon="plus"
187
204
  />
188
205
  </div>
189
206
  <div
190
- className={iconWrapperClass()}
191
- id={`${pickerId}-angle-down`}
207
+ className={iconWrapperClass()}
208
+ id={`${pickerId}-angle-down`}
192
209
  >
193
- <Icon
194
- className="angle_down_icon"
195
- icon="angle-down"
196
- />
210
+ <Icon
211
+ className="angle_down_icon"
212
+ icon="angle-down"
213
+ />
197
214
  </div>
198
- </div>
199
- : null }
215
+ </div>
216
+ : null}
200
217
  </div>
201
218
  </div>
202
219
  )
@@ -112,6 +112,7 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
112
112
  // ===========================================================
113
113
 
114
114
  flatpickr(`#${pickerId}`, {
115
+ allowInput,
115
116
  closeOnSelect,
116
117
  disableMobile: true,
117
118
  dateFormat: getDateFormat(),
@@ -0,0 +1 @@
1
+ <%= pb_rails("date_picker", props: { allow_input: true, picker_id: "date-picker-allow-input"}) %>
@@ -0,0 +1,14 @@
1
+ import React from 'react'
2
+ import DatePicker from '../_date_picker'
3
+
4
+ const DatePickerAllowInput = (props) => (
5
+ <>
6
+ <DatePicker
7
+ allowInput
8
+ pickerId="date-picker-allow-input"
9
+ {...props}
10
+ />
11
+ </>
12
+ )
13
+
14
+ export default DatePickerAllowInput
@@ -0,0 +1 @@
1
+ Setting the `allowInput` prop to true permits users to key values directly into the input. This prop is set to false by default.
@@ -4,6 +4,7 @@ examples:
4
4
  - date_picker_default: Default
5
5
  - date_picker_hide_icon: Hide Input Icon
6
6
  - date_picker_default_date: Default Date
7
+ - date_picker_allow_input: Allow Input
7
8
  - date_picker_input: Input Field
8
9
  - date_picker_label: Label
9
10
  - date_picker_range: Range
@@ -22,11 +23,11 @@ examples:
22
23
  - date_picker_positions: Custom Positions
23
24
  - date_picker_positions_element: Custom Position (based on element)
24
25
 
25
-
26
26
  react:
27
27
  - date_picker_default: Default
28
28
  - date_picker_hide_icon: Hide Input Icon
29
29
  - date_picker_default_date: Default Date
30
+ - date_picker_allow_input: Allow Input
30
31
  - date_picker_input: Input Field
31
32
  - date_picker_label: Label
32
33
  - date_picker_on_change: onChange
@@ -18,3 +18,4 @@ export { default as DatePickerTime } from './_date_picker_time.jsx'
18
18
  export { default as DatePickerWeek } from './_date_picker_week.jsx'
19
19
  export { default as DatePickerPositions } from './_date_picker_positions.jsx'
20
20
  export { default as DatePickerPositionsElement } from './_date_picker_positions_element.jsx'
21
+ export { default as DatePickerAllowInput } from './_date_picker_allow_input'
@@ -0,0 +1,68 @@
1
+ @import "../../pb_textarea/textarea_mixin";
2
+
3
+ [class^=pb_date_picker_kit] {
4
+ margin-bottom: $space_sm;
5
+
6
+ .pb_date_picker_kit_label {
7
+ margin-bottom: $space_xs;
8
+ display: block;
9
+ }
10
+
11
+ .date_picker_input_wrapper {
12
+ display: block;
13
+
14
+ input::placeholder,
15
+ .date_picker_input .placeholder {
16
+ @include pb_body_light;
17
+ }
18
+
19
+ input,
20
+ .date_picker_input {
21
+ max-height: 45px;
22
+ @include pb_textarea_light;
23
+ overflow: hidden;
24
+ }
25
+
26
+ input:hover,
27
+ .date_picker_input:hover {
28
+ background-color: rgba($focus_input_light, $opacity_5);
29
+ }
30
+
31
+ input:focus,
32
+ .date_picker_input:focus,
33
+ input:-webkit-autofill:focus,
34
+ .date_picker_input:-webkit-autofill:focus {
35
+ @include pb_textarea_focus;
36
+ @include transition_default;
37
+ border-color: $primary;
38
+ background-color: rgba($focus_input_light, $opacity_5);
39
+ }
40
+ }
41
+
42
+ &.error {
43
+ .date_picker_input_wrapper {
44
+ [class*=pb_body_kit] {
45
+ margin-top: $space_xs / 2;
46
+ }
47
+
48
+ input,
49
+ .date_picker_input {
50
+ border-color: $error;
51
+ }
52
+ }
53
+ }
54
+
55
+ &.inline {
56
+ .date_picker_input_wrapper input::placeholder,
57
+ .date_picker_input_wrapper .date_picker_input .placeholder {
58
+ opacity: 1;
59
+ }
60
+
61
+ &:not(:hover) {
62
+ .date_picker_input_wrapper input:not(:focus) {
63
+ background-color: transparent;
64
+ border-color: transparent;
65
+ }
66
+ }
67
+ }
68
+ }
@@ -1,6 +1,6 @@
1
1
  <%= pb_rails("card", props: { classname: "pb--doc", padding: "none", dark: dark }) do %>
2
2
  <div class="pb--kit-example">
3
- <%= pb_rails("caption", props: { text: example_title }) %>
3
+ <%= pb_rails("caption", props: { text: example_title, dark: dark }) %>
4
4
  <br />
5
5
  <%= example %>
6
6
  <br>
@@ -12,11 +12,18 @@ type MultiLevelSelectProps = {
12
12
  id?: string;
13
13
  treeData?: { [key: string]: string }[];
14
14
  onChange?: any;
15
- onSelect?: (SelectedNodes: { [key: string]: any }) => void;
15
+ onSelect?: (prop: { [key: string]: any }) => void;
16
16
  };
17
17
 
18
18
  const MultiLevelSelect = (props: MultiLevelSelectProps) => {
19
- const { aria = {}, className, data = {}, id, treeData, onSelect } = props;
19
+ const {
20
+ aria = {},
21
+ className,
22
+ data = {},
23
+ id,
24
+ treeData,
25
+ onSelect = () => {},
26
+ } = props;
20
27
 
21
28
  const ariaProps = buildAriaProps(aria);
22
29
  const dataProps = buildDataProps(data);
@@ -28,6 +35,7 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
28
35
 
29
36
  const [formattedData, setFormattedData] = useState(treeData);
30
37
  const [selectedItems, setSelectedItems] = useState([]);
38
+ const [checkedData, setCheckedData] = useState([]);
31
39
 
32
40
  const onChange = (currentNode: { [key: string]: any }) => {
33
41
  const updatedData = formattedData.map((item: any) => {
@@ -62,16 +70,25 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
62
70
  const uniqueSelected = selected.filter(
63
71
  (obj, index, self) => index === self.findIndex((t) => t.id === obj.id)
64
72
  );
65
- onSelect(uniqueSelected);
73
+ setCheckedData(uniqueSelected);
66
74
  }, [selectedItems]);
67
75
 
76
+ useEffect(() => {
77
+ let el = document.getElementById("pb_data_wrapper");
78
+
79
+ if (el) {
80
+ el.setAttribute("data-tree", JSON.stringify(checkedData));
81
+ }
82
+
83
+ onSelect(checkedData);
84
+ }, [checkedData]);
85
+
68
86
  return (
69
87
  <div {...ariaProps} {...dataProps} className={classes} id={id}>
70
88
  <MultiSelectHelper
71
89
  treeData={formattedData}
72
90
  id={id}
73
91
  onChange={onChange}
74
- onSelect={onSelect}
75
92
  {...props}
76
93
  />
77
94
  </div>
@@ -0,0 +1,72 @@
1
+ <% treeData = [{
2
+ label: "Power Home Remodeling",
3
+ value: "Power Home Remodeling",
4
+ id: "powerhome1",
5
+ expanded: true,
6
+ children: [
7
+ {
8
+ label: "People",
9
+ value: "People",
10
+ id: "people1",
11
+ children: [
12
+ {
13
+ label: "Talent Acquisition",
14
+ value: "Talent Acquisition",
15
+ id: "talent1",
16
+ },
17
+ {
18
+ label: "Business Affairs",
19
+ value: "Business Affairs",
20
+ id: "business1",
21
+ children: [
22
+ {
23
+ label: "Initiatives",
24
+ value: "Initiatives",
25
+ id: "initiative1",
26
+ },
27
+ {
28
+ label: "Learning & Development",
29
+ value: "Learning & Development",
30
+ id: "development1",
31
+ },
32
+ ],
33
+ },
34
+ {
35
+ label: "People Experience",
36
+ value: "People Experience",
37
+ id: "experience1",
38
+ },
39
+ ],
40
+ },
41
+ {
42
+ label: "Contact Center",
43
+ value: "Contact Center",
44
+ id: "contact1",
45
+ children: [
46
+ {
47
+ label: "Appointment Management",
48
+ value: "Appointment Management",
49
+ id: "appointment1",
50
+ },
51
+ {
52
+ label: "Customer Service",
53
+ value: "Customer Service",
54
+ id: "customer1",
55
+ },
56
+ {
57
+ label: "Energy",
58
+ value: "Energy",
59
+ id: "energy1",
60
+ },
61
+ ],
62
+ },
63
+ ],
64
+ }] %>
65
+
66
+
67
+ <%= pb_rails("multi_level_select", props: {
68
+ id: "default-multi-level-select",
69
+ tree_data:treeData
70
+ }) %>
71
+
72
+
@@ -1,3 +1,5 @@
1
1
  The MultiLevelSelect kit renders a multi leveled select dropdown based on data from the user. `treeData` is a required prop that is expected to contain the data in the form of an array of objects. See code snippet for an example data array.
2
2
 
3
- The `onSelect` prop returns an array of all checked items, irrespective of whether it is a parent, child or grandchild. Open the console on this example and check and uncheck checkboxes to see this is action!
3
+ For the React version of the kit, the `onSelect` prop returns an array of all checked items, irrespective of whether it is a parent, child or grandchild. Open the console on this example and check and uncheck checkboxes to see this is action!
4
+
5
+ For the Rails version, the array of checked items is attached to the DOM in a data attribute titled `data-tree` on the wrapping div around the MultiLevelSelect.
@@ -1,5 +1,6 @@
1
1
  examples:
2
-
2
+ rails:
3
+ - multi_level_select_default: Default
3
4
 
4
5
  react:
5
6
  - multi_level_select_default: Default
@@ -0,0 +1,3 @@
1
+ <div id="pb_data_wrapper" data-tree="">
2
+ <%= react_component("MultiLevelSelect", object.multi_level_select_options ) %>
3
+ </div>
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbMultiLevelSelect
5
+ class MultiLevelSelect < Playbook::KitBase
6
+ prop :tree_data, type: Playbook::Props::Array,
7
+ default: []
8
+
9
+ def classname
10
+ generate_classname("pb_multi_level_select")
11
+ end
12
+
13
+ def multi_level_select_options
14
+ {
15
+ id: id,
16
+ treeData: tree_data,
17
+ }
18
+ end
19
+ end
20
+ end
21
+ end
@@ -29,10 +29,9 @@ test('should render custom class', () => {
29
29
  <MultiLevelSelect
30
30
  className='custom-class'
31
31
  data={{ testid: testId}}
32
- onSelect={()=> console.log("hello")}
33
32
  treeData={treeData}
34
33
  />
35
- )
34
+ )
36
35
 
37
36
  const kit = screen.getByTestId(testId)
38
37
  expect(kit).toHaveClass('custom-class')
@@ -14,6 +14,7 @@ type NavProps = {
14
14
  children?: React.Node,
15
15
  className?: string | array<string>,
16
16
  data?: object,
17
+ dark?: boolean,
17
18
  highlight?: boolean,
18
19
  id?: string,
19
20
  onClick?: EventHandler,
@@ -29,6 +30,7 @@ const Nav = (props: NavProps) => {
29
30
  children,
30
31
  className,
31
32
  data = {},
33
+ dark = false,
32
34
  highlight = true,
33
35
  id,
34
36
  link = '#',
@@ -64,6 +66,7 @@ const Nav = (props: NavProps) => {
64
66
  onClick={onClick}
65
67
  >
66
68
  <Caption
69
+ dark={dark}
67
70
  size="md"
68
71
  text={`${title}`}
69
72
  />
@@ -6,7 +6,7 @@
6
6
  <% if object.title %>
7
7
  <%= content_tag(:div, class: "pb_nav_list_title") do %>
8
8
  <%= content_tag(:a, class: "pb_nav_list_item_link_text", href: object.link) do %>
9
- <%= pb_rails("caption", props: { text: object.title }) %>
9
+ <%= pb_rails("caption", props: { text: object.title, dark: dark }) %>
10
10
  <% end %>
11
11
  <% end %>
12
12
  <% end %>