@nova-ui/bits
Version:
SolarWinds Nova Framework
41 lines • 6.91 kB
JavaScript
// © 2022 SolarWinds Worldwide, LLC. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import { Subject } from "rxjs";
/*
* Extract a touched changed observable from an abstract control
* @param control AbstractControl like object with markAsTouched method
*/
export const extractTouchedChanges = (control) => {
const prevMarkAsTouched = control.markAsTouched;
const prevMarkAsUntouched = control.markAsUntouched;
const touchedChanges$ = new Subject();
function nextMarkAsTouched(...args) {
touchedChanges$.next(true);
prevMarkAsTouched.bind(control)(...args);
}
function nextMarkAsUntouched(...args) {
touchedChanges$.next(false);
prevMarkAsUntouched.bind(control)(...args);
}
control.markAsTouched = nextMarkAsTouched;
control.markAsUntouched = nextMarkAsUntouched;
return touchedChanges$;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91Y2hlZC1jaGFuZ2VzLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZm9ybS1maWVsZC90b3VjaGVkLWNoYW5nZXMtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDtBQUN6RCxFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsK0VBQStFO0FBQy9FLDhFQUE4RTtBQUM5RSw0REFBNEQ7QUFDNUQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSx1REFBdUQ7QUFDdkQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBQy9FLDBFQUEwRTtBQUMxRSxpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLGlCQUFpQjtBQUdqQixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBWTNDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQ2pDLE9BQXlFLEVBQ3RELEVBQUU7SUFDckIsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQ2hELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQztJQUVwRCxNQUFNLGVBQWUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0lBRS9DLFNBQVMsaUJBQWlCLENBQ3RCLEdBQUcsSUFBcUQ7UUFFeEQsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsU0FBUyxtQkFBbUIsQ0FDeEIsR0FBRyxJQUF1RDtRQUUxRCxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDO0lBQzFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsbUJBQW1CLENBQUM7SUFFOUMsT0FBTyxlQUFlLENBQUM7QUFDM0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gwqkgMjAyMiBTb2xhcldpbmRzIFdvcmxkd2lkZSwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuLy8gIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vICBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5cbi8qKlxuICogRXh0cmFjdCBhcmd1bWVudHMgb2YgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IHR5cGUgQXJndW1lbnRzVHlwZTxGPiA9IEYgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gYW55ID8gQSA6IG5ldmVyO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGxpa2UgTy4gT3B0aW9uYWxseSBwcm92aWRlIG1pbmltdW0gc2V0IG9mIHByb3BlcnRpZXMgUCB3aGljaCB0aGUgb2JqZWN0cyBtdXN0IHNoYXJlIHRvIGNvbmZvcm1cbiAqL1xudHlwZSBPYmplY3RMaWtlPE8gZXh0ZW5kcyBvYmplY3QsIFAgZXh0ZW5kcyBrZXlvZiBPID0ga2V5b2YgTz4gPSBQaWNrPE8sIFA+O1xuXG4vKlxuICogRXh0cmFjdCBhIHRvdWNoZWQgY2hhbmdlZCBvYnNlcnZhYmxlIGZyb20gYW4gYWJzdHJhY3QgY29udHJvbFxuICogQHBhcmFtIGNvbnRyb2wgQWJzdHJhY3RDb250cm9sIGxpa2Ugb2JqZWN0IHdpdGggbWFya0FzVG91Y2hlZCBtZXRob2RcbiAqL1xuZXhwb3J0IGNvbnN0IGV4dHJhY3RUb3VjaGVkQ2hhbmdlcyA9IChcbiAgICBjb250cm9sOiBPYmplY3RMaWtlPEFic3RyYWN0Q29udHJvbCwgXCJtYXJrQXNUb3VjaGVkXCIgfCBcIm1hcmtBc1VudG91Y2hlZFwiPlxuKTogT2JzZXJ2YWJsZTxib29sZWFuPiA9PiB7XG4gICAgY29uc3QgcHJldk1hcmtBc1RvdWNoZWQgPSBjb250cm9sLm1hcmtBc1RvdWNoZWQ7XG4gICAgY29uc3QgcHJldk1hcmtBc1VudG91Y2hlZCA9IGNvbnRyb2wubWFya0FzVW50b3VjaGVkO1xuXG4gICAgY29uc3QgdG91Y2hlZENoYW5nZXMkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGZ1bmN0aW9uIG5leHRNYXJrQXNUb3VjaGVkKFxuICAgICAgICAuLi5hcmdzOiBBcmd1bWVudHNUeXBlPEFic3RyYWN0Q29udHJvbFtcIm1hcmtBc1RvdWNoZWRcIl0+XG4gICAgKSB7XG4gICAgICAgIHRvdWNoZWRDaGFuZ2VzJC5uZXh0KHRydWUpO1xuICAgICAgICBwcmV2TWFya0FzVG91Y2hlZC5iaW5kKGNvbnRyb2wpKC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5leHRNYXJrQXNVbnRvdWNoZWQoXG4gICAgICAgIC4uLmFyZ3M6IEFyZ3VtZW50c1R5cGU8QWJzdHJhY3RDb250cm9sW1wibWFya0FzVW50b3VjaGVkXCJdPlxuICAgICkge1xuICAgICAgICB0b3VjaGVkQ2hhbmdlcyQubmV4dChmYWxzZSk7XG4gICAgICAgIHByZXZNYXJrQXNVbnRvdWNoZWQuYmluZChjb250cm9sKSguLi5hcmdzKTtcbiAgICB9XG5cbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQgPSBuZXh0TWFya0FzVG91Y2hlZDtcbiAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCA9IG5leHRNYXJrQXNVbnRvdWNoZWQ7XG5cbiAgICByZXR1cm4gdG91Y2hlZENoYW5nZXMkO1xufTtcbiJdfQ==