pageTitle = 'CiviCRM',
documentTitle = 'CiviCRM';
- angular.module('crmUi', [])
+ angular.module('crmUi', CRM.angRequires('crmUi'))
// example <div crm-ui-accordion crm-title="ts('My Title')" crm-collapsed="true">...content...</div>
// WISHLIST: crmCollapsed should support two-way/continuous binding
.directive('crmUiSelect', function ($parse, $timeout) {
return {
require: '?ngModel',
+ priority: 1,
scope: {
crmUiSelect: '='
},
$timeout(function () {
// ex: msg_template_id adds new item then selects it; use $timeout to ensure that
// new item is added before selection is made
- element.select2('val', ngModel.$modelValue);
+ var newVal = _.cloneDeep(ngModel.$modelValue);
+ // Fix possible data-type mismatch
+ if (typeof newVal === 'string' && element.select2('container').hasClass('select2-container-multi')) {
+ newVal = newVal.length ? newVal.split(',') : [];
+ }
+ element.select2('val', newVal);
});
};
}
element.crmSelect2(scope.crmUiSelect || {});
if (ngModel) {
element.on('change', refreshModel);
- $timeout(ngModel.$render);
}
}
$timeout(function () {
// ex: msg_template_id adds new item then selects it; use $timeout to ensure that
// new item is added before selection is made
- element.select2('val', ngModel.$modelValue);
+ var newVal = _.cloneDeep(ngModel.$modelValue);
+ // Fix possible data-type mismatch
+ if (typeof newVal === 'string' && element.select2('container').hasClass('select2-container-multi')) {
+ newVal = newVal.length ? newVal.split(',') : [];
+ }
+ element.select2('val', newVal);
});
};
function refreshModel() {
return {
restrict: 'EA',
scope: {
- crmUiTabSet: '@'
+ crmUiTabSet: '@',
+ tabSetOptions: '@'
},
templateUrl: '~/crmUi/tabset.html',
transclude: true,
// If the CMS has already added title markup to the page, use it
$('h1').not('.crm-container h1').each(function() {
if (_.trim($(this).html()) === pageTitle) {
- $(this).html(newPageTitle);
+ $(this).addClass('crm-page-title').html(newPageTitle);
$el.hide();
}
});