-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
@uppy/vue: migrate to Composition API with TS & drop Vue 2 support #5043
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* 4.x: @uppy/angular,meta: upgrade to Angular 17.x and to TS 5.4 (#5008) @uppy/svelte: remove UMD output and make it use newer types (#5023) fix type imports (#5038) @uppy/aws-s3-multipart: mark `opts` as optional (#5039) e2e: bump Cypress version (#5034) @uppy/react: remove `prop-types` dependency (#5031) @uppy/progress-bar: remove default target (#4971) @uppy/status-bar: remove default target (#4970) @uppy/react: remove `Wrapper.ts` (#5032) @uppy/react: refactor to TS (#5012) @uppy/core: refine type of private variables (#5028) @uppy/dashboard: refine type of private variables (#5027) @uppy/drag-drop: refine type of private variables (#5026) @uppy/status-bar: refine type of private variables (#5025)
Diff output filesdiff --git a/packages/@uppy/vue/lib/dashboard-modal.js b/packages/@uppy/vue/lib/dashboard-modal.js
index e9e5509..e651eaa 100644
--- a/packages/@uppy/vue/lib/dashboard-modal.js
+++ b/packages/@uppy/vue/lib/dashboard-modal.js
@@ -1,93 +1,51 @@
+import { Uppy } from "@uppy/core";
import DashboardPlugin from "@uppy/dashboard";
-import { shallowEqualObjects } from "shallow-equal";
-import * as Vue from "vue";
-import { isVue2 } from "./utils.js";
-export default {
- data() {
- return {
- plugin: {},
- };
- },
+import { defineComponent, h, ref, watch } from "vue";
+import useUppy from "./useUppy";
+export default defineComponent({
+ name: "DashboardModal",
props: {
uppy: {
+ type: Uppy,
required: true,
},
props: {
type: Object,
},
- plugins: {
- type: Array,
- },
open: {
type: Boolean,
required: true,
},
},
- mounted() {
- this.installPlugin();
- },
- methods: {
- installPlugin() {
+ setup(props) {
+ const containerRef = ref();
+ const pluginRef = ref();
+ const propsRef = ref(props);
+ const onMount = () => {
const {
uppy,
- } = this;
+ } = props;
const options = {
- id: "vue:DashboardModal",
- plugins: this.plugins,
- ...this.props,
- target: this.$refs.container,
+ id: "DashboardModal",
+ inline: false,
+ ...props,
+ target: containerRef.value,
};
uppy.use(DashboardPlugin, options);
- this.plugin = uppy.getPlugin(options.id);
- if (this.open) {
- this.plugin.openModal();
- }
- },
- uninstallPlugin(uppy) {
- uppy.removePlugin(this.plugin);
- },
- },
- beforeDestroy() {
- this.uninstallPlugin(this.uppy);
- },
- beforeUnmount() {
- this.uninstallPlugin(this.uppy);
- },
- watch: {
- uppy(current, old) {
- if (old !== current) {
- this.uninstallPlugin(old);
- this.installPlugin();
- }
- },
- open(current, old) {
+ pluginRef.value = uppy.getPlugin(options.id);
+ };
+ useUppy(onMount, pluginRef, props.uppy, propsRef);
+ watch(() => props.open, (current, old) => {
if (current && !old) {
- this.plugin.openModal();
+ pluginRef.value.openModal();
}
if (!current && old) {
- this.plugin.closeModal();
- }
- },
- props(current, old) {
- if (!shallowEqualObjects(current, old)) {
- this.plugin.setOptions({
- ...current,
- });
+ pluginRef.value.closeModal();
}
- },
- },
- render() {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
- if (isVue2(...args)) {
- const [createElement] = args;
- return createElement("div", {
- ref: "container",
- });
- }
- return Vue.h("div", {
- ref: "container",
});
+ return () =>
+ h("div", {
+ ref: containerRef,
+ });
},
-};
+});
diff --git a/packages/@uppy/vue/lib/dashboard.js b/packages/@uppy/vue/lib/dashboard.js
index 9be5ef4..4350afb 100644
--- a/packages/@uppy/vue/lib/dashboard.js
+++ b/packages/@uppy/vue/lib/dashboard.js
@@ -1,79 +1,38 @@
import DashboardPlugin from "@uppy/dashboard";
-import { shallowEqualObjects } from "shallow-equal";
-import * as Vue from "vue";
-import { isVue2 } from "./utils.js";
-export default {
- data() {
- return {
- plugin: {},
- };
- },
+import { defineComponent, h, ref } from "vue";
+import useUppy from "./useUppy";
+export default defineComponent({
+ name: "Dashboard",
props: {
uppy: {
+ type: Object,
required: true,
},
props: {
type: Object,
},
- plugins: {
- type: Array,
- },
},
- mounted() {
- this.installPlugin();
- },
- methods: {
- installPlugin() {
+ setup(props) {
+ const containerRef = ref();
+ const pluginRef = ref();
+ const propsRef = ref(props.props);
+ const onMount = () => {
const {
uppy,
- } = this;
+ } = props;
const options = {
- id: "vue:Dashboard",
+ id: "Dashboard",
inline: true,
- plugins: this.plugins,
- ...this.props,
- target: this.$refs.container,
+ ...props,
+ target: containerRef.value,
};
uppy.use(DashboardPlugin, options);
- this.plugin = uppy.getPlugin(options.id);
- },
- uninstallPlugin(uppy) {
- uppy.removePlugin(this.plugin);
- },
- },
- beforeDestroy() {
- this.uninstallPlugin(this.uppy);
- },
- beforeUnmount() {
- this.uninstallPlugin(this.uppy);
- },
- watch: {
- uppy(current, old) {
- if (old !== current) {
- this.uninstallPlugin(old);
- this.installPlugin();
- }
- },
- props(current, old) {
- if (!shallowEqualObjects(current, old)) {
- this.plugin.setOptions({
- ...current,
- });
- }
- },
- },
- render() {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
- if (isVue2(...args)) {
- const [createElement] = args;
- return createElement("div", {
- ref: "container",
+ pluginRef.value = uppy.getPlugin(options.id);
+ };
+ useUppy(onMount, pluginRef, props.uppy, propsRef);
+ return () =>
+ h("div", {
+ ref: containerRef,
});
- }
- return Vue.h("div", {
- ref: "container",
- });
},
-};
+});
diff --git a/packages/@uppy/vue/lib/drag-drop.js b/packages/@uppy/vue/lib/drag-drop.js
index 3e2c986..fe3b597 100644
--- a/packages/@uppy/vue/lib/drag-drop.js
+++ b/packages/@uppy/vue/lib/drag-drop.js
@@ -1,74 +1,38 @@
+import { Uppy } from "@uppy/core";
import DragDropPlugin from "@uppy/drag-drop";
-import { shallowEqualObjects } from "shallow-equal";
-import * as Vue from "vue";
-import { isVue2 } from "./utils.js";
-export default {
- data() {
- return {
- plugin: {},
- };
- },
+import { defineComponent, h, ref } from "vue";
+import useUppy from "./useUppy";
+export default defineComponent({
+ name: "DragDrop",
props: {
uppy: {
+ type: Uppy,
required: true,
},
props: {
type: Object,
},
},
- mounted() {
- this.installPlugin();
- },
- methods: {
- installPlugin() {
+ setup(props) {
+ const containerRef = ref();
+ const pluginRef = ref();
+ const propsRef = ref(props.props);
+ const onMount = () => {
const {
uppy,
- } = this;
+ } = props;
const options = {
- id: "vue:DragDrop",
- ...this.props,
- target: this.$refs.container,
+ id: "DragDrop",
+ ...props,
+ target: containerRef.value,
};
uppy.use(DragDropPlugin, options);
- this.plugin = uppy.getPlugin(options.id);
- },
- uninstallPlugin(uppy) {
- uppy.removePlugin(this.plugin);
- },
- },
- beforeDestroy() {
- this.uninstallPlugin(this.uppy);
- },
- beforeUnmount() {
- this.uninstallPlugin(this.uppy);
- },
- watch: {
- uppy(current, old) {
- if (old !== current) {
- this.uninstallPlugin(old);
- this.installPlugin();
- }
- },
- props(current, old) {
- if (!shallowEqualObjects(current, old)) {
- this.plugin.setOptions({
- ...current,
- });
- }
- },
- },
- render() {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
- if (isVue2(...args)) {
- const [createElement] = args;
- return createElement("div", {
- ref: "container",
+ pluginRef.value = uppy.getPlugin(options.id);
+ };
+ useUppy(onMount, pluginRef, props.uppy, propsRef);
+ return () =>
+ h("div", {
+ ref: containerRef,
});
- }
- return Vue.h("div", {
- ref: "container",
- });
},
-};
+});
diff --git a/packages/@uppy/vue/lib/file-input.js b/packages/@uppy/vue/lib/file-input.js
index 38a2812..8c6657b 100644
--- a/packages/@uppy/vue/lib/file-input.js
+++ b/packages/@uppy/vue/lib/file-input.js
@@ -1,74 +1,38 @@
+import { Uppy } from "@uppy/core";
import FileInputPlugin from "@uppy/file-input";
-import { shallowEqualObjects } from "shallow-equal";
-import * as Vue from "vue";
-import { isVue2 } from "./utils.js";
-export default {
- data() {
- return {
- plugin: {},
- };
- },
+import { defineComponent, h, ref } from "vue";
+import useUppy from "./useUppy";
+export default defineComponent({
+ name: "FileInput",
props: {
uppy: {
+ type: Uppy,
required: true,
},
props: {
type: Object,
},
},
- mounted() {
- this.installPlugin();
- },
- methods: {
- installPlugin() {
+ setup(props) {
+ const containerRef = ref();
+ const pluginRef = ref();
+ const propsRef = ref(props.props);
+ const onMount = () => {
const {
uppy,
- } = this;
+ } = props;
const options = {
- id: "vue:FileInput",
- ...this.props,
- target: this.$refs.container,
+ id: "FileInput",
+ ...props,
+ target: containerRef.value,
};
uppy.use(FileInputPlugin, options);
- this.plugin = uppy.getPlugin(options.id);
- },
- uninstallPlugin(uppy) {
- uppy.removePlugin(this.plugin);
- },
- },
- beforeDestroy() {
- this.uninstallPlugin(this.uppy);
- },
- beforeUnmount() {
- this.uninstallPlugin(this.uppy);
- },
- watch: {
- uppy(current, old) {
- if (old !== current) {
- this.uninstallPlugin(old);
- this.installPlugin();
- }
- },
- props(current, old) {
- if (!shallowEqualObjects(current, old)) {
- this.plugin.setOptions({
- ...current,
- });
- }
- },
- },
- render() {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
- if (isVue2(...args)) {
- const [createElement] = args;
- return createElement("div", {
- ref: "container",
+ pluginRef.value = uppy.getPlugin(options.id);
+ };
+ useUppy(onMount, pluginRef, props.uppy, propsRef);
+ return () =>
+ h("div", {
+ ref: containerRef,
});
- }
- return Vue.h("div", {
- ref: "container",
- });
},
-};
+});
diff --git a/packages/@uppy/vue/lib/progress-bar.js b/packages/@uppy/vue/lib/progress-bar.js
index 133db64..b967075 100644
--- a/packages/@uppy/vue/lib/progress-bar.js
+++ b/packages/@uppy/vue/lib/progress-bar.js
@@ -1,71 +1,38 @@
+import { Uppy } from "@uppy/core";
import ProgressBarPlugin from "@uppy/progress-bar";
-import { shallowEqualObjects } from "shallow-equal";
-import * as Vue from "vue";
-import { isVue2 } from "./utils.js";
-export default {
- data() {
- return {
- plugin: {},
- };
- },
+import { defineComponent, h, ref } from "vue";
+import useUppy from "./useUppy";
+export default defineComponent({
+ name: "ProgressBar",
props: {
uppy: {
+ type: Uppy,
required: true,
},
props: {
type: Object,
},
},
- mounted() {
- this.installPlugin();
- },
- methods: {
- installPlugin() {
+ setup(props) {
+ const containerRef = ref();
+ const pluginRef = ref();
+ const propsRef = ref(props.props);
+ const onMount = () => {
const {
uppy,
- } = this;
+ } = props;
const options = {
- id: "vue:ProgressBar",
- ...this.props,
- target: this.$refs.container,
+ id: "ProgressBar",
+ ...props,
+ target: containerRef.value,
};
uppy.use(ProgressBarPlugin, options);
- this.plugin = uppy.getPlugin(options.id);
- },
- uninstallPlugin(uppy) {
- uppy.removePlugin(this.plugin);
- },
- },
- beforeDestroy() {
- this.uninstallPlugin(this.uppy);
- },
- watch: {
- uppy(current, old) {
- if (old !== current) {
- this.uninstallPlugin(old);
- this.installPlugin();
- }
- },
- props(current, old) {
- if (!shallowEqualObjects(current, old)) {
- this.plugin.setOptions({
- ...current,
- });
- }
- },
- },
- render() {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
- if (isVue2(...args)) {
- const [createElement] = args;
- return createElement("div", {
- ref: "container",
+ pluginRef.value = uppy.getPlugin(options.id);
+ };
+ useUppy(onMount, pluginRef, props.uppy, propsRef);
+ return () =>
+ h("div", {
+ ref: containerRef,
});
- }
- return Vue.h("div", {
- ref: "container",
- });
},
-};
+});
diff --git a/packages/@uppy/vue/lib/status-bar.js b/packages/@uppy/vue/lib/status-bar.js
index a3f56ed..6d4444d 100644
--- a/packages/@uppy/vue/lib/status-bar.js
+++ b/packages/@uppy/vue/lib/status-bar.js
@@ -1,74 +1,38 @@
+import { Uppy } from "@uppy/core";
import StatusBarPlugin from "@uppy/status-bar";
-import { shallowEqualObjects } from "shallow-equal";
-import * as Vue from "vue";
-import { isVue2 } from "./utils.js";
-export default {
- data() {
- return {
- plugin: {},
- };
- },
+import { defineComponent, h, ref } from "vue";
+import useUppy from "./useUppy";
+export default defineComponent({
+ name: "StatusBar",
props: {
uppy: {
+ type: Uppy,
required: true,
},
props: {
type: Object,
},
},
- mounted() {
- this.installPlugin();
- },
- methods: {
- installPlugin() {
+ setup(props) {
+ const containerRef = ref();
+ const pluginRef = ref();
+ const propsRef = ref(props.props);
+ const onMount = () => {
const {
uppy,
- } = this;
+ } = props;
const options = {
- id: "vue:StatusBar",
- ...this.props,
- target: this.$refs.container,
+ id: "StatusBar",
+ ...props,
+ target: containerRef.value,
};
uppy.use(StatusBarPlugin, options);
- this.plugin = uppy.getPlugin(options.id);
- },
- uninstallPlugin(uppy) {
- uppy.removePlugin(this.plugin);
- },
- },
- beforeDestroy() {
- this.uninstallPlugin(this.uppy);
- },
- beforeUnmount() {
- this.uninstallPlugin(this.uppy);
- },
- watch: {
- uppy(current, old) {
- if (old !== current) {
- this.uninstallPlugin(old);
- this.installPlugin();
- }
- },
- props(current, old) {
- if (!shallowEqualObjects(current, old)) {
- this.plugin.setOptions({
- ...current,
- });
- }
- },
- },
- render() {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
- if (isVue2(...args)) {
- const [createElement] = args;
- return createElement("div", {
- ref: "container",
+ pluginRef.value = uppy.getPlugin(options.id);
+ };
+ useUppy(onMount, pluginRef, props.uppy, propsRef);
+ return () =>
+ h("div", {
+ ref: containerRef,
});
- }
- return Vue.h("div", {
- ref: "container",
- });
},
-};
+}); |
Murderlon
changed the title
@uppy/vue: migrate to Composition API with TS
@uppy/vue: migrate to Composition API with TS & drop Vue 2 support
Mar 28, 2024
aduh95
reviewed
Mar 28, 2024
aduh95
reviewed
Mar 28, 2024
Co-authored-by: Antoine du Hamel <antoine@transloadit.com>
This comment was marked as resolved.
This comment was marked as resolved.
aduh95
approved these changes
Mar 28, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can't vouch for all the code, but I can confirm the example works.
|
github-actions bot
added a commit
that referenced
this pull request
Mar 28, 2024
| Package | Version | Package | Version | | ------------------------- | ------------ | ------------------------- | ------------ | | @uppy/angular | 0.7.0-beta.1 | @uppy/progress-bar | 4.0.0-beta.1 | | @uppy/audio | 2.0.0-beta.1 | @uppy/provider-views | 4.0.0-beta.1 | | @uppy/aws-s3 | 4.0.0-beta.1 | @uppy/react | 4.0.0-beta.1 | | @uppy/aws-s3-multipart | 4.0.0-beta.1 | @uppy/redux-dev-tools | 4.0.0-beta.1 | | @uppy/box | 3.0.0-beta.1 | @uppy/remote-sources | 2.0.0-beta.1 | | @uppy/companion | 5.0.0-beta.1 | @uppy/screen-capture | 4.0.0-beta.1 | | @uppy/companion-client | 4.0.0-beta.1 | @uppy/status-bar | 4.0.0-beta.1 | | @uppy/compressor | 2.0.0-beta.1 | @uppy/store-default | 4.0.0-beta.1 | | @uppy/core | 4.0.0-beta.1 | @uppy/store-redux | 4.0.0-beta.1 | | @uppy/dashboard | 4.0.0-beta.1 | @uppy/svelte | 4.0.0-beta.1 | | @uppy/drag-drop | 4.0.0-beta.1 | @uppy/thumbnail-generator | 4.0.0-beta.1 | | @uppy/drop-target | 3.0.0-beta.1 | @uppy/transloadit | 4.0.0-beta.1 | | @uppy/dropbox | 4.0.0-beta.1 | @uppy/tus | 4.0.0-beta.1 | | @uppy/facebook | 4.0.0-beta.1 | @uppy/unsplash | 4.0.0-beta.1 | | @uppy/file-input | 4.0.0-beta.1 | @uppy/url | 4.0.0-beta.1 | | @uppy/form | 4.0.0-beta.1 | @uppy/utils | 6.0.0-beta.1 | | @uppy/golden-retriever | 4.0.0-beta.1 | @uppy/vue | 2.0.0-beta.1 | | @uppy/google-drive | 4.0.0-beta.1 | @uppy/webcam | 4.0.0-beta.1 | | @uppy/image-editor | 3.0.0-beta.1 | @uppy/xhr-upload | 4.0.0-beta.1 | | @uppy/informer | 4.0.0-beta.1 | @uppy/zoom | 3.0.0-beta.1 | | @uppy/instagram | 4.0.0-beta.1 | uppy | 4.0.0-beta.1 | | @uppy/onedrive | 4.0.0-beta.1 | | | - @uppy/vue: migrate to Composition API with TS & drop Vue 2 support (Merlijn Vos / #5043) - @uppy/angular: upgrade to Angular 17.x and to TS 5.4 (Antoine du Hamel / #5008) - @uppy/svelte: remove UMD output and make it use newer types (Antoine du Hamel / #5023) - @uppy/companion-client,@uppy/provider-views,@uppy/status-bar: fix type imports (Antoine du Hamel / #5038) - @uppy/aws-s3-multipart: mark `opts` as optional (Antoine du Hamel / #5039) - e2e: bump Cypress version (Antoine du Hamel / #5034) - @uppy/react: remove `prop-types` dependency (Antoine du Hamel / #5031) - @uppy/progress-bar: remove default target (Antoine du Hamel / #4971) - @uppy/status-bar: remove default target (Antoine du Hamel / #4970) - @uppy/react: remove `Wrapper.ts` (Antoine du Hamel / #5032) - @uppy/react: refactor to TS (Antoine du Hamel / #5012) - @uppy/core: refine type of private variables (Antoine du Hamel / #5028) - @uppy/dashboard: refine type of private variables (Antoine du Hamel / #5027) - @uppy/drag-drop: refine type of private variables (Antoine du Hamel / #5026) - @uppy/status-bar: refine type of private variables (Antoine du Hamel / #5025) - @uppy/remote-sources: migrate to TS (Merlijn Vos / #5020) - @uppy/dashboard: refine option types (Antoine du Hamel / #5022) - @uppy/dashboard: add new `autoOpen` option (Chris Grigg / #5001) - @uppy/aws-s3-multipart,@uppy/tus,@uppy/utils,@uppy/xhr-upload: Make `allowedMetaFields` consistent (Merlijn Vos / #5011) - @uppy/core: fix some type errors (Antoine du Hamel / #5015) - @uppy/audio,@uppy/dashboard,@uppy/drop-target,@uppy/webcam: add missing exports (Antoine du Hamel / #5014) - meta: Bump webpack-dev-middleware from 5.3.3 to 5.3.4 (dependabot[bot] / #5013) - @uppy/dashboard: refactor to TypeScript (Antoine du Hamel / #4984) - @uppy/companion: improve error msg (Mikael Finstad / #5010) - @uppy/aws-s3-multipart: refactor to TS (Antoine du Hamel / #4902) - @uppy/dashboard: refactor to stable lifecycle method (Antoine du Hamel / #4999) - @uppy/companion: crash if trying to set path to / (Mikael Finstad / #5003) - @uppy/provider-views: fix `super.toggleCheckbox` bug (Mikael Finstad / #5004) - @uppy/aws-s3-multipart: fix escaping issue with client signed request (Hiroki Shimizu / #5006) - @uppy/drag-drop,@uppy/progress-bar: add missing exports (Antoine du Hamel / #5009) - @uppy/transloadit: migrate to TS (Merlijn Vos / #4987) - @uppy/utils: fix `RateLimitedQueue#wrapPromiseFunction` types (Antoine du Hamel / #5007) - @uppy/golden-retriever: migrate to TS (Merlijn Vos / #4989) - meta: Bump follow-redirects from 1.15.4 to 1.15.6 (dependabot[bot] / #5002) - meta: fix `resize-observer-polyfill` types (Antoine du Hamel / #4994) - @uppy/core: various type fixes (Antoine du Hamel / #4995) - @uppy/utils: fix `findAllDOMElements` type (Antoine du Hamel / #4997) - @uppy/status-bar: fix `recoveredState` type (Antoine du Hamel / #4996) - @uppy/utils: fix `AbortablePromise` type (Antoine du Hamel / #4988) - @uppy/core,@uppy/provider-views: Fix breadcrumbs (Evgenia Karunus / #4986) - @uppy/drag-drop: refactor to TypeScript (Antoine du Hamel / #4983) - @uppy/webcam: refactor to TypeScript (Antoine du Hamel / #4870) - @uppy/url: migrate to TS (Merlijn Vos / #4980) - @uppy/zoom: refactor to TypeScript (Murderlon / #4979) - @uppy/unsplash: refactor to TypeScript (Murderlon / #4979) - @uppy/onedrive: refactor to TypeScript (Murderlon / #4979) - @uppy/instagram: refactor to TypeScript (Murderlon / #4979) - @uppy/google-drive: refactor to TypeScript (Murderlon / #4979) - @uppy/facebook: refactor to TypeScript (Murderlon / #4979) - @uppy/dropbox: refactor to TypeScript (Murderlon / #4979) - @uppy/box: refactor to TypeScript (Murderlon / #4979) - @uppy/utils: migrate RateLimitedQueue to TS (Merlijn Vos / #4981) - @uppy/thumbnail-generator: migrate to TS (Merlijn Vos / #4978) - @uppy/screen-capture: migrate to TS (Merlijn Vos / #4965) - @uppy/companion-client: Replace Provider.initPlugin with composition (Merlijn Vos / #4977) - uppy: remove legacy bundle (Antoine du Hamel) - meta: include types in npm archive (Antoine du Hamel) - @uppy/angular: fix build (Antoine du Hamel) - meta: Remove generate types from locale-pack (Murderlon) - meta: enable CI on `4.x` branch (Antoine du Hamel) - @uppy/vue: [v4.x] remove manual types (Antoine du Hamel / #4803) - meta: prepare release workflow for beta versions (Antoine du Hamel) | Package | Version | Package | Version | | ------------------------- | ------- | ------------------------- | ------- | | @uppy/audio | 1.1.8 | @uppy/progress-bar | 3.1.1 | | @uppy/aws-s3-multipart | 3.11.0 | @uppy/provider-views | 3.11.0 | | @uppy/box | 2.3.0 | @uppy/react | 3.3.0 | | @uppy/companion | 4.13.0 | @uppy/remote-sources | 1.2.0 | | @uppy/companion-client | 3.8.0 | @uppy/screen-capture | 3.2.0 | | @uppy/compressor | 1.1.2 | @uppy/status-bar | 3.3.1 | | @uppy/core | 3.10.0 | @uppy/thumbnail-generator | 3.1.0 | | @uppy/dashboard | 3.8.0 | @uppy/transloadit | 3.6.0 | | @uppy/drag-drop | 3.1.0 | @uppy/tus | 3.5.4 | | @uppy/drop-target | 2.0.5 | @uppy/unsplash | 3.3.0 | | @uppy/dropbox | 3.3.0 | @uppy/url | 3.6.0 | | @uppy/facebook | 3.3.0 | @uppy/utils | 5.7.5 | | @uppy/golden-retriever | 3.2.0 | @uppy/webcam | 3.4.0 | | @uppy/google-drive | 3.5.0 | @uppy/zoom | 2.3.0 | | @uppy/instagram | 3.3.0 | uppy | 3.24.0 | | @uppy/onedrive | 3.3.0 | | | - @uppy/box,@uppy/companion-client,@uppy/provider-views,@uppy/status-bar: fix type imports (Antoine du Hamel / #5038) - @uppy/aws-s3-multipart: mark `opts` as optional (Antoine du Hamel / #5039) - e2e: bump Cypress version (Antoine du Hamel / #5034) - @uppy/react: refactor to TS (Antoine du Hamel / #5012) - @uppy/core: refine type of private variables (Antoine du Hamel / #5028) - @uppy/dashboard: refine type of private variables (Antoine du Hamel / #5027) - @uppy/drag-drop: refine type of private variables (Antoine du Hamel / #5026) - @uppy/status-bar: refine type of private variables (Antoine du Hamel / #5025) - @uppy/remote-sources: migrate to TS (Merlijn Vos / #5020) - @uppy/dashboard: refine option types (Antoine du Hamel / #5022) - @uppy/dashboard: add new `autoOpen` option (Chris Grigg / #5001) - @uppy/core: fix some type errors (Antoine du Hamel / #5015) - @uppy/audio,@uppy/dashboard,@uppy/drop-target,@uppy/webcam: add missing exports (Antoine du Hamel / #5014) - meta: Bump webpack-dev-middleware from 5.3.3 to 5.3.4 (dependabot[bot] / #5013) - @uppy/dashboard: refactor to TypeScript (Antoine du Hamel / #4984) - @uppy/companion: improve error msg (Mikael Finstad / #5010) - @uppy/aws-s3-multipart: refactor to TS (Antoine du Hamel / #4902) - @uppy/dashboard: refactor to stable lifecycle method (Antoine du Hamel / #4999) - @uppy/companion: crash if trying to set path to / (Mikael Finstad / #5003) - @uppy/provider-views: fix `super.toggleCheckbox` bug (Mikael Finstad / #5004) - @uppy/aws-s3-multipart: fix escaping issue with client signed request (Hiroki Shimizu / #5006) - @uppy/drag-drop,@uppy/progress-bar: add missing exports (Antoine du Hamel / #5009) - @uppy/transloadit: migrate to TS (Merlijn Vos / #4987) - @uppy/utils: fix `RateLimitedQueue#wrapPromiseFunction` types (Antoine du Hamel / #5007) - @uppy/golden-retriever: migrate to TS (Merlijn Vos / #4989) - meta: Bump follow-redirects from 1.15.4 to 1.15.6 (dependabot[bot] / #5002) - meta: fix `resize-observer-polyfill` types (Antoine du Hamel / #4994) - @uppy/core: various type fixes (Antoine du Hamel / #4995) - @uppy/utils: fix `findAllDOMElements` type (Antoine du Hamel / #4997) - @uppy/status-bar: fix `recoveredState` type (Antoine du Hamel / #4996) - @uppy/utils: fix `AbortablePromise` type (Antoine du Hamel / #4988) - @uppy/core,@uppy/provider-views: Fix breadcrumbs (Evgenia Karunus / #4986) - @uppy/drag-drop: refactor to TypeScript (Antoine du Hamel / #4983) - @uppy/webcam: refactor to TypeScript (Antoine du Hamel / #4870) - @uppy/url: migrate to TS (Merlijn Vos / #4980) - @uppy/zoom: refactor to TypeScript (Murderlon / #4979) - @uppy/unsplash: refactor to TypeScript (Murderlon / #4979) - @uppy/onedrive: refactor to TypeScript (Murderlon / #4979) - @uppy/instagram: refactor to TypeScript (Murderlon / #4979) - @uppy/google-drive: refactor to TypeScript (Murderlon / #4979) - @uppy/facebook: refactor to TypeScript (Murderlon / #4979) - @uppy/dropbox: refactor to TypeScript (Murderlon / #4979) - @uppy/box: refactor to TypeScript (Murderlon / #4979) - @uppy/utils: migrate RateLimitedQueue to TS (Merlijn Vos / #4981) - @uppy/thumbnail-generator: migrate to TS (Merlijn Vos / #4978) - @uppy/screen-capture: migrate to TS (Merlijn Vos / #4965) - @uppy/companion-client: Replace Provider.initPlugin with composition (Merlijn Vos / #4977)
Murderlon
added a commit
that referenced
this pull request
Apr 2, 2024
* 4.x: (27 commits) Release: uppy@4.0.0-beta.1 (#5047) @uppy/vue: migrate to Composition API with TS & drop Vue 2 support (#5043) @uppy/angular,meta: upgrade to Angular 17.x and to TS 5.4 (#5008) @uppy/svelte: remove UMD output and make it use newer types (#5023) fix type imports (#5038) @uppy/aws-s3-multipart: mark `opts` as optional (#5039) e2e: bump Cypress version (#5034) @uppy/react: remove `prop-types` dependency (#5031) @uppy/progress-bar: remove default target (#4971) @uppy/status-bar: remove default target (#4970) @uppy/react: remove `Wrapper.ts` (#5032) @uppy/react: refactor to TS (#5012) @uppy/core: refine type of private variables (#5028) @uppy/dashboard: refine type of private variables (#5027) @uppy/drag-drop: refine type of private variables (#5026) @uppy/status-bar: refine type of private variables (#5025) @uppy/remote-sources: migrate to TS (#5020) @uppy/dashboard: refine option types (#5022) @uppy/dashboard: add new `autoOpen` option (#5001) Make `allowedMetaFields` consistent (#5011) ...
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
vue3
example project.AFAIK the recommended way is to publish Vue packages using Single File Components syntax, which has better TS support, but that requires a compiler setup which we don't have here. To keep it simple, I'm writing components in TS. The only downside is typing props, which is a bit awkward now like this:
Inside SFC's you can properly type with TS: