smoosic
Version:
<sub>[Github site](https://github.com/Smoosic/smoosic) | [source documentation](https://smoosic.github.io/Smoosic/release/docs/modules.html) | [change notes](https://aarondavidnewman.github.io/Smoosic/changes.html) | [application](https://smoosic.github.i
69 lines (64 loc) • 2.23 kB
text/typescript
import { SuiDialogNotifier, DialogDefinitionElement, SuiComponentParent } from '../components/baseComponent';
import { SuiToggleCompositeParams, SuiToggleComposite } from '../components/toggle';
import { SuiDropdownCompositeParams, SuiDropdownComposite } from '../components/dropdown';
import { buildDom } from '../../../common/htmlHelpers';
declare var $: any;
/**
* @category SuiDialog
*/
export interface CheckboxDropdownComponentParams {
id: string,
classes: string,
label: string,
smoName: string,
control: string,
toggleElement: DialogDefinitionElement,
dropdownElement: DialogDefinitionElement
}
/**
* A checkbox that enables a dropdown component, for optional or dependent parameter
* @category SuiDialog
*/
export class CheckboxDropdownComponent extends SuiComponentParent {
// { dropdownElement: {...}, toggleElement: }
toggleCtrl: SuiToggleComposite;
dropdownCtrl: SuiDropdownComposite;
constructor(dialog: SuiDialogNotifier, parameter: CheckboxDropdownComponentParams) {
super(dialog, parameter);
const toggleParams: SuiToggleCompositeParams = {
id: this.id + parameter.toggleElement.smoName,
classes: '',
parentControl: this,
...parameter.toggleElement
}
const dropdownParams: SuiDropdownCompositeParams = {
id: this.id + parameter.dropdownElement.smoName,
classes: '',
defaultValue: '',
parentControl: this,
...parameter.dropdownElement
}
this.toggleCtrl = new SuiToggleComposite(this.dialog, toggleParams);
this.dropdownCtrl = new SuiDropdownComposite(this.dialog, dropdownParams);
}
get html() {
const b = buildDom;
const q = b('div').classes(this.makeClasses('multiControl smoControl checkboxDropdown'))
.attr('id', this.parameterId);
q.append(this.toggleCtrl.html);
q.append(this.dropdownCtrl.html);
return q;
}
bind() {
this.toggleCtrl.bind();
this.dropdownCtrl.bind();
}
changed() {
if (this.toggleCtrl.getValue()) {
$('#' + this.parameterId).addClass('checked');
} else {
$('#' + this.parameterId).removeClass('checked');
}
this.handleChanged();
}
}