UNPKG

e5core-angular-ui

Version:

e5 Anywhere Angular UI

199 lines 17.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ChangeDetectionStrategy, Input, ViewChild, Output, EventEmitter } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { E5ConfigurationService as e5Config } from 'e5core-angular-services'; import { E5coreUiSelectFromListMaterialComponent } from './component/e5core-ui-select-from-list-material.component'; import { UiStyleService } from '../../services/ui-style.service'; import { DataSourceQuery } from '../../datasource/data-source-query'; import { DocumentDataSourceService } from '../../datasource/document-data-source.service'; var E5coreUiSelectFromListComponent = /** @class */ (function () { function E5coreUiSelectFromListComponent(config, style, datasource) { this.config = config; this.style = style; this.datasource = datasource; this.folderName = ""; this.fieldsToShow = null; //Refer to http://blog.softartisans.com/2009/12/08/list-of-internal-names-for-sharepoint-fields //Refer to http://blog.softartisans.com/2009/12/08/list-of-internal-names-for-sharepoint-fields this.includeSelect = true; this.query = null; this.pagesizes = [5, 10, 25, 50]; this.autoSearch = true; this.readonly = false; this.listItemViewEvent = new EventEmitter(); this.listItemSelectEvent = new EventEmitter(); this.searchEvent = new EventEmitter(); } /** * @return {?} */ E5coreUiSelectFromListComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; if (typeof this.workItem$ == 'undefined') { console.error('e5core-ui-select-from-list [workItem$] must have a BehaviorSubject<WorkItemModel>'); return; } if (typeof this.workItem$ != 'undefined') { this.workItem$.subscribe(function (w) { _this.updateData(); }); } if (this.libraryId == null) { this.error = 'e5core-ui-search-results [searchDefinitionId] must be specified'; console.error(this.error); return; } this.datasource.setLibrary(this.libraryId, this.folderName, this.includeSelect, this.fieldsToShow, this.searchText); /** @type {?} */ var options = this.datasource.defaultOptions(); this.datasource.setDefaultOptions(options); }; /** * @return {?} */ E5coreUiSelectFromListComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { }; /** * @return {?} */ E5coreUiSelectFromListComponent.prototype.refresh = /** * @return {?} */ function () { this.selectFromListMaterialComponent.refresh(); }; /** * @param {?} event * @return {?} */ E5coreUiSelectFromListComponent.prototype.onListItemViewEvent = /** * @param {?} event * @return {?} */ function (event) { this.listItemViewEvent.emit({ workId: null, type: "E5SharepointAttachment", attachmentId: null, fullUrl: event.element.fullUrl, name: event.element.fullUrl }); }; /** * @param {?} event * @return {?} */ E5coreUiSelectFromListComponent.prototype.onListItemSelectEvent = /** * @param {?} event * @return {?} */ function (event) { this.listItemSelectEvent.emit(event); }; /** * @param {?} event * @return {?} */ E5coreUiSelectFromListComponent.prototype.onSearchEvent = /** * @param {?} event * @return {?} */ function (event) { debugger; this.searchText = event; this.datasource.setLibrary(this.libraryId, this.folderName, this.includeSelect, this.fieldsToShow, this.searchText); }; /** * @private * @return {?} */ E5coreUiSelectFromListComponent.prototype.updateData = /** * @private * @return {?} */ function () { }; E5coreUiSelectFromListComponent.decorators = [ { type: Component, args: [{ selector: 'e5core-ui-select-from-list', template: "\n <span *ngIf=\"workItem$\" [ngSwitch]=\"style.current()\">\n <e5core-ui-select-from-list-material *ngSwitchCase='2' [datasource]='datasource' [pagesizes]=\"pagesizes\" [query]='query' [autoSearch]='autoSearch' (listItemViewEvent)='onListItemViewEvent($event)' (listItemSelectEvent)='onListItemSelectEvent($event)' (searchEvent)='onSearchEvent($event)'></e5core-ui-select-from-list-material>\n </span>\n <div *ngIf=\"!(workItem$)\" class=\"e5core-component-error\">&lt;e5core-ui-select-from-list&gt; [workItem$] must have a BehaviorSubject&lt;WorkItemModel&gt;</div>\n ", changeDetection: ChangeDetectionStrategy.OnPush, //changeDetection: ChangeDetectionStrategy.OnPush providers: [ DocumentDataSourceService ] }] } ]; /** @nocollapse */ E5coreUiSelectFromListComponent.ctorParameters = function () { return [ { type: e5Config }, { type: UiStyleService }, { type: DocumentDataSourceService } ]; }; E5coreUiSelectFromListComponent.propDecorators = { workItem$: [{ type: Input }], libraryId: [{ type: Input }], folderName: [{ type: Input }], fieldsToShow: [{ type: Input }], includeSelect: [{ type: Input }], query: [{ type: Input }], pagesizes: [{ type: Input }], autoSearch: [{ type: Input }], readonly: [{ type: Input }], listItemViewEvent: [{ type: Output }], listItemSelectEvent: [{ type: Output }], searchEvent: [{ type: Output }], selectFromListMaterialComponent: [{ type: ViewChild, args: [E5coreUiSelectFromListMaterialComponent,] }] }; return E5coreUiSelectFromListComponent; }()); export { E5coreUiSelectFromListComponent }; if (false) { /** @type {?} */ E5coreUiSelectFromListComponent.prototype.workItem$; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.libraryId; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.folderName; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.fieldsToShow; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.includeSelect; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.query; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.pagesizes; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.autoSearch; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.readonly; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.listItemViewEvent; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.listItemSelectEvent; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.searchEvent; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.workId; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.searchText; /** * @type {?} * @private */ E5coreUiSelectFromListComponent.prototype.selectFromListMaterialComponent; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.error; /** * @type {?} * @private */ E5coreUiSelectFromListComponent.prototype.config; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.style; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.datasource; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLXNlbGVjdC1mcm9tLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZTVjb3JlLWFuZ3VsYXItdWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9lNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC9lNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxzQkFBc0IsSUFBSSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUVwSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBSTFGO0lBcUNFLHlDQUFvQixNQUFnQixFQUFTLEtBQW9CLEVBQVMsVUFBcUM7UUFBM0YsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWU7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUEyQjtRQW5CdEcsZUFBVSxHQUFZLEVBQUUsQ0FBQztRQUN6QixpQkFBWSxHQUE0QixJQUFJLENBQUMsQ0FBSSwrRkFBK0Y7O1FBQ2hKLGtCQUFhLEdBQWEsSUFBSSxDQUFDO1FBQy9CLFVBQUssR0FBcUIsSUFBSSxDQUFDO1FBQy9CLGNBQVMsR0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFD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K0JBQ0wsS0FBSztnQ0FDTCxLQUFLO3dCQUNMLEtBQUs7NEJBQ0wsS0FBSzs2QkFDTCxLQUFLOzJCQUNMLEtBQUs7b0NBRUwsTUFBTTtzQ0FDTixNQUFNOzhCQUNQLE1BQU07a0RBSUwsU0FBUyxTQUFDLHVDQUF1Qzs7SUFzRHBELHNDQUFDO0NBQUEsQUF0RkQsSUFzRkM7U0F4RVksK0JBQStCOzs7SUFFMUMsb0RBQW9EOztJQUNwRCxvREFBNEI7O0lBQzVCLHFEQUFrQzs7SUFDbEMsdURBQXNEOztJQUN0RCx3REFBd0M7O0lBQ3hDLGdEQUF3Qzs7SUFDeEMsb0RBQWdEOztJQUNoRCxxREFBcUM7O0lBQ3JDLG1EQUFvQzs7SUFFcEMsNERBQXFFOztJQUNyRSw4REFBbUQ7O0lBQ3BELHNEQUEyQzs7SUFDMUMsaURBQWlCOztJQUNqQixxREFBb0I7Ozs7O0lBRXBCLDBFQUNpRjs7SUFFbEYsZ0RBQWU7Ozs7O0lBRUYsaURBQXdCOztJQUFFLGdEQUEyQjs7SUFBRSxxREFBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBWaWV3Q2hpbGQsIEFmdGVyVmlld0luaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEU1Q29uZmlndXJhdGlvblNlcnZpY2UgYXMgZTVDb25maWcgfSBmcm9tICdlNWNvcmUtYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBXb3JrSXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dvcmstaXRlbSc7XG5pbXBvcnQgeyBFNWNvcmVVaVNlbGVjdEZyb21MaXN0TWF0ZXJpYWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudC9lNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC1tYXRlcmlhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2V5VmFsdWVQYWlyIH0gZnJvbSAnLi4vLi4vdXRpbC9rZXktdmFsdWUtcGFpcic7XG5pbXBvcnQgeyBVaVN0eWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VpLXN0eWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL2RhdGEtc291cmNlLW9wdGlvbnMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJ5IH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9kYXRhLXNvdXJjZS1xdWVyeSc7XG5pbXBvcnQgeyBEb2N1bWVudERhdGFTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9kb2N1bWVudC1kYXRhLXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpZWxkRGVmaW5pdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpZWxkLWRlZmluaXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgVmlld2VyRGlzcGxheUV2ZW50IH0gZnJvbSAnLi4vLi4vZXZlbnRzL3ZpZXdlci1kaXNwbGF5LWV2ZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZTVjb3JlLXVpLXNlbGVjdC1mcm9tLWxpc3QnLFxuICB0ZW1wbGF0ZTogYFxuICA8c3BhbiAqbmdJZj1cIndvcmtJdGVtJFwiIFtuZ1N3aXRjaF09XCJzdHlsZS5jdXJyZW50KClcIj5cbiAgICA8ZTVjb3JlLXVpLXNlbGVjdC1mcm9tLWxpc3QtbWF0ZXJpYWwgKm5nU3dpdGNoQ2FzZT0nMicgW2RhdGFzb3VyY2VdPSdkYXRhc291cmNlJyBbcGFnZXNpemVzXT1cInBhZ2VzaXplc1wiICBbcXVlcnldPSdxdWVyeScgW2F1dG9TZWFyY2hdPSdhdXRvU2VhcmNoJyAobGlzdEl0ZW1WaWV3RXZlbnQpPSdvbkxpc3RJdGVtVmlld0V2ZW50KCRldmVudCknIChsaXN0SXRlbVNlbGVjdEV2ZW50KT0nb25MaXN0SXRlbVNlbGVjdEV2ZW50KCRldmVudCknIChzZWFyY2hFdmVudCk9J29uU2VhcmNoRXZlbnQoJGV2ZW50KSc+PC9lNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC1tYXRlcmlhbD5cbiAgPC9zcGFuPlxuICA8ZGl2ICpuZ0lmPVwiISh3b3JrSXRlbSQpXCIgY2xhc3M9XCJlNWNvcmUtY29tcG9uZW50LWVycm9yXCI+Jmx0O2U1Y29yZS11aS1zZWxlY3QtZnJvbS1saXN0Jmd0OyBbd29ya0l0ZW0kXSBtdXN0IGhhdmUgYSBCZWhhdmlvclN1YmplY3QmbHQ7V29ya0l0ZW1Nb2RlbCZndDs8L2Rpdj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIC8vY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbiAgcHJvdmlkZXJzOiBbXG4gICAgRG9jdW1lbnREYXRhU291cmNlU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEU1Y29yZVVpU2VsZWN0RnJvbUxpc3RDb21wb25lbnQgIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcblxuICBASW5wdXQoKSB3b3JrSXRlbSQgOiBCZWhhdmlvclN1YmplY3Q8V29ya0l0ZW1Nb2RlbD47XG4gIEBJbnB1dCgpIGxpYnJhcnlJZCA6IG51bWJlcjtcbiAgQElucHV0KCkgZm9sZGVyTmFtZSA6IHN0cmluZyA9IFwiXCI7XG4gIEBJbnB1dCgpIGZpZWxkc1RvU2hvdyA6IEZpZWxkRGVmaW5pdGlvbk1vZGVsW10gPSBudWxsOyAgICAvL1JlZmVyIHRvIGh0dHA6Ly9ibG9nLnNvZnRhcnRpc2Fucy5jb20vMjAwOS8xMi8wOC9saXN0LW9mLWludGVybmFsLW5hbWVzLWZvci1zaGFyZXBvaW50LWZpZWxkc1xuICBASW5wdXQoKSBpbmNsdWRlU2VsZWN0IDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHF1ZXJ5IDogRGF0YVNvdXJjZVF1ZXJ5ID0gbnVsbDtcbiAgQElucHV0KCkgcGFnZXNpemVzIDogbnVtYmVyW10gPSBbNSwgMTAsIDI1LCA1MF07XG4gIEBJbnB1dCgpIGF1dG9TZWFyY2ggOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcmVhZG9ubHkgOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICBAT3V0cHV0KCkgbGlzdEl0ZW1WaWV3RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFZpZXdlckRpc3BsYXlFdmVudD4oKTtcbiAgQE91dHB1dCgpIGxpc3RJdGVtU2VsZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cdEBPdXRwdXQoKSBzZWFyY2hFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgd29ya0lkIDogc3RyaW5nIDtcbiAgc2VhcmNoVGV4dCA6IHN0cmluZztcbiAgXG4gIEBWaWV3Q2hpbGQoRTVjb3JlVWlTZWxlY3RGcm9tTGlzdE1hdGVyaWFsQ29tcG9uZW50KVxuICBwcml2YXRlIHNlbGVjdEZyb21MaXN0TWF0ZXJpYWxDb21wb25lbnQ6IEU1Y29yZVVpU2VsZWN0RnJvbUxpc3RNYXRlcmlhbENvbXBvbmVudDtcblxuXHRlcnJvcjogc3RyaW5nIDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogZTVDb25maWcsIHB1YmxpYyBzdHlsZTpVaVN0eWxlU2VydmljZSwgcHVibGljIGRhdGFzb3VyY2U6IERvY3VtZW50RGF0YVNvdXJjZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLndvcmtJdGVtJCA9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcignZTVjb3JlLXVpLXNlbGVjdC1mcm9tLWxpc3QgW3dvcmtJdGVtJF0gbXVzdCBoYXZlIGEgQmVoYXZpb3JTdWJqZWN0PFdvcmtJdGVtTW9kZWw+Jyk7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy53b3JrSXRlbSQgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMud29ya0l0ZW0kLnN1YnNjcmliZShcbiAgICAgICAgdyA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5saWJyYXJ5SWQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5lcnJvciA9ICdlNWNvcmUtdWktc2VhcmNoLXJlc3VsdHMgW3NlYXJjaERlZmluaXRpb25JZF0gbXVzdCBiZSBzcGVjaWZpZWQnIDtcbiAgICAgIGNvbnNvbGUuZXJyb3IodGhpcy5lcnJvcik7XG4gICAgICByZXR1cm4gO1xuICAgIH1cbiAgICB0aGlzLmRhdGFzb3VyY2Uuc2V0TGlicmFyeSh0aGlzLmxpYnJhcnlJZCwgdGhpcy5mb2xkZXJOYW1lLCB0aGlzLmluY2x1ZGVTZWxlY3QsIHRoaXMuZmllbGRzVG9TaG93LCB0aGlzLnNlYXJjaFRleHQpO1xuICAgIGxldCBvcHRpb25zOkRhdGFTb3VyY2VPcHRpb25zID0gdGhpcy5kYXRhc291cmNlLmRlZmF1bHRPcHRpb25zKCk7XG4gICAgdGhpcy5kYXRhc291cmNlLnNldERlZmF1bHRPcHRpb25zKG9wdGlvbnMpO1xuICB9XG4gIFxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc2VsZWN0RnJvbUxpc3RNYXRlcmlhbENvbXBvbmVudC5yZWZyZXNoKCk7XG4gIH1cbiAgXG4gIG9uTGlzdEl0ZW1WaWV3RXZlbnQoZXZlbnQpIHtcbiAgICB0aGlzLmxpc3RJdGVtVmlld0V2ZW50LmVtaXQoe3dvcmtJZDogbnVsbCwgdHlwZTogXCJFNVNoYXJlcG9pbnRBdHRhY2htZW50XCIsIGF0dGFjaG1lbnRJZDogbnVsbCwgZnVsbFVybDogZXZlbnQuZWxlbWVudC5mdWxsVXJsLCBuYW1lOiBldmVudC5lbGVtZW50LmZ1bGxVcmx9KTtcbiAgfVxuICBcbiAgb25MaXN0SXRlbVNlbGVjdEV2ZW50KGV2ZW50KSB7XG4gICAgdGhpcy5saXN0SXRlbVNlbGVjdEV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25TZWFyY2hFdmVudChldmVudCkge1xuICAgIGRlYnVnZ2VyO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IGV2ZW50O1xuICAgIHRoaXMuZGF0YXNvdXJjZS5zZXRMaWJyYXJ5KHRoaXMubGlicmFyeUlkLCB0aGlzLmZvbGRlck5hbWUsIHRoaXMuaW5jbHVkZVNlbGVjdCwgdGhpcy5maWVsZHNUb1Nob3csIHRoaXMuc2VhcmNoVGV4dCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURhdGEoKTp2b2lkIHtcbiAgfVxufSJdfQ==