Frontend polishing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
0b6706225b
commit
24aec9b9d2
|
@ -138,6 +138,10 @@ export default {
|
||||||
margin-top: -5px;
|
margin-top: -5px;
|
||||||
margin-bottom: -5px;
|
margin-bottom: -5px;
|
||||||
}
|
}
|
||||||
|
button.action-item.action-item--single.icon-delete {
|
||||||
|
height: 34px;
|
||||||
|
width: 34px;
|
||||||
|
}
|
||||||
.invalid {
|
.invalid {
|
||||||
border: 1px solid var(--color-error) !important;
|
border: 1px solid var(--color-error) !important;
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,7 +74,7 @@ export default {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
max-width: 200px;
|
max-width: 180px;
|
||||||
|
|
||||||
.multiselect {
|
.multiselect {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
|
@ -42,7 +42,6 @@ const RequestChecks = [
|
||||||
{ operator: 'in', name: t('workflowengine', 'between') },
|
{ operator: 'in', name: t('workflowengine', 'between') },
|
||||||
{ operator: '!in', name: t('workflowengine', 'not between') }
|
{ operator: '!in', name: t('workflowengine', 'not between') }
|
||||||
],
|
],
|
||||||
// TODO: implement component
|
|
||||||
component: RequestTime
|
component: RequestTime
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -54,7 +53,8 @@ const RequestChecks = [
|
||||||
{ operator: 'matches', name: t('workflowengine', 'matches') },
|
{ operator: 'matches', name: t('workflowengine', 'matches') },
|
||||||
{ operator: '!matches', name: t('workflowengine', 'does not match') }
|
{ operator: '!matches', name: t('workflowengine', 'does not match') }
|
||||||
],
|
],
|
||||||
component: RequestUserAgent
|
// TODO: implement component
|
||||||
|
// component: RequestUserAgent
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
class: 'OCA\\WorkflowEngine\\Check\\UserGroupMembership',
|
class: 'OCA\\WorkflowEngine\\Check\\UserGroupMembership',
|
||||||
|
|
|
@ -5,8 +5,10 @@
|
||||||
<h3>{{ operation.name }}</h3>
|
<h3>{{ operation.name }}</h3>
|
||||||
<small>{{ operation.description }}</small>
|
<small>{{ operation.description }}</small>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="actions__item_options">
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -28,13 +30,14 @@ export default {
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.actions__item {
|
.actions__item {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
margin-left: -1px;
|
margin-left: -1px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
border-radius: var(--border-radius-large);
|
border-radius: var(--border-radius-large);
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
.icon {
|
.icon {
|
||||||
display: block;
|
display: block;
|
||||||
|
@ -49,6 +52,10 @@ export default {
|
||||||
.actions__item__description {
|
.actions__item__description {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
.actions__item_options {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
h3, small {
|
h3, small {
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
display: block;
|
display: block;
|
||||||
|
@ -83,9 +90,11 @@ export default {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
|
&:not(.icon-invert) {
|
||||||
filter: invert(1);
|
filter: invert(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* TODO: those should be provided by the backend, remove once ready */
|
/* TODO: those should be provided by the backend, remove once ready */
|
||||||
.icon-block {
|
.icon-block {
|
||||||
|
@ -94,7 +103,7 @@ export default {
|
||||||
.icon-convert-pdf {
|
.icon-convert-pdf {
|
||||||
background-image: url("data:image/svg+xml,%3Csvg width='16' height='16' version='1.1' viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23fff'%3E%3Cpath d='m7.0624 2.9056c-0.20526 0-0.36653 0.14989-0.36653 0.34066v8.8571c0 0.19077 0.16127 0.34066 0.36653 0.34066h8.0637c0.20526 0 0.36653-0.14989 0.36653-0.34066v-7.1538l-2.1992-2.044zm4.2518 2.6571s0.05132 0.64725-0.10996 1.567c0.52414 1.3987 1.0996 1.5875 1.3562 1.7033 0.54247-0.040873 1.1472-0.068129 1.6861 0.2044 0.36653 0.19486 0.65536 1.022-0.21992 1.022-0.39586-0.023161-1.1267-0.23574-1.6494-0.47692-0.78145 0.081762-1.752 0.21802-2.5657 0.54505-0.91633 1.4308-1.3268 1.6352-1.6494 1.6352-0.89067-0.21802-0.41052-1.3149-0.073304-1.4989 0.40319-0.32022 0.87601-0.50417 1.0263-0.54505 0.065969-0.10221 1.0146-1.8327 1.2462-2.5549-0.21992-0.69767-0.27123-1.4349-0.14661-1.8736 0.57179-0.69358 1.0996-0.23846 1.0996 0.27253zm-0.51315 2.1121c-0.19793 0.72015-0.98817 2.1012-0.95299 2.044 0.81004-0.33044 1.5394-0.42923 2.3458-0.54505-0.38559-0.16011-0.84009-0.17033-1.3928-1.4989z' stroke-width='.70672'/%3E%3Cpath d='m16.246-9.7651c-2.05e-4 0.0144-6e-3 0.027629-6e-3 0.042066-0.0044 2.2592 2.0761 3.742 4.0564 3.6477v1.2349l2.3737-2.2265-2.3377-2.3407-3e-3 1.2289c-1.0287 0.1337-1.8811-0.66867-1.8659-1.5414 2.9e-4 -0.016152 0.0083-0.029062 9e-3 -0.045071z' stroke-width='.67694'/%3E%3Cpath d='m3.2734 5.1094v1.4492h-2.7676v2.5h2.7246l-0.0019532 1.4629 3.0996-2.6387-3.0547-2.7734z'/%3E%3Cpath d='m8.334-11.356c-0.78035-0.78051-1.9205-1.0863-2.9866-0.80073a0.51533 0.51533 0 1 0 0.26293 0.99405c0.71208-0.19075 1.4702 0.01747 1.9914 0.53876 0.46076 0.46083 0.65567 1.1026 0.56688 1.7376a0.61838 0.61838 0 1 0-0.87225 0.87442l0.8687 0.86886a0.61838 0.61838 0 0 0 0.86992 7.91e-5l0.86886-0.8687a0.61838 0.61838 0 0 0 0.0011543-0.88702 0.61838 0.61838 0 0 0-0.67634-0.12303c0.04094-0.86013-0.27221-1.7117-0.89472-2.3343zm-3.3067 1.0814a0.61838 0.61838 0 0 0-0.015967-0.01364l-0.86984-0.87a0.61838 0.61838 0 0 0-0.042126-0.04213 0.61838 0.61838 0 0 0-0.82551 0.04205l-0.87 0.86984a0.61838 0.61838 0 0 0 0.66145 1.0237c-0.024276 0.84049 0.29182 1.6675 0.90045 2.2762 0.78035 0.78052 1.9205 1.0863 2.9866 0.80073a0.51533 0.51533 0 1 0-0.27202-0.99408c-0.71208 0.19075-1.4669-0.011716-1.988-0.53306-0.45484-0.45491-0.65183-1.0905-0.57258-1.7183l0.018216 0.018221a0.61843 0.61843 0 0 0 0.88935-0.85959z' stroke-width='.68342'/%3E%3Cpath d='m31.219 0.33675v0.00113h-6.9286v1.3295l6.9286 0.036145c0.0026-1.821e-4 0.0053 2.074e-4 0.0079 0 0.0053-4.166e-4 0.01058-0.00137 0.01581-0.00113 0.65203-0.00106 1.1749 0.44619 1.1867 1.0392 0.0108 0.5673-0.60099 1.0888-1.3381 1.0019l-0.0013-0.79858-1.6753 1.5203 1.7016 1.4481-0.0013-0.8031c1.419 0.06127 2.9112-0.90236 2.9081-2.3709-0.0029-1.3197-1.2547-2.4007-2.7961-2.4014-0.0023-1e-6 -0.0043-0.00113-0.0066-0.00113z' stroke-width='.462'/%3E%3Crect x='31.116' y='-1.6777' width='4.3279' height='7.5909'/%3E%3C/g%3E%3C/svg%3E");
|
background-image: url("data:image/svg+xml,%3Csvg width='16' height='16' version='1.1' viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23fff'%3E%3Cpath d='m7.0624 2.9056c-0.20526 0-0.36653 0.14989-0.36653 0.34066v8.8571c0 0.19077 0.16127 0.34066 0.36653 0.34066h8.0637c0.20526 0 0.36653-0.14989 0.36653-0.34066v-7.1538l-2.1992-2.044zm4.2518 2.6571s0.05132 0.64725-0.10996 1.567c0.52414 1.3987 1.0996 1.5875 1.3562 1.7033 0.54247-0.040873 1.1472-0.068129 1.6861 0.2044 0.36653 0.19486 0.65536 1.022-0.21992 1.022-0.39586-0.023161-1.1267-0.23574-1.6494-0.47692-0.78145 0.081762-1.752 0.21802-2.5657 0.54505-0.91633 1.4308-1.3268 1.6352-1.6494 1.6352-0.89067-0.21802-0.41052-1.3149-0.073304-1.4989 0.40319-0.32022 0.87601-0.50417 1.0263-0.54505 0.065969-0.10221 1.0146-1.8327 1.2462-2.5549-0.21992-0.69767-0.27123-1.4349-0.14661-1.8736 0.57179-0.69358 1.0996-0.23846 1.0996 0.27253zm-0.51315 2.1121c-0.19793 0.72015-0.98817 2.1012-0.95299 2.044 0.81004-0.33044 1.5394-0.42923 2.3458-0.54505-0.38559-0.16011-0.84009-0.17033-1.3928-1.4989z' stroke-width='.70672'/%3E%3Cpath d='m16.246-9.7651c-2.05e-4 0.0144-6e-3 0.027629-6e-3 0.042066-0.0044 2.2592 2.0761 3.742 4.0564 3.6477v1.2349l2.3737-2.2265-2.3377-2.3407-3e-3 1.2289c-1.0287 0.1337-1.8811-0.66867-1.8659-1.5414 2.9e-4 -0.016152 0.0083-0.029062 9e-3 -0.045071z' stroke-width='.67694'/%3E%3Cpath d='m3.2734 5.1094v1.4492h-2.7676v2.5h2.7246l-0.0019532 1.4629 3.0996-2.6387-3.0547-2.7734z'/%3E%3Cpath d='m8.334-11.356c-0.78035-0.78051-1.9205-1.0863-2.9866-0.80073a0.51533 0.51533 0 1 0 0.26293 0.99405c0.71208-0.19075 1.4702 0.01747 1.9914 0.53876 0.46076 0.46083 0.65567 1.1026 0.56688 1.7376a0.61838 0.61838 0 1 0-0.87225 0.87442l0.8687 0.86886a0.61838 0.61838 0 0 0 0.86992 7.91e-5l0.86886-0.8687a0.61838 0.61838 0 0 0 0.0011543-0.88702 0.61838 0.61838 0 0 0-0.67634-0.12303c0.04094-0.86013-0.27221-1.7117-0.89472-2.3343zm-3.3067 1.0814a0.61838 0.61838 0 0 0-0.015967-0.01364l-0.86984-0.87a0.61838 0.61838 0 0 0-0.042126-0.04213 0.61838 0.61838 0 0 0-0.82551 0.04205l-0.87 0.86984a0.61838 0.61838 0 0 0 0.66145 1.0237c-0.024276 0.84049 0.29182 1.6675 0.90045 2.2762 0.78035 0.78052 1.9205 1.0863 2.9866 0.80073a0.51533 0.51533 0 1 0-0.27202-0.99408c-0.71208 0.19075-1.4669-0.011716-1.988-0.53306-0.45484-0.45491-0.65183-1.0905-0.57258-1.7183l0.018216 0.018221a0.61843 0.61843 0 0 0 0.88935-0.85959z' stroke-width='.68342'/%3E%3Cpath d='m31.219 0.33675v0.00113h-6.9286v1.3295l6.9286 0.036145c0.0026-1.821e-4 0.0053 2.074e-4 0.0079 0 0.0053-4.166e-4 0.01058-0.00137 0.01581-0.00113 0.65203-0.00106 1.1749 0.44619 1.1867 1.0392 0.0108 0.5673-0.60099 1.0888-1.3381 1.0019l-0.0013-0.79858-1.6753 1.5203 1.7016 1.4481-0.0013-0.8031c1.419 0.06127 2.9112-0.90236 2.9081-2.3709-0.0029-1.3197-1.2547-2.4007-2.7961-2.4014-0.0023-1e-6 -0.0043-0.00113-0.0066-0.00113z' stroke-width='.462'/%3E%3Crect x='31.116' y='-1.6777' width='4.3279' height='7.5909'/%3E%3C/g%3E%3C/svg%3E");
|
||||||
}
|
}
|
||||||
.icon-invert {
|
.colored .icon-invert {
|
||||||
filter: invert(1);
|
filter: invert(1);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
<template>
|
|
||||||
<Multiselect v-model="value" :options="options" track-by="id"
|
|
||||||
label="text" @input="$emit('input', value.id)" />
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { Multiselect } from 'nextcloud-vue'
|
|
||||||
|
|
||||||
const pdfConvertOptions = [
|
|
||||||
{
|
|
||||||
id: 'keep;preserve',
|
|
||||||
text: t('workflow_pdf_converter', 'Keep original, preserve existing PDFs')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'keep;overwrite',
|
|
||||||
text: t('workflow_pdf_converter', 'Keep original, overwrite existing PDF')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'delete;preserve',
|
|
||||||
text: t('workflow_pdf_converter', 'Delete original, preserve existing PDFs')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'delete;overwrite',
|
|
||||||
text: t('workflow_pdf_converter', 'Delete original, overwrite existing PDF')
|
|
||||||
}
|
|
||||||
]
|
|
||||||
export default {
|
|
||||||
name: 'ConvertToPdf',
|
|
||||||
components: { Multiselect },
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
options: pdfConvertOptions,
|
|
||||||
value: pdfConvertOptions[0]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.multiselect {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 300px;
|
|
||||||
margin: auto;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,31 +0,0 @@
|
||||||
<template>
|
|
||||||
<Multiselect v-model="value" :options="options" track-by="id"
|
|
||||||
label="title" :multiple="true" :tagging="true"
|
|
||||||
@input="$emit('input', value.map(item => item.id))" />
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// TODO: fetch tags from endpoint
|
|
||||||
import { Multiselect } from 'nextcloud-vue'
|
|
||||||
|
|
||||||
const tags = [{ id: 3, title: 'foo' }, { id: 4, title: 'bar' }]
|
|
||||||
export default {
|
|
||||||
name: 'Tag',
|
|
||||||
components: { Multiselect },
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
options: tags,
|
|
||||||
value: null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.multiselect {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 300px;
|
|
||||||
margin: auto;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,6 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="section rule" :style="{ borderLeftColor: operation.color || '' }">
|
<div class="section rule" :style="{ borderLeftColor: operation.color || '' }">
|
||||||
<!-- TODO: icon-confirm -->
|
|
||||||
<div class="trigger">
|
<div class="trigger">
|
||||||
<p>
|
<p>
|
||||||
<span>{{ t('workflowengine', 'When') }}</span>
|
<span>{{ t('workflowengine', 'When') }}</span>
|
||||||
|
@ -21,10 +20,10 @@
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<Actions>
|
<Actions>
|
||||||
<ActionButton v-if="rule.id < -1" icon="icon-close" @click="cancelRule">
|
<ActionButton v-if="rule.id < -1" icon="icon-close" @click="cancelRule">
|
||||||
Cancel rule creation
|
{{ t('workflowengine', 'Cancel rule creation') }}
|
||||||
</ActionButton>
|
</ActionButton>
|
||||||
<ActionButton v-else icon="icon-close" @click="deleteRule">
|
<ActionButton v-else icon="icon-close" @click="deleteRule">
|
||||||
Remove rule
|
{{ t('workflowengine', 'Remove rule') }}
|
||||||
</ActionButton>
|
</ActionButton>
|
||||||
</Actions>
|
</Actions>
|
||||||
</div>
|
</div>
|
||||||
|
@ -204,6 +203,7 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.trigger p, .action p {
|
.trigger p, .action p {
|
||||||
|
min-height: 34px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
|
@ -211,7 +211,9 @@ export default {
|
||||||
min-width: 50px;
|
min-width: 50px;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
color: var(--color-text-maxcontrast);
|
color: var(--color-text-maxcontrast);
|
||||||
padding-right: 5px;
|
padding-right: 10px;
|
||||||
|
padding-top: 7px;
|
||||||
|
margin-bottom: auto;
|
||||||
}
|
}
|
||||||
.multiselect {
|
.multiselect {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
|
|
|
@ -80,15 +80,11 @@ export default {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
max-width: 900px;
|
max-width: 900px;
|
||||||
.actions__item {
|
.actions__item {
|
||||||
max-width: 290px;
|
max-width: 280px;
|
||||||
flex-basis: 250px;
|
flex-basis: 250px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.actions__more {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
button.icon {
|
button.icon {
|
||||||
padding-left: 32px;
|
padding-left: 32px;
|
||||||
background-position: 10px center;
|
background-position: 10px center;
|
||||||
|
|
|
@ -61,29 +61,6 @@ window.OCA.WorkflowEngine = Object.assign({}, OCA.WorkflowEngine, {
|
||||||
// Register shipped checks
|
// Register shipped checks
|
||||||
ShippedChecks.forEach((checkPlugin) => window.OCA.WorkflowEngine.registerCheck(checkPlugin))
|
ShippedChecks.forEach((checkPlugin) => window.OCA.WorkflowEngine.registerCheck(checkPlugin))
|
||||||
|
|
||||||
/**
|
|
||||||
* FIXME: remove before merge as this is for UI testing only
|
|
||||||
*/
|
|
||||||
const demo = [
|
|
||||||
{
|
|
||||||
id: 'OCA\\TestExample\\Operation1',
|
|
||||||
name: 'Convert to PDF',
|
|
||||||
description: 'Convert a file to PDF using Libreoffice',
|
|
||||||
iconClass: 'icon-convert-pdf',
|
|
||||||
color: 'var(--color-success)',
|
|
||||||
operation: 'deny'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'OCA\\TestExample\\Operation2',
|
|
||||||
name: 'Notify me',
|
|
||||||
description: 'Send a Nextcloud Notification',
|
|
||||||
iconClass: 'icon-comment-white',
|
|
||||||
color: 'var(--color-warning)',
|
|
||||||
operation: 'deny'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
demo.forEach((operatorPlugin) => window.OCA.WorkflowEngine.registerOperator(operatorPlugin))
|
|
||||||
|
|
||||||
Vue.use(Vuex)
|
Vue.use(Vuex)
|
||||||
Vue.prototype.t = t
|
Vue.prototype.t = t
|
||||||
|
|
||||||
|
|
|
@ -7,17 +7,5 @@ module.exports = {
|
||||||
publicPath: '/js/',
|
publicPath: '/js/',
|
||||||
filename: 'workflowengine.js',
|
filename: 'workflowengine.js',
|
||||||
jsonpFunction: 'webpackJsonpWorkflowengine'
|
jsonpFunction: 'webpackJsonpWorkflowengine'
|
||||||
},
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
test: /\.handlebars/,
|
|
||||||
loader: "handlebars-loader",
|
|
||||||
query: {
|
|
||||||
extensions: '.handlebars',
|
|
||||||
helperDirs: path.join(__dirname, 'src/hbs_helpers'),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue