@adminforth/upload 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build.log CHANGED
@@ -11,5 +11,5 @@ custom/preview.vue
11
11
  custom/tsconfig.json
12
12
  custom/uploader.vue
13
13
 
14
- sent 37,887 bytes received 134 bytes 76,042.00 bytes/sec
15
- total size is 37,398 speedup is 0.98
14
+ sent 38,419 bytes received 134 bytes 77,106.00 bytes/sec
15
+ total size is 37,930 speedup is 0.98
@@ -5,7 +5,7 @@
5
5
  v-if="contentType && contentType.startsWith('image')"
6
6
  :src="url"
7
7
  class="rounded-md"
8
- :style="maxWidth"
8
+ :style="[maxWidth, minWidth]"
9
9
  ref="img"
10
10
  data-zoomable
11
11
  @click.stop="zoom.open()"
@@ -51,16 +51,17 @@
51
51
  </style>
52
52
 
53
53
  <style scoped>
54
- img {
54
+ /* img {
55
55
  min-width: 150px;
56
56
  }
57
57
  video {
58
58
  min-width: 200px;
59
- }
59
+ } */
60
60
  </style>
61
61
  <script setup>
62
62
  import { ref, computed , onMounted, watch} from 'vue'
63
63
  import mediumZoom from 'medium-zoom'
64
+ import { useRoute } from 'vue-router'
64
65
 
65
66
  const img = ref(null);
66
67
  const zoom = ref(null);
@@ -71,13 +72,28 @@ const props = defineProps({
71
72
  meta: Object,
72
73
  })
73
74
 
75
+ const route = useRoute();
74
76
  const url = computed(() => {
75
77
  return props.record[`previewUrl_${props.meta.pluginInstanceId}`];
76
78
  });
77
79
 
78
- const maxWidth = computed(() => props.meta.maxWidth ? { maxWidth: props.meta.maxWidth } : {});
80
+ const maxWidth = computed(() => {
81
+ const isShowPage = route.path.includes('/show/');
82
+ const width = isShowPage
83
+ ? (props.meta.maxShowWidth || props.meta.maxWidth)
84
+ : (props.meta.maxListWidth || props.meta.maxWidth);
85
+
86
+ return width ? { maxWidth: width } : {};
87
+ });
79
88
 
89
+ const minWidth = computed(() => {
90
+ const isShowPage = route.path.includes('/show/');
91
+ const width = isShowPage
92
+ ? (props.meta.minShowWidth || props.meta.minWidth)
93
+ : (props.meta.minListWidth || props.meta.minWidth);
80
94
 
95
+ return width ? { minWidth: width } : {};
96
+ });
81
97
  // since we have no way to know the content type of the file, we will try to guess it from extension
82
98
  // for better experience probably we should check whether user saves content type in the database and use it here
83
99
  const contentType = computed(() => {
@@ -5,7 +5,7 @@
5
5
  v-if="contentType && contentType.startsWith('image')"
6
6
  :src="url"
7
7
  class="rounded-md"
8
- :style="maxWidth"
8
+ :style="[maxWidth, minWidth]"
9
9
  ref="img"
10
10
  data-zoomable
11
11
  @click.stop="zoom.open()"
@@ -51,16 +51,17 @@
51
51
  </style>
52
52
 
53
53
  <style scoped>
54
- img {
54
+ /* img {
55
55
  min-width: 150px;
56
56
  }
57
57
  video {
58
58
  min-width: 200px;
59
- }
59
+ } */
60
60
  </style>
61
61
  <script setup>
62
62
  import { ref, computed , onMounted, watch} from 'vue'
63
63
  import mediumZoom from 'medium-zoom'
64
+ import { useRoute } from 'vue-router'
64
65
 
65
66
  const img = ref(null);
66
67
  const zoom = ref(null);
@@ -71,13 +72,28 @@ const props = defineProps({
71
72
  meta: Object,
72
73
  })
73
74
 
75
+ const route = useRoute();
74
76
  const url = computed(() => {
75
77
  return props.record[`previewUrl_${props.meta.pluginInstanceId}`];
76
78
  });
77
79
 
78
- const maxWidth = computed(() => props.meta.maxWidth ? { maxWidth: props.meta.maxWidth } : {});
80
+ const maxWidth = computed(() => {
81
+ const isShowPage = route.path.includes('/show/');
82
+ const width = isShowPage
83
+ ? (props.meta.maxShowWidth || props.meta.maxWidth)
84
+ : (props.meta.maxListWidth || props.meta.maxWidth);
85
+
86
+ return width ? { maxWidth: width } : {};
87
+ });
79
88
 
89
+ const minWidth = computed(() => {
90
+ const isShowPage = route.path.includes('/show/');
91
+ const width = isShowPage
92
+ ? (props.meta.minShowWidth || props.meta.minWidth)
93
+ : (props.meta.minListWidth || props.meta.minWidth);
80
94
 
95
+ return width ? { minWidth: width } : {};
96
+ });
81
97
  // since we have no way to know the content type of the file, we will try to guess it from extension
82
98
  // for better experience probably we should check whether user saves content type in the database and use it here
83
99
  const contentType = computed(() => {
package/dist/index.js CHANGED
@@ -99,7 +99,7 @@ getBucketLifecycleConfiguration on bucket ${this.options.s3Bucket} in region ${t
99
99
  modifyResourceConfig: { get: () => super.modifyResourceConfig }
100
100
  });
101
101
  return __awaiter(this, void 0, void 0, function* () {
102
- var _a, _b, _c, _d;
102
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
103
103
  _super.modifyResourceConfig.call(this, adminforth, resourceConfig);
104
104
  // after column to store the path of the uploaded file, add new VirtualColumn,
105
105
  // show only in edit and create views
@@ -127,6 +127,11 @@ getBucketLifecycleConfiguration on bucket ${this.options.s3Bucket} in region ${t
127
127
  pathColumnLabel: resourceConfig.columns[pathColumnIndex].label,
128
128
  fieldsForContext: (_c = this.options.generation) === null || _c === void 0 ? void 0 : _c.fieldsForContext,
129
129
  maxWidth: (_d = this.options.preview) === null || _d === void 0 ? void 0 : _d.maxWidth,
130
+ maxListWidth: (_e = this.options.preview) === null || _e === void 0 ? void 0 : _e.maxListWidth,
131
+ maxShowWidth: (_f = this.options.preview) === null || _f === void 0 ? void 0 : _f.maxShowWidth,
132
+ minWidth: (_g = this.options.preview) === null || _g === void 0 ? void 0 : _g.minWidth,
133
+ minListWidth: (_h = this.options.preview) === null || _h === void 0 ? void 0 : _h.minListWidth,
134
+ minShowWidth: (_j = this.options.preview) === null || _j === void 0 ? void 0 : _j.minShowWidth,
130
135
  };
131
136
  // define components which will be imported from other components
132
137
  this.componentPath('imageGenerator.vue');
package/index.ts CHANGED
@@ -127,6 +127,11 @@ getBucketLifecycleConfiguration on bucket ${this.options.s3Bucket} in region ${t
127
127
  pathColumnLabel: resourceConfig.columns[pathColumnIndex].label,
128
128
  fieldsForContext: this.options.generation?.fieldsForContext,
129
129
  maxWidth: this.options.preview?.maxWidth,
130
+ maxListWidth: this.options.preview?.maxListWidth,
131
+ maxShowWidth: this.options.preview?.maxShowWidth,
132
+ minWidth: this.options.preview?.minWidth,
133
+ minListWidth: this.options.preview?.minListWidth,
134
+ minShowWidth: this.options.preview?.minShowWidth,
130
135
  };
131
136
  // define components which will be imported from other components
132
137
  this.componentPath('imageGenerator.vue');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adminforth/upload",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "Plugin for uploading files for adminforth",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/types.ts CHANGED
@@ -69,6 +69,32 @@ export type PluginOptions = {
69
69
  */
70
70
  maxWidth?: string,
71
71
 
72
+ /**
73
+ * Maximum width of the preview image in list view
74
+ */
75
+ maxListWidth?: string,
76
+
77
+ /**
78
+ * Maximum width of the preview image in show view
79
+ */
80
+ maxShowWidth?: string,
81
+
82
+
83
+ /**
84
+ * Minimum width of the preview image
85
+ */
86
+ minWidth?: string,
87
+
88
+ /**
89
+ * Minimum width of the preview image in list view
90
+ */
91
+ minListWidth?: string,
92
+
93
+ /**
94
+ * Minimum width of the preview image in show view
95
+ */
96
+ minShowWidth?: string,
97
+
72
98
  /**
73
99
  * Used to display preview (if it is image) in list and show views.
74
100
  * Defaulted to the AWS S3 presigned URL if resource is private or public URL if resource is public.