UNPKG

petals-ui

Version:
68 lines (67 loc) 3.01 kB
import { isString, isFunction, isPlainObject, noop, mixin } from '@ntks/toolbox'; function resolveButtonProps(button) { if (isString(button)) { return { text: button }; } return (isFunction(button) ? { handler: button } : button); } function generateShortcutMethod(defaultOptions, callback) { return (content, optsOrTitleOrHandler, optsOrHandler, options) => { let resolvedTitle = ''; let resolvedAffirmButtonHandler = noop; let resolvedDenyButtonHandler = noop; let resolvedOptions; if (options) { resolvedOptions = isPlainObject(options) ? options : {}; } if (optsOrHandler) { if (!resolvedOptions && isPlainObject(optsOrHandler)) { resolvedOptions = optsOrHandler; } else if (isFunction(optsOrHandler)) { resolvedDenyButtonHandler = optsOrHandler; } } if (optsOrTitleOrHandler) { if (!resolvedOptions && isPlainObject(optsOrTitleOrHandler)) { resolvedOptions = optsOrTitleOrHandler; } else if (isFunction(optsOrTitleOrHandler)) { resolvedAffirmButtonHandler = optsOrTitleOrHandler; } else if (isString(optsOrTitleOrHandler)) { resolvedTitle = optsOrTitleOrHandler; } } if (!resolvedOptions) { resolvedOptions = {}; } const affirmButton = resolvedAffirmButtonHandler === noop ? {} : { handler: resolvedAffirmButtonHandler }; const denyButton = resolvedDenyButtonHandler === noop ? {} : { handler: resolvedDenyButtonHandler }; const defaultAffirmButton = defaultOptions.affirmButton ? resolveButtonProps(defaultOptions.affirmButton) : {}; const defaultDenyButton = defaultOptions.denyButton ? resolveButtonProps(defaultOptions.denyButton) : {}; const resolvedAffirmButton = resolvedOptions.affirmButton ? resolveButtonProps(resolvedOptions.affirmButton) : {}; const resolvedDenyButton = resolvedOptions.denyButton ? resolveButtonProps(resolvedOptions.denyButton) : {}; const mergedOptions = mixin(true, {}, defaultOptions, { title: resolvedTitle || defaultOptions.title, content, lazy: false, centered: false }, resolvedOptions); mergedOptions.affirmButton = mixin({}, defaultAffirmButton, affirmButton, resolvedAffirmButton); mergedOptions.denyButton = mixin({}, defaultDenyButton, denyButton, resolvedDenyButton); callback(mergedOptions); }; } function generateAlert(callback) { return generateShortcutMethod({ title: '提示', affirmButton: '知道了' }, callback); } function generateConfirm(callback) { return generateShortcutMethod({ title: '提示', affirmButton: '确定', denyButton: '取消' }, callback); } export { generateAlert, generateConfirm };