import { openSheet } from './sheet.js'; import { iconHtml } from './ui-icon.js'; import { showToast } from '../services/channels-ux.js'; // «Поделиться записью / комментарием»: что именно отправляется, ссылка и «Скопировать ссылку». // Системное меню «Поделиться» — вторым действием, если браузер его умеет. export function openShareSheet({ title = 'Поделиться', kicker = '', text = '', url = '' } = {}) { return openSheet({ title, className: 'share-sheet', content: (sheet) => { const wrap = document.createElement('div'); wrap.className = 'share-sheet__content'; const preview = document.createElement('div'); preview.className = 'share-sheet__preview'; const k = document.createElement('strong'); k.textContent = kicker; const t = document.createElement('p'); t.textContent = text; preview.append(k, t); const label = document.createElement('label'); label.className = 'share-sheet__label'; label.textContent = 'Ссылка'; const field = document.createElement('input'); field.className = 'share-sheet__link'; field.readOnly = true; field.value = url; field.addEventListener('focus', () => field.select()); label.append(field); const copy = document.createElement('button'); copy.type = 'button'; copy.className = 'primary-btn share-sheet__copy'; copy.innerHTML = `${iconHtml('copy')}Скопировать ссылку`; copy.addEventListener('click', async () => { try { await navigator.clipboard.writeText(url); showToast('Ссылка скопирована'); sheet.close(); } catch { field.focus(); field.select(); showToast('Выделил ссылку – скопируйте её вручную', { kind: 'error' }); } }); wrap.append(preview, label, copy); if (navigator.share) { const system = document.createElement('button'); system.type = 'button'; system.className = 'secondary-btn share-sheet__system'; system.innerHTML = `${iconHtml('share')}Другое приложение…`; system.addEventListener('click', async () => { try { await navigator.share({ title: kicker, text, url }); sheet.close(); } catch { /* отменили */ } }); wrap.append(system); } return wrap; }, }); }