diff --git a/demo/demo/admin.py b/demo/demo/admin.py index f4fecc00..40e66b09 100644 --- a/demo/demo/admin.py +++ b/demo/demo/admin.py @@ -31,6 +31,7 @@ class CityInline(admin.TabularInline): extra = 0 verbose_name_plural = 'Cities' suit_classes = 'suit-tab suit-tab-cities' + suit_form_inlines_hide_original = True class CountryForm(ModelForm): @@ -129,6 +130,7 @@ class CountryInline(SortableTabularInline): extra = 1 verbose_name_plural = 'Countries (Sortable example)' sortable = 'order' + show_change_link = True class ContinentAdmin(SortableModelAdmin): @@ -193,6 +195,7 @@ class BookInline(SortableTabularInline): min_num = 1 extra = 0 verbose_name_plural = 'Books (Tabular inline)' + suit_form_inlines_hide_original = True class MovieInlineForm(ModelForm): @@ -228,7 +231,6 @@ class ShowcaseAdmin(admin.ModelAdmin): # list_display = ('name', 'help_text', 'choices', 'horizontal_choices', 'boolean') list_display = ('name', 'help_text') readonly_fields = ('readonly_field',) - # raw_id_fields = ('raw_id_field',) fieldsets = [ (None, {'fields': ['name', 'help_text', 'textfield', ('multiple_in_row', 'multiple2'), diff --git a/suit/apps.py b/suit/apps.py index 719c4362..652984e9 100644 --- a/suit/apps.py +++ b/suit/apps.py @@ -41,6 +41,10 @@ class DjangoSuitConfig(AppConfig): # Enables two column layout for change forms with submit row on the right form_submit_on_right = True + # Hide name/"original" column for all tabular inlines. + # May be overridden in Inline class by suit_form_inlines_hide_original = False + form_inlines_hide_original = False + # For size form_size = { 'default': SUIT_FORM_SIZE_X_LARGE, diff --git a/suit/sass/components/_forms.scss b/suit/sass/components/_forms.scss index f8c7b532..295a8aa7 100644 --- a/suit/sass/components/_forms.scss +++ b/suit/sass/components/_forms.scss @@ -276,9 +276,22 @@ fieldset { tbody { td { &.original { - font-size: 0; - width: 0; - padding: 0; + p { + margin: 0; + @extend .form-control-static; + a { + float: right; + font-size: $font-size-xs; + } + } + .suit-inlines-hide-original:not(.suit-inlines-show-original) & { + font-size: 0; + width: 0; + padding: 0; + > * { + display: none; + } + } } .errorlist { margin: 0; diff --git a/suit/static/suit/css/suit.css b/suit/static/suit/css/suit.css index 4313188a..63d9ed50 100644 --- a/suit/static/suit/css/suit.css +++ b/suit/static/suit/css/suit.css @@ -703,9 +703,9 @@ select.form-control:focus::-ms-value, fieldset select.vTextField:focus::-ms-valu .col-form-legend { padding-top: 0.5rem; padding-bottom: 0.5rem; margin-bottom: 0; font-size: 1rem; } -.form-control-static { padding-top: 0.5rem; padding-bottom: 0.5rem; line-height: 1.25; border: solid transparent; border-width: 1px 0; } +.form-control-static, .inline-group .tabular table tbody td.original p { padding-top: 0.5rem; padding-bottom: 0.5rem; line-height: 1.25; border: solid transparent; border-width: 1px 0; } -.form-control-static.form-control-sm, .input-group-sm > .form-control-static.form-control, fieldset .input-group-sm > input.form-control-static[type=text], fieldset .input-group-sm > input.form-control-static[type=url], fieldset .input-group-sm > input.form-control-static[type=email], fieldset .input-group-sm > input.form-control-static[type=number], fieldset .input-group-sm > input.form-control-static[type=password], fieldset .input-group-sm > .form-control-static.vTextField, fieldset .input-group-sm > .form-control-static.vURLField, fieldset .input-group-sm > .form-control-static.vLargeTextField, fieldset .input-group-sm > .form-control-static.vTimeField, fieldset .input-group-sm > .form-control-static.vDateField, .selector .selector-available .input-group-sm > select.form-control-static, .selector .selector-chosen .input-group-sm > select.form-control-static, #changelist #toolbar #changelist-search .input-group-sm > input.form-control-static[type='text'], #changelist #changelist-form .actions .input-group-sm > select.form-control-static, .input-group-sm > .form-control-static.input-group-addon, .widget-AdminSplitDateTime .datetimeshortcuts .input-group-sm > a.form-control-static[id^='calendarlink'], .widget-AdminSplitDateTime .datetimeshortcuts .input-group-sm > a.form-control-static[id^='clocklink'], .widget-AdminDateWidget .datetimeshortcuts .input-group-sm > a.form-control-static[id^='calendarlink'], .widget-AdminDateWidget .datetimeshortcuts .input-group-sm > a.form-control-static[id^='clocklink'], .widget-AdminTimeWidget .datetimeshortcuts .input-group-sm > a.form-control-static[id^='calendarlink'], .widget-AdminTimeWidget .datetimeshortcuts .input-group-sm > a.form-control-static[id^='clocklink'], .input-group-sm > .input-group-btn > .form-control-static.btn, body.delete-confirmation #content .input-group-sm > .input-group-btn > input.form-control-static[type='button'], body.delete-confirmation #content .input-group-sm > .input-group-btn > input.form-control-static[type='submit'], body.delete-confirmation #content .input-group-sm > .input-group-btn > button.form-control-static, .submit-row .deletelink-box .input-group-sm > .input-group-btn > .form-control-static.deletelink, .submit-row .input-group-sm > .input-group-btn > input.form-control-static[type='submit']:not([class*="btn-"]), .submit-row .input-group-sm > .input-group-btn > input.form-control-static[type='button']:not([class*="btn-"]), .submit-row .input-group-sm > .input-group-btn > button.form-control-static:not([class*="btn-"]), #content-main > .object-tools.input-group-sm > li.input-group-btn > a.form-control-static:not([class*="btn-"]), #changelist #toolbar #changelist-search .input-group-sm > .input-group-btn > input.form-control-static[type='submit'], #changelist #changelist-form .actions .input-group-sm > .input-group-btn > button.form-control-static, #changelist #changelist-form .paginator .input-group-sm > .input-group-btn > input.form-control-static[type='submit'], .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control, fieldset .input-group-lg > input.form-control-static[type=text], fieldset .input-group-lg > input.form-control-static[type=url], fieldset .input-group-lg > input.form-control-static[type=email], fieldset .input-group-lg > input.form-control-static[type=number], fieldset .input-group-lg > input.form-control-static[type=password], fieldset .input-group-lg > .form-control-static.vTextField, fieldset .input-group-lg > .form-control-static.vURLField, fieldset .input-group-lg > .form-control-static.vLargeTextField, fieldset .input-group-lg > .form-control-static.vTimeField, fieldset .input-group-lg > .form-control-static.vDateField, .selector .selector-available .input-group-lg > select.form-control-static, .selector .selector-chosen .input-group-lg > select.form-control-static, #changelist #toolbar #changelist-search .input-group-lg > input.form-control-static[type='text'], #changelist #changelist-form .actions .input-group-lg > select.form-control-static, .input-group-lg > .form-control-static.input-group-addon, .widget-AdminSplitDateTime .datetimeshortcuts .input-group-lg > a.form-control-static[id^='calendarlink'], .widget-AdminSplitDateTime .datetimeshortcuts .input-group-lg > a.form-control-static[id^='clocklink'], .widget-AdminDateWidget .datetimeshortcuts .input-group-lg > a.form-control-static[id^='calendarlink'], .widget-AdminDateWidget .datetimeshortcuts .input-group-lg > a.form-control-static[id^='clocklink'], .widget-AdminTimeWidget .datetimeshortcuts .input-group-lg > a.form-control-static[id^='calendarlink'], .widget-AdminTimeWidget .datetimeshortcuts .input-group-lg > a.form-control-static[id^='clocklink'], .input-group-lg > .input-group-btn > .form-control-static.btn, body.delete-confirmation #content .input-group-lg > .input-group-btn > input.form-control-static[type='button'], body.delete-confirmation #content .input-group-lg > .input-group-btn > input.form-control-static[type='submit'], body.delete-confirmation #content .input-group-lg > .input-group-btn > button.form-control-static, .submit-row .deletelink-box .input-group-lg > .input-group-btn > .form-control-static.deletelink, .submit-row .input-group-lg > .input-group-btn > input.form-control-static[type='submit']:not([class*="btn-"]), .submit-row .input-group-lg > .input-group-btn > input.form-control-static[type='button']:not([class*="btn-"]), .submit-row .input-group-lg > .input-group-btn > button.form-control-static:not([class*="btn-"]), #content-main > .object-tools.input-group-lg > li.input-group-btn > a.form-control-static:not([class*="btn-"]), #changelist #toolbar #changelist-search .input-group-lg > .input-group-btn > input.form-control-static[type='submit'], #changelist #changelist-form .actions .input-group-lg > .input-group-btn > button.form-control-static, #changelist #changelist-form .paginator .input-group-lg > .input-group-btn > input.form-control-static[type='submit'] { padding-right: 0; padding-left: 0; } +.form-control-static.form-control-sm, .input-group-sm > .form-control-static.form-control, .inline-group .tabular table tbody td.original .input-group-sm > p.form-control, .inline-group .tabular table tbody td.original fieldset .input-group-sm > p.vTextField, fieldset .inline-group .tabular table tbody td.original .input-group-sm > p.vTextField, .inline-group .tabular table tbody td.original fieldset .input-group-sm > p.vURLField, fieldset .inline-group .tabular table tbody td.original .input-group-sm > p.vURLField, .inline-group .tabular table tbody td.original fieldset .input-group-sm > p.vLargeTextField, fieldset .inline-group .tabular table tbody td.original .input-group-sm > p.vLargeTextField, .inline-group .tabular table tbody td.original fieldset .input-group-sm > p.vTimeField, fieldset .inline-group .tabular table tbody td.original .input-group-sm > p.vTimeField, .inline-group .tabular table tbody td.original fieldset .input-group-sm > p.vDateField, fieldset .inline-group .tabular table tbody td.original .input-group-sm > p.vDateField, fieldset .input-group-sm > input.form-control-static[type=text], fieldset .input-group-sm > input.form-control-static[type=url], fieldset .input-group-sm > input.form-control-static[type=email], fieldset .input-group-sm > input.form-control-static[type=number], fieldset .input-group-sm > input.form-control-static[type=password], fieldset .input-group-sm > .form-control-static.vTextField, fieldset .input-group-sm > .form-control-static.vURLField, fieldset .input-group-sm > .form-control-static.vLargeTextField, fieldset .input-group-sm > .form-control-static.vTimeField, fieldset .input-group-sm > .form-control-static.vDateField, .selector .selector-available .input-group-sm > select.form-control-static, .selector .selector-chosen .input-group-sm > select.form-control-static, #changelist #toolbar #changelist-search .input-group-sm > input.form-control-static[type='text'], #changelist #changelist-form .actions .input-group-sm > select.form-control-static, .input-group-sm > .form-control-static.input-group-addon, .inline-group .tabular table tbody td.original .input-group-sm > p.input-group-addon, .widget-AdminSplitDateTime .datetimeshortcuts .input-group-sm > a.form-control-static[id^='calendarlink'], .widget-AdminSplitDateTime .datetimeshortcuts .input-group-sm > a.form-control-static[id^='clocklink'], .widget-AdminDateWidget .datetimeshortcuts .input-group-sm > a.form-control-static[id^='calendarlink'], .widget-AdminDateWidget .datetimeshortcuts .input-group-sm > a.form-control-static[id^='clocklink'], .widget-AdminTimeWidget .datetimeshortcuts .input-group-sm > a.form-control-static[id^='calendarlink'], .widget-AdminTimeWidget .datetimeshortcuts .input-group-sm > a.form-control-static[id^='clocklink'], .input-group-sm > .input-group-btn > .form-control-static.btn, .inline-group .tabular table tbody td.original .input-group-sm > .input-group-btn > p.btn, .inline-group .tabular table tbody td.original .submit-row .deletelink-box .input-group-sm > .input-group-btn > p.deletelink, .submit-row .deletelink-box .inline-group .tabular table tbody td.original .input-group-sm > .input-group-btn > p.deletelink, body.delete-confirmation #content .input-group-sm > .input-group-btn > input.form-control-static[type='button'], body.delete-confirmation #content .input-group-sm > .input-group-btn > input.form-control-static[type='submit'], body.delete-confirmation #content .input-group-sm > .input-group-btn > button.form-control-static, .submit-row .deletelink-box .input-group-sm > .input-group-btn > .form-control-static.deletelink, .submit-row .input-group-sm > .input-group-btn > input.form-control-static[type='submit']:not([class*="btn-"]), .submit-row .input-group-sm > .input-group-btn > input.form-control-static[type='button']:not([class*="btn-"]), .submit-row .input-group-sm > .input-group-btn > button.form-control-static:not([class*="btn-"]), #content-main > .object-tools.input-group-sm > li.input-group-btn > a.form-control-static:not([class*="btn-"]), #changelist #toolbar #changelist-search .input-group-sm > .input-group-btn > input.form-control-static[type='submit'], #changelist #changelist-form .actions .input-group-sm > .input-group-btn > button.form-control-static, #changelist #changelist-form .paginator .input-group-sm > .input-group-btn > input.form-control-static[type='submit'], .inline-group .tabular table tbody td.original p.form-control-sm, .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control, .inline-group .tabular table tbody td.original .input-group-lg > p.form-control, .inline-group .tabular table tbody td.original fieldset .input-group-lg > p.vTextField, fieldset .inline-group .tabular table tbody td.original .input-group-lg > p.vTextField, .inline-group .tabular table tbody td.original fieldset .input-group-lg > p.vURLField, fieldset .inline-group .tabular table tbody td.original .input-group-lg > p.vURLField, .inline-group .tabular table tbody td.original fieldset .input-group-lg > p.vLargeTextField, fieldset .inline-group .tabular table tbody td.original .input-group-lg > p.vLargeTextField, .inline-group .tabular table tbody td.original fieldset .input-group-lg > p.vTimeField, fieldset .inline-group .tabular table tbody td.original .input-group-lg > p.vTimeField, .inline-group .tabular table tbody td.original fieldset .input-group-lg > p.vDateField, fieldset .inline-group .tabular table tbody td.original .input-group-lg > p.vDateField, fieldset .input-group-lg > input.form-control-static[type=text], fieldset .input-group-lg > input.form-control-static[type=url], fieldset .input-group-lg > input.form-control-static[type=email], fieldset .input-group-lg > input.form-control-static[type=number], fieldset .input-group-lg > input.form-control-static[type=password], fieldset .input-group-lg > .form-control-static.vTextField, fieldset .input-group-lg > .form-control-static.vURLField, fieldset .input-group-lg > .form-control-static.vLargeTextField, fieldset .input-group-lg > .form-control-static.vTimeField, fieldset .input-group-lg > .form-control-static.vDateField, .selector .selector-available .input-group-lg > select.form-control-static, .selector .selector-chosen .input-group-lg > select.form-control-static, #changelist #toolbar #changelist-search .input-group-lg > input.form-control-static[type='text'], #changelist #changelist-form .actions .input-group-lg > select.form-control-static, .input-group-lg > .form-control-static.input-group-addon, .inline-group .tabular table tbody td.original .input-group-lg > p.input-group-addon, .widget-AdminSplitDateTime .datetimeshortcuts .input-group-lg > a.form-control-static[id^='calendarlink'], .widget-AdminSplitDateTime .datetimeshortcuts .input-group-lg > a.form-control-static[id^='clocklink'], .widget-AdminDateWidget .datetimeshortcuts .input-group-lg > a.form-control-static[id^='calendarlink'], .widget-AdminDateWidget .datetimeshortcuts .input-group-lg > a.form-control-static[id^='clocklink'], .widget-AdminTimeWidget .datetimeshortcuts .input-group-lg > a.form-control-static[id^='calendarlink'], .widget-AdminTimeWidget .datetimeshortcuts .input-group-lg > a.form-control-static[id^='clocklink'], .input-group-lg > .input-group-btn > .form-control-static.btn, .inline-group .tabular table tbody td.original .input-group-lg > .input-group-btn > p.btn, .inline-group .tabular table tbody td.original .submit-row .deletelink-box .input-group-lg > .input-group-btn > p.deletelink, .submit-row .deletelink-box .inline-group .tabular table tbody td.original .input-group-lg > .input-group-btn > p.deletelink, body.delete-confirmation #content .input-group-lg > .input-group-btn > input.form-control-static[type='button'], body.delete-confirmation #content .input-group-lg > .input-group-btn > input.form-control-static[type='submit'], body.delete-confirmation #content .input-group-lg > .input-group-btn > button.form-control-static, .submit-row .deletelink-box .input-group-lg > .input-group-btn > .form-control-static.deletelink, .submit-row .input-group-lg > .input-group-btn > input.form-control-static[type='submit']:not([class*="btn-"]), .submit-row .input-group-lg > .input-group-btn > input.form-control-static[type='button']:not([class*="btn-"]), .submit-row .input-group-lg > .input-group-btn > button.form-control-static:not([class*="btn-"]), #content-main > .object-tools.input-group-lg > li.input-group-btn > a.form-control-static:not([class*="btn-"]), #changelist #toolbar #changelist-search .input-group-lg > .input-group-btn > input.form-control-static[type='submit'], #changelist #changelist-form .actions .input-group-lg > .input-group-btn > button.form-control-static, #changelist #changelist-form .paginator .input-group-lg > .input-group-btn > input.form-control-static[type='submit'], .inline-group .tabular table tbody td.original p.form-control-lg { padding-right: 0; padding-left: 0; } .form-control-sm, .input-group-sm > .form-control, fieldset .input-group-sm > input[type=text], fieldset .input-group-sm > input[type=url], fieldset .input-group-sm > input[type=email], fieldset .input-group-sm > input[type=number], fieldset .input-group-sm > input[type=password], fieldset .input-group-sm > .vTextField, fieldset .input-group-sm > .vURLField, fieldset .input-group-sm > .vLargeTextField, fieldset .input-group-sm > .vTimeField, fieldset .input-group-sm > .vDateField, .selector .selector-available .input-group-sm > select, .selector .selector-chosen .input-group-sm > select, #changelist #toolbar #changelist-search .input-group-sm > input[type='text'], #changelist #changelist-form .actions .input-group-sm > select, .input-group-sm > .input-group-addon, .widget-AdminSplitDateTime .datetimeshortcuts .input-group-sm > a[id^='calendarlink'], .widget-AdminSplitDateTime .datetimeshortcuts .input-group-sm > a[id^='clocklink'], .widget-AdminDateWidget .datetimeshortcuts .input-group-sm > a[id^='calendarlink'], .widget-AdminDateWidget .datetimeshortcuts .input-group-sm > a[id^='clocklink'], .widget-AdminTimeWidget .datetimeshortcuts .input-group-sm > a[id^='calendarlink'], .widget-AdminTimeWidget .datetimeshortcuts .input-group-sm > a[id^='clocklink'], .input-group-sm > .input-group-btn > .btn, body.delete-confirmation #content .input-group-sm > .input-group-btn > input[type='button'], body.delete-confirmation #content .input-group-sm > .input-group-btn > input[type='submit'], body.delete-confirmation #content .input-group-sm > .input-group-btn > button, .submit-row .deletelink-box .input-group-sm > .input-group-btn > .deletelink, .submit-row .input-group-sm > .input-group-btn > input[type='submit']:not([class*="btn-"]), .submit-row .input-group-sm > .input-group-btn > input[type='button']:not([class*="btn-"]), .submit-row .input-group-sm > .input-group-btn > button:not([class*="btn-"]), #content-main > .object-tools.input-group-sm > li.input-group-btn > a:not([class*="btn-"]), #changelist #toolbar #changelist-search .input-group-sm > .input-group-btn > input[type='submit'], #changelist #changelist-form .actions .input-group-sm > .input-group-btn > button, #changelist #changelist-form .paginator .input-group-sm > .input-group-btn > input[type='submit'] { padding: 0.25rem 0.5rem; font-size: 0.929rem; border-radius: 0.2rem; } @@ -773,7 +773,7 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for @media (min-width: 576px) { .form-inline .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .form-inline .form-control, .form-inline fieldset input[type=text], fieldset .form-inline input[type=text], .form-inline fieldset input[type=url], fieldset .form-inline input[type=url], .form-inline fieldset input[type=email], fieldset .form-inline input[type=email], .form-inline fieldset input[type=number], fieldset .form-inline input[type=number], .form-inline fieldset input[type=password], fieldset .form-inline input[type=password], .form-inline fieldset .vTextField, fieldset .form-inline .vTextField, .form-inline fieldset .vURLField, fieldset .form-inline .vURLField, .form-inline fieldset .vLargeTextField, fieldset .form-inline .vLargeTextField, .form-inline fieldset .vTimeField, fieldset .form-inline .vTimeField, .form-inline fieldset .vDateField, fieldset .form-inline .vDateField, .form-inline .selector .selector-available select, .selector .selector-available .form-inline select, .form-inline .selector .selector-chosen select, .selector .selector-chosen .form-inline select, .form-inline #changelist #toolbar #changelist-search input[type='text'], #changelist #toolbar #changelist-search .form-inline input[type='text'], .form-inline #changelist #changelist-form .actions select, #changelist #changelist-form .actions .form-inline select { display: inline-block; width: auto; vertical-align: middle; } - .form-inline .form-control-static { display: inline-block; } + .form-inline .form-control-static, .form-inline .inline-group .tabular table tbody td.original p, .inline-group .tabular table tbody td.original .form-inline p { display: inline-block; } .form-inline .input-group { display: inline-table; width: auto; vertical-align: middle; } .form-inline .input-group .input-group-addon, .form-inline .input-group .widget-AdminSplitDateTime .datetimeshortcuts a[id^='calendarlink'], .widget-AdminSplitDateTime .datetimeshortcuts .form-inline .input-group a[id^='calendarlink'], .form-inline .input-group .widget-AdminSplitDateTime .datetimeshortcuts a[id^='clocklink'], .widget-AdminSplitDateTime .datetimeshortcuts .form-inline .input-group a[id^='clocklink'], .form-inline .input-group .widget-AdminDateWidget .datetimeshortcuts a[id^='calendarlink'], .widget-AdminDateWidget .datetimeshortcuts .form-inline .input-group a[id^='calendarlink'], .form-inline .input-group .widget-AdminDateWidget .datetimeshortcuts a[id^='clocklink'], .widget-AdminDateWidget .datetimeshortcuts .form-inline .input-group a[id^='clocklink'], .form-inline .input-group .widget-AdminTimeWidget .datetimeshortcuts a[id^='calendarlink'], .widget-AdminTimeWidget .datetimeshortcuts .form-inline .input-group a[id^='calendarlink'], .form-inline .input-group .widget-AdminTimeWidget .datetimeshortcuts a[id^='clocklink'], .widget-AdminTimeWidget .datetimeshortcuts .form-inline .input-group a[id^='clocklink'], .form-inline .input-group .input-group-btn, .form-inline .input-group .form-control, .form-inline .input-group fieldset input[type=text], fieldset .form-inline .input-group input[type=text], .form-inline .input-group fieldset input[type=url], fieldset .form-inline .input-group input[type=url], .form-inline .input-group fieldset input[type=email], fieldset .form-inline .input-group input[type=email], .form-inline .input-group fieldset input[type=number], fieldset .form-inline .input-group input[type=number], .form-inline .input-group fieldset input[type=password], fieldset .form-inline .input-group input[type=password], .form-inline .input-group fieldset .vTextField, fieldset .form-inline .input-group .vTextField, .form-inline .input-group fieldset .vURLField, fieldset .form-inline .input-group .vURLField, .form-inline .input-group fieldset .vLargeTextField, fieldset .form-inline .input-group .vLargeTextField, .form-inline .input-group fieldset .vTimeField, fieldset .form-inline .input-group .vTimeField, .form-inline .input-group fieldset .vDateField, fieldset .form-inline .input-group .vDateField, .form-inline .input-group .selector .selector-available select, .selector .selector-available .form-inline .input-group select, .form-inline .input-group .selector .selector-chosen select, .selector .selector-chosen .form-inline .input-group select, .form-inline .input-group #changelist #toolbar #changelist-search input[type='text'], #changelist #toolbar #changelist-search .form-inline .input-group input[type='text'], .form-inline .input-group #changelist #changelist-form .actions select, #changelist #changelist-form .actions .form-inline .input-group select { width: auto; } .form-inline .input-group > .form-control, .form-inline fieldset .input-group > input[type=text], fieldset .form-inline .input-group > input[type=text], .form-inline fieldset .input-group > input[type=url], fieldset .form-inline .input-group > input[type=url], .form-inline fieldset .input-group > input[type=email], fieldset .form-inline .input-group > input[type=email], .form-inline fieldset .input-group > input[type=number], fieldset .form-inline .input-group > input[type=number], .form-inline fieldset .input-group > input[type=password], fieldset .form-inline .input-group > input[type=password], .form-inline fieldset .input-group > .vTextField, fieldset .form-inline .input-group > .vTextField, .form-inline fieldset .input-group > .vURLField, fieldset .form-inline .input-group > .vURLField, .form-inline fieldset .input-group > .vLargeTextField, fieldset .form-inline .input-group > .vLargeTextField, .form-inline fieldset .input-group > .vTimeField, fieldset .form-inline .input-group > .vTimeField, .form-inline fieldset .input-group > .vDateField, fieldset .form-inline .input-group > .vDateField, .form-inline .selector .selector-available .input-group > select, .selector .selector-available .form-inline .input-group > select, .form-inline .selector .selector-chosen .input-group > select, .selector .selector-chosen .form-inline .input-group > select, .form-inline #changelist #toolbar #changelist-search .input-group > input[type='text'], #changelist #toolbar #changelist-search .form-inline .input-group > input[type='text'], .form-inline #changelist #changelist-form .actions .input-group > select, #changelist #changelist-form .actions .form-inline .input-group > select { width: 100%; } @@ -2121,7 +2121,13 @@ fieldset.collapse { display: block; } .inline-group .tabular table th, .inline-group .tabular table td { font-size: 1rem; } -.inline-group .tabular table tbody td.original { font-size: 0; width: 0; padding: 0; } +.inline-group .tabular table tbody td.original p { margin: 0; } + +.inline-group .tabular table tbody td.original p a { float: right; font-size: 0.857rem; } + +.suit-inlines-hide-original:not(.suit-inlines-show-original) .inline-group .tabular table tbody td.original { font-size: 0; width: 0; padding: 0; } + +.suit-inlines-hide-original:not(.suit-inlines-show-original) .inline-group .tabular table tbody td.original > * { display: none; } .inline-group .tabular table tbody td .errorlist { margin: 0; padding-left: 1.5rem; font-size: 0.857rem; color: #E04F3C; } diff --git a/suit/templates/suit/admin/change_form.html b/suit/templates/suit/admin/change_form.html index 5c20099f..f51f169e 100644 --- a/suit/templates/suit/admin/change_form.html +++ b/suit/templates/suit/admin/change_form.html @@ -1,4 +1,5 @@ {% suit_extends 'admin:admin/change_form.html' %} +{% load suit_forms %} {% block form_top %}
@@ -30,8 +31,11 @@ {% endblock %} {% block inline_field_sets %} +{# {% suit_form_conf 'form_inlines_hide_original' as suit_form_inlines_hide_original %}#} +{# {{ suit_form_inlines_hide_original }}#} {% for inline_admin_formset in inline_admin_formsets %} -
+ {% suit_form_conf 'form_inlines_hide_original' inline_admin_formset as suit_form_inlines_hide_original %} +
{% include inline_admin_formset.opts.template %}
{% endfor %} diff --git a/suit/templatetags/suit_forms.py b/suit/templatetags/suit_forms.py index 517609a8..1a95b9c5 100644 --- a/suit/templatetags/suit_forms.py +++ b/suit/templatetags/suit_forms.py @@ -100,3 +100,18 @@ def suit_form_field_widget_class(field): if widget_class_name: return 'widget-%s' % widget_class_name return '' + + +@register.assignment_tag(takes_context=True) +def suit_form_conf(context, param_name, inline_admin_formset=None): + """ + Get form config param + """ + if inline_admin_formset: + model_admin = inline_admin_formset.opts + else: + model_admin = context['adminform'].model_admin + param_by_model_admin = getattr(model_admin, 'suit_%s' % param_name, None) + if param_by_model_admin is not None: + return param_by_model_admin + return get_config(param_name, context['request'])