Merge PR #4410: إصلاح placeholder التاريخ الميلادي

إصلاح placeholder التاريخ الميلادي - تطبيقه بعد تهيئة datetimepicker widget
This commit is contained in:
Mohamed Eltayar 2025-08-29 02:25:25 +03:00 committed by GitHub
commit 8c0d42777b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 39 additions and 3 deletions

View File

@ -35,7 +35,7 @@ odoo.define('web_hijri_datepicker.datepicker', function (require) {
this.$input = this.$('input.o_datepicker_input');
this.$input_hijri = this.$('input.o_hijri');
// إضافة placeholders ديناميكية حسب اللغة
// تحديد اللغة
var locale = this.options.locale || 'en';
var userLang = (odoo.session_info && odoo.session_info.user_context && odoo.session_info.user_context.lang) || 'en_US';
@ -49,8 +49,11 @@ odoo.define('web_hijri_datepicker.datepicker', function (require) {
hijriPlaceholder = 'Hijri Date';
}
// تطبيق placeholders على الحقول
this.$input.attr('placeholder', gregorianPlaceholder);
// حفظ placeholders للاستخدام لاحقاً
this.gregorianPlaceholder = gregorianPlaceholder;
this.hijriPlaceholder = hijriPlaceholder;
// تطبيق placeholder للتاريخ الهجري
this.$input_hijri.attr('placeholder', hijriPlaceholder);
this.$input_hijri.click(function (e) {
@ -63,11 +66,36 @@ odoo.define('web_hijri_datepicker.datepicker', function (require) {
closeOnDateSelect: false,
onSelect: this._convertDateToHijri.bind(this),
});
// تهيئة datetimepicker
this.__libInput++;
this.$el.datetimepicker(this.options);
this.__libInput--;
// تطبيق placeholder للتاريخ الميلادي بعد تهيئة datetimepicker
// نستخدم setTimeout لضمان تطبيقه بعد أي تغييرات من datetimepicker
setTimeout(function() {
self.$input.attr('placeholder', gregorianPlaceholder);
}, 0);
// إعادة تطبيق placeholder عند فقدان التركيز
this.$input.on('blur', function() {
if (!$(this).val()) {
$(this).attr('placeholder', gregorianPlaceholder);
}
});
this._setReadonly(false);
},
changeDatetime: function () {
this._super.apply(this, arguments);
// إعادة تطبيق placeholder بعد تغيير التاريخ
if (this.gregorianPlaceholder && !this.$input.val()) {
this.$input.attr('placeholder', this.gregorianPlaceholder);
}
},
_convertGregorianToHijri: function (date) {
var year, month, day, jd, formatted_date;
var calendar = $.calendars.instance('islamic');
@ -115,6 +143,14 @@ odoo.define('web_hijri_datepicker.datepicker', function (require) {
var parsed_date = value ? this._parseDate(value) : null;
var hijri_value = parsed_date ? this._convertGregorianToHijri(parsed_date) : null;
this.$input_hijri.val(hijri_value);
// إعادة تطبيق placeholders عند مسح القيم
if (!value && this.gregorianPlaceholder) {
this.$input.attr('placeholder', this.gregorianPlaceholder);
}
if (!hijri_value && this.hijriPlaceholder) {
this.$input_hijri.attr('placeholder', this.hijriPlaceholder);
}
},
destroy: function () {
if (this.$el) {