GrapesJS / grapesjs

Free and Open source Web Builder Framework. Next generation tool for building templates without coding
https://grapesjs.com
Other
22.63k stars 4.09k forks source link

Adding multiple text type traits. #2785

Closed amitbhoj777 closed 4 years ago

amitbhoj777 commented 4 years ago

Whenever i am trying to add multiple traits of type text with all different conditions and on different tags but it will take only last one at every traits conditions. Please help me out with the solution.

artf commented 4 years ago

Read the issue template then provide code and demo

amitbhoj777 commented 4 years ago

editor.DomComponents.addType('text', { isComponent: el =>( (el.attributes&&el.attributes.paraJustify&&el.attributes.paraJustify.value) ), model: { defaults: { traits: [ { type: 'select', options: [ { value: 'text-align:center', name: 'Center' }, { value: 'text-align:left ', name: 'Left' }, { value: 'text-align:right', name: 'Right' }, { value: 'text-align:justify', name: 'Justify' }, ], label: 'align', name: 'style', }, ], // To make default style. // attributes: { style: 'text-align:center' }, }, } });

    editor.DomComponents.addType('text', {
        isComponent: el => el.attributes&&el.attributes.bannerBackgroundImage&&el.attributes.bannerBackgroundImage.value,
        model: {
            defaults: {
                traits: [
                    {
                        type: 'select',
                        options: [
                            { value: 'background-image:url("https://s.freecharge.in/content/images/egold/egold-banner2.png")', name: 'Original' },
                            { value: 'background-image:none; background-color:#ffffff; ', name: 'None' },
                        ],
                        label: 'Backgroud Image',
                        name: 'style',
                    },
                ],
            },
        }
    });
    editor.DomComponents.addType('text', {
        isComponent: el => el.attributes&&el.attributes.ctaLocation&&el.attributes.ctaLocation.value,
        model: {
            defaults: {
                traits: [
                    {
                        type: 'select',
                        options: [
                            { value: ' left:0px; right:0px; bottom:5px; ', name: 'Original' },
                            { value: 'top:0px', name: 'Top' },
                        ],
                        label: 'CTA location',
                        name: 'style',
                    },
                     {
                         type: 'select',
                         options: [
                             { value: 'background-color:red', name: 'Red' },
                             { value: 'background-color:blue ', name: 'Blue' },
                             { value: 'background-color:grey', name: 'Grey' },
                             { value: 'background-color:orange', name: 'Orange' },
                         ],
                         label: 'Background-color',
                         name: 'style',
                         // changeProp: 1
                     },
                ],
            },
        }
    });