pixl-xyapp 2.1.0 → 2.1.1

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.
package/css/base.css CHANGED
@@ -12,7 +12,7 @@
12
12
  --pink: rgb(232, 62, 140);
13
13
  --red: rgb(220, 53, 69);
14
14
  --orange: rgb(253, 126, 20);
15
- --yellow: rgb(255, 193, 7);
15
+ --yellow: rgb(240, 200, 0);
16
16
  --green: rgb(40, 167, 69);
17
17
  --teal: rgb(32, 201, 151);
18
18
  --cyan: rgb(23, 162, 184);
@@ -259,9 +259,6 @@ body.sidebar div.sidebar {
259
259
  left: 0;
260
260
  }
261
261
 
262
- body {
263
- /* transition: 0.2s ease padding-left; */
264
- }
265
262
  div.sidebar {
266
263
  transition: 0.2s ease left;
267
264
  }
@@ -690,6 +687,7 @@ div.toast > span {
690
687
  display: block;
691
688
  position: relative;
692
689
  margin-left: 35px;
690
+ word-break: break-word;
693
691
  }
694
692
 
695
693
  div.toast.success { background: #44bb44; }
@@ -806,10 +804,6 @@ div.message a:hover {
806
804
 
807
805
  /* Main */
808
806
 
809
- div.main {
810
-
811
- }
812
-
813
807
  div.page_intro {
814
808
  padding: 30px 20px 0px 30px;
815
809
  font-size: 14px;
@@ -975,10 +969,6 @@ body.dark .button {
975
969
  opacity: 1.0;
976
970
  /* text-decoration: underline; */
977
971
  }
978
- body.dark .button:hover {
979
- /* background: var(--background-color); */
980
- }
981
-
982
972
  .button:active {
983
973
  top: 0px;
984
974
  box-shadow: none;
@@ -1105,7 +1095,7 @@ body.dark .button.primary {
1105
1095
  width: 100%;
1106
1096
  }
1107
1097
 
1108
- .form_row input[type="text"], .form_row input[type="password"], .form_row input[type="email"], .form_row input[type="url"], .form_row input[type="number"], .form_row input[type="date"], .form_row input[type="datetime-local"] {
1098
+ .form_row input[type="text"], .form_row input[type="password"], .form_row input[type="email"], .form_row input[type="url"], .form_row input[type="number"], .form_row input[type="date"], .form_row input[type="time"], .form_row input[type="datetime-local"], .form_row input[type="tel"], .form_row input[type="color"] {
1109
1099
  -moz-appearance: none;
1110
1100
  -webkit-appearance: none;
1111
1101
  appearance: none;
@@ -1119,15 +1109,19 @@ body.dark .button.primary {
1119
1109
  transition: 0.2s ease all;
1120
1110
  cursor: text;
1121
1111
  }
1122
- .form_row input[type="text"]:focus, .form_row input[type="password"]:focus, .form_row input[type="email"]:focus, .form_row input[type="url"]:focus, .form_row input[type="number"]:focus, .form_row input[type="date"]:focus, .form_row input[type="datetime-local"]:focus {
1112
+ .form_row input[type="text"]:focus, .form_row input[type="password"]:focus, .form_row input[type="email"]:focus, .form_row input[type="url"]:focus, .form_row input[type="number"]:focus, .form_row input[type="date"]:focus, .form_row input[type="time"]:focus, .form_row input[type="datetime-local"]:focus, .form_row input[type="tel"]:focus, .form_row input[type="color"]:focus {
1123
1113
  /* color: var(--theme-color); */
1124
1114
  border: 1px solid var(--theme-color-half);
1125
1115
  }
1126
1116
 
1127
- .form_row input[type="text"].warning, .form_row input[type="email"].warning, .form_row input[type="url"].warning, .form_row input[type="number"].warning, .form_row input[type="date"].warning, .form_row input[type="datetime-local"].warning {
1117
+ .form_row input[type="text"].warning, .form_row input[type="email"].warning, .form_row input[type="url"].warning, .form_row input[type="number"].warning, .form_row input[type="date"].warning, .form_row input[type="time"].warning, .form_row input[type="datetime-local"].warning, .form_row input[type="tel"].warning, .form_row input[type="color"].warning {
1128
1118
  border: 1px solid red;
1129
1119
  }
1130
1120
 
1121
+ .form_row input[type="color"] {
1122
+ cursor: default;
1123
+ }
1124
+
1131
1125
  .form_row input[type="text"].regexp {
1132
1126
  font-size: 12px;
1133
1127
  }
@@ -1149,6 +1143,9 @@ body.dark .button.primary {
1149
1143
  /* color: var(--theme-color); */
1150
1144
  border: 1px solid var(--theme-color-half);
1151
1145
  }
1146
+ .dialog .form_row textarea {
1147
+ resize: none;
1148
+ }
1152
1149
 
1153
1150
  input:disabled, textarea:disabled {
1154
1151
  /* color: var(--body-text-color) !important; */
@@ -1286,6 +1283,9 @@ body.dark .multiselect.multi {
1286
1283
  body.dark .multiselect > .item {
1287
1284
  background: var(--border-color);
1288
1285
  }
1286
+ body.dark .dialog .multiselect > .item {
1287
+ background: rgba(255, 255, 255, 0.1);
1288
+ }
1289
1289
 
1290
1290
  .multiselect > .item > i.mdi-close:hover:before {
1291
1291
  content: "\F0159"; /* mdi-close-circle */
@@ -1529,6 +1529,12 @@ div.info_value:last-child {
1529
1529
  margin-bottom: 0px;
1530
1530
  }
1531
1531
 
1532
+ div.info_caption {
1533
+ margin-top: 4px;
1534
+ font-size: 11px;
1535
+ color: var(--label-color);
1536
+ }
1537
+
1532
1538
  .checker {
1533
1539
  position: relative;
1534
1540
  left: -12px;
@@ -1708,10 +1714,6 @@ body.dark #dialog, body.dark .dialog {
1708
1714
  color: var(--red);
1709
1715
  }
1710
1716
 
1711
- .dialog_content {
1712
-
1713
- }
1714
-
1715
1717
  .dialog_help {
1716
1718
  font-size: 12px;
1717
1719
  font-style: italic;
@@ -2325,9 +2327,6 @@ body.dark .data_table tr th {
2325
2327
 
2326
2328
  background: transparent;
2327
2329
  /* background: linear-gradient(to top, #efefef 0%, #fff 100%); */
2328
- }
2329
- .data_table tr.highlight td {
2330
-
2331
2330
  }
2332
2331
  .data_table.extra_padding tr td {
2333
2332
  padding-top: 10px;
@@ -2354,6 +2353,10 @@ table.data_table.compact th:first-child, table.data_table.compact td:first-child
2354
2353
  padding-left: 10px;
2355
2354
  }
2356
2355
 
2356
+ div.data_table_compact > div.data_grid > ul.grid_row_header > div {
2357
+ margin-bottom: 5px;
2358
+ }
2359
+
2357
2360
  div.td_big {
2358
2361
  line-height: 21px;
2359
2362
  font-size: 13px;
@@ -2618,10 +2621,6 @@ body.dark .color_label {
2618
2621
  align-items: center;
2619
2622
  }
2620
2623
 
2621
- .simple_grid_horiz > div {
2622
-
2623
- }
2624
-
2625
2624
  /* My Account */
2626
2625
 
2627
2626
  .avatar_edit {
package/js/base.js CHANGED
@@ -161,6 +161,7 @@ var app = {
161
161
  var page = this.page_manager.find(id);
162
162
  if (page && page.onKeyDown) page.onKeyDown(event);
163
163
  }
164
+ else if (app.onKeyDown) app.onKeyDown(event);
164
165
  },
165
166
 
166
167
  handleUnload: function(event) {
@@ -271,7 +272,7 @@ var app = {
271
272
 
272
273
  request: function(url, opts, callback, errorCallback) {
273
274
  // send HTTP GET to API endpoint
274
- Debug.trace('api', "Sending API request: " + url );
275
+ // Debug.trace('api', "Sending API request: " + url );
275
276
 
276
277
  // default 10 sec timeout
277
278
  var timeout = opts.timeout || 10000;
@@ -634,7 +635,7 @@ window.addEventListener( "click", function(e) {
634
635
 
635
636
  window.addEventListener( "keydown", function(event) {
636
637
  if (Popover.enabled) Popover.handleKeyDown(event);
637
- else if (CodeEditor.handleKeyDown) CodeEditor.handleKeyDown(event);
638
+ else if (CodeEditor.active) CodeEditor.handleKeyDown(event);
638
639
  else if (Dialog.active) Dialog.confirm_key(event);
639
640
  else app.handleKeyDown(event);
640
641
  }, false );
package/js/page.js CHANGED
@@ -62,13 +62,17 @@ window.Page = class Page {
62
62
  // add localized strings and markdown captions
63
63
  var html = '';
64
64
 
65
+ // pull in args from localized ui config (for label, caption, etc.)
65
66
  if (args.id && config.ui.dom[args.id]) {
66
- // pull in args from localized ui config (for label, caption, etc.)
67
- // merge_hash_into( args, config.ui.dom[args.id] );
68
67
  for (var key in config.ui.dom[args.id]) {
69
68
  if (!args[key]) args[key] = config.ui.dom[args.id][key];
70
69
  }
71
70
  }
71
+ else if (args.id && config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) {
72
+ for (var key in config.ui.pages[this.ID][args.id]) {
73
+ if (!args[key]) args[key] = config.ui.pages[this.ID][args.id][key];
74
+ }
75
+ }
72
76
 
73
77
  var label = args.label;
74
78
  var content = args.content;
@@ -98,9 +102,10 @@ window.Page = class Page {
98
102
  if (args.disabled) args.disabled = "disabled";
99
103
  else delete args.disabled;
100
104
 
101
- if (args.id && config.ui.dom[args.id]) {
102
- // pull in args from localized ui config
103
- merge_hash_into( args, config.ui.dom[args.id] );
105
+ // pull in args from localized ui config
106
+ if (args.id) {
107
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
108
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
104
109
  }
105
110
 
106
111
  // stupid hack for safari (autofill bug)
@@ -118,9 +123,10 @@ window.Page = class Page {
118
123
  var value = ('value' in args) ? args.value : '';
119
124
  delete args.value;
120
125
 
121
- if (args.id && config.ui.dom[args.id]) {
122
- // pull in args from localized ui config
123
- merge_hash_into( args, config.ui.dom[args.id] );
126
+ // pull in args from localized ui config
127
+ if (args.id) {
128
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
129
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
124
130
  }
125
131
 
126
132
  return '<textarea ' + compose_attribs(args) + '>' + encode_entities(value) + '</textarea>';
@@ -130,9 +136,10 @@ window.Page = class Page {
130
136
  // render checkbox for form
131
137
  var html = '';
132
138
 
133
- if (args.id && config.ui.dom[args.id]) {
134
- // pull in args from localized ui config
135
- merge_hash_into( args, config.ui.dom[args.id] );
139
+ // pull in args from localized ui config
140
+ if (args.id) {
141
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
142
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
136
143
  }
137
144
 
138
145
  var label = args.label || '';
@@ -165,9 +172,10 @@ window.Page = class Page {
165
172
  var html = '';
166
173
  html += '<div class="select_chevron mdi mdi-chevron-down" style="top:7px;"></div>';
167
174
 
168
- if (args.id && config.ui.dom[args.id]) {
169
- // pull in args from localized ui config
170
- merge_hash_into( args, config.ui.dom[args.id] );
175
+ // pull in args from localized ui config
176
+ if (args.id) {
177
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
178
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
171
179
  }
172
180
 
173
181
  var opts = args.options;
@@ -197,9 +205,10 @@ window.Page = class Page {
197
205
  var html = '';
198
206
  var opt_values = [];
199
207
 
200
- if (args.id && config.ui.dom[args.id]) {
201
- // pull in args from localized ui config
202
- merge_hash_into( args, config.ui.dom[args.id] );
208
+ // pull in args from localized ui config
209
+ if (args.id) {
210
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
211
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
203
212
  }
204
213
 
205
214
  var opts = deep_copy_object(args.options);
@@ -269,9 +278,10 @@ window.Page = class Page {
269
278
  // render single-select menu for form
270
279
  var html = '';
271
280
 
272
- if (args.id && config.ui.dom[args.id]) {
273
- // pull in args from localized ui config
274
- merge_hash_into( args, config.ui.dom[args.id] );
281
+ // pull in args from localized ui config
282
+ if (args.id) {
283
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
284
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
275
285
  }
276
286
 
277
287
  var opts = deep_copy_object(args.options);
@@ -299,9 +309,10 @@ window.Page = class Page {
299
309
 
300
310
  getFormFieldset(args) {
301
311
  // get fieldset for form
302
- if (args.id && config.ui.dom[args.id]) {
303
- // pull in args from localized ui config
304
- merge_hash_into( args, config.ui.dom[args.id] );
312
+ // pull in args from localized ui config
313
+ if (args.id) {
314
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
315
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
305
316
  }
306
317
 
307
318
  var legend = ('legend' in args) ? args.legend : '';
@@ -317,9 +328,10 @@ window.Page = class Page {
317
328
  // get info group pair for fieldset in form
318
329
  var html = '';
319
330
 
320
- if (args.id && config.ui.dom[args.id]) {
321
- // pull in args from localized ui config
322
- merge_hash_into( args, config.ui.dom[args.id] );
331
+ // pull in args from localized ui config
332
+ if (args.id) {
333
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
334
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
323
335
  }
324
336
 
325
337
  if ('label' in args) html += '<div class="info_label">' + args.label + '</div>';
@@ -331,9 +343,10 @@ window.Page = class Page {
331
343
  // render file field for form
332
344
  if (!args.type) args.type = 'file';
333
345
 
334
- if (args.id && config.ui.dom[args.id]) {
335
- // pull in args from localized ui config
336
- merge_hash_into( args, config.ui.dom[args.id] );
346
+ // pull in args from localized ui config
347
+ if (args.id) {
348
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
349
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
337
350
  }
338
351
 
339
352
  return '<input ' + compose_attribs(args) + '/>';
@@ -348,9 +361,10 @@ window.Page = class Page {
348
361
  }
349
362
  if (!args.type) args.type = 'hidden';
350
363
 
351
- if (args.id && config.ui.dom[args.id]) {
352
- // pull in args from localized ui config
353
- merge_hash_into( args, config.ui.dom[args.id] );
364
+ // pull in args from localized ui config
365
+ if (args.id) {
366
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
367
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
354
368
  }
355
369
 
356
370
  return '<input ' + compose_attribs(args) + '/><div class="form_date"></div>';
@@ -364,9 +378,10 @@ window.Page = class Page {
364
378
  var unit = 'seconds';
365
379
  var html = '';
366
380
 
367
- if (args.id && config.ui.dom[args.id]) {
368
- // pull in args from localized ui config
369
- merge_hash_into( args, config.ui.dom[args.id] );
381
+ // pull in args from localized ui config
382
+ if (args.id) {
383
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
384
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
370
385
  }
371
386
 
372
387
  var units = [
@@ -408,9 +423,10 @@ window.Page = class Page {
408
423
  var unit = 'b';
409
424
  var html = '';
410
425
 
411
- if (args.id && config.ui.dom[args.id]) {
412
- // pull in args from localized ui config
413
- merge_hash_into( args, config.ui.dom[args.id] );
426
+ // pull in args from localized ui config
427
+ if (args.id) {
428
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
429
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
414
430
  }
415
431
 
416
432
  var units = [
@@ -454,12 +470,14 @@ window.Page = class Page {
454
470
  if (!args.value) args.value = 0;
455
471
  var html = '';
456
472
 
457
- if (args.id && config.ui.dom[args.id]) {
458
- // pull in args from localized ui config
459
- merge_hash_into( args, config.ui.dom[args.id] );
473
+ // pull in args from localized ui config
474
+ if (args.id) {
475
+ if (config.ui.dom[args.id]) merge_hash_into( args, config.ui.dom[args.id] );
476
+ else if (config.ui.pages[this.ID] && config.ui.pages[this.ID][args.id]) merge_hash_into( args, config.ui.pages[this.ID][args.id] );
460
477
  }
461
478
 
462
- args.onInput = `$P().updateFormRange(this)`;
479
+ if (args.onInput) args.onInput += ';'; else args.onInput = '';
480
+ args.onInput += `$P().updateFormRange(this)`;
463
481
 
464
482
  html += '<div class="form_row_range">';
465
483
  html += '<div>' + this.getFormText( merge_objects(args, { type: 'range' }) ) + '</div>';
@@ -1084,7 +1102,7 @@ window.Page = class Page {
1084
1102
  }
1085
1103
  else {
1086
1104
  Debug.trace("User cookie is invalid, redirecting to login page");
1087
- self.setPref('username', '');
1105
+ app.setPref('username', '');
1088
1106
  setTimeout( function() { Nav.go('Login'); }, 1 );
1089
1107
  }
1090
1108
  } );
package/js/popover.js CHANGED
@@ -16,6 +16,8 @@ var Popover = {
16
16
  });
17
17
  if (!shrinkwrap) $box.css('width', '' + Math.floor( rect.width ) + 'px');
18
18
 
19
+ if ($elem.data('popover-z-index')) $box.css('z-index', $elem.data('popover-z-index'));
20
+
19
21
  $('body').append( $box );
20
22
 
21
23
  this.$box = $box;
@@ -59,9 +61,11 @@ var Popover = {
59
61
 
60
62
  var $overlay = $('<div id="popoverlay"></div>').css('opacity', 0);
61
63
  $('body').append($overlay);
62
- $overlay.fadeTo( 500, 0.5 ).click(function() {
63
- Popover.detach();
64
- });
64
+ $overlay.click( function() { Popover.detach(); } );
65
+
66
+ if (!$elem.data('popover-hide-overlay')) {
67
+ $overlay.fadeTo( 500, 0.5 );
68
+ }
65
69
 
66
70
  if (!Dialog.active) unscroll();
67
71
  }, 1 );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixl-xyapp",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "A theme for xyOps.",
5
5
  "author": "Joseph Huckaby <jhuckaby@pixlcore.com>",
6
6
  "homepage": "https://github.com/pixlcore/pixl-xyapp",