Skip to content

Instantly share code, notes, and snippets.

@onefriendaday
onefriendaday / Fieldtype.js
Created January 29, 2019 16:25
Storyblok Fieldtype with sb-asset-selector for Tinymce
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div>
<sb-asset-selector :uid="uid" field="image">
</sb-asset-selector>
<textarea v-model="model.content" id="mytextarea">
</textarea>
</div>`,
methods: {
initWith() {
@onefriendaday
onefriendaday / Fieldtype.js
Last active February 1, 2019 19:37
Storyblok Fieldtype with tree selector
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div>
<ul class="uk-list">
<li :key="item.id" v-for="item in tree">
<tree :category="item" :sub-categories="allCats" :categories.sync="model.categories"></tree>
</li>
</ul>
</div>`,
components: {
@onefriendaday
onefriendaday / Fieldtype.js
Created February 8, 2019 14:09
Storyblok Advanced Image field type
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div class="image__wrap">
<div class="uk-text-center uk-margin-small-bottom" v-if="validImage">
<img :src="model.image" class="image" />
</div>
<div class="uk-margin-small-bottom">
<sb-asset-selector :uid="uid" field="image">
</sb-asset-selector>
</div>
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div>
<select v-model="model.value">
<option :key="tag.name" :value="tag.name" v-for="tag in tags">{{tag.name}}</option>
</select>
</div>`,
data() {
return {
tags: []
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div class="uk-flex">
<input class="uk-margin-right" v-model="model.color" type="color" />
<input class="uk-width-1-1" v-model="model.color" /></div>`,
methods: {
initWith() {
return {
plugin: 'ef-native-color-picker',
color: ''
@onefriendaday
onefriendaday / cleanup-field-script.js
Created February 20, 2019 16:10
Storyblok Cleanup script for a specific field
const StoryblokClient = require('storyblok-js-client')
// Insert your oauth token and folder id
const Storyblok = new StoryblokClient({
oauthToken: 'YOUR_OAUTH_TOKEN'
})
const fieldToDelete = 'my_field'
const componentName = 'page'
@onefriendaday
onefriendaday / index.js
Created March 19, 2019 15:37
Creates or updates content of folders that are existing
const StoryblokClient = require('storyblok-js-client')
const Storyblok = new StoryblokClient({
oauthToken: PROTECTED_VAR
})
const sourceSpaceId = SOURCE_SPACE_ID
const targetSpaceId = TARGET_SPACE_ID
const Sync = {
@onefriendaday
onefriendaday / index.js
Created March 19, 2019 15:40
Process to sync folders and user roles to the target environment
const StoryblokClient = require('storyblok-js-client')
const Storyblok = new StoryblokClient({
oauthToken: PROTECTED_VAR
})
const sourceSpaceId = SOURCE_SPACE_ID
const targetSpaceId = TARGET_SPACE_ID
const Sync = {
@onefriendaday
onefriendaday / Fieldtype.js
Created April 25, 2019 12:56
Cloudinary Storyblok Fieldtype
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div>
<div v-if="modalOpen" style="height: 800px">
<a class="uk-button uk-display-block" @click="closeModal">Close</a>
</div>
<a v-else class="uk-button uk-display-block" @click="openCloudinary">Select image</a>
</div>`,
data() {
return {
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div>
<h4>Padding</h4>
<div class="uk-grid uk-margin-bottom" v-if="isReady">
<div class="uk-width-1-2">
Top
<select v-model="model.normal.top" class="uk-width-1-1">
<option v-for="item in options" :value="item" :key="item.id">{{ item.name }}</option>
</select>