الانتقال إلى المحتوى
القائمة
اللغة، حاليًا العربية
EnglishGaeilge简体中文Españolहिन्दीPortuguêsবাংলাРусский日本語廣東話Tiếng Việtالعربية

نظام تصميم rastrillo

نظرة عامة على كل ما يوفّره نظام التصميم. السمة: day. اللغة: العربية.

النموذج

كل عنصر تحكّم، في الحالات التي يضعه فيها نموذج حقيقي. وكلٌّ منها داخل ‎rst-box‎ ذي حشو، لأن هذه هي القاعدة التي تفترضها هذه الأجزاء.

عناصر واجهة جاهزة ومتّسقة فيما بينها، تُبنى في الخادم.

مفردات إطار العمل نفسه تسمّيها partials: تُرجع ui.Templates() قيم partials، ويوثّقها docs/site/templates.md بهذا الاسم. تغيّرت الكلمة في هذه الصفحة، ولم تتغيّر في الشيفرة.

الروابط هنا غير مفعّلة

الروابط غير مفعّلة، ومصدر العيّنة متاح.

كل عيّنة أدناه داخل إطارها الخاص.

محتوى العيّنات بالإنجليزية. أمّا أغلفة العيّنات فمترجمة.

field

تسمية وحقل إدخال وتلميح اختياري وشرح وخطأ. عنصر التحكّم النصّي العام، بمعرّف صريح.

مجرّد

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field><label rst-field-label for="f_bare">Title</label>
<input rst-input type="text" id="f_bare" name="f_bare">
</div></form></section>

مع تلميح

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field><label rst-field-label for="f_hint">Slug <span rst-field-hint>(lowercase, no spaces)</span></label>
<input rst-input type="text" id="f_hint" name="f_hint">
</div></form></section>

مع مساعدة أسفل عنصر التحكّم

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field><label rst-field-label for="f_help">Email</label>
<input rst-input type="email" id="f_help" name="f_help" autocomplete="email" aria-describedby="f_help-help">
<p rst-field-help id="f_help-help">We only use this to send you replies.</p>
</div></form></section>

مطلوب

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field><label rst-field-label for="f_required">Full name</label>
<input rst-input type="text" id="f_required" name="f_required" required>
</div></form></section>

مع خطأ

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field><label rst-field-label for="f_error">Email</label>
<input rst-input type="email" id="f_error" name="f_error" value="grace@" aria-invalid="true" aria-describedby="f_error-error">
<p rst-field-error id="f_error-error" role="alert">That does not look like an email address.</p>
</div></form></section>

قصير

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field><label rst-field-label for="f_short">Postcode</label>
<input rst-input="short" type="text" id="f_short" name="f_short" value="D02 XY45">
</div></form></section>

الحقل الرئيسي

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field><label rst-field-label for="f_primary">Title</label>
<input rst-input="primary" type="text" id="f_primary" name="f_primary" value="Quarterly board meeting">
</div></form></section>

field-text

حقل نصّي واحد بتسمية، والمعرّفات مشتقّة من Name. نجمة علامة الإلزام تحمل aria-hidden، والإشارة البرمجية هي السمة required على الحقل.

مجرّد

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field>
  <label rst-field-label for="ft_bare">Title</label>
  <input rst-input id="ft_bare" name="ft_bare" type="text">
</div></form></section>

مع تلميح

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field>
  <label rst-field-label for="ft_hint">Headline</label>
  <input rst-input id="ft_hint" name="ft_hint" type="text" aria-describedby="ft_hint-hint">
  <small rst-field-hint id="ft_hint-hint">Shown in the list.</small>
</div></form></section>

مطلوب

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field>
  <label rst-field-label for="ft_required">Display name <span rst-field-required aria-hidden="true">*</span></label>
  <input rst-input id="ft_required" name="ft_required" type="text" autocomplete="nickname" required>
</div></form></section>

مع خطأ

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field>
  <label rst-field-label for="ft_error">Title</label>
  <input rst-input id="ft_error" name="ft_error" type="text" value="Release notes" aria-invalid="true" aria-describedby="ft_error-error">
  <small rst-field-error id="ft_error-error">A post with that title already exists.</small>
</div></form></section>

الحقل الرئيسي

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field>
  <label rst-field-label for="ft_primary">What is it?</label>
  <input rst-input="primary" id="ft_primary" name="ft_primary" type="text" value="Quarterly board meeting">
</div></form></section>

أضف Primary إلى الحقل الرئيسي في النموذج، مثل عنوان أو اسم، للحصول على حقل إدخال أكثر بروزًا.

field-textarea

غلاف field-text حول عنصر textarea.

مجرّد

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field>
  <label rst-field-label for="ta_bare">Notes</label>
  <textarea rst-textarea id="ta_bare" name="ta_bare" rows="3"></textarea>
</div></form></section>

مع تلميح

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field>
  <label rst-field-label for="ta_hint">Bio</label>
  <textarea rst-textarea id="ta_hint" name="ta_hint" rows="3" aria-describedby="ta_hint-hint"></textarea>
  <small rst-field-hint id="ta_hint-hint">Shown on your profile.</small>
</div></form></section>

مع خطأ

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field>
  <label rst-field-label for="ta_error">Summary</label>
  <textarea rst-textarea id="ta_error" name="ta_error" rows="3" aria-invalid="true" aria-describedby="ta_error-error">…</textarea>
  <small rst-field-error id="ta_error-error">A summary needs at least twenty characters.</small>
</div></form></section>

مطلوب

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field>
  <label rst-field-label for="ta_required">Reason for refund <span rst-field-required aria-hidden="true">*</span></label>
  <textarea rst-textarea id="ta_required" name="ta_required" rows="3" required></textarea>
</div></form></section>

field-select

غلاف field حول عنصر select أصلي. فإذا تجاوزت الخيارات عشرة فعّل الـ select صندوق التحرير والسرد القابل للتصفية في ‎select.js‎؛ ومع ذلك يظل ما يرسله النموذج هو الـ select الأصلي.

ثلاثة خيارات: عنصر select الأصلي

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field><label rst-field-label for="sel_few">Role</label>
<select rst-input id="sel_few" name="sel_few"><option value="Admin" selected>Admin</option><option value="Editor">Editor</option><option value="Member">Member</option></select>
</div></form></section>

اثنا عشر خيارًا: مربّع الاختيار القابل للتصفية

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field><label rst-field-label for="sel_many">City</label>
<select rst-input id="sel_many" name="sel_many" data-rst-select data-rst-select-filter="اكتب للتصفية" data-rst-select-results="{n} نتائج" data-rst-select-result-one="نتيجة واحدة" aria-describedby="sel_many-help"><option value="Dublin" selected>Dublin</option><option value="Lisbon">Lisbon</option><option value="Madrid">Madrid</option><option value="Berlin">Berlin</option><option value="Rome">Rome</option><option value="Athens">Athens</option><option value="Helsinki">Helsinki</option><option value="Reykjavík">Reykjavík</option><option value="Warsaw">Warsaw</option><option value="Zagreb">Zagreb</option><option value="Tallinn">Tallinn</option><option value="Valletta">Valletta</option></select>
<p rst-field-help id="sel_many-help">Start typing to filter.</p>
</div></form></section>

إذا تجاوزت الخيارات عشرة فعّل الجزء select.js، وإن قلّت عن عشرة فلا: البحث بين حفنة عناصر أثاث لا عون.

اثنا عشر خيارًا، Plain — مع رفض التحسين

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field><label rst-field-label for="sel_plain">City</label>
<select rst-input id="sel_plain" name="sel_plain"><option value="Dublin" selected>Dublin</option><option value="Lisbon">Lisbon</option><option value="Madrid">Madrid</option><option value="Berlin">Berlin</option><option value="Rome">Rome</option><option value="Athens">Athens</option><option value="Helsinki">Helsinki</option><option value="Reykjavík">Reykjavík</option><option value="Warsaw">Warsaw</option><option value="Zagreb">Zagreb</option><option value="Tallinn">Tallinn</option><option value="Valletta">Valletta</option></select>
</div></form></section>

مطلوب، مع خطأ

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field><label rst-field-label for="sel_error">Role</label>
<select rst-input id="sel_error" name="sel_error" required aria-invalid="true" aria-describedby="sel_error-error"><option value="Admin" selected>Admin</option><option value="Editor">Editor</option><option value="Member">Member</option></select>
<p rst-field-error id="sel_error-error" role="alert">Pick a role for this person.</p>
</div></form></section>

مكتوب يدويًا، مع optgroup

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-field><label rst-field-label for="sel_grouped">Region</label>
<select rst-input id="sel_grouped" name="sel_grouped" data-rst-select data-rst-select-filter="اكتب للتصفية" data-rst-select-results="{n} نتائج" data-rst-select-result-one="نتيجة واحدة">
<optgroup label="Europe"><option value="dublin" selected>Dublin</option><option value="lisbon">Lisbon</option><option value="warsaw">Warsaw</option></optgroup>
<optgroup label="Americas"><option value="montreal">Montréal</option><option value="lima">Lima</option><option value="austin">Austin</option></optgroup>
<optgroup label="Asia"><option value="osaka">Osaka</option><option value="hanoi">Hanoi</option><option value="dhaka">Dhaka</option></optgroup>
<optgroup label="Africa"><option value="accra">Accra</option><option value="nairobi">Nairobi</option><option value="tunis">Tunis</option></optgroup>
</select>
</div></form></section>

Options هنا قائمة مسطّحة، فالخيارات المجمّعة شيفرة يكتبها التطبيق نفسه. ويرسم select.js المجموعات بدل إسقاطها، كما يمكن لـ select مكتوب يدويًا أن يرفض التحسين كلّيًا بـ ‎data-rst-select="false"‎.

field-check

آلية التبديل الوحيدة: مربّع تأشير حقيقي بمظهر مفتاح، مع بقاء لوحة المفاتيح وقارئ الشاشة على حالهما.

مُشغَّل

معاينة
<section rst-box><form rst-form method="post" action="#"><label rst-switch><input type="checkbox" name="notify_on" checked><span rst-switch-track aria-hidden="true"></span> Email me about replies</label></form></section>

مُطفأ

معاينة
<section rst-box><form rst-form method="post" action="#"><label rst-switch><input type="checkbox" name="notify_off"><span rst-switch-track aria-hidden="true"></span> Email me about mentions</label></form></section>

معطَّل

معاينة
<section rst-box><form rst-form method="post" action="#"><label rst-switch><input type="checkbox" name="notify_disabled" disabled><span rst-switch-track aria-hidden="true"></span> Email me a weekly digest</label></form></section>

choice-field

بطاقات الخيارات — الشكل المفضّل لمجموعة أزرار الاختيار أو مربّعات التأشير. يبقى Title قصيرًا، ويتولّى Desc الشرح.

اختر واحدًا

معاينة
<section rst-box><form rst-form method="post" action="#"><fieldset rst-choice><legend>Plan</legend><div rst-choice-cards><label><input type="radio" name="plan" value="free"><span><span rst-choice-title>Free</span><span rst-choice-desc>One project, community support.</span></span></label><label><input type="radio" name="plan" value="pro" checked><span><span rst-choice-title>Pro</span><span rst-choice-desc>Unlimited projects and a support inbox.</span></span></label></div></fieldset></form></section>

اختر ما شئت

معاينة
<section rst-box><form rst-form method="post" action="#"><fieldset rst-choice><legend>Send me</legend><div rst-choice-cards><label><input type="checkbox" name="digest" value="replies" checked><span><span rst-choice-title>Replies</span><span rst-choice-desc>As they happen.</span></span></label><label><input type="checkbox" name="digest" value="weekly"><span><span rst-choice-title>Weekly digest</span><span rst-choice-desc>Monday mornings.</span></span></label></div></fieldset></form></section>

form-foot

صف الختام في النموذج: زر إرسال رئيسي واحد ورابط إلغاء اختياري. الإلغاء رابط لأن مغادرة النموذج تنقُّل بين الصفحات.

الحفظ والإلغاء

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-form-foot>
  <button rst-btn="primary" type="submit">Save post</button>
  <a rst-btn href="/posts">Back to posts</a>
</div></form></section>

الإرسال فقط

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-form-foot>
  <button rst-btn="primary" type="submit">Send invitation</button>
</div></form></section>

في السكون — الزر قبل أن يحدث أي شيء

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-form-foot>
  <button rst-btn="primary" type="submit">Publish</button>
  <a rst-btn href="/posts">Back to posts</a>
</div></form></section>

الزر الذي يُغيّر شيئًا يحصل على حالة تحميل، أما الزر الذي يكشف شيئًا فقط — كطيّ أو قائمة منسدلة أو تبويب — فلا. يطبّق rastrillo.js هذه القاعدة على كل زر إرسال في كل نموذج، دون أي شيء تفعّله.

قيد العمل — ما يكتبه rastrillo.js عند خروج النموذج

معاينة
<section rst-box><form rst-form method="post" action="#"><div rst-form-foot>
<button rst-btn="primary" type="submit" aria-busy="true" data-idle-label="Publish" disabled><span rst-spin aria-hidden="true"></span>Publishing…</button>
<a rst-btn href="/posts">Back to posts</a>
</div></form></section>

الزر الذي نُقر عليه وحده: تحتفظ بقية أزرار الإرسال في النموذج باسمها وقيمتها، والنموذج نفسه محميّ من إرسال ثانٍ. تُلغي data-busy="false" القاعدة، على النموذج أو على زر واحد؛ وتستبدل data-busy-label النص. مع إيقاف السكربتات لا يحدث أي من هذا ويُرسَل النموذج كما كان دائمًا، فتبقى الحيادية عند التكرار من مهام الخادم.

confirm-form

صف الإجراءات في صفحة التأكيد. للإجراءات المُتلِفة مسار خاص بها لا مربّع حوار، فلا شيء يحتاج إلى برمجة.

إجراء مُتلِف

معاينة
<section rst-box><form rst-form-actions method="post" action="/posts/1/delete"><input type="hidden" name="csrf" value="tok-123"><input type="hidden" name="id" value="1"><a rst-btn="ghost" href="/posts/1">إلغاء</a><button type="submit" rst-btn="danger">Delete this post</button></form></section>

الحالة العادية، بصياغة الإلغاء الافتراضية

معاينة
<section rst-box><form rst-form-actions method="post" action="/posts/1/publish"><a rst-btn="ghost" href="/posts/1">إلغاء</a><button type="submit" rst-btn="primary">Publish</button></form></section>

لا يوجد CancelLabel، فتأتي صياغة رابط الإلغاء من الفهرس.