حقل أساسي
class BasicFieldSampleWidget extends NGSWidget {
/* قالب HTML الذي سيتم إنشاؤه قبل إنشاء الفئة
ستتم إضافة لاحقة uniqueId إلى جميع المعرفات وأسماء فئات CSS
المقدمة أثناء إنشاء الودجة */
static get template() {
return `
<ngs-label></ngs-label>
<div class="ngs-widget-field-container">
<input class="ngs-question__answer-field" type="text" id="myField">
<textarea rows="{{height}}" class="ngs-question__answer-field ngs-question__answer-field-comment"></textarea>
</div>
`;
}
/* الأنماط التي سيتم تعيينها لهذه الودجة، لاحظ أن أسماء فئات
العناصر سيتم تحديد نطاقها باستخدام المعرف الفريد للودجة */
static get style() {
return `.ngs-widget-field-container {display:flex;flex-direction:row;align-items:center} .flex-auto{flex:1 1 auto}`
}
/* هل تدعم هذه الودجة التسمية؛ التسمية هي النص الذي
يمكن لمسؤول النموذج إدخاله باستخدام مصمم النموذج ويمكن حقنه في
القالب باستخدام الوسم <ngs-label></ngs-label>
*/
static get hasLabel() {
return true;
}
/* يسمح بجعل الإجابة مطلوبة أو لا
من صفحة إعدادات الإجابة لجعل
إجابة الودجة مطلوبة أثناء الاستبيان */
static get required() {
return true;
}
/* الخصائص التي يمكن تعيينها من مصمم النموذج لكل
إجابة تستخدم هذه الودجة كنمط إجابة في خصائص الإجابة */
static get propertiesDef() {
return [{
id: 'height',
label: 'height',
defaultValue: '1',
type: 'text'
}];
}
init() {
// الحصول على عنصر الإدخال من القالب
this.inputField = this.widgetQuerySelector('.ngs-question__answer-field');
this.inputTextArea = this.widgetQuerySelector('.ngs-question__answer-field-comment');
// يمكننا الحصول على تغييرات قيم الخصائص في أي وقت
this.getProperties$(prop => {
this.inputField.style.display = prop.height > 1 ? 'none' : 'block';
this.inputTextArea.style.display = prop.height > 1 ? 'block' : 'none';
});
// الحصول على وضع العرض الحالي لمعرفة كيفية
// إعداد الحالة هنا وجعلها معطلة إذا
// كانت الودجة في وضع القراءة فقط
this.isDisabled$(disabled => {
this.inputField.disabled = disabled;
});
// الحصول على القيمة الحالية للودجة
this.getValue$(value => {
this.inputField.value = value;
this.inputTextArea.value = value;
});
// تعيين القيمة الابتدائية عند إنشاء الودجة
if (this.initialValue) {
this.inputField.value = this.initialValue;
this.inputTextArea.value = this.initialValue;
}
// إذا غيّر المستخدم النص تأكد من حفظ القيمة
// في النموذج
this.inputField.addEventListener('input', (event) => {
this.textChanged(this.inputField.value, this);
});
this.inputTextArea.addEventListener('input', (event) => {
this.textChanged(this.inputTextArea.value, this);
});
}
// إرسال القيمة إلى النموذج
textChanged(value, widget) {
if (widget.inputField && widget.inputField.style.display == 'block') {
widget.setAnswer(this.inputField.value);
} else if (widget.inputTextArea && widget.inputTextArea.style.display == 'block') {
widget.setAnswer(this.inputTextArea.value);
}
}
// سيتم استدعاؤها بواسطة النموذج
// لمعرفة ما إذا كانت القيمة صالحة
// إذا لم تكن صالحة يجب إرجاع '' (لا يتم عرض رسالة خطأ) أو رسالة الخطأ لعرضها
// إذا كانت صالحة أعد null
isValid() {
if ((this.inputField && this.inputField.style.display == 'block' && this.inputField.value && this.inputField.value != 'ngsurvey') ||
(this.inputTextArea && this.inputTextArea.style.display == 'block' && this.inputTextArea.value && this.inputTextArea.value != 'ngsurvey')) {
return 'Value must be equal to ngsurvey';
} else {
return null;
}
}
}
Last updated
Was this helpful?