rest_framework 0.8.17 → 0.9.0
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/VERSION +1 -1
- data/app/views/rest_framework/_head.html.erb +53 -44
- data/docs/assets/js/rest_framework.js +20 -15
- 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: e2e028b70ec7cad48ee82a18f8e7b68b6c5d2c3d79bf058ab9a9dfc9f1b428b6
|
4
|
+
data.tar.gz: 70f703c74d2e2d7228f0bf09c8510958a6860bf9a7cc2d7e6f586a8975e0374a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 659e40f0cd59dfc249a3799baca4c9a6b0109302904d4874d998c4d656c1ffdd1e0d11f4e463d92cc9006bcb174b7fe72f61bc01e914ed57428616aa56e662bd
|
7
|
+
data.tar.gz: a172ab0072d67e52280f058ea38694ffd22d543697bcae1a73fc5fc9ec595101d606b4ff681e1f11ba27beca86d3376eda40907b95ae8bf213a6a86c2eb6e3ae
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.9.0
|
@@ -135,11 +135,15 @@ html[data-bs-theme="dark"] .rrf-routes .rrf-route-group-header:hover {
|
|
135
135
|
}
|
136
136
|
.rrf-copy .rrf-copy-link {
|
137
137
|
position: absolute;
|
138
|
-
top: .
|
139
|
-
right: .
|
138
|
+
top: .25em;
|
139
|
+
right: .4em;
|
140
140
|
transition: 0.3s ease;
|
141
|
+
font-size: 1.5em;
|
141
142
|
}
|
142
|
-
.rrf-copy .rrf-copy-link.rrf-clicked{
|
143
|
+
.rrf-copy .rrf-copy-link.rrf-clicked {
|
144
|
+
color: green;
|
145
|
+
}
|
146
|
+
.rrf-copy .rrf-copy-link.rrf-clicked:hover {
|
143
147
|
color: green;
|
144
148
|
}
|
145
149
|
</style>
|
@@ -167,8 +171,6 @@ html[data-bs-theme="dark"] .rrf-routes .rrf-route-group-header:hover {
|
|
167
171
|
|
168
172
|
// Set the mode, given a "selected" mode.
|
169
173
|
const rrfSetSelectedMode = (selectedMode) => {
|
170
|
-
const modeComponent = document.getElementById("rrfModeComponent")
|
171
|
-
|
172
174
|
// Anything except "light" or "dark" is casted to "system".
|
173
175
|
if (selectedMode !== "light" && selectedMode !== "dark") {
|
174
176
|
selectedMode = "system"
|
@@ -178,16 +180,19 @@ html[data-bs-theme="dark"] .rrf-routes .rrf-route-group-header:hover {
|
|
178
180
|
localStorage.setItem("rrfMode", selectedMode)
|
179
181
|
|
180
182
|
// Set the mode selector to the selected mode.
|
181
|
-
|
182
|
-
modeComponent
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
183
|
+
const modeComponent = document.getElementById("rrfModeComponent")
|
184
|
+
if (modeComponent) {
|
185
|
+
let labelHTML
|
186
|
+
modeComponent.querySelectorAll("button[data-rrf-mode-value]").forEach((el) => {
|
187
|
+
if (el.getAttribute("data-rrf-mode-value") === selectedMode) {
|
188
|
+
el.classList.add("active")
|
189
|
+
labelHTML = el.querySelector("i").outerHTML.replace("ms-2", "me-1")
|
190
|
+
} else {
|
191
|
+
el.classList.remove("active")
|
192
|
+
}
|
193
|
+
})
|
194
|
+
modeComponent.querySelector("button[data-bs-toggle]").innerHTML = labelHTML
|
195
|
+
}
|
191
196
|
|
192
197
|
// Get the real mode to use.
|
193
198
|
realMode = rrfGetRealMode(selectedMode)
|
@@ -218,10 +223,14 @@ html[data-bs-theme="dark"] .rrf-routes .rrf-route-group-header:hover {
|
|
218
223
|
}
|
219
224
|
}
|
220
225
|
|
221
|
-
// Initialize dark/light mode.
|
226
|
+
// Initialize dark/light mode before page fully loads to prevent flash.
|
227
|
+
rrfSetSelectedMode(localStorage.getItem("rrfMode"))
|
228
|
+
|
229
|
+
// Initialize dark/light mode after page load (mostly so mode component is updated).
|
222
230
|
document.addEventListener("DOMContentLoaded", (event) => {
|
223
|
-
|
224
|
-
|
231
|
+
rrfSetSelectedMode(localStorage.getItem("rrfMode"))
|
232
|
+
|
233
|
+
// Also set up mode selector.
|
225
234
|
document.querySelectorAll("#rrfModeComponent button[data-rrf-mode-value]").forEach((el) => {
|
226
235
|
el.addEventListener("click", (event) => {
|
227
236
|
rrfSetSelectedMode(event.target.getAttribute("data-rrf-mode-value"))
|
@@ -246,7 +255,7 @@ html[data-bs-theme="dark"] .rrf-routes .rrf-route-group-header:hover {
|
|
246
255
|
|
247
256
|
document.addEventListener("DOMContentLoaded", (event) => {
|
248
257
|
// Pretty-print JSON.
|
249
|
-
document.querySelectorAll(".language-json").forEach((el
|
258
|
+
document.querySelectorAll(".language-json").forEach((el) => {
|
250
259
|
el.innerHTML = neatJSON(JSON.parse(el.innerText), {
|
251
260
|
wrap: 80,
|
252
261
|
afterComma: 1,
|
@@ -263,17 +272,37 @@ document.addEventListener("DOMContentLoaded", (event) => {
|
|
263
272
|
hljs.highlightAll()
|
264
273
|
|
265
274
|
// Replace text node links with anchor tag links.
|
266
|
-
document.querySelectorAll(".rrf-copy code").forEach((el
|
275
|
+
document.querySelectorAll(".rrf-copy code").forEach((el) => {
|
267
276
|
el.innerHTML = rrfLinkify(el.innerHTML)
|
268
277
|
})
|
269
278
|
|
270
|
-
// Insert copy
|
271
|
-
document.querySelectorAll("rrf-copy").forEach((el
|
279
|
+
// Insert copy links.
|
280
|
+
document.querySelectorAll(".rrf-copy").forEach((el) => {
|
272
281
|
el.insertAdjacentHTML(
|
273
282
|
"afterbegin",
|
274
|
-
|
283
|
+
'<a class="rrf-copy-link" title="Copy to Clipboard" href="#"><i class="bi bi-clipboard-fill"></i></a>',
|
275
284
|
)
|
276
285
|
})
|
286
|
+
|
287
|
+
// Copy link implementation.
|
288
|
+
document.querySelectorAll(".rrf-copy-link").forEach((el) => {
|
289
|
+
el.addEventListener("click", (event) => {
|
290
|
+
const range = document.createRange()
|
291
|
+
range.selectNode(el.nextSibling)
|
292
|
+
window.getSelection().removeAllRanges()
|
293
|
+
window.getSelection().addRange(range)
|
294
|
+
if (document.execCommand("copy")) {
|
295
|
+
// Trigger clicked animation.
|
296
|
+
el.classList.add("rrf-clicked")
|
297
|
+
el.innerHTML = '<i class="bi bi-clipboard-check-fill">'
|
298
|
+
setTimeout(() => {
|
299
|
+
el.classList.remove("rrf-clicked")
|
300
|
+
el.innerHTML = '<i class="bi bi-clipboard-fill">'
|
301
|
+
}, 1000)
|
302
|
+
}
|
303
|
+
event.preventDefault()
|
304
|
+
})
|
305
|
+
})
|
277
306
|
})
|
278
307
|
|
279
308
|
// Convert plain-text links to anchor tag links.
|
@@ -292,26 +321,6 @@ function rrfReplaceDocument(content) {
|
|
292
321
|
document.dispatchEvent(new Event("DOMContentLoaded", {bubbles: true, cancelable: true}))
|
293
322
|
}
|
294
323
|
|
295
|
-
// Copy the element's next `<code>` sibling's content to the clipboard.
|
296
|
-
function rrfCopyToClipboard(element) {
|
297
|
-
let range = document.createRange()
|
298
|
-
range.selectNode(element.nextSibling)
|
299
|
-
window.getSelection().removeAllRanges()
|
300
|
-
window.getSelection().addRange(range)
|
301
|
-
if (document.execCommand("copy")) {
|
302
|
-
// Trigger clicked animation.
|
303
|
-
element.classList.add("rrf-clicked")
|
304
|
-
element.innerText = "Copied!"
|
305
|
-
setTimeout(() => {
|
306
|
-
element.classList.remove("rrf-clicked")
|
307
|
-
element.innerText = "Copy to Clipboard"
|
308
|
-
}, 700)
|
309
|
-
}
|
310
|
-
|
311
|
-
// Return false to prevent normal link behavior.
|
312
|
-
return false
|
313
|
-
}
|
314
|
-
|
315
324
|
// Refresh the window as a `GET` request.
|
316
325
|
function rrfGet(button) {
|
317
326
|
button.disabled = true
|
@@ -352,7 +361,7 @@ function rrfSubmitRawForm(button) {
|
|
352
361
|
// Add file(s) to `formData`.
|
353
362
|
const rawFilesForm = document.getElementById("rawFilesForm")
|
354
363
|
if (rawFilesForm) {
|
355
|
-
rawFilesForm.querySelectorAll("input[type=file]").forEach((el
|
364
|
+
rawFilesForm.querySelectorAll("input[type=file]").forEach((el) => {
|
356
365
|
const files = el.files
|
357
366
|
for (let i = 0; i < files.length; i++) {
|
358
367
|
formData.append(el.name, files[i])
|
@@ -19,8 +19,6 @@
|
|
19
19
|
|
20
20
|
// Set the mode, given a "selected" mode.
|
21
21
|
const rrfSetSelectedMode = (selectedMode) => {
|
22
|
-
const modeComponent = document.getElementById("rrfModeComponent")
|
23
|
-
|
24
22
|
// Anything except "light" or "dark" is casted to "system".
|
25
23
|
if (selectedMode !== "light" && selectedMode !== "dark") {
|
26
24
|
selectedMode = "system"
|
@@ -30,16 +28,19 @@
|
|
30
28
|
localStorage.setItem("rrfMode", selectedMode)
|
31
29
|
|
32
30
|
// Set the mode selector to the selected mode.
|
33
|
-
|
34
|
-
modeComponent
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
31
|
+
const modeComponent = document.getElementById("rrfModeComponent")
|
32
|
+
if (modeComponent) {
|
33
|
+
let labelHTML
|
34
|
+
modeComponent.querySelectorAll("button[data-rrf-mode-value]").forEach((el) => {
|
35
|
+
if (el.getAttribute("data-rrf-mode-value") === selectedMode) {
|
36
|
+
el.classList.add("active")
|
37
|
+
labelHTML = el.querySelector("i").outerHTML.replace("ms-2", "me-1")
|
38
|
+
} else {
|
39
|
+
el.classList.remove("active")
|
40
|
+
}
|
41
|
+
})
|
42
|
+
modeComponent.querySelector("button[data-bs-toggle]").innerHTML = labelHTML
|
43
|
+
}
|
43
44
|
|
44
45
|
// Get the real mode to use.
|
45
46
|
realMode = rrfGetRealMode(selectedMode)
|
@@ -70,10 +71,14 @@
|
|
70
71
|
}
|
71
72
|
}
|
72
73
|
|
73
|
-
// Initialize dark/light mode.
|
74
|
+
// Initialize dark/light mode before page fully loads to prevent flash.
|
75
|
+
rrfSetSelectedMode(localStorage.getItem("rrfMode"))
|
76
|
+
|
77
|
+
// Initialize dark/light mode after page load (mostly so mode component is updated).
|
74
78
|
document.addEventListener("DOMContentLoaded", (event) => {
|
75
|
-
|
76
|
-
|
79
|
+
rrfSetSelectedMode(localStorage.getItem("rrfMode"))
|
80
|
+
|
81
|
+
// Also set up mode selector.
|
77
82
|
document.querySelectorAll("#rrfModeComponent button[data-rrf-mode-value]").forEach((el) => {
|
78
83
|
el.addEventListener("click", (event) => {
|
79
84
|
rrfSetSelectedMode(event.target.getAttribute("data-rrf-mode-value"))
|