playbook_ui 10.23.0.pre.alpha2 → 10.23.0.pre.cachetest
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +0 -1
- data/app/pb_kits/playbook/index.js +3 -0
- data/app/pb_kits/playbook/pb_avatar/{_avatar.tsx → _avatar.jsx} +14 -13
- data/app/pb_kits/playbook/pb_avatar/_avatar.scss +2 -2
- data/app/pb_kits/playbook/pb_avatar/avatar.rb +1 -1
- data/app/pb_kits/playbook/pb_avatar/avatar.test.js +1 -1
- data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.jsx +1 -1
- data/app/pb_kits/playbook/pb_background/_background.jsx +3 -8
- data/app/pb_kits/playbook/pb_background/_background.scss +8 -24
- data/app/pb_kits/playbook/pb_background/background.rb +6 -6
- data/app/pb_kits/playbook/pb_background/docs/_background_image.html.erb +2 -50
- data/app/pb_kits/playbook/pb_background/docs/_background_image.jsx +28 -71
- data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.jsx +1 -5
- data/app/pb_kits/playbook/pb_bar_graph/bar_graph.rb +0 -1
- data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumb_item.jsx +1 -1
- data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.jsx +1 -1
- data/app/pb_kits/playbook/pb_button/_button.jsx +4 -8
- data/app/pb_kits/playbook/pb_button/_button.scss +1 -18
- data/app/pb_kits/playbook/pb_button/button.rb +3 -13
- data/app/pb_kits/playbook/pb_button/button.test.js +0 -13
- data/app/pb_kits/playbook/pb_button/docs/_button_accessibility.html.erb +1 -1
- data/app/pb_kits/playbook/pb_button/docs/example.yml +0 -4
- data/app/pb_kits/playbook/pb_button/docs/index.js +0 -2
- data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.jsx +1 -1
- data/app/pb_kits/playbook/pb_caption/_caption.jsx +1 -1
- data/app/pb_kits/playbook/pb_card/_card.jsx +1 -1
- data/app/pb_kits/playbook/pb_card/card.html.erb +1 -1
- data/app/pb_kits/playbook/pb_card/card.rb +0 -88
- data/app/pb_kits/playbook/pb_card/card_body.rb +1 -1
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +1 -1
- data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.jsx +0 -3
- data/app/pb_kits/playbook/pb_circle_chart/circle_chart.rb +0 -1
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.jsx +1 -1
- data/app/pb_kits/playbook/pb_collapsible/_collapsible.jsx +1 -1
- data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.jsx +1 -1
- data/app/pb_kits/playbook/pb_currency/_currency.jsx +3 -24
- data/app/pb_kits/playbook/pb_currency/currency.rb +3 -12
- data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.html.erb +1 -1
- data/app/pb_kits/playbook/pb_currency/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_currency/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.jsx +1 -1
- data/app/pb_kits/playbook/pb_dialog/_dialog.jsx +1 -1
- data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_body.jsx +1 -1
- data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_footer.jsx +1 -1
- data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_header.jsx +1 -1
- data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.jsx +1 -1
- data/app/pb_kits/playbook/pb_file_upload/_file_upload.jsx +10 -17
- data/app/pb_kits/playbook/pb_filter/Filter/FilterBackground.jsx +1 -1
- data/app/pb_kits/playbook/pb_flex/_flex.jsx +1 -1
- data/app/pb_kits/playbook/pb_flex/_flex_item.jsx +1 -1
- data/app/pb_kits/playbook/pb_flex/docs/_flex_align.jsx +1 -1
- data/app/pb_kits/playbook/pb_flex/flex_item.rb +24 -2
- data/app/pb_kits/playbook/pb_form_group/_form_group.jsx +1 -1
- data/app/pb_kits/playbook/pb_form_group/_form_group.scss +0 -2
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.jsx +2 -2
- data/app/pb_kits/playbook/pb_gauge/_gauge.jsx +0 -3
- data/app/pb_kits/playbook/pb_gauge/gauge.rb +0 -1
- data/app/pb_kits/playbook/pb_highlight/_highlight.jsx +1 -1
- data/app/pb_kits/playbook/pb_icon/_icon.jsx +1 -1
- data/app/pb_kits/playbook/pb_icon/icon.rb +1 -1
- data/app/pb_kits/playbook/pb_icon_stat_value/_icon_stat_value.jsx +1 -1
- data/app/pb_kits/playbook/pb_image/{_image.tsx → _image.jsx} +15 -11
- data/app/pb_kits/playbook/pb_image/_image.scss +3 -3
- data/app/pb_kits/playbook/pb_image/docs/{_default_image.tsx → _default_image.jsx} +1 -1
- data/app/pb_kits/playbook/pb_image/docs/index.js +4 -4
- data/app/pb_kits/playbook/pb_image/image.rb +1 -1
- data/app/pb_kits/playbook/pb_image/image.test.js +1 -1
- data/app/pb_kits/playbook/pb_label_pill/_label_pill.jsx +1 -1
- data/app/pb_kits/playbook/pb_layout/_layout.jsx +1 -1
- data/app/pb_kits/playbook/pb_line_graph/_line_graph.jsx +1 -5
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.jsx +0 -1
- data/app/pb_kits/playbook/pb_line_graph/line_graph.rb +0 -1
- data/app/pb_kits/playbook/pb_list/_list.jsx +1 -1
- data/app/pb_kits/playbook/pb_list/_list_item.jsx +1 -1
- data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.jsx +1 -1
- data/app/pb_kits/playbook/pb_online_status/{_online_status.tsx → _online_status.jsx} +6 -4
- data/app/pb_kits/playbook/pb_passphrase/_passphrase.jsx +1 -2
- data/app/pb_kits/playbook/pb_pill/_pill.jsx +1 -1
- data/app/pb_kits/playbook/pb_popover/_popover.jsx +5 -3
- data/app/pb_kits/playbook/pb_popover/docs/_popover_close.html.erb +7 -7
- data/app/pb_kits/playbook/pb_popover/index.js +9 -4
- data/app/pb_kits/playbook/pb_popover/popover.html.erb +1 -1
- data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.jsx +1 -1
- data/app/pb_kits/playbook/pb_progress_step/_progress_step.jsx +1 -1
- data/app/pb_kits/playbook/pb_radio/_radio.jsx +1 -1
- data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.jsx +93 -83
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.html.erb +1 -1
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.jsx +8 -15
- data/app/pb_kits/playbook/pb_table/_table.jsx +1 -1
- data/app/pb_kits/playbook/pb_table/_table_row.jsx +1 -1
- data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +1 -1
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +1 -1
- data/app/pb_kits/playbook/pb_text_input/text_input.test.js +0 -14
- data/app/pb_kits/playbook/pb_textarea/_textarea.jsx +0 -1
- data/app/pb_kits/playbook/pb_time/_time.jsx +1 -1
- data/app/pb_kits/playbook/pb_title/_title.jsx +1 -1
- data/app/pb_kits/playbook/pb_toggle/_toggle.jsx +1 -1
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +1 -1
- data/app/pb_kits/playbook/pb_user_badge/_user_badge.jsx +1 -1
- data/app/pb_kits/playbook/pb_walkthrough/_walkthrough.jsx +1 -1
- data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.jsx +1 -1
- data/app/pb_kits/playbook/plugins/pb_chart.js +4 -8
- data/app/pb_kits/playbook/types.js +4 -0
- data/app/pb_kits/playbook/utilities/globalProps.js +97 -0
- data/app/pb_kits/playbook/utilities/{props.ts → props.js} +7 -9
- data/lib/playbook/classnames.rb +0 -11
- data/lib/playbook/kit_base.rb +0 -22
- data/lib/playbook/version.rb +2 -2
- metadata +9 -42
- data/app/pb_kits/playbook/pb_background/docs/_background_image.md +0 -1
- data/app/pb_kits/playbook/pb_button/docs/_button_form.html.erb +0 -1
- data/app/pb_kits/playbook/pb_button/docs/_button_form.jsx +0 -14
- data/app/pb_kits/playbook/pb_button/docs/_button_size.html.erb +0 -3
- data/app/pb_kits/playbook/pb_button/docs/_button_size.jsx +0 -26
- data/app/pb_kits/playbook/pb_button/docs/_button_size.md +0 -1
- data/app/pb_kits/playbook/pb_currency/currency.test.js +0 -35
- data/app/pb_kits/playbook/pb_currency/docs/_currency_abbreviated.html.erb +0 -27
- data/app/pb_kits/playbook/pb_currency/docs/_currency_abbreviated.jsx +0 -44
- data/app/pb_kits/playbook/pb_dashboard/pbChartsDarkTheme.js +0 -215
- data/app/pb_kits/playbook/pb_file_upload/fileupload.test.js +0 -40
- data/app/pb_kits/playbook/utilities/_align_content.scss +0 -29
- data/app/pb_kits/playbook/utilities/_align_items.scss +0 -35
- data/app/pb_kits/playbook/utilities/_align_self.scss +0 -29
- data/app/pb_kits/playbook/utilities/_flex.scss +0 -15
- data/app/pb_kits/playbook/utilities/_flex_direction.scss +0 -19
- data/app/pb_kits/playbook/utilities/_flex_grow.scss +0 -9
- data/app/pb_kits/playbook/utilities/_flex_shrink.scss +0 -9
- data/app/pb_kits/playbook/utilities/_flex_wrap.scss +0 -14
- data/app/pb_kits/playbook/utilities/_flexbox.scss +0 -11
- data/app/pb_kits/playbook/utilities/_justify_content.scss +0 -23
- data/app/pb_kits/playbook/utilities/_justify_self.scss +0 -19
- data/app/pb_kits/playbook/utilities/_order.scss +0 -55
- data/app/pb_kits/playbook/utilities/globalProps.ts +0 -274
- data/lib/playbook/align_content.rb +0 -29
- data/lib/playbook/align_items.rb +0 -29
- data/lib/playbook/align_self.rb +0 -29
- data/lib/playbook/flex.rb +0 -29
- data/lib/playbook/flex_direction.rb +0 -29
- data/lib/playbook/flex_grow.rb +0 -29
- data/lib/playbook/flex_shrink.rb +0 -29
- data/lib/playbook/flex_wrap.rb +0 -29
- data/lib/playbook/justify_content.rb +0 -29
- data/lib/playbook/justify_self.rb +0 -29
- data/lib/playbook/order.rb +0 -29
@@ -1,12 +1,11 @@
|
|
1
1
|
/* @flow */
|
2
|
-
/* eslint-disable react-hooks/rules-of-hooks */
|
3
2
|
|
4
|
-
import React, { useEffect,
|
3
|
+
import React, { useEffect, useRef } from 'react'
|
5
4
|
import classnames from 'classnames'
|
6
5
|
import inlineFocus from './inlineFocus'
|
7
6
|
import useFocus from './useFocus'
|
8
7
|
import { globalProps } from '../utilities/globalProps'
|
9
|
-
import { buildAriaProps, buildDataProps
|
8
|
+
import { buildAriaProps, buildDataProps } from '../utilities/props'
|
10
9
|
|
11
10
|
try {
|
12
11
|
const Trix = require('trix')
|
@@ -16,8 +15,6 @@ try {
|
|
16
15
|
}
|
17
16
|
} catch (_e) { /* do nothing */ }
|
18
17
|
|
19
|
-
import { TrixEditor } from "react-trix"
|
20
|
-
|
21
18
|
type RichTextEditorProps = {
|
22
19
|
aria?: object,
|
23
20
|
toolbarBottom?: Boolean,
|
@@ -27,7 +24,7 @@ type RichTextEditorProps = {
|
|
27
24
|
id?: string,
|
28
25
|
inline?: boolean,
|
29
26
|
name?: string,
|
30
|
-
onChange: (
|
27
|
+
onChange: (string) => void,
|
31
28
|
placeholder?: string,
|
32
29
|
simple?: boolean,
|
33
30
|
sticky?: boolean,
|
@@ -42,117 +39,130 @@ const RichTextEditor = (props: RichTextEditorProps) => {
|
|
42
39
|
className,
|
43
40
|
data = {},
|
44
41
|
focus = false,
|
42
|
+
id,
|
45
43
|
inline = false,
|
46
44
|
name,
|
47
|
-
onChange
|
45
|
+
onChange,
|
48
46
|
placeholder,
|
49
47
|
simple = false,
|
50
48
|
sticky = false,
|
51
49
|
template = '',
|
52
50
|
value = '',
|
53
51
|
} = props
|
52
|
+
const trixRef = useRef()
|
53
|
+
const ariaProps = buildAriaProps(aria)
|
54
|
+
const dataProps = buildDataProps(data)
|
54
55
|
|
55
|
-
|
56
|
-
|
57
|
-
|
56
|
+
useEffect(() => {
|
57
|
+
trixRef.current.addEventListener('trix-initialize', (event) => {
|
58
|
+
const element = event.target
|
58
59
|
|
59
|
-
|
60
|
-
element = editor?.element
|
60
|
+
const { toolbarElement, editor } = element
|
61
61
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
62
|
+
const blockCodeButton = toolbarElement.querySelector(
|
63
|
+
'[data-trix-attribute=code]'
|
64
|
+
)
|
65
|
+
const inlineCodeButton = blockCodeButton.cloneNode(true)
|
66
66
|
|
67
|
-
|
68
|
-
|
67
|
+
inlineCodeButton.hidden = true
|
68
|
+
inlineCodeButton.dataset.trixAttribute = 'inlineCode'
|
69
|
+
blockCodeButton.insertAdjacentElement('afterend', inlineCodeButton)
|
69
70
|
|
70
|
-
|
71
|
-
|
72
|
-
|
71
|
+
const getCodeFormattingType = () => {
|
72
|
+
if (editor.attributeIsActive('code')) return 'block'
|
73
|
+
if (editor.attributeIsActive('inlineCode')) return 'inline'
|
73
74
|
|
74
|
-
|
75
|
+
const range = editor.getSelectedRange()
|
76
|
+
if (range[0] == range[1]) return 'block'
|
75
77
|
|
76
|
-
|
77
|
-
|
78
|
-
|
78
|
+
const text = editor.getSelectedDocument().toString().trim()
|
79
|
+
return /\n/.test(text) ? 'block' : 'inline'
|
80
|
+
}
|
79
81
|
|
80
|
-
|
81
|
-
|
82
|
+
element.addEventListener('trix-selection-change', () => {
|
83
|
+
const type = getCodeFormattingType()
|
84
|
+
blockCodeButton.hidden = type == 'inline'
|
85
|
+
inlineCodeButton.hidden = type == 'block'
|
86
|
+
})
|
82
87
|
|
83
|
-
|
84
|
-
|
85
|
-
}
|
88
|
+
if (toolbarBottom) editor.element.after(toolbarElement)
|
89
|
+
})
|
86
90
|
|
87
|
-
|
88
|
-
|
89
|
-
const type = getCodeFormattingType()
|
90
|
-
blockCodeButton.hidden = type == 'inline'
|
91
|
-
inlineCodeButton.hidden = type == 'block'
|
91
|
+
trixRef.current.addEventListener('trix-change', (event) => {
|
92
|
+
onChange && onChange(event.target.innerHTML)
|
92
93
|
})
|
94
|
+
}, [trixRef])
|
95
|
+
|
96
|
+
useEffect(() => {
|
97
|
+
const editor = trixRef.current.editorController.editor
|
98
|
+
if (template) {
|
99
|
+
editor.loadHTML('')
|
100
|
+
editor.setSelectedRange([0, 0])
|
101
|
+
editor.insertHTML(template)
|
102
|
+
}
|
103
|
+
}, [template])
|
104
|
+
|
105
|
+
focus
|
106
|
+
? (document.addEventListener('trix-focus', useFocus),
|
107
|
+
document.addEventListener('trix-blur', useFocus),
|
108
|
+
useFocus())
|
109
|
+
: null
|
110
|
+
|
111
|
+
document.addEventListener('trix-focus', inlineFocus)
|
112
|
+
document.addEventListener('trix-blur', inlineFocus)
|
93
113
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
useFocus())
|
98
|
-
: null
|
114
|
+
const handleAnchorElementClick = (clickedElement) => {
|
115
|
+
const trixEditorContainer = clickedElement.closest('.pb_rich_text_editor_kit')
|
116
|
+
if (!trixEditorContainer) return
|
99
117
|
|
100
|
-
|
101
|
-
|
118
|
+
const anchorElement = clickedElement.closest('a')
|
119
|
+
if (!anchorElement) return
|
120
|
+
|
121
|
+
if (anchorElement.hasAttribute('href')) window.open(anchorElement.href)
|
102
122
|
}
|
103
123
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
editor.setSelectedRange([0, 0])
|
108
|
-
editor.insertHTML(template)
|
109
|
-
}, [editor, template])
|
124
|
+
const handleClick = (event) => {
|
125
|
+
handleAnchorElementClick(event.target)
|
126
|
+
}
|
110
127
|
|
111
128
|
useEffect(() => {
|
112
|
-
|
113
|
-
|
114
|
-
const trixEditorContainer = target.closest('.pb_rich_text_editor_kit')
|
115
|
-
if (!trixEditorContainer) return
|
129
|
+
trixRef.current.addEventListener('click', handleClick)
|
130
|
+
}, [])
|
116
131
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
const richTextEditorClass = 'pb_rich_text_editor_kit',
|
125
|
-
simpleClass = simple ? 'simple' : '',
|
126
|
-
focusClass = focus ? 'focus-editor-targets' : '',
|
127
|
-
stickyClass = sticky ? 'sticky' : '',
|
128
|
-
inlineClass = inline ? 'inline' : '',
|
129
|
-
toolbarBottomClass = toolbarBottom ? 'toolbar-bottom' : ''
|
130
|
-
|
131
|
-
let css = classnames(globalProps(props), className)
|
132
|
-
css = classnames(
|
133
|
-
richTextEditorClass,
|
134
|
-
simpleClass,
|
135
|
-
focusClass,
|
136
|
-
stickyClass,
|
137
|
-
inlineClass,
|
138
|
-
toolbarBottomClass,
|
139
|
-
css
|
140
|
-
)
|
132
|
+
const RichTextEditorClass = 'pb_rich_text_editor_kit'
|
133
|
+
const SimpleClass = simple ? 'simple' : ''
|
134
|
+
const FocusClass = focus ? 'focus-editor-targets' : ''
|
135
|
+
const StickyClass = sticky ? 'sticky' : ''
|
136
|
+
const InlineClass = inline ? 'inline' : ''
|
137
|
+
const ToolbarBottomClass = toolbarBottom ? 'toolbar-bottom' : ''
|
138
|
+
const css = classnames(globalProps(props), className)
|
141
139
|
|
142
140
|
return (
|
143
141
|
<div
|
144
142
|
{...ariaProps}
|
145
143
|
{...dataProps}
|
146
|
-
className={
|
144
|
+
className={classnames(
|
145
|
+
RichTextEditorClass,
|
146
|
+
SimpleClass,
|
147
|
+
FocusClass,
|
148
|
+
StickyClass,
|
149
|
+
InlineClass,
|
150
|
+
ToolbarBottomClass,
|
151
|
+
css
|
152
|
+
)}
|
147
153
|
>
|
148
|
-
<
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
onEditorReady={handleOnEditorReady}
|
153
|
-
placeholder={placeholder}
|
154
|
+
<input
|
155
|
+
id={id}
|
156
|
+
name={name}
|
157
|
+
type="hidden"
|
154
158
|
value={value}
|
155
159
|
/>
|
160
|
+
<trix-editor
|
161
|
+
input={id}
|
162
|
+
name={name}
|
163
|
+
placeholder={placeholder}
|
164
|
+
ref={trixRef}
|
165
|
+
/>
|
156
166
|
</div>
|
157
167
|
)
|
158
168
|
}
|
@@ -1 +1 @@
|
|
1
|
-
<%= pb_rails("rich_text_editor", props: {id: "default"
|
1
|
+
<%= pb_rails("rich_text_editor", props: {id: "default"}) %>
|
@@ -1,19 +1,12 @@
|
|
1
|
-
import React
|
1
|
+
import React from 'react'
|
2
2
|
import { RichTextEditor } from '../../'
|
3
3
|
|
4
|
-
const RichTextEditorDefault = (props) =>
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
onChange={handleOnChange}
|
12
|
-
value={value}
|
13
|
-
{...props}
|
14
|
-
/>
|
15
|
-
</div>
|
16
|
-
)
|
17
|
-
}
|
4
|
+
const RichTextEditorDefault = (props) => (
|
5
|
+
<div>
|
6
|
+
<RichTextEditor
|
7
|
+
{...props}
|
8
|
+
/>
|
9
|
+
</div>
|
10
|
+
)
|
18
11
|
|
19
12
|
export default RichTextEditorDefault
|
@@ -3,7 +3,7 @@
|
|
3
3
|
import React, { type Node } from 'react'
|
4
4
|
import classnames from 'classnames'
|
5
5
|
import { buildAriaProps, buildDataProps } from '../utilities/props'
|
6
|
-
import { globalProps } from '../utilities/globalProps'
|
6
|
+
import { globalProps } from '../utilities/globalProps.js'
|
7
7
|
import PbTable from './'
|
8
8
|
|
9
9
|
type TableProps = {
|
@@ -2,7 +2,7 @@
|
|
2
2
|
import React from 'react'
|
3
3
|
import classnames from 'classnames'
|
4
4
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
5
|
-
import { globalProps } from '../utilities/globalProps'
|
5
|
+
import { globalProps } from '../utilities/globalProps.js'
|
6
6
|
|
7
7
|
type TableRowPropTypes = {
|
8
8
|
aria?: object,
|
@@ -2,7 +2,7 @@
|
|
2
2
|
import React, { forwardRef } from 'react'
|
3
3
|
import classnames from 'classnames'
|
4
4
|
|
5
|
-
import { globalProps } from '../utilities/globalProps'
|
5
|
+
import { globalProps } from '../utilities/globalProps.js'
|
6
6
|
import { buildAriaProps, buildDataProps } from '../utilities/props'
|
7
7
|
|
8
8
|
import Flex from '../pb_flex/_flex'
|
@@ -4,12 +4,12 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
[class^=pb_text_input_kit] {
|
7
|
-
margin-bottom: $space_sm;
|
8
7
|
.pb_text_input_kit_label {
|
9
8
|
margin-bottom: $space_xs;
|
10
9
|
display: block;
|
11
10
|
}
|
12
11
|
.text_input_wrapper {
|
12
|
+
margin-bottom: $space_sm;
|
13
13
|
display: block;
|
14
14
|
input::placeholder,
|
15
15
|
.text_input .placeholder {
|
@@ -75,17 +75,3 @@ test('returns additional class name', () => {
|
|
75
75
|
const kit = screen.getByTestId(testId)
|
76
76
|
expect(kit).toHaveClass(`${kitClass} dark error`)
|
77
77
|
})
|
78
|
-
|
79
|
-
test('returns additional class name', () => {
|
80
|
-
render(
|
81
|
-
<TextInput
|
82
|
-
data={{ testid: testId }}
|
83
|
-
label="First Name"
|
84
|
-
marginBottom="lg"
|
85
|
-
placeholder="Enter first name"
|
86
|
-
/>
|
87
|
-
)
|
88
|
-
|
89
|
-
const kit = screen.getByTestId(testId)
|
90
|
-
expect(kit).toHaveClass(`${kitClass} mb_lg`)
|
91
|
-
})
|
@@ -5,7 +5,7 @@ import classnames from 'classnames'
|
|
5
5
|
|
6
6
|
import DateTime from '../pb_kit/dateTime.js'
|
7
7
|
import { buildCss } from '../utilities/props'
|
8
|
-
import { globalProps } from '../utilities/globalProps'
|
8
|
+
import { globalProps } from '../utilities/globalProps.js'
|
9
9
|
|
10
10
|
import Body from '../pb_body/_body'
|
11
11
|
import Caption from '../pb_caption/_caption'
|
@@ -3,7 +3,7 @@
|
|
3
3
|
import React from 'react'
|
4
4
|
import classnames from 'classnames'
|
5
5
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
6
|
-
import { deprecatedProps, globalProps } from '../utilities/globalProps'
|
6
|
+
import { deprecatedProps, globalProps } from '../utilities/globalProps.js'
|
7
7
|
|
8
8
|
type TitleProps = {
|
9
9
|
aria?: object,
|
@@ -6,7 +6,7 @@ import AsyncSelect from 'react-select/async'
|
|
6
6
|
import CreateableSelect from 'react-select/creatable'
|
7
7
|
import AsyncCreateableSelect from 'react-select/async-creatable'
|
8
8
|
import { get, isString, uniqueId } from 'lodash'
|
9
|
-
import { globalProps } from '../utilities/globalProps'
|
9
|
+
import { globalProps } from '../utilities/globalProps.js'
|
10
10
|
import classnames from 'classnames'
|
11
11
|
|
12
12
|
import Control from './components/Control'
|
@@ -2,7 +2,7 @@
|
|
2
2
|
import React from 'react'
|
3
3
|
import classnames from 'classnames'
|
4
4
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
5
|
-
import { globalProps } from '../utilities/globalProps'
|
5
|
+
import { globalProps } from '../utilities/globalProps.js'
|
6
6
|
|
7
7
|
type UserBadgeProps = {
|
8
8
|
aria?: object,
|
@@ -6,7 +6,7 @@
|
|
6
6
|
import React from 'react'
|
7
7
|
import classnames from 'classnames'
|
8
8
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
9
|
-
import { globalProps } from '../utilities/globalProps'
|
9
|
+
import { globalProps } from '../utilities/globalProps.js'
|
10
10
|
import Joyride from 'react-joyride'
|
11
11
|
import Button from '../pb_button/_button'
|
12
12
|
import Flex from '../pb_flex/_flex'
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
import React from 'react'
|
4
4
|
import classnames from 'classnames'
|
5
|
-
import { globalProps } from '../utilities/globalProps'
|
5
|
+
import { globalProps } from '../utilities/globalProps.js'
|
6
6
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
7
7
|
|
8
8
|
import Caption from '../pb_caption/_caption'
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import Highcharts from 'highcharts'
|
2
2
|
|
3
3
|
import { highchartsTheme } from '../pb_dashboard/pbChartsLightTheme'
|
4
|
-
import { highchartsDarkTheme } from '../pb_dashboard/pbChartsDarkTheme'
|
5
4
|
import colors from '../tokens/exports/_colors.scss'
|
6
5
|
|
7
6
|
import pie from 'highcharts/modules/variable-pie'
|
@@ -68,14 +67,10 @@ class pbChart {
|
|
68
67
|
}
|
69
68
|
}
|
70
69
|
|
71
|
-
setupTheme() {
|
72
|
-
this.options.dark ? Highcharts.setOptions(highchartsDarkTheme) : Highcharts.setOptions(highchartsTheme)
|
73
|
-
}
|
74
|
-
|
75
70
|
setupGauge(options) {
|
76
71
|
highchartsMore(Highcharts)
|
77
72
|
solidGauge(Highcharts)
|
78
|
-
|
73
|
+
Highcharts.setOptions(highchartsTheme)
|
79
74
|
|
80
75
|
Highcharts.chart(this.defaults.id, {
|
81
76
|
chart: {
|
@@ -145,7 +140,7 @@ class pbChart {
|
|
145
140
|
}
|
146
141
|
|
147
142
|
setupPieChart(options) {
|
148
|
-
|
143
|
+
Highcharts.setOptions(highchartsTheme)
|
149
144
|
Highcharts.chart(this.defaults.id, {
|
150
145
|
title: {
|
151
146
|
text: this.defaults.title,
|
@@ -192,7 +187,8 @@ class pbChart {
|
|
192
187
|
}
|
193
188
|
|
194
189
|
setupChart(options) {
|
195
|
-
|
190
|
+
Highcharts.setOptions(highchartsTheme)
|
191
|
+
|
196
192
|
const configOptions = {
|
197
193
|
title: {
|
198
194
|
text: this.defaults.title,
|
@@ -0,0 +1,97 @@
|
|
1
|
+
// Prop categories
|
2
|
+
const spacingProps = ({
|
3
|
+
marginRight,
|
4
|
+
marginLeft,
|
5
|
+
marginTop,
|
6
|
+
marginBottom,
|
7
|
+
marginX,
|
8
|
+
marginY,
|
9
|
+
margin,
|
10
|
+
paddingRight,
|
11
|
+
paddingLeft,
|
12
|
+
paddingTop,
|
13
|
+
paddingBottom,
|
14
|
+
paddingX,
|
15
|
+
paddingY,
|
16
|
+
padding,
|
17
|
+
}) => {
|
18
|
+
let css = ''
|
19
|
+
css += marginRight ? `mr_${marginRight} ` : ''
|
20
|
+
css += marginLeft ? `ml_${marginLeft} ` : ''
|
21
|
+
css += marginTop ? `mt_${marginTop} ` : ''
|
22
|
+
css += marginBottom ? `mb_${marginBottom} ` : ''
|
23
|
+
css += marginX ? `mx_${marginX} ` : ''
|
24
|
+
css += marginY ? `my_${marginY} ` : ''
|
25
|
+
css += margin ? `m_${margin} ` : ''
|
26
|
+
css += paddingRight ? `pr_${paddingRight} ` : ''
|
27
|
+
css += paddingLeft ? `pl_${paddingLeft} ` : ''
|
28
|
+
css += paddingTop ? `pt_${paddingTop} ` : ''
|
29
|
+
css += paddingBottom ? `pb_${paddingBottom} ` : ''
|
30
|
+
css += paddingX ? `px_${paddingX} ` : ''
|
31
|
+
css += paddingY ? `py_${paddingY} ` : ''
|
32
|
+
css += padding ? `p_${padding} ` : ''
|
33
|
+
return css
|
34
|
+
}
|
35
|
+
|
36
|
+
const darkProps = ({ dark }) => {
|
37
|
+
let css = ''
|
38
|
+
css += dark ? 'dark' : ''
|
39
|
+
return css
|
40
|
+
}
|
41
|
+
|
42
|
+
const numberSpacingProps = ({ numberSpacing }) => {
|
43
|
+
let css = ''
|
44
|
+
css += numberSpacing ? `ns_${numberSpacing} ` : ''
|
45
|
+
return css
|
46
|
+
}
|
47
|
+
|
48
|
+
const maxWidthProps = ({ maxWidth }) => {
|
49
|
+
let css = ''
|
50
|
+
css += maxWidth ? `max_width_${maxWidth } ` : ''
|
51
|
+
return css
|
52
|
+
}
|
53
|
+
|
54
|
+
const zIndexProps = ({ zIndex }) => {
|
55
|
+
let css = ''
|
56
|
+
css += zIndex ? `z_index_${zIndex } ` : ''
|
57
|
+
return css
|
58
|
+
}
|
59
|
+
|
60
|
+
const shadowProps = ({ shadow }) => {
|
61
|
+
let css = ''
|
62
|
+
css += shadow ? `shadow_${shadow} ` : ''
|
63
|
+
return css
|
64
|
+
}
|
65
|
+
|
66
|
+
const lineHeightProps = ({ lineHeight }) => {
|
67
|
+
let css = ''
|
68
|
+
css += lineHeight ? `line_height_${lineHeight} ` : ''
|
69
|
+
return css
|
70
|
+
}
|
71
|
+
|
72
|
+
const displayProps = ({ display }) => {
|
73
|
+
let css = ''
|
74
|
+
css += display ? `display_${display} ` : ''
|
75
|
+
return css
|
76
|
+
}
|
77
|
+
|
78
|
+
const cursorProps = ({ cursor }) => {
|
79
|
+
let css = ''
|
80
|
+
css += cursor ? `cursor_${cursor} ` : ''
|
81
|
+
return css
|
82
|
+
}
|
83
|
+
|
84
|
+
// All Exported as a single function
|
85
|
+
export const globalProps = (props, defaultProps = {}) => {
|
86
|
+
const allProps = { ...props, ...defaultProps }
|
87
|
+
return spacingProps(allProps) + darkProps(allProps) + maxWidthProps(allProps) + zIndexProps(allProps) + numberSpacingProps(allProps) + shadowProps(allProps) + lineHeightProps(allProps) + cursorProps(allProps) + displayProps(allProps)
|
88
|
+
}
|
89
|
+
|
90
|
+
export const deprecatedProps = (kit, props = []) => {
|
91
|
+
if (process.env.NODE_ENV === 'development') {
|
92
|
+
/* eslint no-console: ["error", { allow: ["warn", "error"] }] */
|
93
|
+
props.forEach((prop) => {
|
94
|
+
console.warn(`${kit} Kit: The prop '${prop}' is deprecated and will be removed in a future release!`)
|
95
|
+
})
|
96
|
+
}
|
97
|
+
}
|
@@ -10,11 +10,10 @@ import classnames from 'classnames'
|
|
10
10
|
* @param {Object} data the object containing the data to derive the props from.
|
11
11
|
* @returns {Object} an object whose keys have the prefix added to them.
|
12
12
|
*/
|
13
|
-
const buildPrefixedProps = (prefix
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
}, {})
|
13
|
+
const buildPrefixedProps = (prefix, data) => Object.keys(data).reduce((props, key) => {
|
14
|
+
props[`${prefix}-${key}`] = data[key]
|
15
|
+
return props
|
16
|
+
}, {})
|
18
17
|
|
19
18
|
/**
|
20
19
|
* Represent a "No-Operation" function that can be used as a sensible
|
@@ -30,8 +29,7 @@ export const noop = () => {}
|
|
30
29
|
* @param {Object} aria the object containing the aria prop values.
|
31
30
|
* @returns {Object} an object holding the HTML valid aria props and their values.
|
32
31
|
*/
|
33
|
-
export const buildAriaProps = (aria
|
34
|
-
buildPrefixedProps('aria', aria)
|
32
|
+
export const buildAriaProps = (aria) => buildPrefixedProps('aria', aria)
|
35
33
|
|
36
34
|
/**
|
37
35
|
* Maps a given data object into HTML valid data attribtues and their values.
|
@@ -39,7 +37,7 @@ export const buildAriaProps = (aria: {[key: string]: string}): {[key: string]: s
|
|
39
37
|
* @param {Object} data the object containing the data prop values.
|
40
38
|
* @returns {Object} an object holding the HTML valid data props and their values.
|
41
39
|
*/
|
42
|
-
export const buildDataProps = (data
|
40
|
+
export const buildDataProps = (data) => buildPrefixedProps('data', data)
|
43
41
|
|
44
42
|
/**
|
45
43
|
* Builds a Playbook valid root className off of the incoming css rules.
|
@@ -47,5 +45,5 @@ export const buildDataProps = (data: {[key: string]: any}) => buildPrefixedProps
|
|
47
45
|
* @param {Object} rules a 'classnames' compliant rules object, used to derive the root className.
|
48
46
|
* @returns {String} the derived root className value.
|
49
47
|
*/
|
50
|
-
export const buildCss = (...rules
|
48
|
+
export const buildCss = (...rules) => classnames(rules).replace(/\s/g, '_')
|
51
49
|
|
data/lib/playbook/classnames.rb
CHANGED
@@ -20,17 +20,6 @@ module Playbook
|
|
20
20
|
line_height_props,
|
21
21
|
display_props,
|
22
22
|
cursor_props,
|
23
|
-
flex_direction_props,
|
24
|
-
flex_wrap_props,
|
25
|
-
justify_content_props,
|
26
|
-
justify_self_props,
|
27
|
-
align_items_props,
|
28
|
-
align_content_props,
|
29
|
-
align_self_props,
|
30
|
-
flex_props,
|
31
|
-
flex_grow_props,
|
32
|
-
flex_shrink_props,
|
33
|
-
order_props,
|
34
23
|
].compact.join(" ")
|
35
24
|
end
|
36
25
|
|
data/lib/playbook/kit_base.rb
CHANGED
@@ -8,17 +8,6 @@ require "playbook/shadow"
|
|
8
8
|
require "playbook/line_height"
|
9
9
|
require "playbook/display"
|
10
10
|
require "playbook/cursor"
|
11
|
-
require "playbook/flex_direction"
|
12
|
-
require "playbook/flex_wrap"
|
13
|
-
require "playbook/justify_content"
|
14
|
-
require "playbook/justify_self"
|
15
|
-
require "playbook/align_items"
|
16
|
-
require "playbook/align_content"
|
17
|
-
require "playbook/align_self"
|
18
|
-
require "playbook/flex"
|
19
|
-
require "playbook/flex_grow"
|
20
|
-
require "playbook/flex_shrink"
|
21
|
-
require "playbook/order"
|
22
11
|
|
23
12
|
module Playbook
|
24
13
|
class KitBase < ViewComponent::Base
|
@@ -32,17 +21,6 @@ module Playbook
|
|
32
21
|
include Playbook::LineHeight
|
33
22
|
include Playbook::Display
|
34
23
|
include Playbook::Cursor
|
35
|
-
include Playbook::FlexDirection
|
36
|
-
include Playbook::FlexWrap
|
37
|
-
include Playbook::JustifyContent
|
38
|
-
include Playbook::JustifySelf
|
39
|
-
include Playbook::AlignItems
|
40
|
-
include Playbook::AlignContent
|
41
|
-
include Playbook::AlignSelf
|
42
|
-
include Playbook::Flex
|
43
|
-
include Playbook::FlexGrow
|
44
|
-
include Playbook::FlexShrink
|
45
|
-
include Playbook::Order
|
46
24
|
|
47
25
|
prop :id
|
48
26
|
prop :data, type: Playbook::Props::Hash, default: {}
|