mithril-materialized 3.1.0 → 3.2.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.
@@ -1116,6 +1116,9 @@ button.btn-floating {
1116
1116
  margin: 0 24px 0 0;
1117
1117
  width: 24px;
1118
1118
  }
1119
+ .dropdown-content li.disabled {
1120
+ cursor: not-allowed;
1121
+ }
1119
1122
 
1120
1123
  body.keyboard-focused .dropdown-content li:focus {
1121
1124
  background-color: var(--mm-dropdown-focus, rgb(217.6, 217.6, 217.6));
package/dist/core.css CHANGED
@@ -2817,6 +2817,10 @@ textarea.materialize-textarea {
2817
2817
  pointer-events: none;
2818
2818
  }
2819
2819
 
2820
+ [type=checkbox]:disabled + span {
2821
+ color: var(--mm-text-disabled, rgba(0, 0, 0, 0.42));
2822
+ }
2823
+
2820
2824
  [type=checkbox] {
2821
2825
  /* checkbox aspect */
2822
2826
  }
@@ -2977,6 +2981,7 @@ textarea.materialize-textarea {
2977
2981
  .switch * {
2978
2982
  -webkit-tap-highlight-color: transparent;
2979
2983
  user-select: none;
2984
+ margin: 13px 0 17px 0;
2980
2985
  }
2981
2986
 
2982
2987
  .switch label {
@@ -3191,6 +3196,137 @@ body.keyboard-focused .select-dropdown.dropdown-content li:focus {
3191
3196
  padding-left: 1rem;
3192
3197
  }
3193
3198
 
3199
+ /* Dark theme overrides to ensure proper colors */
3200
+ [data-theme=dark] .select-dropdown.dropdown-content li:hover,
3201
+ [data-theme=dark] .dropdown-content li:hover,
3202
+ [data-theme=dark] .dropdown-content li.active {
3203
+ background-color: #444 !important;
3204
+ }
3205
+ [data-theme=dark] .chip {
3206
+ background-color: #424242 !important;
3207
+ color: var(--mm-text-secondary) !important;
3208
+ }
3209
+
3210
+ /* Auto dark mode support */
3211
+ @media (prefers-color-scheme: dark) {
3212
+ :root:not([data-theme=light]) .select-dropdown.dropdown-content li:hover,
3213
+ :root:not([data-theme=light]) .dropdown-content li:hover,
3214
+ :root:not([data-theme=light]) .dropdown-content li.active {
3215
+ background-color: #444 !important;
3216
+ }
3217
+ :root:not([data-theme=light]) .chip {
3218
+ background-color: #424242 !important;
3219
+ color: var(--mm-text-secondary) !important;
3220
+ }
3221
+ }
3222
+ /* SearchSelect Specific Styles
3223
+ ========================================================================== */
3224
+ .search-wrapper {
3225
+ padding: 0 16px;
3226
+ position: relative;
3227
+ }
3228
+
3229
+ .search-select-input {
3230
+ width: 100%;
3231
+ outline: none;
3232
+ font-size: 0.875rem;
3233
+ border: none;
3234
+ padding: 8px 0;
3235
+ border-bottom: 1px solid var(--mm-input-border, #9e9e9e);
3236
+ background-color: transparent;
3237
+ color: var(--mm-text-primary, inherit);
3238
+ }
3239
+ .search-select-input:focus {
3240
+ border-bottom-color: var(--mm-primary-color, #2196F3);
3241
+ }
3242
+ .search-select-input::placeholder {
3243
+ color: var(--mm-text-hint, #9e9e9e);
3244
+ }
3245
+
3246
+ .search-select-no-options {
3247
+ padding: 8px 16px;
3248
+ color: var(--mm-text-hint, #9e9e9e);
3249
+ font-style: italic;
3250
+ text-align: center;
3251
+ border-bottom: none;
3252
+ }
3253
+ .search-select-no-options:hover {
3254
+ background-color: transparent;
3255
+ cursor: default;
3256
+ }
3257
+
3258
+ .search-select-option-label {
3259
+ display: flex;
3260
+ align-items: center;
3261
+ width: 100%;
3262
+ cursor: pointer;
3263
+ padding: 0;
3264
+ margin: 0;
3265
+ min-height: var(--mm-dropdown-item-height, 50px);
3266
+ }
3267
+ .search-select-option-label input[type=checkbox] {
3268
+ margin-right: 8px;
3269
+ position: relative;
3270
+ appearance: none;
3271
+ width: 18px;
3272
+ height: 18px;
3273
+ border: 2px solid var(--mm-border-color, #9e9e9e);
3274
+ border-radius: 2px;
3275
+ background-color: transparent;
3276
+ }
3277
+ .search-select-option-label input[type=checkbox]:checked {
3278
+ background-color: var(--mm-primary-color, #2196F3);
3279
+ border-color: var(--mm-primary-color, #2196F3);
3280
+ }
3281
+ .search-select-option-label input[type=checkbox]:checked:after {
3282
+ content: "✓";
3283
+ color: white;
3284
+ font-size: 12px;
3285
+ position: absolute;
3286
+ top: -2px;
3287
+ left: 2px;
3288
+ }
3289
+ .search-select-option-label input[type=checkbox]:focus {
3290
+ outline: 2px solid var(--mm-primary-color, #2196F3);
3291
+ outline-offset: 2px;
3292
+ }
3293
+ .search-select-option-label span {
3294
+ flex: 1;
3295
+ }
3296
+
3297
+ .multi-select-dropdown .chips-container {
3298
+ display: flex;
3299
+ align-items: flex-end;
3300
+ flex-wrap: wrap;
3301
+ cursor: pointer;
3302
+ position: relative;
3303
+ min-height: var(--mm-input-height, 3rem);
3304
+ padding: 4px 0;
3305
+ }
3306
+ .multi-select-dropdown .chips-container .chip {
3307
+ margin: 2px 4px 2px 0;
3308
+ }
3309
+ .multi-select-dropdown .chips-container .chip .material-icons.close {
3310
+ cursor: pointer;
3311
+ font-size: 16px;
3312
+ margin-left: 4px;
3313
+ }
3314
+ .multi-select-dropdown .chips-container .chip .material-icons.close:hover {
3315
+ color: var(--mm-error-color, #f44336);
3316
+ }
3317
+ .multi-select-dropdown .chips-container .placeholder {
3318
+ color: var(--mm-text-hint, #9e9e9e);
3319
+ flex-grow: 1;
3320
+ padding: 8px 0;
3321
+ }
3322
+ .multi-select-dropdown .chips-container .spacer {
3323
+ flex-grow: 1;
3324
+ }
3325
+ .multi-select-dropdown .chips-container .caret {
3326
+ margin-left: auto;
3327
+ cursor: pointer;
3328
+ }
3329
+
3194
3330
  /* File Input
3195
3331
  ========================================================================== */
3196
3332
  .file-field {
@@ -3404,17 +3540,3 @@ input[type=range]::-ms-thumb {
3404
3540
  cursor: text;
3405
3541
  text-align: initial;
3406
3542
  }
3407
-
3408
- select:focus {
3409
- outline: 1px solid rgb(201.05, 242.65, 238.75);
3410
- }
3411
-
3412
- button:focus {
3413
- outline: none;
3414
- background-color: rgb(41.8, 182.6, 169.4);
3415
- }
3416
-
3417
- label {
3418
- font-size: 0.8rem;
3419
- color: #9e9e9e;
3420
- }
@@ -28,13 +28,16 @@ export interface DropdownAttrs<T extends string | number> extends Attributes {
28
28
  /** Item array to show in the dropdown. If the value is not supplied, uses he name. */
29
29
  items: DropdownItem<T>[];
30
30
  /**
31
- * Selected value or name
32
- * @deprecated Use initialValue instead
31
+ * Currently selected item id for controlled mode. If provided along with `onchange`, the component operates in controlled mode
32
+ * where the parent manages the state. The parent must update this value in response to `onchange` callbacks.
33
33
  */
34
34
  checkedId?: T;
35
- /** Selected value or name */
36
- initialValue?: T;
37
- /** When a value or name is selected */
35
+ /**
36
+ * Default selected item id for uncontrolled mode. Only used when `checkedId` and `onchange` are not provided.
37
+ * The component will manage its own internal state in uncontrolled mode.
38
+ */
39
+ defaultCheckedId?: T;
40
+ /** When a value or name is selected. Optional for uncontrolled mode. */
38
41
  onchange?: (value: T) => void;
39
42
  /** Uses Materialize icons as a prefix or postfix. */
40
43
  iconName?: string;
package/dist/forms.css CHANGED
@@ -1441,6 +1441,137 @@ body.keyboard-focused .select-dropdown.dropdown-content li:focus {
1441
1441
  padding-left: 1rem;
1442
1442
  }
1443
1443
 
1444
+ /* Dark theme overrides to ensure proper colors */
1445
+ [data-theme=dark] .select-dropdown.dropdown-content li:hover,
1446
+ [data-theme=dark] .dropdown-content li:hover,
1447
+ [data-theme=dark] .dropdown-content li.active {
1448
+ background-color: #444 !important;
1449
+ }
1450
+ [data-theme=dark] .chip {
1451
+ background-color: #424242 !important;
1452
+ color: var(--mm-text-secondary) !important;
1453
+ }
1454
+
1455
+ /* Auto dark mode support */
1456
+ @media (prefers-color-scheme: dark) {
1457
+ :root:not([data-theme=light]) .select-dropdown.dropdown-content li:hover,
1458
+ :root:not([data-theme=light]) .dropdown-content li:hover,
1459
+ :root:not([data-theme=light]) .dropdown-content li.active {
1460
+ background-color: #444 !important;
1461
+ }
1462
+ :root:not([data-theme=light]) .chip {
1463
+ background-color: #424242 !important;
1464
+ color: var(--mm-text-secondary) !important;
1465
+ }
1466
+ }
1467
+ /* SearchSelect Specific Styles
1468
+ ========================================================================== */
1469
+ .search-wrapper {
1470
+ padding: 0 16px;
1471
+ position: relative;
1472
+ }
1473
+
1474
+ .search-select-input {
1475
+ width: 100%;
1476
+ outline: none;
1477
+ font-size: 0.875rem;
1478
+ border: none;
1479
+ padding: 8px 0;
1480
+ border-bottom: 1px solid var(--mm-input-border, #9e9e9e);
1481
+ background-color: transparent;
1482
+ color: var(--mm-text-primary, inherit);
1483
+ }
1484
+ .search-select-input:focus {
1485
+ border-bottom-color: var(--mm-primary-color, #2196F3);
1486
+ }
1487
+ .search-select-input::placeholder {
1488
+ color: var(--mm-text-hint, #9e9e9e);
1489
+ }
1490
+
1491
+ .search-select-no-options {
1492
+ padding: 8px 16px;
1493
+ color: var(--mm-text-hint, #9e9e9e);
1494
+ font-style: italic;
1495
+ text-align: center;
1496
+ border-bottom: none;
1497
+ }
1498
+ .search-select-no-options:hover {
1499
+ background-color: transparent;
1500
+ cursor: default;
1501
+ }
1502
+
1503
+ .search-select-option-label {
1504
+ display: flex;
1505
+ align-items: center;
1506
+ width: 100%;
1507
+ cursor: pointer;
1508
+ padding: 0;
1509
+ margin: 0;
1510
+ min-height: var(--mm-dropdown-item-height, 50px);
1511
+ }
1512
+ .search-select-option-label input[type=checkbox] {
1513
+ margin-right: 8px;
1514
+ position: relative;
1515
+ appearance: none;
1516
+ width: 18px;
1517
+ height: 18px;
1518
+ border: 2px solid var(--mm-border-color, #9e9e9e);
1519
+ border-radius: 2px;
1520
+ background-color: transparent;
1521
+ }
1522
+ .search-select-option-label input[type=checkbox]:checked {
1523
+ background-color: var(--mm-primary-color, #2196F3);
1524
+ border-color: var(--mm-primary-color, #2196F3);
1525
+ }
1526
+ .search-select-option-label input[type=checkbox]:checked:after {
1527
+ content: "✓";
1528
+ color: white;
1529
+ font-size: 12px;
1530
+ position: absolute;
1531
+ top: -2px;
1532
+ left: 2px;
1533
+ }
1534
+ .search-select-option-label input[type=checkbox]:focus {
1535
+ outline: 2px solid var(--mm-primary-color, #2196F3);
1536
+ outline-offset: 2px;
1537
+ }
1538
+ .search-select-option-label span {
1539
+ flex: 1;
1540
+ }
1541
+
1542
+ .multi-select-dropdown .chips-container {
1543
+ display: flex;
1544
+ align-items: flex-end;
1545
+ flex-wrap: wrap;
1546
+ cursor: pointer;
1547
+ position: relative;
1548
+ min-height: var(--mm-input-height, 3rem);
1549
+ padding: 4px 0;
1550
+ }
1551
+ .multi-select-dropdown .chips-container .chip {
1552
+ margin: 2px 4px 2px 0;
1553
+ }
1554
+ .multi-select-dropdown .chips-container .chip .material-icons.close {
1555
+ cursor: pointer;
1556
+ font-size: 16px;
1557
+ margin-left: 4px;
1558
+ }
1559
+ .multi-select-dropdown .chips-container .chip .material-icons.close:hover {
1560
+ color: var(--mm-error-color, #f44336);
1561
+ }
1562
+ .multi-select-dropdown .chips-container .placeholder {
1563
+ color: var(--mm-text-hint, #9e9e9e);
1564
+ flex-grow: 1;
1565
+ padding: 8px 0;
1566
+ }
1567
+ .multi-select-dropdown .chips-container .spacer {
1568
+ flex-grow: 1;
1569
+ }
1570
+ .multi-select-dropdown .chips-container .caret {
1571
+ margin-left: auto;
1572
+ cursor: pointer;
1573
+ }
1574
+
1444
1575
  /* Checkboxes
1445
1576
  ========================================================================== */
1446
1577
  /* Remove default checkbox */
@@ -1451,6 +1582,10 @@ body.keyboard-focused .select-dropdown.dropdown-content li:focus {
1451
1582
  pointer-events: none;
1452
1583
  }
1453
1584
 
1585
+ [type=checkbox]:disabled + span {
1586
+ color: var(--mm-text-disabled, rgba(0, 0, 0, 0.42));
1587
+ }
1588
+
1454
1589
  [type=checkbox] {
1455
1590
  /* checkbox aspect */
1456
1591
  }
@@ -1725,6 +1860,7 @@ body.keyboard-focused .select-dropdown.dropdown-content li:focus {
1725
1860
  .switch * {
1726
1861
  -webkit-tap-highlight-color: transparent;
1727
1862
  user-select: none;
1863
+ margin: 13px 0 17px 0;
1728
1864
  }
1729
1865
 
1730
1866
  .switch label {
package/dist/index.css CHANGED
@@ -5283,6 +5283,9 @@ button.btn-floating {
5283
5283
  margin: 0 24px 0 0;
5284
5284
  width: 24px;
5285
5285
  }
5286
+ .dropdown-content li.disabled {
5287
+ cursor: not-allowed;
5288
+ }
5286
5289
 
5287
5290
  body.keyboard-focused .dropdown-content li:focus {
5288
5291
  background-color: var(--mm-dropdown-focus, rgb(217.6, 217.6, 217.6));
@@ -6468,6 +6471,10 @@ textarea.materialize-textarea {
6468
6471
  pointer-events: none;
6469
6472
  }
6470
6473
 
6474
+ [type=checkbox]:disabled + span {
6475
+ color: var(--mm-text-disabled, rgba(0, 0, 0, 0.42));
6476
+ }
6477
+
6471
6478
  [type=checkbox] {
6472
6479
  /* checkbox aspect */
6473
6480
  }
@@ -6632,6 +6639,7 @@ textarea.materialize-textarea {
6632
6639
  -webkit-user-select: none;
6633
6640
  -moz-user-select: none;
6634
6641
  user-select: none;
6642
+ margin: 13px 0 17px 0;
6635
6643
  }
6636
6644
 
6637
6645
  .switch label {
@@ -6850,6 +6858,142 @@ body.keyboard-focused .select-dropdown.dropdown-content li:focus {
6850
6858
  padding-left: 1rem;
6851
6859
  }
6852
6860
 
6861
+ /* Dark theme overrides to ensure proper colors */
6862
+ [data-theme=dark] .select-dropdown.dropdown-content li:hover,
6863
+ [data-theme=dark] .dropdown-content li:hover,
6864
+ [data-theme=dark] .dropdown-content li.active {
6865
+ background-color: #444 !important;
6866
+ }
6867
+ [data-theme=dark] .chip {
6868
+ background-color: #424242 !important;
6869
+ color: var(--mm-text-secondary) !important;
6870
+ }
6871
+
6872
+ /* Auto dark mode support */
6873
+ @media (prefers-color-scheme: dark) {
6874
+ :root:not([data-theme=light]) .select-dropdown.dropdown-content li:hover,
6875
+ :root:not([data-theme=light]) .dropdown-content li:hover,
6876
+ :root:not([data-theme=light]) .dropdown-content li.active {
6877
+ background-color: #444 !important;
6878
+ }
6879
+ :root:not([data-theme=light]) .chip {
6880
+ background-color: #424242 !important;
6881
+ color: var(--mm-text-secondary) !important;
6882
+ }
6883
+ }
6884
+ /* SearchSelect Specific Styles
6885
+ ========================================================================== */
6886
+ .search-wrapper {
6887
+ padding: 0 16px;
6888
+ position: relative;
6889
+ }
6890
+
6891
+ .search-select-input {
6892
+ width: 100%;
6893
+ outline: none;
6894
+ font-size: 0.875rem;
6895
+ border: none;
6896
+ padding: 8px 0;
6897
+ border-bottom: 1px solid var(--mm-input-border, #9e9e9e);
6898
+ background-color: transparent;
6899
+ color: var(--mm-text-primary, inherit);
6900
+ }
6901
+ .search-select-input:focus {
6902
+ border-bottom-color: var(--mm-primary-color, #2196F3);
6903
+ }
6904
+ .search-select-input::-moz-placeholder {
6905
+ color: var(--mm-text-hint, #9e9e9e);
6906
+ }
6907
+ .search-select-input::placeholder {
6908
+ color: var(--mm-text-hint, #9e9e9e);
6909
+ }
6910
+
6911
+ .search-select-no-options {
6912
+ padding: 8px 16px;
6913
+ color: var(--mm-text-hint, #9e9e9e);
6914
+ font-style: italic;
6915
+ text-align: center;
6916
+ border-bottom: none;
6917
+ }
6918
+ .search-select-no-options:hover {
6919
+ background-color: transparent;
6920
+ cursor: default;
6921
+ }
6922
+
6923
+ .search-select-option-label {
6924
+ display: flex;
6925
+ align-items: center;
6926
+ width: 100%;
6927
+ cursor: pointer;
6928
+ padding: 0;
6929
+ margin: 0;
6930
+ min-height: var(--mm-dropdown-item-height, 50px);
6931
+ }
6932
+ .search-select-option-label input[type=checkbox] {
6933
+ margin-right: 8px;
6934
+ position: relative;
6935
+ -webkit-appearance: none;
6936
+ -moz-appearance: none;
6937
+ appearance: none;
6938
+ width: 18px;
6939
+ height: 18px;
6940
+ border: 2px solid var(--mm-border-color, #9e9e9e);
6941
+ border-radius: 2px;
6942
+ background-color: transparent;
6943
+ }
6944
+ .search-select-option-label input[type=checkbox]:checked {
6945
+ background-color: var(--mm-primary-color, #2196F3);
6946
+ border-color: var(--mm-primary-color, #2196F3);
6947
+ }
6948
+ .search-select-option-label input[type=checkbox]:checked:after {
6949
+ content: "✓";
6950
+ color: white;
6951
+ font-size: 12px;
6952
+ position: absolute;
6953
+ top: -2px;
6954
+ left: 2px;
6955
+ }
6956
+ .search-select-option-label input[type=checkbox]:focus {
6957
+ outline: 2px solid var(--mm-primary-color, #2196F3);
6958
+ outline-offset: 2px;
6959
+ }
6960
+ .search-select-option-label span {
6961
+ flex: 1;
6962
+ }
6963
+
6964
+ .multi-select-dropdown .chips-container {
6965
+ display: flex;
6966
+ align-items: flex-end;
6967
+ flex-wrap: wrap;
6968
+ cursor: pointer;
6969
+ position: relative;
6970
+ min-height: var(--mm-input-height, 3rem);
6971
+ padding: 4px 0;
6972
+ }
6973
+ .multi-select-dropdown .chips-container .chip {
6974
+ margin: 2px 4px 2px 0;
6975
+ }
6976
+ .multi-select-dropdown .chips-container .chip .material-icons.close {
6977
+ cursor: pointer;
6978
+ font-size: 16px;
6979
+ margin-left: 4px;
6980
+ }
6981
+ .multi-select-dropdown .chips-container .chip .material-icons.close:hover {
6982
+ color: var(--mm-error-color, #f44336);
6983
+ }
6984
+ .multi-select-dropdown .chips-container .placeholder {
6985
+ color: var(--mm-text-hint, #9e9e9e);
6986
+ flex-grow: 1;
6987
+ padding: 8px 0;
6988
+ }
6989
+ .multi-select-dropdown .chips-container .spacer {
6990
+ flex-grow: 1;
6991
+ }
6992
+ .multi-select-dropdown .chips-container .caret {
6993
+ margin-left: auto;
6994
+ cursor: pointer;
6995
+ }
6996
+
6853
6997
  /* File Input
6854
6998
  ========================================================================== */
6855
6999
  .file-field {
@@ -7067,20 +7211,6 @@ input[type=range]::-ms-thumb {
7067
7211
  text-align: initial;
7068
7212
  }
7069
7213
 
7070
- select:focus {
7071
- outline: 1px solid rgb(201.05, 242.65, 238.75);
7072
- }
7073
-
7074
- button:focus {
7075
- outline: none;
7076
- background-color: rgb(41.8, 182.6, 169.4);
7077
- }
7078
-
7079
- label {
7080
- font-size: 0.8rem;
7081
- color: #9e9e9e;
7082
- }
7083
-
7084
7214
  /* Enhanced Range Sliders
7085
7215
  ========================================================================== */
7086
7216
  .range-slider.vertical {