@smilodon/core 1.4.2 → 1.4.4

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 CHANGED
@@ -560,6 +560,9 @@ enhanced-select {
560
560
  /* Selected state */
561
561
  --select-option-selected-bg: #e0e7ff;
562
562
  --select-option-selected-color: #4338ca;
563
+ --select-option-selected-border: 1px solid #4338ca;
564
+ --select-option-selected-hover-bg: #c7d2fe;
565
+ --select-option-selected-hover-border: 1px solid #3730a3;
563
566
 
564
567
  /* Active/focused state */
565
568
  --select-option-active-bg: #f3f4f6;
@@ -610,6 +613,9 @@ enhanced-select.dark-mode {
610
613
  --select-option-hover-color /* Hover text color (#1f2937) */
611
614
  --select-option-selected-bg /* Selected background (#e0e7ff) */
612
615
  --select-option-selected-color /* Selected text color (#4338ca) */
616
+ --select-option-selected-border /* Selected border (inherits option border by default) */
617
+ --select-option-selected-hover-bg /* Selected+hover background (inherits selected bg by default) */
618
+ --select-option-selected-hover-border /* Selected+hover border (inherits selected border by default) */
613
619
  --select-option-active-bg /* Active background (#f3f4f6) */
614
620
  --select-option-active-color /* Active text color (#1f2937) */
615
621
  --select-dropdown-bg /* Dropdown background (white) */
package/dist/index.cjs CHANGED
@@ -1498,10 +1498,15 @@ class SelectOption extends HTMLElement {
1498
1498
  display: flex;
1499
1499
  align-items: center;
1500
1500
  justify-content: space-between;
1501
- padding: 8px 12px;
1501
+ padding: var(--select-option-padding, 8px 12px);
1502
1502
  cursor: pointer;
1503
1503
  user-select: none;
1504
- transition: background-color 0.2s ease;
1504
+ transition: var(--select-option-transition, background-color 0.2s ease);
1505
+ border: var(--select-option-border, none);
1506
+ border-bottom: var(--select-option-border-bottom, none);
1507
+ border-radius: var(--select-option-border-radius, 0);
1508
+ box-shadow: var(--select-option-shadow, none);
1509
+ transform: var(--select-option-transform, none);
1505
1510
  }
1506
1511
 
1507
1512
  .option-container:hover {
@@ -1511,6 +1516,20 @@ class SelectOption extends HTMLElement {
1511
1516
  .option-container.selected {
1512
1517
  background-color: var(--select-option-selected-bg, #e3f2fd);
1513
1518
  color: var(--select-option-selected-color, #1976d2);
1519
+ border: var(--select-option-selected-border, var(--select-option-border, none));
1520
+ border-bottom: var(--select-option-selected-border-bottom, var(--select-option-border-bottom, none));
1521
+ border-radius: var(--select-option-selected-border-radius, var(--select-option-border-radius, 0));
1522
+ box-shadow: var(--select-option-selected-shadow, var(--select-option-shadow, none));
1523
+ transform: var(--select-option-selected-transform, var(--select-option-transform, none));
1524
+ }
1525
+
1526
+ .option-container.selected:hover {
1527
+ background-color: var(--select-option-selected-hover-bg, var(--select-option-selected-bg, #e3f2fd));
1528
+ color: var(--select-option-selected-hover-color, var(--select-option-selected-color, #1976d2));
1529
+ border: var(--select-option-selected-hover-border, var(--select-option-selected-border, var(--select-option-border, none)));
1530
+ border-bottom: var(--select-option-selected-hover-border-bottom, var(--select-option-selected-border-bottom, var(--select-option-border-bottom, none)));
1531
+ box-shadow: var(--select-option-selected-hover-shadow, var(--select-option-selected-shadow, var(--select-option-shadow, none)));
1532
+ transform: var(--select-option-selected-hover-transform, var(--select-option-selected-transform, var(--select-option-transform, none)));
1514
1533
  }
1515
1534
 
1516
1535
  .option-container.active {
@@ -1818,6 +1837,16 @@ if (!customElements.get('select-option')) {
1818
1837
  * server-side selection, and full customization
1819
1838
  */
1820
1839
  class EnhancedSelect extends HTMLElement {
1840
+ get classMap() {
1841
+ return this._classMap;
1842
+ }
1843
+ set classMap(map) {
1844
+ this._classMap = map;
1845
+ this._setGlobalStylesMirroring(Boolean(this._optionRenderer || map));
1846
+ if (!this.isConnected)
1847
+ return;
1848
+ this._renderOptions();
1849
+ }
1821
1850
  constructor() {
1822
1851
  super();
1823
1852
  this._pageCache = {};
@@ -2291,6 +2320,9 @@ class EnhancedSelect extends HTMLElement {
2291
2320
  line-height: var(--select-option-line-height, 1.5);
2292
2321
  border: var(--select-option-border, none);
2293
2322
  border-bottom: var(--select-option-border-bottom, none);
2323
+ border-radius: var(--select-option-border-radius, 0);
2324
+ box-shadow: var(--select-option-shadow, none);
2325
+ transform: var(--select-option-transform, none);
2294
2326
  }
2295
2327
 
2296
2328
  .option:hover {
@@ -2302,6 +2334,20 @@ class EnhancedSelect extends HTMLElement {
2302
2334
  background-color: var(--select-option-selected-bg, #e0e7ff);
2303
2335
  color: var(--select-option-selected-color, #4338ca);
2304
2336
  font-weight: var(--select-option-selected-weight, 500);
2337
+ border: var(--select-option-selected-border, var(--select-option-border, none));
2338
+ border-bottom: var(--select-option-selected-border-bottom, var(--select-option-border-bottom, none));
2339
+ border-radius: var(--select-option-selected-border-radius, var(--select-option-border-radius, 0));
2340
+ box-shadow: var(--select-option-selected-shadow, var(--select-option-shadow, none));
2341
+ transform: var(--select-option-selected-transform, var(--select-option-transform, none));
2342
+ }
2343
+
2344
+ .option.selected:hover {
2345
+ background-color: var(--select-option-selected-hover-bg, var(--select-option-selected-bg, #e0e7ff));
2346
+ color: var(--select-option-selected-hover-color, var(--select-option-selected-color, #4338ca));
2347
+ border: var(--select-option-selected-hover-border, var(--select-option-selected-border, var(--select-option-border, none)));
2348
+ border-bottom: var(--select-option-selected-hover-border-bottom, var(--select-option-selected-border-bottom, var(--select-option-border-bottom, none)));
2349
+ box-shadow: var(--select-option-selected-hover-shadow, var(--select-option-selected-shadow, var(--select-option-shadow, none)));
2350
+ transform: var(--select-option-selected-hover-transform, var(--select-option-selected-transform, var(--select-option-transform, none)));
2305
2351
  }
2306
2352
 
2307
2353
  .option.active {
@@ -2459,6 +2505,19 @@ class EnhancedSelect extends HTMLElement {
2459
2505
  .option.selected {
2460
2506
  background-color: var(--select-dark-option-selected-bg, #3730a3);
2461
2507
  color: var(--select-dark-option-selected-text, #e0e7ff);
2508
+ border: var(--select-dark-option-selected-border, var(--select-option-selected-border, var(--select-option-border, none)));
2509
+ border-bottom: var(--select-dark-option-selected-border-bottom, var(--select-option-selected-border-bottom, var(--select-option-border-bottom, none)));
2510
+ box-shadow: var(--select-dark-option-selected-shadow, var(--select-option-selected-shadow, var(--select-option-shadow, none)));
2511
+ transform: var(--select-dark-option-selected-transform, var(--select-option-selected-transform, var(--select-option-transform, none)));
2512
+ }
2513
+
2514
+ .option.selected:hover {
2515
+ background-color: var(--select-dark-option-selected-hover-bg, var(--select-dark-option-selected-bg, #3730a3));
2516
+ color: var(--select-dark-option-selected-hover-color, var(--select-dark-option-selected-text, #e0e7ff));
2517
+ border: var(--select-dark-option-selected-hover-border, var(--select-dark-option-selected-border, var(--select-option-selected-hover-border, var(--select-option-selected-border, var(--select-option-border, none)))));
2518
+ border-bottom: var(--select-dark-option-selected-hover-border-bottom, var(--select-dark-option-selected-border-bottom, var(--select-option-selected-hover-border-bottom, var(--select-option-selected-border-bottom, var(--select-option-border-bottom, none)))));
2519
+ box-shadow: var(--select-dark-option-selected-hover-shadow, var(--select-dark-option-selected-shadow, var(--select-option-selected-hover-shadow, var(--select-option-selected-shadow, var(--select-option-shadow, none)))));
2520
+ transform: var(--select-dark-option-selected-hover-transform, var(--select-dark-option-selected-transform, var(--select-option-selected-hover-transform, var(--select-option-selected-transform, var(--select-option-transform, none)))));
2462
2521
  }
2463
2522
 
2464
2523
  .option.active {
@@ -3074,6 +3133,10 @@ class EnhancedSelect extends HTMLElement {
3074
3133
  const item = this._state.loadedItems[index];
3075
3134
  if (!item)
3076
3135
  return;
3136
+ // Keep active/focus styling aligned with the most recently interacted option.
3137
+ // Without this, a previously selected item may retain active classes/styles
3138
+ // after selecting a different option.
3139
+ this._state.activeIndex = index;
3077
3140
  const isCurrentlySelected = this._state.selectedIndices.has(index);
3078
3141
  if (this._config.selection.mode === 'single') {
3079
3142
  // Single select: clear previous and select new
@@ -3313,7 +3376,7 @@ class EnhancedSelect extends HTMLElement {
3313
3376
  }
3314
3377
  set optionRenderer(renderer) {
3315
3378
  this._optionRenderer = renderer;
3316
- this._setGlobalStylesMirroring(Boolean(renderer));
3379
+ this._setGlobalStylesMirroring(Boolean(renderer || this._classMap));
3317
3380
  this._renderOptions();
3318
3381
  }
3319
3382
  /**