playbook_ui 8.2.0.pre.alpha1 → 8.2.0.pre.alpha2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a9372b2a0d2e36aab28186cfe5988ec72e62cce82525ebf3bfb5886c7eff1ae6
4
- data.tar.gz: 758cacaf5bd93949d6673680da6ffe90d37079508d0580dda1a956c8d15f965f
3
+ metadata.gz: c6d260fd8cb3c808cd647ea9150feb6c68ddaefef55e69cdb28986d8689ea7ad
4
+ data.tar.gz: be549c62b03d8e89c5746a8cfeb4ccceedf4da2dbe7e1ff27dc609c2d574224b
5
5
  SHA512:
6
- metadata.gz: 6a9e10a2e3a90ce39438f1d47c600463ddb7ee2a168a411edd783b53dfccdcfa2b4b8c864c714bd13fd3bcfbb54b1e56da87529dabf6ea812d802164f0a860bd
7
- data.tar.gz: 8a984eb608eb57dde4d1e5e1c71984bcdce86b349c405f7bc9b11d94f72e229ead4de53e7263fbea38a748d6064e901627612d65338e60dc7b4a4447662d95ef
6
+ metadata.gz: d3d1a839484d63aafb17d2e2c03daa56781bae403120e652dc5d20af205c857d92c0e2ef2a6b9116dad6f19fb1514f657e949d774ab096ed13d6bcf14566097e
7
+ data.tar.gz: a57ea0a32d351f774cdf73ef1fe572199b7207be7e1cf863538c09d68617ce9d3b352d34a111695b3a2b91f93c1fbb9c73775a08e6254d5321c878a14323e02b
data/README.md CHANGED
@@ -42,6 +42,15 @@ See [docs/upgrade-guide](./docs/upgrade-guide)
42
42
 
43
43
  * [Common Errors & Solutions](https://github.com/powerhome/playbook/wiki/Common-Errors-&-Solutions)
44
44
 
45
+ ### Reset.css
46
+
47
+ Playbook provides it's own `reset.css` boilerplate for optional use in your application. You can either:
48
+
49
+ 1. Import the `dist/reset.css` from the playbook_ui gem into your Rails view: `@import "reset.css"` (note: your path may vary depending on your application's asset paths)
50
+ 2. Import or include the file via the npm package: `import 'reset.css'` (note: your path may vary depending on your application's node-sass `includePaths`)
51
+
52
+ This asset aims to provide a commonly styles base for supported browsers.
53
+
45
54
  ### Building Playbook Kits
46
55
 
47
56
  * [Generating a Kit](https://github.com/powerhome/playbook/wiki/Generating-a-Kit)
@@ -2,6 +2,7 @@
2
2
 
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
+ import { buildDataProps } from '../utilities/props'
5
6
  import { globalProps } from '../utilities/globalProps.js'
6
7
 
7
8
  import Icon from '../pb_icon/_icon.jsx'
@@ -13,6 +14,7 @@ type ButtonPropTypes = {
13
14
  },
14
15
  children?: array<React.ReactChild>,
15
16
  className?: string | array<string>,
17
+ data?: object,
16
18
  disabled?: boolean,
17
19
  fixedWidth?: boolean,
18
20
  fullWidth?: boolean,
@@ -69,6 +71,7 @@ const Button = (props: ButtonPropTypes) => {
69
71
  const {
70
72
  children,
71
73
  className,
74
+ data = {},
72
75
  disabled,
73
76
  icon = null,
74
77
  id,
@@ -82,6 +85,7 @@ const Button = (props: ButtonPropTypes) => {
82
85
  } = props
83
86
 
84
87
  const buttonAria = buttonAriaProps(props)
88
+ const dataProps = buildDataProps(data)
85
89
  const css = classnames(
86
90
  buttonClassName(props),
87
91
  globalProps(props),
@@ -111,6 +115,7 @@ const Button = (props: ButtonPropTypes) => {
111
115
  <If condition={link !== null}>
112
116
  <a
113
117
  {...buttonAria}
118
+ {...dataProps}
114
119
  className={css}
115
120
  href={link}
116
121
  id={id}
@@ -122,6 +127,7 @@ const Button = (props: ButtonPropTypes) => {
122
127
  <Else />
123
128
  <button
124
129
  {...buttonAria}
130
+ {...dataProps}
125
131
  className={css}
126
132
  disabled={disabled}
127
133
  id={id}
@@ -0,0 +1,91 @@
1
+
2
+ import React from 'react'
3
+ import { appendAlert, fireEvent, render, screen, waitFor } from '../utilities/test-utils'
4
+
5
+ import Button from './_button'
6
+
7
+ // Primary Test Variables
8
+ const htmlType = 'submit',
9
+ text = 'Button Text',
10
+ value = '1234'
11
+
12
+ test('passes type, text, and value props to button', () => {
13
+ render(
14
+ <>
15
+ <Button
16
+ data={{ testid: 'primary-test' }}
17
+ htmlType={htmlType}
18
+ text={text}
19
+ value={value}
20
+ />
21
+ </>
22
+ )
23
+
24
+ const kit = screen.getByTestId('primary-test')
25
+ const content = screen.getByText(text)
26
+
27
+ expect(kit).toHaveClass('pb_button_kit_primary_inline_enabled')
28
+ expect(kit).toHaveAttribute('type', htmlType)
29
+ expect(kit).toHaveAttribute('value', value)
30
+ expect(content).toHaveTextContent(text)
31
+ })
32
+
33
+ // Link Test Variables
34
+ const link = 'https://www.google.com'
35
+
36
+ test('adds link to button', () => {
37
+ render(
38
+ <Button
39
+ data={{ testid: 'link-test' }}
40
+ link={link}
41
+ />
42
+ )
43
+
44
+ const kit = screen.getByTestId('link-test')
45
+
46
+ expect(kit).toHaveAttribute('href', link)
47
+ })
48
+
49
+ test('button with secondary variant', () => {
50
+ render(
51
+ <Button
52
+ data={{ testid: 'variant-test' }}
53
+ variant="secondary"
54
+ />
55
+ )
56
+
57
+ const kit = screen.getByTestId('variant-test')
58
+
59
+ expect(kit).toHaveClass('pb_button_kit_secondary_inline_enabled')
60
+ expect(kit).toHaveAttribute('type', 'button')
61
+ })
62
+
63
+ test('disable prop', () => {
64
+ render(
65
+ <Button
66
+ data={{ testid: 'disable-test' }}
67
+ disabled
68
+ />
69
+ )
70
+
71
+ const kit = screen.getByTestId('disable-test')
72
+
73
+ expect(kit).toBeDisabled()
74
+ })
75
+
76
+ test('click event', async () => {
77
+ render(
78
+ <Button
79
+ data={{ testid: 'click-test' }}
80
+ onClick={() => appendAlert('clicked button!')}
81
+ />
82
+ )
83
+
84
+ const kit = screen.getByTestId('click-test')
85
+
86
+ fireEvent.click(kit)
87
+
88
+ await waitFor(() => screen.getByText('clicked button!'))
89
+
90
+ expect(screen.getByText('clicked button!')).toBeInTheDocument()
91
+ })
@@ -30,7 +30,6 @@ const ButtonDefault = (props) => (
30
30
  {...props}
31
31
  />
32
32
  </div>
33
-
34
33
  )
35
34
 
36
35
  export default ButtonDefault
@@ -0,0 +1,46 @@
1
+ import React from 'react'
2
+ import { render, screen } from '../utilities/test-utils'
3
+
4
+ import { Button, ButtonToolbar } from '../'
5
+
6
+ test('default test', () => {
7
+ render(
8
+ <ButtonToolbar
9
+ data={{ testid: 'default-test' }}
10
+ >
11
+ <Button
12
+ data={{ testid: 'child-button' }}
13
+ text="Test"
14
+ />
15
+ </ButtonToolbar>
16
+ )
17
+
18
+ const kit = screen.getByTestId('default-test')
19
+ const child = screen.getByTestId('child-button')
20
+
21
+ expect(kit).toHaveClass('pb_button_toolbar_kit_horizontal_primary')
22
+ expect(kit).toContainElement(child)
23
+ expect(child).toHaveClass('pb_button_kit_primary_inline_enabled')
24
+ })
25
+
26
+ test('variant and orientation props', () => {
27
+ render(
28
+ <ButtonToolbar
29
+ data={{ testid: 'second-test' }}
30
+ orientation="vertical"
31
+ variant="secondary"
32
+ >
33
+ <Button
34
+ data={{ testid: 'child-button' }}
35
+ text="Create"
36
+ variant="secondary"
37
+ />
38
+ </ButtonToolbar>
39
+ )
40
+
41
+ const kit = screen.getByTestId('second-test')
42
+ const child = screen.getByTestId('child-button')
43
+
44
+ expect(kit).toHaveClass('pb_button_toolbar_kit_vertical_secondary')
45
+ expect(child).toHaveClass('pb_button_kit_secondary_inline_enabled')
46
+ })
@@ -0,0 +1,17 @@
1
+ import React from 'react'
2
+ import { render, screen } from '../utilities/test-utils'
3
+
4
+ import CircleIconButton from './_circle_icon_button'
5
+
6
+ test('default test', () => {
7
+ render(
8
+ <CircleIconButton
9
+ data={{ testid: 'default-test' }}
10
+ icon="plus"
11
+ />
12
+ )
13
+
14
+ const kit = screen.getByTestId('default-test')
15
+
16
+ expect(kit).toHaveClass('pb_circle_icon_button_kit')
17
+ })
@@ -1,8 +1,12 @@
1
1
  .pb-form {
2
2
  .pb-form-actions {
3
3
  list-style: none;
4
- margin: 8px;
4
+ margin: 0;
5
5
  padding: 0;
6
+ display: flex;
7
+ justify-content: space-between;
8
+ align-items: flex-start;
9
+ flex-direction: row;
6
10
 
7
11
  > li {
8
12
  display: inline-flex;
@@ -39,3 +39,9 @@ export const ensureAccessible = async (Kit, props = {}, newProps = {}) => {
39
39
  const html = render()
40
40
  expect(await axe(html)).toHaveNoViolations()
41
41
  }
42
+
43
+ export const appendAlert = (message) => {
44
+ const alertNode = document.createElement('div')
45
+ alertNode.innerHTML = message
46
+ document.querySelector('body').appendChild(alertNode)
47
+ }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- VERSION = "8.2.0.pre.alpha1"
4
+ VERSION = "8.2.0.pre.alpha2"
5
5
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.2.0.pre.alpha1
4
+ version: 8.2.0.pre.alpha2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
8
8
  - Power Devs
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-03-02 00:00:00.000000000 Z
12
+ date: 2021-03-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -17,7 +17,7 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 5.1.6
20
+ version: 5.2.4.5
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
23
  version: '6.0'
@@ -27,7 +27,7 @@ dependencies:
27
27
  requirements:
28
28
  - - ">="
29
29
  - !ruby/object:Gem::Version
30
- version: 5.1.6
30
+ version: 5.2.4.5
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '6.0'
@@ -37,7 +37,7 @@ dependencies:
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 5.1.6
40
+ version: 5.2.4.5
41
41
  - - "<"
42
42
  - !ruby/object:Gem::Version
43
43
  version: '7.0'
@@ -47,7 +47,7 @@ dependencies:
47
47
  requirements:
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 5.1.6
50
+ version: 5.2.4.5
51
51
  - - "<"
52
52
  - !ruby/object:Gem::Version
53
53
  version: '7.0'
@@ -57,7 +57,7 @@ dependencies:
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 5.1.6
60
+ version: 5.2.4.5
61
61
  - - "<"
62
62
  - !ruby/object:Gem::Version
63
63
  version: '7.0'
@@ -67,7 +67,7 @@ dependencies:
67
67
  requirements:
68
68
  - - ">="
69
69
  - !ruby/object:Gem::Version
70
- version: 5.1.6
70
+ version: 5.2.4.5
71
71
  - - "<"
72
72
  - !ruby/object:Gem::Version
73
73
  version: '7.0'
@@ -285,22 +285,22 @@ dependencies:
285
285
  name: rspec-rails
286
286
  requirement: !ruby/object:Gem::Requirement
287
287
  requirements:
288
- - - ">="
289
- - !ruby/object:Gem::Version
290
- version: 3.8.0
291
288
  - - "~>"
292
289
  - !ruby/object:Gem::Version
293
290
  version: '3.8'
291
+ - - ">="
292
+ - !ruby/object:Gem::Version
293
+ version: 3.8.0
294
294
  type: :development
295
295
  prerelease: false
296
296
  version_requirements: !ruby/object:Gem::Requirement
297
297
  requirements:
298
- - - ">="
299
- - !ruby/object:Gem::Version
300
- version: 3.8.0
301
298
  - - "~>"
302
299
  - !ruby/object:Gem::Version
303
300
  version: '3.8'
301
+ - - ">="
302
+ - !ruby/object:Gem::Version
303
+ version: 3.8.0
304
304
  - !ruby/object:Gem::Dependency
305
305
  name: rubocop
306
306
  requirement: !ruby/object:Gem::Requirement
@@ -526,6 +526,7 @@ files:
526
526
  - app/pb_kits/playbook/pb_button/_button_mixins.scss
527
527
  - app/pb_kits/playbook/pb_button/button.html.erb
528
528
  - app/pb_kits/playbook/pb_button/button.rb
529
+ - app/pb_kits/playbook/pb_button/button.test.js
529
530
  - app/pb_kits/playbook/pb_button/docs/_button_accessibility.html.erb
530
531
  - app/pb_kits/playbook/pb_button/docs/_button_accessibility.jsx
531
532
  - app/pb_kits/playbook/pb_button/docs/_button_block_content.html.erb
@@ -552,6 +553,7 @@ files:
552
553
  - app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_mixins.scss
553
554
  - app/pb_kits/playbook/pb_button_toolbar/button_toolbar.html.erb
554
555
  - app/pb_kits/playbook/pb_button_toolbar/button_toolbar.rb
556
+ - app/pb_kits/playbook/pb_button_toolbar/button_toolbar.test.js
555
557
  - app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_default.html.erb
556
558
  - app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_default.jsx
557
559
  - app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_secondary.html.erb
@@ -654,6 +656,7 @@ files:
654
656
  - app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss
655
657
  - app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.html.erb
656
658
  - app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.rb
659
+ - app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.test.js
657
660
  - app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_click.jsx
658
661
  - app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_default.html.erb
659
662
  - app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_default.jsx
@@ -2072,7 +2075,7 @@ homepage: http://playbook.powerapp.cloud
2072
2075
  licenses:
2073
2076
  - MIT
2074
2077
  metadata: {}
2075
- post_install_message:
2078
+ post_install_message:
2076
2079
  rdoc_options: []
2077
2080
  require_paths:
2078
2081
  - lib
@@ -2087,8 +2090,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
2087
2090
  - !ruby/object:Gem::Version
2088
2091
  version: 1.3.1
2089
2092
  requirements: []
2090
- rubygems_version: 3.0.3
2091
- signing_key:
2093
+ rubyforge_project:
2094
+ rubygems_version: 2.7.3
2095
+ signing_key:
2092
2096
  specification_version: 4
2093
2097
  summary: Playbook Design System
2094
2098
  test_files: []