From a8310c4817b108796974cf14c87240459062f33a Mon Sep 17 00:00:00 2001 From: ThaumRystra Date: Sun, 28 Jul 2024 03:04:27 +0200 Subject: [PATCH] Progress on user image UI --- app/imports/api/utility/timeout.ts | 5 + .../ui/components/global/SmartImageInput.vue | 79 +++++- .../ui/dialogStack/DialogComponentIndex.js | 14 +- .../client/ui/dialogStack/DialogStack.vue | 264 +++++++++++------- .../client/ui/dialogStack/mockElement.js | 16 +- .../client/ui/files/ImageInputDialog.vue | 65 ----- .../ui/files/userImages/ImageInputDialog.vue | 135 +++++++++ .../files/userImages/ImagePreviewDialog.vue | 31 ++ app/imports/client/ui/pages/Files.vue | 19 +- .../properties/viewers/shared/ImageField.vue | 81 ++++++ .../viewers/shared/OutlinedInput.vue | 3 + app/imports/client/ui/styles/body.css | 22 +- 12 files changed, 524 insertions(+), 210 deletions(-) create mode 100644 app/imports/api/utility/timeout.ts delete mode 100644 app/imports/client/ui/files/ImageInputDialog.vue create mode 100644 app/imports/client/ui/files/userImages/ImageInputDialog.vue create mode 100644 app/imports/client/ui/files/userImages/ImagePreviewDialog.vue create mode 100644 app/imports/client/ui/properties/viewers/shared/ImageField.vue diff --git a/app/imports/api/utility/timeout.ts b/app/imports/api/utility/timeout.ts new file mode 100644 index 00000000..99f8d1f0 --- /dev/null +++ b/app/imports/api/utility/timeout.ts @@ -0,0 +1,5 @@ +export default async function timeout(ms: number): Promise { + return new Promise((resolve) => { + setTimeout(resolve, ms); + }); +} diff --git a/app/imports/client/ui/components/global/SmartImageInput.vue b/app/imports/client/ui/components/global/SmartImageInput.vue index d08684f6..cfd39c34 100644 --- a/app/imports/client/ui/components/global/SmartImageInput.vue +++ b/app/imports/client/ui/components/global/SmartImageInput.vue @@ -1,9 +1,25 @@ + + \ No newline at end of file + + + \ No newline at end of file diff --git a/app/imports/client/ui/dialogStack/DialogComponentIndex.js b/app/imports/client/ui/dialogStack/DialogComponentIndex.js index bb78fb5a..96c3a1f4 100644 --- a/app/imports/client/ui/dialogStack/DialogComponentIndex.js +++ b/app/imports/client/ui/dialogStack/DialogComponentIndex.js @@ -1,9 +1,8 @@ // Load commonly used dialogs immediately import ActionDialog from '/imports/client/ui/creature/actions/ActionDialog.vue'; -import InsertPropertyDialog from '/imports/client/ui/properties/InsertPropertyDialog.vue'; +import CastSpellWithSlotDialog from '/imports/client/ui/properties/components/spells/CastSpellWithSlotDialog.vue'; import CharacterCreationDialog from '/imports/client/ui/creature/character/CharacterCreationDialog.vue'; import CharacterSheetDialog from '/imports/client/ui/tabletop/CharacterSheetDialog.vue'; -import CastSpellWithSlotDialog from '/imports/client/ui/properties/components/spells/CastSpellWithSlotDialog.vue'; import CreatureFormDialog from '/imports/client/ui/creature/CreatureFormDialog.vue'; import CreaturePropertyDialog from '/imports/client/ui/creature/creatureProperties/CreaturePropertyDialog.vue'; import CreaturePropertyFromLibraryDialog from '/imports/client/ui/creature/creatureProperties/CreaturePropertyFromLibraryDialog.vue'; @@ -12,18 +11,21 @@ import DeleteConfirmationDialog from '/imports/client/ui/dialogStack/DeleteConfi import ExperienceInsertDialog from '/imports/client/ui/creature/experiences/ExperienceInsertDialog.vue'; import ExperienceListDialog from '/imports/client/ui/creature/experiences/ExperienceListDialog.vue'; import HelpDialog from '/imports/client/ui/dialogStack/HelpDialog.vue'; +import ImagePreviewDialog from '/imports/client/ui/files/userImages/ImagePreviewDialog.vue'; +import InsertPropertyDialog from '/imports/client/ui/properties/InsertPropertyDialog.vue'; import LevelUpDialog from '/imports/client/ui/creature/slots/LevelUpDialog.vue'; +import LibraryBrowserDialog from '/imports/client/ui/library/LibraryBrowserDialog.vue'; import SelectLibraryNodeDialog from '/imports/client/ui/library/SelectLibraryNodeDialog.vue'; import SlotFillDialog from '/imports/client/ui/creature/slots/SlotFillDialog.vue'; import TierTooLowDialog from '/imports/client/ui/user/TierTooLowDialog.vue'; import TransferOwnershipDialog from '/imports/client/ui/sharing/TransferOwnershipDialog.vue'; -import LibraryBrowserDialog from '/imports/client/ui/library/LibraryBrowserDialog.vue'; // Lazily load less common dialogs const ArchiveDialog = () => import('/imports/client/ui/creature/archive/ArchiveDialog.vue'); const CreatureFromLibraryDialog = () => import('/imports/client/ui/tabletop/CreatureFromLibraryDialog.vue'); const DeleteUserAccountDialog = () => import('/imports/client/ui/user/DeleteUserAccountDialog.vue'); const DependencyGraphDialog = () => import('/imports/client/ui/creature/dependencyGraph/DependencyGraphDialog.vue'); +const ImageInputDialog = () => import('../files/userImages/ImageInputDialog.vue'); const InviteDialog = () => import('/imports/client/ui/user/InviteDialog.vue'); const LibraryCollectionCreationDialog = () => import('/imports/client/ui/library/LibraryCollectionCreationDialog.vue'); const LibraryCollectionEditDialog = () => import('/imports/client/ui/library/LibraryCollectionEditDialog.vue'); @@ -38,7 +40,6 @@ const UsernameDialog = () => import('/imports/client/ui/user/UsernameDialog.vue' export default { ActionDialog, - InsertPropertyDialog, ArchiveDialog, CastSpellWithSlotDialog, CharacterCreationDialog, @@ -54,6 +55,9 @@ export default { ExperienceInsertDialog, ExperienceListDialog, HelpDialog, + ImageInputDialog, + ImagePreviewDialog, + InsertPropertyDialog, InviteDialog, LevelUpDialog, LibraryBrowserDialog, @@ -67,8 +71,8 @@ export default { SelectLibraryNodeDialog, ShareDialog, SlotFillDialog, + TabletopDialog, TierTooLowDialog, TransferOwnershipDialog, - TabletopDialog, UsernameDialog, }; diff --git a/app/imports/client/ui/dialogStack/DialogStack.vue b/app/imports/client/ui/dialogStack/DialogStack.vue index d40cb0c5..63788ae2 100644 --- a/app/imports/client/ui/dialogStack/DialogStack.vue +++ b/app/imports/client/ui/dialogStack/DialogStack.vue @@ -1,8 +1,6 @@ - - diff --git a/app/imports/client/ui/files/userImages/ImageInputDialog.vue b/app/imports/client/ui/files/userImages/ImageInputDialog.vue new file mode 100644 index 00000000..12539290 --- /dev/null +++ b/app/imports/client/ui/files/userImages/ImageInputDialog.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/app/imports/client/ui/files/userImages/ImagePreviewDialog.vue b/app/imports/client/ui/files/userImages/ImagePreviewDialog.vue new file mode 100644 index 00000000..7ca9870e --- /dev/null +++ b/app/imports/client/ui/files/userImages/ImagePreviewDialog.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/app/imports/client/ui/pages/Files.vue b/app/imports/client/ui/pages/Files.vue index c64314aa..a8abe566 100644 --- a/app/imports/client/ui/pages/Files.vue +++ b/app/imports/client/ui/pages/Files.vue @@ -64,6 +64,19 @@ + + + + +