import { html, css } from '@design.estate/dees-element'; import '@design.estate/dees-wcctools/demotools'; import '../dees-panel.js'; import './dees-input-profilepicture.js'; import type { DeesInputProfilePicture } from './dees-input-profilepicture.js'; export const demoFunc = () => html`
{ // Basic demo with round profile picture const roundProfile = elementArg.querySelector('dees-input-profilepicture[shape="round"]'); if (roundProfile) { roundProfile.addEventListener('change', (event: CustomEvent) => { const target = event.target as DeesInputProfilePicture; console.log('Round profile picture changed:', target.value?.substring(0, 50) + '...'); }); } }}>
{ // Different sizes demo const profiles = elementArg.querySelectorAll('dees-input-profilepicture'); profiles.forEach((profile) => { profile.addEventListener('change', (event: CustomEvent) => { const target = event.target as DeesInputProfilePicture; console.log(`Profile (size ${target.size}) changed`); }); }); }}>
{ // Pre-filled profile with placeholder const sampleImageUrl = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZGllbnQiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjEwMCUiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjNjY3ZWVhIiAvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM3NjRiYTIiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICA8cmVjdCB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0idXJsKCNncmFkaWVudCkiIC8+CiAgPHRleHQgeD0iNTAlIiB5PSI1MCUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSI4MCIgZmlsbD0id2hpdGUiPkpEPC90ZXh0Pgo8L3N2Zz4='; const prefilledProfile = elementArg.querySelector('#prefilled-profile') as DeesInputProfilePicture; if (prefilledProfile) { prefilledProfile.value = sampleImageUrl; prefilledProfile.addEventListener('change', (event: CustomEvent) => { const target = event.target as DeesInputProfilePicture; const output = elementArg.querySelector('#prefilled-output'); if (output) { output.textContent = target.value ? `Image data: ${target.value.substring(0, 80)}...` : 'No image selected'; } }); } }}>
Image data will appear here when changed
{ // Disabled state demo const disabledProfile = elementArg.querySelector('#disabled-profile') as DeesInputProfilePicture; if (disabledProfile) { disabledProfile.value = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cmVjdCB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0iI2NjY2NjYyIgLz4KICA8dGV4dCB4PSI1MCUiIHk9IjUwJSIgZG9taW5hbnQtYmFzZWxpbmU9Im1pZGRsZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjYwIiBmaWxsPSJ3aGl0ZSI+TkE8L3RleHQ+Cjwvc3ZnPg=='; } }}>
  • Image Upload: Click to upload or drag & drop images
  • Image Cropping: Interactive crop tool with resize handles
  • Shape Support: Round or square profile pictures
  • Size Customization: Adjustable dimensions
  • Preview & Edit: Hover overlay with edit and delete options
  • File Validation: Format and size restrictions
  • Responsive Design: Works on desktop and mobile devices
  • Form Integration: Standard form value binding and validation
  • Accessibility: Keyboard navigation and screen reader support
  • Z-Index Management: Proper modal stacking with registry
Supported Formats: JPEG, PNG, WebP
Max File Size: 5MB (configurable)
Output Format: Base64 encoded JPEG
`;