@yuneta/gobj-ui 2.6.0 → 3.0.0
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/README.md +6 -4
- package/dist/gobj-ui.cjs.js +13034 -15452
- package/dist/gobj-ui.es.js +13036 -15441
- package/index.js +0 -8
- package/package.json +1 -1
- package/src/c_yui_form.css +9 -0
- package/src/c_yui_form.js +1 -0
- package/src/c_yui_shell.css +87 -0
- package/src/c_yui_treedb_topic_with_form.css +53 -0
- package/src/c_yui_treedb_topic_with_form.js +1 -0
- package/src/c_yui_window.css +22 -0
- package/src/c_yui_window.js +2 -0
- package/src/shell_modals.js +54 -22
- package/src/tabulator.css +178 -0
- package/src/yui_toolbar.css +28 -0
- package/src/c_yui_main.css +0 -501
- package/src/c_yui_main.js +0 -1623
- package/src/c_yui_routing.css +0 -18
- package/src/c_yui_routing.js +0 -837
- package/src/c_yui_tabs.js +0 -487
- package/src/themes.js +0 -215
- package/src/ytable.css +0 -63
- package/src/ytable.js +0 -505
package/index.js
CHANGED
|
@@ -14,14 +14,11 @@
|
|
|
14
14
|
/*
|
|
15
15
|
* Components
|
|
16
16
|
*/
|
|
17
|
-
export { register_c_yui_main, display_volatil_modal, display_info_message, display_warning_message, display_error_message, get_yesnocancel, get_yesno, get_ok } from "./src/c_yui_main.js";
|
|
18
17
|
export { register_c_yui_window } from "./src/c_yui_window.js";
|
|
19
18
|
export { register_c_yui_window_manager } from "./src/c_yui_window_manager.js";
|
|
20
|
-
export { register_c_yui_tabs } from "./src/c_yui_tabs.js";
|
|
21
19
|
export { register_c_yui_pager } from "./src/c_yui_pager.js";
|
|
22
20
|
export { register_c_yui_wizard } from "./src/c_yui_wizard.js";
|
|
23
21
|
export { register_c_yui_form } from "./src/c_yui_form.js";
|
|
24
|
-
export { register_c_yui_routing } from "./src/c_yui_routing.js";
|
|
25
22
|
export { register_c_yui_map } from "./src/c_yui_map.js";
|
|
26
23
|
export { register_c_yui_uplot } from "./src/c_yui_uplot.js";
|
|
27
24
|
export { register_c_yui_json_graph } from "./src/c_yui_json_graph.js";
|
|
@@ -70,8 +67,6 @@ export { register_c_g6_nodes_tree } from "./src/c_g6_nodes_tree.js";
|
|
|
70
67
|
export { addClasses, removeClasses, toggleClasses, removeChildElements, disableElements, enableElements, set_submit_state, set_cancel_state, set_active_state, getStrokeColor } from "./src/lib_graph.js";
|
|
71
68
|
export { inject_svg_icons } from "./src/lib_icons.js";
|
|
72
69
|
export { EditControl, MarkerControl } from "./src/lib_maplibre.js";
|
|
73
|
-
export { themes } from "./src/themes.js";
|
|
74
|
-
export { YTable, createYTable } from "./src/ytable.js";
|
|
75
70
|
export { yui_toolbar } from "./src/yui_toolbar.js";
|
|
76
71
|
export { attach_clear } from "./src/yui_inputs.js";
|
|
77
72
|
export { info_traffic, setup_dev, build_dev_panel, apply_dev_traces, dev_window_was_open } from "./src/yui_dev.js";
|
|
@@ -79,11 +74,8 @@ export { info_traffic, setup_dev, build_dev_panel, apply_dev_traces, dev_window_
|
|
|
79
74
|
/*
|
|
80
75
|
* CSS - import these in your main entry point
|
|
81
76
|
* Example:
|
|
82
|
-
* import "gobj-ui/src/c_yui_main.css";
|
|
83
77
|
* import "gobj-ui/src/c_yui_shell.css"; // declarative shell
|
|
84
78
|
* import "gobj-ui/src/c_yui_map.css";
|
|
85
|
-
* import "gobj-ui/src/c_yui_routing.css";
|
|
86
|
-
* import "gobj-ui/src/ytable.css";
|
|
87
79
|
* import "gobj-ui/src/yui_toolbar.css";
|
|
88
80
|
* import "gobj-ui/src/lib_graph.css";
|
|
89
81
|
* import "gobj-ui/src/yui_icons.css";
|
package/package.json
CHANGED
package/src/c_yui_form.css
CHANGED
|
@@ -48,3 +48,12 @@
|
|
|
48
48
|
border-color: var(--bulma-border, #dbdbdb);
|
|
49
49
|
cursor: default;
|
|
50
50
|
}
|
|
51
|
+
|
|
52
|
+
/* Moved from c_yui_main.css (2.6.1): scroll containment for the fields area.
|
|
53
|
+
* Self-contained here so every consumer gets it without the
|
|
54
|
+
* legacy stack's stylesheet. */
|
|
55
|
+
|
|
56
|
+
.overscroll-contain {
|
|
57
|
+
overscroll-behavior: contain;
|
|
58
|
+
}
|
|
59
|
+
|
package/src/c_yui_form.js
CHANGED
|
@@ -56,6 +56,7 @@ import TomSelect from "tom-select"; // Import Tom-Select JS
|
|
|
56
56
|
import { createJSONEditor } from 'vanilla-jsoneditor';
|
|
57
57
|
import "vanilla-jsoneditor/themes/jse-theme-dark.css";
|
|
58
58
|
import "./c_yui_form.css";
|
|
59
|
+
import "./tabulator.css";
|
|
59
60
|
|
|
60
61
|
import "tabulator-tables/dist/css/tabulator.min.css"; // Import Tabulator CSS
|
|
61
62
|
import "tabulator-tables/dist/css/tabulator_bulma.css";
|
package/src/c_yui_shell.css
CHANGED
|
@@ -643,3 +643,90 @@
|
|
|
643
643
|
display: none;
|
|
644
644
|
}
|
|
645
645
|
}
|
|
646
|
+
|
|
647
|
+
/* Moved from c_yui_main.css (2.6.1): mobile Bulma columns edge-to-edge.
|
|
648
|
+
* Self-contained here so every consumer gets it without the
|
|
649
|
+
* legacy stack's stylesheet. */
|
|
650
|
+
|
|
651
|
+
@media screen and (max-width: 768px) {
|
|
652
|
+
.column {
|
|
653
|
+
padding: 0 !important;
|
|
654
|
+
margin-bottom: 16px !important;
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
|
|
659
|
+
/*============================================================
|
|
660
|
+
* Shell confirm dialogs (yui_shell_confirm_*):
|
|
661
|
+
* icon-centric layout ported from the legacy volatil
|
|
662
|
+
* modals (2.5.0 redesign; c_yui_main.js removed in 3.0.0).
|
|
663
|
+
* A narrow rounded card with a tinted round icon of the
|
|
664
|
+
* type; everything maps to Bulma vars so one rule set
|
|
665
|
+
* follows light and dark.
|
|
666
|
+
*============================================================*/
|
|
667
|
+
.modal.yui-confirm .modal-background {
|
|
668
|
+
background-color: color-mix(in srgb, var(--bulma-scheme-invert, #000) 45%, transparent);
|
|
669
|
+
}
|
|
670
|
+
.modal.yui-confirm .modal-card {
|
|
671
|
+
position: relative;
|
|
672
|
+
width: min(26rem, calc(100vw - 2rem));
|
|
673
|
+
border-radius: 0.75rem;
|
|
674
|
+
background: var(--bulma-scheme-main, #fff);
|
|
675
|
+
box-shadow: 0 12px 40px color-mix(in srgb, var(--bulma-scheme-invert, #000) 30%, transparent);
|
|
676
|
+
padding: 1.5rem 1.5rem 1.25rem;
|
|
677
|
+
}
|
|
678
|
+
.modal.yui-confirm .modal-card-body {
|
|
679
|
+
background: transparent;
|
|
680
|
+
padding: 0;
|
|
681
|
+
}
|
|
682
|
+
.modal.yui-confirm .modal-card-foot {
|
|
683
|
+
background: transparent;
|
|
684
|
+
border-top: none;
|
|
685
|
+
padding: 1rem 0 0;
|
|
686
|
+
justify-content: center;
|
|
687
|
+
}
|
|
688
|
+
.yui-confirm-icon {
|
|
689
|
+
width: 3.25rem;
|
|
690
|
+
height: 3.25rem;
|
|
691
|
+
border-radius: 9999px;
|
|
692
|
+
display: flex;
|
|
693
|
+
align-items: center;
|
|
694
|
+
justify-content: center;
|
|
695
|
+
margin: 0 auto 0.75rem;
|
|
696
|
+
font-size: 1.5rem;
|
|
697
|
+
background: color-mix(in srgb, var(--yui-confirm-base, var(--bulma-info, #3e8ed0)) 15%, transparent);
|
|
698
|
+
color: var(--yui-confirm-ink, var(--bulma-info, #3e8ed0));
|
|
699
|
+
}
|
|
700
|
+
.modal.yui-confirm.is-info,
|
|
701
|
+
.modal.yui-confirm.is-question {
|
|
702
|
+
--yui-confirm-base: var(--bulma-info, #3e8ed0);
|
|
703
|
+
--yui-confirm-ink: var(--bulma-info-on-scheme, #3e8ed0);
|
|
704
|
+
}
|
|
705
|
+
.modal.yui-confirm.is-success {
|
|
706
|
+
--yui-confirm-base: var(--bulma-success, #48c78e);
|
|
707
|
+
--yui-confirm-ink: var(--bulma-success-on-scheme, #257953);
|
|
708
|
+
}
|
|
709
|
+
.modal.yui-confirm.is-warning {
|
|
710
|
+
--yui-confirm-base: var(--bulma-warning, #ffe08a);
|
|
711
|
+
--yui-confirm-ink: var(--bulma-warning-on-scheme, #946c00);
|
|
712
|
+
}
|
|
713
|
+
.modal.yui-confirm.is-error {
|
|
714
|
+
--yui-confirm-base: var(--bulma-danger, #f14668);
|
|
715
|
+
--yui-confirm-ink: var(--bulma-danger-on-scheme, #cc0f35);
|
|
716
|
+
}
|
|
717
|
+
.yui-confirm-title {
|
|
718
|
+
font-size: 1.15rem;
|
|
719
|
+
font-weight: 600;
|
|
720
|
+
text-transform: capitalize;
|
|
721
|
+
margin-bottom: 0.25rem;
|
|
722
|
+
color: var(--bulma-text-strong, inherit);
|
|
723
|
+
}
|
|
724
|
+
.yui-confirm-x {
|
|
725
|
+
position: absolute;
|
|
726
|
+
top: 0.75rem;
|
|
727
|
+
right: 0.75rem;
|
|
728
|
+
}
|
|
729
|
+
.yui-confirm-msg {
|
|
730
|
+
font-size: 1.05rem;
|
|
731
|
+
color: var(--bulma-text, inherit);
|
|
732
|
+
}
|
|
@@ -45,3 +45,56 @@
|
|
|
45
45
|
.toolbar_tabulator_table .control.has-icons-left {
|
|
46
46
|
min-width: 0;
|
|
47
47
|
}
|
|
48
|
+
|
|
49
|
+
/* Moved from c_yui_main.css (2.6.1): the responsive edit-dialog card
|
|
50
|
+
* and the utilities this gclass tags on its DOM.
|
|
51
|
+
* Self-contained here so every consumer gets it without the
|
|
52
|
+
* legacy stack's stylesheet. */
|
|
53
|
+
|
|
54
|
+
/* Custom class to adjust the modal width */
|
|
55
|
+
.modal-card.modal-is-responsive {
|
|
56
|
+
width: 100%;
|
|
57
|
+
max-width: 100%;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@media screen and (min-width: 768px) {
|
|
61
|
+
.modal-card.modal-is-responsive {
|
|
62
|
+
width: 50rem;
|
|
63
|
+
max-width: 50rem;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/*
|
|
68
|
+
* Mobile (< 768px, dovetails with the desktop rule above): a
|
|
69
|
+
* `modal-is-responsive` card (the C_YUI_TREEDB edit/delete form
|
|
70
|
+
* popup, and any other consumer of this opt-in class) takes the
|
|
71
|
+
* WHOLE screen instead of a centred sheet — more room to edit on a
|
|
72
|
+
* phone. Confirm dialogs do not carry `modal-is-responsive`, so
|
|
73
|
+
* they stay compact. Edge-to-edge: full size, no margin, flat
|
|
74
|
+
* corners; the body keeps Bulma's own scroll.
|
|
75
|
+
*/
|
|
76
|
+
@media screen and (max-width: 767px) {
|
|
77
|
+
.modal-card.modal-is-responsive {
|
|
78
|
+
width: 100%;
|
|
79
|
+
max-width: 100%;
|
|
80
|
+
height: 100%;
|
|
81
|
+
max-height: 100%;
|
|
82
|
+
margin: 0;
|
|
83
|
+
border-radius: 0;
|
|
84
|
+
}
|
|
85
|
+
.modal-card.modal-is-responsive .modal-card-head,
|
|
86
|
+
.modal-card.modal-is-responsive .modal-card-foot {
|
|
87
|
+
border-radius: 0;
|
|
88
|
+
}
|
|
89
|
+
.modal-card.modal-is-responsive .modal-card-body {
|
|
90
|
+
flex: 1 1 auto;
|
|
91
|
+
overflow-y: auto;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.without-border {
|
|
96
|
+
border: none !important;
|
|
97
|
+
box-shadow: none !important;
|
|
98
|
+
background: transparent !important;
|
|
99
|
+
}
|
|
100
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/***********************************************************************
|
|
2
|
+
* c_yui_window.css
|
|
3
|
+
*
|
|
4
|
+
* Styles C_YUI_WINDOW tags on its chrome. Moved from
|
|
5
|
+
* c_yui_main.css (2.6.1) so windows are self-contained and no
|
|
6
|
+
* longer depend on the legacy stack's stylesheet.
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 2026, ArtGins.
|
|
9
|
+
* All Rights Reserved.
|
|
10
|
+
***********************************************************************/
|
|
11
|
+
|
|
12
|
+
.strong-shadow {
|
|
13
|
+
box-shadow:
|
|
14
|
+
0 1em 2em -0.125em hsla(var(--bulma-shadow-h), var(--bulma-shadow-s), var(--bulma-shadow-l), 0.3),
|
|
15
|
+
0 0 0 2px hsla(var(--bulma-shadow-h), var(--bulma-shadow-s), var(--bulma-shadow-l), 0.1) !important;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.without-border {
|
|
19
|
+
border: none !important;
|
|
20
|
+
box-shadow: none !important;
|
|
21
|
+
background: transparent !important;
|
|
22
|
+
}
|
package/src/c_yui_window.js
CHANGED
|
@@ -47,6 +47,8 @@ import {t} from "i18next";
|
|
|
47
47
|
import {yui_shell_confirm_yesnocancel} from "./shell_modals.js";
|
|
48
48
|
import {yui_shell_of} from "./c_yui_shell.js";
|
|
49
49
|
|
|
50
|
+
import "./c_yui_window.css";
|
|
51
|
+
|
|
50
52
|
/***************************************************************
|
|
51
53
|
* Constants
|
|
52
54
|
***************************************************************/
|
package/src/shell_modals.js
CHANGED
|
@@ -321,13 +321,28 @@ export function yui_shell_show_modal(shell, content, opts)
|
|
|
321
321
|
|
|
322
322
|
|
|
323
323
|
/***************************************************************
|
|
324
|
-
* Blocking dialogs (
|
|
324
|
+
* Blocking dialogs (icon-centric .modal-card)
|
|
325
325
|
*
|
|
326
326
|
* build_dialog returns a Promise that resolves with the
|
|
327
327
|
* clicked button's `value`. Escape, the close button and
|
|
328
328
|
* the dismiss action all resolve with the LAST button's value
|
|
329
329
|
* (cancel/no/ok by convention — the safe-default action).
|
|
330
|
+
*
|
|
331
|
+
* Layout ported from the legacy volatil modals (2.5.0
|
|
332
|
+
* redesign, removed in 3.0.0): a narrow rounded card with a
|
|
333
|
+
* tinted round icon of the `opts.type`
|
|
334
|
+
* (question/success/info/warning/error, `danger` aliases
|
|
335
|
+
* error), optional capitalized title, centered message and
|
|
336
|
+
* buttons. Everything maps to Bulma vars (light and dark).
|
|
330
337
|
***************************************************************/
|
|
338
|
+
const CONFIRM_TYPE_ICONS = {
|
|
339
|
+
"info": "yi-circle-info",
|
|
340
|
+
"question": "yi-question",
|
|
341
|
+
"success": "yi-square-check",
|
|
342
|
+
"warning": "yi-triangle-exclamation",
|
|
343
|
+
"error": "yi-circle-exclamation",
|
|
344
|
+
};
|
|
345
|
+
|
|
331
346
|
function build_dialog(shell, message, buttons, opts)
|
|
332
347
|
{
|
|
333
348
|
let $layer = modal_layer(shell);
|
|
@@ -339,16 +354,18 @@ function build_dialog(shell, message, buttons, opts)
|
|
|
339
354
|
let title = (opts && opts.title) || "";
|
|
340
355
|
let dismiss_value = buttons[buttons.length - 1].value;
|
|
341
356
|
|
|
357
|
+
let type = ((opts && opts.type) || "question").toLowerCase();
|
|
358
|
+
if(type === "danger") {
|
|
359
|
+
type = "error";
|
|
360
|
+
}
|
|
361
|
+
let icon = CONFIRM_TYPE_ICONS[type] || CONFIRM_TYPE_ICONS["question"];
|
|
362
|
+
|
|
342
363
|
let $body_children = (typeof message === "string")
|
|
343
|
-
? [["p", {i18n: message}, message]]
|
|
364
|
+
? [["p", {class: "yui-confirm-msg", i18n: message}, message]]
|
|
344
365
|
: [message];
|
|
345
366
|
|
|
346
|
-
let title_attrs = !empty_string(title)
|
|
347
|
-
? {class: "modal-card-title", i18n: title}
|
|
348
|
-
: {class: "modal-card-title"};
|
|
349
|
-
|
|
350
367
|
let $footer_children = buttons.map(b => {
|
|
351
|
-
let cls = "button";
|
|
368
|
+
let cls = "button px-5";
|
|
352
369
|
if(b.kind === "primary") {
|
|
353
370
|
cls += " is-link";
|
|
354
371
|
} else if(b.kind === "danger") {
|
|
@@ -362,24 +379,30 @@ function build_dialog(shell, message, buttons, opts)
|
|
|
362
379
|
return ["button", btn_attrs, b.label];
|
|
363
380
|
});
|
|
364
381
|
|
|
382
|
+
let $card_children = [
|
|
383
|
+
["div", {class: "yui-confirm-icon"},
|
|
384
|
+
[["i", {class: icon, "aria-hidden": "true"}]]
|
|
385
|
+
]
|
|
386
|
+
];
|
|
387
|
+
if(!empty_string(title)) {
|
|
388
|
+
$card_children.push(
|
|
389
|
+
["p", {class: "yui-confirm-title has-text-centered",
|
|
390
|
+
i18n: title}, title]
|
|
391
|
+
);
|
|
392
|
+
}
|
|
393
|
+
$card_children.push(
|
|
394
|
+
["button", {class: "delete yui-confirm-x", "aria-label": "close"}],
|
|
395
|
+
["section", {class: "modal-card-body has-text-centered"},
|
|
396
|
+
$body_children],
|
|
397
|
+
["footer", {class: "modal-card-foot"}, $footer_children]
|
|
398
|
+
);
|
|
399
|
+
|
|
365
400
|
let $modal = createElement2(
|
|
366
|
-
["div", {class:
|
|
401
|
+
["div", {class: `modal yui-modal yui-confirm is-active is-${type}`,
|
|
367
402
|
role: "dialog", "aria-modal": "true"},
|
|
368
403
|
[
|
|
369
404
|
["div", {class: "modal-background"}],
|
|
370
|
-
["div", {class: "modal-card"},
|
|
371
|
-
[
|
|
372
|
-
["header", {class: "modal-card-head"},
|
|
373
|
-
[
|
|
374
|
-
["p", title_attrs, title],
|
|
375
|
-
["button", {class: "delete",
|
|
376
|
-
"aria-label": "close"}]
|
|
377
|
-
]
|
|
378
|
-
],
|
|
379
|
-
["section", {class: "modal-card-body"}, $body_children],
|
|
380
|
-
["footer", {class: "modal-card-foot"}, $footer_children]
|
|
381
|
-
]
|
|
382
|
-
]
|
|
405
|
+
["div", {class: "modal-card"}, $card_children]
|
|
383
406
|
]
|
|
384
407
|
]
|
|
385
408
|
);
|
|
@@ -419,7 +442,7 @@ function build_dialog(shell, message, buttons, opts)
|
|
|
419
442
|
$modal.querySelector(".modal-background").addEventListener(
|
|
420
443
|
"click", () => close(dismiss_value)
|
|
421
444
|
);
|
|
422
|
-
$modal.querySelector(".modal-card
|
|
445
|
+
$modal.querySelector(".modal-card .delete").addEventListener(
|
|
423
446
|
"click", () => close(dismiss_value)
|
|
424
447
|
);
|
|
425
448
|
let footer_buttons = $modal.querySelectorAll(
|
|
@@ -430,6 +453,12 @@ function build_dialog(shell, message, buttons, opts)
|
|
|
430
453
|
close($btn.getAttribute("data-modal-button-value"));
|
|
431
454
|
});
|
|
432
455
|
});
|
|
456
|
+
|
|
457
|
+
/* Enter answers the primary action, like the volatil modals. */
|
|
458
|
+
let $primary = $modal.querySelector(".modal-card-foot button");
|
|
459
|
+
if($primary) {
|
|
460
|
+
$primary.focus();
|
|
461
|
+
}
|
|
433
462
|
});
|
|
434
463
|
}
|
|
435
464
|
|
|
@@ -437,6 +466,9 @@ function build_dialog(shell, message, buttons, opts)
|
|
|
437
466
|
export function yui_shell_confirm_ok(shell, message, opts)
|
|
438
467
|
{
|
|
439
468
|
let label = (opts && opts.ok_label) || "OK";
|
|
469
|
+
if(!opts || !opts.type) {
|
|
470
|
+
opts = Object.assign({}, opts, {type: "success"});
|
|
471
|
+
}
|
|
440
472
|
return build_dialog(shell, message, [
|
|
441
473
|
{label: label, value: "ok", kind: "primary"}
|
|
442
474
|
], opts).then(() => undefined);
|
package/src/tabulator.css
CHANGED
|
@@ -51,3 +51,181 @@
|
|
|
51
51
|
[data-theme=dark] .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
|
|
52
52
|
background: #ffffff !important;
|
|
53
53
|
}
|
|
54
|
+
|
|
55
|
+
/* Moved from c_yui_main.css (2.6.1): generic Tabulator theming
|
|
56
|
+
* (column separator, frozen columns, striping/hover, dark + system themes).
|
|
57
|
+
* Self-contained here so every consumer gets it without the
|
|
58
|
+
* legacy stack's stylesheet. */
|
|
59
|
+
|
|
60
|
+
/*********************************************************
|
|
61
|
+
* Tabulator
|
|
62
|
+
*********************************************************/
|
|
63
|
+
|
|
64
|
+
/* Visible column separator via pseudo-element on the right-side resize handle only.
|
|
65
|
+
.prev handles (left-side) are excluded so hidden columns (e.g. Select Row when
|
|
66
|
+
not in edit mode) don't leave a spurious line at the start of the table. */
|
|
67
|
+
.tabulator .tabulator-col-resize-handle:not(.prev)::after {
|
|
68
|
+
content: "";
|
|
69
|
+
position: absolute;
|
|
70
|
+
top: 0;
|
|
71
|
+
bottom: 0;
|
|
72
|
+
left: 50%;
|
|
73
|
+
width: 1px;
|
|
74
|
+
background-color: var(--bulma-border);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.tabulator-row .tabulator-cell.tabulator-frozen {
|
|
78
|
+
background-color: var(--bulma-background) !important;
|
|
79
|
+
}
|
|
80
|
+
.tabulator .tabulator-header .tabulator-frozen {
|
|
81
|
+
background-color: var(--bulma-background) !important;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/*
|
|
85
|
+
* Tabulator light theme — alternating row backgrounds
|
|
86
|
+
* scheme-main-ter (#f5f5f5) gives visible contrast against white odd rows.
|
|
87
|
+
* !important needed to override the tabulator_bulma.css theme.
|
|
88
|
+
*/
|
|
89
|
+
.tabulator .tabulator-row,
|
|
90
|
+
.tabulator .tabulator-row.tabulator-row-odd {
|
|
91
|
+
background-color: var(--bulma-scheme-main, #fff) !important;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.tabulator .tabulator-row.tabulator-row-even {
|
|
95
|
+
background-color: var(--bulma-scheme-main-ter, #f5f5f5) !important;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.tabulator .tabulator-row.tabulator-selectable:hover {
|
|
99
|
+
background-color: var(--bulma-background, #ebebeb) !important;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/*
|
|
103
|
+
* Tabulator dark theme
|
|
104
|
+
* Activated by html[data-theme=dark] (set by the app's theme switcher)
|
|
105
|
+
*/
|
|
106
|
+
[data-theme=dark] .tabulator {
|
|
107
|
+
background-color: var(--bulma-body-background-color);
|
|
108
|
+
border-color: var(--bulma-border);
|
|
109
|
+
color: var(--bulma-body-color);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
[data-theme=dark] .tabulator .tabulator-header,
|
|
113
|
+
[data-theme=dark] .tabulator .tabulator-header .tabulator-col {
|
|
114
|
+
background-color: var(--bulma-background);
|
|
115
|
+
border-color: var(--bulma-border);
|
|
116
|
+
color: var(--bulma-text);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
[data-theme=dark] .tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
|
|
120
|
+
background-color: var(--bulma-background-bis, var(--bulma-background));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
[data-theme=dark] .tabulator-row,
|
|
124
|
+
[data-theme=dark] .tabulator-row.tabulator-row-odd {
|
|
125
|
+
background-color: var(--bulma-body-background-color) !important;
|
|
126
|
+
color: var(--bulma-body-color);
|
|
127
|
+
border-color: var(--bulma-border);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
[data-theme=dark] .tabulator-row.tabulator-row-even {
|
|
131
|
+
background-color: var(--bulma-background) !important;
|
|
132
|
+
color: var(--bulma-body-color);
|
|
133
|
+
border-color: var(--bulma-border);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
[data-theme=dark] .tabulator-row .tabulator-cell {
|
|
137
|
+
border-color: var(--bulma-border);
|
|
138
|
+
color: var(--bulma-body-color);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
[data-theme=dark] .tabulator-row.tabulator-selectable:hover {
|
|
142
|
+
background-color: var(--bulma-background) !important;
|
|
143
|
+
color: var(--bulma-text) !important;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
[data-theme=dark] .tabulator-row.tabulator-selected {
|
|
147
|
+
background-color: var(--bulma-link) !important;
|
|
148
|
+
color: var(--bulma-link-invert) !important;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
[data-theme=dark] .tabulator-row.tabulator-selected .tabulator-cell {
|
|
152
|
+
color: var(--bulma-link-invert) !important;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
[data-theme=dark] .tabulator .tabulator-footer {
|
|
156
|
+
background-color: var(--bulma-background);
|
|
157
|
+
border-color: var(--bulma-border);
|
|
158
|
+
color: var(--bulma-text);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
[data-theme=dark] .tabulator .tabulator-footer .tabulator-page {
|
|
162
|
+
background-color: transparent;
|
|
163
|
+
color: var(--bulma-text);
|
|
164
|
+
border-color: var(--bulma-border);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
[data-theme=dark] .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
|
|
168
|
+
background-color: var(--bulma-background);
|
|
169
|
+
color: var(--bulma-text);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
[data-theme=dark] .tabulator .tabulator-footer .tabulator-page.active {
|
|
173
|
+
background-color: var(--bulma-link);
|
|
174
|
+
color: var(--bulma-link-invert);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
[data-theme=dark] .tabulator-row .tabulator-cell.tabulator-frozen {
|
|
178
|
+
background-color: var(--bulma-background) !important;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/* system theme: follow OS preference */
|
|
182
|
+
@media (prefers-color-scheme: dark) {
|
|
183
|
+
[data-theme=system] .tabulator {
|
|
184
|
+
background-color: var(--bulma-body-background-color);
|
|
185
|
+
border-color: var(--bulma-border);
|
|
186
|
+
color: var(--bulma-body-color);
|
|
187
|
+
}
|
|
188
|
+
[data-theme=system] .tabulator .tabulator-header,
|
|
189
|
+
[data-theme=system] .tabulator .tabulator-header .tabulator-col {
|
|
190
|
+
background-color: var(--bulma-background);
|
|
191
|
+
border-color: var(--bulma-border);
|
|
192
|
+
color: var(--bulma-text);
|
|
193
|
+
}
|
|
194
|
+
[data-theme=system] .tabulator-row,
|
|
195
|
+
[data-theme=system] .tabulator-row.tabulator-row-odd {
|
|
196
|
+
background-color: var(--bulma-body-background-color) !important;
|
|
197
|
+
color: var(--bulma-body-color);
|
|
198
|
+
border-color: var(--bulma-border);
|
|
199
|
+
}
|
|
200
|
+
[data-theme=system] .tabulator-row.tabulator-row-even {
|
|
201
|
+
background-color: var(--bulma-background) !important;
|
|
202
|
+
color: var(--bulma-body-color);
|
|
203
|
+
border-color: var(--bulma-border);
|
|
204
|
+
}
|
|
205
|
+
[data-theme=system] .tabulator-row .tabulator-cell {
|
|
206
|
+
border-color: var(--bulma-border);
|
|
207
|
+
color: var(--bulma-body-color);
|
|
208
|
+
}
|
|
209
|
+
[data-theme=system] .tabulator-row.tabulator-selectable:hover {
|
|
210
|
+
background-color: var(--bulma-background) !important;
|
|
211
|
+
}
|
|
212
|
+
[data-theme=system] .tabulator-row.tabulator-selected {
|
|
213
|
+
background-color: var(--bulma-link) !important;
|
|
214
|
+
color: var(--bulma-link-invert) !important;
|
|
215
|
+
}
|
|
216
|
+
[data-theme=system] .tabulator .tabulator-footer {
|
|
217
|
+
background-color: var(--bulma-background);
|
|
218
|
+
border-color: var(--bulma-border);
|
|
219
|
+
color: var(--bulma-text);
|
|
220
|
+
}
|
|
221
|
+
[data-theme=system] .tabulator .tabulator-footer .tabulator-page {
|
|
222
|
+
background-color: transparent;
|
|
223
|
+
color: var(--bulma-text);
|
|
224
|
+
border-color: var(--bulma-border);
|
|
225
|
+
}
|
|
226
|
+
[data-theme=system] .tabulator .tabulator-footer .tabulator-page.active {
|
|
227
|
+
background-color: var(--bulma-link);
|
|
228
|
+
color: var(--bulma-link-invert);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
package/src/yui_toolbar.css
CHANGED
|
@@ -48,3 +48,31 @@
|
|
|
48
48
|
.yui-horizontal-toolbar-scroll-btn span {
|
|
49
49
|
width: 1.2em;
|
|
50
50
|
}
|
|
51
|
+
|
|
52
|
+
/* Moved from c_yui_main.css (2.6.1): horizontal toolbar section.
|
|
53
|
+
* Self-contained here so every consumer gets it without the
|
|
54
|
+
* legacy stack's stylesheet. */
|
|
55
|
+
|
|
56
|
+
/*********************************************************
|
|
57
|
+
* Toolbars
|
|
58
|
+
*********************************************************/
|
|
59
|
+
.yui-horizontal-toolbar-section {
|
|
60
|
+
display: flex;
|
|
61
|
+
height: auto;
|
|
62
|
+
flex-shrink: 0; /* Prevents resizing */
|
|
63
|
+
white-space: nowrap;
|
|
64
|
+
margin: 0 2px; /* Space between sections */
|
|
65
|
+
justify-content: space-between;
|
|
66
|
+
align-items: center;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
a.flex-horizontal-section { /* To make flex any <a> */
|
|
70
|
+
display: flex;
|
|
71
|
+
flex-shrink: 0; /* Prevents resizing */
|
|
72
|
+
white-space: nowrap;
|
|
73
|
+
margin: 0 2px; /* Space between sections */
|
|
74
|
+
justify-content: space-between;
|
|
75
|
+
align-items: center;
|
|
76
|
+
padding-inline-end: 2rem;
|
|
77
|
+
}
|
|
78
|
+
|