UNPKG

hot-form

Version:

A project developed based on ant-design-vue and vant whitch do some things on create/render/modify and etc. for forms. Also can custom some component on the form items if you want. 一个基于antdv/vant开发的创建表单组件,包含表单渲染、表单编辑页面、以及植入自定义附加内容的组件

113 lines (108 loc) 5.12 kB
const mobileConfig = { toolbar: 'undo redo bold italic underline forecolor fontsizeselect styleselect table image link media fullscreen', toolbar_mode: 'scrolling', }; const basicConfig = { mobile: mobileConfig, suffix: '.min', relative_urls: false, // 禁止自动转为相对路径(URL 将会自动转换为基于 document_base_url 的绝对路径) language: 'zh_CN', style_formats_merge: true, // 允许 style_formats 覆盖文本样式 images_reuse_filename: true, // 使用图片的实际文件名 contextmenu: false, // 禁用富文本的右键菜单 paste_retain_style_properties: 'all', // 粘贴时保留所有样式 paste_word_valid_elements: '*[*]', // 保留 word 样式 paste_data_images: false, // TODO: 粘贴的同时把内容里的图片自动上传 paste_webkit_styles: 'all', // 保留 webkit 样式 // branding: false, // 禁止右下角标识 forced_root_block: false, // 强制根节点块元素 remove_redundant_brs: false, valid_elements: "br", // 有效元素 verify_html: false, convert_urls: false, // 插入路径 theme_advanced_link_targets: '_self', // 超链接默认 image_title: true, image_advtab: true, // 为图片添加高级选项设置 automatic_uploads: true, // nonbreaking_force_tab: true, autosave_interval: '20s', // 自动保存时长 autosave_retention: '60m', // 本地存储时间上限 pagebreak_split_block: true, // 分页符 file_picker_types: 'file image media', // 文件上传的类型(将开启浏览本地文件的选项) font_formats: ` 宋体=SimSun; 黑体=SimHei; 仿宋=FangSong; 楷体=KaiTi; 微软雅黑=Microsoft YaHei; Arial=arial,helvetica,sans-serif; Comic Sans MS=comic sans ms,sans-serif; Courier New=courier new,courier; Georgia=georgia,palatino; Helvetica=helvetica; Symbol=symbol; Tahoma=tahoma,arial,helvetica,sans-serif; Times New Roman=times new roman,times; Wingdings=wingdings,zapf dingbats `, fontsize_formats: '初号=44pt 小初=36pt 一号=26pt 小一=24pt 二号=22pt 小二=18pt 三号=16pt 小三=15pt 四号=14pt 小四=12pt 五号=10.5pt 小五=9pt', formats: { p: { selector: 'p, span, a', styles: { textIndent: '2em', fontSize: '14pt', lineHeight: '1.5', margin: '0' }, }, }, // 粘贴事件(处理图片防盗链问题) paste_postprocess: (pl, o) => { // 图片标签 // let imgs = o.node.getElementsByTagName('img'); let allElements = o.node.getElementsByTagName('*'); for (let i = 0; i < allElements.length; i++) { let img = allElements[i].nodeName.toLowerCase() === 'img'; // 获取富文本框所有段落 let section = allElements[i].nodeName.toLowerCase() === 'section' || 'p'; // `style` 上的 `background-image` 属性 let mainlyBackImg = allElements[i].style.backgroundImage; // console.log(mainlyBackImg); // `CSS` 上的 `background-image` 属性 // let cssBackImg = allElements[i].getAttribute('background-image'); // console.log(mainlyBackImg.split('://')); if (section && allElements[i].style.textIndent) allElements[i].style.textIndent = '0'; // 处理标签图片防盗链 if (img && allElements[i].getAttribute('src').split('://').length > 1) allElements[i].setAttribute('src', `https://images.weserv.nl/?url=${allElements[i].getAttribute('src')}`); // TODO: 处理背景图片防盗链(gif图片无法完成) if (mainlyBackImg && mainlyBackImg.split('://').length > 1) { let imgArr = mainlyBackImg.split('://'); imgArr[0] = imgArr[0].replace(/url\(("|')/, match => `${match}https://images.weserv.nl/?url=`); allElements[i].style.backgroundImage = imgArr.join('://'); } // console.log(o.node); } /* console.log(o.node.getElementsByTagName('*')[0].getAttribute('background-image')); for (let i = 0; i < imgs.length; i++) { console.log(imgs[i]); if (imgs[i].getAttribute('src').split('://').length > 1) imgs[i].setAttribute('src', `https://images.weserv.nl/?url=${imgs[i].getAttribute('src')}`); } */ }, }; export const classicConfig = Object.freeze({ ...basicConfig, plugins: 'paste lists advlist nonbreaking table autolink link image media imagetools charmap print preview anchor searchreplace code pagebreak insertdatetime wordcount fullscreen help', menubar: 'file edit insert view format table tools help', toolbar: 'undo redo | fontselect fontsizeselect | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | numlist bullist | table image link unlink media fullscreen', // Note: v5.2.x `toolbar_mode` default is 'wrap' toolbar_mode: 'sliding', min_height: 480, help_tabs: ['shortcuts'], }); export const inlineConfig = Object.freeze({ ...basicConfig, inline: true, plugins: ['quickbars'], toolbar: false, menubar: false, });