DataTable, TreeTable, Timeline unstyled demo updates
parent
70435e3371
commit
6b762d08be
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<DocSectionText id="style" label="Style" v-bind="$attrs">
|
<DocSectionText v-bind="$attrs">
|
||||||
<p>List of class names used in the styled mode.</p>
|
<p>List of class names used in the styled mode.</p>
|
||||||
</DocSectionText>
|
</DocSectionText>
|
||||||
<div class="doc-tablewrapper">
|
<div class="doc-tablewrapper">
|
|
@ -0,0 +1,298 @@
|
||||||
|
<template>
|
||||||
|
<DocSectionText v-bind="$attrs">
|
||||||
|
<p>Theming is implemented with the pass through properties in unstyled mode. Example below demonstrates the built-in Tailwind theme.</p>
|
||||||
|
</DocSectionText>
|
||||||
|
<DocSectionCode :code="code" :service="['CustomerService']" embedded />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { CustomerService } from '@/service/CustomerService';
|
||||||
|
import { FilterMatchMode, FilterOperator } from 'primevue/api';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
customers: null,
|
||||||
|
filters: null,
|
||||||
|
representatives: [
|
||||||
|
{ name: 'Amy Elsner', image: 'amyelsner.png' },
|
||||||
|
{ name: 'Anna Fali', image: 'annafali.png' },
|
||||||
|
{ name: 'Asiya Javayant', image: 'asiyajavayant.png' },
|
||||||
|
{ name: 'Bernardo Dominic', image: 'bernardodominic.png' },
|
||||||
|
{ name: 'Elwin Sharvill', image: 'elwinsharvill.png' },
|
||||||
|
{ name: 'Ioni Bowcher', image: 'ionibowcher.png' },
|
||||||
|
{ name: 'Ivan Magalhaes', image: 'ivanmagalhaes.png' },
|
||||||
|
{ name: 'Onyama Limba', image: 'onyamalimba.png' },
|
||||||
|
{ name: 'Stephen Shaw', image: 'stephenshaw.png' },
|
||||||
|
{ name: 'XuXue Feng', image: 'xuxuefeng.png' }
|
||||||
|
],
|
||||||
|
statuses: ['unqualified', 'qualified', 'new', 'negotiation', 'renewal', 'proposal'],
|
||||||
|
loading: true,
|
||||||
|
code: {
|
||||||
|
composition: `
|
||||||
|
<template>
|
||||||
|
<div class="card">
|
||||||
|
<DataTable v-model:filters="filters" :value="customers" paginator showGridlines :rows="10" dataKey="id"
|
||||||
|
filterDisplay="menu" :loading="loading" :globalFilterFields="['name', 'country.name', 'representative.name', 'balance', 'status']">
|
||||||
|
<template #header>
|
||||||
|
<div class="flex justify-between">
|
||||||
|
<Button type="button" icon="pi pi-filter-slash" label="Clear" outlined @click="clearFilter()" />
|
||||||
|
<span class="p-input-icon-left">
|
||||||
|
<i class="pi pi-search" />
|
||||||
|
<InputText v-model="filters['global'].value" placeholder="Keyword Search" />
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #empty> No customers found. </template>
|
||||||
|
<template #loading> Loading customers data. Please wait. </template>
|
||||||
|
<Column field="name" header="Name" style="min-width: 12rem">
|
||||||
|
<template #body="{ data }">
|
||||||
|
{{ data.name }}
|
||||||
|
</template>
|
||||||
|
<template #filter="{ filterModel }">
|
||||||
|
<InputText v-model="filterModel.value" type="text" class="p-column-filter" placeholder="Search by name" />
|
||||||
|
</template>
|
||||||
|
</Column>
|
||||||
|
<Column header="Country" filterField="country.name" style="min-width: 12rem">
|
||||||
|
<template #body="{ data }">
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<img alt="flag" src="https://primefaces.org/cdn/primevue/images/flag/flag_placeholder.png" :class="\`flag flag-\${data.country.code}\`" style="width: 24px" />
|
||||||
|
<span>{{ data.country.name }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #filter="{ filterModel }">
|
||||||
|
<InputText v-model="filterModel.value" type="text" class="p-column-filter" placeholder="Search by country" />
|
||||||
|
</template>
|
||||||
|
<template #filterclear="{ filterCallback }">
|
||||||
|
<Button type="button" icon="pi pi-times" @click="filterCallback()" severity="secondary"></Button>
|
||||||
|
</template>
|
||||||
|
<template #filterapply="{ filterCallback }">
|
||||||
|
<Button type="button" icon="pi pi-check" @click="filterCallback()" severity="success"></Button>
|
||||||
|
</template>
|
||||||
|
<template #filterfooter>
|
||||||
|
<div class="px-3 pt-0 pb-3 text-center">Customized Buttons</div>
|
||||||
|
</template>
|
||||||
|
</Column>
|
||||||
|
<Column header="Agent" filterField="representative" :showFilterMatchModes="false" :filterMenuStyle="{ width: '14rem' }" style="min-width: 14rem">
|
||||||
|
<template #body="{ data }">
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<img :alt="data.representative.name" :src="\`https://primefaces.org/cdn/primevue/images/avatar/\${data.representative.image}\`" style="width: 32px" />
|
||||||
|
<span>{{ data.representative.name }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #filter="{ filterModel }">
|
||||||
|
<MultiSelect v-model="filterModel.value" :options="representatives" optionLabel="name" placeholder="Any" class="p-column-filter">
|
||||||
|
<template #option="slotProps">
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<img :alt="slotProps.option.name" :src="\`https://primefaces.org/cdn/primevue/images/avatar/\${slotProps.option.image}\`" style="width: 32px" />
|
||||||
|
<span>{{ slotProps.option.name }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</MultiSelect>
|
||||||
|
</template>
|
||||||
|
</Column>
|
||||||
|
<Column header="Date" filterField="date" dataType="date" style="min-width: 10rem">
|
||||||
|
<template #body="{ data }">
|
||||||
|
{{ formatDate(data.date) }}
|
||||||
|
</template>
|
||||||
|
<template #filter="{ filterModel }">
|
||||||
|
<Calendar v-model="filterModel.value" dateFormat="mm/dd/yy" placeholder="mm/dd/yyyy" mask="99/99/9999" />
|
||||||
|
</template>
|
||||||
|
</Column>
|
||||||
|
<Column header="Balance" filterField="balance" dataType="numeric" style="min-width: 10rem">
|
||||||
|
<template #body="{ data }">
|
||||||
|
{{ formatCurrency(data.balance) }}
|
||||||
|
</template>
|
||||||
|
<template #filter="{ filterModel }">
|
||||||
|
<InputNumber v-model="filterModel.value" mode="currency" currency="USD" locale="en-US" />
|
||||||
|
</template>
|
||||||
|
</Column>
|
||||||
|
<Column header="Status" field="status" :filterMenuStyle="{ width: '14rem' }" style="min-width: 12rem">
|
||||||
|
<template #body="{ data }">
|
||||||
|
<Tag :value="data.status" :severity="getSeverity(data.status)" />
|
||||||
|
</template>
|
||||||
|
<template #filter="{ filterModel }">
|
||||||
|
<Dropdown v-model="filterModel.value" :options="statuses" placeholder="Select One" class="p-column-filter" showClear>
|
||||||
|
<template #option="slotProps">
|
||||||
|
<Tag :value="slotProps.option" :severity="getSeverity(slotProps.option)" />
|
||||||
|
</template>
|
||||||
|
</Dropdown>
|
||||||
|
</template>
|
||||||
|
</Column>
|
||||||
|
<Column field="activity" header="Activity" :showFilterMatchModes="false" style="min-width: 12rem">
|
||||||
|
<template #body="{ data }">
|
||||||
|
<ProgressBar :value="data.activity" :showValue="false" style="height: 6px"></ProgressBar>
|
||||||
|
</template>
|
||||||
|
<template #filter="{ filterModel }">
|
||||||
|
<Slider v-model="filterModel.value" range class="m-3"></Slider>
|
||||||
|
<div class="flex items-center justify-between px-2">
|
||||||
|
<span>{{ filterModel.value ? filterModel.value[0] : 0 }}</span>
|
||||||
|
<span>{{ filterModel.value ? filterModel.value[1] : 100 }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</Column>
|
||||||
|
<Column field="verified" header="Verified" dataType="boolean" bodyClass="text-center" style="min-width: 8rem">
|
||||||
|
<template #body="{ data }">
|
||||||
|
<i class="pi" :class="{ 'pi-check-circle text-green-500 ': data.verified, 'pi-times-circle text-red-500': !data.verified }"></i>
|
||||||
|
</template>
|
||||||
|
<template #filter="{ filterModel }">
|
||||||
|
<label for="verified-filter" class="font-bold"> Verified </label>
|
||||||
|
<TriStateCheckbox v-model="filterModel.value" inputId="verified-filter" />
|
||||||
|
</template>
|
||||||
|
</Column>
|
||||||
|
</DataTable>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, onMounted } from 'vue';
|
||||||
|
import { CustomerService } from '@/service/CustomerService';
|
||||||
|
import { FilterMatchMode, FilterOperator } from 'primevue/api';
|
||||||
|
|
||||||
|
const customers = ref();
|
||||||
|
const filters = ref();
|
||||||
|
const representatives = ref([
|
||||||
|
{ name: 'Amy Elsner', image: 'amyelsner.png' },
|
||||||
|
{ name: 'Anna Fali', image: 'annafali.png' },
|
||||||
|
{ name: 'Asiya Javayant', image: 'asiyajavayant.png' },
|
||||||
|
{ name: 'Bernardo Dominic', image: 'bernardodominic.png' },
|
||||||
|
{ name: 'Elwin Sharvill', image: 'elwinsharvill.png' },
|
||||||
|
{ name: 'Ioni Bowcher', image: 'ionibowcher.png' },
|
||||||
|
{ name: 'Ivan Magalhaes', image: 'ivanmagalhaes.png' },
|
||||||
|
{ name: 'Onyama Limba', image: 'onyamalimba.png' },
|
||||||
|
{ name: 'Stephen Shaw', image: 'stephenshaw.png' },
|
||||||
|
{ name: 'XuXue Feng', image: 'xuxuefeng.png' }
|
||||||
|
]);
|
||||||
|
const statuses = ref(['unqualified', 'qualified', 'new', 'negotiation', 'renewal', 'proposal']);
|
||||||
|
const loading = ref(true);
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
CustomerService.getCustomersMedium().then((data) => {
|
||||||
|
customers.value = getCustomers(data);
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const initFilters = () => {
|
||||||
|
filters.value = {
|
||||||
|
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
|
name: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] },
|
||||||
|
'country.name': { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] },
|
||||||
|
representative: { value: null, matchMode: FilterMatchMode.IN },
|
||||||
|
date: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] },
|
||||||
|
balance: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] },
|
||||||
|
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] },
|
||||||
|
activity: { value: [0, 100], matchMode: FilterMatchMode.BETWEEN },
|
||||||
|
verified: { value: null, matchMode: FilterMatchMode.EQUALS }
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
initFilters();
|
||||||
|
|
||||||
|
const formatDate = (value) => {
|
||||||
|
return value.toLocaleDateString('en-US', {
|
||||||
|
day: '2-digit',
|
||||||
|
month: '2-digit',
|
||||||
|
year: 'numeric'
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const formatCurrency = (value) => {
|
||||||
|
return value.toLocaleString('en-US', { style: 'currency', currency: 'USD' });
|
||||||
|
};
|
||||||
|
const clearFilter = () => {
|
||||||
|
initFilters();
|
||||||
|
};
|
||||||
|
const getCustomers = (data) => {
|
||||||
|
return [...(data || [])].map((d) => {
|
||||||
|
d.date = new Date(d.date);
|
||||||
|
|
||||||
|
return d;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const getSeverity = (status) => {
|
||||||
|
switch (status) {
|
||||||
|
case 'unqualified':
|
||||||
|
return 'danger';
|
||||||
|
|
||||||
|
case 'qualified':
|
||||||
|
return 'success';
|
||||||
|
|
||||||
|
case 'new':
|
||||||
|
return 'info';
|
||||||
|
|
||||||
|
case 'negotiation':
|
||||||
|
return 'warning';
|
||||||
|
|
||||||
|
case 'renewal':
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
<\/script>`
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.initFilters();
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
CustomerService.getCustomersMedium().then((data) => {
|
||||||
|
this.customers = this.getCustomers(data);
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
formatDate(value) {
|
||||||
|
return value.toLocaleDateString('en-US', {
|
||||||
|
day: '2-digit',
|
||||||
|
month: '2-digit',
|
||||||
|
year: 'numeric'
|
||||||
|
});
|
||||||
|
},
|
||||||
|
formatCurrency(value) {
|
||||||
|
return value.toLocaleString('en-US', { style: 'currency', currency: 'USD' });
|
||||||
|
},
|
||||||
|
clearFilter() {
|
||||||
|
this.initFilters();
|
||||||
|
},
|
||||||
|
initFilters() {
|
||||||
|
this.filters = {
|
||||||
|
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
|
name: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] },
|
||||||
|
'country.name': { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] },
|
||||||
|
representative: { value: null, matchMode: FilterMatchMode.IN },
|
||||||
|
date: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] },
|
||||||
|
balance: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] },
|
||||||
|
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] },
|
||||||
|
activity: { value: [0, 100], matchMode: FilterMatchMode.BETWEEN },
|
||||||
|
verified: { value: null, matchMode: FilterMatchMode.EQUALS }
|
||||||
|
};
|
||||||
|
},
|
||||||
|
getCustomers(data) {
|
||||||
|
return [...(data || [])].map((d) => {
|
||||||
|
d.date = new Date(d.date);
|
||||||
|
|
||||||
|
return d;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getSeverity(status) {
|
||||||
|
switch (status) {
|
||||||
|
case 'unqualified':
|
||||||
|
return 'danger';
|
||||||
|
|
||||||
|
case 'qualified':
|
||||||
|
return 'success';
|
||||||
|
|
||||||
|
case 'new':
|
||||||
|
return 'info';
|
||||||
|
|
||||||
|
case 'negotiation':
|
||||||
|
return 'warning';
|
||||||
|
|
||||||
|
case 'renewal':
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<template>
|
||||||
|
<div class="doc-main">
|
||||||
|
<div class="doc-intro">
|
||||||
|
<h1>DataTable Theming</h1>
|
||||||
|
</div>
|
||||||
|
<DocSections :docs="docs" />
|
||||||
|
</div>
|
||||||
|
<DocSectionNav :docs="docs" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import StyledDoc from './StyledDoc.vue';
|
||||||
|
import UnstyledDoc from './UnstyledDoc.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
docs: [
|
||||||
|
{
|
||||||
|
id: 'styled',
|
||||||
|
label: 'Styled',
|
||||||
|
component: StyledDoc
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'unstyled',
|
||||||
|
label: 'Unstyled',
|
||||||
|
component: UnstyledDoc
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
|
@ -0,0 +1,57 @@
|
||||||
|
<template>
|
||||||
|
<DocSectionText v-bind="$attrs">
|
||||||
|
<p>Theming is implemented with the pass through properties in unstyled mode. Example below demonstrates the built-in Tailwind theme.</p>
|
||||||
|
</DocSectionText>
|
||||||
|
<DocSectionCode :code="code" embedded />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
events: [
|
||||||
|
{ status: 'Ordered', date: '15/10/2020 10:30', icon: 'pi pi-shopping-cart', color: '#9C27B0' },
|
||||||
|
{ status: 'Processing', date: '15/10/2020 14:00', icon: 'pi pi-cog', color: '#673AB7' },
|
||||||
|
{ status: 'Shipped', date: '15/10/2020 16:15', icon: 'pi pi-shopping-cart', color: '#FF9800' },
|
||||||
|
{ status: 'Delivered', date: '16/10/2020 10:00', icon: 'pi pi-check', color: '#607D8B' }
|
||||||
|
],
|
||||||
|
code: {
|
||||||
|
composition: `
|
||||||
|
<template>
|
||||||
|
<div class="card flex flex-wrap gap-6">
|
||||||
|
<Timeline :value="events" class="w-full md:w-80">
|
||||||
|
<template #content="slotProps">
|
||||||
|
{{ slotProps.item.status }}
|
||||||
|
</template>
|
||||||
|
</Timeline>
|
||||||
|
|
||||||
|
<Timeline :value="events" align="right" class="w-full md:w-80">
|
||||||
|
<template #content="slotProps">
|
||||||
|
{{ slotProps.item.status }}
|
||||||
|
</template>
|
||||||
|
</Timeline>
|
||||||
|
|
||||||
|
<Timeline :value="events" align="alternate" class="w-full md:w-80">
|
||||||
|
<template #content="slotProps">
|
||||||
|
{{ slotProps.item.status }}
|
||||||
|
</template>
|
||||||
|
</Timeline>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref } from "vue";
|
||||||
|
|
||||||
|
const events = ref([
|
||||||
|
{ status: 'Ordered', date: '15/10/2020 10:30', icon: 'pi pi-shopping-cart', color: '#9C27B0'},
|
||||||
|
{ status: 'Processing', date: '15/10/2020 14:00', icon: 'pi pi-cog', color: '#673AB7' },
|
||||||
|
{ status: 'Shipped', date: '15/10/2020 16:15', icon: 'pi pi-shopping-cart', color: '#FF9800' },
|
||||||
|
{ status: 'Delivered', date: '16/10/2020 10:00', icon: 'pi pi-check', color: '#607D8B' }
|
||||||
|
]);
|
||||||
|
|
||||||
|
<\/script>`
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<template>
|
||||||
|
<div class="doc-main">
|
||||||
|
<div class="doc-intro">
|
||||||
|
<h1>Timeline Theming</h1>
|
||||||
|
</div>
|
||||||
|
<DocSections :docs="docs" />
|
||||||
|
</div>
|
||||||
|
<DocSectionNav :docs="docs" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import StyledDoc from './StyledDoc.vue';
|
||||||
|
import UnstyledDoc from './UnstyledDoc.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
docs: [
|
||||||
|
{
|
||||||
|
id: 'styled',
|
||||||
|
label: 'Styled',
|
||||||
|
component: StyledDoc
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'unstyled',
|
||||||
|
label: 'Unstyled',
|
||||||
|
component: UnstyledDoc
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
|
@ -0,0 +1,72 @@
|
||||||
|
<template>
|
||||||
|
<DocSectionText v-bind="$attrs">
|
||||||
|
<p>Theming is implemented with the pass through properties in unstyled mode. Example below demonstrates the built-in Tailwind theme.</p>
|
||||||
|
</DocSectionText>
|
||||||
|
<DocSectionCode :code="code" :service="['NodeService']" embedded />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { NodeService } from '@/service/NodeService';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
nodes: null,
|
||||||
|
code: {
|
||||||
|
composition: `
|
||||||
|
<template>
|
||||||
|
<div class="card">
|
||||||
|
<TreeTable :value="nodes">
|
||||||
|
<Column field="name" header="Name" sortable expander></Column>
|
||||||
|
<Column field="size" header="Size" sortable></Column>
|
||||||
|
<Column field="type" header="Type" sortable></Column>
|
||||||
|
</TreeTable>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, onMounted } from 'vue';
|
||||||
|
import { NodeService } from '@/service/NodeService';
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
NodeService.getTreeTableNodes().then((data) => (nodes.value = data));
|
||||||
|
});
|
||||||
|
|
||||||
|
const nodes = ref();
|
||||||
|
<\/script>`,
|
||||||
|
data: `
|
||||||
|
{
|
||||||
|
key: '0',
|
||||||
|
label: 'Documents',
|
||||||
|
data: 'Documents Folder',
|
||||||
|
icon: 'pi pi-fw pi-inbox',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
key: '0-0',
|
||||||
|
label: 'Work',
|
||||||
|
data: 'Work Folder',
|
||||||
|
icon: 'pi pi-fw pi-cog',
|
||||||
|
children: [
|
||||||
|
{ key: '0-0-0', label: 'Expenses.doc', icon: 'pi pi-fw pi-file', data: 'Expenses Document' },
|
||||||
|
{ key: '0-0-1', label: 'Resume.doc', icon: 'pi pi-fw pi-file', data: 'Resume Document' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: '0-1',
|
||||||
|
label: 'Home',
|
||||||
|
data: 'Home Folder',
|
||||||
|
icon: 'pi pi-fw pi-home',
|
||||||
|
children: [{ key: '0-1-0', label: 'Invoices.txt', icon: 'pi pi-fw pi-file', data: 'Invoices for this month' }]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
...
|
||||||
|
`
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
NodeService.getTreeTableNodes().then((data) => (this.nodes = data));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<template>
|
||||||
|
<div class="doc-main">
|
||||||
|
<div class="doc-intro">
|
||||||
|
<h1>TreeTable Theming</h1>
|
||||||
|
</div>
|
||||||
|
<DocSections :docs="docs" />
|
||||||
|
</div>
|
||||||
|
<DocSectionNav :docs="docs" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import StyledDoc from './StyledDoc.vue';
|
||||||
|
import UnstyledDoc from './UnstyledDoc.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
docs: [
|
||||||
|
{
|
||||||
|
id: 'styled',
|
||||||
|
label: 'Styled',
|
||||||
|
component: StyledDoc
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'unstyled',
|
||||||
|
label: 'Unstyled',
|
||||||
|
component: UnstyledDoc
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
|
@ -1,5 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<DocComponent title="Vue Table Component" header="DataTable" description="DataTable displays data in tabular format." :componentDocs="docs" :apiDocs="['DataTable', 'Column', 'ColumnGroup', 'Row']" :ptTabComponent="ptComponent" />
|
<DocComponent
|
||||||
|
title="Vue Table Component"
|
||||||
|
header="DataTable"
|
||||||
|
description="DataTable displays data in tabular format."
|
||||||
|
:componentDocs="docs"
|
||||||
|
:apiDocs="['DataTable', 'Column', 'ColumnGroup', 'Row']"
|
||||||
|
:ptTabComponent="ptComponent"
|
||||||
|
:themingDocs="themingDoc"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -19,7 +27,6 @@ import RowExpansionDoc from '@/doc/datatable/RowExpansionDoc';
|
||||||
import SizeDoc from '@/doc/datatable/SizeDoc';
|
import SizeDoc from '@/doc/datatable/SizeDoc';
|
||||||
import StatefulDoc from '@/doc/datatable/StatefulDoc';
|
import StatefulDoc from '@/doc/datatable/StatefulDoc';
|
||||||
import StripedRowsDoc from '@/doc/datatable/StripedRowsDoc';
|
import StripedRowsDoc from '@/doc/datatable/StripedRowsDoc';
|
||||||
import StyleDoc from '@/doc/datatable/StyleDoc';
|
|
||||||
import TemplateDoc from '@/doc/datatable/TemplateDoc';
|
import TemplateDoc from '@/doc/datatable/TemplateDoc';
|
||||||
import ExpandModeDoc from '@/doc/datatable/colresize/ExpandModeDoc';
|
import ExpandModeDoc from '@/doc/datatable/colresize/ExpandModeDoc';
|
||||||
import FitModeDoc from '@/doc/datatable/colresize/FitModeDoc';
|
import FitModeDoc from '@/doc/datatable/colresize/FitModeDoc';
|
||||||
|
@ -50,6 +57,7 @@ import MultipleColumnsDoc from '@/doc/datatable/sort/MultipleColumnsDoc';
|
||||||
import PresortDoc from '@/doc/datatable/sort/PresortDoc';
|
import PresortDoc from '@/doc/datatable/sort/PresortDoc';
|
||||||
import RemovableSortDoc from '@/doc/datatable/sort/RemovableSortDoc';
|
import RemovableSortDoc from '@/doc/datatable/sort/RemovableSortDoc';
|
||||||
import SingleColumnDoc from '@/doc/datatable/sort/SingleColumnDoc';
|
import SingleColumnDoc from '@/doc/datatable/sort/SingleColumnDoc';
|
||||||
|
import ThemingDoc from '@/doc/datatable/theming/index.vue';
|
||||||
import LazyVirtualScrollDoc from '@/doc/datatable/virtualscroll/LazyVirtualScrollDoc';
|
import LazyVirtualScrollDoc from '@/doc/datatable/virtualscroll/LazyVirtualScrollDoc';
|
||||||
import PreloadVirtualScrollDoc from '@/doc/datatable/virtualscroll/PreloadVirtualScrollDoc';
|
import PreloadVirtualScrollDoc from '@/doc/datatable/virtualscroll/PreloadVirtualScrollDoc';
|
||||||
|
|
||||||
|
@ -347,18 +355,14 @@ export default {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: 'style',
|
|
||||||
label: 'Style',
|
|
||||||
component: StyleDoc
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: 'accessibility',
|
id: 'accessibility',
|
||||||
label: 'Accessibility',
|
label: 'Accessibility',
|
||||||
component: AccessibilityDoc
|
component: AccessibilityDoc
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
ptComponent: PTComponent
|
ptComponent: PTComponent,
|
||||||
|
themingDoc: ThemingDoc
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<DocComponent title="Vue Timeline Component" header="Timeline" description="Timeline visualizes a series of chained events." :componentDocs="docs" :apiDocs="['Timeline']" :ptTabComponent="ptComponent" />
|
<DocComponent title="Vue Timeline Component" header="Timeline" description="Timeline visualizes a series of chained events." :componentDocs="docs" :apiDocs="['Timeline']" :ptTabComponent="ptComponent" :themingDocs="themingDoc" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -9,9 +9,9 @@ import BasicDoc from '@/doc/timeline/BasicDoc';
|
||||||
import HorizontalDoc from '@/doc/timeline/HorizontalDoc';
|
import HorizontalDoc from '@/doc/timeline/HorizontalDoc';
|
||||||
import ImportDoc from '@/doc/timeline/ImportDoc';
|
import ImportDoc from '@/doc/timeline/ImportDoc';
|
||||||
import OppositeDoc from '@/doc/timeline/OppositeDoc';
|
import OppositeDoc from '@/doc/timeline/OppositeDoc';
|
||||||
import StyleDoc from '@/doc/timeline/StyleDoc';
|
|
||||||
import TemplateDoc from '@/doc/timeline/TemplateDoc';
|
import TemplateDoc from '@/doc/timeline/TemplateDoc';
|
||||||
import PTComponent from '@/doc/timeline/pt/index.vue';
|
import PTComponent from '@/doc/timeline/pt/index.vue';
|
||||||
|
import ThemingDoc from '@/doc/timeline/theming/index.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
@ -47,41 +47,15 @@ export default {
|
||||||
label: 'Horizontal',
|
label: 'Horizontal',
|
||||||
component: HorizontalDoc
|
component: HorizontalDoc
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: 'style',
|
|
||||||
label: 'Style',
|
|
||||||
component: StyleDoc
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: 'accessibility',
|
id: 'accessibility',
|
||||||
label: 'Accessibility',
|
label: 'Accessibility',
|
||||||
component: AccessibilityDoc
|
component: AccessibilityDoc
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
ptComponent: PTComponent
|
ptComponent: PTComponent,
|
||||||
|
themingDoc: ThemingDoc
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
@media screen and (max-width: 960px) {
|
|
||||||
::v-deep(.customized-timeline) {
|
|
||||||
.p-timeline-event:nth-child(even) {
|
|
||||||
flex-direction: row !important;
|
|
||||||
|
|
||||||
.p-timeline-event-content {
|
|
||||||
text-align: left !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.p-timeline-event-opposite {
|
|
||||||
flex: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.p-card {
|
|
||||||
margin-top: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
|
@ -1,5 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<DocComponent title="Vue TreeTable Component" header="TreeTable" description="TreeTable is used to display hierarchical data in tabular format." :componentDocs="docs" :apiDocs="['TreeTable', 'Column']" :ptTabComponent="ptComponent" />
|
<DocComponent
|
||||||
|
title="Vue TreeTable Component"
|
||||||
|
header="TreeTable"
|
||||||
|
description="TreeTable is used to display hierarchical data in tabular format."
|
||||||
|
:componentDocs="docs"
|
||||||
|
:apiDocs="['TreeTable', 'Column']"
|
||||||
|
:ptTabComponent="ptComponent"
|
||||||
|
:themingDocs="themingDoc"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -13,7 +21,6 @@ import ImportDoc from '@/doc/treetable/ImportDoc';
|
||||||
import LazyLoadDoc from '@/doc/treetable/LazyLoadDoc';
|
import LazyLoadDoc from '@/doc/treetable/LazyLoadDoc';
|
||||||
import ResponsiveDoc from '@/doc/treetable/ResponsiveDoc';
|
import ResponsiveDoc from '@/doc/treetable/ResponsiveDoc';
|
||||||
import SizeDoc from '@/doc/treetable/SizeDoc';
|
import SizeDoc from '@/doc/treetable/SizeDoc';
|
||||||
import StyleDoc from '@/doc/treetable/StyleDoc';
|
|
||||||
import TemplateDoc from '@/doc/treetable/TemplateDoc';
|
import TemplateDoc from '@/doc/treetable/TemplateDoc';
|
||||||
import PaginatorBasicDoc from '@/doc/treetable/paginator/PaginatorBasicDoc';
|
import PaginatorBasicDoc from '@/doc/treetable/paginator/PaginatorBasicDoc';
|
||||||
import PaginatorTemplateDoc from '@/doc/treetable/paginator/PaginatorTemplateDoc';
|
import PaginatorTemplateDoc from '@/doc/treetable/paginator/PaginatorTemplateDoc';
|
||||||
|
@ -31,6 +38,7 @@ import SingleRowSelectionDoc from '@/doc/treetable/selection/SingleRowSelectionD
|
||||||
import MultipleColumnsDoc from '@/doc/treetable/sort/MultipleColumnsDoc';
|
import MultipleColumnsDoc from '@/doc/treetable/sort/MultipleColumnsDoc';
|
||||||
import RemovableSortDoc from '@/doc/treetable/sort/RemovableSortDoc';
|
import RemovableSortDoc from '@/doc/treetable/sort/RemovableSortDoc';
|
||||||
import SingleColumnDoc from '@/doc/treetable/sort/SingleColumnDoc';
|
import SingleColumnDoc from '@/doc/treetable/sort/SingleColumnDoc';
|
||||||
|
import ThemingDoc from '@/doc/treetable/theming/index.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
@ -191,18 +199,14 @@ export default {
|
||||||
label: 'Responsive',
|
label: 'Responsive',
|
||||||
component: ResponsiveDoc
|
component: ResponsiveDoc
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: 'style',
|
|
||||||
label: 'Style',
|
|
||||||
component: StyleDoc
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: 'accessibility',
|
id: 'accessibility',
|
||||||
label: 'Accessibility',
|
label: 'Accessibility',
|
||||||
component: AccessibilityDoc
|
component: AccessibilityDoc
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
ptComponent: PTComponent
|
ptComponent: PTComponent,
|
||||||
|
themingDoc: ThemingDoc
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue