@qoollo/ngx-form-url-saver
Version:
Angular directive for syncing form's data with URL query
26 lines • 3.51 kB
JavaScript
export class UnitedQueryGenerationStrategy {
constructor(formHandlingStrategy, queryKey) {
this.formHandlingStrategy = formHandlingStrategy;
this.queryKey = queryKey;
}
inferFormValueFromQuery(queryParams) {
const query = queryParams[this.queryKey];
if (!query) {
return {};
}
const formValue = this.formHandlingStrategy.parse(query);
return formValue;
}
convertFormValueToQueryObject(formValue) {
const serializedObject = this.formHandlingStrategy.stringify(formValue);
return {
[this.queryKey]: serializedObject,
};
}
createClearingObject() {
return {
[this.queryKey]: null,
};
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdGVkLXF1ZXJ5LWdlbmVyYXRpb24tc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXVybC1zYXZlci1saWIvc3JjL2xpYi9xdWVyeS1nZW5lcmF0aW9uLXN0cmF0ZWdpZXMvdW5pdGVkLXF1ZXJ5LWdlbmVyYXRpb24tc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLDZCQUE2QjtJQUd0QyxZQUNxQixvQkFBMkMsRUFDM0MsUUFBZ0I7UUFEaEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF1QjtRQUMzQyxhQUFRLEdBQVIsUUFBUSxDQUFRO0lBQ2xDLENBQUM7SUFFRyx1QkFBdUIsQ0FBQyxXQUFtQjtRQUM5QyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBVyxDQUFDO1FBRW5ELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekQsT0FBTyxTQUFtQixDQUFDO0lBQy9CLENBQUM7SUFHTSw2QkFBNkIsQ0FBQyxTQUFrQztRQUNuRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEUsT0FBTztZQUNILENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGdCQUFnQjtTQUNwQyxDQUFDO0lBQ04sQ0FBQztJQUVNLG9CQUFvQjtRQUN2QixPQUFPO1lBQ0gsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSTtTQUN4QixDQUFDO0lBQ04sQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9xdWVyeS1nZW5lcmF0aW9uLXN0cmF0ZWd5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBWYWx1ZUhhbmRsaW5nU3RyYXRlZ3kgfSBmcm9tICcuLi9mb3JtLXZhbHVlLWhhbmRsaW5nLXN0cmF0ZWdpZXMvdmFsdWUtaGFuZGxpbmctc3RyYXRlZ3kuaW50ZXJmYWNlJztcblxuXG5leHBvcnQgY2xhc3MgVW5pdGVkUXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3kgaW1wbGVtZW50cyBRdWVyeUdlbmVyYXRpb25TdHJhdGVneSB7XG5cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtSGFuZGxpbmdTdHJhdGVneTogVmFsdWVIYW5kbGluZ1N0cmF0ZWd5LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHF1ZXJ5S2V5OiBzdHJpbmcsXG4gICAgKSB7fVxuXG4gICAgcHVibGljIGluZmVyRm9ybVZhbHVlRnJvbVF1ZXJ5KHF1ZXJ5UGFyYW1zOiBQYXJhbXMpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCBxdWVyeSA9IHF1ZXJ5UGFyYW1zW3RoaXMucXVlcnlLZXldIGFzIHN0cmluZztcblxuICAgICAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1IYW5kbGluZ1N0cmF0ZWd5LnBhcnNlKHF1ZXJ5KTtcblxuICAgICAgICByZXR1cm4gZm9ybVZhbHVlIGFzIG9iamVjdDtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBjb252ZXJ0Rm9ybVZhbHVlVG9RdWVyeU9iamVjdChmb3JtVmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogb2JqZWN0IHtcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZE9iamVjdCA9IHRoaXMuZm9ybUhhbmRsaW5nU3RyYXRlZ3kuc3RyaW5naWZ5KGZvcm1WYWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFt0aGlzLnF1ZXJ5S2V5XTogc2VyaWFsaXplZE9iamVjdCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlQ2xlYXJpbmdPYmplY3QoKTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFt0aGlzLnF1ZXJ5S2V5XTogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9XG5cbn1cbiJdfQ==