ornamentum
Version:
Angular Toolkit
162 lines • 13 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Inject, Injectable, InjectionToken } from '@angular/core';
import { get } from '../../utility/services/object-utility.class';
/** @type {?} */
export const DROPDOWN_CONFIG = new InjectionToken('dropdownConfig');
/**
* Dropdown config service. Holds all the global configurations of dropdown which can be overridden while importing the module.
* Used to manage dropdown base configuration state.
*/
export class DropdownConfigService {
/**
* @param {?} dropdownConfig
*/
constructor(dropdownConfig) {
this.dropdownConfig = dropdownConfig;
this.baseTranslations = {
noDataMessage: 'No Results Available',
filterPlaceholder: 'Search',
selectedOptionWrapPlaceholder: 'Options',
selectPlaceholder: 'Select'
};
this.selectTrackBy = 'key';
this.displayTrackBy = 'value';
this.disabledTrackBy = 'disabled';
this.menuPosition = 'bottom-left';
this.selectMode = 'single-toggle';
this.filterable = false;
this.filterDebounce = true;
this.filterDebounceTime = 500;
this.groupByField = undefined;
this.wrapDisplaySelectLimit = undefined;
this.showSelectedOptionRemoveButton = false;
this.showClearSelectionButton = false;
this.menuWidth = 320;
this.menuHeight = 250;
this.loadOnScroll = false;
this.loadViewDistanceRatio = 1;
this.limit = 15;
this.loadDataOnInit = true;
this.closeMenuOnSelect = false;
this.showOptionSelectCheckbox = false;
this.showOptionIndex = false;
this.showOptionTrackBy = false;
this.multiSelectOptionMaxWidth = 135;
this.setFirstOptionSelected = false;
this.triggerSelectChangeOnInit = false;
this.triggerSelectChangeOnModelUpdate = false;
this.triggerSelectChangeOnFirstOptionSelect = false;
this.dynamicDimensionCalculation = false;
this.dynamicWidthRatio = 1;
this.dynamicHeightRatio = 0.5;
this.relativeParentElement = undefined;
if (dropdownConfig) {
Object.assign(this, dropdownConfig);
}
}
/**
* Set dropdown translations.
* @param {?} value Dropdown translations object.
* @return {?}
*/
set translations(value) {
this.baseTranslations = Object.assign({}, this.baseTranslations, value);
}
/**
* Get dropdown translations.
* @return {?} Dropdown translations.
*/
get translations() {
return this.baseTranslations;
}
/**
* Get display text by source option.
* @param {?} option Source option object.
* @return {?} Display text.
*/
getDisplayText(option) {
return get(option, this.displayTrackBy);
}
}
DropdownConfigService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
DropdownConfigService.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [DROPDOWN_CONFIG,] }] }
];
if (false) {
/** @type {?} */
DropdownConfigService.prototype.baseTranslations;
/** @type {?} */
DropdownConfigService.prototype.selectTrackBy;
/** @type {?} */
DropdownConfigService.prototype.displayTrackBy;
/** @type {?} */
DropdownConfigService.prototype.disabledTrackBy;
/** @type {?} */
DropdownConfigService.prototype.menuPosition;
/** @type {?} */
DropdownConfigService.prototype.selectMode;
/** @type {?} */
DropdownConfigService.prototype.filterable;
/** @type {?} */
DropdownConfigService.prototype.filterDebounce;
/** @type {?} */
DropdownConfigService.prototype.filterDebounceTime;
/** @type {?} */
DropdownConfigService.prototype.groupByField;
/** @type {?} */
DropdownConfigService.prototype.wrapDisplaySelectLimit;
/** @type {?} */
DropdownConfigService.prototype.showSelectedOptionRemoveButton;
/** @type {?} */
DropdownConfigService.prototype.showClearSelectionButton;
/** @type {?} */
DropdownConfigService.prototype.menuWidth;
/** @type {?} */
DropdownConfigService.prototype.menuHeight;
/** @type {?} */
DropdownConfigService.prototype.loadOnScroll;
/** @type {?} */
DropdownConfigService.prototype.loadViewDistanceRatio;
/** @type {?} */
DropdownConfigService.prototype.limit;
/** @type {?} */
DropdownConfigService.prototype.loadDataOnInit;
/** @type {?} */
DropdownConfigService.prototype.closeMenuOnSelect;
/** @type {?} */
DropdownConfigService.prototype.showOptionSelectCheckbox;
/** @type {?} */
DropdownConfigService.prototype.showOptionIndex;
/** @type {?} */
DropdownConfigService.prototype.showOptionTrackBy;
/** @type {?} */
DropdownConfigService.prototype.multiSelectOptionMaxWidth;
/** @type {?} */
DropdownConfigService.prototype.setFirstOptionSelected;
/** @type {?} */
DropdownConfigService.prototype.triggerSelectChangeOnInit;
/** @type {?} */
DropdownConfigService.prototype.triggerSelectChangeOnModelUpdate;
/** @type {?} */
DropdownConfigService.prototype.triggerSelectChangeOnFirstOptionSelect;
/** @type {?} */
DropdownConfigService.prototype.dynamicDimensionCalculation;
/** @type {?} */
DropdownConfigService.prototype.dynamicWidthRatio;
/** @type {?} */
DropdownConfigService.prototype.dynamicHeightRatio;
/** @type {?} */
DropdownConfigService.prototype.relativeParentElement;
/**
* @type {?}
* @private
*/
DropdownConfigService.prototype.dropdownConfig;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9vcm5hbWVudHVtLyIsInNvdXJjZXMiOlsiZHJvcGRvd24vc2VydmljZXMvZHJvcGRvd24tY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBU2xFLE1BQU0sT0FBTyxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQWtCLGdCQUFnQixDQUFDOzs7OztBQU9wRixNQUFNLE9BQU8scUJBQXFCOzs7O0lBd0NoQyxZQUE2QyxjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUF2Q3BFLHFCQUFnQixHQUF5QjtZQUM5QyxhQUFhLEVBQUUsc0JBQXNCO1lBQ3JDLGlCQUFpQixFQUFFLFFBQVE7WUFDM0IsNkJBQTZCLEVBQUUsU0FBUztZQUN4QyxpQkFBaUIsRUFBRSxRQUFRO1NBQzVCLENBQUM7UUFFSyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixtQkFBYyxHQUFHLE9BQU8sQ0FBQztRQUN6QixvQkFBZSxHQUFHLFVBQVUsQ0FBQztRQUM3QixpQkFBWSxHQUFpQixhQUFhLENBQUM7UUFDM0MsZUFBVSxHQUF1QixlQUFlLENBQUM7UUFDakQsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0Qix1QkFBa0IsR0FBRyxHQUFHLENBQUM7UUFDekIsaUJBQVksR0FBVyxTQUFTLENBQUM7UUFDakMsMkJBQXNCLEdBQVcsU0FBUyxDQUFDO1FBQzNDLG1DQUE4QixHQUFHLEtBQUssQ0FBQztRQUN2Qyw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDakMsY0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNoQixlQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLDBCQUFxQixHQUFHLENBQUMsQ0FBQztRQUMxQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUNqQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsOEJBQXlCLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUMvQiw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDbEMscUNBQWdDLEdBQUcsS0FBSyxDQUFDO1FBQ3pDLDJDQUFzQyxHQUFHLEtBQUssQ0FBQztRQUMvQyxnQ0FBMkIsR0FBRyxLQUFLLENBQUM7UUFDcEMsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLHVCQUFrQixHQUFHLEdBQUcsQ0FBQztRQUN6QiwwQkFBcUIsR0FBRyxTQUFTLENBQUM7UUFHdkMsSUFBSSxjQUFjLEVBQUU7WUFDbEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDOzs7Ozs7SUFNRCxJQUFXLFlBQVksQ0FBQyxLQUEyQjtRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLHFCQUFRLElBQUksQ0FBQyxnQkFBZ0IsRUFBSyxLQUFLLENBQUUsQ0FBQztJQUNqRSxDQUFDOzs7OztJQU1ELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDOzs7Ozs7SUFPTSxjQUFjLENBQUMsTUFBVztRQUMvQixPQUFPLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OztZQXRFRixVQUFVOzs7OzRDQXlDSSxNQUFNLFNBQUMsZUFBZTs7OztJQXZDbkMsaURBS0U7O0lBRUYsOENBQTZCOztJQUM3QiwrQ0FBZ0M7O0lBQ2hDLGdEQUFvQzs7SUFDcEMsNkNBQWtEOztJQUNsRCwyQ0FBd0Q7O0lBQ3hELDJDQUEwQjs7SUFDMUIsK0NBQTZCOztJQUM3QixtREFBZ0M7O0lBQ2hDLDZDQUF3Qzs7SUFDeEMsdURBQWtEOztJQUNsRCwrREFBOEM7O0lBQzlDLHlEQUF3Qzs7SUFDeEMsMENBQXVCOztJQUN2QiwyQ0FBd0I7O0lBQ3hCLDZDQUE0Qjs7SUFDNUIsc0RBQWlDOztJQUNqQyxzQ0FBa0I7O0lBQ2xCLCtDQUE2Qjs7SUFDN0Isa0RBQWlDOztJQUNqQyx5REFBd0M7O0lBQ3hDLGdEQUErQjs7SUFDL0Isa0RBQWlDOztJQUNqQywwREFBdUM7O0lBQ3ZDLHVEQUFzQzs7SUFDdEMsMERBQXlDOztJQUN6QyxpRUFBZ0Q7O0lBQ2hELHVFQUFzRDs7SUFDdEQsNERBQTJDOztJQUMzQyxrREFBNkI7O0lBQzdCLG1EQUFnQzs7SUFDaEMsc0RBQXlDOzs7OztJQUU3QiwrQ0FBK0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGdldCB9IGZyb20gJy4uLy4uL3V0aWxpdHkvc2VydmljZXMvb2JqZWN0LXV0aWxpdHkuY2xhc3MnO1xuXG5pbXBvcnQgeyBEcm9wZG93bkNvbmZpZyB9IGZyb20gJy4uL21vZGVscy9kcm9wZG93bi1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgRHJvcGRvd25UcmFuc2xhdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvZHJvcGRvd24tdHJhbnNsYXRpb25zLm1vZGVsJztcbmltcG9ydCB7IERhdGFUYWJsZUNvbmZpZyB9IGZyb20gJy4uLy4uL2RhdGEtdGFibGUvbW9kZWxzL2RhdGEtdGFibGUtY29uZmlnLm1vZGVsJztcblxuaW1wb3J0IHsgRHJvcGRvd25TZWxlY3RNb2RlIH0gZnJvbSAnLi4vbW9kZWxzL2Ryb3Bkb3duLXNlbGVjdC1tb2RlLm1vZGVsJztcbmltcG9ydCB7IFZpZXdQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdHkvbW9kZWxzL3ZpZXctcG9zaXRpb24ubW9kZWwnO1xuXG5leHBvcnQgY29uc3QgRFJPUERPV05fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPERhdGFUYWJsZUNvbmZpZz4oJ2Ryb3Bkb3duQ29uZmlnJyk7XG5cbi8qKlxuICogRHJvcGRvd24gY29uZmlnIHNlcnZpY2UuIEhvbGRzIGFsbCB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25zIG9mIGRyb3Bkb3duIHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuIHdoaWxlIGltcG9ydGluZyB0aGUgbW9kdWxlLlxuICogVXNlZCB0byBtYW5hZ2UgZHJvcGRvd24gYmFzZSBjb25maWd1cmF0aW9uIHN0YXRlLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db25maWdTZXJ2aWNlIGltcGxlbWVudHMgRHJvcGRvd25Db25maWcge1xuICBwdWJsaWMgYmFzZVRyYW5zbGF0aW9uczogRHJvcGRvd25UcmFuc2xhdGlvbnMgPSB7XG4gICAgbm9EYXRhTWVzc2FnZTogJ05vIFJlc3VsdHMgQXZhaWxhYmxlJyxcbiAgICBmaWx0ZXJQbGFjZWhvbGRlcjogJ1NlYXJjaCcsXG4gICAgc2VsZWN0ZWRPcHRpb25XcmFwUGxhY2Vob2xkZXI6ICdPcHRpb25zJyxcbiAgICBzZWxlY3RQbGFjZWhvbGRlcjogJ1NlbGVjdCdcbiAgfTtcblxuICBwdWJsaWMgc2VsZWN0VHJhY2tCeSA9ICdrZXknO1xuICBwdWJsaWMgZGlzcGxheVRyYWNrQnkgPSAndmFsdWUnO1xuICBwdWJsaWMgZGlzYWJsZWRUcmFja0J5ID0gJ2Rpc2FibGVkJztcbiAgcHVibGljIG1lbnVQb3NpdGlvbjogVmlld1Bvc2l0aW9uID0gJ2JvdHRvbS1sZWZ0JztcbiAgcHVibGljIHNlbGVjdE1vZGU6IERyb3Bkb3duU2VsZWN0TW9kZSA9ICdzaW5nbGUtdG9nZ2xlJztcbiAgcHVibGljIGZpbHRlcmFibGUgPSBmYWxzZTtcbiAgcHVibGljIGZpbHRlckRlYm91bmNlID0gdHJ1ZTtcbiAgcHVibGljIGZpbHRlckRlYm91bmNlVGltZSA9IDUwMDtcbiAgcHVibGljIGdyb3VwQnlGaWVsZDogc3RyaW5nID0gdW5kZWZpbmVkO1xuICBwdWJsaWMgd3JhcERpc3BsYXlTZWxlY3RMaW1pdDogbnVtYmVyID0gdW5kZWZpbmVkO1xuICBwdWJsaWMgc2hvd1NlbGVjdGVkT3B0aW9uUmVtb3ZlQnV0dG9uID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93Q2xlYXJTZWxlY3Rpb25CdXR0b24gPSBmYWxzZTtcbiAgcHVibGljIG1lbnVXaWR0aCA9IDMyMDtcbiAgcHVibGljIG1lbnVIZWlnaHQgPSAyNTA7XG4gIHB1YmxpYyBsb2FkT25TY3JvbGwgPSBmYWxzZTtcbiAgcHVibGljIGxvYWRWaWV3RGlzdGFuY2VSYXRpbyA9IDE7XG4gIHB1YmxpYyBsaW1pdCA9IDE1O1xuICBwdWJsaWMgbG9hZERhdGFPbkluaXQgPSB0cnVlO1xuICBwdWJsaWMgY2xvc2VNZW51T25TZWxlY3QgPSBmYWxzZTtcbiAgcHVibGljIHNob3dPcHRpb25TZWxlY3RDaGVja2JveCA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd09wdGlvbkluZGV4ID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93T3B0aW9uVHJhY2tCeSA9IGZhbHNlO1xuICBwdWJsaWMgbXVsdGlTZWxlY3RPcHRpb25NYXhXaWR0aCA9IDEzNTtcbiAgcHVibGljIHNldEZpcnN0T3B0aW9uU2VsZWN0ZWQgPSBmYWxzZTtcbiAgcHVibGljIHRyaWdnZXJTZWxlY3RDaGFuZ2VPbkluaXQgPSBmYWxzZTtcbiAgcHVibGljIHRyaWdnZXJTZWxlY3RDaGFuZ2VPbk1vZGVsVXBkYXRlID0gZmFsc2U7XG4gIHB1YmxpYyB0cmlnZ2VyU2VsZWN0Q2hhbmdlT25GaXJzdE9wdGlvblNlbGVjdCA9IGZhbHNlO1xuICBwdWJsaWMgZHluYW1pY0RpbWVuc2lvbkNhbGN1bGF0aW9uID0gZmFsc2U7XG4gIHB1YmxpYyBkeW5hbWljV2lkdGhSYXRpbyA9IDE7XG4gIHB1YmxpYyBkeW5hbWljSGVpZ2h0UmF0aW8gPSAwLjU7XG4gIHB1YmxpYyByZWxhdGl2ZVBhcmVudEVsZW1lbnQgPSB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChEUk9QRE9XTl9DT05GSUcpIHByaXZhdGUgZHJvcGRvd25Db25maWc6IERyb3Bkb3duQ29uZmlnKSB7XG4gICAgaWYgKGRyb3Bkb3duQ29uZmlnKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRyb3Bkb3duQ29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IGRyb3Bkb3duIHRyYW5zbGF0aW9ucy5cbiAgICogQHBhcmFtIHZhbHVlIERyb3Bkb3duIHRyYW5zbGF0aW9ucyBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgc2V0IHRyYW5zbGF0aW9ucyh2YWx1ZTogRHJvcGRvd25UcmFuc2xhdGlvbnMpIHtcbiAgICB0aGlzLmJhc2VUcmFuc2xhdGlvbnMgPSB7IC4uLnRoaXMuYmFzZVRyYW5zbGF0aW9ucywgLi4udmFsdWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZHJvcGRvd24gdHJhbnNsYXRpb25zLlxuICAgKiBAcmV0dXJuIERyb3Bkb3duIHRyYW5zbGF0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBnZXQgdHJhbnNsYXRpb25zKCk6IERyb3Bkb3duVHJhbnNsYXRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlVHJhbnNsYXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkaXNwbGF5IHRleHQgYnkgc291cmNlIG9wdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbiBTb3VyY2Ugb3B0aW9uIG9iamVjdC5cbiAgICogQHJldHVybiBEaXNwbGF5IHRleHQuXG4gICAqL1xuICBwdWJsaWMgZ2V0RGlzcGxheVRleHQob3B0aW9uOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXQob3B0aW9uLCB0aGlzLmRpc3BsYXlUcmFja0J5KTtcbiAgfVxufVxuIl19