pdm-ui-kit 1.2.1 → 1.4.0
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/aspect-ratio/aspect-ratio.component.d.ts +1 -1
- package/aspect-ratio/aspect-ratio.module.d.ts +5 -2
- package/badge/badge.component.d.ts +1 -1
- package/badge/badge.module.d.ts +5 -2
- package/button/button-theme.constant.d.ts +2 -0
- package/button/button.component.d.ts +1 -4
- package/button/testing/button-harness.d.ts +23 -0
- package/calendar/date-picker.component.d.ts +2 -1
- package/checkbox/testing/checkbox-harness.d.ts +22 -0
- package/dialog/dialog.module.d.ts +2 -1
- package/dialog/testing/dialog-harness.d.ts +26 -0
- package/esm2020/alert/alert.component.mjs +3 -3
- package/esm2020/aspect-ratio/aspect-ratio.component.mjs +4 -3
- package/esm2020/aspect-ratio/aspect-ratio.module.mjs +9 -10
- package/esm2020/badge/badge.component.mjs +4 -3
- package/esm2020/badge/badge.module.mjs +9 -10
- package/esm2020/button/button-theme.constant.mjs +55 -0
- package/esm2020/button/button.component.mjs +5 -18
- package/esm2020/button/testing/button-harness.mjs +51 -0
- package/esm2020/calendar/date-picker.component.mjs +15 -5
- package/esm2020/checkbox/testing/checkbox-harness.mjs +54 -0
- package/esm2020/dialog/dialog.component.mjs +5 -4
- package/esm2020/dialog/dialog.module.mjs +5 -4
- package/esm2020/dialog/testing/dialog-harness.mjs +87 -0
- package/esm2020/empty/empty.component.mjs +1 -1
- package/esm2020/icon/icon.component.mjs +4 -3
- package/esm2020/icon/icon.module.mjs +9 -10
- package/esm2020/input/input.component.mjs +16 -4
- package/esm2020/input/testing/input-harness.mjs +68 -0
- package/esm2020/kbd/kbd.component.mjs +4 -3
- package/esm2020/kbd/kbd.module.mjs +9 -10
- package/esm2020/pagination/pagination.component.mjs +3 -3
- package/esm2020/pagination/testing/pagination-harness.mjs +76 -0
- package/esm2020/public-api.mjs +3 -1
- package/esm2020/select/testing/select-harness.mjs +75 -0
- package/esm2020/separator/separator.component.mjs +4 -3
- package/esm2020/separator/separator.module.mjs +9 -10
- package/esm2020/skeleton/skeleton.component.mjs +4 -3
- package/esm2020/skeleton/skeleton.module.mjs +9 -10
- package/esm2020/spinner/spinner.component.mjs +4 -3
- package/esm2020/spinner/spinner.module.mjs +9 -10
- package/esm2020/src/alert/alert.component.mjs +3 -3
- package/esm2020/src/aspect-ratio/aspect-ratio.component.mjs +4 -3
- package/esm2020/src/aspect-ratio/aspect-ratio.module.mjs +9 -10
- package/esm2020/src/badge/badge.component.mjs +4 -3
- package/esm2020/src/badge/badge.module.mjs +9 -10
- package/esm2020/src/button/button-theme.constant.mjs +55 -0
- package/esm2020/src/button/button.component.mjs +5 -18
- package/esm2020/src/calendar/date-picker.component.mjs +15 -5
- package/esm2020/src/dialog/dialog.component.mjs +5 -4
- package/esm2020/src/dialog/dialog.module.mjs +5 -4
- package/esm2020/src/empty/empty.component.mjs +1 -1
- package/esm2020/src/icon/icon.component.mjs +4 -3
- package/esm2020/src/icon/icon.module.mjs +9 -10
- package/esm2020/src/input/input.component.mjs +16 -4
- package/esm2020/src/kbd/kbd.component.mjs +4 -3
- package/esm2020/src/kbd/kbd.module.mjs +9 -10
- package/esm2020/src/pagination/pagination.component.mjs +3 -3
- package/esm2020/src/separator/separator.component.mjs +4 -3
- package/esm2020/src/separator/separator.module.mjs +9 -10
- package/esm2020/src/skeleton/skeleton.component.mjs +4 -3
- package/esm2020/src/skeleton/skeleton.module.mjs +9 -10
- package/esm2020/src/spinner/spinner.component.mjs +4 -3
- package/esm2020/src/spinner/spinner.module.mjs +9 -10
- package/esm2020/src/utils/public-api.mjs +2 -1
- package/esm2020/src/utils/validators.mjs +180 -0
- package/esm2020/testing.mjs +13 -0
- package/fesm2015/pdm-ui-kit-src-alert.mjs +2 -2
- package/fesm2015/pdm-ui-kit-src-alert.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-aspect-ratio.mjs +10 -10
- package/fesm2015/pdm-ui-kit-src-aspect-ratio.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-badge.mjs +10 -10
- package/fesm2015/pdm-ui-kit-src-badge.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-button.mjs +58 -17
- package/fesm2015/pdm-ui-kit-src-button.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-calendar.mjs +14 -4
- package/fesm2015/pdm-ui-kit-src-calendar.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-dialog.mjs +8 -6
- package/fesm2015/pdm-ui-kit-src-dialog.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-empty.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-icon.mjs +12 -12
- package/fesm2015/pdm-ui-kit-src-icon.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-input.mjs +15 -3
- package/fesm2015/pdm-ui-kit-src-input.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-kbd.mjs +10 -10
- package/fesm2015/pdm-ui-kit-src-kbd.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-pagination.mjs +2 -2
- package/fesm2015/pdm-ui-kit-src-pagination.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-separator.mjs +10 -10
- package/fesm2015/pdm-ui-kit-src-separator.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-skeleton.mjs +10 -10
- package/fesm2015/pdm-ui-kit-src-skeleton.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-spinner.mjs +10 -10
- package/fesm2015/pdm-ui-kit-src-spinner.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-utils.mjs +181 -1
- package/fesm2015/pdm-ui-kit-src-utils.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit.mjs +828 -215
- package/fesm2015/pdm-ui-kit.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-alert.mjs +2 -2
- package/fesm2020/pdm-ui-kit-src-alert.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-aspect-ratio.mjs +10 -10
- package/fesm2020/pdm-ui-kit-src-aspect-ratio.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-badge.mjs +10 -10
- package/fesm2020/pdm-ui-kit-src-badge.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-button.mjs +58 -17
- package/fesm2020/pdm-ui-kit-src-button.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-calendar.mjs +14 -4
- package/fesm2020/pdm-ui-kit-src-calendar.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-dialog.mjs +8 -6
- package/fesm2020/pdm-ui-kit-src-dialog.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-empty.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-icon.mjs +12 -12
- package/fesm2020/pdm-ui-kit-src-icon.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-input.mjs +15 -3
- package/fesm2020/pdm-ui-kit-src-input.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-kbd.mjs +10 -10
- package/fesm2020/pdm-ui-kit-src-kbd.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-pagination.mjs +2 -2
- package/fesm2020/pdm-ui-kit-src-pagination.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-separator.mjs +10 -10
- package/fesm2020/pdm-ui-kit-src-separator.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-skeleton.mjs +10 -10
- package/fesm2020/pdm-ui-kit-src-skeleton.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-spinner.mjs +10 -10
- package/fesm2020/pdm-ui-kit-src-spinner.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-utils.mjs +181 -1
- package/fesm2020/pdm-ui-kit-src-utils.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit.mjs +687 -215
- package/fesm2020/pdm-ui-kit.mjs.map +1 -1
- package/icon/icon.component.d.ts +1 -1
- package/icon/icon.module.d.ts +5 -2
- package/input/input.component.d.ts +4 -0
- package/input/testing/input-harness.d.ts +27 -0
- package/kbd/kbd.component.d.ts +1 -1
- package/kbd/kbd.module.d.ts +5 -2
- package/package.json +1 -1
- package/pagination/testing/pagination-harness.d.ts +21 -0
- package/public-api.d.ts +1 -0
- package/select/testing/select-harness.d.ts +25 -0
- package/separator/separator.component.d.ts +1 -1
- package/separator/separator.module.d.ts +5 -2
- package/skeleton/skeleton.component.d.ts +1 -1
- package/skeleton/skeleton.module.d.ts +5 -2
- package/spinner/spinner.component.d.ts +1 -1
- package/spinner/spinner.module.d.ts +5 -2
- package/src/aspect-ratio/aspect-ratio.component.d.ts +1 -1
- package/src/aspect-ratio/aspect-ratio.module.d.ts +5 -2
- package/src/badge/badge.component.d.ts +1 -1
- package/src/badge/badge.module.d.ts +5 -2
- package/src/button/button-theme.constant.d.ts +2 -0
- package/src/button/button.component.d.ts +1 -4
- package/src/calendar/date-picker.component.d.ts +2 -1
- package/src/dialog/dialog.module.d.ts +2 -1
- package/src/icon/icon.component.d.ts +1 -1
- package/src/icon/icon.module.d.ts +5 -2
- package/src/input/input.component.d.ts +4 -0
- package/src/kbd/kbd.component.d.ts +1 -1
- package/src/kbd/kbd.module.d.ts +5 -2
- package/src/separator/separator.component.d.ts +1 -1
- package/src/separator/separator.module.d.ts +5 -2
- package/src/skeleton/skeleton.component.d.ts +1 -1
- package/src/skeleton/skeleton.module.d.ts +5 -2
- package/src/spinner/spinner.component.d.ts +1 -1
- package/src/spinner/spinner.module.d.ts +5 -2
- package/src/utils/public-api.d.ts +1 -0
- package/src/utils/validators.d.ts +109 -0
- package/testing.d.ts +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdm-ui-kit-src-calendar.mjs","sources":["../../../src/calendar/calendar.component.ts","../../../src/calendar/calendar.component.html","../../../src/calendar/date-picker.component.ts","../../../src/calendar/date-picker.component.html","../../../src/calendar/calendar.module.ts","../../../src/calendar/pdm-ui-kit-src-calendar.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tEventEmitter,\n\tinject,\n\tInput,\n\tOutput,\n} from \"@angular/core\";\n\nexport type PdmCalendarVariant = \"single\" | \"range\";\n\nexport interface PdmCalendarRange {\n\tstart: Date | null;\n\tend: Date | null;\n}\n\ninterface PdmCalendarCell {\n\tdate: Date;\n\tlabel: number;\n\tmuted: boolean;\n\tdisabled: boolean;\n\tselected: boolean;\n\tinRange: boolean;\n\trangeFill: boolean;\n\trangeLeftCap: boolean;\n\trangeRightCap: boolean;\n}\n\ninterface PdmCalendarMonthView {\n\tdate: Date;\n\ttitle: string;\n\ttitleStyle: \"dropdowns\" | \"plain\";\n\tdropdownMonth?: string;\n\tdropdownYear?: string;\n\tshowPrevButton: boolean;\n\tshowNextButton: boolean;\n\tweeks: readonly (readonly PdmCalendarCell[])[];\n}\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\n\n@Component({\n\tselector: \"pdm-calendar\",\n\ttemplateUrl: \"./calendar.component.html\",\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PdmCalendarComponent {\n\tprivate _value: Date | null = null;\n\tprivate _rangeValue: PdmCalendarRange | null = null;\n\tprivate _month: Date | null = null;\n\n\tprivate readonly cdr = inject(ChangeDetectorRef);\n\n\t@Input() variant: PdmCalendarVariant | string = \"single\";\n\t@Input() className = \"\";\n\t@Input() disabledDates: Date[] = [];\n\t@Input() minDate: Date | null = null;\n\t@Input() maxDate: Date | null = null;\n\t@Input() minYear: number | null = null;\n\t@Input() maxYear: number | null = null;\n\t@Input() isDateDisabled: ((date: Date) => boolean) | null = null;\n\t@Input() allowSameDayRange = true;\n\t@Input() readonly = false;\n\n\t@Output() valueChange = new EventEmitter<Date | null>();\n\t@Output() rangeValueChange = new EventEmitter<PdmCalendarRange | null>();\n\t@Output() monthChange = new EventEmitter<Date>();\n\t@Output() dateClick = new EventEmitter<Date>();\n\t@Output() disabledDateClick = new EventEmitter<Date>();\n\n\t@Input()\n\tset value(value: Date | null) {\n\t\tthis._value = this.normalizeDate(value);\n\t}\n\tget value(): Date | null {\n\t\treturn this._value;\n\t}\n\n\t@Input()\n\tset rangeValue(value: PdmCalendarRange | null) {\n\t\tthis._rangeValue = value\n\t\t\t? {\n\t\t\t\t\tstart: this.normalizeDate(value.start),\n\t\t\t\t\tend: this.normalizeDate(value.end),\n\t\t\t\t}\n\t\t\t: null;\n\t}\n\tget rangeValue(): PdmCalendarRange | null {\n\t\treturn this._rangeValue;\n\t}\n\n\t@Input()\n\tset month(value: Date | null) {\n\t\tthis._month = value ? this.startOfMonth(value) : null;\n\t}\n\tget month(): Date | null {\n\t\treturn this._month;\n\t}\n\n\treadonly weekdays = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"] as const;\n\treadonly monthOptions = [\n\t\t{ value: 0, label: \"Jan\" },\n\t\t{ value: 1, label: \"Feb\" },\n\t\t{ value: 2, label: \"Mar\" },\n\t\t{ value: 3, label: \"Apr\" },\n\t\t{ value: 4, label: \"May\" },\n\t\t{ value: 5, label: \"Jun\" },\n\t\t{ value: 6, label: \"Jul\" },\n\t\t{ value: 7, label: \"Aug\" },\n\t\t{ value: 8, label: \"Sep\" },\n\t\t{ value: 9, label: \"Oct\" },\n\t\t{ value: 10, label: \"Nov\" },\n\t\t{ value: 11, label: \"Dec\" },\n\t] as const;\n\n\tget resolvedVariant(): PdmCalendarVariant {\n\t\treturn this.variant === \"range\" ? \"range\" : \"single\";\n\t}\n\n\tget visibleMonths(): readonly PdmCalendarMonthView[] {\n\t\tconst baseMonth = this.getAnchorMonth();\n\n\t\tif (this.resolvedVariant === \"single\") {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tdate: baseMonth,\n\t\t\t\t\ttitle: this.formatMonthYear(baseMonth),\n\t\t\t\t\ttitleStyle: \"dropdowns\",\n\t\t\t\t\tdropdownMonth: this.formatMonthShort(baseMonth),\n\t\t\t\t\tdropdownYear: String(baseMonth.getFullYear()),\n\t\t\t\t\tshowPrevButton: true,\n\t\t\t\t\tshowNextButton: true,\n\t\t\t\t\tweeks: this.buildMonthWeeks(baseMonth, false),\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tconst nextMonth = this.addMonths(baseMonth, 1);\n\t\treturn [\n\t\t\t{\n\t\t\t\tdate: baseMonth,\n\t\t\t\ttitle: this.formatMonthYear(baseMonth),\n\t\t\t\ttitleStyle: \"plain\",\n\t\t\t\tshowPrevButton: true,\n\t\t\t\tshowNextButton: false,\n\t\t\t\tweeks: this.buildMonthWeeks(baseMonth, true),\n\t\t\t},\n\t\t\t{\n\t\t\t\tdate: nextMonth,\n\t\t\t\ttitle: this.formatMonthYear(nextMonth),\n\t\t\t\ttitleStyle: \"plain\",\n\t\t\t\tshowPrevButton: false,\n\t\t\t\tshowNextButton: true,\n\t\t\t\tweeks: this.buildMonthWeeks(nextMonth, true),\n\t\t\t},\n\t\t];\n\t}\n\n\tget singleHeaderMonth(): number {\n\t\treturn this.getAnchorMonth().getMonth();\n\t}\n\n\tget singleHeaderYear(): number {\n\t\treturn this.getAnchorMonth().getFullYear();\n\t}\n\n\tget yearOptions(): readonly number[] {\n\t\tconst baseYear = new Date().getFullYear();\n\t\tconst selectedYear = this.singleHeaderYear;\n\t\tlet minYear =\n\t\t\tthis.minYear ??\n\t\t\t(this.minDate ? this.minDate.getFullYear() : baseYear - 100);\n\t\tlet maxYear =\n\t\t\tthis.maxYear ??\n\t\t\t(this.maxDate ? this.maxDate.getFullYear() : baseYear + 10);\n\t\tconst years: number[] = [];\n\n\t\tif (selectedYear < minYear) {\n\t\t\tminYear = selectedYear;\n\t\t}\n\n\t\tif (selectedYear > maxYear) {\n\t\t\tmaxYear = selectedYear;\n\t\t}\n\n\t\tif (minYear > maxYear) {\n\t\t\tconst nextMin = maxYear;\n\t\t\tmaxYear = minYear;\n\t\t\tminYear = nextMin;\n\t\t}\n\n\t\tfor (let year = minYear; year <= maxYear; year += 1) {\n\t\t\tyears.push(year);\n\t\t}\n\n\t\treturn years;\n\t}\n\n\tget rootClasses(): string[] {\n\t\treturn [\n\t\t\t\"border-border bg-background relative rounded-[10px] border border-solid p-3 shadow-sm\",\n\t\t\tthis.resolvedVariant === \"range\"\n\t\t\t\t? \"inline-flex items-start justify-center gap-4 shrink-0 grow-0 basis-auto\"\n\t\t\t\t: \"inline-flex flex-col gap-4 shrink-0 grow-0 basis-auto\",\n\t\t\tthis.className,\n\t\t];\n\t}\n\n\tget rootStyle(): Record<string, string> {\n\t\tconst width = this.resolvedVariant === \"range\" ? \"488px\" : \"250px\";\n\n\t\treturn {\n\t\t\twidth,\n\t\t\tminWidth: width,\n\t\t\tmaxWidth: width,\n\t\t\tminHeight: \"293px\",\n\t\t\tflex: \"0 0 auto\",\n\t\t\talignSelf: \"flex-start\",\n\t\t};\n\t}\n\n\tmonthPanelClasses(_index: number): string[] {\n\t\treturn [\n\t\t\t\"flex flex-col items-start\",\n\t\t\tthis.resolvedVariant === \"range\" ? \"w-[224px] gap-4\" : \"w-full gap-0\",\n\t\t];\n\t}\n\n\theaderClasses(month: PdmCalendarMonthView): string[] {\n\t\treturn [\n\t\t\t\"flex w-full items-center justify-between\",\n\t\t\tmonth.titleStyle === \"dropdowns\" ? \"\" : \"mb-4\",\n\t\t];\n\t}\n\n\tnavButtonClasses(): string[] {\n\t\treturn [\n\t\t\t\"flex h-8 w-8 appearance-none box-border items-center justify-center rounded-md border-0 bg-transparent p-0 text-foreground\",\n\t\t\t\"disabled:pointer-events-none disabled:opacity-40\",\n\t\t];\n\t}\n\n\tnavPlaceholderClasses(): string[] {\n\t\treturn [\"h-7 w-7 shrink-0\"];\n\t}\n\n\tdropdownWrapClasses(): string[] {\n\t\treturn [\"flex w-40 items-center justify-center gap-2\"];\n\t}\n\n\tdropdownClasses(widthClass: string): string[] {\n\t\treturn [\"flex h-8 items-center justify-center gap-1 px-1\", widthClass];\n\t}\n\n\tdropdownSelectClasses(): string[] {\n\t\treturn [\n\t\t\t\"text-foreground h-full bg-transparent text-sm font-medium leading-5\",\n\t\t\t\"appearance-none box-border border-0 outline-none ring-0 focus:outline-none focus:ring-0 text-center cursor-pointer\",\n\t\t];\n\t}\n\n\tget dropdownSelectStyle(): Record<string, string> {\n\t\treturn {\n\t\t\tappearance: \"none\",\n\t\t\tWebkitAppearance: \"none\",\n\t\t\tMozAppearance: \"none\",\n\t\t\tbackground: \"transparent\",\n\t\t\tborder: \"0\",\n\t\t\tboxShadow: \"none\",\n\t\t\toutline: \"0\",\n\t\t\tpadding: \"0\",\n\t\t\tmargin: \"0\",\n\t\t};\n\t}\n\n\tcalendarGridWrapClasses(): string[] {\n\t\treturn [\"flex w-full flex-col items-start\"];\n\t}\n\n\tweekdayRowClasses(): string[] {\n\t\treturn [\"flex w-full items-center\"];\n\t}\n\n\tweekdayCellClasses(): string[] {\n\t\treturn [\n\t\t\t\"text-muted-foreground flex h-[21px] w-8 items-center justify-center rounded-md text-xs leading-4\",\n\t\t];\n\t}\n\n\tweekRowClasses(): string[] {\n\t\treturn [\"flex w-full items-start pt-2\"];\n\t}\n\n\tdayCellClasses(cell: PdmCalendarCell): string[] {\n\t\treturn [\n\t\t\t\"relative flex h-8 w-8 shrink-0 items-center justify-center\",\n\t\t\tcell.rangeFill ? \"bg-accent\" : \"\",\n\t\t\tcell.rangeLeftCap ? \"rounded-l-md\" : \"\",\n\t\t\tcell.rangeRightCap ? \"rounded-r-md\" : \"\",\n\t\t];\n\t}\n\n\tdayButtonClasses(cell: PdmCalendarCell): string[] {\n\t\treturn [\n\t\t\t\"relative z-10 flex h-8 w-8 appearance-none box-border items-center justify-center rounded-md border-0 p-0 text-sm leading-5\",\n\t\t\tcell.selected\n\t\t\t\t? \"bg-primary text-primary-foreground\"\n\t\t\t\t: cell.rangeFill\n\t\t\t\t\t? \"bg-transparent text-accent-foreground\"\n\t\t\t\t\t: \"bg-transparent text-foreground\",\n\t\t\tcell.muted && !cell.rangeFill ? \"opacity-50\" : \"\",\n\t\t\tcell.disabled ? \"cursor-not-allowed opacity-40\" : \"\",\n\t\t\t!cell.disabled && !this.readonly && !cell.selected\n\t\t\t\t? \"hover:bg-accent/70\"\n\t\t\t\t: \"\",\n\t\t];\n\t}\n\n\tdayLabelClasses(_cell: PdmCalendarCell): string[] {\n\t\treturn [\"font-normal\"];\n\t}\n\n\ttrackByIndex = (index: number): number => {\n\t\treturn index;\n\t};\n\n\ttrackByDate = (_index: number, cell: PdmCalendarCell): string => {\n\t\treturn this.dateKey(cell.date);\n\t};\n\n\tgoToPreviousMonth(): void {\n\t\tthis.setAnchorMonth(this.addMonths(this.getAnchorMonth(), -1));\n\t}\n\n\tgoToNextMonth(): void {\n\t\tthis.setAnchorMonth(this.addMonths(this.getAnchorMonth(), 1));\n\t}\n\n\tonSingleMonthChange(monthValue: string): void {\n\t\tconst month = Number(monthValue);\n\t\tif (Number.isNaN(month) || month < 0 || month > 11) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst anchor = this.getAnchorMonth();\n\t\tthis.setAnchorMonth(new Date(anchor.getFullYear(), month, 1));\n\t}\n\n\tonSingleYearChange(yearValue: string): void {\n\t\tconst year = Number(yearValue);\n\t\tif (Number.isNaN(year)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst anchor = this.getAnchorMonth();\n\t\tthis.setAnchorMonth(new Date(year, anchor.getMonth(), 1));\n\t}\n\n\tonDatePressed(cell: PdmCalendarCell): void {\n\t\tconst date = this.cloneDate(cell.date);\n\n\t\tif (cell.disabled) {\n\t\t\tthis.disabledDateClick.emit(date);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dateClick.emit(date);\n\n\t\tif (this.resolvedVariant === \"single\") {\n\t\t\tthis._value = date;\n\t\t\tthis.valueChange.emit(this.cloneDate(date));\n\t\t\tthis.syncVisibleMonthToDate(date);\n\t\t\tthis.cdr.markForCheck();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.handleRangeSelection(date);\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tprivate handleRangeSelection(date: Date): void {\n\t\tconst current = this._rangeValue;\n\t\tconst currentStart = current?.start ? this.cloneDate(current.start) : null;\n\t\tconst currentEnd = current?.end ? this.cloneDate(current.end) : null;\n\n\t\tif (!currentStart || (currentStart && currentEnd)) {\n\t\t\tthis._rangeValue = { start: date, end: null };\n\t\t\tthis.rangeValueChange.emit({ start: this.cloneDate(date), end: null });\n\t\t\tthis.syncVisibleMonthToDate(date);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isSameDay(currentStart, date) && !this.allowSameDayRange) {\n\t\t\tthis._rangeValue = { start: date, end: null };\n\t\t\tthis.rangeValueChange.emit({ start: this.cloneDate(date), end: null });\n\t\t\treturn;\n\t\t}\n\n\t\tconst start =\n\t\t\tthis.compareDate(date, currentStart) < 0 ? date : currentStart;\n\t\tconst end = this.compareDate(date, currentStart) < 0 ? currentStart : date;\n\n\t\tif (this.rangeContainsBlockedDate(start, end)) {\n\t\t\tthis.disabledDateClick.emit(this.cloneDate(date));\n\t\t\treturn;\n\t\t}\n\n\t\tthis._rangeValue = { start, end };\n\t\tthis.rangeValueChange.emit({\n\t\t\tstart: this.cloneDate(start),\n\t\t\tend: this.cloneDate(end),\n\t\t});\n\t\tthis.syncVisibleMonthToDate(start);\n\t}\n\n\tprivate buildMonthWeeks(\n\t\tmonth: Date,\n\t\tincludeRange: boolean,\n\t): readonly (readonly PdmCalendarCell[])[] {\n\t\tconst firstOfMonth = this.startOfMonth(month);\n\t\tconst start = this.startOfWeek(firstOfMonth);\n\t\tconst end = this.endOfWeek(this.endOfMonth(firstOfMonth));\n\t\tconst weeks: PdmCalendarCell[][] = [];\n\n\t\tlet cursor = this.cloneDate(start);\n\t\twhile (this.compareDate(cursor, end) <= 0) {\n\t\t\tconst row: PdmCalendarCell[] = [];\n\n\t\t\tfor (let col = 0; col < 7; col += 1) {\n\t\t\t\trow.push(this.buildCell(cursor, month, includeRange));\n\t\t\t\tcursor = this.addDays(cursor, 1);\n\t\t\t}\n\n\t\t\tweeks.push(row);\n\t\t}\n\n\t\tfor (const row of weeks) {\n\t\t\tfor (let col = 0; col < row.length; col += 1) {\n\t\t\t\tconst cell = row[col];\n\t\t\t\tif (!cell.inRange) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst leftInRow = col > 0 ? row[col - 1].inRange : false;\n\t\t\t\tconst rightInRow = col < row.length - 1 ? row[col + 1].inRange : false;\n\n\t\t\t\tcell.rangeLeftCap = !leftInRow;\n\t\t\t\tcell.rangeRightCap = !rightInRow;\n\t\t\t}\n\t\t}\n\n\t\treturn weeks;\n\t}\n\n\tprivate buildCell(\n\t\tdate: Date,\n\t\tvisibleMonth: Date,\n\t\tincludeRange: boolean,\n\t): PdmCalendarCell {\n\t\tconst normalized = this.cloneDate(date);\n\t\tconst inCurrentMonth =\n\t\t\tnormalized.getMonth() === visibleMonth.getMonth() &&\n\t\t\tnormalized.getFullYear() === visibleMonth.getFullYear();\n\t\tconst disabled = this.isBlocked(normalized);\n\n\t\tconst selectedSingle =\n\t\t\tthis.resolvedVariant === \"single\" &&\n\t\t\t!!this._value &&\n\t\t\tthis.isSameDay(normalized, this._value);\n\t\tconst rangeStart =\n\t\t\tincludeRange &&\n\t\t\t!!this._rangeValue?.start &&\n\t\t\tthis.isSameDay(normalized, this._rangeValue.start);\n\t\tconst rangeEnd =\n\t\t\tincludeRange &&\n\t\t\t!!this._rangeValue?.end &&\n\t\t\tthis.isSameDay(normalized, this._rangeValue.end);\n\t\tconst inRange =\n\t\t\tincludeRange &&\n\t\t\t!!this._rangeValue?.start &&\n\t\t\t!!this._rangeValue?.end &&\n\t\t\tthis.compareDate(normalized, this._rangeValue.start) >= 0 &&\n\t\t\tthis.compareDate(normalized, this._rangeValue.end) <= 0;\n\n\t\treturn {\n\t\t\tdate: normalized,\n\t\t\tlabel: normalized.getDate(),\n\t\t\tmuted: !inCurrentMonth,\n\t\t\tdisabled,\n\t\t\tselected: selectedSingle || rangeStart || rangeEnd,\n\t\t\tinRange,\n\t\t\trangeFill: inRange,\n\t\t\trangeLeftCap: false,\n\t\t\trangeRightCap: false,\n\t\t};\n\t}\n\n\tprivate getAnchorMonth(): Date {\n\t\tlet candidate: Date | null = null;\n\n\t\tif (this._month) {\n\t\t\tcandidate = this.cloneDate(this._month);\n\t\t} else if (this.resolvedVariant === \"single\" && this._value) {\n\t\t\tcandidate = this.startOfMonth(this._value);\n\t\t} else if (this.resolvedVariant === \"range\" && this._rangeValue?.start) {\n\t\t\tcandidate = this.startOfMonth(this._rangeValue.start);\n\t\t} else {\n\t\t\tcandidate = this.startOfMonth(new Date());\n\t\t}\n\n\t\tif (!this.isValidDate(candidate)) {\n\t\t\treturn this.startOfMonth(new Date());\n\t\t}\n\n\t\treturn candidate;\n\t}\n\n\tprivate setAnchorMonth(month: Date): void {\n\t\tconst normalized = this.startOfMonth(month);\n\t\tif (!this.isValidDate(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tthis._month = normalized;\n\t\tthis.monthChange.emit(this.cloneDate(this._month));\n\t}\n\n\tprivate syncVisibleMonthToDate(date: Date): void {\n\t\tconst nextMonth = this.startOfMonth(date);\n\t\tif (!this._month || !this.isSameMonth(this._month, nextMonth)) {\n\t\t\tthis._month = nextMonth;\n\t\t\tthis.monthChange.emit(this.cloneDate(nextMonth));\n\t\t}\n\t}\n\n\tprivate isBlocked(date: Date): boolean {\n\t\tif (this.minDate && this.compareDate(date, this.minDate) < 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (this.maxDate && this.compareDate(date, this.maxDate) > 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst blockedSet = new Set(\n\t\t\t(this.disabledDates || []).map((item) => this.dateKey(item)),\n\t\t);\n\t\tif (blockedSet.has(this.dateKey(date))) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn !!this.isDateDisabled?.(this.cloneDate(date));\n\t}\n\n\tprivate rangeContainsBlockedDate(start: Date, end: Date): boolean {\n\t\tlet cursor = this.cloneDate(start);\n\n\t\twhile (this.compareDate(cursor, end) <= 0) {\n\t\t\tif (this.isBlocked(cursor)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcursor = this.addDays(cursor, 1);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate normalizeDate(value: Date | null | undefined): Date | null {\n\t\tif (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn new Date(value.getFullYear(), value.getMonth(), value.getDate());\n\t}\n\n\tprivate cloneDate(date: Date): Date {\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\t}\n\n\tprivate isValidDate(date: Date | null | undefined): date is Date {\n\t\treturn !!date && date instanceof Date && !Number.isNaN(date.getTime());\n\t}\n\n\tprivate startOfMonth(date: Date): Date {\n\t\treturn new Date(date.getFullYear(), date.getMonth(), 1);\n\t}\n\n\tprivate endOfMonth(date: Date): Date {\n\t\treturn new Date(date.getFullYear(), date.getMonth() + 1, 0);\n\t}\n\n\tprivate startOfWeek(date: Date): Date {\n\t\treturn this.addDays(date, -date.getDay());\n\t}\n\n\tprivate endOfWeek(date: Date): Date {\n\t\treturn this.addDays(date, 6 - date.getDay());\n\t}\n\n\tprivate addMonths(date: Date, months: number): Date {\n\t\treturn new Date(date.getFullYear(), date.getMonth() + months, 1);\n\t}\n\n\tprivate addDays(date: Date, days: number): Date {\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);\n\t}\n\n\tprivate compareDate(a: Date, b: Date): number {\n\t\treturn this.dateValue(a) - this.dateValue(b);\n\t}\n\n\tprivate dateValue(date: Date): number {\n\t\treturn (\n\t\t\tDate.UTC(date.getFullYear(), date.getMonth(), date.getDate()) / DAY_MS\n\t\t);\n\t}\n\n\tprivate isSameDay(a: Date, b: Date): boolean {\n\t\treturn this.compareDate(a, b) === 0;\n\t}\n\n\tprivate isSameMonth(a: Date, b: Date): boolean {\n\t\treturn a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n\t}\n\n\tprivate dateKey(date: Date): string {\n\t\tconst y = date.getFullYear();\n\t\tconst m = String(date.getMonth() + 1).padStart(2, \"0\");\n\t\tconst d = String(date.getDate()).padStart(2, \"0\");\n\t\treturn `${y}-${m}-${d}`;\n\t}\n\n\tprivate formatMonthShort(date: Date): string {\n\t\treturn date.toLocaleString(\"en-US\", { month: \"short\" });\n\t}\n\n\tprivate formatMonthYear(date: Date): string {\n\t\treturn date.toLocaleString(\"en-US\", { month: \"long\", year: \"numeric\" });\n\t}\n}\n","<div [ngClass]=\"rootClasses\" [ngStyle]=\"rootStyle\">\n <div *ngFor=\"let month of visibleMonths; let monthIndex = index; trackBy: trackByIndex\" [ngClass]=\"monthPanelClasses(monthIndex)\">\n <div [ngClass]=\"headerClasses(month)\">\n <button\n *ngIf=\"month.showPrevButton; else prevPlaceholder\"\n type=\"button\"\n [ngClass]=\"navButtonClasses()\"\n aria-label=\"Previous month\"\n (click)=\"goToPreviousMonth()\"\n [disabled]=\"readonly\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m15 18-6-6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n <ng-template #prevPlaceholder>\n <div [ngClass]=\"navPlaceholderClasses()\" aria-hidden=\"true\"></div>\n </ng-template>\n\n <ng-container *ngIf=\"month.titleStyle === 'dropdowns'; else plainTitle\">\n <div [ngClass]=\"dropdownWrapClasses()\">\n <div [ngClass]=\"dropdownClasses('w-16 sm:w-[72px]')\">\n <select\n [ngClass]=\"dropdownSelectClasses()\"\n [ngStyle]=\"dropdownSelectStyle\"\n [value]=\"singleHeaderMonth\"\n aria-label=\"Month\"\n (change)=\"onSingleMonthChange($any($event.target).value)\"\n >\n <option\n *ngFor=\"let monthOption of monthOptions\"\n [value]=\"monthOption.value\"\n [selected]=\"monthOption.value === singleHeaderMonth\"\n >\n {{ monthOption.label }}\n </option>\n </select>\n <svg viewBox=\"0 0 24 24\" class=\"h-3 w-3 text-foreground\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </div>\n <div [ngClass]=\"dropdownClasses('w-16 sm:w-[82px]')\">\n <select\n [ngClass]=\"dropdownSelectClasses()\"\n [ngStyle]=\"dropdownSelectStyle\"\n [value]=\"singleHeaderYear\"\n aria-label=\"Year\"\n (change)=\"onSingleYearChange($any($event.target).value)\"\n >\n <option\n *ngFor=\"let year of yearOptions\"\n [value]=\"year\"\n [selected]=\"year === singleHeaderYear\"\n >\n {{ year }}\n </option>\n </select>\n <svg viewBox=\"0 0 24 24\" class=\"h-3 w-3 text-foreground\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </div>\n </div>\n </ng-container>\n\n <ng-template #plainTitle>\n <div class=\"flex min-w-0 flex-1 items-center justify-center\">\n <p class=\"m-0 text-foreground text-center text-sm font-medium leading-5\">\n {{ month.title }}\n </p>\n </div>\n </ng-template>\n\n <button\n *ngIf=\"month.showNextButton; else nextPlaceholder\"\n type=\"button\"\n [ngClass]=\"navButtonClasses()\"\n aria-label=\"Next month\"\n (click)=\"goToNextMonth()\"\n [disabled]=\"readonly\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m9 18 6-6-6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n <ng-template #nextPlaceholder>\n <div [ngClass]=\"navPlaceholderClasses()\" aria-hidden=\"true\"></div>\n </ng-template>\n </div>\n\n <div [ngClass]=\"calendarGridWrapClasses()\">\n <div [ngClass]=\"weekdayRowClasses()\">\n <div *ngFor=\"let day of weekdays; trackBy: trackByIndex\" [ngClass]=\"weekdayCellClasses()\">\n <span>{{ day }}</span>\n </div>\n </div>\n\n <div *ngFor=\"let week of month.weeks; trackBy: trackByIndex\" [ngClass]=\"weekRowClasses()\">\n <div *ngFor=\"let cell of week; trackBy: trackByDate\" [ngClass]=\"dayCellClasses(cell)\">\n <button\n type=\"button\"\n [ngClass]=\"dayButtonClasses(cell)\"\n [disabled]=\"readonly\"\n [attr.aria-selected]=\"cell.selected\"\n [attr.aria-disabled]=\"cell.disabled || readonly\"\n [attr.title]=\"cell.date | date : 'yyyy-MM-dd'\"\n (click)=\"onDatePressed(cell)\"\n >\n <span [ngClass]=\"dayLabelClasses(cell)\">{{ cell.label }}</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import {\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tHostListener,\n\tInput,\n\tOnDestroy,\n\tOutput,\n\tViewChild,\n\tViewContainerRef,\n} from \"@angular/core\";\nimport { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\nimport { Subscription } from \"rxjs\";\nimport { format as formatDateFns } from \"date-fns\";\nimport type {\n\tPdmCalendarRange,\n\tPdmCalendarVariant,\n} from \"./calendar.component\";\nimport { PdmOverlayOptions } from \"pdm-ui-kit/src/overlay\";\nimport { createFlexiblePositionStrategy } from \"pdm-ui-kit/src/overlay\";\nimport {\n\tmergeOverlayPanelClass,\n\tOVERLAY_BASE_Z_INDEX,\n} from \"pdm-ui-kit/src/overlay\";\n\nlet nextDatePickerId = 0;\n\n@Component({\n\tselector: \"pdm-date-picker\",\n\ttemplateUrl: \"./date-picker.component.html\",\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PdmDatePickerComponent implements OnDestroy {\n\tprivate _value: Date | null = null;\n\tprivate _rangeValue: PdmCalendarRange | null = null;\n\tprivate _open = false;\n\n\tprivate readonly instanceId = `pdm-date-picker-${++nextDatePickerId}`;\n\tprivate triggerFocused = false;\n\n\tprivate overlayRef: OverlayRef | null = null;\n\tprivate backdropSub: Subscription | null = null;\n\n\t@ViewChild(\"triggerEl\") private triggerRef?: ElementRef<HTMLElement>;\n\t@ViewChild(\"panelTemplate\") private panelTemplateRef!: any;\n\n\tconstructor(\n\t\tprivate readonly cdr: ChangeDetectorRef,\n\t\tprivate readonly overlay: Overlay,\n\t\tprivate readonly viewContainerRef: ViewContainerRef,\n\t) {}\n\n\t@Input() id = \"\";\n\t@Input() variant: PdmCalendarVariant | string = \"single\";\n\t@Input() label = \"\";\n\t@Input() labelClassName = \"\";\n\t@Input() className = \"\";\n\t@Input() triggerClassName = \"\";\n\t/**\n\t * Additional CSS classes applied to the overlay panel.\n\t * Backward-compatible: mapped to `overlayOptions.panelClass` when `overlayOptions` is not set.\n\t * When both are supplied, `overlayOptions.panelClass` takes precedence.\n\t */\n\t@Input() panelClassName = \"\";\n\t/**\n\t * Optional CDK OverlayConfig overrides.\n\t * Shallow-merged on top of component defaults — consumer always wins.\n\t * Providing `positionStrategy` or `scrollStrategy` replaces the component default entirely.\n\t */\n\t@Input() overlayOptions?: PdmOverlayOptions;\n\t@Input() placeholder = \"Pick a date\";\n\t@Input() rangePlaceholder = \"Pick a date range\";\n\t@Input() format = \"MMM d, yyyy\";\n\t@Input() disabled = false;\n\t@Input() readonly = false;\n\t@Input() required = false;\n\t@Input() invalid = false;\n\t@Input() allowSameDayRange = true;\n\t@Input() closeOnSelect = true;\n\t@Input() minDate: Date | null = null;\n\t@Input() maxDate: Date | null = null;\n\t@Input() minYear: number | null = null;\n\t@Input() maxYear: number | null = null;\n\t@Input() disabledDates: Date[] = [];\n\t@Input() isDateDisabled: ((date: Date) => boolean) | null = null;\n\n\t@Output() valueChange = new EventEmitter<Date | null>();\n\t@Output() rangeValueChange = new EventEmitter<PdmCalendarRange | null>();\n\t@Output() openChange = new EventEmitter<boolean>();\n\t@Output() monthChange = new EventEmitter<Date>();\n\n\t@Input()\n\tset open(value: boolean) {\n\t\tif (this._open === !!value) return;\n\t\tif (value) {\n\t\t\tthis.openPanel();\n\t\t} else {\n\t\t\tthis.closePanel();\n\t\t}\n\t}\n\tget open(): boolean {\n\t\treturn this._open;\n\t}\n\n\t@Input()\n\tset value(value: Date | null) {\n\t\tthis._value = this.normalizeDate(value);\n\t\tthis.cdr.markForCheck();\n\t}\n\tget value(): Date | null {\n\t\treturn this._value;\n\t}\n\n\t@Input()\n\tset rangeValue(value: PdmCalendarRange | null) {\n\t\tthis._rangeValue = value\n\t\t\t? {\n\t\t\t\t\tstart: this.normalizeDate(value.start),\n\t\t\t\t\tend: this.normalizeDate(value.end),\n\t\t\t\t}\n\t\t\t: null;\n\t\tthis.cdr.markForCheck();\n\t}\n\tget rangeValue(): PdmCalendarRange | null {\n\t\treturn this._rangeValue;\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.destroyOverlay();\n\t}\n\n\tget resolvedVariant(): PdmCalendarVariant {\n\t\treturn this.variant === \"range\" ? \"range\" : \"single\";\n\t}\n\n\tget triggerId(): string {\n\t\treturn this.id || `${this.instanceId}-trigger`;\n\t}\n\n\tget panelId(): string {\n\t\treturn `${this.id || this.instanceId}-panel`;\n\t}\n\n\tget hasSingleValue(): boolean {\n\t\treturn this.resolvedVariant === \"single\" && !!this._value;\n\t}\n\n\tget hasRangeValue(): boolean {\n\t\treturn this.resolvedVariant === \"range\" && !!this._rangeValue?.start;\n\t}\n\n\tget displayText(): string {\n\t\tif (this.resolvedVariant === \"single\") {\n\t\t\treturn this._value ? this.formatDate(this._value) : this.placeholder;\n\t\t}\n\n\t\tconst start = this._rangeValue?.start ?? null;\n\t\tconst end = this._rangeValue?.end ?? null;\n\n\t\tif (!start) {\n\t\t\treturn this.rangePlaceholder;\n\t\t}\n\n\t\tif (!end) {\n\t\t\treturn `${this.formatDate(start)} -`;\n\t\t}\n\n\t\treturn `${this.formatDate(start)} - ${this.formatDate(end)}`;\n\t}\n\n\tget textClasses(): string[] {\n\t\tconst hasValue =\n\t\t\tthis.resolvedVariant === \"single\"\n\t\t\t\t? this.hasSingleValue\n\t\t\t\t: this.hasRangeValue;\n\t\treturn [\n\t\t\t\"min-w-0 flex-1 truncate text-left text-sm leading-5\",\n\t\t\thasValue ? \"text-foreground\" : \"text-muted-foreground\",\n\t\t];\n\t}\n\n\tget rootClasses(): string[] {\n\t\treturn [\n\t\t\t\"grid gap-2\",\n\t\t\tthis.resolvedVariant === \"range\" ? \"w-[280px]\" : \"w-[197px]\",\n\t\t\tthis.className,\n\t\t];\n\t}\n\n\tget triggerClasses(): string[] {\n\t\tconst focusStyle = this._open || this.triggerFocused;\n\n\t\treturn [\n\t\t\t\"border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive relative flex w-full appearance-none box-border items-center gap-2 overflow-hidden rounded-lg border border-solid bg-background px-3 py-[7.5px] text-left text-sm shadow-sm outline-none transition-colors\",\n\t\t\t\"min-h-[36px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\tfocusStyle ? \"border-ring ring-2 ring-ring/50\" : \"\",\n\t\t\tthis.invalid ? \"border-destructive ring-destructive/20\" : \"\",\n\t\t\tthis.triggerClassName,\n\t\t];\n\t}\n\n\ttoggleOpen(): void {\n\t\tif (this.disabled || this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setOpen(!this._open);\n\t}\n\n\tonTriggerFocus(): void {\n\t\tthis.triggerFocused = true;\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tonTriggerBlur(): void {\n\t\tthis.triggerFocused = false;\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tonCalendarValueChange(value: Date | null): void {\n\t\tthis._value = this.normalizeDate(value);\n\t\tthis.valueChange.emit(this._value ? this.cloneDate(this._value) : null);\n\n\t\tif (this.closeOnSelect && this._value) {\n\t\t\tthis.setOpen(false);\n\t\t} else {\n\t\t\tthis.cdr.markForCheck();\n\t\t}\n\t}\n\n\tonCalendarRangeValueChange(value: PdmCalendarRange | null): void {\n\t\tthis._rangeValue = value\n\t\t\t? {\n\t\t\t\t\tstart: this.normalizeDate(value.start),\n\t\t\t\t\tend: this.normalizeDate(value.end),\n\t\t\t\t}\n\t\t\t: null;\n\n\t\tthis.rangeValueChange.emit(\n\t\t\tthis._rangeValue\n\t\t\t\t? {\n\t\t\t\t\t\tstart: this._rangeValue.start\n\t\t\t\t\t\t\t? this.cloneDate(this._rangeValue.start)\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\tend: this._rangeValue.end\n\t\t\t\t\t\t\t? this.cloneDate(this._rangeValue.end)\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t);\n\n\t\tif (\n\t\t\tthis.closeOnSelect &&\n\t\t\tthis._rangeValue?.start &&\n\t\t\tthis._rangeValue?.end\n\t\t) {\n\t\t\tthis.setOpen(false);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tonCalendarMonthChange(month: Date): void {\n\t\tthis.monthChange.emit(this.cloneDate(month));\n\t}\n\n\t@HostListener(\"document:keydown.escape\")\n\tonEscape(): void {\n\t\tif (this._open) {\n\t\t\tthis.setOpen(false);\n\t\t}\n\t}\n\n\tprivate setOpen(nextOpen: boolean): void {\n\t\tif (this._open === nextOpen) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (nextOpen) {\n\t\t\tthis.openPanel();\n\t\t} else {\n\t\t\tthis.closePanel();\n\t\t}\n\t}\n\n\tprivate openPanel(): void {\n\t\tif (this.overlayRef) return;\n\n\t\tconst triggerEl = this.triggerRef?.nativeElement;\n\t\tif (!triggerEl) return;\n\n\t\tthis._open = true;\n\t\tthis.openChange.emit(true);\n\t\tthis.cdr.markForCheck();\n\n\t\tconst positionStrategy = createFlexiblePositionStrategy(\n\t\t\tthis.overlay,\n\t\t\ttriggerEl,\n\t\t\t8,\n\t\t);\n\n\t\t// CRITICAL: Use mergeOverlayPanelClass to ensure z-index is never lost.\n\t\t// Consumer classes are appended AFTER base z-index.\n\t\tconst zIndexEnforced = mergeOverlayPanelClass(\n\t\t\tOVERLAY_BASE_Z_INDEX,\n\t\t\tthis.panelClassName,\n\t\t);\n\n\t\t// Resolve panelClass: overlayOptions.panelClass wins; otherwise use z-index enforced.\n\t\tconst resolvedPanelClass = this.overlayOptions?.panelClass\n\t\t\t? mergeOverlayPanelClass(\n\t\t\t\t\tOVERLAY_BASE_Z_INDEX,\n\t\t\t\t\tthis.overlayOptions.panelClass,\n\t\t\t\t)\n\t\t\t: zIndexEnforced;\n\n\t\tthis.overlayRef = this.overlay.create({\n\t\t\tpositionStrategy,\n\t\t\tscrollStrategy: this.overlay.scrollStrategies.reposition(),\n\t\t\t// Consumer overrides are spread first.\n\t\t\t...this.overlayOptions,\n\t\t\t// panelClass always enforced last to preserve z-index.\n\t\t\tpanelClass: resolvedPanelClass,\n\t\t});\n\n\t\tconst portal = new TemplatePortal(\n\t\t\tthis.panelTemplateRef,\n\t\t\tthis.viewContainerRef,\n\t\t);\n\t\tthis.overlayRef.attach(portal);\n\n\t\tthis.backdropSub = this.overlayRef\n\t\t\t.outsidePointerEvents()\n\t\t\t.subscribe((event) => {\n\t\t\t\tconst target = event.target as Node;\n\t\t\t\tif (!triggerEl.contains(target)) {\n\t\t\t\t\tthis.closePanel();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tprivate closePanel(): void {\n\t\tif (!this.overlayRef && !this._open) return;\n\n\t\tthis._open = false;\n\t\tthis.openChange.emit(false);\n\t\tthis.destroyOverlay();\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tprivate destroyOverlay(): void {\n\t\tif (this.backdropSub) {\n\t\t\tthis.backdropSub.unsubscribe();\n\t\t\tthis.backdropSub = null;\n\t\t}\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tthis.overlayRef = null;\n\t\t}\n\t}\n\n\tprivate formatDate(date: Date): string {\n\t\ttry {\n\t\t\treturn formatDateFns(date, this.format || \"MMM d, yyyy\");\n\t\t} catch {\n\t\t\treturn formatDateFns(date, \"MMM d, yyyy\");\n\t\t}\n\t}\n\n\tprivate normalizeDate(value: Date | null | undefined): Date | null {\n\t\tif (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn new Date(value.getFullYear(), value.getMonth(), value.getDate());\n\t}\n\n\tprivate cloneDate(date: Date): Date {\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\t}\n}\n","<div [ngClass]=\"rootClasses\">\n <pdm-label *ngIf=\"label\" [forId]=\"triggerId\" [required]=\"required\" [className]=\"labelClassName\">\n {{ label }}\n </pdm-label>\n\n <button\n #triggerEl\n type=\"button\"\n [id]=\"triggerId\"\n [disabled]=\"disabled\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"triggerClasses\"\n [attr.title]=\"displayText\"\n (click)=\"toggleOpen()\"\n (focus)=\"onTriggerFocus()\"\n (blur)=\"onTriggerBlur()\"\n >\n <span class=\"flex h-5 w-5 shrink-0 items-center justify-center p-0.5 text-muted-foreground\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\n <path d=\"M8 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M16 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <rect x=\"3\" y=\"4.5\" width=\"18\" height=\"16.5\" rx=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></rect>\n <path d=\"M3 9.5h18\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"textClasses\">{{ displayText }}</span>\n </button>\n</div>\n\n<ng-template #panelTemplate>\n <div [id]=\"panelId\" role=\"dialog\" [attr.aria-labelledby]=\"label ? triggerId : null\">\n <pdm-calendar\n [variant]=\"resolvedVariant\"\n [value]=\"value\"\n [rangeValue]=\"rangeValue\"\n [readonly]=\"readonly\"\n [allowSameDayRange]=\"allowSameDayRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minYear]=\"minYear\"\n [maxYear]=\"maxYear\"\n [disabledDates]=\"disabledDates\"\n [isDateDisabled]=\"isDateDisabled\"\n (valueChange)=\"onCalendarValueChange($event)\"\n (rangeValueChange)=\"onCalendarRangeValueChange($event)\"\n (monthChange)=\"onCalendarMonthChange($event)\"\n ></pdm-calendar>\n </div>\n</ng-template>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { PdmLabelModule } from \"pdm-ui-kit/src/label\";\nimport { PdmCalendarComponent } from \"./calendar.component\";\nimport { PdmDatePickerComponent } from \"./date-picker.component\";\n\nconst COMPONENTS = [PdmCalendarComponent, PdmDatePickerComponent];\n\n@NgModule({\n\timports: [CommonModule, OverlayModule, PdmLabelModule],\n\tdeclarations: COMPONENTS,\n\texports: COMPONENTS,\n})\nexport class PdmCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["formatDateFns","i1","i2","i4.PdmCalendarComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pdm-ui-kit-src-calendar.mjs","sources":["../../../src/calendar/calendar.component.ts","../../../src/calendar/calendar.component.html","../../../src/calendar/date-picker.component.ts","../../../src/calendar/date-picker.component.html","../../../src/calendar/calendar.module.ts","../../../src/calendar/pdm-ui-kit-src-calendar.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tEventEmitter,\n\tinject,\n\tInput,\n\tOutput,\n} from \"@angular/core\";\n\nexport type PdmCalendarVariant = \"single\" | \"range\";\n\nexport interface PdmCalendarRange {\n\tstart: Date | null;\n\tend: Date | null;\n}\n\ninterface PdmCalendarCell {\n\tdate: Date;\n\tlabel: number;\n\tmuted: boolean;\n\tdisabled: boolean;\n\tselected: boolean;\n\tinRange: boolean;\n\trangeFill: boolean;\n\trangeLeftCap: boolean;\n\trangeRightCap: boolean;\n}\n\ninterface PdmCalendarMonthView {\n\tdate: Date;\n\ttitle: string;\n\ttitleStyle: \"dropdowns\" | \"plain\";\n\tdropdownMonth?: string;\n\tdropdownYear?: string;\n\tshowPrevButton: boolean;\n\tshowNextButton: boolean;\n\tweeks: readonly (readonly PdmCalendarCell[])[];\n}\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\n\n@Component({\n\tselector: \"pdm-calendar\",\n\ttemplateUrl: \"./calendar.component.html\",\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PdmCalendarComponent {\n\tprivate _value: Date | null = null;\n\tprivate _rangeValue: PdmCalendarRange | null = null;\n\tprivate _month: Date | null = null;\n\n\tprivate readonly cdr = inject(ChangeDetectorRef);\n\n\t@Input() variant: PdmCalendarVariant | string = \"single\";\n\t@Input() className = \"\";\n\t@Input() disabledDates: Date[] = [];\n\t@Input() minDate: Date | null = null;\n\t@Input() maxDate: Date | null = null;\n\t@Input() minYear: number | null = null;\n\t@Input() maxYear: number | null = null;\n\t@Input() isDateDisabled: ((date: Date) => boolean) | null = null;\n\t@Input() allowSameDayRange = true;\n\t@Input() readonly = false;\n\n\t@Output() valueChange = new EventEmitter<Date | null>();\n\t@Output() rangeValueChange = new EventEmitter<PdmCalendarRange | null>();\n\t@Output() monthChange = new EventEmitter<Date>();\n\t@Output() dateClick = new EventEmitter<Date>();\n\t@Output() disabledDateClick = new EventEmitter<Date>();\n\n\t@Input()\n\tset value(value: Date | null) {\n\t\tthis._value = this.normalizeDate(value);\n\t}\n\tget value(): Date | null {\n\t\treturn this._value;\n\t}\n\n\t@Input()\n\tset rangeValue(value: PdmCalendarRange | null) {\n\t\tthis._rangeValue = value\n\t\t\t? {\n\t\t\t\t\tstart: this.normalizeDate(value.start),\n\t\t\t\t\tend: this.normalizeDate(value.end),\n\t\t\t\t}\n\t\t\t: null;\n\t}\n\tget rangeValue(): PdmCalendarRange | null {\n\t\treturn this._rangeValue;\n\t}\n\n\t@Input()\n\tset month(value: Date | null) {\n\t\tthis._month = value ? this.startOfMonth(value) : null;\n\t}\n\tget month(): Date | null {\n\t\treturn this._month;\n\t}\n\n\treadonly weekdays = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"] as const;\n\treadonly monthOptions = [\n\t\t{ value: 0, label: \"Jan\" },\n\t\t{ value: 1, label: \"Feb\" },\n\t\t{ value: 2, label: \"Mar\" },\n\t\t{ value: 3, label: \"Apr\" },\n\t\t{ value: 4, label: \"May\" },\n\t\t{ value: 5, label: \"Jun\" },\n\t\t{ value: 6, label: \"Jul\" },\n\t\t{ value: 7, label: \"Aug\" },\n\t\t{ value: 8, label: \"Sep\" },\n\t\t{ value: 9, label: \"Oct\" },\n\t\t{ value: 10, label: \"Nov\" },\n\t\t{ value: 11, label: \"Dec\" },\n\t] as const;\n\n\tget resolvedVariant(): PdmCalendarVariant {\n\t\treturn this.variant === \"range\" ? \"range\" : \"single\";\n\t}\n\n\tget visibleMonths(): readonly PdmCalendarMonthView[] {\n\t\tconst baseMonth = this.getAnchorMonth();\n\n\t\tif (this.resolvedVariant === \"single\") {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tdate: baseMonth,\n\t\t\t\t\ttitle: this.formatMonthYear(baseMonth),\n\t\t\t\t\ttitleStyle: \"dropdowns\",\n\t\t\t\t\tdropdownMonth: this.formatMonthShort(baseMonth),\n\t\t\t\t\tdropdownYear: String(baseMonth.getFullYear()),\n\t\t\t\t\tshowPrevButton: true,\n\t\t\t\t\tshowNextButton: true,\n\t\t\t\t\tweeks: this.buildMonthWeeks(baseMonth, false),\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tconst nextMonth = this.addMonths(baseMonth, 1);\n\t\treturn [\n\t\t\t{\n\t\t\t\tdate: baseMonth,\n\t\t\t\ttitle: this.formatMonthYear(baseMonth),\n\t\t\t\ttitleStyle: \"plain\",\n\t\t\t\tshowPrevButton: true,\n\t\t\t\tshowNextButton: false,\n\t\t\t\tweeks: this.buildMonthWeeks(baseMonth, true),\n\t\t\t},\n\t\t\t{\n\t\t\t\tdate: nextMonth,\n\t\t\t\ttitle: this.formatMonthYear(nextMonth),\n\t\t\t\ttitleStyle: \"plain\",\n\t\t\t\tshowPrevButton: false,\n\t\t\t\tshowNextButton: true,\n\t\t\t\tweeks: this.buildMonthWeeks(nextMonth, true),\n\t\t\t},\n\t\t];\n\t}\n\n\tget singleHeaderMonth(): number {\n\t\treturn this.getAnchorMonth().getMonth();\n\t}\n\n\tget singleHeaderYear(): number {\n\t\treturn this.getAnchorMonth().getFullYear();\n\t}\n\n\tget yearOptions(): readonly number[] {\n\t\tconst baseYear = new Date().getFullYear();\n\t\tconst selectedYear = this.singleHeaderYear;\n\t\tlet minYear =\n\t\t\tthis.minYear ??\n\t\t\t(this.minDate ? this.minDate.getFullYear() : baseYear - 100);\n\t\tlet maxYear =\n\t\t\tthis.maxYear ??\n\t\t\t(this.maxDate ? this.maxDate.getFullYear() : baseYear + 10);\n\t\tconst years: number[] = [];\n\n\t\tif (selectedYear < minYear) {\n\t\t\tminYear = selectedYear;\n\t\t}\n\n\t\tif (selectedYear > maxYear) {\n\t\t\tmaxYear = selectedYear;\n\t\t}\n\n\t\tif (minYear > maxYear) {\n\t\t\tconst nextMin = maxYear;\n\t\t\tmaxYear = minYear;\n\t\t\tminYear = nextMin;\n\t\t}\n\n\t\tfor (let year = minYear; year <= maxYear; year += 1) {\n\t\t\tyears.push(year);\n\t\t}\n\n\t\treturn years;\n\t}\n\n\tget rootClasses(): string[] {\n\t\treturn [\n\t\t\t\"border-border bg-background relative rounded-[10px] border border-solid p-3 shadow-sm\",\n\t\t\tthis.resolvedVariant === \"range\"\n\t\t\t\t? \"inline-flex items-start justify-center gap-4 shrink-0 grow-0 basis-auto\"\n\t\t\t\t: \"inline-flex flex-col gap-4 shrink-0 grow-0 basis-auto\",\n\t\t\tthis.className,\n\t\t];\n\t}\n\n\tget rootStyle(): Record<string, string> {\n\t\tconst width = this.resolvedVariant === \"range\" ? \"488px\" : \"250px\";\n\n\t\treturn {\n\t\t\twidth,\n\t\t\tminWidth: width,\n\t\t\tmaxWidth: width,\n\t\t\tminHeight: \"293px\",\n\t\t\tflex: \"0 0 auto\",\n\t\t\talignSelf: \"flex-start\",\n\t\t};\n\t}\n\n\tmonthPanelClasses(_index: number): string[] {\n\t\treturn [\n\t\t\t\"flex flex-col items-start\",\n\t\t\tthis.resolvedVariant === \"range\" ? \"w-[224px] gap-4\" : \"w-full gap-0\",\n\t\t];\n\t}\n\n\theaderClasses(month: PdmCalendarMonthView): string[] {\n\t\treturn [\n\t\t\t\"flex w-full items-center justify-between\",\n\t\t\tmonth.titleStyle === \"dropdowns\" ? \"\" : \"mb-4\",\n\t\t];\n\t}\n\n\tnavButtonClasses(): string[] {\n\t\treturn [\n\t\t\t\"flex h-8 w-8 appearance-none box-border items-center justify-center rounded-md border-0 bg-transparent p-0 text-foreground\",\n\t\t\t\"disabled:pointer-events-none disabled:opacity-40\",\n\t\t];\n\t}\n\n\tnavPlaceholderClasses(): string[] {\n\t\treturn [\"h-7 w-7 shrink-0\"];\n\t}\n\n\tdropdownWrapClasses(): string[] {\n\t\treturn [\"flex w-40 items-center justify-center gap-2\"];\n\t}\n\n\tdropdownClasses(widthClass: string): string[] {\n\t\treturn [\"flex h-8 items-center justify-center gap-1 px-1\", widthClass];\n\t}\n\n\tdropdownSelectClasses(): string[] {\n\t\treturn [\n\t\t\t\"text-foreground h-full bg-transparent text-sm font-medium leading-5\",\n\t\t\t\"appearance-none box-border border-0 outline-none ring-0 focus:outline-none focus:ring-0 text-center cursor-pointer\",\n\t\t];\n\t}\n\n\tget dropdownSelectStyle(): Record<string, string> {\n\t\treturn {\n\t\t\tappearance: \"none\",\n\t\t\tWebkitAppearance: \"none\",\n\t\t\tMozAppearance: \"none\",\n\t\t\tbackground: \"transparent\",\n\t\t\tborder: \"0\",\n\t\t\tboxShadow: \"none\",\n\t\t\toutline: \"0\",\n\t\t\tpadding: \"0\",\n\t\t\tmargin: \"0\",\n\t\t};\n\t}\n\n\tcalendarGridWrapClasses(): string[] {\n\t\treturn [\"flex w-full flex-col items-start\"];\n\t}\n\n\tweekdayRowClasses(): string[] {\n\t\treturn [\"flex w-full items-center\"];\n\t}\n\n\tweekdayCellClasses(): string[] {\n\t\treturn [\n\t\t\t\"text-muted-foreground flex h-[21px] w-8 items-center justify-center rounded-md text-xs leading-4\",\n\t\t];\n\t}\n\n\tweekRowClasses(): string[] {\n\t\treturn [\"flex w-full items-start pt-2\"];\n\t}\n\n\tdayCellClasses(cell: PdmCalendarCell): string[] {\n\t\treturn [\n\t\t\t\"relative flex h-8 w-8 shrink-0 items-center justify-center\",\n\t\t\tcell.rangeFill ? \"bg-accent\" : \"\",\n\t\t\tcell.rangeLeftCap ? \"rounded-l-md\" : \"\",\n\t\t\tcell.rangeRightCap ? \"rounded-r-md\" : \"\",\n\t\t];\n\t}\n\n\tdayButtonClasses(cell: PdmCalendarCell): string[] {\n\t\treturn [\n\t\t\t\"relative z-10 flex h-8 w-8 appearance-none box-border items-center justify-center rounded-md border-0 p-0 text-sm leading-5\",\n\t\t\tcell.selected\n\t\t\t\t? \"bg-primary text-primary-foreground\"\n\t\t\t\t: cell.rangeFill\n\t\t\t\t\t? \"bg-transparent text-accent-foreground\"\n\t\t\t\t\t: \"bg-transparent text-foreground\",\n\t\t\tcell.muted && !cell.rangeFill ? \"opacity-50\" : \"\",\n\t\t\tcell.disabled ? \"cursor-not-allowed opacity-40\" : \"\",\n\t\t\t!cell.disabled && !this.readonly && !cell.selected\n\t\t\t\t? \"hover:bg-accent/70\"\n\t\t\t\t: \"\",\n\t\t];\n\t}\n\n\tdayLabelClasses(_cell: PdmCalendarCell): string[] {\n\t\treturn [\"font-normal\"];\n\t}\n\n\ttrackByIndex = (index: number): number => {\n\t\treturn index;\n\t};\n\n\ttrackByDate = (_index: number, cell: PdmCalendarCell): string => {\n\t\treturn this.dateKey(cell.date);\n\t};\n\n\tgoToPreviousMonth(): void {\n\t\tthis.setAnchorMonth(this.addMonths(this.getAnchorMonth(), -1));\n\t}\n\n\tgoToNextMonth(): void {\n\t\tthis.setAnchorMonth(this.addMonths(this.getAnchorMonth(), 1));\n\t}\n\n\tonSingleMonthChange(monthValue: string): void {\n\t\tconst month = Number(monthValue);\n\t\tif (Number.isNaN(month) || month < 0 || month > 11) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst anchor = this.getAnchorMonth();\n\t\tthis.setAnchorMonth(new Date(anchor.getFullYear(), month, 1));\n\t}\n\n\tonSingleYearChange(yearValue: string): void {\n\t\tconst year = Number(yearValue);\n\t\tif (Number.isNaN(year)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst anchor = this.getAnchorMonth();\n\t\tthis.setAnchorMonth(new Date(year, anchor.getMonth(), 1));\n\t}\n\n\tonDatePressed(cell: PdmCalendarCell): void {\n\t\tconst date = this.cloneDate(cell.date);\n\n\t\tif (cell.disabled) {\n\t\t\tthis.disabledDateClick.emit(date);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dateClick.emit(date);\n\n\t\tif (this.resolvedVariant === \"single\") {\n\t\t\tthis._value = date;\n\t\t\tthis.valueChange.emit(this.cloneDate(date));\n\t\t\tthis.syncVisibleMonthToDate(date);\n\t\t\tthis.cdr.markForCheck();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.handleRangeSelection(date);\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tprivate handleRangeSelection(date: Date): void {\n\t\tconst current = this._rangeValue;\n\t\tconst currentStart = current?.start ? this.cloneDate(current.start) : null;\n\t\tconst currentEnd = current?.end ? this.cloneDate(current.end) : null;\n\n\t\tif (!currentStart || (currentStart && currentEnd)) {\n\t\t\tthis._rangeValue = { start: date, end: null };\n\t\t\tthis.rangeValueChange.emit({ start: this.cloneDate(date), end: null });\n\t\t\tthis.syncVisibleMonthToDate(date);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isSameDay(currentStart, date) && !this.allowSameDayRange) {\n\t\t\tthis._rangeValue = { start: date, end: null };\n\t\t\tthis.rangeValueChange.emit({ start: this.cloneDate(date), end: null });\n\t\t\treturn;\n\t\t}\n\n\t\tconst start =\n\t\t\tthis.compareDate(date, currentStart) < 0 ? date : currentStart;\n\t\tconst end = this.compareDate(date, currentStart) < 0 ? currentStart : date;\n\n\t\tif (this.rangeContainsBlockedDate(start, end)) {\n\t\t\tthis.disabledDateClick.emit(this.cloneDate(date));\n\t\t\treturn;\n\t\t}\n\n\t\tthis._rangeValue = { start, end };\n\t\tthis.rangeValueChange.emit({\n\t\t\tstart: this.cloneDate(start),\n\t\t\tend: this.cloneDate(end),\n\t\t});\n\t\tthis.syncVisibleMonthToDate(start);\n\t}\n\n\tprivate buildMonthWeeks(\n\t\tmonth: Date,\n\t\tincludeRange: boolean,\n\t): readonly (readonly PdmCalendarCell[])[] {\n\t\tconst firstOfMonth = this.startOfMonth(month);\n\t\tconst start = this.startOfWeek(firstOfMonth);\n\t\tconst end = this.endOfWeek(this.endOfMonth(firstOfMonth));\n\t\tconst weeks: PdmCalendarCell[][] = [];\n\n\t\tlet cursor = this.cloneDate(start);\n\t\twhile (this.compareDate(cursor, end) <= 0) {\n\t\t\tconst row: PdmCalendarCell[] = [];\n\n\t\t\tfor (let col = 0; col < 7; col += 1) {\n\t\t\t\trow.push(this.buildCell(cursor, month, includeRange));\n\t\t\t\tcursor = this.addDays(cursor, 1);\n\t\t\t}\n\n\t\t\tweeks.push(row);\n\t\t}\n\n\t\tfor (const row of weeks) {\n\t\t\tfor (let col = 0; col < row.length; col += 1) {\n\t\t\t\tconst cell = row[col];\n\t\t\t\tif (!cell.inRange) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst leftInRow = col > 0 ? row[col - 1].inRange : false;\n\t\t\t\tconst rightInRow = col < row.length - 1 ? row[col + 1].inRange : false;\n\n\t\t\t\tcell.rangeLeftCap = !leftInRow;\n\t\t\t\tcell.rangeRightCap = !rightInRow;\n\t\t\t}\n\t\t}\n\n\t\treturn weeks;\n\t}\n\n\tprivate buildCell(\n\t\tdate: Date,\n\t\tvisibleMonth: Date,\n\t\tincludeRange: boolean,\n\t): PdmCalendarCell {\n\t\tconst normalized = this.cloneDate(date);\n\t\tconst inCurrentMonth =\n\t\t\tnormalized.getMonth() === visibleMonth.getMonth() &&\n\t\t\tnormalized.getFullYear() === visibleMonth.getFullYear();\n\t\tconst disabled = this.isBlocked(normalized);\n\n\t\tconst selectedSingle =\n\t\t\tthis.resolvedVariant === \"single\" &&\n\t\t\t!!this._value &&\n\t\t\tthis.isSameDay(normalized, this._value);\n\t\tconst rangeStart =\n\t\t\tincludeRange &&\n\t\t\t!!this._rangeValue?.start &&\n\t\t\tthis.isSameDay(normalized, this._rangeValue.start);\n\t\tconst rangeEnd =\n\t\t\tincludeRange &&\n\t\t\t!!this._rangeValue?.end &&\n\t\t\tthis.isSameDay(normalized, this._rangeValue.end);\n\t\tconst inRange =\n\t\t\tincludeRange &&\n\t\t\t!!this._rangeValue?.start &&\n\t\t\t!!this._rangeValue?.end &&\n\t\t\tthis.compareDate(normalized, this._rangeValue.start) >= 0 &&\n\t\t\tthis.compareDate(normalized, this._rangeValue.end) <= 0;\n\n\t\treturn {\n\t\t\tdate: normalized,\n\t\t\tlabel: normalized.getDate(),\n\t\t\tmuted: !inCurrentMonth,\n\t\t\tdisabled,\n\t\t\tselected: selectedSingle || rangeStart || rangeEnd,\n\t\t\tinRange,\n\t\t\trangeFill: inRange,\n\t\t\trangeLeftCap: false,\n\t\t\trangeRightCap: false,\n\t\t};\n\t}\n\n\tprivate getAnchorMonth(): Date {\n\t\tlet candidate: Date | null = null;\n\n\t\tif (this._month) {\n\t\t\tcandidate = this.cloneDate(this._month);\n\t\t} else if (this.resolvedVariant === \"single\" && this._value) {\n\t\t\tcandidate = this.startOfMonth(this._value);\n\t\t} else if (this.resolvedVariant === \"range\" && this._rangeValue?.start) {\n\t\t\tcandidate = this.startOfMonth(this._rangeValue.start);\n\t\t} else {\n\t\t\tcandidate = this.startOfMonth(new Date());\n\t\t}\n\n\t\tif (!this.isValidDate(candidate)) {\n\t\t\treturn this.startOfMonth(new Date());\n\t\t}\n\n\t\treturn candidate;\n\t}\n\n\tprivate setAnchorMonth(month: Date): void {\n\t\tconst normalized = this.startOfMonth(month);\n\t\tif (!this.isValidDate(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tthis._month = normalized;\n\t\tthis.monthChange.emit(this.cloneDate(this._month));\n\t}\n\n\tprivate syncVisibleMonthToDate(date: Date): void {\n\t\tconst nextMonth = this.startOfMonth(date);\n\t\tif (!this._month || !this.isSameMonth(this._month, nextMonth)) {\n\t\t\tthis._month = nextMonth;\n\t\t\tthis.monthChange.emit(this.cloneDate(nextMonth));\n\t\t}\n\t}\n\n\tprivate isBlocked(date: Date): boolean {\n\t\tif (this.minDate && this.compareDate(date, this.minDate) < 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (this.maxDate && this.compareDate(date, this.maxDate) > 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst blockedSet = new Set(\n\t\t\t(this.disabledDates || []).map((item) => this.dateKey(item)),\n\t\t);\n\t\tif (blockedSet.has(this.dateKey(date))) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn !!this.isDateDisabled?.(this.cloneDate(date));\n\t}\n\n\tprivate rangeContainsBlockedDate(start: Date, end: Date): boolean {\n\t\tlet cursor = this.cloneDate(start);\n\n\t\twhile (this.compareDate(cursor, end) <= 0) {\n\t\t\tif (this.isBlocked(cursor)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcursor = this.addDays(cursor, 1);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate normalizeDate(value: Date | null | undefined): Date | null {\n\t\tif (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn new Date(value.getFullYear(), value.getMonth(), value.getDate());\n\t}\n\n\tprivate cloneDate(date: Date): Date {\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\t}\n\n\tprivate isValidDate(date: Date | null | undefined): date is Date {\n\t\treturn !!date && date instanceof Date && !Number.isNaN(date.getTime());\n\t}\n\n\tprivate startOfMonth(date: Date): Date {\n\t\treturn new Date(date.getFullYear(), date.getMonth(), 1);\n\t}\n\n\tprivate endOfMonth(date: Date): Date {\n\t\treturn new Date(date.getFullYear(), date.getMonth() + 1, 0);\n\t}\n\n\tprivate startOfWeek(date: Date): Date {\n\t\treturn this.addDays(date, -date.getDay());\n\t}\n\n\tprivate endOfWeek(date: Date): Date {\n\t\treturn this.addDays(date, 6 - date.getDay());\n\t}\n\n\tprivate addMonths(date: Date, months: number): Date {\n\t\treturn new Date(date.getFullYear(), date.getMonth() + months, 1);\n\t}\n\n\tprivate addDays(date: Date, days: number): Date {\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);\n\t}\n\n\tprivate compareDate(a: Date, b: Date): number {\n\t\treturn this.dateValue(a) - this.dateValue(b);\n\t}\n\n\tprivate dateValue(date: Date): number {\n\t\treturn (\n\t\t\tDate.UTC(date.getFullYear(), date.getMonth(), date.getDate()) / DAY_MS\n\t\t);\n\t}\n\n\tprivate isSameDay(a: Date, b: Date): boolean {\n\t\treturn this.compareDate(a, b) === 0;\n\t}\n\n\tprivate isSameMonth(a: Date, b: Date): boolean {\n\t\treturn a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n\t}\n\n\tprivate dateKey(date: Date): string {\n\t\tconst y = date.getFullYear();\n\t\tconst m = String(date.getMonth() + 1).padStart(2, \"0\");\n\t\tconst d = String(date.getDate()).padStart(2, \"0\");\n\t\treturn `${y}-${m}-${d}`;\n\t}\n\n\tprivate formatMonthShort(date: Date): string {\n\t\treturn date.toLocaleString(\"en-US\", { month: \"short\" });\n\t}\n\n\tprivate formatMonthYear(date: Date): string {\n\t\treturn date.toLocaleString(\"en-US\", { month: \"long\", year: \"numeric\" });\n\t}\n}\n","<div [ngClass]=\"rootClasses\" [ngStyle]=\"rootStyle\">\n <div *ngFor=\"let month of visibleMonths; let monthIndex = index; trackBy: trackByIndex\" [ngClass]=\"monthPanelClasses(monthIndex)\">\n <div [ngClass]=\"headerClasses(month)\">\n <button\n *ngIf=\"month.showPrevButton; else prevPlaceholder\"\n type=\"button\"\n [ngClass]=\"navButtonClasses()\"\n aria-label=\"Previous month\"\n (click)=\"goToPreviousMonth()\"\n [disabled]=\"readonly\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m15 18-6-6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n <ng-template #prevPlaceholder>\n <div [ngClass]=\"navPlaceholderClasses()\" aria-hidden=\"true\"></div>\n </ng-template>\n\n <ng-container *ngIf=\"month.titleStyle === 'dropdowns'; else plainTitle\">\n <div [ngClass]=\"dropdownWrapClasses()\">\n <div [ngClass]=\"dropdownClasses('w-16 sm:w-[72px]')\">\n <select\n [ngClass]=\"dropdownSelectClasses()\"\n [ngStyle]=\"dropdownSelectStyle\"\n [value]=\"singleHeaderMonth\"\n aria-label=\"Month\"\n (change)=\"onSingleMonthChange($any($event.target).value)\"\n >\n <option\n *ngFor=\"let monthOption of monthOptions\"\n [value]=\"monthOption.value\"\n [selected]=\"monthOption.value === singleHeaderMonth\"\n >\n {{ monthOption.label }}\n </option>\n </select>\n <svg viewBox=\"0 0 24 24\" class=\"h-3 w-3 text-foreground\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </div>\n <div [ngClass]=\"dropdownClasses('w-16 sm:w-[82px]')\">\n <select\n [ngClass]=\"dropdownSelectClasses()\"\n [ngStyle]=\"dropdownSelectStyle\"\n [value]=\"singleHeaderYear\"\n aria-label=\"Year\"\n (change)=\"onSingleYearChange($any($event.target).value)\"\n >\n <option\n *ngFor=\"let year of yearOptions\"\n [value]=\"year\"\n [selected]=\"year === singleHeaderYear\"\n >\n {{ year }}\n </option>\n </select>\n <svg viewBox=\"0 0 24 24\" class=\"h-3 w-3 text-foreground\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </div>\n </div>\n </ng-container>\n\n <ng-template #plainTitle>\n <div class=\"flex min-w-0 flex-1 items-center justify-center\">\n <p class=\"m-0 text-foreground text-center text-sm font-medium leading-5\">\n {{ month.title }}\n </p>\n </div>\n </ng-template>\n\n <button\n *ngIf=\"month.showNextButton; else nextPlaceholder\"\n type=\"button\"\n [ngClass]=\"navButtonClasses()\"\n aria-label=\"Next month\"\n (click)=\"goToNextMonth()\"\n [disabled]=\"readonly\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m9 18 6-6-6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n <ng-template #nextPlaceholder>\n <div [ngClass]=\"navPlaceholderClasses()\" aria-hidden=\"true\"></div>\n </ng-template>\n </div>\n\n <div [ngClass]=\"calendarGridWrapClasses()\">\n <div [ngClass]=\"weekdayRowClasses()\">\n <div *ngFor=\"let day of weekdays; trackBy: trackByIndex\" [ngClass]=\"weekdayCellClasses()\">\n <span>{{ day }}</span>\n </div>\n </div>\n\n <div *ngFor=\"let week of month.weeks; trackBy: trackByIndex\" [ngClass]=\"weekRowClasses()\">\n <div *ngFor=\"let cell of week; trackBy: trackByDate\" [ngClass]=\"dayCellClasses(cell)\">\n <button\n type=\"button\"\n [ngClass]=\"dayButtonClasses(cell)\"\n [disabled]=\"readonly\"\n [attr.aria-selected]=\"cell.selected\"\n [attr.aria-disabled]=\"cell.disabled || readonly\"\n [attr.title]=\"cell.date | date : 'yyyy-MM-dd'\"\n (click)=\"onDatePressed(cell)\"\n >\n <span [ngClass]=\"dayLabelClasses(cell)\">{{ cell.label }}</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import {\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tHostListener,\n\tInput,\n\tOnDestroy,\n\tOutput,\n\tViewChild,\n\tViewContainerRef,\n} from \"@angular/core\";\nimport { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\nimport { Subscription } from \"rxjs\";\nimport { format as formatDateFns } from \"date-fns\";\nimport type {\n\tPdmCalendarRange,\n\tPdmCalendarVariant,\n} from \"./calendar.component\";\nimport { PdmOverlayOptions } from \"pdm-ui-kit/src/overlay\";\nimport { createFlexiblePositionStrategy } from \"pdm-ui-kit/src/overlay\";\nimport {\n\tmergeOverlayPanelClass,\n\tOVERLAY_BASE_Z_INDEX,\n} from \"pdm-ui-kit/src/overlay\";\n\nlet nextDatePickerId = 0;\n\n@Component({\n\tselector: \"pdm-date-picker\",\n\ttemplateUrl: \"./date-picker.component.html\",\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PdmDatePickerComponent implements OnDestroy {\n\tprivate _value: Date | null = null;\n\tprivate _rangeValue: PdmCalendarRange | null = null;\n\tprivate _open = false;\n\n\tprivate readonly instanceId = `pdm-date-picker-${++nextDatePickerId}`;\n\tprivate triggerFocused = false;\n\n\tprivate overlayRef: OverlayRef | null = null;\n\tprivate backdropSub: Subscription | null = null;\n\n\t@ViewChild(\"triggerEl\") private triggerRef?: ElementRef<HTMLElement>;\n\t@ViewChild(\"panelTemplate\") private panelTemplateRef!: any;\n\n\tconstructor(\n\t\tprivate readonly cdr: ChangeDetectorRef,\n\t\tprivate readonly overlay: Overlay,\n\t\tprivate readonly viewContainerRef: ViewContainerRef,\n\t) {}\n\n\t@Input() id = \"\";\n\t@Input() variant: PdmCalendarVariant | string = \"single\";\n\t@Input() label = \"\";\n\t@Input() labelClassName = \"\";\n\t@Input() className = \"\";\n\t@Input() triggerClassName = \"\";\n\t@Input() iconOnly = false;\n\t/**\n\t * Additional CSS classes applied to the overlay panel.\n\t * Backward-compatible: mapped to `overlayOptions.panelClass` when `overlayOptions` is not set.\n\t * When both are supplied, `overlayOptions.panelClass` takes precedence.\n\t */\n\t@Input() panelClassName = \"\";\n\t/**\n\t * Optional CDK OverlayConfig overrides.\n\t * Shallow-merged on top of component defaults — consumer always wins.\n\t * Providing `positionStrategy` or `scrollStrategy` replaces the component default entirely.\n\t */\n\t@Input() overlayOptions?: PdmOverlayOptions;\n\t@Input() placeholder = \"Pick a date\";\n\t@Input() rangePlaceholder = \"Pick a date range\";\n\t@Input() format = \"MMM d, yyyy\";\n\t@Input() disabled = false;\n\t@Input() readonly = false;\n\t@Input() required = false;\n\t@Input() invalid = false;\n\t@Input() allowSameDayRange = true;\n\t@Input() closeOnSelect = true;\n\t@Input() minDate: Date | null = null;\n\t@Input() maxDate: Date | null = null;\n\t@Input() minYear: number | null = null;\n\t@Input() maxYear: number | null = null;\n\t@Input() disabledDates: Date[] = [];\n\t@Input() isDateDisabled: ((date: Date) => boolean) | null = null;\n\n\t@Output() valueChange = new EventEmitter<Date | null>();\n\t@Output() rangeValueChange = new EventEmitter<PdmCalendarRange | null>();\n\t@Output() openChange = new EventEmitter<boolean>();\n\t@Output() monthChange = new EventEmitter<Date>();\n\n\t@Input()\n\tset open(value: boolean) {\n\t\tif (this._open === !!value) return;\n\t\tif (value) {\n\t\t\tthis.openPanel();\n\t\t} else {\n\t\t\tthis.closePanel();\n\t\t}\n\t}\n\tget open(): boolean {\n\t\treturn this._open;\n\t}\n\n\t@Input()\n\tset value(value: Date | null) {\n\t\tthis._value = this.normalizeDate(value);\n\t\tthis.cdr.markForCheck();\n\t}\n\tget value(): Date | null {\n\t\treturn this._value;\n\t}\n\n\t@Input()\n\tset rangeValue(value: PdmCalendarRange | null) {\n\t\tthis._rangeValue = value\n\t\t\t? {\n\t\t\t\t\tstart: this.normalizeDate(value.start),\n\t\t\t\t\tend: this.normalizeDate(value.end),\n\t\t\t\t}\n\t\t\t: null;\n\t\tthis.cdr.markForCheck();\n\t}\n\tget rangeValue(): PdmCalendarRange | null {\n\t\treturn this._rangeValue;\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.destroyOverlay();\n\t}\n\n\tget resolvedVariant(): PdmCalendarVariant {\n\t\treturn this.variant === \"range\" ? \"range\" : \"single\";\n\t}\n\n\tget triggerId(): string {\n\t\treturn this.id || `${this.instanceId}-trigger`;\n\t}\n\n\tget panelId(): string {\n\t\treturn `${this.id || this.instanceId}-panel`;\n\t}\n\n\tget hasSingleValue(): boolean {\n\t\treturn this.resolvedVariant === \"single\" && !!this._value;\n\t}\n\n\tget hasRangeValue(): boolean {\n\t\treturn this.resolvedVariant === \"range\" && !!this._rangeValue?.start;\n\t}\n\n\tget displayText(): string {\n\t\tif (this.resolvedVariant === \"single\") {\n\t\t\treturn this._value ? this.formatDate(this._value) : this.placeholder;\n\t\t}\n\n\t\tconst start = this._rangeValue?.start ?? null;\n\t\tconst end = this._rangeValue?.end ?? null;\n\n\t\tif (!start) {\n\t\t\treturn this.rangePlaceholder;\n\t\t}\n\n\t\tif (!end) {\n\t\t\treturn `${this.formatDate(start)} -`;\n\t\t}\n\n\t\treturn `${this.formatDate(start)} - ${this.formatDate(end)}`;\n\t}\n\n\tget textClasses(): string[] {\n\t\tconst hasValue =\n\t\t\tthis.resolvedVariant === \"single\"\n\t\t\t\t? this.hasSingleValue\n\t\t\t\t: this.hasRangeValue;\n\t\treturn [\n\t\t\t\"min-w-0 flex-1 truncate text-left text-sm leading-5\",\n\t\t\thasValue ? \"text-foreground\" : \"text-muted-foreground\",\n\t\t];\n\t}\n\n\tget rootClasses(): string[] {\n\t\treturn [\n\t\t\t\"grid gap-2\",\n\t\t\tthis.iconOnly\n\t\t\t\t? \"inline-grid w-auto\"\n\t\t\t\t: this.resolvedVariant === \"range\"\n\t\t\t\t\t? \"w-[280px]\"\n\t\t\t\t\t: \"w-[197px]\",\n\t\t\tthis.className,\n\t\t];\n\t}\n\n\tget triggerClasses(): string[] {\n\t\tconst focusStyle = this._open || this.triggerFocused;\n\n\t\treturn [\n\t\t\t\"border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive relative flex appearance-none box-border items-center overflow-hidden rounded-lg border border-solid bg-background text-sm shadow-sm outline-none transition-colors\",\n\t\t\t\"min-h-[36px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\tthis.iconOnly\n\t\t\t\t? \"size-9 justify-center p-0\"\n\t\t\t\t: \"w-full gap-2 px-3 py-[7.5px] text-left\",\n\t\t\tfocusStyle ? \"border-ring ring-2 ring-ring/50\" : \"\",\n\t\t\tthis.invalid ? \"border-destructive ring-destructive/20\" : \"\",\n\t\t\tthis.triggerClassName,\n\t\t];\n\t}\n\n\ttoggleOpen(): void {\n\t\tif (this.disabled || this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setOpen(!this._open);\n\t}\n\n\tonTriggerFocus(): void {\n\t\tthis.triggerFocused = true;\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tonTriggerBlur(): void {\n\t\tthis.triggerFocused = false;\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tonCalendarValueChange(value: Date | null): void {\n\t\tthis._value = this.normalizeDate(value);\n\t\tthis.valueChange.emit(this._value ? this.cloneDate(this._value) : null);\n\n\t\tif (this.closeOnSelect && this._value) {\n\t\t\tthis.setOpen(false);\n\t\t} else {\n\t\t\tthis.cdr.markForCheck();\n\t\t}\n\t}\n\n\tonCalendarRangeValueChange(value: PdmCalendarRange | null): void {\n\t\tthis._rangeValue = value\n\t\t\t? {\n\t\t\t\t\tstart: this.normalizeDate(value.start),\n\t\t\t\t\tend: this.normalizeDate(value.end),\n\t\t\t\t}\n\t\t\t: null;\n\n\t\tthis.rangeValueChange.emit(\n\t\t\tthis._rangeValue\n\t\t\t\t? {\n\t\t\t\t\t\tstart: this._rangeValue.start\n\t\t\t\t\t\t\t? this.cloneDate(this._rangeValue.start)\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\tend: this._rangeValue.end\n\t\t\t\t\t\t\t? this.cloneDate(this._rangeValue.end)\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t);\n\n\t\tif (\n\t\t\tthis.closeOnSelect &&\n\t\t\tthis._rangeValue?.start &&\n\t\t\tthis._rangeValue?.end\n\t\t) {\n\t\t\tthis.setOpen(false);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tonCalendarMonthChange(month: Date): void {\n\t\tthis.monthChange.emit(this.cloneDate(month));\n\t}\n\n\t@HostListener(\"document:keydown.escape\")\n\tonEscape(): void {\n\t\tif (this._open) {\n\t\t\tthis.setOpen(false);\n\t\t}\n\t}\n\n\tprivate setOpen(nextOpen: boolean): void {\n\t\tif (this._open === nextOpen) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (nextOpen) {\n\t\t\tthis.openPanel();\n\t\t} else {\n\t\t\tthis.closePanel();\n\t\t}\n\t}\n\n\tprivate openPanel(): void {\n\t\tif (this.overlayRef) return;\n\n\t\tconst triggerEl = this.triggerRef?.nativeElement;\n\t\tif (!triggerEl) return;\n\n\t\tthis._open = true;\n\t\tthis.openChange.emit(true);\n\t\tthis.cdr.markForCheck();\n\n\t\tconst positionStrategy = createFlexiblePositionStrategy(\n\t\t\tthis.overlay,\n\t\t\ttriggerEl,\n\t\t\t8,\n\t\t);\n\n\t\t// CRITICAL: Use mergeOverlayPanelClass to ensure z-index is never lost.\n\t\t// Consumer classes are appended AFTER base z-index.\n\t\tconst zIndexEnforced = mergeOverlayPanelClass(\n\t\t\tOVERLAY_BASE_Z_INDEX,\n\t\t\tthis.panelClassName,\n\t\t);\n\n\t\t// Resolve panelClass: overlayOptions.panelClass wins; otherwise use z-index enforced.\n\t\tconst resolvedPanelClass = this.overlayOptions?.panelClass\n\t\t\t? mergeOverlayPanelClass(\n\t\t\t\t\tOVERLAY_BASE_Z_INDEX,\n\t\t\t\t\tthis.overlayOptions.panelClass,\n\t\t\t\t)\n\t\t\t: zIndexEnforced;\n\n\t\tthis.overlayRef = this.overlay.create({\n\t\t\tpositionStrategy,\n\t\t\tscrollStrategy: this.overlay.scrollStrategies.reposition(),\n\t\t\t// Consumer overrides are spread first.\n\t\t\t...this.overlayOptions,\n\t\t\t// panelClass always enforced last to preserve z-index.\n\t\t\tpanelClass: resolvedPanelClass,\n\t\t});\n\n\t\tconst portal = new TemplatePortal(\n\t\t\tthis.panelTemplateRef,\n\t\t\tthis.viewContainerRef,\n\t\t);\n\t\tthis.overlayRef.attach(portal);\n\n\t\tthis.backdropSub = this.overlayRef\n\t\t\t.outsidePointerEvents()\n\t\t\t.subscribe((event) => {\n\t\t\t\tconst target = event.target as Node;\n\t\t\t\tif (!triggerEl.contains(target)) {\n\t\t\t\t\tthis.closePanel();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tprivate closePanel(): void {\n\t\tif (!this.overlayRef && !this._open) return;\n\n\t\tthis._open = false;\n\t\tthis.openChange.emit(false);\n\t\tthis.destroyOverlay();\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tprivate destroyOverlay(): void {\n\t\tif (this.backdropSub) {\n\t\t\tthis.backdropSub.unsubscribe();\n\t\t\tthis.backdropSub = null;\n\t\t}\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tthis.overlayRef = null;\n\t\t}\n\t}\n\n\tprivate formatDate(date: Date): string {\n\t\ttry {\n\t\t\treturn formatDateFns(date, this.format || \"MMM d, yyyy\");\n\t\t} catch {\n\t\t\treturn formatDateFns(date, \"MMM d, yyyy\");\n\t\t}\n\t}\n\n\tprivate normalizeDate(value: Date | null | undefined): Date | null {\n\t\tif (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn new Date(value.getFullYear(), value.getMonth(), value.getDate());\n\t}\n\n\tprivate cloneDate(date: Date): Date {\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\t}\n}\n","<div [ngClass]=\"rootClasses\">\n <pdm-label *ngIf=\"label\" [forId]=\"triggerId\" [required]=\"required\" [className]=\"labelClassName\">\n {{ label }}\n </pdm-label>\n\n <button\n #triggerEl\n type=\"button\"\n [id]=\"triggerId\"\n [disabled]=\"disabled\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-label]=\"iconOnly ? displayText : null\"\n [ngClass]=\"triggerClasses\"\n [attr.title]=\"displayText\"\n (click)=\"toggleOpen()\"\n (focus)=\"onTriggerFocus()\"\n (blur)=\"onTriggerBlur()\"\n >\n <span class=\"flex h-5 w-5 shrink-0 items-center justify-center p-0.5 text-muted-foreground\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\n <path d=\"M8 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M16 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <rect x=\"3\" y=\"4.5\" width=\"18\" height=\"16.5\" rx=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></rect>\n <path d=\"M3 9.5h18\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span *ngIf=\"!iconOnly\" [ngClass]=\"textClasses\">{{ displayText }}</span>\n </button>\n</div>\n\n<ng-template #panelTemplate>\n <div [id]=\"panelId\" role=\"dialog\" [attr.aria-labelledby]=\"label ? triggerId : null\">\n <pdm-calendar\n [variant]=\"resolvedVariant\"\n [value]=\"value\"\n [rangeValue]=\"rangeValue\"\n [readonly]=\"readonly\"\n [allowSameDayRange]=\"allowSameDayRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minYear]=\"minYear\"\n [maxYear]=\"maxYear\"\n [disabledDates]=\"disabledDates\"\n [isDateDisabled]=\"isDateDisabled\"\n (valueChange)=\"onCalendarValueChange($event)\"\n (rangeValueChange)=\"onCalendarRangeValueChange($event)\"\n (monthChange)=\"onCalendarMonthChange($event)\"\n ></pdm-calendar>\n </div>\n</ng-template>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { PdmLabelModule } from \"pdm-ui-kit/src/label\";\nimport { PdmCalendarComponent } from \"./calendar.component\";\nimport { PdmDatePickerComponent } from \"./date-picker.component\";\n\nconst COMPONENTS = [PdmCalendarComponent, PdmDatePickerComponent];\n\n@NgModule({\n\timports: [CommonModule, OverlayModule, PdmLabelModule],\n\tdeclarations: COMPONENTS,\n\texports: COMPONENTS,\n})\nexport class PdmCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["formatDateFns","i1","i2","i4.PdmCalendarComponent"],"mappings":";;;;;;;;;;;;AAwCA,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;MAOtB,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;AAMS,QAAA,IAAM,CAAA,MAAA,GAAgB,IAAI,CAAC;AAC3B,QAAA,IAAW,CAAA,WAAA,GAA4B,IAAI,CAAC;AAC5C,QAAA,IAAM,CAAA,MAAA,GAAgB,IAAI,CAAC;AAElB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAExC,QAAA,IAAO,CAAA,OAAA,GAAgC,QAAQ,CAAC;AAChD,QAAA,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AACf,QAAA,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;AAC3B,QAAA,IAAO,CAAA,OAAA,GAAgB,IAAI,CAAC;AAC5B,QAAA,IAAO,CAAA,OAAA,GAAgB,IAAI,CAAC;AAC5B,QAAA,IAAO,CAAA,OAAA,GAAkB,IAAI,CAAC;AAC9B,QAAA,IAAO,CAAA,OAAA,GAAkB,IAAI,CAAC;AAC9B,QAAA,IAAc,CAAA,cAAA,GAAqC,IAAI,CAAC;AACxD,QAAA,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;AACzB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAEhB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAe,CAAC;AAC9C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAA2B,CAAC;AAC/D,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;AACvC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;AACrC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAQ,CAAC;AA+B9C,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;QAC/D,IAAA,CAAA,YAAY,GAAG;AACvB,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1B,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1B,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1B,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1B,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1B,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1B,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1B,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1B,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1B,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1B,YAAA,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AAC3B,YAAA,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;SAClB,CAAC;AAiNX,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAa,KAAY;AACxC,YAAA,OAAO,KAAK,CAAC;AACd,SAAC,CAAC;QAEF,IAAA,CAAA,WAAW,GAAG,CAAC,MAAc,EAAE,IAAqB,KAAY;YAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,SAAC,CAAC;KA0TF;IA5jBA,IACI,KAAK,CAAC,KAAkB,EAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACxC;AACD,IAAA,IAAI,KAAK,GAAA;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;KACnB;IAED,IACI,UAAU,CAAC,KAA8B,EAAA;QAC5C,IAAI,CAAC,WAAW,GAAG,KAAK;AACvB,cAAE;gBACA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAClC,aAAA;cACA,IAAI,CAAC;KACR;AACD,IAAA,IAAI,UAAU,GAAA;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;KACxB;IAED,IACI,KAAK,CAAC,KAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;KACtD;AACD,IAAA,IAAI,KAAK,GAAA;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;KACnB;AAkBD,IAAA,IAAI,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;KACrD;AAED,IAAA,IAAI,aAAa,GAAA;AAChB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAExC,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE;YACtC,OAAO;AACN,gBAAA;AACC,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACtC,oBAAA,UAAU,EAAE,WAAW;AACvB,oBAAA,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC/C,oBAAA,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAC7C,oBAAA,cAAc,EAAE,IAAI;AACpB,oBAAA,cAAc,EAAE,IAAI;oBACpB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC;AAC7C,iBAAA;aACD,CAAC;AACF,SAAA;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC/C,OAAO;AACN,YAAA;AACC,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACtC,gBAAA,UAAU,EAAE,OAAO;AACnB,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,cAAc,EAAE,KAAK;gBACrB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC;AAC5C,aAAA;AACD,YAAA;AACC,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACtC,gBAAA,UAAU,EAAE,OAAO;AACnB,gBAAA,cAAc,EAAE,KAAK;AACrB,gBAAA,cAAc,EAAE,IAAI;gBACpB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC;AAC5C,aAAA;SACD,CAAC;KACF;AAED,IAAA,IAAI,iBAAiB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC;KACxC;AAED,IAAA,IAAI,gBAAgB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,CAAC;KAC3C;AAED,IAAA,IAAI,WAAW,GAAA;;QACd,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC3C,IAAI,OAAO,GACV,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,IACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;QAC9D,IAAI,OAAO,GACV,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,IACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,YAAY,GAAG,OAAO,EAAE;YAC3B,OAAO,GAAG,YAAY,CAAC;AACvB,SAAA;QAED,IAAI,YAAY,GAAG,OAAO,EAAE;YAC3B,OAAO,GAAG,YAAY,CAAC;AACvB,SAAA;QAED,IAAI,OAAO,GAAG,OAAO,EAAE;YACtB,MAAM,OAAO,GAAG,OAAO,CAAC;YACxB,OAAO,GAAG,OAAO,CAAC;YAClB,OAAO,GAAG,OAAO,CAAC;AAClB,SAAA;AAED,QAAA,KAAK,IAAI,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE;AACpD,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACb;AAED,IAAA,IAAI,WAAW,GAAA;QACd,OAAO;YACN,uFAAuF;YACvF,IAAI,CAAC,eAAe,KAAK,OAAO;AAC/B,kBAAE,yEAAyE;AAC3E,kBAAE,uDAAuD;AAC1D,YAAA,IAAI,CAAC,SAAS;SACd,CAAC;KACF;AAED,IAAA,IAAI,SAAS,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;QAEnE,OAAO;YACN,KAAK;AACL,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,SAAS,EAAE,YAAY;SACvB,CAAC;KACF;AAED,IAAA,iBAAiB,CAAC,MAAc,EAAA;QAC/B,OAAO;YACN,2BAA2B;YAC3B,IAAI,CAAC,eAAe,KAAK,OAAO,GAAG,iBAAiB,GAAG,cAAc;SACrE,CAAC;KACF;AAED,IAAA,aAAa,CAAC,KAA2B,EAAA;QACxC,OAAO;YACN,0CAA0C;YAC1C,KAAK,CAAC,UAAU,KAAK,WAAW,GAAG,EAAE,GAAG,MAAM;SAC9C,CAAC;KACF;IAED,gBAAgB,GAAA;QACf,OAAO;YACN,4HAA4H;YAC5H,kDAAkD;SAClD,CAAC;KACF;IAED,qBAAqB,GAAA;QACpB,OAAO,CAAC,kBAAkB,CAAC,CAAC;KAC5B;IAED,mBAAmB,GAAA;QAClB,OAAO,CAAC,6CAA6C,CAAC,CAAC;KACvD;AAED,IAAA,eAAe,CAAC,UAAkB,EAAA;AACjC,QAAA,OAAO,CAAC,iDAAiD,EAAE,UAAU,CAAC,CAAC;KACvE;IAED,qBAAqB,GAAA;QACpB,OAAO;YACN,qEAAqE;YACrE,oHAAoH;SACpH,CAAC;KACF;AAED,IAAA,IAAI,mBAAmB,GAAA;QACtB,OAAO;AACN,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,gBAAgB,EAAE,MAAM;AACxB,YAAA,aAAa,EAAE,MAAM;AACrB,YAAA,UAAU,EAAE,aAAa;AACzB,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,MAAM,EAAE,GAAG;SACX,CAAC;KACF;IAED,uBAAuB,GAAA;QACtB,OAAO,CAAC,kCAAkC,CAAC,CAAC;KAC5C;IAED,iBAAiB,GAAA;QAChB,OAAO,CAAC,0BAA0B,CAAC,CAAC;KACpC;IAED,kBAAkB,GAAA;QACjB,OAAO;YACN,kGAAkG;SAClG,CAAC;KACF;IAED,cAAc,GAAA;QACb,OAAO,CAAC,8BAA8B,CAAC,CAAC;KACxC;AAED,IAAA,cAAc,CAAC,IAAqB,EAAA;QACnC,OAAO;YACN,4DAA4D;YAC5D,IAAI,CAAC,SAAS,GAAG,WAAW,GAAG,EAAE;YACjC,IAAI,CAAC,YAAY,GAAG,cAAc,GAAG,EAAE;YACvC,IAAI,CAAC,aAAa,GAAG,cAAc,GAAG,EAAE;SACxC,CAAC;KACF;AAED,IAAA,gBAAgB,CAAC,IAAqB,EAAA;QACrC,OAAO;YACN,6HAA6H;AAC7H,YAAA,IAAI,CAAC,QAAQ;AACZ,kBAAE,oCAAoC;kBACpC,IAAI,CAAC,SAAS;AACf,sBAAE,uCAAuC;AACzC,sBAAE,gCAAgC;AACpC,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,EAAE;YACjD,IAAI,CAAC,QAAQ,GAAG,+BAA+B,GAAG,EAAE;AACpD,YAAA,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ;AACjD,kBAAE,oBAAoB;AACtB,kBAAE,EAAE;SACL,CAAC;KACF;AAED,IAAA,eAAe,CAAC,KAAsB,EAAA;QACrC,OAAO,CAAC,aAAa,CAAC,CAAC;KACvB;IAUD,iBAAiB,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/D;IAED,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KAC9D;AAED,IAAA,mBAAmB,CAAC,UAAkB,EAAA;AACrC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE;YACnD,OAAO;AACP,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;KAC9D;AAED,IAAA,kBAAkB,CAAC,SAAiB,EAAA;AACnC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/B,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACvB,OAAO;AACP,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KAC1D;AAED,IAAA,aAAa,CAAC,IAAqB,EAAA;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO;AACP,SAAA;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;AACP,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE;AACtC,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO;AACP,SAAA;AAED,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACxB;AAEO,IAAA,oBAAoB,CAAC,IAAU,EAAA;AACtC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QACjC,MAAM,YAAY,GAAG,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,IAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC3E,MAAM,UAAU,GAAG,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,GAAG,IAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAErE,IAAI,CAAC,YAAY,KAAK,YAAY,IAAI,UAAU,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO;AACP,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAClE,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACvE,OAAO;AACP,SAAA;QAED,MAAM,KAAK,GACV,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC;QAE3E,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,OAAO;AACP,SAAA;QAED,IAAI,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC1B,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC5B,YAAA,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACxB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;KACnC;IAEO,eAAe,CACtB,KAAW,EACX,YAAqB,EAAA;QAErB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAC7C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAwB,EAAE,CAAC;QAEtC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1C,MAAM,GAAG,GAAsB,EAAE,CAAC;AAElC,YAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;AACpC,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;gBACtD,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjC,aAAA;AAED,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,SAAA;AAED,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACxB,YAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;AAC7C,gBAAA,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;oBAClB,SAAS;AACT,iBAAA;gBAED,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;gBACzD,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;AAEvE,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,SAAS,CAAC;AAC/B,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,UAAU,CAAC;AACjC,aAAA;AACD,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACb;AAEO,IAAA,SAAS,CAChB,IAAU,EACV,YAAkB,EAClB,YAAqB,EAAA;;QAErB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,cAAc,GACnB,UAAU,CAAC,QAAQ,EAAE,KAAK,YAAY,CAAC,QAAQ,EAAE;YACjD,UAAU,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAE5C,QAAA,MAAM,cAAc,GACnB,IAAI,CAAC,eAAe,KAAK,QAAQ;YACjC,CAAC,CAAC,IAAI,CAAC,MAAM;YACb,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,UAAU,GACf,YAAY;YACZ,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAA;YACzB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,QAAQ,GACb,YAAY;YACZ,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAA;YACvB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,OAAO,GACZ,YAAY;YACZ,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAA;YACzB,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAA;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;AACzD,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzD,OAAO;AACN,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE;YAC3B,KAAK,EAAE,CAAC,cAAc;YACtB,QAAQ;AACR,YAAA,QAAQ,EAAE,cAAc,IAAI,UAAU,IAAI,QAAQ;YAClD,OAAO;AACP,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,aAAa,EAAE,KAAK;SACpB,CAAC;KACF;IAEO,cAAc,GAAA;;QACrB,IAAI,SAAS,GAAgB,IAAI,CAAC;QAElC,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,SAAA;aAAM,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;YAC5D,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,KAAI,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAE;YACvE,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA;YACN,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YACjC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACrC,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KACjB;AAEO,IAAA,cAAc,CAAC,KAAW,EAAA;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;YAClC,OAAO;AACP,SAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;KACnD;AAEO,IAAA,sBAAsB,CAAC,IAAU,EAAA;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;AAC9D,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AACjD,SAAA;KACD;AAEO,IAAA,SAAS,CAAC,IAAU,EAAA;;AAC3B,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC7D,YAAA,OAAO,IAAI,CAAC;AACZ,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC7D,YAAA,OAAO,IAAI,CAAC;AACZ,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CACzB,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAC5D,CAAC;QACF,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AACvC,YAAA,OAAO,IAAI,CAAC;AACZ,SAAA;AAED,QAAA,OAAO,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA,CAAC;KACrD;IAEO,wBAAwB,CAAC,KAAW,EAAE,GAAS,EAAA;QACtD,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;AAC1C,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AAC3B,gBAAA,OAAO,IAAI,CAAC;AACZ,aAAA;YACD,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjC,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACb;AAEO,IAAA,aAAa,CAAC,KAA8B,EAAA;AACnD,QAAA,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;AAC9D,YAAA,OAAO,IAAI,CAAC;AACZ,SAAA;AAED,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;KACxE;AAEO,IAAA,SAAS,CAAC,IAAU,EAAA;AAC3B,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KACrE;AAEO,IAAA,WAAW,CAAC,IAA6B,EAAA;AAChD,QAAA,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KACvE;AAEO,IAAA,YAAY,CAAC,IAAU,EAAA;AAC9B,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;KACxD;AAEO,IAAA,UAAU,CAAC,IAAU,EAAA;AAC5B,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5D;AAEO,IAAA,WAAW,CAAC,IAAU,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KAC1C;AAEO,IAAA,SAAS,CAAC,IAAU,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KAC7C;IAEO,SAAS,CAAC,IAAU,EAAE,MAAc,EAAA;AAC3C,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;KACjE;IAEO,OAAO,CAAC,IAAU,EAAE,IAAY,EAAA;QACvC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;KAC5E;IAEO,WAAW,CAAC,CAAO,EAAE,CAAO,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KAC7C;AAEO,IAAA,SAAS,CAAC,IAAU,EAAA;QAC3B,QACC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,EACrE;KACF;IAEO,SAAS,CAAC,CAAO,EAAE,CAAO,EAAA;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;KACpC;IAEO,WAAW,CAAC,CAAO,EAAE,CAAO,EAAA;AACnC,QAAA,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;KAC5E;AAEO,IAAA,OAAO,CAAC,IAAU,EAAA;AACzB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC7B,QAAA,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACvD,QAAA,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD,QAAA,OAAO,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAI,CAAA,EAAA,CAAC,EAAE,CAAC;KACxB;AAEO,IAAA,gBAAgB,CAAC,IAAU,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;KACxD;AAEO,IAAA,eAAe,CAAC,IAAU,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;KACxE;;iHAnlBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,iiBC/CjC,8yJAkHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDnEa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACC,cAAc,EAAA,eAAA,EAEP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8yJAAA,EAAA,CAAA;8BAStC,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBAGH,KAAK,EAAA,CAAA;sBADR,KAAK;gBASF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAcF,KAAK,EAAA,CAAA;sBADR,KAAK;;;AEhEP,IAAI,gBAAgB,GAAG,CAAC,CAAC;MAOZ,sBAAsB,CAAA;AAclC,IAAA,WAAA,CACkB,GAAsB,EACtB,OAAgB,EAChB,gBAAkC,EAAA;AAFlC,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;AAChB,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAhB5C,QAAA,IAAM,CAAA,MAAA,GAAgB,IAAI,CAAC;AAC3B,QAAA,IAAW,CAAA,WAAA,GAA4B,IAAI,CAAC;AAC5C,QAAA,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AAEL,QAAA,IAAA,CAAA,UAAU,GAAG,mBAAmB,EAAE,gBAAgB,EAAE,CAAC;AAC9D,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAEvB,QAAA,IAAU,CAAA,UAAA,GAAsB,IAAI,CAAC;AACrC,QAAA,IAAW,CAAA,WAAA,GAAwB,IAAI,CAAC;AAWvC,QAAA,IAAE,CAAA,EAAA,GAAG,EAAE,CAAC;AACR,QAAA,IAAO,CAAA,OAAA,GAAgC,QAAQ,CAAC;AAChD,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;AACX,QAAA,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AACpB,QAAA,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AACf,QAAA,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AACtB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAC1B;;;;AAIG;AACM,QAAA,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AAOpB,QAAA,IAAW,CAAA,WAAA,GAAG,aAAa,CAAC;AAC5B,QAAA,IAAgB,CAAA,gBAAA,GAAG,mBAAmB,CAAC;AACvC,QAAA,IAAM,CAAA,MAAA,GAAG,aAAa,CAAC;AACvB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;AACzB,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AACrB,QAAA,IAAO,CAAA,OAAA,GAAgB,IAAI,CAAC;AAC5B,QAAA,IAAO,CAAA,OAAA,GAAgB,IAAI,CAAC;AAC5B,QAAA,IAAO,CAAA,OAAA,GAAkB,IAAI,CAAC;AAC9B,QAAA,IAAO,CAAA,OAAA,GAAkB,IAAI,CAAC;AAC9B,QAAA,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;AAC3B,QAAA,IAAc,CAAA,cAAA,GAAqC,IAAI,CAAC;AAEvD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAe,CAAC;AAC9C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAA2B,CAAC;AAC/D,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAW,CAAC;AACzC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;KAxC7C;IA0CJ,IACI,IAAI,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;YAAE,OAAO;AACnC,QAAA,IAAI,KAAK,EAAE;YACV,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,SAAA;AAAM,aAAA;YACN,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,SAAA;KACD;AACD,IAAA,IAAI,IAAI,GAAA;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;KAClB;IAED,IACI,KAAK,CAAC,KAAkB,EAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACxB;AACD,IAAA,IAAI,KAAK,GAAA;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;KACnB;IAED,IACI,UAAU,CAAC,KAA8B,EAAA;QAC5C,IAAI,CAAC,WAAW,GAAG,KAAK;AACvB,cAAE;gBACA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAClC,aAAA;cACA,IAAI,CAAC;AACR,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACxB;AACD,IAAA,IAAI,UAAU,GAAA;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;KACxB;IAED,WAAW,GAAA;QACV,IAAI,CAAC,cAAc,EAAE,CAAC;KACtB;AAED,IAAA,IAAI,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;KACrD;AAED,IAAA,IAAI,SAAS,GAAA;QACZ,OAAO,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAA,QAAA,CAAU,CAAC;KAC/C;AAED,IAAA,IAAI,OAAO,GAAA;QACV,OAAO,CAAA,EAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAA,MAAA,CAAQ,CAAC;KAC7C;AAED,IAAA,IAAI,cAAc,GAAA;QACjB,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;KAC1D;AAED,IAAA,IAAI,aAAa,GAAA;;AAChB,QAAA,OAAO,IAAI,CAAC,eAAe,KAAK,OAAO,IAAI,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,CAAC;KACrE;AAED,IAAA,IAAI,WAAW,GAAA;;AACd,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE;YACtC,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;AACrE,SAAA;QAED,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;QAC9C,MAAM,GAAG,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;QAE1C,IAAI,CAAC,KAAK,EAAE;YACX,OAAO,IAAI,CAAC,gBAAgB,CAAC;AAC7B,SAAA;QAED,IAAI,CAAC,GAAG,EAAE;YACT,OAAO,CAAA,EAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACrC,SAAA;AAED,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAM,GAAA,EAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;KAC7D;AAED,IAAA,IAAI,WAAW,GAAA;AACd,QAAA,MAAM,QAAQ,GACb,IAAI,CAAC,eAAe,KAAK,QAAQ;cAC9B,IAAI,CAAC,cAAc;AACrB,cAAE,IAAI,CAAC,aAAa,CAAC;QACvB,OAAO;YACN,qDAAqD;AACrD,YAAA,QAAQ,GAAG,iBAAiB,GAAG,uBAAuB;SACtD,CAAC;KACF;AAED,IAAA,IAAI,WAAW,GAAA;QACd,OAAO;YACN,YAAY;AACZ,YAAA,IAAI,CAAC,QAAQ;AACZ,kBAAE,oBAAoB;AACtB,kBAAE,IAAI,CAAC,eAAe,KAAK,OAAO;AACjC,sBAAE,WAAW;AACb,sBAAE,WAAW;AACf,YAAA,IAAI,CAAC,SAAS;SACd,CAAC;KACF;AAED,IAAA,IAAI,cAAc,GAAA;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC;QAErD,OAAO;YACN,8UAA8U;YAC9U,2FAA2F;AAC3F,YAAA,IAAI,CAAC,QAAQ;AACZ,kBAAE,2BAA2B;AAC7B,kBAAE,wCAAwC;AAC3C,YAAA,UAAU,GAAG,iCAAiC,GAAG,EAAE;YACnD,IAAI,CAAC,OAAO,GAAG,wCAAwC,GAAG,EAAE;AAC5D,YAAA,IAAI,CAAC,gBAAgB;SACrB,CAAC;KACF;IAED,UAAU,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,OAAO;AACP,SAAA;QAED,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;IAED,cAAc,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACxB;IAED,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACxB;AAED,IAAA,qBAAqB,CAAC,KAAkB,EAAA;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AAExE,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE;AACtC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACpB,SAAA;AAAM,aAAA;AACN,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACxB,SAAA;KACD;AAED,IAAA,0BAA0B,CAAC,KAA8B,EAAA;;QACxD,IAAI,CAAC,WAAW,GAAG,KAAK;AACvB,cAAE;gBACA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAClC,aAAA;cACA,IAAI,CAAC;AAER,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACzB,IAAI,CAAC,WAAW;AACf,cAAE;AACA,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;sBAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACxC,sBAAE,IAAI;AACP,gBAAA,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG;sBACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACtC,sBAAE,IAAI;AACP,aAAA;cACA,IAAI,CACP,CAAC;QAEF,IACC,IAAI,CAAC,aAAa;AAClB,aAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAA;AACvB,aAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAA,EACpB;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO;AACP,SAAA;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACxB;AAED,IAAA,qBAAqB,CAAC,KAAW,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KAC7C;IAGD,QAAQ,GAAA;QACP,IAAI,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACpB,SAAA;KACD;AAEO,IAAA,OAAO,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC5B,OAAO;AACP,SAAA;AAED,QAAA,IAAI,QAAQ,EAAE;YACb,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,SAAA;AAAM,aAAA;YACN,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,SAAA;KACD;IAEO,SAAS,GAAA;;QAChB,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAE5B,MAAM,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC;AACjD,QAAA,IAAI,CAAC,SAAS;YAAE,OAAO;AAEvB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAExB,QAAA,MAAM,gBAAgB,GAAG,8BAA8B,CACtD,IAAI,CAAC,OAAO,EACZ,SAAS,EACT,CAAC,CACD,CAAC;;;QAIF,MAAM,cAAc,GAAG,sBAAsB,CAC5C,oBAAoB,EACpB,IAAI,CAAC,cAAc,CACnB,CAAC;;QAGF,MAAM,kBAAkB,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,0CAAE,UAAU;cACvD,sBAAsB,CACtB,oBAAoB,EACpB,IAAI,CAAC,cAAc,CAAC,UAAU,CAC9B;cACA,cAAc,CAAC;QAElB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACpC,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,gBAAgB,EAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAA,EAEvD,IAAI,CAAC,cAAc,CAAA,EAAA;;YAEtB,UAAU,EAAE,kBAAkB,EAAA,CAAA,CAC7B,CAAC;AAEH,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAChC,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,gBAAgB,CACrB,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAE/B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;AAChC,aAAA,oBAAoB,EAAE;AACtB,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAc,CAAC;AACpC,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAChC,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,aAAA;AACF,SAAC,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACxB;IAEO,UAAU,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;AAE5C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACxB;IAEO,cAAc,GAAA;QACrB,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,SAAA;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,SAAA;KACD;AAEO,IAAA,UAAU,CAAC,IAAU,EAAA;QAC5B,IAAI;YACH,OAAOA,MAAa,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC;AACzD,SAAA;QAAC,OAAM,EAAA,EAAA;AACP,YAAA,OAAOA,MAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AAC1C,SAAA;KACD;AAEO,IAAA,aAAa,CAAC,KAA8B,EAAA;AACnD,QAAA,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;AAC9D,YAAA,OAAO,IAAI,CAAC;AACZ,SAAA;AAED,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;KACxE;AAEO,IAAA,SAAS,CAAC,IAAU,EAAA;AAC3B,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KACrE;;mHAtWW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,2nCCnCnC,+mEAsDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDnBa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACC,iBAAiB,EAAA,eAAA,EAEV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+mEAAA,EAAA,CAAA;+JAaf,UAAU,EAAA,CAAA;sBAAzC,SAAS;uBAAC,WAAW,CAAA;gBACc,gBAAgB,EAAA,CAAA;sBAAnD,SAAS;uBAAC,eAAe,CAAA;gBAQjB,EAAE,EAAA,CAAA;sBAAV,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAMG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAMG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAGH,IAAI,EAAA,CAAA;sBADP,KAAK;gBAcF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAUF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAkKN,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,yBAAyB,CAAA;;;AE/QxC,MAAM,UAAU,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;MAOrD,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAPV,YAAA,EAAA,CAAA,oBAAoB,EAAE,sBAAsB,CAGrD,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,cAAc,CAHlC,EAAA,OAAA,EAAA,CAAA,oBAAoB,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAOnD,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAJnB,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;2FAIzC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;AACtD,oBAAA,YAAY,EAAE,UAAU;AACxB,oBAAA,OAAO,EAAE,UAAU;iBACnB,CAAA;;;ACbD;;AAEG;;;;"}
|
|
@@ -3,6 +3,8 @@ import { EventEmitter, Component, ChangeDetectionStrategy, Input, Output, HostLi
|
|
|
3
3
|
import { Z_INDEX, responsive } from 'pdm-ui-kit/src/utils';
|
|
4
4
|
import * as i1 from '@angular/common';
|
|
5
5
|
import { CommonModule } from '@angular/common';
|
|
6
|
+
import * as i2 from '@angular/cdk/a11y';
|
|
7
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
10
|
* Modal/Dialog component con soporte responsive
|
|
@@ -38,7 +40,7 @@ class PdmDialogComponent {
|
|
|
38
40
|
* - desktop/mobile/mobile-fullscreen: legacy, deprecado
|
|
39
41
|
*/
|
|
40
42
|
this.size = "responsive";
|
|
41
|
-
this.title = "
|
|
43
|
+
this.title = "";
|
|
42
44
|
this.description = "";
|
|
43
45
|
this.closeOnBackdrop = true;
|
|
44
46
|
this.closeOnEsc = true;
|
|
@@ -215,10 +217,10 @@ class PdmDialogComponent {
|
|
|
215
217
|
}
|
|
216
218
|
}
|
|
217
219
|
PdmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
218
|
-
PdmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmDialogComponent, selector: "pdm-dialog", inputs: { open: "open", variant: "variant", size: "size", title: "title", description: "description", closeOnBackdrop: "closeOnBackdrop", closeOnEsc: "closeOnEsc", showCloseButton: "showCloseButton", showHeader: "showHeader", showFooter: "showFooter", primaryActionText: "primaryActionText", secondaryActionText: "secondaryActionText", alignFooter: "alignFooter", headerClassName: "headerClassName", bodyClassName: "bodyClassName", footerClassName: "footerClassName", className: "className" }, outputs: { openChange: "openChange", primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, host: { listeners: { "document:keydown.escape": "onEsc()" } }, ngImport: i0, template: "<div *ngIf=\"open\" [ngClass]=\"containerClassName\">\n <!-- Backdrop -->\n <div class=\"absolute inset-0 bg-foreground/30 backdrop-blur-sm\" (click)=\"onBackdropClick()\"></div>\n \n <!-- Dialog Panel -->\n <section role=\"dialog\" aria-modal=\"true\" [ngClass]=\"panelClassName\">\n <!-- Header -->\n <div *ngIf=\"showHeader\" [ngClass]=\"headerWrapperClassName\">\n <div class=\"min-w-0 flex-1\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 mt-2 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n class=\"inline-flex h-6 w-6 flex-shrink-0 appearance-none box-border items-center justify-center rounded-sm border-0 bg-transparent p-0 text-foreground opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\"\n (click)=\"close()\"\n aria-label=\"Close dialog\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Body -->\n <div [ngClass]=\"bodyWrapperClassName\">\n <ng-content></ng-content>\n </div>\n\n <!-- Footer -->\n <div *ngIf=\"showFooter\" [ngClass]=\"footerWrapperClassName\">\n <ng-container *ngIf=\"variant === 'custom-close'; else defaultActions\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n </ng-container>\n\n <ng-template #defaultActions>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm sm:w-auto\"\n (click)=\"onPrimaryAction()\"\n >\n {{ primaryActionText }}\n </button>\n </ng-template>\n </div>\n </section>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
220
|
+
PdmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmDialogComponent, selector: "pdm-dialog", inputs: { open: "open", variant: "variant", size: "size", title: "title", description: "description", closeOnBackdrop: "closeOnBackdrop", closeOnEsc: "closeOnEsc", showCloseButton: "showCloseButton", showHeader: "showHeader", showFooter: "showFooter", primaryActionText: "primaryActionText", secondaryActionText: "secondaryActionText", alignFooter: "alignFooter", headerClassName: "headerClassName", bodyClassName: "bodyClassName", footerClassName: "footerClassName", className: "className" }, outputs: { openChange: "openChange", primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, host: { listeners: { "document:keydown.escape": "onEsc()" } }, ngImport: i0, template: "<div *ngIf=\"open\" [ngClass]=\"containerClassName\">\n <!-- Backdrop -->\n <div class=\"absolute inset-0 bg-foreground/30 backdrop-blur-sm\" (click)=\"onBackdropClick()\"></div>\n \n <!-- Dialog Panel -->\n <section role=\"dialog\" aria-modal=\"true\" cdkTrapFocus [ngClass]=\"panelClassName\">\n <!-- Header -->\n <div *ngIf=\"showHeader\" [ngClass]=\"headerWrapperClassName\">\n <div class=\"min-w-0 flex-1\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 mt-2 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n class=\"inline-flex h-6 w-6 flex-shrink-0 appearance-none box-border items-center justify-center rounded-sm border-0 bg-transparent p-0 text-foreground opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\"\n (click)=\"close()\"\n aria-label=\"Close dialog\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Body -->\n <div [ngClass]=\"bodyWrapperClassName\">\n <ng-content></ng-content>\n </div>\n\n <!-- Footer -->\n <div *ngIf=\"showFooter\" [ngClass]=\"footerWrapperClassName\">\n <ng-container *ngIf=\"variant === 'custom-close'; else defaultActions\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n </ng-container>\n\n <ng-template #defaultActions>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm sm:w-auto\"\n (click)=\"onPrimaryAction()\"\n >\n {{ primaryActionText }}\n </button>\n </ng-template>\n </div>\n </section>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
219
221
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDialogComponent, decorators: [{
|
|
220
222
|
type: Component,
|
|
221
|
-
args: [{ selector: "pdm-dialog", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"open\" [ngClass]=\"containerClassName\">\n <!-- Backdrop -->\n <div class=\"absolute inset-0 bg-foreground/30 backdrop-blur-sm\" (click)=\"onBackdropClick()\"></div>\n \n <!-- Dialog Panel -->\n <section role=\"dialog\" aria-modal=\"true\" [ngClass]=\"panelClassName\">\n <!-- Header -->\n <div *ngIf=\"showHeader\" [ngClass]=\"headerWrapperClassName\">\n <div class=\"min-w-0 flex-1\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 mt-2 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n class=\"inline-flex h-6 w-6 flex-shrink-0 appearance-none box-border items-center justify-center rounded-sm border-0 bg-transparent p-0 text-foreground opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\"\n (click)=\"close()\"\n aria-label=\"Close dialog\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Body -->\n <div [ngClass]=\"bodyWrapperClassName\">\n <ng-content></ng-content>\n </div>\n\n <!-- Footer -->\n <div *ngIf=\"showFooter\" [ngClass]=\"footerWrapperClassName\">\n <ng-container *ngIf=\"variant === 'custom-close'; else defaultActions\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n </ng-container>\n\n <ng-template #defaultActions>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm sm:w-auto\"\n (click)=\"onPrimaryAction()\"\n >\n {{ primaryActionText }}\n </button>\n </ng-template>\n </div>\n </section>\n</div>\n", styles: [":host{display:block}\n"] }]
|
|
223
|
+
args: [{ selector: "pdm-dialog", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"open\" [ngClass]=\"containerClassName\">\n <!-- Backdrop -->\n <div class=\"absolute inset-0 bg-foreground/30 backdrop-blur-sm\" (click)=\"onBackdropClick()\"></div>\n \n <!-- Dialog Panel -->\n <section role=\"dialog\" aria-modal=\"true\" cdkTrapFocus [ngClass]=\"panelClassName\">\n <!-- Header -->\n <div *ngIf=\"showHeader\" [ngClass]=\"headerWrapperClassName\">\n <div class=\"min-w-0 flex-1\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 mt-2 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n class=\"inline-flex h-6 w-6 flex-shrink-0 appearance-none box-border items-center justify-center rounded-sm border-0 bg-transparent p-0 text-foreground opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\"\n (click)=\"close()\"\n aria-label=\"Close dialog\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Body -->\n <div [ngClass]=\"bodyWrapperClassName\">\n <ng-content></ng-content>\n </div>\n\n <!-- Footer -->\n <div *ngIf=\"showFooter\" [ngClass]=\"footerWrapperClassName\">\n <ng-container *ngIf=\"variant === 'custom-close'; else defaultActions\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n </ng-container>\n\n <ng-template #defaultActions>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm sm:w-auto\"\n (click)=\"onPrimaryAction()\"\n >\n {{ primaryActionText }}\n </button>\n </ng-template>\n </div>\n </section>\n</div>\n", styles: [":host{display:block}\n"] }]
|
|
222
224
|
}], propDecorators: { open: [{
|
|
223
225
|
type: Input
|
|
224
226
|
}], variant: [{
|
|
@@ -270,12 +272,12 @@ const COMPONENTS = [
|
|
|
270
272
|
class PdmDialogModule {
|
|
271
273
|
}
|
|
272
274
|
PdmDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
273
|
-
PdmDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmDialogModule, declarations: [PdmDialogComponent], imports: [CommonModule], exports: [PdmDialogComponent] });
|
|
274
|
-
PdmDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDialogModule, imports: [CommonModule] });
|
|
275
|
+
PdmDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmDialogModule, declarations: [PdmDialogComponent], imports: [CommonModule, A11yModule], exports: [PdmDialogComponent] });
|
|
276
|
+
PdmDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDialogModule, imports: [CommonModule, A11yModule] });
|
|
275
277
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDialogModule, decorators: [{
|
|
276
278
|
type: NgModule,
|
|
277
279
|
args: [{
|
|
278
|
-
imports: [CommonModule],
|
|
280
|
+
imports: [CommonModule, A11yModule],
|
|
279
281
|
declarations: COMPONENTS,
|
|
280
282
|
exports: COMPONENTS
|
|
281
283
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdm-ui-kit-src-dialog.mjs","sources":["../../../src/dialog/dialog.component.ts","../../../src/dialog/dialog.component.html","../../../src/dialog/dialog.module.ts","../../../src/dialog/pdm-ui-kit-src-dialog.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tEventEmitter,\n\tHostListener,\n\tInput,\n\tOutput,\n} from \"@angular/core\";\nimport { responsive } from \"pdm-ui-kit/src/utils\";\nimport { Z_INDEX } from \"pdm-ui-kit/src/utils\";\n\nexport type PdmDialogVariant = \"default\" | \"custom-close\";\n\n/**\n * @deprecated Use 'responsive' mode instead. Will be removed in v0.3.0\n */\nexport type PdmDialogSize =\n\t| \"desktop\"\n\t| \"mobile\"\n\t| \"mobile-fullscreen\"\n\t| \"sm\"\n\t| \"md\"\n\t| \"lg\"\n\t| \"xl\"\n\t| \"responsive\";\n\nexport type PdmDialogFooterAlign = \"right\" | \"full-width\" | \"left\";\n\n/**\n * Modal/Dialog component con soporte responsive\n *\n * MEJORADO en v0.2.0:\n * - Modo 'responsive' (default): fullscreen en mobile, modal en desktop\n * - Tamaños predefinidos: sm, md, lg, xl\n * - Mejor manejo de scroll en mobile\n *\n * @example\n * // Responsive (recomendado)\n * <pdm-dialog [open]=\"isOpen\" size=\"responsive\">\n * <p>Content</p>\n * </pdm-dialog>\n *\n * @example\n * // Tamaño fijo\n * <pdm-dialog [open]=\"isOpen\" size=\"lg\">\n * <p>Content</p>\n * </pdm-dialog>\n */\n@Component({\n\tselector: \"pdm-dialog\",\n\ttemplateUrl: \"./dialog.component.html\",\n\tstyles: [\n\t\t`\n :host {\n display: block;\n }\n `,\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PdmDialogComponent {\n\t@Input() open = false;\n\t@Input() variant: PdmDialogVariant = \"default\";\n\n\t/**\n\t * Tamaño del dialog\n\t * - responsive: fullscreen mobile, modal desktop (recomendado)\n\t * - sm: 400px max\n\t * - md: 500px max\n\t * - lg: 640px max (default)\n\t * - xl: 800px max\n\t * - desktop/mobile/mobile-fullscreen: legacy, deprecado\n\t */\n\t@Input() size: PdmDialogSize = \"responsive\";\n\n\t@Input() title = \"Edit profile\";\n\t@Input() description = \"\";\n\t@Input() closeOnBackdrop = true;\n\t@Input() closeOnEsc = true;\n\t@Input() showCloseButton = true;\n\t@Input() showHeader = true;\n\t@Input() showFooter = true;\n\t@Input() primaryActionText = \"Save changes\";\n\t@Input() secondaryActionText = \"Cancel\";\n\t@Input() alignFooter: PdmDialogFooterAlign = \"right\";\n\t@Input() headerClassName = \"\";\n\t@Input() bodyClassName = \"\";\n\t@Input() footerClassName = \"\";\n\t@Input() className = \"\";\n\n\t@Output() openChange = new EventEmitter<boolean>();\n\t@Output() primaryAction = new EventEmitter<void>();\n\t@Output() secondaryAction = new EventEmitter<void>();\n\n\t@HostListener(\"document:keydown.escape\")\n\tonEsc(): void {\n\t\tif (this.open && this.closeOnEsc) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tclose(): void {\n\t\tthis.openChange.emit(false);\n\t}\n\n\tonPrimaryAction(): void {\n\t\tthis.primaryAction.emit();\n\t}\n\n\tonSecondaryAction(): void {\n\t\tthis.secondaryAction.emit();\n\t}\n\n\tonBackdropClick(): void {\n\t\tif (this.closeOnBackdrop) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tget panelClassName(): string {\n\t\t// Legacy sizes (backward compatibility)\n\t\tif (this.size === \"desktop\") {\n\t\t\treturn this.buildPanelClasses([\n\t\t\t\t\"max-w-[640px]\",\n\t\t\t\t\"max-h-[calc(100vh-2rem)]\",\n\t\t\t\t\"rounded-[10px]\",\n\t\t\t]);\n\t\t}\n\n\t\tif (this.size === \"mobile\") {\n\t\t\treturn this.buildPanelClasses([\n\t\t\t\t\"max-w-[320px]\",\n\t\t\t\t\"min-h-[240px]\",\n\t\t\t\t\"rounded-[10px]\",\n\t\t\t]);\n\t\t}\n\n\t\tif (this.size === \"mobile-fullscreen\") {\n\t\t\treturn this.buildPanelClasses([\n\t\t\t\t\"max-w-[320px]\",\n\t\t\t\t\"h-[min(100dvh,640px)]\",\n\t\t\t\t\"rounded-none\",\n\t\t\t\t\"sm:rounded-[10px]\",\n\t\t\t]);\n\t\t}\n\n\t\t// New responsive mode (recomendado)\n\t\tif (this.size === \"responsive\") {\n\t\t\treturn this.buildPanelClasses([\n\t\t\t\t// Mobile: fullscreen con bordes redondeados solo arriba\n\t\t\t\t\"w-full\",\n\t\t\t\t\"h-full\",\n\t\t\t\t\"max-h-[100dvh]\",\n\t\t\t\t\"rounded-t-[10px]\",\n\t\t\t\t\"sm:rounded-[10px]\",\n\t\t\t\t// Desktop: modal centrado\n\t\t\t\t\"sm:w-auto\",\n\t\t\t\t\"sm:h-auto\",\n\t\t\t\t\"sm:max-w-[640px]\",\n\t\t\t\t\"sm:max-h-[calc(100vh-4rem)]\",\n\t\t\t]);\n\t\t}\n\n\t\t// New size options\n\t\tconst sizeMap = {\n\t\t\tsm: \"sm:max-w-[400px]\",\n\t\t\tmd: \"sm:max-w-[500px]\",\n\t\t\tlg: \"sm:max-w-[640px]\",\n\t\t\txl: \"sm:max-w-[800px]\",\n\t\t};\n\n\t\tconst maxWidth = sizeMap[this.size as keyof typeof sizeMap] || sizeMap.lg;\n\n\t\treturn this.buildPanelClasses([\n\t\t\t// Mobile: fullscreen\n\t\t\t\"w-full\",\n\t\t\t\"h-full\",\n\t\t\t\"max-h-[100dvh]\",\n\t\t\t\"rounded-t-[10px]\",\n\t\t\t// Desktop: modal\n\t\t\t\"sm:rounded-[10px]\",\n\t\t\t\"sm:w-auto\",\n\t\t\t\"sm:h-auto\",\n\t\t\tmaxWidth,\n\t\t\t\"sm:max-h-[calc(100vh-4rem)]\",\n\t\t]);\n\t}\n\n\tprivate buildPanelClasses(sizeClasses: string[]): string {\n\t\tconst base = [\n\t\t\t\"relative\",\n\t\t\tZ_INDEX.modal, // z-50 - debe estar sobre backdrop (z-40)\n\t\t\t\"flex\",\n\t\t\t\"flex-col\",\n\t\t\t\"border border-solid\",\n\t\t\t\"border-border\",\n\t\t\t\"bg-background\",\n\t\t\t\"text-foreground\",\n\t\t\t\"shadow-lg\",\n\t\t\t\"overflow-hidden\",\n\t\t\t...sizeClasses,\n\t\t\tthis.className,\n\t\t];\n\n\t\treturn base.filter(Boolean).join(\" \");\n\t}\n\n\tget bodyWrapperClassName(): string {\n\t\t// min-h-0 is CRITICAL for flex child to shrink and allow internal scroll\n\t\tconst base = [\n\t\t\t\"flex-1\",\n\t\t\t\"min-h-0\",\n\t\t\t\"overflow-y-auto\",\n\t\t\t\"px-4\",\n\t\t\t\"py-6\",\n\t\t\t\"sm:px-6\",\n\t\t\tthis.bodyClassName,\n\t\t];\n\n\t\treturn base.filter(Boolean).join(\" \");\n\t}\n\n\tget headerWrapperClassName(): string {\n\t\tconst base = [\n\t\t\t\"flex\",\n\t\t\t\"items-start\",\n\t\t\t\"justify-between\",\n\t\t\t\"gap-3\",\n\t\t\t\"p-4\",\n\t\t\t\"sm:p-6\",\n\t\t\t\"border-b\",\n\t\t\t\"border-border\",\n\t\t\tthis.headerClassName,\n\t\t];\n\n\t\treturn base.filter(Boolean).join(\" \");\n\t}\n\n\tget footerWrapperClassName(): string {\n\t\tconst effectiveAlign =\n\t\t\tthis.alignFooter === \"right\" && this.variant === \"custom-close\"\n\t\t\t\t? \"left\"\n\t\t\t\t: this.alignFooter;\n\n\t\tconst base = [\n\t\t\t\"p-4\",\n\t\t\t\"sm:p-6\",\n\t\t\t\"border-t\",\n\t\t\t\"border-border\",\n\t\t\t// Mobile: siempre full-width\n\t\t\t\"flex\",\n\t\t\t\"flex-col\",\n\t\t\t\"gap-2\",\n\t\t\t// Desktop: según alignFooter\n\t\t\teffectiveAlign === \"full-width\"\n\t\t\t\t? \"sm:flex-col\"\n\t\t\t\t: \"sm:flex-row sm:items-center\",\n\t\t\teffectiveAlign === \"left\" ? \"sm:justify-start\" : \"\",\n\t\t\teffectiveAlign === \"right\" ? \"sm:justify-end\" : \"\",\n\t\t\tthis.footerClassName,\n\t\t];\n\n\t\treturn base.filter(Boolean).join(\" \");\n\t}\n\n\tget containerClassName(): string {\n\t\t// Container con backdrop z-40\n\t\t// Mobile: fullscreen desde el bottom\n\t\t// Desktop: centrado\n\t\treturn responsive({\n\t\t\tdefault: `fixed inset-x-0 bottom-0 ${Z_INDEX.modalBackdrop} flex items-end justify-center`,\n\t\t\tsm: `fixed inset-0 ${Z_INDEX.modalBackdrop} flex items-center justify-center p-4`,\n\t\t});\n\t}\n}\n","<div *ngIf=\"open\" [ngClass]=\"containerClassName\">\n <!-- Backdrop -->\n <div class=\"absolute inset-0 bg-foreground/30 backdrop-blur-sm\" (click)=\"onBackdropClick()\"></div>\n \n <!-- Dialog Panel -->\n <section role=\"dialog\" aria-modal=\"true\" [ngClass]=\"panelClassName\">\n <!-- Header -->\n <div *ngIf=\"showHeader\" [ngClass]=\"headerWrapperClassName\">\n <div class=\"min-w-0 flex-1\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 mt-2 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n class=\"inline-flex h-6 w-6 flex-shrink-0 appearance-none box-border items-center justify-center rounded-sm border-0 bg-transparent p-0 text-foreground opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\"\n (click)=\"close()\"\n aria-label=\"Close dialog\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Body -->\n <div [ngClass]=\"bodyWrapperClassName\">\n <ng-content></ng-content>\n </div>\n\n <!-- Footer -->\n <div *ngIf=\"showFooter\" [ngClass]=\"footerWrapperClassName\">\n <ng-container *ngIf=\"variant === 'custom-close'; else defaultActions\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n </ng-container>\n\n <ng-template #defaultActions>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm sm:w-auto\"\n (click)=\"onPrimaryAction()\"\n >\n {{ primaryActionText }}\n </button>\n </ng-template>\n </div>\n </section>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PdmDialogComponent } from './dialog.component';\n\nconst COMPONENTS = [\n PdmDialogComponent,\n];\n\n@NgModule({\n imports: [CommonModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class PdmDialogModule {}\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":"pdm-ui-kit-src-dialog.mjs","sources":["../../../src/dialog/dialog.component.ts","../../../src/dialog/dialog.component.html","../../../src/dialog/dialog.module.ts","../../../src/dialog/pdm-ui-kit-src-dialog.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tEventEmitter,\n\tHostListener,\n\tInput,\n\tOutput,\n} from \"@angular/core\";\nimport { responsive } from \"pdm-ui-kit/src/utils\";\nimport { Z_INDEX } from \"pdm-ui-kit/src/utils\";\n\nexport type PdmDialogVariant = \"default\" | \"custom-close\";\n\n/**\n * @deprecated Use 'responsive' mode instead. Will be removed in v0.3.0\n */\nexport type PdmDialogSize =\n\t| \"desktop\"\n\t| \"mobile\"\n\t| \"mobile-fullscreen\"\n\t| \"sm\"\n\t| \"md\"\n\t| \"lg\"\n\t| \"xl\"\n\t| \"responsive\";\n\nexport type PdmDialogFooterAlign = \"right\" | \"full-width\" | \"left\";\n\n/**\n * Modal/Dialog component con soporte responsive\n *\n * MEJORADO en v0.2.0:\n * - Modo 'responsive' (default): fullscreen en mobile, modal en desktop\n * - Tamaños predefinidos: sm, md, lg, xl\n * - Mejor manejo de scroll en mobile\n *\n * @example\n * // Responsive (recomendado)\n * <pdm-dialog [open]=\"isOpen\" size=\"responsive\">\n * <p>Content</p>\n * </pdm-dialog>\n *\n * @example\n * // Tamaño fijo\n * <pdm-dialog [open]=\"isOpen\" size=\"lg\">\n * <p>Content</p>\n * </pdm-dialog>\n */\n@Component({\n\tselector: \"pdm-dialog\",\n\ttemplateUrl: \"./dialog.component.html\",\n\tstyles: [\n\t\t`\n :host {\n display: block;\n }\n `,\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PdmDialogComponent {\n\t@Input() open = false;\n\t@Input() variant: PdmDialogVariant = \"default\";\n\n\t/**\n\t * Tamaño del dialog\n\t * - responsive: fullscreen mobile, modal desktop (recomendado)\n\t * - sm: 400px max\n\t * - md: 500px max\n\t * - lg: 640px max (default)\n\t * - xl: 800px max\n\t * - desktop/mobile/mobile-fullscreen: legacy, deprecado\n\t */\n\t@Input() size: PdmDialogSize = \"responsive\";\n\n\t@Input() title = \"\";\n\t@Input() description = \"\";\n\t@Input() closeOnBackdrop = true;\n\t@Input() closeOnEsc = true;\n\t@Input() showCloseButton = true;\n\t@Input() showHeader = true;\n\t@Input() showFooter = true;\n\t@Input() primaryActionText = \"Save changes\";\n\t@Input() secondaryActionText = \"Cancel\";\n\t@Input() alignFooter: PdmDialogFooterAlign = \"right\";\n\t@Input() headerClassName = \"\";\n\t@Input() bodyClassName = \"\";\n\t@Input() footerClassName = \"\";\n\t@Input() className = \"\";\n\n\t@Output() openChange = new EventEmitter<boolean>();\n\t@Output() primaryAction = new EventEmitter<void>();\n\t@Output() secondaryAction = new EventEmitter<void>();\n\n\t@HostListener(\"document:keydown.escape\")\n\tonEsc(): void {\n\t\tif (this.open && this.closeOnEsc) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tclose(): void {\n\t\tthis.openChange.emit(false);\n\t}\n\n\tonPrimaryAction(): void {\n\t\tthis.primaryAction.emit();\n\t}\n\n\tonSecondaryAction(): void {\n\t\tthis.secondaryAction.emit();\n\t}\n\n\tonBackdropClick(): void {\n\t\tif (this.closeOnBackdrop) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tget panelClassName(): string {\n\t\t// Legacy sizes (backward compatibility)\n\t\tif (this.size === \"desktop\") {\n\t\t\treturn this.buildPanelClasses([\n\t\t\t\t\"max-w-[640px]\",\n\t\t\t\t\"max-h-[calc(100vh-2rem)]\",\n\t\t\t\t\"rounded-[10px]\",\n\t\t\t]);\n\t\t}\n\n\t\tif (this.size === \"mobile\") {\n\t\t\treturn this.buildPanelClasses([\n\t\t\t\t\"max-w-[320px]\",\n\t\t\t\t\"min-h-[240px]\",\n\t\t\t\t\"rounded-[10px]\",\n\t\t\t]);\n\t\t}\n\n\t\tif (this.size === \"mobile-fullscreen\") {\n\t\t\treturn this.buildPanelClasses([\n\t\t\t\t\"max-w-[320px]\",\n\t\t\t\t\"h-[min(100dvh,640px)]\",\n\t\t\t\t\"rounded-none\",\n\t\t\t\t\"sm:rounded-[10px]\",\n\t\t\t]);\n\t\t}\n\n\t\t// New responsive mode (recomendado)\n\t\tif (this.size === \"responsive\") {\n\t\t\treturn this.buildPanelClasses([\n\t\t\t\t// Mobile: fullscreen con bordes redondeados solo arriba\n\t\t\t\t\"w-full\",\n\t\t\t\t\"h-full\",\n\t\t\t\t\"max-h-[100dvh]\",\n\t\t\t\t\"rounded-t-[10px]\",\n\t\t\t\t\"sm:rounded-[10px]\",\n\t\t\t\t// Desktop: modal centrado\n\t\t\t\t\"sm:w-auto\",\n\t\t\t\t\"sm:h-auto\",\n\t\t\t\t\"sm:max-w-[640px]\",\n\t\t\t\t\"sm:max-h-[calc(100vh-4rem)]\",\n\t\t\t]);\n\t\t}\n\n\t\t// New size options\n\t\tconst sizeMap = {\n\t\t\tsm: \"sm:max-w-[400px]\",\n\t\t\tmd: \"sm:max-w-[500px]\",\n\t\t\tlg: \"sm:max-w-[640px]\",\n\t\t\txl: \"sm:max-w-[800px]\",\n\t\t};\n\n\t\tconst maxWidth = sizeMap[this.size as keyof typeof sizeMap] || sizeMap.lg;\n\n\t\treturn this.buildPanelClasses([\n\t\t\t// Mobile: fullscreen\n\t\t\t\"w-full\",\n\t\t\t\"h-full\",\n\t\t\t\"max-h-[100dvh]\",\n\t\t\t\"rounded-t-[10px]\",\n\t\t\t// Desktop: modal\n\t\t\t\"sm:rounded-[10px]\",\n\t\t\t\"sm:w-auto\",\n\t\t\t\"sm:h-auto\",\n\t\t\tmaxWidth,\n\t\t\t\"sm:max-h-[calc(100vh-4rem)]\",\n\t\t]);\n\t}\n\n\tprivate buildPanelClasses(sizeClasses: string[]): string {\n\t\tconst base = [\n\t\t\t\"relative\",\n\t\t\tZ_INDEX.modal, // z-50 - debe estar sobre backdrop (z-40)\n\t\t\t\"flex\",\n\t\t\t\"flex-col\",\n\t\t\t\"border border-solid\",\n\t\t\t\"border-border\",\n\t\t\t\"bg-background\",\n\t\t\t\"text-foreground\",\n\t\t\t\"shadow-lg\",\n\t\t\t\"overflow-hidden\",\n\t\t\t...sizeClasses,\n\t\t\tthis.className,\n\t\t];\n\n\t\treturn base.filter(Boolean).join(\" \");\n\t}\n\n\tget bodyWrapperClassName(): string {\n\t\t// min-h-0 is CRITICAL for flex child to shrink and allow internal scroll\n\t\tconst base = [\n\t\t\t\"flex-1\",\n\t\t\t\"min-h-0\",\n\t\t\t\"overflow-y-auto\",\n\t\t\t\"px-4\",\n\t\t\t\"py-6\",\n\t\t\t\"sm:px-6\",\n\t\t\tthis.bodyClassName,\n\t\t];\n\n\t\treturn base.filter(Boolean).join(\" \");\n\t}\n\n\tget headerWrapperClassName(): string {\n\t\tconst base = [\n\t\t\t\"flex\",\n\t\t\t\"items-start\",\n\t\t\t\"justify-between\",\n\t\t\t\"gap-3\",\n\t\t\t\"p-4\",\n\t\t\t\"sm:p-6\",\n\t\t\t\"border-b\",\n\t\t\t\"border-border\",\n\t\t\tthis.headerClassName,\n\t\t];\n\n\t\treturn base.filter(Boolean).join(\" \");\n\t}\n\n\tget footerWrapperClassName(): string {\n\t\tconst effectiveAlign =\n\t\t\tthis.alignFooter === \"right\" && this.variant === \"custom-close\"\n\t\t\t\t? \"left\"\n\t\t\t\t: this.alignFooter;\n\n\t\tconst base = [\n\t\t\t\"p-4\",\n\t\t\t\"sm:p-6\",\n\t\t\t\"border-t\",\n\t\t\t\"border-border\",\n\t\t\t// Mobile: siempre full-width\n\t\t\t\"flex\",\n\t\t\t\"flex-col\",\n\t\t\t\"gap-2\",\n\t\t\t// Desktop: según alignFooter\n\t\t\teffectiveAlign === \"full-width\"\n\t\t\t\t? \"sm:flex-col\"\n\t\t\t\t: \"sm:flex-row sm:items-center\",\n\t\t\teffectiveAlign === \"left\" ? \"sm:justify-start\" : \"\",\n\t\t\teffectiveAlign === \"right\" ? \"sm:justify-end\" : \"\",\n\t\t\tthis.footerClassName,\n\t\t];\n\n\t\treturn base.filter(Boolean).join(\" \");\n\t}\n\n\tget containerClassName(): string {\n\t\t// Container con backdrop z-40\n\t\t// Mobile: fullscreen desde el bottom\n\t\t// Desktop: centrado\n\t\treturn responsive({\n\t\t\tdefault: `fixed inset-x-0 bottom-0 ${Z_INDEX.modalBackdrop} flex items-end justify-center`,\n\t\t\tsm: `fixed inset-0 ${Z_INDEX.modalBackdrop} flex items-center justify-center p-4`,\n\t\t});\n\t}\n}\n","<div *ngIf=\"open\" [ngClass]=\"containerClassName\">\n <!-- Backdrop -->\n <div class=\"absolute inset-0 bg-foreground/30 backdrop-blur-sm\" (click)=\"onBackdropClick()\"></div>\n \n <!-- Dialog Panel -->\n <section role=\"dialog\" aria-modal=\"true\" cdkTrapFocus [ngClass]=\"panelClassName\">\n <!-- Header -->\n <div *ngIf=\"showHeader\" [ngClass]=\"headerWrapperClassName\">\n <div class=\"min-w-0 flex-1\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 mt-2 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n class=\"inline-flex h-6 w-6 flex-shrink-0 appearance-none box-border items-center justify-center rounded-sm border-0 bg-transparent p-0 text-foreground opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\"\n (click)=\"close()\"\n aria-label=\"Close dialog\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Body -->\n <div [ngClass]=\"bodyWrapperClassName\">\n <ng-content></ng-content>\n </div>\n\n <!-- Footer -->\n <div *ngIf=\"showFooter\" [ngClass]=\"footerWrapperClassName\">\n <ng-container *ngIf=\"variant === 'custom-close'; else defaultActions\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n </ng-container>\n\n <ng-template #defaultActions>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm sm:w-auto\"\n (click)=\"onPrimaryAction()\"\n >\n {{ primaryActionText }}\n </button>\n </ng-template>\n </div>\n </section>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { PdmDialogComponent } from './dialog.component';\n\nconst COMPONENTS = [\n PdmDialogComponent,\n];\n\n@NgModule({\n imports: [CommonModule, A11yModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class PdmDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdm-ui-kit-src-empty.mjs","sources":["../../../src/empty/empty.component.ts","../../../src/empty/empty.component.html","../../../src/empty/empty.module.ts","../../../src/empty/pdm-ui-kit-src-empty.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmEmptyVariant = 'default' | 'outline' | 'background';\n\n@Component({\n selector: 'pdm-empty',\n templateUrl: './empty.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush
|
|
1
|
+
{"version":3,"file":"pdm-ui-kit-src-empty.mjs","sources":["../../../src/empty/empty.component.ts","../../../src/empty/empty.component.html","../../../src/empty/empty.module.ts","../../../src/empty/pdm-ui-kit-src-empty.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmEmptyVariant = 'default' | 'outline' | 'background';\n\n@Component({\n selector: 'pdm-empty',\n templateUrl: './empty.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PdmEmptyComponent {\n @Input() variant: PdmEmptyVariant = 'default';\n @Input() title = 'No Projects Yet';\n @Input() description = \"You haven't created any projects yet. Get started by creating your first project.\";\n @Input() iconName = 'folder';\n @Input() primaryActionLabel = '';\n @Input() secondaryActionLabel = '';\n @Input() linkLabel = '';\n @Input() className = '';\n\n @Output() primaryAction = new EventEmitter<void>();\n @Output() secondaryAction = new EventEmitter<void>();\n @Output() linkAction = new EventEmitter<void>();\n\n get containerClass(): string {\n if (this.variant === 'outline') {\n return 'border border-solid border-dashed border-border rounded-[12px]';\n }\n\n if (this.variant === 'background') {\n return 'rounded-[12px] bg-muted';\n }\n\n return '';\n }\n}\n","<section [ngClass]=\"['flex flex-col items-center justify-center gap-4 px-6 py-10 text-center text-foreground', containerClass, className]\">\n <div class=\"flex h-10 w-10 items-center justify-center rounded-lg bg-muted text-muted-foreground\">\n <pdm-icon [name]=\"iconName\" [size]=\"20\"></pdm-icon>\n </div>\n\n <div class=\"space-y-2\">\n <h3 class=\"m-0 text-2xl font-semibold leading-none tracking-tight\">{{ title }}</h3>\n <p class=\"m-0 mx-auto max-w-md text-sm leading-relaxed text-muted-foreground\">\n {{ description }}\n </p>\n </div>\n\n <div *ngIf=\"primaryActionLabel || secondaryActionLabel\" class=\"mt-1 flex flex-wrap items-center justify-center gap-3\">\n <pdm-button *ngIf=\"primaryActionLabel\" variant=\"default\" (pressed)=\"primaryAction.emit()\">{{ primaryActionLabel }}</pdm-button>\n <pdm-button *ngIf=\"secondaryActionLabel\" variant=\"outline\" (pressed)=\"secondaryAction.emit()\">{{ secondaryActionLabel }}</pdm-button>\n </div>\n\n <button\n *ngIf=\"linkLabel\"\n type=\"button\"\n class=\"mt-1 inline-flex appearance-none box-border items-center gap-2 border-0 bg-transparent p-0 text-sm font-medium text-muted-foreground underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n (click)=\"linkAction.emit()\"\n >\n <span>{{ linkLabel }}</span>\n <pdm-icon name=\"arrow-up-right\" [size]=\"16\"></pdm-icon>\n </button>\n\n <ng-content></ng-content>\n</section>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { PdmButtonModule } from \"pdm-ui-kit/src/button\";\nimport { PdmIconModule } from \"pdm-ui-kit/src/icon\";\nimport { PdmEmptyComponent } from \"./empty.component\";\n\nconst COMPONENTS = [PdmEmptyComponent];\n\n@NgModule({\n\timports: [CommonModule, PdmButtonModule, PdmIconModule],\n\tdeclarations: COMPONENTS,\n\texports: COMPONENTS,\n})\nexport class PdmEmptyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|