/* * deposit-copy.js — 납부 안내의 계좌번호 · 입금자명 [복사] (입찰 · 비입찰 공통, QA-172). * 모든 현장 head(common/fragments :: header)가 불러온다. 모양은 common/css/deposit-copy.css. * 원래 입찰 화면(bid-view.js copyBidText)에만 있던 것을 비입찰 납부 안내도 같이 쓰도록 옮겼다. */ /** * [복사] 단추. 복사할 글자는 단추의 data-copy. * navigator.clipboard 는 보안 맥락에서만 되므로 실패하면 textarea + execCommand 로 한다(common.js copyToClipboard 방식). */ function copyText(btn) { const text = btn.getAttribute('data-copy'); const done = function () { const origin = btn.textContent; btn.textContent = '복사됨'; setTimeout(function () { btn.textContent = origin; }, 1200); }; const fallback = function () { const area = document.createElement('textarea'); area.value = text; area.setAttribute('readonly', ''); area.style.position = 'fixed'; area.style.opacity = '0'; document.body.appendChild(area); area.select(); document.execCommand('copy'); document.body.removeChild(area); done(); }; if (!navigator.clipboard) { fallback(); return; } navigator.clipboard.writeText(text).then(done, fallback); } /** 값 칸에 글자를 넣고 옆 [복사] 단추가 복사할 글자도 같이 바꾼다 */ function setCopyText(valueEl, text) { $(valueEl).text(text).siblings('.copy-btn').attr('data-copy', text); } /** * 비입찰 납부 안내(현장 fragments 의 depositGuide)의 입금자명 칸. * 서버가 만든 실제 입금자명(BidService.depositName — 어드민 입금 대사와 같은 조합, 개인 · 법인 같은 규칙 QA-188)이 오면 값 + [복사] 와 괄호 규칙을, * 안 오면(쿠키로 보인 내역 등) 지금까지의 규칙 글 + 예시를 보인다. 입찰 현장의 납부 안내는 fillBidDepositGuide 가 채운다. */ function showDepositName(depositName) { const dd = $('#depositMsgContainer .deposit-name-dd'); dd.toggleClass('has-name', !!depositName); setCopyText(dd.find('.deposit-name'), depositName || ''); }