@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.framework-ng.ui.core-repeat.mjs","sources":["../../../../libs/ng.ui.core/repeat/src/lib/repeat-module.ts","../../../../libs/ng.ui.core/repeat/src/lib/repeat-section.type.ts","../../../../libs/ng.ui.core/repeat/src/lib/repeat-table-view.type.ts","../../../../libs/ng.ui.core/repeat/src/es.framework-ng.ui.core-repeat.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class RepeatModule {}\n","import { TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { ChangeDetectorRef, Component, OnInit, signal, computed } from '@angular/core';\nimport { FieldArrayType, FormlyField, FormlyFieldConfig } from '@ngx-formly/core';\nimport { DragDropModule, moveItemInArray, CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'formly-repeat-section',\n standalone: true,\n imports: [FormlyField, TranslatePipe, DragDropModule, FormsModule],\n template: `\n <div class=\"dx-grid-container shadow-md border border-[#c1c1c1] bg-white text-[#333] rounded-sm overflow-hidden\">\n \n <div class=\"bg-gradient-to-b from-[#fdfdfd] to-[#ececec] border-b border-[#c1c1c1] px-3 py-1.5 flex items-center justify-between gap-4\">\n <span class=\"text-[11px] font-bold uppercase tracking-tight text-[#555]\">{{ field.props?.label || '' }}</span>\n \n @if (field.props?.['enableSearch']) {\n <div class=\"relative flex items-center\">\n <i class=\"pi pi-search absolute left-2 text-[10px] text-gray-400\"></i>\n <input \n [(ngModel)]=\"searchQuery\" \n (input)=\"onSearch()\"\n [placeholder]=\"'Search' | translate\" \n class=\"pl-7 pr-2 py-1 text-[11px] border border-[#ccc] rounded-sm focus:border-[#0078d7] outline-none w-48 transition-all\"\n />\n </div>\n }\n </div>\n\n <div class=\"overflow-x-auto min-h-[100px]\">\n <table class=\"w-full border-collapse table-auto\">\n <thead>\n <tr class=\"bg-[#f2f2f2] border-b border-[#d1d1d1]\">\n <th class=\"sticky right-0 z-10 w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]\"></th>\n \n <th class=\"sticky right-12 z-10 w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]\"></th>\n @for (col of getFirstRowColumns(); track col) {\n <!-- @if (!col.hide) { -->\n \n <th [class.hidden]=\"col.className?.includes('hidden') || col.hide\" style=\"text-align: initial;\" class=\"px-3 py-2 text-[12px] font-semibold text-[#444] border-r border-[#d1d1d1] bg-gradient-to-b from-[#fdfdfd] to-[#f2f2f2] whitespace-nowrap\" >\n {{ (col.props?.label ?? '') | translate }}\n </th>\n \n }\n </tr>\n </thead>\n \n <tbody cdkDropList (cdkDropListDropped)=\"onDrop($event)\" [cdkDropListData]=\"field.fieldGroup\">\n @for (row of displayedRows(); track row; let rowIndex = $index) {\n <tr cdkDrag \n [id]=\"'row-' + rowIndex\"\n [class.bg-yellow-50]=\"isMatched(row)\"\n class=\"dx-row border-b border-[#e0e0e0] hover:bg-[#eff4ff] transition-colors bg-white\">\n \n <div *cdkDragPlaceholder class=\"bg-blue-50 border-2 border-dashed border-blue-200 h-10\"></div>\n\n <td class=\"sticky right-0 z-10 text-center border-r border-[#e0e0e0] bg-[#f6f6f6] py-0 px-2 cursor-move\" cdkDragHandle>\n <div class=\"flex items-center gap-1\">\n <i class=\"pi pi-bars text-[10px] text-gray-300\"></i>\n <span class=\"text-[10px] text-gray-400 font-mono\">{{ (currentPage * pageSize) + rowIndex + 1 }}</span>\n </div>\n </td>\n\n <td class=\"sticky right-12 z-10 px-2 py-0 text-center bg-[#fcfcfc] w-12 border-r border-[#e0e0e0]\">\n @if (canDelete(rowIndex) && !(field.props?.['delete']?.hidden ?? false)) {\n <button type=\"button\" (click)=\"remove(rowIndex)\" class=\"p-2 text-gray-400 hover:text-red-600 transition-colors\">\n <i class=\"pi pi-trash text-[13px]\"></i>\n </button>\n }\n </td>\n \n @for (col of row.fieldGroup; track col) {\n <!-- @if (!col.hide) { -->\n \n <td [class.hidden]=\"col.className?.includes('hidden') || col.hide\" class=\"p-0 border-r border-[#e0e0e0] align-middle min-w-[150px]\">\n <div class=\"dx-field-cell\">\n <formly-field [field]=\"col\"></formly-field>\n </div>\n </td>\n \n }\n\n \n </tr>\n }\n </tbody>\n\n \n@if (field.props?.['showFooterTotals']) {\n <tfoot>\n <tr class=\"bg-[#f9f9f9] border-t-2 border-[#d1d1d1] font-bold text-[12px]\">\n <td class=\"border-r border-[#e0e0e0] bg-[#eee]\"></td>\n <td class=\"border-r border-[#e0e0e0] bg-[#eee]\"></td>\n \n @for (col of getFirstRowColumns(); track col) {\n <!-- @if (!col.hide) { -->\n <td [class.hidden]=\"col.className?.includes('hidden') || col.hide\" class=\"px-3 py-1 border-r border-[#e0e0e0] text-[#333]\">\n @if (getFooterConfig(col.key); as cfg) {\n <div class=\"flex flex-col leading-tight\">\n <span class=\"text-[8px] text-gray-400 uppercase tracking-tighter\">\n {{ cfg.label | translate }}\n </span>\n <span class=\"text-[#005a9e]\">\n {{ calculateTotal(col.key, cfg.type) }}\n </span>\n </div>\n }\n </td>\n \n }\n <td class=\"bg-[#eee]\"></td>\n </tr>\n </tfoot>\n}\n </table>\n </div>\n\n <div class=\"p-2 border-t border-[#c1c1c1] bg-[#f3f3f3] flex items-center justify-between\">\n <div class=\"flex items-center gap-2\">\n @if (!(field.props?.['add']?.hidden ?? false)) {\n <button type=\"button\" (click)=\"add()\" class=\"flex items-center gap-2 px-4 py-1.5 rounded-sm border border-primary-500 bg-primary-600 text-white text-[11px] font-medium hover:bg-primary-700 shadow-sm transition-all\">\n <i class=\"pi pi-plus text-[10px]\"></i>\n <span>{{ 'Add' | translate }}</span>\n </button>\n }\n </div>\n\n <div class=\"flex items-center gap-1 text-[11px] text-gray-600\">\n <button (click)=\"nextPage()\" [disabled]=\"currentPage >= totalPages() - 1\" class=\"px-2 py-1 border border-gray-300 bg-white disabled:opacity-50\"><i class=\"pi pi-chevron-right text-[9px]\"></i></button>\n <span class=\"px-2\"> {{ currentPage + 1 }} - {{ totalPages() }}</span>\n <button (click)=\"prevPage()\" [disabled]=\"currentPage === 0\" class=\"px-2 py-1 border border-gray-300 bg-white disabled:opacity-50\"><i class=\"pi pi-chevron-left text-[9px]\"></i></button>\n \n </div>\n </div>\n </div>\n `,\n styles: [`\n :host ::ng-deep {\n .dx-field-cell .form-control, .dx-field-cell input, .dx-field-cell select {\n @apply w-full bg-transparent border-none px-3 py-2 text-[13px] outline-none;\n border-radius: 0; box-shadow: none !important;\n }\n .dx-field-cell:focus-within { @apply bg-white ring-1 ring-inset ring-[#0078d7]; box-shadow: inset 0 0 0 1px #0078d7; }\n .dx-row:nth-child(even) { background-color: #fafafa; }\n .cdk-drag-preview { @apply shadow-2xl border border-blue-200 bg-white opacity-90; display: table; width: 100%; }\n }\n .right-12{\n right: 38px\n }\n `]\n})\nexport class RepeatTypeComponent extends FieldArrayType implements OnInit {\n searchQuery = '';\n currentPage = 0;\n pageSize = 10;\n\n constructor(private cdr: ChangeDetectorRef) { super(); }\n\n ngOnInit() {\n this.field.formControl.valueChanges.subscribe(() => {\n this.field.fieldGroup = [...this.field.fieldGroup ?? []];\n this.cdr.detectChanges();\n });\n }\n\n getFirstRowColumns() {\n return this.field.fieldGroup?.[0]?.fieldGroup ?? [];\n }\n\n // Row visibility / Delete Protection logic\n canDelete(index: number): boolean {\n const isFirst = index === 0 && this.currentPage === 0;\n const isSecond = index === 1 && this.currentPage === 0;\n \n if (isFirst && !this.field.props?.['canDeleteFirstRow']) return false;\n if (isSecond && !this.field.props?.['canDeleteSecondRow']) return false;\n \n return true;\n }\n\n // Pagination Logic\n totalPages() {\n return Math.ceil((this.field.fieldGroup?.length || 0) / this.pageSize) || 1;\n }\n\n displayedRows() {\n const start = this.currentPage * this.pageSize;\n return (this.field.fieldGroup || []).slice(start, start + this.pageSize);\n }\n\n nextPage() { if (this.currentPage < this.totalPages() - 1) this.currentPage++; }\n prevPage() { if (this.currentPage > 0) this.currentPage--; }\n\n // Totals Logic\n // inside RepeatTypeComponent class\n\ngetFooterConfig(columnKey: any) {\n // Access footer configuration defined in the field props\n const footerConfigs = this.field.props?.['footerConfig'];\n if (!footerConfigs) return null;\n \n // Find config for this specific key (e.g., { key: 'amount', label: 'Sum', type: 'sum' })\n return footerConfigs.find((c: any) => c.key === columnKey);\n}\n\ncalculateTotal(key: any, type: 'sum' | 'avg' | 'count' = 'sum'): string {\n const values = (this.formControl.value || [])\n .map((v: any) => parseFloat(v[key]))\n .filter((v: number) => !isNaN(v));\n \n\n if (values.length === 0) return '0.00';\n\n let result = 0;\n switch (type) {\n case 'avg':\n result = values.reduce((a:any, b:any) => a + b, 0) / values.length;\n break;\n case 'count':\n return values.length.toString();\n case 'sum':\n default:\n result = values.reduce((a:any, b:any) => a + b, 0);\n break;\n }\n\n // Format as enterprise currency/number\n return result.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n}\n\n // Search Logic\n onSearch() {\n if (!this.searchQuery) return;\n const index = (this.field.fieldGroup || []).findIndex(row => \n JSON.stringify(row.model).toLowerCase().includes(this.searchQuery.toLowerCase())\n );\n \n if (index !== -1) {\n this.currentPage = Math.floor(index / this.pageSize);\n // Optional: Scroll to matched row after a small timeout\n setTimeout(() => {\n document.getElementById(`row-${index % this.pageSize}`)?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }, 100);\n }\n }\n\n isMatched(row: FormlyFieldConfig): boolean {\n if (!this.searchQuery) return false;\n return JSON.stringify(row.model).toLowerCase().includes(this.searchQuery.toLowerCase());\n }\n\n onDrop(event: CdkDragDrop<any[]> | any) {\n moveItemInArray(this.field.fieldGroup as any[], event.previousIndex, event.currentIndex);\n const formArray = this.formControl as any;\n const temp = formArray.at(event.previousIndex);\n formArray.removeAt(event.previousIndex);\n formArray.insert(event.currentIndex, temp);\n this.field.fieldGroup = [...this.field.fieldGroup ?? []];\n this.cdr.detectChanges();\n }\n}","\nimport { Component } from '@angular/core';\nimport { FieldArrayType } from '@ngx-formly/core';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\n\n@Component({\n selector: 'formly-repeat-table-view',\n template: `\n <div class=\"mb-0\">\n \n <!-- <label class=\"block text-lg font-semibold mb-3\">\n {{ field.props?.label }}\n </label> -->\n \n <div class=\"overflow-x-auto rounded-xl border\">\n <table class=\"min-w-full bg-white border-collapse\">\n \n <thead class=\"bg-gray-100\">\n <tr>\n <!-- text-left -->\n @for (col of columns; track col) {\n <th\n class=\"px-4 py-3 text-right font-medium border-b\"\n >\n {{ col.label | translate }}\n </th>\n }\n </tr>\n </thead>\n \n <tbody>\n @for (row of rows; track row; let i = $index) {\n <tr\n class=\"border-b hover:bg-gray-50\">\n @for (col of columns; track col) {\n <td\n class=\"px-4 py-2\">\n {{ row[col.key] }}\n </td>\n }\n </tr>\n }\n \n @if (!rows || rows.length === 0) {\n <tr>\n <td [attr.colspan]=\"columns.length\"\n class=\"text-center py-6 text-gray-400\">\n No data\n </td>\n </tr>\n }\n \n </tbody>\n \n </table>\n </div>\n \n </div>\n \n `,\n imports: [TranslatePipe],\n})\nexport class RepeatTableViewType extends FieldArrayType {\n\n get columns() {\n const group = (this.field?.fieldArray as any)?.fieldGroup || [];\n return group.map((f :any)=> ({\n key: f.key as string,\n label: f.props?.label || f.key\n }));\n }\n\n get rows() {\n return this.model || [];\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-repeat.mjs","sources":["../../../../libs/ng.ui.core/repeat/src/lib/repeat-module.ts","../../../../libs/ng.ui.core/repeat/src/lib/repeat-section.type.ts","../../../../libs/ng.ui.core/repeat/src/lib/repeat-table-view.type.ts","../../../../libs/ng.ui.core/repeat/src/es.framework-ng.ui.core-repeat.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n})\r\nexport class RepeatModule {}\r\n","import { TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { ChangeDetectorRef, Component, OnInit, signal, computed } from '@angular/core';\r\nimport { FieldArrayType, FormlyField, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { DragDropModule, moveItemInArray, CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'formly-repeat-section',\r\n standalone: true,\r\n imports: [FormlyField, TranslatePipe, DragDropModule, FormsModule],\r\n template: `\r\n <div class=\"dx-grid-container shadow-md border border-[#c1c1c1] bg-white text-[#333] rounded-sm overflow-hidden\">\r\n \r\n <div class=\"bg-gradient-to-b from-[#fdfdfd] to-[#ececec] border-b border-[#c1c1c1] px-3 py-1.5 flex items-center justify-between gap-4\">\r\n <span class=\"text-[11px] font-bold uppercase tracking-tight text-[#555]\">{{ field.props?.label || '' }}</span>\r\n \r\n @if (field.props?.['enableSearch']) {\r\n <div class=\"relative flex items-center\">\r\n <i class=\"pi pi-search absolute left-2 text-[10px] text-gray-400\"></i>\r\n <input \r\n [(ngModel)]=\"searchQuery\" \r\n (input)=\"onSearch()\"\r\n [placeholder]=\"'Search' | translate\" \r\n class=\"pl-7 pr-2 py-1 text-[11px] border border-[#ccc] rounded-sm focus:border-[#0078d7] outline-none w-48 transition-all\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"overflow-x-auto min-h-[100px]\">\r\n <table class=\"w-full border-collapse table-auto\">\r\n <thead>\r\n <tr class=\"bg-[#f2f2f2] border-b border-[#d1d1d1]\">\r\n <th class=\"sticky right-0 z-10 w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]\"></th>\r\n \r\n <th class=\"sticky right-12 z-10 w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]\"></th>\r\n @for (col of getFirstRowColumns(); track col) {\r\n <!-- @if (!col.hide) { -->\r\n \r\n <th [class.hidden]=\"col.className?.includes('hidden') || col.hide\" style=\"text-align: initial;\" class=\"px-3 py-2 text-[12px] font-semibold text-[#444] border-r border-[#d1d1d1] bg-gradient-to-b from-[#fdfdfd] to-[#f2f2f2] whitespace-nowrap\" >\r\n {{ (col.props?.label ?? '') | translate }}\r\n </th>\r\n \r\n }\r\n </tr>\r\n </thead>\r\n \r\n <tbody cdkDropList (cdkDropListDropped)=\"onDrop($event)\" [cdkDropListData]=\"field.fieldGroup\">\r\n @for (row of displayedRows(); track row; let rowIndex = $index) {\r\n <tr cdkDrag \r\n [id]=\"'row-' + rowIndex\"\r\n [class.bg-yellow-50]=\"isMatched(row)\"\r\n class=\"dx-row border-b border-[#e0e0e0] hover:bg-[#eff4ff] transition-colors bg-white\">\r\n \r\n <div *cdkDragPlaceholder class=\"bg-blue-50 border-2 border-dashed border-blue-200 h-10\"></div>\r\n\r\n <td class=\"sticky right-0 z-10 text-center border-r border-[#e0e0e0] bg-[#f6f6f6] py-0 px-2 cursor-move\" cdkDragHandle>\r\n <div class=\"flex items-center gap-1\">\r\n <i class=\"pi pi-bars text-[10px] text-gray-300\"></i>\r\n <span class=\"text-[10px] text-gray-400 font-mono\">{{ (currentPage * pageSize) + rowIndex + 1 }}</span>\r\n </div>\r\n </td>\r\n\r\n <td class=\"sticky right-12 z-10 px-2 py-0 text-center bg-[#fcfcfc] w-12 border-r border-[#e0e0e0]\">\r\n @if (canDelete(rowIndex) && !(field.props?.['delete']?.hidden ?? false)) {\r\n <button type=\"button\" (click)=\"remove(rowIndex)\" class=\"p-2 text-gray-400 hover:text-red-600 transition-colors\">\r\n <i class=\"pi pi-trash text-[13px]\"></i>\r\n </button>\r\n }\r\n </td>\r\n \r\n @for (col of row.fieldGroup; track col) {\r\n <!-- @if (!col.hide) { -->\r\n \r\n <td [class.hidden]=\"col.className?.includes('hidden') || col.hide\" class=\"p-0 border-r border-[#e0e0e0] align-middle min-w-[150px]\">\r\n <div class=\"dx-field-cell\">\r\n <formly-field [field]=\"col\"></formly-field>\r\n </div>\r\n </td>\r\n \r\n }\r\n\r\n \r\n </tr>\r\n }\r\n </tbody>\r\n\r\n \r\n@if (field.props?.['showFooterTotals']) {\r\n <tfoot>\r\n <tr class=\"bg-[#f9f9f9] border-t-2 border-[#d1d1d1] font-bold text-[12px]\">\r\n <td class=\"border-r border-[#e0e0e0] bg-[#eee]\"></td>\r\n <td class=\"border-r border-[#e0e0e0] bg-[#eee]\"></td>\r\n \r\n @for (col of getFirstRowColumns(); track col) {\r\n <!-- @if (!col.hide) { -->\r\n <td [class.hidden]=\"col.className?.includes('hidden') || col.hide\" class=\"px-3 py-1 border-r border-[#e0e0e0] text-[#333]\">\r\n @if (getFooterConfig(col.key); as cfg) {\r\n <div class=\"flex flex-col leading-tight\">\r\n <span class=\"text-[8px] text-gray-400 uppercase tracking-tighter\">\r\n {{ cfg.label | translate }}\r\n </span>\r\n <span class=\"text-[#005a9e]\">\r\n {{ calculateTotal(col.key, cfg.type) }}\r\n </span>\r\n </div>\r\n }\r\n </td>\r\n \r\n }\r\n <td class=\"bg-[#eee]\"></td>\r\n </tr>\r\n </tfoot>\r\n}\r\n </table>\r\n </div>\r\n\r\n <div class=\"p-2 border-t border-[#c1c1c1] bg-[#f3f3f3] flex items-center justify-between\">\r\n <div class=\"flex items-center gap-2\">\r\n @if (!(field.props?.['add']?.hidden ?? false)) {\r\n <button type=\"button\" (click)=\"add()\" class=\"flex items-center gap-2 px-4 py-1.5 rounded-sm border border-primary-500 bg-primary-600 text-white text-[11px] font-medium hover:bg-primary-700 shadow-sm transition-all\">\r\n <i class=\"pi pi-plus text-[10px]\"></i>\r\n <span>{{ 'Add' | translate }}</span>\r\n </button>\r\n }\r\n </div>\r\n\r\n <div class=\"flex items-center gap-1 text-[11px] text-gray-600\">\r\n <button (click)=\"nextPage()\" [disabled]=\"currentPage >= totalPages() - 1\" class=\"px-2 py-1 border border-gray-300 bg-white disabled:opacity-50\"><i class=\"pi pi-chevron-right text-[9px]\"></i></button>\r\n <span class=\"px-2\"> {{ currentPage + 1 }} - {{ totalPages() }}</span>\r\n <button (click)=\"prevPage()\" [disabled]=\"currentPage === 0\" class=\"px-2 py-1 border border-gray-300 bg-white disabled:opacity-50\"><i class=\"pi pi-chevron-left text-[9px]\"></i></button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n :host ::ng-deep {\r\n .dx-field-cell .form-control, .dx-field-cell input, .dx-field-cell select {\r\n @apply w-full bg-transparent border-none px-3 py-2 text-[13px] outline-none;\r\n border-radius: 0; box-shadow: none !important;\r\n }\r\n .dx-field-cell:focus-within { @apply bg-white ring-1 ring-inset ring-[#0078d7]; box-shadow: inset 0 0 0 1px #0078d7; }\r\n .dx-row:nth-child(even) { background-color: #fafafa; }\r\n .cdk-drag-preview { @apply shadow-2xl border border-blue-200 bg-white opacity-90; display: table; width: 100%; }\r\n }\r\n .right-12{\r\n right: 38px\r\n }\r\n `]\r\n})\r\nexport class RepeatTypeComponent extends FieldArrayType implements OnInit {\r\n searchQuery = '';\r\n currentPage = 0;\r\n pageSize = 10;\r\n\r\n constructor(private cdr: ChangeDetectorRef) { super(); }\r\n\r\n ngOnInit() {\r\n this.field.formControl.valueChanges.subscribe(() => {\r\n this.field.fieldGroup = [...this.field.fieldGroup ?? []];\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n getFirstRowColumns() {\r\n return this.field.fieldGroup?.[0]?.fieldGroup ?? [];\r\n }\r\n\r\n // Row visibility / Delete Protection logic\r\n canDelete(index: number): boolean {\r\n const isFirst = index === 0 && this.currentPage === 0;\r\n const isSecond = index === 1 && this.currentPage === 0;\r\n \r\n if (isFirst && !this.field.props?.['canDeleteFirstRow']) return false;\r\n if (isSecond && !this.field.props?.['canDeleteSecondRow']) return false;\r\n \r\n return true;\r\n }\r\n\r\n // Pagination Logic\r\n totalPages() {\r\n return Math.ceil((this.field.fieldGroup?.length || 0) / this.pageSize) || 1;\r\n }\r\n\r\n displayedRows() {\r\n const start = this.currentPage * this.pageSize;\r\n return (this.field.fieldGroup || []).slice(start, start + this.pageSize);\r\n }\r\n\r\n nextPage() { if (this.currentPage < this.totalPages() - 1) this.currentPage++; }\r\n prevPage() { if (this.currentPage > 0) this.currentPage--; }\r\n\r\n // Totals Logic\r\n // inside RepeatTypeComponent class\r\n\r\ngetFooterConfig(columnKey: any) {\r\n // Access footer configuration defined in the field props\r\n const footerConfigs = this.field.props?.['footerConfig'];\r\n if (!footerConfigs) return null;\r\n \r\n // Find config for this specific key (e.g., { key: 'amount', label: 'Sum', type: 'sum' })\r\n return footerConfigs.find((c: any) => c.key === columnKey);\r\n}\r\n\r\ncalculateTotal(key: any, type: 'sum' | 'avg' | 'count' = 'sum'): string {\r\n const values = (this.formControl.value || [])\r\n .map((v: any) => parseFloat(v[key]))\r\n .filter((v: number) => !isNaN(v));\r\n \r\n\r\n if (values.length === 0) return '0.00';\r\n\r\n let result = 0;\r\n switch (type) {\r\n case 'avg':\r\n result = values.reduce((a:any, b:any) => a + b, 0) / values.length;\r\n break;\r\n case 'count':\r\n return values.length.toString();\r\n case 'sum':\r\n default:\r\n result = values.reduce((a:any, b:any) => a + b, 0);\r\n break;\r\n }\r\n\r\n // Format as enterprise currency/number\r\n return result.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\r\n}\r\n\r\n // Search Logic\r\n onSearch() {\r\n if (!this.searchQuery) return;\r\n const index = (this.field.fieldGroup || []).findIndex(row => \r\n JSON.stringify(row.model).toLowerCase().includes(this.searchQuery.toLowerCase())\r\n );\r\n \r\n if (index !== -1) {\r\n this.currentPage = Math.floor(index / this.pageSize);\r\n // Optional: Scroll to matched row after a small timeout\r\n setTimeout(() => {\r\n document.getElementById(`row-${index % this.pageSize}`)?.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n }, 100);\r\n }\r\n }\r\n\r\n isMatched(row: FormlyFieldConfig): boolean {\r\n if (!this.searchQuery) return false;\r\n return JSON.stringify(row.model).toLowerCase().includes(this.searchQuery.toLowerCase());\r\n }\r\n\r\n onDrop(event: CdkDragDrop<any[]> | any) {\r\n moveItemInArray(this.field.fieldGroup as any[], event.previousIndex, event.currentIndex);\r\n const formArray = this.formControl as any;\r\n const temp = formArray.at(event.previousIndex);\r\n formArray.removeAt(event.previousIndex);\r\n formArray.insert(event.currentIndex, temp);\r\n this.field.fieldGroup = [...this.field.fieldGroup ?? []];\r\n this.cdr.detectChanges();\r\n }\r\n}","\r\nimport { Component } from '@angular/core';\r\nimport { FieldArrayType } from '@ngx-formly/core';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\n\r\n@Component({\r\n selector: 'formly-repeat-table-view',\r\n template: `\r\n <div class=\"mb-0\">\r\n \r\n <!-- <label class=\"block text-lg font-semibold mb-3\">\r\n {{ field.props?.label }}\r\n </label> -->\r\n \r\n <div class=\"overflow-x-auto rounded-xl border\">\r\n <table class=\"min-w-full bg-white border-collapse\">\r\n \r\n <thead class=\"bg-gray-100\">\r\n <tr>\r\n <!-- text-left -->\r\n @for (col of columns; track col) {\r\n <th\r\n class=\"px-4 py-3 text-right font-medium border-b\"\r\n >\r\n {{ col.label | translate }}\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n \r\n <tbody>\r\n @for (row of rows; track row; let i = $index) {\r\n <tr\r\n class=\"border-b hover:bg-gray-50\">\r\n @for (col of columns; track col) {\r\n <td\r\n class=\"px-4 py-2\">\r\n {{ row[col.key] }}\r\n </td>\r\n }\r\n </tr>\r\n }\r\n \r\n @if (!rows || rows.length === 0) {\r\n <tr>\r\n <td [attr.colspan]=\"columns.length\"\r\n class=\"text-center py-6 text-gray-400\">\r\n No data\r\n </td>\r\n </tr>\r\n }\r\n \r\n </tbody>\r\n \r\n </table>\r\n </div>\r\n \r\n </div>\r\n \r\n `,\r\n imports: [TranslatePipe],\r\n})\r\nexport class RepeatTableViewType extends FieldArrayType {\r\n\r\n get columns() {\r\n const group = (this.field?.fieldArray as any)?.fieldGroup || [];\r\n return group.map((f :any)=> ({\r\n key: f.key as string,\r\n label: f.props?.label || f.key\r\n }));\r\n }\r\n\r\n get rows() {\r\n return this.model || [];\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -29,96 +29,96 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
29
29
|
|
|
30
30
|
class FormlyFieldSelect extends FieldType {
|
|
31
31
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyFieldSelect, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: FormlyFieldSelect, isStandalone: true, selector: "formly-field-primeng-select", usesInheritance: true, ngImport: i0, template: `
|
|
33
|
-
<p-select
|
|
34
|
-
[options]="(props.options | formlySelectOptions: field | async) ?? []"
|
|
35
|
-
[formControl]="formControl"
|
|
36
|
-
[formlyAttributes]="field"
|
|
37
|
-
[showClear]="!props.required"
|
|
38
|
-
[appendTo]="props.appendTo"
|
|
39
|
-
[filter]="props.filter"
|
|
40
|
-
[filterBy]="props.filterBy ?? 'label'"
|
|
41
|
-
[optionLabel]="'label'"
|
|
42
|
-
[optionValue]="'value'"
|
|
43
|
-
(onChange)="props.change && props.change(field, $event)"
|
|
44
|
-
[placeholder]="(props['placeholder'] ?? '')| translate"
|
|
45
|
-
[styleClass]="'w-full rounded-none block'"
|
|
46
|
-
>
|
|
47
|
-
<!-- Template for each option in the dropdown -->
|
|
48
|
-
<ng-template let-option pTemplate="item">
|
|
49
|
-
<div class="flex items-center gap-2">
|
|
50
|
-
<!-- Example: add an icon if option has one -->
|
|
51
|
-
@if (option.icon) {
|
|
52
|
-
|
|
53
|
-
<i [class]="option.icon"></i>
|
|
54
|
-
}
|
|
55
|
-
<span>{{ option.label | translate }}</span>
|
|
56
|
-
<!-- Example: show description -->
|
|
57
|
-
@if (option.description) {
|
|
58
|
-
|
|
59
|
-
<small class="text-gray-500"> - {{ option.description | translate}}</small>
|
|
60
|
-
}
|
|
61
|
-
</div>
|
|
62
|
-
</ng-template>
|
|
63
|
-
|
|
64
|
-
<!-- Template for selected value -->
|
|
65
|
-
<ng-template let-selected pTemplate="selectedItem">
|
|
66
|
-
<div class="flex items-center gap-2">
|
|
67
|
-
@if (selected?.icon) {
|
|
68
|
-
<i [class]="selected.icon"></i>
|
|
69
|
-
}
|
|
70
|
-
<span>{{ selected?.label | translate}}</span>
|
|
71
|
-
</div>
|
|
72
|
-
</ng-template>
|
|
73
|
-
</p-select>
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: FormlyFieldSelect, isStandalone: true, selector: "formly-field-primeng-select", usesInheritance: true, ngImport: i0, template: `
|
|
33
|
+
<p-select
|
|
34
|
+
[options]="(props.options | formlySelectOptions: field | async) ?? []"
|
|
35
|
+
[formControl]="formControl"
|
|
36
|
+
[formlyAttributes]="field"
|
|
37
|
+
[showClear]="!props.required"
|
|
38
|
+
[appendTo]="props.appendTo"
|
|
39
|
+
[filter]="props.filter"
|
|
40
|
+
[filterBy]="props.filterBy ?? 'label'"
|
|
41
|
+
[optionLabel]="'label'"
|
|
42
|
+
[optionValue]="'value'"
|
|
43
|
+
(onChange)="props.change && props.change(field, $event)"
|
|
44
|
+
[placeholder]="(props['placeholder'] ?? '')| translate"
|
|
45
|
+
[styleClass]="'w-full rounded-none block'"
|
|
46
|
+
>
|
|
47
|
+
<!-- Template for each option in the dropdown -->
|
|
48
|
+
<ng-template let-option pTemplate="item">
|
|
49
|
+
<div class="flex items-center gap-2">
|
|
50
|
+
<!-- Example: add an icon if option has one -->
|
|
51
|
+
@if (option.icon) {
|
|
52
|
+
|
|
53
|
+
<i [class]="option.icon"></i>
|
|
54
|
+
}
|
|
55
|
+
<span>{{ option.label | translate }}</span>
|
|
56
|
+
<!-- Example: show description -->
|
|
57
|
+
@if (option.description) {
|
|
58
|
+
|
|
59
|
+
<small class="text-gray-500"> - {{ option.description | translate}}</small>
|
|
60
|
+
}
|
|
61
|
+
</div>
|
|
62
|
+
</ng-template>
|
|
63
|
+
|
|
64
|
+
<!-- Template for selected value -->
|
|
65
|
+
<ng-template let-selected pTemplate="selectedItem">
|
|
66
|
+
<div class="flex items-center gap-2">
|
|
67
|
+
@if (selected?.icon) {
|
|
68
|
+
<i [class]="selected.icon"></i>
|
|
69
|
+
}
|
|
70
|
+
<span>{{ selected?.label | translate}}</span>
|
|
71
|
+
</div>
|
|
72
|
+
</ng-template>
|
|
73
|
+
</p-select>
|
|
74
74
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: FormlyFormFieldModule }, { kind: "directive", type: FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: SelectModule$1 }, { 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: FormlySelectModule$1 }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.LegacyFormlySelectOptionsPipe, name: "formlySelectOptions" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
75
75
|
}
|
|
76
76
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyFieldSelect, decorators: [{
|
|
77
77
|
type: Component,
|
|
78
78
|
args: [{
|
|
79
79
|
selector: 'formly-field-primeng-select',
|
|
80
|
-
template: `
|
|
81
|
-
<p-select
|
|
82
|
-
[options]="(props.options | formlySelectOptions: field | async) ?? []"
|
|
83
|
-
[formControl]="formControl"
|
|
84
|
-
[formlyAttributes]="field"
|
|
85
|
-
[showClear]="!props.required"
|
|
86
|
-
[appendTo]="props.appendTo"
|
|
87
|
-
[filter]="props.filter"
|
|
88
|
-
[filterBy]="props.filterBy ?? 'label'"
|
|
89
|
-
[optionLabel]="'label'"
|
|
90
|
-
[optionValue]="'value'"
|
|
91
|
-
(onChange)="props.change && props.change(field, $event)"
|
|
92
|
-
[placeholder]="(props['placeholder'] ?? '')| translate"
|
|
93
|
-
[styleClass]="'w-full rounded-none block'"
|
|
94
|
-
>
|
|
95
|
-
<!-- Template for each option in the dropdown -->
|
|
96
|
-
<ng-template let-option pTemplate="item">
|
|
97
|
-
<div class="flex items-center gap-2">
|
|
98
|
-
<!-- Example: add an icon if option has one -->
|
|
99
|
-
@if (option.icon) {
|
|
100
|
-
|
|
101
|
-
<i [class]="option.icon"></i>
|
|
102
|
-
}
|
|
103
|
-
<span>{{ option.label | translate }}</span>
|
|
104
|
-
<!-- Example: show description -->
|
|
105
|
-
@if (option.description) {
|
|
106
|
-
|
|
107
|
-
<small class="text-gray-500"> - {{ option.description | translate}}</small>
|
|
108
|
-
}
|
|
109
|
-
</div>
|
|
110
|
-
</ng-template>
|
|
111
|
-
|
|
112
|
-
<!-- Template for selected value -->
|
|
113
|
-
<ng-template let-selected pTemplate="selectedItem">
|
|
114
|
-
<div class="flex items-center gap-2">
|
|
115
|
-
@if (selected?.icon) {
|
|
116
|
-
<i [class]="selected.icon"></i>
|
|
117
|
-
}
|
|
118
|
-
<span>{{ selected?.label | translate}}</span>
|
|
119
|
-
</div>
|
|
120
|
-
</ng-template>
|
|
121
|
-
</p-select>
|
|
80
|
+
template: `
|
|
81
|
+
<p-select
|
|
82
|
+
[options]="(props.options | formlySelectOptions: field | async) ?? []"
|
|
83
|
+
[formControl]="formControl"
|
|
84
|
+
[formlyAttributes]="field"
|
|
85
|
+
[showClear]="!props.required"
|
|
86
|
+
[appendTo]="props.appendTo"
|
|
87
|
+
[filter]="props.filter"
|
|
88
|
+
[filterBy]="props.filterBy ?? 'label'"
|
|
89
|
+
[optionLabel]="'label'"
|
|
90
|
+
[optionValue]="'value'"
|
|
91
|
+
(onChange)="props.change && props.change(field, $event)"
|
|
92
|
+
[placeholder]="(props['placeholder'] ?? '')| translate"
|
|
93
|
+
[styleClass]="'w-full rounded-none block'"
|
|
94
|
+
>
|
|
95
|
+
<!-- Template for each option in the dropdown -->
|
|
96
|
+
<ng-template let-option pTemplate="item">
|
|
97
|
+
<div class="flex items-center gap-2">
|
|
98
|
+
<!-- Example: add an icon if option has one -->
|
|
99
|
+
@if (option.icon) {
|
|
100
|
+
|
|
101
|
+
<i [class]="option.icon"></i>
|
|
102
|
+
}
|
|
103
|
+
<span>{{ option.label | translate }}</span>
|
|
104
|
+
<!-- Example: show description -->
|
|
105
|
+
@if (option.description) {
|
|
106
|
+
|
|
107
|
+
<small class="text-gray-500"> - {{ option.description | translate}}</small>
|
|
108
|
+
}
|
|
109
|
+
</div>
|
|
110
|
+
</ng-template>
|
|
111
|
+
|
|
112
|
+
<!-- Template for selected value -->
|
|
113
|
+
<ng-template let-selected pTemplate="selectedItem">
|
|
114
|
+
<div class="flex items-center gap-2">
|
|
115
|
+
@if (selected?.icon) {
|
|
116
|
+
<i [class]="selected.icon"></i>
|
|
117
|
+
}
|
|
118
|
+
<span>{{ selected?.label | translate}}</span>
|
|
119
|
+
</div>
|
|
120
|
+
</ng-template>
|
|
121
|
+
</p-select>
|
|
122
122
|
`,
|
|
123
123
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
124
124
|
standalone: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.framework-ng.ui.core-select.mjs","sources":["../../../../libs/ng.ui.core/select/src/lib/select-module.ts","../../../../libs/ng.ui.core/select/src/lib/select.type.ts","../../../../libs/ng.ui.core/select/src/lib/select.config.ts","../../../../libs/ng.ui.core/select/src/lib/select.module.ts","../../../../libs/ng.ui.core/select/src/es.framework-ng.ui.core-select.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class SelectModule {}\n","import { Component, ChangeDetectionStrategy, Type } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyFieldSelectProps } from '@ngx-formly/core/select';\nimport { Select, SelectModule } from 'primeng/select';\nimport { FormlyFieldProps, FormlyFormFieldModule } from '@es.framework/ng.ui.core/form-field';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { FormlySelectModule as FormlyCoreSelectModule } from '@ngx-formly/core/select';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\n\ninterface SelectProps extends FormlyFieldProps, FormlyFieldSelectProps {\n appendTo?: Select['appendTo'];\n filter?: boolean;\n filterBy?: string;\n}\n\nexport interface FormlySelectFieldConfig extends FormlyFieldConfig<SelectProps> {\n type: 'select' | Type<FormlyFieldSelect>;\n}\n\n@Component({\n selector: 'formly-field-primeng-select',\n template: `\n <p-select\n [options]=\"(props.options | formlySelectOptions: field | async) ?? []\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [showClear]=\"!props.required\"\n [appendTo]=\"props.appendTo\"\n [filter]=\"props.filter\"\n [filterBy]=\"props.filterBy ?? 'label'\"\n [optionLabel]=\"'label'\"\n [optionValue]=\"'value'\"\n (onChange)=\"props.change && props.change(field, $event)\"\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\n [styleClass]=\"'w-full rounded-none block'\"\n >\n <!-- Template for each option in the dropdown -->\n <ng-template let-option pTemplate=\"item\">\n <div class=\"flex items-center gap-2\">\n <!-- Example: add an icon if option has one -->\n @if (option.icon) {\n\n <i [class]=\"option.icon\"></i>\n }\n <span>{{ option.label | translate }}</span>\n <!-- Example: show description -->\n @if (option.description) {\n\n <small class=\"text-gray-500\"> - {{ option.description | translate}}</small>\n }\n </div>\n </ng-template>\n\n <!-- Template for selected value -->\n <ng-template let-selected pTemplate=\"selectedItem\">\n <div class=\"flex items-center gap-2\">\n @if (selected?.icon) {\n <i [class]=\"selected.icon\"></i>\n }\n <span>{{ selected?.label | translate}}</span>\n </div>\n </ng-template>\n </p-select>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone:true,\n imports:[CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,FormlyAttributes,SelectModule,FormlyCoreSelectModule,TranslatePipe]\n\n})\nexport class FormlyFieldSelect extends FieldType<FieldTypeConfig<SelectProps>> {}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldSelect } from './select.type';\n\nexport function withFormlyFieldSelect(): ConfigOption {\n return {\n types: [\n {\n name: 'select',\n component: FormlyFieldSelect,\n wrappers: ['form-field'],\n },\n { name: 'enum', extends: 'select' },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { SelectModule } from 'primeng/select';\nimport { FormlySelectModule as FormlyCoreSelectModule } from '@ngx-formly/core/select';\n\nimport { FormlyFieldSelect } from './select.type';\nimport { withFormlyFieldSelect } from './select.config';\nimport { FormlyFormFieldModule } from '@es.framework/ng.ui.core/form-field';\n\n@NgModule({\n // declarations: [FormlyFieldSelect],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SelectModule,\n FormlyFormFieldModule,\n FormlyCoreSelectModule,\n FormlyModule.forChild(withFormlyFieldSelect()),\n ],\n})\nexport class FormlySelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["SelectModule","FormlyCoreSelectModule","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-select.mjs","sources":["../../../../libs/ng.ui.core/select/src/lib/select-module.ts","../../../../libs/ng.ui.core/select/src/lib/select.type.ts","../../../../libs/ng.ui.core/select/src/lib/select.config.ts","../../../../libs/ng.ui.core/select/src/lib/select.module.ts","../../../../libs/ng.ui.core/select/src/es.framework-ng.ui.core-select.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n})\r\nexport class SelectModule {}\r\n","import { Component, ChangeDetectionStrategy, Type } from '@angular/core';\r\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { FormlyFieldSelectProps } from '@ngx-formly/core/select';\r\nimport { Select, SelectModule } from 'primeng/select';\r\nimport { FormlyFieldProps, FormlyFormFieldModule } from '@es.framework/ng.ui.core/form-field';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { FormlySelectModule as FormlyCoreSelectModule } from '@ngx-formly/core/select';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\n\r\ninterface SelectProps extends FormlyFieldProps, FormlyFieldSelectProps {\r\n appendTo?: Select['appendTo'];\r\n filter?: boolean;\r\n filterBy?: string;\r\n}\r\n\r\nexport interface FormlySelectFieldConfig extends FormlyFieldConfig<SelectProps> {\r\n type: 'select' | Type<FormlyFieldSelect>;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-primeng-select',\r\n template: `\r\n <p-select\r\n [options]=\"(props.options | formlySelectOptions: field | async) ?? []\"\r\n [formControl]=\"formControl\"\r\n [formlyAttributes]=\"field\"\r\n [showClear]=\"!props.required\"\r\n [appendTo]=\"props.appendTo\"\r\n [filter]=\"props.filter\"\r\n [filterBy]=\"props.filterBy ?? 'label'\"\r\n [optionLabel]=\"'label'\"\r\n [optionValue]=\"'value'\"\r\n (onChange)=\"props.change && props.change(field, $event)\"\r\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\r\n [styleClass]=\"'w-full rounded-none block'\"\r\n >\r\n <!-- Template for each option in the dropdown -->\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2\">\r\n <!-- Example: add an icon if option has one -->\r\n @if (option.icon) {\r\n\r\n <i [class]=\"option.icon\"></i>\r\n }\r\n <span>{{ option.label | translate }}</span>\r\n <!-- Example: show description -->\r\n @if (option.description) {\r\n\r\n <small class=\"text-gray-500\"> - {{ option.description | translate}}</small>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Template for selected value -->\r\n <ng-template let-selected pTemplate=\"selectedItem\">\r\n <div class=\"flex items-center gap-2\">\r\n @if (selected?.icon) {\r\n <i [class]=\"selected.icon\"></i>\r\n }\r\n <span>{{ selected?.label | translate}}</span>\r\n </div>\r\n </ng-template>\r\n </p-select>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone:true,\r\n imports:[CommonModule,\r\n ReactiveFormsModule,\r\n DatePickerModule,\r\n FormlyFormFieldModule,FormlyAttributes,SelectModule,FormlyCoreSelectModule,TranslatePipe]\r\n\r\n})\r\nexport class FormlyFieldSelect extends FieldType<FieldTypeConfig<SelectProps>> {}\r\n","import { ConfigOption } from '@ngx-formly/core';\r\nimport { FormlyFieldSelect } from './select.type';\r\n\r\nexport function withFormlyFieldSelect(): ConfigOption {\r\n return {\r\n types: [\r\n {\r\n name: 'select',\r\n component: FormlyFieldSelect,\r\n wrappers: ['form-field'],\r\n },\r\n { name: 'enum', extends: 'select' },\r\n ],\r\n };\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\nimport { SelectModule } from 'primeng/select';\r\nimport { FormlySelectModule as FormlyCoreSelectModule } from '@ngx-formly/core/select';\r\n\r\nimport { FormlyFieldSelect } from './select.type';\r\nimport { withFormlyFieldSelect } from './select.config';\r\nimport { FormlyFormFieldModule } from '@es.framework/ng.ui.core/form-field';\r\n\r\n@NgModule({\r\n // declarations: [FormlyFieldSelect],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n SelectModule,\r\n FormlyFormFieldModule,\r\n FormlyCoreSelectModule,\r\n FormlyModule.forChild(withFormlyFieldSelect()),\r\n ],\r\n})\r\nexport class FormlySelectModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["SelectModule","FormlyCoreSelectModule","i1"],"mappings":"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"}
|
|
@@ -29,11 +29,11 @@ class SidebarCards {
|
|
|
29
29
|
this.openChange.emit(this.open);
|
|
30
30
|
}
|
|
31
31
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SidebarCards, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: SidebarCards, isStandalone: true, selector: "lib-sidebar-card", inputs: { header: "header", icon: "icon", open: "open" }, outputs: { openChange: "openChange" }, ngImport: i0, template: "<!-- sidebar-card.component.html -->\n<div class=\"bg-white border border-gray-200 rounded-2xl shadow-sm overflow-hidden\">\n <!-- \u0631\u0623\u0633 \u0627\u0644\u0643\u0631\u062A -->\n <div\n class=\"flex items-center justify-between p-4 bg-white cursor-pointer select-none rounded-t-2xl\"\n (click)=\"toggle()\"\n >\n <div class=\"flex items-center space-x-2\">\n <i [class]=\"icon + ' text-blue-600 text-lg'\"></i>\n <span class=\"font-semibold text-gray-800\">{{ header }}</span>\n </div>\n <i\n class=\"fas text-gray-400 transition-transform duration-200\"\n [ngClass]=\"open ? 'fa-chevron-up' : 'fa-chevron-down'\"\n ></i>\n </div>\n\n <!-- \u0645\u062D\u062A\u0648\u0649 \u0627\u0644\u0643\u0631\u062A -->\n @if (open) {\n <div\n class=\"p-4 bg-white border-t border-gray-200 rounded-b-2xl space-y-3 text-sm text-gray-700\"\n >\n <ng-content></ng-content>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: SidebarCards, isStandalone: true, selector: "lib-sidebar-card", inputs: { header: "header", icon: "icon", open: "open" }, outputs: { openChange: "openChange" }, ngImport: i0, template: "<!-- sidebar-card.component.html -->\r\n<div class=\"bg-white border border-gray-200 rounded-2xl shadow-sm overflow-hidden\">\r\n <!-- \u0631\u0623\u0633 \u0627\u0644\u0643\u0631\u062A -->\r\n <div\r\n class=\"flex items-center justify-between p-4 bg-white cursor-pointer select-none rounded-t-2xl\"\r\n (click)=\"toggle()\"\r\n >\r\n <div class=\"flex items-center space-x-2\">\r\n <i [class]=\"icon + ' text-blue-600 text-lg'\"></i>\r\n <span class=\"font-semibold text-gray-800\">{{ header }}</span>\r\n </div>\r\n <i\r\n class=\"fas text-gray-400 transition-transform duration-200\"\r\n [ngClass]=\"open ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n ></i>\r\n </div>\r\n\r\n <!-- \u0645\u062D\u062A\u0648\u0649 \u0627\u0644\u0643\u0631\u062A -->\r\n @if (open) {\r\n <div\r\n class=\"p-4 bg-white border-t border-gray-200 rounded-b-2xl space-y-3 text-sm text-gray-700\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
33
33
|
}
|
|
34
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SidebarCards, decorators: [{
|
|
35
35
|
type: Component,
|
|
36
|
-
args: [{ selector: 'lib-sidebar-card', standalone: true, imports: [CommonModule, NgClass], template: "<!-- sidebar-card.component.html -->\n<div class=\"bg-white border border-gray-200 rounded-2xl shadow-sm overflow-hidden\">\n <!-- \u0631\u0623\u0633 \u0627\u0644\u0643\u0631\u062A -->\n <div\n class=\"flex items-center justify-between p-4 bg-white cursor-pointer select-none rounded-t-2xl\"\n (click)=\"toggle()\"\n >\n <div class=\"flex items-center space-x-2\">\n <i [class]=\"icon + ' text-blue-600 text-lg'\"></i>\n <span class=\"font-semibold text-gray-800\">{{ header }}</span>\n </div>\n <i\n class=\"fas text-gray-400 transition-transform duration-200\"\n [ngClass]=\"open ? 'fa-chevron-up' : 'fa-chevron-down'\"\n ></i>\n </div>\n\n <!-- \u0645\u062D\u062A\u0648\u0649 \u0627\u0644\u0643\u0631\u062A -->\n @if (open) {\n <div\n class=\"p-4 bg-white border-t border-gray-200 rounded-b-2xl space-y-3 text-sm text-gray-700\"\n >\n <ng-content></ng-content>\n </div>\n }\n</div>\n" }]
|
|
36
|
+
args: [{ selector: 'lib-sidebar-card', standalone: true, imports: [CommonModule, NgClass], template: "<!-- sidebar-card.component.html -->\r\n<div class=\"bg-white border border-gray-200 rounded-2xl shadow-sm overflow-hidden\">\r\n <!-- \u0631\u0623\u0633 \u0627\u0644\u0643\u0631\u062A -->\r\n <div\r\n class=\"flex items-center justify-between p-4 bg-white cursor-pointer select-none rounded-t-2xl\"\r\n (click)=\"toggle()\"\r\n >\r\n <div class=\"flex items-center space-x-2\">\r\n <i [class]=\"icon + ' text-blue-600 text-lg'\"></i>\r\n <span class=\"font-semibold text-gray-800\">{{ header }}</span>\r\n </div>\r\n <i\r\n class=\"fas text-gray-400 transition-transform duration-200\"\r\n [ngClass]=\"open ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n ></i>\r\n </div>\r\n\r\n <!-- \u0645\u062D\u062A\u0648\u0649 \u0627\u0644\u0643\u0631\u062A -->\r\n @if (open) {\r\n <div\r\n class=\"p-4 bg-white border-t border-gray-200 rounded-b-2xl space-y-3 text-sm text-gray-700\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n" }]
|
|
37
37
|
}], propDecorators: { header: [{
|
|
38
38
|
type: Input
|
|
39
39
|
}], icon: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.framework-ng.ui.core-sidebar-cards.mjs","sources":["../../../../libs/ng.ui.core/sidebar-cards/src/lib/sidebar-cards-module.ts","../../../../libs/ng.ui.core/sidebar-cards/src/lib/sidebar-cards.ts","../../../../libs/ng.ui.core/sidebar-cards/src/lib/sidebar-cards.html","../../../../libs/ng.ui.core/sidebar-cards/src/es.framework-ng.ui.core-sidebar-cards.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class SidebarCardsModule {}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\n\n@Component({\n selector: 'lib-sidebar-card',\n standalone: true,\n imports: [CommonModule, NgClass],\n templateUrl: './sidebar-cards.html',\n})\nexport class SidebarCards {\n /** عنوان الهيدر **/\n @Input() header = '';\n /** فئة أيقونة Font-Awesome **/\n @Input() icon = '';\n /** هل المحتوى مفتوح **/\n @Input() open = false;\n /** يرسل تغيير الحالة للأبّ **/\n @Output() openChange = new EventEmitter<boolean>();\n\n toggle() {\n this.open = !this.open;\n this.openChange.emit(this.open);\n }\n}\n","<!-- sidebar-card.component.html -->\n<div class=\"bg-white border border-gray-200 rounded-2xl shadow-sm overflow-hidden\">\n <!-- رأس الكرت -->\n <div\n class=\"flex items-center justify-between p-4 bg-white cursor-pointer select-none rounded-t-2xl\"\n (click)=\"toggle()\"\n >\n <div class=\"flex items-center space-x-2\">\n <i [class]=\"icon + ' text-blue-600 text-lg'\"></i>\n <span class=\"font-semibold text-gray-800\">{{ header }}</span>\n </div>\n <i\n class=\"fas text-gray-400 transition-transform duration-200\"\n [ngClass]=\"open ? 'fa-chevron-up' : 'fa-chevron-down'\"\n ></i>\n </div>\n\n <!-- محتوى الكرت -->\n @if (open) {\n <div\n class=\"p-4 bg-white border-t border-gray-200 rounded-b-2xl space-y-3 text-sm text-gray-700\"\n >\n <ng-content></ng-content>\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAFnB,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAFnB,YAAY,CAAA,EAAA,CAAA;;2FAEX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCIY,YAAY,CAAA;;IAEd,MAAM,GAAG,EAAE;;IAEX,IAAI,GAAG,EAAE;;IAET,IAAI,GAAG,KAAK;;AAEX,IAAA,UAAU,GAAG,IAAI,YAAY,EAAW;IAElD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC;uGAbW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTzB,
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-sidebar-cards.mjs","sources":["../../../../libs/ng.ui.core/sidebar-cards/src/lib/sidebar-cards-module.ts","../../../../libs/ng.ui.core/sidebar-cards/src/lib/sidebar-cards.ts","../../../../libs/ng.ui.core/sidebar-cards/src/lib/sidebar-cards.html","../../../../libs/ng.ui.core/sidebar-cards/src/es.framework-ng.ui.core-sidebar-cards.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n})\r\nexport class SidebarCardsModule {}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { CommonModule, NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-sidebar-card',\r\n standalone: true,\r\n imports: [CommonModule, NgClass],\r\n templateUrl: './sidebar-cards.html',\r\n})\r\nexport class SidebarCards {\r\n /** عنوان الهيدر **/\r\n @Input() header = '';\r\n /** فئة أيقونة Font-Awesome **/\r\n @Input() icon = '';\r\n /** هل المحتوى مفتوح **/\r\n @Input() open = false;\r\n /** يرسل تغيير الحالة للأبّ **/\r\n @Output() openChange = new EventEmitter<boolean>();\r\n\r\n toggle() {\r\n this.open = !this.open;\r\n this.openChange.emit(this.open);\r\n }\r\n}\r\n","<!-- sidebar-card.component.html -->\r\n<div class=\"bg-white border border-gray-200 rounded-2xl shadow-sm overflow-hidden\">\r\n <!-- رأس الكرت -->\r\n <div\r\n class=\"flex items-center justify-between p-4 bg-white cursor-pointer select-none rounded-t-2xl\"\r\n (click)=\"toggle()\"\r\n >\r\n <div class=\"flex items-center space-x-2\">\r\n <i [class]=\"icon + ' text-blue-600 text-lg'\"></i>\r\n <span class=\"font-semibold text-gray-800\">{{ header }}</span>\r\n </div>\r\n <i\r\n class=\"fas text-gray-400 transition-transform duration-200\"\r\n [ngClass]=\"open ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n ></i>\r\n </div>\r\n\r\n <!-- محتوى الكرت -->\r\n @if (open) {\r\n <div\r\n class=\"p-4 bg-white border-t border-gray-200 rounded-b-2xl space-y-3 text-sm text-gray-700\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAFnB,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAFnB,YAAY,CAAA,EAAA,CAAA;;2FAEX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCIY,YAAY,CAAA;;IAEd,MAAM,GAAG,EAAE;;IAEX,IAAI,GAAG,EAAE;;IAET,IAAI,GAAG,KAAK;;AAEX,IAAA,UAAU,GAAG,IAAI,YAAY,EAAW;IAElD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC;uGAbW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTzB,g/BA0BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGX,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,g/BAAA,EAAA;;sBAK/B;;sBAEA;;sBAEA;;sBAEA;;;AEjBH;;AAEG;;;;"}
|
|
@@ -26,11 +26,11 @@ class SidebarToggles {
|
|
|
26
26
|
toggleContact = new EventEmitter();
|
|
27
27
|
toggleTimeline = new EventEmitter();
|
|
28
28
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SidebarToggles, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: SidebarToggles, isStandalone: true, selector: "lib-sidebar-toggles", inputs: { allOpen: "allOpen", contactOpen: "contactOpen", timelineOpen: "timelineOpen" }, outputs: { toggleAll: "toggleAll", toggleContact: "toggleContact", toggleTimeline: "toggleTimeline" }, ngImport: i0, template: "<div class=\"fixed right-0 top-0 h-full w-16 bg-gray-100 border-l border-gray-200\n flex flex-col items-center py-4 space-y-4 z-50\">\n <!-- collapse/expand all -->\n <button\n (click)=\"toggleAll.emit()\"\n class=\"bg-blue-600 text-white p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2 focus:ring-blue-300\"\n >\n <i\n class=\"fas fa-arrow-right text-xl transition-transform\"\n [ngClass]=\"{ 'rotate-180': allOpen }\"\n ></i>\n </button>\n\n <!-- contact -->\n <button\n (click)=\"toggleContact.emit()\"\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\n [ngClass]=\"{\n 'bg-blue-600 text-white': contactOpen,\n 'bg-white text-gray-700 hover:bg-gray-100': !contactOpen\n }\"\n >\n <i class=\"fas fa-info-circle text-xl\"></i>\n </button>\n\n <!-- timeline -->\n <button\n (click)=\"toggleTimeline.emit()\"\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\n [ngClass]=\"{\n 'bg-blue-600 text-white': timelineOpen,\n 'bg-white text-gray-700 hover:bg-gray-100': !timelineOpen\n }\"\n >\n <i class=\"fas fa-paperclip text-xl\"></i>\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
29
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: SidebarToggles, isStandalone: true, selector: "lib-sidebar-toggles", inputs: { allOpen: "allOpen", contactOpen: "contactOpen", timelineOpen: "timelineOpen" }, outputs: { toggleAll: "toggleAll", toggleContact: "toggleContact", toggleTimeline: "toggleTimeline" }, ngImport: i0, template: "<div class=\"fixed right-0 top-0 h-full w-16 bg-gray-100 border-l border-gray-200\r\n flex flex-col items-center py-4 space-y-4 z-50\">\r\n <!-- collapse/expand all -->\r\n <button\r\n (click)=\"toggleAll.emit()\"\r\n class=\"bg-blue-600 text-white p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2 focus:ring-blue-300\"\r\n >\r\n <i\r\n class=\"fas fa-arrow-right text-xl transition-transform\"\r\n [ngClass]=\"{ 'rotate-180': allOpen }\"\r\n ></i>\r\n </button>\r\n\r\n <!-- contact -->\r\n <button\r\n (click)=\"toggleContact.emit()\"\r\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\r\n [ngClass]=\"{\r\n 'bg-blue-600 text-white': contactOpen,\r\n 'bg-white text-gray-700 hover:bg-gray-100': !contactOpen\r\n }\"\r\n >\r\n <i class=\"fas fa-info-circle text-xl\"></i>\r\n </button>\r\n\r\n <!-- timeline -->\r\n <button\r\n (click)=\"toggleTimeline.emit()\"\r\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\r\n [ngClass]=\"{\r\n 'bg-blue-600 text-white': timelineOpen,\r\n 'bg-white text-gray-700 hover:bg-gray-100': !timelineOpen\r\n }\"\r\n >\r\n <i class=\"fas fa-paperclip text-xl\"></i>\r\n </button>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
30
30
|
}
|
|
31
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SidebarToggles, decorators: [{
|
|
32
32
|
type: Component,
|
|
33
|
-
args: [{ selector: 'lib-sidebar-toggles', standalone: true, imports: [CommonModule, NgClass], template: "<div class=\"fixed right-0 top-0 h-full w-16 bg-gray-100 border-l border-gray-200\n flex flex-col items-center py-4 space-y-4 z-50\">\n <!-- collapse/expand all -->\n <button\n (click)=\"toggleAll.emit()\"\n class=\"bg-blue-600 text-white p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2 focus:ring-blue-300\"\n >\n <i\n class=\"fas fa-arrow-right text-xl transition-transform\"\n [ngClass]=\"{ 'rotate-180': allOpen }\"\n ></i>\n </button>\n\n <!-- contact -->\n <button\n (click)=\"toggleContact.emit()\"\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\n [ngClass]=\"{\n 'bg-blue-600 text-white': contactOpen,\n 'bg-white text-gray-700 hover:bg-gray-100': !contactOpen\n }\"\n >\n <i class=\"fas fa-info-circle text-xl\"></i>\n </button>\n\n <!-- timeline -->\n <button\n (click)=\"toggleTimeline.emit()\"\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\n [ngClass]=\"{\n 'bg-blue-600 text-white': timelineOpen,\n 'bg-white text-gray-700 hover:bg-gray-100': !timelineOpen\n }\"\n >\n <i class=\"fas fa-paperclip text-xl\"></i>\n </button>\n</div>\n" }]
|
|
33
|
+
args: [{ selector: 'lib-sidebar-toggles', standalone: true, imports: [CommonModule, NgClass], template: "<div class=\"fixed right-0 top-0 h-full w-16 bg-gray-100 border-l border-gray-200\r\n flex flex-col items-center py-4 space-y-4 z-50\">\r\n <!-- collapse/expand all -->\r\n <button\r\n (click)=\"toggleAll.emit()\"\r\n class=\"bg-blue-600 text-white p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2 focus:ring-blue-300\"\r\n >\r\n <i\r\n class=\"fas fa-arrow-right text-xl transition-transform\"\r\n [ngClass]=\"{ 'rotate-180': allOpen }\"\r\n ></i>\r\n </button>\r\n\r\n <!-- contact -->\r\n <button\r\n (click)=\"toggleContact.emit()\"\r\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\r\n [ngClass]=\"{\r\n 'bg-blue-600 text-white': contactOpen,\r\n 'bg-white text-gray-700 hover:bg-gray-100': !contactOpen\r\n }\"\r\n >\r\n <i class=\"fas fa-info-circle text-xl\"></i>\r\n </button>\r\n\r\n <!-- timeline -->\r\n <button\r\n (click)=\"toggleTimeline.emit()\"\r\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\r\n [ngClass]=\"{\r\n 'bg-blue-600 text-white': timelineOpen,\r\n 'bg-white text-gray-700 hover:bg-gray-100': !timelineOpen\r\n }\"\r\n >\r\n <i class=\"fas fa-paperclip text-xl\"></i>\r\n </button>\r\n</div>\r\n" }]
|
|
34
34
|
}], propDecorators: { allOpen: [{
|
|
35
35
|
type: Input
|
|
36
36
|
}], contactOpen: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.framework-ng.ui.core-sidebar-toggles.mjs","sources":["../../../../libs/ng.ui.core/sidebar-toggles/src/lib/sidebar-toggles-module.ts","../../../../libs/ng.ui.core/sidebar-toggles/src/lib/sidebar-toggles.ts","../../../../libs/ng.ui.core/sidebar-toggles/src/lib/sidebar-toggles.html","../../../../libs/ng.ui.core/sidebar-toggles/src/es.framework-ng.ui.core-sidebar-toggles.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class SidebarTogglesModule {}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\n\n@Component({\n selector: 'lib-sidebar-toggles',\n standalone: true,\n imports: [CommonModule, NgClass],\n templateUrl: './sidebar-toggles.html',\n styleUrls: ['./sidebar-toggles.css'],\n})\nexport class SidebarToggles {\n /** هل كلها مفتوحة الآن؟ */\n @Input() allOpen = false;\n /** حالة بطاقة تفاصيل العميل */\n @Input() contactOpen = false;\n /** حالة بطاقة الـ Timeline */\n @Input() timelineOpen = false;\n\n @Output() toggleAll = new EventEmitter<void>();\n @Output() toggleContact = new EventEmitter<void>();\n @Output() toggleTimeline = new EventEmitter<void>();\n}\n","<div class=\"fixed right-0 top-0 h-full w-16 bg-gray-100 border-l border-gray-200\n flex flex-col items-center py-4 space-y-4 z-50\">\n <!-- collapse/expand all -->\n <button\n (click)=\"toggleAll.emit()\"\n class=\"bg-blue-600 text-white p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2 focus:ring-blue-300\"\n >\n <i\n class=\"fas fa-arrow-right text-xl transition-transform\"\n [ngClass]=\"{ 'rotate-180': allOpen }\"\n ></i>\n </button>\n\n <!-- contact -->\n <button\n (click)=\"toggleContact.emit()\"\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\n [ngClass]=\"{\n 'bg-blue-600 text-white': contactOpen,\n 'bg-white text-gray-700 hover:bg-gray-100': !contactOpen\n }\"\n >\n <i class=\"fas fa-info-circle text-xl\"></i>\n </button>\n\n <!-- timeline -->\n <button\n (click)=\"toggleTimeline.emit()\"\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\n [ngClass]=\"{\n 'bg-blue-600 text-white': timelineOpen,\n 'bg-white text-gray-700 hover:bg-gray-100': !timelineOpen\n }\"\n >\n <i class=\"fas fa-paperclip text-xl\"></i>\n </button>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAFrB,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAFrB,YAAY,CAAA,EAAA,CAAA;;2FAEX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCKY,cAAc,CAAA;;IAEhB,OAAO,GAAG,KAAK;;IAEf,WAAW,GAAG,KAAK;;IAEnB,YAAY,GAAG,KAAK;AAEnB,IAAA,SAAS,GAAQ,IAAI,YAAY,EAAQ;AACzC,IAAA,aAAa,GAAI,IAAI,YAAY,EAAQ;AACzC,IAAA,cAAc,GAAG,IAAI,YAAY,EAAQ;uGAVxC,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV3B,
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-sidebar-toggles.mjs","sources":["../../../../libs/ng.ui.core/sidebar-toggles/src/lib/sidebar-toggles-module.ts","../../../../libs/ng.ui.core/sidebar-toggles/src/lib/sidebar-toggles.ts","../../../../libs/ng.ui.core/sidebar-toggles/src/lib/sidebar-toggles.html","../../../../libs/ng.ui.core/sidebar-toggles/src/es.framework-ng.ui.core-sidebar-toggles.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n})\r\nexport class SidebarTogglesModule {}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { CommonModule, NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-sidebar-toggles',\r\n standalone: true,\r\n imports: [CommonModule, NgClass],\r\n templateUrl: './sidebar-toggles.html',\r\n styleUrls: ['./sidebar-toggles.css'],\r\n})\r\nexport class SidebarToggles {\r\n /** هل كلها مفتوحة الآن؟ */\r\n @Input() allOpen = false;\r\n /** حالة بطاقة تفاصيل العميل */\r\n @Input() contactOpen = false;\r\n /** حالة بطاقة الـ Timeline */\r\n @Input() timelineOpen = false;\r\n\r\n @Output() toggleAll = new EventEmitter<void>();\r\n @Output() toggleContact = new EventEmitter<void>();\r\n @Output() toggleTimeline = new EventEmitter<void>();\r\n}\r\n","<div class=\"fixed right-0 top-0 h-full w-16 bg-gray-100 border-l border-gray-200\r\n flex flex-col items-center py-4 space-y-4 z-50\">\r\n <!-- collapse/expand all -->\r\n <button\r\n (click)=\"toggleAll.emit()\"\r\n class=\"bg-blue-600 text-white p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2 focus:ring-blue-300\"\r\n >\r\n <i\r\n class=\"fas fa-arrow-right text-xl transition-transform\"\r\n [ngClass]=\"{ 'rotate-180': allOpen }\"\r\n ></i>\r\n </button>\r\n\r\n <!-- contact -->\r\n <button\r\n (click)=\"toggleContact.emit()\"\r\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\r\n [ngClass]=\"{\r\n 'bg-blue-600 text-white': contactOpen,\r\n 'bg-white text-gray-700 hover:bg-gray-100': !contactOpen\r\n }\"\r\n >\r\n <i class=\"fas fa-info-circle text-xl\"></i>\r\n </button>\r\n\r\n <!-- timeline -->\r\n <button\r\n (click)=\"toggleTimeline.emit()\"\r\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\r\n [ngClass]=\"{\r\n 'bg-blue-600 text-white': timelineOpen,\r\n 'bg-white text-gray-700 hover:bg-gray-100': !timelineOpen\r\n }\"\r\n >\r\n <i class=\"fas fa-paperclip text-xl\"></i>\r\n </button>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAFrB,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAFrB,YAAY,CAAA,EAAA,CAAA;;2FAEX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCKY,cAAc,CAAA;;IAEhB,OAAO,GAAG,KAAK;;IAEf,WAAW,GAAG,KAAK;;IAEnB,YAAY,GAAG,KAAK;AAEnB,IAAA,SAAS,GAAQ,IAAI,YAAY,EAAQ;AACzC,IAAA,aAAa,GAAI,IAAI,YAAY,EAAQ;AACzC,IAAA,cAAc,GAAG,IAAI,YAAY,EAAQ;uGAVxC,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV3B,23CAqCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/BY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,23CAAA,EAAA;;sBAM/B;;sBAEA;;sBAEA;;sBAEA;;sBACA;;sBACA;;;AEpBH;;AAEG;;;;"}
|
|
@@ -24,13 +24,13 @@ class TabsTypeComponent extends FieldType {
|
|
|
24
24
|
return field.fieldGroup ? field.fieldGroup.every((f) => this.isValid(f)) : true;
|
|
25
25
|
}
|
|
26
26
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabsTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: TabsTypeComponent, isStandalone: true, selector: "formly-tabs-type", usesInheritance: true, ngImport: i0, template: `
|
|
28
|
-
<!-- <p-tabView>
|
|
29
|
-
<p-tabPanel *ngFor="let tabField of field.fieldGroup; let i = index" [disabled]="i !== 0 &&
|
|
30
|
-
!isValid(field.fieldGroup![i - 1])" [header]="tabField.props?.label || 'Tab '+(i+1)">
|
|
31
|
-
<formly-form [fields]="tabField.fieldGroup!" [form]="form" [options]="options" [model]="model"></formly-form>
|
|
32
|
-
</p-tabPanel>
|
|
33
|
-
</p-tabView> -->
|
|
27
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: TabsTypeComponent, isStandalone: true, selector: "formly-tabs-type", usesInheritance: true, ngImport: i0, template: `
|
|
28
|
+
<!-- <p-tabView>
|
|
29
|
+
<p-tabPanel *ngFor="let tabField of field.fieldGroup; let i = index" [disabled]="i !== 0 &&
|
|
30
|
+
!isValid(field.fieldGroup![i - 1])" [header]="tabField.props?.label || 'Tab '+(i+1)">
|
|
31
|
+
<formly-form [fields]="tabField.fieldGroup!" [form]="form" [options]="options" [model]="model"></formly-form>
|
|
32
|
+
</p-tabPanel>
|
|
33
|
+
</p-tabView> -->
|
|
34
34
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: TabsModule$1 }] });
|
|
35
35
|
}
|
|
36
36
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabsTypeComponent, decorators: [{
|
|
@@ -38,13 +38,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
38
38
|
args: [{
|
|
39
39
|
selector: 'formly-tabs-type',
|
|
40
40
|
imports: [FormlyForm, TabsModule$1],
|
|
41
|
-
template: `
|
|
42
|
-
<!-- <p-tabView>
|
|
43
|
-
<p-tabPanel *ngFor="let tabField of field.fieldGroup; let i = index" [disabled]="i !== 0 &&
|
|
44
|
-
!isValid(field.fieldGroup![i - 1])" [header]="tabField.props?.label || 'Tab '+(i+1)">
|
|
45
|
-
<formly-form [fields]="tabField.fieldGroup!" [form]="form" [options]="options" [model]="model"></formly-form>
|
|
46
|
-
</p-tabPanel>
|
|
47
|
-
</p-tabView> -->
|
|
41
|
+
template: `
|
|
42
|
+
<!-- <p-tabView>
|
|
43
|
+
<p-tabPanel *ngFor="let tabField of field.fieldGroup; let i = index" [disabled]="i !== 0 &&
|
|
44
|
+
!isValid(field.fieldGroup![i - 1])" [header]="tabField.props?.label || 'Tab '+(i+1)">
|
|
45
|
+
<formly-form [fields]="tabField.fieldGroup!" [form]="form" [options]="options" [model]="model"></formly-form>
|
|
46
|
+
</p-tabPanel>
|
|
47
|
+
</p-tabView> -->
|
|
48
48
|
`
|
|
49
49
|
}]
|
|
50
50
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.framework-ng.ui.core-tabs.mjs","sources":["../../../../libs/ng.ui.core/tabs/src/lib/tabs-module.ts","../../../../libs/ng.ui.core/tabs/src/lib/tabs.type.ts","../../../../libs/ng.ui.core/tabs/src/es.framework-ng.ui.core-tabs.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class TabsModule {}\n","\n\nimport { Component } from '@angular/core';\nimport { FieldType, FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\nimport { TabsModule } from 'primeng/tabs';\n\n@Component({\n selector: 'formly-tabs-type',\n imports: [FormlyForm, TabsModule],\n template: `\n <!-- <p-tabView>\n <p-tabPanel *ngFor=\"let tabField of field.fieldGroup; let i = index\" [disabled]=\"i !== 0 &&\n !isValid(field.fieldGroup![i - 1])\" [header]=\"tabField.props?.label || 'Tab '+(i+1)\">\n <formly-form [fields]=\"tabField.fieldGroup!\" [form]=\"form\" [options]=\"options\" [model]=\"model\"></formly-form>\n </p-tabPanel>\n </p-tabView> -->\n `\n})\nexport class TabsTypeComponent extends FieldType {\n\n isValid(field: FormlyFieldConfig): boolean {\n if (field.key) {\n return field.formControl?.valid ?? true;\n }\n\n return field.fieldGroup ? field.fieldGroup.every((f) => this.isValid(f)) : true;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TabsModule"],"mappings":";;;;;;MAMa,UAAU,CAAA;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAFX,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAFX,YAAY,CAAA,EAAA,CAAA;;2FAEX,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;ACaK,MAAO,iBAAkB,SAAQ,SAAS,CAAA;AAE7C,IAAA,OAAO,CAAC,KAAwB,EAAA;AAC/B,QAAA,IAAI,KAAK,CAAC,GAAG,EAAE;AACb,YAAA,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI;QACzC;AAEA,QAAA,OAAO,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IACjF;uGARW,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATlB;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EARsBA,YAAU,EAAA,CAAA,EAAA,CAAA;;2FAUtB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC3B,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAEA,YAAU,CAAC;AAClC,oBAAA,QAAQ,EAAE;;;;;;;AAOT,EAAA;AACF,iBAAA;;;ACjBD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-tabs.mjs","sources":["../../../../libs/ng.ui.core/tabs/src/lib/tabs-module.ts","../../../../libs/ng.ui.core/tabs/src/lib/tabs.type.ts","../../../../libs/ng.ui.core/tabs/src/es.framework-ng.ui.core-tabs.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n})\r\nexport class TabsModule {}\r\n","\r\n\r\nimport { Component } from '@angular/core';\r\nimport { FieldType, FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\r\nimport { TabsModule } from 'primeng/tabs';\r\n\r\n@Component({\r\n selector: 'formly-tabs-type',\r\n imports: [FormlyForm, TabsModule],\r\n template: `\r\n <!-- <p-tabView>\r\n <p-tabPanel *ngFor=\"let tabField of field.fieldGroup; let i = index\" [disabled]=\"i !== 0 &&\r\n !isValid(field.fieldGroup![i - 1])\" [header]=\"tabField.props?.label || 'Tab '+(i+1)\">\r\n <formly-form [fields]=\"tabField.fieldGroup!\" [form]=\"form\" [options]=\"options\" [model]=\"model\"></formly-form>\r\n </p-tabPanel>\r\n </p-tabView> -->\r\n `\r\n})\r\nexport class TabsTypeComponent extends FieldType {\r\n\r\n isValid(field: FormlyFieldConfig): boolean {\r\n if (field.key) {\r\n return field.formControl?.valid ?? true;\r\n }\r\n\r\n return field.fieldGroup ? field.fieldGroup.every((f) => this.isValid(f)) : true;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TabsModule"],"mappings":";;;;;;MAMa,UAAU,CAAA;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAFX,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAFX,YAAY,CAAA,EAAA,CAAA;;2FAEX,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;ACaK,MAAO,iBAAkB,SAAQ,SAAS,CAAA;AAE7C,IAAA,OAAO,CAAC,KAAwB,EAAA;AAC/B,QAAA,IAAI,KAAK,CAAC,GAAG,EAAE;AACb,YAAA,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI;QACzC;AAEA,QAAA,OAAO,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IACjF;uGARW,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATlB,CAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EARsBA,YAAU,EAAA,CAAA,EAAA,CAAA;;2FAUtB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC3B,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAEA,YAAU,CAAC;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;AAOT,EAAA;AACF,iBAAA;;;ACjBD;;AAEG;;;;"}
|