playbook_ui 14.1.0.pre.alpha.PA1477timestampkit3601 → 14.1.0.pre.alpha.PBNTR449rtepreviewerrails3605
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_rich_text_editor/_previewer_mixin.scss +49 -13
- data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +0 -12
- data/app/pb_kits/playbook/pb_rich_text_editor/_tiptap_styles.scss +23 -23
- data/app/pb_kits/playbook/pb_rich_text_editor/_trix_styles.scss +19 -27
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb +21 -11
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +2 -2
- data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +2 -46
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8d134303f815c6e0076c01a0aa625cda4c97ceff14ec8eff52b2716ebbb60a8
|
4
|
+
data.tar.gz: 1188d83da657ab95a2c0fb418f04734f2039c73278e1191fc8b75b14a37348f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d04fdd2687e6accfad40120bbeba65830b7be5c3a15157d21a2ed1cd7b4d0c13202179cf5eeece62f5a7f21559e79af4da3760f7b83ef76ad70c7df607563a75
|
7
|
+
data.tar.gz: 173ab72b24320b444d7f5930fd41e2fae8a2122bacf85e46f142ac8860d05d12dcee0111bcd730ebbdba5586fdceab590667b7c560f921218140e46803b46f06
|
@@ -3,18 +3,20 @@
|
|
3
3
|
@import "../tokens/spacing";
|
4
4
|
@import "../tokens/typography";
|
5
5
|
|
6
|
-
|
6
|
+
|
7
|
+
// Tiptap mixins section (React Advanced Editor)
|
8
|
+
@mixin preview_tiptap_first_child {
|
7
9
|
:first-child {
|
8
10
|
margin-top: 0;
|
9
11
|
}
|
10
12
|
}
|
11
13
|
|
12
|
-
@mixin
|
14
|
+
@mixin preview_tiptap_p {
|
13
15
|
margin: 1rem 0 0 0;
|
14
16
|
min-height: 1rem;
|
15
17
|
}
|
16
18
|
|
17
|
-
@mixin
|
19
|
+
@mixin preview_tiptap_code {
|
18
20
|
font-family: monospace;
|
19
21
|
background: $bg_light;
|
20
22
|
padding: 0.1rem 0.3rem;
|
@@ -23,7 +25,7 @@
|
|
23
25
|
overflow: hidden;
|
24
26
|
}
|
25
27
|
|
26
|
-
@mixin
|
28
|
+
@mixin preview_tiptap_pre_codeblock {
|
27
29
|
display: inline-block;
|
28
30
|
width: 100%;
|
29
31
|
vertical-align: top;
|
@@ -44,7 +46,7 @@
|
|
44
46
|
}
|
45
47
|
}
|
46
48
|
|
47
|
-
@mixin
|
49
|
+
@mixin preview_tiptap_a {
|
48
50
|
color: $primary;
|
49
51
|
border-bottom: 1px solid $primary;
|
50
52
|
&:hover {
|
@@ -53,7 +55,7 @@
|
|
53
55
|
}
|
54
56
|
}
|
55
57
|
|
56
|
-
@mixin
|
58
|
+
@mixin preview_tiptap_blockquote {
|
57
59
|
font-size: $font_larger;
|
58
60
|
padding: $space_sm $space_md;
|
59
61
|
font-style: italic;
|
@@ -63,7 +65,7 @@
|
|
63
65
|
}
|
64
66
|
}
|
65
67
|
|
66
|
-
@mixin
|
68
|
+
@mixin preview_tiptap_h1 {
|
67
69
|
font-size: $text_largest;
|
68
70
|
line-height: $text_larger;
|
69
71
|
font-weight: $bolder;
|
@@ -71,7 +73,7 @@
|
|
71
73
|
margin: 2.1rem 0 0 0;
|
72
74
|
}
|
73
75
|
|
74
|
-
@mixin
|
76
|
+
@mixin preview_tiptap_h2 {
|
75
77
|
font-size: $text_larger;
|
76
78
|
line-height: $text_larger;
|
77
79
|
font-weight: $bolder;
|
@@ -79,7 +81,7 @@
|
|
79
81
|
margin: 1.9rem 0 0 0;
|
80
82
|
}
|
81
83
|
|
82
|
-
@mixin
|
84
|
+
@mixin preview_tiptap_h3 {
|
83
85
|
font-size: $text_large;
|
84
86
|
line-height: $text_large;
|
85
87
|
font-weight: $bolder;
|
@@ -87,7 +89,7 @@
|
|
87
89
|
margin: 1.7rem 0 0 0;
|
88
90
|
}
|
89
91
|
|
90
|
-
@mixin
|
92
|
+
@mixin preview_tiptap_smaller_headings {
|
91
93
|
font-size: $text_base;
|
92
94
|
line-height: $text_base;
|
93
95
|
letter-spacing: $lspace_tight;
|
@@ -95,7 +97,7 @@
|
|
95
97
|
margin: 1rem 0 0 0;
|
96
98
|
}
|
97
99
|
|
98
|
-
@mixin
|
100
|
+
@mixin preview_tiptap_hr {
|
99
101
|
margin: 2.2rem 0;
|
100
102
|
box-sizing: content-box;
|
101
103
|
overflow: hidden;
|
@@ -107,7 +109,7 @@
|
|
107
109
|
border: 0;
|
108
110
|
}
|
109
111
|
|
110
|
-
@mixin
|
112
|
+
@mixin preview_tiptap_ol {
|
111
113
|
margin: 1rem 0 0 0;
|
112
114
|
padding-left: $space_md;
|
113
115
|
list-style: decimal;
|
@@ -119,7 +121,7 @@
|
|
119
121
|
}
|
120
122
|
}
|
121
123
|
|
122
|
-
@mixin
|
124
|
+
@mixin preview_tiptap_ul {
|
123
125
|
list-style-position: disc;
|
124
126
|
margin: 1rem 0 0 0;
|
125
127
|
padding-left: $space_md;
|
@@ -130,3 +132,37 @@
|
|
130
132
|
}
|
131
133
|
}
|
132
134
|
}
|
135
|
+
|
136
|
+
// Trix mixins section (Rails and React default editor)
|
137
|
+
@mixin preview_trix_div {
|
138
|
+
line-height: 1.4;
|
139
|
+
}
|
140
|
+
|
141
|
+
@mixin preview_trix_h1 {
|
142
|
+
font-size: 2em;
|
143
|
+
line-height: 1.4;
|
144
|
+
}
|
145
|
+
@mixin preview_trix_blockquote {
|
146
|
+
border: 0 solid #ccc;
|
147
|
+
border-left-width: 0.3em;
|
148
|
+
margin-left: 0.3em;
|
149
|
+
padding-left: 0.6em;
|
150
|
+
line-height: 1.4;
|
151
|
+
}
|
152
|
+
|
153
|
+
@mixin preview_trix_li {
|
154
|
+
line-height: 1.4;
|
155
|
+
margin-left: $space_sm;
|
156
|
+
}
|
157
|
+
|
158
|
+
@mixin preview_trix_pre {
|
159
|
+
display: inline-block;
|
160
|
+
width: 100%;
|
161
|
+
vertical-align: top;
|
162
|
+
font-family: monospace;
|
163
|
+
font-size: 0.9em;
|
164
|
+
padding: 0.5em;
|
165
|
+
white-space: pre;
|
166
|
+
background-color: #eee;
|
167
|
+
overflow-x: auto;
|
168
|
+
}
|
@@ -10,18 +10,6 @@
|
|
10
10
|
@import "./trix_styles";
|
11
11
|
@import "./tiptap_styles";
|
12
12
|
|
13
|
-
.trix-content pre {
|
14
|
-
display: inline-block;
|
15
|
-
width: 100%;
|
16
|
-
vertical-align: top;
|
17
|
-
font-family: monospace;
|
18
|
-
font-size: 0.9em;
|
19
|
-
padding: 0.5em;
|
20
|
-
white-space: pre;
|
21
|
-
background-color: #ccc !important;
|
22
|
-
color: black !important;
|
23
|
-
overflow-x: auto;
|
24
|
-
}
|
25
13
|
[class^=pb_rich_text_editor_kit] {
|
26
14
|
// Disables File Attatchment Button in Toolbar
|
27
15
|
trix-toolbar [data-trix-button-group="file-tools"] {
|
@@ -86,44 +86,44 @@
|
|
86
86
|
}
|
87
87
|
|
88
88
|
code {
|
89
|
-
@include
|
89
|
+
@include preview_tiptap_code;
|
90
90
|
}
|
91
91
|
|
92
92
|
pre {
|
93
|
-
@include
|
93
|
+
@include preview_tiptap_pre_codeblock;
|
94
94
|
}
|
95
95
|
a {
|
96
|
-
@include
|
96
|
+
@include preview_tiptap_a;
|
97
97
|
}
|
98
98
|
blockquote {
|
99
|
-
@include
|
99
|
+
@include preview_tiptap_blockquote;
|
100
100
|
}
|
101
101
|
&:focus-visible {
|
102
102
|
outline: unset;
|
103
103
|
@include transition_default;
|
104
104
|
}
|
105
105
|
h1 {
|
106
|
-
@include
|
106
|
+
@include preview_tiptap_h1;
|
107
107
|
}
|
108
108
|
h2 {
|
109
|
-
@include
|
109
|
+
@include preview_tiptap_h2;
|
110
110
|
}
|
111
111
|
h3 {
|
112
|
-
@include
|
112
|
+
@include preview_tiptap_h3;
|
113
113
|
}
|
114
114
|
h4,
|
115
115
|
h5,
|
116
116
|
h6 {
|
117
|
-
@include
|
117
|
+
@include preview_tiptap_smaller_headings;
|
118
118
|
}
|
119
119
|
hr {
|
120
|
-
@include
|
120
|
+
@include preview_tiptap_hr;
|
121
121
|
}
|
122
122
|
ol {
|
123
|
-
@include
|
123
|
+
@include preview_tiptap_ol;
|
124
124
|
}
|
125
125
|
ul {
|
126
|
-
@include
|
126
|
+
@include preview_tiptap_ul;
|
127
127
|
}
|
128
128
|
}
|
129
129
|
}
|
@@ -170,40 +170,40 @@
|
|
170
170
|
}
|
171
171
|
}
|
172
172
|
.tiptap-content {
|
173
|
-
@include
|
173
|
+
@include preview_tiptap_first_child;
|
174
174
|
a {
|
175
|
-
@include
|
175
|
+
@include preview_tiptap_a;
|
176
176
|
}
|
177
177
|
blockquote {
|
178
|
-
@include
|
178
|
+
@include preview_tiptap_blockquote;
|
179
179
|
}
|
180
180
|
h1 {
|
181
|
-
@include
|
181
|
+
@include preview_tiptap_h1;
|
182
182
|
}
|
183
183
|
h2 {
|
184
|
-
@include
|
184
|
+
@include preview_tiptap_h2;
|
185
185
|
}
|
186
186
|
h3 {
|
187
|
-
@include
|
187
|
+
@include preview_tiptap_h3;
|
188
188
|
}
|
189
189
|
h4,
|
190
190
|
h5,
|
191
191
|
h6 {
|
192
|
-
@include
|
192
|
+
@include preview_tiptap_smaller_headings;
|
193
193
|
}
|
194
194
|
hr {
|
195
|
-
@include
|
195
|
+
@include preview_tiptap_hr;
|
196
196
|
}
|
197
197
|
ol {
|
198
|
-
@include
|
198
|
+
@include preview_tiptap_ol;
|
199
199
|
}
|
200
200
|
p {
|
201
|
-
@include
|
201
|
+
@include preview_tiptap_p;
|
202
202
|
}
|
203
203
|
pre {
|
204
|
-
@include
|
204
|
+
@include preview_tiptap_pre_codeblock;
|
205
205
|
}
|
206
206
|
ul {
|
207
|
-
@include
|
207
|
+
@include preview_tiptap_ul;
|
208
208
|
}
|
209
209
|
}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
@import "previewer_mixin";
|
2
|
+
|
1
3
|
@charset "UTF-8";
|
2
4
|
/*
|
3
5
|
Trix 1.3.0
|
@@ -297,41 +299,31 @@ trix-editor .attachment__metadata {
|
|
297
299
|
trix-editor .attachment__metadata .attachment__size {
|
298
300
|
margin-left: 0.2em;
|
299
301
|
white-space: nowrap; }
|
302
|
+
trix-editor blockquote {
|
303
|
+
@include preview_trix_blockquote; }
|
304
|
+
trix-editor [dir=rtl] blockquote,
|
305
|
+
trix-editor blockquote[dir=rtl] {
|
306
|
+
@include preview_trix_blockquote }
|
300
307
|
@charset "UTF-8";
|
301
|
-
.trix-content {
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
308
|
+
.trix-content * {
|
309
|
+
box-sizing: border-box;
|
310
|
+
margin: 0;
|
311
|
+
padding: 0; }
|
312
|
+
.trix-content#content-preview div {
|
313
|
+
@include preview_trix_div; }
|
307
314
|
.trix-content h1 {
|
308
|
-
|
309
|
-
line-height: 1.2; }
|
315
|
+
@include preview_trix_h1; }
|
310
316
|
.trix-content blockquote {
|
311
|
-
|
312
|
-
border-left-width: 0.3em;
|
313
|
-
margin-left: 0.3em;
|
314
|
-
padding-left: 0.6em; }
|
317
|
+
@include preview_trix_blockquote; }
|
315
318
|
.trix-content [dir=rtl] blockquote,
|
316
319
|
.trix-content blockquote[dir=rtl] {
|
317
|
-
|
318
|
-
border-right-width: 0.3em;
|
319
|
-
margin-right: 0.3em;
|
320
|
-
padding-right: 0.6em; }
|
320
|
+
@include preview_trix_blockquote; }
|
321
321
|
.trix-content li {
|
322
|
-
|
322
|
+
@include preview_trix_li; }
|
323
323
|
.trix-content [dir=rtl] li {
|
324
|
-
|
324
|
+
@include preview_trix_li; }
|
325
325
|
.trix-content pre {
|
326
|
-
|
327
|
-
width: 100%;
|
328
|
-
vertical-align: top;
|
329
|
-
font-family: monospace;
|
330
|
-
font-size: 0.9em;
|
331
|
-
padding: 0.5em;
|
332
|
-
white-space: pre;
|
333
|
-
background-color: #eee;
|
334
|
-
overflow-x: auto; }
|
326
|
+
@include preview_trix_pre; }
|
335
327
|
.trix-content img {
|
336
328
|
max-width: 100%;
|
337
329
|
height: auto; }
|
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
<%= pb_rails("rich_text_editor", props: { id: "content-preview-editor" }) %>
|
3
3
|
<div id="card-obfuscation" style="display:none">
|
4
|
-
<%= pb_rails("card", props: { margin_top: "md" }) do %>
|
4
|
+
<%= pb_rails("card", props: { margin_top: "md", max_width: "md", padding: "sm" }) do %>
|
5
5
|
<div id="content-preview" class="trix-content">
|
6
6
|
</div>
|
7
7
|
<% end %>
|
@@ -11,15 +11,25 @@
|
|
11
11
|
<% end %>
|
12
12
|
|
13
13
|
<script>
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
const previewArea = document.getElementById('content-preview');
|
19
|
-
const cardDiv = document.getElementById('card-obfuscation');
|
14
|
+
document.addEventListener('DOMContentLoaded', () => {
|
15
|
+
function handleButtonClick() {
|
16
|
+
const editorContainer = [...document.querySelectorAll('[data-react-props]')]
|
17
|
+
.find(element => element.getAttribute('data-react-props')?.includes('"id":"content-preview-editor"'))
|
20
18
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
19
|
+
const editorElement = editorContainer?.querySelector('trix-editor')
|
20
|
+
const inputId = editorElement?.getAttribute('input')
|
21
|
+
const inputElement = inputId && document.getElementById(inputId)
|
22
|
+
|
23
|
+
const editorContent = inputElement?.value || ''
|
24
|
+
const previewArea = document.getElementById('content-preview')
|
25
|
+
const cardDiv = document.getElementById('card-obfuscation')
|
26
|
+
|
27
|
+
if (previewArea && cardDiv) {
|
28
|
+
previewArea.innerHTML = editorContent
|
29
|
+
cardDiv.style.display = 'block'
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
document.getElementById('preview-button')?.addEventListener('click', handleButtonClick)
|
34
|
+
})
|
25
35
|
</script>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<br>
|
9
9
|
|
10
10
|
<%= pb_rails("timestamp", props: {
|
11
|
-
timestamp: DateTime.now
|
11
|
+
timestamp: DateTime.now,
|
12
12
|
variant: "elapsed",
|
13
13
|
show_user: false
|
14
14
|
}) %>
|
@@ -16,7 +16,7 @@
|
|
16
16
|
<br>
|
17
17
|
|
18
18
|
<%= pb_rails("timestamp", props: {
|
19
|
-
timestamp: DateTime.now
|
19
|
+
timestamp: DateTime.now,
|
20
20
|
variant: "elapsed",
|
21
21
|
show_user: false,
|
22
22
|
hide_updated: true
|
@@ -27,18 +27,6 @@ module Playbook
|
|
27
27
|
values: %w[default elapsed updated],
|
28
28
|
default: "default"
|
29
29
|
|
30
|
-
# Variables to use with pb_time_ago method
|
31
|
-
SECS_FORTY_FIVE = 45
|
32
|
-
SECS_PER_MIN = 60
|
33
|
-
SECS_PER_HOUR = 60 * SECS_PER_MIN # 3,600 seconds
|
34
|
-
SECS_PER_DAY = 24 * SECS_PER_HOUR # 86,400 seconds
|
35
|
-
SECS_PER_WEEK = 7 * SECS_PER_DAY # 604,800 seconds
|
36
|
-
SECS_PER_26 = 26 * SECS_PER_DAY # 26 days = 2,246,400 seconds
|
37
|
-
SECS_PER_MONTH = 4 * SECS_PER_WEEK # 2,419,200 seconds
|
38
|
-
SECS_PER_YEAR = 12 * SECS_PER_MONTH # 29,030,400 seconds
|
39
|
-
SECS_PER_320 = 320 * SECS_PER_DAY # 320 days = 27,648,000 seconds
|
40
|
-
SECS_PER_CENT = 100 * SECS_PER_YEAR # 3,153,600,000 seconds
|
41
|
-
|
42
30
|
def classname
|
43
31
|
generate_classname("pb_timestamp_kit", variant_class, align)
|
44
32
|
end
|
@@ -85,42 +73,10 @@ module Playbook
|
|
85
73
|
|
86
74
|
def format_elapsed_string
|
87
75
|
user_string = show_user ? " by #{text}" : ""
|
88
|
-
datetime_string = " #{
|
89
|
-
datetime_string[1] = hide_updated ? datetime_string[1].upcase : datetime_string[1]
|
76
|
+
datetime_string = " #{time_ago_in_words(pb_date_time.convert_to_timestamp)} ago"
|
90
77
|
updated_string = hide_updated ? "" : "Last updated"
|
91
|
-
"#{updated_string}#{user_string}#{datetime_string}"
|
92
|
-
end
|
93
78
|
|
94
|
-
|
95
|
-
time_ago = DateTime.now.to_i - value.to_i
|
96
|
-
case time_ago
|
97
|
-
when (0...SECS_FORTY_FIVE)
|
98
|
-
"a few seconds"
|
99
|
-
when (SECS_FORTY_FIVE...SECS_PER_MIN)
|
100
|
-
"a minute"
|
101
|
-
when (SECS_PER_MIN...SECS_PER_HOUR)
|
102
|
-
time = time_ago / SECS_PER_MIN
|
103
|
-
time == 1 ? "a minute" : "#{time_ago / SECS_PER_MIN} minutes"
|
104
|
-
when (SECS_PER_HOUR...SECS_PER_DAY)
|
105
|
-
time = time_ago / SECS_PER_HOUR
|
106
|
-
time == 1 ? "an hour" : "#{time_ago / SECS_PER_HOUR} hours"
|
107
|
-
when (SECS_PER_DAY...SECS_PER_WEEK)
|
108
|
-
time = time_ago / SECS_PER_DAY
|
109
|
-
time == 1 ? "a day" : "#{time_ago / SECS_PER_DAY} days"
|
110
|
-
when (SECS_PER_WEEK...SECS_PER_26)
|
111
|
-
time = time_ago / SECS_PER_WEEK
|
112
|
-
time == 1 ? "a week" : "#{time_ago / SECS_PER_WEEK} weeks"
|
113
|
-
when (SECS_PER_26...SECS_PER_MONTH)
|
114
|
-
"a month"
|
115
|
-
when (SECS_PER_MONTH...SECS_PER_320)
|
116
|
-
time = time_ago / SECS_PER_MONTH
|
117
|
-
time == 1 ? "a month" : "#{time_ago / SECS_PER_MONTH} months"
|
118
|
-
when (SECS_PER_320...SECS_PER_YEAR)
|
119
|
-
"a year"
|
120
|
-
when (SECS_PER_YEAR...SECS_PER_CENT)
|
121
|
-
time = time_ago / SECS_PER_YEAR
|
122
|
-
time == 1 ? "a year" : "#{time_ago / SECS_PER_YEAR} years"
|
123
|
-
end
|
79
|
+
"#{updated_string}#{user_string}#{datetime_string}"
|
124
80
|
end
|
125
81
|
|
126
82
|
def datetime_or_text
|