cherrypy-foundation 1.0.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.
Files changed (136) hide show
  1. cherrypy_foundation/__init__.py +0 -0
  2. cherrypy_foundation/components/ColorModes.jinja +70 -0
  3. cherrypy_foundation/components/Datatable.css +47 -0
  4. cherrypy_foundation/components/Datatable.jinja +63 -0
  5. cherrypy_foundation/components/Datatable.js +358 -0
  6. cherrypy_foundation/components/Field.css +10 -0
  7. cherrypy_foundation/components/Field.jinja +66 -0
  8. cherrypy_foundation/components/Field.js +56 -0
  9. cherrypy_foundation/components/Fields.jinja +4 -0
  10. cherrypy_foundation/components/Flash.jinja +13 -0
  11. cherrypy_foundation/components/Icon.jinja +3 -0
  12. cherrypy_foundation/components/LocaleSelection.jinja +13 -0
  13. cherrypy_foundation/components/LocaleSelection.js +26 -0
  14. cherrypy_foundation/components/SideBySideMultiSelect.css +25 -0
  15. cherrypy_foundation/components/SideBySideMultiSelect.jinja +9 -0
  16. cherrypy_foundation/components/SideBySideMultiSelect.js +9 -0
  17. cherrypy_foundation/components/Typeahead.css +55 -0
  18. cherrypy_foundation/components/Typeahead.jinja +106 -0
  19. cherrypy_foundation/components/Typeahead.js +8 -0
  20. cherrypy_foundation/components/__init__.py +51 -0
  21. cherrypy_foundation/components/tests/__init__.py +0 -0
  22. cherrypy_foundation/components/tests/test_static.py +90 -0
  23. cherrypy_foundation/components/vendor/bootstrap-icons/bootstrap-icons.css +2106 -0
  24. cherrypy_foundation/components/vendor/bootstrap-icons/bootstrap-icons.min.css +5 -0
  25. cherrypy_foundation/components/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  26. cherrypy_foundation/components/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  27. cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.css +9262 -0
  28. cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.css.map +95 -0
  29. cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.min.css +6 -0
  30. cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.min.css.map +7 -0
  31. cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.js +4846 -0
  32. cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.js.map +1 -0
  33. cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.min.js +7 -0
  34. cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.min.js.map +7 -0
  35. cherrypy_foundation/components/vendor/bootstrap5/js/color-modes.js +80 -0
  36. cherrypy_foundation/components/vendor/datatables/css/dataTables.dataTables.css +849 -0
  37. cherrypy_foundation/components/vendor/datatables/css/dataTables.dataTables.min.css +1 -0
  38. cherrypy_foundation/components/vendor/datatables/images/sort_asc.png +0 -0
  39. cherrypy_foundation/components/vendor/datatables/images/sort_asc_disabled.png +0 -0
  40. cherrypy_foundation/components/vendor/datatables/images/sort_both.png +0 -0
  41. cherrypy_foundation/components/vendor/datatables/images/sort_desc.png +0 -0
  42. cherrypy_foundation/components/vendor/datatables/images/sort_desc_disabled.png +0 -0
  43. cherrypy_foundation/components/vendor/datatables/js/dataTables.js +14073 -0
  44. cherrypy_foundation/components/vendor/datatables/js/dataTables.min.js +4 -0
  45. cherrypy_foundation/components/vendor/datatables-extensions/Buttons/css/buttons.dataTables.css +556 -0
  46. cherrypy_foundation/components/vendor/datatables-extensions/Buttons/css/buttons.dataTables.min.css +1 -0
  47. cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/buttons.html5.js +1700 -0
  48. cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/buttons.html5.min.js +8 -0
  49. cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/dataTables.buttons.js +2944 -0
  50. cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/dataTables.buttons.min.js +4 -0
  51. cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/css/fixedHeader.dataTables.css +13 -0
  52. cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/css/fixedHeader.dataTables.min.css +1 -0
  53. cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/js/dataTables.fixedHeader.js +1202 -0
  54. cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/js/dataTables.fixedHeader.min.js +4 -0
  55. cherrypy_foundation/components/vendor/datatables-extensions/JSZip/jszip.js +11577 -0
  56. cherrypy_foundation/components/vendor/datatables-extensions/JSZip/jszip.min.js +13 -0
  57. cherrypy_foundation/components/vendor/datatables-extensions/Responsive/css/responsive.dataTables.css +194 -0
  58. cherrypy_foundation/components/vendor/datatables-extensions/Responsive/css/responsive.dataTables.min.css +1 -0
  59. cherrypy_foundation/components/vendor/datatables-extensions/Responsive/js/dataTables.responsive.js +1861 -0
  60. cherrypy_foundation/components/vendor/datatables-extensions/Responsive/js/dataTables.responsive.min.js +4 -0
  61. cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/pdfmake.js +75023 -0
  62. cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/pdfmake.min.js +3 -0
  63. cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/vfs_fonts.js +6 -0
  64. cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/css/rowGroup.dataTables.css +53 -0
  65. cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/css/rowGroup.dataTables.min.css +1 -0
  66. cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/js/dataTables.rowGroup.js +485 -0
  67. cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/js/dataTables.rowGroup.min.js +4 -0
  68. cherrypy_foundation/components/vendor/jquery/jquery.min.js +2 -0
  69. cherrypy_foundation/components/vendor/multi/LICENSE +7 -0
  70. cherrypy_foundation/components/vendor/multi/README.md +109 -0
  71. cherrypy_foundation/components/vendor/multi/multi.css +95 -0
  72. cherrypy_foundation/components/vendor/multi/multi.js +328 -0
  73. cherrypy_foundation/components/vendor/popper/popper.js +1825 -0
  74. cherrypy_foundation/components/vendor/popper/popper.min.js +6 -0
  75. cherrypy_foundation/components/vendor/typeahead/jquery.typeahead.min.css +1 -0
  76. cherrypy_foundation/components/vendor/typeahead/jquery.typeahead.min.js +10 -0
  77. cherrypy_foundation/error_page.py +94 -0
  78. cherrypy_foundation/flash.py +50 -0
  79. cherrypy_foundation/form.py +119 -0
  80. cherrypy_foundation/logging.py +103 -0
  81. cherrypy_foundation/passwd.py +65 -0
  82. cherrypy_foundation/plugins/__init__.py +0 -0
  83. cherrypy_foundation/plugins/db.py +286 -0
  84. cherrypy_foundation/plugins/ldap.py +257 -0
  85. cherrypy_foundation/plugins/restapi.py +74 -0
  86. cherrypy_foundation/plugins/scheduler.py +287 -0
  87. cherrypy_foundation/plugins/smtp.py +223 -0
  88. cherrypy_foundation/plugins/tests/__init__.py +0 -0
  89. cherrypy_foundation/plugins/tests/test_db.py +118 -0
  90. cherrypy_foundation/plugins/tests/test_ldap.py +451 -0
  91. cherrypy_foundation/plugins/tests/test_scheduler.py +100 -0
  92. cherrypy_foundation/plugins/tests/test_scheduler_db.py +107 -0
  93. cherrypy_foundation/plugins/tests/test_smtp.py +140 -0
  94. cherrypy_foundation/sessions.py +93 -0
  95. cherrypy_foundation/tests/__init__.py +72 -0
  96. cherrypy_foundation/tests/templates/test_flash.html +9 -0
  97. cherrypy_foundation/tests/templates/test_form.html +16 -0
  98. cherrypy_foundation/tests/templates/test_url.html +15 -0
  99. cherrypy_foundation/tests/test_error_page.py +78 -0
  100. cherrypy_foundation/tests/test_flash.py +61 -0
  101. cherrypy_foundation/tests/test_form.py +148 -0
  102. cherrypy_foundation/tests/test_logging.py +78 -0
  103. cherrypy_foundation/tests/test_passwd.py +51 -0
  104. cherrypy_foundation/tests/test_sessions.py +89 -0
  105. cherrypy_foundation/tests/test_url.py +161 -0
  106. cherrypy_foundation/tools/__init__.py +0 -0
  107. cherrypy_foundation/tools/auth.py +263 -0
  108. cherrypy_foundation/tools/auth_mfa.py +249 -0
  109. cherrypy_foundation/tools/i18n.py +529 -0
  110. cherrypy_foundation/tools/jinja2.py +158 -0
  111. cherrypy_foundation/tools/ratelimit.py +265 -0
  112. cherrypy_foundation/tools/secure_headers.py +119 -0
  113. cherrypy_foundation/tools/sessions_timeout.py +167 -0
  114. cherrypy_foundation/tools/tests/__init__.py +0 -0
  115. cherrypy_foundation/tools/tests/components/Button.jinja +2 -0
  116. cherrypy_foundation/tools/tests/locales/de/LC_MESSAGES/messages.mo +0 -0
  117. cherrypy_foundation/tools/tests/locales/de/LC_MESSAGES/messages.po +15 -0
  118. cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.mo +0 -0
  119. cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.po +15 -0
  120. cherrypy_foundation/tools/tests/locales/messages.pot +2 -0
  121. cherrypy_foundation/tools/tests/templates/test_jinja2.html +11 -0
  122. cherrypy_foundation/tools/tests/templates/test_jinjax.html +9 -0
  123. cherrypy_foundation/tools/tests/templates/test_jinjax_i18n.html +22 -0
  124. cherrypy_foundation/tools/tests/test_auth.py +110 -0
  125. cherrypy_foundation/tools/tests/test_auth_mfa.py +369 -0
  126. cherrypy_foundation/tools/tests/test_i18n.py +247 -0
  127. cherrypy_foundation/tools/tests/test_jinja2.py +153 -0
  128. cherrypy_foundation/tools/tests/test_ratelimit.py +109 -0
  129. cherrypy_foundation/tools/tests/test_secure_headers.py +200 -0
  130. cherrypy_foundation/url.py +66 -0
  131. cherrypy_foundation/widgets.py +48 -0
  132. cherrypy_foundation-1.0.0.dist-info/METADATA +71 -0
  133. cherrypy_foundation-1.0.0.dist-info/RECORD +136 -0
  134. cherrypy_foundation-1.0.0.dist-info/WHEEL +5 -0
  135. cherrypy_foundation-1.0.0.dist-info/licenses/LICENSE.md +674 -0
  136. cherrypy_foundation-1.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,556 @@
1
+ @keyframes dtb-spinner {
2
+ 100% {
3
+ transform: rotate(360deg);
4
+ }
5
+ }
6
+ @-o-keyframes dtb-spinner {
7
+ 100% {
8
+ -o-transform: rotate(360deg);
9
+ transform: rotate(360deg);
10
+ }
11
+ }
12
+ @-ms-keyframes dtb-spinner {
13
+ 100% {
14
+ -ms-transform: rotate(360deg);
15
+ transform: rotate(360deg);
16
+ }
17
+ }
18
+ @-webkit-keyframes dtb-spinner {
19
+ 100% {
20
+ -webkit-transform: rotate(360deg);
21
+ transform: rotate(360deg);
22
+ }
23
+ }
24
+ @-moz-keyframes dtb-spinner {
25
+ 100% {
26
+ -moz-transform: rotate(360deg);
27
+ transform: rotate(360deg);
28
+ }
29
+ }
30
+ div.dataTables_wrapper {
31
+ position: relative;
32
+ }
33
+
34
+ div.dt-buttons {
35
+ position: initial;
36
+ }
37
+ div.dt-buttons .dt-button {
38
+ overflow: hidden;
39
+ text-overflow: ellipsis;
40
+ white-space: nowrap;
41
+ }
42
+
43
+ div.dt-button-info {
44
+ position: fixed;
45
+ top: 50%;
46
+ left: 50%;
47
+ width: 400px;
48
+ margin-top: -100px;
49
+ margin-left: -200px;
50
+ background-color: white;
51
+ border-radius: 0.75em;
52
+ box-shadow: 3px 4px 10px 1px rgba(0, 0, 0, 0.8);
53
+ text-align: center;
54
+ z-index: 2003;
55
+ overflow: hidden;
56
+ }
57
+ div.dt-button-info h2 {
58
+ padding: 2rem 2rem 1rem 2rem;
59
+ margin: 0;
60
+ font-weight: normal;
61
+ }
62
+ div.dt-button-info > div {
63
+ padding: 1em 2em 2em 2em;
64
+ }
65
+
66
+ div.dtb-popover-close {
67
+ position: absolute;
68
+ top: 6px;
69
+ right: 6px;
70
+ width: 22px;
71
+ height: 22px;
72
+ text-align: center;
73
+ border-radius: 3px;
74
+ cursor: pointer;
75
+ z-index: 2003;
76
+ }
77
+
78
+ button.dtb-hide-drop {
79
+ display: none !important;
80
+ }
81
+
82
+ div.dt-button-collection-title {
83
+ text-align: center;
84
+ padding: 0.3em 0.5em 0.5em;
85
+ margin-left: 0.5em;
86
+ margin-right: 0.5em;
87
+ font-size: 0.9em;
88
+ white-space: nowrap;
89
+ overflow: hidden;
90
+ text-overflow: ellipsis;
91
+ }
92
+
93
+ div.dt-button-collection-title:empty {
94
+ display: none;
95
+ }
96
+
97
+ span.dt-button-spacer {
98
+ display: inline-block;
99
+ margin: 0.5em;
100
+ white-space: nowrap;
101
+ }
102
+ span.dt-button-spacer.bar {
103
+ border-left: 1px solid rgba(0, 0, 0, 0.3);
104
+ vertical-align: middle;
105
+ padding-left: 0.5em;
106
+ }
107
+ span.dt-button-spacer.bar:empty {
108
+ height: 1em;
109
+ width: 1px;
110
+ padding-left: 0;
111
+ }
112
+
113
+ div.dt-button-collection .dt-button-active {
114
+ padding-right: 3em;
115
+ }
116
+ div.dt-button-collection .dt-button-active:after {
117
+ position: absolute;
118
+ top: 50%;
119
+ margin-top: -10px;
120
+ right: 1em;
121
+ display: inline-block;
122
+ content: "\2713";
123
+ color: inherit;
124
+ }
125
+ div.dt-button-collection .dt-button-active.dt-button-split {
126
+ padding-right: 0;
127
+ }
128
+ div.dt-button-collection .dt-button-active.dt-button-split:after {
129
+ display: none;
130
+ }
131
+ div.dt-button-collection .dt-button-active.dt-button-split > *:first-child {
132
+ padding-right: 3em;
133
+ }
134
+ div.dt-button-collection .dt-button-active.dt-button-split > *:first-child:after {
135
+ position: absolute;
136
+ top: 50%;
137
+ margin-top: -10px;
138
+ right: 1em;
139
+ display: inline-block;
140
+ content: "\2713";
141
+ color: inherit;
142
+ }
143
+ div.dt-button-collection .dt-button-active-a a {
144
+ padding-right: 3em;
145
+ }
146
+ div.dt-button-collection .dt-button-active-a a:after {
147
+ position: absolute;
148
+ right: 1em;
149
+ display: inline-block;
150
+ content: "\2713";
151
+ color: inherit;
152
+ }
153
+ div.dt-button-collection span.dt-button-spacer {
154
+ width: 100%;
155
+ font-size: 0.9em;
156
+ text-align: center;
157
+ margin: 0.5em 0;
158
+ }
159
+ div.dt-button-collection span.dt-button-spacer:empty {
160
+ height: 0;
161
+ width: 100%;
162
+ }
163
+ div.dt-button-collection span.dt-button-spacer.bar {
164
+ border-left: none;
165
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
166
+ padding-left: 0;
167
+ }
168
+
169
+ @media print {
170
+ table.dataTable tr > * {
171
+ box-shadow: none !important;
172
+ }
173
+ }
174
+ div.dt-buttons > .dt-button,
175
+ div.dt-buttons > div.dt-button-split .dt-button {
176
+ position: relative;
177
+ display: inline-block;
178
+ box-sizing: border-box;
179
+ margin-left: 0.167em;
180
+ margin-right: 0.167em;
181
+ margin-bottom: 0.333em;
182
+ padding: 0.5em 1em;
183
+ border: 1px solid rgba(0, 0, 0, 0.3);
184
+ border-radius: 2px;
185
+ cursor: pointer;
186
+ font-size: 0.88em;
187
+ line-height: 1.6em;
188
+ color: inherit;
189
+ white-space: nowrap;
190
+ overflow: hidden;
191
+ background-color: rgba(0, 0, 0, 0.1); /* Fallback */
192
+ background: linear-gradient(to bottom, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
193
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(230, 230, 230, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");
194
+ -webkit-user-select: none;
195
+ -moz-user-select: none;
196
+ -ms-user-select: none;
197
+ user-select: none;
198
+ text-decoration: none;
199
+ outline: none;
200
+ text-overflow: ellipsis;
201
+ }
202
+ div.dt-buttons > .dt-button:first-child,
203
+ div.dt-buttons > div.dt-button-split .dt-button:first-child {
204
+ margin-left: 0;
205
+ }
206
+ div.dt-buttons > .dt-button.disabled,
207
+ div.dt-buttons > div.dt-button-split .dt-button.disabled {
208
+ cursor: default;
209
+ opacity: 0.4;
210
+ }
211
+ div.dt-buttons > .dt-button.dt-button-active:not(.disabled),
212
+ div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled) {
213
+ background-color: rgba(0, 0, 0, 0.1); /* Fallback */
214
+ background: linear-gradient(to bottom, rgba(179, 179, 179, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
215
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(179, 179, 179, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");
216
+ box-shadow: inset 1px 1px 3px #999999;
217
+ }
218
+ div.dt-buttons > .dt-button.dt-button-active:not(.disabled):hover:not(.disabled),
219
+ div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled) {
220
+ box-shadow: inset 1px 1px 3px #999999;
221
+ background-color: rgba(0, 0, 0, 0.1); /* Fallback */
222
+ background: linear-gradient(to bottom, rgba(128, 128, 128, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
223
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(128, 128, 128, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");
224
+ }
225
+ div.dt-buttons > .dt-button:hover,
226
+ div.dt-buttons > div.dt-button-split .dt-button:hover {
227
+ text-decoration: none;
228
+ }
229
+ div.dt-buttons > .dt-button:hover:not(.disabled),
230
+ div.dt-buttons > div.dt-button-split .dt-button:hover:not(.disabled) {
231
+ border: 1px solid #666;
232
+ background-color: rgba(0, 0, 0, 0.1); /* Fallback */
233
+ background: linear-gradient(to bottom, rgba(153, 153, 153, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
234
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(153, 153, 153, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");
235
+ }
236
+ div.dt-buttons > .dt-button:focus:not(.disabled),
237
+ div.dt-buttons > div.dt-button-split .dt-button:focus:not(.disabled) {
238
+ outline: 2px solid rgb(53, 132, 228);
239
+ }
240
+ div.dt-buttons > .dt-button embed,
241
+ div.dt-buttons > div.dt-button-split .dt-button embed {
242
+ outline: none;
243
+ }
244
+ div.dt-buttons > div.dt-button-split .dt-button:first-child {
245
+ border-right: 1px solid rgba(0, 0, 0, 0.15);
246
+ border-top-right-radius: 0;
247
+ border-bottom-right-radius: 0;
248
+ }
249
+ div.dt-buttons > div.dt-button-split .dt-button:first-child:hover {
250
+ border-right: 1px solid #666;
251
+ }
252
+ div.dt-buttons > div.dt-button-split .dt-button:last-child {
253
+ border-left: 1px solid transparent;
254
+ border-top-left-radius: 0;
255
+ border-bottom-left-radius: 0;
256
+ }
257
+ div.dt-buttons > div.dt-button-split .dt-button:last-child:hover {
258
+ border-left: 1px solid #666;
259
+ }
260
+ div.dt-buttons span.dt-button-down-arrow {
261
+ position: relative;
262
+ top: -2px;
263
+ font-size: 10px;
264
+ padding-left: 10px;
265
+ line-height: 1em;
266
+ opacity: 0.6;
267
+ }
268
+ div.dt-buttons div.dt-button-split {
269
+ display: inline-block;
270
+ }
271
+ div.dt-buttons div.dt-button-split .dt-button:first-child {
272
+ margin-right: 0;
273
+ }
274
+ div.dt-buttons div.dt-button-split .dt-button:last-child {
275
+ margin-left: -1px;
276
+ padding-left: 0.75em;
277
+ padding-right: 0.75em;
278
+ z-index: 2;
279
+ }
280
+ div.dt-buttons div.dt-button-split .dt-button:last-child span {
281
+ padding-left: 0;
282
+ }
283
+
284
+ div.dt-button-collection {
285
+ position: absolute;
286
+ top: 0;
287
+ left: 0;
288
+ width: 200px;
289
+ margin-top: 3px;
290
+ margin-bottom: 3px;
291
+ padding: 0.75em 0;
292
+ border: 1px solid rgba(0, 0, 0, 0.4);
293
+ background-color: white;
294
+ overflow: hidden;
295
+ z-index: 2002;
296
+ border-radius: 5px;
297
+ box-shadow: 3px 4px 10px 1px rgba(0, 0, 0, 0.3);
298
+ box-sizing: border-box;
299
+ }
300
+ div.dt-button-collection .dt-button {
301
+ position: relative;
302
+ left: 0;
303
+ right: 0;
304
+ width: 100%;
305
+ display: flex;
306
+ float: none;
307
+ justify-content: space-between;
308
+ align-items: center;
309
+ background: none;
310
+ margin: 0;
311
+ padding: 0.5em 1em;
312
+ border: none;
313
+ text-align: left;
314
+ cursor: pointer;
315
+ color: inherit;
316
+ }
317
+ div.dt-button-collection .dt-button.dt-button-active {
318
+ background: none;
319
+ box-shadow: none;
320
+ }
321
+ div.dt-button-collection .dt-button.disabled {
322
+ cursor: default;
323
+ opacity: 0.4;
324
+ }
325
+ div.dt-button-collection .dt-button:hover:not(.disabled) {
326
+ border: none;
327
+ background: rgba(153, 153, 153, 0.1);
328
+ box-shadow: none;
329
+ }
330
+ div.dt-button-collection div.dt-button-split {
331
+ display: flex;
332
+ flex-direction: row;
333
+ flex-wrap: wrap;
334
+ justify-content: flex-start;
335
+ align-content: flex-start;
336
+ align-items: stretch;
337
+ }
338
+ div.dt-button-collection div.dt-button-split button.dt-button {
339
+ margin: 0;
340
+ display: inline-block;
341
+ width: 0;
342
+ flex-grow: 1;
343
+ flex-shrink: 0;
344
+ flex-basis: 50px;
345
+ }
346
+ div.dt-button-collection div.dt-button-split button.dt-button-split-drop {
347
+ min-width: 33px;
348
+ flex: 0;
349
+ }
350
+ div.dt-button-collection.fixed .dt-button {
351
+ border-radius: 0.25em;
352
+ background: rgba(255, 255, 255, 0.1);
353
+ }
354
+ div.dt-button-collection.fixed {
355
+ position: fixed;
356
+ display: block;
357
+ top: 50%;
358
+ left: 50%;
359
+ margin-left: -75px;
360
+ border-radius: 5px;
361
+ background-color: white;
362
+ padding: 0.5em;
363
+ }
364
+ div.dt-button-collection.fixed.two-column {
365
+ margin-left: -200px;
366
+ }
367
+ div.dt-button-collection.fixed.three-column {
368
+ margin-left: -225px;
369
+ }
370
+ div.dt-button-collection.fixed.four-column {
371
+ margin-left: -300px;
372
+ }
373
+ div.dt-button-collection.fixed.columns {
374
+ margin-left: -409px;
375
+ }
376
+ @media screen and (max-width: 1024px) {
377
+ div.dt-button-collection.fixed.columns {
378
+ margin-left: -308px;
379
+ }
380
+ }
381
+ @media screen and (max-width: 640px) {
382
+ div.dt-button-collection.fixed.columns {
383
+ margin-left: -203px;
384
+ }
385
+ }
386
+ @media screen and (max-width: 460px) {
387
+ div.dt-button-collection.fixed.columns {
388
+ margin-left: -100px;
389
+ }
390
+ }
391
+ div.dt-button-collection.fixed > :last-child {
392
+ max-height: 100vh;
393
+ overflow: auto;
394
+ }
395
+ div.dt-button-collection.two-column > :last-child, div.dt-button-collection.three-column > :last-child, div.dt-button-collection.four-column > :last-child {
396
+ display: block !important;
397
+ column-gap: 8px;
398
+ }
399
+ div.dt-button-collection.two-column > :last-child > *, div.dt-button-collection.three-column > :last-child > *, div.dt-button-collection.four-column > :last-child > * {
400
+ -webkit-column-break-inside: avoid;
401
+ break-inside: avoid;
402
+ }
403
+ div.dt-button-collection.two-column {
404
+ width: 400px;
405
+ }
406
+ div.dt-button-collection.two-column > :last-child {
407
+ padding-bottom: 1px;
408
+ column-count: 2;
409
+ }
410
+ div.dt-button-collection.three-column {
411
+ width: 450px;
412
+ }
413
+ div.dt-button-collection.three-column > :last-child {
414
+ padding-bottom: 1px;
415
+ column-count: 3;
416
+ }
417
+ div.dt-button-collection.four-column {
418
+ width: 600px;
419
+ }
420
+ div.dt-button-collection.four-column > :last-child {
421
+ padding-bottom: 1px;
422
+ column-count: 4;
423
+ }
424
+ div.dt-button-collection .dt-button {
425
+ border-radius: 0;
426
+ }
427
+ div.dt-button-collection.columns {
428
+ width: auto;
429
+ }
430
+ div.dt-button-collection.columns > :last-child {
431
+ display: flex;
432
+ flex-wrap: wrap;
433
+ justify-content: flex-start;
434
+ align-items: center;
435
+ gap: 6px;
436
+ width: 818px;
437
+ padding-bottom: 1px;
438
+ }
439
+ div.dt-button-collection.columns > :last-child .dt-button {
440
+ min-width: 200px;
441
+ flex: 0 1;
442
+ margin: 0;
443
+ }
444
+ div.dt-button-collection.columns.dtb-b3 > :last-child, div.dt-button-collection.columns.dtb-b2 > :last-child, div.dt-button-collection.columns.dtb-b1 > :last-child {
445
+ justify-content: space-between;
446
+ }
447
+ div.dt-button-collection.columns.dtb-b3 .dt-button {
448
+ flex: 1 1 32%;
449
+ }
450
+ div.dt-button-collection.columns.dtb-b2 .dt-button {
451
+ flex: 1 1 48%;
452
+ }
453
+ div.dt-button-collection.columns.dtb-b1 .dt-button {
454
+ flex: 1 1 100%;
455
+ }
456
+ @media screen and (max-width: 1024px) {
457
+ div.dt-button-collection.columns > :last-child {
458
+ width: 612px;
459
+ }
460
+ }
461
+ @media screen and (max-width: 640px) {
462
+ div.dt-button-collection.columns > :last-child {
463
+ width: 406px;
464
+ }
465
+ div.dt-button-collection.columns.dtb-b3 .dt-button {
466
+ flex: 0 1 32%;
467
+ }
468
+ }
469
+ @media screen and (max-width: 460px) {
470
+ div.dt-button-collection.columns > :last-child {
471
+ width: 200px;
472
+ }
473
+ }
474
+
475
+ div.dt-button-background {
476
+ position: fixed;
477
+ top: 0;
478
+ left: 0;
479
+ width: 100%;
480
+ height: 100%;
481
+ background: rgba(0, 0, 0, 0.7); /* Fallback */
482
+ background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */
483
+ z-index: 2001;
484
+ }
485
+
486
+ .dt-button.processing {
487
+ color: rgba(0, 0, 0, 0.2);
488
+ }
489
+ .dt-button.processing:after {
490
+ position: absolute;
491
+ top: 50%;
492
+ left: 50%;
493
+ width: 16px;
494
+ height: 16px;
495
+ margin: -8px 0 0 -8px;
496
+ box-sizing: border-box;
497
+ display: block;
498
+ content: " ";
499
+ border: 2px solid rgb(40, 40, 40);
500
+ border-radius: 50%;
501
+ border-left-color: transparent;
502
+ border-right-color: transparent;
503
+ animation: dtb-spinner 1500ms infinite linear;
504
+ -o-animation: dtb-spinner 1500ms infinite linear;
505
+ -ms-animation: dtb-spinner 1500ms infinite linear;
506
+ -webkit-animation: dtb-spinner 1500ms infinite linear;
507
+ -moz-animation: dtb-spinner 1500ms infinite linear;
508
+ }
509
+
510
+ @media screen and (max-width: 640px) {
511
+ div.dt-buttons {
512
+ float: none !important;
513
+ text-align: center;
514
+ }
515
+ }
516
+ html.dark div.dt-buttons > .dt-button,
517
+ html.dark div.dt-buttons > div.dt-button-split .dt-button {
518
+ border: 1px solid rgb(89, 91, 94);
519
+ background: rgba(255, 255, 255, 0.15);
520
+ }
521
+ html.dark div.dt-buttons > .dt-button.dt-button-active:not(.disabled),
522
+ html.dark div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled) {
523
+ background: rgba(179, 179, 179, 0.15);
524
+ box-shadow: inset 1px 1px 2px black;
525
+ }
526
+ html.dark div.dt-buttons > .dt-button.dt-button-active:not(.disabled):hover:not(.disabled),
527
+ html.dark div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled) {
528
+ background: rgba(128, 128, 128, 0.15);
529
+ box-shadow: inset 1px 1px 3px black;
530
+ }
531
+ html.dark div.dt-buttons > .dt-button:hover:not(.disabled),
532
+ html.dark div.dt-buttons > div.dt-button-split .dt-button:hover:not(.disabled) {
533
+ background: rgba(179, 179, 179, 0.15);
534
+ }
535
+ html.dark div.dt-buttons > .dt-button:focus:not(.disabled),
536
+ html.dark div.dt-buttons > div.dt-button-split .dt-button:focus:not(.disabled) {
537
+ outline: 2px solid rgb(110, 168, 254);
538
+ }
539
+ html.dark div.dt-buttons > div.dt-button-split .dt-button:first-child {
540
+ border-right: 1px solid rgba(255, 255, 255, 0.1);
541
+ }
542
+ html.dark div.dt-buttons > div.dt-button-split .dt-button:first-child:hover {
543
+ border-right: 1px solid rgb(89, 91, 94);
544
+ }
545
+ html.dark div.dt-buttons > div.dt-button-split .dt-button:last-child:hover {
546
+ border-left: 1px solid rgb(89, 91, 94);
547
+ }
548
+ html.dark div.dt-button-collection {
549
+ border: 1px solid rgba(255, 255, 255, 0.15);
550
+ background-color: rgb(33, 37, 41);
551
+ box-shadow: 3px 4px 10px 1px rgba(0, 0, 0, 0.8);
552
+ }
553
+ html.dark div.dt-button-info {
554
+ background-color: var(--dt-html-background);
555
+ border: 1px solid rgba(255, 255, 255, 0.15);
556
+ }
@@ -0,0 +1 @@
1
+ @keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dataTables_wrapper{position:relative}div.dt-buttons{position:initial}div.dt-buttons .dt-button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border-radius:.75em;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8);text-align:center;z-index:2003;overflow:hidden}div.dt-button-info h2{padding:2rem 2rem 1rem 2rem;margin:0;font-weight:normal}div.dt-button-info>div{padding:1em 2em 2em 2em}div.dtb-popover-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:2003}button.dtb-hide-drop{display:none !important}div.dt-button-collection-title{text-align:center;padding:.3em .5em .5em;margin-left:.5em;margin-right:.5em;font-size:.9em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection-title:empty{display:none}span.dt-button-spacer{display:inline-block;margin:.5em;white-space:nowrap}span.dt-button-spacer.bar{border-left:1px solid rgba(0, 0, 0, 0.3);vertical-align:middle;padding-left:.5em}span.dt-button-spacer.bar:empty{height:1em;width:1px;padding-left:0}div.dt-button-collection .dt-button-active{padding-right:3em}div.dt-button-collection .dt-button-active:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active.dt-button-split{padding-right:0}div.dt-button-collection .dt-button-active.dt-button-split:after{display:none}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child{padding-right:3em}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active-a a{padding-right:3em}div.dt-button-collection .dt-button-active-a a:after{position:absolute;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection span.dt-button-spacer{width:100%;font-size:.9em;text-align:center;margin:.5em 0}div.dt-button-collection span.dt-button-spacer:empty{height:0;width:100%}div.dt-button-collection span.dt-button-spacer.bar{border-left:none;border-bottom:1px solid rgba(0, 0, 0, 0.1);padding-left:0}@media print{table.dataTable tr>*{box-shadow:none !important}}div.dt-buttons>.dt-button,div.dt-buttons>div.dt-button-split .dt-button{position:relative;display:inline-block;box-sizing:border-box;margin-left:.167em;margin-right:.167em;margin-bottom:.333em;padding:.5em 1em;border:1px solid rgba(0, 0, 0, 0.3);border-radius:2px;cursor:pointer;font-size:.88em;line-height:1.6em;color:inherit;white-space:nowrap;overflow:hidden;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(230, 230, 230, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;outline:none;text-overflow:ellipsis}div.dt-buttons>.dt-button:first-child,div.dt-buttons>div.dt-button-split .dt-button:first-child{margin-left:0}div.dt-buttons>.dt-button.disabled,div.dt-buttons>div.dt-button-split .dt-button.disabled{cursor:default;opacity:.4}div.dt-buttons>.dt-button.dt-button-active:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(179, 179, 179, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(179, 179, 179, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");box-shadow:inset 1px 1px 3px #999}div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){box-shadow:inset 1px 1px 3px #999;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(128, 128, 128, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(128, 128, 128, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)")}div.dt-buttons>.dt-button:hover,div.dt-buttons>div.dt-button-split .dt-button:hover{text-decoration:none}div.dt-buttons>.dt-button:hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){border:1px solid #666;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(153, 153, 153, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(153, 153, 153, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)")}div.dt-buttons>.dt-button:focus:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(53, 132, 228)}div.dt-buttons>.dt-button embed,div.dt-buttons>div.dt-button-split .dt-button embed{outline:none}div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(0, 0, 0, 0.15);border-top-right-radius:0;border-bottom-right-radius:0}div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid #666}div.dt-buttons>div.dt-button-split .dt-button:last-child{border-left:1px solid transparent;border-top-left-radius:0;border-bottom-left-radius:0}div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid #666}div.dt-buttons span.dt-button-down-arrow{position:relative;top:-2px;font-size:10px;padding-left:10px;line-height:1em;opacity:.6}div.dt-buttons div.dt-button-split{display:inline-block}div.dt-buttons div.dt-button-split .dt-button:first-child{margin-right:0}div.dt-buttons div.dt-button-split .dt-button:last-child{margin-left:-1px;padding-left:.75em;padding-right:.75em;z-index:2}div.dt-buttons div.dt-button-split .dt-button:last-child span{padding-left:0}div.dt-button-collection{position:absolute;top:0;left:0;width:200px;margin-top:3px;margin-bottom:3px;padding:.75em 0;border:1px solid rgba(0, 0, 0, 0.4);background-color:white;overflow:hidden;z-index:2002;border-radius:5px;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.3);box-sizing:border-box}div.dt-button-collection .dt-button{position:relative;left:0;right:0;width:100%;display:flex;float:none;justify-content:space-between;align-items:center;background:none;margin:0;padding:.5em 1em;border:none;text-align:left;cursor:pointer;color:inherit}div.dt-button-collection .dt-button.dt-button-active{background:none;box-shadow:none}div.dt-button-collection .dt-button.disabled{cursor:default;opacity:.4}div.dt-button-collection .dt-button:hover:not(.disabled){border:none;background:rgba(153, 153, 153, 0.1);box-shadow:none}div.dt-button-collection div.dt-button-split{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:stretch}div.dt-button-collection div.dt-button-split button.dt-button{margin:0;display:inline-block;width:0;flex-grow:1;flex-shrink:0;flex-basis:50px}div.dt-button-collection div.dt-button-split button.dt-button-split-drop{min-width:33px;flex:0}div.dt-button-collection.fixed .dt-button{border-radius:.25em;background:rgba(255, 255, 255, 0.1)}div.dt-button-collection.fixed{position:fixed;display:block;top:50%;left:50%;margin-left:-75px;border-radius:5px;background-color:white;padding:.5em}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection.fixed.columns{margin-left:-409px}@media screen and (max-width: 1024px){div.dt-button-collection.fixed.columns{margin-left:-308px}}@media screen and (max-width: 640px){div.dt-button-collection.fixed.columns{margin-left:-203px}}@media screen and (max-width: 460px){div.dt-button-collection.fixed.columns{margin-left:-100px}}div.dt-button-collection.fixed>:last-child{max-height:100vh;overflow:auto}div.dt-button-collection.two-column>:last-child,div.dt-button-collection.three-column>:last-child,div.dt-button-collection.four-column>:last-child{display:block !important;column-gap:8px}div.dt-button-collection.two-column>:last-child>*,div.dt-button-collection.three-column>:last-child>*,div.dt-button-collection.four-column>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.columns{width:auto}div.dt-button-collection.columns>:last-child{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;width:818px;padding-bottom:1px}div.dt-button-collection.columns>:last-child .dt-button{min-width:200px;flex:0 1;margin:0}div.dt-button-collection.columns.dtb-b3>:last-child,div.dt-button-collection.columns.dtb-b2>:last-child,div.dt-button-collection.columns.dtb-b1>:last-child{justify-content:space-between}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:1 1 32%}div.dt-button-collection.columns.dtb-b2 .dt-button{flex:1 1 48%}div.dt-button-collection.columns.dtb-b1 .dt-button{flex:1 1 100%}@media screen and (max-width: 1024px){div.dt-button-collection.columns>:last-child{width:612px}}@media screen and (max-width: 640px){div.dt-button-collection.columns>:last-child{width:406px}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:0 1 32%}}@media screen and (max-width: 460px){div.dt-button-collection.columns>:last-child{width:200px}}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:2001}.dt-button.processing{color:rgba(0, 0, 0, 0.2)}.dt-button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:" ";border:2px solid rgb(40, 40, 40);border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}@media screen and (max-width: 640px){div.dt-buttons{float:none !important;text-align:center}}html.dark div.dt-buttons>.dt-button,html.dark div.dt-buttons>div.dt-button-split .dt-button{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background:rgba(179, 179, 179, 0.15);box-shadow:inset 1px 1px 2px black}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){background:rgba(128, 128, 128, 0.15);box-shadow:inset 1px 1px 3px black}html.dark div.dt-buttons>.dt-button:hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){background:rgba(179, 179, 179, 0.15)}html.dark div.dt-buttons>.dt-button:focus:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(110, 168, 254)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(255, 255, 255, 0.1)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid rgb(89, 91, 94)}html.dark div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid rgb(89, 91, 94)}html.dark div.dt-button-collection{border:1px solid rgba(255, 255, 255, 0.15);background-color:rgb(33, 37, 41);box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8)}html.dark div.dt-button-info{background-color:var(--dt-html-background);border:1px solid rgba(255, 255, 255, 0.15)}