Для взаимодействия полей в ExtJs мы используем Ext.form.FieldSet или Ext.form.FieldContainer, но они не настолько легкие, как простой тег <hr>, который используется в качестве тематического элемента break в HTML. К сожалению, этот легкий компонент GUI отсутствует в ExtJS.
Эта реализация не будет работать с разметкой формы ввода. Для разметки формы ввода вы можете создать наследника Ext.form.field.Base и изменить шаблон рендеринга. Опасность, которая скрывается за использованием тега <hr> — это реализация форм с огромным количеством полей. Обычные же контейнеры помогают разделить форму на разделы(группы) и легко управлять ими.
Ext.define('app.ux.form.HorizontalRule', { extend: 'Ext.Component', alias: 'widget.hr', tpl: [ '<hr class="hr-text" data-content="', '<tpl if="title">{title}</tpl>', '">' ], title: ' ', initComponent: function() { if(this.title) { this.data = { 'title': this.title }; } this.callParent(); } });
.hr-text { line-height: 1em; position: relative; outline: 0; border: 0; text-align: center; height: 1.5em; } .hr-text:before { content: ''; background: linear-gradient(to right, transparent, #b5b8c8, transparent); position: absolute; left: 0; top: 50%; width: 100%; height: 1px; } .hr-text:after { content: attr(data-content); position: relative; display: inline-block; color: black; padding: 0 .5em; line-height: 1.5em; color: #b5b8c8; background-color: #ffffff; }
Fiddle:
a