ngx-schema-forms
Version:
New features: - Ajv schema validator. - Angular forms compatible: Property tree is created using FormGroup, FormArray and FormControl classes. - Array now properly loads initial data from model. - WidgetTyep: WidgetRegistry now supports WidgetType, now wo
75 lines (74 loc) • 4.86 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
/** @enum {string} */
const WidgetType = {
Field: 'field',
Fieldset: 'fieldset',
Button: 'button',
};
export { WidgetType };
export class WidgetRegistry {
constructor() {
this.widgets = {};
this.defaultWidget = {};
}
/**
* @param {?} widget
* @param {?=} type
* @return {?}
*/
setDefaultWidget(widget, type = WidgetType.Field) {
this.defaultWidget[type] = widget;
}
/**
* @param {?=} type
* @return {?}
*/
getDefaultWidget(type = WidgetType.Field) {
return this.defaultWidget[type];
}
/**
* @param {?} id
* @param {?=} type
* @return {?}
*/
hasWidget(id, type = WidgetType.Field) {
if (!this.widgets.hasOwnProperty(type)) {
return false;
}
return this.widgets[type].hasOwnProperty(id);
}
/**
* @param {?} id
* @param {?} widget
* @param {?=} type
* @return {?}
*/
register(id, widget, type = WidgetType.Field) {
if (!this.widgets.hasOwnProperty(type)) {
this.widgets[type] = {};
}
this.widgets[type][id] = widget;
}
/**
* @template T
* @param {?} id
* @param {?=} type
* @return {?}
*/
getWidgetType(id, type = WidgetType.Field) {
if (this.hasWidget(id, type)) {
return this.widgets[type][id];
}
return this.getDefaultWidget(type);
}
}
if (false) {
/** @type {?} */
WidgetRegistry.prototype.widgets;
/** @type {?} */
WidgetRegistry.prototype.defaultWidget;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cmVnaXN0cnkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtc2NoZW1hLWZvcm1zLyIsInNvdXJjZXMiOlsibGliL3dpZGdldHJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztJQUdFLE9BQVEsT0FBTztJQUNmLFVBQVcsVUFBVTtJQUNyQixRQUFTLFFBQVE7OztBQUduQixNQUFNOzt1QkFFeUQsRUFBRTs2QkFFZCxFQUFFOzs7Ozs7O0lBRW5ELGdCQUFnQixDQUFDLE1BQVcsRUFBRSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUs7UUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7S0FDbkM7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLO1FBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2pDOzs7Ozs7SUFFRCxTQUFTLENBQUMsRUFBVSxFQUFFLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSztRQUMzQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDOUM7Ozs7Ozs7SUFFRCxRQUFRLENBQUMsRUFBVSxFQUFFLE1BQVcsRUFBRSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUs7UUFDdkQsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztLQUNqQzs7Ozs7OztJQUVELGFBQWEsQ0FBVSxFQUFVLEVBQUUsSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLO1FBQ3hELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMvQjtRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDcEM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8gVE9ETyBhZGQgYnV0dG9uIHR5cGVcbmV4cG9ydCBlbnVtIFdpZGdldFR5cGUge1xuICBGaWVsZCA9ICdmaWVsZCcsXG4gIEZpZWxkc2V0ID0gJ2ZpZWxkc2V0JyxcbiAgQnV0dG9uID0gJ2J1dHRvbidcbn1cblxuZXhwb3J0IGNsYXNzIFdpZGdldFJlZ2lzdHJ5IHtcblxuICBwcml2YXRlIHdpZGdldHM6IHsgW3R5cGU6IHN0cmluZ106IHsgW2lkOiBzdHJpbmddOiBhbnkgfSB9ID0ge307XG5cbiAgcHJpdmF0ZSBkZWZhdWx0V2lkZ2V0OiB7IFt0eXBlOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIHNldERlZmF1bHRXaWRnZXQod2lkZ2V0OiBhbnksIHR5cGUgPSBXaWRnZXRUeXBlLkZpZWxkKSB7XG4gICAgdGhpcy5kZWZhdWx0V2lkZ2V0W3R5cGVdID0gd2lkZ2V0O1xuICB9XG5cbiAgZ2V0RGVmYXVsdFdpZGdldCh0eXBlID0gV2lkZ2V0VHlwZS5GaWVsZCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRXaWRnZXRbdHlwZV07XG4gIH1cblxuICBoYXNXaWRnZXQoaWQ6IHN0cmluZywgdHlwZSA9IFdpZGdldFR5cGUuRmllbGQpIHtcbiAgICBpZiAoIXRoaXMud2lkZ2V0cy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy53aWRnZXRzW3R5cGVdLmhhc093blByb3BlcnR5KGlkKTtcbiAgfVxuXG4gIHJlZ2lzdGVyKGlkOiBzdHJpbmcsIHdpZGdldDogYW55LCB0eXBlID0gV2lkZ2V0VHlwZS5GaWVsZCkge1xuICAgIGlmICghdGhpcy53aWRnZXRzLmhhc093blByb3BlcnR5KHR5cGUpKSB7XG4gICAgICB0aGlzLndpZGdldHNbdHlwZV0gPSB7fTtcbiAgICB9XG4gICAgdGhpcy53aWRnZXRzW3R5cGVdW2lkXSA9IHdpZGdldDtcbiAgfVxuXG4gIGdldFdpZGdldFR5cGU8VCA9IGFueT4oaWQ6IHN0cmluZywgdHlwZSA9IFdpZGdldFR5cGUuRmllbGQpOiBUIHtcbiAgICBpZiAodGhpcy5oYXNXaWRnZXQoaWQsIHR5cGUpKSB7XG4gICAgICByZXR1cm4gdGhpcy53aWRnZXRzW3R5cGVdW2lkXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdFdpZGdldCh0eXBlKTtcbiAgfVxufVxuIl19