@ -0,0 +1 @@ | |||||
node_modules |
@ -0,0 +1,45 @@ | |||||
import * as riot from 'riot'; | |||||
import TinyFade from './src/tiny-fade.riot'; | |||||
riot.install((component) => { | |||||
const { | |||||
onBeforeMount, | |||||
onMounted | |||||
} = component | |||||
// patch the onBeforeMount to create slots in runtime | |||||
component.onBeforeMount = (...args) => { | |||||
const html = component.root.innerHTML | |||||
if (html) { | |||||
// empty the component html | |||||
component.root.innerHTML = '' | |||||
// define slot-html to runtime | |||||
Object.defineProperty(component, 'slot-html', { | |||||
value: html, | |||||
enumerable: false, | |||||
writable: false, | |||||
configurable: true, | |||||
}) | |||||
} | |||||
// call the original onBeforeMount | |||||
onBeforeMount.apply(component, ...args) | |||||
} | |||||
component.onMounted = (...args) => { | |||||
component.$('slot-html').outerHTML = component['slot-html'] | |||||
// call the original onMounted | |||||
onMounted.apply(component, ...args) | |||||
} | |||||
return component | |||||
}) | |||||
riot.register('tiny-fade', TinyFade); | |||||
riot.mount('tiny-fade'); |
@ -0,0 +1 @@ | |||||
<!doctype html><html><head lang="en"><meta charset="utf-8"><title>Tiny Fade | i386 Demo</title><link rel="shortcut icon" href="#"/><meta name="viewport" content="width=device-width,initial-scale=1"><link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" rel="stylesheet"/><link href="https://cdn.jsdelivr.net/npm/reflex-grid@2.0.4/css/reflex.min.css" rel="stylesheet"/><link href="css/demo-386.css" rel="stylesheet"/></head><body><main><div class="container"><div class="grid justify-center"><div class="col-12 col-md-8"><div class="hero"><header><h1>Tiny Tags</h1></header><p>Created with <a href="https://riot.js.org" target="_blank">Riot.js</a>!</p><p>Form Field Component to add Tags to a List. Will be handled as a Select-Element with Multiple Options that are selected.</p><p></p><blockquote>npm install tiny-tags --save</blockquote><p></p><p><a href="https://github.com/tentakelfabrik/tiny-tags" target="_blank"><svg class="icon vertical-align-sub"><use xlink:href="#icon-github"/></svg></a></p></div><h2>Try me:</h2><tiny-fade data-tag="img"><img src="hammer.gif"/> <img src="hammer.gif"/> <img src="hammer.gif"/><div class="test"><img src="hammer.gif"/></div></tiny-fade></div></div></div></main><footer><p>Crafted with enthusiasm by <a target="_blank" href="https://tentakelfabrik.de">Tentakelfabrik</a></p><p><a target="_blank" href="https://github.com/tentakelfabrik"><svg class="icon"><use xlink:href="#icon-github"/></svg></a></p></footer><script src="js/demo-386.js"></script></body></html> |
@ -0,0 +1,3 @@ | |||||
/* Riot v4.13.2, @license MIT */ | |||||
/*! (c) 2018 Andrea Giammarchi (ISC) */ |
@ -0,0 +1,4 @@ | |||||
{ | |||||
"/dist/js/demo-386.js": "/dist/js/demo-386.js", | |||||
"/dist/hammer.gif": "/dist/hammer.gif" | |||||
} |
@ -0,0 +1,31 @@ | |||||
{ | |||||
"name": "tiny-fade", | |||||
"version": "1.0.0", | |||||
"description": "Fade elements", | |||||
"scripts": { | |||||
"dev": "npm run development", | |||||
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", | |||||
"watch": "npm run development -- --watch", | |||||
"watch-poll": "npm run watch -- --watch-poll", | |||||
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", | |||||
"prod": "npm run production", | |||||
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" | |||||
}, | |||||
"repository": { | |||||
"type": "git", | |||||
"url": "git@github.com:tentakelfabrik/tiny-fade.git" | |||||
}, | |||||
"author": "Björn Hase", | |||||
"license": "MIT", | |||||
"dependencies": { | |||||
"riot": "^4.13.2" | |||||
}, | |||||
"devDependencies": { | |||||
"@riotjs/compiler": "^4.9.2", | |||||
"@riotjs/webpack-loader": "^4.0.3", | |||||
"cross-env": "^7.0.2", | |||||
"html-webpack-plugin": "^4.3.0", | |||||
"laravel-mix": "^5.0.4", | |||||
"vue-template-compiler": "^2.6.11" | |||||
} | |||||
} |
@ -0,0 +1,67 @@ | |||||
<!DOCTYPE html> | |||||
<html> | |||||
<head lang="en"> | |||||
<meta charset="utf-8"> | |||||
<title>Tiny Fade | i386 Demo</title> | |||||
<link rel="shortcut icon" href="#" /> | |||||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" type="text/css" rel="stylesheet" /> | |||||
<link href="https://cdn.jsdelivr.net/npm/reflex-grid@2.0.4/css/reflex.min.css" type="text/css" rel="stylesheet" /> | |||||
<link href="css/demo-386.css" type="text/css" rel="stylesheet" /> | |||||
</head> | |||||
<body> | |||||
<%= htmlWebpackPlugin.options.svg %> | |||||
<main> | |||||
<div class="container"> | |||||
<div class="grid justify-center"> | |||||
<div class="col-12 col-md-8"> | |||||
<div class="hero"> | |||||
<header> | |||||
<h1>Tiny Tags</h1> | |||||
</header> | |||||
<p> | |||||
Created with <a href="https://riot.js.org" target="_blank">Riot.js</a>! | |||||
</p> | |||||
<p> | |||||
Form Field Component to add Tags to a List. Will be handled as a Select-Element | |||||
with Multiple Options that are selected. | |||||
</p> | |||||
<p> | |||||
<blockquote> | |||||
npm install tiny-tags --save | |||||
</blockquote> | |||||
</p> | |||||
<p> | |||||
<a href="https://github.com/tentakelfabrik/tiny-tags" target="_blank"> | |||||
<svg class="icon vertical-align-sub"><use xlink:href="#icon-github" /></svg> | |||||
</a> | |||||
</p> | |||||
</div> | |||||
<h2>Try me:</h2> | |||||
<tiny-fade data-tag="img"> | |||||
<img src="hammer.gif" /> | |||||
<img src="hammer.gif" /> | |||||
<img src="hammer.gif" /> | |||||
<div class="test"> | |||||
<img src="hammer.gif" /> | |||||
</div> | |||||
</tiny-fade> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</main> | |||||
<footer> | |||||
<p> | |||||
Crafted with enthusiasm by <a target="_blank" href="https://tentakelfabrik.de">Tentakelfabrik</a> | |||||
</p> | |||||
<p> | |||||
<a target="_blank" href="https://github.com/tentakelfabrik"> | |||||
<svg class="icon"><use xlink:href="#icon-github" /></svg> | |||||
</a> | |||||
</p> | |||||
</footer> | |||||
<script src="js/demo-386.js"></script> | |||||
</body> | |||||
</html> |
@ -0,0 +1,19 @@ | |||||
<tiny-fade> | |||||
<div class="tiny-fade"> | |||||
<div class="yield"></div> | |||||
</div> | |||||
<script> | |||||
export default { | |||||
onBeforeMount() { | |||||
this.content = this.root.innerHTML; | |||||
this.root.innerHTML = ''; | |||||
}, | |||||
onMounted() { | |||||
this.$('.yield').innerHTML = this.content; | |||||
} | |||||
} | |||||
</script> | |||||
</tiny-fade> |
@ -0,0 +1,62 @@ | |||||
<tiny-fade> | |||||
<div class="tiny-fade"> | |||||
<slot-html /> | |||||
</div> | |||||
<script> | |||||
/** | |||||
* | |||||
* | |||||
* | |||||
*/ | |||||
export default { | |||||
state: { | |||||
show: 2, | |||||
interval: 1000 | |||||
}, | |||||
/** | |||||
* | |||||
* | |||||
*/ | |||||
onMounted() { | |||||
const elements = this.$$('.tiny-fade > *') | |||||
elements.forEach((element, index) => { | |||||
element.classList.add('tiny-fade__item') | |||||
if (this.state.show > index) { | |||||
element.classList.add('tiny-fade__item--active') | |||||
} | |||||
}) | |||||
const timer = setInterval(() => { | |||||
this.toggle() | |||||
}, this.state.interval) | |||||
}, | |||||
/** | |||||
* | |||||
* | |||||
*/ | |||||
toggle() { | |||||
const elements = this.$('.tiny-fade__item--active:last-child') | |||||
console.log(elements) | |||||
//elements.forEach((element, index) => { | |||||
//if (element.classList.contains('tiny-fade__item--active')) { | |||||
// element.classList.remove('tiny-fade__item--active') | |||||
//} | |||||
//})*/ | |||||
} | |||||
} | |||||
</script> | |||||
<style> | |||||
</style> | |||||
</tiny-fade> |
@ -0,0 +1,40 @@ | |||||
const mix = require('laravel-mix'); | |||||
const HtmlWebpackPlugin = require('html-webpack-plugin'); | |||||
const fs = require('fs'); | |||||
/* | |||||
|-------------------------------------------------------------------------- | |||||
| Mix Asset Management | |||||
|-------------------------------------------------------------------------- | |||||
| | |||||
| Mix provides a clean, fluent API for defining some Webpack build steps | |||||
| for your Laravel application. By default, we are compiling the Sass | |||||
| file for the application as well as bundling up all the JS files. | |||||
| | |||||
*/ | |||||
mix.webpackConfig({ | |||||
plugins: [ | |||||
new HtmlWebpackPlugin({ | |||||
filename: 'dist/index.html', | |||||
template: 'src/assets/html/index.html.ejs', | |||||
inject: false | |||||
}) | |||||
], | |||||
module: { | |||||
rules: [{ | |||||
test: /\.riot$/, | |||||
exclude: /node_modules/, | |||||
use: [{ | |||||
loader: '@riotjs/webpack-loader', | |||||
query: { | |||||
hot: false | |||||
} | |||||
}] | |||||
} | |||||
]} | |||||
}); | |||||
mix.js('demo-386.js', 'dist/js') | |||||
.copy('src/assets/img/*', 'dist'); |