From ff6433128a49c41243d068eee88c3874b25fff6f Mon Sep 17 00:00:00 2001 From: andrewwallacespeckle <139135120+andrewwallacespeckle@users.noreply.github.com> Date: Tue, 6 Feb 2024 10:38:22 +0000 Subject: [PATCH] FE2 - Embedding (#1979) * Add Dialog * Add options to embed dialog * Min Height of Clipboard Input multiline to 3 lines * Check for visibility * Link to change access of project * Rename to guided mode * Change icon when user clicks copy button * Update Menu styles based on agi feedback * Update graphql.ts * Embed Options as hashState * Auto grow Clipboard Input * embed state and more options * Tidyups * Footer only shows when !embedOptions.isTransparent * Add auto/manual Load * Add Pre setup component * WIP Button Group mobile * Updates around manual load * Viewer Share nav * Add embed dialog to project page * Minor fixes * Check for federated * Responsive Tidyups * Responsive Fixes. Fix console issues * Add Alert to Version Embed * Disable Zoom * GQL updates * Comment Slideshow * GraphQl changes * Fix visibility * Build fix * Revert "Build fix" This reverts commit 0e706cbd9fde78204032bb1ec4421b1742d023ac. * remove unneeded change, revert yarn.lock * Test Commit * Remove commit test * Fix build * Update Tailwind. Add base url env * fix for portal scope issue * useLogger * useLogger * chore(fe2): include NUXT_PUBLIC_BASE_URL in deployment manifests * lazy load optimization * lint fixes * Updates * Re-add guided open Dialog sections * Prevent login popup on embed * Tidy up mobile combined button group * Tidy up embed Dialogs * Small styling issues * Update scrolling in embed dialog * Move selection info when embed * Testing fixes * Discuss in Speckle * Responsive Dialog Changes * Fix bug * WIP Manual Load * Fix nuxt errors * Fix nuxt logger issue * Fix embed dialog overflows * New Dialog layout * Responsive Breakpoint change * Preview Image * Fix bug with dialogSection * Hide selection info on mobile when thread is open * Footer Model Name * Overflow on ClipboardInput * Style fixes * Tidy ups * Responsive updates * Responsive fixes * Update button * Changes from testing * Fix embed height with footer * Fix Dialog Section * Fixes from testing * Move "reset filters" on embed * Small fixes * Updates from CR 1 * CR Comments 2 * Updates from CR * Add deserializeEmbedOptions helper * DialogSection changes * Revert changes in TextArea * Updates from CR * Only check for noscroll in watch * Update useRoute * Comment Slideshow mode * Changes from testing * Fix mobile share button * onMounted warn fixes * Updates from testing * Remove nesting of ManualLoad * Keep Speckle text on mobile * minor cleanup & bugfixes * Add target prop to Logo * navbar flash fix + more cleanup * Fix urls * Footer Logo changes * Remove viewer-transparent from layout * Add Reply in Speckle * Remove Anchored Points from embed * Final changes pre CR * Fix Anchored Points * Update packages/frontend-2/components/project/model-page/dialog/embed/Embed.vue Co-authored-by: Kristaps Fabians Geikins * Fixes from CR * Updates from cr * Changes WIP * Fix for dialog opening * Changes from PR * Updates to check embed in activity * fix(fe2): project settings dialog error * Make Team open section on click of "Manage" * Fixes from merge * Changes from cr * Compare old to new in watch * Fix logo in footer of embed * Fixes from merge * Fix build. Fix lazy load * Updates from Benjamin * Fix transparent bg --------- Co-authored-by: Kristaps Fabians Geikins Co-authored-by: Iain Sproat <68657+iainsproat@users.noreply.github.com> Co-authored-by: Kristaps Fabians Geikins --- docker-compose-speckle.yml | 1 + packages/frontend-2/.env.example | 2 + packages/frontend-2/.eslintrc.js | 2 +- packages/frontend-2/app.vue | 8 +- .../frontend-2/components/header/NavBar.vue | 4 +- .../components/header/NavNotifications.vue | 6 +- .../frontend-2/components/header/NavShare.vue | 133 +++++++++ .../components/header/NavUserMenu.vue | 18 +- .../components/project/model-page/Header.vue | 39 +-- .../project/model-page/Versions.vue | 19 +- .../project/model-page/dialog/embed/Embed.vue | 260 ++++++++++++++++++ .../model-page/dialog/embed/Iframe.vue | 19 ++ .../project/model-page/versions/Card.vue | 2 + .../model-page/versions/CardActions.vue | 10 +- .../components/project/page/Header.vue | 29 +- .../project/page/latest-items/Models.vue | 1 + .../page/latest-items/comments/IntroCard.vue | 18 +- .../project/page/models/Actions.vue | 26 +- .../components/project/page/models/Card.vue | 16 +- .../project/page/models/CardView.vue | 11 +- .../project/page/stats-block/Settings.vue | 55 +++- .../components/project/page/team/Dialog.vue | 13 +- .../project/page/team/dialog/InviteUser.vue | 9 +- .../page/team/dialog/ManagePermissions.vue | 8 +- .../frontend-2/components/tour/Onboarding.vue | 5 +- .../components/tour/Segmentation.vue | 5 +- .../frontend-2/components/tour/Slideshow.vue | 7 +- .../components/tour/content/LastTip.vue | 7 +- .../components/viewer/AnchoredPoints.vue | 34 ++- .../frontend-2/components/viewer/Controls.vue | 154 +++++++---- .../components/viewer/GlobalFilterReset.vue | 12 +- .../components/viewer/LoadingBar.vue | 8 +- .../components/viewer/PreSetupWrapper.vue | 149 ++++++++++ .../frontend-2/components/viewer/Scope.vue | 12 +- .../viewer/anchored-point/NewThread.vue | 5 +- .../viewer/anchored-point/Thread.vue | 38 ++- .../viewer/anchored-point/thread/NewReply.vue | 2 +- .../components/viewer/comments/Comments.vue | 1 + .../components/viewer/comments/ListItem.vue | 4 +- .../viewer/comments/PortalOrDiv.vue | 3 +- .../viewer/controls/ButtonGroup.vue | 6 +- .../viewer/controls/ButtonToggle.vue | 2 +- .../components/viewer/embed/Footer.vue | 44 +++ .../components/viewer/embed/ManualLoad.vue | 46 ++++ .../components/viewer/explode/Menu.vue | 10 +- .../components/viewer/explorer/Filters.vue | 4 +- .../viewer/explorer/StringFilterItem.vue | 2 +- .../components/viewer/layout/Panel.vue | 11 +- .../viewer/measurements/Options.vue | 20 +- .../components/viewer/resources/List.vue | 2 +- .../components/viewer/resources/ModelCard.vue | 4 +- .../viewer/resources/add-model/Dialog.vue | 2 +- .../resources/add-model/DialogModelTab.vue | 8 +- .../resources/add-model/DialogObjectTab.vue | 18 +- .../components/viewer/selection/Sidebar.vue | 10 +- .../frontend-2/components/viewer/sun/Menu.vue | 26 +- .../components/viewer/views/Menu.vue | 4 +- packages/frontend-2/composables/browser.ts | 10 +- .../{debbuging.ts => debugging.ts} | 0 packages/frontend-2/composables/states.ts | 10 - packages/frontend-2/layouts/viewer.vue | 49 ++-- .../lib/common/composables/reactiveCookie.ts | 10 +- .../lib/common/generated/gql/gql.ts | 22 +- .../lib/common/generated/gql/graphql.ts | 36 +-- .../lib/core/helpers/observability.ts | 1 + .../lib/projects/helpers/components.ts | 9 +- .../lib/viewer/composables/activity.ts | 10 +- .../lib/viewer/composables/setup.ts | 33 +-- .../lib/viewer/composables/setup/core.ts | 27 ++ .../lib/viewer/composables/setup/embed.ts | 129 +++++++++ .../lib/viewer/composables/setup/postSetup.ts | 20 ++ .../viewer/composables/setup/urlHashState.ts | 3 +- .../frontend-2/lib/viewer/composables/tour.ts | 41 +++ .../frontend-2/lib/viewer/composables/ui.ts | 34 +++ packages/frontend-2/nuxt.config.ts | 1 + packages/frontend-2/package.json | 2 +- packages/frontend-2/pages/onboarding.vue | 9 +- .../frontend-2/pages/projects/[id]/index.vue | 8 +- .../projects/[id]/models/[modelId]/index.vue | 129 +++------ packages/frontend-2/plugins/001-logger.ts | 1 + .../comments/CommentThreadViewer.vue | 7 +- .../src/components/common/Alert.vue | 4 +- .../src/components/form/Button.vue | 6 +- .../src/components/form/ClipboardInput.vue | 44 ++- .../src/components/form/Radio.vue | 7 +- .../src/components/layout/Dialog.vue | 16 +- .../src/components/layout/DialogSection.vue | 30 +- .../src/components/layout/Menu.vue | 2 +- .../src/components/layout/Tabs.vue | 4 +- .../viewer/src/modules/tree/RenderTree.ts | 2 +- utils/1click_image_scripts/setup.py | 1 + .../template-docker-compose.yml | 1 + .../templates/frontend_2/deployment.yml | 2 + yarn.lock | 35 ++- 94 files changed, 1667 insertions(+), 462 deletions(-) create mode 100644 packages/frontend-2/components/header/NavShare.vue create mode 100644 packages/frontend-2/components/project/model-page/dialog/embed/Embed.vue create mode 100644 packages/frontend-2/components/project/model-page/dialog/embed/Iframe.vue create mode 100644 packages/frontend-2/components/viewer/PreSetupWrapper.vue create mode 100644 packages/frontend-2/components/viewer/embed/Footer.vue create mode 100644 packages/frontend-2/components/viewer/embed/ManualLoad.vue rename packages/frontend-2/composables/{debbuging.ts => debugging.ts} (100%) delete mode 100644 packages/frontend-2/composables/states.ts create mode 100644 packages/frontend-2/lib/viewer/composables/setup/core.ts create mode 100644 packages/frontend-2/lib/viewer/composables/setup/embed.ts create mode 100644 packages/frontend-2/lib/viewer/composables/tour.ts diff --git a/docker-compose-speckle.yml b/docker-compose-speckle.yml index a115c90aa6..63907ed6a1 100644 --- a/docker-compose-speckle.yml +++ b/docker-compose-speckle.yml @@ -23,6 +23,7 @@ services: environment: NUXT_PUBLIC_SERVER_NAME: 'local' NUXT_PUBLIC_API_ORIGIN: 'http://127.0.0.1' + NUXT_PUBLIC_BASE_URL: 'http://127.0.0.1' NUXT_PUBLIC_BACKEND_API_ORIGIN: 'http://speckle-server:3000' NUXT_REDIS_URL: 'redis://redis' diff --git a/packages/frontend-2/.env.example b/packages/frontend-2/.env.example index 82456132a6..c8790391e2 100644 --- a/packages/frontend-2/.env.example +++ b/packages/frontend-2/.env.example @@ -6,6 +6,8 @@ NUXT_PUBLIC_LOG_PRETTY=true NUXT_PUBLIC_API_ORIGIN=http://127.0.0.1:3000 +NUXT_PUBLIC_BASE_URL=http://127.0.0.1:8081 + NUXT_PUBLIC_MIXPANEL_TOKEN_ID=acd87c5a50b56df91a795e999812a3a4 NUXT_PUBLIC_MIXPANEL_API_HOST=https://analytics.speckle.systems diff --git a/packages/frontend-2/.eslintrc.js b/packages/frontend-2/.eslintrc.js index 9dc8d48a56..5ce1947343 100644 --- a/packages/frontend-2/.eslintrc.js +++ b/packages/frontend-2/.eslintrc.js @@ -39,7 +39,7 @@ const config = { ], 'no-alert': 'error', eqeqeq: ['error', 'always', { null: 'always' }], - 'no-console': 'off', + 'no-console': 'error', 'no-var': 'error' }, overrides: [ diff --git a/packages/frontend-2/app.vue b/packages/frontend-2/app.vue index 2dd2abb7b9..55f9f95db2 100644 --- a/packages/frontend-2/app.vue +++ b/packages/frontend-2/app.vue @@ -1,5 +1,8 @@