@design.estate/dees-catalog 3.71.0 → 3.71.1

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.71.0",
3
+ "version": "3.71.1",
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.71.0',
6
+ version: '3.71.1',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  }
@@ -87,14 +87,24 @@ export class DeesTile extends DeesElement {
87
87
  color: var(--dees-color-text-secondary);
88
88
  }
89
89
 
90
- /* --- Content: the rounded inset --- */
90
+ /* --- Content: the rounded inset ---
91
+ Uses overflow-y: auto so that when a consumer (e.g. dees-modal) caps
92
+ the tile with max-height, long content scrolls inside the tile
93
+ instead of being clipped. For consumers without max-height
94
+ (e.g. dees-stepper), the tile grows with content and the scroll
95
+ never activates. Horizontal overflow stays clipped to preserve the
96
+ rounded corners. */
91
97
  .tile-content {
92
98
  flex: 1;
93
99
  position: relative;
94
100
  border-radius: 8px;
95
101
  border-top: 1px solid var(--dees-color-border-subtle);
96
102
  border-bottom: 1px solid var(--dees-color-border-subtle);
97
- overflow: hidden;
103
+ overflow-x: hidden;
104
+ overflow-y: auto;
105
+ overscroll-behavior: contain;
106
+ scrollbar-width: thin;
107
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
98
108
  }
99
109
 
100
110
  .tile-content.no-footer {
@@ -352,5 +352,80 @@ export const demoFunc = () => html`
352
352
  });
353
353
  }}>Test Responsive</dees-button>
354
354
  </div>
355
+
356
+ <div class="demo-section">
357
+ <h3>Scrollable Content</h3>
358
+ <p>When content exceeds the modal's max-height (<code>calc(100vh - 80px)</code>), the tile caps at that height and the content area scrolls inside. The heading and bottom buttons stay pinned.</p>
359
+ <div class="button-grid">
360
+ <dees-button @click=${() => {
361
+ DeesModal.createAndShow({
362
+ heading: 'Long Article',
363
+ width: 'medium',
364
+ content: html`
365
+ <h4 style="margin-top: 0;">Lorem ipsum dolor sit amet</h4>
366
+ ${Array.from({ length: 40 }, (_, i) => html`
367
+ <p>
368
+ <strong>§ ${i + 1}.</strong>
369
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do
370
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
371
+ enim ad minim veniam, quis nostrud exercitation ullamco laboris
372
+ nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
373
+ in reprehenderit in voluptate velit esse cillum dolore eu fugiat
374
+ nulla pariatur. Excepteur sint occaecat cupidatat non proident,
375
+ sunt in culpa qui officia deserunt mollit anim id est laborum.
376
+ </p>
377
+ `)}
378
+ `,
379
+ menuOptions: [{
380
+ name: 'Cancel',
381
+ action: async (modal) => modal!.destroy()
382
+ }, {
383
+ name: 'Accept',
384
+ action: async (modal) => modal!.destroy()
385
+ }],
386
+ });
387
+ }}>Long Article</dees-button>
388
+
389
+ <dees-button @click=${() => {
390
+ DeesModal.createAndShow({
391
+ heading: 'Long List',
392
+ width: 'small',
393
+ content: html`
394
+ <p>Selected items:</p>
395
+ <ul style="padding-left: 20px; margin: 0;">
396
+ ${Array.from({ length: 80 }, (_, i) => html`
397
+ <li style="padding: 4px 0;">Item ${i + 1} — option label</li>
398
+ `)}
399
+ </ul>
400
+ `,
401
+ menuOptions: [{
402
+ name: 'Done',
403
+ action: async (modal) => modal!.destroy()
404
+ }],
405
+ });
406
+ }}>Long List</dees-button>
407
+
408
+ <dees-button @click=${() => {
409
+ DeesModal.createAndShow({
410
+ heading: 'Tall Form',
411
+ width: 'medium',
412
+ content: html`
413
+ <dees-form>
414
+ ${Array.from({ length: 25 }, (_, i) => html`
415
+ <dees-input-text .label=${`Field ${i + 1}`}></dees-input-text>
416
+ `)}
417
+ </dees-form>
418
+ `,
419
+ menuOptions: [{
420
+ name: 'Cancel',
421
+ action: async (modal) => modal!.destroy()
422
+ }, {
423
+ name: 'Submit',
424
+ action: async (modal) => modal!.destroy()
425
+ }],
426
+ });
427
+ }}>Tall Form</dees-button>
428
+ </div>
429
+ </div>
355
430
  </div>
356
431
  `
@@ -271,13 +271,6 @@ export class DeesModal extends DeesElement {
271
271
  font-size: 14px;
272
272
  }
273
273
 
274
- .content {
275
- overflow-y: auto;
276
- overflow-x: hidden;
277
- overscroll-behavior: contain;
278
- scrollbar-width: thin;
279
- scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
280
- }
281
274
  .bottomButtons {
282
275
  display: flex;
283
276
  flex-direction: row;