-
🌐 async-utils.jsWeb, 3.69 kB⬇
-
🌐 auth-storage.jsWeb, 735 B⬇
-
🌐 chat-helpers.jsWeb, 8.85 kB⬇
-
🌐 chat-renderer.jsWeb, 70.00 kB⬇
-
🌐 code-overlay.jsWeb, 21.77 kB⬇
-
🌐 confirm-dialog.jsWeb, 3.17 kB⬇
-
🌐 conversation-format-utils.jsWeb, 21.51 kB⬇
-
🌐 diagram-overlay.jsWeb, 7.93 kB⬇
-
🌐 dialog.jsWeb, 2.50 kB⬇
-
🌐 dom-utils.jsWeb, 8.33 kB⬇
-
🌐 drag-reorder.jsWeb, 4.82 kB⬇
-
🌐 elements.jsWeb, 11.06 kB⬇
-
🌐 export-utils.jsWeb, 1.53 kB⬇
-
🌐 format-utils.jsWeb, 29.60 kB⬇
-
🌐 history-navigation.jsWeb, 1.95 kB⬇
-
🌐 hljs-yaml.jsWeb, 5.07 kB⬇
-
🌐 inline-format.jsWeb, 7.35 kB⬇
-
🌐 instant-answer.jsWeb, 19.82 kB⬇
-
🌐 interactive-tools.jsWeb, 38.77 kB⬇
-
🌐 mermaid-fixes.jsWeb, 4.60 kB⬇
-
🌐 mermaid-render.jsWeb, 5.10 kB⬇
-
🌐 mermaid.jsWeb, 195 B⬇
-
🌐 migrations.jsWeb, 12.11 kB⬇
-
🌐 multi-choice-dialog.jsWeb, 1.33 kB⬇
-
🌐 notification-stack.jsWeb, 2.50 kB⬇
-
🌐 options-manager.jsWeb, 45.56 kB⬇
-
🌐 overlay-utils.jsWeb, 4.14 kB⬇
-
🌐 pdf-export.jsWeb, 23.59 kB⬇
-
🌐 pinch-zoom.jsWeb, 3.21 kB⬇
-
🌐 plugin-dialog.jsWeb, 2.17 kB⬇
-
🌐 read-aloud.jsWeb, 33.84 kB⬇
-
🌐 response-pipeline.jsWeb, 55.19 kB⬇
-
🌐 scratchpad-editor.jsWeb, 8.64 kB⬇
-
🌐 scratchpad-export.jsWeb, 3.56 kB⬇
-
🌐 scrollbars.jsWeb, 3.12 kB⬇
-
🌐 selection-manager.jsWeb, 3.76 kB⬇
-
🌐 settings-utils.jsWeb, 31.08 kB⬇
-
🌐 share.jsWeb, 10.75 kB⬇
-
🌐 side-drawer.jsWeb, 9.37 kB⬇
-
🌐 speech-text.jsWeb, 6.60 kB⬇
-
🌐 swipe-navigation.jsWeb, 6.16 kB⬇
-
🌐 table-overlay.jsWeb, 8.10 kB⬇
-
🌐 theme-utils.jsWeb, 8.34 kB⬇
-
🌐 thinking-panel-base.jsWeb, 14.88 kB⬇
-
🌐 ui-sets.jsWeb, 1.00 kB⬇
-
🌐 version-overlay.jsWeb, 4.63 kB⬇
/**
* Custom confirmation and alert modal dialogs, built by the openDialog utility.
*/
import { openDialog } from './dialog.js';
/**
* Displays an asynchronous confirmation modal.
* @param {string} title - Dialog title.
* @param {string} text - Dialog description / message.
* @param {string} [yes_caption='Yes'] - Confirm button text.
* @param {string} [no_caption='No'] - Cancel button text.
* @param {string} [note=''] - Optional smaller-text note below the message.
* @returns {Promise<boolean>} Resolves to true if confirmed, false otherwise.
*/
export function customConfirm(title, text, yes_caption = 'Yes', no_caption = 'No', note = '') {
return new Promise((resolve) => {
const content = document.createElement('div');
const text_el = document.createElement('p');
text_el.style.whiteSpace = 'pre-line';
text_el.textContent = text || '';
content.appendChild(text_el);
if (note) {
const note_el = document.createElement('p');
note_el.className = 'confirm-note';
note_el.textContent = note;
content.appendChild(note_el);
}
let result = false;
openDialog({
title,
content,
buttons: [
{ caption: yes_caption, onclick: (close) => { result = true; close(); } },
{ caption: no_caption, onclick: (close) => close() }
],
// Escape dismisses as "No", like the original handler
on_escape: () => {
result = false;
return true;
},
on_close: () => resolve(result)
});
});
}
/**
* Builds the delete-dialog note about shared copies: set when any of the
* items has a shared copy, since deleting them also deletes those copies
* and their public links.
* @param {Object} callbacks - App callbacks; provides count_shared_copies.
* @param {string[]} guids - The conversation guids about to be deleted.
* @param {string} label - Singular noun for the items ('conversation', 'scratchpad', 'tool').
* @returns {Promise<string>} The note text, or '' when nothing is shared.
*/
export async function shared_copies_note(callbacks, guids, label) {
if (!callbacks?.count_shared_copies) return '';
const shared = await callbacks.count_shared_copies(guids);
if (shared === 0) return '';
if (guids.length === 1) {
return `This ${label} has a shared copy. Deleting it also deletes the shared copy, and the share link stops working.`;
}
const verb = shared === 1 ? 'has' : 'have';
const pronoun = shared === 1 ? 'it' : 'them';
return `${shared} of the selected ${label}s ${verb} a shared copy. Deleting also removes ${pronoun}, and the share links stop working.`;
}
/**
* Displays an asynchronous alert modal dialog.
* @param {string} title - Dialog title.
* @param {string} text - Dialog message.
* @param {string} [ok_caption='OK'] - Dismiss button text.
* @returns {Promise<void>} Resolves when dismissed.
*/
export function customAlert(title, text, ok_caption = 'OK') {
return new Promise((resolve) => {
const content = document.createElement('div');
const text_el = document.createElement('p');
text_el.style.whiteSpace = 'pre-line';
text_el.textContent = text || '';
content.appendChild(text_el);
openDialog({
title,
content,
buttons: [{ caption: ok_caption, onclick: (close) => close() }],
on_close: () => resolve()
});
});
}
confirm-dialog.js
×
Type: Web, text/x-java
3.17 Kilobytes
Last Modified 2026-11-04 09:48:28
⬇ Download File
Type: Web, text/x-java
3.17 Kilobytes
Last Modified 2026-11-04 09:48:28
⬇ Download File