@ -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'); |