UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

58 lines 8.23 kB
import { FormControl } from '@angular/forms'; import { filter, map, startWith } from 'rxjs/operators'; /** * Represents a search category configuration input. * * Should handle all the logic related to autocomplete search configuration inputs. * If this class has its `type` set to `OPERATOR` it works mostly as a placeholder object, because the * operator and operand selection logic is handled by the {@link Category} class. * This behavior might be changed in future releases. */ export class ConfigurationInput { type; label; displayBold; _autocompleteOptions; _formControl; _filteredOptions$; /** * @param type the type of the configuration input * @param label the translation path for the label of the input * @param displayBold whether the configuration input should be displayed in bold after selection or not * @param _autocompleteOptions the autocomplete options that are available in this configuration input * @param filterOptions a method that receives the keys of the available options and should return * the appropriately filtered autocomplete options */ constructor(type, label, displayBold, _autocompleteOptions, filterOptions) { this.type = type; this.label = label; this.displayBold = displayBold; this._autocompleteOptions = _autocompleteOptions; this._formControl = new FormControl(); this._filteredOptions$ = this._formControl.valueChanges.pipe(startWith(''), filter(newValue => typeof newValue === 'string'), map(newValue => { return filterOptions(Array.from(this._autocompleteOptions.keys()), newValue); })); } get formControl() { return this._formControl; } get isOptionSelected() { return !!this._formControl.value && (typeof this._formControl.value !== 'string'); } get selectedOptionTranslatePath() { return this.isOptionSelected ? this._formControl.value.text : ''; } get filteredOptions$() { return this._filteredOptions$; } /** * Value changes of the encapsulated `FormControl` object */ valueChanges$() { return this._formControl.valueChanges; } clear() { this._formControl.setValue(undefined); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvc2VhcmNoL21vZGVscy9jb25maWd1cmF0aW9uLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQWNSO0lBQ0E7SUFDQTtJQUNHO0lBZlosWUFBWSxDQUFtQjtJQUUvQixpQkFBaUIsQ0FBdUQ7SUFFbEY7Ozs7Ozs7T0FPRztJQUNILFlBQW1CLElBQTZELEVBQzdELEtBQWEsRUFDYixXQUFvQixFQUNqQixvQkFBaUQsRUFDM0QsYUFBd0c7UUFKakcsU0FBSSxHQUFKLElBQUksQ0FBeUQ7UUFDN0QsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGdCQUFXLEdBQVgsV0FBVyxDQUFTO1FBQ2pCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBNkI7UUFFbkUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRXRDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3hELFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFDYixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsRUFDaEQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ1gsT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVqRixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsSUFBVywyQkFBMkI7UUFDbEMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7SUFDMUMsQ0FBQztJQUVNLEtBQUs7UUFDUixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NlYXJjaElucHV0VHlwZX0gZnJvbSAnLi9jYXRlZ29yeS9zZWFyY2gtaW5wdXQtdHlwZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtTZWFyY2hBdXRvY29tcGxldGVPcHRpb259IGZyb20gJy4vY2F0ZWdvcnkvc2VhcmNoLWF1dG9jb21wbGV0ZS1vcHRpb24nO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgc3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNlYXJjaCBjYXRlZ29yeSBjb25maWd1cmF0aW9uIGlucHV0LlxuICpcbiAqIFNob3VsZCBoYW5kbGUgYWxsIHRoZSBsb2dpYyByZWxhdGVkIHRvIGF1dG9jb21wbGV0ZSBzZWFyY2ggY29uZmlndXJhdGlvbiBpbnB1dHMuXG4gKiBJZiB0aGlzIGNsYXNzIGhhcyBpdHMgYHR5cGVgIHNldCB0byBgT1BFUkFUT1JgIGl0IHdvcmtzIG1vc3RseSBhcyBhIHBsYWNlaG9sZGVyIG9iamVjdCwgYmVjYXVzZSB0aGVcbiAqIG9wZXJhdG9yIGFuZCBvcGVyYW5kIHNlbGVjdGlvbiBsb2dpYyBpcyBoYW5kbGVkIGJ5IHRoZSB7QGxpbmsgQ2F0ZWdvcnl9IGNsYXNzLlxuICogVGhpcyBiZWhhdmlvciBtaWdodCBiZSBjaGFuZ2VkIGluIGZ1dHVyZSByZWxlYXNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25JbnB1dCB7XG5cbiAgICBwcm90ZWN0ZWQgX2Zvcm1Db250cm9sOiBGb3JtQ29udHJvbDxhbnk+O1xuXG4gICAgcHJvdGVjdGVkIF9maWx0ZXJlZE9wdGlvbnMkOiBPYnNlcnZhYmxlPEFycmF5PFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbjx1bmtub3duPj4+O1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHR5cGUgdGhlIHR5cGUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaW5wdXRcbiAgICAgKiBAcGFyYW0gbGFiZWwgdGhlIHRyYW5zbGF0aW9uIHBhdGggZm9yIHRoZSBsYWJlbCBvZiB0aGUgaW5wdXRcbiAgICAgKiBAcGFyYW0gZGlzcGxheUJvbGQgd2hldGhlciB0aGUgY29uZmlndXJhdGlvbiBpbnB1dCBzaG91bGQgYmUgZGlzcGxheWVkIGluIGJvbGQgYWZ0ZXIgc2VsZWN0aW9uIG9yIG5vdFxuICAgICAqIEBwYXJhbSBfYXV0b2NvbXBsZXRlT3B0aW9ucyB0aGUgYXV0b2NvbXBsZXRlIG9wdGlvbnMgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbiBpbnB1dFxuICAgICAqIEBwYXJhbSBmaWx0ZXJPcHRpb25zIGEgbWV0aG9kIHRoYXQgcmVjZWl2ZXMgdGhlIGtleXMgb2YgdGhlIGF2YWlsYWJsZSBvcHRpb25zIGFuZCBzaG91bGQgcmV0dXJuXG4gICAgICogdGhlIGFwcHJvcHJpYXRlbHkgZmlsdGVyZWQgYXV0b2NvbXBsZXRlIG9wdGlvbnNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdHlwZTogU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURSB8IFNlYXJjaElucHV0VHlwZS5PUEVSQVRPUixcbiAgICAgICAgICAgICAgICBwdWJsaWMgbGFiZWw6IHN0cmluZyxcbiAgICAgICAgICAgICAgICBwdWJsaWMgZGlzcGxheUJvbGQ6IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9hdXRvY29tcGxldGVPcHRpb25zOiBNYXA8c3RyaW5nLCBBcnJheTx1bmtub3duPj4sXG4gICAgICAgICAgICAgICAgZmlsdGVyT3B0aW9uczogKG9wdGlvbktleXM6IEFycmF5PHN0cmluZz4sIG5ld1ZhbHVlOiBzdHJpbmcpID0+IEFycmF5PFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbjx1bmtub3duPj4pIHtcbiAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcblxuICAgICAgICB0aGlzLl9maWx0ZXJlZE9wdGlvbnMkID0gdGhpcy5fZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgICAgICAgZmlsdGVyKG5ld1ZhbHVlID0+IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ3N0cmluZycpLFxuICAgICAgICAgICAgbWFwKG5ld1ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyT3B0aW9ucyhBcnJheS5mcm9tKHRoaXMuX2F1dG9jb21wbGV0ZU9wdGlvbnMua2V5cygpKSwgbmV3VmFsdWUpO1xuXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZm9ybUNvbnRyb2woKTogRm9ybUNvbnRyb2w8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzT3B0aW9uU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2Zvcm1Db250cm9sLnZhbHVlICYmICh0eXBlb2YgdGhpcy5fZm9ybUNvbnRyb2wudmFsdWUgIT09ICdzdHJpbmcnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkT3B0aW9uVHJhbnNsYXRlUGF0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09wdGlvblNlbGVjdGVkID8gdGhpcy5fZm9ybUNvbnRyb2wudmFsdWUudGV4dCA6ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsdGVyZWRPcHRpb25zJCgpOiBPYnNlcnZhYmxlPEFycmF5PFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbjx1bmtub3duPj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlcmVkT3B0aW9ucyQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsdWUgY2hhbmdlcyBvZiB0aGUgZW5jYXBzdWxhdGVkIGBGb3JtQ29udHJvbGAgb2JqZWN0XG4gICAgICovXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlcyQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1Db250cm9sLnZhbHVlQ2hhbmdlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Zvcm1Db250cm9sLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgfVxufVxuIl19