@masterteam/components 0.0.54 → 0.0.56
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/assets/common.css +1 -1
- package/assets/i18n/ar.json +32 -0
- package/assets/i18n/en.json +32 -0
- package/confirmation/index.d.ts +1 -0
- package/fesm2022/masterteam-components-confirmation.mjs +6 -4
- package/fesm2022/masterteam-components-confirmation.mjs.map +1 -1
- package/fesm2022/masterteam-components-page-header.mjs +42 -0
- package/fesm2022/masterteam-components-page-header.mjs.map +1 -0
- package/fesm2022/masterteam-components-page.mjs +35 -0
- package/fesm2022/masterteam-components-page.mjs.map +1 -0
- package/fesm2022/masterteam-components-paginator.mjs +5 -3
- package/fesm2022/masterteam-components-paginator.mjs.map +1 -1
- package/fesm2022/masterteam-components-select-field.mjs +5 -3
- package/fesm2022/masterteam-components-select-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-sidebar.mjs +26 -0
- package/fesm2022/masterteam-components-sidebar.mjs.map +1 -0
- package/fesm2022/masterteam-components-table.mjs +5 -2
- package/fesm2022/masterteam-components-table.mjs.map +1 -1
- package/fesm2022/masterteam-components-topbar.mjs +27 -0
- package/fesm2022/masterteam-components-topbar.mjs.map +1 -0
- package/fesm2022/masterteam-components-upload-field.mjs +9 -6
- package/fesm2022/masterteam-components-upload-field.mjs.map +1 -1
- package/fesm2022/masterteam-components.mjs +2 -1
- package/fesm2022/masterteam-components.mjs.map +1 -1
- package/index.d.ts +2 -0
- package/package.json +59 -43
- package/page/index.d.ts +26 -0
- package/page-header/index.d.ts +30 -0
- package/sidebar/index.d.ts +21 -0
- package/topbar/index.d.ts +16 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterteam-components-select-field.mjs","sources":["../../../../packages/masterteam/components/select-field/select-field.ts","../../../../packages/masterteam/components/select-field/select-field.html","../../../../packages/masterteam/components/select-field/masterteam-components-select-field.ts"],"sourcesContent":["import {\n Component,\n EventEmitter,\n HostBinding,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n signal,\n input,\n inject,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n effect,\n} from '@angular/core';\n\nimport {\n ControlValueAccessor,\n FormsModule,\n NgControl,\n Validators,\n} from '@angular/forms';\nimport { Select } from 'primeng/select';\nimport { FieldValidation } from '@masterteam/components/field-validation';\nimport { isInvalid } from '@masterteam/components';\n\n@Component({\n selector: 'mt-select-field',\n standalone: true,\n imports: [FormsModule, Select, FieldValidation],\n templateUrl: './select-field.html',\n styleUrls: ['./select-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'grid gap-1',\n },\n})\nexport class SelectField implements ControlValueAccessor, OnInit, OnChanges {\n cdr = inject(ChangeDetectorRef);\n @ViewChild('dropdown', { static: true })\n dropdown: Select;\n\n readonly field = input<boolean>(true);\n readonly label = input<string>('');\n readonly placeholder = input<string>('');\n readonly hasPlaceholderPrefix = input<boolean>(true);\n readonly class = input<string>('');\n readonly readonly = input<boolean>(false);\n readonly pInputs = input<Partial<Select>>();\n readonly options = input<any[] | undefined>(undefined);\n readonly optionValue = input<string | undefined>(undefined);\n readonly optionLabel = input<string | undefined>(undefined);\n readonly filter = input<boolean | undefined>(undefined);\n readonly filterBy = input<string | undefined>(undefined);\n readonly dataKey = input<string | undefined>(undefined);\n readonly showClear = input<boolean | undefined>(undefined);\n readonly clearAfterSelect = input<boolean | undefined>(undefined);\n readonly required = input<boolean>(false); // Add readonly required input\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n @HostBinding('class') styleClass: string;\n\n requiredValidator = Validators.required;\n value = signal<any>(null);\n disabled = signal<boolean>(false);\n\n onTouched: () => void = () => {};\n onModelChange: (value: any) => void = () => {};\n\n public ngControl = inject(NgControl, { self: true });\n\n isInvalid = isInvalid;\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n effect(() => {\n if (this.ngControl.control && this.required()) {\n this.ngControl.control.addValidators(Validators.required);\n this.ngControl.control.updateValueAndValidity();\n }\n });\n }\n\n applyInputsToDropdown() {\n // Object.assign(this.dropdown, this.pInputs());\n }\n\n ngOnInit() {\n this.styleClass = this.class();\n if (this.pInputs()) {\n this.applyInputsToDropdown();\n }\n }\n\n onValueChange(value: any) {\n this.onModelChange(value);\n this.value.set(value);\n this.onChange.emit(value);\n if (this.clearAfterSelect()) {\n this.clearSelection();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['pInputs']) {\n this.applyInputsToDropdown();\n }\n }\n\n writeValue(value: string) {\n this.value.set(value);\n }\n\n registerOnChange(fn: any) {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled.set(disabled);\n }\n\n // TODO: make this method work\n public clearSelection() {\n this.dropdown.clear(this.value());\n this.dropdown.value = null;\n this.value.set(null);\n this.onModelChange(null);\n this.onChange.emit(null);\n this.cdr.detectChanges();\n }\n}\n","@if (label()) {\n <label\n (click)=\"dropdown.show(); dropdown.focus()\"\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\n [for]=\"ngControl?.name || label()\"\n >{{ label() }}</label\n >\n}\n<p-select\n #dropdown\n appendTo=\"body\"\n [overlayOptions]=\"{ baseZIndex: 1051 }\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onValueChange($event)\"\n [options]=\"options()\"\n [optionLabel]=\"optionLabel()\"\n [optionValue]=\"optionValue()\"\n (onBlur)=\"onTouched()\"\n [disabled]=\"disabled() || readonly()\"\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\n [id]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\n [invalid]=\"isInvalid(ngControl?.control)\"\n placeholder=\"{{ hasPlaceholderPrefix() ? 'select' : '' }} {{\n placeholder() ?? label() ?? ''\n }}\"\n [filter]=\"filter()\"\n [filterBy]=\"filterBy()\"\n [dataKey]=\"dataKey()\"\n styleClass=\"w-full\"\n [showClear]=\"showClear()\"\n appendTo=\"body\"\n></p-select>\n\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"masterteam-components-select-field.mjs","sources":["../../../../packages/masterteam/components/select-field/select-field.ts","../../../../packages/masterteam/components/select-field/select-field.html","../../../../packages/masterteam/components/select-field/masterteam-components-select-field.ts"],"sourcesContent":["import {\n Component,\n EventEmitter,\n HostBinding,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n signal,\n input,\n inject,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n effect,\n} from '@angular/core';\n\nimport {\n ControlValueAccessor,\n FormsModule,\n NgControl,\n Validators,\n} from '@angular/forms';\nimport { Select } from 'primeng/select';\nimport { FieldValidation } from '@masterteam/components/field-validation';\nimport { isInvalid } from '@masterteam/components';\nimport { TranslocoModule } from '@jsverse/transloco';\n\n@Component({\n selector: 'mt-select-field',\n standalone: true,\n imports: [FormsModule, Select, FieldValidation, TranslocoModule],\n templateUrl: './select-field.html',\n styleUrls: ['./select-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'grid gap-1',\n },\n})\nexport class SelectField implements ControlValueAccessor, OnInit, OnChanges {\n cdr = inject(ChangeDetectorRef);\n @ViewChild('dropdown', { static: true })\n dropdown: Select;\n\n readonly field = input<boolean>(true);\n readonly label = input<string>('');\n readonly placeholder = input<string>('');\n readonly hasPlaceholderPrefix = input<boolean>(true);\n readonly class = input<string>('');\n readonly readonly = input<boolean>(false);\n readonly pInputs = input<Partial<Select>>();\n readonly options = input<any[] | undefined>(undefined);\n readonly optionValue = input<string | undefined>(undefined);\n readonly optionLabel = input<string | undefined>(undefined);\n readonly filter = input<boolean | undefined>(undefined);\n readonly filterBy = input<string | undefined>(undefined);\n readonly dataKey = input<string | undefined>(undefined);\n readonly showClear = input<boolean | undefined>(undefined);\n readonly clearAfterSelect = input<boolean | undefined>(undefined);\n readonly required = input<boolean>(false); // Add readonly required input\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n @HostBinding('class') styleClass: string;\n\n requiredValidator = Validators.required;\n value = signal<any>(null);\n disabled = signal<boolean>(false);\n\n onTouched: () => void = () => {};\n onModelChange: (value: any) => void = () => {};\n\n public ngControl = inject(NgControl, { self: true });\n\n isInvalid = isInvalid;\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n effect(() => {\n if (this.ngControl.control && this.required()) {\n this.ngControl.control.addValidators(Validators.required);\n this.ngControl.control.updateValueAndValidity();\n }\n });\n }\n\n applyInputsToDropdown() {\n // Object.assign(this.dropdown, this.pInputs());\n }\n\n ngOnInit() {\n this.styleClass = this.class();\n if (this.pInputs()) {\n this.applyInputsToDropdown();\n }\n }\n\n onValueChange(value: any) {\n this.onModelChange(value);\n this.value.set(value);\n this.onChange.emit(value);\n if (this.clearAfterSelect()) {\n this.clearSelection();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['pInputs']) {\n this.applyInputsToDropdown();\n }\n }\n\n writeValue(value: string) {\n this.value.set(value);\n }\n\n registerOnChange(fn: any) {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled.set(disabled);\n }\n\n // TODO: make this method work\n public clearSelection() {\n this.dropdown.clear(this.value());\n this.dropdown.value = null;\n this.value.set(null);\n this.onModelChange(null);\n this.onChange.emit(null);\n this.cdr.detectChanges();\n }\n}\n","@if (label()) {\n <label\n (click)=\"dropdown.show(); dropdown.focus()\"\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\n [for]=\"ngControl?.name || label()\"\n >{{ label() }}</label\n >\n}\n<p-select\n #dropdown\n appendTo=\"body\"\n [overlayOptions]=\"{ baseZIndex: 1051 }\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onValueChange($event)\"\n [options]=\"options()\"\n [optionLabel]=\"optionLabel()\"\n [optionValue]=\"optionValue()\"\n (onBlur)=\"onTouched()\"\n [disabled]=\"disabled() || readonly()\"\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\n [id]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\n [invalid]=\"isInvalid(ngControl?.control)\"\n placeholder=\"{{\n (hasPlaceholderPrefix() ? ('components.table.select' | transloco) : '') +\n ' ' +\n (placeholder() ?? label() ?? '')\n }}\"\n [filter]=\"filter()\"\n [filterBy]=\"filterBy()\"\n [dataKey]=\"dataKey()\"\n styleClass=\"w-full\"\n [showClear]=\"showClear()\"\n appendTo=\"body\"\n></p-select>\n\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, booleanAttribute, Component } from '@angular/core';
|
|
3
|
+
import { Icon } from '@masterteam/icons';
|
|
4
|
+
import { RouterLinkActive, RouterLink } from '@angular/router';
|
|
5
|
+
import { Tooltip } from '@masterteam/components/tooltip';
|
|
6
|
+
|
|
7
|
+
class Sidebar {
|
|
8
|
+
items = input([], ...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
9
|
+
bgColor = input(...(ngDevMode ? [undefined, { debugName: "bgColor" }] : []));
|
|
10
|
+
bgImage = input(...(ngDevMode ? [undefined, { debugName: "bgImage" }] : []));
|
|
11
|
+
bgRepeat = input(false, ...(ngDevMode ? [{ debugName: "bgRepeat", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
12
|
+
iconsColor = input('var(--p-text-color)', ...(ngDevMode ? [{ debugName: "iconsColor" }] : []));
|
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: Sidebar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: Sidebar, isStandalone: true, selector: "mt-sidebar", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, bgColor: { classPropertyName: "bgColor", publicName: "bgColor", isSignal: true, isRequired: false, transformFunction: null }, bgImage: { classPropertyName: "bgImage", publicName: "bgImage", isSignal: true, isRequired: false, transformFunction: null }, bgRepeat: { classPropertyName: "bgRepeat", publicName: "bgRepeat", isSignal: true, isRequired: false, transformFunction: null }, iconsColor: { classPropertyName: "iconsColor", publicName: "iconsColor", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"flex flex-col bg-surface-200 dark:bg-surface-800 h-[calc(100vh-var(--header-height))] overflow-clip w-16 border-e-1 border-surface-300 rounded-ss-2xl\"\n>\n <div\n class=\"h-full flex flex-col gap-3 px-2 py-8\"\n [style.backgroundColor]=\"bgColor()\"\n [style.backgroundImage]=\"bgImage() ? 'url(' + bgImage() + ')' : null\"\n [class.bg-no-repeat]=\"!bgRepeat()\"\n [class.bg-repeat-y]=\"bgRepeat()\"\n >\n @for (item of items(); track item.id) {\n <a\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"bg-surface-0 dark:bg-surface-950\"\n #rla=\"routerLinkActive\"\n class=\"flex items-center justify-center size-[47px] dark:hover:bg-surface-900 hover:bg-surface-100 transition-colors rounded-xl\"\n mtTooltip=\"{{ item.title }}\"\n [style.color]=\"rla.isActive ? 'var(--p-primary-500)' : iconsColor()\"\n >\n <mt-icon [icon]=\"item.icon\" />\n </a>\n }\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "directive", type: Tooltip, selector: "[mtTooltip]" }] });
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: Sidebar, decorators: [{
|
|
17
|
+
type: Component,
|
|
18
|
+
args: [{ selector: 'mt-sidebar', standalone: true, imports: [RouterLinkActive, RouterLink, Icon, Tooltip], template: "<div\n class=\"flex flex-col bg-surface-200 dark:bg-surface-800 h-[calc(100vh-var(--header-height))] overflow-clip w-16 border-e-1 border-surface-300 rounded-ss-2xl\"\n>\n <div\n class=\"h-full flex flex-col gap-3 px-2 py-8\"\n [style.backgroundColor]=\"bgColor()\"\n [style.backgroundImage]=\"bgImage() ? 'url(' + bgImage() + ')' : null\"\n [class.bg-no-repeat]=\"!bgRepeat()\"\n [class.bg-repeat-y]=\"bgRepeat()\"\n >\n @for (item of items(); track item.id) {\n <a\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"bg-surface-0 dark:bg-surface-950\"\n #rla=\"routerLinkActive\"\n class=\"flex items-center justify-center size-[47px] dark:hover:bg-surface-900 hover:bg-surface-100 transition-colors rounded-xl\"\n mtTooltip=\"{{ item.title }}\"\n [style.color]=\"rla.isActive ? 'var(--p-primary-500)' : iconsColor()\"\n >\n <mt-icon [icon]=\"item.icon\" />\n </a>\n }\n </div>\n</div>\n" }]
|
|
19
|
+
}] });
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Generated bundle index. Do not edit.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
export { Sidebar };
|
|
26
|
+
//# sourceMappingURL=masterteam-components-sidebar.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"masterteam-components-sidebar.mjs","sources":["../../../../packages/masterteam/components/sidebar/sidebar.ts","../../../../packages/masterteam/components/sidebar/sidebar.html","../../../../packages/masterteam/components/sidebar/masterteam-components-sidebar.ts"],"sourcesContent":["import { booleanAttribute, Component, input } from '@angular/core';\nimport { Icon, MTIcon } from '@masterteam/icons';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { Tooltip } from '@masterteam/components/tooltip';\n\nexport interface SidebarItem {\n id: string | number;\n title: string;\n icon?: MTIcon;\n routerLink?: any[] | string;\n}\n\n@Component({\n selector: 'mt-sidebar',\n standalone: true,\n imports: [RouterLinkActive, RouterLink, Icon, Tooltip],\n templateUrl: './sidebar.html',\n})\nexport class Sidebar {\n items = input<SidebarItem[]>([]);\n\n bgColor = input<string>();\n bgImage = input<string>();\n bgRepeat = input<boolean, unknown>(false, { transform: booleanAttribute });\n iconsColor = input<string>('var(--p-text-color)');\n}\n","<div\n class=\"flex flex-col bg-surface-200 dark:bg-surface-800 h-[calc(100vh-var(--header-height))] overflow-clip w-16 border-e-1 border-surface-300 rounded-ss-2xl\"\n>\n <div\n class=\"h-full flex flex-col gap-3 px-2 py-8\"\n [style.backgroundColor]=\"bgColor()\"\n [style.backgroundImage]=\"bgImage() ? 'url(' + bgImage() + ')' : null\"\n [class.bg-no-repeat]=\"!bgRepeat()\"\n [class.bg-repeat-y]=\"bgRepeat()\"\n >\n @for (item of items(); track item.id) {\n <a\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"bg-surface-0 dark:bg-surface-950\"\n #rla=\"routerLinkActive\"\n class=\"flex items-center justify-center size-[47px] dark:hover:bg-surface-900 hover:bg-surface-100 transition-colors rounded-xl\"\n mtTooltip=\"{{ item.title }}\"\n [style.color]=\"rla.isActive ? 'var(--p-primary-500)' : iconsColor()\"\n >\n <mt-icon [icon]=\"item.icon\" />\n </a>\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAkBa,OAAO,CAAA;AAClB,IAAA,KAAK,GAAG,KAAK,CAAgB,EAAE,iDAAC;IAEhC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IACzB,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAmB,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAC1E,IAAA,UAAU,GAAG,KAAK,CAAS,qBAAqB,sDAAC;uGANtC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBpB,w9BAwBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTY,gBAAgB,8MAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA;;2FAG1C,OAAO,EAAA,UAAA,EAAA,CAAA;kBANnB,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,w9BAAA,EAAA;;;AEfxD;;AAEG;;;;"}
|
|
@@ -17,6 +17,8 @@ import { SkeletonModule } from 'primeng/skeleton';
|
|
|
17
17
|
import * as i4 from 'primeng/progressbar';
|
|
18
18
|
import { ProgressBarModule } from 'primeng/progressbar';
|
|
19
19
|
import { ConfirmationService } from '@masterteam/components/confirmation';
|
|
20
|
+
import * as i5 from '@jsverse/transloco';
|
|
21
|
+
import { TranslocoModule } from '@jsverse/transloco';
|
|
20
22
|
|
|
21
23
|
class Table {
|
|
22
24
|
selectionChange = output();
|
|
@@ -239,7 +241,7 @@ class Table {
|
|
|
239
241
|
}
|
|
240
242
|
}
|
|
241
243
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: Table, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
242
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: Table, isStandalone: true, selector: "mt-table", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, rowActions: { classPropertyName: "rowActions", publicName: "rowActions", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, showGridlines: { classPropertyName: "showGridlines", publicName: "showGridlines", isSignal: true, isRequired: false, transformFunction: null }, stripedRows: { classPropertyName: "stripedRows", publicName: "stripedRows", isSignal: true, isRequired: false, transformFunction: null }, selectableRows: { classPropertyName: "selectableRows", publicName: "selectableRows", isSignal: true, isRequired: false, transformFunction: null }, generalSearch: { classPropertyName: "generalSearch", publicName: "generalSearch", isSignal: true, isRequired: false, transformFunction: null }, showFilters: { classPropertyName: "showFilters", publicName: "showFilters", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, updating: { classPropertyName: "updating", publicName: "updating", isSignal: true, isRequired: false, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: false, transformFunction: null }, tabsOptionLabel: { classPropertyName: "tabsOptionLabel", publicName: "tabsOptionLabel", isSignal: true, isRequired: false, transformFunction: null }, tabsOptionValue: { classPropertyName: "tabsOptionValue", publicName: "tabsOptionValue", isSignal: true, isRequired: false, transformFunction: null }, activeTab: { classPropertyName: "activeTab", publicName: "activeTab", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, paginatorPosition: { classPropertyName: "paginatorPosition", publicName: "paginatorPosition", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, first: { classPropertyName: "first", publicName: "first", isSignal: true, isRequired: false, transformFunction: null }, filterTerm: { classPropertyName: "filterTerm", publicName: "filterTerm", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", cellChange: "cellChange", activeTab: "activeTabChange", onTabChange: "onTabChange", pageSize: "pageSizeChange", currentPage: "currentPageChange", first: "firstChange", filterTerm: "filterTermChange" }, queries: [{ propertyName: "captionStartContent", first: true, predicate: ["captionStart"], descendants: true, isSignal: true }, { propertyName: "captionEndContent", first: true, predicate: ["captionEnd"], descendants: true, isSignal: true }, { propertyName: "emptyContent", first: true, predicate: ["empty"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"space-y-4\">\n <div>\n @if (\n captionStartContent() ||\n captionEndContent() ||\n generalSearch() ||\n showFilters() ||\n tabs()?.length > 0 ||\n actions()?.length > 0\n ) {\n <div class=\"p-datatable-header\">\n <div\n class=\"flex relative\"\n [class]=\"!generalSearch() ? 'justify-end' : 'justify-between'\"\n >\n <div class=\"flex items-center gap-2\">\n <ng-container\n *ngTemplateOutlet=\"captionStartContent()\"\n ></ng-container>\n @if (tabs()) {\n <mt-tabs\n [(active)]=\"activeTab\"\n [options]=\"tabs()\"\n [optionLabel]=\"tabsOptionLabel()\"\n [optionValue]=\"tabsOptionValue()\"\n (onChange)=\"tabChanged($event)\"\n size=\"large\"\n ></mt-tabs>\n }\n @if (generalSearch()) {\n <mt-text-field\n [(ngModel)]=\"filterTerm\"\n (change)=\"onSearchChange($event)\"\n icon=\"general.search-lg\"\n placeholder=\"Search...\"\n ></mt-text-field>\n }\n </div>\n <div class=\"flex items-center gap-2\">\n @if (showFilters()) {\n <mt-button\n variant=\"outline\"\n (click)=\"toggleFilterPanel()\"\n label=\"Filter\"\n [badge]=\"activeFilterCount()\"\n icon=\"general.filter-funnel-01\"\n >\n </mt-button>\n @if (isFilterPanelOpen()) {\n <div\n class=\"absolute top-full right-0 z-10 mt-2 w-72 origin-top-right rounded-md bg-content shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\"\n role=\"menu\"\n >\n <div class=\"p-4\">\n <h3 class=\"text-base font-semibold\">Filter Options</h3>\n </div>\n <div\n class=\"border-t border-surface-300 dark:border-surface-500 p-4 space-y-4\"\n >\n @for (col of filterableColumns(); track col.key) {\n <div class=\"space-y-1\">\n <label class=\"block text-sm font-medium\">\n {{ col.filterConfig?.label }}\n </label>\n @switch (col.filterConfig?.type) {\n @case (\"text\") {\n <mt-text-field\n [(ngModel)]=\"pendingFilters()[col.key]\"\n (ngModelChange)=\"\n updatePendingFilter(col.key, $event)\n \"\n ></mt-text-field>\n }\n @case (\"select\") {\n <mt-select-field\n [(ngModel)]=\"pendingFilters()[col.key]\"\n (ngModelChange)=\"\n updatePendingFilter(col.key, $event)\n \"\n [options]=\"col.filterConfig?.options\"\n [hasPlaceholderPrefix]=\"false\"\n [placeholder]=\"\n 'Select ' + col.filterConfig?.label\n \"\n showClear\n ></mt-select-field>\n }\n }\n </div>\n }\n </div>\n <div\n class=\"flex items-center justify-end space-x-2 border-t border-surface-300 dark:border-surface-500 bg-surface-50 dark:bg-surface-950 p-4 rounded-b-md\"\n >\n <mt-button\n variant=\"outlined\"\n (click)=\"resetFilters()\"\n label=\"Reset\"\n />\n <mt-button (click)=\"applyFilters()\" label=\"Apply\" />\n </div>\n </div>\n }\n }\n @if (actions()?.length > 0) {\n <div class=\"flex items-center space-x-2\">\n @for (action of actions(); track action.label) {\n <mt-button\n [icon]=\"action.icon\"\n [severity]=\"action.color\"\n [variant]=\"action.variant\"\n [size]=\"action.size\"\n (click)=\"action.action(row)\"\n [label]=\"action.label\"\n [tooltip]=\"action.tooltip\"\n ></mt-button>\n }\n </div>\n }\n <ng-container\n *ngTemplateOutlet=\"captionEndContent()\"\n ></ng-container>\n </div>\n </div>\n </div>\n }\n @if (!loading() && emptyContent() && data().length === 0) {\n <div\n class=\"p-4 bg-content rounded-md text-center text-gray-600 dark:text-gray-300\"\n >\n <ng-container *ngTemplateOutlet=\"emptyContent()\"></ng-container>\n </div>\n } @else {\n <div class=\"overflow-x-auto bg-content\">\n <p-table\n [value]=\"displayData()\"\n [columns]=\"columns()\"\n [size]=\"size()\"\n [showGridlines]=\"showGridlines()\"\n [stripedRows]=\"stripedRows()\"\n [first]=\"first()\"\n [rows]=\"pageSize()\"\n (onPage)=\"onTablePage($event)\"\n paginator\n paginatorStyleClass=\"hidden!\"\n class=\"min-w-full text-sm align-middle table-fixed\"\n >\n <ng-template\n #header\n let-columns\n class=\"bg-surface-50 dark:bg-surface-950 border-b border-surface-300 dark:border-surface-500\"\n >\n <tr>\n @if (selectableRows()) {\n <th class=\"w-12 text-start\">\n <mt-checkbox-field\n [ngModel]=\"allSelectedOnPage()\"\n (ngModelChange)=\"toggleAllRowsOnPage()\"\n ></mt-checkbox-field>\n </th>\n }\n\n @for (col of columns; track col.key) {\n <th\n class=\"text-start font-semibold text-gray-600 dark:text-gray-50 uppercase tracking-wider\"\n >\n {{ col.label }}\n </th>\n }\n\n @if (rowActions().length > 0) {\n <th\n class=\"text-end! font-semibold text-gray-600 dark:text-gray-50 uppercase tracking-wider\"\n >\n Actions\n </th>\n }\n </tr>\n @if (updating()) {\n <tr>\n <th\n [attr.colspan]=\"\n columns.length +\n (selectableRows() ? 1 : 0) +\n (rowActions().length > 0 ? 1 : 0)\n \"\n class=\"!p-0\"\n >\n <p-progressBar\n mode=\"indeterminate\"\n [style]=\"{ height: '4px' }\"\n />\n </th>\n </tr>\n }\n </ng-template>\n <ng-template\n #body\n let-row\n let-columns=\"columns\"\n class=\"divide-y divide-gray-200\"\n >\n @if (loading()) {\n <tr>\n @if (selectableRows()) {\n <td><p-skeleton /></td>\n }\n @for (col of columns; track col.key) {\n <td><p-skeleton /></td>\n }\n @if (rowActions().length > 0) {\n <td><p-skeleton /></td>\n }\n </tr>\n } @else {\n <tr\n class=\"hover:bg-gray-50 dark:hover:bg-surface-950 border-surface-300 dark:border-surface-500\"\n >\n @if (selectableRows()) {\n <td class=\"w-12\">\n <mt-checkbox-field\n [ngModel]=\"selectedRows().has(row)\"\n (ngModelChange)=\"toggleRow(row)\"\n ></mt-checkbox-field>\n </td>\n }\n\n @for (col of columns; track col.key) {\n <td class=\"text-gray-700 dark:text-gray-100\">\n @switch (col.type) {\n @case (\"boolean\") {\n <mt-toggle-field\n [(ngModel)]=\"row[col.key]\"\n (ngModelChange)=\"\n onCellChange(row, col.key, $event, 'boolean')\n \"\n ></mt-toggle-field>\n }\n @case (\"date\") {\n {{ getProperty(row, col.key) | date: \"mediumDate\" }}\n }\n @case (\"custom\") {\n <ng-container\n *ngTemplateOutlet=\"\n col.customCellTpl;\n context: { $implicit: row }\n \"\n >\n </ng-container>\n }\n @default {\n {{ getProperty(row, col.key) }}\n }\n }\n </td>\n }\n\n @if (rowActions().length > 0) {\n <td class=\"text-right\">\n <div class=\"flex items-center justify-end space-x-2\">\n @for (action of rowActions(); track action.label) {\n @let hidden = action.hidden?.(row);\n @if (!hidden) {\n <mt-button\n [icon]=\"action.icon\"\n [severity]=\"action.color\"\n [variant]=\"action.variant\"\n [size]=\"action.size || 'small'\"\n (click)=\"rowAction($event, action, row)\"\n [tooltip]=\"action.tooltip\"\n [label]=\"action.label\"\n [loading]=\"resolveActionLoading(action, row)\"\n ></mt-button>\n }\n }\n </div>\n </td>\n }\n </tr>\n }\n </ng-template>\n <ng-template #emptymessage>\n <tr>\n <td colspan=\"20\" class=\"text-center\">\n <div class=\"flex justify-center\">No data found.</div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n }\n </div>\n\n <div class=\"flex flex-col gap-3\" [class]=\"'items-' + paginatorPosition()\">\n <mt-paginator\n [(rows)]=\"pageSize\"\n [(first)]=\"first\"\n [(page)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\"\n [alwaysShow]=\"false\"\n [rowsPerPageOptions]=\"[5, 10, 20, 50]\"\n ></mt-paginator>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TableModule }, { kind: "component", type: i1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ToggleField, selector: "mt-toggle-field", inputs: ["label", "labelPosition", "placeholder", "readonly", "pInputs", "required"], outputs: ["onChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: TextField, selector: "mt-text-field", inputs: ["field", "hint", "label", "placeholder", "class", "type", "readonly", "pInputs", "required", "icon", "iconPosition"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required"], outputs: ["onChange"] }, { kind: "component", type: Paginator, selector: "mt-paginator", inputs: ["rows", "totalRecords", "first", "page", "rowsPerPageOptions", "showFirstLastIcon", "showCurrentPageReport", "fluid", "pageLinkSize", "alwaysShow"], outputs: ["rowsChange", "firstChange", "pageChange", "onPageChange"] }, { kind: "component", type: CheckboxField, selector: "mt-checkbox-field", inputs: ["label", "labelPosition", "placeholder", "readonly", "pInputs", "required"], outputs: ["onChange"] }, { kind: "component", type: Tabs, selector: "mt-tabs", inputs: ["options", "optionLabel", "optionValue", "active", "size", "fluid", "disabled"], outputs: ["activeChange", "onChange"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i3.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "ngmodule", type: ProgressBarModule }, { kind: "component", type: i4.ProgressBar, selector: "p-progressBar, p-progressbar, p-progress-bar", inputs: ["value", "showValue", "styleClass", "valueStyleClass", "unit", "mode", "color"] }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
244
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: Table, isStandalone: true, selector: "mt-table", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, rowActions: { classPropertyName: "rowActions", publicName: "rowActions", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, showGridlines: { classPropertyName: "showGridlines", publicName: "showGridlines", isSignal: true, isRequired: false, transformFunction: null }, stripedRows: { classPropertyName: "stripedRows", publicName: "stripedRows", isSignal: true, isRequired: false, transformFunction: null }, selectableRows: { classPropertyName: "selectableRows", publicName: "selectableRows", isSignal: true, isRequired: false, transformFunction: null }, generalSearch: { classPropertyName: "generalSearch", publicName: "generalSearch", isSignal: true, isRequired: false, transformFunction: null }, showFilters: { classPropertyName: "showFilters", publicName: "showFilters", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, updating: { classPropertyName: "updating", publicName: "updating", isSignal: true, isRequired: false, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: false, transformFunction: null }, tabsOptionLabel: { classPropertyName: "tabsOptionLabel", publicName: "tabsOptionLabel", isSignal: true, isRequired: false, transformFunction: null }, tabsOptionValue: { classPropertyName: "tabsOptionValue", publicName: "tabsOptionValue", isSignal: true, isRequired: false, transformFunction: null }, activeTab: { classPropertyName: "activeTab", publicName: "activeTab", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, paginatorPosition: { classPropertyName: "paginatorPosition", publicName: "paginatorPosition", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, first: { classPropertyName: "first", publicName: "first", isSignal: true, isRequired: false, transformFunction: null }, filterTerm: { classPropertyName: "filterTerm", publicName: "filterTerm", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", cellChange: "cellChange", activeTab: "activeTabChange", onTabChange: "onTabChange", pageSize: "pageSizeChange", currentPage: "currentPageChange", first: "firstChange", filterTerm: "filterTermChange" }, queries: [{ propertyName: "captionStartContent", first: true, predicate: ["captionStart"], descendants: true, isSignal: true }, { propertyName: "captionEndContent", first: true, predicate: ["captionEnd"], descendants: true, isSignal: true }, { propertyName: "emptyContent", first: true, predicate: ["empty"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"space-y-4 rounded-2xl\">\n <div>\n @if (\n captionStartContent() ||\n captionEndContent() ||\n generalSearch() ||\n showFilters() ||\n tabs()?.length > 0 ||\n actions()?.length > 0\n ) {\n <div class=\"p-datatable-header rounded-t-2xl\">\n <div\n class=\"flex relative\"\n [class]=\"!generalSearch() ? 'justify-end' : 'justify-between'\"\n >\n <div class=\"flex items-center gap-2\">\n <ng-container\n *ngTemplateOutlet=\"captionStartContent()\"\n ></ng-container>\n @if (tabs()) {\n <mt-tabs\n [(active)]=\"activeTab\"\n [options]=\"tabs()\"\n [optionLabel]=\"tabsOptionLabel()\"\n [optionValue]=\"tabsOptionValue()\"\n (onChange)=\"tabChanged($event)\"\n size=\"large\"\n ></mt-tabs>\n }\n @if (generalSearch()) {\n <mt-text-field\n [(ngModel)]=\"filterTerm\"\n (change)=\"onSearchChange($event)\"\n icon=\"general.search-lg\"\n [placeholder]=\"'components.table.search' | transloco\"\n ></mt-text-field>\n }\n </div>\n <div class=\"flex items-center gap-2\">\n @if (showFilters()) {\n <mt-button\n variant=\"outline\"\n (click)=\"toggleFilterPanel()\"\n [label]=\"'components.table.filter' | transloco\"\n [badge]=\"activeFilterCount()\"\n icon=\"general.filter-funnel-01\"\n >\n </mt-button>\n @if (isFilterPanelOpen()) {\n <div\n class=\"absolute top-full right-0 z-10 mt-2 w-72 origin-top-right rounded-md bg-content shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\"\n role=\"menu\"\n >\n <div class=\"p-4\">\n <h3 class=\"text-base font-semibold\">\n {{ \"components.table.filterOptions\" | transloco }}\n </h3>\n </div>\n <div\n class=\"border-t border-surface-300 dark:border-surface-500 p-4 space-y-4\"\n >\n @for (col of filterableColumns(); track col.key) {\n <div class=\"space-y-1\">\n <label class=\"block text-sm font-medium\">\n {{ col.filterConfig?.label }}\n </label>\n @switch (col.filterConfig?.type) {\n @case (\"text\") {\n <mt-text-field\n [(ngModel)]=\"pendingFilters()[col.key]\"\n (ngModelChange)=\"\n updatePendingFilter(col.key, $event)\n \"\n ></mt-text-field>\n }\n @case (\"select\") {\n <mt-select-field\n [(ngModel)]=\"pendingFilters()[col.key]\"\n (ngModelChange)=\"\n updatePendingFilter(col.key, $event)\n \"\n [options]=\"col.filterConfig?.options\"\n [hasPlaceholderPrefix]=\"false\"\n [placeholder]=\"\n ('components.table.select' | transloco) +\n ' ' +\n col.filterConfig?.label\n \"\n showClear\n ></mt-select-field>\n }\n }\n </div>\n }\n </div>\n <div\n class=\"flex items-center justify-end space-x-2 border-t border-surface-300 dark:border-surface-500 bg-surface-50 dark:bg-surface-950 p-4 rounded-b-md\"\n >\n <mt-button\n variant=\"outlined\"\n (click)=\"resetFilters()\"\n [label]=\"'components.table.reset' | transloco\"\n />\n <mt-button\n (click)=\"applyFilters()\"\n [label]=\"'components.table.apply' | transloco\"\n />\n </div>\n </div>\n }\n }\n @if (actions()?.length > 0) {\n <div class=\"flex items-center space-x-2\">\n @for (action of actions(); track action.label) {\n <mt-button\n [icon]=\"action.icon\"\n [severity]=\"action.color\"\n [variant]=\"action.variant\"\n [size]=\"action.size\"\n (click)=\"action.action(row)\"\n [label]=\"action.label\"\n [tooltip]=\"action.tooltip\"\n ></mt-button>\n }\n </div>\n }\n <ng-container\n *ngTemplateOutlet=\"captionEndContent()\"\n ></ng-container>\n </div>\n </div>\n </div>\n }\n @if (!loading() && emptyContent() && data().length === 0) {\n <div\n class=\"p-4 bg-content rounded-md text-center text-gray-600 dark:text-gray-300\"\n >\n <ng-container *ngTemplateOutlet=\"emptyContent()\"></ng-container>\n </div>\n } @else {\n <div class=\"overflow-x-auto bg-content\">\n <p-table\n [value]=\"displayData()\"\n [columns]=\"columns()\"\n [size]=\"size()\"\n [showGridlines]=\"showGridlines()\"\n [stripedRows]=\"stripedRows()\"\n [first]=\"first()\"\n [rows]=\"pageSize()\"\n (onPage)=\"onTablePage($event)\"\n paginator\n paginatorStyleClass=\"hidden!\"\n class=\"min-w-full text-sm align-middle table-fixed\"\n >\n <ng-template\n #header\n let-columns\n class=\"bg-surface-50 dark:bg-surface-950 border-b border-surface-300 dark:border-surface-500\"\n >\n <tr>\n @if (selectableRows()) {\n <th class=\"w-12 text-start\">\n <mt-checkbox-field\n [ngModel]=\"allSelectedOnPage()\"\n (ngModelChange)=\"toggleAllRowsOnPage()\"\n ></mt-checkbox-field>\n </th>\n }\n\n @for (col of columns; track col.key) {\n <th\n class=\"text-start font-semibold text-gray-600 dark:text-gray-50 uppercase tracking-wider\"\n >\n {{ col.label }}\n </th>\n }\n\n @if (rowActions().length > 0) {\n <th\n class=\"text-end! font-semibold text-gray-600 dark:text-gray-50 uppercase tracking-wider\"\n >\n Actions\n </th>\n }\n </tr>\n @if (updating()) {\n <tr>\n <th\n [attr.colspan]=\"\n columns.length +\n (selectableRows() ? 1 : 0) +\n (rowActions().length > 0 ? 1 : 0)\n \"\n class=\"!p-0\"\n >\n <p-progressBar\n mode=\"indeterminate\"\n [style]=\"{ height: '4px' }\"\n />\n </th>\n </tr>\n }\n </ng-template>\n <ng-template\n #body\n let-row\n let-columns=\"columns\"\n class=\"divide-y divide-gray-200\"\n >\n @if (loading()) {\n <tr>\n @if (selectableRows()) {\n <td><p-skeleton /></td>\n }\n @for (col of columns; track col.key) {\n <td><p-skeleton /></td>\n }\n @if (rowActions().length > 0) {\n <td><p-skeleton /></td>\n }\n </tr>\n } @else {\n <tr\n class=\"hover:bg-gray-50 dark:hover:bg-surface-950 border-surface-300 dark:border-surface-500\"\n >\n @if (selectableRows()) {\n <td class=\"w-12\">\n <mt-checkbox-field\n [ngModel]=\"selectedRows().has(row)\"\n (ngModelChange)=\"toggleRow(row)\"\n ></mt-checkbox-field>\n </td>\n }\n\n @for (col of columns; track col.key) {\n <td class=\"text-gray-700 dark:text-gray-100\">\n @switch (col.type) {\n @case (\"boolean\") {\n <mt-toggle-field\n [(ngModel)]=\"row[col.key]\"\n (ngModelChange)=\"\n onCellChange(row, col.key, $event, 'boolean')\n \"\n ></mt-toggle-field>\n }\n @case (\"date\") {\n {{ getProperty(row, col.key) | date: \"mediumDate\" }}\n }\n @case (\"custom\") {\n <ng-container\n *ngTemplateOutlet=\"\n col.customCellTpl;\n context: { $implicit: row }\n \"\n >\n </ng-container>\n }\n @default {\n {{ getProperty(row, col.key) }}\n }\n }\n </td>\n }\n\n @if (rowActions().length > 0) {\n <td class=\"text-right\">\n <div class=\"flex items-center justify-end space-x-2\">\n @for (action of rowActions(); track action.label) {\n @let hidden = action.hidden?.(row);\n @if (!hidden) {\n <mt-button\n [icon]=\"action.icon\"\n [severity]=\"action.color\"\n [variant]=\"action.variant\"\n [size]=\"action.size || 'small'\"\n (click)=\"rowAction($event, action, row)\"\n [tooltip]=\"action.tooltip\"\n [label]=\"action.label\"\n [loading]=\"resolveActionLoading(action, row)\"\n ></mt-button>\n }\n }\n </div>\n </td>\n }\n </tr>\n }\n </ng-template>\n <ng-template #emptymessage>\n <tr>\n <td colspan=\"20\" class=\"text-center\">\n <div class=\"flex justify-center\">No data found.</div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col gap-3 pb-3 px-4\"\n [class]=\"'items-' + paginatorPosition()\"\n >\n <mt-paginator\n [(rows)]=\"pageSize\"\n [(first)]=\"first\"\n [(page)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\"\n [alwaysShow]=\"false\"\n [rowsPerPageOptions]=\"[5, 10, 20, 50]\"\n ></mt-paginator>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TableModule }, { kind: "component", type: i1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ToggleField, selector: "mt-toggle-field", inputs: ["label", "labelPosition", "placeholder", "readonly", "pInputs", "required"], outputs: ["onChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: TextField, selector: "mt-text-field", inputs: ["field", "hint", "label", "placeholder", "class", "type", "readonly", "pInputs", "required", "icon", "iconPosition"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required"], outputs: ["onChange"] }, { kind: "component", type: Paginator, selector: "mt-paginator", inputs: ["rows", "totalRecords", "first", "page", "rowsPerPageOptions", "showFirstLastIcon", "showCurrentPageReport", "fluid", "pageLinkSize", "alwaysShow"], outputs: ["rowsChange", "firstChange", "pageChange", "onPageChange"] }, { kind: "component", type: CheckboxField, selector: "mt-checkbox-field", inputs: ["label", "labelPosition", "placeholder", "readonly", "pInputs", "required"], outputs: ["onChange"] }, { kind: "component", type: Tabs, selector: "mt-tabs", inputs: ["options", "optionLabel", "optionValue", "active", "size", "fluid", "disabled"], outputs: ["activeChange", "onChange"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i3.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "ngmodule", type: ProgressBarModule }, { kind: "component", type: i4.ProgressBar, selector: "p-progressBar, p-progressbar, p-progress-bar", inputs: ["value", "showValue", "styleClass", "valueStyleClass", "unit", "mode", "color"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: i5.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
243
245
|
}
|
|
244
246
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: Table, decorators: [{
|
|
245
247
|
type: Component,
|
|
@@ -257,7 +259,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
257
259
|
Tabs,
|
|
258
260
|
SkeletonModule,
|
|
259
261
|
ProgressBarModule,
|
|
260
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"space-y-4\">\n <div>\n @if (\n captionStartContent() ||\n captionEndContent() ||\n generalSearch() ||\n showFilters() ||\n tabs()?.length > 0 ||\n actions()?.length > 0\n ) {\n <div class=\"p-datatable-header\">\n <div\n class=\"flex relative\"\n [class]=\"!generalSearch() ? 'justify-end' : 'justify-between'\"\n >\n <div class=\"flex items-center gap-2\">\n <ng-container\n *ngTemplateOutlet=\"captionStartContent()\"\n ></ng-container>\n @if (tabs()) {\n <mt-tabs\n [(active)]=\"activeTab\"\n [options]=\"tabs()\"\n [optionLabel]=\"tabsOptionLabel()\"\n [optionValue]=\"tabsOptionValue()\"\n (onChange)=\"tabChanged($event)\"\n size=\"large\"\n ></mt-tabs>\n }\n @if (generalSearch()) {\n <mt-text-field\n [(ngModel)]=\"filterTerm\"\n (change)=\"onSearchChange($event)\"\n icon=\"general.search-lg\"\n placeholder=\"Search...\"\n ></mt-text-field>\n }\n </div>\n <div class=\"flex items-center gap-2\">\n @if (showFilters()) {\n <mt-button\n variant=\"outline\"\n (click)=\"toggleFilterPanel()\"\n label=\"Filter\"\n [badge]=\"activeFilterCount()\"\n icon=\"general.filter-funnel-01\"\n >\n </mt-button>\n @if (isFilterPanelOpen()) {\n <div\n class=\"absolute top-full right-0 z-10 mt-2 w-72 origin-top-right rounded-md bg-content shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\"\n role=\"menu\"\n >\n <div class=\"p-4\">\n <h3 class=\"text-base font-semibold\">Filter Options</h3>\n </div>\n <div\n class=\"border-t border-surface-300 dark:border-surface-500 p-4 space-y-4\"\n >\n @for (col of filterableColumns(); track col.key) {\n <div class=\"space-y-1\">\n <label class=\"block text-sm font-medium\">\n {{ col.filterConfig?.label }}\n </label>\n @switch (col.filterConfig?.type) {\n @case (\"text\") {\n <mt-text-field\n [(ngModel)]=\"pendingFilters()[col.key]\"\n (ngModelChange)=\"\n updatePendingFilter(col.key, $event)\n \"\n ></mt-text-field>\n }\n @case (\"select\") {\n <mt-select-field\n [(ngModel)]=\"pendingFilters()[col.key]\"\n (ngModelChange)=\"\n updatePendingFilter(col.key, $event)\n \"\n [options]=\"col.filterConfig?.options\"\n [hasPlaceholderPrefix]=\"false\"\n [placeholder]=\"\n 'Select ' + col.filterConfig?.label\n \"\n showClear\n ></mt-select-field>\n }\n }\n </div>\n }\n </div>\n <div\n class=\"flex items-center justify-end space-x-2 border-t border-surface-300 dark:border-surface-500 bg-surface-50 dark:bg-surface-950 p-4 rounded-b-md\"\n >\n <mt-button\n variant=\"outlined\"\n (click)=\"resetFilters()\"\n label=\"Reset\"\n />\n <mt-button (click)=\"applyFilters()\" label=\"Apply\" />\n </div>\n </div>\n }\n }\n @if (actions()?.length > 0) {\n <div class=\"flex items-center space-x-2\">\n @for (action of actions(); track action.label) {\n <mt-button\n [icon]=\"action.icon\"\n [severity]=\"action.color\"\n [variant]=\"action.variant\"\n [size]=\"action.size\"\n (click)=\"action.action(row)\"\n [label]=\"action.label\"\n [tooltip]=\"action.tooltip\"\n ></mt-button>\n }\n </div>\n }\n <ng-container\n *ngTemplateOutlet=\"captionEndContent()\"\n ></ng-container>\n </div>\n </div>\n </div>\n }\n @if (!loading() && emptyContent() && data().length === 0) {\n <div\n class=\"p-4 bg-content rounded-md text-center text-gray-600 dark:text-gray-300\"\n >\n <ng-container *ngTemplateOutlet=\"emptyContent()\"></ng-container>\n </div>\n } @else {\n <div class=\"overflow-x-auto bg-content\">\n <p-table\n [value]=\"displayData()\"\n [columns]=\"columns()\"\n [size]=\"size()\"\n [showGridlines]=\"showGridlines()\"\n [stripedRows]=\"stripedRows()\"\n [first]=\"first()\"\n [rows]=\"pageSize()\"\n (onPage)=\"onTablePage($event)\"\n paginator\n paginatorStyleClass=\"hidden!\"\n class=\"min-w-full text-sm align-middle table-fixed\"\n >\n <ng-template\n #header\n let-columns\n class=\"bg-surface-50 dark:bg-surface-950 border-b border-surface-300 dark:border-surface-500\"\n >\n <tr>\n @if (selectableRows()) {\n <th class=\"w-12 text-start\">\n <mt-checkbox-field\n [ngModel]=\"allSelectedOnPage()\"\n (ngModelChange)=\"toggleAllRowsOnPage()\"\n ></mt-checkbox-field>\n </th>\n }\n\n @for (col of columns; track col.key) {\n <th\n class=\"text-start font-semibold text-gray-600 dark:text-gray-50 uppercase tracking-wider\"\n >\n {{ col.label }}\n </th>\n }\n\n @if (rowActions().length > 0) {\n <th\n class=\"text-end! font-semibold text-gray-600 dark:text-gray-50 uppercase tracking-wider\"\n >\n Actions\n </th>\n }\n </tr>\n @if (updating()) {\n <tr>\n <th\n [attr.colspan]=\"\n columns.length +\n (selectableRows() ? 1 : 0) +\n (rowActions().length > 0 ? 1 : 0)\n \"\n class=\"!p-0\"\n >\n <p-progressBar\n mode=\"indeterminate\"\n [style]=\"{ height: '4px' }\"\n />\n </th>\n </tr>\n }\n </ng-template>\n <ng-template\n #body\n let-row\n let-columns=\"columns\"\n class=\"divide-y divide-gray-200\"\n >\n @if (loading()) {\n <tr>\n @if (selectableRows()) {\n <td><p-skeleton /></td>\n }\n @for (col of columns; track col.key) {\n <td><p-skeleton /></td>\n }\n @if (rowActions().length > 0) {\n <td><p-skeleton /></td>\n }\n </tr>\n } @else {\n <tr\n class=\"hover:bg-gray-50 dark:hover:bg-surface-950 border-surface-300 dark:border-surface-500\"\n >\n @if (selectableRows()) {\n <td class=\"w-12\">\n <mt-checkbox-field\n [ngModel]=\"selectedRows().has(row)\"\n (ngModelChange)=\"toggleRow(row)\"\n ></mt-checkbox-field>\n </td>\n }\n\n @for (col of columns; track col.key) {\n <td class=\"text-gray-700 dark:text-gray-100\">\n @switch (col.type) {\n @case (\"boolean\") {\n <mt-toggle-field\n [(ngModel)]=\"row[col.key]\"\n (ngModelChange)=\"\n onCellChange(row, col.key, $event, 'boolean')\n \"\n ></mt-toggle-field>\n }\n @case (\"date\") {\n {{ getProperty(row, col.key) | date: \"mediumDate\" }}\n }\n @case (\"custom\") {\n <ng-container\n *ngTemplateOutlet=\"\n col.customCellTpl;\n context: { $implicit: row }\n \"\n >\n </ng-container>\n }\n @default {\n {{ getProperty(row, col.key) }}\n }\n }\n </td>\n }\n\n @if (rowActions().length > 0) {\n <td class=\"text-right\">\n <div class=\"flex items-center justify-end space-x-2\">\n @for (action of rowActions(); track action.label) {\n @let hidden = action.hidden?.(row);\n @if (!hidden) {\n <mt-button\n [icon]=\"action.icon\"\n [severity]=\"action.color\"\n [variant]=\"action.variant\"\n [size]=\"action.size || 'small'\"\n (click)=\"rowAction($event, action, row)\"\n [tooltip]=\"action.tooltip\"\n [label]=\"action.label\"\n [loading]=\"resolveActionLoading(action, row)\"\n ></mt-button>\n }\n }\n </div>\n </td>\n }\n </tr>\n }\n </ng-template>\n <ng-template #emptymessage>\n <tr>\n <td colspan=\"20\" class=\"text-center\">\n <div class=\"flex justify-center\">No data found.</div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n }\n </div>\n\n <div class=\"flex flex-col gap-3\" [class]=\"'items-' + paginatorPosition()\">\n <mt-paginator\n [(rows)]=\"pageSize\"\n [(first)]=\"first\"\n [(page)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\"\n [alwaysShow]=\"false\"\n [rowsPerPageOptions]=\"[5, 10, 20, 50]\"\n ></mt-paginator>\n </div>\n</div>\n" }]
|
|
262
|
+
TranslocoModule,
|
|
263
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"space-y-4 rounded-2xl\">\n <div>\n @if (\n captionStartContent() ||\n captionEndContent() ||\n generalSearch() ||\n showFilters() ||\n tabs()?.length > 0 ||\n actions()?.length > 0\n ) {\n <div class=\"p-datatable-header rounded-t-2xl\">\n <div\n class=\"flex relative\"\n [class]=\"!generalSearch() ? 'justify-end' : 'justify-between'\"\n >\n <div class=\"flex items-center gap-2\">\n <ng-container\n *ngTemplateOutlet=\"captionStartContent()\"\n ></ng-container>\n @if (tabs()) {\n <mt-tabs\n [(active)]=\"activeTab\"\n [options]=\"tabs()\"\n [optionLabel]=\"tabsOptionLabel()\"\n [optionValue]=\"tabsOptionValue()\"\n (onChange)=\"tabChanged($event)\"\n size=\"large\"\n ></mt-tabs>\n }\n @if (generalSearch()) {\n <mt-text-field\n [(ngModel)]=\"filterTerm\"\n (change)=\"onSearchChange($event)\"\n icon=\"general.search-lg\"\n [placeholder]=\"'components.table.search' | transloco\"\n ></mt-text-field>\n }\n </div>\n <div class=\"flex items-center gap-2\">\n @if (showFilters()) {\n <mt-button\n variant=\"outline\"\n (click)=\"toggleFilterPanel()\"\n [label]=\"'components.table.filter' | transloco\"\n [badge]=\"activeFilterCount()\"\n icon=\"general.filter-funnel-01\"\n >\n </mt-button>\n @if (isFilterPanelOpen()) {\n <div\n class=\"absolute top-full right-0 z-10 mt-2 w-72 origin-top-right rounded-md bg-content shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\"\n role=\"menu\"\n >\n <div class=\"p-4\">\n <h3 class=\"text-base font-semibold\">\n {{ \"components.table.filterOptions\" | transloco }}\n </h3>\n </div>\n <div\n class=\"border-t border-surface-300 dark:border-surface-500 p-4 space-y-4\"\n >\n @for (col of filterableColumns(); track col.key) {\n <div class=\"space-y-1\">\n <label class=\"block text-sm font-medium\">\n {{ col.filterConfig?.label }}\n </label>\n @switch (col.filterConfig?.type) {\n @case (\"text\") {\n <mt-text-field\n [(ngModel)]=\"pendingFilters()[col.key]\"\n (ngModelChange)=\"\n updatePendingFilter(col.key, $event)\n \"\n ></mt-text-field>\n }\n @case (\"select\") {\n <mt-select-field\n [(ngModel)]=\"pendingFilters()[col.key]\"\n (ngModelChange)=\"\n updatePendingFilter(col.key, $event)\n \"\n [options]=\"col.filterConfig?.options\"\n [hasPlaceholderPrefix]=\"false\"\n [placeholder]=\"\n ('components.table.select' | transloco) +\n ' ' +\n col.filterConfig?.label\n \"\n showClear\n ></mt-select-field>\n }\n }\n </div>\n }\n </div>\n <div\n class=\"flex items-center justify-end space-x-2 border-t border-surface-300 dark:border-surface-500 bg-surface-50 dark:bg-surface-950 p-4 rounded-b-md\"\n >\n <mt-button\n variant=\"outlined\"\n (click)=\"resetFilters()\"\n [label]=\"'components.table.reset' | transloco\"\n />\n <mt-button\n (click)=\"applyFilters()\"\n [label]=\"'components.table.apply' | transloco\"\n />\n </div>\n </div>\n }\n }\n @if (actions()?.length > 0) {\n <div class=\"flex items-center space-x-2\">\n @for (action of actions(); track action.label) {\n <mt-button\n [icon]=\"action.icon\"\n [severity]=\"action.color\"\n [variant]=\"action.variant\"\n [size]=\"action.size\"\n (click)=\"action.action(row)\"\n [label]=\"action.label\"\n [tooltip]=\"action.tooltip\"\n ></mt-button>\n }\n </div>\n }\n <ng-container\n *ngTemplateOutlet=\"captionEndContent()\"\n ></ng-container>\n </div>\n </div>\n </div>\n }\n @if (!loading() && emptyContent() && data().length === 0) {\n <div\n class=\"p-4 bg-content rounded-md text-center text-gray-600 dark:text-gray-300\"\n >\n <ng-container *ngTemplateOutlet=\"emptyContent()\"></ng-container>\n </div>\n } @else {\n <div class=\"overflow-x-auto bg-content\">\n <p-table\n [value]=\"displayData()\"\n [columns]=\"columns()\"\n [size]=\"size()\"\n [showGridlines]=\"showGridlines()\"\n [stripedRows]=\"stripedRows()\"\n [first]=\"first()\"\n [rows]=\"pageSize()\"\n (onPage)=\"onTablePage($event)\"\n paginator\n paginatorStyleClass=\"hidden!\"\n class=\"min-w-full text-sm align-middle table-fixed\"\n >\n <ng-template\n #header\n let-columns\n class=\"bg-surface-50 dark:bg-surface-950 border-b border-surface-300 dark:border-surface-500\"\n >\n <tr>\n @if (selectableRows()) {\n <th class=\"w-12 text-start\">\n <mt-checkbox-field\n [ngModel]=\"allSelectedOnPage()\"\n (ngModelChange)=\"toggleAllRowsOnPage()\"\n ></mt-checkbox-field>\n </th>\n }\n\n @for (col of columns; track col.key) {\n <th\n class=\"text-start font-semibold text-gray-600 dark:text-gray-50 uppercase tracking-wider\"\n >\n {{ col.label }}\n </th>\n }\n\n @if (rowActions().length > 0) {\n <th\n class=\"text-end! font-semibold text-gray-600 dark:text-gray-50 uppercase tracking-wider\"\n >\n Actions\n </th>\n }\n </tr>\n @if (updating()) {\n <tr>\n <th\n [attr.colspan]=\"\n columns.length +\n (selectableRows() ? 1 : 0) +\n (rowActions().length > 0 ? 1 : 0)\n \"\n class=\"!p-0\"\n >\n <p-progressBar\n mode=\"indeterminate\"\n [style]=\"{ height: '4px' }\"\n />\n </th>\n </tr>\n }\n </ng-template>\n <ng-template\n #body\n let-row\n let-columns=\"columns\"\n class=\"divide-y divide-gray-200\"\n >\n @if (loading()) {\n <tr>\n @if (selectableRows()) {\n <td><p-skeleton /></td>\n }\n @for (col of columns; track col.key) {\n <td><p-skeleton /></td>\n }\n @if (rowActions().length > 0) {\n <td><p-skeleton /></td>\n }\n </tr>\n } @else {\n <tr\n class=\"hover:bg-gray-50 dark:hover:bg-surface-950 border-surface-300 dark:border-surface-500\"\n >\n @if (selectableRows()) {\n <td class=\"w-12\">\n <mt-checkbox-field\n [ngModel]=\"selectedRows().has(row)\"\n (ngModelChange)=\"toggleRow(row)\"\n ></mt-checkbox-field>\n </td>\n }\n\n @for (col of columns; track col.key) {\n <td class=\"text-gray-700 dark:text-gray-100\">\n @switch (col.type) {\n @case (\"boolean\") {\n <mt-toggle-field\n [(ngModel)]=\"row[col.key]\"\n (ngModelChange)=\"\n onCellChange(row, col.key, $event, 'boolean')\n \"\n ></mt-toggle-field>\n }\n @case (\"date\") {\n {{ getProperty(row, col.key) | date: \"mediumDate\" }}\n }\n @case (\"custom\") {\n <ng-container\n *ngTemplateOutlet=\"\n col.customCellTpl;\n context: { $implicit: row }\n \"\n >\n </ng-container>\n }\n @default {\n {{ getProperty(row, col.key) }}\n }\n }\n </td>\n }\n\n @if (rowActions().length > 0) {\n <td class=\"text-right\">\n <div class=\"flex items-center justify-end space-x-2\">\n @for (action of rowActions(); track action.label) {\n @let hidden = action.hidden?.(row);\n @if (!hidden) {\n <mt-button\n [icon]=\"action.icon\"\n [severity]=\"action.color\"\n [variant]=\"action.variant\"\n [size]=\"action.size || 'small'\"\n (click)=\"rowAction($event, action, row)\"\n [tooltip]=\"action.tooltip\"\n [label]=\"action.label\"\n [loading]=\"resolveActionLoading(action, row)\"\n ></mt-button>\n }\n }\n </div>\n </td>\n }\n </tr>\n }\n </ng-template>\n <ng-template #emptymessage>\n <tr>\n <td colspan=\"20\" class=\"text-center\">\n <div class=\"flex justify-center\">No data found.</div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col gap-3 pb-3 px-4\"\n [class]=\"'items-' + paginatorPosition()\"\n >\n <mt-paginator\n [(rows)]=\"pageSize\"\n [(first)]=\"first\"\n [(page)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\"\n [alwaysShow]=\"false\"\n [rowsPerPageOptions]=\"[5, 10, 20, 50]\"\n ></mt-paginator>\n </div>\n</div>\n" }]
|
|
261
264
|
}] });
|
|
262
265
|
|
|
263
266
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterteam-components-table.mjs","sources":["../../../../packages/masterteam/components/table/table.ts","../../../../packages/masterteam/components/table/table.html","../../../../packages/masterteam/components/table/masterteam-components-table.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet, DatePipe } from '@angular/common';\nimport {\n ColumnDef,\n TableAction,\n CellChangeEvent,\n ColumnTypeForActionCell,\n} from './table-types';\nimport { ToggleField } from '@masterteam/components/toggle-field';\nimport { FormsModule } from '@angular/forms';\nimport { Button } from '@masterteam/components/button';\nimport { TextField } from '@masterteam/components/text-field';\nimport { SelectField } from '@masterteam/components/select-field';\nimport { Paginator } from '@masterteam/components/paginator';\nimport { CheckboxField } from '@masterteam/components/checkbox-field';\nimport { TableModule, TablePageEvent } from 'primeng/table';\nimport { Tabs } from '@masterteam/components/tabs';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { ProgressBarModule } from 'primeng/progressbar';\nimport { ConfirmationService } from '@masterteam/components/confirmation';\n\n@Component({\n selector: 'mt-table',\n templateUrl: './table.html',\n styleUrls: ['./table.css'],\n standalone: true,\n imports: [\n TableModule,\n NgTemplateOutlet,\n DatePipe,\n ToggleField,\n FormsModule,\n Button,\n TextField,\n SelectField,\n Paginator,\n CheckboxField,\n Tabs,\n SkeletonModule,\n ProgressBarModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Table {\n selectionChange = output<any[]>();\n cellChange = output<CellChangeEvent>();\n\n data = input.required<any[]>();\n columns = input.required<ColumnDef[]>();\n rowActions = input<TableAction[]>([]);\n size = input<'small' | 'large' | undefined>(undefined);\n showGridlines = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n stripedRows = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n selectableRows = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n generalSearch = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n showFilters = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n loading = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n updating = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n // Tabs inputs and outputs\n tabs = input<any[]>();\n tabsOptionLabel = input<string>();\n tabsOptionValue = input<string>();\n activeTab = model<any>();\n onTabChange = output<any>();\n\n // Table actions inputs and outputs\n actions = input<TableAction[]>([]);\n\n // Content TemplateRefs\n captionStartContent = contentChild<TemplateRef<any>>('captionStart');\n captionEndContent = contentChild<TemplateRef<any>>('captionEnd');\n emptyContent = contentChild<TemplateRef<any>>('empty');\n\n paginatorPosition = input<'end' | 'start' | 'center'>('end');\n pageSize = model<number>(10);\n currentPage = model<number>(0);\n first = model<number>(0);\n filterTerm = model<string>('');\n confirmationService = inject(ConfirmationService);\n\n protected selectedRows = signal<Set<any>>(new Set());\n protected isFilterPanelOpen = signal<boolean>(false);\n\n protected pendingFilters = signal<Record<string, any>>({});\n protected appliedFilters = signal<Record<string, any>>({});\n\n protected filterableColumns = computed(() =>\n this.columns().filter((col) => !!col.filterConfig),\n );\n\n protected activeFilterCount = computed(() => {\n return Object.values(this.appliedFilters()).filter(\n (value) => value !== null && value !== undefined && value !== '',\n ).length;\n });\n\n protected filteredData = computed(() => {\n const data = this.data();\n const searchTerm = this.filterTerm().toLowerCase();\n\n const filters = this.appliedFilters();\n const filterKeys = Object.keys(filters);\n\n if (searchTerm != '') {\n return data.filter((item) => {\n return Object.values(item).some((value) => {\n if (typeof value === 'string') {\n return value.toLowerCase().includes(searchTerm);\n }\n return false;\n });\n });\n }\n\n if (filterKeys.length === 0) {\n return data;\n }\n\n return data.filter((item) => {\n return filterKeys.every((key) => {\n const filterValue = filters[key];\n const itemValue = this.getProperty(item, key);\n\n if (\n filterValue === null ||\n filterValue === undefined ||\n filterValue === ''\n ) {\n return true;\n }\n\n if (typeof itemValue === 'string') {\n return itemValue\n .toLowerCase()\n .includes(String(filterValue).toLowerCase());\n }\n return itemValue === filterValue;\n });\n });\n });\n\n protected displayData = computed(() => {\n if (this.loading()) {\n return Array.from({ length: this.pageSize() }, () => ({}));\n }\n return this.filteredData();\n });\n\n protected totalRecords = computed(() => this.filteredData().length);\n\n // TODO: remove after updating the toggle and checkbox logic\n protected paginatedData = computed(() => {\n const data = this.filteredData();\n const first = this.first();\n const pageSize = this.pageSize();\n return data.slice(first, first + pageSize);\n });\n\n protected allSelectedOnPage = computed(() => {\n const pageData = this.paginatedData();\n if (pageData.length === 0) return false;\n return pageData.every((row) => this.selectedRows().has(row));\n });\n\n toggleFilterPanel(): void {\n const isOpen = this.isFilterPanelOpen();\n if (!isOpen) {\n this.pendingFilters.set({ ...this.appliedFilters() });\n }\n this.isFilterPanelOpen.set(!isOpen);\n }\n\n updatePendingFilter(key: string, value: any): void {\n if (value === 'true') value = true;\n if (value === 'false') value = false;\n\n this.pendingFilters.update((current) => ({ ...current, [key]: value }));\n }\n\n applyFilters(): void {\n this.appliedFilters.set({ ...this.pendingFilters() });\n this.first.set(0);\n this.currentPage.set(0);\n this.isFilterPanelOpen.set(false);\n }\n\n resetFilters(): void {\n this.pendingFilters.set({});\n this.appliedFilters.set({});\n this.first.set(0);\n this.currentPage.set(0);\n this.isFilterPanelOpen.set(false);\n }\n\n toggleRow(row: any): void {\n const newSet = new Set(this.selectedRows());\n if (newSet.has(row)) newSet.delete(row);\n else newSet.add(row);\n this.selectedRows.set(newSet);\n this.selectionChange.emit(Array.from(this.selectedRows()));\n }\n\n toggleAllRowsOnPage(): void {\n const currentSelection = new Set(this.selectedRows());\n const pageData = this.paginatedData();\n const allSelected = this.allSelectedOnPage();\n if (allSelected) {\n pageData.forEach((row) => currentSelection.delete(row));\n } else {\n pageData.forEach((row) => currentSelection.add(row));\n }\n this.selectedRows.set(currentSelection);\n this.selectionChange.emit(Array.from(this.selectedRows()));\n }\n\n getProperty(obj: any, key: string): any {\n return key.split('.').reduce((o, i) => (o ? o[i] : undefined), obj);\n }\n\n tabChanged(tab: any): void {\n this.filterTerm.set('');\n this.first.set(0);\n this.currentPage.set(0);\n this.onTabChange.emit(tab);\n }\n\n onTablePage(event: TablePageEvent): void {\n console.log('internal page change', event);\n this.first.set(event.first ?? 0);\n this.pageSize.set(event.rows ?? this.pageSize());\n this.currentPage.set(\n Math.floor((this.first() ?? 0) / (this.pageSize() || 1)),\n );\n }\n\n onSearchChange(searchTerm: Event) {\n const value = (searchTerm.target as HTMLInputElement).value;\n this.filterTerm.set(value);\n this.first.set(0);\n this.currentPage.set(0);\n }\n\n onCellChange(\n row: any,\n columnKey: string,\n newValue: any,\n type?: ColumnTypeForActionCell,\n ): void {\n row[columnKey] = newValue;\n\n this.cellChange.emit({\n row,\n column: columnKey,\n value: newValue,\n type: type!,\n });\n }\n\n resolveActionLoading(action: TableAction, row: any): boolean | undefined {\n if (typeof action.loading === 'function') {\n return action.loading(row);\n }\n return action.loading;\n }\n rowAction(event: Event, action: TableAction, row: any): void {\n if (!action.confirmation) {\n action.action(row);\n } else if (action.confirmation?.confirmationType === 'delete') {\n this.confirmationService.confirmDelete({\n event: event,\n ...action.confirmation,\n accept: () => {\n action.action(row);\n },\n reject: () => {},\n });\n } else {\n this.confirmationService.confirm({\n event: event,\n ...action.confirmation,\n accept: () => {\n action.action(row);\n },\n reject: () => {},\n });\n }\n }\n}\n","<div class=\"space-y-4\">\n <div>\n @if (\n captionStartContent() ||\n captionEndContent() ||\n generalSearch() ||\n showFilters() ||\n tabs()?.length > 0 ||\n actions()?.length > 0\n ) {\n <div class=\"p-datatable-header\">\n <div\n class=\"flex relative\"\n [class]=\"!generalSearch() ? 'justify-end' : 'justify-between'\"\n >\n <div class=\"flex items-center gap-2\">\n <ng-container\n *ngTemplateOutlet=\"captionStartContent()\"\n ></ng-container>\n @if (tabs()) {\n <mt-tabs\n [(active)]=\"activeTab\"\n [options]=\"tabs()\"\n [optionLabel]=\"tabsOptionLabel()\"\n [optionValue]=\"tabsOptionValue()\"\n (onChange)=\"tabChanged($event)\"\n size=\"large\"\n ></mt-tabs>\n }\n @if (generalSearch()) {\n <mt-text-field\n [(ngModel)]=\"filterTerm\"\n (change)=\"onSearchChange($event)\"\n icon=\"general.search-lg\"\n placeholder=\"Search...\"\n ></mt-text-field>\n }\n </div>\n <div class=\"flex items-center gap-2\">\n @if (showFilters()) {\n <mt-button\n variant=\"outline\"\n (click)=\"toggleFilterPanel()\"\n label=\"Filter\"\n [badge]=\"activeFilterCount()\"\n icon=\"general.filter-funnel-01\"\n >\n </mt-button>\n @if (isFilterPanelOpen()) {\n <div\n class=\"absolute top-full right-0 z-10 mt-2 w-72 origin-top-right rounded-md bg-content shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\"\n role=\"menu\"\n >\n <div class=\"p-4\">\n <h3 class=\"text-base font-semibold\">Filter Options</h3>\n </div>\n <div\n class=\"border-t border-surface-300 dark:border-surface-500 p-4 space-y-4\"\n >\n @for (col of filterableColumns(); track col.key) {\n <div class=\"space-y-1\">\n <label class=\"block text-sm font-medium\">\n {{ col.filterConfig?.label }}\n </label>\n @switch (col.filterConfig?.type) {\n @case (\"text\") {\n <mt-text-field\n [(ngModel)]=\"pendingFilters()[col.key]\"\n (ngModelChange)=\"\n updatePendingFilter(col.key, $event)\n \"\n ></mt-text-field>\n }\n @case (\"select\") {\n <mt-select-field\n [(ngModel)]=\"pendingFilters()[col.key]\"\n (ngModelChange)=\"\n updatePendingFilter(col.key, $event)\n \"\n [options]=\"col.filterConfig?.options\"\n [hasPlaceholderPrefix]=\"false\"\n [placeholder]=\"\n 'Select ' + col.filterConfig?.label\n \"\n showClear\n ></mt-select-field>\n }\n }\n </div>\n }\n </div>\n <div\n class=\"flex items-center justify-end space-x-2 border-t border-surface-300 dark:border-surface-500 bg-surface-50 dark:bg-surface-950 p-4 rounded-b-md\"\n >\n <mt-button\n variant=\"outlined\"\n (click)=\"resetFilters()\"\n label=\"Reset\"\n />\n <mt-button (click)=\"applyFilters()\" label=\"Apply\" />\n </div>\n </div>\n }\n }\n @if (actions()?.length > 0) {\n <div class=\"flex items-center space-x-2\">\n @for (action of actions(); track action.label) {\n <mt-button\n [icon]=\"action.icon\"\n [severity]=\"action.color\"\n [variant]=\"action.variant\"\n [size]=\"action.size\"\n (click)=\"action.action(row)\"\n [label]=\"action.label\"\n [tooltip]=\"action.tooltip\"\n ></mt-button>\n }\n </div>\n }\n <ng-container\n *ngTemplateOutlet=\"captionEndContent()\"\n ></ng-container>\n </div>\n </div>\n </div>\n }\n @if (!loading() && emptyContent() && data().length === 0) {\n <div\n class=\"p-4 bg-content rounded-md text-center text-gray-600 dark:text-gray-300\"\n >\n <ng-container *ngTemplateOutlet=\"emptyContent()\"></ng-container>\n </div>\n } @else {\n <div class=\"overflow-x-auto bg-content\">\n <p-table\n [value]=\"displayData()\"\n [columns]=\"columns()\"\n [size]=\"size()\"\n [showGridlines]=\"showGridlines()\"\n [stripedRows]=\"stripedRows()\"\n [first]=\"first()\"\n [rows]=\"pageSize()\"\n (onPage)=\"onTablePage($event)\"\n paginator\n paginatorStyleClass=\"hidden!\"\n class=\"min-w-full text-sm align-middle table-fixed\"\n >\n <ng-template\n #header\n let-columns\n class=\"bg-surface-50 dark:bg-surface-950 border-b border-surface-300 dark:border-surface-500\"\n >\n <tr>\n @if (selectableRows()) {\n <th class=\"w-12 text-start\">\n <mt-checkbox-field\n [ngModel]=\"allSelectedOnPage()\"\n (ngModelChange)=\"toggleAllRowsOnPage()\"\n ></mt-checkbox-field>\n </th>\n }\n\n @for (col of columns; track col.key) {\n <th\n class=\"text-start font-semibold text-gray-600 dark:text-gray-50 uppercase tracking-wider\"\n >\n {{ col.label }}\n </th>\n }\n\n @if (rowActions().length > 0) {\n <th\n class=\"text-end! font-semibold text-gray-600 dark:text-gray-50 uppercase tracking-wider\"\n >\n Actions\n </th>\n }\n </tr>\n @if (updating()) {\n <tr>\n <th\n [attr.colspan]=\"\n columns.length +\n (selectableRows() ? 1 : 0) +\n (rowActions().length > 0 ? 1 : 0)\n \"\n class=\"!p-0\"\n >\n <p-progressBar\n mode=\"indeterminate\"\n [style]=\"{ height: '4px' }\"\n />\n </th>\n </tr>\n }\n </ng-template>\n <ng-template\n #body\n let-row\n let-columns=\"columns\"\n class=\"divide-y divide-gray-200\"\n >\n @if (loading()) {\n <tr>\n @if (selectableRows()) {\n <td><p-skeleton /></td>\n }\n @for (col of columns; track col.key) {\n <td><p-skeleton /></td>\n }\n @if (rowActions().length > 0) {\n <td><p-skeleton /></td>\n }\n </tr>\n } @else {\n <tr\n class=\"hover:bg-gray-50 dark:hover:bg-surface-950 border-surface-300 dark:border-surface-500\"\n >\n @if (selectableRows()) {\n <td class=\"w-12\">\n <mt-checkbox-field\n [ngModel]=\"selectedRows().has(row)\"\n (ngModelChange)=\"toggleRow(row)\"\n ></mt-checkbox-field>\n </td>\n }\n\n @for (col of columns; track col.key) {\n <td class=\"text-gray-700 dark:text-gray-100\">\n @switch (col.type) {\n @case (\"boolean\") {\n <mt-toggle-field\n [(ngModel)]=\"row[col.key]\"\n (ngModelChange)=\"\n onCellChange(row, col.key, $event, 'boolean')\n \"\n ></mt-toggle-field>\n }\n @case (\"date\") {\n {{ getProperty(row, col.key) | date: \"mediumDate\" }}\n }\n @case (\"custom\") {\n <ng-container\n *ngTemplateOutlet=\"\n col.customCellTpl;\n context: { $implicit: row }\n \"\n >\n </ng-container>\n }\n @default {\n {{ getProperty(row, col.key) }}\n }\n }\n </td>\n }\n\n @if (rowActions().length > 0) {\n <td class=\"text-right\">\n <div class=\"flex items-center justify-end space-x-2\">\n @for (action of rowActions(); track action.label) {\n @let hidden = action.hidden?.(row);\n @if (!hidden) {\n <mt-button\n [icon]=\"action.icon\"\n [severity]=\"action.color\"\n [variant]=\"action.variant\"\n [size]=\"action.size || 'small'\"\n (click)=\"rowAction($event, action, row)\"\n [tooltip]=\"action.tooltip\"\n [label]=\"action.label\"\n [loading]=\"resolveActionLoading(action, row)\"\n ></mt-button>\n }\n }\n </div>\n </td>\n }\n </tr>\n }\n </ng-template>\n <ng-template #emptymessage>\n <tr>\n <td colspan=\"20\" class=\"text-center\">\n <div class=\"flex justify-center\">No data found.</div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n }\n </div>\n\n <div class=\"flex flex-col gap-3\" [class]=\"'items-' + paginatorPosition()\">\n <mt-paginator\n [(rows)]=\"pageSize\"\n [(first)]=\"first\"\n [(page)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\"\n [alwaysShow]=\"false\"\n [rowsPerPageOptions]=\"[5, 10, 20, 50]\"\n ></mt-paginator>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"masterteam-components-table.mjs","sources":["../../../../packages/masterteam/components/table/table.ts","../../../../packages/masterteam/components/table/table.html","../../../../packages/masterteam/components/table/masterteam-components-table.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet, DatePipe } from '@angular/common';\nimport {\n ColumnDef,\n TableAction,\n CellChangeEvent,\n ColumnTypeForActionCell,\n} from './table-types';\nimport { ToggleField } from '@masterteam/components/toggle-field';\nimport { FormsModule } from '@angular/forms';\nimport { Button } from '@masterteam/components/button';\nimport { TextField } from '@masterteam/components/text-field';\nimport { SelectField } from '@masterteam/components/select-field';\nimport { Paginator } from '@masterteam/components/paginator';\nimport { CheckboxField } from '@masterteam/components/checkbox-field';\nimport { TableModule, TablePageEvent } from 'primeng/table';\nimport { Tabs } from '@masterteam/components/tabs';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { ProgressBarModule } from 'primeng/progressbar';\nimport { ConfirmationService } from '@masterteam/components/confirmation';\nimport { TranslocoModule } from '@jsverse/transloco';\n\n@Component({\n selector: 'mt-table',\n templateUrl: './table.html',\n styleUrls: ['./table.css'],\n standalone: true,\n imports: [\n TableModule,\n NgTemplateOutlet,\n DatePipe,\n ToggleField,\n FormsModule,\n Button,\n TextField,\n SelectField,\n Paginator,\n CheckboxField,\n Tabs,\n SkeletonModule,\n ProgressBarModule,\n TranslocoModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Table {\n selectionChange = output<any[]>();\n cellChange = output<CellChangeEvent>();\n\n data = input.required<any[]>();\n columns = input.required<ColumnDef[]>();\n rowActions = input<TableAction[]>([]);\n size = input<'small' | 'large' | undefined>(undefined);\n showGridlines = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n stripedRows = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n selectableRows = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n generalSearch = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n showFilters = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n loading = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n updating = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n // Tabs inputs and outputs\n tabs = input<any[]>();\n tabsOptionLabel = input<string>();\n tabsOptionValue = input<string>();\n activeTab = model<any>();\n onTabChange = output<any>();\n\n // Table actions inputs and outputs\n actions = input<TableAction[]>([]);\n\n // Content TemplateRefs\n captionStartContent = contentChild<TemplateRef<any>>('captionStart');\n captionEndContent = contentChild<TemplateRef<any>>('captionEnd');\n emptyContent = contentChild<TemplateRef<any>>('empty');\n\n paginatorPosition = input<'end' | 'start' | 'center'>('end');\n pageSize = model<number>(10);\n currentPage = model<number>(0);\n first = model<number>(0);\n filterTerm = model<string>('');\n confirmationService = inject(ConfirmationService);\n\n protected selectedRows = signal<Set<any>>(new Set());\n protected isFilterPanelOpen = signal<boolean>(false);\n\n protected pendingFilters = signal<Record<string, any>>({});\n protected appliedFilters = signal<Record<string, any>>({});\n\n protected filterableColumns = computed(() =>\n this.columns().filter((col) => !!col.filterConfig),\n );\n\n protected activeFilterCount = computed(() => {\n return Object.values(this.appliedFilters()).filter(\n (value) => value !== null && value !== undefined && value !== '',\n ).length;\n });\n\n protected filteredData = computed(() => {\n const data = this.data();\n const searchTerm = this.filterTerm().toLowerCase();\n\n const filters = this.appliedFilters();\n const filterKeys = Object.keys(filters);\n\n if (searchTerm != '') {\n return data.filter((item) => {\n return Object.values(item).some((value) => {\n if (typeof value === 'string') {\n return value.toLowerCase().includes(searchTerm);\n }\n return false;\n });\n });\n }\n\n if (filterKeys.length === 0) {\n return data;\n }\n\n return data.filter((item) => {\n return filterKeys.every((key) => {\n const filterValue = filters[key];\n const itemValue = this.getProperty(item, key);\n\n if (\n filterValue === null ||\n filterValue === undefined ||\n filterValue === ''\n ) {\n return true;\n }\n\n if (typeof itemValue === 'string') {\n return itemValue\n .toLowerCase()\n .includes(String(filterValue).toLowerCase());\n }\n return itemValue === filterValue;\n });\n });\n });\n\n protected displayData = computed(() => {\n if (this.loading()) {\n return Array.from({ length: this.pageSize() }, () => ({}));\n }\n return this.filteredData();\n });\n\n protected totalRecords = computed(() => this.filteredData().length);\n\n // TODO: remove after updating the toggle and checkbox logic\n protected paginatedData = computed(() => {\n const data = this.filteredData();\n const first = this.first();\n const pageSize = this.pageSize();\n return data.slice(first, first + pageSize);\n });\n\n protected allSelectedOnPage = computed(() => {\n const pageData = this.paginatedData();\n if (pageData.length === 0) return false;\n return pageData.every((row) => this.selectedRows().has(row));\n });\n\n toggleFilterPanel(): void {\n const isOpen = this.isFilterPanelOpen();\n if (!isOpen) {\n this.pendingFilters.set({ ...this.appliedFilters() });\n }\n this.isFilterPanelOpen.set(!isOpen);\n }\n\n updatePendingFilter(key: string, value: any): void {\n if (value === 'true') value = true;\n if (value === 'false') value = false;\n\n this.pendingFilters.update((current) => ({ ...current, [key]: value }));\n }\n\n applyFilters(): void {\n this.appliedFilters.set({ ...this.pendingFilters() });\n this.first.set(0);\n this.currentPage.set(0);\n this.isFilterPanelOpen.set(false);\n }\n\n resetFilters(): void {\n this.pendingFilters.set({});\n this.appliedFilters.set({});\n this.first.set(0);\n this.currentPage.set(0);\n this.isFilterPanelOpen.set(false);\n }\n\n toggleRow(row: any): void {\n const newSet = new Set(this.selectedRows());\n if (newSet.has(row)) newSet.delete(row);\n else newSet.add(row);\n this.selectedRows.set(newSet);\n this.selectionChange.emit(Array.from(this.selectedRows()));\n }\n\n toggleAllRowsOnPage(): void {\n const currentSelection = new Set(this.selectedRows());\n const pageData = this.paginatedData();\n const allSelected = this.allSelectedOnPage();\n if (allSelected) {\n pageData.forEach((row) => currentSelection.delete(row));\n } else {\n pageData.forEach((row) => currentSelection.add(row));\n }\n this.selectedRows.set(currentSelection);\n this.selectionChange.emit(Array.from(this.selectedRows()));\n }\n\n getProperty(obj: any, key: string): any {\n return key.split('.').reduce((o, i) => (o ? o[i] : undefined), obj);\n }\n\n tabChanged(tab: any): void {\n this.filterTerm.set('');\n this.first.set(0);\n this.currentPage.set(0);\n this.onTabChange.emit(tab);\n }\n\n onTablePage(event: TablePageEvent): void {\n console.log('internal page change', event);\n this.first.set(event.first ?? 0);\n this.pageSize.set(event.rows ?? this.pageSize());\n this.currentPage.set(\n Math.floor((this.first() ?? 0) / (this.pageSize() || 1)),\n );\n }\n\n onSearchChange(searchTerm: Event) {\n const value = (searchTerm.target as HTMLInputElement).value;\n this.filterTerm.set(value);\n this.first.set(0);\n this.currentPage.set(0);\n }\n\n onCellChange(\n row: any,\n columnKey: string,\n newValue: any,\n type?: ColumnTypeForActionCell,\n ): void {\n row[columnKey] = newValue;\n\n this.cellChange.emit({\n row,\n column: columnKey,\n value: newValue,\n type: type!,\n });\n }\n\n resolveActionLoading(action: TableAction, row: any): boolean | undefined {\n if (typeof action.loading === 'function') {\n return action.loading(row);\n }\n return action.loading;\n }\n rowAction(event: Event, action: TableAction, row: any): void {\n if (!action.confirmation) {\n action.action(row);\n } else if (action.confirmation?.confirmationType === 'delete') {\n this.confirmationService.confirmDelete({\n event: event,\n ...action.confirmation,\n accept: () => {\n action.action(row);\n },\n reject: () => {},\n });\n } else {\n this.confirmationService.confirm({\n event: event,\n ...action.confirmation,\n accept: () => {\n action.action(row);\n },\n reject: () => {},\n });\n }\n }\n}\n","<div class=\"space-y-4 rounded-2xl\">\n <div>\n @if (\n captionStartContent() ||\n captionEndContent() ||\n generalSearch() ||\n showFilters() ||\n tabs()?.length > 0 ||\n actions()?.length > 0\n ) {\n <div class=\"p-datatable-header rounded-t-2xl\">\n <div\n class=\"flex relative\"\n [class]=\"!generalSearch() ? 'justify-end' : 'justify-between'\"\n >\n <div class=\"flex items-center gap-2\">\n <ng-container\n *ngTemplateOutlet=\"captionStartContent()\"\n ></ng-container>\n @if (tabs()) {\n <mt-tabs\n [(active)]=\"activeTab\"\n [options]=\"tabs()\"\n [optionLabel]=\"tabsOptionLabel()\"\n [optionValue]=\"tabsOptionValue()\"\n (onChange)=\"tabChanged($event)\"\n size=\"large\"\n ></mt-tabs>\n }\n @if (generalSearch()) {\n <mt-text-field\n [(ngModel)]=\"filterTerm\"\n (change)=\"onSearchChange($event)\"\n icon=\"general.search-lg\"\n [placeholder]=\"'components.table.search' | transloco\"\n ></mt-text-field>\n }\n </div>\n <div class=\"flex items-center gap-2\">\n @if (showFilters()) {\n <mt-button\n variant=\"outline\"\n (click)=\"toggleFilterPanel()\"\n [label]=\"'components.table.filter' | transloco\"\n [badge]=\"activeFilterCount()\"\n icon=\"general.filter-funnel-01\"\n >\n </mt-button>\n @if (isFilterPanelOpen()) {\n <div\n class=\"absolute top-full right-0 z-10 mt-2 w-72 origin-top-right rounded-md bg-content shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\"\n role=\"menu\"\n >\n <div class=\"p-4\">\n <h3 class=\"text-base font-semibold\">\n {{ \"components.table.filterOptions\" | transloco }}\n </h3>\n </div>\n <div\n class=\"border-t border-surface-300 dark:border-surface-500 p-4 space-y-4\"\n >\n @for (col of filterableColumns(); track col.key) {\n <div class=\"space-y-1\">\n <label class=\"block text-sm font-medium\">\n {{ col.filterConfig?.label }}\n </label>\n @switch (col.filterConfig?.type) {\n @case (\"text\") {\n <mt-text-field\n [(ngModel)]=\"pendingFilters()[col.key]\"\n (ngModelChange)=\"\n updatePendingFilter(col.key, $event)\n \"\n ></mt-text-field>\n }\n @case (\"select\") {\n <mt-select-field\n [(ngModel)]=\"pendingFilters()[col.key]\"\n (ngModelChange)=\"\n updatePendingFilter(col.key, $event)\n \"\n [options]=\"col.filterConfig?.options\"\n [hasPlaceholderPrefix]=\"false\"\n [placeholder]=\"\n ('components.table.select' | transloco) +\n ' ' +\n col.filterConfig?.label\n \"\n showClear\n ></mt-select-field>\n }\n }\n </div>\n }\n </div>\n <div\n class=\"flex items-center justify-end space-x-2 border-t border-surface-300 dark:border-surface-500 bg-surface-50 dark:bg-surface-950 p-4 rounded-b-md\"\n >\n <mt-button\n variant=\"outlined\"\n (click)=\"resetFilters()\"\n [label]=\"'components.table.reset' | transloco\"\n />\n <mt-button\n (click)=\"applyFilters()\"\n [label]=\"'components.table.apply' | transloco\"\n />\n </div>\n </div>\n }\n }\n @if (actions()?.length > 0) {\n <div class=\"flex items-center space-x-2\">\n @for (action of actions(); track action.label) {\n <mt-button\n [icon]=\"action.icon\"\n [severity]=\"action.color\"\n [variant]=\"action.variant\"\n [size]=\"action.size\"\n (click)=\"action.action(row)\"\n [label]=\"action.label\"\n [tooltip]=\"action.tooltip\"\n ></mt-button>\n }\n </div>\n }\n <ng-container\n *ngTemplateOutlet=\"captionEndContent()\"\n ></ng-container>\n </div>\n </div>\n </div>\n }\n @if (!loading() && emptyContent() && data().length === 0) {\n <div\n class=\"p-4 bg-content rounded-md text-center text-gray-600 dark:text-gray-300\"\n >\n <ng-container *ngTemplateOutlet=\"emptyContent()\"></ng-container>\n </div>\n } @else {\n <div class=\"overflow-x-auto bg-content\">\n <p-table\n [value]=\"displayData()\"\n [columns]=\"columns()\"\n [size]=\"size()\"\n [showGridlines]=\"showGridlines()\"\n [stripedRows]=\"stripedRows()\"\n [first]=\"first()\"\n [rows]=\"pageSize()\"\n (onPage)=\"onTablePage($event)\"\n paginator\n paginatorStyleClass=\"hidden!\"\n class=\"min-w-full text-sm align-middle table-fixed\"\n >\n <ng-template\n #header\n let-columns\n class=\"bg-surface-50 dark:bg-surface-950 border-b border-surface-300 dark:border-surface-500\"\n >\n <tr>\n @if (selectableRows()) {\n <th class=\"w-12 text-start\">\n <mt-checkbox-field\n [ngModel]=\"allSelectedOnPage()\"\n (ngModelChange)=\"toggleAllRowsOnPage()\"\n ></mt-checkbox-field>\n </th>\n }\n\n @for (col of columns; track col.key) {\n <th\n class=\"text-start font-semibold text-gray-600 dark:text-gray-50 uppercase tracking-wider\"\n >\n {{ col.label }}\n </th>\n }\n\n @if (rowActions().length > 0) {\n <th\n class=\"text-end! font-semibold text-gray-600 dark:text-gray-50 uppercase tracking-wider\"\n >\n Actions\n </th>\n }\n </tr>\n @if (updating()) {\n <tr>\n <th\n [attr.colspan]=\"\n columns.length +\n (selectableRows() ? 1 : 0) +\n (rowActions().length > 0 ? 1 : 0)\n \"\n class=\"!p-0\"\n >\n <p-progressBar\n mode=\"indeterminate\"\n [style]=\"{ height: '4px' }\"\n />\n </th>\n </tr>\n }\n </ng-template>\n <ng-template\n #body\n let-row\n let-columns=\"columns\"\n class=\"divide-y divide-gray-200\"\n >\n @if (loading()) {\n <tr>\n @if (selectableRows()) {\n <td><p-skeleton /></td>\n }\n @for (col of columns; track col.key) {\n <td><p-skeleton /></td>\n }\n @if (rowActions().length > 0) {\n <td><p-skeleton /></td>\n }\n </tr>\n } @else {\n <tr\n class=\"hover:bg-gray-50 dark:hover:bg-surface-950 border-surface-300 dark:border-surface-500\"\n >\n @if (selectableRows()) {\n <td class=\"w-12\">\n <mt-checkbox-field\n [ngModel]=\"selectedRows().has(row)\"\n (ngModelChange)=\"toggleRow(row)\"\n ></mt-checkbox-field>\n </td>\n }\n\n @for (col of columns; track col.key) {\n <td class=\"text-gray-700 dark:text-gray-100\">\n @switch (col.type) {\n @case (\"boolean\") {\n <mt-toggle-field\n [(ngModel)]=\"row[col.key]\"\n (ngModelChange)=\"\n onCellChange(row, col.key, $event, 'boolean')\n \"\n ></mt-toggle-field>\n }\n @case (\"date\") {\n {{ getProperty(row, col.key) | date: \"mediumDate\" }}\n }\n @case (\"custom\") {\n <ng-container\n *ngTemplateOutlet=\"\n col.customCellTpl;\n context: { $implicit: row }\n \"\n >\n </ng-container>\n }\n @default {\n {{ getProperty(row, col.key) }}\n }\n }\n </td>\n }\n\n @if (rowActions().length > 0) {\n <td class=\"text-right\">\n <div class=\"flex items-center justify-end space-x-2\">\n @for (action of rowActions(); track action.label) {\n @let hidden = action.hidden?.(row);\n @if (!hidden) {\n <mt-button\n [icon]=\"action.icon\"\n [severity]=\"action.color\"\n [variant]=\"action.variant\"\n [size]=\"action.size || 'small'\"\n (click)=\"rowAction($event, action, row)\"\n [tooltip]=\"action.tooltip\"\n [label]=\"action.label\"\n [loading]=\"resolveActionLoading(action, row)\"\n ></mt-button>\n }\n }\n </div>\n </td>\n }\n </tr>\n }\n </ng-template>\n <ng-template #emptymessage>\n <tr>\n <td colspan=\"20\" class=\"text-center\">\n <div class=\"flex justify-center\">No data found.</div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col gap-3 pb-3 px-4\"\n [class]=\"'items-' + paginatorPosition()\"\n >\n <mt-paginator\n [(rows)]=\"pageSize\"\n [(first)]=\"first\"\n [(page)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\"\n [alwaysShow]=\"false\"\n [rowsPerPageOptions]=\"[5, 10, 20, 50]\"\n ></mt-paginator>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, booleanAttribute, Component } from '@angular/core';
|
|
3
|
+
import { RouterLink } from '@angular/router';
|
|
4
|
+
|
|
5
|
+
class Topbar {
|
|
6
|
+
logo = input(...(ngDevMode ? [undefined, { debugName: "logo" }] : []));
|
|
7
|
+
logoLink = input(...(ngDevMode ? [undefined, { debugName: "logoLink" }] : []));
|
|
8
|
+
bgColor = input('var(--p-primary-color)', ...(ngDevMode ? [{ debugName: "bgColor" }] : []));
|
|
9
|
+
bgImage = input(...(ngDevMode ? [undefined, { debugName: "bgImage" }] : []));
|
|
10
|
+
bgRepeat = input(false, ...(ngDevMode ? [{ debugName: "bgRepeat", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
11
|
+
textColor = input('var(--p-primary-contrast-color)', ...(ngDevMode ? [{ debugName: "textColor" }] : []));
|
|
12
|
+
title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : []));
|
|
13
|
+
subTitle = input(...(ngDevMode ? [undefined, { debugName: "subTitle" }] : []));
|
|
14
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: Topbar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: Topbar, isStandalone: true, selector: "mt-topbar", inputs: { logo: { classPropertyName: "logo", publicName: "logo", isSignal: true, isRequired: false, transformFunction: null }, logoLink: { classPropertyName: "logoLink", publicName: "logoLink", isSignal: true, isRequired: false, transformFunction: null }, bgColor: { classPropertyName: "bgColor", publicName: "bgColor", isSignal: true, isRequired: false, transformFunction: null }, bgImage: { classPropertyName: "bgImage", publicName: "bgImage", isSignal: true, isRequired: false, transformFunction: null }, bgRepeat: { classPropertyName: "bgRepeat", publicName: "bgRepeat", isSignal: true, isRequired: false, transformFunction: null }, textColor: { classPropertyName: "textColor", publicName: "textColor", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subTitle: { classPropertyName: "subTitle", publicName: "subTitle", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"w-screen flex justify-between align-center bg-primary p-4 pb-8 h-[calc(var(--header-height)+(8*var(--spacing)))]\"\n [style.backgroundColor]=\"bgColor()\"\n [style.backgroundImage]=\"bgImage() ? 'url(' + bgImage() + ')' : null\"\n [class.bg-no-repeat]=\"!bgRepeat()\"\n [class.bg-repeat]=\"bgRepeat()\"\n>\n <div class=\"flex gap-4 items-center\" [style.color]=\"textColor()\">\n @if (logo()) {\n <img\n [src]=\"logo()\"\n alt=\"Logo\"\n class=\"h-full\"\n [routerLink]=\"logoLink()\"\n [class.cursor-pointer]=\"logoLink()\"\n />\n }\n @if (logo() && (title() || subTitle())) {\n <div class=\"h-3/4 w-[1px] bg-current\"></div>\n }\n @if (title() || subTitle()) {\n <div class=\"flex flex-col gap-1\">\n <h2 class=\"text-xl font-semibold product-name\">\n {{ title() }}\n </h2>\n <span class=\"text-sm font-semibold product-tagline\">{{\n subTitle()\n }}</span>\n </div>\n }\n </div>\n <div class=\"flex gap-2 items-center\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: Topbar, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ selector: 'mt-topbar', standalone: true, imports: [RouterLink], template: "<div\n class=\"w-screen flex justify-between align-center bg-primary p-4 pb-8 h-[calc(var(--header-height)+(8*var(--spacing)))]\"\n [style.backgroundColor]=\"bgColor()\"\n [style.backgroundImage]=\"bgImage() ? 'url(' + bgImage() + ')' : null\"\n [class.bg-no-repeat]=\"!bgRepeat()\"\n [class.bg-repeat]=\"bgRepeat()\"\n>\n <div class=\"flex gap-4 items-center\" [style.color]=\"textColor()\">\n @if (logo()) {\n <img\n [src]=\"logo()\"\n alt=\"Logo\"\n class=\"h-full\"\n [routerLink]=\"logoLink()\"\n [class.cursor-pointer]=\"logoLink()\"\n />\n }\n @if (logo() && (title() || subTitle())) {\n <div class=\"h-3/4 w-[1px] bg-current\"></div>\n }\n @if (title() || subTitle()) {\n <div class=\"flex flex-col gap-1\">\n <h2 class=\"text-xl font-semibold product-name\">\n {{ title() }}\n </h2>\n <span class=\"text-sm font-semibold product-tagline\">{{\n subTitle()\n }}</span>\n </div>\n }\n </div>\n <div class=\"flex gap-2 items-center\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n</div>\n" }]
|
|
20
|
+
}] });
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Generated bundle index. Do not edit.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
export { Topbar };
|
|
27
|
+
//# sourceMappingURL=masterteam-components-topbar.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"masterteam-components-topbar.mjs","sources":["../../../../packages/masterteam/components/topbar/topbar.ts","../../../../packages/masterteam/components/topbar/topbar.html","../../../../packages/masterteam/components/topbar/masterteam-components-topbar.ts"],"sourcesContent":["import { booleanAttribute, Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'mt-topbar',\n standalone: true,\n imports: [RouterLink],\n templateUrl: './topbar.html',\n})\nexport class Topbar {\n logo = input<string>();\n logoLink = input<string | any[]>();\n bgColor = input<string>('var(--p-primary-color)');\n bgImage = input<string>();\n bgRepeat = input<boolean, unknown>(false, { transform: booleanAttribute });\n textColor = input<string>('var(--p-primary-contrast-color)');\n title = input<string>();\n subTitle = input<string>();\n}\n","<div\n class=\"w-screen flex justify-between align-center bg-primary p-4 pb-8 h-[calc(var(--header-height)+(8*var(--spacing)))]\"\n [style.backgroundColor]=\"bgColor()\"\n [style.backgroundImage]=\"bgImage() ? 'url(' + bgImage() + ')' : null\"\n [class.bg-no-repeat]=\"!bgRepeat()\"\n [class.bg-repeat]=\"bgRepeat()\"\n>\n <div class=\"flex gap-4 items-center\" [style.color]=\"textColor()\">\n @if (logo()) {\n <img\n [src]=\"logo()\"\n alt=\"Logo\"\n class=\"h-full\"\n [routerLink]=\"logoLink()\"\n [class.cursor-pointer]=\"logoLink()\"\n />\n }\n @if (logo() && (title() || subTitle())) {\n <div class=\"h-3/4 w-[1px] bg-current\"></div>\n }\n @if (title() || subTitle()) {\n <div class=\"flex flex-col gap-1\">\n <h2 class=\"text-xl font-semibold product-name\">\n {{ title() }}\n </h2>\n <span class=\"text-sm font-semibold product-tagline\">{{\n subTitle()\n }}</span>\n </div>\n }\n </div>\n <div class=\"flex gap-2 items-center\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|