@pamsai/pam-builder

PAM Marketing Automation Email + HTML Builder
2,222
Install
npm install @pamsai/pam-builder
Latest Version:0.3.7
Vue:2
Last Updated:Apr 11, 2023
Links: npm
Maintainer: 3dsinteractive

Template Builder

How to use plugin

Build Package (Include Store)

  1. Run Command
yarn add @pamsai/pam-builder
  1. Run Command
yarn dev

or

npm run dev
  1. Setup Data To Local Storage

    get storageBaseUrl() {
        return <YOUR_STORAGE_BASEURL>
    }

    get storageToken() {
        return <YOUR_PERSONALIZE_TOKEN>
    }

    [Optional]
    get personalizeBaseUrl() {
        return <YOUR_PERSONALIZE_BASEURL>
    }

    get personalizeToken() {
        return <YOUR_PERSONALIZE_TOKEN>
    }

    created() {
        if (process.client) {
            localStorage['storage-baseurl'] = this.storageBaseUrl
            localStorage['storage-token'] = this.storageToken

            [Optional]
            localStorage['personalize-baseurl'] = this.personalizeBaseUrl
            localStorage['personalize-token'] = this.personalizeToken
        }
    }

attribute value type description
storageBaseUrl up to you string for get or upload image (ex. [GET] <BASEURL>/galleries, [POST] <BASEURL>/uploader/public
storageToken up to you string for access api get or upload image
personalizeBaseUrl (optional) up to you string for get personalize (ex. [GET] <BASEURL>/customers/attributes)*
personalizeToken (optional) up to you string for access api get personalize
  1. Import Module And Create Instance Vue Component
    [Vue]
    mounted() {
        const builder: any = require('~/node_modules/vue-builder-plugin/src/plugins/Module')
        const store =  builder.default.store
        const router = builder.default.router
        const self = this
        new Vue({
            router,
            store,
            render: (h) =>
                h(builder.default.component, {
                    props: {
                        propTemplateJson: this.propTemplateJson,
                        propMessageType: this.propMessageType
                    },
                    on: {
                        change(templateJson: any) {
                            self.$emit('change', (templateJson && !_.isEmpty(templateJson) ? templateJson : {}))
                        }
                    }
                })
        }).$mount(`#${this.id}`)
    }

    [Nuxt.js]
    mounted() {
        if (process.client) {
            const builder: any = require('~/node_modules/vue-builder-plugin/src/plugins/Module')
            const store =  builder.default.store
            const router = builder.default.router
            const self = this
            new Vue({
                router,
                store,
                render: (h) =>
                    h(builder.default.component, {
                        props: {
                            propTemplateJson: this.propTemplateJson,
                            propMessageType: this.propMessageType
                        },
                        on: {
                            change(templateJson: any) {
                                self.$emit('change', (templateJson && !_.isEmpty(templateJson) ? templateJson : {}))
                            }
                        }
                    })
            }).$mount(`#${this.id}`)
        }
    }
attribute value type description
id up to you string for create element (default: builder). Mutiple element should be setup difference name
store - - for use store in builder component module
router - - for use router in builder component module
propTemplateJson up to you object for setup default prop your template json (pass to builder module)
propMessageType EMAIL, WEB_ATTENTION, FLEX_MESSAGE string for setup default prop your message type (EMAIL: result mjml, WEB_ATTENTION: result html, FLEX_MESSAGE: result line flex message)
this.builder up to you any for save vue instance data (parameter in your component)
render - function for render component
change(templateJson: any) - function for pass updated data from child (module component) to parent (your component) component
.$mount(#${this.id}) - - for create instance vue

  1. Use Component
    <div id="builder" />
attribute value type description
id up to you string for create element (default: builder). Mutiple element should be setup difference name

  1. Import Style To Component
    <style lang="scss">
        @import '~/node_modules/vue-builder-plugin/src/assets/scss/Main.scss';
        @import '~/node_modules/vue-builder-plugin/src/assets/css/quill.core.css';
        @import '~/node_modules/vue-builder-plugin/src/assets/css/quill.snow.css';
    </style>
  1. Access Builder Instance Directive From Outside
    (window as any).$el.__vue__.<YOUR_DIRECTIVE(DATA, PROPS, METHODS, ...)>

    such as
        (window as any).$el.__vue__.onUpdateScreen({
            mobile: this.isMobileActive,
            desktop: this.isFullsceenActive,
            width: {
                type: this.propWidthScreenType,
                size: this.propWidthScreenSize
            }
        })
attribute value type description
isMobileActive true, false boolean for set up screen (if value is true you can view on mobile screen only)
isFullsceenActive true, false boolean for set up screen (if value is true you can view on desktop screen only)
width { type: string, size: string } object for set up width and type screen (if you set value you still edit builder)
propWidthScreenType SM, MD, LG, FULL, CUSTOM string for set up screen type (SM: 30%, MD: 70%, LG: 50%, FULL: 100%, CUSTOM: up to you, DEFAULT: 90%)
propWidthScreenSize number of percent (ex. 25%) string for set up screen custom

Project setup

yarn install
Compiles and hot-reloads for development
yarn dev
Compiles and minifies for production
yarn build:ts
Lints and fixes files
yarn lint

Customize configuration

See Configuration Reference.

Related Packages

vue-scroll-progress

Simple Vue.js plugin for page scroll progress bar

4,838 98
vue-rippler

Simple Vue.js plugin for custom ripple effect

3,148 42
vue-kakao-pf

Simple Vue.js plugin for Kakao plus friend chat

1,223 2
vue-validator

Validator component for Vue.js

80,472 2,167

Version History

Version Released Vue License
0.3.7 ^2.6.11
0.3.6 ^2.6.11
0.3.5 ^2.6.11
0.3.4 ^2.6.11
0.3.3 ^2.6.11