Complex dropdown
UI element for presenting complex dropdown
Development guideline
Example of a typical complex dropdown
<script type="text/ng-template" id="productTemplate"> <div rb-grid k-data-source="vm.dataSource" k-on-change="vm.itemSelected(kendoEvent);hidePopover()" default-filter="ProductName" style="width:450px;height:400px" k-columns='[ { "field":"status", "title":"St"|translate, "width":40 }, { "field":"product.name", "title":"Product name"|translate }]'> </div> </script> <div rb-fieldname="product"> <label class="control-label">{{'Product' | translate}}</label> <rb-complex-dropdown ng-model="vm.product.name" metadata-model="vm.product.productId" attr-placement="bottom|left" attr-template="productTemplate" attr-placeholder="{{'Product lookup' | translate}}" attr-focus="vm.setFocus" attr-onkeydown="vm.keydown" attr-disabled="vm.isDisabled"> </rb-complex-dropdown> </div>
The script template can contain any markup, but typically this will be a rb-grid. The grid properties are described under the section Component Ui Elements - Grid.hidePopover() is used for closing the popover programatically.
Attributes
attr-component: Name of the component that will be displayed inside the popover. Se seperate section about complex dropdowns with component.
attr-params: The parameters that will be send to the component. Se seperate section about complex dropdowns with component.
ng-model: The value that will be displayed in the input field
metadata-model: Specify this if you need to get metadata from another field than the ng-model field
attr-placement: Specifies the popover placement (bottom/top | left/right). This will be overridden by the framework if the popover overflows the window size
attr-template: Reference to the script template which will be displayed inside the popover
attr-placeholder: Placeholder in the input field
attr-focus: Sets focus in the input field when the vm.setFocus value is true
attr-onkeydown: Event triggered from keypress in the input field
attr-disabled: Disable the input field
Complex dropdown with component
It is also possible to re-use the lookupcomponent for a complex dropdown.
// In view <div rb-fieldname="product" class="flexitem full-width"> <label class="control-label">{{'Product' | translate}}</label> <rb-complex-dropdown ng-model="vm.salesOrderItem.product.name" attr-component="productLookup" attr-params="vm.params"> </rb-complex-dropdown> </div> // In viewmodel vm.params = { vm.params.objectType = "SalesOrder"; // in parameter vm.params.productSelected = function (selectedProduct, priceUrl) { // out parameter (callback function) } };