Skip to content

Instantly share code, notes, and snippets.

@onefriendaday
onefriendaday / modal-fieldtype-example.js
Created November 20, 2018 13:53
Example of toggle a Storyblok fieldtype to fullscreenmode
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div>
<div v-if="modalIsOpen">Modal is open</div>
<div v-if="!modalIsOpen">Modal is closed</div>
<a @click="doOpen">Open modal</a>
<a @click="doClose">Close modal</a>
</div>`,
data() {
return {
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div>
<div v-if="modalIsOpen">Modal is open</div>
<div v-if="!modalIsOpen">Modal is closed</div>
<a @click="doOpen">Open modal</a>
<a @click="doClose">Close modal</a>
<select v-model="options"><option value="1"></option></select>
</div>`,
data() {
@onefriendaday
onefriendaday / fieldtype.js
Created November 22, 2018 13:28
SEO fieldtype
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `
<div>Google snippet preview:
<div style="margin:5px 0 15px;padding:10px;color:#000;background:#fff">
<div style="color:blue;text-decoration:underline">{{ model.title }}</div>
<div style="color:green">yoursite.com/example</div>
<div>{{ model.description }}</div>
</div>
<div class=uk-form-row>
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div><input class="uk-width-1-1" v-model="model.number" /></div>`,
methods: {
initWith() {
return {
plugin: 'number-plugin',
number: '0'
}
},
@onefriendaday
onefriendaday / cleanup-script.js
Last active November 29, 2018 18:19
Script to cleanup stories from _editable attribute
const StoryblokClient = require('storyblok-js-client')
// Insert your oauth token and folder id
const Storyblok = new StoryblokClient({
oauthToken: 'YOUR_OAUTH_TOKEN'
})
// Insert your source space and folder id
const spaceId = 'YOUR_SPACE_ID'
@onefriendaday
onefriendaday / Plugin.js
Created January 7, 2019 11:42
Storyblok decision plugin
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div>
<div class="uk-form-label">Do you have a headset?</div>
<label><input type="radio" v-model="model.has_headset" :value="true" /> Yes</label>
<label><input type="radio" v-model="model.has_headset" :value="false" class="uk-margin-small-left" /> No</label>
<div v-if="model.has_headset" class="uk-margin-small-top">
<div class="uk-form-label">How many?</div>
<input class="uk-width-1-1" v-model="model.number_of_headsets" type="number" />
</div>
@onefriendaday
onefriendaday / Plugin.js
Created January 7, 2019 11:53
Bullet point plugin
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div class="List">
<ol class="uk-list uk-margin-bottom-remove">
<li
v-for="(item, index) in model.items"
:key="index"
class="uk-flex uk-flex-middle uk-margin-small-bottom">
<input
v-model="model.items[index]"
@onefriendaday
onefriendaday / Fieldtype.js
Created January 23, 2019 09:49
Fieldtype example for a cascading select
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div>
<div class="uk-form-row">
Category
<select v-model="model.category" class="uk-width-1-1">
<option></option>
<option :key="item.id" :value="item.id" v-for="item in categories">{{ item.name }}</option>
</select>
</div>
@onefriendaday
onefriendaday / Fieldtype.js
Created January 26, 2019 12:07
Fieldtype example of 2 level cascanding select
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div>
<div class="uk-form-row">
Category
<select v-model="model.category" class="uk-width-1-1">
<option></option>
<option :key="cat.item.id" :value="cat.item" v-for="cat in tree">{{ cat.item.name }}</option>
</select>
</div>
@onefriendaday
onefriendaday / Fieldtype.js
Created January 28, 2019 16:31
Storyblok fieldtype with field validation
const Fieldtype = {
mixins: [window.Storyblok.plugin],
template: `<div>
<input class="uk-width-1-1" @input="validate" v-model="proxyModel.example" />
<div v-if="!valid">Please fill out this field</div>
</div>`,
data() {
return {
proxyModel: {},
valid: false