@vuetify/nightly 3.4.0-dev.2023-11-09 → 3.4.0-dev.2023-12-07

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.
@@ -1073,6 +1073,7 @@ declare const VCarouselItem: {
1073
1073
  options: IntersectionObserverInit;
1074
1074
  cover: boolean;
1075
1075
  src: string | srcObject;
1076
+ rounded: string | number | boolean;
1076
1077
  reverseTransition: string | boolean;
1077
1078
  }> & Omit<{
1078
1079
  inline: boolean;
@@ -1085,6 +1086,7 @@ declare const VCarouselItem: {
1085
1086
  height?: string | number | undefined;
1086
1087
  width?: string | number | undefined;
1087
1088
  aspectRatio?: string | number | undefined;
1089
+ color?: string | undefined;
1088
1090
  maxHeight?: string | number | undefined;
1089
1091
  maxWidth?: string | number | undefined;
1090
1092
  minHeight?: string | number | undefined;
@@ -1100,6 +1102,7 @@ declare const VCarouselItem: {
1100
1102
  sizes?: string | undefined;
1101
1103
  srcset?: string | undefined;
1102
1104
  contentClass?: string | undefined;
1105
+ rounded?: string | number | boolean | undefined;
1103
1106
  gradient?: string | undefined;
1104
1107
  lazySrc?: string | undefined;
1105
1108
  selectedClass?: string | undefined;
@@ -1132,6 +1135,7 @@ declare const VCarouselItem: {
1132
1135
  height?: string | number | undefined;
1133
1136
  width?: string | number | undefined;
1134
1137
  aspectRatio?: string | number | undefined;
1138
+ color?: string | undefined;
1135
1139
  maxHeight?: string | number | undefined;
1136
1140
  maxWidth?: string | number | undefined;
1137
1141
  minHeight?: string | number | undefined;
@@ -1147,6 +1151,7 @@ declare const VCarouselItem: {
1147
1151
  sizes?: string | undefined;
1148
1152
  srcset?: string | undefined;
1149
1153
  contentClass?: string | undefined;
1154
+ rounded?: string | number | boolean | undefined;
1150
1155
  gradient?: string | undefined;
1151
1156
  lazySrc?: string | undefined;
1152
1157
  selectedClass?: string | undefined;
@@ -1169,7 +1174,7 @@ declare const VCarouselItem: {
1169
1174
  "v-slot:placeholder"?: false | (() => vue.VNodeChild) | undefined;
1170
1175
  "v-slot:error"?: false | (() => vue.VNodeChild) | undefined;
1171
1176
  "v-slot:sources"?: false | (() => vue.VNodeChild) | undefined;
1172
- }, "inline" | "transition" | "style" | "draggable" | "eager" | "disabled" | "options" | "cover" | "src" | "reverseTransition">;
1177
+ }, "inline" | "transition" | "style" | "draggable" | "eager" | "disabled" | "options" | "cover" | "src" | "rounded" | "reverseTransition">;
1173
1178
  $attrs: {
1174
1179
  [x: string]: unknown;
1175
1180
  };
@@ -1206,6 +1211,7 @@ declare const VCarouselItem: {
1206
1211
  height?: string | number | undefined;
1207
1212
  width?: string | number | undefined;
1208
1213
  aspectRatio?: string | number | undefined;
1214
+ color?: string | undefined;
1209
1215
  maxHeight?: string | number | undefined;
1210
1216
  maxWidth?: string | number | undefined;
1211
1217
  minHeight?: string | number | undefined;
@@ -1221,6 +1227,7 @@ declare const VCarouselItem: {
1221
1227
  sizes?: string | undefined;
1222
1228
  srcset?: string | undefined;
1223
1229
  contentClass?: string | undefined;
1230
+ rounded?: string | number | boolean | undefined;
1224
1231
  gradient?: string | undefined;
1225
1232
  lazySrc?: string | undefined;
1226
1233
  selectedClass?: string | undefined;
@@ -1253,6 +1260,7 @@ declare const VCarouselItem: {
1253
1260
  options: IntersectionObserverInit;
1254
1261
  cover: boolean;
1255
1262
  src: string | srcObject;
1263
+ rounded: string | number | boolean;
1256
1264
  reverseTransition: string | boolean;
1257
1265
  }, {}, string, vue.SlotsType<Partial<{
1258
1266
  default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
@@ -1299,6 +1307,7 @@ declare const VCarouselItem: {
1299
1307
  height?: string | number | undefined;
1300
1308
  width?: string | number | undefined;
1301
1309
  aspectRatio?: string | number | undefined;
1310
+ color?: string | undefined;
1302
1311
  maxHeight?: string | number | undefined;
1303
1312
  maxWidth?: string | number | undefined;
1304
1313
  minHeight?: string | number | undefined;
@@ -1314,6 +1323,7 @@ declare const VCarouselItem: {
1314
1323
  sizes?: string | undefined;
1315
1324
  srcset?: string | undefined;
1316
1325
  contentClass?: string | undefined;
1326
+ rounded?: string | number | boolean | undefined;
1317
1327
  gradient?: string | undefined;
1318
1328
  lazySrc?: string | undefined;
1319
1329
  selectedClass?: string | undefined;
@@ -1352,6 +1362,7 @@ declare const VCarouselItem: {
1352
1362
  height?: string | number | undefined;
1353
1363
  width?: string | number | undefined;
1354
1364
  aspectRatio?: string | number | undefined;
1365
+ color?: string | undefined;
1355
1366
  maxHeight?: string | number | undefined;
1356
1367
  maxWidth?: string | number | undefined;
1357
1368
  minHeight?: string | number | undefined;
@@ -1367,6 +1378,7 @@ declare const VCarouselItem: {
1367
1378
  sizes?: string | undefined;
1368
1379
  srcset?: string | undefined;
1369
1380
  contentClass?: string | undefined;
1381
+ rounded?: string | number | boolean | undefined;
1370
1382
  gradient?: string | undefined;
1371
1383
  lazySrc?: string | undefined;
1372
1384
  selectedClass?: string | undefined;
@@ -1399,6 +1411,7 @@ declare const VCarouselItem: {
1399
1411
  options: IntersectionObserverInit;
1400
1412
  cover: boolean;
1401
1413
  src: string | srcObject;
1414
+ rounded: string | number | boolean;
1402
1415
  reverseTransition: string | boolean;
1403
1416
  }, {}, string, vue.SlotsType<Partial<{
1404
1417
  default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
@@ -1431,6 +1444,10 @@ declare const VCarouselItem: {
1431
1444
  type: (StringConstructor | BooleanConstructor)[];
1432
1445
  default: undefined;
1433
1446
  };
1447
+ rounded: {
1448
+ type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
1449
+ default: undefined;
1450
+ };
1434
1451
  height: (StringConstructor | NumberConstructor)[];
1435
1452
  maxHeight: (StringConstructor | NumberConstructor)[];
1436
1453
  maxWidth: (StringConstructor | NumberConstructor)[];
@@ -1442,6 +1459,7 @@ declare const VCarouselItem: {
1442
1459
  inline: BooleanConstructor;
1443
1460
  alt: StringConstructor;
1444
1461
  cover: BooleanConstructor;
1462
+ color: StringConstructor;
1445
1463
  draggable: {
1446
1464
  type: vue.PropType<boolean | "false" | "true">;
1447
1465
  default: undefined;
@@ -1483,6 +1501,10 @@ declare const VCarouselItem: {
1483
1501
  type: (StringConstructor | BooleanConstructor)[];
1484
1502
  default: undefined;
1485
1503
  };
1504
+ rounded: {
1505
+ type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
1506
+ default: undefined;
1507
+ };
1486
1508
  height: (StringConstructor | NumberConstructor)[];
1487
1509
  maxHeight: (StringConstructor | NumberConstructor)[];
1488
1510
  maxWidth: (StringConstructor | NumberConstructor)[];
@@ -1494,6 +1516,7 @@ declare const VCarouselItem: {
1494
1516
  inline: BooleanConstructor;
1495
1517
  alt: StringConstructor;
1496
1518
  cover: BooleanConstructor;
1519
+ color: StringConstructor;
1497
1520
  draggable: {
1498
1521
  type: vue.PropType<boolean | "false" | "true">;
1499
1522
  default: undefined;
@@ -5,6 +5,9 @@
5
5
  .v-img--booting .v-responsive__sizer {
6
6
  transition: none;
7
7
  }
8
+ .v-img--rounded {
9
+ border-radius: 4px;
10
+ }
8
11
 
9
12
  .v-img__img,
10
13
  .v-img__picture,
@@ -4,14 +4,17 @@ import "./VImg.css";
4
4
 
5
5
  // Components
6
6
  import { makeVResponsiveProps, VResponsive } from "../VResponsive/VResponsive.mjs"; // Composables
7
+ import { useBackgroundColor } from "../../composables/color.mjs";
7
8
  import { makeComponentProps } from "../../composables/component.mjs";
9
+ import { makeRoundedProps, useRounded } from "../../composables/rounded.mjs";
8
10
  import { makeTransitionProps, MaybeTransition } from "../../composables/transition.mjs"; // Directives
9
11
  import intersect from "../../directives/intersect/index.mjs"; // Utilities
10
- import { computed, nextTick, onBeforeMount, ref, shallowRef, vShow, watch, withDirectives } from 'vue';
12
+ import { computed, nextTick, onBeforeMount, ref, shallowRef, toRef, vShow, watch, withDirectives } from 'vue';
11
13
  import { convertToUnit, genericComponent, propsFactory, SUPPORTS_INTERSECTION, useRender } from "../../util/index.mjs"; // Types
12
14
  export const makeVImgProps = propsFactory({
13
15
  alt: String,
14
16
  cover: Boolean,
17
+ color: String,
15
18
  draggable: {
16
19
  type: [Boolean, String],
17
20
  default: undefined
@@ -40,6 +43,7 @@ export const makeVImgProps = propsFactory({
40
43
  position: String,
41
44
  ...makeVResponsiveProps(),
42
45
  ...makeComponentProps(),
46
+ ...makeRoundedProps(),
43
47
  ...makeTransitionProps()
44
48
  }, 'VImg');
45
49
  export const VImg = genericComponent()({
@@ -58,6 +62,13 @@ export const VImg = genericComponent()({
58
62
  emit,
59
63
  slots
60
64
  } = _ref;
65
+ const {
66
+ backgroundColorClasses,
67
+ backgroundColorStyles
68
+ } = useBackgroundColor(toRef(props, 'color'));
69
+ const {
70
+ roundedClasses
71
+ } = useRounded(props);
61
72
  const currentSrc = shallowRef(''); // Set from srcset
62
73
  const image = ref();
63
74
  const state = shallowRef(props.eager ? 'loading' : 'idle');
@@ -250,10 +261,10 @@ export const VImg = genericComponent()({
250
261
  return _withDirectives(_createVNode(VResponsive, _mergeProps({
251
262
  "class": ['v-img', {
252
263
  'v-img--booting': !isBooted.value
253
- }, props.class],
264
+ }, backgroundColorClasses.value, roundedClasses.value, props.class],
254
265
  "style": [{
255
266
  width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)
256
- }, props.style]
267
+ }, backgroundColorStyles.value, props.style]
257
268
  }, responsiveProps, {
258
269
  "aspectRatio": aspectRatio.value,
259
270
  "aria-label": props.alt,
@@ -1 +1 @@
1
- {"version":3,"file":"VImg.mjs","names":["makeVResponsiveProps","VResponsive","makeComponentProps","makeTransitionProps","MaybeTransition","intersect","computed","nextTick","onBeforeMount","ref","shallowRef","vShow","watch","withDirectives","convertToUnit","genericComponent","propsFactory","SUPPORTS_INTERSECTION","useRender","makeVImgProps","alt","String","cover","Boolean","draggable","type","default","undefined","eager","gradient","lazySrc","options","Object","root","rootMargin","threshold","sizes","src","crossorigin","referrerpolicy","srcset","position","VImg","name","directives","props","emits","loadstart","value","load","error","setup","_ref","emit","slots","currentSrc","image","state","naturalWidth","naturalHeight","normalisedSrc","aspect","Number","aspectRatio","init","val","oldVal","pollForSize","isIntersecting","lazyImg","Image","setTimeout","complete","onError","onLoad","getSrc","img","timer","timeout","arguments","length","poll","clearTimeout","imgHeight","imgWidth","window","endsWith","startsWith","containClasses","__image","_createVNode","objectPosition","sources","transition","__preloadImage","__placeholder","placeholder","__error","__gradient","backgroundImage","isBooted","stop","requestAnimationFrame","responsiveProps","filterProps","_withDirectives","_mergeProps","class","width","style","additional","_Fragment","_resolveDirective","handler","once"],"sources":["../../../src/components/VImg/VImg.tsx"],"sourcesContent":["// Styles\nimport './VImg.sass'\n\n// Components\nimport { makeVResponsiveProps, VResponsive } from '@/components/VResponsive/VResponsive'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Utilities\nimport {\n computed,\n nextTick,\n onBeforeMount,\n ref,\n shallowRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n propsFactory,\n SUPPORTS_INTERSECTION,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src?: string\n srcset?: string\n lazySrc?: string\n aspect: number\n}\n\nexport type VImgSlots = {\n default: never\n placeholder: never\n error: never\n sources: never\n}\n\nexport const makeVImgProps = propsFactory({\n alt: String,\n cover: Boolean,\n draggable: {\n type: [Boolean, String] as PropType<boolean | 'true' | 'false'>,\n default: undefined,\n },\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object as PropType<IntersectionObserverInit>,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n sizes: String,\n src: {\n type: [String, Object] as PropType<string | srcObject>,\n default: '',\n },\n crossorigin: String as PropType<'' | 'anonymous' | 'use-credentials'>,\n referrerpolicy: String as PropType<\n | 'no-referrer'\n | 'no-referrer-when-downgrade'\n | 'origin'\n | 'origin-when-cross-origin'\n | 'same-origin'\n | 'strict-origin'\n | 'strict-origin-when-cross-origin'\n | 'unsafe-url'\n >,\n srcset: String,\n position: String,\n\n ...makeVResponsiveProps(),\n ...makeComponentProps(),\n ...makeTransitionProps(),\n}, 'VImg')\n\nexport const VImg = genericComponent<VImgSlots>()({\n name: 'VImg',\n\n directives: { intersect },\n\n props: makeVImgProps(),\n\n emits: {\n loadstart: (value: string | undefined) => true,\n load: (value: string | undefined) => true,\n error: (value: string | undefined) => true,\n },\n\n setup (props, { emit, slots }) {\n const currentSrc = shallowRef('') // Set from srcset\n const image = ref<HTMLImageElement>()\n const state = shallowRef<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = shallowRef<number>()\n const naturalHeight = shallowRef<number>()\n\n const normalisedSrc = computed<srcObject>(() => {\n return props.src && typeof props.src === 'object'\n ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0),\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0),\n }\n })\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value! / naturalHeight.value! || 0\n })\n\n watch(() => props.src, () => {\n init(state.value !== 'idle')\n })\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value)\n }\n })\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init())\n\n function init (isIntersecting?: boolean) {\n if (props.eager && isIntersecting) return\n if (\n SUPPORTS_INTERSECTION &&\n !isIntersecting &&\n !props.eager\n ) return\n\n state.value = 'loading'\n\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = normalisedSrc.value.lazySrc\n pollForSize(lazyImg, null)\n }\n\n if (!normalisedSrc.value.src) return\n\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src)\n\n setTimeout(() => {\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError()\n }\n\n if (state.value === 'error') return\n\n if (!aspectRatio.value) pollForSize(image.value, null)\n if (state.value === 'loading') onLoad()\n } else {\n if (!aspectRatio.value) pollForSize(image.value!)\n getSrc()\n }\n })\n })\n }\n\n function onLoad () {\n getSrc()\n pollForSize(image.value!)\n state.value = 'loaded'\n emit('load', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function onError () {\n state.value = 'error'\n emit('error', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function getSrc () {\n const img = image.value\n if (img) currentSrc.value = img.currentSrc || img.src\n }\n\n let timer = -1\n function pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n clearTimeout(timer)\n const { naturalHeight: imgHeight, naturalWidth: imgWidth } = img\n\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth\n naturalHeight.value = imgHeight\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout)\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1\n naturalHeight.value = 1\n }\n }\n\n poll()\n }\n\n const containClasses = computed(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover,\n }))\n\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null\n\n const img = (\n <img\n class={['v-img__img', containClasses.value]}\n style={{ objectPosition: props.position }}\n src={ normalisedSrc.value.src }\n srcset={ normalisedSrc.value.srcset }\n alt={ props.alt }\n crossorigin={ props.crossorigin }\n referrerpolicy={ props.referrerpolicy }\n draggable={ props.draggable }\n sizes={ props.sizes }\n ref={ image }\n onLoad={ onLoad }\n onError={ onError }\n />\n )\n\n const sources = slots.sources?.()\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n {\n withDirectives(\n sources\n ? <picture class=\"v-img__picture\">{ sources }{ img }</picture>\n : img,\n [[vShow, state.value === 'loaded']]\n )\n }\n </MaybeTransition>\n )\n }\n\n const __preloadImage = () => (\n <MaybeTransition transition={ props.transition }>\n { normalisedSrc.value.lazySrc && state.value !== 'loaded' && (\n <img\n class={['v-img__img', 'v-img__img--preload', containClasses.value]}\n style={{ objectPosition: props.position }}\n src={ normalisedSrc.value.lazySrc }\n alt={ props.alt }\n crossorigin={ props.crossorigin }\n referrerpolicy={ props.referrerpolicy }\n draggable={ props.draggable }\n />\n )}\n </MaybeTransition>\n )\n\n const __placeholder = () => {\n if (!slots.placeholder) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { (state.value === 'loading' || (state.value === 'error' && !slots.error)) &&\n <div class=\"v-img__placeholder\">{ slots.placeholder() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __error = () => {\n if (!slots.error) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { state.value === 'error' &&\n <div class=\"v-img__error\">{ slots.error() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __gradient = () => {\n if (!props.gradient) return null\n\n return <div class=\"v-img__gradient\" style={{ backgroundImage: `linear-gradient(${props.gradient})` }} />\n }\n\n const isBooted = shallowRef(false)\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n stop()\n }\n })\n }\n\n useRender(() => {\n const responsiveProps = VResponsive.filterProps(props)\n return (\n <VResponsive\n class={[\n 'v-img',\n { 'v-img--booting': !isBooted.value },\n props.class,\n ]}\n style={[\n { width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width) },\n props.style,\n ]}\n { ...responsiveProps }\n aspectRatio={ aspectRatio.value }\n aria-label={ props.alt }\n role={ props.alt ? 'img' : undefined }\n v-intersect={[{\n handler: init,\n options: props.options,\n }, null, ['once']]}\n >{{\n additional: () => (\n <>\n <__image />\n <__preloadImage />\n <__gradient />\n <__placeholder />\n <__error />\n </>\n ),\n default: slots.default,\n }}</VResponsive>\n )\n })\n\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight,\n }\n },\n})\n\nexport type VImg = InstanceType<typeof VImg>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VImg.mjs","names":["makeVResponsiveProps","VResponsive","useBackgroundColor","makeComponentProps","makeRoundedProps","useRounded","makeTransitionProps","MaybeTransition","intersect","computed","nextTick","onBeforeMount","ref","shallowRef","toRef","vShow","watch","withDirectives","convertToUnit","genericComponent","propsFactory","SUPPORTS_INTERSECTION","useRender","makeVImgProps","alt","String","cover","Boolean","color","draggable","type","default","undefined","eager","gradient","lazySrc","options","Object","root","rootMargin","threshold","sizes","src","crossorigin","referrerpolicy","srcset","position","VImg","name","directives","props","emits","loadstart","value","load","error","setup","_ref","emit","slots","backgroundColorClasses","backgroundColorStyles","roundedClasses","currentSrc","image","state","naturalWidth","naturalHeight","normalisedSrc","aspect","Number","aspectRatio","init","val","oldVal","pollForSize","isIntersecting","lazyImg","Image","setTimeout","complete","onError","onLoad","getSrc","img","timer","timeout","arguments","length","poll","clearTimeout","imgHeight","imgWidth","window","endsWith","startsWith","containClasses","__image","_createVNode","objectPosition","sources","transition","__preloadImage","__placeholder","placeholder","__error","__gradient","backgroundImage","isBooted","stop","requestAnimationFrame","responsiveProps","filterProps","_withDirectives","_mergeProps","class","width","style","additional","_Fragment","_resolveDirective","handler","once"],"sources":["../../../src/components/VImg/VImg.tsx"],"sourcesContent":["// Styles\nimport './VImg.sass'\n\n// Components\nimport { makeVResponsiveProps, VResponsive } from '@/components/VResponsive/VResponsive'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Utilities\nimport {\n computed,\n nextTick,\n onBeforeMount,\n ref,\n shallowRef,\n toRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n propsFactory,\n SUPPORTS_INTERSECTION,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src?: string\n srcset?: string\n lazySrc?: string\n aspect: number\n}\n\nexport type VImgSlots = {\n default: never\n placeholder: never\n error: never\n sources: never\n}\n\nexport const makeVImgProps = propsFactory({\n alt: String,\n cover: Boolean,\n color: String,\n draggable: {\n type: [Boolean, String] as PropType<boolean | 'true' | 'false'>,\n default: undefined,\n },\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object as PropType<IntersectionObserverInit>,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n sizes: String,\n src: {\n type: [String, Object] as PropType<string | srcObject>,\n default: '',\n },\n crossorigin: String as PropType<'' | 'anonymous' | 'use-credentials'>,\n referrerpolicy: String as PropType<\n | 'no-referrer'\n | 'no-referrer-when-downgrade'\n | 'origin'\n | 'origin-when-cross-origin'\n | 'same-origin'\n | 'strict-origin'\n | 'strict-origin-when-cross-origin'\n | 'unsafe-url'\n >,\n srcset: String,\n position: String,\n\n ...makeVResponsiveProps(),\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeTransitionProps(),\n}, 'VImg')\n\nexport const VImg = genericComponent<VImgSlots>()({\n name: 'VImg',\n\n directives: { intersect },\n\n props: makeVImgProps(),\n\n emits: {\n loadstart: (value: string | undefined) => true,\n load: (value: string | undefined) => true,\n error: (value: string | undefined) => true,\n },\n\n setup (props, { emit, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { roundedClasses } = useRounded(props)\n\n const currentSrc = shallowRef('') // Set from srcset\n const image = ref<HTMLImageElement>()\n const state = shallowRef<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = shallowRef<number>()\n const naturalHeight = shallowRef<number>()\n\n const normalisedSrc = computed<srcObject>(() => {\n return props.src && typeof props.src === 'object'\n ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0),\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0),\n }\n })\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value! / naturalHeight.value! || 0\n })\n\n watch(() => props.src, () => {\n init(state.value !== 'idle')\n })\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value)\n }\n })\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init())\n\n function init (isIntersecting?: boolean) {\n if (props.eager && isIntersecting) return\n if (\n SUPPORTS_INTERSECTION &&\n !isIntersecting &&\n !props.eager\n ) return\n\n state.value = 'loading'\n\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = normalisedSrc.value.lazySrc\n pollForSize(lazyImg, null)\n }\n\n if (!normalisedSrc.value.src) return\n\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src)\n\n setTimeout(() => {\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError()\n }\n\n if (state.value === 'error') return\n\n if (!aspectRatio.value) pollForSize(image.value, null)\n if (state.value === 'loading') onLoad()\n } else {\n if (!aspectRatio.value) pollForSize(image.value!)\n getSrc()\n }\n })\n })\n }\n\n function onLoad () {\n getSrc()\n pollForSize(image.value!)\n state.value = 'loaded'\n emit('load', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function onError () {\n state.value = 'error'\n emit('error', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function getSrc () {\n const img = image.value\n if (img) currentSrc.value = img.currentSrc || img.src\n }\n\n let timer = -1\n function pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n clearTimeout(timer)\n const { naturalHeight: imgHeight, naturalWidth: imgWidth } = img\n\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth\n naturalHeight.value = imgHeight\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout)\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1\n naturalHeight.value = 1\n }\n }\n\n poll()\n }\n\n const containClasses = computed(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover,\n }))\n\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null\n\n const img = (\n <img\n class={['v-img__img', containClasses.value]}\n style={{ objectPosition: props.position }}\n src={ normalisedSrc.value.src }\n srcset={ normalisedSrc.value.srcset }\n alt={ props.alt }\n crossorigin={ props.crossorigin }\n referrerpolicy={ props.referrerpolicy }\n draggable={ props.draggable }\n sizes={ props.sizes }\n ref={ image }\n onLoad={ onLoad }\n onError={ onError }\n />\n )\n\n const sources = slots.sources?.()\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n {\n withDirectives(\n sources\n ? <picture class=\"v-img__picture\">{ sources }{ img }</picture>\n : img,\n [[vShow, state.value === 'loaded']]\n )\n }\n </MaybeTransition>\n )\n }\n\n const __preloadImage = () => (\n <MaybeTransition transition={ props.transition }>\n { normalisedSrc.value.lazySrc && state.value !== 'loaded' && (\n <img\n class={['v-img__img', 'v-img__img--preload', containClasses.value]}\n style={{ objectPosition: props.position }}\n src={ normalisedSrc.value.lazySrc }\n alt={ props.alt }\n crossorigin={ props.crossorigin }\n referrerpolicy={ props.referrerpolicy }\n draggable={ props.draggable }\n />\n )}\n </MaybeTransition>\n )\n\n const __placeholder = () => {\n if (!slots.placeholder) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { (state.value === 'loading' || (state.value === 'error' && !slots.error)) &&\n <div class=\"v-img__placeholder\">{ slots.placeholder() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __error = () => {\n if (!slots.error) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { state.value === 'error' &&\n <div class=\"v-img__error\">{ slots.error() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __gradient = () => {\n if (!props.gradient) return null\n\n return <div class=\"v-img__gradient\" style={{ backgroundImage: `linear-gradient(${props.gradient})` }} />\n }\n\n const isBooted = shallowRef(false)\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n stop()\n }\n })\n }\n\n useRender(() => {\n const responsiveProps = VResponsive.filterProps(props)\n return (\n <VResponsive\n class={[\n 'v-img',\n { 'v-img--booting': !isBooted.value },\n backgroundColorClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n { width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width) },\n backgroundColorStyles.value,\n props.style,\n ]}\n { ...responsiveProps }\n aspectRatio={ aspectRatio.value }\n aria-label={ props.alt }\n role={ props.alt ? 'img' : undefined }\n v-intersect={[{\n handler: init,\n options: props.options,\n }, null, ['once']]}\n >{{\n additional: () => (\n <>\n <__image />\n <__preloadImage />\n <__gradient />\n <__placeholder />\n <__error />\n </>\n ),\n default: slots.default,\n }}</VResponsive>\n )\n })\n\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight,\n }\n },\n})\n\nexport type VImg = InstanceType<typeof VImg>\n"],"mappings":"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"}
@@ -8,6 +8,9 @@
8
8
  &--booting .v-responsive__sizer
9
9
  transition: none
10
10
 
11
+ &--rounded
12
+ @include tools.rounded($img-rounded-border-radius)
13
+
11
14
  .v-img__img,
12
15
  .v-img__picture,
13
16
  .v-img__gradient,
@@ -1,3 +1,6 @@
1
+ @use '../../styles/settings';
2
+
1
3
  // Defaults
4
+ $img-rounded-border-radius: settings.$border-radius-root !default;
2
5
  $img-preload-filter: blur(4px) !default;
3
6
  $img-card-media-height: 200px !default;
@@ -26,6 +26,7 @@ declare const VImg: {
26
26
  options: IntersectionObserverInit;
27
27
  cover: boolean;
28
28
  src: string | srcObject;
29
+ rounded: string | number | boolean;
29
30
  }> & Omit<{
30
31
  inline: boolean;
31
32
  transition: string | boolean | (vue.TransitionProps & {
@@ -39,6 +40,7 @@ declare const VImg: {
39
40
  height?: string | number | undefined;
40
41
  width?: string | number | undefined;
41
42
  aspectRatio?: string | number | undefined;
43
+ color?: string | undefined;
42
44
  maxHeight?: string | number | undefined;
43
45
  maxWidth?: string | number | undefined;
44
46
  minHeight?: string | number | undefined;
@@ -52,6 +54,7 @@ declare const VImg: {
52
54
  sizes?: string | undefined;
53
55
  srcset?: string | undefined;
54
56
  contentClass?: string | undefined;
57
+ rounded?: string | number | boolean | undefined;
55
58
  gradient?: string | undefined;
56
59
  lazySrc?: string | undefined;
57
60
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
@@ -87,6 +90,7 @@ declare const VImg: {
87
90
  height?: string | number | undefined;
88
91
  width?: string | number | undefined;
89
92
  aspectRatio?: string | number | undefined;
93
+ color?: string | undefined;
90
94
  maxHeight?: string | number | undefined;
91
95
  maxWidth?: string | number | undefined;
92
96
  minHeight?: string | number | undefined;
@@ -100,6 +104,7 @@ declare const VImg: {
100
104
  sizes?: string | undefined;
101
105
  srcset?: string | undefined;
102
106
  contentClass?: string | undefined;
107
+ rounded?: string | number | boolean | undefined;
103
108
  gradient?: string | undefined;
104
109
  lazySrc?: string | undefined;
105
110
  } & {
@@ -124,7 +129,7 @@ declare const VImg: {
124
129
  onError?: ((value: string | undefined) => any) | undefined;
125
130
  onLoad?: ((value: string | undefined) => any) | undefined;
126
131
  onLoadstart?: ((value: string | undefined) => any) | undefined;
127
- }, "inline" | "transition" | "style" | "draggable" | "eager" | "options" | "cover" | "src">;
132
+ }, "inline" | "transition" | "style" | "draggable" | "eager" | "options" | "cover" | "src" | "rounded">;
128
133
  $attrs: {
129
134
  [x: string]: unknown;
130
135
  };
@@ -163,6 +168,7 @@ declare const VImg: {
163
168
  height?: string | number | undefined;
164
169
  width?: string | number | undefined;
165
170
  aspectRatio?: string | number | undefined;
171
+ color?: string | undefined;
166
172
  maxHeight?: string | number | undefined;
167
173
  maxWidth?: string | number | undefined;
168
174
  minHeight?: string | number | undefined;
@@ -176,6 +182,7 @@ declare const VImg: {
176
182
  sizes?: string | undefined;
177
183
  srcset?: string | undefined;
178
184
  contentClass?: string | undefined;
185
+ rounded?: string | number | boolean | undefined;
179
186
  gradient?: string | undefined;
180
187
  lazySrc?: string | undefined;
181
188
  } & {
@@ -221,6 +228,7 @@ declare const VImg: {
221
228
  options: IntersectionObserverInit;
222
229
  cover: boolean;
223
230
  src: string | srcObject;
231
+ rounded: string | number | boolean;
224
232
  }, {}, string, vue.SlotsType<Partial<{
225
233
  default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
226
234
  [key: string]: any;
@@ -268,6 +276,7 @@ declare const VImg: {
268
276
  height?: string | number | undefined;
269
277
  width?: string | number | undefined;
270
278
  aspectRatio?: string | number | undefined;
279
+ color?: string | undefined;
271
280
  maxHeight?: string | number | undefined;
272
281
  maxWidth?: string | number | undefined;
273
282
  minHeight?: string | number | undefined;
@@ -281,6 +290,7 @@ declare const VImg: {
281
290
  sizes?: string | undefined;
282
291
  srcset?: string | undefined;
283
292
  contentClass?: string | undefined;
293
+ rounded?: string | number | boolean | undefined;
284
294
  gradient?: string | undefined;
285
295
  lazySrc?: string | undefined;
286
296
  } & {
@@ -329,6 +339,7 @@ declare const VImg: {
329
339
  height?: string | number | undefined;
330
340
  width?: string | number | undefined;
331
341
  aspectRatio?: string | number | undefined;
342
+ color?: string | undefined;
332
343
  maxHeight?: string | number | undefined;
333
344
  maxWidth?: string | number | undefined;
334
345
  minHeight?: string | number | undefined;
@@ -342,6 +353,7 @@ declare const VImg: {
342
353
  sizes?: string | undefined;
343
354
  srcset?: string | undefined;
344
355
  contentClass?: string | undefined;
356
+ rounded?: string | number | boolean | undefined;
345
357
  gradient?: string | undefined;
346
358
  lazySrc?: string | undefined;
347
359
  } & {
@@ -387,6 +399,7 @@ declare const VImg: {
387
399
  options: IntersectionObserverInit;
388
400
  cover: boolean;
389
401
  src: string | srcObject;
402
+ rounded: string | number | boolean;
390
403
  }, {}, string, vue.SlotsType<Partial<{
391
404
  default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
392
405
  [key: string]: any;
@@ -408,6 +421,10 @@ declare const VImg: {
408
421
  default: string;
409
422
  validator: (val: unknown) => boolean;
410
423
  };
424
+ rounded: {
425
+ type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
426
+ default: undefined;
427
+ };
411
428
  class: PropType<any>;
412
429
  style: {
413
430
  type: PropType<vue.StyleValue>;
@@ -424,6 +441,7 @@ declare const VImg: {
424
441
  inline: BooleanConstructor;
425
442
  alt: StringConstructor;
426
443
  cover: BooleanConstructor;
444
+ color: StringConstructor;
427
445
  draggable: {
428
446
  type: PropType<boolean | "false" | "true">;
429
447
  default: undefined;
@@ -456,6 +474,10 @@ declare const VImg: {
456
474
  default: string;
457
475
  validator: (val: unknown) => boolean;
458
476
  };
477
+ rounded: {
478
+ type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
479
+ default: undefined;
480
+ };
459
481
  class: PropType<any>;
460
482
  style: {
461
483
  type: PropType<vue.StyleValue>;
@@ -472,6 +494,7 @@ declare const VImg: {
472
494
  inline: BooleanConstructor;
473
495
  alt: StringConstructor;
474
496
  cover: BooleanConstructor;
497
+ color: StringConstructor;
475
498
  draggable: {
476
499
  type: PropType<boolean | "false" | "true">;
477
500
  default: undefined;