mithril-materialized 2.0.0-beta.11 → 2.0.0-beta.12
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 +23 -1
- package/dist/components.css +595 -0
- package/dist/icon.d.ts +2 -2
- package/dist/index.css +281 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +440 -155
- package/dist/index.js +441 -154
- package/dist/index.min.css +1 -1
- package/dist/index.umd.js +441 -154
- package/dist/material-icon.d.ts +3 -0
- package/dist/treeview.d.ts +39 -0
- package/package.json +2 -2
- package/sass/components/_treeview.scss +353 -0
- package/sass/materialize.scss +1 -0
package/README.md
CHANGED
|
@@ -85,6 +85,7 @@ Your CSS imports can remain the same, but you no longer need the materialize-css
|
|
|
85
85
|
- Parallax
|
|
86
86
|
- Data & Tables
|
|
87
87
|
- DataTable (sorting, filtering, pagination, selection)
|
|
88
|
+
- TreeView (hierarchical data with expand/collapse, selection, and customizable icons)
|
|
88
89
|
- Additional
|
|
89
90
|
- Label
|
|
90
91
|
- HelperText
|
|
@@ -118,6 +119,7 @@ Your CSS imports can remain the same, but you no longer need the materialize-css
|
|
|
118
119
|
Button,
|
|
119
120
|
DatePicker,
|
|
120
121
|
DataTable,
|
|
122
|
+
TreeView,
|
|
121
123
|
ThemeToggle,
|
|
122
124
|
FileUpload,
|
|
123
125
|
Sidenav,
|
|
@@ -158,6 +160,25 @@ Your CSS imports can remain the same, but you no longer need the materialize-css
|
|
|
158
160
|
accept: 'image/*',
|
|
159
161
|
multiple: true,
|
|
160
162
|
onFilesSelected: (files) => console.log(files)
|
|
163
|
+
}),
|
|
164
|
+
|
|
165
|
+
// TreeView for hierarchical data
|
|
166
|
+
m(TreeView, {
|
|
167
|
+
data: [
|
|
168
|
+
{
|
|
169
|
+
id: 'root',
|
|
170
|
+
label: 'Project Root',
|
|
171
|
+
expanded: true,
|
|
172
|
+
children: [
|
|
173
|
+
{ id: 'src', label: 'src/' },
|
|
174
|
+
{ id: 'docs', label: 'docs/' },
|
|
175
|
+
]
|
|
176
|
+
}
|
|
177
|
+
],
|
|
178
|
+
selectionMode: 'multiple',
|
|
179
|
+
iconType: 'caret',
|
|
180
|
+
showConnectors: true,
|
|
181
|
+
onselection: (selectedIds) => console.log('Selected:', selectedIds)
|
|
161
182
|
})
|
|
162
183
|
])
|
|
163
184
|
});
|
|
@@ -190,6 +211,7 @@ See the [live documentation](https://erikvullings.github.io/mithril-materialized
|
|
|
190
211
|
**✅ Recently Completed:**
|
|
191
212
|
|
|
192
213
|
- ✅ DataTable component with sorting, filtering, and pagination
|
|
214
|
+
- ✅ TreeView component for hierarchical data with expand/collapse, selection, and VSCode-style connectors
|
|
193
215
|
- ✅ Enhanced TypeScript definitions with better JSDoc comments
|
|
194
216
|
- ✅ Performance optimizations and bundle size improvements
|
|
195
217
|
|
|
@@ -197,8 +219,8 @@ See the [live documentation](https://erikvullings.github.io/mithril-materialized
|
|
|
197
219
|
|
|
198
220
|
**Data Display:**
|
|
199
221
|
|
|
200
|
-
- TreeView component for hierarchical data
|
|
201
222
|
- Card layouts with enhanced Material Design 3.0 styling
|
|
223
|
+
- Advanced tree operations (drag & drop, context menus)
|
|
202
224
|
|
|
203
225
|
**Input & Forms:**
|
|
204
226
|
|
package/dist/components.css
CHANGED
|
@@ -2308,3 +2308,598 @@ body.keyboard-focused .dropdown-content li:focus {
|
|
|
2308
2308
|
.wizard-step-indicator[aria-current=step] {
|
|
2309
2309
|
box-shadow: 0 0 0 4px var(--mm-primary-color-light, rgba(38, 166, 154, 0.2));
|
|
2310
2310
|
}
|
|
2311
|
+
|
|
2312
|
+
.datatable-container {
|
|
2313
|
+
background: var(--mm-card-background);
|
|
2314
|
+
color: var(--mm-text-primary);
|
|
2315
|
+
border-radius: 4px;
|
|
2316
|
+
}
|
|
2317
|
+
.datatable-container .datatable-title {
|
|
2318
|
+
color: var(--mm-text-primary);
|
|
2319
|
+
font-weight: 400;
|
|
2320
|
+
margin-bottom: 1rem;
|
|
2321
|
+
}
|
|
2322
|
+
.datatable-container .datatable-global-search {
|
|
2323
|
+
padding-top: 0.5rem;
|
|
2324
|
+
}
|
|
2325
|
+
.datatable-container .datatable-wrapper {
|
|
2326
|
+
position: relative;
|
|
2327
|
+
background: var(--mm-card-background);
|
|
2328
|
+
border-radius: 4px;
|
|
2329
|
+
overflow: hidden;
|
|
2330
|
+
}
|
|
2331
|
+
.datatable-container .table-wrapper {
|
|
2332
|
+
overflow-x: auto;
|
|
2333
|
+
width: 100%;
|
|
2334
|
+
-webkit-overflow-scrolling: touch;
|
|
2335
|
+
background: var(--mm-card-background);
|
|
2336
|
+
}
|
|
2337
|
+
.datatable-container .datatable-loading {
|
|
2338
|
+
padding: 2rem;
|
|
2339
|
+
text-align: center;
|
|
2340
|
+
color: var(--mm-text-secondary);
|
|
2341
|
+
background: var(--mm-card-background);
|
|
2342
|
+
}
|
|
2343
|
+
.datatable-container .datatable-loading .preloader-wrapper {
|
|
2344
|
+
margin-bottom: 1rem;
|
|
2345
|
+
}
|
|
2346
|
+
.datatable-container .datatable-empty {
|
|
2347
|
+
padding: 3rem 2rem;
|
|
2348
|
+
text-align: center;
|
|
2349
|
+
color: var(--mm-text-secondary);
|
|
2350
|
+
font-style: italic;
|
|
2351
|
+
background: var(--mm-card-background);
|
|
2352
|
+
}
|
|
2353
|
+
|
|
2354
|
+
.datatable {
|
|
2355
|
+
background: var(--mm-card-background);
|
|
2356
|
+
color: var(--mm-text-primary);
|
|
2357
|
+
border-collapse: collapse;
|
|
2358
|
+
width: 100%;
|
|
2359
|
+
}
|
|
2360
|
+
.datatable thead {
|
|
2361
|
+
background: var(--mm-card-background);
|
|
2362
|
+
}
|
|
2363
|
+
.datatable thead th {
|
|
2364
|
+
background: var(--mm-card-background);
|
|
2365
|
+
color: var(--mm-text-primary);
|
|
2366
|
+
border-bottom: 1px solid var(--mm-border-color);
|
|
2367
|
+
font-weight: 500;
|
|
2368
|
+
padding: 12px 16px;
|
|
2369
|
+
text-align: left;
|
|
2370
|
+
}
|
|
2371
|
+
.datatable tbody {
|
|
2372
|
+
background: var(--mm-card-background);
|
|
2373
|
+
}
|
|
2374
|
+
.datatable tbody td {
|
|
2375
|
+
background: var(--mm-card-background);
|
|
2376
|
+
color: var(--mm-text-primary);
|
|
2377
|
+
border-bottom: 1px solid var(--mm-border-color);
|
|
2378
|
+
padding: 12px 16px;
|
|
2379
|
+
}
|
|
2380
|
+
.datatable thead th.sortable {
|
|
2381
|
+
cursor: pointer;
|
|
2382
|
+
user-select: none;
|
|
2383
|
+
position: relative;
|
|
2384
|
+
transition: background-color 0.2s ease;
|
|
2385
|
+
padding-right: 32px;
|
|
2386
|
+
}
|
|
2387
|
+
.datatable thead th.sortable:hover {
|
|
2388
|
+
background-color: var(--mm-dropdown-hover);
|
|
2389
|
+
}
|
|
2390
|
+
.datatable thead th.sortable .sort-indicators {
|
|
2391
|
+
position: absolute;
|
|
2392
|
+
right: 8px;
|
|
2393
|
+
top: 50%;
|
|
2394
|
+
transform: translateY(-50%);
|
|
2395
|
+
display: flex;
|
|
2396
|
+
flex-direction: column;
|
|
2397
|
+
line-height: 1;
|
|
2398
|
+
}
|
|
2399
|
+
.datatable thead th.sortable .sort-indicators .sort-icon {
|
|
2400
|
+
font-size: 16px;
|
|
2401
|
+
color: var(--mm-text-disabled);
|
|
2402
|
+
transition: color 0.2s ease;
|
|
2403
|
+
}
|
|
2404
|
+
.datatable thead th.sortable .sort-indicators .sort-icon.active {
|
|
2405
|
+
color: var(--mm-primary-color);
|
|
2406
|
+
}
|
|
2407
|
+
.datatable thead th.sortable .sort-indicators .sort-asc {
|
|
2408
|
+
margin-bottom: 0px;
|
|
2409
|
+
}
|
|
2410
|
+
.datatable thead th.sortable .sort-indicators .sort-desc {
|
|
2411
|
+
margin-top: 0px;
|
|
2412
|
+
}
|
|
2413
|
+
.datatable .align-left {
|
|
2414
|
+
text-align: left;
|
|
2415
|
+
}
|
|
2416
|
+
.datatable .align-center {
|
|
2417
|
+
text-align: center;
|
|
2418
|
+
}
|
|
2419
|
+
.datatable .align-right {
|
|
2420
|
+
text-align: right;
|
|
2421
|
+
}
|
|
2422
|
+
.datatable tbody tr {
|
|
2423
|
+
transition: background-color 0.2s ease;
|
|
2424
|
+
cursor: pointer;
|
|
2425
|
+
}
|
|
2426
|
+
.datatable tbody tr:hover {
|
|
2427
|
+
background-color: var(--mm-dropdown-hover);
|
|
2428
|
+
}
|
|
2429
|
+
.datatable tbody tr:hover td {
|
|
2430
|
+
background-color: var(--mm-dropdown-hover);
|
|
2431
|
+
}
|
|
2432
|
+
.datatable.striped tbody tr:nth-child(odd) {
|
|
2433
|
+
background-color: var(--mm-dropdown-focus);
|
|
2434
|
+
}
|
|
2435
|
+
.datatable.striped tbody tr:nth-child(odd) td {
|
|
2436
|
+
background-color: var(--mm-dropdown-focus);
|
|
2437
|
+
}
|
|
2438
|
+
.datatable.striped tbody tr:nth-child(odd):hover {
|
|
2439
|
+
background-color: var(--mm-dropdown-hover);
|
|
2440
|
+
}
|
|
2441
|
+
.datatable.striped tbody tr:nth-child(odd):hover td {
|
|
2442
|
+
background-color: var(--mm-dropdown-hover);
|
|
2443
|
+
}
|
|
2444
|
+
.datatable .selection-checkbox {
|
|
2445
|
+
width: 40px;
|
|
2446
|
+
text-align: center;
|
|
2447
|
+
padding: 0 8px !important;
|
|
2448
|
+
}
|
|
2449
|
+
.datatable .selection-checkbox label {
|
|
2450
|
+
margin: 0;
|
|
2451
|
+
height: 100%;
|
|
2452
|
+
display: flex;
|
|
2453
|
+
align-items: center;
|
|
2454
|
+
justify-content: center;
|
|
2455
|
+
}
|
|
2456
|
+
.datatable .selection-checkbox input[type=checkbox] {
|
|
2457
|
+
opacity: 1;
|
|
2458
|
+
position: relative;
|
|
2459
|
+
left: auto;
|
|
2460
|
+
top: auto;
|
|
2461
|
+
transform: none;
|
|
2462
|
+
margin-right: 0;
|
|
2463
|
+
}
|
|
2464
|
+
.datatable tbody tr.selected {
|
|
2465
|
+
background-color: var(--mm-dropdown-selected) !important;
|
|
2466
|
+
}
|
|
2467
|
+
.datatable tbody tr.selected td {
|
|
2468
|
+
background-color: var(--mm-dropdown-selected) !important;
|
|
2469
|
+
}
|
|
2470
|
+
.datatable tbody tr.selected:hover {
|
|
2471
|
+
background-color: var(--mm-dropdown-selected) !important;
|
|
2472
|
+
opacity: 0.9;
|
|
2473
|
+
}
|
|
2474
|
+
.datatable tbody tr.selected:hover td {
|
|
2475
|
+
background-color: var(--mm-dropdown-selected) !important;
|
|
2476
|
+
opacity: 0.9;
|
|
2477
|
+
}
|
|
2478
|
+
.datatable.fixed-header thead th {
|
|
2479
|
+
position: sticky;
|
|
2480
|
+
top: 0;
|
|
2481
|
+
background: var(--mm-card-background);
|
|
2482
|
+
z-index: 10;
|
|
2483
|
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
2484
|
+
}
|
|
2485
|
+
|
|
2486
|
+
.datatable-pagination {
|
|
2487
|
+
margin-top: 1rem;
|
|
2488
|
+
display: flex;
|
|
2489
|
+
justify-content: space-between;
|
|
2490
|
+
align-items: center;
|
|
2491
|
+
flex-wrap: wrap;
|
|
2492
|
+
gap: 1rem;
|
|
2493
|
+
background: var(--mm-card-background);
|
|
2494
|
+
color: var(--mm-text-primary);
|
|
2495
|
+
padding: 1rem;
|
|
2496
|
+
border-top: 1px solid var(--mm-border-color);
|
|
2497
|
+
}
|
|
2498
|
+
.datatable-pagination .pagination-info {
|
|
2499
|
+
color: var(--mm-text-secondary);
|
|
2500
|
+
font-size: 0.9rem;
|
|
2501
|
+
flex: 1;
|
|
2502
|
+
min-width: 200px;
|
|
2503
|
+
}
|
|
2504
|
+
.datatable-pagination .pagination-controls {
|
|
2505
|
+
display: flex;
|
|
2506
|
+
align-items: center;
|
|
2507
|
+
gap: 0.5rem;
|
|
2508
|
+
}
|
|
2509
|
+
.datatable-pagination .pagination-controls button.btn-flat {
|
|
2510
|
+
min-width: 40px;
|
|
2511
|
+
height: 40px;
|
|
2512
|
+
padding: 0;
|
|
2513
|
+
display: flex;
|
|
2514
|
+
align-items: center;
|
|
2515
|
+
justify-content: center;
|
|
2516
|
+
border-radius: 50%;
|
|
2517
|
+
transition: background-color 0.2s ease;
|
|
2518
|
+
background: transparent;
|
|
2519
|
+
color: var(--mm-text-primary);
|
|
2520
|
+
border: 1px solid var(--mm-border-color);
|
|
2521
|
+
}
|
|
2522
|
+
.datatable-pagination .pagination-controls button.btn-flat:hover:not(:disabled) {
|
|
2523
|
+
background-color: var(--mm-dropdown-hover);
|
|
2524
|
+
}
|
|
2525
|
+
.datatable-pagination .pagination-controls button.btn-flat:disabled {
|
|
2526
|
+
color: var(--mm-text-disabled);
|
|
2527
|
+
cursor: not-allowed;
|
|
2528
|
+
border-color: var(--mm-text-disabled);
|
|
2529
|
+
opacity: 0.6;
|
|
2530
|
+
}
|
|
2531
|
+
.datatable-pagination .pagination-controls button.btn-flat i {
|
|
2532
|
+
font-size: 20px;
|
|
2533
|
+
}
|
|
2534
|
+
.datatable-pagination .pagination-controls .page-info {
|
|
2535
|
+
margin: 0 0.5rem;
|
|
2536
|
+
color: var(--mm-text-secondary);
|
|
2537
|
+
font-weight: 500;
|
|
2538
|
+
white-space: nowrap;
|
|
2539
|
+
}
|
|
2540
|
+
|
|
2541
|
+
@media only screen and (max-width : 992px) {
|
|
2542
|
+
.datatable-container .datatable-search {
|
|
2543
|
+
max-width: 100%;
|
|
2544
|
+
}
|
|
2545
|
+
.datatable-container .datatable-pagination {
|
|
2546
|
+
flex-direction: column;
|
|
2547
|
+
align-items: stretch;
|
|
2548
|
+
text-align: center;
|
|
2549
|
+
}
|
|
2550
|
+
.datatable-container .datatable-pagination .pagination-info {
|
|
2551
|
+
order: 2;
|
|
2552
|
+
margin-top: 0.5rem;
|
|
2553
|
+
text-align: center;
|
|
2554
|
+
}
|
|
2555
|
+
.datatable-container .datatable-pagination .pagination-controls {
|
|
2556
|
+
order: 1;
|
|
2557
|
+
justify-content: center;
|
|
2558
|
+
}
|
|
2559
|
+
.datatable.responsive-table.mobile-hide-secondary th:nth-child(n+4),
|
|
2560
|
+
.datatable.responsive-table.mobile-hide-secondary td:nth-child(n+4) {
|
|
2561
|
+
display: none;
|
|
2562
|
+
}
|
|
2563
|
+
}
|
|
2564
|
+
@media only screen and (max-width : 992px) and (max-width : 600px) {
|
|
2565
|
+
.datatable.responsive-table.mobile-stack thead {
|
|
2566
|
+
display: none;
|
|
2567
|
+
}
|
|
2568
|
+
.datatable.responsive-table.mobile-stack tbody tr {
|
|
2569
|
+
display: block;
|
|
2570
|
+
border: 1px solid var(--mm-border-color);
|
|
2571
|
+
margin-bottom: 1rem;
|
|
2572
|
+
padding: 1rem;
|
|
2573
|
+
border-radius: 4px;
|
|
2574
|
+
background: var(--mm-card-background);
|
|
2575
|
+
}
|
|
2576
|
+
.datatable.responsive-table.mobile-stack tbody td {
|
|
2577
|
+
display: block;
|
|
2578
|
+
text-align: left !important;
|
|
2579
|
+
padding: 0.5rem 0;
|
|
2580
|
+
border: none;
|
|
2581
|
+
}
|
|
2582
|
+
.datatable.responsive-table.mobile-stack tbody td::before {
|
|
2583
|
+
content: attr(data-label) ": ";
|
|
2584
|
+
font-weight: bold;
|
|
2585
|
+
color: var(--mm-text-secondary);
|
|
2586
|
+
display: inline-block;
|
|
2587
|
+
min-width: 100px;
|
|
2588
|
+
}
|
|
2589
|
+
}
|
|
2590
|
+
@media (prefers-color-scheme: dark) {
|
|
2591
|
+
:root:not([data-theme]) .datatable-container .datatable thead th.sortable:hover,
|
|
2592
|
+
[data-theme=dark] .datatable-container .datatable thead th.sortable:hover {
|
|
2593
|
+
background-color: var(--mm-dropdown-hover);
|
|
2594
|
+
}
|
|
2595
|
+
:root:not([data-theme]) .datatable-container .datatable tbody tr:hover,
|
|
2596
|
+
[data-theme=dark] .datatable-container .datatable tbody tr:hover {
|
|
2597
|
+
background-color: var(--mm-dropdown-hover);
|
|
2598
|
+
}
|
|
2599
|
+
:root:not([data-theme]) .datatable-container .datatable.striped tbody tr:nth-child(odd),
|
|
2600
|
+
[data-theme=dark] .datatable-container .datatable.striped tbody tr:nth-child(odd) {
|
|
2601
|
+
background-color: rgba(255, 255, 255, 0.05);
|
|
2602
|
+
}
|
|
2603
|
+
:root:not([data-theme]) .datatable-container .datatable.fixed-header thead th,
|
|
2604
|
+
[data-theme=dark] .datatable-container .datatable.fixed-header thead th {
|
|
2605
|
+
border-bottom: 1px solid var(--mm-border-color);
|
|
2606
|
+
}
|
|
2607
|
+
}
|
|
2608
|
+
.datatable {
|
|
2609
|
+
contain: layout style paint;
|
|
2610
|
+
}
|
|
2611
|
+
.datatable.virtual-table {
|
|
2612
|
+
transform: translateZ(0);
|
|
2613
|
+
backface-visibility: hidden;
|
|
2614
|
+
}
|
|
2615
|
+
.datatable tbody tr {
|
|
2616
|
+
transform: translateZ(0);
|
|
2617
|
+
will-change: transform;
|
|
2618
|
+
}
|
|
2619
|
+
.datatable.fixed-layout {
|
|
2620
|
+
table-layout: fixed;
|
|
2621
|
+
}
|
|
2622
|
+
.datatable.fixed-layout th, .datatable.fixed-layout td {
|
|
2623
|
+
overflow: hidden;
|
|
2624
|
+
text-overflow: ellipsis;
|
|
2625
|
+
white-space: nowrap;
|
|
2626
|
+
}
|
|
2627
|
+
|
|
2628
|
+
/* TreeView Component Styles */
|
|
2629
|
+
:root {
|
|
2630
|
+
--tree-node-height: 36px;
|
|
2631
|
+
--tree-indent-size: 24px;
|
|
2632
|
+
--tree-connector-width: 1px;
|
|
2633
|
+
--tree-expand-icon-size: 20px;
|
|
2634
|
+
--tree-bg-color: #ffffff;
|
|
2635
|
+
--tree-text-color: #212121;
|
|
2636
|
+
--tree-text-color-secondary: #757575;
|
|
2637
|
+
--tree-border-color: #e0e0e0;
|
|
2638
|
+
--tree-connector-color: #bdbdbd;
|
|
2639
|
+
--tree-hover-bg: #f5f5f5;
|
|
2640
|
+
--tree-selected-bg: #e3f2fd;
|
|
2641
|
+
--tree-selected-color: #1976d2;
|
|
2642
|
+
--tree-focused-outline: #2196f3;
|
|
2643
|
+
--tree-disabled-color: #9e9e9e;
|
|
2644
|
+
--tree-disabled-bg: #fafafa;
|
|
2645
|
+
}
|
|
2646
|
+
|
|
2647
|
+
[data-theme=dark],
|
|
2648
|
+
.dark-theme,
|
|
2649
|
+
body.dark {
|
|
2650
|
+
--tree-bg-color: #1e1e1e;
|
|
2651
|
+
--tree-text-color: #e0e0e0;
|
|
2652
|
+
--tree-text-color-secondary: #a0a0a0;
|
|
2653
|
+
--tree-border-color: #333333;
|
|
2654
|
+
--tree-connector-color: #555555;
|
|
2655
|
+
--tree-hover-bg: #2d2d2d;
|
|
2656
|
+
--tree-selected-bg: #282a45;
|
|
2657
|
+
--tree-selected-color: #90caf9;
|
|
2658
|
+
--tree-focused-outline: #64b5f6;
|
|
2659
|
+
--tree-disabled-color: #616161;
|
|
2660
|
+
--tree-disabled-bg: #2d2d2d;
|
|
2661
|
+
}
|
|
2662
|
+
|
|
2663
|
+
.tree-view {
|
|
2664
|
+
background-color: var(--tree-bg-color);
|
|
2665
|
+
color: var(--tree-text-color);
|
|
2666
|
+
border: 1px solid var(--tree-border-color);
|
|
2667
|
+
border-radius: 4px;
|
|
2668
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
2669
|
+
font-size: 14px;
|
|
2670
|
+
line-height: 1.5;
|
|
2671
|
+
}
|
|
2672
|
+
.tree-view .tree-root {
|
|
2673
|
+
list-style: none;
|
|
2674
|
+
margin: 0;
|
|
2675
|
+
padding: 0;
|
|
2676
|
+
}
|
|
2677
|
+
.tree-view .tree-node {
|
|
2678
|
+
list-style: none;
|
|
2679
|
+
position: relative;
|
|
2680
|
+
margin: 0;
|
|
2681
|
+
padding: 0;
|
|
2682
|
+
}
|
|
2683
|
+
.tree-view .tree-node.disabled {
|
|
2684
|
+
opacity: 0.6;
|
|
2685
|
+
cursor: not-allowed;
|
|
2686
|
+
}
|
|
2687
|
+
.tree-view .tree-node.disabled .tree-node-content {
|
|
2688
|
+
pointer-events: none;
|
|
2689
|
+
color: var(--tree-disabled-color);
|
|
2690
|
+
background-color: var(--tree-disabled-bg);
|
|
2691
|
+
}
|
|
2692
|
+
.tree-view .tree-node-content {
|
|
2693
|
+
display: flex;
|
|
2694
|
+
align-items: center;
|
|
2695
|
+
min-height: var(--tree-node-height);
|
|
2696
|
+
padding: 4px 8px;
|
|
2697
|
+
cursor: pointer;
|
|
2698
|
+
position: relative;
|
|
2699
|
+
transition: all 0.2s ease;
|
|
2700
|
+
user-select: none;
|
|
2701
|
+
}
|
|
2702
|
+
.tree-view .tree-node-content:hover:not(:disabled) {
|
|
2703
|
+
background-color: var(--tree-hover-bg);
|
|
2704
|
+
}
|
|
2705
|
+
.tree-view .tree-node.selected .tree-node-content {
|
|
2706
|
+
background-color: var(--tree-selected-bg);
|
|
2707
|
+
color: var(--tree-selected-color);
|
|
2708
|
+
font-weight: 500;
|
|
2709
|
+
}
|
|
2710
|
+
.tree-view .tree-node.focused .tree-node-content {
|
|
2711
|
+
background-color: var(--tree-hover-bg);
|
|
2712
|
+
border-right: 1px solid var(--tree-focused-outline);
|
|
2713
|
+
}
|
|
2714
|
+
.tree-view .tree-node.selected.focused .tree-node-content {
|
|
2715
|
+
background-color: var(--tree-selected-bg);
|
|
2716
|
+
}
|
|
2717
|
+
.tree-view.show-connectors .tree-connectors {
|
|
2718
|
+
position: absolute;
|
|
2719
|
+
top: 0;
|
|
2720
|
+
left: 0;
|
|
2721
|
+
width: 100%;
|
|
2722
|
+
height: 100%;
|
|
2723
|
+
pointer-events: none;
|
|
2724
|
+
z-index: 0;
|
|
2725
|
+
}
|
|
2726
|
+
.tree-view.show-connectors .tree-connector {
|
|
2727
|
+
position: absolute;
|
|
2728
|
+
top: 0;
|
|
2729
|
+
height: 100%;
|
|
2730
|
+
width: var(--tree-connector-width);
|
|
2731
|
+
background-color: var(--tree-connector-color);
|
|
2732
|
+
}
|
|
2733
|
+
.tree-view.show-connectors .tree-connector::after {
|
|
2734
|
+
content: "";
|
|
2735
|
+
position: absolute;
|
|
2736
|
+
top: calc(var(--tree-node-height) / 2);
|
|
2737
|
+
left: 0;
|
|
2738
|
+
width: 12px;
|
|
2739
|
+
height: var(--tree-connector-width);
|
|
2740
|
+
background-color: var(--tree-connector-color);
|
|
2741
|
+
}
|
|
2742
|
+
.tree-view.show-connectors .tree-node:last-child .tree-node-content .tree-connector:last-child {
|
|
2743
|
+
height: calc(var(--tree-node-height) / 2 + 2px);
|
|
2744
|
+
}
|
|
2745
|
+
.tree-view.show-connectors .tree-node:not(.tree-last-in-branch) .tree-node-content .tree-connector {
|
|
2746
|
+
height: 100% !important;
|
|
2747
|
+
}
|
|
2748
|
+
.tree-view .tree-expand-icon {
|
|
2749
|
+
display: flex;
|
|
2750
|
+
align-items: center;
|
|
2751
|
+
justify-content: center;
|
|
2752
|
+
width: var(--tree-expand-icon-size);
|
|
2753
|
+
height: var(--tree-expand-icon-size);
|
|
2754
|
+
margin-right: 8px;
|
|
2755
|
+
margin-left: 2px;
|
|
2756
|
+
cursor: pointer;
|
|
2757
|
+
border-radius: 3px;
|
|
2758
|
+
transition: all 0.2s ease;
|
|
2759
|
+
flex-shrink: 0;
|
|
2760
|
+
}
|
|
2761
|
+
.tree-view .tree-expand-icon:hover {
|
|
2762
|
+
background-color: var(--tree-hover-bg);
|
|
2763
|
+
}
|
|
2764
|
+
.tree-view .tree-expand-icon.plus-minus .tree-plus-minus {
|
|
2765
|
+
display: flex;
|
|
2766
|
+
align-items: center;
|
|
2767
|
+
justify-content: center;
|
|
2768
|
+
width: 16px;
|
|
2769
|
+
height: 16px;
|
|
2770
|
+
border: 1px solid var(--tree-connector-color);
|
|
2771
|
+
border-radius: 2px;
|
|
2772
|
+
background-color: var(--tree-bg-color);
|
|
2773
|
+
font-size: 12px;
|
|
2774
|
+
font-weight: bold;
|
|
2775
|
+
line-height: 1;
|
|
2776
|
+
transition: all 0.2s ease;
|
|
2777
|
+
}
|
|
2778
|
+
.tree-view .tree-expand-icon.triangle .tree-triangle {
|
|
2779
|
+
font-size: 10px;
|
|
2780
|
+
transition: transform 0.2s ease;
|
|
2781
|
+
color: var(--tree-text-color-secondary);
|
|
2782
|
+
}
|
|
2783
|
+
.tree-view .tree-expand-icon.triangle .tree-triangle.expanded {
|
|
2784
|
+
transform: rotate(90deg);
|
|
2785
|
+
}
|
|
2786
|
+
.tree-view .tree-expand-icon .tree-caret-icon,
|
|
2787
|
+
.tree-view .tree-expand-icon .tree-chevron-icon {
|
|
2788
|
+
transition: transform 0.2s ease;
|
|
2789
|
+
}
|
|
2790
|
+
.tree-view .tree-expand-spacer {
|
|
2791
|
+
width: var(--tree-expand-icon-size);
|
|
2792
|
+
height: var(--tree-expand-icon-size);
|
|
2793
|
+
margin-right: 8px;
|
|
2794
|
+
margin-left: 2px;
|
|
2795
|
+
flex-shrink: 0;
|
|
2796
|
+
}
|
|
2797
|
+
.tree-view .tree-selection-indicator {
|
|
2798
|
+
margin-right: 8px;
|
|
2799
|
+
flex-shrink: 0;
|
|
2800
|
+
}
|
|
2801
|
+
.tree-view .tree-selection-indicator input[type=checkbox] {
|
|
2802
|
+
width: 16px;
|
|
2803
|
+
height: 16px;
|
|
2804
|
+
margin: 0;
|
|
2805
|
+
cursor: pointer;
|
|
2806
|
+
accent-color: var(--tree-selected-color);
|
|
2807
|
+
}
|
|
2808
|
+
.tree-view .tree-node-icon {
|
|
2809
|
+
margin-right: 8px;
|
|
2810
|
+
font-size: 18px;
|
|
2811
|
+
color: var(--tree-text-color-secondary);
|
|
2812
|
+
flex-shrink: 0;
|
|
2813
|
+
}
|
|
2814
|
+
.tree-view .tree-node-label {
|
|
2815
|
+
flex: 1;
|
|
2816
|
+
overflow: hidden;
|
|
2817
|
+
text-overflow: ellipsis;
|
|
2818
|
+
white-space: nowrap;
|
|
2819
|
+
}
|
|
2820
|
+
.tree-view .tree-children {
|
|
2821
|
+
list-style: none;
|
|
2822
|
+
margin: 0;
|
|
2823
|
+
padding: 0;
|
|
2824
|
+
overflow: hidden;
|
|
2825
|
+
transition: all 0.3s ease;
|
|
2826
|
+
}
|
|
2827
|
+
.tree-view .tree-children.tree-collapsing {
|
|
2828
|
+
max-height: 0;
|
|
2829
|
+
opacity: 0;
|
|
2830
|
+
}
|
|
2831
|
+
.tree-view .tree-children.tree-expanding {
|
|
2832
|
+
max-height: 1000px;
|
|
2833
|
+
opacity: 1;
|
|
2834
|
+
}
|
|
2835
|
+
|
|
2836
|
+
.tree-node .tree-children {
|
|
2837
|
+
animation-duration: 0.3s;
|
|
2838
|
+
animation-fill-mode: both;
|
|
2839
|
+
animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
2840
|
+
}
|
|
2841
|
+
|
|
2842
|
+
@keyframes tree-expand {
|
|
2843
|
+
from {
|
|
2844
|
+
max-height: 0;
|
|
2845
|
+
opacity: 0;
|
|
2846
|
+
}
|
|
2847
|
+
to {
|
|
2848
|
+
max-height: 1000px;
|
|
2849
|
+
opacity: 1;
|
|
2850
|
+
}
|
|
2851
|
+
}
|
|
2852
|
+
@keyframes tree-collapse {
|
|
2853
|
+
from {
|
|
2854
|
+
max-height: 1000px;
|
|
2855
|
+
opacity: 1;
|
|
2856
|
+
}
|
|
2857
|
+
to {
|
|
2858
|
+
max-height: 0;
|
|
2859
|
+
opacity: 0;
|
|
2860
|
+
}
|
|
2861
|
+
}
|
|
2862
|
+
@media (max-width: 768px) {
|
|
2863
|
+
.tree-view {
|
|
2864
|
+
--tree-node-height: 40px;
|
|
2865
|
+
--tree-indent-size: 20px;
|
|
2866
|
+
}
|
|
2867
|
+
.tree-view .tree-node-content {
|
|
2868
|
+
padding: 0 12px;
|
|
2869
|
+
}
|
|
2870
|
+
}
|
|
2871
|
+
@media (prefers-contrast: high) {
|
|
2872
|
+
.tree-view {
|
|
2873
|
+
--tree-border-color: #000000;
|
|
2874
|
+
--tree-connector-color: #000000;
|
|
2875
|
+
--tree-focused-outline: #0066cc;
|
|
2876
|
+
}
|
|
2877
|
+
.tree-view .tree-node-content:focus {
|
|
2878
|
+
outline-width: 3px;
|
|
2879
|
+
}
|
|
2880
|
+
}
|
|
2881
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2882
|
+
.tree-view .tree-children,
|
|
2883
|
+
.tree-view .tree-expand-icon .tree-triangle,
|
|
2884
|
+
.tree-view .tree-expand-icon .tree-caret-icon,
|
|
2885
|
+
.tree-view .tree-expand-icon .tree-plus-minus,
|
|
2886
|
+
.tree-view .tree-node-content {
|
|
2887
|
+
transition: none;
|
|
2888
|
+
animation: none;
|
|
2889
|
+
}
|
|
2890
|
+
}
|
|
2891
|
+
@media print {
|
|
2892
|
+
.tree-view {
|
|
2893
|
+
--tree-bg-color: white;
|
|
2894
|
+
--tree-text-color: black;
|
|
2895
|
+
--tree-border-color: black;
|
|
2896
|
+
}
|
|
2897
|
+
.tree-view .tree-expand-icon {
|
|
2898
|
+
display: none;
|
|
2899
|
+
}
|
|
2900
|
+
.tree-view .tree-children {
|
|
2901
|
+
display: block !important;
|
|
2902
|
+
opacity: 1 !important;
|
|
2903
|
+
max-height: none !important;
|
|
2904
|
+
}
|
|
2905
|
+
}
|
package/dist/icon.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FactoryComponent, Attributes } from 'mithril';
|
|
2
|
-
export interface
|
|
2
|
+
export interface IconAttrs extends Attributes {
|
|
3
3
|
iconName: string;
|
|
4
4
|
}
|
|
5
5
|
/**
|
|
@@ -8,4 +8,4 @@ export interface MaterialIcon extends Attributes {
|
|
|
8
8
|
* @example m(Icon, { className: 'small' }, 'create') renders a small 'create' icon
|
|
9
9
|
* @example m(Icon, { className: 'prefix' }, iconName) renders the icon as a prefix
|
|
10
10
|
*/
|
|
11
|
-
export declare const Icon: FactoryComponent<
|
|
11
|
+
export declare const Icon: FactoryComponent<IconAttrs>;
|