@sarasanalytics-com/design-system 0.0.154 → 0.0.155
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/README.md +24 -24
- package/esm2022/interfaces/avatar-interface.mjs +1 -1
- package/esm2022/interfaces/button-interface.mjs +1 -1
- package/esm2022/interfaces/card-carousel-interface.mjs +1 -1
- package/esm2022/interfaces/chip-interface.mjs +1 -1
- package/esm2022/interfaces/form-layout.interface.mjs +1 -1
- package/esm2022/interfaces/grid-interface.mjs +1 -1
- package/esm2022/interfaces/guide-card-interface.mjs +1 -1
- package/esm2022/interfaces/header-interface.mjs +1 -1
- package/esm2022/interfaces/icon-interface.mjs +1 -1
- package/esm2022/interfaces/layout-section-interface.mjs +1 -1
- package/esm2022/interfaces/left-nav-interface.mjs +1 -1
- package/esm2022/interfaces/menu.interface.mjs +1 -1
- package/esm2022/interfaces/message-banner.mjs +1 -1
- package/esm2022/interfaces/option-interface.mjs +1 -1
- package/esm2022/interfaces/scrolling-card-interface.mjs +1 -1
- package/esm2022/interfaces/select-interface.mjs +1 -1
- package/esm2022/interfaces/status-dot.interface.mjs +1 -1
- package/esm2022/interfaces/tab-interface.mjs +1 -1
- package/esm2022/interfaces/toast-interface.mjs +1 -1
- package/esm2022/interfaces/typography-animation-interface.mjs +1 -1
- package/esm2022/lib/accordion/accordion.component.mjs +3 -3
- package/esm2022/lib/avatar/avatar.component.mjs +3 -3
- package/esm2022/lib/button/button.component.mjs +3 -3
- package/esm2022/lib/calendar-header/calendar-header.component.mjs +3 -3
- package/esm2022/lib/card/card-body/card-body.component.mjs +1 -1
- package/esm2022/lib/card/card-custom-header/card-custom-header.component.mjs +1 -1
- package/esm2022/lib/card/card-footer-actions/card-footer-actions.component.mjs +3 -3
- package/esm2022/lib/card/card-icon/card-icon.component.mjs +1 -1
- package/esm2022/lib/card/card-title-actions/card-title-actions.component.mjs +1 -1
- package/esm2022/lib/card/card.component.mjs +3 -3
- package/esm2022/lib/card/checkbox-card/checkbox-card.component.mjs +3 -3
- package/esm2022/lib/card/guide-card/guide-card.component.mjs +3 -3
- package/esm2022/lib/card/menu-card/menu-card.component.mjs +3 -3
- package/esm2022/lib/card/thumbnail-card/thumbnail-card.component.mjs +3 -3
- package/esm2022/lib/card-carousel/card-carousel.component.mjs +3 -3
- package/esm2022/lib/categories-nav/categories-nav.component.mjs +3 -3
- package/esm2022/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/lib/chips/chips.component.mjs +3 -3
- package/esm2022/lib/component-library.component.mjs +9 -9
- package/esm2022/lib/component-library.service.mjs +1 -1
- package/esm2022/lib/dashboard-loader/dashboard-loader.component.mjs +1 -1
- package/esm2022/lib/data-grid/data-grid.component.mjs +3 -3
- package/esm2022/lib/datepicker/datepicker.component.mjs +3 -3
- package/esm2022/lib/dialog/dialog.component.mjs +3 -3
- package/esm2022/lib/dropdown/category-dropdown/category-dropdown.component.mjs +242 -0
- package/esm2022/lib/dropdown/ng-select/ng-select.component.mjs +111 -0
- package/esm2022/lib/filter/filter.component.mjs +3 -3
- package/esm2022/lib/form-input/form-input.component.mjs +4 -5
- package/esm2022/lib/form-select/form-select.component.mjs +3 -3
- package/esm2022/lib/grid-cell/grid-cell.component.mjs +10 -10
- package/esm2022/lib/header/header.component.mjs +3 -3
- package/esm2022/lib/icon/icon.component.mjs +3 -3
- package/esm2022/lib/icon/icon.service.mjs +1 -1
- package/esm2022/lib/layout-section/layout-section.component.mjs +3 -3
- package/esm2022/lib/left-nav/left-nav.component.mjs +3 -3
- package/esm2022/lib/list/list.component.mjs +3 -3
- package/esm2022/lib/menu/menu-list/menu-item.component.mjs +3 -3
- package/esm2022/lib/menu/menu.component.mjs +3 -3
- package/esm2022/lib/menu/menu.directive.mjs +1 -1
- package/esm2022/lib/message-banner/message-banner.component.mjs +3 -3
- package/esm2022/lib/message-banner-v2/message-banner-v2.component.mjs +3 -3
- package/esm2022/lib/mini-card/mini-card.component.mjs +3 -3
- package/esm2022/lib/page-layout/page-layout.component.mjs +3 -3
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +3 -3
- package/esm2022/lib/query-builder/query-builder-demo.component.mjs +45 -45
- package/esm2022/lib/query-builder/query-builder.component.mjs +3 -3
- package/esm2022/lib/query-builder/query-builder.service.mjs +1 -1
- package/esm2022/lib/query-builder-formly/query-builder-formly.component.mjs +191 -0
- package/esm2022/lib/query-builder-textarea/query-builder-textarea-demo.component.mjs +39 -39
- package/esm2022/lib/query-builder-textarea/query-builder-textarea.component.mjs +3 -3
- package/esm2022/lib/radio-button/radio-button.component.mjs +3 -3
- package/esm2022/lib/scrolling-cards/scrolling-cards.component.mjs +3 -3
- package/esm2022/lib/skeleton/skeleton-base.component.mjs +1 -1
- package/esm2022/lib/skeleton/skeleton-container.component.mjs +9 -9
- package/esm2022/lib/skeleton/skeleton-loader.component.mjs +193 -193
- package/esm2022/lib/skeleton/skeleton-presets.mjs +1 -1
- package/esm2022/lib/skeleton/skeleton-shapes.component.mjs +1 -1
- package/esm2022/lib/spinner/spinner.component.mjs +1 -1
- package/esm2022/lib/status-dot/status-dot.component.mjs +17 -17
- package/esm2022/lib/stepper/stepper.component.mjs +3 -3
- package/esm2022/lib/tabs/tabs.component.mjs +3 -3
- package/esm2022/lib/toast/toast.component.mjs +3 -3
- package/esm2022/lib/tool-tip/tool-tip.component.mjs +3 -3
- package/esm2022/lib/typography-animation/typography-animation.component.mjs +3 -3
- package/esm2022/public-api.mjs +4 -1
- package/esm2022/utils/validators.mjs +1 -1
- package/fesm2022/sarasanalytics-com-design-system.mjs +893 -411
- package/fesm2022/sarasanalytics-com-design-system.mjs.map +1 -1
- package/lib/dropdown/category-dropdown/category-dropdown.component.d.ts +40 -0
- package/lib/dropdown/ng-select/ng-select.component.d.ts +20 -0
- package/lib/query-builder-formly/query-builder-formly.component.d.ts +81 -0
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
- package/styles/styles.css +432 -460
|
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
104
104
|
providedIn: 'root'
|
|
105
105
|
}]
|
|
106
106
|
}], ctorParameters: () => [] });
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9xdWVyeS1idWlsZGVyL3F1ZXJ5LWJ1aWxkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0zQyxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLGdCQUFnQixDQUFDO0lBRWpCOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsS0FBaUI7UUFDN0IsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkQsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsS0FBSzthQUNmLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNuQixPQUFPLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFrQixDQUFDLEdBQUcsQ0FBQztZQUN2RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEQsQ0FBQztRQUNILENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE9BQU87WUFDTCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ25DLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBa0IsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTzt3QkFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7d0JBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO3FCQUNsQixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsS0FBaUI7UUFDNUIsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBa0IsQ0FBQyxDQUFDO1lBQy9DLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQztZQUN4RixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLFlBQTBCLEtBQUs7UUFDOUMsT0FBTztZQUNMLFNBQVM7WUFDVCxLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLENBQUMsS0FBYSxFQUFFLFFBQWdCLEVBQUUsS0FBVTtRQUMzRCxPQUFPO1lBQ0wsU0FBUyxFQUFFLEtBQUs7WUFDaEIsS0FBSyxFQUFFO2dCQUNMO29CQUNFLEtBQUs7b0JBQ0wsUUFBUTtvQkFDUixLQUFLO2lCQUNOO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs4R0FwR1UsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1ZXJ5R3JvdXAsIFF1ZXJ5UnVsZSB9IGZyb20gJy4vcXVlcnktYnVpbGRlci5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBRdWVyeUJ1aWxkZXJTZXJ2aWNlIHtcbiAgXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgcXVlcnkgZ3JvdXAgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmdcbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSBncm91cCB0byBjb252ZXJ0XG4gICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBxdWVyeVxuICAgKi9cbiAgcXVlcnlUb1N0cmluZyhxdWVyeTogUXVlcnlHcm91cCk6IHN0cmluZyB7XG4gICAgaWYgKCFxdWVyeSB8fCAhcXVlcnkucnVsZXMgfHwgcXVlcnkucnVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5LnJ1bGVzXG4gICAgICAubWFwKChydWxlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJ1bGUuY29uZGl0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGAoJHt0aGlzLnF1ZXJ5VG9TdHJpbmcocnVsZSBhcyBRdWVyeUdyb3VwKX0pYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYCR7cnVsZS5maWVsZH0gJHtydWxlLm9wZXJhdG9yfSAke3J1bGUudmFsdWV9YDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5qb2luKGAgJHtxdWVyeS5jb25kaXRpb24udG9VcHBlckNhc2UoKX0gYCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBxdWVyeSBncm91cCB0byBhIEpTT04gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgaW4gQVBJIHJlcXVlc3RzXG4gICAqIEBwYXJhbSBxdWVyeSBUaGUgcXVlcnkgZ3JvdXAgdG8gY29udmVydFxuICAgKiBAcmV0dXJucyBBIEpTT04gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBxdWVyeVxuICAgKi9cbiAgcXVlcnlUb0pzb24ocXVlcnk6IFF1ZXJ5R3JvdXApOiBhbnkge1xuICAgIGlmICghcXVlcnkgfHwgIXF1ZXJ5LnJ1bGVzIHx8IHF1ZXJ5LnJ1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb25kaXRpb246IHF1ZXJ5LmNvbmRpdGlvbixcbiAgICAgIHJ1bGVzOiBxdWVyeS5ydWxlcy5tYXAoKHJ1bGU6IGFueSkgPT4ge1xuICAgICAgICBpZiAocnVsZS5jb25kaXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5xdWVyeVRvSnNvbihydWxlIGFzIFF1ZXJ5R3JvdXApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWVsZDogcnVsZS5maWVsZCxcbiAgICAgICAgICAgIG9wZXJhdG9yOiBydWxlLm9wZXJhdG9yLFxuICAgICAgICAgICAgdmFsdWU6IHJ1bGUudmFsdWVcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgcXVlcnkgZ3JvdXAgdG8gZW5zdXJlIGFsbCBydWxlcyBoYXZlIHZhbGlkIHZhbHVlc1xuICAgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IGdyb3VwIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHF1ZXJ5IGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGlzUXVlcnlWYWxpZChxdWVyeTogUXVlcnlHcm91cCk6IGJvb2xlYW4ge1xuICAgIGlmICghcXVlcnkgfHwgIXF1ZXJ5LnJ1bGVzIHx8IHF1ZXJ5LnJ1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBxdWVyeS5ydWxlcy5ldmVyeSgocnVsZTogYW55KSA9PiB7XG4gICAgICBpZiAocnVsZS5jb25kaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNRdWVyeVZhbGlkKHJ1bGUgYXMgUXVlcnlHcm91cCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcnVsZS5maWVsZCAmJiBydWxlLm9wZXJhdG9yICYmIHJ1bGUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBydWxlLnZhbHVlICE9PSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZW1wdHkgcXVlcnkgZ3JvdXBcbiAgICogQHBhcmFtIGNvbmRpdGlvbiBUaGUgY29uZGl0aW9uIHRvIHVzZSAoYW5kL29yKVxuICAgKiBAcmV0dXJucyBBbiBlbXB0eSBxdWVyeSBncm91cFxuICAgKi9cbiAgY3JlYXRlRW1wdHlRdWVyeShjb25kaXRpb246ICdhbmQnIHwgJ29yJyA9ICdhbmQnKTogUXVlcnlHcm91cCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbmRpdGlvbixcbiAgICAgIHJ1bGVzOiBbXVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHNpbXBsZSBxdWVyeSB3aXRoIGEgc2luZ2xlIHJ1bGVcbiAgICogQHBhcmFtIGZpZWxkIFRoZSBmaWVsZCB0byBmaWx0ZXIgb25cbiAgICogQHBhcmFtIG9wZXJhdG9yIFRoZSBvcGVyYXRvciB0byB1c2VcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBmaWx0ZXIgYnlcbiAgICogQHJldHVybnMgQSBxdWVyeSBncm91cCB3aXRoIGEgc2luZ2xlIHJ1bGVcbiAgICovXG4gIGNyZWF0ZVNpbXBsZVF1ZXJ5KGZpZWxkOiBzdHJpbmcsIG9wZXJhdG9yOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBRdWVyeUdyb3VwIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29uZGl0aW9uOiAnYW5kJyxcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBvcGVyYXRvcixcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { FieldArrayType } from '@ngx-formly/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { FormlyModule } from '@ngx-formly/core';
|
|
5
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
6
|
+
import { get, keys } from 'lodash';
|
|
7
|
+
import { ButtonComponent } from '../button/button.component';
|
|
8
|
+
import { IconComponent } from '../icon/icon.component';
|
|
9
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
10
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
11
|
+
import { MatOptionModule } from '@angular/material/core';
|
|
12
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "@ngx-formly/core";
|
|
15
|
+
export class QueryBuilderFormlyComponent extends FieldArrayType {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
// reset(): void {
|
|
19
|
+
// this.formControl.reset();
|
|
20
|
+
// }
|
|
21
|
+
/**
|
|
22
|
+
* Duplicates the row at the given index.
|
|
23
|
+
* A deep–clone of that row’s model is inserted right after the original row.
|
|
24
|
+
*/
|
|
25
|
+
this.copied = false;
|
|
26
|
+
}
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
}
|
|
29
|
+
getRowCondition(index) {
|
|
30
|
+
if (index === 0)
|
|
31
|
+
return 'and';
|
|
32
|
+
const ruleGroup = this.formControl.at(index);
|
|
33
|
+
return ruleGroup.get('condition')?.value || 'and';
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Sets the condition for a specific row
|
|
37
|
+
* @param index The index of the row
|
|
38
|
+
* @param condition The condition to set (and/or)
|
|
39
|
+
*/
|
|
40
|
+
setRowCondition(index, condition) {
|
|
41
|
+
if (index === 0)
|
|
42
|
+
return; // First row doesn't have a condition
|
|
43
|
+
const ruleGroup = this.formControl.at(index);
|
|
44
|
+
ruleGroup.get('condition')?.setValue(condition);
|
|
45
|
+
}
|
|
46
|
+
copyRule() {
|
|
47
|
+
}
|
|
48
|
+
createField(field) {
|
|
49
|
+
if (field.type === 'dynamic-type' || field.type === '') {
|
|
50
|
+
field.type = 'sa-input';
|
|
51
|
+
field.props.type = 'text';
|
|
52
|
+
field.props.placeholder = 'Enter/Select';
|
|
53
|
+
}
|
|
54
|
+
return field;
|
|
55
|
+
}
|
|
56
|
+
getFilterType(subField) {
|
|
57
|
+
const parentValue = get(subField, 'formControl.parent.value');
|
|
58
|
+
if (!parentValue)
|
|
59
|
+
return undefined;
|
|
60
|
+
// Look through all keys of the parent value
|
|
61
|
+
for (const key of keys(parentValue)) {
|
|
62
|
+
const val = parentValue[key];
|
|
63
|
+
if (val && typeof val === 'object' && 'filterType' in val) {
|
|
64
|
+
return val.filterType;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
copy(index) {
|
|
70
|
+
const rowModel = this.formControl.at(index)?.value;
|
|
71
|
+
if (!rowModel)
|
|
72
|
+
return;
|
|
73
|
+
// Deep-clone model
|
|
74
|
+
const cloned = JSON.parse(JSON.stringify(rowModel));
|
|
75
|
+
// Insert row after the current one
|
|
76
|
+
this.add(index + 1, cloned);
|
|
77
|
+
// 👇 Force Formly to refresh the dynamic field
|
|
78
|
+
const newRow = this.formControl.at(index + 1);
|
|
79
|
+
const attr = newRow?.get('attribute')?.value;
|
|
80
|
+
if (attr) {
|
|
81
|
+
const attrCtrl = newRow?.get('attribute');
|
|
82
|
+
attrCtrl.setValue(attrCtrl.value);
|
|
83
|
+
// Re-trigger field type rebuild for filterValue
|
|
84
|
+
const filterValueField = this.field.fieldGroup[index + 1].fieldGroup
|
|
85
|
+
.find(f => f.key === 'filterValue');
|
|
86
|
+
if (filterValueField) {
|
|
87
|
+
const typeMap = {
|
|
88
|
+
SELECT: 'sa-ng-select',
|
|
89
|
+
STRING: 'sa-input',
|
|
90
|
+
NUMBER: 'sa-input',
|
|
91
|
+
DATE: 'sa-date-picker',
|
|
92
|
+
CURRENCY: 'sa-currency-input',
|
|
93
|
+
BOOLEAN: 'sa-ng-select',
|
|
94
|
+
};
|
|
95
|
+
const newType = typeMap[attr.filterType] || 'sa-input';
|
|
96
|
+
filterValueField.type = newType;
|
|
97
|
+
filterValueField.props = {
|
|
98
|
+
...this.createFieldProps(attr.filterType),
|
|
99
|
+
hasDynamicType: true,
|
|
100
|
+
disabled: false, // initial
|
|
101
|
+
attribute: attr,
|
|
102
|
+
};
|
|
103
|
+
// 🔄 Notify Formly of type change
|
|
104
|
+
filterValueField.options?.fieldChanges?.next({
|
|
105
|
+
type: 'type',
|
|
106
|
+
field: filterValueField,
|
|
107
|
+
value: newType,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
createFieldProps(type) {
|
|
113
|
+
switch (type) {
|
|
114
|
+
case 'SELECT':
|
|
115
|
+
return {
|
|
116
|
+
placeholder: 'Select',
|
|
117
|
+
multiple: false,
|
|
118
|
+
bindLabel: 'label',
|
|
119
|
+
bindValue: 'value',
|
|
120
|
+
appearance: 'outline',
|
|
121
|
+
isClearable: true,
|
|
122
|
+
isSearchable: false,
|
|
123
|
+
closeOnselect: true,
|
|
124
|
+
required: true,
|
|
125
|
+
disabled: false,
|
|
126
|
+
};
|
|
127
|
+
case 'STRING':
|
|
128
|
+
return {
|
|
129
|
+
placeholder: 'Enter value',
|
|
130
|
+
appearance: 'outline',
|
|
131
|
+
type: 'text'
|
|
132
|
+
};
|
|
133
|
+
case 'NUMBER':
|
|
134
|
+
return {
|
|
135
|
+
placeholder: 'Enter value',
|
|
136
|
+
appearance: 'outline',
|
|
137
|
+
type: 'number'
|
|
138
|
+
};
|
|
139
|
+
case 'DATE':
|
|
140
|
+
return {
|
|
141
|
+
placeholder: 'Select date',
|
|
142
|
+
appearance: 'outline',
|
|
143
|
+
type: 'date'
|
|
144
|
+
};
|
|
145
|
+
case 'CURRENCY':
|
|
146
|
+
return {
|
|
147
|
+
placeholder: 'Enter value',
|
|
148
|
+
appearance: 'outline',
|
|
149
|
+
};
|
|
150
|
+
case 'BOOLEAN':
|
|
151
|
+
return {
|
|
152
|
+
placeholder: 'Enter value',
|
|
153
|
+
appearance: 'outline',
|
|
154
|
+
type: 'boolean',
|
|
155
|
+
options: [
|
|
156
|
+
{ value: true, label: 'True' },
|
|
157
|
+
{ value: false, label: 'False' },
|
|
158
|
+
],
|
|
159
|
+
bindLabel: 'label',
|
|
160
|
+
bindValue: 'value',
|
|
161
|
+
disabled: false,
|
|
162
|
+
};
|
|
163
|
+
default:
|
|
164
|
+
return {
|
|
165
|
+
placeholder: 'Enter value',
|
|
166
|
+
appearance: 'outline',
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
reset() {
|
|
171
|
+
this.field.fieldGroup.splice(0, this.field.fieldGroup.length); // clear
|
|
172
|
+
this.add(); // start fresh with one row
|
|
173
|
+
}
|
|
174
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: QueryBuilderFormlyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
175
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: QueryBuilderFormlyComponent, isStandalone: true, selector: "sa-query-builder-formly", providers: [], usesInheritance: true, ngImport: i0, template: "<div class=\"sa-query-builder-container\">\n <div class=\"query-builder-body\">\n @for(subField of field.fieldGroup; track $index) {\n <div class=\"row align-items-baseline\">\n @if ($index === 0) {\n <span class=\"where-text flex-1\">Where</span>\n }\n @for (subField of subField.fieldGroup; track $index) {\n @if(!!subField.props['hasDynamicType']){\n @switch (getFilterType(subField)) {\n @case ('STRING') {\n <formly-field [field]=\"subField\"></formly-field>\n }\n @case ('NUMBER') {\n <formly-field [field]=\"subField\"></formly-field>\n }\n @case ('BOOLEAN') {\n <formly-field [field]=\"subField\"></formly-field>\n }\n @case ('CURRENCY') {\n <formly-field [field]=\"subField\"></formly-field>\n }\n @case ('DATE') {\n\n }\n @case ('SELECT') {\n <formly-field [field]=\"createField(subField)\"></formly-field>\n }\n @default {\n <formly-field [field]=\"createField(subField)\"></formly-field>\n }\n }\n }@else{\n <formly-field\n class=\"col\"\n [field]=\"subField\"\n >\n </formly-field>\n }\n }\n @if(props?.['showCopyButton']){\n <sa-icon icon=\"copyOutlined\" class=\"copy-icon pointer\" (click)=\"copy($index)\"></sa-icon>\n }\n <sa-icon icon=\"deleteIcon\" class=\"delete-icon pointer\" (click)=\"remove($index)\"></sa-icon>\n </div>\n }\n \n <!-- Buttons -->\n <div class=\"rule-button-container\">\n <sa-button icon=\"add\" iconPosition=\"left\" text=\"Add filter\"\n (onClickEvent)=\"add()\"\n [state]=\"field?.fieldGroup?.length === (props?.['maxRows'] || 5) ? 'disabled' : 'default'\"\n type=\"outline\" size=\"medium\">\n </sa-button>\n <span class=\"filters-count\">({{field?.fieldGroup?.length}}/{{props?.['maxRows'] || 5}} filters)</span>\n @if(props?.['showResetButton']){\n <sa-button iconPosition=\"left\" text=\"Reset\"\n (onClickEvent)=\"reset()\"\n type=\"primary\" size=\"medium\">\n </sa-button>\n }\n </div> \n </div>\n</div>", styles: [".sa-query-builder-container{display:flex}.sa-query-builder-container .query-builder-body{display:flex;flex-direction:column;gap:var(--small-12px);width:-webkit-fill-available}.query-builder-body .row{display:flex;height:2.25rem;justify-content:center;align-items:center;flex:1 0 0;gap:var(--small-8px);width:-webkit-fill-available}.query-builder-form-wrapper{width:-webkit-fill-available}::ng-deep .query-builder-form-wrapper .sa-input-field.idle{border-radius:var(--small-4px);border:1px solid var(--grey-100, #EAECF0);background:var(--white, #FFF);height:2.438rem}::ng-deep .query-builder-form-wrapper .sa-input-container{height:3.438rem}::ng-deep .query-builder-form-wrapper .sa-input-container .disabled .sa-input-field input{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:13px;font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}.where-text{color:var(--text-medium-emphasis, #6D6979);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:var(--font-weight-500);line-height:var(--medium-20px);letter-spacing:.1px;width:80px}.flex-1{flex:1 1 0;min-width:80px}.flex-2{flex:2 1 0;min-width:120px}.flex-4{flex:4 1 0;min-width:200px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i1.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "component", type: ButtonComponent, selector: "sa-button", inputs: ["id", "type", "state", "size", "text", "ImagePath", "icon", "iconPosition", "href", "hrefTarget", "width", "isSubmit", "buttonIconSize", "showSpinner"], outputs: ["onClickEvent", "onMouseInEvent", "onMouseOutEvent"] }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatIconModule }] }); }
|
|
176
|
+
}
|
|
177
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: QueryBuilderFormlyComponent, decorators: [{
|
|
178
|
+
type: Component,
|
|
179
|
+
args: [{ selector: 'sa-query-builder-formly', standalone: true, providers: [], imports: [
|
|
180
|
+
CommonModule,
|
|
181
|
+
ReactiveFormsModule,
|
|
182
|
+
FormlyModule,
|
|
183
|
+
ButtonComponent,
|
|
184
|
+
IconComponent,
|
|
185
|
+
MatFormFieldModule,
|
|
186
|
+
MatSelectModule,
|
|
187
|
+
MatOptionModule,
|
|
188
|
+
MatIconModule
|
|
189
|
+
], template: "<div class=\"sa-query-builder-container\">\n <div class=\"query-builder-body\">\n @for(subField of field.fieldGroup; track $index) {\n <div class=\"row align-items-baseline\">\n @if ($index === 0) {\n <span class=\"where-text flex-1\">Where</span>\n }\n @for (subField of subField.fieldGroup; track $index) {\n @if(!!subField.props['hasDynamicType']){\n @switch (getFilterType(subField)) {\n @case ('STRING') {\n <formly-field [field]=\"subField\"></formly-field>\n }\n @case ('NUMBER') {\n <formly-field [field]=\"subField\"></formly-field>\n }\n @case ('BOOLEAN') {\n <formly-field [field]=\"subField\"></formly-field>\n }\n @case ('CURRENCY') {\n <formly-field [field]=\"subField\"></formly-field>\n }\n @case ('DATE') {\n\n }\n @case ('SELECT') {\n <formly-field [field]=\"createField(subField)\"></formly-field>\n }\n @default {\n <formly-field [field]=\"createField(subField)\"></formly-field>\n }\n }\n }@else{\n <formly-field\n class=\"col\"\n [field]=\"subField\"\n >\n </formly-field>\n }\n }\n @if(props?.['showCopyButton']){\n <sa-icon icon=\"copyOutlined\" class=\"copy-icon pointer\" (click)=\"copy($index)\"></sa-icon>\n }\n <sa-icon icon=\"deleteIcon\" class=\"delete-icon pointer\" (click)=\"remove($index)\"></sa-icon>\n </div>\n }\n \n <!-- Buttons -->\n <div class=\"rule-button-container\">\n <sa-button icon=\"add\" iconPosition=\"left\" text=\"Add filter\"\n (onClickEvent)=\"add()\"\n [state]=\"field?.fieldGroup?.length === (props?.['maxRows'] || 5) ? 'disabled' : 'default'\"\n type=\"outline\" size=\"medium\">\n </sa-button>\n <span class=\"filters-count\">({{field?.fieldGroup?.length}}/{{props?.['maxRows'] || 5}} filters)</span>\n @if(props?.['showResetButton']){\n <sa-button iconPosition=\"left\" text=\"Reset\"\n (onClickEvent)=\"reset()\"\n type=\"primary\" size=\"medium\">\n </sa-button>\n }\n </div> \n </div>\n</div>", styles: [".sa-query-builder-container{display:flex}.sa-query-builder-container .query-builder-body{display:flex;flex-direction:column;gap:var(--small-12px);width:-webkit-fill-available}.query-builder-body .row{display:flex;height:2.25rem;justify-content:center;align-items:center;flex:1 0 0;gap:var(--small-8px);width:-webkit-fill-available}.query-builder-form-wrapper{width:-webkit-fill-available}::ng-deep .query-builder-form-wrapper .sa-input-field.idle{border-radius:var(--small-4px);border:1px solid var(--grey-100, #EAECF0);background:var(--white, #FFF);height:2.438rem}::ng-deep .query-builder-form-wrapper .sa-input-container{height:3.438rem}::ng-deep .query-builder-form-wrapper .sa-input-container .disabled .sa-input-field input{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:13px;font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}.where-text{color:var(--text-medium-emphasis, #6D6979);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:var(--font-weight-500);line-height:var(--medium-20px);letter-spacing:.1px;width:80px}.flex-1{flex:1 1 0;min-width:80px}.flex-2{flex:2 1 0;min-width:120px}.flex-4{flex:4 1 0;min-width:200px}\n"] }]
|
|
190
|
+
}] });
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1mb3JtbHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9xdWVyeS1idWlsZGVyLWZvcm1seS9xdWVyeS1idWlsZGVyLWZvcm1seS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL3F1ZXJ5LWJ1aWxkZXItZm9ybWx5L3F1ZXJ5LWJ1aWxkZXItZm9ybWx5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBcUIsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBYSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQXFCdkQsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGNBQWM7SUFsQi9EOztRQXVFRSxr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SjtnQkFDRSxPQUFPO29CQUNMLFdBQVcsRUFBRSxhQUFhO29CQUMxQixVQUFVLEVBQUUsU0FBUztpQkFDdEIsQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRO1FBQ3ZFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLDJCQUEyQjtJQUN6QyxDQUFDOzhHQS9LVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixzRUFiM0IsRUFBRSxpRENuQmYseTRFQStETSw2eENEMUNGLFlBQVksOEJBQ1osbUJBQW1CLDhCQUNuQixZQUFZLHlIQUNaLGVBQWUsd1JBQ2YsYUFBYSxvTUFDYixrQkFBa0IsOEJBQ2xCLGVBQWUsOEJBQ2YsZUFBZSw4QkFDZixhQUFhOzsyRkFHSiwyQkFBMkI7a0JBbEJ2QyxTQUFTOytCQUNFLHlCQUF5QixjQUd2QixJQUFJLGFBQ0wsRUFBRSxXQUNKO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixhQUFhO3FCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkQXJyYXlUeXBlLCBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJzsgXG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldCwga2V5cyB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYS1xdWVyeS1idWlsZGVyLWZvcm1seScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS1idWlsZGVyLWZvcm1seS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXJ5LWJ1aWxkZXItZm9ybWx5LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogW10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3JtbHlNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnQsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSAgICBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBRdWVyeUJ1aWxkZXJGb3JtbHlDb21wb25lbnQgZXh0ZW5kcyBGaWVsZEFycmF5VHlwZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIFxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBcbiAgICBcbiAgfVxuICBcbiAgZ2V0Um93Q29uZGl0aW9uKGluZGV4OiBudW1iZXIpOiAnYW5kJyB8ICdvcicge1xuICAgICAgaWYgKGluZGV4ID09PSAwKSByZXR1cm4gJ2FuZCc7IFxuICAgICAgXG4gICAgICBjb25zdCBydWxlR3JvdXAgPSB0aGlzLmZvcm1Db250cm9sLmF0KGluZGV4KSBhcyBGb3JtR3JvdXA7XG4gICAgICByZXR1cm4gcnVsZUdyb3VwLmdldCgnY29uZGl0aW9uJyk/LnZhbHVlIHx8ICdhbmQnO1xuICAgIH1cblxuICAgIC8qKlxuICAgKiBTZXRzIHRoZSBjb25kaXRpb24gZm9yIGEgc3BlY2lmaWMgcm93XG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIHJvd1xuICAgKiBAcGFyYW0gY29uZGl0aW9uIFRoZSBjb25kaXRpb24gdG8gc2V0IChhbmQvb3IpXG4gICAqL1xuICBzZXRSb3dDb25kaXRpb24oaW5kZXg6IG51bWJlciwgY29uZGl0aW9uOiAnYW5kJyB8ICdvcicpOiB2b2lkIHtcbiAgICBpZiAoaW5kZXggPT09IDApIHJldHVybjsgLy8gRmlyc3Qgcm93IGRvZXNuJ3QgaGF2ZSBhIGNvbmRpdGlvblxuICAgIFxuICAgIGNvbnN0IHJ1bGVHcm91cCA9IHRoaXMuZm9ybUNvbnRyb2wuYXQoaW5kZXgpIGFzIEZvcm1Hcm91cDtcbiAgICBydWxlR3JvdXAuZ2V0KCdjb25kaXRpb24nKT8uc2V0VmFsdWUoY29uZGl0aW9uKTtcbiAgfVxuXG4gIGNvcHlSdWxlKCk6IHZvaWQge1xuICAgIFxuICB9XG5cbiAgY3JlYXRlRmllbGQoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKTogRm9ybWx5RmllbGRDb25maWcge1xuICAgIGlmKGZpZWxkLnR5cGUgPT09ICdkeW5hbWljLXR5cGUnIHx8IGZpZWxkLnR5cGUgPT09ICcnKSB7XG4gICAgICBmaWVsZC50eXBlID0gJ3NhLWlucHV0JztcbiAgICAgIGZpZWxkLnByb3BzLnR5cGUgPSAndGV4dCc7XG4gICAgICBmaWVsZC5wcm9wcy5wbGFjZWhvbGRlciA9ICdFbnRlci9TZWxlY3QnO1xuICAgIH1cbiAgICByZXR1cm4gZmllbGQ7XG4gIH1cblxuICBnZXRGaWx0ZXJUeXBlKHN1YkZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcGFyZW50VmFsdWUgPSBnZXQoc3ViRmllbGQsICdmb3JtQ29udHJvbC5wYXJlbnQudmFsdWUnKTtcbiAgICBpZiAoIXBhcmVudFZhbHVlKSByZXR1cm4gdW5kZWZpbmVkO1xuICBcbiAgICAvLyBMb29rIHRocm91Z2ggYWxsIGtleXMgb2YgdGhlIHBhcmVudCB2YWx1ZVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMocGFyZW50VmFsdWUpKSB7XG4gICAgICBjb25zdCB2YWwgPSBwYXJlbnRWYWx1ZVtrZXldO1xuICAgICAgaWYgKHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAnZmlsdGVyVHlwZScgaW4gdmFsKSB7XG4gICAgICAgIHJldHVybiB2YWwuZmlsdGVyVHlwZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIHJlc2V0KCk6IHZvaWQge1xuICAvLyAgIHRoaXMuZm9ybUNvbnRyb2wucmVzZXQoKTtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBEdXBsaWNhdGVzIHRoZSByb3cgYXQgdGhlIGdpdmVuIGluZGV4LlxuICAgKiBBIGRlZXDigJNjbG9uZSBvZiB0aGF0IHJvd+KAmXMgbW9kZWwgaXMgaW5zZXJ0ZWQgcmlnaHQgYWZ0ZXIgdGhlIG9yaWdpbmFsIHJvdy5cbiAgICovXG4gIGNvcGllZDogYm9vbGVhbiA9IGZhbHNlO1xuICBjb3B5KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCByb3dNb2RlbCA9IHRoaXMuZm9ybUNvbnRyb2wuYXQoaW5kZXgpPy52YWx1ZTtcbiAgICBpZiAoIXJvd01vZGVsKSByZXR1cm47XG4gIFxuICAgIC8vIERlZXAtY2xvbmUgbW9kZWxcbiAgICBjb25zdCBjbG9uZWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJvd01vZGVsKSk7XG4gIFxuICAgIC8vIEluc2VydCByb3cgYWZ0ZXIgdGhlIGN1cnJlbnQgb25lXG4gICAgdGhpcy5hZGQoaW5kZXggKyAxLCBjbG9uZWQpO1xuICBcbiAgICAvLyDwn5GHIEZvcmNlIEZvcm1seSB0byByZWZyZXNoIHRoZSBkeW5hbWljIGZpZWxkXG4gICAgY29uc3QgbmV3Um93ID0gdGhpcy5mb3JtQ29udHJvbC5hdChpbmRleCArIDEpO1xuICAgIGNvbnN0IGF0dHIgPSBuZXdSb3c/LmdldCgnYXR0cmlidXRlJyk/LnZhbHVlO1xuICBcbiAgICBpZiAoYXR0cikge1xuICAgICAgY29uc3QgYXR0ckN0cmwgPSBuZXdSb3c/LmdldCgnYXR0cmlidXRlJyk7XG4gICAgICBhdHRyQ3RybC5zZXRWYWx1ZShhdHRyQ3RybC52YWx1ZSk7XG4gICAgICAvLyBSZS10cmlnZ2VyIGZpZWxkIHR5cGUgcmVidWlsZCBmb3IgZmlsdGVyVmFsdWVcbiAgICAgIGNvbnN0IGZpbHRlclZhbHVlRmllbGQgPSB0aGlzLmZpZWxkLmZpZWxkR3JvdXBbaW5kZXggKyAxXS5maWVsZEdyb3VwXG4gICAgICAgIC5maW5kKGYgPT4gZi5rZXkgPT09ICdmaWx0ZXJWYWx1ZScpO1xuICBcbiAgICAgICAgaWYgKGZpbHRlclZhbHVlRmllbGQpIHtcbiAgICAgICAgICBjb25zdCB0eXBlTWFwID0ge1xuICAgICAgICAgICAgU0VMRUNUOiAnc2Etbmctc2VsZWN0JyxcbiAgICAgICAgICAgIFNUUklORzogJ3NhLWlucHV0JyxcbiAgICAgICAgICAgIE5VTUJFUjogJ3NhLWlucHV0JyxcbiAgICAgICAgICAgIERBVEU6ICdzYS1kYXRlLXBpY2tlcicsXG4gICAgICAgICAgICBDVVJSRU5DWTogJ3NhLWN1cnJlbmN5LWlucHV0JyxcbiAgICAgICAgICAgIEJPT0xFQU46ICdzYS1uZy1zZWxlY3QnLFxuICAgICAgICAgIH07XG4gICAgICAgIFxuICAgICAgICAgIGNvbnN0IG5ld1R5cGUgPSB0eXBlTWFwW2F0dHIuZmlsdGVyVHlwZV0gfHwgJ3NhLWlucHV0JztcbiAgICAgICAgICBmaWx0ZXJWYWx1ZUZpZWxkLnR5cGUgPSBuZXdUeXBlO1xuICAgICAgICAgIGZpbHRlclZhbHVlRmllbGQucHJvcHMgPSB7XG4gICAgICAgICAgICAuLi50aGlzLmNyZWF0ZUZpZWxkUHJvcHMoYXR0ci5maWx0ZXJUeXBlKSxcbiAgICAgICAgICAgIGhhc0R5bmFtaWNUeXBlOiB0cnVlLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLCAgLy8gaW5pdGlhbFxuICAgICAgICAgICAgYXR0cmlidXRlOiBhdHRyLFxuICAgICAgICAgIH07XG4gICAgICAgIFxuICAgICAgICAgIC8vIPCflIQgTm90aWZ5IEZvcm1seSBvZiB0eXBlIGNoYW5nZVxuICAgICAgICAgIGZpbHRlclZhbHVlRmllbGQub3B0aW9ucz8uZmllbGRDaGFuZ2VzPy5uZXh0KHtcbiAgICAgICAgICAgIHR5cGU6ICd0eXBlJyxcbiAgICAgICAgICAgIGZpZWxkOiBmaWx0ZXJWYWx1ZUZpZWxkLFxuICAgICAgICAgICAgdmFsdWU6IG5ld1R5cGUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICB9XG4gICAgICAgIFxuICAgIH1cbiAgfVxuICBjcmVhdGVGaWVsZFByb3BzKHR5cGU6IHN0cmluZykge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnU0VMRUNUJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCcsXG4gICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgIGJpbmRMYWJlbDogJ2xhYmVsJyxcbiAgICAgICAgICBiaW5kVmFsdWU6ICd2YWx1ZScsXG4gICAgICAgICAgYXBwZWFyYW5jZTogJ291dGxpbmUnLFxuICAgICAgICAgIGlzQ2xlYXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGlzU2VhcmNoYWJsZTogZmFsc2UsXG4gICAgICAgICAgY2xvc2VPbnNlbGVjdDogdHJ1ZSxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICBjYXNlICdTVFJJTkcnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgdmFsdWUnLFxuICAgICAgICAgIGFwcGVhcmFuY2U6ICdvdXRsaW5lJyxcbiAgICAgICAgICB0eXBlOiAndGV4dCdcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ05VTUJFUic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciB2YWx1ZScsXG4gICAgICAgICAgYXBwZWFyYW5jZTogJ291dGxpbmUnLFxuICAgICAgICAgIHR5cGU6ICdudW1iZXInXG4gICAgICAgIH07XG4gICAgICBjYXNlICdEQVRFJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBkYXRlJyxcbiAgICAgICAgICBhcHBlYXJhbmNlOiAnb3V0bGluZScsXG4gICAgICAgICAgdHlwZTogJ2RhdGUnXG4gICAgICAgIH07XG4gICAgICBjYXNlICdDVVJSRU5DWSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciB2YWx1ZScsXG4gICAgICAgICAgYXBwZWFyYW5jZTogJ291dGxpbmUnLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAnQk9PTEVBTic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciB2YWx1ZScsXG4gICAgICAgICAgYXBwZWFyYW5jZTogJ291dGxpbmUnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICB7IHZhbHVlOiB0cnVlLCBsYWJlbDogJ1RydWUnIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiBmYWxzZSwgbGFiZWw6ICdGYWxzZScgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGJpbmRMYWJlbDogJ2xhYmVsJyxcbiAgICAgICAgICBiaW5kVmFsdWU6ICd2YWx1ZScsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHZhbHVlJyxcbiAgICAgICAgICBhcHBlYXJhbmNlOiAnb3V0bGluZScsXG4gICAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5maWVsZC5maWVsZEdyb3VwLnNwbGljZSgwLCB0aGlzLmZpZWxkLmZpZWxkR3JvdXAubGVuZ3RoKTsgLy8gY2xlYXJcbiAgICB0aGlzLmFkZCgpOyAvLyBzdGFydCBmcmVzaCB3aXRoIG9uZSByb3dcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwic2EtcXVlcnktYnVpbGRlci1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItYm9keVwiPlxuICAgIEBmb3Ioc3ViRmllbGQgb2YgZmllbGQuZmllbGRHcm91cDsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWJhc2VsaW5lXCI+XG4gICAgICAgIEBpZiAoJGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3aGVyZS10ZXh0IGZsZXgtMVwiPldoZXJlPC9zcGFuPlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHN1YkZpZWxkIG9mIHN1YkZpZWxkLmZpZWxkR3JvdXA7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgIEBpZighIXN1YkZpZWxkLnByb3BzWydoYXNEeW5hbWljVHlwZSddKXtcbiAgICAgICAgICAgIEBzd2l0Y2ggKGdldEZpbHRlclR5cGUoc3ViRmllbGQpKSB7XG4gICAgICAgICAgICAgIEBjYXNlICgnU1RSSU5HJykge1xuICAgICAgICAgICAgICAgIDxmb3JtbHktZmllbGQgW2ZpZWxkXT1cInN1YkZpZWxkXCI+PC9mb3JtbHktZmllbGQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBjYXNlICgnTlVNQkVSJykge1xuICAgICAgICAgICAgICAgIDxmb3JtbHktZmllbGQgW2ZpZWxkXT1cInN1YkZpZWxkXCI+PC9mb3JtbHktZmllbGQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBjYXNlICgnQk9PTEVBTicpIHtcbiAgICAgICAgICAgICAgICAgIDxmb3JtbHktZmllbGQgW2ZpZWxkXT1cInN1YkZpZWxkXCI+PC9mb3JtbHktZmllbGQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ0NVUlJFTkNZJykge1xuICAgICAgICAgICAgICAgICAgICA8Zm9ybWx5LWZpZWxkIFtmaWVsZF09XCJzdWJGaWVsZFwiPjwvZm9ybWx5LWZpZWxkPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdEQVRFJykge1xuXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ1NFTEVDVCcpIHtcbiAgICAgICAgICAgICAgICAgIDxmb3JtbHktZmllbGQgW2ZpZWxkXT1cImNyZWF0ZUZpZWxkKHN1YkZpZWxkKVwiPjwvZm9ybWx5LWZpZWxkPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgPGZvcm1seS1maWVsZCBbZmllbGRdPVwiY3JlYXRlRmllbGQoc3ViRmllbGQpXCI+PC9mb3JtbHktZmllbGQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfUBlbHNle1xuICAgICAgICAgICAgPGZvcm1seS1maWVsZFxuICAgICAgICAgICAgY2xhc3M9XCJjb2xcIlxuICAgICAgICAgICAgW2ZpZWxkXT1cInN1YkZpZWxkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9mb3JtbHktZmllbGQ+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZihwcm9wcz8uWydzaG93Q29weUJ1dHRvbiddKXtcbiAgICAgICAgPHNhLWljb24gaWNvbj1cImNvcHlPdXRsaW5lZFwiIGNsYXNzPVwiY29weS1pY29uIHBvaW50ZXJcIiAoY2xpY2spPVwiY29weSgkaW5kZXgpXCI+PC9zYS1pY29uPlxuICAgICAgICB9XG4gICAgICAgIDxzYS1pY29uIGljb249XCJkZWxldGVJY29uXCIgY2xhc3M9XCJkZWxldGUtaWNvbiBwb2ludGVyXCIgKGNsaWNrKT1cInJlbW92ZSgkaW5kZXgpXCI+PC9zYS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICBcbiAgICA8IS0tIEJ1dHRvbnMgLS0+XG4gICAgPGRpdiBjbGFzcz1cInJ1bGUtYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgPHNhLWJ1dHRvbiBpY29uPVwiYWRkXCIgaWNvblBvc2l0aW9uPVwibGVmdFwiIHRleHQ9XCJBZGQgZmlsdGVyXCJcbiAgICAgIChvbkNsaWNrRXZlbnQpPVwiYWRkKClcIlxuICAgICAgW3N0YXRlXT1cImZpZWxkPy5maWVsZEdyb3VwPy5sZW5ndGggPT09IChwcm9wcz8uWydtYXhSb3dzJ10gfHwgNSkgPyAnZGlzYWJsZWQnIDogJ2RlZmF1bHQnXCJcbiAgICAgIHR5cGU9XCJvdXRsaW5lXCIgc2l6ZT1cIm1lZGl1bVwiPlxuICAgICAgPC9zYS1idXR0b24+XG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlcnMtY291bnRcIj4oe3tmaWVsZD8uZmllbGRHcm91cD8ubGVuZ3RofX0ve3twcm9wcz8uWydtYXhSb3dzJ10gfHwgNX19IGZpbHRlcnMpPC9zcGFuPlxuICAgICAgQGlmKHByb3BzPy5bJ3Nob3dSZXNldEJ1dHRvbiddKXtcbiAgICAgIDxzYS1idXR0b24gaWNvblBvc2l0aW9uPVwibGVmdFwiIHRleHQ9XCJSZXNldFwiXG4gICAgICAob25DbGlja0V2ZW50KT1cInJlc2V0KClcIlxuICAgICAgdHlwZT1cInByaW1hcnlcIiBzaXplPVwibWVkaXVtXCI+XG4gICAgICA8L3NhLWJ1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj4gICAgXG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -78,25 +78,25 @@ export class QueryBuilderTextareaDemoComponent {
|
|
|
78
78
|
console.log('Query changed:', query);
|
|
79
79
|
}
|
|
80
80
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: QueryBuilderTextareaDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
81
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: QueryBuilderTextareaDemoComponent, isStandalone: true, selector: "sa-query-builder-textarea-demo", ngImport: i0, template: `
|
|
82
|
-
<mat-card>
|
|
83
|
-
<mat-card-header>
|
|
84
|
-
<mat-card-title>Query Builder Textarea Demo</mat-card-title>
|
|
85
|
-
</mat-card-header>
|
|
86
|
-
<mat-card-content>
|
|
87
|
-
<sa-query-builder-textarea
|
|
88
|
-
[config]="queryConfig"
|
|
89
|
-
(queryChange)="onQueryChange($event)">
|
|
90
|
-
</sa-query-builder-textarea>
|
|
91
|
-
|
|
92
|
-
<mat-divider class="my-4"></mat-divider>
|
|
93
|
-
|
|
94
|
-
<div class="output-section">
|
|
95
|
-
<h3>Query Output</h3>
|
|
96
|
-
<pre>{{ currentQuery | json }}</pre>
|
|
97
|
-
</div>
|
|
98
|
-
</mat-card-content>
|
|
99
|
-
</mat-card>
|
|
81
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: QueryBuilderTextareaDemoComponent, isStandalone: true, selector: "sa-query-builder-textarea-demo", ngImport: i0, template: `
|
|
82
|
+
<mat-card>
|
|
83
|
+
<mat-card-header>
|
|
84
|
+
<mat-card-title>Query Builder Textarea Demo</mat-card-title>
|
|
85
|
+
</mat-card-header>
|
|
86
|
+
<mat-card-content>
|
|
87
|
+
<sa-query-builder-textarea
|
|
88
|
+
[config]="queryConfig"
|
|
89
|
+
(queryChange)="onQueryChange($event)">
|
|
90
|
+
</sa-query-builder-textarea>
|
|
91
|
+
|
|
92
|
+
<mat-divider class="my-4"></mat-divider>
|
|
93
|
+
|
|
94
|
+
<div class="output-section">
|
|
95
|
+
<h3>Query Output</h3>
|
|
96
|
+
<pre>{{ currentQuery | json }}</pre>
|
|
97
|
+
</div>
|
|
98
|
+
</mat-card-content>
|
|
99
|
+
</mat-card>
|
|
100
100
|
`, isInline: true, styles: [".my-4{margin-top:1rem;margin-bottom:1rem}.output-section{margin-top:1rem}pre{background-color:#f5f5f5;padding:1rem;border-radius:4px;overflow:auto;max-height:300px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.JsonPipe, name: "json" }, { kind: "component", type: QueryBuilderTextareaComponent, selector: "sa-query-builder-textarea", inputs: ["config"], outputs: ["queryChange", "suggestionSelected"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i2.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }] }); }
|
|
101
101
|
}
|
|
102
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: QueryBuilderTextareaDemoComponent, decorators: [{
|
|
@@ -106,25 +106,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
106
106
|
QueryBuilderTextareaComponent,
|
|
107
107
|
MatCardModule,
|
|
108
108
|
MatDividerModule
|
|
109
|
-
], template: `
|
|
110
|
-
<mat-card>
|
|
111
|
-
<mat-card-header>
|
|
112
|
-
<mat-card-title>Query Builder Textarea Demo</mat-card-title>
|
|
113
|
-
</mat-card-header>
|
|
114
|
-
<mat-card-content>
|
|
115
|
-
<sa-query-builder-textarea
|
|
116
|
-
[config]="queryConfig"
|
|
117
|
-
(queryChange)="onQueryChange($event)">
|
|
118
|
-
</sa-query-builder-textarea>
|
|
119
|
-
|
|
120
|
-
<mat-divider class="my-4"></mat-divider>
|
|
121
|
-
|
|
122
|
-
<div class="output-section">
|
|
123
|
-
<h3>Query Output</h3>
|
|
124
|
-
<pre>{{ currentQuery | json }}</pre>
|
|
125
|
-
</div>
|
|
126
|
-
</mat-card-content>
|
|
127
|
-
</mat-card>
|
|
109
|
+
], template: `
|
|
110
|
+
<mat-card>
|
|
111
|
+
<mat-card-header>
|
|
112
|
+
<mat-card-title>Query Builder Textarea Demo</mat-card-title>
|
|
113
|
+
</mat-card-header>
|
|
114
|
+
<mat-card-content>
|
|
115
|
+
<sa-query-builder-textarea
|
|
116
|
+
[config]="queryConfig"
|
|
117
|
+
(queryChange)="onQueryChange($event)">
|
|
118
|
+
</sa-query-builder-textarea>
|
|
119
|
+
|
|
120
|
+
<mat-divider class="my-4"></mat-divider>
|
|
121
|
+
|
|
122
|
+
<div class="output-section">
|
|
123
|
+
<h3>Query Output</h3>
|
|
124
|
+
<pre>{{ currentQuery | json }}</pre>
|
|
125
|
+
</div>
|
|
126
|
+
</mat-card-content>
|
|
127
|
+
</mat-card>
|
|
128
128
|
`, styles: [".my-4{margin-top:1rem;margin-bottom:1rem}.output-section{margin-top:1rem}pre{background-color:#f5f5f5;padding:1rem;border-radius:4px;overflow:auto;max-height:300px}\n"] }]
|
|
129
129
|
}] });
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci10ZXh0YXJlYS1kZW1vLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvcXVlcnktYnVpbGRlci10ZXh0YXJlYS9xdWVyeS1idWlsZGVyLXRleHRhcmVhLWRlbW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNkJBQTZCLEVBQTJDLE1BQU0sb0NBQW9DLENBQUM7Ozs7O0FBa0Q1SCxNQUFNLE9BQU8saUNBQWlDO0lBaEQ5QztRQWlERSxnQkFBVyxHQUF3QjtZQUNqQyxNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsR0FBRyxFQUFFLE1BQU07b0JBQ1gsS0FBSyxFQUFFLE1BQU07b0JBQ2IsSUFBSSxFQUFFLFFBQVE7aUJBQ2Y7Z0JBQ0Q7b0JBQ0UsR0FBRyxFQUFFLEtBQUs7b0JBQ1YsS0FBSyxFQUFFLEtBQUs7b0JBQ1osSUFBSSxFQUFFLFFBQVE7b0JBQ2QsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDO2lCQUN4RDtnQkFDRDtvQkFDRSxHQUFHLEVBQUUsT0FBTztvQkFDWixLQUFLLEVBQUUsT0FBTztvQkFDZCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQztpQkFDbkM7Z0JBQ0Q7b0JBQ0UsR0FBRyxFQUFFLFdBQVc7b0JBQ2hCLEtBQUssRUFBRSxZQUFZO29CQUNuQixJQUFJLEVBQUUsTUFBTTtvQkFDWixTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7aUJBQ3hEO2dCQUNEO29CQUNFLEdBQUcsRUFBRSxVQUFVO29CQUNmLEtBQUssRUFBRSxXQUFXO29CQUNsQixJQUFJLEVBQUUsU0FBUztpQkFDaEI7Z0JBQ0Q7b0JBQ0UsR0FBRyxFQUFFLFFBQVE7b0JBQ2IsS0FBSyxFQUFFLFFBQVE7b0JBQ2YsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsT0FBTyxFQUFFO3dCQUNQLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO3dCQUNwQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTt3QkFDeEMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7cUJBQ3ZDO2lCQUNGO2dCQUNEO29CQUNFLEdBQUcsRUFBRSxXQUFXO29CQUNoQixLQUFLLEVBQUUsV0FBVztvQkFDbEIsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsT0FBTyxFQUFFO3dCQUNQLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO3dCQUNwQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTt3QkFDdEMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7cUJBQ3ZDO2lCQUNGO2FBQ0Y7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQzFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUM1QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDMUIsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQzFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUM1QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDNUIsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7YUFDekM7WUFDRCxnQkFBZ0IsRUFBRSxLQUFLO1NBQ3hCLENBQUM7UUFFRixpQkFBWSxHQUE4QixJQUFJLENBQUM7S0FNaEQ7SUFKQyxhQUFhLENBQUMsS0FBeUI7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQXJFVSxpQ0FBaUM7a0dBQWpDLGlDQUFpQywwRkF2Q2xDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJULCtPQXhCQyxZQUFZLGtGQUNaLDZCQUE2Qix5SUFDN0IsYUFBYSxrWkFDYixnQkFBZ0I7OzJGQXlDUCxpQ0FBaUM7a0JBaEQ3QyxTQUFTOytCQUNFLGdDQUFnQyxjQUM5QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWiw2QkFBNkI7d0JBQzdCLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNqQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgUXVlcnlCdWlsZGVyVGV4dGFyZWFDb21wb25lbnQsIFRleHRhcmVhUXVlcnlHcm91cCwgVGV4dGFyZWFRdWVyeUNvbmZpZyB9IGZyb20gJy4vcXVlcnktYnVpbGRlci10ZXh0YXJlYS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYS1xdWVyeS1idWlsZGVyLXRleHRhcmVhLWRlbW8nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFF1ZXJ5QnVpbGRlclRleHRhcmVhQ29tcG9uZW50LFxuICAgIE1hdENhcmRNb2R1bGUsXG4gICAgTWF0RGl2aWRlck1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtYXQtY2FyZD5cbiAgICAgIDxtYXQtY2FyZC1oZWFkZXI+XG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5RdWVyeSBCdWlsZGVyIFRleHRhcmVhIERlbW88L21hdC1jYXJkLXRpdGxlPlxuICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPHNhLXF1ZXJ5LWJ1aWxkZXItdGV4dGFyZWFcbiAgICAgICAgICBbY29uZmlnXT1cInF1ZXJ5Q29uZmlnXCJcbiAgICAgICAgICAocXVlcnlDaGFuZ2UpPVwib25RdWVyeUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvc2EtcXVlcnktYnVpbGRlci10ZXh0YXJlYT5cblxuICAgICAgICA8bWF0LWRpdmlkZXIgY2xhc3M9XCJteS00XCI+PC9tYXQtZGl2aWRlcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwib3V0cHV0LXNlY3Rpb25cIj5cbiAgICAgICAgICA8aDM+UXVlcnkgT3V0cHV0PC9oMz5cbiAgICAgICAgICA8cHJlPnt7IGN1cnJlbnRRdWVyeSB8IGpzb24gfX08L3ByZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPC9tYXQtY2FyZD5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5teS00IHtcbiAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIH1cbiAgICBcbiAgICAub3V0cHV0LXNlY3Rpb24ge1xuICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICB9XG4gICAgXG4gICAgcHJlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5QnVpbGRlclRleHRhcmVhRGVtb0NvbXBvbmVudCB7XG4gIHF1ZXJ5Q29uZmlnOiBUZXh0YXJlYVF1ZXJ5Q29uZmlnID0ge1xuICAgIGZpZWxkczogW1xuICAgICAge1xuICAgICAgICBrZXk6ICduYW1lJyxcbiAgICAgICAgbGFiZWw6ICdOYW1lJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2FnZScsXG4gICAgICAgIGxhYmVsOiAnQWdlJyxcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIG9wZXJhdG9yczogWyc9JywgJyE9JywgJz4nLCAnPCcsICc+PScsICc8PScsICdiZXR3ZWVuJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2VtYWlsJyxcbiAgICAgICAgbGFiZWw6ICdFbWFpbCcsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBvcGVyYXRvcnM6IFsnPScsICchPScsICdjb250YWlucyddXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdjcmVhdGVkQXQnLFxuICAgICAgICBsYWJlbDogJ0NyZWF0ZWQgQXQnLFxuICAgICAgICB0eXBlOiAnZGF0ZScsXG4gICAgICAgIG9wZXJhdG9yczogWyc9JywgJyE9JywgJz4nLCAnPCcsICc+PScsICc8PScsICdiZXR3ZWVuJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2lzQWN0aXZlJyxcbiAgICAgICAgbGFiZWw6ICdJcyBBY3RpdmUnLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3N0YXR1cycsXG4gICAgICAgIGxhYmVsOiAnU3RhdHVzJyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICB7IGxhYmVsOiAnQWN0aXZlJywgdmFsdWU6ICdhY3RpdmUnIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ0luYWN0aXZlJywgdmFsdWU6ICdpbmFjdGl2ZScgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnUGVuZGluZycsIHZhbHVlOiAncGVuZGluZycgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdsaWZlY3ljbGUnLFxuICAgICAgICBsYWJlbDogJ0xpZmVjeWNsZScsXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgeyBsYWJlbDogJ0FjdGl2ZScsIHZhbHVlOiAnYWN0aXZlJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdBdCBSaXNrJywgdmFsdWU6ICdhdF9yaXNrJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdDaHVybmVkJywgdmFsdWU6ICdjaHVybmVkJyB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdLFxuICAgIG9wZXJhdG9yczogW1xuICAgICAgeyB2YWx1ZTogJz0nLCBsYWJlbDogJz0nIH0sXG4gICAgICB7IHZhbHVlOiAnIT0nLCBsYWJlbDogJyE9JyB9LFxuICAgICAgeyB2YWx1ZTogJz4nLCBsYWJlbDogJz4nIH0sXG4gICAgICB7IHZhbHVlOiAnPCcsIGxhYmVsOiAnPCcgfSxcbiAgICAgIHsgdmFsdWU6ICc+PScsIGxhYmVsOiAnPj0nIH0sXG4gICAgICB7IHZhbHVlOiAnPD0nLCBsYWJlbDogJzw9JyB9LFxuICAgICAgeyB2YWx1ZTogJ2NvbnRhaW5zJywgbGFiZWw6ICdjb250YWlucycgfVxuICAgIF0sXG4gICAgZGVmYXVsdENvbmRpdGlvbjogJ2FuZCdcbiAgfTtcblxuICBjdXJyZW50UXVlcnk6IFRleHRhcmVhUXVlcnlHcm91cCB8IG51bGwgPSBudWxsO1xuXG4gIG9uUXVlcnlDaGFuZ2UocXVlcnk6IFRleHRhcmVhUXVlcnlHcm91cCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFF1ZXJ5ID0gcXVlcnk7XG4gICAgY29uc29sZS5sb2coJ1F1ZXJ5IGNoYW5nZWQ6JywgcXVlcnkpO1xuICB9XG59XG4iXX0=
|