feat(dees-tile): add configurable overscroll handling to tile content and use it in modals

This commit is contained in:
2026-04-12 17:45:33 +00:00
parent b8a03def79
commit cd491e1517
4 changed files with 20 additions and 11 deletions

View File

@@ -1,5 +1,12 @@
# Changelog # Changelog
## 2026-04-12 - 3.75.0 - feat(dees-tile)
add configurable overscroll handling to tile content and use it in modals
- introduces a reflected overscroll property on dees-tile with contain, auto, and none options
- moves tile content scrolling and scrollbar styling into dees-tile instead of modal-specific styling
- updates dees-modal to enable contained overscroll through the new dees-tile API
## 2026-04-12 - 3.74.2 - fix(modal,tile,input-text) ## 2026-04-12 - 3.74.2 - fix(modal,tile,input-text)
move scroll handling from tile content to modal and update input text demo to use changeSubject subscriptions move scroll handling from tile content to modal and update input text demo to use changeSubject subscriptions

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@design.estate/dees-catalog', name: '@design.estate/dees-catalog',
version: '3.74.2', version: '3.75.0',
description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.' description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
} }

View File

@@ -45,6 +45,9 @@ export class DeesTile extends DeesElement {
@property({ type: String }) @property({ type: String })
accessor heading: string = ''; accessor heading: string = '';
@property({ type: String, reflect: true })
accessor overscroll: 'contain' | 'auto' | 'none' = 'auto';
@state() @state()
accessor hasFooter: boolean = false; accessor hasFooter: boolean = false;
@@ -100,7 +103,14 @@ export class DeesTile extends DeesElement {
border-radius: 8px; border-radius: 8px;
border-top: 1px solid var(--dees-color-border-subtle); border-top: 1px solid var(--dees-color-border-subtle);
border-bottom: 1px solid var(--dees-color-border-subtle); border-bottom: 1px solid var(--dees-color-border-subtle);
overflow: hidden; overflow-x: hidden;
overflow-y: auto;
scrollbar-width: thin;
scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
}
:host([overscroll="contain"]) .tile-content {
overscroll-behavior: contain;
} }
.tile-content.no-footer { .tile-content.no-footer {

View File

@@ -153,14 +153,6 @@ export class DeesModal extends DeesElement {
overscroll-behavior: contain; overscroll-behavior: contain;
} }
dees-tile::part(content) {
overflow-x: hidden;
overflow-y: auto;
overscroll-behavior: contain;
scrollbar-width: thin;
scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
}
dees-tile::part(outer) { dees-tile::part(outer) {
box-shadow: box-shadow:
0 0 0 1px ${cssManager.bdTheme('hsl(0 0% 0% / 0.03)', 'hsl(0 0% 100% / 0.03)')}, 0 0 0 1px ${cssManager.bdTheme('hsl(0 0% 0% / 0.03)', 'hsl(0 0% 100% / 0.03)')},
@@ -351,7 +343,7 @@ export class DeesModal extends DeesElement {
${minWidthStyle ? `dees-tile { min-width: ${minWidthStyle}; }` : ''} ${minWidthStyle ? `dees-tile { min-width: ${minWidthStyle}; }` : ''}
</style> </style>
<div class="modalContainer" @click=${this.handleOutsideClick} style="z-index: ${this.modalZIndex}"> <div class="modalContainer" @click=${this.handleOutsideClick} style="z-index: ${this.modalZIndex}">
<dees-tile class="${widthClass} ${mobileFullscreenClass}"> <dees-tile class="${widthClass} ${mobileFullscreenClass}" .overscroll=${'contain'}>
<div slot="header" class="heading"> <div slot="header" class="heading">
<div class="heading-text">${this.heading}</div> <div class="heading-text">${this.heading}</div>
<div class="header-buttons"> <div class="header-buttons">