aboutsummaryrefslogtreecommitdiffstats
path: root/apps/theming/src/components/admin/TextField.vue
diff options
context:
space:
mode:
authorChristopher Ng <chrng8@gmail.com>2022-10-01 03:04:39 +0000
committerChristopher Ng <chrng8@gmail.com>2022-10-28 00:18:47 +0000
commit4a2bbc7af9249364ba2455f627522450262cad75 (patch)
treeb0fd373e0aad0f18c35d2272c565b20bdab630a9 /apps/theming/src/components/admin/TextField.vue
parentd007088cf5d89e29065991e0cbe2c890dfa13d96 (diff)
downloadnextcloud-server-4a2bbc7af9249364ba2455f627522450262cad75.tar.gz
nextcloud-server-4a2bbc7af9249364ba2455f627522450262cad75.zip
Rewrite admin theming in Vue
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Diffstat (limited to 'apps/theming/src/components/admin/TextField.vue')
-rw-r--r--apps/theming/src/components/admin/TextField.vue98
1 files changed, 98 insertions, 0 deletions
diff --git a/apps/theming/src/components/admin/TextField.vue b/apps/theming/src/components/admin/TextField.vue
new file mode 100644
index 00000000000..df82415e48a
--- /dev/null
+++ b/apps/theming/src/components/admin/TextField.vue
@@ -0,0 +1,98 @@
+<!--
+ - @copyright 2022 Christopher Ng <chrng8@gmail.com>
+ -
+ - @author Christopher Ng <chrng8@gmail.com>
+ -
+ - @license AGPL-3.0-or-later
+ -
+ - This program is free software: you can redistribute it and/or modify
+ - it under the terms of the GNU Affero General Public License as
+ - published by the Free Software Foundation, either version 3 of the
+ - License, or (at your option) any later version.
+ -
+ - This program is distributed in the hope that it will be useful,
+ - but WITHOUT ANY WARRANTY; without even the implied warranty of
+ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ - GNU Affero General Public License for more details.
+ -
+ - You should have received a copy of the GNU Affero General Public License
+ - along with this program. If not, see <http://www.gnu.org/licenses/>.
+ -
+-->
+
+<template>
+ <div class="field">
+ <!-- PENDING undo trailing button icon requires @nextcloud/vue release and bump -->
+ <!-- PENDING custom maxlength requires @nextcloud/vue release and bump -->
+ <NcTextField :value.sync="localValue"
+ :label="displayName"
+ :label-visible="true"
+ :placeholder="placeholder"
+ :type="type"
+ :maxlength="maxlength"
+ :spellcheck="false"
+ :success="showSuccess"
+ :error="Boolean(errorMessage)"
+ :helper-text="errorMessage"
+ :show-trailing-button="value !== defaultValue"
+ trailing-button-icon="undo"
+ @trailing-button-click="undo"
+ @keydown.enter="save"
+ @blur="save" />
+ </div>
+</template>
+
+<script>
+import { NcTextField } from '@nextcloud/vue'
+
+import TextValueMixin from '../../mixins/admin/TextValueMixin.js'
+
+export default {
+ name: 'TextField',
+
+ components: {
+ NcTextField,
+ },
+
+ mixins: [
+ TextValueMixin,
+ ],
+
+ props: {
+ name: {
+ type: String,
+ required: true,
+ },
+ value: {
+ type: String,
+ required: true,
+ },
+ defaultValue: {
+ type: String,
+ required: true,
+ },
+ type: {
+ type: String,
+ required: true,
+ },
+ displayName: {
+ type: String,
+ required: true,
+ },
+ placeholder: {
+ type: String,
+ required: true,
+ },
+ maxlength: {
+ type: Number,
+ required: true,
+ },
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+.field {
+ max-width: 400px;
+}
+</style>