@design.estate/dees-catalog 3.61.0 → 3.61.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design.estate/dees-catalog",
3
- "version": "3.61.0",
3
+ "version": "3.61.2",
4
4
  "private": false,
5
5
  "description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
6
6
  "main": "dist_ts_web/index.js",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '3.61.0',
6
+ version: '3.61.2',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  }
@@ -9,6 +9,7 @@ import {
9
9
  } from '@design.estate/dees-element';
10
10
  import { DeesInputBase } from '../dees-input-base/dees-input-base.js';
11
11
  import '../../00group-utility/dees-icon/dees-icon.js';
12
+ import '../../00group-layout/dees-tile/dees-tile.js';
12
13
  import { demoFunc } from './dees-input-list.demo.js';
13
14
  import { themeDefaultStyles } from '../../00theme.js';
14
15
 
@@ -119,26 +120,19 @@ export class DeesInputList extends DeesInputBase<DeesInputList> {
119
120
  width: 100%;
120
121
  }
121
122
 
122
- .list-container {
123
- background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(0 0% 3.9%)')};
124
- border: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
125
- border-radius: 6px;
126
- overflow: hidden;
127
- transition: all 0.15s ease;
123
+ dees-tile:hover::part(outer) {
124
+ border-color: var(--dees-color-border-strong);
128
125
  }
129
126
 
130
- .list-container:hover:not(.disabled) {
131
- border-color: ${cssManager.bdTheme('hsl(0 0% 79.8%)', 'hsl(0 0% 20.9%)')};
132
- }
133
-
134
- .list-container:focus-within {
127
+ dees-tile:focus-within::part(outer) {
135
128
  border-color: ${cssManager.bdTheme('hsl(222.2 47.4% 51.2%)', 'hsl(217.2 91.2% 59.8%)')};
136
129
  box-shadow: 0 0 0 3px ${cssManager.bdTheme('hsl(222.2 47.4% 51.2% / 0.1)', 'hsl(217.2 91.2% 59.8% / 0.1)')};
137
130
  }
138
131
 
139
- .list-container.disabled {
132
+ :host([disabled]) dees-tile {
140
133
  opacity: 0.6;
141
134
  cursor: not-allowed;
135
+ pointer-events: none;
142
136
  }
143
137
 
144
138
  .list-items {
@@ -151,8 +145,8 @@ export class DeesInputList extends DeesInputBase<DeesInputList> {
151
145
  align-items: center;
152
146
  gap: 6px;
153
147
  padding: 6px 10px;
154
- border-bottom: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
155
- background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(0 0% 3.9%)')};
148
+ border-bottom: 1px solid var(--dees-color-border-subtle);
149
+ background: transparent;
156
150
  transition: transform 0.2s ease, background 0.15s ease, box-shadow 0.15s ease;
157
151
  position: relative;
158
152
  overflow: hidden;
@@ -163,7 +157,7 @@ export class DeesInputList extends DeesInputBase<DeesInputList> {
163
157
  }
164
158
 
165
159
  .list-items:not(.is-dragging) .list-item:hover:not(.disabled) {
166
- background: ${cssManager.bdTheme('hsl(0 0% 97.5%)', 'hsl(0 0% 6.9%)')};
160
+ background: var(--dees-color-row-hover);
167
161
  }
168
162
 
169
163
  /* Dragging item - follows cursor */
@@ -201,6 +195,14 @@ export class DeesInputList extends DeesInputBase<DeesInputList> {
201
195
  flex-shrink: 0;
202
196
  }
203
197
 
198
+ .item-bullet {
199
+ width: 14px;
200
+ height: 14px;
201
+ color: var(--dees-color-text-muted);
202
+ flex-shrink: 0;
203
+ opacity: 0.5;
204
+ }
205
+
204
206
  .drag-handle {
205
207
  display: flex;
206
208
  align-items: center;
@@ -303,8 +305,6 @@ export class DeesInputList extends DeesInputBase<DeesInputList> {
303
305
  display: flex;
304
306
  gap: 6px;
305
307
  padding: 6px 10px;
306
- background: ${cssManager.bdTheme('hsl(0 0% 97.5%)', 'hsl(0 0% 6.9%)')};
307
- border-top: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
308
308
  }
309
309
 
310
310
  .add-input {
@@ -442,7 +442,7 @@ export class DeesInputList extends DeesInputBase<DeesInputList> {
442
442
  <div class="input-wrapper">
443
443
  ${this.label ? html`<dees-label .label=${this.label} .required=${this.required}></dees-label>` : ''}
444
444
 
445
- <div class="list-container ${this.disabled ? 'disabled' : ''}">
445
+ <dees-tile .heading="${this.value.length} item${this.value.length !== 1 ? 's' : ''}">
446
446
  <div class="list-items">
447
447
  ${this.value.length > 0 ? this.value.map((item, index) => html`
448
448
  <div
@@ -458,13 +458,15 @@ export class DeesInputList extends DeesInputBase<DeesInputList> {
458
458
  <dees-icon .icon=${'lucide:gripVertical'}></dees-icon>
459
459
  </div>
460
460
  ` : ''}
461
-
461
+
462
462
  ${this.candidates.length > 0 ? html`
463
463
  ${this.candidates.some(c => c.viewKey === item) ? html`
464
464
  <dees-icon class="candidate-check" .icon=${'lucide:check'}></dees-icon>
465
465
  ` : html`
466
466
  <dees-icon class="candidate-unknown" .icon=${'lucide:helpCircle'}></dees-icon>
467
467
  `}
468
+ ` : !this.sortable || this.disabled ? html`
469
+ <dees-icon class="item-bullet" .icon=${'lucide:dot'}></dees-icon>
468
470
  ` : ''}
469
471
 
470
472
  <div class="item-content">
@@ -512,7 +514,7 @@ export class DeesInputList extends DeesInputBase<DeesInputList> {
512
514
  </div>
513
515
 
514
516
  ${!this.disabled && (!this.maxItems || this.value.length < this.maxItems) ? html`
515
- <div class="add-item-container">
517
+ <div slot="footer" class="add-item-container">
516
518
  <div class="autocomplete-wrapper">
517
519
  ${this.ghostText ? html`
518
520
  <span class="ghost-text">
@@ -538,7 +540,7 @@ export class DeesInputList extends DeesInputBase<DeesInputList> {
538
540
  </button>
539
541
  </div>
540
542
  ` : ''}
541
- </div>
543
+ </dees-tile>
542
544
 
543
545
  ${this.validationText ? html`
544
546
  <div class="validation-message">${this.validationText}</div>
@@ -663,11 +665,13 @@ export class DeesInputList extends DeesInputBase<DeesInputList> {
663
665
  this.currentCandidateIndex = -1;
664
666
  this.matchingCandidates = [];
665
667
  this.validationText = '';
666
-
667
- const input = this.shadowRoot?.querySelector('.add-input') as HTMLInputElement;
668
- if (input) { input.value = ''; input.focus(); }
669
-
670
668
  this.emitChange();
669
+
670
+ // Re-focus input after Lit re-renders
671
+ this.updateComplete.then(() => {
672
+ const input = this.shadowRoot?.querySelector('.add-input') as HTMLInputElement;
673
+ if (input) { input.value = ''; input.focus(); }
674
+ });
671
675
  }
672
676
 
673
677
  /**
@@ -706,15 +710,13 @@ export class DeesInputList extends DeesInputBase<DeesInputList> {
706
710
  this.value = [...this.value, trimmedValue];
707
711
  this.inputValue = '';
708
712
  this.validationText = '';
709
-
710
- // Clear the input
711
- const input = this.shadowRoot?.querySelector('.add-input') as HTMLInputElement;
712
- if (input) {
713
- input.value = '';
714
- input.focus();
715
- }
716
-
717
713
  this.emitChange();
714
+
715
+ // Re-focus input after Lit re-renders
716
+ this.updateComplete.then(() => {
717
+ const input = this.shadowRoot?.querySelector('.add-input') as HTMLInputElement;
718
+ if (input) { input.value = ''; input.focus(); }
719
+ });
718
720
  }
719
721
 
720
722
  private startEdit(index: number) {
@@ -338,6 +338,7 @@ export class DeesIcon extends DeesElement {
338
338
  justify-content: center;
339
339
  line-height: 1;
340
340
  vertical-align: middle;
341
+ pointer-events: none;
341
342
  }
342
343
 
343
344
  /* Improve rendering performance */