@masterteam/components 0.0.148 → 0.0.149
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/fesm2022/masterteam-components-date-field.mjs +6 -4
- package/fesm2022/masterteam-components-date-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-editor-field.mjs +2 -2
- package/fesm2022/masterteam-components-editor-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-number-field.mjs +2 -2
- package/fesm2022/masterteam-components-number-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-property-filter-builder.mjs +1 -1
- package/fesm2022/masterteam-components-property-filter-builder.mjs.map +1 -1
- package/fesm2022/masterteam-components-select-field.mjs +2 -2
- package/fesm2022/masterteam-components-select-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-slider-field.mjs +2 -2
- package/fesm2022/masterteam-components-slider-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-table.mjs +5 -5
- package/fesm2022/masterteam-components-table.mjs.map +1 -1
- package/fesm2022/masterteam-components-textarea-field.mjs +2 -2
- package/fesm2022/masterteam-components-textarea-field.mjs.map +1 -1
- package/package.json +1 -1
- package/types/masterteam-components-date-field.d.ts +6 -5
- package/types/masterteam-components-table.d.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterteam-components-number-field.mjs","sources":["../../../../packages/masterteam/components/number-field/number-field.ts","../../../../packages/masterteam/components/number-field/number-field.html","../../../../packages/masterteam/components/number-field/masterteam-components-number-field.ts"],"sourcesContent":["import {\n Component,\n HostBinding,\n OnChanges,\n OnInit,\n SimpleChanges,\n ViewChild,\n signal,\n input,\n inject,\n ChangeDetectionStrategy,\n effect,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NgControl,\n Validators,\n} from '@angular/forms';\nimport { InputNumberModule, InputNumber } from 'primeng/inputnumber';\nimport { FieldValidation } from '@masterteam/components/field-validation';\nimport { isInvalid } from '@masterteam/components';\nimport { Tooltip } from '@masterteam/components/tooltip';\nimport { Icon } from '@masterteam/icons';\n\n@Component({\n selector: 'mt-number-field',\n standalone: true,\n imports: [FormsModule, InputNumberModule, FieldValidation, Tooltip, Icon],\n templateUrl: './number-field.html',\n styleUrls: ['./number-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'grid gap-1',\n },\n})\nexport class NumberField implements ControlValueAccessor, OnInit, OnChanges {\n @ViewChild('inputNumber', { static: true })\n inputNumber: InputNumber;\n\n readonly field = input<boolean>(true);\n readonly hint = input<string>();\n readonly label = input<string>();\n readonly placeholder = input<string>();\n readonly class = input<string>('');\n readonly readonly = input<boolean>(false);\n readonly pInputs = input<Partial<InputNumber>>();\n readonly format = input<boolean>(false);\n readonly useGrouping = input<boolean>(false);\n readonly maxFractionDigits = input<number>(2);\n // TODO: wait for primeng to allow undefined and remove these numbers\n readonly min = input<number>(-999999999999999);\n readonly max = input<number>(999999999999999);\n readonly required = input<boolean>(false);\n\n @HostBinding('class') styleClass: string;\n\n public ngControl = inject(NgControl, { self: true });\n\n isInvalid = isInvalid;\n\n requiredValidator = Validators.required;\n value = signal<number | null>(null);\n disabled = signal<boolean>(false);\n\n onTouched: () => void = () => {};\n onModelChange: (value: number | null) => void = () => {};\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 applyInputsToInputNumber() {\n Object.assign(this.inputNumber, this.pInputs());\n }\n\n ngOnInit() {\n this.styleClass = this.class();\n if (this.pInputs()) {\n this.applyInputsToInputNumber();\n }\n }\n onValueChange(value: number | null) {\n this.onModelChange(value);\n this.value.set(value);\n }\n ngOnChanges(changes: SimpleChanges) {\n if (changes['pInputs']) {\n this.applyInputsToInputNumber();\n }\n }\n\n writeValue(value: number | null) {\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","@if (label() || hint()) {\n <div class=\"flex items-center gap-1\">\n @if (label()) {\n <label\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\n [for]=\"ngControl?.name || label()\"\n >{{ label() }}</label\n >\n }\n @if (hint()) {\n <span\n class=\"inline-flex text-surface-400\"\n [mtTooltip]=\"hint()\"\n tooltipPosition=\"top\"\n >\n <mt-icon icon=\"general.help-circle\" />\n </span>\n }\n </div>\n}\n<p-inputnumber\n #inputNumber\n [ngModel]=\"value()\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n [disabled]=\"disabled() || readonly()\"\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\n [format]=\"format() || useGrouping()\"\n [useGrouping]=\"useGrouping()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [maxFractionDigits]=\"maxFractionDigits()\"\n [invalid]=\"isInvalid(ngControl?.control)\"\n placeholder=\"{{ placeholder() ?? label() ?? '' }}\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full\"\n></p-inputnumber>\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-number-field.mjs","sources":["../../../../packages/masterteam/components/number-field/number-field.ts","../../../../packages/masterteam/components/number-field/number-field.html","../../../../packages/masterteam/components/number-field/masterteam-components-number-field.ts"],"sourcesContent":["import {\r\n Component,\r\n HostBinding,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n ViewChild,\r\n signal,\r\n input,\r\n inject,\r\n ChangeDetectionStrategy,\r\n effect,\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { InputNumberModule, InputNumber } from 'primeng/inputnumber';\r\nimport { FieldValidation } from '@masterteam/components/field-validation';\r\nimport { isInvalid } from '@masterteam/components';\r\nimport { Tooltip } from '@masterteam/components/tooltip';\r\nimport { Icon } from '@masterteam/icons';\r\n\r\n@Component({\r\n selector: 'mt-number-field',\r\n standalone: true,\r\n imports: [FormsModule, InputNumberModule, FieldValidation, Tooltip, Icon],\r\n templateUrl: './number-field.html',\r\n styleUrls: ['./number-field.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'grid gap-1',\r\n },\r\n})\r\nexport class NumberField implements ControlValueAccessor, OnInit, OnChanges {\r\n @ViewChild('inputNumber', { static: true })\r\n inputNumber: InputNumber;\r\n\r\n readonly field = input<boolean>(true);\r\n readonly hint = input<string>();\r\n readonly label = input<string>();\r\n readonly placeholder = input<string>();\r\n readonly class = input<string>('');\r\n readonly readonly = input<boolean>(false);\r\n readonly pInputs = input<Partial<InputNumber>>();\r\n readonly format = input<boolean>(false);\r\n readonly useGrouping = input<boolean>(false);\r\n readonly maxFractionDigits = input<number>(2);\r\n // TODO: wait for primeng to allow undefined and remove these numbers\r\n readonly min = input<number>(-999999999999999);\r\n readonly max = input<number>(999999999999999);\r\n readonly required = input<boolean>(false);\r\n\r\n @HostBinding('class') styleClass: string;\r\n\r\n public ngControl = inject(NgControl, { self: true });\r\n\r\n isInvalid = isInvalid;\r\n\r\n requiredValidator = Validators.required;\r\n value = signal<number | null>(null);\r\n disabled = signal<boolean>(false);\r\n\r\n onTouched: () => void = () => {};\r\n onModelChange: (value: number | null) => void = () => {};\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n effect(() => {\r\n if (this.ngControl.control && this.required()) {\r\n this.ngControl.control.addValidators(Validators.required);\r\n this.ngControl.control.updateValueAndValidity();\r\n }\r\n });\r\n }\r\n\r\n applyInputsToInputNumber() {\r\n Object.assign(this.inputNumber, this.pInputs());\r\n }\r\n\r\n ngOnInit() {\r\n this.styleClass = this.class();\r\n if (this.pInputs()) {\r\n this.applyInputsToInputNumber();\r\n }\r\n }\r\n onValueChange(value: number | null) {\r\n this.onModelChange(value);\r\n this.value.set(value);\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['pInputs']) {\r\n this.applyInputsToInputNumber();\r\n }\r\n }\r\n\r\n writeValue(value: number | null) {\r\n this.value.set(value);\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean) {\r\n this.disabled.set(disabled);\r\n }\r\n}\r\n","@if (label() || hint()) {\r\n <div class=\"flex items-center gap-1\">\r\n @if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n @if (hint()) {\r\n <span\r\n class=\"inline-flex text-surface-400\"\r\n [mtTooltip]=\"hint()\"\r\n tooltipPosition=\"top\"\r\n >\r\n <mt-icon icon=\"general.help-circle\" />\r\n </span>\r\n }\r\n </div>\r\n}\r\n<p-inputnumber\r\n #inputNumber\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n (onBlur)=\"onTouched()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n [format]=\"format() || useGrouping()\"\r\n [useGrouping]=\"useGrouping()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [maxFractionDigits]=\"maxFractionDigits()\"\r\n [invalid]=\"isInvalid(ngControl?.control)\"\r\n placeholder=\"{{ placeholder() ?? label() ?? '' }}\"\r\n styleClass=\"w-full\"\r\n inputStyleClass=\"w-full\"\r\n></p-inputnumber>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -361,7 +361,7 @@ class PropertyFilterBuilder {
|
|
|
361
361
|
return toStringValue(rule.value);
|
|
362
362
|
}
|
|
363
363
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: PropertyFilterBuilder, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
364
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: PropertyFilterBuilder, isStandalone: true, selector: "mt-property-filter-builder", inputs: { schema: { classPropertyName: "schema", publicName: "schema", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, buttonLabel: { classPropertyName: "buttonLabel", publicName: "buttonLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filters: "filtersChange", applied: "applied", cleared: "cleared" }, host: { classAttribute: "block" }, ngImport: i0, template: "<mt-button\r\n [label]=\"\r\n buttonLabel() || ('components.propertyFilterBuilder.filter' | transloco)\r\n \"\r\n severity=\"secondary\"\r\n icon=\"general.filter-funnel-01\"\r\n [badge]=\"activeFilterCount() > 0 ? activeFilterCount().toString() : undefined\"\r\n [disabled]=\"disabled() || !hasSchema()\"\r\n (onClick)=\"onPopoverToggle($event, popover)\"\r\n/>\r\n\r\n<p-popover #popover [style]=\"{ width: 'min(980px, 92vw)' }\" appendTo=\"body\">\r\n <div class=\"flex flex-col gap-4\">\r\n <div\r\n class=\"flex items-center justify-between border-b border-surface-200 pb-3 px-3\"\r\n >\r\n <div class=\"flex flex-col\">\r\n <h3 class=\"m-0 text-lg font-semibold\">\r\n {{\r\n title() ||\r\n (\"components.propertyFilterBuilder.advancedFilters\" | transloco)\r\n }}\r\n </h3>\r\n </div>\r\n\r\n <mt-button\r\n variant=\"text\"\r\n severity=\"secondary\"\r\n [label]=\"'components.propertyFilterBuilder.clearAll' | transloco\"\r\n (onClick)=\"clearAll(popover)\"\r\n />\r\n </div>\r\n\r\n <div class=\"flex flex-col gap-3 px-3\">\r\n @for (draft of drafts(); track draft.id; let index = $index) {\r\n <div\r\n class=\"grid grid-cols-[80px_minmax(0,1fr)_auto] items-center gap-2 max-lg:grid-cols-1 max-lg:items-start\"\r\n >\r\n <div class=\"text-sm text-color\" [class.invisible]=\"index > 0\">\r\n {{ \"components.propertyFilterBuilder.where\" | transloco }}\r\n </div>\r\n\r\n <div\r\n class=\"grid grid-cols-[minmax(170px,1fr)_minmax(170px,1fr)_minmax(220px,2fr)] gap-3 max-lg:grid-cols-1\"\r\n >\r\n <mt-select-field\r\n [hasPlaceholderPrefix]=\"false\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.property' | transloco\r\n \"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [options]=\"fieldOptions()\"\r\n [showClear]=\"false\"\r\n [ngModel]=\"draft.field\"\r\n (ngModelChange)=\"onFieldChange(index, $event)\"\r\n />\r\n\r\n <mt-select-field\r\n [hasPlaceholderPrefix]=\"false\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.condition' | transloco\r\n \"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [options]=\"operatorOptions()\"\r\n [showClear]=\"false\"\r\n [ngModel]=\"draft.op\"\r\n (ngModelChange)=\"onOperatorChange(index, $event)\"\r\n />\r\n\r\n @switch (getValueMode(draft.op)) {\r\n @case (\"none\") {\r\n <div\r\n class=\"flex min-h-10 items-center rounded-lg border border-dashed border-surface-300 px-3 text-sm text-color-secondary\"\r\n >\r\n {{\r\n \"components.propertyFilterBuilder.noValueRequired\"\r\n | transloco\r\n }}\r\n </div>\r\n }\r\n @case (\"range\") {\r\n <div class=\"grid grid-cols-2 gap-2 max-lg:grid-cols-1\">\r\n @if (isDateField(draft.field)) {\r\n <mt-date-field\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.from' | transloco\r\n \"\r\n [showTime]=\"isDateTimeField(draft.field)\"\r\n [showIcon]=\"false\"\r\n [ngModel]=\"draft.from\"\r\n (ngModelChange)=\"onFromChange(index, $event)\"\r\n />\r\n <mt-date-field\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.to' | transloco\r\n \"\r\n [showTime]=\"isDateTimeField(draft.field)\"\r\n [showIcon]=\"false\"\r\n [ngModel]=\"draft.to\"\r\n (ngModelChange)=\"onToChange(index, $event)\"\r\n />\r\n } @else {\r\n <mt-text-field\r\n [type]=\"getValueInputType(draft.field, draft.op)\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.from' | transloco\r\n \"\r\n [ngModel]=\"draft.from\"\r\n (ngModelChange)=\"onFromChange(index, $event)\"\r\n />\r\n <mt-text-field\r\n [type]=\"getValueInputType(draft.field, draft.op)\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.to' | transloco\r\n \"\r\n [ngModel]=\"draft.to\"\r\n (ngModelChange)=\"onToChange(index, $event)\"\r\n />\r\n }\r\n </div>\r\n }\r\n @default {\r\n @if (\r\n getValueMode(draft.op) !== \"multi\" && isDateField(draft.field)\r\n ) {\r\n <mt-date-field\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.value' | transloco\r\n \"\r\n [showTime]=\"isDateTimeField(draft.field)\"\r\n [showIcon]=\"false\"\r\n [ngModel]=\"draft.value\"\r\n (ngModelChange)=\"onValueChange(index, $event)\"\r\n />\r\n } @else {\r\n <mt-text-field\r\n [type]=\"getValueInputType(draft.field, draft.op)\"\r\n [placeholder]=\"\r\n getValueMode(draft.op) === 'multi'\r\n ? ('components.propertyFilterBuilder.multiValue'\r\n | transloco)\r\n : ('components.propertyFilterBuilder.value' | transloco)\r\n \"\r\n [ngModel]=\"draft.value\"\r\n (ngModelChange)=\"onValueChange(index, $event)\"\r\n />\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n <mt-button\r\n icon=\"general.x-close\"\r\n severity=\"secondary\"\r\n variant=\"text\"\r\n [disabled]=\"drafts().length <= 1\"\r\n (onClick)=\"removeFilter(index)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex items-center justify-between p-2 max-lg:flex-col max-lg:items-stretch max-lg:gap-3\"\r\n >\r\n <mt-button\r\n [label]=\"'components.propertyFilterBuilder.addFilter' | transloco\"\r\n icon=\"general.plus\"\r\n variant=\"outlined\"\r\n [disabled]=\"!canAddFilter()\"\r\n (onClick)=\"addFilter()\"\r\n />\r\n\r\n <div class=\"flex gap-2 max-lg:w-full\">\r\n <mt-button\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n [label]=\"'components.propertyFilterBuilder.cancel' | transloco\"\r\n (onClick)=\"popover.hide()\"\r\n />\r\n <mt-button\r\n [label]=\"'components.propertyFilterBuilder.apply' | transloco\"\r\n (onClick)=\"apply(popover)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</p-popover>\r\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslocoModule }, { 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: DateField, selector: "mt-date-field", inputs: ["field", "label", "placeholder", "class", "readonly", "showIcon", "showClear", "showTime", "pInputs", "required"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i2.Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions", "motionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "hint", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: TextField, selector: "mt-text-field", inputs: ["field", "hint", "label", "placeholder", "class", "type", "readonly", "pInputs", "required", "icon", "iconPosition"] }, { kind: "pipe", type: i3.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
364
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: PropertyFilterBuilder, isStandalone: true, selector: "mt-property-filter-builder", inputs: { schema: { classPropertyName: "schema", publicName: "schema", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, buttonLabel: { classPropertyName: "buttonLabel", publicName: "buttonLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filters: "filtersChange", applied: "applied", cleared: "cleared" }, host: { classAttribute: "block" }, ngImport: i0, template: "<mt-button\r\n [label]=\"\r\n buttonLabel() || ('components.propertyFilterBuilder.filter' | transloco)\r\n \"\r\n severity=\"secondary\"\r\n icon=\"general.filter-funnel-01\"\r\n [badge]=\"activeFilterCount() > 0 ? activeFilterCount().toString() : undefined\"\r\n [disabled]=\"disabled() || !hasSchema()\"\r\n (onClick)=\"onPopoverToggle($event, popover)\"\r\n/>\r\n\r\n<p-popover #popover [style]=\"{ width: 'min(980px, 92vw)' }\" appendTo=\"body\">\r\n <div class=\"flex flex-col gap-4\">\r\n <div\r\n class=\"flex items-center justify-between border-b border-surface-200 pb-3 px-3\"\r\n >\r\n <div class=\"flex flex-col\">\r\n <h3 class=\"m-0 text-lg font-semibold\">\r\n {{\r\n title() ||\r\n (\"components.propertyFilterBuilder.advancedFilters\" | transloco)\r\n }}\r\n </h3>\r\n </div>\r\n\r\n <mt-button\r\n variant=\"text\"\r\n severity=\"secondary\"\r\n [label]=\"'components.propertyFilterBuilder.clearAll' | transloco\"\r\n (onClick)=\"clearAll(popover)\"\r\n />\r\n </div>\r\n\r\n <div class=\"flex flex-col gap-3 px-3\">\r\n @for (draft of drafts(); track draft.id; let index = $index) {\r\n <div\r\n class=\"grid grid-cols-[80px_minmax(0,1fr)_auto] items-center gap-2 max-lg:grid-cols-1 max-lg:items-start\"\r\n >\r\n <div class=\"text-sm text-color\" [class.invisible]=\"index > 0\">\r\n {{ \"components.propertyFilterBuilder.where\" | transloco }}\r\n </div>\r\n\r\n <div\r\n class=\"grid grid-cols-[minmax(170px,1fr)_minmax(170px,1fr)_minmax(220px,2fr)] gap-3 max-lg:grid-cols-1\"\r\n >\r\n <mt-select-field\r\n [hasPlaceholderPrefix]=\"false\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.property' | transloco\r\n \"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [options]=\"fieldOptions()\"\r\n [showClear]=\"false\"\r\n [ngModel]=\"draft.field\"\r\n (ngModelChange)=\"onFieldChange(index, $event)\"\r\n />\r\n\r\n <mt-select-field\r\n [hasPlaceholderPrefix]=\"false\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.condition' | transloco\r\n \"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [options]=\"operatorOptions()\"\r\n [showClear]=\"false\"\r\n [ngModel]=\"draft.op\"\r\n (ngModelChange)=\"onOperatorChange(index, $event)\"\r\n />\r\n\r\n @switch (getValueMode(draft.op)) {\r\n @case (\"none\") {\r\n <div\r\n class=\"flex min-h-10 items-center rounded-lg border border-dashed border-surface-300 px-3 text-sm text-color-secondary\"\r\n >\r\n {{\r\n \"components.propertyFilterBuilder.noValueRequired\"\r\n | transloco\r\n }}\r\n </div>\r\n }\r\n @case (\"range\") {\r\n <div class=\"grid grid-cols-2 gap-2 max-lg:grid-cols-1\">\r\n @if (isDateField(draft.field)) {\r\n <mt-date-field\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.from' | transloco\r\n \"\r\n [showTime]=\"isDateTimeField(draft.field)\"\r\n [showIcon]=\"false\"\r\n [ngModel]=\"draft.from\"\r\n (ngModelChange)=\"onFromChange(index, $event)\"\r\n />\r\n <mt-date-field\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.to' | transloco\r\n \"\r\n [showTime]=\"isDateTimeField(draft.field)\"\r\n [showIcon]=\"false\"\r\n [ngModel]=\"draft.to\"\r\n (ngModelChange)=\"onToChange(index, $event)\"\r\n />\r\n } @else {\r\n <mt-text-field\r\n [type]=\"getValueInputType(draft.field, draft.op)\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.from' | transloco\r\n \"\r\n [ngModel]=\"draft.from\"\r\n (ngModelChange)=\"onFromChange(index, $event)\"\r\n />\r\n <mt-text-field\r\n [type]=\"getValueInputType(draft.field, draft.op)\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.to' | transloco\r\n \"\r\n [ngModel]=\"draft.to\"\r\n (ngModelChange)=\"onToChange(index, $event)\"\r\n />\r\n }\r\n </div>\r\n }\r\n @default {\r\n @if (\r\n getValueMode(draft.op) !== \"multi\" && isDateField(draft.field)\r\n ) {\r\n <mt-date-field\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.value' | transloco\r\n \"\r\n [showTime]=\"isDateTimeField(draft.field)\"\r\n [showIcon]=\"false\"\r\n [ngModel]=\"draft.value\"\r\n (ngModelChange)=\"onValueChange(index, $event)\"\r\n />\r\n } @else {\r\n <mt-text-field\r\n [type]=\"getValueInputType(draft.field, draft.op)\"\r\n [placeholder]=\"\r\n getValueMode(draft.op) === 'multi'\r\n ? ('components.propertyFilterBuilder.multiValue'\r\n | transloco)\r\n : ('components.propertyFilterBuilder.value' | transloco)\r\n \"\r\n [ngModel]=\"draft.value\"\r\n (ngModelChange)=\"onValueChange(index, $event)\"\r\n />\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n <mt-button\r\n icon=\"general.x-close\"\r\n severity=\"secondary\"\r\n variant=\"text\"\r\n [disabled]=\"drafts().length <= 1\"\r\n (onClick)=\"removeFilter(index)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex items-center justify-between p-2 max-lg:flex-col max-lg:items-stretch max-lg:gap-3\"\r\n >\r\n <mt-button\r\n [label]=\"'components.propertyFilterBuilder.addFilter' | transloco\"\r\n icon=\"general.plus\"\r\n variant=\"outlined\"\r\n [disabled]=\"!canAddFilter()\"\r\n (onClick)=\"addFilter()\"\r\n />\r\n\r\n <div class=\"flex gap-2 max-lg:w-full\">\r\n <mt-button\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n [label]=\"'components.propertyFilterBuilder.cancel' | transloco\"\r\n (onClick)=\"popover.hide()\"\r\n />\r\n <mt-button\r\n [label]=\"'components.propertyFilterBuilder.apply' | transloco\"\r\n (onClick)=\"apply(popover)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</p-popover>\r\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslocoModule }, { 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: DateField, selector: "mt-date-field", inputs: ["field", "hint", "label", "placeholder", "class", "readonly", "showIcon", "showClear", "showTime", "pInputs", "required"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i2.Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions", "motionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "hint", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: TextField, selector: "mt-text-field", inputs: ["field", "hint", "label", "placeholder", "class", "type", "readonly", "pInputs", "required", "icon", "iconPosition"] }, { kind: "pipe", type: i3.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
365
365
|
}
|
|
366
366
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: PropertyFilterBuilder, decorators: [{
|
|
367
367
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterteam-components-property-filter-builder.mjs","sources":["../../../../packages/masterteam/components/property-filter-builder/property-filter-builder.ts","../../../../packages/masterteam/components/property-filter-builder/property-filter-builder.html","../../../../packages/masterteam/components/property-filter-builder/masterteam-components-property-filter-builder.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n booleanAttribute,\r\n computed,\r\n effect,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { DateField } from '@masterteam/components/date-field';\r\nimport { SelectField } from '@masterteam/components/select-field';\r\nimport { TextField } from '@masterteam/components/text-field';\r\nimport { PopoverModule } from 'primeng/popover';\r\n\r\nexport type PropertyFilterBuilderValueMode =\r\n | 'single'\r\n | 'multi'\r\n | 'range'\r\n | 'none';\r\n\r\nexport interface PropertyFilterBuilderFieldOption {\r\n key: string;\r\n label?: string;\r\n viewType?: string;\r\n}\r\n\r\nexport interface PropertyFilterBuilderOperatorOption {\r\n key: string;\r\n label?: string;\r\n valueMode?: PropertyFilterBuilderValueMode;\r\n}\r\n\r\nexport interface PropertyFilterBuilderSchema {\r\n allowedFields: Array<string | PropertyFilterBuilderFieldOption>;\r\n allowedOperators: Array<string | PropertyFilterBuilderOperatorOption>;\r\n maxFilters?: number;\r\n}\r\n\r\nexport interface PropertyFilterBuilderRule {\r\n field: string;\r\n op: string;\r\n value?: unknown;\r\n values?: unknown[];\r\n from?: unknown;\r\n to?: unknown;\r\n}\r\n\r\ninterface PropertyFilterBuilderDraft {\r\n id: string;\r\n field: string;\r\n op: string;\r\n value: unknown;\r\n from: unknown;\r\n to: unknown;\r\n}\r\n\r\ninterface SelectOption {\r\n key: string;\r\n label: string;\r\n viewType?: string;\r\n}\r\n\r\nconst DEFAULT_MAX_FILTERS = 20;\r\n\r\nfunction toLabel(value: string): string {\r\n const normalized = value.split('.').pop() ?? value;\r\n return normalized\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction normalizeFieldOption(\r\n value: string | PropertyFilterBuilderFieldOption,\r\n): SelectOption | null {\r\n if (typeof value === 'string') {\r\n return {\r\n key: value,\r\n label: toLabel(value),\r\n };\r\n }\r\n\r\n if (!value?.key) {\r\n return null;\r\n }\r\n\r\n return {\r\n key: value.key,\r\n label: value.label?.trim() || toLabel(value.key),\r\n viewType: value.viewType,\r\n };\r\n}\r\n\r\nfunction inferValueMode(operator: string): PropertyFilterBuilderValueMode {\r\n switch (operator) {\r\n case 'In':\r\n return 'multi';\r\n case 'Between':\r\n return 'range';\r\n case 'IsNull':\r\n case 'IsNotNull':\r\n return 'none';\r\n default:\r\n return 'single';\r\n }\r\n}\r\n\r\nfunction normalizeOperatorOption(\r\n value: string | PropertyFilterBuilderOperatorOption,\r\n): (SelectOption & { valueMode: PropertyFilterBuilderValueMode }) | null {\r\n if (typeof value === 'string') {\r\n return {\r\n key: value,\r\n label: toLabel(value),\r\n valueMode: inferValueMode(value),\r\n };\r\n }\r\n\r\n if (!value?.key) {\r\n return null;\r\n }\r\n\r\n return {\r\n key: value.key,\r\n label: value.label?.trim() || toLabel(value.key),\r\n valueMode: value.valueMode ?? inferValueMode(value.key),\r\n };\r\n}\r\n\r\nfunction toStringValue(value: unknown): string {\r\n if (value === null || value === undefined) return '';\r\n return String(value);\r\n}\r\n\r\ntype NormalizedFieldType = 'text' | 'number' | 'date' | 'datetime' | 'boolean';\r\n\r\nfunction normalizeFieldType(viewType: string | undefined): NormalizedFieldType {\r\n const normalized = viewType?.toLowerCase().trim() ?? '';\r\n\r\n if (\r\n normalized === 'number' ||\r\n normalized === 'decimal' ||\r\n normalized === 'integer' ||\r\n normalized === 'percentage' ||\r\n normalized === 'progress'\r\n ) {\r\n return 'number';\r\n }\r\n\r\n if (normalized === 'datetime' || normalized === 'datetimeoffset') {\r\n return 'datetime';\r\n }\r\n\r\n if (normalized === 'date') {\r\n return 'date';\r\n }\r\n\r\n if (normalized === 'boolean' || normalized === 'bool') {\r\n return 'boolean';\r\n }\r\n\r\n return 'text';\r\n}\r\n\r\nfunction toInputType(viewType: string | undefined): string {\r\n const normalized = normalizeFieldType(viewType);\r\n if (normalized === 'number') return 'number';\r\n if (normalized === 'date') return 'date';\r\n if (normalized === 'datetime') return 'datetime-local';\r\n return 'text';\r\n}\r\n\r\nfunction parseBoolean(value: string): boolean | string {\r\n const normalized = value.toLowerCase();\r\n if (normalized === 'true' || normalized === '1' || normalized === 'yes') {\r\n return true;\r\n }\r\n if (normalized === 'false' || normalized === '0' || normalized === 'no') {\r\n return false;\r\n }\r\n return value;\r\n}\r\n\r\nfunction parseValueByViewType(\r\n rawValue: unknown,\r\n viewType: string | undefined,\r\n): unknown {\r\n if (rawValue === null || rawValue === undefined) return '';\r\n if (rawValue instanceof Date) {\r\n return rawValue.toISOString();\r\n }\r\n\r\n const value = String(rawValue).trim();\r\n if (!value.length) return '';\r\n\r\n switch (normalizeFieldType(viewType)) {\r\n case 'number': {\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? parsed : value;\r\n }\r\n case 'boolean':\r\n return parseBoolean(value);\r\n default:\r\n return value;\r\n }\r\n}\r\n\r\nfunction hasInputValue(rawValue: unknown): boolean {\r\n if (rawValue === null || rawValue === undefined) return false;\r\n if (rawValue instanceof Date) return true;\r\n return String(rawValue).trim().length > 0;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-property-filter-builder',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n TranslocoModule,\r\n Button,\r\n DateField,\r\n PopoverModule,\r\n SelectField,\r\n TextField,\r\n ],\r\n templateUrl: './property-filter-builder.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'block',\r\n },\r\n})\r\nexport class PropertyFilterBuilder {\r\n readonly schema = input<PropertyFilterBuilderSchema | null>(null);\r\n readonly filters = model<PropertyFilterBuilderRule[]>([]);\r\n readonly title = input<string | null>(null);\r\n readonly buttonLabel = input<string | null>(null);\r\n readonly disabled = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n\r\n readonly applied = output<PropertyFilterBuilderRule[]>();\r\n readonly cleared = output<void>();\r\n\r\n private readonly rowSeed = signal(0);\r\n private readonly syncedSignature = signal('');\r\n protected readonly drafts = signal<PropertyFilterBuilderDraft[]>([]);\r\n\r\n protected readonly fieldOptions = computed(() =>\r\n (this.schema()?.allowedFields ?? [])\r\n .map(normalizeFieldOption)\r\n .filter((entry): entry is SelectOption => entry !== null),\r\n );\r\n\r\n protected readonly operatorOptions = computed(() =>\r\n (this.schema()?.allowedOperators ?? []).map(normalizeOperatorOption).filter(\r\n (\r\n entry,\r\n ): entry is SelectOption & {\r\n valueMode: PropertyFilterBuilderValueMode;\r\n } => entry !== null,\r\n ),\r\n );\r\n\r\n protected readonly hasSchema = computed(\r\n () => this.fieldOptions().length > 0 && this.operatorOptions().length > 0,\r\n );\r\n\r\n protected readonly maxFilters = computed(() =>\r\n Math.max(1, this.schema()?.maxFilters ?? DEFAULT_MAX_FILTERS),\r\n );\r\n\r\n protected readonly canAddFilter = computed(() => {\r\n return this.hasSchema() && this.drafts().length < this.maxFilters();\r\n });\r\n\r\n protected readonly activeFilterCount = computed(() => this.filters().length);\r\n\r\n constructor() {\r\n effect(() => {\r\n const fields = this.fieldOptions();\r\n const operators = this.operatorOptions();\r\n const appliedFilters = this.filters();\r\n const signature = JSON.stringify({\r\n fieldKeys: fields.map((field) => field.key),\r\n operatorKeys: operators.map((operator) => operator.key),\r\n filters: appliedFilters,\r\n });\r\n const hasDrafts = untracked(() => this.drafts().length > 0);\r\n const lastSyncedSignature = untracked(() => this.syncedSignature());\r\n\r\n if (!fields.length || !operators.length) {\r\n this.drafts.set([]);\r\n this.syncedSignature.set(signature);\r\n return;\r\n }\r\n\r\n if (hasDrafts && lastSyncedSignature === signature) {\r\n return;\r\n }\r\n\r\n if (!appliedFilters.length) {\r\n this.drafts.set([this.createDraft(fields[0].key, operators[0].key)]);\r\n this.syncedSignature.set(signature);\r\n return;\r\n }\r\n\r\n const nextDrafts = appliedFilters.map((rule) => {\r\n const operatorKey = operators.some((option) => option.key === rule.op)\r\n ? rule.op\r\n : operators[0].key;\r\n const fieldKey = fields.some((option) => option.key === rule.field)\r\n ? rule.field\r\n : fields[0].key;\r\n const mode = this.getValueMode(operatorKey);\r\n\r\n return this.createDraft(\r\n fieldKey,\r\n operatorKey,\r\n mode === 'range' ? '' : this.toDraftValue(rule),\r\n mode === 'range' ? toStringValue(rule.from) : '',\r\n mode === 'range' ? toStringValue(rule.to) : '',\r\n );\r\n });\r\n\r\n this.drafts.set(\r\n nextDrafts.length\r\n ? nextDrafts\r\n : [this.createDraft(fields[0].key, operators[0].key)],\r\n );\r\n this.syncedSignature.set(signature);\r\n });\r\n }\r\n\r\n onPopoverToggle(\r\n event: Event,\r\n popover: { toggle: (event: Event) => void },\r\n ): void {\r\n if (!this.hasSchema() || this.disabled()) {\r\n return;\r\n }\r\n popover.toggle(event);\r\n }\r\n\r\n addFilter(): void {\r\n const fields = this.fieldOptions();\r\n const operators = this.operatorOptions();\r\n if (!fields.length || !operators.length) return;\r\n\r\n this.drafts.update((current) => {\r\n if (current.length >= this.maxFilters()) {\r\n return current;\r\n }\r\n\r\n return [...current, this.createDraft(fields[0].key, operators[0].key)];\r\n });\r\n }\r\n\r\n removeFilter(index: number): void {\r\n this.drafts.update((current) => {\r\n if (current.length <= 1) {\r\n return current;\r\n }\r\n return current.filter((_, rowIndex) => rowIndex !== index);\r\n });\r\n }\r\n\r\n clearAll(popover: { hide: () => void }): void {\r\n const fields = this.fieldOptions();\r\n const operators = this.operatorOptions();\r\n\r\n if (fields.length && operators.length) {\r\n this.drafts.set([this.createDraft(fields[0].key, operators[0].key)]);\r\n } else {\r\n this.drafts.set([]);\r\n }\r\n\r\n this.filters.set([]);\r\n this.cleared.emit();\r\n popover.hide();\r\n }\r\n\r\n apply(popover: { hide: () => void }): void {\r\n const rules = this.buildRulesFromDrafts();\r\n this.filters.set(rules);\r\n this.applied.emit(rules);\r\n popover.hide();\r\n }\r\n\r\n onFieldChange(index: number, field: string): void {\r\n this.patchDraft(index, { field: field || '' });\r\n }\r\n\r\n onOperatorChange(index: number, op: string): void {\r\n const mode = this.getValueMode(op);\r\n this.patchDraft(index, {\r\n op: op || '',\r\n value: mode === 'range' ? '' : (this.drafts()[index]?.value ?? ''),\r\n from: mode === 'range' ? (this.drafts()[index]?.from ?? '') : '',\r\n to: mode === 'range' ? (this.drafts()[index]?.to ?? '') : '',\r\n });\r\n }\r\n\r\n onValueChange(index: number, value: unknown): void {\r\n this.patchDraft(index, { value: value ?? '' });\r\n }\r\n\r\n onFromChange(index: number, from: unknown): void {\r\n this.patchDraft(index, { from: from ?? '' });\r\n }\r\n\r\n onToChange(index: number, to: unknown): void {\r\n this.patchDraft(index, { to: to ?? '' });\r\n }\r\n\r\n getValueMode(op: string): PropertyFilterBuilderValueMode {\r\n return (\r\n this.operatorOptions().find((option) => option.key === op)?.valueMode ??\r\n inferValueMode(op)\r\n );\r\n }\r\n\r\n getValueInputType(field: string, op: string): string {\r\n if (this.getValueMode(op) === 'multi') {\r\n return 'text';\r\n }\r\n return toInputType(this.getFieldViewType(field));\r\n }\r\n\r\n isDateField(field: string): boolean {\r\n const normalized = normalizeFieldType(this.getFieldViewType(field));\r\n return normalized === 'date' || normalized === 'datetime';\r\n }\r\n\r\n isDateTimeField(field: string): boolean {\r\n return normalizeFieldType(this.getFieldViewType(field)) === 'datetime';\r\n }\r\n\r\n private buildRulesFromDrafts(): PropertyFilterBuilderRule[] {\r\n return this.drafts()\r\n .map((draft) => {\r\n if (!draft.field || !draft.op) {\r\n return null;\r\n }\r\n\r\n const mode = this.getValueMode(draft.op);\r\n const viewType = this.getFieldViewType(draft.field);\r\n const rule: PropertyFilterBuilderRule = {\r\n field: draft.field,\r\n op: draft.op,\r\n };\r\n\r\n if (mode === 'none') {\r\n return rule;\r\n }\r\n\r\n if (mode === 'range') {\r\n if (!hasInputValue(draft.from) && !hasInputValue(draft.to)) {\r\n return null;\r\n }\r\n if (hasInputValue(draft.from)) {\r\n rule.from = parseValueByViewType(draft.from, viewType);\r\n }\r\n if (hasInputValue(draft.to)) {\r\n rule.to = parseValueByViewType(draft.to, viewType);\r\n }\r\n return rule;\r\n }\r\n\r\n if (!hasInputValue(draft.value)) {\r\n return null;\r\n }\r\n\r\n if (mode === 'multi') {\r\n const values = String(draft.value)\r\n .split(',')\r\n .map((value) => value.trim())\r\n .filter((value) => value.length > 0)\r\n .map((value) => parseValueByViewType(value, viewType));\r\n\r\n if (!values.length) {\r\n return null;\r\n }\r\n\r\n rule.values = values;\r\n return rule;\r\n }\r\n\r\n rule.value = parseValueByViewType(draft.value, viewType);\r\n return rule;\r\n })\r\n .filter((rule): rule is PropertyFilterBuilderRule => rule !== null)\r\n .slice(0, this.maxFilters());\r\n }\r\n\r\n private getFieldViewType(fieldKey: string): string | undefined {\r\n return this.fieldOptions().find((option) => option.key === fieldKey)\r\n ?.viewType;\r\n }\r\n\r\n private patchDraft(\r\n index: number,\r\n patch: Partial<PropertyFilterBuilderDraft>,\r\n ): void {\r\n this.drafts.update((current) =>\r\n current.map((row, rowIndex) =>\r\n rowIndex === index\r\n ? {\r\n ...row,\r\n ...patch,\r\n }\r\n : row,\r\n ),\r\n );\r\n }\r\n\r\n private createDraft(\r\n field: string,\r\n op: string,\r\n value: unknown = '',\r\n from: unknown = '',\r\n to: unknown = '',\r\n ): PropertyFilterBuilderDraft {\r\n this.rowSeed.update((seed) => seed + 1);\r\n return {\r\n id: `pfb-${this.rowSeed()}`,\r\n field,\r\n op,\r\n value,\r\n from,\r\n to,\r\n };\r\n }\r\n\r\n private toDraftValue(rule: PropertyFilterBuilderRule): string {\r\n if (Array.isArray(rule.values)) {\r\n return rule.values.map((entry) => toStringValue(entry)).join(', ');\r\n }\r\n\r\n return toStringValue(rule.value);\r\n }\r\n}\r\n","<mt-button\r\n [label]=\"\r\n buttonLabel() || ('components.propertyFilterBuilder.filter' | transloco)\r\n \"\r\n severity=\"secondary\"\r\n icon=\"general.filter-funnel-01\"\r\n [badge]=\"activeFilterCount() > 0 ? activeFilterCount().toString() : undefined\"\r\n [disabled]=\"disabled() || !hasSchema()\"\r\n (onClick)=\"onPopoverToggle($event, popover)\"\r\n/>\r\n\r\n<p-popover #popover [style]=\"{ width: 'min(980px, 92vw)' }\" appendTo=\"body\">\r\n <div class=\"flex flex-col gap-4\">\r\n <div\r\n class=\"flex items-center justify-between border-b border-surface-200 pb-3 px-3\"\r\n >\r\n <div class=\"flex flex-col\">\r\n <h3 class=\"m-0 text-lg font-semibold\">\r\n {{\r\n title() ||\r\n (\"components.propertyFilterBuilder.advancedFilters\" | transloco)\r\n }}\r\n </h3>\r\n </div>\r\n\r\n <mt-button\r\n variant=\"text\"\r\n severity=\"secondary\"\r\n [label]=\"'components.propertyFilterBuilder.clearAll' | transloco\"\r\n (onClick)=\"clearAll(popover)\"\r\n />\r\n </div>\r\n\r\n <div class=\"flex flex-col gap-3 px-3\">\r\n @for (draft of drafts(); track draft.id; let index = $index) {\r\n <div\r\n class=\"grid grid-cols-[80px_minmax(0,1fr)_auto] items-center gap-2 max-lg:grid-cols-1 max-lg:items-start\"\r\n >\r\n <div class=\"text-sm text-color\" [class.invisible]=\"index > 0\">\r\n {{ \"components.propertyFilterBuilder.where\" | transloco }}\r\n </div>\r\n\r\n <div\r\n class=\"grid grid-cols-[minmax(170px,1fr)_minmax(170px,1fr)_minmax(220px,2fr)] gap-3 max-lg:grid-cols-1\"\r\n >\r\n <mt-select-field\r\n [hasPlaceholderPrefix]=\"false\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.property' | transloco\r\n \"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [options]=\"fieldOptions()\"\r\n [showClear]=\"false\"\r\n [ngModel]=\"draft.field\"\r\n (ngModelChange)=\"onFieldChange(index, $event)\"\r\n />\r\n\r\n <mt-select-field\r\n [hasPlaceholderPrefix]=\"false\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.condition' | transloco\r\n \"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [options]=\"operatorOptions()\"\r\n [showClear]=\"false\"\r\n [ngModel]=\"draft.op\"\r\n (ngModelChange)=\"onOperatorChange(index, $event)\"\r\n />\r\n\r\n @switch (getValueMode(draft.op)) {\r\n @case (\"none\") {\r\n <div\r\n class=\"flex min-h-10 items-center rounded-lg border border-dashed border-surface-300 px-3 text-sm text-color-secondary\"\r\n >\r\n {{\r\n \"components.propertyFilterBuilder.noValueRequired\"\r\n | transloco\r\n }}\r\n </div>\r\n }\r\n @case (\"range\") {\r\n <div class=\"grid grid-cols-2 gap-2 max-lg:grid-cols-1\">\r\n @if (isDateField(draft.field)) {\r\n <mt-date-field\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.from' | transloco\r\n \"\r\n [showTime]=\"isDateTimeField(draft.field)\"\r\n [showIcon]=\"false\"\r\n [ngModel]=\"draft.from\"\r\n (ngModelChange)=\"onFromChange(index, $event)\"\r\n />\r\n <mt-date-field\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.to' | transloco\r\n \"\r\n [showTime]=\"isDateTimeField(draft.field)\"\r\n [showIcon]=\"false\"\r\n [ngModel]=\"draft.to\"\r\n (ngModelChange)=\"onToChange(index, $event)\"\r\n />\r\n } @else {\r\n <mt-text-field\r\n [type]=\"getValueInputType(draft.field, draft.op)\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.from' | transloco\r\n \"\r\n [ngModel]=\"draft.from\"\r\n (ngModelChange)=\"onFromChange(index, $event)\"\r\n />\r\n <mt-text-field\r\n [type]=\"getValueInputType(draft.field, draft.op)\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.to' | transloco\r\n \"\r\n [ngModel]=\"draft.to\"\r\n (ngModelChange)=\"onToChange(index, $event)\"\r\n />\r\n }\r\n </div>\r\n }\r\n @default {\r\n @if (\r\n getValueMode(draft.op) !== \"multi\" && isDateField(draft.field)\r\n ) {\r\n <mt-date-field\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.value' | transloco\r\n \"\r\n [showTime]=\"isDateTimeField(draft.field)\"\r\n [showIcon]=\"false\"\r\n [ngModel]=\"draft.value\"\r\n (ngModelChange)=\"onValueChange(index, $event)\"\r\n />\r\n } @else {\r\n <mt-text-field\r\n [type]=\"getValueInputType(draft.field, draft.op)\"\r\n [placeholder]=\"\r\n getValueMode(draft.op) === 'multi'\r\n ? ('components.propertyFilterBuilder.multiValue'\r\n | transloco)\r\n : ('components.propertyFilterBuilder.value' | transloco)\r\n \"\r\n [ngModel]=\"draft.value\"\r\n (ngModelChange)=\"onValueChange(index, $event)\"\r\n />\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n <mt-button\r\n icon=\"general.x-close\"\r\n severity=\"secondary\"\r\n variant=\"text\"\r\n [disabled]=\"drafts().length <= 1\"\r\n (onClick)=\"removeFilter(index)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex items-center justify-between p-2 max-lg:flex-col max-lg:items-stretch max-lg:gap-3\"\r\n >\r\n <mt-button\r\n [label]=\"'components.propertyFilterBuilder.addFilter' | transloco\"\r\n icon=\"general.plus\"\r\n variant=\"outlined\"\r\n [disabled]=\"!canAddFilter()\"\r\n (onClick)=\"addFilter()\"\r\n />\r\n\r\n <div class=\"flex gap-2 max-lg:w-full\">\r\n <mt-button\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n [label]=\"'components.propertyFilterBuilder.cancel' | transloco\"\r\n (onClick)=\"popover.hide()\"\r\n />\r\n <mt-button\r\n [label]=\"'components.propertyFilterBuilder.apply' | transloco\"\r\n (onClick)=\"apply(popover)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</p-popover>\r\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-property-filter-builder.mjs","sources":["../../../../packages/masterteam/components/property-filter-builder/property-filter-builder.ts","../../../../packages/masterteam/components/property-filter-builder/property-filter-builder.html","../../../../packages/masterteam/components/property-filter-builder/masterteam-components-property-filter-builder.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n booleanAttribute,\r\n computed,\r\n effect,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { DateField } from '@masterteam/components/date-field';\r\nimport { SelectField } from '@masterteam/components/select-field';\r\nimport { TextField } from '@masterteam/components/text-field';\r\nimport { PopoverModule } from 'primeng/popover';\r\n\r\nexport type PropertyFilterBuilderValueMode =\r\n | 'single'\r\n | 'multi'\r\n | 'range'\r\n | 'none';\r\n\r\nexport interface PropertyFilterBuilderFieldOption {\r\n key: string;\r\n label?: string;\r\n viewType?: string;\r\n}\r\n\r\nexport interface PropertyFilterBuilderOperatorOption {\r\n key: string;\r\n label?: string;\r\n valueMode?: PropertyFilterBuilderValueMode;\r\n}\r\n\r\nexport interface PropertyFilterBuilderSchema {\r\n allowedFields: Array<string | PropertyFilterBuilderFieldOption>;\r\n allowedOperators: Array<string | PropertyFilterBuilderOperatorOption>;\r\n maxFilters?: number;\r\n}\r\n\r\nexport interface PropertyFilterBuilderRule {\r\n field: string;\r\n op: string;\r\n value?: unknown;\r\n values?: unknown[];\r\n from?: unknown;\r\n to?: unknown;\r\n}\r\n\r\ninterface PropertyFilterBuilderDraft {\r\n id: string;\r\n field: string;\r\n op: string;\r\n value: unknown;\r\n from: unknown;\r\n to: unknown;\r\n}\r\n\r\ninterface SelectOption {\r\n key: string;\r\n label: string;\r\n viewType?: string;\r\n}\r\n\r\nconst DEFAULT_MAX_FILTERS = 20;\r\n\r\nfunction toLabel(value: string): string {\r\n const normalized = value.split('.').pop() ?? value;\r\n return normalized\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction normalizeFieldOption(\r\n value: string | PropertyFilterBuilderFieldOption,\r\n): SelectOption | null {\r\n if (typeof value === 'string') {\r\n return {\r\n key: value,\r\n label: toLabel(value),\r\n };\r\n }\r\n\r\n if (!value?.key) {\r\n return null;\r\n }\r\n\r\n return {\r\n key: value.key,\r\n label: value.label?.trim() || toLabel(value.key),\r\n viewType: value.viewType,\r\n };\r\n}\r\n\r\nfunction inferValueMode(operator: string): PropertyFilterBuilderValueMode {\r\n switch (operator) {\r\n case 'In':\r\n return 'multi';\r\n case 'Between':\r\n return 'range';\r\n case 'IsNull':\r\n case 'IsNotNull':\r\n return 'none';\r\n default:\r\n return 'single';\r\n }\r\n}\r\n\r\nfunction normalizeOperatorOption(\r\n value: string | PropertyFilterBuilderOperatorOption,\r\n): (SelectOption & { valueMode: PropertyFilterBuilderValueMode }) | null {\r\n if (typeof value === 'string') {\r\n return {\r\n key: value,\r\n label: toLabel(value),\r\n valueMode: inferValueMode(value),\r\n };\r\n }\r\n\r\n if (!value?.key) {\r\n return null;\r\n }\r\n\r\n return {\r\n key: value.key,\r\n label: value.label?.trim() || toLabel(value.key),\r\n valueMode: value.valueMode ?? inferValueMode(value.key),\r\n };\r\n}\r\n\r\nfunction toStringValue(value: unknown): string {\r\n if (value === null || value === undefined) return '';\r\n return String(value);\r\n}\r\n\r\ntype NormalizedFieldType = 'text' | 'number' | 'date' | 'datetime' | 'boolean';\r\n\r\nfunction normalizeFieldType(viewType: string | undefined): NormalizedFieldType {\r\n const normalized = viewType?.toLowerCase().trim() ?? '';\r\n\r\n if (\r\n normalized === 'number' ||\r\n normalized === 'decimal' ||\r\n normalized === 'integer' ||\r\n normalized === 'percentage' ||\r\n normalized === 'progress'\r\n ) {\r\n return 'number';\r\n }\r\n\r\n if (normalized === 'datetime' || normalized === 'datetimeoffset') {\r\n return 'datetime';\r\n }\r\n\r\n if (normalized === 'date') {\r\n return 'date';\r\n }\r\n\r\n if (normalized === 'boolean' || normalized === 'bool') {\r\n return 'boolean';\r\n }\r\n\r\n return 'text';\r\n}\r\n\r\nfunction toInputType(viewType: string | undefined): string {\r\n const normalized = normalizeFieldType(viewType);\r\n if (normalized === 'number') return 'number';\r\n if (normalized === 'date') return 'date';\r\n if (normalized === 'datetime') return 'datetime-local';\r\n return 'text';\r\n}\r\n\r\nfunction parseBoolean(value: string): boolean | string {\r\n const normalized = value.toLowerCase();\r\n if (normalized === 'true' || normalized === '1' || normalized === 'yes') {\r\n return true;\r\n }\r\n if (normalized === 'false' || normalized === '0' || normalized === 'no') {\r\n return false;\r\n }\r\n return value;\r\n}\r\n\r\nfunction parseValueByViewType(\r\n rawValue: unknown,\r\n viewType: string | undefined,\r\n): unknown {\r\n if (rawValue === null || rawValue === undefined) return '';\r\n if (rawValue instanceof Date) {\r\n return rawValue.toISOString();\r\n }\r\n\r\n const value = String(rawValue).trim();\r\n if (!value.length) return '';\r\n\r\n switch (normalizeFieldType(viewType)) {\r\n case 'number': {\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? parsed : value;\r\n }\r\n case 'boolean':\r\n return parseBoolean(value);\r\n default:\r\n return value;\r\n }\r\n}\r\n\r\nfunction hasInputValue(rawValue: unknown): boolean {\r\n if (rawValue === null || rawValue === undefined) return false;\r\n if (rawValue instanceof Date) return true;\r\n return String(rawValue).trim().length > 0;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-property-filter-builder',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n TranslocoModule,\r\n Button,\r\n DateField,\r\n PopoverModule,\r\n SelectField,\r\n TextField,\r\n ],\r\n templateUrl: './property-filter-builder.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'block',\r\n },\r\n})\r\nexport class PropertyFilterBuilder {\r\n readonly schema = input<PropertyFilterBuilderSchema | null>(null);\r\n readonly filters = model<PropertyFilterBuilderRule[]>([]);\r\n readonly title = input<string | null>(null);\r\n readonly buttonLabel = input<string | null>(null);\r\n readonly disabled = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n\r\n readonly applied = output<PropertyFilterBuilderRule[]>();\r\n readonly cleared = output<void>();\r\n\r\n private readonly rowSeed = signal(0);\r\n private readonly syncedSignature = signal('');\r\n protected readonly drafts = signal<PropertyFilterBuilderDraft[]>([]);\r\n\r\n protected readonly fieldOptions = computed(() =>\r\n (this.schema()?.allowedFields ?? [])\r\n .map(normalizeFieldOption)\r\n .filter((entry): entry is SelectOption => entry !== null),\r\n );\r\n\r\n protected readonly operatorOptions = computed(() =>\r\n (this.schema()?.allowedOperators ?? []).map(normalizeOperatorOption).filter(\r\n (\r\n entry,\r\n ): entry is SelectOption & {\r\n valueMode: PropertyFilterBuilderValueMode;\r\n } => entry !== null,\r\n ),\r\n );\r\n\r\n protected readonly hasSchema = computed(\r\n () => this.fieldOptions().length > 0 && this.operatorOptions().length > 0,\r\n );\r\n\r\n protected readonly maxFilters = computed(() =>\r\n Math.max(1, this.schema()?.maxFilters ?? DEFAULT_MAX_FILTERS),\r\n );\r\n\r\n protected readonly canAddFilter = computed(() => {\r\n return this.hasSchema() && this.drafts().length < this.maxFilters();\r\n });\r\n\r\n protected readonly activeFilterCount = computed(() => this.filters().length);\r\n\r\n constructor() {\r\n effect(() => {\r\n const fields = this.fieldOptions();\r\n const operators = this.operatorOptions();\r\n const appliedFilters = this.filters();\r\n const signature = JSON.stringify({\r\n fieldKeys: fields.map((field) => field.key),\r\n operatorKeys: operators.map((operator) => operator.key),\r\n filters: appliedFilters,\r\n });\r\n const hasDrafts = untracked(() => this.drafts().length > 0);\r\n const lastSyncedSignature = untracked(() => this.syncedSignature());\r\n\r\n if (!fields.length || !operators.length) {\r\n this.drafts.set([]);\r\n this.syncedSignature.set(signature);\r\n return;\r\n }\r\n\r\n if (hasDrafts && lastSyncedSignature === signature) {\r\n return;\r\n }\r\n\r\n if (!appliedFilters.length) {\r\n this.drafts.set([this.createDraft(fields[0].key, operators[0].key)]);\r\n this.syncedSignature.set(signature);\r\n return;\r\n }\r\n\r\n const nextDrafts = appliedFilters.map((rule) => {\r\n const operatorKey = operators.some((option) => option.key === rule.op)\r\n ? rule.op\r\n : operators[0].key;\r\n const fieldKey = fields.some((option) => option.key === rule.field)\r\n ? rule.field\r\n : fields[0].key;\r\n const mode = this.getValueMode(operatorKey);\r\n\r\n return this.createDraft(\r\n fieldKey,\r\n operatorKey,\r\n mode === 'range' ? '' : this.toDraftValue(rule),\r\n mode === 'range' ? toStringValue(rule.from) : '',\r\n mode === 'range' ? toStringValue(rule.to) : '',\r\n );\r\n });\r\n\r\n this.drafts.set(\r\n nextDrafts.length\r\n ? nextDrafts\r\n : [this.createDraft(fields[0].key, operators[0].key)],\r\n );\r\n this.syncedSignature.set(signature);\r\n });\r\n }\r\n\r\n onPopoverToggle(\r\n event: Event,\r\n popover: { toggle: (event: Event) => void },\r\n ): void {\r\n if (!this.hasSchema() || this.disabled()) {\r\n return;\r\n }\r\n popover.toggle(event);\r\n }\r\n\r\n addFilter(): void {\r\n const fields = this.fieldOptions();\r\n const operators = this.operatorOptions();\r\n if (!fields.length || !operators.length) return;\r\n\r\n this.drafts.update((current) => {\r\n if (current.length >= this.maxFilters()) {\r\n return current;\r\n }\r\n\r\n return [...current, this.createDraft(fields[0].key, operators[0].key)];\r\n });\r\n }\r\n\r\n removeFilter(index: number): void {\r\n this.drafts.update((current) => {\r\n if (current.length <= 1) {\r\n return current;\r\n }\r\n return current.filter((_, rowIndex) => rowIndex !== index);\r\n });\r\n }\r\n\r\n clearAll(popover: { hide: () => void }): void {\r\n const fields = this.fieldOptions();\r\n const operators = this.operatorOptions();\r\n\r\n if (fields.length && operators.length) {\r\n this.drafts.set([this.createDraft(fields[0].key, operators[0].key)]);\r\n } else {\r\n this.drafts.set([]);\r\n }\r\n\r\n this.filters.set([]);\r\n this.cleared.emit();\r\n popover.hide();\r\n }\r\n\r\n apply(popover: { hide: () => void }): void {\r\n const rules = this.buildRulesFromDrafts();\r\n this.filters.set(rules);\r\n this.applied.emit(rules);\r\n popover.hide();\r\n }\r\n\r\n onFieldChange(index: number, field: string): void {\r\n this.patchDraft(index, { field: field || '' });\r\n }\r\n\r\n onOperatorChange(index: number, op: string): void {\r\n const mode = this.getValueMode(op);\r\n this.patchDraft(index, {\r\n op: op || '',\r\n value: mode === 'range' ? '' : (this.drafts()[index]?.value ?? ''),\r\n from: mode === 'range' ? (this.drafts()[index]?.from ?? '') : '',\r\n to: mode === 'range' ? (this.drafts()[index]?.to ?? '') : '',\r\n });\r\n }\r\n\r\n onValueChange(index: number, value: unknown): void {\r\n this.patchDraft(index, { value: value ?? '' });\r\n }\r\n\r\n onFromChange(index: number, from: unknown): void {\r\n this.patchDraft(index, { from: from ?? '' });\r\n }\r\n\r\n onToChange(index: number, to: unknown): void {\r\n this.patchDraft(index, { to: to ?? '' });\r\n }\r\n\r\n getValueMode(op: string): PropertyFilterBuilderValueMode {\r\n return (\r\n this.operatorOptions().find((option) => option.key === op)?.valueMode ??\r\n inferValueMode(op)\r\n );\r\n }\r\n\r\n getValueInputType(field: string, op: string): string {\r\n if (this.getValueMode(op) === 'multi') {\r\n return 'text';\r\n }\r\n return toInputType(this.getFieldViewType(field));\r\n }\r\n\r\n isDateField(field: string): boolean {\r\n const normalized = normalizeFieldType(this.getFieldViewType(field));\r\n return normalized === 'date' || normalized === 'datetime';\r\n }\r\n\r\n isDateTimeField(field: string): boolean {\r\n return normalizeFieldType(this.getFieldViewType(field)) === 'datetime';\r\n }\r\n\r\n private buildRulesFromDrafts(): PropertyFilterBuilderRule[] {\r\n return this.drafts()\r\n .map((draft) => {\r\n if (!draft.field || !draft.op) {\r\n return null;\r\n }\r\n\r\n const mode = this.getValueMode(draft.op);\r\n const viewType = this.getFieldViewType(draft.field);\r\n const rule: PropertyFilterBuilderRule = {\r\n field: draft.field,\r\n op: draft.op,\r\n };\r\n\r\n if (mode === 'none') {\r\n return rule;\r\n }\r\n\r\n if (mode === 'range') {\r\n if (!hasInputValue(draft.from) && !hasInputValue(draft.to)) {\r\n return null;\r\n }\r\n if (hasInputValue(draft.from)) {\r\n rule.from = parseValueByViewType(draft.from, viewType);\r\n }\r\n if (hasInputValue(draft.to)) {\r\n rule.to = parseValueByViewType(draft.to, viewType);\r\n }\r\n return rule;\r\n }\r\n\r\n if (!hasInputValue(draft.value)) {\r\n return null;\r\n }\r\n\r\n if (mode === 'multi') {\r\n const values = String(draft.value)\r\n .split(',')\r\n .map((value) => value.trim())\r\n .filter((value) => value.length > 0)\r\n .map((value) => parseValueByViewType(value, viewType));\r\n\r\n if (!values.length) {\r\n return null;\r\n }\r\n\r\n rule.values = values;\r\n return rule;\r\n }\r\n\r\n rule.value = parseValueByViewType(draft.value, viewType);\r\n return rule;\r\n })\r\n .filter((rule): rule is PropertyFilterBuilderRule => rule !== null)\r\n .slice(0, this.maxFilters());\r\n }\r\n\r\n private getFieldViewType(fieldKey: string): string | undefined {\r\n return this.fieldOptions().find((option) => option.key === fieldKey)\r\n ?.viewType;\r\n }\r\n\r\n private patchDraft(\r\n index: number,\r\n patch: Partial<PropertyFilterBuilderDraft>,\r\n ): void {\r\n this.drafts.update((current) =>\r\n current.map((row, rowIndex) =>\r\n rowIndex === index\r\n ? {\r\n ...row,\r\n ...patch,\r\n }\r\n : row,\r\n ),\r\n );\r\n }\r\n\r\n private createDraft(\r\n field: string,\r\n op: string,\r\n value: unknown = '',\r\n from: unknown = '',\r\n to: unknown = '',\r\n ): PropertyFilterBuilderDraft {\r\n this.rowSeed.update((seed) => seed + 1);\r\n return {\r\n id: `pfb-${this.rowSeed()}`,\r\n field,\r\n op,\r\n value,\r\n from,\r\n to,\r\n };\r\n }\r\n\r\n private toDraftValue(rule: PropertyFilterBuilderRule): string {\r\n if (Array.isArray(rule.values)) {\r\n return rule.values.map((entry) => toStringValue(entry)).join(', ');\r\n }\r\n\r\n return toStringValue(rule.value);\r\n }\r\n}\r\n","<mt-button\r\n [label]=\"\r\n buttonLabel() || ('components.propertyFilterBuilder.filter' | transloco)\r\n \"\r\n severity=\"secondary\"\r\n icon=\"general.filter-funnel-01\"\r\n [badge]=\"activeFilterCount() > 0 ? activeFilterCount().toString() : undefined\"\r\n [disabled]=\"disabled() || !hasSchema()\"\r\n (onClick)=\"onPopoverToggle($event, popover)\"\r\n/>\r\n\r\n<p-popover #popover [style]=\"{ width: 'min(980px, 92vw)' }\" appendTo=\"body\">\r\n <div class=\"flex flex-col gap-4\">\r\n <div\r\n class=\"flex items-center justify-between border-b border-surface-200 pb-3 px-3\"\r\n >\r\n <div class=\"flex flex-col\">\r\n <h3 class=\"m-0 text-lg font-semibold\">\r\n {{\r\n title() ||\r\n (\"components.propertyFilterBuilder.advancedFilters\" | transloco)\r\n }}\r\n </h3>\r\n </div>\r\n\r\n <mt-button\r\n variant=\"text\"\r\n severity=\"secondary\"\r\n [label]=\"'components.propertyFilterBuilder.clearAll' | transloco\"\r\n (onClick)=\"clearAll(popover)\"\r\n />\r\n </div>\r\n\r\n <div class=\"flex flex-col gap-3 px-3\">\r\n @for (draft of drafts(); track draft.id; let index = $index) {\r\n <div\r\n class=\"grid grid-cols-[80px_minmax(0,1fr)_auto] items-center gap-2 max-lg:grid-cols-1 max-lg:items-start\"\r\n >\r\n <div class=\"text-sm text-color\" [class.invisible]=\"index > 0\">\r\n {{ \"components.propertyFilterBuilder.where\" | transloco }}\r\n </div>\r\n\r\n <div\r\n class=\"grid grid-cols-[minmax(170px,1fr)_minmax(170px,1fr)_minmax(220px,2fr)] gap-3 max-lg:grid-cols-1\"\r\n >\r\n <mt-select-field\r\n [hasPlaceholderPrefix]=\"false\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.property' | transloco\r\n \"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [options]=\"fieldOptions()\"\r\n [showClear]=\"false\"\r\n [ngModel]=\"draft.field\"\r\n (ngModelChange)=\"onFieldChange(index, $event)\"\r\n />\r\n\r\n <mt-select-field\r\n [hasPlaceholderPrefix]=\"false\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.condition' | transloco\r\n \"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [options]=\"operatorOptions()\"\r\n [showClear]=\"false\"\r\n [ngModel]=\"draft.op\"\r\n (ngModelChange)=\"onOperatorChange(index, $event)\"\r\n />\r\n\r\n @switch (getValueMode(draft.op)) {\r\n @case (\"none\") {\r\n <div\r\n class=\"flex min-h-10 items-center rounded-lg border border-dashed border-surface-300 px-3 text-sm text-color-secondary\"\r\n >\r\n {{\r\n \"components.propertyFilterBuilder.noValueRequired\"\r\n | transloco\r\n }}\r\n </div>\r\n }\r\n @case (\"range\") {\r\n <div class=\"grid grid-cols-2 gap-2 max-lg:grid-cols-1\">\r\n @if (isDateField(draft.field)) {\r\n <mt-date-field\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.from' | transloco\r\n \"\r\n [showTime]=\"isDateTimeField(draft.field)\"\r\n [showIcon]=\"false\"\r\n [ngModel]=\"draft.from\"\r\n (ngModelChange)=\"onFromChange(index, $event)\"\r\n />\r\n <mt-date-field\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.to' | transloco\r\n \"\r\n [showTime]=\"isDateTimeField(draft.field)\"\r\n [showIcon]=\"false\"\r\n [ngModel]=\"draft.to\"\r\n (ngModelChange)=\"onToChange(index, $event)\"\r\n />\r\n } @else {\r\n <mt-text-field\r\n [type]=\"getValueInputType(draft.field, draft.op)\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.from' | transloco\r\n \"\r\n [ngModel]=\"draft.from\"\r\n (ngModelChange)=\"onFromChange(index, $event)\"\r\n />\r\n <mt-text-field\r\n [type]=\"getValueInputType(draft.field, draft.op)\"\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.to' | transloco\r\n \"\r\n [ngModel]=\"draft.to\"\r\n (ngModelChange)=\"onToChange(index, $event)\"\r\n />\r\n }\r\n </div>\r\n }\r\n @default {\r\n @if (\r\n getValueMode(draft.op) !== \"multi\" && isDateField(draft.field)\r\n ) {\r\n <mt-date-field\r\n [placeholder]=\"\r\n 'components.propertyFilterBuilder.value' | transloco\r\n \"\r\n [showTime]=\"isDateTimeField(draft.field)\"\r\n [showIcon]=\"false\"\r\n [ngModel]=\"draft.value\"\r\n (ngModelChange)=\"onValueChange(index, $event)\"\r\n />\r\n } @else {\r\n <mt-text-field\r\n [type]=\"getValueInputType(draft.field, draft.op)\"\r\n [placeholder]=\"\r\n getValueMode(draft.op) === 'multi'\r\n ? ('components.propertyFilterBuilder.multiValue'\r\n | transloco)\r\n : ('components.propertyFilterBuilder.value' | transloco)\r\n \"\r\n [ngModel]=\"draft.value\"\r\n (ngModelChange)=\"onValueChange(index, $event)\"\r\n />\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n <mt-button\r\n icon=\"general.x-close\"\r\n severity=\"secondary\"\r\n variant=\"text\"\r\n [disabled]=\"drafts().length <= 1\"\r\n (onClick)=\"removeFilter(index)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex items-center justify-between p-2 max-lg:flex-col max-lg:items-stretch max-lg:gap-3\"\r\n >\r\n <mt-button\r\n [label]=\"'components.propertyFilterBuilder.addFilter' | transloco\"\r\n icon=\"general.plus\"\r\n variant=\"outlined\"\r\n [disabled]=\"!canAddFilter()\"\r\n (onClick)=\"addFilter()\"\r\n />\r\n\r\n <div class=\"flex gap-2 max-lg:w-full\">\r\n <mt-button\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n [label]=\"'components.propertyFilterBuilder.cancel' | transloco\"\r\n (onClick)=\"popover.hide()\"\r\n />\r\n <mt-button\r\n [label]=\"'components.propertyFilterBuilder.apply' | transloco\"\r\n (onClick)=\"apply(popover)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</p-popover>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -261,7 +261,7 @@ class SelectField {
|
|
|
261
261
|
optionOrValue);
|
|
262
262
|
}
|
|
263
263
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SelectField, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
264
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: SelectField, isStandalone: true, selector: "mt-select-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, hasPlaceholderPrefix: { classPropertyName: "hasPlaceholderPrefix", publicName: "hasPlaceholderPrefix", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, pInputs: { classPropertyName: "pInputs", publicName: "pInputs", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, clearAfterSelect: { classPropertyName: "clearAfterSelect", publicName: "clearAfterSelect", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, optionGroupLabel: { classPropertyName: "optionGroupLabel", publicName: "optionGroupLabel", isSignal: true, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, optionIcon: { classPropertyName: "optionIcon", publicName: "optionIcon", isSignal: true, isRequired: false, transformFunction: null }, optionIconColor: { classPropertyName: "optionIconColor", publicName: "optionIconColor", isSignal: true, isRequired: false, transformFunction: null }, optionIconShape: { classPropertyName: "optionIconShape", publicName: "optionIconShape", isSignal: true, isRequired: false, transformFunction: null }, optionAvatarShape: { classPropertyName: "optionAvatarShape", publicName: "optionAvatarShape", isSignal: true, isRequired: false, transformFunction: null }, optionGroupIcon: { classPropertyName: "optionGroupIcon", publicName: "optionGroupIcon", isSignal: true, isRequired: false, transformFunction: null }, optionGroupIconColor: { classPropertyName: "optionGroupIconColor", publicName: "optionGroupIconColor", isSignal: true, isRequired: false, transformFunction: null }, optionGroupIconShape: { classPropertyName: "optionGroupIconShape", publicName: "optionGroupIconShape", isSignal: true, isRequired: false, transformFunction: null }, optionGroupAvatarShape: { classPropertyName: "optionGroupAvatarShape", publicName: "optionGroupAvatarShape", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChange: "onChange" }, host: { properties: { "class": "this.styleClass" }, classAttribute: "block gap-1" }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "@if (label() || hint()) {\n <div class=\"mb-1 flex items-center gap-1\">\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 @if (hint()) {\n <span\n class=\"inline-flex text-surface-400\"\n [mtTooltip]=\"hint()\"\n tooltipPosition=\"top\"\n >\n <mt-icon icon=\"general.help-circle\" />\n </span>\n }\n </div>\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]=\"size() === 'small' ? ' mt-select-sm' : ''\"\n [showClear]=\"showClear()\"\n [group]=\"isGrouped()\"\n [optionGroupLabel]=\"optionGroupLabel()\"\n [optionGroupChildren]=\"optionGroupChildren()\"\n [loading]=\"loading()\"\n [fluid]=\"true\"\n [size]=\"pSelectSize()\"\n [panelStyleClass]=\"panelSizeClass()\"\n>\n <ng-template let-option #selectedItem>\n @if (option) {\n <div class=\"flex items-center gap-2\">\n @if (shouldRenderOptionColorSwatch(option)) {\n <span\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\n [style.backgroundColor]=\"getOptionSwatchColor(option)\"\n ></span>\n } @else if (getOptionIcon(option)) {\n <mt-avatar\n [style.--p-avatar-background]=\"getOptionAvatarBackground(option)\"\n [style.--p-avatar-color]=\"getOptionAvatarColor(option)\"\n [icon]=\"getOptionIcon(option)\"\n [shape]=\"getOptionAvatarShape(option)\"\n size=\"normal\"\n />\n }\n <span>{{ getOptionLabelValue(option) }}</span>\n </div>\n } @else {\n <span class=\"text-color-secondary\">{{\n (hasPlaceholderPrefix()\n ? (\"components.table.select\" | transloco)\n : \"\") +\n \" \" +\n (placeholder() ?? label() ?? \"\")\n }}</span>\n }\n </ng-template>\n\n <ng-template let-option #item>\n <div class=\"flex items-center gap-2\">\n @if (shouldRenderOptionColorSwatch(option)) {\n <span\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\n [style.backgroundColor]=\"getOptionSwatchColor(option)\"\n ></span>\n } @else if (getOptionIcon(option)) {\n <mt-avatar\n [style.--p-avatar-background]=\"getOptionAvatarBackground(option)\"\n [style.--p-avatar-color]=\"getOptionAvatarColor(option)\"\n [icon]=\"getOptionIcon(option)\"\n [shape]=\"getOptionAvatarShape(option)\"\n size=\"normal\"\n />\n }\n <span>{{ getOptionLabelValue(option) }}</span>\n </div>\n </ng-template>\n\n <ng-template let-group #group>\n <div class=\"flex items-center gap-2\">\n @if (shouldRenderGroupColorSwatch(group)) {\n <span\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\n [style.backgroundColor]=\"getGroupSwatchColor(group)\"\n ></span>\n } @else if (getGroupIcon(group)) {\n <mt-avatar\n [style.--p-avatar-background]=\"getGroupAvatarBackground(group)\"\n [style.--p-avatar-color]=\"getGroupAvatarColor(group)\"\n [icon]=\"getGroupIcon(group)\"\n [shape]=\"getGroupAvatarShape(group)\"\n size=\"normal\"\n />\n }\n <span class=\"font-medium\">{{ getGroupLabelValue(group) }}</span>\n </div>\n </ng-template>\n</p-select>\n\n@if (ngControl) {\n <mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "directive", type: Tooltip, selector: "[mtTooltip]" }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "pipe", type: i2.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
264
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: SelectField, isStandalone: true, selector: "mt-select-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, hasPlaceholderPrefix: { classPropertyName: "hasPlaceholderPrefix", publicName: "hasPlaceholderPrefix", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, pInputs: { classPropertyName: "pInputs", publicName: "pInputs", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, clearAfterSelect: { classPropertyName: "clearAfterSelect", publicName: "clearAfterSelect", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, optionGroupLabel: { classPropertyName: "optionGroupLabel", publicName: "optionGroupLabel", isSignal: true, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, optionIcon: { classPropertyName: "optionIcon", publicName: "optionIcon", isSignal: true, isRequired: false, transformFunction: null }, optionIconColor: { classPropertyName: "optionIconColor", publicName: "optionIconColor", isSignal: true, isRequired: false, transformFunction: null }, optionIconShape: { classPropertyName: "optionIconShape", publicName: "optionIconShape", isSignal: true, isRequired: false, transformFunction: null }, optionAvatarShape: { classPropertyName: "optionAvatarShape", publicName: "optionAvatarShape", isSignal: true, isRequired: false, transformFunction: null }, optionGroupIcon: { classPropertyName: "optionGroupIcon", publicName: "optionGroupIcon", isSignal: true, isRequired: false, transformFunction: null }, optionGroupIconColor: { classPropertyName: "optionGroupIconColor", publicName: "optionGroupIconColor", isSignal: true, isRequired: false, transformFunction: null }, optionGroupIconShape: { classPropertyName: "optionGroupIconShape", publicName: "optionGroupIconShape", isSignal: true, isRequired: false, transformFunction: null }, optionGroupAvatarShape: { classPropertyName: "optionGroupAvatarShape", publicName: "optionGroupAvatarShape", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChange: "onChange" }, host: { properties: { "class": "this.styleClass" }, classAttribute: "block gap-1" }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "@if (label() || hint()) {\r\n <div class=\"mb-1 flex items-center gap-1\">\r\n @if (label()) {\r\n <label\r\n (click)=\"dropdown.show(); dropdown.focus()\"\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n @if (hint()) {\r\n <span\r\n class=\"inline-flex text-surface-400\"\r\n [mtTooltip]=\"hint()\"\r\n tooltipPosition=\"top\"\r\n >\r\n <mt-icon icon=\"general.help-circle\" />\r\n </span>\r\n }\r\n </div>\r\n}\r\n<p-select\r\n #dropdown\r\n appendTo=\"body\"\r\n [overlayOptions]=\"{ baseZIndex: 1051 }\"\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n [options]=\"options()\"\r\n [optionLabel]=\"optionLabel()\"\r\n [optionValue]=\"optionValue()\"\r\n (onBlur)=\"onTouched()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n [id]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n [invalid]=\"isInvalid(ngControl?.control)\"\r\n placeholder=\"{{\r\n (hasPlaceholderPrefix() ? ('components.table.select' | transloco) : '') +\r\n ' ' +\r\n (placeholder() ?? label() ?? '')\r\n }}\"\r\n [filter]=\"filter()\"\r\n [filterBy]=\"filterBy()\"\r\n [dataKey]=\"dataKey()\"\r\n [styleClass]=\"size() === 'small' ? ' mt-select-sm' : ''\"\r\n [showClear]=\"showClear()\"\r\n [group]=\"isGrouped()\"\r\n [optionGroupLabel]=\"optionGroupLabel()\"\r\n [optionGroupChildren]=\"optionGroupChildren()\"\r\n [loading]=\"loading()\"\r\n [fluid]=\"true\"\r\n [size]=\"pSelectSize()\"\r\n [panelStyleClass]=\"panelSizeClass()\"\r\n>\r\n <ng-template let-option #selectedItem>\r\n @if (option) {\r\n <div class=\"flex items-center gap-2\">\r\n @if (shouldRenderOptionColorSwatch(option)) {\r\n <span\r\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\r\n [style.backgroundColor]=\"getOptionSwatchColor(option)\"\r\n ></span>\r\n } @else if (getOptionIcon(option)) {\r\n <mt-avatar\r\n [style.--p-avatar-background]=\"getOptionAvatarBackground(option)\"\r\n [style.--p-avatar-color]=\"getOptionAvatarColor(option)\"\r\n [icon]=\"getOptionIcon(option)\"\r\n [shape]=\"getOptionAvatarShape(option)\"\r\n size=\"normal\"\r\n />\r\n }\r\n <span>{{ getOptionLabelValue(option) }}</span>\r\n </div>\r\n } @else {\r\n <span class=\"text-color-secondary\">{{\r\n (hasPlaceholderPrefix()\r\n ? (\"components.table.select\" | transloco)\r\n : \"\") +\r\n \" \" +\r\n (placeholder() ?? label() ?? \"\")\r\n }}</span>\r\n }\r\n </ng-template>\r\n\r\n <ng-template let-option #item>\r\n <div class=\"flex items-center gap-2\">\r\n @if (shouldRenderOptionColorSwatch(option)) {\r\n <span\r\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\r\n [style.backgroundColor]=\"getOptionSwatchColor(option)\"\r\n ></span>\r\n } @else if (getOptionIcon(option)) {\r\n <mt-avatar\r\n [style.--p-avatar-background]=\"getOptionAvatarBackground(option)\"\r\n [style.--p-avatar-color]=\"getOptionAvatarColor(option)\"\r\n [icon]=\"getOptionIcon(option)\"\r\n [shape]=\"getOptionAvatarShape(option)\"\r\n size=\"normal\"\r\n />\r\n }\r\n <span>{{ getOptionLabelValue(option) }}</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template let-group #group>\r\n <div class=\"flex items-center gap-2\">\r\n @if (shouldRenderGroupColorSwatch(group)) {\r\n <span\r\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\r\n [style.backgroundColor]=\"getGroupSwatchColor(group)\"\r\n ></span>\r\n } @else if (getGroupIcon(group)) {\r\n <mt-avatar\r\n [style.--p-avatar-background]=\"getGroupAvatarBackground(group)\"\r\n [style.--p-avatar-color]=\"getGroupAvatarColor(group)\"\r\n [icon]=\"getGroupIcon(group)\"\r\n [shape]=\"getGroupAvatarShape(group)\"\r\n size=\"normal\"\r\n />\r\n }\r\n <span class=\"font-medium\">{{ getGroupLabelValue(group) }}</span>\r\n </div>\r\n </ng-template>\r\n</p-select>\r\n\r\n@if (ngControl) {\r\n <mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n}\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "directive", type: Tooltip, selector: "[mtTooltip]" }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "pipe", type: i2.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
265
265
|
}
|
|
266
266
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SelectField, decorators: [{
|
|
267
267
|
type: Component,
|
|
@@ -275,7 +275,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
275
275
|
Icon,
|
|
276
276
|
], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
277
277
|
class: 'block gap-1',
|
|
278
|
-
}, template: "@if (label() || hint()) {\n <div class=\"mb-1 flex items-center gap-1\">\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 @if (hint()) {\n <span\n class=\"inline-flex text-surface-400\"\n [mtTooltip]=\"hint()\"\n tooltipPosition=\"top\"\n >\n <mt-icon icon=\"general.help-circle\" />\n </span>\n }\n </div>\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]=\"size() === 'small' ? ' mt-select-sm' : ''\"\n [showClear]=\"showClear()\"\n [group]=\"isGrouped()\"\n [optionGroupLabel]=\"optionGroupLabel()\"\n [optionGroupChildren]=\"optionGroupChildren()\"\n [loading]=\"loading()\"\n [fluid]=\"true\"\n [size]=\"pSelectSize()\"\n [panelStyleClass]=\"panelSizeClass()\"\n>\n <ng-template let-option #selectedItem>\n @if (option) {\n <div class=\"flex items-center gap-2\">\n @if (shouldRenderOptionColorSwatch(option)) {\n <span\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\n [style.backgroundColor]=\"getOptionSwatchColor(option)\"\n ></span>\n } @else if (getOptionIcon(option)) {\n <mt-avatar\n [style.--p-avatar-background]=\"getOptionAvatarBackground(option)\"\n [style.--p-avatar-color]=\"getOptionAvatarColor(option)\"\n [icon]=\"getOptionIcon(option)\"\n [shape]=\"getOptionAvatarShape(option)\"\n size=\"normal\"\n />\n }\n <span>{{ getOptionLabelValue(option) }}</span>\n </div>\n } @else {\n <span class=\"text-color-secondary\">{{\n (hasPlaceholderPrefix()\n ? (\"components.table.select\" | transloco)\n : \"\") +\n \" \" +\n (placeholder() ?? label() ?? \"\")\n }}</span>\n }\n </ng-template>\n\n <ng-template let-option #item>\n <div class=\"flex items-center gap-2\">\n @if (shouldRenderOptionColorSwatch(option)) {\n <span\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\n [style.backgroundColor]=\"getOptionSwatchColor(option)\"\n ></span>\n } @else if (getOptionIcon(option)) {\n <mt-avatar\n [style.--p-avatar-background]=\"getOptionAvatarBackground(option)\"\n [style.--p-avatar-color]=\"getOptionAvatarColor(option)\"\n [icon]=\"getOptionIcon(option)\"\n [shape]=\"getOptionAvatarShape(option)\"\n size=\"normal\"\n />\n }\n <span>{{ getOptionLabelValue(option) }}</span>\n </div>\n </ng-template>\n\n <ng-template let-group #group>\n <div class=\"flex items-center gap-2\">\n @if (shouldRenderGroupColorSwatch(group)) {\n <span\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\n [style.backgroundColor]=\"getGroupSwatchColor(group)\"\n ></span>\n } @else if (getGroupIcon(group)) {\n <mt-avatar\n [style.--p-avatar-background]=\"getGroupAvatarBackground(group)\"\n [style.--p-avatar-color]=\"getGroupAvatarColor(group)\"\n [icon]=\"getGroupIcon(group)\"\n [shape]=\"getGroupAvatarShape(group)\"\n size=\"normal\"\n />\n }\n <span class=\"font-medium\">{{ getGroupLabelValue(group) }}</span>\n </div>\n </ng-template>\n</p-select>\n\n@if (ngControl) {\n <mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\n}\n" }]
|
|
278
|
+
}, template: "@if (label() || hint()) {\r\n <div class=\"mb-1 flex items-center gap-1\">\r\n @if (label()) {\r\n <label\r\n (click)=\"dropdown.show(); dropdown.focus()\"\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n @if (hint()) {\r\n <span\r\n class=\"inline-flex text-surface-400\"\r\n [mtTooltip]=\"hint()\"\r\n tooltipPosition=\"top\"\r\n >\r\n <mt-icon icon=\"general.help-circle\" />\r\n </span>\r\n }\r\n </div>\r\n}\r\n<p-select\r\n #dropdown\r\n appendTo=\"body\"\r\n [overlayOptions]=\"{ baseZIndex: 1051 }\"\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n [options]=\"options()\"\r\n [optionLabel]=\"optionLabel()\"\r\n [optionValue]=\"optionValue()\"\r\n (onBlur)=\"onTouched()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n [id]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n [invalid]=\"isInvalid(ngControl?.control)\"\r\n placeholder=\"{{\r\n (hasPlaceholderPrefix() ? ('components.table.select' | transloco) : '') +\r\n ' ' +\r\n (placeholder() ?? label() ?? '')\r\n }}\"\r\n [filter]=\"filter()\"\r\n [filterBy]=\"filterBy()\"\r\n [dataKey]=\"dataKey()\"\r\n [styleClass]=\"size() === 'small' ? ' mt-select-sm' : ''\"\r\n [showClear]=\"showClear()\"\r\n [group]=\"isGrouped()\"\r\n [optionGroupLabel]=\"optionGroupLabel()\"\r\n [optionGroupChildren]=\"optionGroupChildren()\"\r\n [loading]=\"loading()\"\r\n [fluid]=\"true\"\r\n [size]=\"pSelectSize()\"\r\n [panelStyleClass]=\"panelSizeClass()\"\r\n>\r\n <ng-template let-option #selectedItem>\r\n @if (option) {\r\n <div class=\"flex items-center gap-2\">\r\n @if (shouldRenderOptionColorSwatch(option)) {\r\n <span\r\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\r\n [style.backgroundColor]=\"getOptionSwatchColor(option)\"\r\n ></span>\r\n } @else if (getOptionIcon(option)) {\r\n <mt-avatar\r\n [style.--p-avatar-background]=\"getOptionAvatarBackground(option)\"\r\n [style.--p-avatar-color]=\"getOptionAvatarColor(option)\"\r\n [icon]=\"getOptionIcon(option)\"\r\n [shape]=\"getOptionAvatarShape(option)\"\r\n size=\"normal\"\r\n />\r\n }\r\n <span>{{ getOptionLabelValue(option) }}</span>\r\n </div>\r\n } @else {\r\n <span class=\"text-color-secondary\">{{\r\n (hasPlaceholderPrefix()\r\n ? (\"components.table.select\" | transloco)\r\n : \"\") +\r\n \" \" +\r\n (placeholder() ?? label() ?? \"\")\r\n }}</span>\r\n }\r\n </ng-template>\r\n\r\n <ng-template let-option #item>\r\n <div class=\"flex items-center gap-2\">\r\n @if (shouldRenderOptionColorSwatch(option)) {\r\n <span\r\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\r\n [style.backgroundColor]=\"getOptionSwatchColor(option)\"\r\n ></span>\r\n } @else if (getOptionIcon(option)) {\r\n <mt-avatar\r\n [style.--p-avatar-background]=\"getOptionAvatarBackground(option)\"\r\n [style.--p-avatar-color]=\"getOptionAvatarColor(option)\"\r\n [icon]=\"getOptionIcon(option)\"\r\n [shape]=\"getOptionAvatarShape(option)\"\r\n size=\"normal\"\r\n />\r\n }\r\n <span>{{ getOptionLabelValue(option) }}</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template let-group #group>\r\n <div class=\"flex items-center gap-2\">\r\n @if (shouldRenderGroupColorSwatch(group)) {\r\n <span\r\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\r\n [style.backgroundColor]=\"getGroupSwatchColor(group)\"\r\n ></span>\r\n } @else if (getGroupIcon(group)) {\r\n <mt-avatar\r\n [style.--p-avatar-background]=\"getGroupAvatarBackground(group)\"\r\n [style.--p-avatar-color]=\"getGroupAvatarColor(group)\"\r\n [icon]=\"getGroupIcon(group)\"\r\n [shape]=\"getGroupAvatarShape(group)\"\r\n size=\"normal\"\r\n />\r\n }\r\n <span class=\"font-medium\">{{ getGroupLabelValue(group) }}</span>\r\n </div>\r\n </ng-template>\r\n</p-select>\r\n\r\n@if (ngControl) {\r\n <mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n}\r\n" }]
|
|
279
279
|
}], ctorParameters: () => [], propDecorators: { dropdown: [{
|
|
280
280
|
type: ViewChild,
|
|
281
281
|
args: ['dropdown', { static: true }]
|
|
@@ -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 computed,\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';\nimport { Avatar } from '@masterteam/components/avatar';\nimport { Tooltip } from '@masterteam/components/tooltip';\nimport { Icon } from '@masterteam/icons';\n\n@Component({\n selector: 'mt-select-field',\n standalone: true,\n imports: [\n FormsModule,\n Select,\n FieldValidation,\n TranslocoModule,\n Avatar,\n Tooltip,\n Icon,\n ],\n templateUrl: './select-field.html',\n styleUrls: ['./select-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block 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 hint = input<string>();\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 readonly group = input<boolean>(false);\n readonly size = input<'small' | 'large' | ''>('');\n\n readonly pSelectSize = computed(() => this.size() as 'small' | 'large' | '');\n\n readonly panelSizeClass = computed(() =>\n this.size() === 'small' ? 'mt-select-panel-small' : '',\n );\n readonly optionGroupLabel = input<string>('label');\n readonly optionGroupChildren = input<string>('items');\n readonly loading = input<boolean>(false);\n readonly optionIcon = input<string>('icon');\n readonly optionIconColor = input<string>('color');\n readonly optionIconShape = input<string>('shape');\n readonly optionAvatarShape = input<'circle' | 'square'>('square');\n readonly optionGroupIcon = input<string>('icon');\n readonly optionGroupIconColor = input<string>('color');\n readonly optionGroupIconShape = input<string>('shape');\n readonly optionGroupAvatarShape = input<'circle' | 'square'>('square');\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: NgControl | null = null;\n\n isInvalid = isInvalid;\n\n constructor() {\n try {\n this.ngControl = inject(NgControl, { self: true, optional: true });\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n } catch {\n this.ngControl = null;\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 isGrouped(): boolean {\n return this.group();\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 getOptionLabelValue(option: any): string {\n const resolvedOption = this.resolveOption(option);\n if (resolvedOption == null) return '';\n\n const labelKey = this.optionLabel();\n if (labelKey && typeof resolvedOption === 'object') {\n return this.resolveNestedValue(resolvedOption, labelKey) ?? '';\n }\n\n return typeof resolvedOption === 'object'\n ? (resolvedOption.label ?? '')\n : String(resolvedOption);\n }\n\n getOptionIcon(option: any): string | undefined {\n const resolvedOption = this.resolveOption(option);\n if (!resolvedOption || typeof resolvedOption !== 'object') return undefined;\n return resolvedOption[this.optionIcon()];\n }\n\n shouldRenderOptionColorSwatch(option: any): boolean {\n return !!this.getOptionSwatchColor(option) && !this.getOptionIcon(option);\n }\n\n getOptionSwatchColor(option: any): string | null {\n return this.resolveDisplayColor(this.getOptionColor(option));\n }\n\n getOptionAvatarBackground(option: any): string | null {\n return this.getAvatarBackgroundByColor(this.getOptionColor(option));\n }\n\n getOptionAvatarColor(option: any): string | null {\n return this.getAvatarColorByColor(this.getOptionColor(option));\n }\n\n getOptionAvatarShape(option: any): 'circle' | 'square' {\n const resolvedOption = this.resolveOption(option);\n if (!resolvedOption || typeof resolvedOption !== 'object') {\n return this.normalizeAvatarShape(this.optionAvatarShape());\n }\n\n return this.normalizeAvatarShape(\n resolvedOption[this.optionIconShape()] ?? this.optionAvatarShape(),\n );\n }\n\n getGroupLabelValue(group: any): string {\n if (group == null) return '';\n\n const groupLabelKey = this.optionGroupLabel();\n if (groupLabelKey && typeof group === 'object') {\n return group[groupLabelKey] ?? '';\n }\n\n return typeof group === 'object' ? (group.label ?? '') : String(group);\n }\n\n getGroupIcon(group: any): string | undefined {\n if (!group || typeof group !== 'object') return undefined;\n return group[this.optionGroupIcon()];\n }\n\n shouldRenderGroupColorSwatch(group: any): boolean {\n return !!this.getGroupSwatchColor(group) && !this.getGroupIcon(group);\n }\n\n getGroupSwatchColor(group: any): string | null {\n return this.resolveDisplayColor(this.getGroupColor(group));\n }\n\n getGroupAvatarBackground(group: any): string | null {\n return this.getAvatarBackgroundByColor(this.getGroupColor(group));\n }\n\n getGroupAvatarColor(group: any): string | null {\n return this.getAvatarColorByColor(this.getGroupColor(group));\n }\n\n getGroupAvatarShape(group: any): 'circle' | 'square' {\n if (!group || typeof group !== 'object') {\n return this.normalizeAvatarShape(this.optionGroupAvatarShape());\n }\n\n return this.normalizeAvatarShape(\n group[this.optionGroupIconShape()] ?? this.optionGroupAvatarShape(),\n );\n }\n\n private getOptionColor(option: any): string | undefined {\n const resolvedOption = this.resolveOption(option);\n if (!resolvedOption || typeof resolvedOption !== 'object') return undefined;\n return resolvedOption[this.optionIconColor()];\n }\n\n private getGroupColor(group: any): string | undefined {\n if (!group || typeof group !== 'object') return undefined;\n return group[this.optionGroupIconColor()];\n }\n\n private getAvatarBackgroundByColor(color: string | undefined): string | null {\n if (!color) return null;\n if (color.startsWith('#')) return `${color}1a`;\n return `var(--p-${color}-100)`;\n }\n\n private getAvatarColorByColor(color: string | undefined): string | null {\n if (!color) return null;\n if (color.startsWith('#')) return color;\n return `var(--p-${color}-600)`;\n }\n\n private resolveDisplayColor(color: string | undefined): string | null {\n if (!color) return null;\n if (\n color.startsWith('#') ||\n color.startsWith('rgb') ||\n color.startsWith('hsl') ||\n color.startsWith('var(')\n ) {\n return color;\n }\n\n return `var(--p-${color}-500)`;\n }\n\n private normalizeAvatarShape(shape: unknown): 'circle' | 'square' {\n return shape === 'square' ? 'square' : 'circle';\n }\n\n /**\n * Resolves a nested dot-notation path (e.g. \"name.display\") on an object.\n * Falls back to direct property access for non-nested keys.\n */\n private resolveNestedValue(obj: any, path: string): any {\n if (!path.includes('.')) {\n return obj[path];\n }\n return path.split('.').reduce((current, key) => current?.[key], obj);\n }\n\n private resolveOption(optionOrValue: any): any {\n if (optionOrValue == null || typeof optionOrValue === 'object') {\n return optionOrValue;\n }\n\n const options = this.options() ?? [];\n const optionValueKey = this.optionValue();\n\n if (!optionValueKey) {\n return (\n options.find((option) => option === optionOrValue) ?? optionOrValue\n );\n }\n\n if (this.group()) {\n const groupChildrenKey = this.optionGroupChildren();\n for (const group of options) {\n const children = group?.[groupChildrenKey];\n if (!Array.isArray(children)) continue;\n\n const match = children.find(\n (item: any) => item?.[optionValueKey] === optionOrValue,\n );\n if (match) return match;\n }\n return optionOrValue;\n }\n\n return (\n options.find((option) => option?.[optionValueKey] === optionOrValue) ??\n optionOrValue\n );\n }\n}\n","@if (label() || hint()) {\n <div class=\"mb-1 flex items-center gap-1\">\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 @if (hint()) {\n <span\n class=\"inline-flex text-surface-400\"\n [mtTooltip]=\"hint()\"\n tooltipPosition=\"top\"\n >\n <mt-icon icon=\"general.help-circle\" />\n </span>\n }\n </div>\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]=\"size() === 'small' ? ' mt-select-sm' : ''\"\n [showClear]=\"showClear()\"\n [group]=\"isGrouped()\"\n [optionGroupLabel]=\"optionGroupLabel()\"\n [optionGroupChildren]=\"optionGroupChildren()\"\n [loading]=\"loading()\"\n [fluid]=\"true\"\n [size]=\"pSelectSize()\"\n [panelStyleClass]=\"panelSizeClass()\"\n>\n <ng-template let-option #selectedItem>\n @if (option) {\n <div class=\"flex items-center gap-2\">\n @if (shouldRenderOptionColorSwatch(option)) {\n <span\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\n [style.backgroundColor]=\"getOptionSwatchColor(option)\"\n ></span>\n } @else if (getOptionIcon(option)) {\n <mt-avatar\n [style.--p-avatar-background]=\"getOptionAvatarBackground(option)\"\n [style.--p-avatar-color]=\"getOptionAvatarColor(option)\"\n [icon]=\"getOptionIcon(option)\"\n [shape]=\"getOptionAvatarShape(option)\"\n size=\"normal\"\n />\n }\n <span>{{ getOptionLabelValue(option) }}</span>\n </div>\n } @else {\n <span class=\"text-color-secondary\">{{\n (hasPlaceholderPrefix()\n ? (\"components.table.select\" | transloco)\n : \"\") +\n \" \" +\n (placeholder() ?? label() ?? \"\")\n }}</span>\n }\n </ng-template>\n\n <ng-template let-option #item>\n <div class=\"flex items-center gap-2\">\n @if (shouldRenderOptionColorSwatch(option)) {\n <span\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\n [style.backgroundColor]=\"getOptionSwatchColor(option)\"\n ></span>\n } @else if (getOptionIcon(option)) {\n <mt-avatar\n [style.--p-avatar-background]=\"getOptionAvatarBackground(option)\"\n [style.--p-avatar-color]=\"getOptionAvatarColor(option)\"\n [icon]=\"getOptionIcon(option)\"\n [shape]=\"getOptionAvatarShape(option)\"\n size=\"normal\"\n />\n }\n <span>{{ getOptionLabelValue(option) }}</span>\n </div>\n </ng-template>\n\n <ng-template let-group #group>\n <div class=\"flex items-center gap-2\">\n @if (shouldRenderGroupColorSwatch(group)) {\n <span\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\n [style.backgroundColor]=\"getGroupSwatchColor(group)\"\n ></span>\n } @else if (getGroupIcon(group)) {\n <mt-avatar\n [style.--p-avatar-background]=\"getGroupAvatarBackground(group)\"\n [style.--p-avatar-color]=\"getGroupAvatarColor(group)\"\n [icon]=\"getGroupIcon(group)\"\n [shape]=\"getGroupAvatarShape(group)\"\n size=\"normal\"\n />\n }\n <span class=\"font-medium\">{{ getGroupLabelValue(group) }}</span>\n </div>\n </ng-template>\n</p-select>\n\n@if (ngControl) {\n <mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\n}\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 {\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n signal,\r\n input,\r\n inject,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n effect,\r\n computed,\r\n} from '@angular/core';\r\n\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { Select } from 'primeng/select';\r\nimport { FieldValidation } from '@masterteam/components/field-validation';\r\nimport { isInvalid } from '@masterteam/components';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { Tooltip } from '@masterteam/components/tooltip';\r\nimport { Icon } from '@masterteam/icons';\r\n\r\n@Component({\r\n selector: 'mt-select-field',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n Select,\r\n FieldValidation,\r\n TranslocoModule,\r\n Avatar,\r\n Tooltip,\r\n Icon,\r\n ],\r\n templateUrl: './select-field.html',\r\n styleUrls: ['./select-field.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'block gap-1',\r\n },\r\n})\r\nexport class SelectField implements ControlValueAccessor, OnInit, OnChanges {\r\n cdr = inject(ChangeDetectorRef);\r\n @ViewChild('dropdown', { static: true })\r\n dropdown: Select;\r\n\r\n readonly field = input<boolean>(true);\r\n readonly hint = input<string>();\r\n readonly label = input<string>('');\r\n readonly placeholder = input<string>('');\r\n readonly hasPlaceholderPrefix = input<boolean>(true);\r\n readonly class = input<string>('');\r\n readonly readonly = input<boolean>(false);\r\n readonly pInputs = input<Partial<Select>>();\r\n readonly options = input<any[] | undefined>(undefined);\r\n readonly optionValue = input<string | undefined>(undefined);\r\n readonly optionLabel = input<string | undefined>(undefined);\r\n readonly filter = input<boolean | undefined>(undefined);\r\n readonly filterBy = input<string | undefined>(undefined);\r\n readonly dataKey = input<string | undefined>(undefined);\r\n readonly showClear = input<boolean | undefined>(undefined);\r\n readonly clearAfterSelect = input<boolean | undefined>(undefined);\r\n readonly required = input<boolean>(false); // Add readonly required input\r\n readonly group = input<boolean>(false);\r\n readonly size = input<'small' | 'large' | ''>('');\r\n\r\n readonly pSelectSize = computed(() => this.size() as 'small' | 'large' | '');\r\n\r\n readonly panelSizeClass = computed(() =>\r\n this.size() === 'small' ? 'mt-select-panel-small' : '',\r\n );\r\n readonly optionGroupLabel = input<string>('label');\r\n readonly optionGroupChildren = input<string>('items');\r\n readonly loading = input<boolean>(false);\r\n readonly optionIcon = input<string>('icon');\r\n readonly optionIconColor = input<string>('color');\r\n readonly optionIconShape = input<string>('shape');\r\n readonly optionAvatarShape = input<'circle' | 'square'>('square');\r\n readonly optionGroupIcon = input<string>('icon');\r\n readonly optionGroupIconColor = input<string>('color');\r\n readonly optionGroupIconShape = input<string>('shape');\r\n readonly optionGroupAvatarShape = input<'circle' | 'square'>('square');\r\n\r\n @Output() onChange: EventEmitter<any> = new EventEmitter();\r\n\r\n @HostBinding('class') styleClass: string;\r\n\r\n requiredValidator = Validators.required;\r\n value = signal<any>(null);\r\n disabled = signal<boolean>(false);\r\n\r\n onTouched: () => void = () => {};\r\n onModelChange: (value: any) => void = () => {};\r\n\r\n public ngControl: NgControl | null = null;\r\n\r\n isInvalid = isInvalid;\r\n\r\n constructor() {\r\n try {\r\n this.ngControl = inject(NgControl, { self: true, optional: true });\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n } catch {\r\n this.ngControl = null;\r\n }\r\n effect(() => {\r\n if (this.ngControl?.control && this.required()) {\r\n this.ngControl.control.addValidators(Validators.required);\r\n this.ngControl.control.updateValueAndValidity();\r\n }\r\n });\r\n }\r\n\r\n applyInputsToDropdown() {\r\n // Object.assign(this.dropdown, this.pInputs());\r\n }\r\n\r\n ngOnInit() {\r\n this.styleClass = this.class();\r\n if (this.pInputs()) {\r\n this.applyInputsToDropdown();\r\n }\r\n }\r\n\r\n onValueChange(value: any) {\r\n this.onModelChange(value);\r\n this.value.set(value);\r\n this.onChange.emit(value);\r\n if (this.clearAfterSelect()) {\r\n this.clearSelection();\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['pInputs']) {\r\n this.applyInputsToDropdown();\r\n }\r\n }\r\n\r\n writeValue(value: string) {\r\n this.value.set(value);\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean) {\r\n this.disabled.set(disabled);\r\n }\r\n\r\n isGrouped(): boolean {\r\n return this.group();\r\n }\r\n\r\n // TODO: make this method work\r\n public clearSelection() {\r\n this.dropdown.clear(this.value());\r\n this.dropdown.value = null;\r\n this.value.set(null);\r\n this.onModelChange(null);\r\n this.onChange.emit(null);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getOptionLabelValue(option: any): string {\r\n const resolvedOption = this.resolveOption(option);\r\n if (resolvedOption == null) return '';\r\n\r\n const labelKey = this.optionLabel();\r\n if (labelKey && typeof resolvedOption === 'object') {\r\n return this.resolveNestedValue(resolvedOption, labelKey) ?? '';\r\n }\r\n\r\n return typeof resolvedOption === 'object'\r\n ? (resolvedOption.label ?? '')\r\n : String(resolvedOption);\r\n }\r\n\r\n getOptionIcon(option: any): string | undefined {\r\n const resolvedOption = this.resolveOption(option);\r\n if (!resolvedOption || typeof resolvedOption !== 'object') return undefined;\r\n return resolvedOption[this.optionIcon()];\r\n }\r\n\r\n shouldRenderOptionColorSwatch(option: any): boolean {\r\n return !!this.getOptionSwatchColor(option) && !this.getOptionIcon(option);\r\n }\r\n\r\n getOptionSwatchColor(option: any): string | null {\r\n return this.resolveDisplayColor(this.getOptionColor(option));\r\n }\r\n\r\n getOptionAvatarBackground(option: any): string | null {\r\n return this.getAvatarBackgroundByColor(this.getOptionColor(option));\r\n }\r\n\r\n getOptionAvatarColor(option: any): string | null {\r\n return this.getAvatarColorByColor(this.getOptionColor(option));\r\n }\r\n\r\n getOptionAvatarShape(option: any): 'circle' | 'square' {\r\n const resolvedOption = this.resolveOption(option);\r\n if (!resolvedOption || typeof resolvedOption !== 'object') {\r\n return this.normalizeAvatarShape(this.optionAvatarShape());\r\n }\r\n\r\n return this.normalizeAvatarShape(\r\n resolvedOption[this.optionIconShape()] ?? this.optionAvatarShape(),\r\n );\r\n }\r\n\r\n getGroupLabelValue(group: any): string {\r\n if (group == null) return '';\r\n\r\n const groupLabelKey = this.optionGroupLabel();\r\n if (groupLabelKey && typeof group === 'object') {\r\n return group[groupLabelKey] ?? '';\r\n }\r\n\r\n return typeof group === 'object' ? (group.label ?? '') : String(group);\r\n }\r\n\r\n getGroupIcon(group: any): string | undefined {\r\n if (!group || typeof group !== 'object') return undefined;\r\n return group[this.optionGroupIcon()];\r\n }\r\n\r\n shouldRenderGroupColorSwatch(group: any): boolean {\r\n return !!this.getGroupSwatchColor(group) && !this.getGroupIcon(group);\r\n }\r\n\r\n getGroupSwatchColor(group: any): string | null {\r\n return this.resolveDisplayColor(this.getGroupColor(group));\r\n }\r\n\r\n getGroupAvatarBackground(group: any): string | null {\r\n return this.getAvatarBackgroundByColor(this.getGroupColor(group));\r\n }\r\n\r\n getGroupAvatarColor(group: any): string | null {\r\n return this.getAvatarColorByColor(this.getGroupColor(group));\r\n }\r\n\r\n getGroupAvatarShape(group: any): 'circle' | 'square' {\r\n if (!group || typeof group !== 'object') {\r\n return this.normalizeAvatarShape(this.optionGroupAvatarShape());\r\n }\r\n\r\n return this.normalizeAvatarShape(\r\n group[this.optionGroupIconShape()] ?? this.optionGroupAvatarShape(),\r\n );\r\n }\r\n\r\n private getOptionColor(option: any): string | undefined {\r\n const resolvedOption = this.resolveOption(option);\r\n if (!resolvedOption || typeof resolvedOption !== 'object') return undefined;\r\n return resolvedOption[this.optionIconColor()];\r\n }\r\n\r\n private getGroupColor(group: any): string | undefined {\r\n if (!group || typeof group !== 'object') return undefined;\r\n return group[this.optionGroupIconColor()];\r\n }\r\n\r\n private getAvatarBackgroundByColor(color: string | undefined): string | null {\r\n if (!color) return null;\r\n if (color.startsWith('#')) return `${color}1a`;\r\n return `var(--p-${color}-100)`;\r\n }\r\n\r\n private getAvatarColorByColor(color: string | undefined): string | null {\r\n if (!color) return null;\r\n if (color.startsWith('#')) return color;\r\n return `var(--p-${color}-600)`;\r\n }\r\n\r\n private resolveDisplayColor(color: string | undefined): string | null {\r\n if (!color) return null;\r\n if (\r\n color.startsWith('#') ||\r\n color.startsWith('rgb') ||\r\n color.startsWith('hsl') ||\r\n color.startsWith('var(')\r\n ) {\r\n return color;\r\n }\r\n\r\n return `var(--p-${color}-500)`;\r\n }\r\n\r\n private normalizeAvatarShape(shape: unknown): 'circle' | 'square' {\r\n return shape === 'square' ? 'square' : 'circle';\r\n }\r\n\r\n /**\r\n * Resolves a nested dot-notation path (e.g. \"name.display\") on an object.\r\n * Falls back to direct property access for non-nested keys.\r\n */\r\n private resolveNestedValue(obj: any, path: string): any {\r\n if (!path.includes('.')) {\r\n return obj[path];\r\n }\r\n return path.split('.').reduce((current, key) => current?.[key], obj);\r\n }\r\n\r\n private resolveOption(optionOrValue: any): any {\r\n if (optionOrValue == null || typeof optionOrValue === 'object') {\r\n return optionOrValue;\r\n }\r\n\r\n const options = this.options() ?? [];\r\n const optionValueKey = this.optionValue();\r\n\r\n if (!optionValueKey) {\r\n return (\r\n options.find((option) => option === optionOrValue) ?? optionOrValue\r\n );\r\n }\r\n\r\n if (this.group()) {\r\n const groupChildrenKey = this.optionGroupChildren();\r\n for (const group of options) {\r\n const children = group?.[groupChildrenKey];\r\n if (!Array.isArray(children)) continue;\r\n\r\n const match = children.find(\r\n (item: any) => item?.[optionValueKey] === optionOrValue,\r\n );\r\n if (match) return match;\r\n }\r\n return optionOrValue;\r\n }\r\n\r\n return (\r\n options.find((option) => option?.[optionValueKey] === optionOrValue) ??\r\n optionOrValue\r\n );\r\n }\r\n}\r\n","@if (label() || hint()) {\r\n <div class=\"mb-1 flex items-center gap-1\">\r\n @if (label()) {\r\n <label\r\n (click)=\"dropdown.show(); dropdown.focus()\"\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n @if (hint()) {\r\n <span\r\n class=\"inline-flex text-surface-400\"\r\n [mtTooltip]=\"hint()\"\r\n tooltipPosition=\"top\"\r\n >\r\n <mt-icon icon=\"general.help-circle\" />\r\n </span>\r\n }\r\n </div>\r\n}\r\n<p-select\r\n #dropdown\r\n appendTo=\"body\"\r\n [overlayOptions]=\"{ baseZIndex: 1051 }\"\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n [options]=\"options()\"\r\n [optionLabel]=\"optionLabel()\"\r\n [optionValue]=\"optionValue()\"\r\n (onBlur)=\"onTouched()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n [id]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n [invalid]=\"isInvalid(ngControl?.control)\"\r\n placeholder=\"{{\r\n (hasPlaceholderPrefix() ? ('components.table.select' | transloco) : '') +\r\n ' ' +\r\n (placeholder() ?? label() ?? '')\r\n }}\"\r\n [filter]=\"filter()\"\r\n [filterBy]=\"filterBy()\"\r\n [dataKey]=\"dataKey()\"\r\n [styleClass]=\"size() === 'small' ? ' mt-select-sm' : ''\"\r\n [showClear]=\"showClear()\"\r\n [group]=\"isGrouped()\"\r\n [optionGroupLabel]=\"optionGroupLabel()\"\r\n [optionGroupChildren]=\"optionGroupChildren()\"\r\n [loading]=\"loading()\"\r\n [fluid]=\"true\"\r\n [size]=\"pSelectSize()\"\r\n [panelStyleClass]=\"panelSizeClass()\"\r\n>\r\n <ng-template let-option #selectedItem>\r\n @if (option) {\r\n <div class=\"flex items-center gap-2\">\r\n @if (shouldRenderOptionColorSwatch(option)) {\r\n <span\r\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\r\n [style.backgroundColor]=\"getOptionSwatchColor(option)\"\r\n ></span>\r\n } @else if (getOptionIcon(option)) {\r\n <mt-avatar\r\n [style.--p-avatar-background]=\"getOptionAvatarBackground(option)\"\r\n [style.--p-avatar-color]=\"getOptionAvatarColor(option)\"\r\n [icon]=\"getOptionIcon(option)\"\r\n [shape]=\"getOptionAvatarShape(option)\"\r\n size=\"normal\"\r\n />\r\n }\r\n <span>{{ getOptionLabelValue(option) }}</span>\r\n </div>\r\n } @else {\r\n <span class=\"text-color-secondary\">{{\r\n (hasPlaceholderPrefix()\r\n ? (\"components.table.select\" | transloco)\r\n : \"\") +\r\n \" \" +\r\n (placeholder() ?? label() ?? \"\")\r\n }}</span>\r\n }\r\n </ng-template>\r\n\r\n <ng-template let-option #item>\r\n <div class=\"flex items-center gap-2\">\r\n @if (shouldRenderOptionColorSwatch(option)) {\r\n <span\r\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\r\n [style.backgroundColor]=\"getOptionSwatchColor(option)\"\r\n ></span>\r\n } @else if (getOptionIcon(option)) {\r\n <mt-avatar\r\n [style.--p-avatar-background]=\"getOptionAvatarBackground(option)\"\r\n [style.--p-avatar-color]=\"getOptionAvatarColor(option)\"\r\n [icon]=\"getOptionIcon(option)\"\r\n [shape]=\"getOptionAvatarShape(option)\"\r\n size=\"normal\"\r\n />\r\n }\r\n <span>{{ getOptionLabelValue(option) }}</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template let-group #group>\r\n <div class=\"flex items-center gap-2\">\r\n @if (shouldRenderGroupColorSwatch(group)) {\r\n <span\r\n class=\"h-3 w-3 shrink-0 rounded-[4px] border border-surface-300\"\r\n [style.backgroundColor]=\"getGroupSwatchColor(group)\"\r\n ></span>\r\n } @else if (getGroupIcon(group)) {\r\n <mt-avatar\r\n [style.--p-avatar-background]=\"getGroupAvatarBackground(group)\"\r\n [style.--p-avatar-color]=\"getGroupAvatarColor(group)\"\r\n [icon]=\"getGroupIcon(group)\"\r\n [shape]=\"getGroupAvatarShape(group)\"\r\n size=\"normal\"\r\n />\r\n }\r\n <span class=\"font-medium\">{{ getGroupLabelValue(group) }}</span>\r\n </div>\r\n </ng-template>\r\n</p-select>\r\n\r\n@if (ngControl) {\r\n <mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|