Refactor remove option implementation
Refs #2756 Add disabled support Fixes #1199
This commit is contained in:
parent
e8f6cb4dc5
commit
f8e7fa03e0
|
|
@ -123,6 +123,10 @@ class RecordFinder extends FormWidgetBase
|
|||
'recordsPerPage',
|
||||
]);
|
||||
|
||||
if ($this->formField->disabled) {
|
||||
$this->previewMode = true;
|
||||
}
|
||||
|
||||
if (post('recordfinder_flag')) {
|
||||
$this->listWidget = $this->makeListWidget();
|
||||
$this->listWidget->bindToController();
|
||||
|
|
@ -160,6 +164,15 @@ class RecordFinder extends FormWidgetBase
|
|||
return ['#'.$this->getId('container') => $this->makePartial('recordfinder')];
|
||||
}
|
||||
|
||||
public function onClearRecord()
|
||||
{
|
||||
list($model, $attribute) = $this->resolveModelAttribute($this->valueFrom);
|
||||
$model->{$attribute} = null;
|
||||
|
||||
$this->prepareVars();
|
||||
return ['#'.$this->getId('container') => $this->makePartial('recordfinder')];
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares the list data
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -21,29 +21,43 @@
|
|||
// ============================
|
||||
|
||||
var RecordFinder = function(element, options) {
|
||||
this.options = options
|
||||
this.$el = $(element)
|
||||
this.options = options || {}
|
||||
|
||||
$.oc.foundation.controlUtils.markDisposable(element)
|
||||
Base.call(this)
|
||||
this.init()
|
||||
}
|
||||
|
||||
|
||||
RecordFinder.prototype = Object.create(BaseProto)
|
||||
RecordFinder.prototype.constructor = RecordFinder
|
||||
|
||||
RecordFinder.prototype.init = function() {
|
||||
this.$el.on('dblclick', this.proxy(this.onDoubleClick))
|
||||
this.$el.one('dispose-control', this.proxy(this.dispose))
|
||||
}
|
||||
|
||||
RecordFinder.prototype.dispose = function() {
|
||||
this.$el.off('dblclick', this.proxy(this.onDoubleClick))
|
||||
this.$el.off('dispose-control', this.proxy(this.dispose))
|
||||
this.$el.removeData('oc.someDisposableControl')
|
||||
|
||||
this.$el = null
|
||||
|
||||
// In some cases options could contain callbacks,
|
||||
// so it's better to clean them up too.
|
||||
this.options = null
|
||||
|
||||
BaseProto.dispose.call(this)
|
||||
}
|
||||
|
||||
RecordFinder.DEFAULTS = {
|
||||
refreshHandler: null,
|
||||
dataLocker: null
|
||||
}
|
||||
|
||||
RecordFinder.prototype.init = function() {
|
||||
var self = this
|
||||
this.$el.on('dblclick', function () {
|
||||
$('.btn.find-record', self.$el).trigger('click')
|
||||
})
|
||||
|
||||
this.$el.on('click', '.clear-record', this.proxy(this.clearRecord))
|
||||
RecordFinder.prototype.onDoubleClick = function(linkEl, recordId) {
|
||||
$('.btn.find-record', this.$el).trigger('click')
|
||||
}
|
||||
|
||||
RecordFinder.prototype.updateRecord = function(linkEl, recordId) {
|
||||
|
|
@ -59,13 +73,7 @@
|
|||
}
|
||||
})
|
||||
|
||||
if(linkEl){
|
||||
$(linkEl).closest('.recordfinder-popup').popup('hide')
|
||||
}
|
||||
}
|
||||
|
||||
RecordFinder.prototype.clearRecord = function() {
|
||||
this.updateRecord(false, '')
|
||||
$(linkEl).closest('.recordfinder-popup').popup('hide')
|
||||
}
|
||||
|
||||
// RECORDFINDER PLUGIN DEFINITION
|
||||
|
|
|
|||
|
|
@ -16,11 +16,16 @@
|
|||
</span>
|
||||
|
||||
<?php if (!$this->previewMode): ?>
|
||||
<button
|
||||
class="btn btn-default clear-record"
|
||||
type="button">
|
||||
<i class="icon-times"></i>
|
||||
</button>
|
||||
<?php if ($value): ?>
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default clear-record"
|
||||
data-request="<?= $this->getEventHandler('onClearRecord') ?>"
|
||||
data-request-confirm="<?= e(trans('backend::lang.form.action_confirm')) ?>"
|
||||
aria-label="Remove">
|
||||
<i class="icon-times"></i>
|
||||
</button>
|
||||
<?php endif ?>
|
||||
<button
|
||||
class="btn btn-default find-record"
|
||||
data-control="popup"
|
||||
|
|
|
|||
|
|
@ -360,6 +360,7 @@
|
|||
|
||||
&.clear-record {
|
||||
right: 30px;
|
||||
margin-top: -44px;
|
||||
}
|
||||
|
||||
i {
|
||||
|
|
|
|||
|
|
@ -2496,7 +2496,7 @@ html.cssanimations .cursor-loading-indicator.hide{display:none}
|
|||
.field-recordfinder{background-color:#ffffff;border:1px solid #d1d6d9;overflow:hidden;position:relative;-webkit-box-shadow:inset 0 1px 0 rgba(209,214,217,0.25),0 1px 0 rgba(255,255,255,.5);box-shadow:inset 0 1px 0 rgba(209,214,217,0.25),0 1px 0 rgba(255,255,255,.5);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
|
||||
.field-recordfinder .form-control{background:transparent;border-color:transparent;height:auto;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding:7px 30px 7px 11px;-webkit-box-shadow:none;box-shadow:none}
|
||||
.field-recordfinder .btn{background:transparent;position:absolute;right:-2px;top:50%;margin-top:-43px;height:88px;color:#595959;text-shadow:none;padding-left:15px;padding-right:15px}
|
||||
.field-recordfinder .btn.clear-record {right:30px;}
|
||||
.field-recordfinder .btn.clear-record{right:30px;margin-top:-44px}
|
||||
.field-recordfinder .btn i{font-size:14px}
|
||||
.field-recordfinder .btn:hover{color:#333333}
|
||||
.field-recordfinder .text-muted i{font-size:14px;position:relative;top:1px;display:inline-block;margin:0 2px}
|
||||
|
|
|
|||
Loading…
Reference in New Issue