From d9b2dfd9a405f2a47a8940935b7236a48651b288 Mon Sep 17 00:00:00 2001 From: victor Date: Wed, 7 Dec 2022 22:25:16 +0400 Subject: [PATCH 01/17] feat: added basic accordion --- .../accordion/examples/AccordionExample.vue | 16 +++- package-lock.json | 37 +++++-- package.json | 5 +- src/components/Accordion/Accordion.vue | 96 ++++++++++--------- src/components/Accordion/types.ts | 8 ++ 5 files changed, 106 insertions(+), 56 deletions(-) create mode 100644 src/components/Accordion/types.ts diff --git a/docs/components/accordion/examples/AccordionExample.vue b/docs/components/accordion/examples/AccordionExample.vue index 4d214c1..8cfe988 100644 --- a/docs/components/accordion/examples/AccordionExample.vue +++ b/docs/components/accordion/examples/AccordionExample.vue @@ -1,8 +1,22 @@ diff --git a/package-lock.json b/package-lock.json index 1098230..8832eaf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,8 @@ "floating-vue": "^2.0.0-beta.20", "flowbite": "1.5.4", "lodash-es": "4.17.21", - "tailwindcss": "3.2.4" + "nanoid": "4.0.0", + "tailwindcss": "^3" }, "devDependencies": { "@types/lodash-es": "4.17.6", @@ -3502,14 +3503,14 @@ } }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz", + "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==", "bin": { - "nanoid": "bin/nanoid.cjs" + "nanoid": "bin/nanoid.js" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": "^14 || ^16 || >=18" } }, "node_modules/natural-compare": { @@ -3859,6 +3860,17 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/preact": { "version": "10.11.3", "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.3.tgz", @@ -7901,9 +7913,9 @@ "dev": true }, "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz", + "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==" }, "natural-compare": { "version": "1.4.0", @@ -8074,6 +8086,13 @@ "nanoid": "^3.3.4", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" + }, + "dependencies": { + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + } } }, "postcss-import": { diff --git a/package.json b/package.json index 78f48ac..4f738b5 100644 --- a/package.json +++ b/package.json @@ -64,12 +64,13 @@ "vue-tsc": "0.30.0" }, "dependencies": { - "floating-vue": "^2.0.0-beta.20", "@vueuse/core": "9.3.0", "classnames": "2.3.2", + "floating-vue": "^2.0.0-beta.20", "flowbite": "1.5.4", "lodash-es": "4.17.21", - "tailwindcss": "3.2.4" + "nanoid": "4.0.0", + "tailwindcss": "^3" }, "engines": { "node": "14.x", diff --git a/src/components/Accordion/Accordion.vue b/src/components/Accordion/Accordion.vue index b6a2780..f8f64ac 100644 --- a/src/components/Accordion/Accordion.vue +++ b/src/components/Accordion/Accordion.vue @@ -1,51 +1,37 @@ diff --git a/src/components/Accordion/types.ts b/src/components/Accordion/types.ts new file mode 100644 index 0000000..58bd9a2 --- /dev/null +++ b/src/components/Accordion/types.ts @@ -0,0 +1,8 @@ +export type AccordionItem = { + header: string + icon?: string +} +export interface AccordionTransformedItem extends AccordionItem { + id: string + isVisible: boolean +} From c78a56810b0901cf2af1d5d9426a19fb3942320e Mon Sep 17 00:00:00 2001 From: victor Date: Thu, 8 Dec 2022 10:20:54 +0400 Subject: [PATCH 02/17] feat: added option to pass classes to header and content --- .../accordion/examples/AccordionExample.vue | 2 +- src/components/Accordion/Accordion.vue | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/components/accordion/examples/AccordionExample.vue b/docs/components/accordion/examples/AccordionExample.vue index 8cfe988..d5f98bf 100644 --- a/docs/components/accordion/examples/AccordionExample.vue +++ b/docs/components/accordion/examples/AccordionExample.vue @@ -1,6 +1,6 @@ @@ -38,7 +44,11 @@ const props = defineProps({ type: Boolean, default: false, }, - arrowIcon: { + headerClasses: { + type: String, + default: '', + }, + contentClasses: { type: String, default: '', }, From c76cab7a17712891e98f571d010e327e4c744b8e Mon Sep 17 00:00:00 2001 From: victor Date: Thu, 8 Dec 2022 22:49:11 +0400 Subject: [PATCH 03/17] feat: added accordion docs --- docs/components/accordion/accordion.md | 145 +++++++++++++++++- .../examples/AccordionAlwaysOpenExample.vue | 27 ++++ .../accordion/examples/AccordionExample.vue | 43 +++--- .../examples/AccordionFlushExample.vue | 27 ++++ .../AccordionStyledHeadersExample.vue | 27 ++++ src/components/Accordion/Accordion.vue | 2 +- 6 files changed, 248 insertions(+), 23 deletions(-) create mode 100644 docs/components/accordion/examples/AccordionAlwaysOpenExample.vue create mode 100644 docs/components/accordion/examples/AccordionFlushExample.vue create mode 100644 docs/components/accordion/examples/AccordionStyledHeadersExample.vue diff --git a/docs/components/accordion/accordion.md b/docs/components/accordion/accordion.md index 3ed9fa6..650d1fc 100644 --- a/docs/components/accordion/accordion.md +++ b/docs/components/accordion/accordion.md @@ -1,15 +1,154 @@ # Vue Accordion Component - Flowbite +#### Use Tailwind CSS accordion component to show expanding content +--- + +:::tip +Original reference: [https://flowbite.com/docs/components/accordion/](https://flowbite.com/docs/components/accordion/) +::: + +## Default accordion +Use this example to basic accordion. ```vue + + ``` + +## Always open accordion +Always open prop to makes accordion able to open multiple elements. +```vue + + + + +``` + + + +## Flush accordion +Flush prop makes opened tab being not able to close. +```vue + + + + +``` + + + +## Styling accordion +You can style headers with `header-classes` prop and content containers with `content-classes` props by pass tailwind classes. +```vue + + + + +``` + + diff --git a/docs/components/accordion/examples/AccordionAlwaysOpenExample.vue b/docs/components/accordion/examples/AccordionAlwaysOpenExample.vue new file mode 100644 index 0000000..962c199 --- /dev/null +++ b/docs/components/accordion/examples/AccordionAlwaysOpenExample.vue @@ -0,0 +1,27 @@ + + + diff --git a/docs/components/accordion/examples/AccordionExample.vue b/docs/components/accordion/examples/AccordionExample.vue index d5f98bf..556a382 100644 --- a/docs/components/accordion/examples/AccordionExample.vue +++ b/docs/components/accordion/examples/AccordionExample.vue @@ -1,22 +1,27 @@ - + + diff --git a/docs/components/accordion/examples/AccordionFlushExample.vue b/docs/components/accordion/examples/AccordionFlushExample.vue new file mode 100644 index 0000000..e277b16 --- /dev/null +++ b/docs/components/accordion/examples/AccordionFlushExample.vue @@ -0,0 +1,27 @@ + + + diff --git a/docs/components/accordion/examples/AccordionStyledHeadersExample.vue b/docs/components/accordion/examples/AccordionStyledHeadersExample.vue new file mode 100644 index 0000000..224cd84 --- /dev/null +++ b/docs/components/accordion/examples/AccordionStyledHeadersExample.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/Accordion/Accordion.vue b/src/components/Accordion/Accordion.vue index ff712b5..7445e11 100644 --- a/src/components/Accordion/Accordion.vue +++ b/src/components/Accordion/Accordion.vue @@ -1,5 +1,5 @@