drf-to-mkdoc 0.2.3__py3-none-any.whl → 0.3.0__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 (40) hide show
  1. drf_to_mkdoc/conf/defaults.py +1 -0
  2. drf_to_mkdoc/conf/settings.py +1 -0
  3. drf_to_mkdoc/management/commands/build_model_docs.py +10 -1
  4. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/field-sections-loader.js +29 -0
  5. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/query-parameters-loader.js +16 -0
  6. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/field-extractor.js +200 -0
  7. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/form-manager.js +307 -14
  8. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/main.js +39 -11
  9. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/modal.js +298 -18
  10. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/query-parameters-extractor.js +94 -0
  11. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/request-executor.js +278 -62
  12. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/response-modal.js +173 -0
  13. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/suggestions.js +59 -152
  14. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/tabs.js +52 -9
  15. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/badges.css +13 -5
  16. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/theme-toggle.css +297 -25
  17. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/try-out/fab.css +204 -0
  18. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/try-out/response.css +323 -0
  19. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/try-out/variables.css +139 -0
  20. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/field-sections.css +136 -0
  21. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/form.css +539 -0
  22. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/modal.css +239 -17
  23. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/response.css +503 -43
  24. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/tabs.css +71 -19
  25. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/variables.css +71 -15
  26. drf_to_mkdoc/templates/endpoints/detail/request_body.html +2 -0
  27. drf_to_mkdoc/templates/er_diagrams/app.html +26 -0
  28. drf_to_mkdoc/templates/er_diagrams/index.html +14 -0
  29. drf_to_mkdoc/templates/er_diagrams/main.html +22 -0
  30. drf_to_mkdoc/templates/try-out/fab.html +67 -3
  31. drf_to_mkdoc/templates/try-out/form.html +221 -74
  32. drf_to_mkdoc/templates/try-out/modal.html +75 -7
  33. drf_to_mkdoc/templates/try-out/response-modal.html +138 -9
  34. drf_to_mkdoc/utils/endpoint_detail_generator.py +1 -0
  35. drf_to_mkdoc/utils/er_diagram_generator.py +230 -0
  36. {drf_to_mkdoc-0.2.3.dist-info → drf_to_mkdoc-0.3.0.dist-info}/METADATA +89 -10
  37. {drf_to_mkdoc-0.2.3.dist-info → drf_to_mkdoc-0.3.0.dist-info}/RECORD +40 -27
  38. {drf_to_mkdoc-0.2.3.dist-info → drf_to_mkdoc-0.3.0.dist-info}/WHEEL +0 -0
  39. {drf_to_mkdoc-0.2.3.dist-info → drf_to_mkdoc-0.3.0.dist-info}/licenses/LICENSE +0 -0
  40. {drf_to_mkdoc-0.2.3.dist-info → drf_to_mkdoc-0.3.0.dist-info}/top_level.txt +0 -0
@@ -30,11 +30,12 @@
30
30
  .try-out-modal .modal-content {
31
31
  position: relative;
32
32
  width: 100%;
33
- max-width: 700px;
33
+ max-width: 800px;
34
+ height: 85vh;
34
35
  max-height: 85vh;
35
36
  background-color: var(--try-out-bg);
36
37
  border-radius: var(--try-out-border-radius-lg);
37
- box-shadow: 0 8px 32px var(--try-out-shadow-strong);
38
+ box-shadow: var(--try-out-shadow-xl);
38
39
  overflow: hidden;
39
40
  z-index: 1;
40
41
  display: flex;
@@ -44,69 +45,290 @@
44
45
  /* Modal Header */
45
46
  .try-out-modal .modal-header {
46
47
  padding: var(--try-out-spacing-lg) var(--try-out-spacing-xl);
47
- background: linear-gradient(135deg, var(--try-out-primary), #1565c0);
48
+ background: var(--try-out-gradient-primary);
48
49
  color: white;
49
50
  display: flex;
50
51
  align-items: center;
51
- gap: var(--try-out-spacing);
52
+ justify-content: space-between;
52
53
  flex-shrink: 0;
54
+ position: relative;
53
55
  }
54
56
 
55
- .try-out-modal .modal-header span {
56
- font-size: var(--try-out-font-lg);
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;
57
67
  }
58
68
 
59
69
  .try-out-modal .modal-header h3 {
60
70
  margin: 0;
61
71
  font-size: var(--try-out-font-lg);
62
72
  font-weight: 600;
63
- flex-grow: 1;
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);
64
80
  }
65
81
 
66
82
  .try-out-modal .modal-close {
67
- background: none;
68
- border: none;
83
+ background: rgba(255, 255, 255, 0.1);
84
+ border: 1px solid rgba(255, 255, 255, 0.2);
69
85
  color: white;
70
86
  cursor: pointer;
71
- padding: var(--try-out-spacing-sm);
72
- font-size: var(--try-out-font-lg);
87
+ padding: var(--try-out-spacing-xs);
88
+ font-size: 1rem;
73
89
  line-height: 1;
74
- border-radius: 50%;
75
- width: 28px;
76
- height: 28px;
90
+ border-radius: var(--try-out-border-radius);
91
+ width: 32px;
92
+ height: 32px;
77
93
  display: flex;
78
94
  align-items: center;
79
95
  justify-content: center;
80
96
  transition: var(--try-out-transition);
97
+ flex-shrink: 0;
81
98
  }
82
99
 
83
100
  .try-out-modal .modal-close:hover {
84
- background-color: rgba(255, 255, 255, 0.1);
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;
85
120
  }
86
121
 
87
122
  /* Modal Body */
88
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);
89
147
  padding: var(--try-out-spacing-xl);
90
148
  overflow-y: auto;
91
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);
92
286
  }
93
287
 
94
288
  /* Mobile Modal Adjustments */
95
289
  @media screen and (max-width: 768px) {
96
290
  .try-out-modal {
97
291
  padding: var(--try-out-spacing-sm);
292
+ align-items: flex-start;
98
293
  }
99
294
 
100
295
  .try-out-modal .modal-content {
296
+ width: 95%;
101
297
  max-width: none;
102
- max-height: 90vh;
298
+ height: 95vh;
299
+ max-height: 95vh;
300
+ margin-top: var(--try-out-spacing-sm);
103
301
  }
104
302
 
105
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 {
106
316
  padding: var(--try-out-spacing-lg);
107
317
  }
108
318
 
109
- .try-out-modal .modal-body {
319
+ .response-section {
110
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);
111
333
  }
112
334
  }