likhon-dev commited on
Commit
005b911
·
verified ·
1 Parent(s): 0f6509a

Update js/app.js

Browse files
Files changed (1) hide show
  1. js/app.js +19 -3
js/app.js CHANGED
@@ -128,16 +128,32 @@ document.addEventListener('DOMContentLoaded', () => {
128
  const messageElement = document.createElement('div');
129
  messageElement.classList.add('message', `${sender}-message`);
130
  messageElement.textContent = content;
131
-
 
 
 
 
 
 
 
132
  // Add for screen readers
133
  messageElement.setAttribute('role', 'log');
134
  messageElement.setAttribute('aria-label', `${sender} message: ${content}`);
135
-
136
  chatMessages.appendChild(messageElement);
137
  messageElement.scrollIntoView({ behavior: 'smooth' });
138
  saveChat();
139
  }
140
 
 
 
 
 
 
 
 
 
 
141
  function showTypingIndicator() {
142
  typingIndicator.classList.remove('hidden');
143
  typingIndicator.scrollIntoView({ behavior: 'smooth' });
@@ -201,4 +217,4 @@ document.addEventListener('DOMContentLoaded', () => {
201
  function updateThemeButton() {
202
  themeToggle.innerHTML = `<i class="fas fa-${darkMode ? 'sun' : 'moon'}"></i>`;
203
  }
204
- });
 
128
  const messageElement = document.createElement('div');
129
  messageElement.classList.add('message', `${sender}-message`);
130
  messageElement.textContent = content;
131
+
132
+ // Add copy button
133
+ const copyButton = document.createElement('button');
134
+ copyButton.classList.add('copy-button');
135
+ copyButton.innerHTML = '<i class="fas fa-copy"></i>';
136
+ copyButton.addEventListener('click', () => copyToClipboard(content));
137
+ messageElement.appendChild(copyButton);
138
+
139
  // Add for screen readers
140
  messageElement.setAttribute('role', 'log');
141
  messageElement.setAttribute('aria-label', `${sender} message: ${content}`);
142
+
143
  chatMessages.appendChild(messageElement);
144
  messageElement.scrollIntoView({ behavior: 'smooth' });
145
  saveChat();
146
  }
147
 
148
+ function copyToClipboard(text) {
149
+ navigator.clipboard.writeText(text).then(() => {
150
+ showToast('Copied to clipboard!', 'success');
151
+ }).catch(err => {
152
+ console.error('Failed to copy: ', err);
153
+ showToast('Failed to copy. Please try again.', 'error');
154
+ });
155
+ }
156
+
157
  function showTypingIndicator() {
158
  typingIndicator.classList.remove('hidden');
159
  typingIndicator.scrollIntoView({ behavior: 'smooth' });
 
217
  function updateThemeButton() {
218
  themeToggle.innerHTML = `<i class="fas fa-${darkMode ? 'sun' : 'moon'}"></i>`;
219
  }
220
+ });