پرش به مطلب اصلی

Image Picker

کامپوننت x-image-picker یک ورودی پیشرفته برای انتخاب و آپلود تصویر در فرم‌ها است که امکاناتی مانند کراپ (برش)، محدودیت نوع و حجم، کنترل ابعاد و نسبت تصویر، پیش‌نمایش، حذف و جایگزینی، فقط‌خواندنی، شخصی‌سازی ظاهر و ... را ارائه می‌دهد.


ویژگی‌ها

  • فقط انتخاب تصاویر (فرمت‌های رایج مانند jpg, png, webp, svg, ... پشتیبانی می‌شود)
  • محدودیت پسوندهای مجاز (allowedExtensions) و غیرمجاز (disallowedExtensions) فقط برای تصاویر
  • محدودیت حجم فایل (حداقل و حداکثر) (minSize, maxSize)
  • محدودیت ابعاد تصویر (minWidth, maxWidth, minHeight, maxHeight)
  • محدودیت نسبت تصویر (minAspectRatio, maxAspectRatio, aspectRatio)
  • قابلیت کراپ تصویر قبل از آپلود (cropper, forceCropping, allowRecropping)
  • کنترل کیفیت تصویر (quality)
  • امکان تغییر نام فایل هنگام آپلود (allowRename)
  • قابلیت فقط‌خواندنی (readonly)
  • قابلیت پاک‌کردن تصویر انتخاب‌شده (clearable)
  • شخصی‌سازی کلاس کانتینر پیش‌نمایش (previewContainerClass)
  • تعیین ارتفاع ناحیه آپلود (uploadZoneHeight)
  • کنترل نحوه نمایش تصویر (fit: cover/contain)
  • تعیین حداکثر طول نام فایل (fileNameMaxLength)
  • نمایش پیام راهنما هنگام غیرفعال بودن (disabledTooltip)
  • پشتیبانی از پیام راهنما (hint)
  • پشتیبانی از لیبل و فضای رزرو لیبل (label, labelSpaceReserved)
  • کنترل نمایش پیام‌های منطقی (suppressLogicMessages)
  • استایل و نوع پیام پیش‌فرض (messageStyle, defaultMessageType)

ورودی‌های کامپوننت

نام پراپنوع دادهمقدار پیش‌فرضتوضیحات
namestringنام فیلد (اجباری)
labelstringnullلیبل اصلی
labelSpaceReservedboolfalseآیا فضای لیبل حتی بدون مقدار رزرو شود؟
idstringnullشناسه یکتا برای ورودی
classstringnullکلاس CSS سفارشی برای خود ورودی
containerClassstringnullکلاس CSS سفارشی برای کانتینر
allowedExtensionsstringهمه فرمت‌های تصویرپسوندهای مجاز (مثال: "jpg,png,webp")
disallowedExtensionsstringnullپسوندهای غیرمجاز (مثال: "svg")
minSizeintnullحداقل حجم فایل (کیلوبایت)
maxSizeintnullحداکثر حجم فایل (کیلوبایت)
defaultMessagestringپیام پیش‌فرضپیام پیش‌فرض برای نمایش
messageStylestring/enum"message"استایل نمایش پیام (message, tooltip, ...)
defaultMessageTypestring/enum"info"نوع پیام پیش‌فرض (info, error, success, ...)
hintstringnullپیام راهنما یا توضیح کوتاه
suppressLogicMessagesboolfalseعدم نمایش پیام‌های منطقی
requiredboolfalseاجباری بودن فیلد
previewContainerClassstringnullکلاس سفارشی برای کانتینر پیش‌نمایش تصویر
srcint, string, object, nullnullمقدار اولیه (آیدی یا مدل فایل)
clearablebooltrueامکان پاک‌کردن تصویر انتخاب‌شده
readonlyboolfalseفقط‌خواندنی بودن ورودی
allowRenameboolfalseامکان تغییر نام فایل هنگام آپلود
cropperboolfalseفعال‌سازی کراپ تصویر
forceCroppingboolfalseاجبار به کراپ قبل از آپلود
allowRecroppingboolfalseاجازه کراپ مجدد
qualityfloat0.75کیفیت تصویر (۰ تا ۱)
maxWidthintnullحداکثر عرض تصویر (پیکسل)
maxHeightintnullحداکثر ارتفاع تصویر (پیکسل)
minWidthintnullحداقل عرض تصویر (پیکسل)
minHeightintnullحداقل ارتفاع تصویر (پیکسل)
minAspectRatiofloatnullحداقل نسبت تصویر (مثال: 1.5)
maxAspectRatiofloatnullحداکثر نسبت تصویر (مثال: 2)
aspectRatiofloatnullنسبت تصویر ثابت (مثال: 1 برای مربع)
uploadZoneHeightstringnullارتفاع ناحیه آپلود (مثال: "120px")
fitstring"cover"نحوه نمایش تصویر (cover, contain)
fileNameMaxLengthintnullحداکثر طول نام فایل
disabledboolfalseغیرفعال بودن ورودی
disabledTooltipstringnullپیام راهنما هنگام غیرفعال بودن ورودی
headerstringnullمتن دلخواه بالای ورودی
compactModebooleanfalseتغییر استایل آپلودر به حالت کوچکتر مشابه file-picker

رویداد سفارشی change

با توجه به ساختار پیاده‌سازی شده برای کامپوننت x-image-picker، رویداد جداگانه‌ای برای اطلاع از تغییرات فایل‌ها در کامپوننت فراهم شده است که می‌توانید به صورت زیر از آن استفاده کنید.

$("#image-picker").on("image-picker:change", function (e, data) {
console.log(data); // شامل فایل‌های انتخاب شده
});

مقداردهی با جاوااسکریپت

برای مقداردهی یا تغییر مقدار کامپوننت x-image-picker به صورت داینامیک با جاوااسکریپت، می‌توانید از متد زیر استفاده کنید:

imagePickerInstance.setValue({
key: "image-key" // FILE ID,
name: "image.jpg",
src: "https://example.com/image.jpg",
size: 50000,
extension: "jpg",
});
هشدار

در صورتی که مقداردهی پراپ src به وسیله یک آدرس اینترنتی (url) انجام شود، برخی امکانات نظیر حذف یا ویرایش تصویر به درستی عمل نخواهند کرد. توصیه می‌شود برای عملکرد کاملِ کامپوننت، مقدار src را به صورت آیدی یا مدل فایل تنظیم کنید.

توجه

برای initialize کردن کامپوننت با مقادیر جدید میتوان به شکل زیر عمل کرد.

const imagePickerElement = $('#slectorId');

const pickerInstance = imagePickerElement.getInstance();

pickerInstance?.resetValue();

imagePickerElement.data({
'allowed-extensions': allowed_extensions,
'max-size': max_size
})

initializeImagePicker("#slectorId");

pickerInstance?.updateHelper({max_size, allowed_extensions});

مثال‌ها

نمونه پایه

<x-image-picker
label="انتخاب تصویر"
name="images3"
container-class="col-md-6"
hint="بدون cropper و با recropping"
:force-cropping="true"
accept=".png"
:cropper="false"
:allow-recropping="true"
/>