From 42f97f63d52a15cc1869ea167892c4af0962df24 Mon Sep 17 00:00:00 2001
From: "Adrian O.V" <83074853+CodexAdrian@users.noreply.github.com>
Date: Wed, 28 Jun 2023 11:44:47 -0400
Subject: [PATCH] Share modal (#74)
* Creation of the share modal
* Update package.json
* Addressed comments
* Fixed dependency
* Update ShareModal.vue
* Fixed url
* Update ShareModal.vue
* Adressed changes
---
docs/.vitepress/config.js | 1 +
docs/components/share-modal.md | 44 +++++
lib/assets/external/mastodon.svg | 1 +
lib/assets/external/reddit.svg | 1 +
lib/assets/external/twitter.svg | 1 +
lib/assets/icons/mail.svg | 1 +
lib/assets/icons/share.svg | 1 +
lib/assets/styles/classes.scss | 6 +-
lib/components/base/ShareModal.vue | 270 +++++++++++++++++++++++++++++
lib/components/index.js | 7 +
package.json | 3 +-
pnpm-lock.yaml | 11 ++
12 files changed, 345 insertions(+), 2 deletions(-)
create mode 100644 docs/components/share-modal.md
create mode 100644 lib/assets/external/mastodon.svg
create mode 100644 lib/assets/external/reddit.svg
create mode 100644 lib/assets/external/twitter.svg
create mode 100644 lib/assets/icons/mail.svg
create mode 100644 lib/assets/icons/share.svg
create mode 100644 lib/components/base/ShareModal.vue
diff --git a/docs/.vitepress/config.js b/docs/.vitepress/config.js
index e3f6014b8..f246dae7c 100644
--- a/docs/.vitepress/config.js
+++ b/docs/.vitepress/config.js
@@ -44,6 +44,7 @@ export default {
{ text: 'Markdown', link: '/components/markdown' },
{ text: 'Copy Code', link: '/components/copy-code' },
{ text: 'Notifications', link: '/components/notifications' },
+ { text: 'Share Modal', link: '/components/share-modal' },
],
},
],
diff --git a/docs/components/share-modal.md b/docs/components/share-modal.md
new file mode 100644
index 000000000..44f48d34d
--- /dev/null
+++ b/docs/components/share-modal.md
@@ -0,0 +1,44 @@
+# Share Modal
+
+
+
+
+
+
+
+
+```vue
+
+
+
+```
+You can use ref to open the modal, calling the show method
+
+`content` is what will be shown in the text of the input for sharing
+```text
+$refs.shareContent.show(content)
+```
diff --git a/lib/assets/external/mastodon.svg b/lib/assets/external/mastodon.svg
new file mode 100644
index 000000000..9e96c9410
--- /dev/null
+++ b/lib/assets/external/mastodon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/lib/assets/external/reddit.svg b/lib/assets/external/reddit.svg
new file mode 100644
index 000000000..5cfd11243
--- /dev/null
+++ b/lib/assets/external/reddit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/lib/assets/external/twitter.svg b/lib/assets/external/twitter.svg
new file mode 100644
index 000000000..a43d68d9f
--- /dev/null
+++ b/lib/assets/external/twitter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/lib/assets/icons/mail.svg b/lib/assets/icons/mail.svg
new file mode 100644
index 000000000..536e7c2c7
--- /dev/null
+++ b/lib/assets/icons/mail.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/lib/assets/icons/share.svg b/lib/assets/icons/share.svg
new file mode 100644
index 000000000..f7be8a132
--- /dev/null
+++ b/lib/assets/icons/share.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/lib/assets/styles/classes.scss b/lib/assets/styles/classes.scss
index 025c4459e..dfaef406a 100644
--- a/lib/assets/styles/classes.scss
+++ b/lib/assets/styles/classes.scss
@@ -623,10 +623,14 @@ a,
.resizable-textarea-wrapper {
display: block;
+ flex-grow: 1;
+ width: 100%;
+ margin-bottom: 0;
+ height: 10rem !important;
textarea {
+ height: 100%;
border-radius: var(--radius-sm);
- min-height: 10rem;
width: calc(100% - var(--gap-xl) - var(--gap-sm));
resize: vertical;
}
diff --git a/lib/components/base/ShareModal.vue b/lib/components/base/ShareModal.vue
new file mode 100644
index 000000000..c6eef33f4
--- /dev/null
+++ b/lib/components/base/ShareModal.vue
@@ -0,0 +1,270 @@
+
+
+
+
+
+
+
+
+
diff --git a/lib/components/index.js b/lib/components/index.js
index 2bbf7c763..6951c7ddf 100644
--- a/lib/components/index.js
+++ b/lib/components/index.js
@@ -23,6 +23,7 @@ export { default as Notifications } from './base/Notifications.vue'
export { default as ModalConfirm } from './base/ModalConfirm.vue'
export { default as Breadcrumbs } from './base/Breadcrumbs.vue'
export { default as DropdownButton } from './base/DropdownButton.vue'
+export { default as ShareModal } from './base/ShareModal.vue'
export { default as Categories } from './search/Categories.vue'
export { default as SearchFilter } from './search/SearchFilter.vue'
@@ -125,5 +126,11 @@ export { default as VersionIcon } from '@/assets/icons/version.svg'
export { default as WikiIcon } from '@/assets/icons/wiki.svg'
export { default as XIcon } from '@/assets/icons/x.svg'
export { default as XCircleIcon } from '@/assets/icons/x-circle.svg'
+export { default as MailIcon } from '@/assets/icons/mail.svg'
+export { default as ShareIcon } from '@/assets/icons/share.svg'
+
+export { default as MastodonIcon } from '@/assets/external/mastodon.svg'
+export { default as RedditIcon } from '@/assets/external/reddit.svg'
+export { default as TwitterIcon } from '@/assets/external/twitter.svg'
export { default as ModrinthIcon } from '@/assets/branding/logo.svg'
diff --git a/package.json b/package.json
index 21943854b..f415da073 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "omorphia",
"type": "module",
- "version": "0.4.31",
+ "version": "0.4.32",
"files": [
"dist",
"lib"
@@ -29,6 +29,7 @@
"floating-vue": "^2.0.0-beta.20",
"highlight.js": "^11.8.0",
"markdown-it": "^13.0.1",
+ "qrcode.vue": "^3.4.0",
"vue": "^3.3.4",
"vue-router": "^4.2.1",
"vue-select": "^4.0.0-beta.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 95420a612..8d22d8a58 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -13,6 +13,9 @@ dependencies:
markdown-it:
specifier: ^13.0.1
version: 13.0.1
+ qrcode.vue:
+ specifier: ^3.4.0
+ version: 3.4.0(vue@3.3.4)
vue:
specifier: ^3.3.4
version: 3.3.4
@@ -1905,6 +1908,14 @@ packages:
engines: {node: '>=6'}
dev: true
+ /qrcode.vue@3.4.0(vue@3.3.4):
+ resolution: {integrity: sha512-4XeImbv10Fin16Fl2DArCMhGyAdvIg2jb7vDT+hZiIAMg/6H6mz9nUZr/dR8jBcun5VzNzkiwKhiqOGbloinwA==}
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ vue: 3.3.4
+ dev: false
+
/queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true