playbook_ui 9.1.0 → 9.3.0.pre.alpha.password.strength.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +1 -0
  3. data/app/pb_kits/playbook/data/menu.yml +1 -0
  4. data/app/pb_kits/playbook/index.js +4 -3
  5. data/app/pb_kits/playbook/pb_highlight/_highlight.jsx +1 -1
  6. data/app/pb_kits/playbook/pb_highlight/highlight.html.erb +3 -1
  7. data/app/pb_kits/playbook/pb_icon_stat_value/_icon_stat_value.jsx +3 -0
  8. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.html.erb +1 -0
  9. data/app/pb_kits/playbook/pb_passphrase/_passphrase.jsx +205 -0
  10. data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +63 -0
  11. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.jsx +33 -0
  12. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.html.erb +3 -0
  13. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.jsx +31 -0
  14. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.md +1 -0
  15. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.html.erb +16 -0
  16. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.jsx +56 -0
  17. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.md +1 -0
  18. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.html.erb +10 -0
  19. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx +68 -0
  20. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.md +9 -0
  21. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.jsx +33 -0
  22. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.md +3 -0
  23. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.html.erb +26 -0
  24. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.jsx +54 -0
  25. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.md +1 -0
  26. data/app/pb_kits/playbook/pb_passphrase/docs/example.yml +15 -0
  27. data/app/pb_kits/playbook/pb_passphrase/docs/index.js +6 -0
  28. data/app/pb_kits/playbook/pb_passphrase/passphrase.html.erb +1 -0
  29. data/app/pb_kits/playbook/pb_passphrase/passphrase.rb +41 -0
  30. data/app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx +123 -0
  31. data/app/pb_kits/playbook/pb_passphrase/passwordStrength.js +55 -0
  32. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.jsx +1 -1
  33. data/app/pb_kits/playbook/pb_progress_pills/docs/_description.md +3 -1
  34. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb +1 -1
  35. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx +1 -0
  36. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.html.erb +1 -1
  37. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.jsx +1 -0
  38. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.html.erb +1 -1
  39. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.rb +5 -0
  40. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +6 -0
  41. data/app/pb_kits/playbook/pb_stat_value/_stat_value.jsx +2 -0
  42. data/app/pb_kits/playbook/pb_stat_value/stat_value.html.erb +2 -0
  43. data/app/pb_kits/playbook/react_rails_kits.js +1 -0
  44. data/lib/playbook/version.rb +1 -1
  45. metadata +59 -36
@@ -0,0 +1,55 @@
1
+ import zxcvbn from 'zxcvbn'
2
+
3
+ export const zxcvbnPasswordScore = (options) => {
4
+ const {
5
+ calculate = zxcvbn,
6
+ averageThreshold = 2,
7
+ strongThreshold = 3,
8
+ minLength = 12,
9
+ } = options
10
+
11
+ return {
12
+ minLength,
13
+ averageThreshold,
14
+ strongThreshold,
15
+ test: function (password = '', common = false) {
16
+ const feedbackValues = (str) => {
17
+ let percent, variant, text
18
+
19
+ if (password.length <= 0) {
20
+ percent = '0'
21
+ variant = 'negative'
22
+ text = '\u00A0' //nbsp to keep form from jumping when typing beings
23
+ } else if (common) {
24
+ percent = '25'
25
+ variant = 'negative'
26
+ text = 'This passphrase is too common'
27
+ } else if (password.length < this.minLength || str < this.averageThreshold) {
28
+ percent = '25'
29
+ variant = 'negative'
30
+ text = 'Too weak'
31
+ } else if (str < this.strongThreshold){
32
+ percent = '50'
33
+ variant = 'warning'
34
+ text = 'Almost there, keep going!'
35
+ } else if (str >= this.strongThreshold) {
36
+ percent = '100'
37
+ variant = 'positive'
38
+ text = 'Success! Strong passphrase'
39
+ }
40
+ return { percent, variant, text }
41
+ }
42
+
43
+ const result = calculate(password)
44
+
45
+ return (
46
+ {
47
+ suggestions: result.feedback.suggestions,
48
+ warning: result.feedback.warning,
49
+ strength: result.score,
50
+ ...feedbackValues(result.score),
51
+ }
52
+ )
53
+ },
54
+ }
55
+ }
@@ -46,7 +46,7 @@ const ProgressPill = ({ active, dark, step }: ProgressPillProps) => (
46
46
  const ProgressPills = (props: ProgressPillsProps) => {
47
47
  const {
48
48
  active = 0,
49
- aria = {},
49
+ aria = { hidden: true },
50
50
  className,
51
51
  data = {},
52
52
  id,
@@ -1 +1,3 @@
1
- Progress pills indicate a specific point in time of a series of sequential steps. They are used to track progress of something over time.
1
+ Progress pills indicate a specific point in time of a series of sequential steps. They are used to track progress of something over time.
2
+
3
+ Note: be sure to make use of the aria attribute as shown in the example if you want this kit to be web accessible.
@@ -1 +1 @@
1
- <%= pb_rails("progress_pills", props: { steps: 3, active: 2 }) %>
1
+ <%= pb_rails("progress_pills", props: { aria: { label: "2 out of 3 steps complete" }, steps: 3, active: 2 }) %>
@@ -7,6 +7,7 @@ const ProgressPillsDefault = (props) => {
7
7
  <div>
8
8
  <ProgressPills
9
9
  active={2}
10
+ aria={{ label: '2 out of 3 steps complete' }}
10
11
  steps={3}
11
12
  {...props}
12
13
  />
@@ -1 +1 @@
1
- <%= pb_rails("progress_pills", props: { steps: 3, active: 2, title:"Status:", value:"Orientation" }) %>
1
+ <%= pb_rails("progress_pills", props: { aria: { label: "2 out of 3 steps complete" }, steps: 3, active: 2, title:"Status:", value:"Orientation" }) %>
@@ -7,6 +7,7 @@ const ProgressPillsStatus = (props) => {
7
7
  <div>
8
8
  <ProgressPills
9
9
  active={2}
10
+ aria={{ label: '2 out of 3 steps complete' }}
10
11
  steps={3}
11
12
  title="Status:"
12
13
  value="Orientation"
@@ -1,5 +1,5 @@
1
1
  <%= content_tag(:div,
2
- aria: object.aria,
2
+ aria: object.aria_attributes,
3
3
  id: object.id,
4
4
  data: object.data,
5
5
  class: object.classname) do %>
@@ -26,6 +26,11 @@ module Playbook
26
26
  step <= active ? "_active" : "_inactive"
27
27
  end
28
28
 
29
+ def aria_attributes
30
+ return aria if aria.present?
31
+ { hidden: true }
32
+ end
33
+
29
34
  def dark_pill
30
35
  dark ? " dark" : nil
31
36
  end
@@ -81,6 +81,7 @@
81
81
  position: sticky;
82
82
  top: 0;
83
83
  z-index: 1;
84
+ background-color: $white;
84
85
  }
85
86
  }
86
87
  trix-editor {
@@ -211,6 +212,11 @@
211
212
  border-color: $error_dark;
212
213
  }
213
214
  }
215
+ &.sticky {
216
+ trix-toolbar {
217
+ background-color: tint($bg_dark, 10%) !important;
218
+ }
219
+ }
214
220
  .trix-dialog.trix-dialog--link.trix-active {
215
221
  background-color: tint($bg_dark, 10%) !important;
216
222
  border: 1px solid rgba($white, 0.1);
@@ -25,6 +25,7 @@ const StatValue = (props: StatValueProps) => {
25
25
  return (
26
26
  <Title
27
27
  size={1}
28
+ tag="span"
28
29
  text={`${value}`}
29
30
  />
30
31
  )
@@ -36,6 +37,7 @@ const StatValue = (props: StatValueProps) => {
36
37
  return (
37
38
  <Title
38
39
  size={3}
40
+ tag="span"
39
41
  text={unit}
40
42
  />
41
43
  )
@@ -6,10 +6,12 @@
6
6
  <%= pb_rails "title", props: {
7
7
  classname: "pb_stat_value_kit",
8
8
  size: 1,
9
+ tag: "span",
9
10
  text: object.formatted_value } %>
10
11
  &nbsp;
11
12
  <%= pb_rails "title", props: {
12
13
  classname: "pb_stat_value_kit",
14
+ tag: "span",
13
15
  size: 3,
14
16
  text: object.unit } %>
15
17
  </div>
@@ -3,6 +3,7 @@ export { default as BarGraph } from './pb_bar_graph/_bar_graph.jsx'
3
3
  export { default as DistributionBar } from './pb_distribution_bar/_distribution_bar.jsx'
4
4
  export { default as Legend } from './pb_legend/_legend.jsx'
5
5
  export { default as LineGraph } from './pb_line_graph/_line_graph.jsx'
6
+ export { default as Passphrase } from './pb_passphrase/_passphrase.jsx'
6
7
  export { default as Typeahead } from './pb_typeahead/_typeahead.jsx'
7
8
  export { default as RichTextEditor } from './pb_rich_text_editor/_rich_text_editor.jsx'
8
9
  export { default as Dialog } from './pb_dialog/_dialog.jsx'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- VERSION = "9.1.0"
4
+ VERSION = "9.3.0.pre.alpha.password.strength.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.1.0
4
+ version: 9.3.0.pre.alpha.password.strength.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-04-05 00:00:00.000000000 Z
12
+ date: 2021-04-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -75,114 +75,114 @@ dependencies:
75
75
  name: react-rails
76
76
  requirement: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - '='
78
+ - - "~>"
79
79
  - !ruby/object:Gem::Version
80
- version: 2.6.0
80
+ version: '2.6'
81
81
  type: :runtime
82
82
  prerelease: false
83
83
  version_requirements: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - '='
85
+ - - "~>"
86
86
  - !ruby/object:Gem::Version
87
- version: 2.6.0
87
+ version: '2.6'
88
88
  - !ruby/object:Gem::Dependency
89
89
  name: redcarpet
90
90
  requirement: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - '='
92
+ - - "~>"
93
93
  - !ruby/object:Gem::Version
94
- version: 3.5.1
94
+ version: '3.5'
95
95
  type: :runtime
96
96
  prerelease: false
97
97
  version_requirements: !ruby/object:Gem::Requirement
98
98
  requirements:
99
- - - '='
99
+ - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: 3.5.1
101
+ version: '3.5'
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: rouge
104
104
  requirement: !ruby/object:Gem::Requirement
105
105
  requirements:
106
- - - '='
106
+ - - "~>"
107
107
  - !ruby/object:Gem::Version
108
- version: 3.15.0
108
+ version: '3.15'
109
109
  type: :runtime
110
110
  prerelease: false
111
111
  version_requirements: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - '='
113
+ - - "~>"
114
114
  - !ruby/object:Gem::Version
115
- version: 3.15.0
115
+ version: '3.15'
116
116
  - !ruby/object:Gem::Dependency
117
117
  name: sassc-rails
118
118
  requirement: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - '='
120
+ - - "~>"
121
121
  - !ruby/object:Gem::Version
122
- version: 1.3.0
122
+ version: '1.3'
123
123
  type: :runtime
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
126
126
  requirements:
127
- - - '='
127
+ - - "~>"
128
128
  - !ruby/object:Gem::Version
129
- version: 1.3.0
129
+ version: '1.3'
130
130
  - !ruby/object:Gem::Dependency
131
131
  name: slim-rails
132
132
  requirement: !ruby/object:Gem::Requirement
133
133
  requirements:
134
- - - '='
134
+ - - "~>"
135
135
  - !ruby/object:Gem::Version
136
- version: 3.2.0
136
+ version: '3.2'
137
137
  type: :runtime
138
138
  prerelease: false
139
139
  version_requirements: !ruby/object:Gem::Requirement
140
140
  requirements:
141
- - - '='
141
+ - - "~>"
142
142
  - !ruby/object:Gem::Version
143
- version: 3.2.0
143
+ version: '3.2'
144
144
  - !ruby/object:Gem::Dependency
145
145
  name: sprockets-rails
146
146
  requirement: !ruby/object:Gem::Requirement
147
147
  requirements:
148
- - - '='
148
+ - - "~>"
149
149
  - !ruby/object:Gem::Version
150
- version: 2.3.3
150
+ version: '2.3'
151
151
  type: :runtime
152
152
  prerelease: false
153
153
  version_requirements: !ruby/object:Gem::Requirement
154
154
  requirements:
155
- - - '='
155
+ - - "~>"
156
156
  - !ruby/object:Gem::Version
157
- version: 2.3.3
157
+ version: '2.3'
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: view_component
160
160
  requirement: !ruby/object:Gem::Requirement
161
161
  requirements:
162
- - - '='
162
+ - - "~>"
163
163
  - !ruby/object:Gem::Version
164
- version: 2.23.2
164
+ version: '2.23'
165
165
  type: :runtime
166
166
  prerelease: false
167
167
  version_requirements: !ruby/object:Gem::Requirement
168
168
  requirements:
169
- - - '='
169
+ - - "~>"
170
170
  - !ruby/object:Gem::Version
171
- version: 2.23.2
171
+ version: '2.23'
172
172
  - !ruby/object:Gem::Dependency
173
173
  name: webpacker
174
174
  requirement: !ruby/object:Gem::Requirement
175
175
  requirements:
176
- - - '='
176
+ - - "~>"
177
177
  - !ruby/object:Gem::Version
178
- version: 4.2.2
178
+ version: '4.3'
179
179
  type: :runtime
180
180
  prerelease: false
181
181
  version_requirements: !ruby/object:Gem::Requirement
182
182
  requirements:
183
- - - '='
183
+ - - "~>"
184
184
  - !ruby/object:Gem::Version
185
- version: 4.2.2
185
+ version: '4.3'
186
186
  - !ruby/object:Gem::Dependency
187
187
  name: webpacker-react
188
188
  requirement: !ruby/object:Gem::Requirement
@@ -1378,6 +1378,29 @@ files:
1378
1378
  - app/pb_kits/playbook/pb_online_status/docs/index.js
1379
1379
  - app/pb_kits/playbook/pb_online_status/online_status.html.erb
1380
1380
  - app/pb_kits/playbook/pb_online_status/online_status.rb
1381
+ - app/pb_kits/playbook/pb_passphrase/_passphrase.jsx
1382
+ - app/pb_kits/playbook/pb_passphrase/_passphrase.scss
1383
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.jsx
1384
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.html.erb
1385
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.jsx
1386
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.md
1387
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.html.erb
1388
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.jsx
1389
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.md
1390
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.html.erb
1391
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx
1392
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.md
1393
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.jsx
1394
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.md
1395
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.html.erb
1396
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.jsx
1397
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.md
1398
+ - app/pb_kits/playbook/pb_passphrase/docs/example.yml
1399
+ - app/pb_kits/playbook/pb_passphrase/docs/index.js
1400
+ - app/pb_kits/playbook/pb_passphrase/passphrase.html.erb
1401
+ - app/pb_kits/playbook/pb_passphrase/passphrase.rb
1402
+ - app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx
1403
+ - app/pb_kits/playbook/pb_passphrase/passwordStrength.js
1381
1404
  - app/pb_kits/playbook/pb_person/_person.jsx
1382
1405
  - app/pb_kits/playbook/pb_person/_person.scss
1383
1406
  - app/pb_kits/playbook/pb_person/docs/_description.md
@@ -2103,9 +2126,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
2103
2126
  version: '0'
2104
2127
  required_rubygems_version: !ruby/object:Gem::Requirement
2105
2128
  requirements:
2106
- - - ">="
2129
+ - - ">"
2107
2130
  - !ruby/object:Gem::Version
2108
- version: '0'
2131
+ version: 1.3.1
2109
2132
  requirements: []
2110
2133
  rubyforge_project:
2111
2134
  rubygems_version: 2.7.3