#36882021年8月10日作者 mingxin-yang2 个回答
我 https://grapesjs.com/docs/modules/Components.html#define-custom-component-type 读了这份文档,并尝试编写以下代码。我想让“mj-body”无法删除: 但我看不到效果,请帮帮我
artf
这样做 'isComponent: el => (el.tagName ||'').toLowerCase() === 'mj-body','
ClaudeCode
谢谢你举报,@mingxin阳。 关于如何自定义组件的好问题。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed'...
#36872021年8月10日作者 Joshmamroud4 个回答
版本: 0.17.22 你能重现演示中的bug吗?[ ] 是的[X] 不 我无法在演示中复现,但你可以用以下凭证登录[Documint](https://app.documint.me)亲自观看:电子邮件: [email protected]: 演示 然后修改模板,试试用“ctrl+z”。 预期的行为是什么? 应该能使用映射的快捷键(比如 Ctrl+Z),但它们不起作用。 目前的行为是什么? 键映射是注册的,但它们无法使用。当我运行 'keymaps.getAll()' 时,会看到所有默认的 keymaps 列表。当我听到键位映射的发射时,我什么都没有。当我通过配置添加自定义键位映射(比如“alt+u”),或者在初始化时添加时,...
Joshmamroud
你说得对,不是React或GrapesJS。事件传播被我使用的[rc-drawer](https://github.com/react-component/drawer)组件阻止了。@artf谢谢你的帮助,这个问题从一开始就存在。
artf
嘿,@Joshmamroud我们有[代码](https://github.com/artf/grapesjs/blob/75be5144a95488e557afabeca8ae50da8e15c60a/src/canvas/view/FrameView.js#L432-L444)可以将“keydown keyup keypress”事件传播到父文档,这样可以让keymaps正常工作,但一定要确保不包含任何阻止这些事件传播的代码或组件。
Joshmamroud
嘿,@artf,我觉得这可能被React屏蔽了。有什么建议能重新绑定这些活动听众吗?甚至不确定这是不是正确的解决方案或路径。
#36852021年8月9日作者 throne19861 个回答
大家,我是葡萄新手,我想在组件更改时展示样式管理器,这是我的组件以及我如何添加它,另外我想在资产管理器中输入视频  遗憾的是,样式管理器和视频类型都没有添加,有人能告诉我如何正确地把这些功能添加到我的配置中吗?我用的是 reactjs
ClaudeCode
谢谢你举报,@throne1986。 关于showStylesOnChange不起作用的好问题。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('s...
#36832021年8月9日作者 mingxin-yang4 个回答

mingxin-yang
https://grapesjs.com/docs/modules/Components.html#define-custom-component-type,这个?@artf
artf
要一键启用富文本编辑器,可以通过这种方式扩展原始文本组件 “''js 编辑。Components.addType('text', { 浏览量:{ 事件:{ input: 'onInput', // 保留原始的 on input 事件,该事件更新 RTE 工具栏位置 点击:“enableRte”, }, enableRte() { this.onActive() } }, }); ```
artf
我建议创建一个自定义组件,并将“removable”属性设置为“false”
#36812021年8月7日作者 Joshmamroud4 个回答
版本: 0.17.22 你能重现演示中的bug吗?[X] 是的[ ] 不 预期的行为是什么? 应该能够将文本元素放入自定义组件中,从而扩展文本组件 目前的行为是什么? 不能把可文本的组件放进一个扩展文本组件的自定义组件里 你能附上截图、截屏或实时演示吗? [演示](https://codesandbox.io/s/compassionate-andras-8h8m4?file=/index.js)[X] 是的(附上)[ ] 不
artf
嘿@Joshmamroud这里其实有个关于文本成分的普遍问题 #2771
Joshmamroud
谢谢你,@artf。我觉得我的问题更多是自定义组件,它扩展了文本组件。Textable在原始文本组件中工作正常,但当我尝试创建自己的自定义文本组件时,就遇到了问题。不仅仅是Textable,我注意到扩展文本组件也会失去一些其他功能。我现在一时想不起具体的。是不是我在扩展文本部分方面做错了什么?
artf
从你的演示来看,我没看到扩展的“文本”部分有问题,只有与文本相关的问题
#36792021年8月6日作者 imouou2 个回答
感谢#3673 我收到了一个新的bug反馈。 版本:。 0.17.22 你能重现演示中的bug吗?[ ] 是的[ ] 不 预期的行为是什么? 我希望默认宽度是移动设备的宽度,所以我设置了最小宽度优先级,但选择框默认显示的是移动宽度,页面宽度没有变化。我用的是editor.setDevice('Mobile');是的,但在新页面管理中,新页面也是一样的,我继续用这个方法是无效的,所以我觉得应该有更好的处理方式。 详细描述那个漏洞 目前的行为是什么? 详细描述那个漏洞 你能附上截图、截屏或实时演示吗?[ ] 是的(附上)[ ] 不 ; editor.setDevice(“移动”); 在下一个版本中,我会在设备管理器配置中添加“默认”选项 “''js deviceManager: { 启动时选择的设备“id”如果未标示,将使用“设备”中最先可用的ID。 默认:“移动”, 设备:[...], }, ```
ClaudeCode
谢谢你举报,@imouou。 设备宽度默认无效的问题似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这有助于团队更快识别根本原因 在报告中包含 Gr...
#36752021年8月5日作者 rywilson281 个回答
版本: 0.17.23 你能重现演示中的bug吗?[x] 是的[ ] 不 如果该元素放在画布顶部,徽章可能会遮挡该元素的内容。  预期的行为是什么? 如果有空间,标签应放在元件下方。  你能附上截图、截屏或...
ClaudeCode
谢谢你举报,@rywilson28。 徽章“即使元素下方有空间,也可能遮挡元素内容,这似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这有助于团队更...
#36742021年8月5日作者 sriya-srinivasan4 个回答
版本: 0.17.19 目前的行为是什么? 新增的 webcomponent 是可见的: 在 grapesjs 容器内添加网页组件时,如果组件在 shadow DOM 中有元素,组件是空的。(如果不使用 shadow dom 创建组件,则没有问题。)在图层管理器中可以看到,但是空的  这里我们可以看到内部和外部元素的差异。阴影根不可见。 预期的行为是什么? grapesjs canvas 内的 webcomponen...
artf
我在这里发了一个变通方法 https://github.com/artf/grapesjs/issues/3693
artf
嘿,@sriya-srinivasan,你能做一个可复现的演示吗?
artf
@sriya-Srinivasan,有什么最新进展吗?
#36732021年8月5日作者 imouou2 个回答
警告 请阅读并遵循接下来的三步,然后在发布问题前删除它们遵守贡献指南 https://github.com/artf/grapesjs/blob/master/CONTRIBUTING.md先快速搜索一下,看看有没有人没开同样的问题所有相关陈述/问题都必须填写/回答,否则问题可能已结案JSFiddle 入门模板 https://jsfiddle.net/szLp8h4nCodeSandbox 入门模板 https://codesandbox.io/s/1r0w2pk1vl Version: grapesjs-0.17.22 你能重现演示中的bug吗?[] 是的[ ] 不 预期的行为是什么? 在改变元素大小时,不应同时导致其他相同组...
artf
使用组件优先样式 “''js Grapesjs.init({ ... 选择经理:{ componentFirst: true, ... }, }) ```
ClaudeCode
谢谢你举报,@imouou。 option resizable:true 会改变 Canvas 中所有相同的组件。 似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSa...
#36682021年8月3日作者 anatoli-dp4 个回答
警告 请阅读并遵循接下来的三步,然后在发布问题前删除它们遵守贡献指南 https://github.com/artf/grapesjs/blob/master/CONTRIBUTING.md先快速搜索一下,看看有没有人没开同样的问题所有相关陈述/问题都必须填写/回答,否则问题可能已结案JSFiddle 入门模板 https://jsfiddle.net/szLp8h4nCodeSandbox 入门模板 https://codesandbox.io/s/1r0w2pk1vl 你想给GrapesJS添加什么? 一种在缩放和移动后将画布重置回默认位置的方法。 详细描述你的功能需求详细 缩放后再移动画布后,你可以创建一个函数,调整大小并将...
artf
我不太明白你的问题,具体是怎么移动/缩放画布的?这无关,但有没有功能可以调用来缩放内容,而不是画布?比如我想放大,比如放在某个非常高DPI的页面上,以便更好地编辑。还是应该手动调整iframe缩放?因为iframe放大当然会放大工具/选择轮廓 ['编辑。Canvas.setZoom'](https://grapesjs.com/docs/api/canvas.html#setzoom)在你这种情况下不起作用吗?
anatoli-dp
我用编辑器来调整。用Canvas.setZoom,然后用空格键移动它。目前我移除了之前做过的部分,但大概是拿到画布元素,然后通过样式更新来定位它。不过这种变化不是永久性的,只要稍微移动,它就会跳回原位,比如如果它在26xx、18y(或26上、18左)的位置,稍微移动它会跳回那些坐标,而不是如果它是从0,0开始移动,如果它是天边。有没有什么功能可以把画布位置重置回视角中心,并重新缩放到100%?
artf
如果你说的是移动坐标,我们还没有直接的 API,但你实际上可以通过这种方式获取或更新坐标: “''js const canvasModel = editor.Canvas.getModel(); 获取数值 const { x, y } = canvasModel.attributes; 更新数值 canvasModel.set({ x: x + 50, y: y + 50 }) ```