novo-elements 10.7.0-next.4 → 10.7.0-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/elements/query-builder/query-builder.types.d.ts +2 -0
- package/esm2022/elements/query-builder/condition-definitions/address-condition.definition.mjs +3 -1
- package/esm2022/elements/query-builder/query-builder.types.mjs +1 -1
- package/fesm2022/novo-elements-elements-query-builder.mjs +2 -0
- package/fesm2022/novo-elements-elements-query-builder.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -72,8 +72,10 @@ export interface AddressData {
|
|
|
72
72
|
address_components: AddressComponent[];
|
|
73
73
|
formatted_address: string;
|
|
74
74
|
geometry: AddressGeometry;
|
|
75
|
+
name?: string;
|
|
75
76
|
place_id: string;
|
|
76
77
|
radius?: AddressRadius;
|
|
78
|
+
types?: string[];
|
|
77
79
|
}
|
|
78
80
|
export interface AddressRadius {
|
|
79
81
|
value: number;
|
package/esm2022/elements/query-builder/condition-definitions/address-condition.definition.mjs
CHANGED
|
@@ -101,7 +101,9 @@ export class NovoDefaultAddressConditionDef extends AbstractConditionFieldDef {
|
|
|
101
101
|
address_components: event.address_components,
|
|
102
102
|
formatted_address: event.formatted_address,
|
|
103
103
|
geometry: event.geometry,
|
|
104
|
+
name: event.name,
|
|
104
105
|
place_id: event.place_id,
|
|
106
|
+
types: event.types,
|
|
105
107
|
};
|
|
106
108
|
const current = this.getValue(formGroup);
|
|
107
109
|
const updated = Array.isArray(current) ? [...current, valueToAdd] : [valueToAdd];
|
|
@@ -279,4 +281,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
279
281
|
type: ViewChildren,
|
|
280
282
|
args: [NovoSelectElement]
|
|
281
283
|
}] } });
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1jb25kaXRpb24uZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL2VsZW1lbnRzL3F1ZXJ5LWJ1aWxkZXIvY29uZGl0aW9uLWRlZmluaXRpb25zL2FkZHJlc3MtY29uZGl0aW9uLmRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFFVCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFFbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBTyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUE2RSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUksT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFFbEU7O0dBRUc7QUFvREgsTUFBTSxPQUFPLDhCQUErQixTQUFRLHlCQUF5QjtJQXdDM0UsWUFBWSxZQUE4QjtRQUN4QyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFuQ3RCLGtCQUFrQjtRQUNsQixpQkFBWSxHQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFB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QTlCLDhCQUE4Qiw0VUFDM0IsdUJBQXVCLHdKQUd2QixpQkFBaUIsdUVBckRyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNUOzsyRkFJVSw4QkFBOEI7a0JBbkQxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsT0FBTztpQkFDakQ7cUZBRXdDLGVBQWU7c0JBQXJELFlBQVk7dUJBQUMsdUJBQXVCO2dCQUNQLGFBQWE7c0JBQTFDLFlBQVk7dUJBQUMsY0FBYztnQkFDRCxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ1EsZUFBZTtzQkFBL0MsWUFBWTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgSW5wdXRTaWduYWwsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBTaWduYWwsXG4gIHNpZ25hbCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBXcml0YWJsZVNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5vdm9QaWNrZXJUb2dnbGVFbGVtZW50IH0gZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9maWVsZCc7XG5pbXBvcnQgeyBQbGFjZXNMaXN0Q29tcG9uZW50IH0gZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9wbGFjZXMnO1xuaW1wb3J0IHsgTm92b0xhYmVsU2VydmljZSB9IGZyb20gJ25vdm8tZWxlbWVudHMvc2VydmljZXMnO1xuaW1wb3J0IHsgSGVscGVycywgS2V5IH0gZnJvbSAnbm92by1lbGVtZW50cy91dGlscyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFkZHJlc3NDcml0ZXJpYUNvbmZpZywgQWRkcmVzc0RhdGEsIEFkZHJlc3NSYWRpdXMsIEFkZHJlc3NSYWRpdXNVbml0c05hbWUsIE9wZXJhdG9yLCBSYWRpdXNVbml0cyB9IGZyb20gJy4uL3F1ZXJ5LWJ1aWxkZXIudHlwZXMnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb25kaXRpb25GaWVsZERlZiB9IGZyb20gJy4vYWJzdHJhY3QtY29uZGl0aW9uLmRlZmluaXRpb24nO1xuaW1wb3J0IHsgTm92b1NlbGVjdEVsZW1lbnQgfSBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3NlbGVjdCc7XG5cbi8qKlxuICogSGFuZGxlIHNlbGVjdGlvbiBvZiBmaWVsZCB2YWx1ZXMgd2hlbiBhIGxpc3Qgb2Ygb3B0aW9ucyBpcyBwcm92aWRlZC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm92by1hZGRyZXNzLWNvbmRpdGlvbi1kZWYnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250YWluZXIgbm92b0NvbmRpdGlvbkZpZWxkRGVmPlxuICAgICAgPG5vdm8tZmllbGQgKm5vdm9Db25kaXRpb25PcGVyYXRvcnNEZWY9XCJsZXQgZm9ybUdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgICAgPG5vdm8tc2VsZWN0IFtwbGFjZWhvbGRlcl09XCJsYWJlbHMub3BlcmF0b3JcIiBmb3JtQ29udHJvbE5hbWU9XCJvcGVyYXRvclwiIChvblNlbGVjdCk9XCJvbk9wZXJhdG9yU2VsZWN0KGZvcm1Hcm91cClcIj5cbiAgICAgICAgICA8bm92by1vcHRpb24gdmFsdWU9XCJpbmNsdWRlQW55XCI+e3sgbGFiZWxzLmluY2x1ZGVBbnkgfX08L25vdm8tb3B0aW9uPlxuICAgICAgICAgIDxub3ZvLW9wdGlvbiB2YWx1ZT1cImV4Y2x1ZGVBbnlcIj57eyBsYWJlbHMuZXhjbHVkZSB9fTwvbm92by1vcHRpb24+XG4gICAgICAgICAgPG5vdm8tb3B0aW9uIHZhbHVlPVwicmFkaXVzXCIgKm5nSWY9XCJyYWRpdXNFbmFibGVkKClcIj57eyBsYWJlbHMucmFkaXVzIH19PC9ub3ZvLW9wdGlvbj5cbiAgICAgICAgPC9ub3ZvLXNlbGVjdD5cbiAgICAgIDwvbm92by1maWVsZD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5vdm9Db25kaXRpb25JbnB1dERlZj1cImxldCBmb3JtR3JvdXA7IHZpZXdJbmRleCBhcyB2aWV3SW5kZXg7IGZpZWxkTWV0YSBhcyBtZXRhXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgICAgPG5vdm8tZmxleCBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiIGFsaWduPVwiZW5kXCI+XG4gICAgICAgICAgPG5vdm8tZmllbGQgI25vdm9SYWRpdXNGaWVsZCAqbmdJZj1cImZvcm1Hcm91cC52YWx1ZS5vcGVyYXRvciA9PT0gJ3JhZGl1cydcIiBjbGFzcz1cImFkZHJlc3MtcmFkaXVzXCI+XG4gICAgICAgICAgICA8bm92by1zZWxlY3RcbiAgICAgICAgICAgICAgI3JhZGl1c1NlbGVjdCBbcGxhY2Vob2xkZXJdPVwibGFiZWxzLnJhZGl1c1wiXG4gICAgICAgICAgICAgIChvblNlbGVjdCk9XCJvblJhZGl1c1NlbGVjdChmb3JtR3JvdXAsICRldmVudC5zZWxlY3RlZClcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwicmFkaXVzKClcIlxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJyYWRpdXNPcHRpb25zKClcIj5cbiAgICAgICAgICAgIDwvbm92by1zZWxlY3Q+XG4gICAgICAgICAgPC9ub3ZvLWZpZWxkPlxuICAgICAgICAgIDxub3ZvLWZpZWxkICNub3ZvRmllbGQgY2xhc3M9XCJhZGRyZXNzLWxvY2F0aW9uXCI+XG4gICAgICAgICAgICA8bm92by1jaGlwLWxpc3QgWyhuZ01vZGVsKV09XCJjaGlwTGlzdE1vZGVsXCIgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCIgKGNsaWNrKT1cIm9wZW5QbGFjZXNMaXN0KHZpZXdJbmRleClcIj5cbiAgICAgICAgICAgICAgPG5vdm8tY2hpcCAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnZhbHVlXCIgKHJlbW92ZWQpPVwicmVtb3ZlKGl0ZW0sIGZvcm1Hcm91cCwgdmlld0luZGV4KVwiPlxuICAgICAgICAgICAgICAgIDxub3ZvLXRleHQgZWxsaXBzaXM+e3sgaXRlbS5mb3JtYXR0ZWRfYWRkcmVzcyB9fTwvbm92by10ZXh0PlxuICAgICAgICAgICAgICAgIDxub3ZvLWljb24gbm92b0NoaXBSZW1vdmU+Y2xvc2U8L25vdm8taWNvbj5cbiAgICAgICAgICAgICAgPC9ub3ZvLWNoaXA+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIG5vdm9DaGlwSW5wdXRcbiAgICAgICAgICAgICAgICBbaWRdPVwidmlld0luZGV4XCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxzLmxvY2F0aW9uXCJcbiAgICAgICAgICAgICAgICAoa2V5dXApPVwib25LZXl1cCgkZXZlbnQsIHZpZXdJbmRleClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQsIHZpZXdJbmRleClcIlxuICAgICAgICAgICAgICAgIFtwaWNrZXJdPVwicGxhY2VzUGlja2VyXCJcbiAgICAgICAgICAgICAgICAjYWRkcmVzc0lucHV0Lz5cbiAgICAgICAgICAgIDwvbm92by1jaGlwLWxpc3Q+XG4gICAgICAgICAgICA8bm92by1waWNrZXItdG9nZ2xlIFtvdmVybGF5SWRdPVwidmlld0luZGV4XCIgaWNvbj1cImxvY2F0aW9uXCIgbm92b1N1ZmZpeD5cbiAgICAgICAgICAgICAgPGdvb2dsZS1wbGFjZXMtbGlzdFxuICAgICAgICAgICAgICAgIFt0ZXJtXT1cInRlcm1cIlxuICAgICAgICAgICAgICAgIChzZWxlY3QpPVwic2VsZWN0UGxhY2UoJGV2ZW50LCBmb3JtR3JvdXAsIHZpZXdJbmRleClcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAjcGxhY2VzUGlja2VyLz5cbiAgICAgICAgICAgIDwvbm92by1waWNrZXItdG9nZ2xlPlxuICAgICAgICAgIDwvbm92by1maWVsZD5cbiAgICAgICAgPC9ub3ZvLWZsZXg+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxufSlcbmV4cG9ydCBjbGFzcyBOb3ZvRGVmYXVsdEFkZHJlc3NDb25kaXRpb25EZWYgZXh0ZW5kcyBBYnN0cmFjdENvbmRpdGlvbkZpZWxkRGVmIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZHJlbihOb3ZvUGlja2VyVG9nZ2xlRWxlbWVudCkgb3ZlcmxheUNoaWxkcmVuOiBRdWVyeUxpc3Q8Tm92b1BpY2tlclRvZ2dsZUVsZW1lbnQ+O1xuICBAVmlld0NoaWxkcmVuKCdhZGRyZXNzSW5wdXQnKSBpbnB1dENoaWxkcmVuOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG4gIEBWaWV3Q2hpbGQoJ3BsYWNlc1BpY2tlcicpIHBsYWNlc1BpY2tlcjogUGxhY2VzTGlzdENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZHJlbihOb3ZvU2VsZWN0RWxlbWVudCkgYWRkcmVzc1NpZGVUZXN0OiBhbnk7XG5cbiAgLy8gU3RhdGljIGRlZmF1bHRzXG4gIHJhZGl1c1ZhbHVlczogbnVtYmVyW10gPSBbNSwgMTAsIDIwLCAzMCwgNDAsIDUwLCAxMDBdO1xuICBkZWZhdWx0UmFkaXVzOiBudW1iZXIgPSAzMDtcblxuICAvLyBPdmVycmlkYWJsZSBkZWZhdWx0c1xuICBkZWZhdWx0czogQWRkcmVzc0NyaXRlcmlhQ29uZmlnID0ge1xuICAgIHJhZGl1c0VuYWJsZWQ6IGZhbHNlLFxuICAgIHJhZGl1c1VuaXRzOiAnbWlsZXMnLFxuICB9O1xuICBjb25maWc6IElucHV0U2lnbmFsPEFkZHJlc3NDcml0ZXJpYUNvbmZpZz4gPSBpbnB1dCgpO1xuICByYWRpdXNVbml0czogU2lnbmFsPEFkZHJlc3NSYWRpdXNVbml0c05hbWU+ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmNvbmZpZygpPy5yYWRpdXNVbml0cyB8fCB0aGlzLmRlZmF1bHRzLnJhZGl1c1VuaXRzXG4gICk7XG4gIHJhZGl1c0VuYWJsZWQ6IFNpZ25hbDxib29sZWFuPiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5jb25maWcoKT8ucmFkaXVzRW5hYmxlZCB8fCB0aGlzLmRlZmF1bHRzLnJhZGl1c0VuYWJsZWRcbiAgKTtcblxuICByYWRpdXM6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWwodGhpcy5kZWZhdWx0UmFkaXVzKTtcbiAgcmFkaXVzT3B0aW9uczogU2lnbmFsPHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlcjsgfVtdPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1bml0c0xhYmVsID0gdGhpcy5yYWRpdXNVbml0cygpID09PSBSYWRpdXNVbml0cy5taWxlcyA/IHRoaXMubGFiZWxzLm1pbGVzIDogdGhpcy5sYWJlbHMua207XG4gICAgcmV0dXJuIHRoaXMucmFkaXVzVmFsdWVzLm1hcCh2YWx1ZSA9PiAoe1xuICAgICAgbGFiZWw6IGAke3ZhbHVlLnRvU3RyaW5nKCl9ICR7dW5pdHNMYWJlbH1gLFxuICAgICAgdmFsdWUsXG4gICAgfSkpO1xuICB9KTtcblxuICBkZWZhdWx0T3BlcmF0b3IgPSBPcGVyYXRvci5pbmNsdWRlQW55O1xuICBjaGlwTGlzdE1vZGVsOiBhbnkgPSAnJztcbiAgdGVybTogc3RyaW5nID0gJyc7XG5cbiAgcHJpdmF0ZSBfYWRkcmVzc0NoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBwdWJsaWMgZWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBjb25zdHJ1Y3RvcihsYWJlbFNlcnZpY2U6IE5vdm9MYWJlbFNlcnZpY2UpIHtcbiAgICBzdXBlcihsYWJlbFNlcnZpY2UpO1xuICAgIHRoaXMuZGVmaW5lT3BlcmF0b3JFZGl0R3JvdXAoT3BlcmF0b3IuaW5jbHVkZUFueSwgT3BlcmF0b3IuZXhjbHVkZUFueSwgT3BlcmF0b3IucmFkaXVzKTtcbiAgfVxuXG4gIGZyYW1lQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5mcmFtZUFmdGVyVmlld0luaXQoKTtcbiAgICAvLyBJbml0aWFsaXplIHRoZSByYWRpdXMgdmFsdWUgZnJvbSBleGlzdGluZyBkYXRhXG4gICAgdGhpcy5hc3NpZ25SYWRpdXNGcm9tVmFsdWUoKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgcmFkaXVzIG9uIGFkZHJlc3MgdmFsdWUgY2hhbmdlc1xuICAgIHRoaXMuX2FkZHJlc3NDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5pbnB1dENoaWxkcmVuLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuYXNzaWduUmFkaXVzRnJvbVZhbHVlKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9hZGRyZXNzQ2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb25LZXl1cChldmVudCwgdmlld0luZGV4KSB7XG4gICAgaWYgKCFbS2V5LkVzY2FwZSwgS2V5LkVudGVyXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICB0aGlzLm9wZW5QbGFjZXNMaXN0KHZpZXdJbmRleCk7XG4gICAgfVxuICAgIHRoaXMudGVybSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIG9uS2V5ZG93bihldmVudCwgdmlld0luZGV4KSB7XG4gICAgaWYgKCF0aGlzLnBsYWNlc1BpY2tlci5kcm9wZG93bk9wZW4pIHtcbiAgICAgIHRoaXMub3BlblBsYWNlc0xpc3Qodmlld0luZGV4KTtcbiAgICAgIHRoaXMucGxhY2VzUGlja2VyLmRyb3Bkb3duT3BlbiA9IHRydWU7XG4gICAgfVxuICAgIGlmIChbS2V5LkVzY2FwZSwgS2V5LlRhYl0uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgdGhpcy5jbG9zZVBsYWNlc0xpc3Qodmlld0luZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wbGFjZXNQaWNrZXIub25LZXlEb3duKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXRWYWx1ZShmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IEFkZHJlc3NEYXRhW10ge1xuICAgIHJldHVybiBmb3JtR3JvdXAudmFsdWUudmFsdWUgfHwgW107XG4gIH1cblxuICBnZXRDdXJyZW50T3ZlcmxheSh2aWV3SW5kZXg6IHN0cmluZyk6IE5vdm9QaWNrZXJUb2dnbGVFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5Q2hpbGRyZW4/LmZpbmQoaXRlbSA9PiBpdGVtLm92ZXJsYXlJZCA9PT0gdmlld0luZGV4KTtcbiAgfVxuXG4gIGdldEN1cnJlbnRJbnB1dCh2aWV3SW5kZXg6IHN0cmluZyk6IEVsZW1lbnRSZWYge1xuICAgIHJldHVybiB0aGlzLmlucHV0Q2hpbGRyZW4/LmZpbmQoaXRlbSA9PiAoaXRlbSBhcyBhbnkpLm5hdGl2ZUVsZW1lbnQuaWQgPT09IHZpZXdJbmRleCk7XG4gIH1cblxuICBvcGVuUGxhY2VzTGlzdCh2aWV3SW5kZXgpIHtcbiAgICB0aGlzLmdldEN1cnJlbnRPdmVybGF5KHZpZXdJbmRleCk/Lm9wZW5QYW5lbCgpO1xuICB9XG5cbiAgY2xvc2VQbGFjZXNMaXN0KHZpZXdJbmRleCkge1xuICAgIHRoaXMuZ2V0Q3VycmVudE92ZXJsYXkodmlld0luZGV4KT8uY2xvc2VQYW5lbCgpO1xuICB9XG5cbiAgc2VsZWN0UGxhY2UoZXZlbnQ6IGFueSwgZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wsIHZpZXdJbmRleDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVUb0FkZDogQWRkcmVzc0RhdGEgPSB7XG4gICAgICBhZGRyZXNzX2NvbXBvbmVudHM6IGV2ZW50LmFkZHJlc3NfY29tcG9uZW50cyxcbiAgICAgIGZvcm1hdHRlZF9hZGRyZXNzOiBldmVudC5mb3JtYXR0ZWRfYWRkcmVzcyxcbiAgICAgIGdlb21ldHJ5OiBldmVudC5nZW9tZXRyeSxcbiAgICAgIHBsYWNlX2lkOiBldmVudC5wbGFjZV9pZCxcbiAgICB9O1xuICAgIGNvbnN0IGN1cnJlbnQ6IEFkZHJlc3NEYXRhIHwgQWRkcmVzc0RhdGFbXSA9IHRoaXMuZ2V0VmFsdWUoZm9ybUdyb3VwKTtcbiAgICBjb25zdCB1cGRhdGVkOiBBZGRyZXNzRGF0YVtdID0gQXJyYXkuaXNBcnJheShjdXJyZW50KSA/IFsuLi5jdXJyZW50LCB2YWx1ZVRvQWRkXSA6IFt2YWx1ZVRvQWRkXTtcbiAgICBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKHRoaXMudXBkYXRlUmFkaXVzSW5WYWx1ZXMoZm9ybUdyb3VwLCB1cGRhdGVkKSk7XG5cbiAgICB0aGlzLmlucHV0Q2hpbGRyZW4uZm9yRWFjaChpbnB1dCA9PiB7XG4gICAgICBpbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfSlcbiAgICB0aGlzLmdldEN1cnJlbnRJbnB1dCh2aWV3SW5kZXgpPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgdGhpcy5jbG9zZVBsYWNlc0xpc3Qodmlld0luZGV4KTtcbiAgfVxuXG4gIHJlbW92ZSh2YWx1ZVRvUmVtb3ZlOiBBZGRyZXNzRGF0YSwgZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wsIHZpZXdJbmRleDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0VmFsdWUoZm9ybUdyb3VwKTtcbiAgICBjb25zdCBpbmRleCA9IGN1cnJlbnQuaW5kZXhPZih2YWx1ZVRvUmVtb3ZlKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgY29uc3Qgb2xkVmFsdWUgPSBbLi4uY3VycmVudF1cbiAgICAgIG9sZFZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKG9sZFZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5jbG9zZVBsYWNlc0xpc3Qodmlld0luZGV4KTtcbiAgfVxuXG4gIC8vIE92ZXJyaWRlIGFic3RyYWN0IGJlaGF2aW9yIC0gYWxsb3cgbW92aW5nIGxvY2F0aW9uIGZyb20gaW5jbHVkZUFueSB0byByYWRpdXMsIGJ1dCB3aGVuIG1vdmluZyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uLFxuICAvLyB0cmltIG91dCByYWRpdXMgaW5mb3JtYXRpb24gZnJvbSB0aGUgdmFsdWVcbiAgb25PcGVyYXRvclNlbGVjdChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c09wZXJhdG9yID0gdGhpcy5fcHJldmlvdXNPcGVyYXRvclZhbHVlO1xuICAgIHN1cGVyLm9uT3BlcmF0b3JTZWxlY3QoZm9ybUdyb3VwKTtcbiAgICBpZiAoW3ByZXZpb3VzT3BlcmF0b3IsIGZvcm1Hcm91cC5nZXQoJ29wZXJhdG9yJykuZ2V0UmF3VmFsdWUoKV0uaW5kZXhPZihPcGVyYXRvci5yYWRpdXMpICE9PSAtMSAmJlxuICAgICAgICBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLmdldFJhd1ZhbHVlKCkgIT0gbnVsbCkge1xuICAgICAgZm9ybUdyb3VwLmdldCgndmFsdWUnKS5zZXRWYWx1ZSh0aGlzLnVwZGF0ZVJhZGl1c0luVmFsdWVzKGZvcm1Hcm91cCwgdGhpcy5nZXRWYWx1ZShmb3JtR3JvdXApKSk7XG4gICAgfVxuICB9XG5cbiAgb25SYWRpdXNTZWxlY3QoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wsIHJhZGl1czogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5yYWRpdXMuc2V0KHJhZGl1cyk7XG4gICAgLy8gV2UgbXVzdCBkaXJ0eSB0aGUgZm9ybSBleHBsaWNpdGx5IHRvIHNob3cgdXAgYXMgYSB1c2VyIG1vZGlmaWNhdGlvbiB3aGVuIGl0IHdhcyBkb25lIHByb2dyYW1tYXRpY2FsbHlcbiAgICBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKHRoaXMudXBkYXRlUmFkaXVzSW5WYWx1ZXMoZm9ybUdyb3VwLCB0aGlzLmdldFZhbHVlKGZvcm1Hcm91cCkpKTtcbiAgICBmb3JtR3JvdXAubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXNzaWduUmFkaXVzRnJvbVZhbHVlKCkge1xuICAgIGlmICh0aGlzLnBsYWNlc1BpY2tlcj8ubW9kZWw/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgYWRkcmVzc0RhdGE6IEFkZHJlc3NEYXRhID0gdGhpcy5wbGFjZXNQaWNrZXIubW9kZWxbMF07XG4gICAgICBjb25zdCBpbml0aWFsUmFkaXVzID0gYWRkcmVzc0RhdGEucmFkaXVzPy52YWx1ZTtcbiAgICAgIGlmIChpbml0aWFsUmFkaXVzICYmIEhlbHBlcnMuaXNOdW1iZXIoaW5pdGlhbFJhZGl1cykpIHtcbiAgICAgICAgdGhpcy5yYWRpdXMuc2V0KGluaXRpYWxSYWRpdXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUmFkaXVzSW5WYWx1ZXMoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wsIHZhbHVlczogQWRkcmVzc0RhdGFbXSk6IEFkZHJlc3NEYXRhW10ge1xuICAgIHJldHVybiB2YWx1ZXMubWFwKHZhbCA9PiAoe1xuICAgICAgLi4udmFsLFxuICAgICAgcmFkaXVzOiB0aGlzLmlzUmFkaXVzT3BlcmF0b3JTZWxlY3RlZChmb3JtR3JvdXApID8gdGhpcy5nZXRSYWRpdXNEYXRhKGZvcm1Hcm91cCkgOiB1bmRlZmluZWQsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSYWRpdXNEYXRhKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogQWRkcmVzc1JhZGl1cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB0aGlzLmdldFJhZGl1cyhmb3JtR3JvdXApLFxuICAgICAgdW5pdHM6IHRoaXMucmFkaXVzVW5pdHMoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSYWRpdXMoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmlzUmFkaXVzT3BlcmF0b3JTZWxlY3RlZChmb3JtR3JvdXApID8gdGhpcy5yYWRpdXMoKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNSYWRpdXNPcGVyYXRvclNlbGVjdGVkKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZvcm1Hcm91cC5nZXQoJ29wZXJhdG9yJykudmFsdWUgPT09ICdyYWRpdXMnO1xuICB9XG59XG4iXX0=
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1jb25kaXRpb24uZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL2VsZW1lbnRzL3F1ZXJ5LWJ1aWxkZXIvY29uZGl0aW9uLWRlZmluaXRpb25zL2FkZHJlc3MtY29uZGl0aW9uLmRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFFVCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFFbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBTyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUE2RSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUksT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFFbEU7O0dBRUc7QUFvREgsTUFBTSxPQUFPLDhCQUErQixTQUFRLHlCQUF5QjtJQXdDM0UsWUFBWSxZQUE4QjtRQUN4QyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFuQ3RCLGtCQUFrQjtRQUNsQixpQkFBWSxHQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFB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QUFVLENBQUMsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDO0lBQ3RELENBQUM7OEdBbExVLDhCQUE4QjtrR0FBOUIsOEJBQThCLDRVQUMzQix1QkFBdUIsd0pBR3ZCLGlCQUFpQix1RUFyRHJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Q1Q7OzJGQUlVLDhCQUE4QjtrQkFuRDFDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Q1Q7b0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxPQUFPO2lCQUNqRDtxRkFFd0MsZUFBZTtzQkFBckQsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBQ1AsYUFBYTtzQkFBMUMsWUFBWTt1QkFBQyxjQUFjO2dCQUNELFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDUSxlQUFlO3NCQUEvQyxZQUFZO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBJbnB1dFNpZ25hbCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFNpZ25hbCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIFdyaXRhYmxlU2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTm92b1BpY2tlclRvZ2dsZUVsZW1lbnQgfSBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2ZpZWxkJztcbmltcG9ydCB7IFBsYWNlc0xpc3RDb21wb25lbnQgfSBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3BsYWNlcyc7XG5pbXBvcnQgeyBOb3ZvTGFiZWxTZXJ2aWNlIH0gZnJvbSAnbm92by1lbGVtZW50cy9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBIZWxwZXJzLCBLZXkgfSBmcm9tICdub3ZvLWVsZW1lbnRzL3V0aWxzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWRkcmVzc0NyaXRlcmlhQ29uZmlnLCBBZGRyZXNzRGF0YSwgQWRkcmVzc1JhZGl1cywgQWRkcmVzc1JhZGl1c1VuaXRzTmFtZSwgT3BlcmF0b3IsIFJhZGl1c1VuaXRzIH0gZnJvbSAnLi4vcXVlcnktYnVpbGRlci50eXBlcyc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbmRpdGlvbkZpZWxkRGVmIH0gZnJvbSAnLi9hYnN0cmFjdC1jb25kaXRpb24uZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBOb3ZvU2VsZWN0RWxlbWVudCB9IGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvc2VsZWN0JztcblxuLyoqXG4gKiBIYW5kbGUgc2VsZWN0aW9uIG9mIGZpZWxkIHZhbHVlcyB3aGVuIGEgbGlzdCBvZiBvcHRpb25zIGlzIHByb3ZpZGVkLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdub3ZvLWFkZHJlc3MtY29uZGl0aW9uLWRlZicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciBub3ZvQ29uZGl0aW9uRmllbGREZWY+XG4gICAgICA8bm92by1maWVsZCAqbm92b0NvbmRpdGlvbk9wZXJhdG9yc0RlZj1cImxldCBmb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8bm92by1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cImxhYmVscy5vcGVyYXRvclwiIGZvcm1Db250cm9sTmFtZT1cIm9wZXJhdG9yXCIgKG9uU2VsZWN0KT1cIm9uT3BlcmF0b3JTZWxlY3QoZm9ybUdyb3VwKVwiPlxuICAgICAgICAgIDxub3ZvLW9wdGlvbiB2YWx1ZT1cImluY2x1ZGVBbnlcIj57eyBsYWJlbHMuaW5jbHVkZUFueSB9fTwvbm92by1vcHRpb24+XG4gICAgICAgICAgPG5vdm8tb3B0aW9uIHZhbHVlPVwiZXhjbHVkZUFueVwiPnt7IGxhYmVscy5leGNsdWRlIH19PC9ub3ZvLW9wdGlvbj5cbiAgICAgICAgICA8bm92by1vcHRpb24gdmFsdWU9XCJyYWRpdXNcIiAqbmdJZj1cInJhZGl1c0VuYWJsZWQoKVwiPnt7IGxhYmVscy5yYWRpdXMgfX08L25vdm8tb3B0aW9uPlxuICAgICAgICA8L25vdm8tc2VsZWN0PlxuICAgICAgPC9ub3ZvLWZpZWxkPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbm92b0NvbmRpdGlvbklucHV0RGVmPVwibGV0IGZvcm1Hcm91cDsgdmlld0luZGV4IGFzIHZpZXdJbmRleDsgZmllbGRNZXRhIGFzIG1ldGFcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8bm92by1mbGV4IGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCIgYWxpZ249XCJlbmRcIj5cbiAgICAgICAgICA8bm92by1maWVsZCAjbm92b1JhZGl1c0ZpZWxkICpuZ0lmPVwiZm9ybUdyb3VwLnZhbHVlLm9wZXJhdG9yID09PSAncmFkaXVzJ1wiIGNsYXNzPVwiYWRkcmVzcy1yYWRpdXNcIj5cbiAgICAgICAgICAgIDxub3ZvLXNlbGVjdFxuICAgICAgICAgICAgICAjcmFkaXVzU2VsZWN0IFtwbGFjZWhvbGRlcl09XCJsYWJlbHMucmFkaXVzXCJcbiAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cIm9uUmFkaXVzU2VsZWN0KGZvcm1Hcm91cCwgJGV2ZW50LnNlbGVjdGVkKVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJyYWRpdXMoKVwiXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cInJhZGl1c09wdGlvbnMoKVwiPlxuICAgICAgICAgICAgPC9ub3ZvLXNlbGVjdD5cbiAgICAgICAgICA8L25vdm8tZmllbGQ+XG4gICAgICAgICAgPG5vdm8tZmllbGQgI25vdm9GaWVsZCBjbGFzcz1cImFkZHJlc3MtbG9jYXRpb25cIj5cbiAgICAgICAgICAgIDxub3ZvLWNoaXAtbGlzdCBbKG5nTW9kZWwpXT1cImNoaXBMaXN0TW9kZWxcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIiAoY2xpY2spPVwib3BlblBsYWNlc0xpc3Qodmlld0luZGV4KVwiPlxuICAgICAgICAgICAgICA8bm92by1jaGlwICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZvcm1Hcm91cC5nZXQoJ3ZhbHVlJykudmFsdWVcIiAocmVtb3ZlZCk9XCJyZW1vdmUoaXRlbSwgZm9ybUdyb3VwLCB2aWV3SW5kZXgpXCI+XG4gICAgICAgICAgICAgICAgPG5vdm8tdGV4dCBlbGxpcHNpcz57eyBpdGVtLmZvcm1hdHRlZF9hZGRyZXNzIH19PC9ub3ZvLXRleHQ+XG4gICAgICAgICAgICAgICAgPG5vdm8taWNvbiBub3ZvQ2hpcFJlbW92ZT5jbG9zZTwvbm92by1pY29uPlxuICAgICAgICAgICAgICA8L25vdm8tY2hpcD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgbm92b0NoaXBJbnB1dFxuICAgICAgICAgICAgICAgIFtpZF09XCJ2aWV3SW5kZXhcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbHMubG9jYXRpb25cIlxuICAgICAgICAgICAgICAgIChrZXl1cCk9XCJvbktleXVwKCRldmVudCwgdmlld0luZGV4KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudCwgdmlld0luZGV4KVwiXG4gICAgICAgICAgICAgICAgW3BpY2tlcl09XCJwbGFjZXNQaWNrZXJcIlxuICAgICAgICAgICAgICAgICNhZGRyZXNzSW5wdXQvPlxuICAgICAgICAgICAgPC9ub3ZvLWNoaXAtbGlzdD5cbiAgICAgICAgICAgIDxub3ZvLXBpY2tlci10b2dnbGUgW292ZXJsYXlJZF09XCJ2aWV3SW5kZXhcIiBpY29uPVwibG9jYXRpb25cIiBub3ZvU3VmZml4PlxuICAgICAgICAgICAgICA8Z29vZ2xlLXBsYWNlcy1saXN0XG4gICAgICAgICAgICAgICAgW3Rlcm1dPVwidGVybVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdCk9XCJzZWxlY3RQbGFjZSgkZXZlbnQsIGZvcm1Hcm91cCwgdmlld0luZGV4KVwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICNwbGFjZXNQaWNrZXIvPlxuICAgICAgICAgICAgPC9ub3ZvLXBpY2tlci10b2dnbGU+XG4gICAgICAgICAgPC9ub3ZvLWZpZWxkPlxuICAgICAgICA8L25vdm8tZmxleD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG59KVxuZXhwb3J0IGNsYXNzIE5vdm9EZWZhdWx0QWRkcmVzc0NvbmRpdGlvbkRlZiBleHRlbmRzIEFic3RyYWN0Q29uZGl0aW9uRmllbGREZWYgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkcmVuKE5vdm9QaWNrZXJUb2dnbGVFbGVtZW50KSBvdmVybGF5Q2hpbGRyZW46IFF1ZXJ5TGlzdDxOb3ZvUGlja2VyVG9nZ2xlRWxlbWVudD47XG4gIEBWaWV3Q2hpbGRyZW4oJ2FkZHJlc3NJbnB1dCcpIGlucHV0Q2hpbGRyZW46IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgQFZpZXdDaGlsZCgncGxhY2VzUGlja2VyJykgcGxhY2VzUGlja2VyOiBQbGFjZXNMaXN0Q29tcG9uZW50O1xuICBAVmlld0NoaWxkcmVuKE5vdm9TZWxlY3RFbGVtZW50KSBhZGRyZXNzU2lkZVRlc3Q6IGFueTtcblxuICAvLyBTdGF0aWMgZGVmYXVsdHNcbiAgcmFkaXVzVmFsdWVzOiBudW1iZXJbXSA9IFs1LCAxMCwgMjAsIDMwLCA0MCwgNTAsIDEwMF07XG4gIGRlZmF1bHRSYWRpdXM6IG51bWJlciA9IDMwO1xuXG4gIC8vIE92ZXJyaWRhYmxlIGRlZmF1bHRzXG4gIGRlZmF1bHRzOiBBZGRyZXNzQ3JpdGVyaWFDb25maWcgPSB7XG4gICAgcmFkaXVzRW5hYmxlZDogZmFsc2UsXG4gICAgcmFkaXVzVW5pdHM6ICdtaWxlcycsXG4gIH07XG4gIGNvbmZpZzogSW5wdXRTaWduYWw8QWRkcmVzc0NyaXRlcmlhQ29uZmlnPiA9IGlucHV0KCk7XG4gIHJhZGl1c1VuaXRzOiBTaWduYWw8QWRkcmVzc1JhZGl1c1VuaXRzTmFtZT4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuY29uZmlnKCk/LnJhZGl1c1VuaXRzIHx8IHRoaXMuZGVmYXVsdHMucmFkaXVzVW5pdHNcbiAgKTtcbiAgcmFkaXVzRW5hYmxlZDogU2lnbmFsPGJvb2xlYW4+ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmNvbmZpZygpPy5yYWRpdXNFbmFibGVkIHx8IHRoaXMuZGVmYXVsdHMucmFkaXVzRW5hYmxlZFxuICApO1xuXG4gIHJhZGl1czogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCh0aGlzLmRlZmF1bHRSYWRpdXMpO1xuICByYWRpdXNPcHRpb25zOiBTaWduYWw8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogbnVtYmVyOyB9W10+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHVuaXRzTGFiZWwgPSB0aGlzLnJhZGl1c1VuaXRzKCkgPT09IFJhZGl1c1VuaXRzLm1pbGVzID8gdGhpcy5sYWJlbHMubWlsZXMgOiB0aGlzLmxhYmVscy5rbTtcbiAgICByZXR1cm4gdGhpcy5yYWRpdXNWYWx1ZXMubWFwKHZhbHVlID0+ICh7XG4gICAgICBsYWJlbDogYCR7dmFsdWUudG9TdHJpbmcoKX0gJHt1bml0c0xhYmVsfWAsXG4gICAgICB2YWx1ZSxcbiAgICB9KSk7XG4gIH0pO1xuXG4gIGRlZmF1bHRPcGVyYXRvciA9IE9wZXJhdG9yLmluY2x1ZGVBbnk7XG4gIGNoaXBMaXN0TW9kZWw6IGFueSA9ICcnO1xuICB0ZXJtOiBzdHJpbmcgPSAnJztcblxuICBwcml2YXRlIF9hZGRyZXNzQ2hhbmdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIHB1YmxpYyBlbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKGxhYmVsU2VydmljZTogTm92b0xhYmVsU2VydmljZSkge1xuICAgIHN1cGVyKGxhYmVsU2VydmljZSk7XG4gICAgdGhpcy5kZWZpbmVPcGVyYXRvckVkaXRHcm91cChPcGVyYXRvci5pbmNsdWRlQW55LCBPcGVyYXRvci5leGNsdWRlQW55LCBPcGVyYXRvci5yYWRpdXMpO1xuICB9XG5cbiAgZnJhbWVBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLmZyYW1lQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIC8vIEluaXRpYWxpemUgdGhlIHJhZGl1cyB2YWx1ZSBmcm9tIGV4aXN0aW5nIGRhdGFcbiAgICB0aGlzLmFzc2lnblJhZGl1c0Zyb21WYWx1ZSgpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSByYWRpdXMgb24gYWRkcmVzcyB2YWx1ZSBjaGFuZ2VzXG4gICAgdGhpcy5fYWRkcmVzc0NoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLmlucHV0Q2hpbGRyZW4uY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5hc3NpZ25SYWRpdXNGcm9tVmFsdWUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2FkZHJlc3NDaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvbktleXVwKGV2ZW50LCB2aWV3SW5kZXgpIHtcbiAgICBpZiAoIVtLZXkuRXNjYXBlLCBLZXkuRW50ZXJdLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgIHRoaXMub3BlblBsYWNlc0xpc3Qodmlld0luZGV4KTtcbiAgICB9XG4gICAgdGhpcy50ZXJtID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICB9XG5cbiAgb25LZXlkb3duKGV2ZW50LCB2aWV3SW5kZXgpIHtcbiAgICBpZiAoIXRoaXMucGxhY2VzUGlja2VyLmRyb3Bkb3duT3Blbikge1xuICAgICAgdGhpcy5vcGVuUGxhY2VzTGlzdCh2aWV3SW5kZXgpO1xuICAgICAgdGhpcy5wbGFjZXNQaWNrZXIuZHJvcGRvd25PcGVuID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKFtLZXkuRXNjYXBlLCBLZXkuVGFiXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICB0aGlzLmNsb3NlUGxhY2VzTGlzdCh2aWV3SW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBsYWNlc1BpY2tlci5vbktleURvd24oZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldFZhbHVlKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogQWRkcmVzc0RhdGFbXSB7XG4gICAgcmV0dXJuIGZvcm1Hcm91cC52YWx1ZS52YWx1ZSB8fCBbXTtcbiAgfVxuXG4gIGdldEN1cnJlbnRPdmVybGF5KHZpZXdJbmRleDogc3RyaW5nKTogTm92b1BpY2tlclRvZ2dsZUVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXlDaGlsZHJlbj8uZmluZChpdGVtID0+IGl0ZW0ub3ZlcmxheUlkID09PSB2aWV3SW5kZXgpO1xuICB9XG5cbiAgZ2V0Q3VycmVudElucHV0KHZpZXdJbmRleDogc3RyaW5nKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRDaGlsZHJlbj8uZmluZChpdGVtID0+IChpdGVtIGFzIGFueSkubmF0aXZlRWxlbWVudC5pZCA9PT0gdmlld0luZGV4KTtcbiAgfVxuXG4gIG9wZW5QbGFjZXNMaXN0KHZpZXdJbmRleCkge1xuICAgIHRoaXMuZ2V0Q3VycmVudE92ZXJsYXkodmlld0luZGV4KT8ub3BlblBhbmVsKCk7XG4gIH1cblxuICBjbG9zZVBsYWNlc0xpc3Qodmlld0luZGV4KSB7XG4gICAgdGhpcy5nZXRDdXJyZW50T3ZlcmxheSh2aWV3SW5kZXgpPy5jbG9zZVBhbmVsKCk7XG4gIH1cblxuICBzZWxlY3RQbGFjZShldmVudDogYW55LCBmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCwgdmlld0luZGV4OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZVRvQWRkOiBBZGRyZXNzRGF0YSA9IHtcbiAgICAgIGFkZHJlc3NfY29tcG9uZW50czogZXZlbnQuYWRkcmVzc19jb21wb25lbnRzLFxuICAgICAgZm9ybWF0dGVkX2FkZHJlc3M6IGV2ZW50LmZvcm1hdHRlZF9hZGRyZXNzLFxuICAgICAgZ2VvbWV0cnk6IGV2ZW50Lmdlb21ldHJ5LFxuICAgICAgbmFtZTogZXZlbnQubmFtZSxcbiAgICAgIHBsYWNlX2lkOiBldmVudC5wbGFjZV9pZCxcbiAgICAgIHR5cGVzOiBldmVudC50eXBlcyxcbiAgICB9O1xuICAgIGNvbnN0IGN1cnJlbnQ6IEFkZHJlc3NEYXRhIHwgQWRkcmVzc0RhdGFbXSA9IHRoaXMuZ2V0VmFsdWUoZm9ybUdyb3VwKTtcbiAgICBjb25zdCB1cGRhdGVkOiBBZGRyZXNzRGF0YVtdID0gQXJyYXkuaXNBcnJheShjdXJyZW50KSA/IFsuLi5jdXJyZW50LCB2YWx1ZVRvQWRkXSA6IFt2YWx1ZVRvQWRkXTtcbiAgICBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKHRoaXMudXBkYXRlUmFkaXVzSW5WYWx1ZXMoZm9ybUdyb3VwLCB1cGRhdGVkKSk7XG5cbiAgICB0aGlzLmlucHV0Q2hpbGRyZW4uZm9yRWFjaChpbnB1dCA9PiB7XG4gICAgICBpbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfSlcbiAgICB0aGlzLmdldEN1cnJlbnRJbnB1dCh2aWV3SW5kZXgpPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgdGhpcy5jbG9zZVBsYWNlc0xpc3Qodmlld0luZGV4KTtcbiAgfVxuXG4gIHJlbW92ZSh2YWx1ZVRvUmVtb3ZlOiBBZGRyZXNzRGF0YSwgZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wsIHZpZXdJbmRleDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0VmFsdWUoZm9ybUdyb3VwKTtcbiAgICBjb25zdCBpbmRleCA9IGN1cnJlbnQuaW5kZXhPZih2YWx1ZVRvUmVtb3ZlKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgY29uc3Qgb2xkVmFsdWUgPSBbLi4uY3VycmVudF1cbiAgICAgIG9sZFZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKG9sZFZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5jbG9zZVBsYWNlc0xpc3Qodmlld0luZGV4KTtcbiAgfVxuXG4gIC8vIE92ZXJyaWRlIGFic3RyYWN0IGJlaGF2aW9yIC0gYWxsb3cgbW92aW5nIGxvY2F0aW9uIGZyb20gaW5jbHVkZUFueSB0byByYWRpdXMsIGJ1dCB3aGVuIG1vdmluZyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uLFxuICAvLyB0cmltIG91dCByYWRpdXMgaW5mb3JtYXRpb24gZnJvbSB0aGUgdmFsdWVcbiAgb25PcGVyYXRvclNlbGVjdChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c09wZXJhdG9yID0gdGhpcy5fcHJldmlvdXNPcGVyYXRvclZhbHVlO1xuICAgIHN1cGVyLm9uT3BlcmF0b3JTZWxlY3QoZm9ybUdyb3VwKTtcbiAgICBpZiAoW3ByZXZpb3VzT3BlcmF0b3IsIGZvcm1Hcm91cC5nZXQoJ29wZXJhdG9yJykuZ2V0UmF3VmFsdWUoKV0uaW5kZXhPZihPcGVyYXRvci5yYWRpdXMpICE9PSAtMSAmJlxuICAgICAgICBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLmdldFJhd1ZhbHVlKCkgIT0gbnVsbCkge1xuICAgICAgZm9ybUdyb3VwLmdldCgndmFsdWUnKS5zZXRWYWx1ZSh0aGlzLnVwZGF0ZVJhZGl1c0luVmFsdWVzKGZvcm1Hcm91cCwgdGhpcy5nZXRWYWx1ZShmb3JtR3JvdXApKSk7XG4gICAgfVxuICB9XG5cbiAgb25SYWRpdXNTZWxlY3QoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wsIHJhZGl1czogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5yYWRpdXMuc2V0KHJhZGl1cyk7XG4gICAgLy8gV2UgbXVzdCBkaXJ0eSB0aGUgZm9ybSBleHBsaWNpdGx5IHRvIHNob3cgdXAgYXMgYSB1c2VyIG1vZGlmaWNhdGlvbiB3aGVuIGl0IHdhcyBkb25lIHByb2dyYW1tYXRpY2FsbHlcbiAgICBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKHRoaXMudXBkYXRlUmFkaXVzSW5WYWx1ZXMoZm9ybUdyb3VwLCB0aGlzLmdldFZhbHVlKGZvcm1Hcm91cCkpKTtcbiAgICBmb3JtR3JvdXAubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXNzaWduUmFkaXVzRnJvbVZhbHVlKCkge1xuICAgIGlmICh0aGlzLnBsYWNlc1BpY2tlcj8ubW9kZWw/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgYWRkcmVzc0RhdGE6IEFkZHJlc3NEYXRhID0gdGhpcy5wbGFjZXNQaWNrZXIubW9kZWxbMF07XG4gICAgICBjb25zdCBpbml0aWFsUmFkaXVzID0gYWRkcmVzc0RhdGEucmFkaXVzPy52YWx1ZTtcbiAgICAgIGlmIChpbml0aWFsUmFkaXVzICYmIEhlbHBlcnMuaXNOdW1iZXIoaW5pdGlhbFJhZGl1cykpIHtcbiAgICAgICAgdGhpcy5yYWRpdXMuc2V0KGluaXRpYWxSYWRpdXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUmFkaXVzSW5WYWx1ZXMoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wsIHZhbHVlczogQWRkcmVzc0RhdGFbXSk6IEFkZHJlc3NEYXRhW10ge1xuICAgIHJldHVybiB2YWx1ZXMubWFwKHZhbCA9PiAoe1xuICAgICAgLi4udmFsLFxuICAgICAgcmFkaXVzOiB0aGlzLmlzUmFkaXVzT3BlcmF0b3JTZWxlY3RlZChmb3JtR3JvdXApID8gdGhpcy5nZXRSYWRpdXNEYXRhKGZvcm1Hcm91cCkgOiB1bmRlZmluZWQsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSYWRpdXNEYXRhKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogQWRkcmVzc1JhZGl1cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB0aGlzLmdldFJhZGl1cyhmb3JtR3JvdXApLFxuICAgICAgdW5pdHM6IHRoaXMucmFkaXVzVW5pdHMoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSYWRpdXMoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmlzUmFkaXVzT3BlcmF0b3JTZWxlY3RlZChmb3JtR3JvdXApID8gdGhpcy5yYWRpdXMoKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNSYWRpdXNPcGVyYXRvclNlbGVjdGVkKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZvcm1Hcm91cC5nZXQoJ29wZXJhdG9yJykudmFsdWUgPT09ICdyYWRpdXMnO1xuICB9XG59XG4iXX0=
|
|
@@ -27,4 +27,4 @@ export var RadiusUnits;
|
|
|
27
27
|
RadiusUnits["miles"] = "miles";
|
|
28
28
|
RadiusUnits["km"] = "km";
|
|
29
29
|
})(RadiusUnits || (RadiusUnits = {}));
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL2VsZW1lbnRzL3F1ZXJ5LWJ1aWxkZXIvcXVlcnktYnVpbGRlci50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3JCLDBCQUFXLENBQUE7SUFDWCx3QkFBUyxDQUFBO0lBQ1QsMEJBQVcsQ0FBQTtBQUNiLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QjtBQWNELE1BQU0sQ0FBTixJQUFZLFFBZ0JYO0FBaEJELFdBQVksUUFBUTtJQUNsQiwyQkFBZSxDQUFBO0lBQ2YsNkJBQWlCLENBQUE7SUFDakIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIscUNBQXlCLENBQUE7SUFDekIsdUNBQTJCLENBQUE7SUFDM0IsK0JBQW1CLENBQUE7SUFDbkIscUNBQXlCLENBQUE7SUFDekIscUNBQXlCLENBQUE7SUFDekIsK0JBQW1CLENBQUE7SUFDbkIsNkJBQWlCLENBQUE7SUFDakIsaUNBQXFCLENBQUE7SUFDckIsNkJBQWlCLENBQUE7SUFDakIsNkJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQWhCVyxRQUFRLEtBQVIsUUFBUSxRQWdCbkI7QUFpRkQsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQiw4QkFBZSxDQUFBO0lBQ2Ysd0JBQVMsQ0FBQTtBQUNYLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGVudW0gQ29uanVuY3Rpb24ge1xuICBBTkQgPSAnYW5kJyxcbiAgT1IgPSAnb3InLFxuICBOT1QgPSAnbm90Jyxcbn1cblxuZXhwb3J0IHR5cGUgQ29uZGl0aW9uVHlwZSA9ICckYW5kJyB8ICckb3InIHwgJyRub3QnO1xuXG5leHBvcnQgdHlwZSBDb25kaXRpb25Hcm91cCA9IHtcbiAgW0sgaW4gQ29uanVuY3Rpb24gYXMgYCQke0t9YF0/OiBDb25kaXRpb25bXTtcbn07XG5cbmV4cG9ydCB0eXBlIE5lc3RlZENvbmRpdGlvbkdyb3VwID0ge1xuICBbSyBpbiBDb25qdW5jdGlvbiBhcyBgJCR7S31gXT86IENvbmRpdGlvbk9yQ29uZGl0aW9uR3JvdXBbXTtcbn07XG5cbmV4cG9ydCB0eXBlIENvbmRpdGlvbk9yQ29uZGl0aW9uR3JvdXAgPSBDb25kaXRpb24gfCBOZXN0ZWRDb25kaXRpb25Hcm91cDtcblxuZXhwb3J0IGVudW0gT3BlcmF0b3Ige1xuICBhZnRlciA9ICdhZnRlcicsXG4gIGJlZm9yZSA9ICdiZWZvcmUnLFxuICBiZXR3ZWVuID0gJ2JldHdlZW4nLFxuICBlcXVhbFRvID0gJ2VxdWFsVG8nLFxuICBleGNsdWRlID0gJ2V4Y2x1ZGUnLFxuICBleGNsdWRlQW55ID0gJ2V4Y2x1ZGVBbnknLFxuICBncmVhdGVyVGhhbiA9ICdncmVhdGVyVGhhbicsXG4gIGluY2x1ZGUgPSAnaW5jbHVkZScsXG4gIGluY2x1ZGVBbGwgPSAnaW5jbHVkZUFsbCcsXG4gIGluY2x1ZGVBbnkgPSAnaW5jbHVkZUFueScsXG4gIGlzRW1wdHkgPSAnaXNFbXB0eScsXG4gIGlzTnVsbCA9ICdpc051bGwnLFxuICBsZXNzVGhhbiA9ICdsZXNzVGhhbicsXG4gIHJhZGl1cyA9ICdyYWRpdXMnLFxuICB3aXRoaW4gPSAnd2l0aGluJyxcbn1cblxuZXhwb3J0IHR5cGUgT3BlcmF0b3JOYW1lID0ga2V5b2YgdHlwZW9mIE9wZXJhdG9yO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmRpdGlvbiB7XG4gIGNvbmRpdGlvblR5cGU/OiBDb25kaXRpb25UeXBlO1xuICBmaWVsZDogc3RyaW5nO1xuICBvcGVyYXRvcjogT3BlcmF0b3JOYW1lIHwgc3RyaW5nO1xuICBzY29wZT86IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcml0ZXJpYSB7XG4gIGNyaXRlcmlhOiBDb25kaXRpb25Hcm91cFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RlZENyaXRlcmlhIHtcbiAgY3JpdGVyaWE6IE5lc3RlZENvbmRpdGlvbkdyb3VwW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUZpZWxkRGVmIHtcbiAgbmFtZTogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBkYXRhU3BlY2lhbGl6YXRpb24/OiBzdHJpbmc7XG4gIG9wdGlvbmFsPzogYm9vbGVhbjtcbiAgbXVsdGlWYWx1ZT86IGJvb2xlYW47XG4gIGlucHV0VHlwZT86IHN0cmluZztcbiAgb3B0aW9ucz86IHsgdmFsdWU6IHN0cmluZyB8IG51bWJlcjsgbGFiZWw6IHN0cmluZzsgcmVhZE9ubHk/OiBib29sZWFuIH1bXTtcbiAgb3B0aW9uc1VybD86IHN0cmluZztcbiAgb3B0aW9uc1R5cGU/OiBzdHJpbmc7XG4gIGRhdGFUeXBlPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkQ29uZmlnPFQgZXh0ZW5kcyBCYXNlRmllbGREZWY+IHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgb3B0aW9uczogVFtdO1xuICBzZWFyY2g6ICh0ZXJtOiBzdHJpbmcpID0+IFRbXTtcbiAgZmluZDogKG5hbWU6IHN0cmluZykgPT4gVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzRGF0YSB7XG4gIGFkZHJlc3NfY29tcG9uZW50czogQWRkcmVzc0NvbXBvbmVudFtdO1xuICBmb3JtYXR0ZWRfYWRkcmVzczogc3RyaW5nO1xuICBnZW9tZXRyeTogQWRkcmVzc0dlb21ldHJ5O1xuICBuYW1lPzogc3RyaW5nO1xuICBwbGFjZV9pZDogc3RyaW5nO1xuICByYWRpdXM/OiBBZGRyZXNzUmFkaXVzO1xuICB0eXBlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NSYWRpdXMge1xuICB2YWx1ZTogbnVtYmVyO1xuICB1bml0czogQWRkcmVzc1JhZGl1c1VuaXRzTmFtZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzQ29tcG9uZW50IHtcbiAgbG9uZ19uYW1lOiBzdHJpbmc7XG4gIHNob3J0X25hbWU6IHN0cmluZztcbiAgdHlwZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NHZW9tZXRyeSB7XG4gIGxvY2F0aW9uOiBBZGRyZXNzR2VvbWV0cnlMb2NhdGlvbjtcbiAgdmlld3BvcnQ6IEFkZHJlc3NHZW9tZXRyeVZpZXdwb3J0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NHZW9tZXRyeUxvY2F0aW9uIHtcbiAgbGF0OiBudW1iZXI7XG4gIGxuZzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NHZW9tZXRyeVZpZXdwb3J0IHtcbiAgbm9ydGg6IG51bWJlcjtcbiAgc291dGg6IG51bWJlcjtcbiAgZWFzdDogbnVtYmVyO1xuICB3ZXN0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBlbnVtIFJhZGl1c1VuaXRzIHtcbiAgbWlsZXMgPSAnbWlsZXMnLFxuICBrbSA9ICdrbScsXG59XG5cbmV4cG9ydCB0eXBlIEFkZHJlc3NSYWRpdXNVbml0c05hbWUgPSBrZXlvZiB0eXBlb2YgUmFkaXVzVW5pdHM7XG5cbi8qKiBBbGwgb3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0cyBmb3IgdGhlIGFkZHJlc3MgY3JpdGVyaWEgKi9cbmV4cG9ydCB0eXBlIEFkZHJlc3NDcml0ZXJpYUNvbmZpZyA9IHtcbiAgcmFkaXVzRW5hYmxlZD86IGJvb2xlYW47XG4gIHJhZGl1c1VuaXRzPzogQWRkcmVzc1JhZGl1c1VuaXRzTmFtZTtcbn1cblxuLyoqIEludGVyZmFjZSB1c2VkIHRvIHByb3ZpZGUgYW4gb3V0bGV0IGZvciByb3dzIHRvIGJlIGluc2VydGVkIGludG8uICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5RmlsdGVyT3V0bGV0IHtcbiAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcbn1cbiJdfQ==
|
|
@@ -434,7 +434,9 @@ class NovoDefaultAddressConditionDef extends AbstractConditionFieldDef {
|
|
|
434
434
|
address_components: event.address_components,
|
|
435
435
|
formatted_address: event.formatted_address,
|
|
436
436
|
geometry: event.geometry,
|
|
437
|
+
name: event.name,
|
|
437
438
|
place_id: event.place_id,
|
|
439
|
+
types: event.types,
|
|
438
440
|
};
|
|
439
441
|
const current = this.getValue(formGroup);
|
|
440
442
|
const updated = Array.isArray(current) ? [...current, valueToAdd] : [valueToAdd];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novo-elements-elements-query-builder.mjs","sources":["../../../projects/novo-elements/src/elements/query-builder/query-builder.types.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.service.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.tokens.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.directives.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/abstract-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/address-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/boolean-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/date-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/date-time-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/string-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/number-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/id-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/picker-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-templates/condition-templates.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-templates/condition-templates.component.html","../../../projects/novo-elements/src/elements/query-builder/condition-builder/condition-builder.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-builder/condition-builder.component.html","../../../projects/novo-elements/src/elements/query-builder/condition-group/condition-group.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-group/condition-group.component.html","../../../projects/novo-elements/src/elements/query-builder/criteria-builder/criteria-builder.component.ts","../../../projects/novo-elements/src/elements/query-builder/criteria-builder/criteria-builder.component.html","../../../projects/novo-elements/src/elements/query-builder/query-builder.module.ts","../../../projects/novo-elements/src/elements/query-builder/novo-elements-elements-query-builder.ts"],"sourcesContent":["import { ViewContainerRef } from '@angular/core';\n\nexport enum Conjunction {\n AND = 'and',\n OR = 'or',\n NOT = 'not',\n}\n\nexport type ConditionType = '$and' | '$or' | '$not';\n\nexport type ConditionGroup = {\n [K in Conjunction as `$${K}`]?: Condition[];\n};\n\nexport type NestedConditionGroup = {\n [K in Conjunction as `$${K}`]?: ConditionOrConditionGroup[];\n};\n\nexport type ConditionOrConditionGroup = Condition | NestedConditionGroup;\n\nexport enum Operator {\n after = 'after',\n before = 'before',\n between = 'between',\n equalTo = 'equalTo',\n exclude = 'exclude',\n excludeAny = 'excludeAny',\n greaterThan = 'greaterThan',\n include = 'include',\n includeAll = 'includeAll',\n includeAny = 'includeAny',\n isEmpty = 'isEmpty',\n isNull = 'isNull',\n lessThan = 'lessThan',\n radius = 'radius',\n within = 'within',\n}\n\nexport type OperatorName = keyof typeof Operator;\n\nexport interface Condition {\n conditionType?: ConditionType;\n field: string;\n operator: OperatorName | string;\n scope?: string;\n value: any;\n}\n\nexport interface Criteria {\n criteria: ConditionGroup[];\n}\n\nexport interface NestedCriteria {\n criteria: NestedConditionGroup[];\n}\n\nexport interface BaseFieldDef {\n name: string;\n label?: string;\n type: string;\n dataSpecialization?: string;\n optional?: boolean;\n multiValue?: boolean;\n inputType?: string;\n options?: { value: string | number; label: string; readOnly?: boolean }[];\n optionsUrl?: string;\n optionsType?: string;\n dataType?: string;\n icon?: string;\n}\n\nexport interface FieldConfig<T extends BaseFieldDef> {\n value: string;\n label: string;\n options: T[];\n search: (term: string) => T[];\n find: (name: string) => T;\n}\n\nexport interface AddressData {\n address_components: AddressComponent[];\n formatted_address: string;\n geometry: AddressGeometry;\n place_id: string;\n radius?: AddressRadius;\n}\n\nexport interface AddressRadius {\n value: number;\n units: AddressRadiusUnitsName;\n}\n\nexport interface AddressComponent {\n long_name: string;\n short_name: string;\n types: string[];\n}\n\nexport interface AddressGeometry {\n location: AddressGeometryLocation;\n viewport: AddressGeometryViewport;\n}\n\nexport interface AddressGeometryLocation {\n lat: number;\n lng: number;\n}\n\nexport interface AddressGeometryViewport {\n north: number;\n south: number;\n east: number;\n west: number;\n}\n\nexport enum RadiusUnits {\n miles = 'miles',\n km = 'km',\n}\n\nexport type AddressRadiusUnitsName = keyof typeof RadiusUnits;\n\n/** All options that can be used to override the defaults for the address criteria */\nexport type AddressCriteriaConfig = {\n radiusEnabled?: boolean;\n radiusUnits?: AddressRadiusUnitsName;\n}\n\n/** Interface used to provide an outlet for rows to be inserted into. */\nexport interface QueryFilterOutlet {\n viewContainer: ViewContainerRef;\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BaseConditionFieldDef } from './query-builder.directives';\nimport { BaseFieldDef, Conjunction, FieldConfig } from './query-builder.types';\n\nexport const defaultEditTypeFn = (field: BaseFieldDef) => {\n return field.inputType || field.dataType || field.type;\n};\n\nexport interface QueryBuilderConfig {\n fields: FieldConfig<BaseFieldDef>[];\n staticFieldSelection?: string;\n}\n\n@Injectable()\nexport class QueryBuilderService {\n private _customFieldDefs = new Set<BaseConditionFieldDef>();\n private _fieldDefsByName = new Map<string, BaseConditionFieldDef>();\n public scopes = signal([]);\n public hasMultipleScopes = computed(() => this.scopes()?.length > 1);\n /**\n * Will dispatch when properties changes, subscribe to this if component should\n * re-render when props are updated\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Function to determine operator and input templates for a field. Value passed\n * through the criteria builder Input.\n */\n public get editTypeFn(): (field: BaseFieldDef) => string {\n return this._editTypeFn;\n }\n public set editTypeFn(value: (field: BaseFieldDef) => string) {\n this._editTypeFn = value ?? defaultEditTypeFn;\n this.stateChanges.next();\n }\n private _editTypeFn: (field: BaseFieldDef) => string = defaultEditTypeFn;\n\n /**\n * The field configuration to control which types of fields are available to select\n * within the Condition Builder.\n */\n public get config(): QueryBuilderConfig {\n return this._config;\n }\n public set config(value: QueryBuilderConfig) {\n this._config = value;\n this.stateChanges.next();\n }\n private _config: QueryBuilderConfig = {\n fields: [],\n staticFieldSelection: null\n };\n\n /**\n * The configuration to control which types of conjuntions can be used in the query builder.\n * Value passed through the criteria builder Input\n * eg. and, or, not\n */\n public get allowedGroupings(): Conjunction[] {\n return this._allowedGroupings;\n }\n public set allowedGroupings(value: Conjunction[]) {\n this._allowedGroupings = value;\n this.stateChanges.next();\n }\n private _allowedGroupings: Conjunction[];\n\n public componentHost: any;\n\n constructor(private labels: NovoLabelService) {}\n\n /** Adds a field definition that was not included as part of the content children. */\n registerFieldDef(fieldDef: BaseConditionFieldDef) {\n this._customFieldDefs.add(fieldDef);\n this._fieldDefsByName.set(fieldDef.name, fieldDef);\n }\n\n /** Removes a field definition that was not included as part of the content children. */\n unregisterFieldDef(fieldDef: BaseConditionFieldDef) {\n this._customFieldDefs.delete(fieldDef);\n this._fieldDefsByName.delete(fieldDef.name);\n }\n\n getFieldDefsByName() {\n return this._fieldDefsByName;\n }\n\n getConjunctionLabel(conjunction: string) {\n switch (conjunction.replace('$', '').toLowerCase()) {\n case Conjunction.OR:\n return this.labels.or;\n case Conjunction.NOT:\n return this.labels.not;\n case Conjunction.AND:\n default:\n return this.labels.and;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const NOVO_QUERY_BUILDER = new InjectionToken<any>('NOVO_QUERY_BUILDER');\nexport const NOVO_CRITERIA_BUILDER = new InjectionToken<any>('NOVO_CRITERIA_BUILDER');\nexport const NOVO_CONDITION_BUILDER = new InjectionToken<any>('NOVO_CONDITION_BUILDER');\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\nimport { QueryBuilderService } from './query-builder.service';\n\n/** Base interface for a condidation template directives. */\nexport interface ConditionDef {\n template: TemplateRef<any>;\n}\n\n/**\n * Contained within a novoConditionField definition describing what input should be\n * used to capture the compare value of the Condtion\n */\n@Directive({ selector: '[novoConditionInputDef]' })\nexport class NovoConditionInputDef implements ConditionDef {\n constructor(/** @docs-private */ public template: TemplateRef<any>) {}\n}\n\n/**\n * Contained within a novoConditionField definition describing what operators should be available.\n */\n@Directive({ selector: '[novoConditionOperatorsDef]' })\nexport class NovoConditionOperatorsDef implements ConditionDef {\n constructor(/** @docs-private */ public template: TemplateRef<any>) {}\n}\n\n/**\n * Field Field definition for the QueryBuilder.\n * Defines the inputType and operators to use for the query builder.\n */\n@Directive()\nexport class BaseConditionFieldDef {\n /** Unique name for this field. */\n @Input('novoFilterFieldDef')\n get name(): string {\n return this._name;\n }\n set name(name: string) {\n this._setNameInput(name);\n }\n protected _name: string;\n\n @ContentChild(NovoConditionInputDef) fieldInput: NovoConditionInputDef;\n @ContentChild(NovoConditionOperatorsDef) fieldOperators: NovoConditionOperatorsDef;\n\n /**\n * Transformed version of the column name that can be used as part of a CSS classname. Excludes\n * all non-alphanumeric characters and the special characters '-' and '_'. Any characters that\n * do not match are replaced by the '-' character.\n */\n cssClassFriendlyName: string;\n _fieldCssClassName: string[];\n\n defaultOperator: string;\n\n constructor() {}\n\n /**\n * Overridable method that sets the css classes that will be added to every cell in this\n * column.\n * In the future, columnCssClassName will change from type string[] to string and this\n * will set a single string value.\n * @docs-private\n */\n protected _updateFieldCssClassName() {\n this._fieldCssClassName = [`novo-filter-field-${this.cssClassFriendlyName}`];\n }\n\n protected _setNameInput(value: string) {\n // If the directive is set without a name (updated programmatically), then this setter will\n // trigger with an empty string and should not overwrite the programmatically set value.\n if (value) {\n this._name = value;\n this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');\n this._updateFieldCssClassName();\n }\n }\n}\n\n@Directive({\n selector: '[novoConditionFieldDef]',\n})\nexport class NovoConditionFieldDef extends BaseConditionFieldDef {\n constructor(private qbs: QueryBuilderService) {\n super();\n }\n register() {\n this.qbs.registerFieldDef(this);\n }\n unregister() {\n this.qbs.unregisterFieldDef(this);\n }\n}\n","import { AfterViewInit, Directive, Input, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { FormControlDirective, FormControlName, UntypedFormGroup } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { NovoConditionFieldDef, NovoConditionOperatorsDef } from '../query-builder.directives';\nimport { Operator } from '../query-builder.types';\n\n@Directive()\nexport abstract class AbstractConditionFieldDef implements OnDestroy, OnInit, AfterViewInit {\n /** Column name that should be used to reference this column. */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(name: string) {\n this._name = name;\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncFieldDefName();\n }\n _name: string;\n\n defaultOperator: Operator | string;\n protected _previousOperatorValue: Operator;\n\n protected operatorEditGroups: Set<Operator>[] = [];\n\n @ViewChild(NovoConditionFieldDef, { static: true }) fieldDef: NovoConditionFieldDef;\n @ViewChildren(FormControlName) formControlsByName: QueryList<FormControlName>;\n\n constructor(public labels: NovoLabelService) {}\n\n ngOnInit() {\n this._syncFieldDefName();\n this._syncFieldDefOperatorValue();\n this._previousOperatorValue = this.defaultOperator as Operator;\n // Need to add self to FilterBuilder because \"ContentChildren won't find it\"\n this.fieldDef?.register();\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.frameAfterViewInit();\n });\n }\n\n frameAfterViewInit() {\n const operatorField = this.formControlsByName.find(formControlDirective => formControlDirective.name === 'operator')?.control;\n if (operatorField) {\n this._previousOperatorValue = operatorField.value;\n }\n }\n\n ngOnDestroy() {\n this.fieldDef?.unregister();\n }\n\n /**\n * Define an edit group of operators. Once defined, if the user switches from one of these operators to another,\n * then the condition value will not be cleared. This makes sense if both operators use the same UI controls for editing.\n * @param operators The set of Operator values intended to share UI controls.\n */\n protected defineOperatorEditGroup(...operators: Operator[]): void {\n this.operatorEditGroups.push(new Set(operators));\n }\n\n onOperatorSelect(formGroup: UntypedFormGroup): void {\n let clearVal = true;\n if (this._previousOperatorValue && this.operatorEditGroups?.length) {\n const previousOperatorGroupIndex = this.operatorEditGroups.findIndex(grp => grp.has(this._previousOperatorValue));\n const newOperatorValue = formGroup.get('operator').getRawValue();\n const newOperatorGroupIndex = this.operatorEditGroups.findIndex(grp => grp.has(newOperatorValue));\n if (previousOperatorGroupIndex !== -1 && newOperatorGroupIndex !== -1 && previousOperatorGroupIndex === newOperatorGroupIndex) {\n clearVal = false;\n }\n }\n this._previousOperatorValue = formGroup.get('operator').value;\n if (clearVal) {\n formGroup.get('value').setValue(null);\n }\n }\n\n /** Synchronizes the column definition name with the text column name. */\n private _syncFieldDefName() {\n if (this.fieldDef) {\n this.fieldDef.name = this.name;\n }\n }\n\n private _syncFieldDefOperatorValue() {\n if (this.fieldDef) {\n this.fieldDef.defaultOperator = this.defaultOperator;\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n InputSignal,\n OnDestroy,\n QueryList,\n Signal,\n signal,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n WritableSignal\n} from '@angular/core';\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { PlacesListComponent } from 'novo-elements/elements/places';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\nimport { Subscription } from 'rxjs';\nimport { AddressCriteriaConfig, AddressData, AddressRadius, AddressRadiusUnitsName, Operator, RadiusUnits } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { NovoSelectElement } from 'novo-elements/elements/select';\n\n/**\n * Handle selection of field values when a list of options is provided.\n */\n@Component({\n selector: 'novo-address-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n <novo-option value=\"radius\" *ngIf=\"radiusEnabled()\">{{ labels.radius }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-flex justify=\"space-between\" align=\"end\">\n <novo-field #novoRadiusField *ngIf=\"formGroup.value.operator === 'radius'\" class=\"address-radius\">\n <novo-select\n #radiusSelect [placeholder]=\"labels.radius\"\n (onSelect)=\"onRadiusSelect(formGroup, $event.selected)\"\n [value]=\"radius()\"\n [options]=\"radiusOptions()\">\n </novo-select>\n </novo-field>\n <novo-field #novoField class=\"address-location\">\n <novo-chip-list [(ngModel)]=\"chipListModel\" [ngModelOptions]=\"{ standalone: true }\" (click)=\"openPlacesList(viewIndex)\">\n <novo-chip *ngFor=\"let item of formGroup.get('value').value\" (removed)=\"remove(item, formGroup, viewIndex)\">\n <novo-text ellipsis>{{ item.formatted_address }}</novo-text>\n <novo-icon novoChipRemove>close</novo-icon>\n </novo-chip>\n <input\n novoChipInput\n [id]=\"viewIndex\"\n [placeholder]=\"labels.location\"\n (keyup)=\"onKeyup($event, viewIndex)\"\n (keydown)=\"onKeydown($event, viewIndex)\"\n [picker]=\"placesPicker\"\n #addressInput/>\n </novo-chip-list>\n <novo-picker-toggle [overlayId]=\"viewIndex\" icon=\"location\" novoSuffix>\n <google-places-list\n [term]=\"term\"\n (select)=\"selectPlace($event, formGroup, viewIndex)\"\n formControlName=\"value\"\n #placesPicker/>\n </novo-picker-toggle>\n </novo-field>\n </novo-flex>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultAddressConditionDef extends AbstractConditionFieldDef implements OnDestroy {\n @ViewChildren(NovoPickerToggleElement) overlayChildren: QueryList<NovoPickerToggleElement>;\n @ViewChildren('addressInput') inputChildren: QueryList<ElementRef>;\n @ViewChild('placesPicker') placesPicker: PlacesListComponent;\n @ViewChildren(NovoSelectElement) addressSideTest: any;\n\n // Static defaults\n radiusValues: number[] = [5, 10, 20, 30, 40, 50, 100];\n defaultRadius: number = 30;\n\n // Overridable defaults\n defaults: AddressCriteriaConfig = {\n radiusEnabled: false,\n radiusUnits: 'miles',\n };\n config: InputSignal<AddressCriteriaConfig> = input();\n radiusUnits: Signal<AddressRadiusUnitsName> = computed(() =>\n this.config()?.radiusUnits || this.defaults.radiusUnits\n );\n radiusEnabled: Signal<boolean> = computed(() =>\n this.config()?.radiusEnabled || this.defaults.radiusEnabled\n );\n\n radius: WritableSignal<number> = signal(this.defaultRadius);\n radiusOptions: Signal<{ label: string; value: number; }[]> = computed(() => {\n const unitsLabel = this.radiusUnits() === RadiusUnits.miles ? this.labels.miles : this.labels.km;\n return this.radiusValues.map(value => ({\n label: `${value.toString()} ${unitsLabel}`,\n value,\n }));\n });\n\n defaultOperator = Operator.includeAny;\n chipListModel: any = '';\n term: string = '';\n\n private _addressChangesSubscription: Subscription = Subscription.EMPTY;\n\n public element = inject(ElementRef);\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.includeAny, Operator.excludeAny, Operator.radius);\n }\n\n frameAfterViewInit(): void {\n super.frameAfterViewInit();\n // Initialize the radius value from existing data\n this.assignRadiusFromValue();\n\n // Update the radius on address value changes\n this._addressChangesSubscription = this.inputChildren.changes.subscribe(() => {\n this.assignRadiusFromValue();\n });\n }\n\n ngOnDestroy() {\n this._addressChangesSubscription.unsubscribe();\n }\n\n onKeyup(event, viewIndex) {\n if (![Key.Escape, Key.Enter].includes(event.key)) {\n this.openPlacesList(viewIndex);\n }\n this.term = event.target.value;\n }\n\n onKeydown(event, viewIndex) {\n if (!this.placesPicker.dropdownOpen) {\n this.openPlacesList(viewIndex);\n this.placesPicker.dropdownOpen = true;\n }\n if ([Key.Escape, Key.Tab].includes(event.key)) {\n this.closePlacesList(viewIndex);\n } else {\n this.placesPicker.onKeyDown(event);\n }\n }\n\n getValue(formGroup: AbstractControl): AddressData[] {\n return formGroup.value.value || [];\n }\n\n getCurrentOverlay(viewIndex: string): NovoPickerToggleElement {\n return this.overlayChildren?.find(item => item.overlayId === viewIndex);\n }\n\n getCurrentInput(viewIndex: string): ElementRef {\n return this.inputChildren?.find(item => (item as any).nativeElement.id === viewIndex);\n }\n\n openPlacesList(viewIndex) {\n this.getCurrentOverlay(viewIndex)?.openPanel();\n }\n\n closePlacesList(viewIndex) {\n this.getCurrentOverlay(viewIndex)?.closePanel();\n }\n\n selectPlace(event: any, formGroup: AbstractControl, viewIndex: string): void {\n const valueToAdd: AddressData = {\n address_components: event.address_components,\n formatted_address: event.formatted_address,\n geometry: event.geometry,\n place_id: event.place_id,\n };\n const current: AddressData | AddressData[] = this.getValue(formGroup);\n const updated: AddressData[] = Array.isArray(current) ? [...current, valueToAdd] : [valueToAdd];\n formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, updated));\n\n this.inputChildren.forEach(input => {\n input.nativeElement.value = '';\n })\n this.getCurrentInput(viewIndex)?.nativeElement.focus();\n this.closePlacesList(viewIndex);\n }\n\n remove(valueToRemove: AddressData, formGroup: AbstractControl, viewIndex: string): void {\n const current = this.getValue(formGroup);\n const index = current.indexOf(valueToRemove);\n if (index >= 0) {\n const oldValue = [...current]\n oldValue.splice(index, 1);\n formGroup.get('value').setValue(oldValue);\n }\n this.closePlacesList(viewIndex);\n }\n\n // Override abstract behavior - allow moving location from includeAny to radius, but when moving the opposite direction,\n // trim out radius information from the value\n onOperatorSelect(formGroup: UntypedFormGroup): void {\n const previousOperator = this._previousOperatorValue;\n super.onOperatorSelect(formGroup);\n if ([previousOperator, formGroup.get('operator').getRawValue()].indexOf(Operator.radius) !== -1 &&\n formGroup.get('value').getRawValue() != null) {\n formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, this.getValue(formGroup)));\n }\n }\n\n onRadiusSelect(formGroup: AbstractControl, radius: number): void {\n this.radius.set(radius);\n // We must dirty the form explicitly to show up as a user modification when it was done programmatically\n formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, this.getValue(formGroup)));\n formGroup.markAsDirty();\n }\n\n private assignRadiusFromValue() {\n if (this.placesPicker?.model?.length) {\n const addressData: AddressData = this.placesPicker.model[0];\n const initialRadius = addressData.radius?.value;\n if (initialRadius && Helpers.isNumber(initialRadius)) {\n this.radius.set(initialRadius);\n }\n }\n }\n\n private updateRadiusInValues(formGroup: AbstractControl, values: AddressData[]): AddressData[] {\n return values.map(val => ({\n ...val,\n radius: this.isRadiusOperatorSelected(formGroup) ? this.getRadiusData(formGroup) : undefined,\n }));\n }\n\n private getRadiusData(formGroup: AbstractControl): AddressRadius {\n return {\n value: this.getRadius(formGroup),\n units: this.radiusUnits(),\n };\n }\n\n private getRadius(formGroup: AbstractControl): number | undefined {\n return this.isRadiusOperatorSelected(formGroup) ? this.radius() : undefined;\n }\n\n private isRadiusOperatorSelected(formGroup: AbstractControl): boolean {\n return formGroup.get('operator').value === 'radius';\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * When constructing a query using a field that is a boolean with only true/false as possible values.\n */\n@Component({\n selector: 'novo-boolean-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"include\">{{ labels.equals }}</novo-option>\n <novo-option value=\"exclude\">{{ labels.doesNotEqual }}</novo-option>\n <novo-option value=\"isNull\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoConditionInputDef=\"let formGroup\" [style.width.px]=\"125\" [formGroup]=\"formGroup\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ formGroup.value.operator === 'isNull' ? labels.yes : labels.true }}</novo-radio>\n <novo-radio [value]=\"false\">{{ formGroup.value.operator === 'isNull' ? labels.no : labels.false }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultBooleanConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.include;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.include, Operator.exclude, Operator.isNull);\n }\n}\n","import { ChangeDetectionStrategy, Component, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * Most complicated of the default conditions defs, a date needs to provide a different\n * input type depending on the operator selected.\n */\n@Component({\n selector: 'novo-date-condition-def',\n template: `\n <ng-container novoConditionFieldDef=\"DATE\">\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"before\">{{ labels.before }}</novo-option>\n <novo-option value=\"after\">{{ labels.after }}</novo-option>\n <novo-option value=\"between\">{{ labels.between }}</novo-option>\n <novo-option value=\"within\">{{ labels.within }}</novo-option>\n <novo-option value=\"isNull\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['before', 'after']\">\n <input novoInput dateFormat=\"iso8601\" [picker]=\"datepicker\" formControlName=\"value\" />\n <novo-picker-toggle triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-picker (onSelect)=\"closePanel($event, viewIndex)\" #datepicker></novo-date-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['between']\">\n <input novoInput dateRangeFormat=\"date\" [picker]=\"daterangepicker\" formControlName=\"value\" />\n <novo-picker-toggle [for]=\"daterangepicker\" triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-picker #daterangepicker (onSelect)=\"closePanel($event, viewIndex)\" mode=\"range\" numberOfMonths=\"2\"></novo-date-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['within']\">\n <novo-select [placeholder]=\"labels.selectDateRange\" formControlName=\"value\">\n <novo-option value=\"7\">{{ labels.next7Days }}</novo-option>\n <novo-option value=\"-7\">{{ labels.past7Days }}</novo-option>\n <novo-option value=\"-30\">{{ labels.past30Days }}</novo-option>\n <novo-option value=\"-90\">{{ labels.past90Days }}</novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultDateConditionDef extends AbstractConditionFieldDef {\n @ViewChildren(NovoPickerToggleElement)\n overlayChildren: QueryList<NovoPickerToggleElement>;\n\n defaultOperator = Operator.within;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.before, Operator.after);\n }\n\n closePanel(event, viewIndex): void {\n const overlay = this.overlayChildren.find(item => item.overlayId === viewIndex);\n overlay.closePanel(event);\n }\n}\n","import { ChangeDetectionStrategy, Component, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * Most complicated of the default conditions defs, a date needs to provide a different\n * input type depending on the operator selected.\n */\n@Component({\n selector: 'novo-date-time-condition-def',\n template: `\n <ng-container novoConditionFieldDef=\"DATE\">\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"before\">{{ labels.before }}</novo-option>\n <novo-option value=\"after\">{{ labels.after }}</novo-option>\n <novo-option value=\"within\">{{ labels.within }}</novo-option>\n <novo-option value=\"isNull\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['after']\">\n <input novoInput dateTimeFormat=\"iso8601\" [picker]=\"datetimepicker\" formControlName=\"value\" />\n <novo-picker-toggle triggerOnFocus [width]=\"-1\" [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-time-picker defaultTime=\"end\" (onSelect)=\"closePanel($event, viewIndex)\" #datetimepicker></novo-date-time-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['before']\">\n <input novoInput dateTimeFormat=\"iso8601\" [picker]=\"datetimepickerbefore\" formControlName=\"value\" />\n <novo-picker-toggle triggerOnFocus [width]=\"-1\" [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-time-picker defaultTime=\"start\" (onSelect)=\"closePanel($event, viewIndex)\" #datetimepickerbefore></novo-date-time-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['within']\">\n <novo-select [placeholder]=\"labels.selectDateRange\" formControlName=\"value\">\n <novo-option value=\"7\">{{ labels.next7Days }}</novo-option>\n <novo-option value=\"-7\">{{ labels.past7Days }}</novo-option>\n <novo-option value=\"-30\">{{ labels.past30Days }}</novo-option>\n <novo-option value=\"-90\">{{ labels.past90Days }}</novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultDateTimeConditionDef extends AbstractConditionFieldDef {\n @ViewChildren(NovoPickerToggleElement)\n overlayChildren: QueryList<NovoPickerToggleElement>;\n\n defaultOperator = Operator.within;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.before, Operator.after);\n }\n\n closePanel(event, viewIndex): void {\n const overlay = this.overlayChildren.find(item => item.overlayId === viewIndex);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\n\n/**\n * Constructing filters against String fields can be complex. Each \"chip\" added to the\n * condition can be independently used to query a database. Not all systems support\n * querying within a text column, ie sql unless LIKE is enabled. This could result in a\n * performance penalty.\n */\n@Component({\n selector: 'novo-string-condition-def',\n template: `\n <!-- fieldTypes should be UPPERCASE -->\n <ng-container novoConditionFieldDef=\"STRING\">\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n <novo-option value=\"includeAll\">{{ labels.includeAll }}</novo-option>\n <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n <novo-option value=\"isEmpty\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['includeAny', 'includeAll', 'excludeAny']\">\n <novo-chip-list #chipList aria-label=\"filter value\" formControlName=\"value\">\n <novo-chip *ngFor=\"let chip of formGroup.value?.value || []\" [value]=\"chip\" (removed)=\"remove(chip, formGroup)\">\n <novo-text ellipsis>{{ chip }}</novo-text>\n <novo-icon novoChipRemove>close</novo-icon>\n </novo-chip>\n <input\n novoChipInput\n [placeholder]=\"labels.typeToAddChips\"\n autocomplete=\"off\"\n (novoChipInputTokenEnd)=\"add($event, formGroup)\"\n />\n </novo-chip-list>\n <novo-autocomplete></novo-autocomplete>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isEmpty']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // means the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultStringConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.includeAny;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.includeAny, Operator.includeAll, Operator.excludeAny);\n }\n\n getValue(formGroup: AbstractControl): any[] {\n return formGroup.value?.value || [];\n }\n\n add(event: any, formGroup: AbstractControl): void {\n const input = event.input;\n input.value = '';\n const valueToAdd = event.value;\n if (valueToAdd !== '') {\n const current: any[] = this.getValue(formGroup);\n const newValue: any[] = Array.isArray(current) ? [...current, valueToAdd] : [valueToAdd];\n this.setFormValue(formGroup, newValue);\n }\n }\n\n remove(valueToRemove: string, formGroup: AbstractControl): void {\n const current = this.getValue(formGroup);\n const index = current.indexOf(valueToRemove);\n if (index >= 0) {\n const value = [...current]\n value.splice(index, 1);\n this.setFormValue(formGroup, value);\n }\n }\n\n private setFormValue(formGroup: AbstractControl, newValue: any[]) {\n formGroup.get('value').setValue(newValue);\n formGroup.markAsDirty();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * When constructing a query using a field that is an Int, Double, Number ...etc.\n * TODO: Do we implment currency formation here potentially>.?\n */\n@Component({\n selector: 'novo-number-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"greaterThan\">{{ labels.greaterThan }}</novo-option>\n <novo-option value=\"lessThan\">{{ labels.lessThan }}</novo-option>\n <novo-option value=\"equalTo\">{{ labels.equalTo }}</novo-option>\n <novo-option value=\"isNull\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['greaterThan', 'lessThan', 'equalTo']\">\n <input novoInput type=\"number\" formControlName=\"value\" />\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultNumberConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.equalTo;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.greaterThan, Operator.lessThan, Operator.equalTo);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\n\n/**\n * Any condition that has a type of ID usually only is queried by ID.\n */\n@Component({\n selector: 'novo-id-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\">\n <novo-option value=\"equalTo\">{{ labels.equalTo }}</novo-option>\n <ng-content></ng-content>\n </novo-select>\n </novo-field>\n <novo-field *novoConditionInputDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <input novoInput type=\"number\" min=\"1\" step=\"1\" formControlName=\"value\" />\n </novo-field>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultIdConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.equalTo;\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\n\n/**\n * Handle selection of field values when a list of options is provided.\n */\n@Component({\n selector: 'novo-picker-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n <novo-option value=\"includeAll\">{{ labels.includeAll }}</novo-option>\n <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n <novo-option value=\"isNull\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; fieldMeta as meta\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['includeAny', 'includeAll', 'excludeAny']\">\n <novo-select extupdatefix formControlName=\"value\" [placeholder]=\"labels.select\" [multiple]=\"true\">\n <!-- WHat about optionUrl/optionType -->\n <novo-option *ngFor=\"let option of meta?.options\" [value]=\"option.value\" [attr.data-automation-value]=\"option.label\">\n {{ option.label }}\n </novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.includeAny;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.includeAny, Operator.includeAll, Operator.excludeAny);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { AddressCriteriaConfig } from '../query-builder.types';\n\n@Component({\n selector: 'novo-condition-templates',\n templateUrl: './condition-templates.component.html'\n})\nexport class NovoConditionTemplatesComponent {\n @Input() addressConfig: AddressCriteriaConfig;\n}\n","<novo-id-condition-def name=\"ID\"/>\n<novo-date-condition-def name=\"DATE\"/>\n<novo-date-time-condition-def name=\"TIMESTAMP\"/>\n<novo-string-condition-def name=\"STRING\"/>\n<novo-number-condition-def name=\"FLOAT\"/>\n<novo-number-condition-def name=\"INTEGER\"/>\n<novo-number-condition-def name=\"BIGDECIMAL\"/>\n<novo-number-condition-def name=\"DOUBLE\"/>\n<novo-address-condition-def name=\"ADDRESS\" [config]=\"addressConfig\"/>\n<novo-boolean-condition-def name=\"BOOLEAN\"/>\n<novo-picker-condition-def name=\"SELECT\"/>\n<novo-string-condition-def name=\"DEFAULT\"/>\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n SimpleChanges,\n SkipSelf,\n ViewChild,\n ViewContainerRef,\n computed,\n input\n} from '@angular/core';\nimport { ControlContainer, FormControl, FormGroup } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { BaseConditionFieldDef } from '../query-builder.directives';\nimport { QueryBuilderConfig, QueryBuilderService } from '../query-builder.service';\nimport { NOVO_CONDITION_BUILDER } from '../query-builder.tokens';\nimport { AddressCriteriaConfig, BaseFieldDef, FieldConfig, QueryFilterOutlet } from '../query-builder.types';\n\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\n@Directive({ selector: '[conditionInputOutlet]' })\nexport class ConditionInputOutlet implements QueryFilterOutlet {\n constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {}\n}\n\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\n@Directive({ selector: '[conditionOperatorOutlet]' })\nexport class ConditionOperatorOutlet implements QueryFilterOutlet {\n constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {}\n}\n\n@Component({\n selector: 'novo-condition-builder',\n templateUrl: './condition-builder.component.html',\n styleUrls: ['./condition-builder.component.scss'],\n providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent },\n {\n provide: QueryBuilderService,\n deps: [NovoLabelService, [new SkipSelf(), new Optional(), QueryBuilderService]],\n useFactory: (labelService: NovoLabelService, queryBuilderService?: QueryBuilderService) => {\n if (!queryBuilderService) {\n queryBuilderService = new QueryBuilderService(labelService);\n }\n return queryBuilderService;\n }\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConditionBuilderComponent implements OnInit, OnChanges, AfterContentInit, AfterViewInit, OnDestroy {\n @ViewChild(ConditionOperatorOutlet, { static: true }) _operatorOutlet: ConditionOperatorOutlet;\n @ViewChild(ConditionInputOutlet, { static: true }) _inputOutlet: ConditionInputOutlet;\n\n @Input() label: any;\n @Input() scope: string;\n @Input() andIndex: number;\n @Input() groupIndex: number;\n @Input() addressConfig: AddressCriteriaConfig;\n hideOperator = input(true);\n conditionType = input();\n\n // This component can either be directly hosted as a host to a condition, or it can be part of a condition group within a criteria builder.\n // In the former case, config will come from inputs, and we will instantiate our own QueryBuilderService. In the latter, it comes from\n // the QueryBuilderService.\n inputConfig = input<QueryBuilderConfig>(null, { alias: 'config'});\n inputEditTypeFn = input<(field: BaseFieldDef) => string>(null, { alias: 'editTypeFn'});\n private config = computed<QueryBuilderConfig>(() => {\n if (this.isConditionHost) {\n this.queryBuilderService.config = this.inputConfig();\n }\n return this.queryBuilderService.config;\n });\n private editTypeFn = computed<(field: BaseFieldDef) => string>(() => {\n if (this.isConditionHost) {\n this.queryBuilderService.editTypeFn = this.inputEditTypeFn();\n }\n return this.queryBuilderService.editTypeFn;\n });\n\n public parentForm: FormGroup;\n public fieldConfig: FieldConfig<BaseFieldDef>;\n public searches!: Subscription;\n public results$: Promise<any[]>;\n public searchTerm: FormControl = new FormControl();\n public fieldDisplayWith;\n public displayIcon: string;\n\n public staticFieldSelection = computed(() => this.config().staticFieldSelection);\n private _lastContext: any = {};\n @HostBinding('class.condition-host')\n public isConditionHost = false;\n\n public gridColumns = computed(() => {\n if (this.staticFieldSelection()) {\n return '13rem 1fr';\n } else {\n const firstColumnWidth = this.hideOperator() ? '20rem' : '16rem';\n return `${firstColumnWidth} 13rem 1fr`;\n }\n });\n\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n constructor(\n public labels: NovoLabelService,\n private cdr: ChangeDetectorRef,\n private queryBuilderService: QueryBuilderService,\n private controlContainer: ControlContainer,\n ) {\n if (!queryBuilderService.componentHost) {\n queryBuilderService.componentHost = this;\n this.isConditionHost = true;\n this.groupIndex = 0;\n this.andIndex = 0;\n }\n }\n\n ngOnInit() {\n this.parentForm = this.controlContainer.control as FormGroup;\n this.parentForm.controls.field.valueChanges.subscribe((value) => {\n Promise.resolve().then(() => this.updateFieldSelection());\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.inputConfig?.previousValue?.staticFieldSelection &&\n changes.inputConfig.previousValue.staticFieldSelection !== changes.inputConfig.currentValue.staticFieldSelection) {\n this.parentForm.controls.field.setValue(changes.inputConfig.currentValue.staticFieldSelection);\n }\n }\n\n ngAfterContentInit() {\n const allFields = this.config()?.fields || [];\n const scopedFields = this.scope ? allFields.find((field) => field.value === this.scope) : allFields[0];\n allFields.length && this.changeFieldOptions(scopedFields);\n this.searches = this.searchTerm.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe((term) => {\n this.results$ = Promise.resolve(\n this.fieldConfig.options.filter(\n (f) => f.name.toLowerCase().includes(term.toLowerCase()) || f.label?.toLowerCase().includes(term.toLowerCase()),\n ),\n );\n this.cdr.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n if (this.parentForm.value?.field !== null) {\n Promise.resolve().then(() => this.updateFieldSelection());\n }\n }\n\n ngOnDestroy() {\n this.searches.unsubscribe();\n // Clear all outlets and Maps\n [this._operatorOutlet.viewContainer, this._inputOutlet.viewContainer].forEach((def) => {\n def.clear();\n });\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n /**\n * Updates the Conditions \"Field\" Options to Change base on new Scope\n * @param fieldConfig\n */\n changeFieldOptions(fieldConfig: FieldConfig<BaseFieldDef>) {\n this.fieldConfig = fieldConfig;\n this.searchTerm.setValue('');\n this.results$ = Promise.resolve(this.fieldConfig.options);\n }\n\n getField() {\n const field = this.parentForm?.value?.field;\n if (!field) return null;\n return this.fieldConfig.find(field);\n }\n\n getDefaultField() {\n const fields = this.fieldConfig.options;\n if (fields?.length) {\n return fields[0].name;\n }\n return null;\n }\n\n updateFieldSelection() {\n const fieldConf = this.getField();\n if (!fieldConf) {\n this.parentForm.get('field').setValue(this.getDefaultField());\n return;\n } else {\n this.fieldDisplayWith = () => fieldConf.label || fieldConf.name;\n this.displayIcon = fieldConf.icon || null;\n }\n const { field } = this.parentForm.value;\n\n if (this._lastContext.field !== field) {\n if (this._lastContext.field) {\n // only clearing operator/value if field was previously defined so we can preload values onto the form\n this.parentForm.get('value').setValue(null);\n this.parentForm.get('operator').setValue(null);\n }\n this.createFieldTemplates();\n }\n setTimeout(() => this.updateConditionType());\n\n this._lastContext = { ...this.parentForm.value };\n this.cdr.markForCheck();\n }\n\n updateConditionType() {\n this.parentForm.get('conditionType')?.setValue(this.conditionType());\n }\n\n private findDefinitionForField(field) {\n if (!field) return;\n const editType = this.editTypeFn()(field);\n // Don't look at dataSpecialization it is no good, this misses currency, and percent\n const { name } = field;\n const fieldDefsByName = this.queryBuilderService.getFieldDefsByName();\n // Check Fields by priority for match Field Definition\n const key = [name, editType?.toUpperCase(), 'DEFAULT'].find((it) => fieldDefsByName.has(it));\n return fieldDefsByName.get(key);\n }\n\n private createFieldTemplates() {\n const definition = this.findDefinitionForField(this.getField());\n\n if (!this.parentForm.get('operator').value) {\n this.parentForm.get('operator').setValue(definition.defaultOperator);\n }\n\n this.createFieldOperators(definition);\n this.createFieldInput(definition);\n }\n\n private createFieldOperators(definition: BaseConditionFieldDef) {\n this._operatorOutlet.viewContainer.clear();\n if (definition) {\n const context = { $implicit: this.parentForm, fieldMeta: this.getField() };\n this._operatorOutlet.viewContainer.createEmbeddedView(definition.fieldOperators.template, context);\n }\n this.cdr.markForCheck();\n }\n\n private createFieldInput(definition: BaseConditionFieldDef) {\n this._inputOutlet.viewContainer.clear();\n if (definition) {\n const context = { $implicit: this.parentForm, fieldMeta: this.getField(), viewIndex: this.groupIndex.toString() + this.andIndex.toString() };\n this._inputOutlet.viewContainer.createEmbeddedView(definition.fieldInput.template, context);\n }\n this.cdr.markForCheck();\n }\n}\n","<form [formGroup]=\"parentForm\">\n <novo-grid gap=\"1rem\" [columns]=\"gridColumns()\" align=\"end\">\n <novo-field class=\"condition-field\" *ngIf=\"!staticFieldSelection()\">\n <novo-select\n [placeholder]=\"labels.chooseAField\"\n formControlName=\"field\"\n (onSelect)=\"updateFieldSelection()\"\n overlayWidth=\"24rem\"\n overlayHeight=\"20rem\"\n [displayWith]=\"fieldDisplayWith\"\n [style.minWidth.px]=\"160\"\n [style.maxWidth.px]=\"(hideOperator() || isConditionHost) ? 200 : 160\"\n [displayIcon]=\"displayIcon\">\n <novo-optgroup class=\"filter-search-results\">\n <novo-option>\n <novo-select-search [formControl]=\"searchTerm\" [clearSearchInput]=\"false\"></novo-select-search>\n </novo-option>\n <ng-container *ngIf=\"results$ | async as results; else loading\">\n <ng-container *ngIf=\"results.length\">\n <novo-option *ngFor=\"let field of results\" value=\"{{ field.name }}\"\n [attr.data-automation-id]=\"field.name\">\n {{ field.label || field.name }}\n </novo-option>\n </ng-container>\n </ng-container>\n </novo-optgroup>\n </novo-select>\n </novo-field>\n\n <div class=\"condition-operator\">\n <ng-container conditionOperatorOutlet></ng-container>\n </div>\n\n <div class=\"condition-input\">\n <ng-container conditionInputOutlet></ng-container>\n </div>\n </novo-grid>\n <ng-content></ng-content>\n</form>\n\n<novo-condition-templates *ngIf=\"isConditionHost\" [addressConfig]=\"addressConfig\"/>\n\n<!-- LOADING TEMPLATE -->\n<ng-template #loading>\n <novo-loading></novo-loading>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ControlContainer, FormArray, FormBuilder, UntypedFormGroup, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { QueryBuilderService } from '../query-builder.service';\nimport { Condition, Conjunction } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\nconst EMPTY_CONDITION: Condition = {\n conditionType: '$and',\n field: null,\n operator: null,\n scope: null,\n value: null,\n};\n@Component({\n selector: 'novo-condition-group',\n templateUrl: './condition-group.component.html',\n styleUrls: ['./condition-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ConditionGroupComponent), multi: true }],\n host: {\n class: 'novo-condition-group',\n },\n})\nexport class ConditionGroupComponent implements OnInit, OnDestroy {\n @Input() controlName: string = '$' + Conjunction.AND;\n @Input() groupIndex: number;\n @Input() hideFirstOperator: boolean = true;\n @Input() canBeEmpty: boolean = false;\n @Input() formGroupName: any;\n\n public scope: string;\n public parentForm: UntypedFormGroup;\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n constructor(\n public qbs: QueryBuilderService,\n public labels: NovoLabelService,\n private controlContainer: ControlContainer,\n private formBuilder: FormBuilder,\n private cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.parentForm = this.controlContainer.control as UntypedFormGroup;\n this.controlName = Object.keys(this.parentForm.controls)[0];\n this.updateGroupScope();\n merge(this.parentForm.parent.valueChanges, this.qbs.stateChanges)\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => this.cdr.markForCheck());\n }\n\n ngOnChanges() {\n this.updateGroupScope();\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n updateGroupScope() {\n if (this.parentForm && this.controlName) {\n this.scope = this.parentForm.value[this.controlName][0]?.scope || this.qbs.scopes()[0];\n }\n }\n\n updateControlName(value: string) {\n const name = `$${value.replace('$', '')}`;\n if (name !== this.controlName) {\n const current = this.parentForm.get(this.controlName).value;\n this.parentForm.controls[name] = this.parentForm.controls[this.controlName];\n delete this.parentForm.controls[this.controlName];\n this.controlName = name;\n // scrub properties not on control\n const currentStrict = current.map((item) => (({ conditionType, field, operator, scope, value, ...rest }) => ({ conditionType, field, operator, scope, value }))(item));\n this.parentForm.get(this.controlName)?.setValue(currentStrict);\n this.cdr.markForCheck();\n }\n }\n\n get root(): FormArray {\n return this.parentForm.get(this.controlName) as FormArray;\n }\n\n addCondition(data?: any) {\n const condition = this.newCondition(data);\n const onlyConditionIsEmpty = JSON.stringify(this.root.value) === JSON.stringify([EMPTY_CONDITION]);\n this.root.push(condition);\n this.qbs.hasMultipleScopes() && onlyConditionIsEmpty && this.removeCondition(0);\n this.cdr.markForCheck();\n }\n\n removeCondition(index: number) {\n const isPrimaryScope = this.scope === this.qbs.scopes()[0];\n const lastRowInGroup = this.root.length === 1;\n const lastRowInQueryBuilder = this.cantRemoveRow();\n this.root.removeAt(index);\n if ((lastRowInQueryBuilder || (lastRowInGroup && isPrimaryScope)) && !this.canBeEmpty) {\n this.addCondition();\n }\n this.cdr.markForCheck();\n }\n\n newCondition({ field, operator, scope, value }: Condition = EMPTY_CONDITION): UntypedFormGroup {\n return this.formBuilder.group({\n conditionType: '$and',\n field: [field, Validators.required],\n operator: [operator, Validators.required],\n scope: [scope],\n value: [value],\n });\n }\n\n cantRemoveRow() {\n if ((this.parentForm.parent as FormArray).length > 1) {\n return false;\n }\n return this.root.length <= 1;\n }\n}\n","<div [formGroup]=\"parentForm\" class=\"condition-group-container\">\n <novo-stack [formArrayName]=\"controlName\" gap=\"md\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLast = last;\">\n <ng-container [formGroupName]=\"andIndex\">\n <novo-flex class=\"condition-row\" [ngClass]=\"{ isFirst: andIndex === 0 }\" [class]=\"scope\" align=\"end\" gap=\"sm\" #flex>\n <novo-dropdown *ngIf=\"(!isFirst || !hideFirstOperator) && qbs.allowedGroupings.length > 1; else labeledGroup\">\n <button theme=\"dialogue\" icon=\"collapse\" size=\"sm\">{{qbs.getConjunctionLabel(controlName)}}</button>\n <novo-optgroup>\n <novo-option *ngFor=\"let c of qbs.allowedGroupings\" (click)=\"updateControlName(c)\">\n {{qbs.getConjunctionLabel(c)}}</novo-option>\n </novo-optgroup>\n </novo-dropdown>\n <ng-template #labeledGroup>\n <novo-label *ngIf=\"!isFirst || !hideFirstOperator\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">\n {{qbs.getConjunctionLabel(controlName)}}</novo-label>\n </ng-template>\n <novo-condition-builder [groupIndex]=\"groupIndex\" [andIndex]=\"andIndex\" [hideOperator]=\"isFirst && hideFirstOperator\" [scope]=\"scope\" [conditionType]=\"controlName\"></novo-condition-builder>\n <novo-button theme=\"icon\" icon=\"delete-o\" color=\"negative\" (click)=\"removeCondition(andIndex)\">\n </novo-button>\n </novo-flex>\n </ng-container>\n </ng-container>\n <button\n *ngIf=\"!qbs.hasMultipleScopes()\"\n theme=\"dialogue\"\n data-automation-id=\"add-advanced-search-condition\"\n icon=\"add-thin\"\n side=\"left\"\n size=\"sm\"\n uppercase\n (click)=\"addCondition()\">\n {{ labels.addCondition }}</button>\n </novo-stack>\n</div>\n","import {\n AfterContentChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChildren,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { ControlContainer, FormArray, FormBuilder, NG_VALUE_ACCESSOR, UntypedFormGroup, Validators } from '@angular/forms';\nimport { interval, Subject } from 'rxjs';\nimport { debounce, filter, startWith, takeUntil } from 'rxjs/operators';\nimport { NovoTabbedGroupPickerElement, TabbedGroupPickerButtonConfig, TabbedGroupPickerTab } from 'novo-elements/elements/tabbed-group-picker';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { ConditionGroupComponent } from '../condition-group/condition-group.component';\nimport { NovoConditionFieldDef } from '../query-builder.directives';\nimport { QueryBuilderService } from '../query-builder.service';\nimport { NOVO_CRITERIA_BUILDER } from '../query-builder.tokens';\nimport { BaseFieldDef, Condition, ConditionGroup, Conjunction, AddressCriteriaConfig } from '../query-builder.types';\n\nconst EMPTY_CONDITION: Condition = {\n conditionType: '$and',\n field: null,\n operator: null,\n scope: null,\n value: null,\n};\n@Component({\n selector: 'novo-criteria-builder',\n templateUrl: './criteria-builder.component.html',\n styleUrls: ['./criteria-builder.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CriteriaBuilderComponent), multi: true },\n { provide: NOVO_CRITERIA_BUILDER, useExisting: CriteriaBuilderComponent },\n { provide: QueryBuilderService, useClass: QueryBuilderService },\n ],\n host: {\n class: 'novo-criteria-builder',\n },\n})\nexport class CriteriaBuilderComponent implements OnInit, OnDestroy, AfterContentChecked, AfterViewInit {\n @Input() config: any;\n @Input() controlName: string;\n @Input() allowedGroupings = [Conjunction.AND, Conjunction.OR, Conjunction.NOT];\n @Input() editTypeFn: (field: BaseFieldDef) => string;\n @Input() addressConfig: AddressCriteriaConfig;\n @Input() canBeEmpty: boolean = false;\n\n @Input('hideFirstOperator')\n set HideFirstOperator(hide: boolean) {\n if (!Helpers.isEmpty(hide)) {\n this._hideFirstOperator = hide;\n }\n }\n get hideFirstOperator() {\n return this._hideFirstOperator;\n }\n private _hideFirstOperator: boolean = true;\n\n @ContentChildren(NovoConditionFieldDef, { descendants: true }) _contentFieldDefs: QueryList<NovoConditionFieldDef>;\n scopedFieldPicker = viewChild(NovoTabbedGroupPickerElement);\n conditionGroups = viewChildren(ConditionGroupComponent);\n\n public parentForm: UntypedFormGroup;\n public innerForm: UntypedFormGroup;\n public tabbedGroupPickerTabs = computed<TabbedGroupPickerTab[]>(() => {\n const tabs = [];\n this.qbs.scopes()?.forEach((scope) => {\n tabs.push({\n typeName: scope,\n typeLabel: scope,\n valueField: 'name',\n labelField: 'label',\n data: this.qbs.config.fields.find((field) => field.value === scope)?.options || [],\n });\n });\n return tabs;\n });\n public addButtonConfig: TabbedGroupPickerButtonConfig = {\n theme: 'dialogue',\n side: 'left',\n size: 'sm',\n icon: 'add-thin',\n label: this.labels.addCondition,\n };\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n constructor(\n private controlContainer: ControlContainer,\n private formBuilder: FormBuilder,\n private cdr: ChangeDetectorRef,\n public qbs: QueryBuilderService,\n public labels: NovoLabelService,\n ) {\n if (!qbs.componentHost) {\n qbs.componentHost = this;\n }\n }\n\n ngOnInit() {\n this.parentForm = this.controlContainer.control as UntypedFormGroup;\n this.innerForm = this.formBuilder.group({\n criteria: this.formBuilder.array([]),\n });\n\n this.parentForm.valueChanges.pipe(\n startWith(this.parentForm.value),\n filter(v => v?.criteria),\n takeUntil(this._onDestroy)\n ).subscribe((value) => {\n Promise.resolve().then(() => {\n this.setInitialValue(value[this.controlName]);\n this.cdr.markForCheck();\n });\n });\n this.innerForm.valueChanges\n .pipe(\n debounce(() => interval(10)),\n takeUntil(this._onDestroy),\n )\n .subscribe((value) => {\n const result = value.criteria.filter((it, i) => {\n const key = Object.keys(it)[0];\n if (it[key].length === 0) {\n this.removeConditionGroupAt(i);\n }\n return it[key].length > 0;\n });\n\n Promise.resolve().then(() => {\n this.parentForm.get(this.controlName).setValue(result, { emitEvent: false });\n this.cdr.markForCheck();\n });\n });\n }\n\n ngAfterContentChecked(): void {\n this._configureQueryBuilderService();\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this._registerFieldDefs();\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n private isConditionGroup(group: unknown): group is ConditionGroup {\n return Object.keys(group).every((key) => ['$and', '$or', '$not'].includes(key));\n }\n\n private setInitialValue(value: ConditionGroup[] | Condition[]) {\n if (value.length) {\n if (this.isConditionGroup(value[0])) {\n value.forEach((it) => this.addConditionGroup(it));\n } else {\n const conditions: Condition[] = [...value] as Condition[];\n if (this.qbs.hasMultipleScopes()) {\n // divide up by scope into separate groups\n const scopedConditions: { [key: string]: Condition[] } = {};\n conditions.forEach((condition) => {\n scopedConditions[condition.scope] = scopedConditions[condition.scope] || [];\n scopedConditions[condition.scope].push(condition);\n })\n for (const scope in scopedConditions) {\n this.addConditionGroup({ $and: scopedConditions[scope] });\n }\n } else {\n this.addConditionGroup({ $and: conditions });\n }\n }\n } else {\n this.addConditionGroup({ $and: value });\n }\n }\n\n get root(): FormArray {\n return this.innerForm.get('criteria') as FormArray;\n }\n\n addConditionGroup(data: any = { $and: [EMPTY_CONDITION] }) {\n this.root.push(this.newConditionGroup(data));\n this.cdr.markForCheck();\n }\n\n newConditionGroup(data: ConditionGroup): UntypedFormGroup {\n const controls = Object.entries(data).reduce((obj, [key, val]) => {\n return {\n ...obj,\n [key]: this.formBuilder.array(val.map((it) => this.newCondition(it))),\n };\n }, {});\n return this.formBuilder.group(controls);\n }\n\n newCondition({ field, operator, scope, value }: Condition = EMPTY_CONDITION): UntypedFormGroup {\n return this.formBuilder.group({\n conditionType: '$and',\n field: [field, Validators.required],\n operator: [operator, Validators.required],\n scope: [scope],\n value: [value],\n });\n }\n\n removeConditionGroupAt(index: number) {\n this.root.removeAt(index, { emitEvent: false });\n }\n\n clearAllConditions() {\n while (this.root.length) {\n this.root.removeAt(0);\n }\n }\n\n onFieldSelect(field) {\n this.scopedFieldPicker().dropdown.closePanel();\n const condition = { field: field.name, operator: null, scope: field.scope, value: null };\n const group = this.conditionGroups().find((group) => group.scope === field.scope);\n if (group) {\n group.addCondition(condition);\n } else {\n this.addConditionGroup({ $and: [condition] })\n }\n }\n\n private _configureQueryBuilderService() {\n this.qbs.scopes.set(this.config?.fields.map((f) => f.value));\n this.qbs.config = this.config;\n this.qbs.editTypeFn = this.editTypeFn;\n this.qbs.allowedGroupings = this.allowedGroupings as Conjunction[];\n }\n\n private _registerFieldDefs() {\n const defs = [...Array.from(this._contentFieldDefs)];\n defs.forEach((fieldDef) => {\n this.qbs.registerFieldDef(fieldDef);\n });\n }\n}\n","<form [formGroup]=\"innerForm\">\n <novo-stack [formArrayName]=\"controlName\" class=\"criteria-builder-inner\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLastAnd = last;\">\n <novo-label *ngIf=\"!isFirst\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">{{ qbs.hasMultipleScopes() ? conditionGroup.scope + ' ' + labels.filterss : qbs.getConjunctionLabel('and') }}</novo-label>\n <novo-condition-group [hideFirstOperator]=\"hideFirstOperator\" [canBeEmpty]=\"canBeEmpty\" [groupIndex]=\"andIndex\" [formGroupName]=\"andIndex\" #conditionGroup></novo-condition-group>\n </ng-container>\n </novo-stack>\n <novo-tabbed-group-picker\n *ngIf=\"qbs.hasMultipleScopes()\"\n [tabs]=\"tabbedGroupPickerTabs()\"\n [selectionEnabled]=\"false\"\n [buttonConfig]=\"addButtonConfig\"\n (activation)=\"onFieldSelect($event)\">\n </novo-tabbed-group-picker>\n</form>\n<novo-condition-templates [addressConfig]=\"addressConfig\"/>\n\n<!--\n {\n $and: [{\n $or: [{\n entity: 'JobOrder'\n field: 'categories',\n operator: 'doesNotContain',\n value: 'Healthcare'\n }]\n }]\n }\n -->\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NovoAutoCompleteModule } from 'novo-elements/elements/autocomplete';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCardModule } from 'novo-elements/elements/card';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoCommonModule, NovoOptionModule, NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoDatePickerModule } from 'novo-elements/elements/date-picker';\nimport { NovoDateTimePickerModule } from 'novo-elements/elements/date-time-picker';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoFieldModule } from 'novo-elements/elements/field';\nimport { NovoFlexModule } from 'novo-elements/elements/flex';\nimport { NovoFormModule } from 'novo-elements/elements/form';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoNonIdealStateModule } from 'novo-elements/elements/non-ideal-state';\nimport { GooglePlacesModule } from 'novo-elements/elements/places';\nimport { NovoRadioModule } from 'novo-elements/elements/radio'\nimport { NovoSearchBoxModule } from 'novo-elements/elements/search';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { NovoSelectSearchModule } from 'novo-elements/elements/select-search';\nimport { NovoSwitchModule } from 'novo-elements/elements/switch';\nimport { NovoTabbedGroupPickerModule } from 'novo-elements/elements/tabbed-group-picker';\nimport { NovoTabModule } from 'novo-elements/elements/tabs';\nimport { ConditionBuilderComponent, ConditionInputOutlet, ConditionOperatorOutlet } from './condition-builder/condition-builder.component';\nimport { NovoDefaultAddressConditionDef } from './condition-definitions/address-condition.definition';\nimport { NovoDefaultBooleanConditionDef } from './condition-definitions/boolean-condition.definition';\nimport { NovoDefaultDateConditionDef } from './condition-definitions/date-condition.definition';\nimport { NovoDefaultDateTimeConditionDef } from './condition-definitions/date-time-condition.definition';\nimport { NovoDefaultIdConditionDef } from './condition-definitions/id-condition.definition';\nimport { NovoDefaultNumberConditionDef } from './condition-definitions/number-condition.definition';\nimport { NovoDefaultPickerConditionDef } from './condition-definitions/picker-condition.definition';\nimport { NovoDefaultStringConditionDef } from './condition-definitions/string-condition.definition';\nimport { ConditionGroupComponent } from './condition-group/condition-group.component';\nimport { CriteriaBuilderComponent } from './criteria-builder/criteria-builder.component';\nimport { NovoConditionFieldDef, NovoConditionInputDef, NovoConditionOperatorsDef } from './query-builder.directives';\nimport { NovoConditionTemplatesComponent } from './condition-templates/condition-templates.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n DragDropModule,\n CdkTableModule,\n GooglePlacesModule,\n NovoAutoCompleteModule,\n NovoButtonModule,\n NovoCommonModule,\n NovoFormModule,\n NovoSelectModule,\n NovoNonIdealStateModule,\n NovoFieldModule,\n NovoOptionModule,\n NovoFlexModule,\n NovoTabModule,\n NovoTabbedGroupPickerModule,\n NovoLoadingModule,\n NovoCardModule,\n NovoDatePickerModule,\n NovoDateTimePickerModule,\n NovoIconModule,\n NovoOverlayModule,\n NovoRadioModule,\n NovoSearchBoxModule,\n NovoSwitchModule,\n NovoChipsModule,\n NovoSelectSearchModule,\n NovoDropdownModule,\n ],\n declarations: [\n CriteriaBuilderComponent,\n ConditionBuilderComponent,\n ConditionInputOutlet,\n ConditionOperatorOutlet,\n ConditionGroupComponent,\n NovoDefaultAddressConditionDef,\n NovoDefaultBooleanConditionDef,\n NovoDefaultDateConditionDef,\n NovoDefaultDateTimeConditionDef,\n NovoConditionOperatorsDef,\n NovoConditionInputDef,\n NovoConditionFieldDef,\n NovoDefaultStringConditionDef,\n NovoDefaultNumberConditionDef,\n NovoDefaultIdConditionDef,\n NovoDefaultPickerConditionDef,\n NovoConditionTemplatesComponent,\n ],\n exports: [\n CriteriaBuilderComponent,\n ConditionBuilderComponent,\n NovoDefaultAddressConditionDef,\n NovoDefaultBooleanConditionDef,\n NovoDefaultDateConditionDef,\n NovoDefaultDateTimeConditionDef,\n NovoConditionOperatorsDef,\n NovoConditionInputDef,\n NovoConditionFieldDef,\n NovoDefaultStringConditionDef,\n NovoDefaultNumberConditionDef,\n NovoDefaultIdConditionDef,\n NovoDefaultPickerConditionDef,\n NovoConditionTemplatesComponent,\n ],\n})\nexport class NovoQueryBuilderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.QueryBuilderService","i6","i7","i11.NovoConditionOperatorsDef","i11.NovoConditionInputDef","i11.NovoConditionFieldDef","i2","i3","i4","i7.NovoConditionOperatorsDef","i7.NovoConditionInputDef","i7.NovoConditionFieldDef","i5","i8","i9.NovoConditionOperatorsDef","i9.NovoConditionInputDef","i9.NovoConditionFieldDef","i9","i8.NovoConditionOperatorsDef","i8.NovoConditionInputDef","i8.NovoConditionFieldDef","i1","i5.NovoConditionOperatorsDef","i5.NovoConditionInputDef","i5.NovoConditionFieldDef","i1.NovoDefaultAddressConditionDef","i2.NovoDefaultBooleanConditionDef","i3.NovoDefaultDateConditionDef","i4.NovoDefaultDateTimeConditionDef","i5.NovoDefaultStringConditionDef","i6.NovoDefaultNumberConditionDef","i7.NovoDefaultIdConditionDef","i8.NovoDefaultPickerConditionDef","i2.QueryBuilderService","i10","i11.NovoConditionTemplatesComponent","EMPTY_CONDITION","i9.ConditionBuilderComponent","i8.ConditionGroupComponent","i9.NovoConditionTemplatesComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"novo-elements-elements-query-builder.mjs","sources":["../../../projects/novo-elements/src/elements/query-builder/query-builder.types.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.service.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.tokens.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.directives.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/abstract-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/address-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/boolean-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/date-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/date-time-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/string-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/number-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/id-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/picker-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-templates/condition-templates.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-templates/condition-templates.component.html","../../../projects/novo-elements/src/elements/query-builder/condition-builder/condition-builder.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-builder/condition-builder.component.html","../../../projects/novo-elements/src/elements/query-builder/condition-group/condition-group.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-group/condition-group.component.html","../../../projects/novo-elements/src/elements/query-builder/criteria-builder/criteria-builder.component.ts","../../../projects/novo-elements/src/elements/query-builder/criteria-builder/criteria-builder.component.html","../../../projects/novo-elements/src/elements/query-builder/query-builder.module.ts","../../../projects/novo-elements/src/elements/query-builder/novo-elements-elements-query-builder.ts"],"sourcesContent":["import { ViewContainerRef } from '@angular/core';\n\nexport enum Conjunction {\n AND = 'and',\n OR = 'or',\n NOT = 'not',\n}\n\nexport type ConditionType = '$and' | '$or' | '$not';\n\nexport type ConditionGroup = {\n [K in Conjunction as `$${K}`]?: Condition[];\n};\n\nexport type NestedConditionGroup = {\n [K in Conjunction as `$${K}`]?: ConditionOrConditionGroup[];\n};\n\nexport type ConditionOrConditionGroup = Condition | NestedConditionGroup;\n\nexport enum Operator {\n after = 'after',\n before = 'before',\n between = 'between',\n equalTo = 'equalTo',\n exclude = 'exclude',\n excludeAny = 'excludeAny',\n greaterThan = 'greaterThan',\n include = 'include',\n includeAll = 'includeAll',\n includeAny = 'includeAny',\n isEmpty = 'isEmpty',\n isNull = 'isNull',\n lessThan = 'lessThan',\n radius = 'radius',\n within = 'within',\n}\n\nexport type OperatorName = keyof typeof Operator;\n\nexport interface Condition {\n conditionType?: ConditionType;\n field: string;\n operator: OperatorName | string;\n scope?: string;\n value: any;\n}\n\nexport interface Criteria {\n criteria: ConditionGroup[];\n}\n\nexport interface NestedCriteria {\n criteria: NestedConditionGroup[];\n}\n\nexport interface BaseFieldDef {\n name: string;\n label?: string;\n type: string;\n dataSpecialization?: string;\n optional?: boolean;\n multiValue?: boolean;\n inputType?: string;\n options?: { value: string | number; label: string; readOnly?: boolean }[];\n optionsUrl?: string;\n optionsType?: string;\n dataType?: string;\n icon?: string;\n}\n\nexport interface FieldConfig<T extends BaseFieldDef> {\n value: string;\n label: string;\n options: T[];\n search: (term: string) => T[];\n find: (name: string) => T;\n}\n\nexport interface AddressData {\n address_components: AddressComponent[];\n formatted_address: string;\n geometry: AddressGeometry;\n name?: string;\n place_id: string;\n radius?: AddressRadius;\n types?: string[];\n}\n\nexport interface AddressRadius {\n value: number;\n units: AddressRadiusUnitsName;\n}\n\nexport interface AddressComponent {\n long_name: string;\n short_name: string;\n types: string[];\n}\n\nexport interface AddressGeometry {\n location: AddressGeometryLocation;\n viewport: AddressGeometryViewport;\n}\n\nexport interface AddressGeometryLocation {\n lat: number;\n lng: number;\n}\n\nexport interface AddressGeometryViewport {\n north: number;\n south: number;\n east: number;\n west: number;\n}\n\nexport enum RadiusUnits {\n miles = 'miles',\n km = 'km',\n}\n\nexport type AddressRadiusUnitsName = keyof typeof RadiusUnits;\n\n/** All options that can be used to override the defaults for the address criteria */\nexport type AddressCriteriaConfig = {\n radiusEnabled?: boolean;\n radiusUnits?: AddressRadiusUnitsName;\n}\n\n/** Interface used to provide an outlet for rows to be inserted into. */\nexport interface QueryFilterOutlet {\n viewContainer: ViewContainerRef;\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BaseConditionFieldDef } from './query-builder.directives';\nimport { BaseFieldDef, Conjunction, FieldConfig } from './query-builder.types';\n\nexport const defaultEditTypeFn = (field: BaseFieldDef) => {\n return field.inputType || field.dataType || field.type;\n};\n\nexport interface QueryBuilderConfig {\n fields: FieldConfig<BaseFieldDef>[];\n staticFieldSelection?: string;\n}\n\n@Injectable()\nexport class QueryBuilderService {\n private _customFieldDefs = new Set<BaseConditionFieldDef>();\n private _fieldDefsByName = new Map<string, BaseConditionFieldDef>();\n public scopes = signal([]);\n public hasMultipleScopes = computed(() => this.scopes()?.length > 1);\n /**\n * Will dispatch when properties changes, subscribe to this if component should\n * re-render when props are updated\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Function to determine operator and input templates for a field. Value passed\n * through the criteria builder Input.\n */\n public get editTypeFn(): (field: BaseFieldDef) => string {\n return this._editTypeFn;\n }\n public set editTypeFn(value: (field: BaseFieldDef) => string) {\n this._editTypeFn = value ?? defaultEditTypeFn;\n this.stateChanges.next();\n }\n private _editTypeFn: (field: BaseFieldDef) => string = defaultEditTypeFn;\n\n /**\n * The field configuration to control which types of fields are available to select\n * within the Condition Builder.\n */\n public get config(): QueryBuilderConfig {\n return this._config;\n }\n public set config(value: QueryBuilderConfig) {\n this._config = value;\n this.stateChanges.next();\n }\n private _config: QueryBuilderConfig = {\n fields: [],\n staticFieldSelection: null\n };\n\n /**\n * The configuration to control which types of conjuntions can be used in the query builder.\n * Value passed through the criteria builder Input\n * eg. and, or, not\n */\n public get allowedGroupings(): Conjunction[] {\n return this._allowedGroupings;\n }\n public set allowedGroupings(value: Conjunction[]) {\n this._allowedGroupings = value;\n this.stateChanges.next();\n }\n private _allowedGroupings: Conjunction[];\n\n public componentHost: any;\n\n constructor(private labels: NovoLabelService) {}\n\n /** Adds a field definition that was not included as part of the content children. */\n registerFieldDef(fieldDef: BaseConditionFieldDef) {\n this._customFieldDefs.add(fieldDef);\n this._fieldDefsByName.set(fieldDef.name, fieldDef);\n }\n\n /** Removes a field definition that was not included as part of the content children. */\n unregisterFieldDef(fieldDef: BaseConditionFieldDef) {\n this._customFieldDefs.delete(fieldDef);\n this._fieldDefsByName.delete(fieldDef.name);\n }\n\n getFieldDefsByName() {\n return this._fieldDefsByName;\n }\n\n getConjunctionLabel(conjunction: string) {\n switch (conjunction.replace('$', '').toLowerCase()) {\n case Conjunction.OR:\n return this.labels.or;\n case Conjunction.NOT:\n return this.labels.not;\n case Conjunction.AND:\n default:\n return this.labels.and;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const NOVO_QUERY_BUILDER = new InjectionToken<any>('NOVO_QUERY_BUILDER');\nexport const NOVO_CRITERIA_BUILDER = new InjectionToken<any>('NOVO_CRITERIA_BUILDER');\nexport const NOVO_CONDITION_BUILDER = new InjectionToken<any>('NOVO_CONDITION_BUILDER');\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\nimport { QueryBuilderService } from './query-builder.service';\n\n/** Base interface for a condidation template directives. */\nexport interface ConditionDef {\n template: TemplateRef<any>;\n}\n\n/**\n * Contained within a novoConditionField definition describing what input should be\n * used to capture the compare value of the Condtion\n */\n@Directive({ selector: '[novoConditionInputDef]' })\nexport class NovoConditionInputDef implements ConditionDef {\n constructor(/** @docs-private */ public template: TemplateRef<any>) {}\n}\n\n/**\n * Contained within a novoConditionField definition describing what operators should be available.\n */\n@Directive({ selector: '[novoConditionOperatorsDef]' })\nexport class NovoConditionOperatorsDef implements ConditionDef {\n constructor(/** @docs-private */ public template: TemplateRef<any>) {}\n}\n\n/**\n * Field Field definition for the QueryBuilder.\n * Defines the inputType and operators to use for the query builder.\n */\n@Directive()\nexport class BaseConditionFieldDef {\n /** Unique name for this field. */\n @Input('novoFilterFieldDef')\n get name(): string {\n return this._name;\n }\n set name(name: string) {\n this._setNameInput(name);\n }\n protected _name: string;\n\n @ContentChild(NovoConditionInputDef) fieldInput: NovoConditionInputDef;\n @ContentChild(NovoConditionOperatorsDef) fieldOperators: NovoConditionOperatorsDef;\n\n /**\n * Transformed version of the column name that can be used as part of a CSS classname. Excludes\n * all non-alphanumeric characters and the special characters '-' and '_'. Any characters that\n * do not match are replaced by the '-' character.\n */\n cssClassFriendlyName: string;\n _fieldCssClassName: string[];\n\n defaultOperator: string;\n\n constructor() {}\n\n /**\n * Overridable method that sets the css classes that will be added to every cell in this\n * column.\n * In the future, columnCssClassName will change from type string[] to string and this\n * will set a single string value.\n * @docs-private\n */\n protected _updateFieldCssClassName() {\n this._fieldCssClassName = [`novo-filter-field-${this.cssClassFriendlyName}`];\n }\n\n protected _setNameInput(value: string) {\n // If the directive is set without a name (updated programmatically), then this setter will\n // trigger with an empty string and should not overwrite the programmatically set value.\n if (value) {\n this._name = value;\n this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');\n this._updateFieldCssClassName();\n }\n }\n}\n\n@Directive({\n selector: '[novoConditionFieldDef]',\n})\nexport class NovoConditionFieldDef extends BaseConditionFieldDef {\n constructor(private qbs: QueryBuilderService) {\n super();\n }\n register() {\n this.qbs.registerFieldDef(this);\n }\n unregister() {\n this.qbs.unregisterFieldDef(this);\n }\n}\n","import { AfterViewInit, Directive, Input, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { FormControlDirective, FormControlName, UntypedFormGroup } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { NovoConditionFieldDef, NovoConditionOperatorsDef } from '../query-builder.directives';\nimport { Operator } from '../query-builder.types';\n\n@Directive()\nexport abstract class AbstractConditionFieldDef implements OnDestroy, OnInit, AfterViewInit {\n /** Column name that should be used to reference this column. */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(name: string) {\n this._name = name;\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncFieldDefName();\n }\n _name: string;\n\n defaultOperator: Operator | string;\n protected _previousOperatorValue: Operator;\n\n protected operatorEditGroups: Set<Operator>[] = [];\n\n @ViewChild(NovoConditionFieldDef, { static: true }) fieldDef: NovoConditionFieldDef;\n @ViewChildren(FormControlName) formControlsByName: QueryList<FormControlName>;\n\n constructor(public labels: NovoLabelService) {}\n\n ngOnInit() {\n this._syncFieldDefName();\n this._syncFieldDefOperatorValue();\n this._previousOperatorValue = this.defaultOperator as Operator;\n // Need to add self to FilterBuilder because \"ContentChildren won't find it\"\n this.fieldDef?.register();\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.frameAfterViewInit();\n });\n }\n\n frameAfterViewInit() {\n const operatorField = this.formControlsByName.find(formControlDirective => formControlDirective.name === 'operator')?.control;\n if (operatorField) {\n this._previousOperatorValue = operatorField.value;\n }\n }\n\n ngOnDestroy() {\n this.fieldDef?.unregister();\n }\n\n /**\n * Define an edit group of operators. Once defined, if the user switches from one of these operators to another,\n * then the condition value will not be cleared. This makes sense if both operators use the same UI controls for editing.\n * @param operators The set of Operator values intended to share UI controls.\n */\n protected defineOperatorEditGroup(...operators: Operator[]): void {\n this.operatorEditGroups.push(new Set(operators));\n }\n\n onOperatorSelect(formGroup: UntypedFormGroup): void {\n let clearVal = true;\n if (this._previousOperatorValue && this.operatorEditGroups?.length) {\n const previousOperatorGroupIndex = this.operatorEditGroups.findIndex(grp => grp.has(this._previousOperatorValue));\n const newOperatorValue = formGroup.get('operator').getRawValue();\n const newOperatorGroupIndex = this.operatorEditGroups.findIndex(grp => grp.has(newOperatorValue));\n if (previousOperatorGroupIndex !== -1 && newOperatorGroupIndex !== -1 && previousOperatorGroupIndex === newOperatorGroupIndex) {\n clearVal = false;\n }\n }\n this._previousOperatorValue = formGroup.get('operator').value;\n if (clearVal) {\n formGroup.get('value').setValue(null);\n }\n }\n\n /** Synchronizes the column definition name with the text column name. */\n private _syncFieldDefName() {\n if (this.fieldDef) {\n this.fieldDef.name = this.name;\n }\n }\n\n private _syncFieldDefOperatorValue() {\n if (this.fieldDef) {\n this.fieldDef.defaultOperator = this.defaultOperator;\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n InputSignal,\n OnDestroy,\n QueryList,\n Signal,\n signal,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n WritableSignal\n} from '@angular/core';\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { PlacesListComponent } from 'novo-elements/elements/places';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\nimport { Subscription } from 'rxjs';\nimport { AddressCriteriaConfig, AddressData, AddressRadius, AddressRadiusUnitsName, Operator, RadiusUnits } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { NovoSelectElement } from 'novo-elements/elements/select';\n\n/**\n * Handle selection of field values when a list of options is provided.\n */\n@Component({\n selector: 'novo-address-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n <novo-option value=\"radius\" *ngIf=\"radiusEnabled()\">{{ labels.radius }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-flex justify=\"space-between\" align=\"end\">\n <novo-field #novoRadiusField *ngIf=\"formGroup.value.operator === 'radius'\" class=\"address-radius\">\n <novo-select\n #radiusSelect [placeholder]=\"labels.radius\"\n (onSelect)=\"onRadiusSelect(formGroup, $event.selected)\"\n [value]=\"radius()\"\n [options]=\"radiusOptions()\">\n </novo-select>\n </novo-field>\n <novo-field #novoField class=\"address-location\">\n <novo-chip-list [(ngModel)]=\"chipListModel\" [ngModelOptions]=\"{ standalone: true }\" (click)=\"openPlacesList(viewIndex)\">\n <novo-chip *ngFor=\"let item of formGroup.get('value').value\" (removed)=\"remove(item, formGroup, viewIndex)\">\n <novo-text ellipsis>{{ item.formatted_address }}</novo-text>\n <novo-icon novoChipRemove>close</novo-icon>\n </novo-chip>\n <input\n novoChipInput\n [id]=\"viewIndex\"\n [placeholder]=\"labels.location\"\n (keyup)=\"onKeyup($event, viewIndex)\"\n (keydown)=\"onKeydown($event, viewIndex)\"\n [picker]=\"placesPicker\"\n #addressInput/>\n </novo-chip-list>\n <novo-picker-toggle [overlayId]=\"viewIndex\" icon=\"location\" novoSuffix>\n <google-places-list\n [term]=\"term\"\n (select)=\"selectPlace($event, formGroup, viewIndex)\"\n formControlName=\"value\"\n #placesPicker/>\n </novo-picker-toggle>\n </novo-field>\n </novo-flex>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultAddressConditionDef extends AbstractConditionFieldDef implements OnDestroy {\n @ViewChildren(NovoPickerToggleElement) overlayChildren: QueryList<NovoPickerToggleElement>;\n @ViewChildren('addressInput') inputChildren: QueryList<ElementRef>;\n @ViewChild('placesPicker') placesPicker: PlacesListComponent;\n @ViewChildren(NovoSelectElement) addressSideTest: any;\n\n // Static defaults\n radiusValues: number[] = [5, 10, 20, 30, 40, 50, 100];\n defaultRadius: number = 30;\n\n // Overridable defaults\n defaults: AddressCriteriaConfig = {\n radiusEnabled: false,\n radiusUnits: 'miles',\n };\n config: InputSignal<AddressCriteriaConfig> = input();\n radiusUnits: Signal<AddressRadiusUnitsName> = computed(() =>\n this.config()?.radiusUnits || this.defaults.radiusUnits\n );\n radiusEnabled: Signal<boolean> = computed(() =>\n this.config()?.radiusEnabled || this.defaults.radiusEnabled\n );\n\n radius: WritableSignal<number> = signal(this.defaultRadius);\n radiusOptions: Signal<{ label: string; value: number; }[]> = computed(() => {\n const unitsLabel = this.radiusUnits() === RadiusUnits.miles ? this.labels.miles : this.labels.km;\n return this.radiusValues.map(value => ({\n label: `${value.toString()} ${unitsLabel}`,\n value,\n }));\n });\n\n defaultOperator = Operator.includeAny;\n chipListModel: any = '';\n term: string = '';\n\n private _addressChangesSubscription: Subscription = Subscription.EMPTY;\n\n public element = inject(ElementRef);\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.includeAny, Operator.excludeAny, Operator.radius);\n }\n\n frameAfterViewInit(): void {\n super.frameAfterViewInit();\n // Initialize the radius value from existing data\n this.assignRadiusFromValue();\n\n // Update the radius on address value changes\n this._addressChangesSubscription = this.inputChildren.changes.subscribe(() => {\n this.assignRadiusFromValue();\n });\n }\n\n ngOnDestroy() {\n this._addressChangesSubscription.unsubscribe();\n }\n\n onKeyup(event, viewIndex) {\n if (![Key.Escape, Key.Enter].includes(event.key)) {\n this.openPlacesList(viewIndex);\n }\n this.term = event.target.value;\n }\n\n onKeydown(event, viewIndex) {\n if (!this.placesPicker.dropdownOpen) {\n this.openPlacesList(viewIndex);\n this.placesPicker.dropdownOpen = true;\n }\n if ([Key.Escape, Key.Tab].includes(event.key)) {\n this.closePlacesList(viewIndex);\n } else {\n this.placesPicker.onKeyDown(event);\n }\n }\n\n getValue(formGroup: AbstractControl): AddressData[] {\n return formGroup.value.value || [];\n }\n\n getCurrentOverlay(viewIndex: string): NovoPickerToggleElement {\n return this.overlayChildren?.find(item => item.overlayId === viewIndex);\n }\n\n getCurrentInput(viewIndex: string): ElementRef {\n return this.inputChildren?.find(item => (item as any).nativeElement.id === viewIndex);\n }\n\n openPlacesList(viewIndex) {\n this.getCurrentOverlay(viewIndex)?.openPanel();\n }\n\n closePlacesList(viewIndex) {\n this.getCurrentOverlay(viewIndex)?.closePanel();\n }\n\n selectPlace(event: any, formGroup: AbstractControl, viewIndex: string): void {\n const valueToAdd: AddressData = {\n address_components: event.address_components,\n formatted_address: event.formatted_address,\n geometry: event.geometry,\n name: event.name,\n place_id: event.place_id,\n types: event.types,\n };\n const current: AddressData | AddressData[] = this.getValue(formGroup);\n const updated: AddressData[] = Array.isArray(current) ? [...current, valueToAdd] : [valueToAdd];\n formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, updated));\n\n this.inputChildren.forEach(input => {\n input.nativeElement.value = '';\n })\n this.getCurrentInput(viewIndex)?.nativeElement.focus();\n this.closePlacesList(viewIndex);\n }\n\n remove(valueToRemove: AddressData, formGroup: AbstractControl, viewIndex: string): void {\n const current = this.getValue(formGroup);\n const index = current.indexOf(valueToRemove);\n if (index >= 0) {\n const oldValue = [...current]\n oldValue.splice(index, 1);\n formGroup.get('value').setValue(oldValue);\n }\n this.closePlacesList(viewIndex);\n }\n\n // Override abstract behavior - allow moving location from includeAny to radius, but when moving the opposite direction,\n // trim out radius information from the value\n onOperatorSelect(formGroup: UntypedFormGroup): void {\n const previousOperator = this._previousOperatorValue;\n super.onOperatorSelect(formGroup);\n if ([previousOperator, formGroup.get('operator').getRawValue()].indexOf(Operator.radius) !== -1 &&\n formGroup.get('value').getRawValue() != null) {\n formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, this.getValue(formGroup)));\n }\n }\n\n onRadiusSelect(formGroup: AbstractControl, radius: number): void {\n this.radius.set(radius);\n // We must dirty the form explicitly to show up as a user modification when it was done programmatically\n formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, this.getValue(formGroup)));\n formGroup.markAsDirty();\n }\n\n private assignRadiusFromValue() {\n if (this.placesPicker?.model?.length) {\n const addressData: AddressData = this.placesPicker.model[0];\n const initialRadius = addressData.radius?.value;\n if (initialRadius && Helpers.isNumber(initialRadius)) {\n this.radius.set(initialRadius);\n }\n }\n }\n\n private updateRadiusInValues(formGroup: AbstractControl, values: AddressData[]): AddressData[] {\n return values.map(val => ({\n ...val,\n radius: this.isRadiusOperatorSelected(formGroup) ? this.getRadiusData(formGroup) : undefined,\n }));\n }\n\n private getRadiusData(formGroup: AbstractControl): AddressRadius {\n return {\n value: this.getRadius(formGroup),\n units: this.radiusUnits(),\n };\n }\n\n private getRadius(formGroup: AbstractControl): number | undefined {\n return this.isRadiusOperatorSelected(formGroup) ? this.radius() : undefined;\n }\n\n private isRadiusOperatorSelected(formGroup: AbstractControl): boolean {\n return formGroup.get('operator').value === 'radius';\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * When constructing a query using a field that is a boolean with only true/false as possible values.\n */\n@Component({\n selector: 'novo-boolean-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"include\">{{ labels.equals }}</novo-option>\n <novo-option value=\"exclude\">{{ labels.doesNotEqual }}</novo-option>\n <novo-option value=\"isNull\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoConditionInputDef=\"let formGroup\" [style.width.px]=\"125\" [formGroup]=\"formGroup\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ formGroup.value.operator === 'isNull' ? labels.yes : labels.true }}</novo-radio>\n <novo-radio [value]=\"false\">{{ formGroup.value.operator === 'isNull' ? labels.no : labels.false }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultBooleanConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.include;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.include, Operator.exclude, Operator.isNull);\n }\n}\n","import { ChangeDetectionStrategy, Component, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * Most complicated of the default conditions defs, a date needs to provide a different\n * input type depending on the operator selected.\n */\n@Component({\n selector: 'novo-date-condition-def',\n template: `\n <ng-container novoConditionFieldDef=\"DATE\">\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"before\">{{ labels.before }}</novo-option>\n <novo-option value=\"after\">{{ labels.after }}</novo-option>\n <novo-option value=\"between\">{{ labels.between }}</novo-option>\n <novo-option value=\"within\">{{ labels.within }}</novo-option>\n <novo-option value=\"isNull\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['before', 'after']\">\n <input novoInput dateFormat=\"iso8601\" [picker]=\"datepicker\" formControlName=\"value\" />\n <novo-picker-toggle triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-picker (onSelect)=\"closePanel($event, viewIndex)\" #datepicker></novo-date-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['between']\">\n <input novoInput dateRangeFormat=\"date\" [picker]=\"daterangepicker\" formControlName=\"value\" />\n <novo-picker-toggle [for]=\"daterangepicker\" triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-picker #daterangepicker (onSelect)=\"closePanel($event, viewIndex)\" mode=\"range\" numberOfMonths=\"2\"></novo-date-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['within']\">\n <novo-select [placeholder]=\"labels.selectDateRange\" formControlName=\"value\">\n <novo-option value=\"7\">{{ labels.next7Days }}</novo-option>\n <novo-option value=\"-7\">{{ labels.past7Days }}</novo-option>\n <novo-option value=\"-30\">{{ labels.past30Days }}</novo-option>\n <novo-option value=\"-90\">{{ labels.past90Days }}</novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultDateConditionDef extends AbstractConditionFieldDef {\n @ViewChildren(NovoPickerToggleElement)\n overlayChildren: QueryList<NovoPickerToggleElement>;\n\n defaultOperator = Operator.within;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.before, Operator.after);\n }\n\n closePanel(event, viewIndex): void {\n const overlay = this.overlayChildren.find(item => item.overlayId === viewIndex);\n overlay.closePanel(event);\n }\n}\n","import { ChangeDetectionStrategy, Component, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * Most complicated of the default conditions defs, a date needs to provide a different\n * input type depending on the operator selected.\n */\n@Component({\n selector: 'novo-date-time-condition-def',\n template: `\n <ng-container novoConditionFieldDef=\"DATE\">\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"before\">{{ labels.before }}</novo-option>\n <novo-option value=\"after\">{{ labels.after }}</novo-option>\n <novo-option value=\"within\">{{ labels.within }}</novo-option>\n <novo-option value=\"isNull\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['after']\">\n <input novoInput dateTimeFormat=\"iso8601\" [picker]=\"datetimepicker\" formControlName=\"value\" />\n <novo-picker-toggle triggerOnFocus [width]=\"-1\" [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-time-picker defaultTime=\"end\" (onSelect)=\"closePanel($event, viewIndex)\" #datetimepicker></novo-date-time-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['before']\">\n <input novoInput dateTimeFormat=\"iso8601\" [picker]=\"datetimepickerbefore\" formControlName=\"value\" />\n <novo-picker-toggle triggerOnFocus [width]=\"-1\" [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-time-picker defaultTime=\"start\" (onSelect)=\"closePanel($event, viewIndex)\" #datetimepickerbefore></novo-date-time-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['within']\">\n <novo-select [placeholder]=\"labels.selectDateRange\" formControlName=\"value\">\n <novo-option value=\"7\">{{ labels.next7Days }}</novo-option>\n <novo-option value=\"-7\">{{ labels.past7Days }}</novo-option>\n <novo-option value=\"-30\">{{ labels.past30Days }}</novo-option>\n <novo-option value=\"-90\">{{ labels.past90Days }}</novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultDateTimeConditionDef extends AbstractConditionFieldDef {\n @ViewChildren(NovoPickerToggleElement)\n overlayChildren: QueryList<NovoPickerToggleElement>;\n\n defaultOperator = Operator.within;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.before, Operator.after);\n }\n\n closePanel(event, viewIndex): void {\n const overlay = this.overlayChildren.find(item => item.overlayId === viewIndex);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\n\n/**\n * Constructing filters against String fields can be complex. Each \"chip\" added to the\n * condition can be independently used to query a database. Not all systems support\n * querying within a text column, ie sql unless LIKE is enabled. This could result in a\n * performance penalty.\n */\n@Component({\n selector: 'novo-string-condition-def',\n template: `\n <!-- fieldTypes should be UPPERCASE -->\n <ng-container novoConditionFieldDef=\"STRING\">\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n <novo-option value=\"includeAll\">{{ labels.includeAll }}</novo-option>\n <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n <novo-option value=\"isEmpty\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['includeAny', 'includeAll', 'excludeAny']\">\n <novo-chip-list #chipList aria-label=\"filter value\" formControlName=\"value\">\n <novo-chip *ngFor=\"let chip of formGroup.value?.value || []\" [value]=\"chip\" (removed)=\"remove(chip, formGroup)\">\n <novo-text ellipsis>{{ chip }}</novo-text>\n <novo-icon novoChipRemove>close</novo-icon>\n </novo-chip>\n <input\n novoChipInput\n [placeholder]=\"labels.typeToAddChips\"\n autocomplete=\"off\"\n (novoChipInputTokenEnd)=\"add($event, formGroup)\"\n />\n </novo-chip-list>\n <novo-autocomplete></novo-autocomplete>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isEmpty']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // means the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultStringConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.includeAny;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.includeAny, Operator.includeAll, Operator.excludeAny);\n }\n\n getValue(formGroup: AbstractControl): any[] {\n return formGroup.value?.value || [];\n }\n\n add(event: any, formGroup: AbstractControl): void {\n const input = event.input;\n input.value = '';\n const valueToAdd = event.value;\n if (valueToAdd !== '') {\n const current: any[] = this.getValue(formGroup);\n const newValue: any[] = Array.isArray(current) ? [...current, valueToAdd] : [valueToAdd];\n this.setFormValue(formGroup, newValue);\n }\n }\n\n remove(valueToRemove: string, formGroup: AbstractControl): void {\n const current = this.getValue(formGroup);\n const index = current.indexOf(valueToRemove);\n if (index >= 0) {\n const value = [...current]\n value.splice(index, 1);\n this.setFormValue(formGroup, value);\n }\n }\n\n private setFormValue(formGroup: AbstractControl, newValue: any[]) {\n formGroup.get('value').setValue(newValue);\n formGroup.markAsDirty();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * When constructing a query using a field that is an Int, Double, Number ...etc.\n * TODO: Do we implment currency formation here potentially>.?\n */\n@Component({\n selector: 'novo-number-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"greaterThan\">{{ labels.greaterThan }}</novo-option>\n <novo-option value=\"lessThan\">{{ labels.lessThan }}</novo-option>\n <novo-option value=\"equalTo\">{{ labels.equalTo }}</novo-option>\n <novo-option value=\"isNull\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['greaterThan', 'lessThan', 'equalTo']\">\n <input novoInput type=\"number\" formControlName=\"value\" />\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultNumberConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.equalTo;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.greaterThan, Operator.lessThan, Operator.equalTo);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\n\n/**\n * Any condition that has a type of ID usually only is queried by ID.\n */\n@Component({\n selector: 'novo-id-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\">\n <novo-option value=\"equalTo\">{{ labels.equalTo }}</novo-option>\n <ng-content></ng-content>\n </novo-select>\n </novo-field>\n <novo-field *novoConditionInputDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <input novoInput type=\"number\" min=\"1\" step=\"1\" formControlName=\"value\" />\n </novo-field>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultIdConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.equalTo;\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\n\n/**\n * Handle selection of field values when a list of options is provided.\n */\n@Component({\n selector: 'novo-picker-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n <novo-option value=\"includeAll\">{{ labels.includeAll }}</novo-option>\n <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n <novo-option value=\"isNull\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; fieldMeta as meta\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['includeAny', 'includeAll', 'excludeAny']\">\n <novo-select extupdatefix formControlName=\"value\" [placeholder]=\"labels.select\" [multiple]=\"true\">\n <!-- WHat about optionUrl/optionType -->\n <novo-option *ngFor=\"let option of meta?.options\" [value]=\"option.value\" [attr.data-automation-value]=\"option.label\">\n {{ option.label }}\n </novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.includeAny;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.includeAny, Operator.includeAll, Operator.excludeAny);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { AddressCriteriaConfig } from '../query-builder.types';\n\n@Component({\n selector: 'novo-condition-templates',\n templateUrl: './condition-templates.component.html'\n})\nexport class NovoConditionTemplatesComponent {\n @Input() addressConfig: AddressCriteriaConfig;\n}\n","<novo-id-condition-def name=\"ID\"/>\n<novo-date-condition-def name=\"DATE\"/>\n<novo-date-time-condition-def name=\"TIMESTAMP\"/>\n<novo-string-condition-def name=\"STRING\"/>\n<novo-number-condition-def name=\"FLOAT\"/>\n<novo-number-condition-def name=\"INTEGER\"/>\n<novo-number-condition-def name=\"BIGDECIMAL\"/>\n<novo-number-condition-def name=\"DOUBLE\"/>\n<novo-address-condition-def name=\"ADDRESS\" [config]=\"addressConfig\"/>\n<novo-boolean-condition-def name=\"BOOLEAN\"/>\n<novo-picker-condition-def name=\"SELECT\"/>\n<novo-string-condition-def name=\"DEFAULT\"/>\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n SimpleChanges,\n SkipSelf,\n ViewChild,\n ViewContainerRef,\n computed,\n input\n} from '@angular/core';\nimport { ControlContainer, FormControl, FormGroup } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { BaseConditionFieldDef } from '../query-builder.directives';\nimport { QueryBuilderConfig, QueryBuilderService } from '../query-builder.service';\nimport { NOVO_CONDITION_BUILDER } from '../query-builder.tokens';\nimport { AddressCriteriaConfig, BaseFieldDef, FieldConfig, QueryFilterOutlet } from '../query-builder.types';\n\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\n@Directive({ selector: '[conditionInputOutlet]' })\nexport class ConditionInputOutlet implements QueryFilterOutlet {\n constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {}\n}\n\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\n@Directive({ selector: '[conditionOperatorOutlet]' })\nexport class ConditionOperatorOutlet implements QueryFilterOutlet {\n constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {}\n}\n\n@Component({\n selector: 'novo-condition-builder',\n templateUrl: './condition-builder.component.html',\n styleUrls: ['./condition-builder.component.scss'],\n providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent },\n {\n provide: QueryBuilderService,\n deps: [NovoLabelService, [new SkipSelf(), new Optional(), QueryBuilderService]],\n useFactory: (labelService: NovoLabelService, queryBuilderService?: QueryBuilderService) => {\n if (!queryBuilderService) {\n queryBuilderService = new QueryBuilderService(labelService);\n }\n return queryBuilderService;\n }\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConditionBuilderComponent implements OnInit, OnChanges, AfterContentInit, AfterViewInit, OnDestroy {\n @ViewChild(ConditionOperatorOutlet, { static: true }) _operatorOutlet: ConditionOperatorOutlet;\n @ViewChild(ConditionInputOutlet, { static: true }) _inputOutlet: ConditionInputOutlet;\n\n @Input() label: any;\n @Input() scope: string;\n @Input() andIndex: number;\n @Input() groupIndex: number;\n @Input() addressConfig: AddressCriteriaConfig;\n hideOperator = input(true);\n conditionType = input();\n\n // This component can either be directly hosted as a host to a condition, or it can be part of a condition group within a criteria builder.\n // In the former case, config will come from inputs, and we will instantiate our own QueryBuilderService. In the latter, it comes from\n // the QueryBuilderService.\n inputConfig = input<QueryBuilderConfig>(null, { alias: 'config'});\n inputEditTypeFn = input<(field: BaseFieldDef) => string>(null, { alias: 'editTypeFn'});\n private config = computed<QueryBuilderConfig>(() => {\n if (this.isConditionHost) {\n this.queryBuilderService.config = this.inputConfig();\n }\n return this.queryBuilderService.config;\n });\n private editTypeFn = computed<(field: BaseFieldDef) => string>(() => {\n if (this.isConditionHost) {\n this.queryBuilderService.editTypeFn = this.inputEditTypeFn();\n }\n return this.queryBuilderService.editTypeFn;\n });\n\n public parentForm: FormGroup;\n public fieldConfig: FieldConfig<BaseFieldDef>;\n public searches!: Subscription;\n public results$: Promise<any[]>;\n public searchTerm: FormControl = new FormControl();\n public fieldDisplayWith;\n public displayIcon: string;\n\n public staticFieldSelection = computed(() => this.config().staticFieldSelection);\n private _lastContext: any = {};\n @HostBinding('class.condition-host')\n public isConditionHost = false;\n\n public gridColumns = computed(() => {\n if (this.staticFieldSelection()) {\n return '13rem 1fr';\n } else {\n const firstColumnWidth = this.hideOperator() ? '20rem' : '16rem';\n return `${firstColumnWidth} 13rem 1fr`;\n }\n });\n\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n constructor(\n public labels: NovoLabelService,\n private cdr: ChangeDetectorRef,\n private queryBuilderService: QueryBuilderService,\n private controlContainer: ControlContainer,\n ) {\n if (!queryBuilderService.componentHost) {\n queryBuilderService.componentHost = this;\n this.isConditionHost = true;\n this.groupIndex = 0;\n this.andIndex = 0;\n }\n }\n\n ngOnInit() {\n this.parentForm = this.controlContainer.control as FormGroup;\n this.parentForm.controls.field.valueChanges.subscribe((value) => {\n Promise.resolve().then(() => this.updateFieldSelection());\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.inputConfig?.previousValue?.staticFieldSelection &&\n changes.inputConfig.previousValue.staticFieldSelection !== changes.inputConfig.currentValue.staticFieldSelection) {\n this.parentForm.controls.field.setValue(changes.inputConfig.currentValue.staticFieldSelection);\n }\n }\n\n ngAfterContentInit() {\n const allFields = this.config()?.fields || [];\n const scopedFields = this.scope ? allFields.find((field) => field.value === this.scope) : allFields[0];\n allFields.length && this.changeFieldOptions(scopedFields);\n this.searches = this.searchTerm.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe((term) => {\n this.results$ = Promise.resolve(\n this.fieldConfig.options.filter(\n (f) => f.name.toLowerCase().includes(term.toLowerCase()) || f.label?.toLowerCase().includes(term.toLowerCase()),\n ),\n );\n this.cdr.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n if (this.parentForm.value?.field !== null) {\n Promise.resolve().then(() => this.updateFieldSelection());\n }\n }\n\n ngOnDestroy() {\n this.searches.unsubscribe();\n // Clear all outlets and Maps\n [this._operatorOutlet.viewContainer, this._inputOutlet.viewContainer].forEach((def) => {\n def.clear();\n });\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n /**\n * Updates the Conditions \"Field\" Options to Change base on new Scope\n * @param fieldConfig\n */\n changeFieldOptions(fieldConfig: FieldConfig<BaseFieldDef>) {\n this.fieldConfig = fieldConfig;\n this.searchTerm.setValue('');\n this.results$ = Promise.resolve(this.fieldConfig.options);\n }\n\n getField() {\n const field = this.parentForm?.value?.field;\n if (!field) return null;\n return this.fieldConfig.find(field);\n }\n\n getDefaultField() {\n const fields = this.fieldConfig.options;\n if (fields?.length) {\n return fields[0].name;\n }\n return null;\n }\n\n updateFieldSelection() {\n const fieldConf = this.getField();\n if (!fieldConf) {\n this.parentForm.get('field').setValue(this.getDefaultField());\n return;\n } else {\n this.fieldDisplayWith = () => fieldConf.label || fieldConf.name;\n this.displayIcon = fieldConf.icon || null;\n }\n const { field } = this.parentForm.value;\n\n if (this._lastContext.field !== field) {\n if (this._lastContext.field) {\n // only clearing operator/value if field was previously defined so we can preload values onto the form\n this.parentForm.get('value').setValue(null);\n this.parentForm.get('operator').setValue(null);\n }\n this.createFieldTemplates();\n }\n setTimeout(() => this.updateConditionType());\n\n this._lastContext = { ...this.parentForm.value };\n this.cdr.markForCheck();\n }\n\n updateConditionType() {\n this.parentForm.get('conditionType')?.setValue(this.conditionType());\n }\n\n private findDefinitionForField(field) {\n if (!field) return;\n const editType = this.editTypeFn()(field);\n // Don't look at dataSpecialization it is no good, this misses currency, and percent\n const { name } = field;\n const fieldDefsByName = this.queryBuilderService.getFieldDefsByName();\n // Check Fields by priority for match Field Definition\n const key = [name, editType?.toUpperCase(), 'DEFAULT'].find((it) => fieldDefsByName.has(it));\n return fieldDefsByName.get(key);\n }\n\n private createFieldTemplates() {\n const definition = this.findDefinitionForField(this.getField());\n\n if (!this.parentForm.get('operator').value) {\n this.parentForm.get('operator').setValue(definition.defaultOperator);\n }\n\n this.createFieldOperators(definition);\n this.createFieldInput(definition);\n }\n\n private createFieldOperators(definition: BaseConditionFieldDef) {\n this._operatorOutlet.viewContainer.clear();\n if (definition) {\n const context = { $implicit: this.parentForm, fieldMeta: this.getField() };\n this._operatorOutlet.viewContainer.createEmbeddedView(definition.fieldOperators.template, context);\n }\n this.cdr.markForCheck();\n }\n\n private createFieldInput(definition: BaseConditionFieldDef) {\n this._inputOutlet.viewContainer.clear();\n if (definition) {\n const context = { $implicit: this.parentForm, fieldMeta: this.getField(), viewIndex: this.groupIndex.toString() + this.andIndex.toString() };\n this._inputOutlet.viewContainer.createEmbeddedView(definition.fieldInput.template, context);\n }\n this.cdr.markForCheck();\n }\n}\n","<form [formGroup]=\"parentForm\">\n <novo-grid gap=\"1rem\" [columns]=\"gridColumns()\" align=\"end\">\n <novo-field class=\"condition-field\" *ngIf=\"!staticFieldSelection()\">\n <novo-select\n [placeholder]=\"labels.chooseAField\"\n formControlName=\"field\"\n (onSelect)=\"updateFieldSelection()\"\n overlayWidth=\"24rem\"\n overlayHeight=\"20rem\"\n [displayWith]=\"fieldDisplayWith\"\n [style.minWidth.px]=\"160\"\n [style.maxWidth.px]=\"(hideOperator() || isConditionHost) ? 200 : 160\"\n [displayIcon]=\"displayIcon\">\n <novo-optgroup class=\"filter-search-results\">\n <novo-option>\n <novo-select-search [formControl]=\"searchTerm\" [clearSearchInput]=\"false\"></novo-select-search>\n </novo-option>\n <ng-container *ngIf=\"results$ | async as results; else loading\">\n <ng-container *ngIf=\"results.length\">\n <novo-option *ngFor=\"let field of results\" value=\"{{ field.name }}\"\n [attr.data-automation-id]=\"field.name\">\n {{ field.label || field.name }}\n </novo-option>\n </ng-container>\n </ng-container>\n </novo-optgroup>\n </novo-select>\n </novo-field>\n\n <div class=\"condition-operator\">\n <ng-container conditionOperatorOutlet></ng-container>\n </div>\n\n <div class=\"condition-input\">\n <ng-container conditionInputOutlet></ng-container>\n </div>\n </novo-grid>\n <ng-content></ng-content>\n</form>\n\n<novo-condition-templates *ngIf=\"isConditionHost\" [addressConfig]=\"addressConfig\"/>\n\n<!-- LOADING TEMPLATE -->\n<ng-template #loading>\n <novo-loading></novo-loading>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ControlContainer, FormArray, FormBuilder, UntypedFormGroup, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { QueryBuilderService } from '../query-builder.service';\nimport { Condition, Conjunction } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\nconst EMPTY_CONDITION: Condition = {\n conditionType: '$and',\n field: null,\n operator: null,\n scope: null,\n value: null,\n};\n@Component({\n selector: 'novo-condition-group',\n templateUrl: './condition-group.component.html',\n styleUrls: ['./condition-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ConditionGroupComponent), multi: true }],\n host: {\n class: 'novo-condition-group',\n },\n})\nexport class ConditionGroupComponent implements OnInit, OnDestroy {\n @Input() controlName: string = '$' + Conjunction.AND;\n @Input() groupIndex: number;\n @Input() hideFirstOperator: boolean = true;\n @Input() canBeEmpty: boolean = false;\n @Input() formGroupName: any;\n\n public scope: string;\n public parentForm: UntypedFormGroup;\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n constructor(\n public qbs: QueryBuilderService,\n public labels: NovoLabelService,\n private controlContainer: ControlContainer,\n private formBuilder: FormBuilder,\n private cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.parentForm = this.controlContainer.control as UntypedFormGroup;\n this.controlName = Object.keys(this.parentForm.controls)[0];\n this.updateGroupScope();\n merge(this.parentForm.parent.valueChanges, this.qbs.stateChanges)\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => this.cdr.markForCheck());\n }\n\n ngOnChanges() {\n this.updateGroupScope();\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n updateGroupScope() {\n if (this.parentForm && this.controlName) {\n this.scope = this.parentForm.value[this.controlName][0]?.scope || this.qbs.scopes()[0];\n }\n }\n\n updateControlName(value: string) {\n const name = `$${value.replace('$', '')}`;\n if (name !== this.controlName) {\n const current = this.parentForm.get(this.controlName).value;\n this.parentForm.controls[name] = this.parentForm.controls[this.controlName];\n delete this.parentForm.controls[this.controlName];\n this.controlName = name;\n // scrub properties not on control\n const currentStrict = current.map((item) => (({ conditionType, field, operator, scope, value, ...rest }) => ({ conditionType, field, operator, scope, value }))(item));\n this.parentForm.get(this.controlName)?.setValue(currentStrict);\n this.cdr.markForCheck();\n }\n }\n\n get root(): FormArray {\n return this.parentForm.get(this.controlName) as FormArray;\n }\n\n addCondition(data?: any) {\n const condition = this.newCondition(data);\n const onlyConditionIsEmpty = JSON.stringify(this.root.value) === JSON.stringify([EMPTY_CONDITION]);\n this.root.push(condition);\n this.qbs.hasMultipleScopes() && onlyConditionIsEmpty && this.removeCondition(0);\n this.cdr.markForCheck();\n }\n\n removeCondition(index: number) {\n const isPrimaryScope = this.scope === this.qbs.scopes()[0];\n const lastRowInGroup = this.root.length === 1;\n const lastRowInQueryBuilder = this.cantRemoveRow();\n this.root.removeAt(index);\n if ((lastRowInQueryBuilder || (lastRowInGroup && isPrimaryScope)) && !this.canBeEmpty) {\n this.addCondition();\n }\n this.cdr.markForCheck();\n }\n\n newCondition({ field, operator, scope, value }: Condition = EMPTY_CONDITION): UntypedFormGroup {\n return this.formBuilder.group({\n conditionType: '$and',\n field: [field, Validators.required],\n operator: [operator, Validators.required],\n scope: [scope],\n value: [value],\n });\n }\n\n cantRemoveRow() {\n if ((this.parentForm.parent as FormArray).length > 1) {\n return false;\n }\n return this.root.length <= 1;\n }\n}\n","<div [formGroup]=\"parentForm\" class=\"condition-group-container\">\n <novo-stack [formArrayName]=\"controlName\" gap=\"md\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLast = last;\">\n <ng-container [formGroupName]=\"andIndex\">\n <novo-flex class=\"condition-row\" [ngClass]=\"{ isFirst: andIndex === 0 }\" [class]=\"scope\" align=\"end\" gap=\"sm\" #flex>\n <novo-dropdown *ngIf=\"(!isFirst || !hideFirstOperator) && qbs.allowedGroupings.length > 1; else labeledGroup\">\n <button theme=\"dialogue\" icon=\"collapse\" size=\"sm\">{{qbs.getConjunctionLabel(controlName)}}</button>\n <novo-optgroup>\n <novo-option *ngFor=\"let c of qbs.allowedGroupings\" (click)=\"updateControlName(c)\">\n {{qbs.getConjunctionLabel(c)}}</novo-option>\n </novo-optgroup>\n </novo-dropdown>\n <ng-template #labeledGroup>\n <novo-label *ngIf=\"!isFirst || !hideFirstOperator\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">\n {{qbs.getConjunctionLabel(controlName)}}</novo-label>\n </ng-template>\n <novo-condition-builder [groupIndex]=\"groupIndex\" [andIndex]=\"andIndex\" [hideOperator]=\"isFirst && hideFirstOperator\" [scope]=\"scope\" [conditionType]=\"controlName\"></novo-condition-builder>\n <novo-button theme=\"icon\" icon=\"delete-o\" color=\"negative\" (click)=\"removeCondition(andIndex)\">\n </novo-button>\n </novo-flex>\n </ng-container>\n </ng-container>\n <button\n *ngIf=\"!qbs.hasMultipleScopes()\"\n theme=\"dialogue\"\n data-automation-id=\"add-advanced-search-condition\"\n icon=\"add-thin\"\n side=\"left\"\n size=\"sm\"\n uppercase\n (click)=\"addCondition()\">\n {{ labels.addCondition }}</button>\n </novo-stack>\n</div>\n","import {\n AfterContentChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChildren,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { ControlContainer, FormArray, FormBuilder, NG_VALUE_ACCESSOR, UntypedFormGroup, Validators } from '@angular/forms';\nimport { interval, Subject } from 'rxjs';\nimport { debounce, filter, startWith, takeUntil } from 'rxjs/operators';\nimport { NovoTabbedGroupPickerElement, TabbedGroupPickerButtonConfig, TabbedGroupPickerTab } from 'novo-elements/elements/tabbed-group-picker';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { ConditionGroupComponent } from '../condition-group/condition-group.component';\nimport { NovoConditionFieldDef } from '../query-builder.directives';\nimport { QueryBuilderService } from '../query-builder.service';\nimport { NOVO_CRITERIA_BUILDER } from '../query-builder.tokens';\nimport { BaseFieldDef, Condition, ConditionGroup, Conjunction, AddressCriteriaConfig } from '../query-builder.types';\n\nconst EMPTY_CONDITION: Condition = {\n conditionType: '$and',\n field: null,\n operator: null,\n scope: null,\n value: null,\n};\n@Component({\n selector: 'novo-criteria-builder',\n templateUrl: './criteria-builder.component.html',\n styleUrls: ['./criteria-builder.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CriteriaBuilderComponent), multi: true },\n { provide: NOVO_CRITERIA_BUILDER, useExisting: CriteriaBuilderComponent },\n { provide: QueryBuilderService, useClass: QueryBuilderService },\n ],\n host: {\n class: 'novo-criteria-builder',\n },\n})\nexport class CriteriaBuilderComponent implements OnInit, OnDestroy, AfterContentChecked, AfterViewInit {\n @Input() config: any;\n @Input() controlName: string;\n @Input() allowedGroupings = [Conjunction.AND, Conjunction.OR, Conjunction.NOT];\n @Input() editTypeFn: (field: BaseFieldDef) => string;\n @Input() addressConfig: AddressCriteriaConfig;\n @Input() canBeEmpty: boolean = false;\n\n @Input('hideFirstOperator')\n set HideFirstOperator(hide: boolean) {\n if (!Helpers.isEmpty(hide)) {\n this._hideFirstOperator = hide;\n }\n }\n get hideFirstOperator() {\n return this._hideFirstOperator;\n }\n private _hideFirstOperator: boolean = true;\n\n @ContentChildren(NovoConditionFieldDef, { descendants: true }) _contentFieldDefs: QueryList<NovoConditionFieldDef>;\n scopedFieldPicker = viewChild(NovoTabbedGroupPickerElement);\n conditionGroups = viewChildren(ConditionGroupComponent);\n\n public parentForm: UntypedFormGroup;\n public innerForm: UntypedFormGroup;\n public tabbedGroupPickerTabs = computed<TabbedGroupPickerTab[]>(() => {\n const tabs = [];\n this.qbs.scopes()?.forEach((scope) => {\n tabs.push({\n typeName: scope,\n typeLabel: scope,\n valueField: 'name',\n labelField: 'label',\n data: this.qbs.config.fields.find((field) => field.value === scope)?.options || [],\n });\n });\n return tabs;\n });\n public addButtonConfig: TabbedGroupPickerButtonConfig = {\n theme: 'dialogue',\n side: 'left',\n size: 'sm',\n icon: 'add-thin',\n label: this.labels.addCondition,\n };\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n constructor(\n private controlContainer: ControlContainer,\n private formBuilder: FormBuilder,\n private cdr: ChangeDetectorRef,\n public qbs: QueryBuilderService,\n public labels: NovoLabelService,\n ) {\n if (!qbs.componentHost) {\n qbs.componentHost = this;\n }\n }\n\n ngOnInit() {\n this.parentForm = this.controlContainer.control as UntypedFormGroup;\n this.innerForm = this.formBuilder.group({\n criteria: this.formBuilder.array([]),\n });\n\n this.parentForm.valueChanges.pipe(\n startWith(this.parentForm.value),\n filter(v => v?.criteria),\n takeUntil(this._onDestroy)\n ).subscribe((value) => {\n Promise.resolve().then(() => {\n this.setInitialValue(value[this.controlName]);\n this.cdr.markForCheck();\n });\n });\n this.innerForm.valueChanges\n .pipe(\n debounce(() => interval(10)),\n takeUntil(this._onDestroy),\n )\n .subscribe((value) => {\n const result = value.criteria.filter((it, i) => {\n const key = Object.keys(it)[0];\n if (it[key].length === 0) {\n this.removeConditionGroupAt(i);\n }\n return it[key].length > 0;\n });\n\n Promise.resolve().then(() => {\n this.parentForm.get(this.controlName).setValue(result, { emitEvent: false });\n this.cdr.markForCheck();\n });\n });\n }\n\n ngAfterContentChecked(): void {\n this._configureQueryBuilderService();\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this._registerFieldDefs();\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n private isConditionGroup(group: unknown): group is ConditionGroup {\n return Object.keys(group).every((key) => ['$and', '$or', '$not'].includes(key));\n }\n\n private setInitialValue(value: ConditionGroup[] | Condition[]) {\n if (value.length) {\n if (this.isConditionGroup(value[0])) {\n value.forEach((it) => this.addConditionGroup(it));\n } else {\n const conditions: Condition[] = [...value] as Condition[];\n if (this.qbs.hasMultipleScopes()) {\n // divide up by scope into separate groups\n const scopedConditions: { [key: string]: Condition[] } = {};\n conditions.forEach((condition) => {\n scopedConditions[condition.scope] = scopedConditions[condition.scope] || [];\n scopedConditions[condition.scope].push(condition);\n })\n for (const scope in scopedConditions) {\n this.addConditionGroup({ $and: scopedConditions[scope] });\n }\n } else {\n this.addConditionGroup({ $and: conditions });\n }\n }\n } else {\n this.addConditionGroup({ $and: value });\n }\n }\n\n get root(): FormArray {\n return this.innerForm.get('criteria') as FormArray;\n }\n\n addConditionGroup(data: any = { $and: [EMPTY_CONDITION] }) {\n this.root.push(this.newConditionGroup(data));\n this.cdr.markForCheck();\n }\n\n newConditionGroup(data: ConditionGroup): UntypedFormGroup {\n const controls = Object.entries(data).reduce((obj, [key, val]) => {\n return {\n ...obj,\n [key]: this.formBuilder.array(val.map((it) => this.newCondition(it))),\n };\n }, {});\n return this.formBuilder.group(controls);\n }\n\n newCondition({ field, operator, scope, value }: Condition = EMPTY_CONDITION): UntypedFormGroup {\n return this.formBuilder.group({\n conditionType: '$and',\n field: [field, Validators.required],\n operator: [operator, Validators.required],\n scope: [scope],\n value: [value],\n });\n }\n\n removeConditionGroupAt(index: number) {\n this.root.removeAt(index, { emitEvent: false });\n }\n\n clearAllConditions() {\n while (this.root.length) {\n this.root.removeAt(0);\n }\n }\n\n onFieldSelect(field) {\n this.scopedFieldPicker().dropdown.closePanel();\n const condition = { field: field.name, operator: null, scope: field.scope, value: null };\n const group = this.conditionGroups().find((group) => group.scope === field.scope);\n if (group) {\n group.addCondition(condition);\n } else {\n this.addConditionGroup({ $and: [condition] })\n }\n }\n\n private _configureQueryBuilderService() {\n this.qbs.scopes.set(this.config?.fields.map((f) => f.value));\n this.qbs.config = this.config;\n this.qbs.editTypeFn = this.editTypeFn;\n this.qbs.allowedGroupings = this.allowedGroupings as Conjunction[];\n }\n\n private _registerFieldDefs() {\n const defs = [...Array.from(this._contentFieldDefs)];\n defs.forEach((fieldDef) => {\n this.qbs.registerFieldDef(fieldDef);\n });\n }\n}\n","<form [formGroup]=\"innerForm\">\n <novo-stack [formArrayName]=\"controlName\" class=\"criteria-builder-inner\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLastAnd = last;\">\n <novo-label *ngIf=\"!isFirst\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">{{ qbs.hasMultipleScopes() ? conditionGroup.scope + ' ' + labels.filterss : qbs.getConjunctionLabel('and') }}</novo-label>\n <novo-condition-group [hideFirstOperator]=\"hideFirstOperator\" [canBeEmpty]=\"canBeEmpty\" [groupIndex]=\"andIndex\" [formGroupName]=\"andIndex\" #conditionGroup></novo-condition-group>\n </ng-container>\n </novo-stack>\n <novo-tabbed-group-picker\n *ngIf=\"qbs.hasMultipleScopes()\"\n [tabs]=\"tabbedGroupPickerTabs()\"\n [selectionEnabled]=\"false\"\n [buttonConfig]=\"addButtonConfig\"\n (activation)=\"onFieldSelect($event)\">\n </novo-tabbed-group-picker>\n</form>\n<novo-condition-templates [addressConfig]=\"addressConfig\"/>\n\n<!--\n {\n $and: [{\n $or: [{\n entity: 'JobOrder'\n field: 'categories',\n operator: 'doesNotContain',\n value: 'Healthcare'\n }]\n }]\n }\n -->\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NovoAutoCompleteModule } from 'novo-elements/elements/autocomplete';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCardModule } from 'novo-elements/elements/card';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoCommonModule, NovoOptionModule, NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoDatePickerModule } from 'novo-elements/elements/date-picker';\nimport { NovoDateTimePickerModule } from 'novo-elements/elements/date-time-picker';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoFieldModule } from 'novo-elements/elements/field';\nimport { NovoFlexModule } from 'novo-elements/elements/flex';\nimport { NovoFormModule } from 'novo-elements/elements/form';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoNonIdealStateModule } from 'novo-elements/elements/non-ideal-state';\nimport { GooglePlacesModule } from 'novo-elements/elements/places';\nimport { NovoRadioModule } from 'novo-elements/elements/radio'\nimport { NovoSearchBoxModule } from 'novo-elements/elements/search';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { NovoSelectSearchModule } from 'novo-elements/elements/select-search';\nimport { NovoSwitchModule } from 'novo-elements/elements/switch';\nimport { NovoTabbedGroupPickerModule } from 'novo-elements/elements/tabbed-group-picker';\nimport { NovoTabModule } from 'novo-elements/elements/tabs';\nimport { ConditionBuilderComponent, ConditionInputOutlet, ConditionOperatorOutlet } from './condition-builder/condition-builder.component';\nimport { NovoDefaultAddressConditionDef } from './condition-definitions/address-condition.definition';\nimport { NovoDefaultBooleanConditionDef } from './condition-definitions/boolean-condition.definition';\nimport { NovoDefaultDateConditionDef } from './condition-definitions/date-condition.definition';\nimport { NovoDefaultDateTimeConditionDef } from './condition-definitions/date-time-condition.definition';\nimport { NovoDefaultIdConditionDef } from './condition-definitions/id-condition.definition';\nimport { NovoDefaultNumberConditionDef } from './condition-definitions/number-condition.definition';\nimport { NovoDefaultPickerConditionDef } from './condition-definitions/picker-condition.definition';\nimport { NovoDefaultStringConditionDef } from './condition-definitions/string-condition.definition';\nimport { ConditionGroupComponent } from './condition-group/condition-group.component';\nimport { CriteriaBuilderComponent } from './criteria-builder/criteria-builder.component';\nimport { NovoConditionFieldDef, NovoConditionInputDef, NovoConditionOperatorsDef } from './query-builder.directives';\nimport { NovoConditionTemplatesComponent } from './condition-templates/condition-templates.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n DragDropModule,\n CdkTableModule,\n GooglePlacesModule,\n NovoAutoCompleteModule,\n NovoButtonModule,\n NovoCommonModule,\n NovoFormModule,\n NovoSelectModule,\n NovoNonIdealStateModule,\n NovoFieldModule,\n NovoOptionModule,\n NovoFlexModule,\n NovoTabModule,\n NovoTabbedGroupPickerModule,\n NovoLoadingModule,\n NovoCardModule,\n NovoDatePickerModule,\n NovoDateTimePickerModule,\n NovoIconModule,\n NovoOverlayModule,\n NovoRadioModule,\n NovoSearchBoxModule,\n NovoSwitchModule,\n NovoChipsModule,\n NovoSelectSearchModule,\n NovoDropdownModule,\n ],\n declarations: [\n CriteriaBuilderComponent,\n ConditionBuilderComponent,\n ConditionInputOutlet,\n ConditionOperatorOutlet,\n ConditionGroupComponent,\n NovoDefaultAddressConditionDef,\n NovoDefaultBooleanConditionDef,\n NovoDefaultDateConditionDef,\n NovoDefaultDateTimeConditionDef,\n NovoConditionOperatorsDef,\n NovoConditionInputDef,\n NovoConditionFieldDef,\n NovoDefaultStringConditionDef,\n NovoDefaultNumberConditionDef,\n NovoDefaultIdConditionDef,\n NovoDefaultPickerConditionDef,\n NovoConditionTemplatesComponent,\n ],\n exports: [\n CriteriaBuilderComponent,\n ConditionBuilderComponent,\n NovoDefaultAddressConditionDef,\n NovoDefaultBooleanConditionDef,\n NovoDefaultDateConditionDef,\n NovoDefaultDateTimeConditionDef,\n NovoConditionOperatorsDef,\n NovoConditionInputDef,\n NovoConditionFieldDef,\n NovoDefaultStringConditionDef,\n NovoDefaultNumberConditionDef,\n NovoDefaultIdConditionDef,\n NovoDefaultPickerConditionDef,\n NovoConditionTemplatesComponent,\n ],\n})\nexport class NovoQueryBuilderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.QueryBuilderService","i6","i7","i11.NovoConditionOperatorsDef","i11.NovoConditionInputDef","i11.NovoConditionFieldDef","i2","i3","i4","i7.NovoConditionOperatorsDef","i7.NovoConditionInputDef","i7.NovoConditionFieldDef","i5","i8","i9.NovoConditionOperatorsDef","i9.NovoConditionInputDef","i9.NovoConditionFieldDef","i9","i8.NovoConditionOperatorsDef","i8.NovoConditionInputDef","i8.NovoConditionFieldDef","i1","i5.NovoConditionOperatorsDef","i5.NovoConditionInputDef","i5.NovoConditionFieldDef","i1.NovoDefaultAddressConditionDef","i2.NovoDefaultBooleanConditionDef","i3.NovoDefaultDateConditionDef","i4.NovoDefaultDateTimeConditionDef","i5.NovoDefaultStringConditionDef","i6.NovoDefaultNumberConditionDef","i7.NovoDefaultIdConditionDef","i8.NovoDefaultPickerConditionDef","i2.QueryBuilderService","i10","i11.NovoConditionTemplatesComponent","EMPTY_CONDITION","i9.ConditionBuilderComponent","i8.ConditionGroupComponent","i9.NovoConditionTemplatesComponent"],"mappings":"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"}
|