From 3d40228f0ef2a5703c5511f2a0a8ade2f97e0327 Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 28 Oct 2024 08:51:40 +0700 Subject: [PATCH 1/6] props composition api --- manifest.json | 3 +- src/components/address/index.vue | 3 +- src/components/checkboxes/index.vue | 45 +++++----------- src/components/code_json/index.vue | 2 +- src/components/dropdown/index.vue | 4 +- src/components/email/index.vue | 3 +- src/components/image_choice/index.vue | 65 +++++++----------------- src/components/likert_scale/index.vue | 38 +++++--------- src/components/list/index.vue | 34 ++++--------- src/components/locale_selector/index.vue | 25 ++------- src/components/multiple_choice/index.vue | 48 +++++------------ src/components/number/index.vue | 1 - src/components/phone_number/index.vue | 2 +- src/components/ranking/index.vue | 53 +++++-------------- src/components/rating_scale/index.vue | 44 ++++++---------- src/components/short_text/index.vue | 5 +- src/components/slider/index.vue | 60 +++++++--------------- src/components/website/index.vue | 44 +++++----------- src/types/index.ts | 38 ++++++++++++-- 19 files changed, 174 insertions(+), 343 deletions(-) diff --git a/manifest.json b/manifest.json index bfd79d7..261c8f7 100644 --- a/manifest.json +++ b/manifest.json @@ -72,7 +72,6 @@ "label": "List", "component": "list", "description": "A sortable list of items.", - "placeholder": "Add an item", "props": { "items": ["First item", "Second item"] } @@ -729,7 +728,7 @@ "properties": { "display": { "component": "html_block_list", - "tag": "ordered", + "type": "ordered", "items": ["First item", "Second item", "Third item"] } } diff --git a/src/components/address/index.vue b/src/components/address/index.vue index 86cd9ac..8b68e7b 100644 --- a/src/components/address/index.vue +++ b/src/components/address/index.vue @@ -51,8 +51,7 @@ const isRequired = computed(() => :input-id="props.input.key" :class="props.theme.input" rows="4" - :placeholder="props.input?.placeholder || 'Enter your address'" - v-bind="{ ...$attrs, ...props.input.props }" + v-bind="props.input.props" /> -import { defineModel, computed, defineProps, type PropType } from 'vue' -import type { InputProperties } from '~/types' +import type { InputChoiceProperties } from '~/types' import Checkbox from 'primevue/checkbox' +import { computed } from 'vue' -const props = defineProps({ - input: { - type: Object as PropType, - required: true, - }, - theme: { - type: Object, - default: () => ({ - container: '', - label: 'w-full text-black dark:text-white', // Added text color for label - input: 'flex flex-col gap-2', // Layout for checkboxes - description: 'text-sm text-slate-700 dark:text-slate-300', // Description text for both modes - checkbox: 'mr-2', // Margin for checkbox alignment - checkboxLabel: 'text-black dark:text-white', // Added text color for checkbox labels - error: 'text-red-600 dark:text-red-400', // Added dark mode color for error - }), - }, - error: { - type: String, - default: '', - }, -}) +interface Props { + input: InputChoiceProperties + error?: string +} +const props = defineProps() const model = defineModel() const isRequired = computed(() => props.input.validations?.map((v) => v.rule).includes('required'), @@ -32,16 +15,16 @@ const isRequired = computed(() =>