إصدار Livewire 4.4.3 يصلح حالات `wire:loading` والـ URL والاختبارات
يتضمن Livewire 4.4.3 مجموعة إصلاحات وتحسينات لسلسلة 4.x، أبرزها استعادة attributes وclasses الأصلية بعد `wire:loading`، دعم مدد بالدقائق في `wire:poll`، وتحسين إظهار أخطاء `TypeError` في اختبارات Livewire عبر إصدارات Laravel المختلفة. الإصدار يهم مطوري Laravel الذين يستخدمون ميزات التفاعل والـ islands والـ lazy components.
أبرز النقاط
- يعيد `wire:loading` الـ attributes والـ classes الأصلية بعد انتهاء التحميل.
- أصبح `wire:poll` يدعم تحديد الفواصل الزمنية بالدقائق.
- يحسن الإصدار إظهار أخطاء `TypeError` في اختبارات Livewire عبر إصدارات Laravel المختلفة.
- أُصلحت إعادة ضبط خصائص Form غير المهيأة والحفاظ على السلاسل المركبة في URL properties.
- يتضمن الإصدار تحسينات للـ islands والـ lazy components وتحميل script modules.
- تم التراجع عن دعم exception hook للـ computed properties.
يركز إصدار Livewire 4.4.3 على إصلاحات سلوكية وحالات طرفية في تطبيقات Laravel التفاعلية، بدلاً من تقديم ميزة كبيرة منفصلة.
من أبرز التغييرات إصلاح تعامل wire:loading مع عناصر الواجهة، بحيث يعيد Livewire الـ attributes والـ classes الموجودة سابقاً بعد انتهاء حالة التحميل. وهذا مهم للواجهات التي تعتمد على classes ديناميكية أو attributes مخصصة بجانب حالة التحميل.
كما أصبح wire:poll يدعم تحديد المدد بالدقائق، وأضيفت إمكانية استخدام $attributes داخل placeholder view الخاص بـ lazy component. ويحمل الإصدار أيضاً إصلاحاً لـ wire:sort:item عندما تُضاف الـ attributes في وقت متأخر.
تحسينات للاختبارات وحالة المكوّنات
يحسن الإصدار طريقة ظهور أخطاء TypeError التي تقع أثناء اختبارات Livewire، مع معالجة تهدف إلى تمرير الاستثناءات بصورة آمنة عبر إصدارات Laravel المختلفة. كذلك أصلح إعادة ضبط خصائص Form غير المهيأة، وحافظ على السلاسل النصية المركبة عند استخدامها في URL properties.
على مستوى rendering، يشارك Livewire instance الخاص بالمكوّن مع الـ views أثناء island render، ويعالج حالات بقاء الـ islands بعد nested Blade directives. كما يتضمن إصلاحاً لتنظيف render listener في SupportPageComponents عند تخطي الـ render أو وقوع استثناء.
تحميل الوحدات وسلوك الواجهة
يتضمن 4.4.3 تغييرات مرتبطة بتحميل script modules: تعليق أشجار المكوّنات إلى أن تُحمّل الوحدات المطلوبة، وبدء جلب تلك الوحدات قبل أن تحتاجها الصفحة. وأضاف أيضاً توقيتاً للرؤية المستمرة في wire:intersect، إلى جانب إصلاح انتقالات wire:transition التي قد تُتخطى بعد الإغلاق التلقائي لـ Flux toast.
ومن التعديلات الأخرى عدم تضمين redirect responses في تأثير returns، وإعادة استخدام الـ models التي تم حلها بين الخصائص، والحفاظ على اشتراك wire:dirty في كل targets، مع تحضير Livewire 4.x لـ Alpine 3.17.1.
الإصدار يتراجع أيضاً عن دعم exception hook للـ computed properties. يمكن لمطوري Livewire مراجعة التغييرات الكاملة بين v4.4.2 وv4.4.3 قبل التحديث، خصوصاً إن كانت تطبيقاتهم تعتمد على computed properties أو سلوك الاستثناءات في الاختبارات.
لماذا يهم؟
الإصدار مهم للتطبيقات التي تعتمد بكثافة على تفاعلات Livewire، لأن إصلاحاته تمس حالات واجهة شائعة مثل `wire:loading` و`wire:dirty` و`wire:poll`، إضافة إلى قابلية تشخيص أخطاء الاختبارات. ويستحسن الانتباه إلى التراجع المتعلق بـ computed properties عند الترقية.