diff --git a/.tool-versions b/.tool-versions index 3162337da..6d5c81162 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -elixir 1.13.4-otp-24 -erlang 24.3.3 +elixir 1.13.4-otp-25 +erlang 25.0.3 diff --git a/config/config.exs b/config/config.exs index f5dc26cb5..c31da0ad5 100644 --- a/config/config.exs +++ b/config/config.exs @@ -54,7 +54,7 @@ config :mobilizon, Mobilizon.Web.Endpoint, secret_key_base: "1yOazsoE0Wqu4kXk3uC5gu3jDbShOimTCzyFL3OjCdBmOXMyHX87Qmf3+Tu9s0iM", render_errors: [view: Mobilizon.Web.ErrorView, accepts: ~w(html json)], pubsub_server: Mobilizon.PubSub, - cache_static_manifest: "priv/static/manifest.json", + cache_static_manifest: "priv/static/cache_manifest.json", has_reverse_proxy: true config :mime, :types, %{ @@ -123,6 +123,18 @@ config :mobilizon, Mobilizon.Web.Email.Mailer, # can be `true` no_mx_lookups: false +config :vite_phx, + release_app: :mobilizon, + # to tell prod and dev env appart + environment: config_env(), + # this manifest is different from the Phoenix "cache_manifest.json"! + # optional + vite_manifest: "priv/static/manifest.json", + # optional + phx_manifest: "priv/static/cache_manifest.json", + # optional + dev_server_address: "http://localhost:3000" + # Configures Elixir's Logger config :logger, :console, backends: [:console], @@ -347,6 +359,12 @@ config :mobilizon, :exports, config :mobilizon, :analytics, providers: [] +config :mobilizon, Mobilizon.Service.Pictures, service: Mobilizon.Service.Pictures.Unsplash + +config :mobilizon, Mobilizon.Service.Pictures.Unsplash, + app_name: "Mobilizon", + access_key: nil + # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. import_config "#{config_env()}.exs" diff --git a/config/dev.exs b/config/dev.exs index 9a37eef89..75d624f5a 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -15,13 +15,7 @@ config :mobilizon, Mobilizon.Web.Endpoint, check_origin: false, watchers: [ node: [ - "node_modules/webpack/bin/webpack.js", - "--mode", - "development", - "--watch", - "--watch-options-stdin", - "--config", - "node_modules/@vue/cli-service/webpack.config.js", + "node_modules/.bin/vite", cd: Path.expand("../js", __DIR__) ] ] diff --git a/js/.eslintrc.js b/js/.eslintrc.js index 10dcd95e4..96907e6d5 100644 --- a/js/.eslintrc.js +++ b/js/.eslintrc.js @@ -1,3 +1,6 @@ +/* eslint-env node */ +require("@rushstack/eslint-patch/modern-module-resolution"); + module.exports = { root: true, @@ -6,10 +9,11 @@ module.exports = { }, extends: [ - "plugin:vue/essential", "eslint:recommended", - "@vue/typescript/recommended", + "plugin:vue/vue3-essential", + "@vue/eslint-config-typescript", "plugin:prettier/recommended", + "@vue/eslint-config-prettier", ], plugins: ["prettier"], diff --git a/js/.gitignore b/js/.gitignore index b3a5de1e2..e8b645d0b 100644 --- a/js/.gitignore +++ b/js/.gitignore @@ -5,6 +5,7 @@ node_modules /tests/e2e/videos/ /tests/e2e/screenshots/ /coverage +stats.html # local env files .env.local diff --git a/js/babel.config.js b/js/babel.config.js deleted file mode 100644 index 162a3ea97..000000000 --- a/js/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: ["@vue/cli-plugin-babel/preset"], -}; diff --git a/js/env.d.ts b/js/env.d.ts new file mode 100644 index 000000000..e0d36b6a0 --- /dev/null +++ b/js/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/js/histoire.config.ts b/js/histoire.config.ts new file mode 100644 index 000000000..349d77575 --- /dev/null +++ b/js/histoire.config.ts @@ -0,0 +1,51 @@ +/// + +import { defineConfig } from "histoire"; +import { HstVue } from "@histoire/plugin-vue"; +import path from "path"; + +export default defineConfig({ + plugins: [HstVue()], + setupFile: path.resolve(__dirname, "./src/histoire.setup.ts"), + viteNodeInlineDeps: [/date-fns/], + tree: { + groups: [ + { + title: "Actors", + include: (file) => /^src\/components\/Account/.test(file.path), + }, + { + title: "Address", + include: (file) => /^src\/components\/Address/.test(file.path), + }, + { + title: "Comments", + include: (file) => /^src\/components\/Comment/.test(file.path), + }, + { + title: "Discussion", + include: (file) => /^src\/components\/Discussion/.test(file.path), + }, + { + title: "Events", + include: (file) => /^src\/components\/Event/.test(file.path), + }, + { + title: "Groups", + include: (file) => /^src\/components\/Group/.test(file.path), + }, + { + title: "Home", + include: (file) => /^src\/components\/Home/.test(file.path), + }, + { + title: "Posts", + include: (file) => /^src\/components\/Post/.test(file.path), + }, + { + title: "Others", + include: () => true, + }, + ], + }, +}); diff --git a/js/package.json b/js/package.json index 79073992b..d8630d6b7 100644 --- a/js/package.json +++ b/js/package.json @@ -3,19 +3,25 @@ "version": "2.1.0", "private": true, "scripts": { - "serve": "vue-cli-service serve", + "dev": "vite", + "preview": "vite preview", "build": "yarn run build:assets && yarn run build:pictures", - "test:unit": "LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 TZ=UTC vue-cli-service test:unit", - "test:e2e": "vue-cli-service test:e2e", - "lint": "vue-cli-service lint", - "build:assets": "vue-cli-service build --report", - "build:pictures": "bash ./scripts/build/pictures.sh" + "lint": "eslint --ext .ts,.vue --ignore-path .gitignore --fix src", + "format": "prettier . --write", + "build:assets": "vite build", + "build:pictures": "bash ./scripts/build/pictures.sh", + "story:dev": "histoire dev", + "story:build": "histoire build", + "story:preview": "histoire preview", + "test": "vitest", + "coverage": "vitest run --coverage" }, "dependencies": { "@absinthe/socket": "^0.2.1", "@absinthe/socket-apollo-link": "^0.2.1", "@apollo/client": "^3.3.16", - "@mdi/font": "^6.1.95", + "@headlessui/vue": "^1.6.7", + "@oruga-ui/oruga-next": "^0.5.5", "@sentry/tracing": "^7.1", "@sentry/vue": "^7.1", "@tailwindcss/line-clamp": "^0.4.0", @@ -39,19 +45,24 @@ "@tiptap/extension-strike": "^2.0.0-beta.26", "@tiptap/extension-text": "^2.0.0-beta.15", "@tiptap/extension-underline": "^2.0.0-beta.7", - "@tiptap/vue-2": "^2.0.0-beta.21", + "@tiptap/vue-3": "^2.0.0-beta.96", "@vue-a11y/announcer": "^2.1.0", "@vue-a11y/skip-to": "^2.1.2", - "@vue/apollo-option": "4.0.0-alpha.11", + "@vue-leaflet/vue-leaflet": "^0.6.1", + "@vue/apollo-composable": "^4.0.0-alpha.17", + "@vue/compiler-sfc": "^3.2.37", + "@vueuse/head": "^0.7.9", + "@vueuse/router": "^9.0.2", + "@xiaoshuapp/draggable": "^4.1.0", "apollo-absinthe-upload-link": "^1.5.0", "autoprefixer": "^10", "blurhash": "^1.1.3", - "buefy": "^0.9.0", + "bulma": "^0.9.4", "bulma-divider": "^0.2.0", - "core-js": "^3.6.4", "date-fns": "^2.16.0", "date-fns-tz": "^1.1.6", - "graphql": "^16.0.0", + "floating-vue": "^2.0.0-beta.17", + "graphql": "^15.8.0", "graphql-tag": "^2.10.3", "intersection-observer": "^0.12.0", "jwt-decode": "^3.1.2", @@ -67,22 +78,24 @@ "tailwindcss": "^3", "tippy.js": "^6.2.3", "unfetch": "^4.2.0", - "v-tooltip": "^2.1.3", - "vue": "^2.6.11", - "vue-class-component": "^7.2.3", - "vue-i18n": "^8.14.0", + "vue": "^3.2.37", + "vue-class-component": "8.0.0-rc.1", + "vue-i18n": "9", + "vue-material-design-icons": "^5.1.2", "vue-matomo": "^4.1.0", "vue-meta": "^2.3.1", "vue-plausible": "^1.3.1", - "vue-property-decorator": "^9.0.0", - "vue-router": "^3.1.6", + "vue-property-decorator": "10.0.0-rc.3", + "vue-router": "4", "vue-scrollto": "^2.17.1", - "vue2-leaflet": "^2.0.3", - "vuedraggable": "^2.24.3" + "vue-use-route-query": "^1.1.0" }, "devDependencies": { - "@rushstack/eslint-patch": "^1.1.0", - "@types/jest": "^28.0.0", + "@histoire/plugin-vue": "^0.9.0", + "@intlify/vite-plugin-vue-i18n": "^6.0.0", + "@rushstack/eslint-patch": "^1.1.4", + "@tailwindcss/forms": "^0.5.2", + "@tailwindcss/typography": "^0.5.4", "@types/leaflet": "^1.5.2", "@types/leaflet.locatecontrol": "^0.74", "@types/lodash": "^4.14.141", @@ -93,37 +106,28 @@ "@types/prosemirror-state": "^1.2.4", "@types/prosemirror-view": "^1.11.4", "@types/sanitize-html": "^2.5.0", - "@typescript-eslint/eslint-plugin": "^5.3.0", - "@typescript-eslint/parser": "^5.3.0", - "@vue/cli-plugin-babel": "~5.0.6", - "@vue/cli-plugin-eslint": "~5.0.6", - "@vue/cli-plugin-pwa": "~5.0.6", - "@vue/cli-plugin-router": "~5.0.6", - "@vue/cli-plugin-typescript": "~5.0.6", - "@vue/cli-plugin-unit-jest": "~5.0.6", - "@vue/cli-service": "~5.0.6", + "@vitejs/plugin-vue": "^2.3.2", + "@vitest/ui": "^0.21.1", + "@vue/eslint-config-prettier": "^7.0.0", "@vue/eslint-config-typescript": "^11.0.0", - "@vue/test-utils": "^1.1.0", - "@vue/vue2-jest": "^28.0.0", - "babel-jest": "^28.1.1", - "eslint": "^8.2.0", + "@vue/test-utils": "^2.0.2", + "eslint": "^8.21.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "^2.20.2", "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-vue": "^9.1.1", + "eslint-plugin-vue": "^9.3.0", "flush-promises": "^1.0.2", - "jest": "^28.1.1", - "jest-junit": "^13.0.0", + "histoire": "^0.9.0", + "jsdom": "^20.0.0", "mock-apollo-client": "^1.1.0", "prettier": "^2.2.1", "prettier-eslint": "^15.0.1", + "rollup-plugin-visualizer": "^5.7.1", "sass": "^1.34.1", - "sass-loader": "^13.0.0", - "ts-jest": "28", - "typescript": "~4.5.5", - "vue-cli-plugin-tailwind": "~3.0.0", - "vue-i18n-extract": "^2.0.4", - "vue-template-compiler": "^2.6.11", - "webpack-cli": "^4.7.0" + "typescript": "~4.7.4", + "vite": "^2.9.0", + "vite-plugin-pwa": "^0.12.3", + "vitest": "^0.21.0", + "vue-i18n-extract": "^2.0.4" } } diff --git a/js/public/img/categories/arts-small.jpg b/js/public/img/categories/arts-small.jpg new file mode 100644 index 000000000..93a372aa7 Binary files /dev/null and b/js/public/img/categories/arts-small.jpg differ diff --git a/js/public/img/categories/arts.jpg b/js/public/img/categories/arts.jpg new file mode 100644 index 000000000..24d0af895 Binary files /dev/null and b/js/public/img/categories/arts.jpg differ diff --git a/js/public/img/categories/business-small.jpg b/js/public/img/categories/business-small.jpg new file mode 100644 index 000000000..17d138cae Binary files /dev/null and b/js/public/img/categories/business-small.jpg differ diff --git a/js/public/img/categories/business.jpg b/js/public/img/categories/business.jpg new file mode 100644 index 000000000..c83c72252 Binary files /dev/null and b/js/public/img/categories/business.jpg differ diff --git a/js/public/img/categories/crafts-small.jpg b/js/public/img/categories/crafts-small.jpg new file mode 100644 index 000000000..5f82df602 Binary files /dev/null and b/js/public/img/categories/crafts-small.jpg differ diff --git a/js/public/img/categories/crafts.jpg b/js/public/img/categories/crafts.jpg new file mode 100644 index 000000000..8420dc664 Binary files /dev/null and b/js/public/img/categories/crafts.jpg differ diff --git a/js/public/img/categories/film_media-small.jpg b/js/public/img/categories/film_media-small.jpg new file mode 100644 index 000000000..9215b8b75 Binary files /dev/null and b/js/public/img/categories/film_media-small.jpg differ diff --git a/js/public/img/categories/film_media.jpg b/js/public/img/categories/film_media.jpg new file mode 100644 index 000000000..f0e61bf2a Binary files /dev/null and b/js/public/img/categories/film_media.jpg differ diff --git a/js/public/img/categories/food_drink-small.jpg b/js/public/img/categories/food_drink-small.jpg new file mode 100644 index 000000000..af41469a2 Binary files /dev/null and b/js/public/img/categories/food_drink-small.jpg differ diff --git a/js/public/img/categories/food_drink.jpg b/js/public/img/categories/food_drink.jpg new file mode 100644 index 000000000..69b3c7d9c Binary files /dev/null and b/js/public/img/categories/food_drink.jpg differ diff --git a/js/public/img/categories/games-small.jpg b/js/public/img/categories/games-small.jpg new file mode 100644 index 000000000..ff3bdfc90 Binary files /dev/null and b/js/public/img/categories/games-small.jpg differ diff --git a/js/public/img/categories/games.jpg b/js/public/img/categories/games.jpg new file mode 100644 index 000000000..56c502984 Binary files /dev/null and b/js/public/img/categories/games.jpg differ diff --git a/js/public/img/categories/health-small.jpg b/js/public/img/categories/health-small.jpg new file mode 100644 index 000000000..479dc06a1 Binary files /dev/null and b/js/public/img/categories/health-small.jpg differ diff --git a/js/public/img/categories/health.jpg b/js/public/img/categories/health.jpg new file mode 100644 index 000000000..a09643053 Binary files /dev/null and b/js/public/img/categories/health.jpg differ diff --git a/js/public/img/categories/lgbtq-small.jpg b/js/public/img/categories/lgbtq-small.jpg new file mode 100644 index 000000000..f57049164 Binary files /dev/null and b/js/public/img/categories/lgbtq-small.jpg differ diff --git a/js/public/img/categories/lgbtq.jpg b/js/public/img/categories/lgbtq.jpg new file mode 100644 index 000000000..e63313166 Binary files /dev/null and b/js/public/img/categories/lgbtq.jpg differ diff --git a/js/public/img/categories/movements_politics-small.jpg b/js/public/img/categories/movements_politics-small.jpg new file mode 100644 index 000000000..b7149b96d Binary files /dev/null and b/js/public/img/categories/movements_politics-small.jpg differ diff --git a/js/public/img/categories/movements_politics.jpg b/js/public/img/categories/movements_politics.jpg new file mode 100644 index 000000000..18d1cf92e Binary files /dev/null and b/js/public/img/categories/movements_politics.jpg differ diff --git a/js/public/img/categories/music-small.jpg b/js/public/img/categories/music-small.jpg new file mode 100644 index 000000000..e6e9d4b2a Binary files /dev/null and b/js/public/img/categories/music-small.jpg differ diff --git a/js/public/img/categories/music.jpg b/js/public/img/categories/music.jpg new file mode 100644 index 000000000..e5b0731c9 Binary files /dev/null and b/js/public/img/categories/music.jpg differ diff --git a/js/public/img/categories/outdoors_adventure-small.jpg b/js/public/img/categories/outdoors_adventure-small.jpg new file mode 100644 index 000000000..864238aaa Binary files /dev/null and b/js/public/img/categories/outdoors_adventure-small.jpg differ diff --git a/js/public/img/categories/outdoors_adventure.jpg b/js/public/img/categories/outdoors_adventure.jpg new file mode 100644 index 000000000..0f4d049e7 Binary files /dev/null and b/js/public/img/categories/outdoors_adventure.jpg differ diff --git a/js/public/img/categories/party-small.jpg b/js/public/img/categories/party-small.jpg new file mode 100644 index 000000000..9673af1c0 Binary files /dev/null and b/js/public/img/categories/party-small.jpg differ diff --git a/js/public/img/categories/party.jpg b/js/public/img/categories/party.jpg new file mode 100644 index 000000000..333468cfd Binary files /dev/null and b/js/public/img/categories/party.jpg differ diff --git a/js/public/img/categories/photography-small.jpg b/js/public/img/categories/photography-small.jpg new file mode 100644 index 000000000..ef27251f7 Binary files /dev/null and b/js/public/img/categories/photography-small.jpg differ diff --git a/js/public/img/categories/photography.jpg b/js/public/img/categories/photography.jpg new file mode 100644 index 000000000..ba0b9a6c2 Binary files /dev/null and b/js/public/img/categories/photography.jpg differ diff --git a/js/public/img/categories/spirituality_religion_beliefs-small.jpg b/js/public/img/categories/spirituality_religion_beliefs-small.jpg new file mode 100644 index 000000000..c7532d58f Binary files /dev/null and b/js/public/img/categories/spirituality_religion_beliefs-small.jpg differ diff --git a/js/public/img/categories/spirituality_religion_beliefs.jpg b/js/public/img/categories/spirituality_religion_beliefs.jpg new file mode 100644 index 000000000..f16232341 Binary files /dev/null and b/js/public/img/categories/spirituality_religion_beliefs.jpg differ diff --git a/js/public/img/categories/sports-small.jpg b/js/public/img/categories/sports-small.jpg new file mode 100644 index 000000000..fcdb70a2e Binary files /dev/null and b/js/public/img/categories/sports-small.jpg differ diff --git a/js/public/img/categories/sports.jpg b/js/public/img/categories/sports.jpg new file mode 100644 index 000000000..a77025273 Binary files /dev/null and b/js/public/img/categories/sports.jpg differ diff --git a/js/public/img/categories/theatre-small.jpg b/js/public/img/categories/theatre-small.jpg new file mode 100644 index 000000000..0551ca2eb Binary files /dev/null and b/js/public/img/categories/theatre-small.jpg differ diff --git a/js/public/img/categories/theatre.jpg b/js/public/img/categories/theatre.jpg new file mode 100644 index 000000000..d461cde87 Binary files /dev/null and b/js/public/img/categories/theatre.jpg differ diff --git a/js/public/img/shape-1.svg b/js/public/img/shape-1.svg new file mode 100644 index 000000000..c8a8128df --- /dev/null +++ b/js/public/img/shape-1.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/js/public/img/shape-2.svg b/js/public/img/shape-2.svg new file mode 100644 index 000000000..8c0b87491 --- /dev/null +++ b/js/public/img/shape-2.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/js/public/img/shape-3.svg b/js/public/img/shape-3.svg new file mode 100644 index 000000000..dba085f3c --- /dev/null +++ b/js/public/img/shape-3.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/js/public/index.html b/js/public/index.html deleted file mode 100644 index 083951877..000000000 --- a/js/public/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - -
- - - diff --git a/js/src/App.vue b/js/src/App.vue index 309331248..6bcc887dd 100644 --- a/js/src/App.vue +++ b/js/src/App.vue @@ -1,40 +1,37 @@ - diff --git a/js/src/components/Account/ActorInline.story.vue b/js/src/components/Account/ActorInline.story.vue new file mode 100644 index 000000000..40195eb80 --- /dev/null +++ b/js/src/components/Account/ActorInline.story.vue @@ -0,0 +1,52 @@ + + diff --git a/js/src/components/Account/ActorInline.vue b/js/src/components/Account/ActorInline.vue index 4857b8607..a6e712a84 100644 --- a/js/src/components/Account/ActorInline.vue +++ b/js/src/components/Account/ActorInline.vue @@ -1,34 +1,37 @@ - diff --git a/js/src/components/Account/PopoverActorCard.story.vue b/js/src/components/Account/PopoverActorCard.story.vue new file mode 100644 index 000000000..4f06faf1c --- /dev/null +++ b/js/src/components/Account/PopoverActorCard.story.vue @@ -0,0 +1,59 @@ + + + diff --git a/js/src/components/Account/PopoverActorCard.vue b/js/src/components/Account/PopoverActorCard.vue index 4f75672b8..04d1cad06 100644 --- a/js/src/components/Account/PopoverActorCard.vue +++ b/js/src/components/Account/PopoverActorCard.vue @@ -1,44 +1,38 @@ - diff --git a/js/src/components/Event/EventMetadataList.vue b/js/src/components/Event/EventMetadataList.vue index 313fda303..ff02f740b 100644 --- a/js/src/components/Event/EventMetadataList.vue +++ b/js/src/components/Event/EventMetadataList.vue @@ -3,18 +3,18 @@
- - - - diff --git a/js/src/components/Event/FullAddressAutoComplete.vue b/js/src/components/Event/FullAddressAutoComplete.vue index e42fe2d30..40f6d7d08 100644 --- a/js/src/components/Event/FullAddressAutoComplete.vue +++ b/js/src/components/Event/FullAddressAutoComplete.vue @@ -1,56 +1,65 @@ - diff --git a/js/src/components/Event/SkeletonEventResult.story.vue b/js/src/components/Event/SkeletonEventResult.story.vue new file mode 100644 index 000000000..079d01ba7 --- /dev/null +++ b/js/src/components/Event/SkeletonEventResult.story.vue @@ -0,0 +1,17 @@ + + + diff --git a/js/src/components/Event/SkeletonEventResult.vue b/js/src/components/Event/SkeletonEventResult.vue new file mode 100644 index 000000000..d29223e85 --- /dev/null +++ b/js/src/components/Event/SkeletonEventResult.vue @@ -0,0 +1,51 @@ + + + diff --git a/js/src/components/Event/TagInput.story.vue b/js/src/components/Event/TagInput.story.vue new file mode 100644 index 000000000..d6976e1c8 --- /dev/null +++ b/js/src/components/Event/TagInput.story.vue @@ -0,0 +1,23 @@ + + + diff --git a/js/src/components/Event/TagInput.vue b/js/src/components/Event/TagInput.vue index 9d4a6671c..54a34bb20 100644 --- a/js/src/components/Event/TagInput.vue +++ b/js/src/components/Event/TagInput.vue @@ -1,104 +1,91 @@ - - diff --git a/js/src/components/Group/GroupCard.story.vue b/js/src/components/Group/GroupCard.story.vue new file mode 100644 index 000000000..46acd9f74 --- /dev/null +++ b/js/src/components/Group/GroupCard.story.vue @@ -0,0 +1,52 @@ + + + diff --git a/js/src/components/Group/GroupCard.vue b/js/src/components/Group/GroupCard.vue index f913cce72..977c09806 100644 --- a/js/src/components/Group/GroupCard.vue +++ b/js/src/components/Group/GroupCard.vue @@ -4,26 +4,21 @@ name: RouteName.GROUP, params: { preferredUsername: usernameWithDomain(group) }, }" - class="card" + class="card flex flex-col max-w-md bg-white dark:bg-mbz-purple dark:text-white rounded shadow-lg" > -
-
- -
-
-
-
-
-
- +
+ +
+
+
+
+
+
- +
-
-

+
+

{{ displayName(group) }}

@@ -34,19 +29,18 @@
-

- +

+ {{ - $tc( + t( "{count} members or followers", - group.members.total + group.followers.total, { count: group.members.total + group.followers.total, - } + }, + group.members.total + group.followers.total ) }}

@@ -55,85 +49,19 @@ - - diff --git a/js/src/components/Group/GroupMemberCard.story.vue b/js/src/components/Group/GroupMemberCard.story.vue new file mode 100644 index 000000000..92ecf05c4 --- /dev/null +++ b/js/src/components/Group/GroupMemberCard.story.vue @@ -0,0 +1,91 @@ + + + diff --git a/js/src/components/Group/GroupMemberCard.vue b/js/src/components/Group/GroupMemberCard.vue index 2e8fd8e7c..4ed58157b 100644 --- a/js/src/components/Group/GroupMemberCard.vue +++ b/js/src/components/Group/GroupMemberCard.vue @@ -1,22 +1,37 @@ - - diff --git a/js/src/components/Group/GroupSection.vue b/js/src/components/Group/GroupSection.vue index f6e9d6658..038409c04 100644 --- a/js/src/components/Group/GroupSection.vue +++ b/js/src/components/Group/GroupSection.vue @@ -1,95 +1,40 @@ - - diff --git a/js/src/components/Group/InvitationCard.vue b/js/src/components/Group/InvitationCard.vue index 28d701f00..7d656b464 100644 --- a/js/src/components/Group/InvitationCard.vue +++ b/js/src/components/Group/InvitationCard.vue @@ -2,20 +2,22 @@
-
- + - {{ member.invitedBy.name }} - + +
- +
@@ -45,20 +47,20 @@
- {{ $t("Accept") }} - +
- {{ $t("Decline") }} - +
@@ -69,20 +71,14 @@
- diff --git a/js/src/components/Home/UnloggedIntroduction.story.vue b/js/src/components/Home/UnloggedIntroduction.story.vue new file mode 100644 index 000000000..402889573 --- /dev/null +++ b/js/src/components/Home/UnloggedIntroduction.story.vue @@ -0,0 +1,19 @@ + + diff --git a/js/src/components/Home/UnloggedIntroduction.vue b/js/src/components/Home/UnloggedIntroduction.vue new file mode 100644 index 000000000..d3ea687b6 --- /dev/null +++ b/js/src/components/Home/UnloggedIntroduction.vue @@ -0,0 +1,52 @@ + + diff --git a/js/src/components/Image/BlurhashImg.vue b/js/src/components/Image/BlurhashImg.vue index a4017a5fc..fd53a33ee 100644 --- a/js/src/components/Image/BlurhashImg.vue +++ b/js/src/components/Image/BlurhashImg.vue @@ -2,37 +2,33 @@ - - diff --git a/js/src/components/Image/LazyImage.vue b/js/src/components/Image/LazyImage.vue index 9bfcbf85b..469678a09 100644 --- a/js/src/components/Image/LazyImage.vue +++ b/js/src/components/Image/LazyImage.vue @@ -1,22 +1,20 @@ - - diff --git a/js/src/components/Image/LazyImageWrapper.vue b/js/src/components/Image/LazyImageWrapper.vue index 038207644..b30a027ae 100644 --- a/js/src/components/Image/LazyImageWrapper.vue +++ b/js/src/components/Image/LazyImageWrapper.vue @@ -8,10 +8,9 @@ :rounded="rounded" /> - diff --git a/js/src/components/Image/test.html b/js/src/components/Image/test.html new file mode 100644 index 000000000..6d63a3297 --- /dev/null +++ b/js/src/components/Image/test.html @@ -0,0 +1,67 @@ + + + + + + + + + + + Tailwind CSS CDN + + +
+ +
+
+
+
+

+ + + + Members only +

+
+ Best Mountain Trails 2020 +
+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. + Voluptatibus quia, Nonea! Maiores et perferendis eaque, + exercitationem praesentium nihil. +

+
+
+ Avatar of Writer +
+

John Smith

+

Aug 18

+
+
+
+
+
+ + diff --git a/js/src/components/Local/CloseContent.vue b/js/src/components/Local/CloseContent.vue new file mode 100644 index 000000000..c7d7a3b1c --- /dev/null +++ b/js/src/components/Local/CloseContent.vue @@ -0,0 +1,117 @@ + + + diff --git a/js/src/components/Local/CloseEvents.vue b/js/src/components/Local/CloseEvents.vue new file mode 100644 index 000000000..b12a2f657 --- /dev/null +++ b/js/src/components/Local/CloseEvents.vue @@ -0,0 +1,176 @@ + + + diff --git a/js/src/components/Local/CloseGroups.vue b/js/src/components/Local/CloseGroups.vue new file mode 100644 index 000000000..3ab597005 --- /dev/null +++ b/js/src/components/Local/CloseGroups.vue @@ -0,0 +1,95 @@ + + + diff --git a/js/src/components/Local/MoreContent.vue b/js/src/components/Local/MoreContent.vue new file mode 100644 index 000000000..612875fd3 --- /dev/null +++ b/js/src/components/Local/MoreContent.vue @@ -0,0 +1,91 @@ + + + diff --git a/js/src/components/Local/OnlineEvents.vue b/js/src/components/Local/OnlineEvents.vue new file mode 100644 index 000000000..7cd723e28 --- /dev/null +++ b/js/src/components/Local/OnlineEvents.vue @@ -0,0 +1,74 @@ + + + diff --git a/js/src/components/Logo.vue b/js/src/components/Logo.vue index 92c1d47ea..8cd358f96 100644 --- a/js/src/components/Logo.vue +++ b/js/src/components/Logo.vue @@ -27,13 +27,13 @@ - diff --git a/js/src/components/NavBar.vue b/js/src/components/NavBar.vue index 0d8d6ed2c..a5491344d 100644 --- a/js/src/components/NavBar.vue +++ b/js/src/components/NavBar.vue @@ -1,65 +1,193 @@ - + --> - diff --git a/js/src/components/Participation/UnloggedParticipation.vue b/js/src/components/Participation/UnloggedParticipation.vue index 1457f459a..e04dd36dc 100644 --- a/js/src/components/Participation/UnloggedParticipation.vue +++ b/js/src/components/Participation/UnloggedParticipation.vue @@ -1,10 +1,10 @@ - - diff --git a/js/src/components/Post/MultiPostListItem.vue b/js/src/components/Post/MultiPostListItem.vue index 53baa91e1..3812e0f88 100644 --- a/js/src/components/Post/MultiPostListItem.vue +++ b/js/src/components/Post/MultiPostListItem.vue @@ -8,22 +8,17 @@ />
- diff --git a/js/src/components/Post/SharePostModal.story.vue b/js/src/components/Post/SharePostModal.story.vue new file mode 100644 index 000000000..9531800ea --- /dev/null +++ b/js/src/components/Post/SharePostModal.story.vue @@ -0,0 +1,20 @@ + + + diff --git a/js/src/components/Post/SharePostModal.vue b/js/src/components/Post/SharePostModal.vue index d75919e46..3969b311d 100644 --- a/js/src/components/Post/SharePostModal.vue +++ b/js/src/components/Post/SharePostModal.vue @@ -1,218 +1,56 @@ - diff --git a/js/src/components/Resource/FolderItem.vue b/js/src/components/Resource/FolderItem.vue index b06aeabca..916f915f0 100644 --- a/js/src/components/Resource/FolderItem.vue +++ b/js/src/components/Resource/FolderItem.vue @@ -4,122 +4,117 @@ :to="{ name: RouteName.RESOURCE_FOLDER, params: { - path: ResourceMixin.resourcePathArray(resource), + path: resourcePathArray(resource), preferredUsername: usernameWithDomain(group), }, }" >
- +

{{ resource.title }}

- {{ - resource.updatedAt | formatDateTimeString + {{ + formatDateTimeString(resource.updatedAt?.toString()) }}
- + /> -->
- diff --git a/js/src/components/Settings/SettingsOnboarding.vue b/js/src/components/Settings/SettingsOnboarding.vue index 4eaa5614f..e8497dbc6 100644 --- a/js/src/components/Settings/SettingsOnboarding.vue +++ b/js/src/components/Settings/SettingsOnboarding.vue @@ -14,15 +14,15 @@ }}

- - +
@@ -39,69 +39,52 @@ timezone, }) }} - {{ $t("Your timezone {timezone} isn't supported.", { timezone }) }} - +

- diff --git a/js/src/components/Share/TelegramLogo.vue b/js/src/components/Share/TelegramLogo.vue index feb255786..493eba846 100644 --- a/js/src/components/Share/TelegramLogo.vue +++ b/js/src/components/Share/TelegramLogo.vue @@ -8,9 +8,3 @@
- diff --git a/js/src/components/Tag.vue b/js/src/components/Tag.vue index 2fcf28699..18013cbaa 100644 --- a/js/src/components/Tag.vue +++ b/js/src/components/Tag.vue @@ -1,23 +1,36 @@ - diff --git a/js/src/components/Todo/FullTodo.vue b/js/src/components/Todo/FullTodo.vue index 7719b3cde..cf94ee1ff 100644 --- a/js/src/components/Todo/FullTodo.vue +++ b/js/src/components/Todo/FullTodo.vue @@ -1,101 +1,99 @@ - diff --git a/js/src/components/User/AuthProvider.vue b/js/src/components/User/AuthProvider.vue index f3817ef5e..b216a124a 100644 --- a/js/src/components/User/AuthProvider.vue +++ b/js/src/components/User/AuthProvider.vue @@ -1,34 +1,31 @@ - diff --git a/js/src/components/User/AuthProviders.story.vue b/js/src/components/User/AuthProviders.story.vue new file mode 100644 index 000000000..ee88b54a1 --- /dev/null +++ b/js/src/components/User/AuthProviders.story.vue @@ -0,0 +1,13 @@ + + + diff --git a/js/src/components/User/AuthProviders.vue b/js/src/components/User/AuthProviders.vue index cd04d09d8..2e894205f 100644 --- a/js/src/components/User/AuthProviders.vue +++ b/js/src/components/User/AuthProviders.vue @@ -1,7 +1,7 @@ - diff --git a/js/src/components/Utils/Breadcrumbs.vue b/js/src/components/Utils/Breadcrumbs.vue index 8122314a3..29af21881 100644 --- a/js/src/components/Utils/Breadcrumbs.vue +++ b/js/src/components/Utils/Breadcrumbs.vue @@ -10,13 +10,13 @@ {{ element.text }}
{{ element.text }}
{{ element.text }}
@@ -56,14 +56,12 @@ - diff --git a/js/src/components/Utils/EmptyContent.vue b/js/src/components/Utils/EmptyContent.vue index e1b685fd9..9224ad51d 100644 --- a/js/src/components/Utils/EmptyContent.vue +++ b/js/src/components/Utils/EmptyContent.vue @@ -1,45 +1,32 @@ - - - diff --git a/js/src/components/Utils/HomepageRedirectComponent.vue b/js/src/components/Utils/HomepageRedirectComponent.vue index 909b9f6f0..86db7b0ee 100644 --- a/js/src/components/Utils/HomepageRedirectComponent.vue +++ b/js/src/components/Utils/HomepageRedirectComponent.vue @@ -2,14 +2,11 @@
a
- diff --git a/js/src/components/Utils/Observer.vue b/js/src/components/Utils/Observer.vue index 49f24678d..7bf41e147 100644 --- a/js/src/components/Utils/Observer.vue +++ b/js/src/components/Utils/Observer.vue @@ -1,28 +1,35 @@ - diff --git a/js/src/components/Utils/RedirectWithAccount.vue b/js/src/components/Utils/RedirectWithAccount.vue index 4cb6fedca..00e78a4b4 100644 --- a/js/src/components/Utils/RedirectWithAccount.vue +++ b/js/src/components/Utils/RedirectWithAccount.vue @@ -1,11 +1,11 @@ - diff --git a/js/src/components/Utils/Subtitle.vue b/js/src/components/Utils/Subtitle.vue deleted file mode 100644 index acf311ad1..000000000 --- a/js/src/components/Utils/Subtitle.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - diff --git a/js/src/components/Utils/VerticalDivider.vue b/js/src/components/Utils/VerticalDivider.vue index 5e1dbe2e9..dbd8e7f1c 100644 --- a/js/src/components/Utils/VerticalDivider.vue +++ b/js/src/components/Utils/VerticalDivider.vue @@ -1,17 +1,16 @@ - diff --git a/js/src/views/About/AboutInstance.vue b/js/src/views/About/AboutInstance.vue index a301fde04..5ab125c8b 100644 --- a/js/src/views/About/AboutInstance.vue +++ b/js/src/views/About/AboutInstance.vue @@ -1,111 +1,117 @@ - diff --git a/js/src/views/About/Privacy.vue b/js/src/views/About/Privacy.vue index 66e9d5d3d..2d8e0d42f 100644 --- a/js/src/views/About/Privacy.vue +++ b/js/src/views/About/Privacy.vue @@ -1,72 +1,47 @@ - - diff --git a/js/src/views/About/Rules.vue b/js/src/views/About/Rules.vue index bf58f5f62..37c15345c 100644 --- a/js/src/views/About/Rules.vue +++ b/js/src/views/About/Rules.vue @@ -1,40 +1,31 @@ - - diff --git a/js/src/views/About/Terms.vue b/js/src/views/About/Terms.vue index dc20db2ad..13df6adfe 100644 --- a/js/src/views/About/Terms.vue +++ b/js/src/views/About/Terms.vue @@ -1,61 +1,53 @@ - - diff --git a/js/src/views/Account/IdentityPicker.vue b/js/src/views/Account/IdentityPicker.vue index 50c4c9666..9f5d240fb 100644 --- a/js/src/views/Account/IdentityPicker.vue +++ b/js/src/views/Account/IdentityPicker.vue @@ -1,34 +1,31 @@ - diff --git a/js/src/views/Account/IdentityPickerWrapper.vue b/js/src/views/Account/IdentityPickerWrapper.vue index 5f2293951..9b1f9f1b4 100644 --- a/js/src/views/Account/IdentityPickerWrapper.vue +++ b/js/src/views/Account/IdentityPickerWrapper.vue @@ -1,122 +1,108 @@ - - diff --git a/js/src/views/Account/Register.vue b/js/src/views/Account/Register.vue index 07db71e0d..943fef8e0 100644 --- a/js/src/views/Account/Register.vue +++ b/js/src/views/Account/Register.vue @@ -1,43 +1,43 @@ - - diff --git a/js/src/views/Admin/AdminGroupProfile.vue b/js/src/views/Admin/AdminGroupProfile.vue index 67c6d1b4a..76dbe1557 100644 --- a/js/src/views/Admin/AdminGroupProfile.vue +++ b/js/src/views/Admin/AdminGroupProfile.vue @@ -2,10 +2,10 @@
0" class="table is-fullwidth"> + @@ -52,52 +52,64 @@
{{ key }}
-
- + {{ $t("Suspend") }}{{ t("Suspend") }} - {{ $t("Unsuspend") }}{{ t("Unsuspend") }} - {{ $t("Refresh profile") }}{{ t("Refresh profile") }}
-

+

{{ - $tc("{number} members", group.members.total, { - number: group.members.total, - }) + t( + "{number} members", + { + number: group.members.total, + }, + group.members.total + ) }}

- -
@@ -111,14 +123,14 @@ alt="" />

-
-
+
{{ props.row.actor.name }}
- - + + - {{ $t("Administrator") }} + {{ t("Administrator") }} - {{ $t("Moderator") }} + {{ t("Moderator") }} - {{ $t("Member") }} + {{ t("Member") }} - {{ $t("Not approved") }} + {{ t("Not approved") }} - {{ $t("Rejected") }} + {{ t("Rejected") }} - {{ $t("Invited") }} + {{ t("Invited") }} - - + + - {{ props.row.insertedAt | formatDateString }}
{{ - props.row.insertedAt | formatTimeString + {{ formatDateString(props.row.insertedAt) }}
{{ + formatTimeString(props.row.insertedAt) }}
-
-