Implemented Icons

pull/12/head
cagataycivici 2019-05-21 18:42:06 +03:00
parent aba73e5e50
commit c52dc30f3f
5 changed files with 4324 additions and 2 deletions

4215
public/demo/data/icons.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -13,6 +13,7 @@
<transition name="p-input-overlay" @enter="onThemesMenuEnter" @leave="onThemesMenuLeave"> <transition name="p-input-overlay" @enter="onThemesMenuEnter" @leave="onThemesMenuLeave">
<ul v-if="themesMenuVisible"> <ul v-if="themesMenuVisible">
<li class="topbar-submenu-header">THEMING</li> <li class="topbar-submenu-header">THEMING</li>
<li><router-link to="/icons" @click.native="hideThemesMenu()"><i className="pi pi-fw pi-search"/><span>Icons</span></router-link></li>
<li class="topbar-submenu-header">FREE THEMES</li> <li class="topbar-submenu-header">FREE THEMES</li>
<li><a href="#" @click="changeTheme($event, 'nova-light', false)"><img src="./assets/images/layouts/themeswitcher-nova-light.png" alt="Nova Light" /><span>Nova Light</span></a></li> <li><a href="#" @click="changeTheme($event, 'nova-light', false)"><img src="./assets/images/layouts/themeswitcher-nova-light.png" alt="Nova Light" /><span>Nova Light</span></a></li>
<li><a @click="changeTheme($event, 'nova-dark', false)"><img src="./assets/images/layouts/themeswitcher-nova-dark.png" alt="Nova Dark" /><span>Nova Dark</span></a></li> <li><a @click="changeTheme($event, 'nova-dark', false)"><img src="./assets/images/layouts/themeswitcher-nova-dark.png" alt="Nova Dark" /><span>Nova Dark</span></a></li>
@ -62,7 +63,7 @@ export default {
this.darkDemoStyle = null; this.darkDemoStyle = null;
} }
this.themesMenuVisible = false; this.hideThemesMenu();
event.preventDefault(); event.preventDefault();
}, },
toggleThemesMenu(event) { toggleThemesMenu(event) {
@ -81,7 +82,7 @@ export default {
if (!this.themesMenuOutsideClickListener) { if (!this.themesMenuOutsideClickListener) {
this.themesMenuOutsideClickListener = (event) => { this.themesMenuOutsideClickListener = (event) => {
if (this.themesMenuVisible && this.isOutsideOfThemesMenuClicked(event)) { if (this.themesMenuVisible && this.isOutsideOfThemesMenuClicked(event)) {
this.themesMenuVisible = false; this.hideThemesMenu();
} }
}; };
document.addEventListener('click', this.themesMenuOutsideClickListener); document.addEventListener('click', this.themesMenuOutsideClickListener);
@ -96,6 +97,9 @@ export default {
isOutsideOfThemesMenuClicked(event) { isOutsideOfThemesMenuClicked(event) {
return !(DomHandler.hasClass(event.target, 'themes-menu-link') || this.themesMenuElement.isSameNode(event.target) || this.themesMenuElement.contains(event.target)); return !(DomHandler.hasClass(event.target, 'themes-menu-link') || this.themesMenuElement.isSameNode(event.target) || this.themesMenuElement.contains(event.target));
}, },
hideThemesMenu() {
this.themesMenuVisible = false;
}
} }
} }
</script> </script>

View File

@ -118,6 +118,7 @@ body {
padding-bottom: 8px; padding-bottom: 8px;
border-bottom: 4px solid transparent; border-bottom: 4px solid transparent;
user-select: none; user-select: none;
cursor: pointer;
@include transition(border-color .2s); @include transition(border-color .2s);
&:hover { &:hover {

View File

@ -21,6 +21,11 @@ export default new Router({
name: 'support', name: 'support',
component: () => import('./views/support/Support.vue') component: () => import('./views/support/Support.vue')
}, },
{
path: '/icons',
name: 'icons',
component: () => import('./views/icons/Icons.vue')
},
{ {
path: '/accordion', path: '/accordion',
name: 'accordion', name: 'accordion',

97
src/views/icons/Icons.vue Normal file
View File

@ -0,0 +1,97 @@
<template>
<div class="icons-page">
<div class="content-section introduction">
<div class="feature-intro">
<h1>Icons</h1>
<p>PrimeReact components internally use <a href="https://github.com/primefaces/primeicons">PrimeIcons</a> library, the official icons suite from <a href="https://www.primetek.com.tr">PrimeTek</a>.</p>
</div>
</div>
<div class="content-section documentation">
<h3 style="margin-top: 0">Download</h3>
<p>PrimeIcons is available at npm, run the following command to download it to your project.</p>
<CodeHighlight lang="js">
npm install primeicons --save
</CodeHighlight>
<h3>Getting Started</h3>
<p>PrimeIcons use the <strong>pi pi-&#123;icon&#125;</strong> syntax such as <strong>pi pi-check</strong>.
A standalone icon can be displayed using an element such as <i>i</i> or <i>span</i></p>
<CodeHighlight>
&lt;i class="pi pi-check"&gt;&lt;/i&gt;
&lt;i class="pi pi-times"&gt;&lt;/i&gt;
</CodeHighlight>
<i class="pi pi-check"></i>
<i class="pi pi-times"></i>
<h3>Size</h3>
<p>Size of the icons can easily be changed using font-size property.</p>
<CodeHighlight>
&lt;i class="pi pi-check"&gt;&lt;/i&gt;
</CodeHighlight>
<i class="pi pi-check"></i>
<CodeHighlight>
&lt;i class="pi pi-check" style="fontSize: 3em"&gt;&lt;/i&gt;
</CodeHighlight>
<i class="pi pi-check" style="fontSize: 3em"></i>
<h3>Spinning Animation</h3>
<p>Special pi-spin class applies infinite rotate to an icon.</p>
<CodeHighlight>
&lt;i class="pi pi-spin pi-spinner" style="fontSizi class="pi pi-spin pi-spinner" style="fontSiz
</CodeHighlight>
<i class="pi pi-spin pi-spinner" style="fontSize: 3em"></i>
<h3>List of Icons</h3>
<p>Here is the current list of PrimeIcons, more icons will be added periodically. You may also <a href="https://github.com/primefaces/primeicons/issues">request new icons</a> at the issue tracker.</p>
<InputText v-model="filter" class="icon-filter" placeholder="Search an icon" />
<div class="p-grid icons-list">
<div class="p-col-12 p-md-2" v-for="icon of filteredIcons" :key="icon.properties.name">
<i :class="'pi pi-' + icon.properties.name"></i>
<div>pi-{{icon.properties.name}}</div>
</div>
</div>
</div>
</div></template>
<script>
import axios from 'axios';
export default {
data() {
return {
icons: null,
filter: null
}
},
mounted() {
axios.get('demo/data/icons.json').then(res => this.icons = res.data.icons);
},
computed: {
filteredIcons() {
if (this.filter)
return this.icons.filter(icon => icon.properties.name.indexOf(this.filter.toLowerCase()) > -1);
else
return this.icons;
}
}
}
</script>
<style lang="css" scoped>
.icon-filter {
width: 100%;
padding: 1em;
margin: 16px 0 26px 0;
}
</style>