pywebexec 2.0.10__tar.gz → 2.0.12__tar.gz

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 (83) hide show
  1. {pywebexec-2.0.10/pywebexec.egg-info → pywebexec-2.0.12}/PKG-INFO +1 -1
  2. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/pywebexec.py +21 -8
  3. pywebexec-2.0.12/pywebexec/static/css/form.css +183 -0
  4. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/css/style.css +5 -1
  5. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/executables.js +1 -1
  6. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/schemaform.js +12 -0
  7. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/swagger-form.js +1 -1
  8. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/version.py +2 -2
  9. {pywebexec-2.0.10 → pywebexec-2.0.12/pywebexec.egg-info}/PKG-INFO +1 -1
  10. pywebexec-2.0.10/pywebexec/static/css/form.css +0 -162
  11. {pywebexec-2.0.10 → pywebexec-2.0.12}/.github/workflows/python-publish.yml +0 -0
  12. {pywebexec-2.0.10 → pywebexec-2.0.12}/.gitignore +0 -0
  13. {pywebexec-2.0.10 → pywebexec-2.0.12}/LICENSE +0 -0
  14. {pywebexec-2.0.10 → pywebexec-2.0.12}/README.md +0 -0
  15. {pywebexec-2.0.10 → pywebexec-2.0.12}/pyproject.toml +0 -0
  16. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/__init__.py +0 -0
  17. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/host_ip.py +0 -0
  18. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/css/markdown.css +0 -0
  19. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/css/swagger-ui.css +0 -0
  20. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/css/swagger-ui.css.map +0 -0
  21. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/css/xterm.css +0 -0
  22. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/fonts/CommitMonoNerdFontMono-Regular.ttf +0 -0
  23. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/fonts/LICENSE +0 -0
  24. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/fonts/glyphicons-halflings-regular.eot +0 -0
  25. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/fonts/glyphicons-halflings-regular.svg +0 -0
  26. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/fonts/glyphicons-halflings-regular.ttf +0 -0
  27. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/fonts/glyphicons-halflings-regular.woff +0 -0
  28. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/fonts/glyphicons-halflings-regular.woff2 +0 -0
  29. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/aborted.svg +0 -0
  30. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/copy.svg +0 -0
  31. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/copy_ok.svg +0 -0
  32. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/down-arrow.svg +0 -0
  33. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/failed.svg +0 -0
  34. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/favicon.svg +0 -0
  35. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/fit-tty.svg +0 -0
  36. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/fit-win.svg +0 -0
  37. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/font-decrease.svg +0 -0
  38. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/font-increase.svg +0 -0
  39. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/norun.svg +0 -0
  40. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/pause.svg +0 -0
  41. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/popup.svg +0 -0
  42. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/resume.svg +0 -0
  43. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/running.svg +0 -0
  44. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/success.svg +0 -0
  45. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/images/swagger-ui.svg +0 -0
  46. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/js-yaml/LICENSE +0 -0
  47. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/js-yaml/js-yaml.min.js +0 -0
  48. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/marked/LICENSE.md +0 -0
  49. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/marked/marked.min.js +0 -0
  50. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/popup.js +0 -0
  51. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/script.js +0 -0
  52. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/swagger-ui/LICENSE +0 -0
  53. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/swagger-ui/swagger-ui-bundle.js +0 -0
  54. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/swagger-ui/swagger-ui-standalone-preset.js +0 -0
  55. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/xterm/LICENSE +0 -0
  56. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/xterm/addon-canvas.js +0 -0
  57. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/xterm/addon-canvas.js.map +0 -0
  58. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/xterm/addon-fit.js +0 -0
  59. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/xterm/addon-fit.js.map +0 -0
  60. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/xterm/addon-unicode-graphemes.js +0 -0
  61. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/xterm/addon-unicode-graphemes.js.map +0 -0
  62. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/xterm/addon-unicode11.js +0 -0
  63. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/xterm/addon-unicode11.js.map +0 -0
  64. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/xterm/xterm.js +0 -0
  65. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/js/xterm/xterm.js.map +0 -0
  66. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/jsonform/LICENSE +0 -0
  67. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/jsonform/deps/README.md +0 -0
  68. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/jsonform/deps/img/glyphicons-halflings.png +0 -0
  69. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/jsonform/deps/jquery.min.js +0 -0
  70. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/jsonform/deps/underscore.js +0 -0
  71. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/static/jsonform/lib/jsonform.js +0 -0
  72. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/swagger.yaml +0 -0
  73. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/templates/__init__.py +0 -0
  74. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/templates/index.html +0 -0
  75. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/templates/popup.html +0 -0
  76. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec/templates/swagger_ui.html +0 -0
  77. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec.egg-info/SOURCES.txt +0 -0
  78. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec.egg-info/dependency_links.txt +0 -0
  79. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec.egg-info/entry_points.txt +0 -0
  80. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec.egg-info/requires.txt +0 -0
  81. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexec.egg-info/top_level.txt +0 -0
  82. {pywebexec-2.0.10 → pywebexec-2.0.12}/pywebexecdev +0 -0
  83. {pywebexec-2.0.10 → pywebexec-2.0.12}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pywebexec
3
- Version: 2.0.10
3
+ Version: 2.0.12
4
4
  Summary: Simple Python HTTP Exec Server
5
5
  Home-page: https://github.com/joknarf/pywebexec
6
6
  Author: Franck Jouvanceau
@@ -358,7 +358,8 @@ def parseargs():
358
358
  parser.add_argument("-g", "--gencert", action="store_true", help="https server self signed cert")
359
359
  parser.add_argument("-T", "--tokenurl", action="store_true", help="generate safe url to access")
360
360
  parser.add_argument("action", nargs="?", help="daemon action start/stop/restart/status/shareterm/term",
361
- choices=["start","stop","restart","status","shareterm", "term"])
361
+ choices=["start","stop","restart","status","shareterm", "term", "run"])
362
+ parser.add_argument("command", nargs="*", help="command to run")
362
363
 
363
364
  args = parser.parse_args()
364
365
  if not os.path.exists(CONFDIR):
@@ -378,6 +379,12 @@ def parseargs():
378
379
  if args.action == "term":
379
380
  COMMAND_STATUS_DIR = f"{os.getcwd()}/{COMMAND_STATUS_DIR}"
380
381
  sys.exit(start_term())
382
+ elif args.action == "run":
383
+ command = args.command[0]
384
+ params = args.command[1:]
385
+ command_id = term_command_id
386
+ exit_code = run_command("localhost", args.user, command, params, command_id, tty_rows, tty_cols)
387
+ sys.exit(exit_code)
381
388
 
382
389
  (hostname, ip) = host_ip.get_host_ip(args.listen)
383
390
 
@@ -483,10 +490,14 @@ def run_command(fromip, user, command, params, command_id, rows, cols):
483
490
  # app.logger.info(f'{fromip} run_command {command_id} {user}: {command} {params}')
484
491
  log_info(fromip, user, f'run_command {command_id}: {command_str(command, params)}')
485
492
  start_time = datetime.now(timezone.utc).isoformat()
493
+ if user:
494
+ os.environ['PYWEBEXEC_USER'] = user
486
495
  update_command_status(command_id, {
487
496
  'command': command,
488
497
  'params': params,
489
498
  'start_time': start_time,
499
+ 'status': 'running',
500
+ 'from': fromip,
490
501
  'user': user,
491
502
  'cols': cols,
492
503
  'rows': rows,
@@ -539,7 +550,7 @@ def run_command(fromip, user, command, params, command_id, rows, cols):
539
550
  with open(get_output_file_path(command_id), 'a') as output_file:
540
551
  output_file.write(str(e))
541
552
  app.logger.error(fromip, user, f'Error running command {command_id}: {e}')
542
-
553
+ return exit_code
543
554
 
544
555
  def command_str(command, params):
545
556
  try:
@@ -603,12 +614,6 @@ def check_processes():
603
614
  'exit_code': -1,
604
615
  })
605
616
 
606
- args = parseargs()
607
- if args.cert:
608
- app.config['SESSION_COOKIE_SECURE'] = True
609
- app.config['TITLE'] = f"{args.title} API"
610
-
611
-
612
617
  def log_info(fromip, user, message):
613
618
  app.logger.info(f"{user} {fromip}: {message}")
614
619
 
@@ -618,6 +623,14 @@ def log_error(fromip, user, message):
618
623
  def log_request(message):
619
624
  log_info(request.remote_addr, session.get('username', '-'), message)
620
625
 
626
+
627
+ args = parseargs()
628
+ if args.cert:
629
+ app.config['SESSION_COOKIE_SECURE'] = True
630
+ app.config['TITLE'] = f"{args.title} API"
631
+
632
+
633
+
621
634
  def get_executable(cmd):
622
635
  if os.path.isfile(cmd) and os.access(cmd, os.X_OK):
623
636
  help_file = f"{cmd}.help"
@@ -0,0 +1,183 @@
1
+ @font-face {
2
+ font-family: 'Glyphicons Halflings';
3
+
4
+ src: url('../fonts/glyphicons-halflings-regular.eot');
5
+ src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
6
+ }
7
+
8
+ #schemaForm, .schema-form {
9
+ font-size: 14px;
10
+
11
+ .glyphicon-plus-sign:before {
12
+ content: "\e081";
13
+ }
14
+ .glyphicon-minus-sign:before {
15
+ content: "\e082";
16
+ }
17
+
18
+ .glyphicon {
19
+ position: relative;
20
+ top: 1px;
21
+ display: inline-block;
22
+ font-family: 'Glyphicons Halflings';
23
+ font-style: normal;
24
+ font-weight: normal;
25
+ line-height: 1;
26
+ -webkit-font-smoothing: antialiased;
27
+ -moz-osx-font-smoothing: grayscale;
28
+ }
29
+
30
+ .btn {
31
+ font-size: 14px;
32
+ font-weight: normal;
33
+ text-align: center;
34
+ white-space: nowrap;
35
+ cursor: pointer;
36
+ padding: 3px 13px;
37
+ border: 1px solid transparent;
38
+ border-radius: 15px;
39
+ font-family: Arial, Helvetica, sans-serif;
40
+ }
41
+ .btn-primary {
42
+ position: relative;
43
+ margin-bottom: 10px;
44
+ height: 24px;
45
+ top: 20px;
46
+ color: #fff;
47
+ background-color: #337ab7;
48
+ border-color: #2e6da4;
49
+ }
50
+ .btn-primary:hover {
51
+ background-color: #286090;
52
+ border-color: #204d74;
53
+ }
54
+ .btn-default {
55
+ background-color: transparent;
56
+ padding: 3px 5px 2px 5px;
57
+ color: #333;
58
+ /* border: 1px solid #ccc; */
59
+ /* color: #eee; */
60
+ }
61
+
62
+
63
+ /* Custom Style */
64
+ .help-block {
65
+ font-size: 12px;
66
+ color: #808080;
67
+ display: block;
68
+ margin-top: 5px;
69
+ margin-bottom: 10px;
70
+ }
71
+ .form-control {
72
+ font-size: 14px;
73
+ font-weight: normal;
74
+ line-height: 1.42857143;
75
+ color: #555;
76
+ background-color: #fff;
77
+ background-image: none;
78
+ border: 1px solid #ccc;
79
+ display: inline-block;
80
+ width: auto;
81
+ vertical-align: middle;
82
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
83
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
84
+ box-sizing: border-box;
85
+ padding: 3px 10px;
86
+ height: 24px;
87
+ border-radius: 15px;
88
+ margin: 0;
89
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
90
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
91
+ -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
92
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
93
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
94
+ }
95
+ .form-control:focus {
96
+ border-color: #66afe9;
97
+ outline: 0;
98
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
99
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
100
+ }
101
+
102
+ .jsonform-required > label:after {
103
+ content: ' *';
104
+ color: red;
105
+ }
106
+ label {
107
+ display: inline-block;
108
+ max-width: 100%;
109
+ margin-bottom: 5px;
110
+ font-weight: bold;
111
+ color: #444;
112
+ margin-left: 5px;
113
+ font-size: 14px;
114
+ }
115
+ .form-inline {
116
+ align-items: unset;
117
+ display: flex;
118
+ flex-flow: wrap;
119
+ gap: 10px;
120
+ }
121
+ .form-inline .checkbox {
122
+ margin-top: 0px;
123
+ margin-bottom: 1px;
124
+ padding: 0;
125
+ }
126
+ input[type="checkbox"] {
127
+ display: block;
128
+ position: relative;
129
+ margin: 0;
130
+ top: 5px;
131
+ }
132
+ li > div > label {
133
+ display: none;
134
+ }
135
+ ul {
136
+ padding: 0;
137
+ margin: 0;
138
+ }
139
+ li {
140
+ display: flex;
141
+ }
142
+ input, select {
143
+ min-width: unset;
144
+ max-width: unset;
145
+ width: auto;
146
+ }
147
+ input[type="number"] {
148
+ max-width: 100px;
149
+ text-align: right;
150
+ }
151
+ select {
152
+ -webkit-appearance: auto;
153
+ -moz-appearance: auto;
154
+ appearance: auto;
155
+ }
156
+ textarea {
157
+ min-height: 24px;
158
+ max-height: 300px;
159
+ overflow-y: auto;
160
+ resize: vertical;
161
+ border-radius: 5px;
162
+ border: 1px solid #ccc;
163
+ padding: 3px;
164
+ margin: 0px;
165
+ width: unset;
166
+ line-height: 1.15;
167
+ font-weight: normal;
168
+ font-family: Arial, Helvetica, sans-serif;
169
+ font-size: 14px;
170
+ box-sizing: border-box;
171
+ }
172
+ textarea:focus {
173
+ border-color: #66afe9;
174
+ outline: 0;
175
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
176
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
177
+ }
178
+ }
179
+
180
+ .swagger-ui textarea {
181
+ min-height: 130px;
182
+ overflow-y: hidden;
183
+ }
@@ -440,8 +440,12 @@ body.dimmed * {
440
440
  text-overflow: ellipsis;
441
441
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
442
442
  font-size: 14px;
443
+ display: inline-block;
444
+ }
445
+ .command-line:hover {
446
+ text-overflow: unset;
447
+ max-width: unset;
443
448
  }
444
-
445
449
  .nbrunning {
446
450
  display: inline-block;
447
451
  font-size: 13px;
@@ -297,7 +297,7 @@ paramsInput.addEventListener('focus', () => {
297
297
  });
298
298
  setHelpDivPosition();
299
299
  paramsContainer.style.display = 'block';
300
- const input1 = schemaFormPW.querySelector('input[type="text"]');
300
+ const input1 = schemaFormPW.querySelector('input, select, textarea');
301
301
  if (input1) {
302
302
  input1.focus();
303
303
  }
@@ -54,6 +54,16 @@ function createSchemaForm(form, schema, onSubmit) {
54
54
  btn.addEventListener('click', formInputHandle);
55
55
  });
56
56
  formInputHandle();
57
+
58
+ form[0].querySelectorAll('textarea').forEach(txt => {
59
+ txt.style.height = "0";
60
+ txt.style.height = txt.scrollHeight + "px";
61
+ txt.addEventListener("input", (e) => {
62
+ e.target.style.height = "0";
63
+ e.target.style.height = (e.target.scrollHeight+2) + "px";
64
+ });
65
+ });
66
+
57
67
  return jsform;
58
68
  }
59
69
 
@@ -88,3 +98,5 @@ async function getPostParametersSchema() {
88
98
 
89
99
  let schemaForm;
90
100
  let inputHandlers = [];
101
+
102
+
@@ -92,7 +92,7 @@ window.onload = function() {
92
92
  // form.addEventListener("input", formInput(node, jsform));
93
93
  form.addEventListener("input", addFormInputListener(node, jsform));
94
94
  node.parentNode.insertBefore(form, node.nextSibling);
95
- item1 = form.querySelector("input, select");
95
+ item1 = form.querySelector("input, select, textarea");
96
96
  if (item1) {
97
97
  item1.focus();
98
98
  }
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '2.0.10'
21
- __version_tuple__ = version_tuple = (2, 0, 10)
20
+ __version__ = version = '2.0.12'
21
+ __version_tuple__ = version_tuple = (2, 0, 12)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pywebexec
3
- Version: 2.0.10
3
+ Version: 2.0.12
4
4
  Summary: Simple Python HTTP Exec Server
5
5
  Home-page: https://github.com/joknarf/pywebexec
6
6
  Author: Franck Jouvanceau
@@ -1,162 +0,0 @@
1
- @font-face {
2
- font-family: 'Glyphicons Halflings';
3
-
4
- src: url('../fonts/glyphicons-halflings-regular.eot');
5
- src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
6
- }
7
-
8
- #schemaForm, .schema-form {
9
- font-size: 14px;
10
-
11
- .glyphicon-plus-sign:before {
12
- content: "\e081";
13
- }
14
- .glyphicon-minus-sign:before {
15
- content: "\e082";
16
- }
17
-
18
- .glyphicon {
19
- position: relative;
20
- top: 1px;
21
- display: inline-block;
22
- font-family: 'Glyphicons Halflings';
23
- font-style: normal;
24
- font-weight: normal;
25
- line-height: 1;
26
- -webkit-font-smoothing: antialiased;
27
- -moz-osx-font-smoothing: grayscale;
28
- }
29
-
30
- .btn {
31
- font-size: 14px;
32
- font-weight: normal;
33
- text-align: center;
34
- white-space: nowrap;
35
- cursor: pointer;
36
- padding: 3px 13px;
37
- border: 1px solid transparent;
38
- border-radius: 15px;
39
- font-family: Arial, Helvetica, sans-serif;
40
- }
41
- .btn-primary {
42
- position: relative;
43
- margin-bottom: 10px;
44
- height: 24px;
45
- top: 20px;
46
- color: #fff;
47
- background-color: #337ab7;
48
- border-color: #2e6da4;
49
- }
50
- .btn-primary:hover {
51
- background-color: #286090;
52
- border-color: #204d74;
53
- }
54
- .btn-default {
55
- background-color: transparent;
56
- padding: 3px 5px 2px 5px;
57
- color: #333;
58
- /* border: 1px solid #ccc; */
59
- /* color: #eee; */
60
- }
61
-
62
-
63
- /* Custom Style */
64
- .help-block {
65
- font-size: 12px;
66
- color: #808080;
67
- display: block;
68
- margin-top: 5px;
69
- margin-bottom: 10px;
70
- }
71
- .form-control {
72
- font-size: 14px;
73
- font-weight: normal;
74
- line-height: 1.42857143;
75
- color: #555;
76
- background-color: #fff;
77
- background-image: none;
78
- border: 1px solid #ccc;
79
- display: inline-block;
80
- width: auto;
81
- vertical-align: middle;
82
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
83
- transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
84
- box-sizing: border-box;
85
- padding: 3px 10px;
86
- height: 24px;
87
- border-radius: 15px;
88
- margin: 0;
89
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
90
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
91
- -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
92
- -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
93
- transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
94
- }
95
- .form-control:focus {
96
- border-color: #66afe9;
97
- outline: 0;
98
- -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
99
- box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
100
- }
101
-
102
- .jsonform-required > label:after {
103
- content: ' *';
104
- color: red;
105
- }
106
- label {
107
- display: inline-block;
108
- max-width: 100%;
109
- margin-bottom: 5px;
110
- font-weight: bold;
111
- color: #444;
112
- margin-left: 5px;
113
- font-size: 14px;
114
- }
115
- .form-inline {
116
- align-items: unset;
117
- display: flex;
118
- flex-flow: wrap;
119
- gap: 10px;
120
- }
121
- .form-inline .checkbox {
122
- margin-top: 0px;
123
- margin-bottom: 1px;
124
- padding: 0;
125
- }
126
- input[type="checkbox"] {
127
- display: block;
128
- position: relative;
129
- margin: 0;
130
- top: 5px;
131
- }
132
- li > div > label {
133
- display: none;
134
- }
135
- ul {
136
- padding: 0;
137
- margin: 0;
138
- }
139
- li {
140
- display: flex;
141
- }
142
- input, select {
143
- min-width: unset;
144
- max-width: unset;
145
- width: auto;
146
- }
147
- input[type="number"] {
148
- max-width: 100px;
149
- text-align: right;
150
- }
151
- select {
152
- -webkit-appearance: auto;
153
- -moz-appearance: auto;
154
- appearance: auto;
155
- }
156
-
157
- }
158
-
159
- .swagger-ui textarea {
160
- min-height: 130px;
161
- overflow-y: hidden;
162
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes