@es.framework/ng.ui.core 2.0.65 → 2.0.66
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 +3 -3
- package/attachments/README.md +3 -3
- package/base-crud/README.md +3 -3
- package/breadcrumb/README.md +3 -3
- package/checkbox/README.md +3 -3
- package/collapsible/README.md +3 -3
- package/color-picker/README.md +3 -3
- package/column-settings-popover/README.md +3 -3
- package/custom-switch/README.md +3 -3
- package/datepicker/README.md +3 -3
- package/deactivation-reason/README.md +3 -3
- package/excel-import/README.md +3 -3
- package/fesm2022/es.framework-ng.ui.core-attachments.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-attachments.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-base-crud.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-breadcrumb.mjs +108 -108
- package/fesm2022/es.framework-ng.ui.core-breadcrumb.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-checkbox.mjs +54 -54
- package/fesm2022/es.framework-ng.ui.core-checkbox.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-collapsible.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-color-picker.mjs +44 -44
- package/fesm2022/es.framework-ng.ui.core-color-picker.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-column-settings-popover.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-column-settings-popover.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-custom-switch.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-datepicker.mjs +178 -178
- package/fesm2022/es.framework-ng.ui.core-datepicker.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-deactivation-reason.mjs +46 -46
- package/fesm2022/es.framework-ng.ui.core-deactivation-reason.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-excel-import.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-filter-templates.mjs +624 -624
- package/fesm2022/es.framework-ng.ui.core-filter-templates.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-form-button.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-form-field.mjs +80 -80
- package/fesm2022/es.framework-ng.ui.core-form-field.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-form-template.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-avatar-image.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-avatar-label.mjs +44 -44
- package/fesm2022/es.framework-ng.ui.core-formly-avatar-label.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-button-selector.mjs +92 -92
- package/fesm2022/es.framework-ng.ui.core-formly-button-selector.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-button.mjs +24 -24
- package/fesm2022/es.framework-ng.ui.core-formly-button.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-presets.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-prime-icon-picker.mjs +366 -366
- package/fesm2022/es.framework-ng.ui.core-formly-prime-icon-picker.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-split-button.mjs +16 -16
- package/fesm2022/es.framework-ng.ui.core-formly-split-button.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-ui-all.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-ui.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-username-with-domain.mjs +16 -16
- package/fesm2022/es.framework-ng.ui.core-formly-username-with-domain.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-assets.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-autocomplete.mjs +38 -38
- package/fesm2022/es.framework-ng.ui.core-generic-autocomplete.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-button.mjs +8 -2
- package/fesm2022/es.framework-ng.ui.core-generic-button.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-card.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-card.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-crud-table.mjs +14 -3
- package/fesm2022/es.framework-ng.ui.core-generic-crud-table.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-dialog.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-dialog.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-errormessage.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-errormessage.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-formly-fields.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-formly-fields.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-listbox.mjs +64 -64
- package/fesm2022/es.framework-ng.ui.core-generic-listbox.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-loadingspinner.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-loadingspinner.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-report-tabs.mjs +68 -68
- package/fesm2022/es.framework-ng.ui.core-generic-report-tabs.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-report.mjs +19 -3
- package/fesm2022/es.framework-ng.ui.core-generic-report.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-search-advanced.mjs +442 -442
- package/fesm2022/es.framework-ng.ui.core-generic-search-advanced.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-search.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-search.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-selector.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-table.mjs +16 -8
- package/fesm2022/es.framework-ng.ui.core-generic-table.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-view.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-view.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-header-wrapper.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-header-wrapper.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-icon-picker.mjs +106 -106
- package/fesm2022/es.framework-ng.ui.core-icon-picker.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-input-switch.mjs +58 -58
- package/fesm2022/es.framework-ng.ui.core-input-switch.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-input-with-icon.mjs +26 -26
- package/fesm2022/es.framework-ng.ui.core-input-with-icon.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-input.mjs +64 -64
- package/fesm2022/es.framework-ng.ui.core-input.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-label-type.mjs +16 -16
- package/fesm2022/es.framework-ng.ui.core-label-type.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-loading-skeletons.mjs +22 -22
- package/fesm2022/es.framework-ng.ui.core-loading-skeletons.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-odata-query-builder.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-odata-query-builder.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-query-type.mjs +14 -14
- package/fesm2022/es.framework-ng.ui.core-query-type.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-radio.mjs +30 -30
- package/fesm2022/es.framework-ng.ui.core-radio.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-repeat.mjs +354 -354
- package/fesm2022/es.framework-ng.ui.core-repeat.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-select.mjs +84 -84
- package/fesm2022/es.framework-ng.ui.core-select.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-sidebar-cards.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-sidebar-cards.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-sidebar-toggles.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-sidebar-toggles.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-tabs.mjs +14 -14
- package/fesm2022/es.framework-ng.ui.core-tabs.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-tag-type.mjs +80 -80
- package/fesm2022/es.framework-ng.ui.core-tag-type.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-text-editor.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-textarea.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-wrappers.mjs +118 -118
- package/fesm2022/es.framework-ng.ui.core-wrappers.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core.mjs.map +1 -1
- package/filter-templates/README.md +3 -3
- package/form-button/README.md +3 -3
- package/form-field/README.md +3 -3
- package/form-template/README.md +3 -3
- package/formly-avatar-image/README.md +3 -3
- package/formly-avatar-label/README.md +3 -3
- package/formly-button/README.md +3 -3
- package/formly-button-selector/README.md +3 -3
- package/formly-presets/README.md +3 -3
- package/formly-prime-icon-picker/README.md +3 -3
- package/formly-split-button/README.md +3 -3
- package/formly-ui/README.md +3 -3
- package/formly-ui-all/README.md +3 -3
- package/formly-username-with-domain/README.md +3 -3
- package/generic-assets/README.md +3 -3
- package/generic-autocomplete/README.md +3 -3
- package/generic-button/README.md +3 -3
- package/generic-card/README.md +3 -3
- package/generic-crud-table/README.md +3 -3
- package/generic-dialog/README.md +3 -3
- package/generic-errormessage/README.md +3 -3
- package/generic-formly-fields/README.md +3 -3
- package/generic-loadingspinner/README.md +3 -3
- package/generic-report/README.md +3 -3
- package/generic-search/README.md +3 -3
- package/generic-search-advanced/README.md +3 -3
- package/generic-selector/README.md +3 -3
- package/generic-table/README.md +3 -3
- package/generic-view/README.md +3 -3
- package/header-wrapper/README.md +3 -3
- package/icon-picker/README.md +3 -3
- package/input/README.md +3 -3
- package/input-switch/README.md +3 -3
- package/input-with-icon/README.md +3 -3
- package/label-type/README.md +3 -3
- package/loading-skeletons/README.md +3 -3
- package/odata-query-builder/README.md +3 -3
- package/package.json +1 -1
- package/query-type/README.md +3 -3
- package/radio/README.md +3 -3
- package/repeat/README.md +3 -3
- package/select/README.md +3 -3
- package/sidebar-cards/README.md +3 -3
- package/sidebar-toggles/README.md +3 -3
- package/styles.css +0 -0
- package/tabs/README.md +3 -3
- package/tag-type/README.md +3 -3
- package/text-editor/README.md +3 -3
- package/textarea/README.md +3 -3
- package/types/es.framework-ng.ui.core-generic-button.d.ts +3 -1
- package/types/es.framework-ng.ui.core-generic-crud-table.d.ts +1 -0
- package/types/es.framework-ng.ui.core-generic-report.d.ts +1 -0
- package/types/es.framework-ng.ui.core-generic-table.d.ts +1 -1
- package/wrappers/README.md +3 -3
|
@@ -752,7 +752,7 @@ class GenericSearchAdvanced {
|
|
|
752
752
|
this.drawerVisible = false;
|
|
753
753
|
}
|
|
754
754
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericSearchAdvanced, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
755
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: GenericSearchAdvanced, isStandalone: true, selector: "lib-generic-search-advanced", inputs: { model: "model", fields: "fields", enableSelect: "enableSelect", enableGroup: "enableGroup", odataConfig: "odataConfig" }, outputs: { search: "search", paginationChange: "paginationChange", odataSearch: "odataSearch" }, ngImport: i0, template: "<div class=\"flex flex-wrap items-center gap-3 w-full\">\n <!-- Search Input with Icon -->\n <p-inputgroup class=\"w-full\">\n <input\n pInputText\n type=\"text\"\n [(ngModel)]=\"model['filter']\"\n placeholder=\"{{ 'SEARCH' | translate }}\"\n (keyup.enter)=\"onSubmit()\"\n />\n\n\n <p-inputgroup-addon>\n <p-button\n icon=\"pi pi-search\"\n severity=\"secondary\"\n (click)=\"onSubmit()\"\n ></p-button>\n </p-inputgroup-addon>\n <p-inputgroup-addon>\n <div class=\"relative inline-flex\">\n <p-button\n icon=\"pi pi-filter\"\n severity=\"secondary\"\n (onClick)=\"drawerVisible = true\">\n </p-button>\n\n @if (filterCount > 0) {\n <p-badge\n [value]=\"filterCount\"\n severity=\"warn\"\n size=\"small\"\n class=\"absolute -top-0 -right-0\">\n </p-badge>\n }\n </div>\n </p-inputgroup-addon>\n\n @if (model['filter'] || filterCount > 0) {\n <p-inputgroup-addon>\n <p-button\n icon=\"pi pi-times\"\n severity=\"danger\"\n (click)=\"model['filter']=''; onReset()\"\n ></p-button>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n\n\n </div>\n\n <!-- Drawer for Advanced Multi-field Search -->\n @if(drawerVisible){\n <p-drawer\n [(visible)]=\"drawerVisible\"\n position=\"right\"\n [styleClass]=\"'!w-full md:!w-80 lg:!w-[40rem] !h-full' \"\n [modal]=\"true\"\n [dismissible]=\"true\"\n styleClass=\"p-4 w-full max-w-md max-h-[90vh] flex flex-col\"\n >\n <!-- Entire form wrapper -->\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit(); drawerVisible=false\" class=\"flex flex-col flex-1\">\n <!-- Scrollable Form -->\n <div class=\"flex-1 overflow-auto\">\n <formly-form\n [form]=\"form\"\n [fields]=\"fields_\"\n [model]=\"model\"\n [options]=\"options\"\n >\n </formly-form>\n </div>\n\n </form>\n <!-- Action Buttons -->\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-end mt-2 space-x-2 flex-none\">\n <button\n type=\"submit\"\n pButton size=\"small\"\n (click)=\" onSubmit(); drawerVisible=false\"\n label=\"{{ 'SEARCH' | translate }}\">\n </button>\n <button\n type=\"button\"\n pButton\n size=\"small\"\n class=\"p-button-text\"\n (click)=\"onReset(); drawerVisible=false\"\n >\n {{ 'CLEAR' | translate }}\n </button>\n </div>\n </ng-template>\n </p-drawer>\n\n }\n", dependencies: [{ kind: "component", type: FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: InputIconModule }, { kind: "ngmodule", type: IconFieldModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: DrawerModule }, { kind: "component", type: i5.Drawer, selector: "p-drawer", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "closeButtonProps", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen", "header", "maskStyle", "closable"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i6.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputGroupAddonModule }, { kind: "component", type: i7.InputGroupAddon, selector: "p-inputgroup-addon, p-inputGroupAddon", inputs: ["style", "styleClass"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i8.Badge, selector: "p-badge", inputs: ["styleClass", "badgeSize", "size", "severity", "value", "badgeDisabled"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
755
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: GenericSearchAdvanced, isStandalone: true, selector: "lib-generic-search-advanced", inputs: { model: "model", fields: "fields", enableSelect: "enableSelect", enableGroup: "enableGroup", odataConfig: "odataConfig" }, outputs: { search: "search", paginationChange: "paginationChange", odataSearch: "odataSearch" }, ngImport: i0, template: "<div class=\"flex flex-wrap items-center gap-3 w-full\">\r\n <!-- Search Input with Icon -->\r\n <p-inputgroup class=\"w-full\">\r\n <input\r\n pInputText\r\n type=\"text\"\r\n [(ngModel)]=\"model['filter']\"\r\n placeholder=\"{{ 'SEARCH' | translate }}\"\r\n (keyup.enter)=\"onSubmit()\"\r\n />\r\n\r\n\r\n <p-inputgroup-addon>\r\n <p-button\r\n icon=\"pi pi-search\"\r\n severity=\"secondary\"\r\n (click)=\"onSubmit()\"\r\n ></p-button>\r\n </p-inputgroup-addon>\r\n <p-inputgroup-addon>\r\n <div class=\"relative inline-flex\">\r\n <p-button\r\n icon=\"pi pi-filter\"\r\n severity=\"secondary\"\r\n (onClick)=\"drawerVisible = true\">\r\n </p-button>\r\n\r\n @if (filterCount > 0) {\r\n <p-badge\r\n [value]=\"filterCount\"\r\n severity=\"warn\"\r\n size=\"small\"\r\n class=\"absolute -top-0 -right-0\">\r\n </p-badge>\r\n }\r\n </div>\r\n </p-inputgroup-addon>\r\n\r\n @if (model['filter'] || filterCount > 0) {\r\n <p-inputgroup-addon>\r\n <p-button\r\n icon=\"pi pi-times\"\r\n severity=\"danger\"\r\n (click)=\"model['filter']=''; onReset()\"\r\n ></p-button>\r\n </p-inputgroup-addon>\r\n }\r\n </p-inputgroup>\r\n\r\n\r\n </div>\r\n\r\n <!-- Drawer for Advanced Multi-field Search -->\r\n @if(drawerVisible){\r\n <p-drawer\r\n [(visible)]=\"drawerVisible\"\r\n position=\"right\"\r\n [styleClass]=\"'!w-full md:!w-80 lg:!w-[40rem] !h-full' \"\r\n [modal]=\"true\"\r\n [dismissible]=\"true\"\r\n styleClass=\"p-4 w-full max-w-md max-h-[90vh] flex flex-col\"\r\n >\r\n <!-- Entire form wrapper -->\r\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit(); drawerVisible=false\" class=\"flex flex-col flex-1\">\r\n <!-- Scrollable Form -->\r\n <div class=\"flex-1 overflow-auto\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"fields_\"\r\n [model]=\"model\"\r\n [options]=\"options\"\r\n >\r\n </formly-form>\r\n </div>\r\n\r\n </form>\r\n <!-- Action Buttons -->\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"flex justify-end mt-2 space-x-2 flex-none\">\r\n <button\r\n type=\"submit\"\r\n pButton size=\"small\"\r\n (click)=\" onSubmit(); drawerVisible=false\"\r\n label=\"{{ 'SEARCH' | translate }}\">\r\n </button>\r\n <button\r\n type=\"button\"\r\n pButton\r\n size=\"small\"\r\n class=\"p-button-text\"\r\n (click)=\"onReset(); drawerVisible=false\"\r\n >\r\n {{ 'CLEAR' | translate }}\r\n </button>\r\n </div>\r\n </ng-template>\r\n </p-drawer>\r\n\r\n }\r\n", dependencies: [{ kind: "component", type: FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: InputIconModule }, { kind: "ngmodule", type: IconFieldModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: DrawerModule }, { kind: "component", type: i5.Drawer, selector: "p-drawer", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "closeButtonProps", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen", "header", "maskStyle", "closable"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i6.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputGroupAddonModule }, { kind: "component", type: i7.InputGroupAddon, selector: "p-inputgroup-addon, p-inputGroupAddon", inputs: ["style", "styleClass"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i8.Badge, selector: "p-badge", inputs: ["styleClass", "badgeSize", "size", "severity", "value", "badgeDisabled"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
756
756
|
}
|
|
757
757
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericSearchAdvanced, decorators: [{
|
|
758
758
|
type: Component,
|
|
@@ -770,7 +770,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
770
770
|
InputGroupModule,
|
|
771
771
|
InputGroupAddonModule,
|
|
772
772
|
BadgeModule
|
|
773
|
-
], template: "<div class=\"flex flex-wrap items-center gap-3 w-full\">\n <!-- Search Input with Icon -->\n <p-inputgroup class=\"w-full\">\n <input\n pInputText\n type=\"text\"\n [(ngModel)]=\"model['filter']\"\n placeholder=\"{{ 'SEARCH' | translate }}\"\n (keyup.enter)=\"onSubmit()\"\n />\n\n\n <p-inputgroup-addon>\n <p-button\n icon=\"pi pi-search\"\n severity=\"secondary\"\n (click)=\"onSubmit()\"\n ></p-button>\n </p-inputgroup-addon>\n <p-inputgroup-addon>\n <div class=\"relative inline-flex\">\n <p-button\n icon=\"pi pi-filter\"\n severity=\"secondary\"\n (onClick)=\"drawerVisible = true\">\n </p-button>\n\n @if (filterCount > 0) {\n <p-badge\n [value]=\"filterCount\"\n severity=\"warn\"\n size=\"small\"\n class=\"absolute -top-0 -right-0\">\n </p-badge>\n }\n </div>\n </p-inputgroup-addon>\n\n @if (model['filter'] || filterCount > 0) {\n <p-inputgroup-addon>\n <p-button\n icon=\"pi pi-times\"\n severity=\"danger\"\n (click)=\"model['filter']=''; onReset()\"\n ></p-button>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n\n\n </div>\n\n <!-- Drawer for Advanced Multi-field Search -->\n @if(drawerVisible){\n <p-drawer\n [(visible)]=\"drawerVisible\"\n position=\"right\"\n [styleClass]=\"'!w-full md:!w-80 lg:!w-[40rem] !h-full' \"\n [modal]=\"true\"\n [dismissible]=\"true\"\n styleClass=\"p-4 w-full max-w-md max-h-[90vh] flex flex-col\"\n >\n <!-- Entire form wrapper -->\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit(); drawerVisible=false\" class=\"flex flex-col flex-1\">\n <!-- Scrollable Form -->\n <div class=\"flex-1 overflow-auto\">\n <formly-form\n [form]=\"form\"\n [fields]=\"fields_\"\n [model]=\"model\"\n [options]=\"options\"\n >\n </formly-form>\n </div>\n\n </form>\n <!-- Action Buttons -->\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-end mt-2 space-x-2 flex-none\">\n <button\n type=\"submit\"\n pButton size=\"small\"\n (click)=\" onSubmit(); drawerVisible=false\"\n label=\"{{ 'SEARCH' | translate }}\">\n </button>\n <button\n type=\"button\"\n pButton\n size=\"small\"\n class=\"p-button-text\"\n (click)=\"onReset(); drawerVisible=false\"\n >\n {{ 'CLEAR' | translate }}\n </button>\n </div>\n </ng-template>\n </p-drawer>\n\n }\n" }]
|
|
773
|
+
], template: "<div class=\"flex flex-wrap items-center gap-3 w-full\">\r\n <!-- Search Input with Icon -->\r\n <p-inputgroup class=\"w-full\">\r\n <input\r\n pInputText\r\n type=\"text\"\r\n [(ngModel)]=\"model['filter']\"\r\n placeholder=\"{{ 'SEARCH' | translate }}\"\r\n (keyup.enter)=\"onSubmit()\"\r\n />\r\n\r\n\r\n <p-inputgroup-addon>\r\n <p-button\r\n icon=\"pi pi-search\"\r\n severity=\"secondary\"\r\n (click)=\"onSubmit()\"\r\n ></p-button>\r\n </p-inputgroup-addon>\r\n <p-inputgroup-addon>\r\n <div class=\"relative inline-flex\">\r\n <p-button\r\n icon=\"pi pi-filter\"\r\n severity=\"secondary\"\r\n (onClick)=\"drawerVisible = true\">\r\n </p-button>\r\n\r\n @if (filterCount > 0) {\r\n <p-badge\r\n [value]=\"filterCount\"\r\n severity=\"warn\"\r\n size=\"small\"\r\n class=\"absolute -top-0 -right-0\">\r\n </p-badge>\r\n }\r\n </div>\r\n </p-inputgroup-addon>\r\n\r\n @if (model['filter'] || filterCount > 0) {\r\n <p-inputgroup-addon>\r\n <p-button\r\n icon=\"pi pi-times\"\r\n severity=\"danger\"\r\n (click)=\"model['filter']=''; onReset()\"\r\n ></p-button>\r\n </p-inputgroup-addon>\r\n }\r\n </p-inputgroup>\r\n\r\n\r\n </div>\r\n\r\n <!-- Drawer for Advanced Multi-field Search -->\r\n @if(drawerVisible){\r\n <p-drawer\r\n [(visible)]=\"drawerVisible\"\r\n position=\"right\"\r\n [styleClass]=\"'!w-full md:!w-80 lg:!w-[40rem] !h-full' \"\r\n [modal]=\"true\"\r\n [dismissible]=\"true\"\r\n styleClass=\"p-4 w-full max-w-md max-h-[90vh] flex flex-col\"\r\n >\r\n <!-- Entire form wrapper -->\r\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit(); drawerVisible=false\" class=\"flex flex-col flex-1\">\r\n <!-- Scrollable Form -->\r\n <div class=\"flex-1 overflow-auto\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"fields_\"\r\n [model]=\"model\"\r\n [options]=\"options\"\r\n >\r\n </formly-form>\r\n </div>\r\n\r\n </form>\r\n <!-- Action Buttons -->\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"flex justify-end mt-2 space-x-2 flex-none\">\r\n <button\r\n type=\"submit\"\r\n pButton size=\"small\"\r\n (click)=\" onSubmit(); drawerVisible=false\"\r\n label=\"{{ 'SEARCH' | translate }}\">\r\n </button>\r\n <button\r\n type=\"button\"\r\n pButton\r\n size=\"small\"\r\n class=\"p-button-text\"\r\n (click)=\"onReset(); drawerVisible=false\"\r\n >\r\n {{ 'CLEAR' | translate }}\r\n </button>\r\n </div>\r\n </ng-template>\r\n </p-drawer>\r\n\r\n }\r\n" }]
|
|
774
774
|
}], propDecorators: { search: [{
|
|
775
775
|
type: Output
|
|
776
776
|
}], paginationChange: [{
|
|
@@ -886,170 +886,170 @@ class SortBuilderComponent extends FieldType {
|
|
|
886
886
|
return availableFields.length > 0 ? availableFields[0].key : '';
|
|
887
887
|
}
|
|
888
888
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SortBuilderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
889
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: SortBuilderComponent, isStandalone: true, selector: "formly-sort-builder", usesInheritance: true, ngImport: i0, template: `<div class="sort-builder p-3 border-round border-1 surface-border">
|
|
890
|
-
<div class="mb-6">
|
|
891
|
-
<h5 class="text-lg font-semibold text-gray-900 mb-2">{{ props.label || ('SORTING' | translate) }}</h5>
|
|
892
|
-
<p class="text-gray-600 text-sm">{{ ('PRIORITY_HINT' | translate) }}</p>
|
|
893
|
-
</div>
|
|
894
|
-
|
|
895
|
-
<!-- Sort List -->
|
|
896
|
-
@if (sorts.length > 0) {
|
|
897
|
-
<div class="sort-list space-y-2 mb-3">
|
|
898
|
-
@for (sort of sorts; track sort; let i = $index; let isFirst = $first; let isLast = $last) {
|
|
899
|
-
<div
|
|
900
|
-
class="sort-row p-2 border-round surface-card"
|
|
901
|
-
pDraggable
|
|
902
|
-
pDroppable
|
|
903
|
-
(onDragStart)="onDragStart(i)"
|
|
904
|
-
(onDrop)="onDrop($event, i)"
|
|
905
|
-
[ngClass]="{'border-left-3 border-primary': isFirst, 'border-left-3 border-200': !isFirst}">
|
|
906
|
-
<div class="grid grid-cols-4 align-items-center gap-2">
|
|
907
|
-
<!-- Drag Handle -->
|
|
908
|
-
<div class="col-span-2 flex">
|
|
909
|
-
<button
|
|
910
|
-
pButton
|
|
911
|
-
icon="pi pi-bars"
|
|
912
|
-
type="button"
|
|
913
|
-
class="p-button-text p-button-plain cursor-move"
|
|
914
|
-
[pTooltip]="'DRAG_TOOLTIP' | translate"
|
|
915
|
-
tooltipPosition="top">
|
|
916
|
-
</button>
|
|
917
|
-
<p-select
|
|
918
|
-
[options]="getAvailableFields(sort.field)"
|
|
919
|
-
optionLabel="label"
|
|
920
|
-
optionValue="key"
|
|
921
|
-
[(ngModel)]="sort.field"
|
|
922
|
-
(onChange)="updateValue()"
|
|
923
|
-
[placeholder]="'SELECT_FIELD_SORT' | translate"
|
|
924
|
-
[showClear]="true"
|
|
925
|
-
appendTo="body"
|
|
926
|
-
styleClass="w-full">
|
|
927
|
-
</p-select>
|
|
928
|
-
</div>
|
|
929
|
-
<!-- Direction Selector -->
|
|
930
|
-
<div class="col-fixed">
|
|
931
|
-
<p-select
|
|
932
|
-
[options]="directionOptions"
|
|
933
|
-
[(ngModel)]="sort.direction"
|
|
934
|
-
(onChange)="updateValue()"
|
|
935
|
-
[placeholder]="'DIRECTION' | translate"
|
|
936
|
-
appendTo="body"
|
|
937
|
-
styleClass="w-full">
|
|
938
|
-
</p-select>
|
|
939
|
-
</div>
|
|
940
|
-
<!-- Actions -->
|
|
941
|
-
<div class="col-fixed flex gap-2" style="justify-content: flex-end;">
|
|
942
|
-
<!-- Move Up -->
|
|
943
|
-
@if (!isFirst) {
|
|
944
|
-
<button
|
|
945
|
-
outlined
|
|
946
|
-
style="width: var(--p-button-icon-only-width);"
|
|
947
|
-
pButton
|
|
948
|
-
icon="pi pi-arrow-up"
|
|
949
|
-
type="button"
|
|
950
|
-
class="p-button-sm p-button-success"
|
|
951
|
-
(click)="moveSort(i, i - 1)"
|
|
952
|
-
[pTooltip]="'MOVE_UP' | translate"
|
|
953
|
-
tooltipPosition="top">
|
|
954
|
-
</button>
|
|
955
|
-
}
|
|
956
|
-
<!-- Move Down -->
|
|
957
|
-
@if (!isLast) {
|
|
958
|
-
<button
|
|
959
|
-
outlined
|
|
960
|
-
style="width: var(--p-button-icon-only-width);"
|
|
961
|
-
pButton
|
|
962
|
-
icon="pi pi-arrow-down"
|
|
963
|
-
type="button"
|
|
964
|
-
class="p-button-sm p-button-success"
|
|
965
|
-
(click)="moveSort(i, i + 1)"
|
|
966
|
-
[pTooltip]="'MOVE_DOWN' | translate"
|
|
967
|
-
tooltipPosition="top">
|
|
968
|
-
</button>
|
|
969
|
-
}
|
|
970
|
-
<!-- Remove -->
|
|
971
|
-
<button
|
|
972
|
-
style="width: var(--p-button-icon-only-width);"
|
|
973
|
-
pButton
|
|
974
|
-
icon="pi pi-times"
|
|
975
|
-
type="button"
|
|
976
|
-
class="p-button-sm p-button-danger"
|
|
977
|
-
(click)="removeSort(i)"
|
|
978
|
-
[pTooltip]="'REMOVE_SORT' | translate"
|
|
979
|
-
tooltipPosition="top">
|
|
980
|
-
</button>
|
|
981
|
-
</div>
|
|
982
|
-
</div>
|
|
983
|
-
</div>
|
|
984
|
-
}
|
|
985
|
-
</div>
|
|
986
|
-
}
|
|
987
|
-
|
|
988
|
-
<!-- Empty State -->
|
|
989
|
-
@if (sorts.length === 0) {
|
|
990
|
-
<div class="empty-state text-center p-4 border-round surface-section">
|
|
991
|
-
<i class="pi pi-sort-alt text-4xl text-500 mb-3"></i>
|
|
992
|
-
<p class="text-500 mb-3">{{ 'NO_SORT_RULES' | translate }}</p>
|
|
993
|
-
<p class="text-400 text-sm mb-3">{{ 'DEFAULT_ORDER' | translate }}</p>
|
|
994
|
-
</div>
|
|
995
|
-
}
|
|
996
|
-
|
|
997
|
-
<!-- Actions -->
|
|
998
|
-
<div class="flex gap-2">
|
|
999
|
-
<button
|
|
1000
|
-
pButton
|
|
1001
|
-
icon="pi pi-sort-alt"
|
|
1002
|
-
[label]="'ADD_SORT' | translate"
|
|
1003
|
-
type="button"
|
|
1004
|
-
class="p-button-outlined flex-1"
|
|
1005
|
-
(click)="addSort()">
|
|
1006
|
-
</button>
|
|
1007
|
-
|
|
1008
|
-
@if (sorts.length > 1) {
|
|
1009
|
-
<button
|
|
1010
|
-
pButton
|
|
1011
|
-
icon="pi pi-random"
|
|
1012
|
-
[label]="'REVERSE_ORDER' | translate"
|
|
1013
|
-
type="button"
|
|
1014
|
-
class="p-button-outlined"
|
|
1015
|
-
(click)="reverseSorts()"
|
|
1016
|
-
[pTooltip]="'REVERSE_TOOLTIP' | translate"
|
|
1017
|
-
tooltipPosition="top">
|
|
1018
|
-
</button>
|
|
1019
|
-
}
|
|
1020
|
-
|
|
1021
|
-
@if (sorts.length > 0) {
|
|
1022
|
-
<button
|
|
1023
|
-
pButton
|
|
1024
|
-
icon="pi pi-trash"
|
|
1025
|
-
type="button"
|
|
1026
|
-
class="p-button-outlined p-button-danger"
|
|
1027
|
-
(click)="clearAll()"
|
|
1028
|
-
[pTooltip]="'CLEAR_ALL_TOOLTIP' | translate"
|
|
1029
|
-
tooltipPosition="top">
|
|
1030
|
-
</button>
|
|
1031
|
-
}
|
|
1032
|
-
</div>
|
|
1033
|
-
|
|
1034
|
-
<!-- Summary -->
|
|
1035
|
-
@if (sorts.length > 0) {
|
|
1036
|
-
<div class="sort-summary mt-3 p-2 border-round surface-ground">
|
|
1037
|
-
<h5 class="mt-0 mb-2 text-sm">{{ 'SORT_SUMMARY' | translate }}:</h5>
|
|
1038
|
-
<div class="text-sm text-500">
|
|
1039
|
-
@for (sort of sorts; track sort; let i = $index) {
|
|
1040
|
-
<span class="sort-step">
|
|
1041
|
-
<span class="font-semibold">{{ getFieldLabel(sort.field) }}</span>
|
|
1042
|
-
<span class="direction-badge" [ngClass]="sort.direction === 'asc' ? 'bg-green-100 text-green-800' : 'bg-red-100 text-red-800'">
|
|
1043
|
-
{{ sort.direction === 'asc' ? '▲' : '▼' }}
|
|
1044
|
-
</span>
|
|
1045
|
-
@if (!isLast) {
|
|
1046
|
-
<span> {{ 'THEN' | translate }} </span>
|
|
1047
|
-
}
|
|
1048
|
-
</span>
|
|
1049
|
-
}
|
|
1050
|
-
</div>
|
|
1051
|
-
</div>
|
|
1052
|
-
}
|
|
889
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: SortBuilderComponent, isStandalone: true, selector: "formly-sort-builder", usesInheritance: true, ngImport: i0, template: `<div class="sort-builder p-3 border-round border-1 surface-border">
|
|
890
|
+
<div class="mb-6">
|
|
891
|
+
<h5 class="text-lg font-semibold text-gray-900 mb-2">{{ props.label || ('SORTING' | translate) }}</h5>
|
|
892
|
+
<p class="text-gray-600 text-sm">{{ ('PRIORITY_HINT' | translate) }}</p>
|
|
893
|
+
</div>
|
|
894
|
+
|
|
895
|
+
<!-- Sort List -->
|
|
896
|
+
@if (sorts.length > 0) {
|
|
897
|
+
<div class="sort-list space-y-2 mb-3">
|
|
898
|
+
@for (sort of sorts; track sort; let i = $index; let isFirst = $first; let isLast = $last) {
|
|
899
|
+
<div
|
|
900
|
+
class="sort-row p-2 border-round surface-card"
|
|
901
|
+
pDraggable
|
|
902
|
+
pDroppable
|
|
903
|
+
(onDragStart)="onDragStart(i)"
|
|
904
|
+
(onDrop)="onDrop($event, i)"
|
|
905
|
+
[ngClass]="{'border-left-3 border-primary': isFirst, 'border-left-3 border-200': !isFirst}">
|
|
906
|
+
<div class="grid grid-cols-4 align-items-center gap-2">
|
|
907
|
+
<!-- Drag Handle -->
|
|
908
|
+
<div class="col-span-2 flex">
|
|
909
|
+
<button
|
|
910
|
+
pButton
|
|
911
|
+
icon="pi pi-bars"
|
|
912
|
+
type="button"
|
|
913
|
+
class="p-button-text p-button-plain cursor-move"
|
|
914
|
+
[pTooltip]="'DRAG_TOOLTIP' | translate"
|
|
915
|
+
tooltipPosition="top">
|
|
916
|
+
</button>
|
|
917
|
+
<p-select
|
|
918
|
+
[options]="getAvailableFields(sort.field)"
|
|
919
|
+
optionLabel="label"
|
|
920
|
+
optionValue="key"
|
|
921
|
+
[(ngModel)]="sort.field"
|
|
922
|
+
(onChange)="updateValue()"
|
|
923
|
+
[placeholder]="'SELECT_FIELD_SORT' | translate"
|
|
924
|
+
[showClear]="true"
|
|
925
|
+
appendTo="body"
|
|
926
|
+
styleClass="w-full">
|
|
927
|
+
</p-select>
|
|
928
|
+
</div>
|
|
929
|
+
<!-- Direction Selector -->
|
|
930
|
+
<div class="col-fixed">
|
|
931
|
+
<p-select
|
|
932
|
+
[options]="directionOptions"
|
|
933
|
+
[(ngModel)]="sort.direction"
|
|
934
|
+
(onChange)="updateValue()"
|
|
935
|
+
[placeholder]="'DIRECTION' | translate"
|
|
936
|
+
appendTo="body"
|
|
937
|
+
styleClass="w-full">
|
|
938
|
+
</p-select>
|
|
939
|
+
</div>
|
|
940
|
+
<!-- Actions -->
|
|
941
|
+
<div class="col-fixed flex gap-2" style="justify-content: flex-end;">
|
|
942
|
+
<!-- Move Up -->
|
|
943
|
+
@if (!isFirst) {
|
|
944
|
+
<button
|
|
945
|
+
outlined
|
|
946
|
+
style="width: var(--p-button-icon-only-width);"
|
|
947
|
+
pButton
|
|
948
|
+
icon="pi pi-arrow-up"
|
|
949
|
+
type="button"
|
|
950
|
+
class="p-button-sm p-button-success"
|
|
951
|
+
(click)="moveSort(i, i - 1)"
|
|
952
|
+
[pTooltip]="'MOVE_UP' | translate"
|
|
953
|
+
tooltipPosition="top">
|
|
954
|
+
</button>
|
|
955
|
+
}
|
|
956
|
+
<!-- Move Down -->
|
|
957
|
+
@if (!isLast) {
|
|
958
|
+
<button
|
|
959
|
+
outlined
|
|
960
|
+
style="width: var(--p-button-icon-only-width);"
|
|
961
|
+
pButton
|
|
962
|
+
icon="pi pi-arrow-down"
|
|
963
|
+
type="button"
|
|
964
|
+
class="p-button-sm p-button-success"
|
|
965
|
+
(click)="moveSort(i, i + 1)"
|
|
966
|
+
[pTooltip]="'MOVE_DOWN' | translate"
|
|
967
|
+
tooltipPosition="top">
|
|
968
|
+
</button>
|
|
969
|
+
}
|
|
970
|
+
<!-- Remove -->
|
|
971
|
+
<button
|
|
972
|
+
style="width: var(--p-button-icon-only-width);"
|
|
973
|
+
pButton
|
|
974
|
+
icon="pi pi-times"
|
|
975
|
+
type="button"
|
|
976
|
+
class="p-button-sm p-button-danger"
|
|
977
|
+
(click)="removeSort(i)"
|
|
978
|
+
[pTooltip]="'REMOVE_SORT' | translate"
|
|
979
|
+
tooltipPosition="top">
|
|
980
|
+
</button>
|
|
981
|
+
</div>
|
|
982
|
+
</div>
|
|
983
|
+
</div>
|
|
984
|
+
}
|
|
985
|
+
</div>
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
<!-- Empty State -->
|
|
989
|
+
@if (sorts.length === 0) {
|
|
990
|
+
<div class="empty-state text-center p-4 border-round surface-section">
|
|
991
|
+
<i class="pi pi-sort-alt text-4xl text-500 mb-3"></i>
|
|
992
|
+
<p class="text-500 mb-3">{{ 'NO_SORT_RULES' | translate }}</p>
|
|
993
|
+
<p class="text-400 text-sm mb-3">{{ 'DEFAULT_ORDER' | translate }}</p>
|
|
994
|
+
</div>
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
<!-- Actions -->
|
|
998
|
+
<div class="flex gap-2">
|
|
999
|
+
<button
|
|
1000
|
+
pButton
|
|
1001
|
+
icon="pi pi-sort-alt"
|
|
1002
|
+
[label]="'ADD_SORT' | translate"
|
|
1003
|
+
type="button"
|
|
1004
|
+
class="p-button-outlined flex-1"
|
|
1005
|
+
(click)="addSort()">
|
|
1006
|
+
</button>
|
|
1007
|
+
|
|
1008
|
+
@if (sorts.length > 1) {
|
|
1009
|
+
<button
|
|
1010
|
+
pButton
|
|
1011
|
+
icon="pi pi-random"
|
|
1012
|
+
[label]="'REVERSE_ORDER' | translate"
|
|
1013
|
+
type="button"
|
|
1014
|
+
class="p-button-outlined"
|
|
1015
|
+
(click)="reverseSorts()"
|
|
1016
|
+
[pTooltip]="'REVERSE_TOOLTIP' | translate"
|
|
1017
|
+
tooltipPosition="top">
|
|
1018
|
+
</button>
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
@if (sorts.length > 0) {
|
|
1022
|
+
<button
|
|
1023
|
+
pButton
|
|
1024
|
+
icon="pi pi-trash"
|
|
1025
|
+
type="button"
|
|
1026
|
+
class="p-button-outlined p-button-danger"
|
|
1027
|
+
(click)="clearAll()"
|
|
1028
|
+
[pTooltip]="'CLEAR_ALL_TOOLTIP' | translate"
|
|
1029
|
+
tooltipPosition="top">
|
|
1030
|
+
</button>
|
|
1031
|
+
}
|
|
1032
|
+
</div>
|
|
1033
|
+
|
|
1034
|
+
<!-- Summary -->
|
|
1035
|
+
@if (sorts.length > 0) {
|
|
1036
|
+
<div class="sort-summary mt-3 p-2 border-round surface-ground">
|
|
1037
|
+
<h5 class="mt-0 mb-2 text-sm">{{ 'SORT_SUMMARY' | translate }}:</h5>
|
|
1038
|
+
<div class="text-sm text-500">
|
|
1039
|
+
@for (sort of sorts; track sort; let i = $index) {
|
|
1040
|
+
<span class="sort-step">
|
|
1041
|
+
<span class="font-semibold">{{ getFieldLabel(sort.field) }}</span>
|
|
1042
|
+
<span class="direction-badge" [ngClass]="sort.direction === 'asc' ? 'bg-green-100 text-green-800' : 'bg-red-100 text-red-800'">
|
|
1043
|
+
{{ sort.direction === 'asc' ? '▲' : '▼' }}
|
|
1044
|
+
</span>
|
|
1045
|
+
@if (!isLast) {
|
|
1046
|
+
<span> {{ 'THEN' | translate }} </span>
|
|
1047
|
+
}
|
|
1048
|
+
</span>
|
|
1049
|
+
}
|
|
1050
|
+
</div>
|
|
1051
|
+
</div>
|
|
1052
|
+
}
|
|
1053
1053
|
</div>`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i3.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i5$1.Draggable, selector: "[pDraggable]", inputs: ["pDraggable", "dragEffect", "dragHandle", "pDraggableDisabled"], outputs: ["onDragStart", "onDragEnd", "onDrag"] }, { kind: "directive", type: i5$1.Droppable, selector: "[pDroppable]", inputs: ["pDroppable", "pDroppableDisabled", "dropEffect"], outputs: ["onDragEnter", "onDragLeave", "onDrop"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i6$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
1054
1054
|
}
|
|
1055
1055
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SortBuilderComponent, decorators: [{
|
|
@@ -1062,170 +1062,170 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
1062
1062
|
DragDropModule,
|
|
1063
1063
|
TooltipModule,
|
|
1064
1064
|
TranslatePipe
|
|
1065
|
-
], template: `<div class="sort-builder p-3 border-round border-1 surface-border">
|
|
1066
|
-
<div class="mb-6">
|
|
1067
|
-
<h5 class="text-lg font-semibold text-gray-900 mb-2">{{ props.label || ('SORTING' | translate) }}</h5>
|
|
1068
|
-
<p class="text-gray-600 text-sm">{{ ('PRIORITY_HINT' | translate) }}</p>
|
|
1069
|
-
</div>
|
|
1070
|
-
|
|
1071
|
-
<!-- Sort List -->
|
|
1072
|
-
@if (sorts.length > 0) {
|
|
1073
|
-
<div class="sort-list space-y-2 mb-3">
|
|
1074
|
-
@for (sort of sorts; track sort; let i = $index; let isFirst = $first; let isLast = $last) {
|
|
1075
|
-
<div
|
|
1076
|
-
class="sort-row p-2 border-round surface-card"
|
|
1077
|
-
pDraggable
|
|
1078
|
-
pDroppable
|
|
1079
|
-
(onDragStart)="onDragStart(i)"
|
|
1080
|
-
(onDrop)="onDrop($event, i)"
|
|
1081
|
-
[ngClass]="{'border-left-3 border-primary': isFirst, 'border-left-3 border-200': !isFirst}">
|
|
1082
|
-
<div class="grid grid-cols-4 align-items-center gap-2">
|
|
1083
|
-
<!-- Drag Handle -->
|
|
1084
|
-
<div class="col-span-2 flex">
|
|
1085
|
-
<button
|
|
1086
|
-
pButton
|
|
1087
|
-
icon="pi pi-bars"
|
|
1088
|
-
type="button"
|
|
1089
|
-
class="p-button-text p-button-plain cursor-move"
|
|
1090
|
-
[pTooltip]="'DRAG_TOOLTIP' | translate"
|
|
1091
|
-
tooltipPosition="top">
|
|
1092
|
-
</button>
|
|
1093
|
-
<p-select
|
|
1094
|
-
[options]="getAvailableFields(sort.field)"
|
|
1095
|
-
optionLabel="label"
|
|
1096
|
-
optionValue="key"
|
|
1097
|
-
[(ngModel)]="sort.field"
|
|
1098
|
-
(onChange)="updateValue()"
|
|
1099
|
-
[placeholder]="'SELECT_FIELD_SORT' | translate"
|
|
1100
|
-
[showClear]="true"
|
|
1101
|
-
appendTo="body"
|
|
1102
|
-
styleClass="w-full">
|
|
1103
|
-
</p-select>
|
|
1104
|
-
</div>
|
|
1105
|
-
<!-- Direction Selector -->
|
|
1106
|
-
<div class="col-fixed">
|
|
1107
|
-
<p-select
|
|
1108
|
-
[options]="directionOptions"
|
|
1109
|
-
[(ngModel)]="sort.direction"
|
|
1110
|
-
(onChange)="updateValue()"
|
|
1111
|
-
[placeholder]="'DIRECTION' | translate"
|
|
1112
|
-
appendTo="body"
|
|
1113
|
-
styleClass="w-full">
|
|
1114
|
-
</p-select>
|
|
1115
|
-
</div>
|
|
1116
|
-
<!-- Actions -->
|
|
1117
|
-
<div class="col-fixed flex gap-2" style="justify-content: flex-end;">
|
|
1118
|
-
<!-- Move Up -->
|
|
1119
|
-
@if (!isFirst) {
|
|
1120
|
-
<button
|
|
1121
|
-
outlined
|
|
1122
|
-
style="width: var(--p-button-icon-only-width);"
|
|
1123
|
-
pButton
|
|
1124
|
-
icon="pi pi-arrow-up"
|
|
1125
|
-
type="button"
|
|
1126
|
-
class="p-button-sm p-button-success"
|
|
1127
|
-
(click)="moveSort(i, i - 1)"
|
|
1128
|
-
[pTooltip]="'MOVE_UP' | translate"
|
|
1129
|
-
tooltipPosition="top">
|
|
1130
|
-
</button>
|
|
1131
|
-
}
|
|
1132
|
-
<!-- Move Down -->
|
|
1133
|
-
@if (!isLast) {
|
|
1134
|
-
<button
|
|
1135
|
-
outlined
|
|
1136
|
-
style="width: var(--p-button-icon-only-width);"
|
|
1137
|
-
pButton
|
|
1138
|
-
icon="pi pi-arrow-down"
|
|
1139
|
-
type="button"
|
|
1140
|
-
class="p-button-sm p-button-success"
|
|
1141
|
-
(click)="moveSort(i, i + 1)"
|
|
1142
|
-
[pTooltip]="'MOVE_DOWN' | translate"
|
|
1143
|
-
tooltipPosition="top">
|
|
1144
|
-
</button>
|
|
1145
|
-
}
|
|
1146
|
-
<!-- Remove -->
|
|
1147
|
-
<button
|
|
1148
|
-
style="width: var(--p-button-icon-only-width);"
|
|
1149
|
-
pButton
|
|
1150
|
-
icon="pi pi-times"
|
|
1151
|
-
type="button"
|
|
1152
|
-
class="p-button-sm p-button-danger"
|
|
1153
|
-
(click)="removeSort(i)"
|
|
1154
|
-
[pTooltip]="'REMOVE_SORT' | translate"
|
|
1155
|
-
tooltipPosition="top">
|
|
1156
|
-
</button>
|
|
1157
|
-
</div>
|
|
1158
|
-
</div>
|
|
1159
|
-
</div>
|
|
1160
|
-
}
|
|
1161
|
-
</div>
|
|
1162
|
-
}
|
|
1163
|
-
|
|
1164
|
-
<!-- Empty State -->
|
|
1165
|
-
@if (sorts.length === 0) {
|
|
1166
|
-
<div class="empty-state text-center p-4 border-round surface-section">
|
|
1167
|
-
<i class="pi pi-sort-alt text-4xl text-500 mb-3"></i>
|
|
1168
|
-
<p class="text-500 mb-3">{{ 'NO_SORT_RULES' | translate }}</p>
|
|
1169
|
-
<p class="text-400 text-sm mb-3">{{ 'DEFAULT_ORDER' | translate }}</p>
|
|
1170
|
-
</div>
|
|
1171
|
-
}
|
|
1172
|
-
|
|
1173
|
-
<!-- Actions -->
|
|
1174
|
-
<div class="flex gap-2">
|
|
1175
|
-
<button
|
|
1176
|
-
pButton
|
|
1177
|
-
icon="pi pi-sort-alt"
|
|
1178
|
-
[label]="'ADD_SORT' | translate"
|
|
1179
|
-
type="button"
|
|
1180
|
-
class="p-button-outlined flex-1"
|
|
1181
|
-
(click)="addSort()">
|
|
1182
|
-
</button>
|
|
1183
|
-
|
|
1184
|
-
@if (sorts.length > 1) {
|
|
1185
|
-
<button
|
|
1186
|
-
pButton
|
|
1187
|
-
icon="pi pi-random"
|
|
1188
|
-
[label]="'REVERSE_ORDER' | translate"
|
|
1189
|
-
type="button"
|
|
1190
|
-
class="p-button-outlined"
|
|
1191
|
-
(click)="reverseSorts()"
|
|
1192
|
-
[pTooltip]="'REVERSE_TOOLTIP' | translate"
|
|
1193
|
-
tooltipPosition="top">
|
|
1194
|
-
</button>
|
|
1195
|
-
}
|
|
1196
|
-
|
|
1197
|
-
@if (sorts.length > 0) {
|
|
1198
|
-
<button
|
|
1199
|
-
pButton
|
|
1200
|
-
icon="pi pi-trash"
|
|
1201
|
-
type="button"
|
|
1202
|
-
class="p-button-outlined p-button-danger"
|
|
1203
|
-
(click)="clearAll()"
|
|
1204
|
-
[pTooltip]="'CLEAR_ALL_TOOLTIP' | translate"
|
|
1205
|
-
tooltipPosition="top">
|
|
1206
|
-
</button>
|
|
1207
|
-
}
|
|
1208
|
-
</div>
|
|
1209
|
-
|
|
1210
|
-
<!-- Summary -->
|
|
1211
|
-
@if (sorts.length > 0) {
|
|
1212
|
-
<div class="sort-summary mt-3 p-2 border-round surface-ground">
|
|
1213
|
-
<h5 class="mt-0 mb-2 text-sm">{{ 'SORT_SUMMARY' | translate }}:</h5>
|
|
1214
|
-
<div class="text-sm text-500">
|
|
1215
|
-
@for (sort of sorts; track sort; let i = $index) {
|
|
1216
|
-
<span class="sort-step">
|
|
1217
|
-
<span class="font-semibold">{{ getFieldLabel(sort.field) }}</span>
|
|
1218
|
-
<span class="direction-badge" [ngClass]="sort.direction === 'asc' ? 'bg-green-100 text-green-800' : 'bg-red-100 text-red-800'">
|
|
1219
|
-
{{ sort.direction === 'asc' ? '▲' : '▼' }}
|
|
1220
|
-
</span>
|
|
1221
|
-
@if (!isLast) {
|
|
1222
|
-
<span> {{ 'THEN' | translate }} </span>
|
|
1223
|
-
}
|
|
1224
|
-
</span>
|
|
1225
|
-
}
|
|
1226
|
-
</div>
|
|
1227
|
-
</div>
|
|
1228
|
-
}
|
|
1065
|
+
], template: `<div class="sort-builder p-3 border-round border-1 surface-border">
|
|
1066
|
+
<div class="mb-6">
|
|
1067
|
+
<h5 class="text-lg font-semibold text-gray-900 mb-2">{{ props.label || ('SORTING' | translate) }}</h5>
|
|
1068
|
+
<p class="text-gray-600 text-sm">{{ ('PRIORITY_HINT' | translate) }}</p>
|
|
1069
|
+
</div>
|
|
1070
|
+
|
|
1071
|
+
<!-- Sort List -->
|
|
1072
|
+
@if (sorts.length > 0) {
|
|
1073
|
+
<div class="sort-list space-y-2 mb-3">
|
|
1074
|
+
@for (sort of sorts; track sort; let i = $index; let isFirst = $first; let isLast = $last) {
|
|
1075
|
+
<div
|
|
1076
|
+
class="sort-row p-2 border-round surface-card"
|
|
1077
|
+
pDraggable
|
|
1078
|
+
pDroppable
|
|
1079
|
+
(onDragStart)="onDragStart(i)"
|
|
1080
|
+
(onDrop)="onDrop($event, i)"
|
|
1081
|
+
[ngClass]="{'border-left-3 border-primary': isFirst, 'border-left-3 border-200': !isFirst}">
|
|
1082
|
+
<div class="grid grid-cols-4 align-items-center gap-2">
|
|
1083
|
+
<!-- Drag Handle -->
|
|
1084
|
+
<div class="col-span-2 flex">
|
|
1085
|
+
<button
|
|
1086
|
+
pButton
|
|
1087
|
+
icon="pi pi-bars"
|
|
1088
|
+
type="button"
|
|
1089
|
+
class="p-button-text p-button-plain cursor-move"
|
|
1090
|
+
[pTooltip]="'DRAG_TOOLTIP' | translate"
|
|
1091
|
+
tooltipPosition="top">
|
|
1092
|
+
</button>
|
|
1093
|
+
<p-select
|
|
1094
|
+
[options]="getAvailableFields(sort.field)"
|
|
1095
|
+
optionLabel="label"
|
|
1096
|
+
optionValue="key"
|
|
1097
|
+
[(ngModel)]="sort.field"
|
|
1098
|
+
(onChange)="updateValue()"
|
|
1099
|
+
[placeholder]="'SELECT_FIELD_SORT' | translate"
|
|
1100
|
+
[showClear]="true"
|
|
1101
|
+
appendTo="body"
|
|
1102
|
+
styleClass="w-full">
|
|
1103
|
+
</p-select>
|
|
1104
|
+
</div>
|
|
1105
|
+
<!-- Direction Selector -->
|
|
1106
|
+
<div class="col-fixed">
|
|
1107
|
+
<p-select
|
|
1108
|
+
[options]="directionOptions"
|
|
1109
|
+
[(ngModel)]="sort.direction"
|
|
1110
|
+
(onChange)="updateValue()"
|
|
1111
|
+
[placeholder]="'DIRECTION' | translate"
|
|
1112
|
+
appendTo="body"
|
|
1113
|
+
styleClass="w-full">
|
|
1114
|
+
</p-select>
|
|
1115
|
+
</div>
|
|
1116
|
+
<!-- Actions -->
|
|
1117
|
+
<div class="col-fixed flex gap-2" style="justify-content: flex-end;">
|
|
1118
|
+
<!-- Move Up -->
|
|
1119
|
+
@if (!isFirst) {
|
|
1120
|
+
<button
|
|
1121
|
+
outlined
|
|
1122
|
+
style="width: var(--p-button-icon-only-width);"
|
|
1123
|
+
pButton
|
|
1124
|
+
icon="pi pi-arrow-up"
|
|
1125
|
+
type="button"
|
|
1126
|
+
class="p-button-sm p-button-success"
|
|
1127
|
+
(click)="moveSort(i, i - 1)"
|
|
1128
|
+
[pTooltip]="'MOVE_UP' | translate"
|
|
1129
|
+
tooltipPosition="top">
|
|
1130
|
+
</button>
|
|
1131
|
+
}
|
|
1132
|
+
<!-- Move Down -->
|
|
1133
|
+
@if (!isLast) {
|
|
1134
|
+
<button
|
|
1135
|
+
outlined
|
|
1136
|
+
style="width: var(--p-button-icon-only-width);"
|
|
1137
|
+
pButton
|
|
1138
|
+
icon="pi pi-arrow-down"
|
|
1139
|
+
type="button"
|
|
1140
|
+
class="p-button-sm p-button-success"
|
|
1141
|
+
(click)="moveSort(i, i + 1)"
|
|
1142
|
+
[pTooltip]="'MOVE_DOWN' | translate"
|
|
1143
|
+
tooltipPosition="top">
|
|
1144
|
+
</button>
|
|
1145
|
+
}
|
|
1146
|
+
<!-- Remove -->
|
|
1147
|
+
<button
|
|
1148
|
+
style="width: var(--p-button-icon-only-width);"
|
|
1149
|
+
pButton
|
|
1150
|
+
icon="pi pi-times"
|
|
1151
|
+
type="button"
|
|
1152
|
+
class="p-button-sm p-button-danger"
|
|
1153
|
+
(click)="removeSort(i)"
|
|
1154
|
+
[pTooltip]="'REMOVE_SORT' | translate"
|
|
1155
|
+
tooltipPosition="top">
|
|
1156
|
+
</button>
|
|
1157
|
+
</div>
|
|
1158
|
+
</div>
|
|
1159
|
+
</div>
|
|
1160
|
+
}
|
|
1161
|
+
</div>
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
<!-- Empty State -->
|
|
1165
|
+
@if (sorts.length === 0) {
|
|
1166
|
+
<div class="empty-state text-center p-4 border-round surface-section">
|
|
1167
|
+
<i class="pi pi-sort-alt text-4xl text-500 mb-3"></i>
|
|
1168
|
+
<p class="text-500 mb-3">{{ 'NO_SORT_RULES' | translate }}</p>
|
|
1169
|
+
<p class="text-400 text-sm mb-3">{{ 'DEFAULT_ORDER' | translate }}</p>
|
|
1170
|
+
</div>
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
<!-- Actions -->
|
|
1174
|
+
<div class="flex gap-2">
|
|
1175
|
+
<button
|
|
1176
|
+
pButton
|
|
1177
|
+
icon="pi pi-sort-alt"
|
|
1178
|
+
[label]="'ADD_SORT' | translate"
|
|
1179
|
+
type="button"
|
|
1180
|
+
class="p-button-outlined flex-1"
|
|
1181
|
+
(click)="addSort()">
|
|
1182
|
+
</button>
|
|
1183
|
+
|
|
1184
|
+
@if (sorts.length > 1) {
|
|
1185
|
+
<button
|
|
1186
|
+
pButton
|
|
1187
|
+
icon="pi pi-random"
|
|
1188
|
+
[label]="'REVERSE_ORDER' | translate"
|
|
1189
|
+
type="button"
|
|
1190
|
+
class="p-button-outlined"
|
|
1191
|
+
(click)="reverseSorts()"
|
|
1192
|
+
[pTooltip]="'REVERSE_TOOLTIP' | translate"
|
|
1193
|
+
tooltipPosition="top">
|
|
1194
|
+
</button>
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
@if (sorts.length > 0) {
|
|
1198
|
+
<button
|
|
1199
|
+
pButton
|
|
1200
|
+
icon="pi pi-trash"
|
|
1201
|
+
type="button"
|
|
1202
|
+
class="p-button-outlined p-button-danger"
|
|
1203
|
+
(click)="clearAll()"
|
|
1204
|
+
[pTooltip]="'CLEAR_ALL_TOOLTIP' | translate"
|
|
1205
|
+
tooltipPosition="top">
|
|
1206
|
+
</button>
|
|
1207
|
+
}
|
|
1208
|
+
</div>
|
|
1209
|
+
|
|
1210
|
+
<!-- Summary -->
|
|
1211
|
+
@if (sorts.length > 0) {
|
|
1212
|
+
<div class="sort-summary mt-3 p-2 border-round surface-ground">
|
|
1213
|
+
<h5 class="mt-0 mb-2 text-sm">{{ 'SORT_SUMMARY' | translate }}:</h5>
|
|
1214
|
+
<div class="text-sm text-500">
|
|
1215
|
+
@for (sort of sorts; track sort; let i = $index) {
|
|
1216
|
+
<span class="sort-step">
|
|
1217
|
+
<span class="font-semibold">{{ getFieldLabel(sort.field) }}</span>
|
|
1218
|
+
<span class="direction-badge" [ngClass]="sort.direction === 'asc' ? 'bg-green-100 text-green-800' : 'bg-red-100 text-red-800'">
|
|
1219
|
+
{{ sort.direction === 'asc' ? '▲' : '▼' }}
|
|
1220
|
+
</span>
|
|
1221
|
+
@if (!isLast) {
|
|
1222
|
+
<span> {{ 'THEN' | translate }} </span>
|
|
1223
|
+
}
|
|
1224
|
+
</span>
|
|
1225
|
+
}
|
|
1226
|
+
</div>
|
|
1227
|
+
</div>
|
|
1228
|
+
}
|
|
1229
1229
|
</div>` }]
|
|
1230
1230
|
}] });
|
|
1231
1231
|
|
|
@@ -1656,124 +1656,124 @@ class TabTypeComponent extends FieldType {
|
|
|
1656
1656
|
}
|
|
1657
1657
|
}
|
|
1658
1658
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1659
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: TabTypeComponent, isStandalone: true, selector: "formly-tab-type", usesInheritance: true, ngImport: i0, template: `
|
|
1660
|
-
<p-tabs
|
|
1661
|
-
[value]="activeTabValue"
|
|
1662
|
-
[scrollable]="props['scrollable'] !== false"
|
|
1663
|
-
[lazy]="props['lazy'] !== false"
|
|
1664
|
-
(valueChange)="onTabChange($event)">
|
|
1665
|
-
|
|
1666
|
-
<p-tablist>
|
|
1667
|
-
@for (tab of field.fieldGroup; track tab; let i = $index) {
|
|
1668
|
-
<p-tab
|
|
1669
|
-
[value]="i.toString()"
|
|
1670
|
-
[disabled]="tab.props?.disabled">
|
|
1671
|
-
@if(tab.props){
|
|
1672
|
-
<div class="flex align-items-center gap-2">
|
|
1673
|
-
<!-- Left Icon -->
|
|
1674
|
-
@if (tab.props['leftIcon']) {
|
|
1675
|
-
<i [class]="tab.props['leftIcon']" class="text-sm"></i>
|
|
1676
|
-
}
|
|
1677
|
-
<!-- Label -->
|
|
1678
|
-
<span>{{ (tab.props['tabLabel'] ?? '') | translate }}</span>
|
|
1679
|
-
<!-- Badge -->
|
|
1680
|
-
@if (resolveBadge(tab) !== null) {
|
|
1681
|
-
<p-badge
|
|
1682
|
-
[value]="resolveBadge(tab)"
|
|
1683
|
-
size="small">
|
|
1684
|
-
</p-badge>
|
|
1685
|
-
}
|
|
1686
|
-
<!-- Right Icon -->
|
|
1687
|
-
@if (tab.props['rightIcon']) {
|
|
1688
|
-
<i [class]="tab.props['rightIcon']" class="text-sm"></i>
|
|
1689
|
-
}
|
|
1690
|
-
</div>
|
|
1691
|
-
}
|
|
1692
|
-
</p-tab>
|
|
1693
|
-
}
|
|
1694
|
-
</p-tablist>
|
|
1695
|
-
|
|
1696
|
-
<p-tabpanels style="padding: 0;">
|
|
1697
|
-
@for (tab of field.fieldGroup; track tab; let i = $index) {
|
|
1698
|
-
<p-tabpanel
|
|
1699
|
-
[value]="i.toString()">
|
|
1700
|
-
<div class="p-3">
|
|
1701
|
-
<formly-field [field]="tab"></formly-field>
|
|
1702
|
-
<!-- Empty state -->
|
|
1703
|
-
@if (!tab.fieldGroup || tab.fieldGroup.length === 0) {
|
|
1704
|
-
<div
|
|
1705
|
-
class="empty-tab text-center p-4 text-500">
|
|
1706
|
-
<i class="pi pi-inbox text-2xl mb-2"></i>
|
|
1707
|
-
<p>لا توجد حقول في هذه التبويبة</p>
|
|
1708
|
-
</div>
|
|
1709
|
-
}
|
|
1710
|
-
</div>
|
|
1711
|
-
</p-tabpanel>
|
|
1712
|
-
}
|
|
1713
|
-
</p-tabpanels>
|
|
1714
|
-
</p-tabs>
|
|
1659
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: TabTypeComponent, isStandalone: true, selector: "formly-tab-type", usesInheritance: true, ngImport: i0, template: `
|
|
1660
|
+
<p-tabs
|
|
1661
|
+
[value]="activeTabValue"
|
|
1662
|
+
[scrollable]="props['scrollable'] !== false"
|
|
1663
|
+
[lazy]="props['lazy'] !== false"
|
|
1664
|
+
(valueChange)="onTabChange($event)">
|
|
1665
|
+
|
|
1666
|
+
<p-tablist>
|
|
1667
|
+
@for (tab of field.fieldGroup; track tab; let i = $index) {
|
|
1668
|
+
<p-tab
|
|
1669
|
+
[value]="i.toString()"
|
|
1670
|
+
[disabled]="tab.props?.disabled">
|
|
1671
|
+
@if(tab.props){
|
|
1672
|
+
<div class="flex align-items-center gap-2">
|
|
1673
|
+
<!-- Left Icon -->
|
|
1674
|
+
@if (tab.props['leftIcon']) {
|
|
1675
|
+
<i [class]="tab.props['leftIcon']" class="text-sm"></i>
|
|
1676
|
+
}
|
|
1677
|
+
<!-- Label -->
|
|
1678
|
+
<span>{{ (tab.props['tabLabel'] ?? '') | translate }}</span>
|
|
1679
|
+
<!-- Badge -->
|
|
1680
|
+
@if (resolveBadge(tab) !== null) {
|
|
1681
|
+
<p-badge
|
|
1682
|
+
[value]="resolveBadge(tab)"
|
|
1683
|
+
size="small">
|
|
1684
|
+
</p-badge>
|
|
1685
|
+
}
|
|
1686
|
+
<!-- Right Icon -->
|
|
1687
|
+
@if (tab.props['rightIcon']) {
|
|
1688
|
+
<i [class]="tab.props['rightIcon']" class="text-sm"></i>
|
|
1689
|
+
}
|
|
1690
|
+
</div>
|
|
1691
|
+
}
|
|
1692
|
+
</p-tab>
|
|
1693
|
+
}
|
|
1694
|
+
</p-tablist>
|
|
1695
|
+
|
|
1696
|
+
<p-tabpanels style="padding: 0;">
|
|
1697
|
+
@for (tab of field.fieldGroup; track tab; let i = $index) {
|
|
1698
|
+
<p-tabpanel
|
|
1699
|
+
[value]="i.toString()">
|
|
1700
|
+
<div class="p-3">
|
|
1701
|
+
<formly-field [field]="tab"></formly-field>
|
|
1702
|
+
<!-- Empty state -->
|
|
1703
|
+
@if (!tab.fieldGroup || tab.fieldGroup.length === 0) {
|
|
1704
|
+
<div
|
|
1705
|
+
class="empty-tab text-center p-4 text-500">
|
|
1706
|
+
<i class="pi pi-inbox text-2xl mb-2"></i>
|
|
1707
|
+
<p>لا توجد حقول في هذه التبويبة</p>
|
|
1708
|
+
</div>
|
|
1709
|
+
}
|
|
1710
|
+
</div>
|
|
1711
|
+
</p-tabpanel>
|
|
1712
|
+
}
|
|
1713
|
+
</p-tabpanels>
|
|
1714
|
+
</p-tabs>
|
|
1715
1715
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: TabsModule }, { kind: "component", type: i1$3.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i1$3.TabPanels, selector: "p-tabpanels" }, { kind: "component", type: i1$3.TabPanel, selector: "p-tabpanel", inputs: ["lazy", "value"], outputs: ["valueChange"] }, { kind: "component", type: i1$3.TabList, selector: "p-tablist" }, { kind: "component", type: i1$3.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i8.Badge, selector: "p-badge", inputs: ["styleClass", "badgeSize", "size", "severity", "value", "badgeDisabled"] }, { kind: "component", type: FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
1716
1716
|
}
|
|
1717
1717
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabTypeComponent, decorators: [{
|
|
1718
1718
|
type: Component,
|
|
1719
1719
|
args: [{
|
|
1720
1720
|
selector: 'formly-tab-type',
|
|
1721
|
-
template: `
|
|
1722
|
-
<p-tabs
|
|
1723
|
-
[value]="activeTabValue"
|
|
1724
|
-
[scrollable]="props['scrollable'] !== false"
|
|
1725
|
-
[lazy]="props['lazy'] !== false"
|
|
1726
|
-
(valueChange)="onTabChange($event)">
|
|
1727
|
-
|
|
1728
|
-
<p-tablist>
|
|
1729
|
-
@for (tab of field.fieldGroup; track tab; let i = $index) {
|
|
1730
|
-
<p-tab
|
|
1731
|
-
[value]="i.toString()"
|
|
1732
|
-
[disabled]="tab.props?.disabled">
|
|
1733
|
-
@if(tab.props){
|
|
1734
|
-
<div class="flex align-items-center gap-2">
|
|
1735
|
-
<!-- Left Icon -->
|
|
1736
|
-
@if (tab.props['leftIcon']) {
|
|
1737
|
-
<i [class]="tab.props['leftIcon']" class="text-sm"></i>
|
|
1738
|
-
}
|
|
1739
|
-
<!-- Label -->
|
|
1740
|
-
<span>{{ (tab.props['tabLabel'] ?? '') | translate }}</span>
|
|
1741
|
-
<!-- Badge -->
|
|
1742
|
-
@if (resolveBadge(tab) !== null) {
|
|
1743
|
-
<p-badge
|
|
1744
|
-
[value]="resolveBadge(tab)"
|
|
1745
|
-
size="small">
|
|
1746
|
-
</p-badge>
|
|
1747
|
-
}
|
|
1748
|
-
<!-- Right Icon -->
|
|
1749
|
-
@if (tab.props['rightIcon']) {
|
|
1750
|
-
<i [class]="tab.props['rightIcon']" class="text-sm"></i>
|
|
1751
|
-
}
|
|
1752
|
-
</div>
|
|
1753
|
-
}
|
|
1754
|
-
</p-tab>
|
|
1755
|
-
}
|
|
1756
|
-
</p-tablist>
|
|
1757
|
-
|
|
1758
|
-
<p-tabpanels style="padding: 0;">
|
|
1759
|
-
@for (tab of field.fieldGroup; track tab; let i = $index) {
|
|
1760
|
-
<p-tabpanel
|
|
1761
|
-
[value]="i.toString()">
|
|
1762
|
-
<div class="p-3">
|
|
1763
|
-
<formly-field [field]="tab"></formly-field>
|
|
1764
|
-
<!-- Empty state -->
|
|
1765
|
-
@if (!tab.fieldGroup || tab.fieldGroup.length === 0) {
|
|
1766
|
-
<div
|
|
1767
|
-
class="empty-tab text-center p-4 text-500">
|
|
1768
|
-
<i class="pi pi-inbox text-2xl mb-2"></i>
|
|
1769
|
-
<p>لا توجد حقول في هذه التبويبة</p>
|
|
1770
|
-
</div>
|
|
1771
|
-
}
|
|
1772
|
-
</div>
|
|
1773
|
-
</p-tabpanel>
|
|
1774
|
-
}
|
|
1775
|
-
</p-tabpanels>
|
|
1776
|
-
</p-tabs>
|
|
1721
|
+
template: `
|
|
1722
|
+
<p-tabs
|
|
1723
|
+
[value]="activeTabValue"
|
|
1724
|
+
[scrollable]="props['scrollable'] !== false"
|
|
1725
|
+
[lazy]="props['lazy'] !== false"
|
|
1726
|
+
(valueChange)="onTabChange($event)">
|
|
1727
|
+
|
|
1728
|
+
<p-tablist>
|
|
1729
|
+
@for (tab of field.fieldGroup; track tab; let i = $index) {
|
|
1730
|
+
<p-tab
|
|
1731
|
+
[value]="i.toString()"
|
|
1732
|
+
[disabled]="tab.props?.disabled">
|
|
1733
|
+
@if(tab.props){
|
|
1734
|
+
<div class="flex align-items-center gap-2">
|
|
1735
|
+
<!-- Left Icon -->
|
|
1736
|
+
@if (tab.props['leftIcon']) {
|
|
1737
|
+
<i [class]="tab.props['leftIcon']" class="text-sm"></i>
|
|
1738
|
+
}
|
|
1739
|
+
<!-- Label -->
|
|
1740
|
+
<span>{{ (tab.props['tabLabel'] ?? '') | translate }}</span>
|
|
1741
|
+
<!-- Badge -->
|
|
1742
|
+
@if (resolveBadge(tab) !== null) {
|
|
1743
|
+
<p-badge
|
|
1744
|
+
[value]="resolveBadge(tab)"
|
|
1745
|
+
size="small">
|
|
1746
|
+
</p-badge>
|
|
1747
|
+
}
|
|
1748
|
+
<!-- Right Icon -->
|
|
1749
|
+
@if (tab.props['rightIcon']) {
|
|
1750
|
+
<i [class]="tab.props['rightIcon']" class="text-sm"></i>
|
|
1751
|
+
}
|
|
1752
|
+
</div>
|
|
1753
|
+
}
|
|
1754
|
+
</p-tab>
|
|
1755
|
+
}
|
|
1756
|
+
</p-tablist>
|
|
1757
|
+
|
|
1758
|
+
<p-tabpanels style="padding: 0;">
|
|
1759
|
+
@for (tab of field.fieldGroup; track tab; let i = $index) {
|
|
1760
|
+
<p-tabpanel
|
|
1761
|
+
[value]="i.toString()">
|
|
1762
|
+
<div class="p-3">
|
|
1763
|
+
<formly-field [field]="tab"></formly-field>
|
|
1764
|
+
<!-- Empty state -->
|
|
1765
|
+
@if (!tab.fieldGroup || tab.fieldGroup.length === 0) {
|
|
1766
|
+
<div
|
|
1767
|
+
class="empty-tab text-center p-4 text-500">
|
|
1768
|
+
<i class="pi pi-inbox text-2xl mb-2"></i>
|
|
1769
|
+
<p>لا توجد حقول في هذه التبويبة</p>
|
|
1770
|
+
</div>
|
|
1771
|
+
}
|
|
1772
|
+
</div>
|
|
1773
|
+
</p-tabpanel>
|
|
1774
|
+
}
|
|
1775
|
+
</p-tabpanels>
|
|
1776
|
+
</p-tabs>
|
|
1777
1777
|
`,
|
|
1778
1778
|
standalone: true,
|
|
1779
1779
|
imports: [TabsModule, BadgeModule, FormlyField, TranslatePipe]
|