yukit-web 0.0.1
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/.npm/_logs/2026-08-20T08_40_55_706Z-debug-0.log +38 -0
- package/.npm/_logs/2026-08-20T08_40_56_280Z-debug-0.log +14 -0
- package/README.md +1465 -0
- package/fesm2022/yukit-web-helm-accordion.mjs +141 -0
- package/fesm2022/yukit-web-helm-accordion.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-alert-dialog.mjs +250 -0
- package/fesm2022/yukit-web-helm-alert-dialog.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-alert.mjs +94 -0
- package/fesm2022/yukit-web-helm-alert.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-aspect-ratio.mjs +47 -0
- package/fesm2022/yukit-web-helm-aspect-ratio.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-attachment.mjs +211 -0
- package/fesm2022/yukit-web-helm-attachment.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-autocomplete.mjs +361 -0
- package/fesm2022/yukit-web-helm-autocomplete.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-avatar.mjs +152 -0
- package/fesm2022/yukit-web-helm-avatar.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-badge.mjs +47 -0
- package/fesm2022/yukit-web-helm-badge.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-breadcrumb.mjs +196 -0
- package/fesm2022/yukit-web-helm-breadcrumb.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-bubble.mjs +121 -0
- package/fesm2022/yukit-web-helm-bubble.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-button-group.mjs +86 -0
- package/fesm2022/yukit-web-helm-button-group.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-button.mjs +77 -0
- package/fesm2022/yukit-web-helm-button.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-calendar.mjs +937 -0
- package/fesm2022/yukit-web-helm-calendar.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-card.mjs +141 -0
- package/fesm2022/yukit-web-helm-card.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-carousel.mjs +270 -0
- package/fesm2022/yukit-web-helm-carousel.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-checkbox.mjs +147 -0
- package/fesm2022/yukit-web-helm-checkbox.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-collapsible.mjs +62 -0
- package/fesm2022/yukit-web-helm-collapsible.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-combobox.mjs +624 -0
- package/fesm2022/yukit-web-helm-combobox.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-command.mjs +315 -0
- package/fesm2022/yukit-web-helm-command.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-context-menu.mjs +71 -0
- package/fesm2022/yukit-web-helm-context-menu.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-date-picker.mjs +1517 -0
- package/fesm2022/yukit-web-helm-date-picker.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-dialog.mjs +271 -0
- package/fesm2022/yukit-web-helm-dialog.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-drawer.mjs +233 -0
- package/fesm2022/yukit-web-helm-drawer.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-dropdown-menu.mjs +508 -0
- package/fesm2022/yukit-web-helm-dropdown-menu.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-empty.mjs +125 -0
- package/fesm2022/yukit-web-helm-empty.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-field.mjs +325 -0
- package/fesm2022/yukit-web-helm-field.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-hover-card.mjs +102 -0
- package/fesm2022/yukit-web-helm-hover-card.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-input-group.mjs +171 -0
- package/fesm2022/yukit-web-helm-input-group.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-input-otp.mjs +127 -0
- package/fesm2022/yukit-web-helm-input-otp.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-input.mjs +32 -0
- package/fesm2022/yukit-web-helm-input.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-item.mjs +242 -0
- package/fesm2022/yukit-web-helm-item.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-kbd.mjs +46 -0
- package/fesm2022/yukit-web-helm-kbd.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-label.mjs +30 -0
- package/fesm2022/yukit-web-helm-label.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-marker.mjs +77 -0
- package/fesm2022/yukit-web-helm-marker.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-menubar.mjs +90 -0
- package/fesm2022/yukit-web-helm-menubar.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-message.mjs +115 -0
- package/fesm2022/yukit-web-helm-message.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-native-select.mjs +180 -0
- package/fesm2022/yukit-web-helm-native-select.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-navigation-menu.mjs +173 -0
- package/fesm2022/yukit-web-helm-navigation-menu.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-pagination.mjs +745 -0
- package/fesm2022/yukit-web-helm-pagination.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-popover.mjs +136 -0
- package/fesm2022/yukit-web-helm-popover.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-progress.mjs +60 -0
- package/fesm2022/yukit-web-helm-progress.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-radio-group.mjs +185 -0
- package/fesm2022/yukit-web-helm-radio-group.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-resizable.mjs +98 -0
- package/fesm2022/yukit-web-helm-resizable.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-scroll-area.mjs +36 -0
- package/fesm2022/yukit-web-helm-scroll-area.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-select.mjs +412 -0
- package/fesm2022/yukit-web-helm-select.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-separator.mjs +33 -0
- package/fesm2022/yukit-web-helm-separator.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-sheet.mjs +254 -0
- package/fesm2022/yukit-web-helm-sheet.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-sidebar.mjs +857 -0
- package/fesm2022/yukit-web-helm-sidebar.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-skeleton.mjs +29 -0
- package/fesm2022/yukit-web-helm-skeleton.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-slider.mjs +123 -0
- package/fesm2022/yukit-web-helm-slider.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-sonner.mjs +126 -0
- package/fesm2022/yukit-web-helm-sonner.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-spinner.mjs +48 -0
- package/fesm2022/yukit-web-helm-spinner.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-switch.mjs +126 -0
- package/fesm2022/yukit-web-helm-switch.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-table.mjs +180 -0
- package/fesm2022/yukit-web-helm-table.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-tabs.mjs +251 -0
- package/fesm2022/yukit-web-helm-tabs.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-textarea.mjs +32 -0
- package/fesm2022/yukit-web-helm-textarea.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-toggle-group.mjs +95 -0
- package/fesm2022/yukit-web-helm-toggle-group.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-toggle.mjs +61 -0
- package/fesm2022/yukit-web-helm-toggle.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-tooltip.mjs +57 -0
- package/fesm2022/yukit-web-helm-tooltip.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-typography.mjs +205 -0
- package/fesm2022/yukit-web-helm-typography.mjs.map +1 -0
- package/fesm2022/yukit-web-helm-utils.mjs +272 -0
- package/fesm2022/yukit-web-helm-utils.mjs.map +1 -0
- package/fesm2022/yukit-web.mjs +3592 -0
- package/fesm2022/yukit-web.mjs.map +1 -0
- package/package.json +291 -0
- package/src/lib/theme/spartan-overwrites/accordion.css +4 -0
- package/src/lib/theme/theme.css +161 -0
- package/src/lib/theme/tokens/color.css +356 -0
- package/src/lib/theme/tokens/component-colors.css +167 -0
- package/src/lib/theme/tokens/radius.css +18 -0
- package/src/lib/theme/tokens/typography.css +201 -0
- package/types/yukit-web-helm-accordion.d.ts +32 -0
- package/types/yukit-web-helm-alert-dialog.d.ts +85 -0
- package/types/yukit-web-helm-alert.d.ts +37 -0
- package/types/yukit-web-helm-aspect-ratio.d.ts +16 -0
- package/types/yukit-web-helm-attachment.d.ts +80 -0
- package/types/yukit-web-helm-autocomplete.d.ts +91 -0
- package/types/yukit-web-helm-avatar.d.ts +45 -0
- package/types/yukit-web-helm-badge.d.ts +19 -0
- package/types/yukit-web-helm-breadcrumb.d.ts +52 -0
- package/types/yukit-web-helm-bubble.d.ts +46 -0
- package/types/yukit-web-helm-button-group.d.ts +25 -0
- package/types/yukit-web-helm-button.d.ts +33 -0
- package/types/yukit-web-helm-calendar.d.ts +89 -0
- package/types/yukit-web-helm-card.d.ts +49 -0
- package/types/yukit-web-helm-carousel.d.ts +79 -0
- package/types/yukit-web-helm-checkbox.d.ts +60 -0
- package/types/yukit-web-helm-collapsible.d.ts +22 -0
- package/types/yukit-web-helm-combobox.d.ts +150 -0
- package/types/yukit-web-helm-command.d.ts +84 -0
- package/types/yukit-web-helm-context-menu.d.ts +29 -0
- package/types/yukit-web-helm-date-picker.d.ts +574 -0
- package/types/yukit-web-helm-dialog.d.ts +90 -0
- package/types/yukit-web-helm-drawer.d.ts +71 -0
- package/types/yukit-web-helm-dropdown-menu.d.ts +171 -0
- package/types/yukit-web-helm-empty.d.ts +49 -0
- package/types/yukit-web-helm-field.d.ts +102 -0
- package/types/yukit-web-helm-hover-card.d.ts +31 -0
- package/types/yukit-web-helm-input-group.d.ts +47 -0
- package/types/yukit-web-helm-input-otp.d.ts +40 -0
- package/types/yukit-web-helm-input.d.ts +13 -0
- package/types/yukit-web-helm-item.d.ts +96 -0
- package/types/yukit-web-helm-kbd.d.ts +17 -0
- package/types/yukit-web-helm-label.d.ts +12 -0
- package/types/yukit-web-helm-marker.d.ts +31 -0
- package/types/yukit-web-helm-menubar.d.ts +35 -0
- package/types/yukit-web-helm-message.d.ts +44 -0
- package/types/yukit-web-helm-native-select.d.ts +65 -0
- package/types/yukit-web-helm-navigation-menu.d.ts +49 -0
- package/types/yukit-web-helm-pagination.d.ts +187 -0
- package/types/yukit-web-helm-popover.d.ts +49 -0
- package/types/yukit-web-helm-progress.d.ts +22 -0
- package/types/yukit-web-helm-radio-group.d.ts +66 -0
- package/types/yukit-web-helm-resizable.d.ts +27 -0
- package/types/yukit-web-helm-scroll-area.d.ts +11 -0
- package/types/yukit-web-helm-select.d.ts +114 -0
- package/types/yukit-web-helm-separator.d.ts +13 -0
- package/types/yukit-web-helm-sheet.d.ts +75 -0
- package/types/yukit-web-helm-sidebar.d.ts +232 -0
- package/types/yukit-web-helm-skeleton.d.ts +11 -0
- package/types/yukit-web-helm-slider.d.ts +14 -0
- package/types/yukit-web-helm-sonner.d.ts +52 -0
- package/types/yukit-web-helm-spinner.d.ts +18 -0
- package/types/yukit-web-helm-switch.d.ts +54 -0
- package/types/yukit-web-helm-table.d.ts +82 -0
- package/types/yukit-web-helm-tabs.d.ts +66 -0
- package/types/yukit-web-helm-textarea.d.ts +13 -0
- package/types/yukit-web-helm-toggle-group.d.ts +34 -0
- package/types/yukit-web-helm-toggle.d.ts +22 -0
- package/types/yukit-web-helm-tooltip.d.ts +17 -0
- package/types/yukit-web-helm-typography.d.ts +89 -0
- package/types/yukit-web-helm-utils.d.ts +44 -0
- package/types/yukit-web.d.ts +2426 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yukit-web-helm-date-picker.mjs","sources":["../../../projects/yukit-web/helm/date-picker/src/lib/hlm-date-picker-multi.token.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-date-multi-input.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-date-picker.token.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-date-picker.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-date-picker-anchor.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-date-picker-input.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-date-picker-multi.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-date-picker-trigger.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-date-range-picker.token.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-date-range-input.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-date-range-picker.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-month-year-picker.token.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-month-year-input.ts","../../../projects/yukit-web/helm/date-picker/src/lib/hlm-month-year-picker.ts","../../../projects/yukit-web/helm/date-picker/src/index.ts","../../../projects/yukit-web/helm/date-picker/src/yukit-web-helm-date-picker.ts"],"sourcesContent":["import { inject, InjectionToken, type ValueProvider } from '@angular/core';\n\nexport interface HlmDatePickerMultiConfig<T> {\n\t/**\n\t * If true, the date picker will close when the max selection of dates is reached.\n\t */\n\tautoCloseOnMaxSelection: boolean;\n\n\t/**\n\t * Defines how the date should be displayed in the UI.\n\t *\n\t * @param dates\n\t * @returns formatted date\n\t */\n\tformatDates: (dates: T[]) => string;\n\n\t/**\n\t * Defines how the dates should be displayed while the input is focused,\n\t * i.e. the format the user is expected to type in.\n\t *\n\t * @param dates\n\t * @returns formatted dates in the input/edit format\n\t */\n\tformatInputDates: (dates: T[]) => string;\n\n\t/**\n\t * Defines how the date should be transformed before saving to model/form.\n\t *\n\t * @param dates\n\t * @returns transformed date\n\t */\n\ttransformDates: (dates: T[]) => T[];\n\n\t/**\n\t * Parse a user-entered string into a date.\n\t *\n\t * @param value the raw string from the input\n\t * @returns the parsed date, or `null` when the value can't be parsed\n\t */\n\tparseDate: (value: string) => T[] | null;\n}\n\nfunction getDefaultConfig<T>(): HlmDatePickerMultiConfig<T> {\n\treturn {\n\t\tformatDates: (dates) => dates.map((date) => (date instanceof Date ? date.toDateString() : `${date}`)).join(', '),\n\t\tformatInputDates: (dates) =>\n\t\t\tdates\n\t\t\t\t.map((date) => {\n\t\t\t\t\tif (!(date instanceof Date)) return `${date}`;\n\n\t\t\t\t\tconst day = String(date.getDate()).padStart(2, '0');\n\t\t\t\t\tconst month = String(date.getMonth() + 1).padStart(2, '0');\n\t\t\t\t\tconst year = date.getFullYear();\n\n\t\t\t\t\treturn `${day}/${month}/${year}`;\n\t\t\t\t})\n\t\t\t\t.join(', '),\n\t\ttransformDates: (dates) => dates,\n\t\tautoCloseOnMaxSelection: false,\n\t\tparseDate: (value) => {\n\t\t\tif (typeof value !== 'string') return null;\n\n\t\t\tconst parts = value.split(',').map((v) => v.trim());\n\t\t\tconst result: Date[] = [];\n\n\t\t\tfor (const part of parts) {\n\t\t\t\tconst match = part.match(/^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/);\n\t\t\t\tif (!match) return null;\n\n\t\t\t\tconst day = Number(match[1]);\n\t\t\t\tconst month = Number(match[2]);\n\t\t\t\tconst year = Number(match[3]);\n\n\t\t\t\tif (month < 1 || month > 12) return null;\n\t\t\t\tif (day < 1 || day > 31) return null;\n\n\t\t\t\tconst date = new Date(year, month - 1, day);\n\n\t\t\t\tif (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tresult.push(date);\n\t\t\t}\n\n\t\t\treturn result as T[];\n\t\t},\n\t};\n}\n\nconst HlmDatePickerMultiConfigToken = new InjectionToken<HlmDatePickerMultiConfig<unknown>>('HlmDatePickerMultiConfig');\n\nexport function provideHlmDatePickerMultiConfig<T>(config: Partial<HlmDatePickerMultiConfig<T>>): ValueProvider {\n\treturn { provide: HlmDatePickerMultiConfigToken, useValue: { ...getDefaultConfig(), ...config } };\n}\n\nexport function injectHlmDatePickerMultiConfig<T>(): HlmDatePickerMultiConfig<T> {\n\tconst injectedConfig = inject(HlmDatePickerMultiConfigToken, { optional: true });\n\treturn injectedConfig ? (injectedConfig as HlmDatePickerMultiConfig<T>) : getDefaultConfig();\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCalendar, lucideX } from '@ng-icons/lucide';\nimport {\n\tBrnDateInput,\n\ttype BrnDatePickerTriggerBase,\n\tprovideBrnDatePickerTrigger,\n} from '@spartan-ng/brain/date-picker';\nimport { BrnFieldControl } from '@spartan-ng/brain/field';\nimport { HlmInputGroup, HlmInputGroupImports } from 'yukit-web/helm/input-group';\nimport { injectHlmDatePickerMultiConfig } from './hlm-date-picker-multi.token';\n\n@Component({\n\tselector: 'hlm-date-multi-input',\n\timports: [HlmInputGroupImports, NgIcon],\n\tproviders: [provideIcons({ lucideCalendar, lucideX }), provideBrnDatePickerTrigger(HlmDateMultiInput)],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [HlmInputGroup],\n\ttemplate: `\n\t\t<input\n\t\t\t#input\n\t\t\thlmInputGroupInput\n\t\t\t[value]=\"_inputValue()\"\n\t\t\t[id]=\"inputId()\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[disabled]=\"_disabled()\"\n\t\t\t[forceInvalid]=\"forceInvalid()\"\n\t\t\t[attr.aria-invalid]=\"_ariaInvalid()\"\n\t\t\t[attr.data-invalid]=\"_ariaInvalid()\"\n\t\t\t[attr.data-touched]=\"_touched?.() ? 'true' : null\"\n\t\t\t[attr.data-dirty]=\"_dirty?.() ? 'true' : null\"\n\t\t\t[attr.data-matches-spartan-invalid]=\"_spartanInvalid() ? 'true' : null\"\n\t\t\t(click)=\"_handleClick()\"\n\t\t\t(keydown.arrowDown)=\"_open()\"\n\t\t\t(keydown.enter)=\"_handleEnter($event)\"\n\t\t\t(input)=\"_handleInputChange($event)\"\n\t\t\t(focus)=\"_handleFocus()\"\n\t\t\t(blur)=\"_handleBlur()\"\n\t\t/>\n\t\t<hlm-input-group-addon align=\"inline-end\">\n\t\t\t@if (_showClearButton()) {\n\t\t\t\t<button\n\t\t\t\t\thlmInputGroupButton\n\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t[attr.aria-label]=\"clearAriaLabel()\"\n\t\t\t\t\t(click)=\"_clear()\"\n\t\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t\t>\n\t\t\t\t\t<ng-icon name=\"lucideX\" />\n\t\t\t\t</button>\n\t\t\t}\n\t\t\t<button\n\t\t\t\thlmInputGroupButton\n\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t[attr.aria-label]=\"calendarAriaLabel()\"\n\t\t\t\t(click)=\"_popover().open()\"\n\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t>\n\t\t\t\t<ng-icon name=\"lucideCalendar\" />\n\t\t\t</button>\n\t\t</hlm-input-group-addon>\n\t`,\n})\nexport class HlmDateMultiInput<T> extends BrnDateInput<T[]> implements BrnDatePickerTriggerBase {\n\tprivate readonly _config = injectHlmDatePickerMultiConfig<T>();\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\n\n\tprivate readonly _invalid = this._fieldControl?.invalid;\n\tprotected readonly _spartanInvalid = computed(() => this.forceInvalid() || this._fieldControl?.spartanInvalid());\n\tprotected readonly _dirty = this._fieldControl?.dirty;\n\tprotected readonly _touched = this._fieldControl?.touched;\n\n\tprotected readonly _ariaInvalid = computed(() => (this._invalid?.() ? 'true' : null));\n\t/**\n\t * Parses input text into dates. Return `null` for invalid input - the\n\t * picker's dates are cleared while the text is preserved so the user can\n\t * fix it.\n\t *\n\t * Defaults to `parseDate` from `HlmDatePickerMultiConfig`.\n\t */\n\tpublic readonly parseDate = input<(value: string) => T[] | null>(this._config.parseDate);\n\n\t/**\n\t * Formats the current dates into the input/edit format shown while the\n\t * input is focused. On blur the picker's display format is restored.\n\t *\n\t * Defaults to `formatInputDates` from `HlmDatePickerMultiConfig`.\n\t */\n\tpublic readonly formatInputDates = input<(dates: T[]) => string>(this._config.formatInputDates);\n\n\tprotected override parseValue(value: string): T[] | null {\n\t\treturn this.parseDate()(value);\n\t}\n\n\tprotected override formatInputValue(value: T[]): string {\n\t\treturn this.formatInputDates()(value);\n\t}\n}\n","import { inject, InjectionToken, type ValueProvider } from '@angular/core';\n\nexport interface HlmDatePickerConfig<T> {\n\t/**\n\t * If true, the date picker will close when a date is selected.\n\t */\n\tautoCloseOnSelect: boolean;\n\n\t/**\n\t * Defines how the date should be displayed in the UI.\n\t *\n\t * @param date\n\t * @returns formatted date\n\t */\n\tformatDate: (date: T) => string;\n\n\t/**\n\t * Defines how the date should be displayed while the input is focused,\n\t * i.e. the format the user is expected to type in.\n\t *\n\t * @param date\n\t * @returns formatted date in the input/edit format\n\t */\n\tformatInputDate: (date: T) => string;\n\n\t/**\n\t * Defines how the date should be transformed before saving to model/form.\n\t *\n\t * @param date\n\t * @returns transformed date\n\t */\n\ttransformDate: (date: T) => T;\n\n\t/**\n\t * Parse a user-entered string into a date.\n\t *\n\t * @param value the raw string from the input\n\t * @returns the parsed date, or `null` when the value can't be parsed\n\t */\n\tparseDate: (value: string) => T | null;\n}\n\nfunction getDefaultConfig<T>(): HlmDatePickerConfig<T> {\n\treturn {\n\t\tformatDate: (date) => (date instanceof Date ? date.toDateString() : `${date}`),\n\t\tformatInputDate: (date) => (date instanceof Date ? date.toDateString() : `${date}`),\n\t\ttransformDate: (date) => date,\n\t\tparseDate: (value) => {\n\t\t\tconst date = new Date(value);\n\t\t\treturn isNaN(date.getTime()) ? null : (date as T);\n\t\t},\n\t\tautoCloseOnSelect: false,\n\t};\n}\n\nconst HlmDatePickerConfigToken = new InjectionToken<HlmDatePickerConfig<unknown>>('HlmDatePickerConfig');\n\nexport function provideHlmDatePickerConfig<T>(config: Partial<HlmDatePickerConfig<T>>): ValueProvider {\n\treturn { provide: HlmDatePickerConfigToken, useValue: { ...getDefaultConfig(), ...config } };\n}\n\nexport function injectHlmDatePickerConfig<T>(): HlmDatePickerConfig<T> {\n\tconst injectedConfig = inject(HlmDatePickerConfigToken, { optional: true });\n\treturn injectedConfig ? (injectedConfig as HlmDatePickerConfig<T>) : getDefaultConfig();\n}\n","import type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tforwardRef,\n\tinput,\n\tlinkedSignal,\n\toutput,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { type BrnDatePickerBase, BrnDatePickerTriggerToken, provideBrnDatePicker } from '@spartan-ng/brain/date-picker';\nimport { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';\nimport type { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport type { BrnOverlayState } from '@spartan-ng/brain/overlay';\nimport { BrnPopover, type BrnPopoverAlign } from '@spartan-ng/brain/popover';\nimport { HlmCalendar } from 'yukit-web/helm/calendar';\nimport { HlmPopoverImports } from 'yukit-web/helm/popover';\nimport { injectHlmDatePickerConfig } from './hlm-date-picker.token';\n\nexport const HLM_DATE_PICKER_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => HlmDatePicker),\n\tmulti: true,\n};\n\n@Component({\n\tselector: 'hlm-date-picker',\n\timports: [HlmPopoverImports, HlmCalendar],\n\tproviders: [HLM_DATE_PICKER_VALUE_ACCESSOR, provideBrnDatePicker(HlmDatePicker), provideBrnLabelable(HlmDatePicker)],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [BrnFieldControl],\n\thost: { class: 'block' },\n\ttemplate: `\n\t\t<hlm-popover [align]=\"align()\" sideOffset=\"5\" [state]=\"_popoverState()\" (stateChanged)=\"_onStateChange($event)\">\n\t\t\t<ng-content />\n\n\t\t\t<hlm-popover-content class=\"w-fit p-0\" *hlmPopoverPortal=\"let ctx\">\n\t\t\t\t<ng-content select=\"[hlmDatePickerHeader]\" />\n\t\t\t\t<hlm-calendar\n\t\t\t\t\tclass=\"rounded-none border-0\"\n\t\t\t\t\t[captionLayout]=\"captionLayout()\"\n\t\t\t\t\t[date]=\"_mutableDate()\"\n\t\t\t\t\t[defaultFocusedDate]=\"_mutableDate() ?? defaultFocusedDate()\"\n\t\t\t\t\t[min]=\"minDate()\"\n\t\t\t\t\t[max]=\"maxDate()\"\n\t\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t\t\t(dateChange)=\"_handleChange($event)\"\n\t\t\t\t/>\n\t\t\t\t<ng-content select=\"[hlmDatePickerFooter]\" />\n\t\t\t</hlm-popover-content>\n\t\t</hlm-popover>\n\t`,\n})\nexport class HlmDatePicker<T> implements BrnDatePickerBase<T>, ControlValueAccessor {\n\tprivate readonly _config = injectHlmDatePickerConfig<T>();\n\n\tpublic readonly popover = viewChild.required(BrnPopover);\n\n\tprivate readonly _trigger = contentChild(BrnDatePickerTriggerToken);\n\n\tpublic readonly align = input<BrnPopoverAlign>('center');\n\n\t/** Show dropdowns to navigate between months or years. */\n\tpublic readonly captionLayout = input<'dropdown' | 'label' | 'dropdown-months' | 'dropdown-years'>('label');\n\n\t/** The minimum date that can be selected. */\n\tpublic readonly minDate = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly maxDate = input<T>();\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = input<T>();\n\n\t/** The date the calendar focuses on first open when no date is selected. */\n\tpublic readonly defaultFocusedDate = input<T>();\n\n\tprotected readonly _mutableDate = linkedSignal(this.date);\n\n\t/** If true, the date picker will close when a date is selected. */\n\tpublic readonly autoCloseOnSelect = input<boolean, BooleanInput>(this._config.autoCloseOnSelect, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Defines how the date should be displayed in the UI. */\n\tpublic readonly formatDate = input<(date: T) => string>(this._config.formatDate);\n\n\t/** Defines how the date should be transformed before saving to model/form. */\n\tpublic readonly transformDate = input<(date: T) => T>(this._config.transformDate);\n\n\tprotected readonly _popoverState = signal<BrnOverlayState | null>(null);\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\tpublic readonly formattedDate = computed(() => {\n\t\tconst date = this._mutableDate();\n\t\treturn date ? this.formatDate()(date) : undefined;\n\t});\n\n\tpublic readonly dateChange = output<T | null>();\n\n\tpublic readonly labelableId = computed(() => this._trigger()?.triggerId());\n\n\tpublic readonly hasDate = computed(() => !!this._mutableDate());\n\n\t/** @internal The current raw value, used by inputs to reformat on focus. */\n\tpublic readonly value = computed(() => this._mutableDate() ?? null);\n\n\tprotected _onChange?: ChangeFn<T | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tprotected _onStateChange(state: BrnOverlayState) {\n\t\tthis._popoverState.set(state);\n\t\tif (state === 'closed') this._onTouched?.();\n\t}\n\n\tprotected _handleChange(value: T | undefined) {\n\t\tif (this._disabled()) return;\n\t\tthis.updateDate(value ?? null);\n\n\t\tif (this.autoCloseOnSelect()) {\n\t\t\tthis._popoverState.set('closed');\n\t\t}\n\t}\n\n\t/**\n\t * Commit a date to the picker. Updates the internal model, notifies form\n\t * controls, and emits `dateChange`. Unlike `_handleChange`, this does not\n\t * close the popover - it's intended to be called from a text input that\n\t * is parsing user-entered values while typing.\n\t */\n\tpublic updateDate(value: T | null) {\n\t\tif (this._disabled()) return;\n\t\tconst transformedDate = value != null ? this.transformDate()(value) : undefined;\n\n\t\tthis._mutableDate.set(transformedDate);\n\t\tthis._onChange?.(transformedDate ?? null);\n\t\tthis.dateChange.emit(transformedDate ?? null);\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\tpublic writeValue(value: T | null): void {\n\t\tthis._mutableDate.set(value ? this.transformDate()(value) : undefined);\n\t}\n\n\tpublic registerOnChange(fn: ChangeFn<T | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tpublic registerOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tpublic touched(): void {\n\t\tthis._onTouched?.();\n\t}\n\n\tpublic setDisabledState(isDisabled: boolean): void {\n\t\tthis._disabled.set(isDisabled);\n\t}\n\n\tpublic open() {\n\t\tthis._popoverState.set('open');\n\t}\n\n\tpublic close() {\n\t\tthis._popoverState.set('closed');\n\t}\n\n\tpublic reset() {\n\t\tthis._mutableDate.set(undefined);\n\t\tthis._onChange?.(null);\n\t\tthis.dateChange.emit(null);\n\t}\n}\n","import { Directive, effect, ElementRef, inject, input, linkedSignal } from '@angular/core';\nimport { BrnOverlay } from '@spartan-ng/brain/overlay';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\n\n@Directive({ selector: '[hlmDatePickerAnchor]' })\nexport class HlmDatePickerAnchor {\n\tprivate readonly _host = inject(ElementRef, { host: true });\n\tprivate readonly _brnOverlay = inject(BrnOverlay, { optional: true });\n\n\tpublic readonly hlmDatePickerAnchorForInput = input<BrnPopover | undefined>(undefined, {\n\t\talias: 'hlmDatePickerAnchorFor',\n\t});\n\n\tpublic readonly hlmDatePickerAnchorFor = linkedSignal(this.hlmDatePickerAnchorForInput);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis.hlmDatePickerAnchorFor()?.setOrigin(this._host.nativeElement);\n\t\t});\n\n\t\tthis._brnOverlay?.setOrigin(this._host.nativeElement);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCalendar, lucideX } from '@ng-icons/lucide';\nimport {\n\tBrnDateInput,\n\ttype BrnDatePickerTriggerBase,\n\tprovideBrnDatePickerTrigger,\n} from '@spartan-ng/brain/date-picker';\nimport { BrnFieldControl } from '@spartan-ng/brain/field';\nimport { HlmInputGroup, HlmInputGroupImports } from 'yukit-web/helm/input-group';\nimport { injectHlmDatePickerConfig } from './hlm-date-picker.token';\n\n@Component({\n\tselector: 'hlm-date-picker-input',\n\timports: [HlmInputGroupImports, NgIcon],\n\tproviders: [provideIcons({ lucideCalendar, lucideX }), provideBrnDatePickerTrigger(HlmDatePickerInput)],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [HlmInputGroup],\n\ttemplate: `\n\t\t<input\n\t\t\t#input\n\t\t\thlmInputGroupInput\n\t\t\t[value]=\"_inputValue()\"\n\t\t\t[id]=\"inputId()\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[disabled]=\"_disabled()\"\n\t\t\t[forceInvalid]=\"forceInvalid()\"\n\t\t\t[attr.aria-invalid]=\"_ariaInvalid()\"\n\t\t\t[attr.data-invalid]=\"_ariaInvalid()\"\n\t\t\t[attr.data-touched]=\"_touched?.() ? 'true' : null\"\n\t\t\t[attr.data-dirty]=\"_dirty?.() ? 'true' : null\"\n\t\t\t[attr.data-matches-spartan-invalid]=\"_spartanInvalid() ? 'true' : null\"\n\t\t\t(click)=\"_handleClick()\"\n\t\t\t(keydown.arrowDown)=\"_open()\"\n\t\t\t(keydown.enter)=\"_handleEnter($event)\"\n\t\t\t(input)=\"_handleInputChange($event)\"\n\t\t\t(focus)=\"_handleFocus()\"\n\t\t\t(blur)=\"_handleBlur()\"\n\t\t/>\n\t\t<hlm-input-group-addon align=\"inline-end\">\n\t\t\t@if (_showClearButton()) {\n\t\t\t\t<button\n\t\t\t\t\thlmInputGroupButton\n\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t[attr.aria-label]=\"clearAriaLabel()\"\n\t\t\t\t\t(click)=\"_clear()\"\n\t\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t\t>\n\t\t\t\t\t<ng-icon name=\"lucideX\" />\n\t\t\t\t</button>\n\t\t\t}\n\t\t\t<button\n\t\t\t\thlmInputGroupButton\n\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t[attr.aria-label]=\"calendarAriaLabel()\"\n\t\t\t\t(click)=\"_popover().open()\"\n\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t>\n\t\t\t\t<ng-icon name=\"lucideCalendar\" />\n\t\t\t</button>\n\t\t</hlm-input-group-addon>\n\t`,\n})\nexport class HlmDatePickerInput<T> extends BrnDateInput<T> implements BrnDatePickerTriggerBase {\n\tprivate readonly _config = injectHlmDatePickerConfig<T>();\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\n\n\tprivate readonly _invalid = this._fieldControl?.invalid;\n\tprotected readonly _spartanInvalid = computed(() => this.forceInvalid() || this._fieldControl?.spartanInvalid());\n\tprotected readonly _dirty = this._fieldControl?.dirty;\n\tprotected readonly _touched = this._fieldControl?.touched;\n\n\tprotected readonly _ariaInvalid = computed(() => (this._invalid?.() ? 'true' : null));\n\n\t/**\n\t * Parses input text into a date value. Return `null` for invalid\n\t * input - the picker's date is cleared while the text is preserved so\n\t * the user can fix it.\n\t *\n\t * Defaults to `parseDate` from `HlmDatePickerConfig`.\n\t */\n\tpublic readonly parseDate = input<(value: string) => T | null>(this._config.parseDate);\n\n\t/**\n\t * Formats the current date into the input/edit format shown while the\n\t * input is focused. On blur the picker's display format is restored.\n\t *\n\t * Defaults to `formatInputDate` from `HlmDatePickerConfig`.\n\t */\n\tpublic readonly formatInputDate = input<(date: T) => string>(this._config.formatInputDate);\n\n\tprotected parseValue(value: string): T | null {\n\t\treturn this.parseDate()(value);\n\t}\n\n\tprotected formatInputValue(value: T): string {\n\t\treturn this.formatInputDate()(value);\n\t}\n}\n","import type { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tforwardRef,\n\tinput,\n\tlinkedSignal,\n\tnumberAttribute,\n\toutput,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { type BrnDatePickerBase, BrnDatePickerTriggerToken, provideBrnDatePicker } from '@spartan-ng/brain/date-picker';\nimport { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';\nimport type { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport type { BrnOverlayState } from '@spartan-ng/brain/overlay';\nimport { BrnPopover, type BrnPopoverAlign } from '@spartan-ng/brain/popover';\nimport { HlmCalendarMulti } from 'yukit-web/helm/calendar';\nimport { HlmPopoverImports } from 'yukit-web/helm/popover';\nimport { injectHlmDatePickerMultiConfig } from './hlm-date-picker-multi.token';\n\nexport const HLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => HlmDatePickerMulti),\n\tmulti: true,\n};\n\n@Component({\n\tselector: 'hlm-date-picker-multi',\n\timports: [HlmPopoverImports, HlmCalendarMulti],\n\tproviders: [\n\t\tHLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR,\n\t\tprovideBrnDatePicker(HlmDatePickerMulti),\n\t\tprovideBrnLabelable(HlmDatePickerMulti),\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [BrnFieldControl],\n\thost: { class: 'block' },\n\ttemplate: `\n\t\t<hlm-popover [align]=\"align()\" sideOffset=\"5\" [state]=\"_popoverState()\" (stateChanged)=\"_onStateChange($event)\">\n\t\t\t<ng-content />\n\n\t\t\t<hlm-popover-content class=\"w-fit p-0\" *hlmPopoverPortal=\"let ctx\">\n\t\t\t\t<ng-content select=\"[hlmDatePickerHeader]\" />\n\t\t\t\t<hlm-calendar-multi\n\t\t\t\t\tclass=\"rounded-none border-0\"\n\t\t\t\t\t[date]=\"_mutableDate()\"\n\t\t\t\t\t[captionLayout]=\"captionLayout()\"\n\t\t\t\t\t[min]=\"minDate()\"\n\t\t\t\t\t[max]=\"maxDate()\"\n\t\t\t\t\t[minSelection]=\"minSelection()\"\n\t\t\t\t\t[maxSelection]=\"maxSelection()\"\n\t\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t\t\t(dateChange)=\"_handleChange($event)\"\n\t\t\t\t/>\n\t\t\t\t<ng-content select=\"[hlmDatePickerFooter]\" />\n\t\t\t</hlm-popover-content>\n\t\t</hlm-popover>\n\t`,\n})\nexport class HlmDatePickerMulti<T> implements BrnDatePickerBase<T[]>, ControlValueAccessor {\n\tprivate readonly _config = injectHlmDatePickerMultiConfig<T>();\n\n\tpublic readonly popover = viewChild.required(BrnPopover);\n\n\tprivate readonly _trigger = contentChild(BrnDatePickerTriggerToken);\n\n\tpublic readonly align = input<BrnPopoverAlign>('center');\n\n\t/** Show dropdowns to navigate between months or years. */\n\tpublic readonly captionLayout = input<'dropdown' | 'label' | 'dropdown-months' | 'dropdown-years'>('label');\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly minDate = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly maxDate = input<T>();\n\n\t/** The minimum selectable dates. */\n\tpublic readonly minSelection = input<number, NumberInput>(undefined, {\n\t\ttransform: numberAttribute,\n\t});\n\n\t/** The maximum selectable dates. */\n\tpublic readonly maxSelection = input<number, NumberInput>(undefined, {\n\t\ttransform: numberAttribute,\n\t});\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = input<T[]>();\n\n\tprotected readonly _mutableDate = linkedSignal(this.date);\n\n\t/** If true, the date picker will close when the max selection of dates is reached. */\n\tpublic readonly autoCloseOnMaxSelection = input<boolean, BooleanInput>(this._config.autoCloseOnMaxSelection, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Defines how the date should be displayed in the UI. */\n\tpublic readonly formatDates = input<(date: T[]) => string>(this._config.formatDates);\n\n\t/** Defines how the date should be transformed before saving to model/form. */\n\tpublic readonly transformDates = input<(date: T[]) => T[]>(this._config.transformDates);\n\n\tprotected readonly _popoverState = signal<BrnOverlayState | null>(null);\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\tpublic readonly formattedDate = computed(() => {\n\t\tconst dates = this._mutableDate();\n\t\treturn dates ? this.formatDates()(dates) : undefined;\n\t});\n\n\tpublic readonly dateChange = output<T[]>();\n\n\tpublic readonly labelableId = computed(() => this._trigger()?.triggerId());\n\n\tpublic readonly hasDate = computed(() => !!this._mutableDate()?.length);\n\n\t/** @internal The current raw value, used by inputs to reformat on focus. */\n\tpublic readonly value = computed(() => this._mutableDate() ?? null);\n\n\tprotected _onChange?: ChangeFn<T[]>;\n\tprotected _onTouched?: TouchFn;\n\n\tprotected _onStateChange(state: BrnOverlayState) {\n\t\tthis._popoverState.set(state);\n\t\tif (state === 'closed') this._onTouched?.();\n\t}\n\n\tprotected _handleChange(value: T[] | undefined) {\n\t\tif (value === undefined) return;\n\n\t\tif (this._disabled()) return;\n\t\tconst transformedDate = value !== undefined ? this.transformDates()(value) : value;\n\n\t\tthis._mutableDate.set(transformedDate);\n\t\tthis._onChange?.(transformedDate);\n\t\tthis.dateChange.emit(transformedDate);\n\n\t\tif (this.autoCloseOnMaxSelection() && this._mutableDate()?.length === this.maxSelection()) {\n\t\t\tthis._popoverState.set('closed');\n\t\t}\n\t}\n\n\t/**\n\t * Commit dates to the picker. Updates the internal model, notifies form\n\t * controls, and emits `dateChange`. Intended to be called from a text input\n\t * that parses user-entered values. Pass `null` to clear the selection.\n\t */\n\tpublic updateDate(value: T[] | null) {\n\t\tif (this._disabled()) return;\n\t\tconst transformedDate = value ? this.transformDates()(value) : undefined;\n\n\t\tthis._mutableDate.set(transformedDate);\n\t\tthis._onChange?.(transformedDate ?? []);\n\t\tthis.dateChange.emit(transformedDate ?? []);\n\t}\n\n\tpublic touched(): void {\n\t\tthis._onTouched?.();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\tpublic writeValue(value: T[] | null): void {\n\t\tthis._mutableDate.set(value ? this.transformDates()(value) : undefined);\n\t}\n\n\tpublic registerOnChange(fn: ChangeFn<T[]>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tpublic registerOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tpublic setDisabledState(isDisabled: boolean): void {\n\t\tthis._disabled.set(isDisabled);\n\t}\n\n\tpublic open() {\n\t\tthis._popoverState.set('open');\n\t}\n\n\tpublic close() {\n\t\tthis._popoverState.set('closed');\n\t}\n\n\tpublic reset() {\n\t\tthis._mutableDate.set(undefined);\n\t\tthis._onChange?.([]);\n\t\tthis.dateChange.emit([]);\n\t}\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport {\n\ttype BrnDatePickerTriggerBase,\n\tinjectBrnDatePicker,\n\tprovideBrnDatePickerTrigger,\n} from '@spartan-ng/brain/date-picker';\nimport { BrnFieldControl, BrnFieldControlDescribedBy } from '@spartan-ng/brain/field';\nimport { ButtonVariants, HlmButtonImports } from 'yukit-web/helm/button';\nimport { HlmPopoverTrigger } from 'yukit-web/helm/popover';\nimport { hlm } from 'yukit-web/helm/utils';\nimport { ClassValue } from 'clsx';\n\n@Component({\n\tselector: 'hlm-date-picker-trigger',\n\timports: [HlmButtonImports, HlmPopoverTrigger, NgIcon, BrnFieldControlDescribedBy],\n\tproviders: [provideIcons({ lucideChevronDown }), provideBrnDatePickerTrigger(HlmDatePickerTrigger)],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: { 'data-slot': 'date-picker-trigger' },\n\ttemplate: `\n\t\t<button\n\t\t\t[id]=\"buttonId()\"\n\t\t\ttype=\"button\"\n\t\t\t[class]=\"_computedClass()\"\n\t\t\t[disabled]=\"_disabled()\"\n\t\t\t[attr.aria-invalid]=\"_ariaInvalid()\"\n\t\t\t[attr.data-invalid]=\"_ariaInvalid()\"\n\t\t\t[attr.data-touched]=\"_touched?.() ? 'true' : null\"\n\t\t\t[attr.data-dirty]=\"_dirty?.() ? 'true' : null\"\n\t\t\t[attr.data-matches-spartan-invalid]=\"_spartanInvalid() ? 'true' : null\"\n\t\t\thlmBtn\n\t\t\t[variant]=\"variant()\"\n\t\t\thlmPopoverTrigger\n\t\t\t[hlmPopoverTriggerFor]=\"_popover()\"\n\t\t\tbrnFieldControlDescribedBy\n\t\t\t[attr.data-placeholder]=\"_isPlaceholder() ? '' : null\"\n\t\t>\n\t\t\t<span class=\"truncate\">\n\t\t\t\t@if (_formattedDate(); as formattedDate) {\n\t\t\t\t\t{{ formattedDate }}\n\t\t\t\t} @else {\n\t\t\t\t\t<ng-content />\n\t\t\t\t}\n\t\t\t</span>\n\n\t\t\t@if (showTrigger()) {\n\t\t\t\t<ng-icon name=\"lucideChevronDown\" />\n\t\t\t}\n\t\t</button>\n\t`,\n})\nexport class HlmDatePickerTrigger implements BrnDatePickerTriggerBase {\n\tprivate static _nextId = 0;\n\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\n\tprivate readonly _datePicker = injectBrnDatePicker();\n\n\tprivate readonly _invalid = this._fieldControl?.invalid;\n\tprotected readonly _spartanInvalid = computed(() => this.forceInvalid() || this._fieldControl?.spartanInvalid());\n\tprotected readonly _dirty = this._fieldControl?.dirty;\n\tprotected readonly _touched = this._fieldControl?.touched;\n\n\tprotected readonly _ariaInvalid = computed(() => (this._invalid?.() ? 'true' : null));\n\n\tpublic readonly userClass = input<ClassValue>('', { alias: 'class' });\n\tprotected readonly _computedClass = computed(() =>\n\t\thlm('data-placeholder:text-muted-foreground justify-between', this.userClass()),\n\t);\n\n\tprotected readonly _isPlaceholder = computed(() => !this._datePicker.hasDate());\n\n\t/** The id of the button that opens the date picker. */\n\tpublic readonly buttonId = input<string>(`hlm-date-picker-${++HlmDatePickerTrigger._nextId}`);\n\n\t/** @internal The id of the button that opens the date picker, used for labeling. */\n\tpublic readonly triggerId = this.buttonId;\n\n\t/** Forces the invalid state visually, regardless of form control state. */\n\tpublic readonly forceInvalid = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tpublic readonly variant = input<ButtonVariants['variant']>('outline');\n\n\tpublic readonly showTrigger = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n\tprotected readonly _popover = this._datePicker.popover;\n\tprotected readonly _disabled = this._datePicker.disabledState;\n\tprotected readonly _formattedDate = this._datePicker.formattedDate;\n}\n","import { inject, InjectionToken, type ValueProvider } from '@angular/core';\n\nexport interface HlmDateRangePickerConfig<T> {\n\t/**\n\t * If true, the date picker will close when the max selection of dates is reached.\n\t */\n\tautoCloseOnEndSelection: boolean;\n\n\t/**\n\t * Defines how the date should be displayed in the UI.\n\t *\n\t * @param dates\n\t * @returns formatted date\n\t */\n\tformatDates: (dates: [T | null, T | null]) => string;\n\n\t/**\n\t * Defines how the range should be displayed while the input is focused,\n\t * i.e. the format the user is expected to type in.\n\t *\n\t * @param dates\n\t * @returns formatted range in the input/edit format\n\t */\n\tformatInputDates: (dates: [T | null, T | null]) => string;\n\n\t/**\n\t * Defines how the date should be transformed before saving to model/form.\n\t *\n\t * @param dates\n\t * @returns transformed date\n\t */\n\ttransformDates: (dates: [T, T]) => [T, T];\n\n\t/**\n\t * Parse a user-entered string into a date range.\n\t *\n\t * @param value the raw string from the input\n\t * @returns the parsed range, or `null` when the value can't be parsed\n\t */\n\tparseDate: (value: string) => [T, T] | null;\n}\n\nfunction getDefaultConfig<T>(): HlmDateRangePickerConfig<T> {\n\treturn {\n\t\tformatDates: (dates) =>\n\t\t\tdates\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.map((date) => (date instanceof Date ? date.toDateString() : `${date}`))\n\t\t\t\t.join(' - '),\n\t\tformatInputDates: (dates) =>\n\t\t\tdates\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.map((date) => (date instanceof Date ? date.toDateString() : `${date}`))\n\t\t\t\t.join(' - '),\n\t\ttransformDates: (dates) => dates,\n\t\tautoCloseOnEndSelection: false,\n\t\tparseDate: (value) => {\n\t\t\tif (typeof value !== 'string') return null;\n\n\t\t\tconst parts = value.split(' - ').map((part) => part.trim());\n\t\t\tif (parts.length === 0 || parts.length > 2) return null;\n\n\t\t\tconst start = new Date(parts[0]);\n\t\t\tif (isNaN(start.getTime())) return null;\n\n\t\t\tconst end = parts.length === 2 ? new Date(parts[1]) : start;\n\n\t\t\treturn [start, isNaN(end.getTime()) ? start : end] as [T, T];\n\t\t},\n\t};\n}\n\nconst HlmDateRangePickerConfigToken = new InjectionToken<HlmDateRangePickerConfig<unknown>>('HlmDateRangePickerConfig');\n\nexport function provideHlmDateRangePickerConfig<T>(config: Partial<HlmDateRangePickerConfig<T>>): ValueProvider {\n\treturn { provide: HlmDateRangePickerConfigToken, useValue: { ...getDefaultConfig(), ...config } };\n}\n\nexport function injectHlmDateRangePickerConfig<T>(): HlmDateRangePickerConfig<T> {\n\tconst injectedConfig = inject(HlmDateRangePickerConfigToken, { optional: true });\n\treturn injectedConfig ? (injectedConfig as HlmDateRangePickerConfig<T>) : getDefaultConfig();\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCalendar, lucideX } from '@ng-icons/lucide';\nimport {\n\tBrnDateInput,\n\ttype BrnDatePickerTriggerBase,\n\tprovideBrnDatePickerTrigger,\n} from '@spartan-ng/brain/date-picker';\nimport { BrnFieldControl } from '@spartan-ng/brain/field';\nimport { HlmInputGroup, HlmInputGroupImports } from 'yukit-web/helm/input-group';\nimport { injectHlmDateRangePickerConfig } from './hlm-date-range-picker.token';\n\n@Component({\n\tselector: 'hlm-date-range-input',\n\timports: [HlmInputGroupImports, NgIcon],\n\tproviders: [provideIcons({ lucideCalendar, lucideX }), provideBrnDatePickerTrigger(HlmDateRangeInput)],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [HlmInputGroup],\n\ttemplate: `\n\t\t<input\n\t\t\t#input\n\t\t\thlmInputGroupInput\n\t\t\t[value]=\"_inputValue()\"\n\t\t\t[id]=\"inputId()\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[disabled]=\"_disabled()\"\n\t\t\t[forceInvalid]=\"forceInvalid()\"\n\t\t\t[attr.aria-invalid]=\"_ariaInvalid()\"\n\t\t\t[attr.data-invalid]=\"_ariaInvalid()\"\n\t\t\t[attr.data-touched]=\"_touched?.() ? 'true' : null\"\n\t\t\t[attr.data-dirty]=\"_dirty?.() ? 'true' : null\"\n\t\t\t[attr.data-matches-spartan-invalid]=\"_spartanInvalid() ? 'true' : null\"\n\t\t\t(click)=\"_handleClick()\"\n\t\t\t(keydown.arrowDown)=\"_open()\"\n\t\t\t(keydown.enter)=\"_handleEnter($event)\"\n\t\t\t(input)=\"_handleInputChange($event)\"\n\t\t\t(focus)=\"_handleFocus()\"\n\t\t\t(blur)=\"_handleBlur()\"\n\t\t/>\n\t\t<hlm-input-group-addon align=\"inline-end\">\n\t\t\t@if (_showClearButton()) {\n\t\t\t\t<button\n\t\t\t\t\thlmInputGroupButton\n\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t[attr.aria-label]=\"clearAriaLabel()\"\n\t\t\t\t\t(click)=\"_clear()\"\n\t\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t\t>\n\t\t\t\t\t<ng-icon name=\"lucideX\" />\n\t\t\t\t</button>\n\t\t\t}\n\t\t\t<button\n\t\t\t\thlmInputGroupButton\n\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t[attr.aria-label]=\"calendarAriaLabel()\"\n\t\t\t\t(click)=\"_popover().open()\"\n\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t>\n\t\t\t\t<ng-icon name=\"lucideCalendar\" />\n\t\t\t</button>\n\t\t</hlm-input-group-addon>\n\t`,\n})\nexport class HlmDateRangeInput<T> extends BrnDateInput<[T, T]> implements BrnDatePickerTriggerBase {\n\tprivate readonly _config = injectHlmDateRangePickerConfig<T>();\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\n\n\tprivate readonly _invalid = this._fieldControl?.invalid;\n\tprotected readonly _spartanInvalid = computed(() => this.forceInvalid() || this._fieldControl?.spartanInvalid());\n\tprotected readonly _dirty = this._fieldControl?.dirty;\n\tprotected readonly _touched = this._fieldControl?.touched;\n\n\tprotected readonly _ariaInvalid = computed(() => (this._invalid?.() ? 'true' : null));\n\n\t/**\n\t * Parses input text into a date range. Return `null` for invalid\n\t * input - the picker's range is cleared while the text is preserved so\n\t * the user can fix it.\n\t *\n\t * Defaults to `parseDate` from `HlmDateRangePickerConfig`.\n\t */\n\tpublic readonly parseDate = input<(value: string) => [T, T] | null>(this._config.parseDate);\n\n\t/**\n\t * Formats the current range into the input/edit format shown while the\n\t * input is focused. On blur the picker's display format is restored.\n\t *\n\t * Defaults to `formatInputDates` from `HlmDateRangePickerConfig`.\n\t */\n\tpublic readonly formatInputDates = input<(dates: [T | null, T | null]) => string>(this._config.formatInputDates);\n\n\tprotected override parseValue(value: string): [T, T] | null {\n\t\treturn this.parseDate()(value);\n\t}\n\n\tprotected override formatInputValue(value: [T, T]): string {\n\t\treturn this.formatInputDates()(value);\n\t}\n}\n","import type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tforwardRef,\n\tinput,\n\tlinkedSignal,\n\toutput,\n\tsignal,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { type BrnDatePickerBase, BrnDatePickerTriggerToken, provideBrnDatePicker } from '@spartan-ng/brain/date-picker';\nimport { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';\nimport type { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport type { BrnOverlayState } from '@spartan-ng/brain/overlay';\nimport { BrnPopover, type BrnPopoverAlign } from '@spartan-ng/brain/popover';\nimport { HlmCalendarRange } from 'yukit-web/helm/calendar';\nimport { HlmPopoverImports } from 'yukit-web/helm/popover';\nimport { injectHlmDateRangePickerConfig } from './hlm-date-range-picker.token';\n\nexport const HLM_DATE_RANGE_PICKER_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => HlmDateRangePicker),\n\tmulti: true,\n};\n\n@Component({\n\tselector: 'hlm-date-range-picker',\n\timports: [HlmPopoverImports, HlmCalendarRange],\n\tproviders: [\n\t\tHLM_DATE_RANGE_PICKER_VALUE_ACCESSOR,\n\t\tprovideBrnDatePicker(HlmDateRangePicker),\n\t\tprovideBrnLabelable(HlmDateRangePicker),\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [BrnFieldControl],\n\thost: { class: 'block' },\n\ttemplate: `\n\t\t<hlm-popover [align]=\"align()\" sideOffset=\"5\" [state]=\"_popoverState()\" (stateChanged)=\"_onStateChange($event)\">\n\t\t\t<ng-content />\n\n\t\t\t<hlm-popover-content class=\"w-fit p-0\" *hlmPopoverPortal=\"let ctx\">\n\t\t\t\t<ng-content select=\"[hlmDatePickerHeader]\" />\n\t\t\t\t<hlm-calendar-range\n\t\t\t\t\tclass=\"rounded-none border-0\"\n\t\t\t\t\t[startDate]=\"_start()\"\n\t\t\t\t\t[captionLayout]=\"captionLayout()\"\n\t\t\t\t\t[endDate]=\"_end()\"\n\t\t\t\t\t[min]=\"minDate()\"\n\t\t\t\t\t[max]=\"maxDate()\"\n\t\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t\t\t(startDateChange)=\"_handleStartDayChange($event)\"\n\t\t\t\t\t(endDateChange)=\"_handleEndDateChange($event)\"\n\t\t\t\t/>\n\t\t\t\t<ng-content select=\"[hlmDatePickerFooter]\" />\n\t\t\t</hlm-popover-content>\n\t\t</hlm-popover>\n\t`,\n})\nexport class HlmDateRangePicker<T> implements BrnDatePickerBase<[T, T]>, ControlValueAccessor {\n\tprivate readonly _config = injectHlmDateRangePickerConfig<T>();\n\n\tpublic readonly popover = viewChild.required(BrnPopover);\n\n\tprivate readonly _trigger = contentChild(BrnDatePickerTriggerToken);\n\n\tpublic readonly align = input<BrnPopoverAlign>('center');\n\n\t/** Show dropdowns to navigate between months or years. */\n\tpublic readonly captionLayout = input<'dropdown' | 'label' | 'dropdown-months' | 'dropdown-years'>('label');\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly minDate = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly maxDate = input<T>();\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = input<[T, T]>();\n\n\tprotected readonly _mutableDate = linkedSignal(this.date);\n\n\tprotected readonly _start = linkedSignal(() => this._mutableDate()?.[0]);\n\tprotected readonly _end = linkedSignal(() => this._mutableDate()?.[1]);\n\n\t/** If true, the date picker will close when the end date is selected */\n\tpublic readonly autoCloseOnEndSelection = input<boolean, BooleanInput>(this._config.autoCloseOnEndSelection, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Defines how the date should be displayed in the UI. */\n\tpublic readonly formatDates = input<(dates: [T | null, T | null]) => string>(this._config.formatDates);\n\n\t/** Defines how the date should be transformed before saving to model/form. */\n\tpublic readonly transformDates = input<(date: [T, T]) => [T, T]>(this._config.transformDates);\n\n\tprotected readonly _popoverState = signal<BrnOverlayState | null>(null);\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\tpublic readonly formattedDate = computed(() => {\n\t\tconst start = this._start();\n\t\tconst end = this._end();\n\t\treturn start || end ? this.formatDates()([start ?? null, end ?? null]) : undefined;\n\t});\n\n\tpublic readonly dateChange = output<[T, T] | null>();\n\n\tpublic readonly labelableId = computed(() => this._trigger()?.triggerId());\n\n\tpublic readonly hasDate = computed(() => !!this._start() || !!this._end());\n\n\t/** @internal The current raw value, used by inputs to reformat on focus. */\n\tpublic readonly value = computed(() => this._mutableDate() ?? null);\n\n\tprotected _onChange?: ChangeFn<[T, T] | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tprotected _onStateChange(state: BrnOverlayState) {\n\t\tthis._popoverState.set(state);\n\t\tif (state === 'closed') {\n\t\t\tthis._onClose();\n\t\t\tthis._onTouched?.();\n\t\t}\n\t}\n\n\tprotected _handleStartDayChange(value: T | undefined) {\n\t\tthis._start.set(value);\n\t}\n\n\tprotected _handleEndDateChange(value: T | undefined): void {\n\t\tthis._end.set(value);\n\t\tif (this._disabled()) return;\n\n\t\tconst start = this._start();\n\t\tif (start && value) {\n\t\t\tconst transformedDates = this.transformDates()([start, value]);\n\t\t\tthis._mutableDate.set(transformedDates);\n\t\t\tthis.dateChange.emit(transformedDates);\n\t\t\tthis._onChange?.(transformedDates);\n\n\t\t\tif (this.autoCloseOnEndSelection()) {\n\t\t\t\tthis._popoverState.set('closed');\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Commit a range to the picker. Updates the internal model, notifies form\n\t * controls, and emits `dateChange`. Intended to be called from a text input\n\t * that parses user-entered values. Pass `null` to clear the range.\n\t */\n\tpublic updateDate(value: [T, T] | null) {\n\t\tif (this._disabled()) return;\n\n\t\tif (!value) {\n\t\t\tthis._mutableDate.set(undefined);\n\t\t\tthis._start.set(undefined);\n\t\t\tthis._end.set(undefined);\n\t\t\tthis._onChange?.(null);\n\t\t\tthis.dateChange.emit(null);\n\t\t\treturn;\n\t\t}\n\n\t\tconst transformedDates = this.transformDates()(value);\n\t\tthis._mutableDate.set(transformedDates);\n\t\tthis._start.set(transformedDates[0]);\n\t\tthis._end.set(transformedDates[1]);\n\t\tthis._onChange?.(transformedDates);\n\t\tthis.dateChange.emit(transformedDates);\n\t}\n\n\tpublic touched(): void {\n\t\tthis._onTouched?.();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\tpublic writeValue(value: [T, T] | null): void {\n\t\tuntracked(() => {\n\t\t\tif (!value) {\n\t\t\t\tthis._mutableDate.set(undefined);\n\t\t\t} else {\n\t\t\t\tthis._mutableDate.set(this.transformDates()(value));\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic registerOnChange(fn: ChangeFn<[T, T] | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tpublic registerOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tpublic setDisabledState(isDisabled: boolean): void {\n\t\tthis._disabled.set(isDisabled);\n\t}\n\n\tpublic open() {\n\t\tthis._popoverState.set('open');\n\t}\n\n\tpublic close() {\n\t\tthis._popoverState.set('closed');\n\t}\n\n\tpublic reset() {\n\t\tthis._mutableDate.set(undefined);\n\t\tthis._start.set(undefined);\n\t\tthis._end.set(undefined);\n\t\tthis._onChange?.(null);\n\t\tthis.dateChange.emit(null);\n\t}\n\n\tprotected _onClose(): void {\n\t\tconst dates = this._mutableDate();\n\t\tif (this._start() && !this._end() && dates) {\n\t\t\tthis._start.set(dates[0]);\n\t\t\tthis._end.set(dates[1]);\n\t\t}\n\t}\n}\n","import { inject, InjectionToken, type ValueProvider } from '@angular/core';\n\nexport interface HlmMonthYearPickerConfig<T> {\n\t/**\n\t * If true, the date picker will close when a date is selected.\n\t */\n\tautoCloseOnSelect: boolean;\n\n\t/**\n\t * Defines how the date should be displayed in the UI.\n\t *\n\t * @param date\n\t * @returns formatted date\n\t */\n\tformatDate: (date: T) => string;\n\n\t/**\n\t * Defines how the date should be displayed while the input is focused,\n\t * i.e. the format the user is expected to type in.\n\t *\n\t * @param date\n\t * @returns formatted date in the input/edit format\n\t */\n\tformatInputDate: (date: T) => string;\n\n\t/**\n\t * Defines how the date should be transformed before saving to model/form.\n\t *\n\t * @param date\n\t * @returns transformed date\n\t */\n\ttransformDate: (date: T) => T;\n\n\t/**\n\t * Parse a user-entered string into a date.\n\t *\n\t * @param value the raw string from the input\n\t * @returns the parsed date, or `null` when the value can't be parsed\n\t */\n\tparseDate: (value: string) => T | null;\n}\n\nconst mmYYYY = <T>(date: T) => {\n\tif (!(date instanceof Date)) return `${date}`;\n\n\tconst month = String(date.getMonth() + 1).padStart(2, '0');\n\tconst year = date.getFullYear();\n\n\treturn `${month}/${year}`;\n};\n\nfunction getDefaultConfig<T>(): HlmMonthYearPickerConfig<T> {\n\treturn {\n\t\tformatDate: mmYYYY,\n\t\tformatInputDate: mmYYYY,\n\t\ttransformDate: (date) => date,\n\t\tparseDate: (value) => {\n\t\t\tif (typeof value !== 'string') return null;\n\n\t\t\tconst match = value.match(/^(\\d{2})\\/(\\d{4})$/);\n\t\t\tif (!match) return null;\n\n\t\t\tconst month = Number(match[1]);\n\t\t\tconst year = Number(match[2]);\n\n\t\t\tif (month < 1 || month > 12) return null;\n\n\t\t\tconst date = new Date(year, month - 1, 1);\n\n\t\t\treturn date as T;\n\t\t},\n\t\tautoCloseOnSelect: false,\n\t};\n}\n\nconst HlmMonthYearPickerConfigToken = new InjectionToken<HlmMonthYearPickerConfig<unknown>>('HlmMonthYearPickerConfig');\n\nexport function provideHlmMonthYearPickerConfig<T>(config: Partial<HlmMonthYearPickerConfig<T>>): ValueProvider {\n\treturn { provide: HlmMonthYearPickerConfigToken, useValue: { ...getDefaultConfig(), ...config } };\n}\n\nexport function injectHlmMonthYearPickerConfig<T>(): HlmMonthYearPickerConfig<T> {\n\tconst injectedConfig = inject(HlmMonthYearPickerConfigToken, { optional: true });\n\treturn injectedConfig ? (injectedConfig as HlmMonthYearPickerConfig<T>) : getDefaultConfig();\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCalendar, lucideX } from '@ng-icons/lucide';\nimport {\n\tBrnDateInput,\n\ttype BrnDatePickerTriggerBase,\n\tprovideBrnDatePickerTrigger,\n} from '@spartan-ng/brain/date-picker';\nimport { BrnFieldControl } from '@spartan-ng/brain/field';\nimport { HlmInputGroup, HlmInputGroupImports } from 'yukit-web/helm/input-group';\nimport { injectHlmMonthYearPickerConfig } from './hlm-month-year-picker.token';\n\n@Component({\n\tselector: 'hlm-month-year-input',\n\timports: [HlmInputGroupImports, NgIcon],\n\tproviders: [provideIcons({ lucideCalendar, lucideX }), provideBrnDatePickerTrigger(HlmMonthYearInput)],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [HlmInputGroup],\n\ttemplate: `\n\t\t<input\n\t\t\t#input\n\t\t\thlmInputGroupInput\n\t\t\t[value]=\"_inputValue()\"\n\t\t\t[id]=\"inputId()\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[disabled]=\"_disabled()\"\n\t\t\t[forceInvalid]=\"forceInvalid()\"\n\t\t\t[attr.aria-invalid]=\"_ariaInvalid()\"\n\t\t\t[attr.data-invalid]=\"_ariaInvalid()\"\n\t\t\t[attr.data-touched]=\"_touched?.() ? 'true' : null\"\n\t\t\t[attr.data-dirty]=\"_dirty?.() ? 'true' : null\"\n\t\t\t[attr.data-matches-spartan-invalid]=\"_spartanInvalid() ? 'true' : null\"\n\t\t\t(click)=\"_handleClick()\"\n\t\t\t(keydown.arrowDown)=\"_open()\"\n\t\t\t(keydown.enter)=\"_handleEnter($event)\"\n\t\t\t(input)=\"_handleInputChange($event)\"\n\t\t\t(focus)=\"_handleFocus()\"\n\t\t\t(blur)=\"_handleBlur()\"\n\t\t/>\n\t\t<hlm-input-group-addon align=\"inline-end\">\n\t\t\t@if (_showClearButton()) {\n\t\t\t\t<button\n\t\t\t\t\thlmInputGroupButton\n\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t[attr.aria-label]=\"clearAriaLabel()\"\n\t\t\t\t\t(click)=\"_clear()\"\n\t\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t\t>\n\t\t\t\t\t<ng-icon name=\"lucideX\" />\n\t\t\t\t</button>\n\t\t\t}\n\t\t\t<button\n\t\t\t\thlmInputGroupButton\n\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t[attr.aria-label]=\"calendarAriaLabel()\"\n\t\t\t\t(click)=\"_popover().open()\"\n\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t>\n\t\t\t\t<ng-icon name=\"lucideCalendar\" />\n\t\t\t</button>\n\t\t</hlm-input-group-addon>\n\t`,\n})\nexport class HlmMonthYearInput<T> extends BrnDateInput<T> implements BrnDatePickerTriggerBase {\n\tprivate readonly _config = injectHlmMonthYearPickerConfig<T>();\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\n\n\tprivate readonly _invalid = this._fieldControl?.invalid;\n\tprotected readonly _spartanInvalid = computed(() => this.forceInvalid() || this._fieldControl?.spartanInvalid());\n\tprotected readonly _dirty = this._fieldControl?.dirty;\n\tprotected readonly _touched = this._fieldControl?.touched;\n\n\tprotected readonly _ariaInvalid = computed(() => (this._invalid?.() ? 'true' : null));\n\n\t/**\n\t * Parses input text into a date value. Return `null` for invalid\n\t * input - the picker's date is cleared while the text is preserved so\n\t * the user can fix it.\n\t *\n\t * Defaults to `parseDate` from `HlmMonthYearPickerConfig`.\n\t */\n\tpublic readonly parseDate = input<(value: string) => T | null>(this._config.parseDate);\n\n\t/**\n\t * Formats the current date into the input/edit format shown while the\n\t * input is focused. On blur the picker's display format is restored.\n\t *\n\t * Defaults to `formatInputDate` from `HlmMonthYearPickerConfig`.\n\t */\n\tpublic readonly formatInputDate = input<(date: T) => string>(this._config.formatInputDate);\n\n\tprotected override parseValue(value: string): T | null {\n\t\treturn this.parseDate()(value);\n\t}\n\n\tprotected override formatInputValue(value: T): string {\n\t\treturn this.formatInputDate()(value);\n\t}\n}\n","import type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tforwardRef,\n\tinput,\n\tlinkedSignal,\n\toutput,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { type BrnDatePickerBase, BrnDatePickerTriggerToken, provideBrnDatePicker } from '@spartan-ng/brain/date-picker';\nimport { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';\nimport type { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport type { BrnOverlayState } from '@spartan-ng/brain/overlay';\nimport { BrnPopover, type BrnPopoverAlign } from '@spartan-ng/brain/popover';\nimport { HlmCalendarImports } from 'yukit-web/helm/calendar';\nimport { HlmPopoverImports } from 'yukit-web/helm/popover';\nimport { injectHlmMonthYearPickerConfig } from './hlm-month-year-picker.token';\n\nexport const HLM_MONTH_YEAR_PICKER_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => HlmMonthYearPicker),\n\tmulti: true,\n};\n@Component({\n\tselector: 'hlm-month-year-picker',\n\timports: [HlmPopoverImports, HlmCalendarImports],\n\tproviders: [\n\t\tHLM_MONTH_YEAR_PICKER_VALUE_ACCESSOR,\n\t\tprovideBrnDatePicker(HlmMonthYearPicker),\n\t\tprovideBrnLabelable(HlmMonthYearPicker),\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [BrnFieldControl],\n\thost: { class: 'block' },\n\ttemplate: `\n\t\t<hlm-popover [align]=\"align()\" sideOffset=\"5\" [state]=\"_popoverState()\" (stateChanged)=\"_onStateChange($event)\">\n\t\t\t<ng-content />\n\n\t\t\t<hlm-popover-content class=\"w-fit p-0\" *hlmPopoverPortal=\"let ctx\">\n\t\t\t\t<ng-content select=\"[hlmDatePickerHeader]\" />\n\t\t\t\t<hlm-month-year-calendar\n\t\t\t\t\tclass=\"rounded-none border-0\"\n\t\t\t\t\t[date]=\"_mutableDate()\"\n\t\t\t\t\t[defaultFocusedDate]=\"_mutableDate() ?? defaultFocusedDate()\"\n\t\t\t\t\t[min]=\"minDate()\"\n\t\t\t\t\t[max]=\"maxDate()\"\n\t\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t\t\t(dateChange)=\"_handleChange($event)\"\n\t\t\t\t/>\n\t\t\t\t<ng-content select=\"[hlmDatePickerFooter]\" />\n\t\t\t</hlm-popover-content>\n\t\t</hlm-popover>\n\t`,\n})\nexport class HlmMonthYearPicker<T> implements BrnDatePickerBase<T>, ControlValueAccessor {\n\tprivate readonly _config = injectHlmMonthYearPickerConfig<T>();\n\n\tpublic readonly popover = viewChild.required(BrnPopover);\n\n\tprivate readonly _trigger = contentChild(BrnDatePickerTriggerToken);\n\n\tpublic readonly align = input<BrnPopoverAlign>('center');\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly minDate = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly maxDate = input<T>();\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = input<T>();\n\n\t/** The date the calendar focuses on first open when no date is selected. */\n\tpublic readonly defaultFocusedDate = input<T>();\n\n\tprotected readonly _mutableDate = linkedSignal(this.date);\n\n\t/** If true, the date picker will close when a date is selected. */\n\tpublic readonly autoCloseOnSelect = input<boolean, BooleanInput>(this._config.autoCloseOnSelect, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Defines how the date should be displayed in the UI. */\n\tpublic readonly formatDate = input<(date: T) => string>(this._config.formatDate);\n\n\t/** Defines how the date should be transformed before saving to model/form. */\n\tpublic readonly transformDate = input<(date: T) => T>(this._config.transformDate);\n\n\tprotected readonly _popoverState = signal<BrnOverlayState | null>(null);\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\tpublic readonly formattedDate = computed(() => {\n\t\tconst date = this._mutableDate();\n\t\treturn date ? this.formatDate()(date) : undefined;\n\t});\n\n\tpublic readonly dateChange = output<T | null>();\n\n\tpublic readonly labelableId = computed(() => this._trigger()?.triggerId());\n\n\tpublic readonly hasDate = computed(() => !!this._mutableDate());\n\n\t/** @internal The current raw value, used by inputs to reformat on focus. */\n\tpublic readonly value = computed(() => this._mutableDate() ?? null);\n\n\tprotected _onChange?: ChangeFn<T | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tprotected _onStateChange(state: BrnOverlayState) {\n\t\tthis._popoverState.set(state);\n\t\tif (state === 'closed') this._onTouched?.();\n\t}\n\n\tprotected _handleChange(value: T | undefined) {\n\t\tif (this._disabled()) return;\n\t\tthis.updateDate(value ?? null);\n\n\t\tif (this.autoCloseOnSelect()) {\n\t\t\tthis._popoverState.set('closed');\n\t\t}\n\t}\n\n\t/**\n\t * Commit a date to the picker. Updates the internal model, notifies form\n\t * controls, and emits `dateChange`. Unlike `_handleChange`, this does not\n\t * close the popover - it's intended to be called from a text input that\n\t * is parsing user-entered values while typing.\n\t */\n\tpublic updateDate(value: T | null) {\n\t\tif (this._disabled()) return;\n\t\tconst transformedDate = value != null ? this.transformDate()(value) : undefined;\n\n\t\tthis._mutableDate.set(transformedDate);\n\t\tthis._onChange?.(transformedDate ?? null);\n\t\tthis.dateChange.emit(transformedDate ?? null);\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\tpublic writeValue(value: T | null): void {\n\t\tthis._mutableDate.set(value ? this.transformDate()(value) : undefined);\n\t}\n\n\tpublic registerOnChange(fn: ChangeFn<T | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tpublic registerOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tpublic touched(): void {\n\t\tthis._onTouched?.();\n\t}\n\n\tpublic setDisabledState(isDisabled: boolean): void {\n\t\tthis._disabled.set(isDisabled);\n\t}\n\n\tpublic open() {\n\t\tthis._popoverState.set('open');\n\t}\n\n\tpublic close() {\n\t\tthis._popoverState.set('closed');\n\t}\n\n\tpublic reset() {\n\t\tthis._mutableDate.set(undefined);\n\t\tthis._onChange?.(null);\n\t\tthis.dateChange.emit(null);\n\t}\n}\n","import { HlmDateMultiInput } from './lib/hlm-date-multi-input';\nimport { HlmDatePicker } from './lib/hlm-date-picker';\nimport { HlmDatePickerAnchor } from './lib/hlm-date-picker-anchor';\nimport { HlmDatePickerInput } from './lib/hlm-date-picker-input';\nimport { HlmDatePickerMulti } from './lib/hlm-date-picker-multi';\nimport { HlmDatePickerTrigger } from './lib/hlm-date-picker-trigger';\nimport { HlmDateRangeInput } from './lib/hlm-date-range-input';\nimport { HlmDateRangePicker } from './lib/hlm-date-range-picker';\nimport { HlmMonthYearInput } from './lib/hlm-month-year-input';\nimport { HlmMonthYearPicker } from './lib/hlm-month-year-picker';\n\nexport * from './lib/hlm-date-multi-input';\nexport * from './lib/hlm-date-picker';\nexport * from './lib/hlm-date-picker-anchor';\nexport * from './lib/hlm-date-picker-input';\nexport * from './lib/hlm-date-picker-multi';\nexport * from './lib/hlm-date-picker-multi.token';\nexport * from './lib/hlm-date-picker-trigger';\nexport * from './lib/hlm-date-picker.token';\nexport * from './lib/hlm-date-range-input';\nexport * from './lib/hlm-date-range-picker';\nexport * from './lib/hlm-date-range-picker.token';\nexport * from './lib/hlm-month-year-input';\nexport * from './lib/hlm-month-year-picker';\nexport * from './lib/hlm-month-year-picker.token';\n\nexport const HlmDatePickerImports = [\n\tHlmDatePicker,\n\tHlmDatePickerAnchor,\n\tHlmDatePickerInput,\n\tHlmDatePickerMulti,\n\tHlmDateMultiInput,\n\tHlmDateRangeInput,\n\tHlmDateRangePicker,\n\tHlmDatePickerTrigger,\n\tHlmMonthYearPicker,\n\tHlmMonthYearInput,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["getDefaultConfig","i1"],"mappings":"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"}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, computed, effect, untracked, Directive, forwardRef, ChangeDetectionStrategy, Component, inject, booleanAttribute, Injectable } from '@angular/core';
|
|
3
|
+
import * as i1 from '@spartan-ng/brain/dialog';
|
|
4
|
+
import { BrnDialogOverlay, BrnDialog, provideBrnDialogDefaultOptions, BrnDialogClose, BrnDialogRef, injectBrnDialogContext, BrnDialogDescription, BrnDialogContent, BrnDialogTitle, BrnDialogTrigger, BrnDialogService, cssClassesToArray } from '@spartan-ng/brain/dialog';
|
|
5
|
+
import { injectCustomClassSettable } from '@spartan-ng/brain/core';
|
|
6
|
+
import { hlm, classes } from 'yukit-web/helm/utils';
|
|
7
|
+
import { NgComponentOutlet } from '@angular/common';
|
|
8
|
+
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
9
|
+
import { lucideX } from '@ng-icons/lucide';
|
|
10
|
+
import { HlmButton } from 'yukit-web/helm/button';
|
|
11
|
+
|
|
12
|
+
const hlmDialogOverlayClass = hlm('data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 isolate bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs');
|
|
13
|
+
class HlmDialogOverlay {
|
|
14
|
+
constructor() {
|
|
15
|
+
this._classSettable = injectCustomClassSettable({ optional: true, host: true });
|
|
16
|
+
this.userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
|
|
17
|
+
this._computedClass = computed(() => hlm(hlmDialogOverlayClass, this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
|
|
18
|
+
effect(() => {
|
|
19
|
+
const newClass = this._computedClass();
|
|
20
|
+
untracked(() => this._classSettable?.setClassToCustomElement(newClass));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogOverlay, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
24
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.8", type: HlmDialogOverlay, isStandalone: true, selector: "[hlmDialogOverlay],hlm-dialog-overlay", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.BrnDialogOverlay }], ngImport: i0 }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogOverlay, decorators: [{
|
|
27
|
+
type: Directive,
|
|
28
|
+
args: [{
|
|
29
|
+
selector: '[hlmDialogOverlay],hlm-dialog-overlay',
|
|
30
|
+
hostDirectives: [BrnDialogOverlay],
|
|
31
|
+
}]
|
|
32
|
+
}], ctorParameters: () => [], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
33
|
+
|
|
34
|
+
class HlmDialog extends BrnDialog {
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialog, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
36
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.8", type: HlmDialog, isStandalone: true, selector: "hlm-dialog", providers: [
|
|
37
|
+
{
|
|
38
|
+
provide: BrnDialog,
|
|
39
|
+
useExisting: forwardRef(() => HlmDialog),
|
|
40
|
+
},
|
|
41
|
+
provideBrnDialogDefaultOptions({
|
|
42
|
+
// add custom options here
|
|
43
|
+
}),
|
|
44
|
+
], exportAs: ["hlmDialog"], usesInheritance: true, ngImport: i0, template: `
|
|
45
|
+
<hlm-dialog-overlay />
|
|
46
|
+
<ng-content />
|
|
47
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: HlmDialogOverlay, selector: "[hlmDialogOverlay],hlm-dialog-overlay", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialog, decorators: [{
|
|
50
|
+
type: Component,
|
|
51
|
+
args: [{
|
|
52
|
+
selector: 'hlm-dialog',
|
|
53
|
+
exportAs: 'hlmDialog',
|
|
54
|
+
imports: [HlmDialogOverlay],
|
|
55
|
+
providers: [
|
|
56
|
+
{
|
|
57
|
+
provide: BrnDialog,
|
|
58
|
+
useExisting: forwardRef(() => HlmDialog),
|
|
59
|
+
},
|
|
60
|
+
provideBrnDialogDefaultOptions({
|
|
61
|
+
// add custom options here
|
|
62
|
+
}),
|
|
63
|
+
],
|
|
64
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
65
|
+
template: `
|
|
66
|
+
<hlm-dialog-overlay />
|
|
67
|
+
<ng-content />
|
|
68
|
+
`,
|
|
69
|
+
}]
|
|
70
|
+
}] });
|
|
71
|
+
|
|
72
|
+
class HlmDialogClose {
|
|
73
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogClose, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
74
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.8", type: HlmDialogClose, isStandalone: true, selector: "button[hlmDialogClose]", host: { attributes: { "data-slot": "dialog-close" } }, hostDirectives: [{ directive: i1.BrnDialogClose }], ngImport: i0 }); }
|
|
75
|
+
}
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogClose, decorators: [{
|
|
77
|
+
type: Directive,
|
|
78
|
+
args: [{
|
|
79
|
+
selector: 'button[hlmDialogClose]',
|
|
80
|
+
hostDirectives: [BrnDialogClose],
|
|
81
|
+
host: { 'data-slot': 'dialog-close' },
|
|
82
|
+
}]
|
|
83
|
+
}] });
|
|
84
|
+
|
|
85
|
+
class HlmDialogContent {
|
|
86
|
+
constructor() {
|
|
87
|
+
this._dialogRef = inject(BrnDialogRef);
|
|
88
|
+
this._dialogContext = injectBrnDialogContext({ optional: true });
|
|
89
|
+
this.showCloseButton = input(this._dialogContext?.$showCloseButton ?? true, { ...(ngDevMode ? { debugName: "showCloseButton" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
90
|
+
this.state = computed(() => this._dialogRef?.state() ?? 'closed', ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
|
|
91
|
+
this.component = this._dialogContext?.$component;
|
|
92
|
+
this._dynamicComponentClass = this._dialogContext?.$dynamicComponentClass;
|
|
93
|
+
classes(() => ['bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-4 rounded-xl p-4 text-sm ring-1 duration-100 sm:max-w-sm relative mx-auto w-full outline-none sm:mx-0', this._dynamicComponentClass]);
|
|
94
|
+
}
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: HlmDialogContent, isStandalone: true, selector: "hlm-dialog-content", inputs: { showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "dialog-content" }, properties: { "attr.data-state": "state()" } }, providers: [provideIcons({ lucideX })], ngImport: i0, template: `
|
|
97
|
+
@if (component) {
|
|
98
|
+
<ng-container [ngComponentOutlet]="component" />
|
|
99
|
+
} @else {
|
|
100
|
+
<ng-content />
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@if (showCloseButton()) {
|
|
104
|
+
<button hlmBtn variant="ghost" size="icon-sm" class="absolute end-2 top-2" hlmDialogClose>
|
|
105
|
+
<span class="sr-only">close</span>
|
|
106
|
+
<ng-icon name="lucideX" />
|
|
107
|
+
</button>
|
|
108
|
+
}
|
|
109
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: HlmButton, selector: "button[hlmBtn], a[hlmBtn]", inputs: ["variant", "size"], exportAs: ["hlmBtn"] }, { kind: "directive", type: HlmDialogClose, selector: "button[hlmDialogClose]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
110
|
+
}
|
|
111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogContent, decorators: [{
|
|
112
|
+
type: Component,
|
|
113
|
+
args: [{
|
|
114
|
+
selector: 'hlm-dialog-content',
|
|
115
|
+
imports: [NgComponentOutlet, HlmButton, HlmDialogClose, NgIcon],
|
|
116
|
+
providers: [provideIcons({ lucideX })],
|
|
117
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
118
|
+
host: {
|
|
119
|
+
'data-slot': 'dialog-content',
|
|
120
|
+
'[attr.data-state]': 'state()',
|
|
121
|
+
},
|
|
122
|
+
template: `
|
|
123
|
+
@if (component) {
|
|
124
|
+
<ng-container [ngComponentOutlet]="component" />
|
|
125
|
+
} @else {
|
|
126
|
+
<ng-content />
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@if (showCloseButton()) {
|
|
130
|
+
<button hlmBtn variant="ghost" size="icon-sm" class="absolute end-2 top-2" hlmDialogClose>
|
|
131
|
+
<span class="sr-only">close</span>
|
|
132
|
+
<ng-icon name="lucideX" />
|
|
133
|
+
</button>
|
|
134
|
+
}
|
|
135
|
+
`,
|
|
136
|
+
}]
|
|
137
|
+
}], ctorParameters: () => [], propDecorators: { showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }] } });
|
|
138
|
+
|
|
139
|
+
class HlmDialogDescription {
|
|
140
|
+
constructor() {
|
|
141
|
+
classes(() => 'text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3');
|
|
142
|
+
}
|
|
143
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
144
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.8", type: HlmDialogDescription, isStandalone: true, selector: "[hlmDialogDescription]", host: { attributes: { "data-slot": "dialog-description" } }, hostDirectives: [{ directive: i1.BrnDialogDescription }], ngImport: i0 }); }
|
|
145
|
+
}
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogDescription, decorators: [{
|
|
147
|
+
type: Directive,
|
|
148
|
+
args: [{
|
|
149
|
+
selector: '[hlmDialogDescription]',
|
|
150
|
+
hostDirectives: [BrnDialogDescription],
|
|
151
|
+
host: { 'data-slot': 'dialog-description' },
|
|
152
|
+
}]
|
|
153
|
+
}], ctorParameters: () => [] });
|
|
154
|
+
|
|
155
|
+
class HlmDialogFooter {
|
|
156
|
+
constructor() {
|
|
157
|
+
classes(() => 'bg-muted/50 -mx-4 -mb-4 rounded-b-xl border-t p-4 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end');
|
|
158
|
+
}
|
|
159
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
160
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.8", type: HlmDialogFooter, isStandalone: true, selector: "[hlmDialogFooter],hlm-dialog-footer", host: { attributes: { "data-slot": "dialog-footer" } }, ngImport: i0 }); }
|
|
161
|
+
}
|
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogFooter, decorators: [{
|
|
163
|
+
type: Directive,
|
|
164
|
+
args: [{
|
|
165
|
+
selector: '[hlmDialogFooter],hlm-dialog-footer',
|
|
166
|
+
host: { 'data-slot': 'dialog-footer' },
|
|
167
|
+
}]
|
|
168
|
+
}], ctorParameters: () => [] });
|
|
169
|
+
|
|
170
|
+
class HlmDialogHeader {
|
|
171
|
+
constructor() {
|
|
172
|
+
classes(() => 'gap-2 flex flex-col');
|
|
173
|
+
}
|
|
174
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
175
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.8", type: HlmDialogHeader, isStandalone: true, selector: "[hlmDialogHeader],hlm-dialog-header", host: { attributes: { "data-slot": "dialog-header" } }, ngImport: i0 }); }
|
|
176
|
+
}
|
|
177
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogHeader, decorators: [{
|
|
178
|
+
type: Directive,
|
|
179
|
+
args: [{
|
|
180
|
+
selector: '[hlmDialogHeader],hlm-dialog-header',
|
|
181
|
+
host: { 'data-slot': 'dialog-header' },
|
|
182
|
+
}]
|
|
183
|
+
}], ctorParameters: () => [] });
|
|
184
|
+
|
|
185
|
+
class HlmDialogPortal {
|
|
186
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
187
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.8", type: HlmDialogPortal, isStandalone: true, selector: "[hlmDialogPortal]", hostDirectives: [{ directive: i1.BrnDialogContent, inputs: ["context", "context", "class", "class"] }], ngImport: i0 }); }
|
|
188
|
+
}
|
|
189
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogPortal, decorators: [{
|
|
190
|
+
type: Directive,
|
|
191
|
+
args: [{
|
|
192
|
+
selector: '[hlmDialogPortal]',
|
|
193
|
+
hostDirectives: [{ directive: BrnDialogContent, inputs: ['context', 'class'] }],
|
|
194
|
+
}]
|
|
195
|
+
}] });
|
|
196
|
+
|
|
197
|
+
class HlmDialogTitle {
|
|
198
|
+
constructor() {
|
|
199
|
+
classes(() => 'text-base leading-none font-medium');
|
|
200
|
+
}
|
|
201
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
202
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.8", type: HlmDialogTitle, isStandalone: true, selector: "[hlmDialogTitle]", host: { attributes: { "data-slot": "dialog-title" } }, hostDirectives: [{ directive: i1.BrnDialogTitle }], ngImport: i0 }); }
|
|
203
|
+
}
|
|
204
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogTitle, decorators: [{
|
|
205
|
+
type: Directive,
|
|
206
|
+
args: [{
|
|
207
|
+
selector: '[hlmDialogTitle]',
|
|
208
|
+
hostDirectives: [BrnDialogTitle],
|
|
209
|
+
host: { 'data-slot': 'dialog-title' },
|
|
210
|
+
}]
|
|
211
|
+
}], ctorParameters: () => [] });
|
|
212
|
+
|
|
213
|
+
class HlmDialogTrigger {
|
|
214
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
215
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.8", type: HlmDialogTrigger, isStandalone: true, selector: "button[hlmDialogTrigger],button[hlmDialogTriggerFor]", host: { attributes: { "data-slot": "dialog-trigger" } }, hostDirectives: [{ directive: i1.BrnDialogTrigger, inputs: ["id", "id", "brnDialogTriggerFor", "hlmDialogTriggerFor", "type", "type"] }], ngImport: i0 }); }
|
|
216
|
+
}
|
|
217
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogTrigger, decorators: [{
|
|
218
|
+
type: Directive,
|
|
219
|
+
args: [{
|
|
220
|
+
selector: 'button[hlmDialogTrigger],button[hlmDialogTriggerFor]',
|
|
221
|
+
hostDirectives: [{ directive: BrnDialogTrigger, inputs: ['id', 'brnDialogTriggerFor: hlmDialogTriggerFor', 'type'] }],
|
|
222
|
+
host: { 'data-slot': 'dialog-trigger' },
|
|
223
|
+
}]
|
|
224
|
+
}] });
|
|
225
|
+
|
|
226
|
+
class HlmDialogService {
|
|
227
|
+
constructor() {
|
|
228
|
+
this._brnDialogService = inject(BrnDialogService);
|
|
229
|
+
}
|
|
230
|
+
open(component, options) {
|
|
231
|
+
const mergedOptions = {
|
|
232
|
+
...(options ?? {}),
|
|
233
|
+
backdropClass: cssClassesToArray(`${hlmDialogOverlayClass} ${options?.backdropClass ?? ''}`),
|
|
234
|
+
context: {
|
|
235
|
+
...(options?.context && typeof options.context === 'object' ? options.context : {}),
|
|
236
|
+
$component: component,
|
|
237
|
+
$dynamicComponentClass: options?.contentClass,
|
|
238
|
+
$showCloseButton: options?.showCloseButton,
|
|
239
|
+
},
|
|
240
|
+
};
|
|
241
|
+
return this._brnDialogService.open(HlmDialogContent, undefined, mergedOptions.context, mergedOptions);
|
|
242
|
+
}
|
|
243
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
244
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogService, providedIn: 'root' }); }
|
|
245
|
+
}
|
|
246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HlmDialogService, decorators: [{
|
|
247
|
+
type: Injectable,
|
|
248
|
+
args: [{
|
|
249
|
+
providedIn: 'root',
|
|
250
|
+
}]
|
|
251
|
+
}] });
|
|
252
|
+
|
|
253
|
+
const HlmDialogImports = [
|
|
254
|
+
HlmDialog,
|
|
255
|
+
HlmDialogContent,
|
|
256
|
+
HlmDialogDescription,
|
|
257
|
+
HlmDialogFooter,
|
|
258
|
+
HlmDialogHeader,
|
|
259
|
+
HlmDialogOverlay,
|
|
260
|
+
HlmDialogPortal,
|
|
261
|
+
HlmDialogTitle,
|
|
262
|
+
HlmDialogTrigger,
|
|
263
|
+
HlmDialogClose,
|
|
264
|
+
];
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Generated bundle index. Do not edit.
|
|
268
|
+
*/
|
|
269
|
+
|
|
270
|
+
export { HlmDialog, HlmDialogClose, HlmDialogContent, HlmDialogDescription, HlmDialogFooter, HlmDialogHeader, HlmDialogImports, HlmDialogOverlay, HlmDialogPortal, HlmDialogService, HlmDialogTitle, HlmDialogTrigger, hlmDialogOverlayClass };
|
|
271
|
+
//# sourceMappingURL=yukit-web-helm-dialog.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yukit-web-helm-dialog.mjs","sources":["../../../projects/yukit-web/helm/dialog/src/lib/hlm-dialog-overlay.ts","../../../projects/yukit-web/helm/dialog/src/lib/hlm-dialog.ts","../../../projects/yukit-web/helm/dialog/src/lib/hlm-dialog-close.ts","../../../projects/yukit-web/helm/dialog/src/lib/hlm-dialog-content.ts","../../../projects/yukit-web/helm/dialog/src/lib/hlm-dialog-description.ts","../../../projects/yukit-web/helm/dialog/src/lib/hlm-dialog-footer.ts","../../../projects/yukit-web/helm/dialog/src/lib/hlm-dialog-header.ts","../../../projects/yukit-web/helm/dialog/src/lib/hlm-dialog-portal.ts","../../../projects/yukit-web/helm/dialog/src/lib/hlm-dialog-title.ts","../../../projects/yukit-web/helm/dialog/src/lib/hlm-dialog-trigger.ts","../../../projects/yukit-web/helm/dialog/src/lib/hlm-dialog.service.ts","../../../projects/yukit-web/helm/dialog/src/index.ts","../../../projects/yukit-web/helm/dialog/src/yukit-web-helm-dialog.ts"],"sourcesContent":["import { computed, Directive, effect, input, untracked } from '@angular/core';\nimport { injectCustomClassSettable } from '@spartan-ng/brain/core';\nimport { BrnDialogOverlay } from '@spartan-ng/brain/dialog';\nimport { hlm } from 'yukit-web/helm/utils';\nimport type { ClassValue } from 'clsx';\n\nexport const hlmDialogOverlayClass = hlm('data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 isolate bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs');\n\n@Directive({\n\tselector: '[hlmDialogOverlay],hlm-dialog-overlay',\n\thostDirectives: [BrnDialogOverlay],\n})\nexport class HlmDialogOverlay {\n\tprivate readonly _classSettable = injectCustomClassSettable({ optional: true, host: true });\n\n\tpublic readonly userClass = input<ClassValue>('', { alias: 'class' });\n\tprotected readonly _computedClass = computed(() => hlm(hlmDialogOverlayClass, this.userClass()));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst newClass = this._computedClass();\n\t\t\tuntracked(() => this._classSettable?.setClassToCustomElement(newClass));\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\nimport { BrnDialog, provideBrnDialogDefaultOptions } from '@spartan-ng/brain/dialog';\nimport { HlmDialogOverlay } from './hlm-dialog-overlay';\n\n@Component({\n\tselector: 'hlm-dialog',\n\texportAs: 'hlmDialog',\n\timports: [HlmDialogOverlay],\n\tproviders: [\n\t\t{\n\t\t\tprovide: BrnDialog,\n\t\t\tuseExisting: forwardRef(() => HlmDialog),\n\t\t},\n\t\tprovideBrnDialogDefaultOptions({\n\t\t\t// add custom options here\n\t\t}),\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<hlm-dialog-overlay />\n\t\t<ng-content />\n\t`,\n})\nexport class HlmDialog extends BrnDialog {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogClose } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: 'button[hlmDialogClose]',\n\thostDirectives: [BrnDialogClose],\n\thost: { 'data-slot': 'dialog-close' },\n})\nexport class HlmDialogClose {}\n","import type { BooleanInput } from '@angular/cdk/coercion';\nimport type { ComponentType } from '@angular/cdk/portal';\nimport { NgComponentOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideX } from '@ng-icons/lucide';\nimport { BrnDialogRef, injectBrnDialogContext } from '@spartan-ng/brain/dialog';\nimport { HlmButton } from 'yukit-web/helm/button';\n\nimport { classes } from 'yukit-web/helm/utils';\nimport { HlmDialogClose } from './hlm-dialog-close';\n\ntype HlmDialogContentContext = {\n\t$component?: ComponentType<unknown>;\n\t$dynamicComponentClass?: string;\n\t$showCloseButton?: boolean;\n};\n\n@Component({\n\tselector: 'hlm-dialog-content',\n\timports: [NgComponentOutlet, HlmButton, HlmDialogClose, NgIcon],\n\tproviders: [provideIcons({ lucideX })],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\t'data-slot': 'dialog-content',\n\t\t'[attr.data-state]': 'state()',\n\t},\n\ttemplate: `\n\t\t@if (component) {\n\t\t\t<ng-container [ngComponentOutlet]=\"component\" />\n\t\t} @else {\n\t\t\t<ng-content />\n\t\t}\n\n\t\t@if (showCloseButton()) {\n\t\t\t<button hlmBtn variant=\"ghost\" size=\"icon-sm\" class=\"absolute end-2 top-2\" hlmDialogClose>\n\t\t\t\t<span class=\"sr-only\">close</span>\n\t\t\t\t<ng-icon name=\"lucideX\" />\n\t\t\t</button>\n\t\t}\n\t`,\n})\nexport class HlmDialogContent {\n\tprivate readonly _dialogRef = inject(BrnDialogRef);\n\tprivate readonly _dialogContext = injectBrnDialogContext<HlmDialogContentContext | null>({ optional: true });\n\n\tpublic readonly showCloseButton = input<boolean, BooleanInput>(this._dialogContext?.$showCloseButton ?? true, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tpublic readonly state = computed(() => this._dialogRef?.state() ?? 'closed');\n\n\tpublic readonly component = this._dialogContext?.$component;\n\tprivate readonly _dynamicComponentClass = this._dialogContext?.$dynamicComponentClass;\n\n\tconstructor() {\n\t\tclasses(() => ['bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-4 rounded-xl p-4 text-sm ring-1 duration-100 sm:max-w-sm relative mx-auto w-full outline-none sm:mx-0', this._dynamicComponentClass]);\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { BrnDialogDescription } from '@spartan-ng/brain/dialog';\nimport { classes } from 'yukit-web/helm/utils';\n\n@Directive({\n\tselector: '[hlmDialogDescription]',\n\thostDirectives: [BrnDialogDescription],\n\thost: { 'data-slot': 'dialog-description' },\n})\nexport class HlmDialogDescription {\n\tconstructor() {\n\t\tclasses(() => 'text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3');\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { classes } from 'yukit-web/helm/utils';\n\n@Directive({\n\tselector: '[hlmDialogFooter],hlm-dialog-footer',\n\thost: { 'data-slot': 'dialog-footer' },\n})\nexport class HlmDialogFooter {\n\tconstructor() {\n\t\tclasses(() => 'bg-muted/50 -mx-4 -mb-4 rounded-b-xl border-t p-4 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end');\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { classes } from 'yukit-web/helm/utils';\n\n@Directive({\n\tselector: '[hlmDialogHeader],hlm-dialog-header',\n\thost: { 'data-slot': 'dialog-header' },\n})\nexport class HlmDialogHeader {\n\tconstructor() {\n\t\tclasses(() => 'gap-2 flex flex-col');\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { BrnDialogContent } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[hlmDialogPortal]',\n\thostDirectives: [{ directive: BrnDialogContent, inputs: ['context', 'class'] }],\n})\nexport class HlmDialogPortal {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogTitle } from '@spartan-ng/brain/dialog';\nimport { classes } from 'yukit-web/helm/utils';\n\n@Directive({\n\tselector: '[hlmDialogTitle]',\n\thostDirectives: [BrnDialogTitle],\n\thost: { 'data-slot': 'dialog-title' },\n})\nexport class HlmDialogTitle {\n\tconstructor() {\n\t\tclasses(() => 'text-base leading-none font-medium');\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { BrnDialogTrigger } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: 'button[hlmDialogTrigger],button[hlmDialogTriggerFor]',\n\thostDirectives: [{ directive: BrnDialogTrigger, inputs: ['id', 'brnDialogTriggerFor: hlmDialogTriggerFor', 'type'] }],\n\thost: { 'data-slot': 'dialog-trigger' },\n})\nexport class HlmDialogTrigger {}\n","import type { ComponentType } from '@angular/cdk/portal';\nimport { inject, Injectable, type TemplateRef } from '@angular/core';\nimport {\n\ttype BrnDialogOptions,\n\ttype BrnDialogRef,\n\tBrnDialogService,\n\tcssClassesToArray,\n} from '@spartan-ng/brain/dialog';\nimport { HlmDialogContent } from './hlm-dialog-content';\nimport { hlmDialogOverlayClass } from './hlm-dialog-overlay';\n\nexport type HlmDialogOptions<DialogContext = unknown> = BrnDialogOptions & {\n\tcontentClass?: string;\n\tshowCloseButton?: boolean;\n\tcontext?: DialogContext;\n};\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class HlmDialogService {\n\tprivate readonly _brnDialogService = inject(BrnDialogService);\n\n\tpublic open<TResult = unknown, TContext = unknown>(\n\t\tcomponent: ComponentType<unknown> | TemplateRef<unknown>,\n\t\toptions?: Partial<HlmDialogOptions<TContext>>,\n\t): BrnDialogRef<TResult> {\n\t\tconst mergedOptions = {\n\t\t\t...(options ?? {}),\n\t\t\tbackdropClass: cssClassesToArray(`${hlmDialogOverlayClass} ${options?.backdropClass ?? ''}`),\n\t\t\tcontext: {\n\t\t\t\t...(options?.context && typeof options.context === 'object' ? options.context : {}),\n\t\t\t\t$component: component,\n\t\t\t\t$dynamicComponentClass: options?.contentClass,\n\t\t\t\t$showCloseButton: options?.showCloseButton,\n\t\t\t},\n\t\t};\n\n\t\treturn this._brnDialogService.open<unknown, TResult>(\n\t\t\tHlmDialogContent,\n\t\t\tundefined,\n\t\t\tmergedOptions.context,\n\t\t\tmergedOptions,\n\t\t);\n\t}\n}\n","import { HlmDialog } from './lib/hlm-dialog';\nimport { HlmDialogClose } from './lib/hlm-dialog-close';\nimport { HlmDialogContent } from './lib/hlm-dialog-content';\nimport { HlmDialogDescription } from './lib/hlm-dialog-description';\nimport { HlmDialogFooter } from './lib/hlm-dialog-footer';\nimport { HlmDialogHeader } from './lib/hlm-dialog-header';\nimport { HlmDialogOverlay } from './lib/hlm-dialog-overlay';\nimport { HlmDialogPortal } from './lib/hlm-dialog-portal';\nimport { HlmDialogTitle } from './lib/hlm-dialog-title';\nimport { HlmDialogTrigger } from './lib/hlm-dialog-trigger';\n\nexport * from './lib/hlm-dialog';\nexport * from './lib/hlm-dialog-close';\nexport * from './lib/hlm-dialog-content';\nexport * from './lib/hlm-dialog-description';\nexport * from './lib/hlm-dialog-footer';\nexport * from './lib/hlm-dialog-header';\nexport * from './lib/hlm-dialog-overlay';\nexport * from './lib/hlm-dialog-portal';\nexport * from './lib/hlm-dialog-title';\nexport * from './lib/hlm-dialog-trigger';\nexport * from './lib/hlm-dialog.service';\n\nexport const HlmDialogImports = [\n\tHlmDialog,\n\tHlmDialogContent,\n\tHlmDialogDescription,\n\tHlmDialogFooter,\n\tHlmDialogHeader,\n\tHlmDialogOverlay,\n\tHlmDialogPortal,\n\tHlmDialogTitle,\n\tHlmDialogTrigger,\n\tHlmDialogClose,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;MAMa,qBAAqB,GAAG,GAAG,CAAC,oKAAoK;MAMhM,gBAAgB,CAAA;AAM5B,IAAA,WAAA,GAAA;AALiB,QAAA,IAAA,CAAA,cAAc,GAAG,yBAAyB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAE3E,IAAA,CAAA,SAAS,GAAG,KAAK,CAAa,EAAE,iFAAI,KAAK,EAAE,OAAO,EAAA,CAAG;AAClD,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,qFAAC;QAG/F,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;AACtC,YAAA,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AACxE,QAAA,CAAC,CAAC;IACH;8GAXY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,uCAAuC;oBACjD,cAAc,EAAE,CAAC,gBAAgB,CAAC;AAClC,iBAAA;;;ACYK,MAAO,SAAU,SAAQ,SAAS,CAAA;8GAA3B,SAAS,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAfV;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,SAAS,CAAC;AACxC,aAAA;AACD,YAAA,8BAA8B,CAAC;;aAE9B,CAAC;SACF,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAES;;;AAGT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAdS,gBAAgB,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAgBd,SAAS,EAAA,UAAA,EAAA,CAAA;kBAnBrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC3B,oBAAA,SAAS,EAAE;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,SAAS;AAClB,4BAAA,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC;AACxC,yBAAA;AACD,wBAAA,8BAA8B,CAAC;;yBAE9B,CAAC;AACF,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;AAGT,CAAA,CAAA;AACD,iBAAA;;;MCdY,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,cAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,cAAc,EAAE,CAAC,cAAc,CAAC;AAChC,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;AACrC,iBAAA;;;MCmCY,gBAAgB,CAAA;AAa5B,IAAA,WAAA,GAAA;AAZiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;QACjC,IAAA,CAAA,cAAc,GAAG,sBAAsB,CAAiC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE5F,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAwB,IAAI,CAAC,cAAc,EAAE,gBAAgB,IAAI,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,CAAA,EAC3G,SAAS,EAAE,gBAAgB,GAC1B;AAEc,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,QAAQ,4EAAC;AAE5D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU;AAC1C,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,CAAC,cAAc,EAAE,sBAAsB;AAGpF,QAAA,OAAO,CAAC,MAAM,CAAC,mUAAmU,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAClX;8GAfY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EArBjB,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAM5B;;;;;;;;;;;;;AAaT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EApBS,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,mEAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAsBlD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,OAAO,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;oBAC/D,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;oBACtC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACL,wBAAA,WAAW,EAAE,gBAAgB;AAC7B,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;AAaT,CAAA,CAAA;AACD,iBAAA;;;MChCY,oBAAoB,CAAA;AAChC,IAAA,WAAA,GAAA;AACC,QAAA,OAAO,CAAC,MAAM,oGAAoG,CAAC;IACpH;8GAHY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,cAAc,EAAE,CAAC,oBAAoB,CAAC;AACtC,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC3C,iBAAA;;;MCDY,eAAe,CAAA;AAC3B,IAAA,WAAA,GAAA;AACC,QAAA,OAAO,CAAC,MAAM,0GAA0G,CAAC;IAC1H;8GAHY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE;AACtC,iBAAA;;;MCCY,eAAe,CAAA;AAC3B,IAAA,WAAA,GAAA;AACC,QAAA,OAAO,CAAC,MAAM,qBAAqB,CAAC;IACrC;8GAHY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE;AACtC,iBAAA;;;MCCY,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;AAC/E,iBAAA;;;MCGY,cAAc,CAAA;AAC1B,IAAA,WAAA,GAAA;AACC,QAAA,OAAO,CAAC,MAAM,oCAAoC,CAAC;IACpD;8GAHY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,cAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,cAAc,EAAE,CAAC,cAAc,CAAC;AAChC,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;AACrC,iBAAA;;;MCAY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sDAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sDAAsD;AAChE,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,0CAA0C,EAAE,MAAM,CAAC,EAAE,CAAC;AACrH,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE;AACvC,iBAAA;;;MCaY,gBAAgB,CAAA;AAH7B,IAAA,WAAA,GAAA;AAIkB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAwB7D,IAAA;IAtBO,IAAI,CACV,SAAwD,EACxD,OAA6C,EAAA;AAE7C,QAAA,MAAM,aAAa,GAAG;AACrB,YAAA,IAAI,OAAO,IAAI,EAAE,CAAC;AAClB,YAAA,aAAa,EAAE,iBAAiB,CAAC,CAAA,EAAG,qBAAqB,CAAA,CAAA,EAAI,OAAO,EAAE,aAAa,IAAI,EAAE,CAAA,CAAE,CAAC;AAC5F,YAAA,OAAO,EAAE;gBACR,IAAI,OAAO,EAAE,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;AACnF,gBAAA,UAAU,EAAE,SAAS;gBACrB,sBAAsB,EAAE,OAAO,EAAE,YAAY;gBAC7C,gBAAgB,EAAE,OAAO,EAAE,eAAe;AAC1C,aAAA;SACD;AAED,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACjC,gBAAgB,EAChB,SAAS,EACT,aAAa,CAAC,OAAO,EACrB,aAAa,CACb;IACF;8GAxBY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEN,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA;;;ACIM,MAAM,gBAAgB,GAAG;IAC/B,SAAS;IACT,gBAAgB;IAChB,oBAAoB;IACpB,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,cAAc;;;ACjCf;;AAEG;;;;"}
|