playbook_ui 9.2.2.pre.alpha.margin → 9.3.0.pre.alpha.password.strength.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) 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_dialog/dialog_header.rb +24 -23
  6. data/app/pb_kits/playbook/pb_passphrase/_passphrase.jsx +205 -0
  7. data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +63 -0
  8. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.jsx +33 -0
  9. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.html.erb +3 -0
  10. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.jsx +31 -0
  11. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.md +1 -0
  12. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.html.erb +16 -0
  13. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.jsx +56 -0
  14. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.md +1 -0
  15. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.html.erb +10 -0
  16. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx +68 -0
  17. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.md +9 -0
  18. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.jsx +33 -0
  19. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.md +3 -0
  20. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.html.erb +26 -0
  21. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.jsx +54 -0
  22. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.md +1 -0
  23. data/app/pb_kits/playbook/pb_passphrase/docs/example.yml +15 -0
  24. data/app/pb_kits/playbook/pb_passphrase/docs/index.js +6 -0
  25. data/app/pb_kits/playbook/pb_passphrase/passphrase.html.erb +1 -0
  26. data/app/pb_kits/playbook/pb_passphrase/passphrase.rb +41 -0
  27. data/app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx +123 -0
  28. data/app/pb_kits/playbook/pb_passphrase/passwordStrength.js +55 -0
  29. data/app/pb_kits/playbook/pb_select/_select.jsx +1 -10
  30. data/app/pb_kits/playbook/pb_select/_select.scss +30 -27
  31. data/app/pb_kits/playbook/pb_select/select.rb +1 -5
  32. data/app/pb_kits/playbook/react_rails_kits.js +1 -0
  33. data/lib/playbook/version.rb +1 -1
  34. metadata +57 -34
@@ -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
+ }
@@ -37,8 +37,6 @@ type SelectProps = {
37
37
  id?: string,
38
38
  includeBlank?: string,
39
39
  label?: string,
40
- margin: string,
41
- marginBottom: string,
42
40
  multiple?: boolean,
43
41
  name?: string,
44
42
  required?: boolean,
@@ -76,14 +74,7 @@ const Select = ({
76
74
  const dataProps = buildDataProps(data)
77
75
  const optionsList = createOptions(options)
78
76
 
79
- const classes = classnames(
80
- buildCss('pb_select'),
81
- globalProps({
82
- ...props,
83
- marginBottom: props.marginBottom || props.margin || 'sm',
84
- }),
85
- className)
86
-
77
+ const classes = classnames(buildCss('pb_select'), globalProps(props), className)
87
78
  const selectWrapperClass = classnames(buildCss('pb_select_kit_wrapper'), { error }, className)
88
79
 
89
80
  return (
@@ -4,6 +4,7 @@
4
4
  @import "../tokens/colors";
5
5
 
6
6
  [class^=pb_select] {
7
+ margin-bottom: $space_sm;
7
8
  select {
8
9
  @include pb_textarea_light;
9
10
  @include pb_body_light;
@@ -64,36 +65,38 @@
64
65
  transform: translateY(-50%);
65
66
  pointer-events: none;
66
67
  }
67
- }
68
-
69
- [class^=pb_select].dark {
70
- select {
71
- @include pb_textarea_dark;
72
- @include pb_body_light_dark;
73
- background: none;
74
- background-color: rgba($white,.10);
75
- box-shadow: inset 0 -11px 20px rgba($white, 0.05);
76
- text-shadow: 0 0 0 $text_dk_default;
77
- padding-right: $space_xl;
78
- white-space: nowrap;
79
- overflow: hidden;
80
- text-overflow: ellipsis;
81
- @media (hover:hover) {
82
- &:hover, &:active, &:focus {
83
- background-color: rgba($white,.05);
68
+ &.dark {
69
+ select {
70
+ @include pb_textarea_dark;
71
+ @include pb_body_light_dark;
72
+ background: none;
73
+ background-color: rgba($white,.10);
74
+ box-shadow: inset 0 -11px 20px rgba($white, 0.05);
75
+ text-shadow: 0 0 0 $text_dk_default;
76
+ padding-right: $space_xl;
77
+ white-space: nowrap;
78
+ overflow: hidden;
79
+ text-overflow: ellipsis;
80
+ @media (hover:hover) {
81
+ &:hover, &:active, &:focus {
82
+ background-color: rgba($white,.05);
83
+ }
84
+ }
85
+ &:focus{
86
+ border-color: $active_dark;
84
87
  }
85
88
  }
86
- }
87
- .pb_select_kit_caret {
88
- color: $white;
89
- }
90
- .pb_select_kit_wrapper {
91
- &.error {
92
- .pb_select_kit_wrapper {
93
- > select:first-child {
94
- border-color: $error_dark;
89
+ .pb_select_kit_caret {
90
+ color: $white;
91
+ }
92
+ .pb_select_kit_wrapper {
93
+ &.error {
94
+ .pb_select_kit_wrapper {
95
+ > select:first-child {
96
+ border-color: $error_dark;
97
+ }
95
98
  }
96
99
  }
97
100
  }
98
101
  }
99
- }
102
+ }
@@ -17,17 +17,13 @@ module Playbook
17
17
  prop :required, type: Playbook::Props::Boolean, default: false
18
18
 
19
19
  def classname
20
- generate_classname("pb_select", select_margin_bottom, separator: " ")
20
+ generate_classname("pb_select")
21
21
  end
22
22
 
23
23
  def select_wrapper_class
24
24
  "pb_select_kit_wrapper" + error_class
25
25
  end
26
26
 
27
- def select_margin_bottom
28
- margin.present? || margin_bottom.present? ? nil : "mb_sm"
29
- end
30
-
31
27
  def options_to_array
32
28
  options.map { |option| [option[:value_text] || option[:value], option[:value]] }
33
29
  end
@@ -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.2.2.pre.alpha.margin"
4
+ VERSION = "9.3.0.pre.alpha.password.strength.2"
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.2.2.pre.alpha.margin
4
+ version: 9.3.0.pre.alpha.password.strength.2
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-08 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