drf-to-mkdoc 0.2.2__py3-none-any.whl → 0.2.4__py3-none-any.whl

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.

Potentially problematic release.


This version of drf-to-mkdoc might be problematic. Click here for more details.

Files changed (47) hide show
  1. drf_to_mkdoc/conf/defaults.py +1 -0
  2. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/field-sections-loader.js +29 -0
  3. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/query-parameters-loader.js +16 -0
  4. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/field-extractor.js +200 -0
  5. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/form-manager.js +465 -0
  6. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/main.js +50 -0
  7. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/modal.js +359 -0
  8. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/query-parameters-extractor.js +94 -0
  9. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/request-executor.js +327 -0
  10. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/response-modal.js +173 -0
  11. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/suggestions.js +123 -0
  12. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/tabs.js +77 -0
  13. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/badges.css +13 -5
  14. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/theme-toggle.css +297 -25
  15. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/try-out/fab.css +204 -0
  16. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/try-out/response.css +323 -0
  17. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/try-out/variables.css +139 -0
  18. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/field-sections.css +136 -0
  19. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/buttons.css +71 -0
  20. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/fab.css +47 -0
  21. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/form.css +663 -0
  22. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/key-value.css +161 -0
  23. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/main.css +57 -0
  24. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/modal.css +334 -0
  25. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/response.css +618 -0
  26. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/tabs.css +114 -0
  27. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/variables.css +94 -0
  28. drf_to_mkdoc/templates/endpoints/detail/base.html +3 -1
  29. drf_to_mkdoc/templates/endpoints/detail/query_parameters.html +1 -8
  30. drf_to_mkdoc/templates/endpoints/detail/request_body.html +2 -0
  31. drf_to_mkdoc/templates/endpoints/detail/responses.html +4 -4
  32. drf_to_mkdoc/templates/try-out/fab.html +68 -0
  33. drf_to_mkdoc/templates/try-out/form.html +260 -0
  34. drf_to_mkdoc/templates/try-out/main.html +4 -0
  35. drf_to_mkdoc/templates/try-out/modal.html +82 -0
  36. drf_to_mkdoc/templates/try-out/response-modal.html +149 -0
  37. drf_to_mkdoc/templatetags/custom_filters.py +33 -1
  38. drf_to_mkdoc/utils/commons/schema_utils.py +5 -14
  39. drf_to_mkdoc/utils/endpoint_detail_generator.py +141 -21
  40. drf_to_mkdoc/utils/extractors/query_parameter_extractors.py +0 -15
  41. {drf_to_mkdoc-0.2.2.dist-info → drf_to_mkdoc-0.2.4.dist-info}/METADATA +68 -9
  42. {drf_to_mkdoc-0.2.2.dist-info → drf_to_mkdoc-0.2.4.dist-info}/RECORD +45 -18
  43. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out-sidebar.js +0 -879
  44. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/try-out-sidebar.css +0 -728
  45. {drf_to_mkdoc-0.2.2.dist-info → drf_to_mkdoc-0.2.4.dist-info}/WHEEL +0 -0
  46. {drf_to_mkdoc-0.2.2.dist-info → drf_to_mkdoc-0.2.4.dist-info}/licenses/LICENSE +0 -0
  47. {drf_to_mkdoc-0.2.2.dist-info → drf_to_mkdoc-0.2.4.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,161 @@
1
+ /* Key-Value Pairs */
2
+ .kv-container {
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: var(--try-out-spacing);
6
+ }
7
+
8
+ .kv-item {
9
+ display: flex;
10
+ gap: var(--try-out-spacing);
11
+ align-items: flex-start;
12
+ }
13
+
14
+ .kv-item input {
15
+ flex: 1;
16
+ padding: var(--try-out-spacing);
17
+ border: 1px solid var(--try-out-border);
18
+ border-radius: var(--try-out-border-radius);
19
+ background-color: var(--try-out-bg);
20
+ color: var(--try-out-text);
21
+ box-sizing: border-box;
22
+ font-size: var(--try-out-font-base);
23
+ transition: var(--try-out-transition);
24
+ }
25
+
26
+ .kv-item input:focus {
27
+ outline: none;
28
+ border-color: var(--try-out-primary);
29
+ box-shadow: 0 0 0 2px rgba(25, 118, 210, 0.1);
30
+ }
31
+
32
+ .kv-item input.error {
33
+ border-color: var(--try-out-danger);
34
+ box-shadow: 0 0 0 2px rgba(220, 53, 69, 0.1);
35
+ }
36
+
37
+ .kv-item .param-label {
38
+ min-width: 120px;
39
+ max-width: 140px;
40
+ font-size: var(--try-out-font-base);
41
+ color: var(--try-out-text);
42
+ font-weight: 500;
43
+ padding: var(--try-out-spacing);
44
+ display: flex;
45
+ align-items: center;
46
+ background-color: var(--try-out-surface);
47
+ border: 1px solid var(--try-out-border);
48
+ border-radius: var(--try-out-border-radius);
49
+ word-break: break-word;
50
+ }
51
+
52
+ .kv-item .param-label.required::after {
53
+ content: ' *';
54
+ color: var(--try-out-danger);
55
+ }
56
+
57
+ .kv-item .remove-btn {
58
+ background: var(--try-out-danger);
59
+ border: none;
60
+ color: white;
61
+ cursor: pointer;
62
+ padding: var(--try-out-spacing-sm);
63
+ font-size: var(--try-out-font-base);
64
+ line-height: 1;
65
+ border-radius: var(--try-out-border-radius);
66
+ width: 28px;
67
+ height: 28px;
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ transition: var(--try-out-transition);
72
+ flex-shrink: 0;
73
+ margin-top: 1px;
74
+ }
75
+
76
+ .kv-item .remove-btn:hover {
77
+ background-color: var(--try-out-danger-hover);
78
+ }
79
+
80
+ /* Add Button */
81
+ .add-btn {
82
+ display: inline-flex;
83
+ align-items: center;
84
+ gap: var(--try-out-spacing-sm);
85
+ padding: var(--try-out-spacing) var(--try-out-spacing-lg);
86
+ border: 1px solid var(--try-out-success);
87
+ border-radius: var(--try-out-border-radius);
88
+ background: var(--try-out-success);
89
+ color: white;
90
+ cursor: pointer;
91
+ font-size: var(--try-out-font-base);
92
+ font-weight: 500;
93
+ margin-top: var(--try-out-spacing);
94
+ transition: var(--try-out-transition);
95
+ }
96
+
97
+ .add-btn:hover {
98
+ background-color: var(--try-out-success-hover);
99
+ border-color: var(--try-out-success-hover);
100
+ }
101
+
102
+ /* Autocomplete Suggestions */
103
+ .param-suggestions {
104
+ position: absolute;
105
+ top: 100%;
106
+ left: 0;
107
+ z-index: 10;
108
+ width: 100%;
109
+ max-height: 150px;
110
+ overflow-y: auto;
111
+ background: var(--try-out-bg);
112
+ border: 1px solid var(--try-out-border);
113
+ border-radius: 0 0 var(--try-out-border-radius) var(--try-out-border-radius);
114
+ box-shadow: 0 4px 8px var(--try-out-shadow);
115
+ display: none;
116
+ }
117
+
118
+ .param-suggestions.show {
119
+ display: block;
120
+ }
121
+
122
+ .param-suggestion {
123
+ padding: var(--try-out-spacing-sm) var(--try-out-spacing);
124
+ font-size: var(--try-out-font-sm);
125
+ color: var(--try-out-text);
126
+ cursor: pointer;
127
+ transition: var(--try-out-transition);
128
+ border-bottom: 1px solid var(--try-out-border);
129
+ }
130
+
131
+ .param-suggestion:last-child {
132
+ border-bottom: none;
133
+ }
134
+
135
+ .param-suggestion:hover {
136
+ background-color: var(--try-out-surface);
137
+ }
138
+
139
+ .param-suggestion.selected {
140
+ background-color: var(--try-out-primary);
141
+ color: white;
142
+ }
143
+
144
+ /* Mobile Key-Value Adjustments */
145
+ @media screen and (max-width: 768px) {
146
+ .kv-item {
147
+ flex-direction: column;
148
+ gap: var(--try-out-spacing-sm);
149
+ }
150
+
151
+ .kv-item .param-label {
152
+ min-width: auto;
153
+ max-width: none;
154
+ text-align: center;
155
+ }
156
+
157
+ .kv-item .remove-btn {
158
+ align-self: flex-end;
159
+ margin-top: 0;
160
+ }
161
+ }
@@ -0,0 +1,57 @@
1
+ /* Import all try-out components */
2
+ @import 'variables.css';
3
+ @import 'fab.css';
4
+ @import 'modal.css';
5
+ @import 'form.css';
6
+ @import 'tabs.css';
7
+ @import 'key-value.css';
8
+ @import 'buttons.css';
9
+ @import 'response.css';
10
+
11
+ /* Global try-out styles */
12
+ .try-out-modal *,
13
+ .response-modal *,
14
+ .try-out-fab * {
15
+ box-sizing: border-box;
16
+ }
17
+
18
+ /* Prevent body scroll when modal is open */
19
+ body.modal-open {
20
+ overflow: hidden;
21
+ }
22
+
23
+ /* Focus management */
24
+ .try-out-modal .modal-content:focus {
25
+ outline: none;
26
+ }
27
+
28
+ /* Animation classes */
29
+ .fade-in {
30
+ animation: fadeIn 0.2s ease-out;
31
+ }
32
+
33
+ .fade-out {
34
+ animation: fadeOut 0.2s ease-out;
35
+ }
36
+
37
+ @keyframes fadeIn {
38
+ from {
39
+ opacity: 0;
40
+ transform: scale(0.95);
41
+ }
42
+ to {
43
+ opacity: 1;
44
+ transform: scale(1);
45
+ }
46
+ }
47
+
48
+ @keyframes fadeOut {
49
+ from {
50
+ opacity: 1;
51
+ transform: scale(1);
52
+ }
53
+ to {
54
+ opacity: 0;
55
+ transform: scale(0.95);
56
+ }
57
+ }
@@ -0,0 +1,334 @@
1
+ /* Modal Base Styles */
2
+ .try-out-modal {
3
+ position: fixed;
4
+ top: 0;
5
+ left: 0;
6
+ width: 100%;
7
+ height: 100%;
8
+ z-index: var(--try-out-z-modal);
9
+ display: none;
10
+ align-items: center;
11
+ justify-content: center;
12
+ padding: var(--try-out-spacing-lg);
13
+ box-sizing: border-box;
14
+ }
15
+
16
+ .try-out-modal.show {
17
+ display: flex;
18
+ }
19
+
20
+ .try-out-modal .modal-overlay {
21
+ position: fixed;
22
+ top: 0;
23
+ left: 0;
24
+ width: 100%;
25
+ height: 100%;
26
+ background-color: rgba(0, 0, 0, 0.5);
27
+ backdrop-filter: blur(2px);
28
+ }
29
+
30
+ .try-out-modal .modal-content {
31
+ position: relative;
32
+ width: 100%;
33
+ max-width: 800px;
34
+ height: 85vh;
35
+ max-height: 85vh;
36
+ background-color: var(--try-out-bg);
37
+ border-radius: var(--try-out-border-radius-lg);
38
+ box-shadow: var(--try-out-shadow-xl);
39
+ overflow: hidden;
40
+ z-index: 1;
41
+ display: flex;
42
+ flex-direction: column;
43
+ }
44
+
45
+ /* Modal Header */
46
+ .try-out-modal .modal-header {
47
+ padding: var(--try-out-spacing-lg) var(--try-out-spacing-xl);
48
+ background: var(--try-out-gradient-primary);
49
+ color: white;
50
+ display: flex;
51
+ align-items: center;
52
+ justify-content: space-between;
53
+ flex-shrink: 0;
54
+ position: relative;
55
+ }
56
+
57
+ .modal-title-group {
58
+ display: flex;
59
+ align-items: center;
60
+ gap: var(--try-out-spacing);
61
+ flex: 1;
62
+ }
63
+
64
+ .modal-icon {
65
+ font-size: 1.25rem;
66
+ line-height: 1;
67
+ }
68
+
69
+ .try-out-modal .modal-header h3 {
70
+ margin: 0;
71
+ font-size: var(--try-out-font-lg);
72
+ font-weight: 600;
73
+ line-height: var(--try-out-line-height);
74
+ }
75
+
76
+ .modal-controls {
77
+ display: flex;
78
+ align-items: center;
79
+ gap: var(--try-out-spacing-sm);
80
+ }
81
+
82
+ .try-out-modal .modal-close {
83
+ background: rgba(255, 255, 255, 0.1);
84
+ border: 1px solid rgba(255, 255, 255, 0.2);
85
+ color: white;
86
+ cursor: pointer;
87
+ padding: var(--try-out-spacing-xs);
88
+ font-size: 1rem;
89
+ line-height: 1;
90
+ border-radius: var(--try-out-border-radius);
91
+ width: 32px;
92
+ height: 32px;
93
+ display: flex;
94
+ align-items: center;
95
+ justify-content: center;
96
+ transition: var(--try-out-transition);
97
+ flex-shrink: 0;
98
+ }
99
+
100
+ .try-out-modal .modal-close:hover {
101
+ background-color: rgba(255, 255, 255, 0.2);
102
+ border-color: rgba(255, 255, 255, 0.3);
103
+ transform: scale(1.05);
104
+ }
105
+
106
+ .try-out-modal .modal-close:active {
107
+ transform: scale(0.95);
108
+ }
109
+
110
+ .visually-hidden {
111
+ position: absolute !important;
112
+ width: 1px !important;
113
+ height: 1px !important;
114
+ padding: 0 !important;
115
+ margin: -1px !important;
116
+ overflow: hidden !important;
117
+ clip: rect(0, 0, 0, 0) !important;
118
+ white-space: nowrap !important;
119
+ border: 0 !important;
120
+ }
121
+
122
+ /* Modal Body */
123
+ .try-out-modal .modal-body {
124
+ padding: 0;
125
+ flex: 1;
126
+ background: var(--try-out-bg);
127
+ overflow: hidden;
128
+ display: flex;
129
+ flex-direction: column;
130
+ }
131
+
132
+ /* Modal Grid Layout */
133
+ .modal-grid {
134
+ display: flex;
135
+ flex-direction: column;
136
+ height: 100%;
137
+ overflow: hidden;
138
+ }
139
+
140
+ .modal-section {
141
+ flex-shrink: 0;
142
+ }
143
+
144
+ .request-section {
145
+ background: var(--try-out-bg);
146
+ border-bottom: 1px solid var(--try-out-border);
147
+ padding: var(--try-out-spacing-xl);
148
+ overflow-y: auto;
149
+ flex: 1;
150
+ min-height: 0; /* Important for flexbox scrolling */
151
+ }
152
+
153
+ .response-section {
154
+ background: var(--try-out-surface);
155
+ border-top: 1px solid var(--try-out-border);
156
+ padding: var(--try-out-spacing-xl);
157
+ max-height: 40vh;
158
+ overflow-y: auto;
159
+ flex-shrink: 0;
160
+ }
161
+
162
+ /* Modal Footer */
163
+ .modal-footer {
164
+ padding: var(--try-out-spacing-lg) var(--try-out-spacing-xl);
165
+ background: var(--try-out-surface);
166
+ border-top: 1px solid var(--try-out-border);
167
+ flex-shrink: 0;
168
+ }
169
+
170
+ .modal-actions {
171
+ display: flex;
172
+ justify-content: flex-end;
173
+ gap: var(--try-out-spacing);
174
+ }
175
+
176
+ /* Button Styles */
177
+ .primary-button,
178
+ .secondary-button {
179
+ padding: var(--try-out-spacing-sm) var(--try-out-spacing-lg);
180
+ border-radius: var(--try-out-border-radius);
181
+ font-size: var(--try-out-font-base);
182
+ font-weight: 500;
183
+ line-height: var(--try-out-line-height);
184
+ cursor: pointer;
185
+ transition: var(--try-out-transition);
186
+ border: none;
187
+ min-width: 120px;
188
+ min-height: 44px;
189
+ display: inline-flex;
190
+ align-items: center;
191
+ justify-content: center;
192
+ gap: var(--try-out-spacing-sm);
193
+ position: relative;
194
+ }
195
+
196
+ .primary-button {
197
+ background: var(--try-out-gradient-primary);
198
+ color: white;
199
+ box-shadow: var(--try-out-shadow-md);
200
+ }
201
+
202
+ .primary-button:hover {
203
+ transform: translateY(-1px);
204
+ box-shadow: var(--try-out-shadow-lg);
205
+ }
206
+
207
+ .primary-button:active {
208
+ transform: translateY(0);
209
+ box-shadow: var(--try-out-shadow-md);
210
+ }
211
+
212
+ .secondary-button {
213
+ background: transparent;
214
+ color: var(--try-out-text);
215
+ border: 1px solid var(--try-out-border);
216
+ }
217
+
218
+ .secondary-button:hover {
219
+ background: var(--try-out-surface);
220
+ border-color: var(--try-out-primary);
221
+ color: var(--try-out-primary);
222
+ }
223
+
224
+ .secondary-button:active {
225
+ background: var(--try-out-surface-raised);
226
+ }
227
+
228
+ /* Loading States */
229
+ .loading-spinner {
230
+ display: none;
231
+ width: 16px;
232
+ height: 16px;
233
+ border: 2px solid rgba(255, 255, 255, 0.3);
234
+ border-radius: 50%;
235
+ border-top-color: white;
236
+ animation: spin 1s linear infinite;
237
+ margin-left: var(--try-out-spacing-xs);
238
+ }
239
+
240
+ .primary-button.loading .loading-spinner {
241
+ display: inline-block;
242
+ }
243
+
244
+ .primary-button.loading .icon {
245
+ display: none;
246
+ }
247
+
248
+ .primary-button:disabled {
249
+ opacity: 0.7;
250
+ cursor: not-allowed;
251
+ }
252
+
253
+ @keyframes spin {
254
+ to { transform: rotate(360deg); }
255
+ }
256
+
257
+ /* Toast Notifications */
258
+ .try-out-modal .toast {
259
+ position: fixed;
260
+ top: 20px;
261
+ right: 20px;
262
+ background: var(--try-out-text);
263
+ color: white;
264
+ padding: var(--try-out-spacing) var(--try-out-spacing-lg);
265
+ border-radius: var(--try-out-border-radius);
266
+ box-shadow: var(--try-out-shadow-lg);
267
+ z-index: 10000;
268
+ opacity: 0;
269
+ transform: translateX(100%);
270
+ transition: var(--try-out-transition);
271
+ font-size: var(--try-out-font-sm);
272
+ max-width: 300px;
273
+ }
274
+
275
+ .try-out-modal .toast.show {
276
+ opacity: 1;
277
+ transform: translateX(0);
278
+ }
279
+
280
+ .try-out-modal .toast.toast-success {
281
+ background: var(--try-out-success);
282
+ }
283
+
284
+ .try-out-modal .toast.toast-error {
285
+ background: var(--try-out-danger);
286
+ }
287
+
288
+ /* Mobile Modal Adjustments */
289
+ @media screen and (max-width: 768px) {
290
+ .try-out-modal {
291
+ padding: var(--try-out-spacing-sm);
292
+ align-items: flex-start;
293
+ }
294
+
295
+ .try-out-modal .modal-content {
296
+ width: 95%;
297
+ max-width: none;
298
+ height: 95vh;
299
+ max-height: 95vh;
300
+ margin-top: var(--try-out-spacing-sm);
301
+ }
302
+
303
+ .try-out-modal .modal-header {
304
+ padding: var(--try-out-spacing) var(--try-out-spacing-lg);
305
+ }
306
+
307
+ .modal-title-group .modal-icon {
308
+ font-size: 1rem;
309
+ }
310
+
311
+ .try-out-modal .modal-header h3 {
312
+ font-size: var(--try-out-font-base);
313
+ }
314
+
315
+ .request-section {
316
+ padding: var(--try-out-spacing-lg);
317
+ }
318
+
319
+ .response-section {
320
+ padding: var(--try-out-spacing-lg);
321
+ max-height: 35vh;
322
+ }
323
+
324
+ .modal-footer {
325
+ padding: var(--try-out-spacing) var(--try-out-spacing-lg);
326
+ }
327
+
328
+ .primary-button,
329
+ .secondary-button {
330
+ min-height: 44px;
331
+ padding: var(--try-out-spacing) var(--try-out-spacing-lg);
332
+ font-size: var(--try-out-font-base);
333
+ }
334
+ }