@egose/shadcn-theme-ng-tw 0.0.26 → 0.0.28
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/LICENSE +201 -0
- package/README.md +107 -2
- package/accordion/fesm2022/accordion.mjs +42 -37
- package/accordion/fesm2022/accordion.mjs.map +1 -1
- package/accordion/package.json +25 -0
- package/accordion/{index.d.ts → types/accordion.d.ts} +1 -1
- package/alert/fesm2022/alert.mjs +32 -27
- package/alert/fesm2022/alert.mjs.map +1 -1
- package/alert/package.json +25 -0
- package/alert-dialog/README.md +11 -0
- package/alert-dialog/fesm2022/alert-dialog.mjs +287 -0
- package/alert-dialog/fesm2022/alert-dialog.mjs.map +1 -0
- package/alert-dialog/package.json +25 -0
- package/alert-dialog/types/alert-dialog.d.ts +90 -0
- package/aspect-ratio/README.md +11 -0
- package/aspect-ratio/fesm2022/aspect-ratio.mjs +62 -0
- package/aspect-ratio/fesm2022/aspect-ratio.mjs.map +1 -0
- package/aspect-ratio/package.json +25 -0
- package/aspect-ratio/types/aspect-ratio.d.ts +21 -0
- package/autocomplete/fesm2022/autocomplete.mjs +323 -457
- package/autocomplete/fesm2022/autocomplete.mjs.map +1 -1
- package/autocomplete/package.json +24 -0
- package/autocomplete/types/autocomplete.d.ts +96 -0
- package/avatar/README.md +11 -0
- package/avatar/fesm2022/avatar.mjs +178 -0
- package/avatar/fesm2022/avatar.mjs.map +1 -0
- package/avatar/package.json +25 -0
- package/avatar/types/avatar.d.ts +50 -0
- package/badge/fesm2022/badge.mjs +16 -10
- package/badge/fesm2022/badge.mjs.map +1 -1
- package/badge/package.json +25 -0
- package/basic-alert/fesm2022/basic-alert.mjs +12 -8
- package/basic-alert/fesm2022/basic-alert.mjs.map +1 -1
- package/basic-alert/package.json +24 -0
- package/breadcrumb/README.md +11 -0
- package/breadcrumb/fesm2022/breadcrumb.mjs +224 -0
- package/breadcrumb/fesm2022/breadcrumb.mjs.map +1 -0
- package/breadcrumb/package.json +25 -0
- package/breadcrumb/types/breadcrumb.d.ts +57 -0
- package/button/fesm2022/button.mjs +100 -26
- package/button/fesm2022/button.mjs.map +1 -1
- package/button/package.json +25 -0
- package/button/{index.d.ts → types/button.d.ts} +30 -9
- package/button-group/README.md +11 -0
- package/button-group/fesm2022/button-group.mjs +102 -0
- package/button-group/fesm2022/button-group.mjs.map +1 -0
- package/button-group/package.json +25 -0
- package/button-group/types/button-group.d.ts +30 -0
- package/calendar/fesm2022/calendar.mjs +868 -546
- package/calendar/fesm2022/calendar.mjs.map +1 -1
- package/calendar/package.json +24 -0
- package/calendar/types/calendar.d.ts +94 -0
- package/card/README.md +11 -0
- package/card/fesm2022/card.mjs +169 -0
- package/card/fesm2022/card.mjs.map +1 -0
- package/card/package.json +25 -0
- package/card/types/card.d.ts +54 -0
- package/carousel/README.md +11 -0
- package/carousel/fesm2022/carousel.mjs +309 -0
- package/carousel/fesm2022/carousel.mjs.map +1 -0
- package/carousel/package.json +25 -0
- package/carousel/types/carousel.d.ts +84 -0
- package/checkbox/fesm2022/checkbox.mjs +25 -20
- package/checkbox/fesm2022/checkbox.mjs.map +1 -1
- package/checkbox/package.json +24 -0
- package/collapsible/README.md +11 -0
- package/collapsible/fesm2022/collapsible.mjs +77 -0
- package/collapsible/fesm2022/collapsible.mjs.map +1 -0
- package/collapsible/package.json +25 -0
- package/collapsible/types/collapsible.d.ts +27 -0
- package/combobox/README.md +11 -0
- package/combobox/fesm2022/combobox.mjs +683 -0
- package/combobox/fesm2022/combobox.mjs.map +1 -0
- package/combobox/package.json +25 -0
- package/combobox/types/combobox.d.ts +151 -0
- package/command/README.md +11 -0
- package/command/fesm2022/command.mjs +361 -0
- package/command/fesm2022/command.mjs.map +1 -0
- package/command/package.json +25 -0
- package/command/types/command.d.ts +89 -0
- package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +19 -8
- package/confirmation-dialog/fesm2022/confirmation-dialog.mjs.map +1 -1
- package/confirmation-dialog/package.json +24 -0
- package/context-menu/README.md +11 -0
- package/context-menu/fesm2022/context-menu.mjs +89 -0
- package/context-menu/fesm2022/context-menu.mjs.map +1 -0
- package/context-menu/package.json +25 -0
- package/context-menu/types/context-menu.d.ts +34 -0
- package/date-picker/fesm2022/date-picker.mjs +1262 -307
- package/date-picker/fesm2022/date-picker.mjs.map +1 -1
- package/date-picker/package.json +24 -0
- package/date-picker/types/date-picker.d.ts +551 -0
- package/dialog/fesm2022/dialog.mjs +137 -108
- package/dialog/fesm2022/dialog.mjs.map +1 -1
- package/dialog/package.json +24 -0
- package/dialog/types/dialog.d.ts +95 -0
- package/drawer/README.md +11 -0
- package/drawer/fesm2022/drawer.mjs +271 -0
- package/drawer/fesm2022/drawer.mjs.map +1 -0
- package/drawer/package.json +25 -0
- package/drawer/types/drawer.d.ts +76 -0
- package/dropdown-menu/README.md +11 -0
- package/dropdown-menu/fesm2022/dropdown-menu.mjs +542 -0
- package/dropdown-menu/fesm2022/dropdown-menu.mjs.map +1 -0
- package/dropdown-menu/package.json +25 -0
- package/dropdown-menu/types/dropdown-menu.d.ts +176 -0
- package/empty/README.md +11 -0
- package/empty/fesm2022/empty.mjs +151 -0
- package/empty/fesm2022/empty.mjs.map +1 -0
- package/empty/package.json +25 -0
- package/empty/types/empty.d.ts +54 -0
- package/field/README.md +11 -0
- package/field/fesm2022/field.mjs +367 -0
- package/field/fesm2022/field.mjs.map +1 -0
- package/field/package.json +25 -0
- package/field/types/field.d.ts +107 -0
- package/form-checkbox/fesm2022/form-checkbox.mjs +39 -22
- package/form-checkbox/fesm2022/form-checkbox.mjs.map +1 -1
- package/form-checkbox/package.json +24 -0
- package/form-date-picker/fesm2022/form-date-picker.mjs +58 -51
- package/form-date-picker/fesm2022/form-date-picker.mjs.map +1 -1
- package/form-date-picker/package.json +24 -0
- package/form-field/fesm2022/form-field.mjs +39 -27
- package/form-field/fesm2022/form-field.mjs.map +1 -1
- package/form-field/package.json +25 -0
- package/form-field/{index.d.ts → types/form-field.d.ts} +4 -3
- package/form-field-simple/fesm2022/form-field-simple.mjs +15 -10
- package/form-field-simple/fesm2022/form-field-simple.mjs.map +1 -1
- package/form-field-simple/package.json +24 -0
- package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +44 -25
- package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs.map +1 -1
- package/form-searchable-multiselect/package.json +24 -0
- package/form-select/fesm2022/form-select.mjs +132 -71
- package/form-select/fesm2022/form-select.mjs.map +1 -1
- package/form-select/package.json +24 -0
- package/form-text-input/fesm2022/form-text-input.mjs +68 -39
- package/form-text-input/fesm2022/form-text-input.mjs.map +1 -1
- package/form-text-input/package.json +24 -0
- package/form-textarea/fesm2022/form-textarea.mjs +54 -30
- package/form-textarea/fesm2022/form-textarea.mjs.map +1 -1
- package/form-textarea/package.json +24 -0
- package/hover-card/README.md +11 -0
- package/hover-card/fesm2022/hover-card.mjs +123 -0
- package/hover-card/fesm2022/hover-card.mjs.map +1 -0
- package/hover-card/package.json +25 -0
- package/hover-card/types/hover-card.d.ts +36 -0
- package/icon/fesm2022/icon.mjs +12 -10
- package/icon/fesm2022/icon.mjs.map +1 -1
- package/icon/package.json +25 -0
- package/input/fesm2022/input.mjs +20 -70
- package/input/fesm2022/input.mjs.map +1 -1
- package/input/package.json +25 -0
- package/input/types/input.d.ts +18 -0
- package/input-group/README.md +11 -0
- package/input-group/fesm2022/input-group.mjs +199 -0
- package/input-group/fesm2022/input-group.mjs.map +1 -0
- package/input-group/package.json +25 -0
- package/input-group/types/input-group.d.ts +52 -0
- package/input-otp/README.md +11 -0
- package/input-otp/fesm2022/input-otp.mjs +141 -0
- package/input-otp/fesm2022/input-otp.mjs.map +1 -0
- package/input-otp/package.json +25 -0
- package/input-otp/types/input-otp.d.ts +43 -0
- package/item/README.md +11 -0
- package/item/fesm2022/item.mjs +278 -0
- package/item/fesm2022/item.mjs.map +1 -0
- package/item/package.json +25 -0
- package/item/types/item.d.ts +101 -0
- package/kbd/README.md +11 -0
- package/kbd/fesm2022/kbd.mjs +61 -0
- package/kbd/fesm2022/kbd.mjs.map +1 -0
- package/kbd/package.json +25 -0
- package/kbd/types/kbd.d.ts +22 -0
- package/label/fesm2022/label.mjs +11 -10
- package/label/fesm2022/label.mjs.map +1 -1
- package/label/package.json +25 -0
- package/layout-simple/fesm2022/layout-simple.mjs +438 -325
- package/layout-simple/fesm2022/layout-simple.mjs.map +1 -1
- package/layout-simple/package.json +24 -0
- package/layout-simple/{index.d.ts → types/layout-simple.d.ts} +28 -17
- package/menubar/README.md +11 -0
- package/menubar/fesm2022/menubar.mjs +108 -0
- package/menubar/fesm2022/menubar.mjs.map +1 -0
- package/menubar/package.json +25 -0
- package/menubar/types/menubar.d.ts +40 -0
- package/native-select/README.md +11 -0
- package/native-select/fesm2022/native-select.mjs +207 -0
- package/native-select/fesm2022/native-select.mjs.map +1 -0
- package/native-select/package.json +25 -0
- package/native-select/types/native-select.d.ts +70 -0
- package/navigation-menu/README.md +11 -0
- package/navigation-menu/fesm2022/navigation-menu.mjs +206 -0
- package/navigation-menu/fesm2022/navigation-menu.mjs.map +1 -0
- package/navigation-menu/package.json +25 -0
- package/navigation-menu/types/navigation-menu.d.ts +54 -0
- package/package.json +223 -81
- package/pagination/README.md +11 -0
- package/pagination/fesm2022/pagination.mjs +808 -0
- package/pagination/fesm2022/pagination.mjs.map +1 -0
- package/pagination/package.json +25 -0
- package/pagination/types/pagination.d.ts +192 -0
- package/popover/fesm2022/popover.mjs +121 -27
- package/popover/fesm2022/popover.mjs.map +1 -1
- package/popover/package.json +24 -0
- package/popover/types/popover.d.ts +54 -0
- package/progress/README.md +11 -0
- package/progress/fesm2022/progress.mjs +77 -0
- package/progress/fesm2022/progress.mjs.map +1 -0
- package/progress/package.json +25 -0
- package/progress/types/progress.d.ts +27 -0
- package/radio-group/fesm2022/radio-group.mjs +97 -63
- package/radio-group/fesm2022/radio-group.mjs.map +1 -1
- package/radio-group/package.json +25 -0
- package/radio-group/{index.d.ts → types/radio-group.d.ts} +22 -14
- package/resizable/README.md +11 -0
- package/resizable/fesm2022/resizable.mjs +111 -0
- package/resizable/fesm2022/resizable.mjs.map +1 -0
- package/resizable/package.json +25 -0
- package/resizable/types/resizable.d.ts +32 -0
- package/scroll-area/README.md +11 -0
- package/scroll-area/fesm2022/scroll-area.mjs +51 -0
- package/scroll-area/fesm2022/scroll-area.mjs.map +1 -0
- package/scroll-area/package.json +25 -0
- package/scroll-area/types/scroll-area.d.ts +16 -0
- package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +92 -88
- package/searchable-multiselect/fesm2022/searchable-multiselect.mjs.map +1 -1
- package/searchable-multiselect/package.json +24 -0
- package/searchable-multiselect/{index.d.ts → types/searchable-multiselect.d.ts} +13 -24
- package/select/fesm2022/select.mjs +371 -189
- package/select/fesm2022/select.mjs.map +1 -1
- package/select/package.json +25 -0
- package/select/types/select.d.ts +119 -0
- package/separator/fesm2022/separator.mjs +16 -14
- package/separator/fesm2022/separator.mjs.map +1 -1
- package/separator/package.json +24 -0
- package/separator/{index.d.ts → types/separator.d.ts} +4 -5
- package/sheet/fesm2022/sheet.mjs +57 -51
- package/sheet/fesm2022/sheet.mjs.map +1 -1
- package/sheet/package.json +24 -0
- package/sidebar/README.md +11 -0
- package/sidebar/fesm2022/sidebar.mjs +948 -0
- package/sidebar/fesm2022/sidebar.mjs.map +1 -0
- package/sidebar/package.json +25 -0
- package/sidebar/types/sidebar.d.ts +237 -0
- package/skeleton/README.md +11 -0
- package/skeleton/fesm2022/skeleton.mjs +44 -0
- package/skeleton/fesm2022/skeleton.mjs.map +1 -0
- package/skeleton/package.json +25 -0
- package/skeleton/types/skeleton.d.ts +16 -0
- package/slider/README.md +11 -0
- package/slider/fesm2022/slider.mjs +144 -0
- package/slider/fesm2022/slider.mjs.map +1 -0
- package/slider/package.json +25 -0
- package/slider/types/slider.d.ts +19 -0
- package/sonner/fesm2022/sonner.mjs +30 -35
- package/sonner/fesm2022/sonner.mjs.map +1 -1
- package/sonner/package.json +25 -0
- package/spinner/fesm2022/spinner.mjs +18 -14
- package/spinner/fesm2022/spinner.mjs.map +1 -1
- package/spinner/package.json +25 -0
- package/switch/fesm2022/switch.mjs +29 -26
- package/switch/fesm2022/switch.mjs.map +1 -1
- package/switch/package.json +25 -0
- package/table/README.md +11 -0
- package/table/fesm2022/table.mjs +211 -0
- package/table/fesm2022/table.mjs.map +1 -0
- package/table/package.json +25 -0
- package/table/types/table.d.ts +87 -0
- package/tabs/fesm2022/tabs.mjs +133 -105
- package/tabs/fesm2022/tabs.mjs.map +1 -1
- package/tabs/package.json +25 -0
- package/tabs/types/tabs.d.ts +71 -0
- package/textarea/README.md +11 -0
- package/textarea/fesm2022/textarea.mjs +47 -0
- package/textarea/fesm2022/textarea.mjs.map +1 -0
- package/textarea/package.json +25 -0
- package/textarea/types/textarea.d.ts +18 -0
- package/toggle/README.md +11 -0
- package/toggle/fesm2022/toggle.mjs +78 -0
- package/toggle/fesm2022/toggle.mjs.map +1 -0
- package/toggle/package.json +25 -0
- package/toggle/types/toggle.d.ts +27 -0
- package/toggle-group/README.md +11 -0
- package/toggle-group/fesm2022/toggle-group.mjs +117 -0
- package/toggle-group/fesm2022/toggle-group.mjs.map +1 -0
- package/toggle-group/package.json +25 -0
- package/toggle-group/types/toggle-group.d.ts +39 -0
- package/tooltip/fesm2022/tooltip.mjs +33 -54
- package/tooltip/fesm2022/tooltip.mjs.map +1 -1
- package/tooltip/package.json +25 -0
- package/tooltip/types/tooltip.d.ts +22 -0
- package/typography/README.md +11 -0
- package/typography/fesm2022/typography.mjs +242 -0
- package/typography/fesm2022/typography.mjs.map +1 -0
- package/typography/package.json +25 -0
- package/typography/types/typography.d.ts +94 -0
- package/utils/fesm2022/utils.mjs +184 -1
- package/utils/fesm2022/utils.mjs.map +1 -1
- package/utils/package.json +25 -0
- package/utils/types/utils.d.ts +13 -0
- package/autocomplete/index.d.ts +0 -162
- package/calendar/index.d.ts +0 -111
- package/date-picker/index.d.ts +0 -227
- package/dialog/index.d.ts +0 -89
- package/exports.json +0 -1
- package/input/index.d.ts +0 -41
- package/menu/README.md +0 -64
- package/menu/fesm2022/menu.mjs +0 -449
- package/menu/fesm2022/menu.mjs.map +0 -1
- package/menu/index.d.ts +0 -137
- package/popover/index.d.ts +0 -30
- package/select/index.d.ts +0 -92
- package/tabs/index.d.ts +0 -71
- package/tooltip/index.d.ts +0 -21
- package/utils/index.d.ts +0 -5
- /package/alert/{index.d.ts → types/alert.d.ts} +0 -0
- /package/badge/{index.d.ts → types/badge.d.ts} +0 -0
- /package/basic-alert/{index.d.ts → types/basic-alert.d.ts} +0 -0
- /package/checkbox/{index.d.ts → types/checkbox.d.ts} +0 -0
- /package/confirmation-dialog/{index.d.ts → types/confirmation-dialog.d.ts} +0 -0
- /package/form-checkbox/{index.d.ts → types/form-checkbox.d.ts} +0 -0
- /package/form-date-picker/{index.d.ts → types/form-date-picker.d.ts} +0 -0
- /package/form-field-simple/{index.d.ts → types/form-field-simple.d.ts} +0 -0
- /package/form-searchable-multiselect/{index.d.ts → types/form-searchable-multiselect.d.ts} +0 -0
- /package/form-select/{index.d.ts → types/form-select.d.ts} +0 -0
- /package/form-text-input/{index.d.ts → types/form-text-input.d.ts} +0 -0
- /package/form-textarea/{index.d.ts → types/form-textarea.d.ts} +0 -0
- /package/icon/{index.d.ts → types/icon.d.ts} +0 -0
- /package/label/{index.d.ts → types/label.d.ts} +0 -0
- /package/sheet/{index.d.ts → types/sheet.d.ts} +0 -0
- /package/sonner/{index.d.ts → types/sonner.d.ts} +0 -0
- /package/spinner/{index.d.ts → types/spinner.d.ts} +0 -0
- /package/switch/{index.d.ts → types/switch.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-simple.mjs","sources":["../../../projects/layout-simple/src/lib/user-menu.ts","../../../projects/layout-simple/src/lib/search.ts","../../../projects/layout-simple/src/lib/sidebar.ts","../../../projects/layout-simple/src/lib/mobile-menu-group.ts","../../../projects/layout-simple/src/lib/layout.ts","../../../projects/layout-simple/src/lib/layout.html","../../../projects/layout-simple/src/public-api.ts","../../../projects/layout-simple/src/layout-simple.ts"],"sourcesContent":["import { Component, input, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideUser } from '@ng-icons/lucide';\nimport { RouterLink } from '@angular/router';\nimport { BrnMenuTrigger } from '@spartan-ng/brain/menu';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport { HlmButton } from '@egose/shadcn-theme-ng/button';\nimport { HlmMenu, HlmMenuGroup, HlmMenuItem, HlmMenuLabel, HlmMenuSeparator } from '@egose/shadcn-theme-ng/menu';\nimport { NgIcon } from '@ng-icons/core';\n\n// Interface for menu items\nexport interface UserMenuItem {\n label: string;\n icon?: any;\n action?: () => void;\n link?: string;\n class?: string;\n}\n\n// Interface for menu sections\nexport interface UserMenuSection {\n label?: string;\n separator?: boolean;\n items?: UserMenuItem[];\n}\n\n@Component({\n selector: 'eg-layout-simple-user-menu',\n imports: [\n CommonModule,\n BrnMenuTrigger,\n HlmMenu,\n HlmMenuItem,\n HlmMenuLabel,\n HlmMenuSeparator,\n HlmMenuGroup,\n HlmButton,\n NgIcon,\n RouterLink,\n ],\n providers: [\n provideIcons({\n lucideUser,\n }),\n ],\n template: `\n <ng-template #iconTemplate>\n <ng-icon [svg]=\"lucideUser\" size=\"1.5rem\" class=\"tw:[&_svg]:w-[inherit]! tw:[&_svg]:h-[inherit]!\" />\n </ng-template>\n\n @let _menuTrigger = menuTrigger();\n\n <div class=\"tw:flex tw:w-full tw:items-center tw:justify-center\">\n @if (_menuTrigger) {\n <div [brnMenuTriggerFor]=\"menu\"><ng-container *ngTemplateOutlet=\"_menuTrigger\"></ng-container></div>\n } @else {\n <button\n hlmButton\n variant=\"primary\"\n size=\"icon\"\n align=\"end\"\n [brnMenuTriggerFor]=\"menu\"\n [icon]=\"iconTemplate\"\n class=\"tw:rounded-full tw:border tw:border-gray-400\"\n ></button>\n }\n </div>\n\n <ng-template #menu>\n <hlm-menu class=\"tw:w-56\">\n @for (section of menus(); track section) {\n @if (section.label) {\n <hlm-menu-label>{{ section.label }}</hlm-menu-label>\n }\n @if (section.items?.length) {\n <hlm-menu-group>\n @for (item of section.items; track item) {\n @if (item.link) {\n <a\n hlmMenuItem\n [routerLink]=\"item.link\"\n [class]=\"hlm('tw:cursor-pointer tw:no-underline', item.class)\"\n >\n @if (item.icon) {\n <ng-icon\n [svg]=\"item.icon\"\n size=\"1rem\"\n [class]=\"\n hlm('tw:[_svg]:text-[inherit]! tw:[_svg]:bg-[inherit]! tw:cursor-pointer tw:mr-2', item.class)\n \"\n />\n }\n <span>{{ item.label }}</span>\n </a>\n } @else {\n <button\n hlmMenuItem\n (click)=\"item.action?.()\"\n [class]=\"hlm('tw:cursor-pointer tw:no-underline', item.class)\"\n >\n @if (item.icon) {\n <ng-icon\n [svg]=\"item.icon\"\n size=\"1rem\"\n [class]=\"\n hlm('tw:[_svg]:text-[inherit]! tw:[_svg]:bg-[inherit]! tw:cursor-pointer tw:mr-2', item.class)\n \"\n />\n }\n <span>{{ item.label }}</span>\n </button>\n }\n }\n </hlm-menu-group>\n }\n @if (section.separator) {\n <hlm-menu-separator />\n }\n }\n </hlm-menu>\n </ng-template>\n `,\n})\nexport class EgLayoutSimpleUserMenu {\n hlm = hlm;\n lucideUser = lucideUser;\n\n menus = input<UserMenuSection[]>([]);\n menuTrigger = input<TemplateRef<any> | undefined>();\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n signal,\n input,\n output,\n viewChild,\n inject,\n resource,\n} from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n HlmAutocompleteImports,\n provideHlmAutocompleteConfig,\n HlmAutocompleteOption,\n} from '@egose/shadcn-theme-ng/autocomplete';\nimport { HlmSpinner } from '@egose/shadcn-theme-ng/spinner';\n\nconst transformValueToSearchMap: Record<string, any> = {};\n\n@Component({\n selector: 'eg-generic-autocomplete',\n imports: [HlmSpinner, HlmAutocompleteImports, ReactiveFormsModule],\n template: `\n <form [formGroup]=\"form\" class=\"space-y-8\">\n <hlm-autocomplete\n [inputId]=\"controlId()\"\n [filteredOptions]=\"options.value()\"\n [optionTemplate]=\"optionTemplate()\"\n [loading]=\"options.isLoading()\"\n [(search)]=\"search\"\n [searchPlaceholderText]=\"placeholderText()\"\n [emptyText]=\"emptyText()\"\n formControlName=\"option\"\n class=\"tw:bg-white\"\n >\n <hlm-spinner loading />\n </hlm-autocomplete>\n </form>\n <ng-template #defaultOption let-option>\n {{ option }}\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n provideHlmAutocompleteConfig({\n transformValueToSearch: (params, inputId) => {\n const fn = transformValueToSearchMap[inputId];\n return fn(params);\n },\n }),\n ],\n})\nexport class EgGenericAutocomplete<TItem, TParams extends object = { search: string }> {\n defaultOptionTemplate = viewChild<TemplateRef<HlmAutocompleteOption<TItem>>>('defaultOption');\n controlId = input<string>(crypto.randomUUID());\n placeholderText = input<string>('Select an option');\n emptyText = input<string>('No options found');\n\n optionTemplate = input<TemplateRef<HlmAutocompleteOption<TItem>> | undefined>(this.defaultOptionTemplate as any);\n loaderFn = input<((params: TParams) => Promise<TItem[]>) | undefined>(async () => []);\n transformValueToSearch = input<((value: TItem) => string) | undefined>((value: TItem) => String(value));\n\n public readonly optionChange = output<TItem>();\n private readonly _formBuilder = inject(FormBuilder);\n public form = this._formBuilder.group({\n option: [null, Validators.required],\n });\n\n public readonly search = signal<string>('');\n\n public options = resource<TItem[], TParams>({\n defaultValue: [] as TItem[],\n params: () => ({ search: this.search(), negajjang: '1111' }) as TParams,\n loader: async ({ params }) => {\n const fn = this.loaderFn();\n if (!fn) {\n return [];\n }\n\n return fn(params);\n },\n });\n\n ngOnInit() {\n transformValueToSearchMap[this.controlId()] = this.transformValueToSearch();\n\n this.form.controls['option'].valueChanges.subscribe((value) => {\n if (value !== null) {\n this.optionChange.emit(value);\n }\n });\n }\n\n ngOnDestroy() {\n delete transformValueToSearchMap[this.controlId()];\n }\n}\n","import { Component, effect, input, viewChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { BrnSheet } from '@spartan-ng/brain/sheet';\nimport { BrnSheetImports } from '@spartan-ng/brain/sheet';\nimport { HlmButtonImports } from '@egose/shadcn-theme-ng/button';\nimport { HlmLabelImports } from '@egose/shadcn-theme-ng/label';\nimport { HlmSheetImports } from '@egose/shadcn-theme-ng/sheet';\n\n@Component({\n selector: 'eg-layout-simple-sidebar',\n standalone: true,\n imports: [CommonModule, RouterModule, BrnSheetImports, HlmSheetImports, HlmButtonImports, HlmLabelImports],\n template: `\n @let _title = title();\n @let _content = content();\n\n <hlm-sheet [side]=\"side() ?? 'left'\">\n <hlm-sheet-content *brnSheetContent=\"let ctx\" class=\"tw:gap-0\">\n @if (_title) {\n <hlm-sheet-header>\n <h3 hlmSheetTitle>{{ _title }}</h3>\n </hlm-sheet-header>\n }\n\n @if (_content) {\n <ng-container *ngTemplateOutlet=\"_content; context: contentContext()\"></ng-container>\n }\n\n <hlm-sheet-footer>\n <button brnSheetClose hlmButton variant=\"secondary\" appearance=\"outline-filled\">Close</button>\n </hlm-sheet-footer>\n </hlm-sheet-content>\n </hlm-sheet>\n `,\n})\nexport class EgLayoutSimpleSidebar {\n public readonly viewchildSheetRef = viewChild(BrnSheet);\n side = input<'top' | 'bottom' | 'left' | 'right' | undefined>('left');\n title = input<string | undefined>('');\n content = input<TemplateRef<any> | undefined>();\n contentContext = input<any>();\n\n constructor() {\n effect(() => {});\n }\n\n openSheet() {\n this.viewchildSheetRef()?.open();\n }\n\n closeSheet() {\n this.viewchildSheetRef()?.close();\n }\n}\n","import { Component, input, output } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport { HlmMenuLabel, HlmMenuGroup, HlmMenuItem } from '@egose/shadcn-theme-ng/menu';\nimport { NgIcon } from '@ng-icons/core';\n\n@Component({\n selector: 'eg-layout-simple-mobile-menu-group',\n imports: [HlmMenuItem, HlmMenuLabel, HlmMenuGroup, NgIcon, RouterLink],\n providers: [],\n template: `\n @let _label = label();\n @let _items = items();\n\n @if (_items && _items.length > 0) {\n @if (_label) {\n <hlm-menu-label>{{ _label }}</hlm-menu-label>\n }\n <hlm-menu-group>\n @for (item of _items; track item.label) {\n @if (item.link) {\n <a\n hlmMenuItem\n [routerLink]=\"item.link\"\n [class]=\"hlm('tw:cursor-pointer tw:no-underline')\"\n (click)=\"handleClick(item)\"\n >\n @if (item.icon) {\n <ng-icon\n [svg]=\"item.icon\"\n size=\"1rem\"\n [class]=\"hlm('tw:[_svg]:text-[inherit]! tw:[_svg]:bg-[inherit]! tw:cursor-pointer tw:mr-2')\"\n >\n </ng-icon>\n }\n <span>{{ item.label }}</span>\n </a>\n } @else {\n <button hlmMenuItem (click)=\"handleClick(item)\" [class]=\"hlm('tw:cursor-pointer tw:no-underline')\">\n @if (item.icon) {\n <ng-icon\n [svg]=\"item.icon\"\n size=\"1rem\"\n [class]=\"hlm('tw:[_svg]:text-[inherit]! tw:[_svg]:bg-[inherit]! tw:cursor-pointer tw:mr-2')\"\n >\n </ng-icon>\n }\n <span>{{ item.label }}</span>\n </button>\n }\n }\n </hlm-menu-group>\n }\n `,\n})\nexport class EgLayoutSimpleMobileMenuGroup {\n hlm = hlm;\n\n label = input<string | undefined>('');\n items = input<\n {\n label: string;\n link?: string;\n icon?: string;\n action?: () => void;\n }[]\n >();\n\n itemClick = output<any>();\n\n handleClick(item: any) {\n item.action?.();\n this.itemClick.emit(item);\n }\n}\n","import { Component, input, output, computed, signal, viewChild, TemplateRef } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { ClassValue } from 'clsx';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMenu } from '@ng-icons/lucide';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport { HlmAutocompleteOption } from '@egose/shadcn-theme-ng/autocomplete';\nimport { HlmButton } from '@egose/shadcn-theme-ng/button';\nimport { HlmMenu } from '@egose/shadcn-theme-ng/menu';\nimport { EgLayoutSimpleUserMenu, type UserMenuSection } from './user-menu';\nimport { EgGenericAutocomplete } from './search';\nimport { EgLayoutSimpleSidebar } from './sidebar';\nimport { EgLayoutSimpleMobileMenuGroup } from './mobile-menu-group';\n\n// Updated interface for left/right menu items\nexport interface MenuItem {\n label: string;\n icon?: any;\n link?: string; // optional router link\n action?: () => void; // optional click handler\n class?: string; // optional per-item CSS/Tailwind classes\n}\n\nconst commonLinkGroupClasses = 'tw:hidden tw:md:flex tw:space-x-4 tw:items-center';\nconst commonLinkClasses =\n 'tw:text-left tw:text-secondary tw:visited:text-secondary tw:hover:text-primary tw:cursor-pointer tw:no-underline';\n\n@Component({\n selector: 'eg-layout-simple',\n standalone: true,\n imports: [\n RouterLink,\n EgLayoutSimpleUserMenu,\n EgLayoutSimpleSidebar,\n EgLayoutSimpleMobileMenuGroup,\n EgGenericAutocomplete,\n HlmButton,\n HlmMenu,\n NgIcon,\n ],\n providers: [\n provideIcons({\n lucideMenu,\n }),\n ],\n templateUrl: './layout.html',\n})\nexport class EgLayoutSimple<TItem, TParams extends object = { search: string }> {\n hlm = hlm;\n menuIcon = lucideMenu;\n\n sidebarEnabled = input<boolean>(false);\n sidebarTitle = input<string>('Menu');\n sidebarContent = input<TemplateRef<any> | undefined>();\n userMenuTrigger = input<TemplateRef<any> | undefined>();\n\n /** Menu data inputs */\n leftMenus = input<MenuItem[]>([]);\n rightMenus = input<MenuItem[]>([]);\n userMenus = input<UserMenuSection[]>([]);\n logo = input<string>('assets/logo.png');\n logoLink = input<string>('/');\n\n logoClass = input<ClassValue>('', { alias: 'logoClass' });\n headerClass = input<ClassValue>('', { alias: 'headerClass' });\n contentClass = input<ClassValue>('', { alias: 'contentClass' });\n contentBottomClass = input<ClassValue>('', { alias: 'contentBottomClass' });\n\n /** Container class inputs */\n leftMenuClass = input<ClassValue>('', { alias: 'leftClass' });\n rightMenuClass = input<ClassValue>('', { alias: 'rightClass' });\n\n /** Link/button base class inputs */\n leftLinkClass = input<ClassValue>('', { alias: 'leftLinkClass' });\n rightLinkClass = input<ClassValue>('', { alias: 'rightLinkClass' });\n\n searchEnabled = input<boolean>(false);\n loading = input<boolean>(false);\n searchPlaceholderText = input<string>('Select an page');\n searchEmptyText = input<string>('No pages found');\n searchOptionTemplate = input<TemplateRef<HlmAutocompleteOption<TItem>>>();\n searchLoaderFn = input<(params: TParams) => Promise<TItem[]>>();\n searchTransformValueToSearch = input<(value: TItem) => string>();\n\n public readonly searchOptionChange = output<TItem>();\n\n protected readonly _logoClass = computed(() => hlm('tw:h-10', this.logoClass()));\n\n protected readonly _headerClass = computed(() =>\n hlm(\n 'tw:px-4 tw:py-2 tw:flex tw:items-center tw:justify-between tw:bg-gray-100 tw:border-b tw:border-gray-300',\n this.headerClass(),\n ),\n );\n\n protected readonly _contentClass = computed(() => hlm('tw:p-4 tw:flex tw:flex-col tw:flex-1', this.contentClass()));\n protected readonly _contentBottomClass = computed(() => hlm('tw:flex-1', this.contentBottomClass()));\n\n /** Computed merged classes for containers */\n protected readonly _computedLeftClass = computed(() => hlm(commonLinkGroupClasses, this.leftMenuClass()));\n protected readonly _computedRightClass = computed(() => hlm(commonLinkGroupClasses, this.rightMenuClass()));\n\n /** Computed merged classes for link/button elements */\n protected readonly _computedLeftLinkClass = computed(() => hlm(commonLinkClasses, this.leftLinkClass()));\n protected readonly _computedRightLinkClass = computed(() => hlm(commonLinkClasses, this.rightLinkClass()));\n\n mobileMenuItemClass = commonLinkClasses;\n\n footerEnabled = input<boolean>(false);\n footerMenus = input<MenuItem[]>([]);\n footerMenuClass = input<ClassValue>('', { alias: 'footerMenuClass' });\n footerLinkClass = input<ClassValue>('', { alias: 'footerLinkClass' });\n footerContent = input<string>('© 2024 My Company');\n footerClass = input<ClassValue>('', { alias: 'footerClass' });\n\n protected readonly _footerClass = computed(() =>\n hlm(\n 'tw:px-4 tw:py-4 tw:bg-gray-100 tw:border-t tw:border-gray-300 tw:text-sm tw:text-gray-600',\n this.footerClass(),\n ),\n );\n\n protected readonly _computedFooterMenuClass = computed(() =>\n hlm('tw:flex tw:flex-wrap tw:justify-center tw:space-x-4', this.footerMenuClass()),\n );\n\n protected readonly _computedFooterLinkClass = computed(() =>\n hlm('tw:text-secondary tw:hover:text-primary tw:cursor-pointer tw:no-underline', this.footerLinkClass()),\n );\n\n /** Mobile menu state */\n mobileMenuOpen = false;\n isMobile = signal(false);\n\n constructor(private breakpointObserver: BreakpointObserver) {\n this.breakpointObserver.observe([Breakpoints.Handset]).subscribe((result) => {\n this.isMobile.set(result.matches);\n });\n }\n\n toggleMobileMenu() {\n this.mobileMenuOpen = !this.mobileMenuOpen;\n }\n\n onSearchOptionChange(value: TItem) {\n this.searchOptionChange.emit(value);\n }\n\n public readonly viewchildSheetRef = viewChild(EgLayoutSimpleSidebar);\n\n openSidebar() {\n this.viewchildSheetRef()?.openSheet();\n }\n\n closeSidebar() {\n this.viewchildSheetRef()?.closeSheet();\n }\n}\n","<ng-template #menuIconTemplate>\n <ng-icon [svg]=\"menuIcon\" size=\"20px\" class=\"tw:[&_svg]:w-[inherit]! tw:[&_svg]:h-[inherit]!\" />\n</ng-template>\n\n<eg-layout-simple-sidebar\n [title]=\"sidebarTitle()\"\n [content]=\"sidebarContent()\"\n [contentContext]=\"{ close: closeSidebar.bind(this) }\"\n/>\n\n<div class=\"tw:flex tw:flex-col tw:min-h-screen\">\n <!-- Header -->\n <header [class]=\"_headerClass()\">\n <div class=\"tw:flex tw:items-center tw:space-x-4\">\n @if (sidebarEnabled()) {\n <button\n hlmButton\n variant=\"secondary\"\n appearance=\"outline\"\n size=\"icon\"\n [icon]=\"menuIconTemplate\"\n iconPosition=\"left\"\n class=\"tw:bg-transparent! tw:border-gray-400! tw:hover:border-gray-500!\"\n (click)=\"openSidebar()\"\n ></button>\n }\n\n <div class=\"logo\">\n <a [routerLink]=\"logoLink()\">\n <img [src]=\"logo()\" alt=\"Logo\" [class]=\"_logoClass()\" />\n </a>\n </div>\n <!-- Left menus (desktop) -->\n <nav [class]=\"_computedLeftClass()\">\n @for (item of leftMenus(); track item.label) {\n @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedLeftLinkClass(), item.class || '')\"> {{ item.label }} </a>\n } @else {\n <button type=\"button\" (click)=\"item.action?.()\" [class]=\"hlm(_computedLeftLinkClass(), item.class || '')\">\n {{ item.label }}\n </button>\n }\n }\n </nav>\n </div>\n\n <!-- Right menus (desktop) -->\n <nav [class]=\"_computedRightClass()\">\n @if (searchEnabled()) {\n <eg-generic-autocomplete\n [optionTemplate]=\"searchOptionTemplate()\"\n [loaderFn]=\"searchLoaderFn()\"\n [transformValueToSearch]=\"searchTransformValueToSearch()\"\n [placeholderText]=\"searchPlaceholderText()\"\n [emptyText]=\"searchEmptyText()\"\n (optionChange)=\"onSearchOptionChange($event)\"\n ></eg-generic-autocomplete>\n }\n\n @for (item of rightMenus(); track item.label) {\n @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedRightLinkClass(), item.class || '')\"> {{ item.label }} </a>\n } @else {\n <button type=\"button\" (click)=\"item.action?.()\" [class]=\"hlm(_computedRightLinkClass(), item.class || '')\">\n {{ item.label }}\n </button>\n }\n }\n\n @let uMenus = userMenus();\n @if (uMenus && uMenus.length > 0) {\n <eg-layout-simple-user-menu [menus]=\"uMenus\" [menuTrigger]=\"userMenuTrigger()\" />\n }\n </nav>\n\n <!-- Mobile menu button -->\n <button\n (click)=\"toggleMobileMenu()\"\n class=\"tw:md:hidden tw:p-2 tw:text-gray-700 tw:hover:text-primary tw:focus:outline-none tw:cursor-pointer\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"tw:h-6 tw:w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 6h16M4 12h16M4 18h16\" />\n </svg>\n </button>\n </header>\n\n @let _topMenus = leftMenus().concat(rightMenus());\n @let _userMenus = userMenus();\n\n <!-- Mobile menu -->\n @if (isMobile() && mobileMenuOpen) {\n <hlm-menu class=\"tw:w-full tw:border-none\">\n <eg-layout-simple-mobile-menu-group [items]=\"_topMenus\" (itemClick)=\"toggleMobileMenu()\" />\n\n @if (_topMenus.length > 0 && _userMenus.length > 0) {\n <hr class=\"tw:border-gray-300 tw:my-2\" />\n }\n\n @for (section of userMenus(); track section.label) {\n <eg-layout-simple-mobile-menu-group\n [items]=\"section.items\"\n [label]=\"section.label\"\n (itemClick)=\"toggleMobileMenu()\"\n ></eg-layout-simple-mobile-menu-group>\n\n @if (section.separator) {\n <hr class=\"tw:border-gray-300 tw:my-2\" />\n }\n }\n </hlm-menu>\n }\n\n <!-- Main content -->\n <main [class]=\"_contentClass()\">\n @if (!loading()) {\n <div class=\"tw:flex tw:items-center tw:justify-center tw:h-full\">\n <ng-content />\n </div>\n }\n <div [class]=\"_contentBottomClass()\"></div>\n </main>\n\n @if (footerEnabled()) {\n <footer [class]=\"_footerClass()\">\n <nav [class]=\"_computedFooterMenuClass()\">\n @for (item of footerMenus(); track item.label) {\n @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedFooterLinkClass(), item.class || '')\">\n {{ item.label }}\n </a>\n } @else {\n <button type=\"button\" (click)=\"item.action?.()\" [class]=\"hlm(_computedFooterLinkClass(), item.class || '')\">\n {{ item.label }}\n </button>\n }\n }\n </nav>\n\n <div class=\"tw:mt-2 tw:text-center\">\n {{ footerContent() }}\n </div>\n </footer>\n }\n</div>\n","/*\n * Public API Surface of layout-simple\n */\n\nexport * from './lib/layout';\nexport * from './lib/user-menu';\nexport * from './lib/search';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"layout-simple.mjs","sources":["../../../projects/layout-simple/src/lib/user-menu.ts","../../../projects/layout-simple/src/lib/search.ts","../../../projects/layout-simple/src/lib/sidebar.ts","../../../projects/layout-simple/src/lib/mobile-menu-group.ts","../../../projects/layout-simple/src/lib/layout.ts","../../../projects/layout-simple/src/lib/layout.html","../../../projects/layout-simple/src/public-api.ts","../../../projects/layout-simple/src/layout-simple.ts"],"sourcesContent":["import { Component, input, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideUser } from '@ng-icons/lucide';\nimport { RouterLink } from '@angular/router';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport { HlmButton } from '@egose/shadcn-theme-ng/button';\nimport {\n HlmDropdownMenu,\n HlmDropdownMenuGroup,\n HlmDropdownMenuItem,\n HlmDropdownMenuLabel,\n HlmDropdownMenuSeparator,\n HlmDropdownMenuTrigger,\n} from '@egose/shadcn-theme-ng/dropdown-menu';\nimport { NgIcon } from '@ng-icons/core';\n\n// Interface for menu items\nexport interface UserMenuItem {\n label: string;\n icon?: any;\n action?: () => void;\n link?: string;\n class?: string;\n}\n\n// Interface for menu sections\nexport interface UserMenuSection {\n label?: string;\n separator?: boolean;\n items?: UserMenuItem[];\n}\n\n@Component({\n selector: 'eg-layout-simple-user-menu',\n imports: [\n CommonModule,\n HlmDropdownMenu,\n HlmDropdownMenuTrigger,\n HlmDropdownMenuItem,\n HlmDropdownMenuLabel,\n HlmDropdownMenuSeparator,\n HlmDropdownMenuGroup,\n HlmButton,\n NgIcon,\n RouterLink,\n ],\n providers: [\n provideIcons({\n lucideUser,\n }),\n ],\n template: `\n <ng-template #iconTemplate>\n <ng-icon [svg]=\"lucideUser\" size=\"1.5rem\" class=\"tw:[&_svg]:w-[inherit]! tw:[&_svg]:h-[inherit]!\" />\n </ng-template>\n\n @let _menuTrigger = menuTrigger();\n\n <div class=\"tw:flex tw:w-full tw:items-center tw:justify-center\">\n @if (_menuTrigger) {\n <button\n type=\"button\"\n [hlmDropdownMenuTrigger]=\"menu\"\n class=\"tw:cursor-pointer tw:bg-transparent tw:border-0 tw:p-0\"\n >\n <ng-container *ngTemplateOutlet=\"_menuTrigger\" />\n </button>\n } @else {\n <button\n hlmButton\n variant=\"primary\"\n size=\"icon\"\n [hlmDropdownMenuTrigger]=\"menu\"\n [icon]=\"iconTemplate\"\n class=\"tw:rounded-full tw:border tw:border-gray-400\"\n ></button>\n }\n\n <ng-template #menu>\n <div hlmDropdownMenu class=\"tw:w-56\">\n @for (section of menus(); track section) {\n @if (section.label) {\n <div hlmDropdownMenuLabel>{{ section.label }}</div>\n }\n @if (section.items?.length) {\n <div hlmDropdownMenuGroup>\n @for (item of section.items; track item) {\n @if (item.link) {\n <a\n hlmDropdownMenuItem\n [routerLink]=\"item.link\"\n [class]=\"hlm('tw:cursor-pointer tw:no-underline', item.class)\"\n >\n @if (item.icon) {\n <ng-icon\n [svg]=\"item.icon\"\n size=\"1rem\"\n [class]=\"\n hlm(\n 'tw:[_svg]:text-[inherit]! tw:[_svg]:bg-[inherit]! tw:cursor-pointer tw:mr-2',\n item.class\n )\n \"\n />\n }\n <span>{{ item.label }}</span>\n </a>\n } @else {\n <button\n hlmDropdownMenuItem\n (click)=\"item.action?.()\"\n [class]=\"hlm('tw:cursor-pointer tw:no-underline', item.class)\"\n >\n @if (item.icon) {\n <ng-icon\n [svg]=\"item.icon\"\n size=\"1rem\"\n [class]=\"\n hlm(\n 'tw:[_svg]:text-[inherit]! tw:[_svg]:bg-[inherit]! tw:cursor-pointer tw:mr-2',\n item.class\n )\n \"\n />\n }\n <span>{{ item.label }}</span>\n </button>\n }\n }\n </div>\n }\n @if (section.separator) {\n <div hlmDropdownMenuSeparator></div>\n }\n }\n </div>\n </ng-template>\n </div>\n `,\n})\nexport class EgLayoutSimpleUserMenu {\n hlm = hlm;\n lucideUser = lucideUser;\n\n menus = input<UserMenuSection[]>([]);\n menuTrigger = input<TemplateRef<any> | undefined>();\n}\n","import { ChangeDetectionStrategy, Component, computed, signal, input, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HlmPopover, HlmPopoverContent, HlmPopoverTrigger } from '@egose/shadcn-theme-ng/popover';\nimport { HlmInput } from '@egose/shadcn-theme-ng/input';\nimport { HlmButton } from '@egose/shadcn-theme-ng/button';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSearch } from '@ng-icons/lucide';\n\nexport interface AutocompleteOption<T = unknown> {\n label: string;\n value: T;\n raw?: T;\n}\n\n@Component({\n selector: 'eg-generic-autocomplete',\n imports: [FormsModule, HlmPopover, HlmPopoverTrigger, HlmPopoverContent, HlmInput, HlmButton, NgIcon],\n providers: [provideIcons({ lucideSearch })],\n template: `\n <hlm-popover>\n <button\n hlmPopoverTrigger\n hlmButton\n variant=\"secondary\"\n appearance=\"outline\"\n type=\"button\"\n class=\"tw:w-64 tw:justify-start tw:gap-2 tw:text-muted-foreground\"\n >\n <ng-icon name=\"lucideSearch\" size=\"14px\" />\n <span class=\"tw:truncate\">{{ placeholderText() }}</span>\n </button>\n\n <hlm-popover-content class=\"tw:w-64 tw:p-2\">\n <input\n hlmInput\n [ngModel]=\"search()\"\n (ngModelChange)=\"search.set($event)\"\n [placeholder]=\"placeholderText()\"\n class=\"tw:mb-2\"\n />\n <div class=\"tw:max-h-60 tw:overflow-auto tw:flex tw:flex-col\">\n @if (filtered().length === 0) {\n <span class=\"tw:text-xs tw:text-muted-foreground tw:px-2 tw:py-2\">{{ emptyText() }}</span>\n } @else {\n @for (opt of filtered(); track opt.label) {\n <button\n type=\"button\"\n (click)=\"select(opt)\"\n class=\"tw:text-left tw:px-2 tw:py-1.5 tw:text-sm tw:rounded-sm tw:hover:bg-secondary tw:cursor-pointer\"\n >\n {{ opt.label }}\n </button>\n }\n }\n </div>\n </hlm-popover-content>\n </hlm-popover>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EgGenericAutocomplete<TItem, TParams extends object = { search: string }> {\n placeholderText = input<string>('Select an option');\n emptyText = input<string>('No options found');\n\n /** Loader function: takes search string, returns options. */\n loaderFn = input<((params: TParams) => Promise<TItem[]>) | undefined>(async () => []);\n transformValueToSearch = input<((value: TItem) => string) | undefined>((value: TItem) => String(value));\n\n public readonly search = signal<string>('');\n public readonly options = signal<TItem[]>([]);\n\n protected readonly filtered = computed<AutocompleteOption<TItem>[]>(() => {\n const opts = this.options();\n const search = this.search().toLowerCase();\n const transform = this.transformValueToSearch() ?? ((value: TItem) => String(value));\n const mapped = opts.map((o) => ({ label: transform(o), value: o, raw: o }));\n if (!search) return mapped;\n return mapped.filter((o) => o.label.toLowerCase().includes(search));\n });\n\n public readonly optionChange = output<TItem>();\n\n constructor() {\n // Trigger initial load\n this.loadOptions();\n }\n\n private async loadOptions() {\n const fn = this.loaderFn();\n if (!fn) {\n this.options.set([]);\n return;\n }\n try {\n const params = { search: this.search() } as TParams;\n const result = await fn(params);\n this.options.set(result ?? []);\n } catch {\n this.options.set([]);\n }\n }\n\n select(opt: AutocompleteOption<TItem>) {\n this.optionChange.emit(opt.value);\n this.search.set('');\n }\n}\n","import { Component, effect, input, viewChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { BrnSheet } from '@spartan-ng/brain/sheet';\nimport { BrnSheetImports } from '@spartan-ng/brain/sheet';\nimport { HlmButtonImports } from '@egose/shadcn-theme-ng/button';\nimport { HlmLabelImports } from '@egose/shadcn-theme-ng/label';\nimport { HlmSheetImports } from '@egose/shadcn-theme-ng/sheet';\n\n@Component({\n selector: 'eg-layout-simple-sidebar',\n standalone: true,\n imports: [CommonModule, RouterModule, BrnSheetImports, HlmSheetImports, HlmButtonImports, HlmLabelImports],\n template: `\n @let _title = title();\n @let _content = content();\n\n <hlm-sheet [side]=\"side() ?? 'left'\">\n <hlm-sheet-content *brnSheetContent=\"let ctx\" class=\"tw:gap-0\">\n @if (_title) {\n <hlm-sheet-header>\n <h3 hlmSheetTitle>{{ _title }}</h3>\n </hlm-sheet-header>\n }\n\n @if (_content) {\n <ng-container *ngTemplateOutlet=\"_content; context: contentContext()\"></ng-container>\n }\n\n <hlm-sheet-footer>\n <button brnSheetClose hlmButton variant=\"secondary\" appearance=\"outline-filled\">Close</button>\n </hlm-sheet-footer>\n </hlm-sheet-content>\n </hlm-sheet>\n `,\n})\nexport class EgLayoutSimpleSidebar {\n public readonly viewchildSheetRef = viewChild(BrnSheet);\n side = input<'top' | 'bottom' | 'left' | 'right' | undefined>('left');\n title = input<string | undefined>('');\n content = input<TemplateRef<any> | undefined>();\n contentContext = input<any>();\n\n constructor() {\n effect(() => {});\n }\n\n openSheet() {\n this.viewchildSheetRef()?.open();\n }\n\n closeSheet() {\n this.viewchildSheetRef()?.close();\n }\n}\n","import { Component, input, output } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport { NgIcon } from '@ng-icons/core';\n\n@Component({\n selector: 'eg-layout-simple-mobile-menu-group',\n imports: [NgIcon, RouterLink],\n providers: [],\n template: `\n @let _label = label();\n @let _items = items();\n\n @if (_items && _items.length > 0) {\n @if (_label) {\n <div class=\"tw:px-3 tw:py-1 tw:text-xs tw:font-semibold tw:text-muted-foreground\">{{ _label }}</div>\n }\n <div class=\"tw:flex tw:flex-col\">\n @for (item of _items; track item.label) {\n @if (item.link) {\n <a\n [routerLink]=\"item.link\"\n [class]=\"\n hlm(\n 'tw:cursor-pointer tw:no-underline tw:px-3 tw:py-2 tw:text-sm tw:hover:bg-secondary tw:rounded-sm tw:flex tw:items-center tw:gap-2'\n )\n \"\n (click)=\"handleClick(item)\"\n >\n @if (item.icon) {\n <ng-icon [svg]=\"item.icon\" size=\"1rem\" [class]=\"hlm('tw:cursor-pointer tw:mr-2')\"> </ng-icon>\n }\n <span>{{ item.label }}</span>\n </a>\n } @else {\n <button\n type=\"button\"\n (click)=\"handleClick(item)\"\n [class]=\"\n hlm(\n 'tw:cursor-pointer tw:no-underline tw:px-3 tw:py-2 tw:text-sm tw:hover:bg-secondary tw:rounded-sm tw:flex tw:items-center tw:gap-2 tw:bg-transparent tw:border-0 tw:text-left tw:w-full'\n )\n \"\n >\n @if (item.icon) {\n <ng-icon [svg]=\"item.icon\" size=\"1rem\" [class]=\"hlm('tw:cursor-pointer tw:mr-2')\"> </ng-icon>\n }\n <span>{{ item.label }}</span>\n </button>\n }\n }\n </div>\n }\n `,\n})\nexport class EgLayoutSimpleMobileMenuGroup {\n hlm = hlm;\n\n label = input<string | undefined>('');\n items = input<\n {\n label: string;\n link?: string;\n icon?: string;\n action?: () => void;\n }[]\n >();\n\n itemClick = output<any>();\n\n handleClick(item: any) {\n item.action?.();\n this.itemClick.emit(item);\n }\n}\n","import { Component, input, output, computed, signal, viewChild, TemplateRef } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { ClassValue } from 'clsx';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMenu } from '@ng-icons/lucide';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport { HlmButton } from '@egose/shadcn-theme-ng/button';\nimport { EgLayoutSimpleUserMenu, type UserMenuSection } from './user-menu';\nimport { EgGenericAutocomplete } from './search';\nimport { EgLayoutSimpleSidebar } from './sidebar';\nimport { EgLayoutSimpleMobileMenuGroup } from './mobile-menu-group';\n\n// Updated interface for left/right menu items\nexport interface MenuItem {\n label: string;\n icon?: any;\n link?: string; // optional router link\n action?: () => void; // optional click handler\n class?: string; // optional per-item CSS/Tailwind classes\n}\n\nexport interface MenuGroup {\n label?: string;\n items: MenuItem[];\n}\n\nconst commonLinkGroupClasses = 'tw:hidden tw:md:flex tw:space-x-4 tw:items-center';\nconst commonLinkClasses =\n 'tw:text-left tw:text-secondary tw:visited:text-secondary tw:hover:text-primary tw:cursor-pointer tw:no-underline';\n\n@Component({\n selector: 'eg-layout-simple',\n standalone: true,\n imports: [\n RouterLink,\n EgLayoutSimpleUserMenu,\n EgLayoutSimpleSidebar,\n EgLayoutSimpleMobileMenuGroup,\n EgGenericAutocomplete,\n HlmButton,\n NgIcon,\n ],\n providers: [\n provideIcons({\n lucideMenu,\n }),\n ],\n templateUrl: './layout.html',\n})\nexport class EgLayoutSimple<TItem, TParams extends object = { search: string }> {\n hlm = hlm;\n menuIcon = lucideMenu;\n\n sidebarEnabled = input<boolean>(false);\n sidebarTitle = input<string>('Menu');\n sidebarContent = input<TemplateRef<any> | undefined>();\n userMenuTrigger = input<TemplateRef<any> | undefined>();\n\n /** Menu data inputs */\n leftMenus = input<MenuItem[]>([]);\n leftMenuGroups = input<MenuGroup[]>([]);\n rightMenus = input<MenuItem[]>([]);\n topMenus = input<MenuItem[]>([]);\n topSecondaryMenus = input<MenuGroup[]>([]);\n userMenus = input<UserMenuSection[]>([]);\n logo = input<string>('assets/logo.png');\n logoLink = input<string>('/');\n\n logoClass = input<ClassValue>('', { alias: 'logoClass' });\n headerClass = input<ClassValue>('', { alias: 'headerClass' });\n contentClass = input<ClassValue>('', { alias: 'contentClass' });\n contentBottomClass = input<ClassValue>('', { alias: 'contentBottomClass' });\n\n /** Container class inputs */\n leftMenuClass = input<ClassValue>('', { alias: 'leftClass' });\n rightMenuClass = input<ClassValue>('', { alias: 'rightClass' });\n topMenuClass = input<ClassValue>('', { alias: 'topClass' });\n\n /** Link/button base class inputs */\n leftLinkClass = input<ClassValue>('', { alias: 'leftLinkClass' });\n rightLinkClass = input<ClassValue>('', { alias: 'rightLinkClass' });\n topLinkClass = input<ClassValue>('', { alias: 'topLinkClass' });\n\n searchEnabled = input<boolean>(false);\n loading = input<boolean>(false);\n searchPlaceholderText = input<string>('Select an page');\n searchEmptyText = input<string>('No pages found');\n searchOptionTemplate = input<TemplateRef<any>>();\n searchLoaderFn = input<(params: TParams) => Promise<TItem[]>>();\n searchTransformValueToSearch = input<(value: TItem) => string>();\n\n public readonly searchOptionChange = output<TItem>();\n\n protected readonly _logoClass = computed(() => hlm('tw:h-10', this.logoClass()));\n\n protected readonly _headerClass = computed(() =>\n hlm(\n 'tw:px-4 tw:py-2 tw:flex tw:items-center tw:justify-between tw:bg-gray-100 tw:border-b tw:border-gray-300',\n this.headerClass(),\n ),\n );\n\n protected readonly _contentClass = computed(() => hlm('tw:p-4 tw:flex tw:flex-col tw:flex-1', this.contentClass()));\n protected readonly _contentBottomClass = computed(() => hlm('tw:flex-1', this.contentBottomClass()));\n\n /** Computed merged classes for containers */\n protected readonly _computedLeftClass = computed(() => hlm(commonLinkGroupClasses, this.leftMenuClass()));\n protected readonly _computedRightClass = computed(() => hlm(commonLinkGroupClasses, this.rightMenuClass()));\n protected readonly _computedTopClass = computed(() =>\n hlm(\n 'tw:flex tw:flex-wrap tw:items-center tw:gap-x-4 tw:gap-y-1 tw:px-4 tw:py-2 tw:bg-gray-50 tw:border-b tw:border-gray-200',\n this.topMenuClass(),\n ),\n );\n protected readonly _computedTopSecondaryClass = computed(() =>\n hlm(\n 'tw:flex tw:flex-wrap tw:items-center tw:gap-x-4 tw:gap-y-1 tw:px-4 tw:py-1.5 tw:bg-gray-100/60 tw:border-b tw:border-gray-200',\n this.topMenuClass(),\n ),\n );\n\n /** Computed merged classes for link/button elements */\n protected readonly _computedLeftLinkClass = computed(() => hlm(commonLinkClasses, this.leftLinkClass()));\n protected readonly _computedRightLinkClass = computed(() => hlm(commonLinkClasses, this.rightLinkClass()));\n protected readonly _computedTopLinkClass = computed(() =>\n hlm(\n 'tw:text-secondary tw:visited:text-secondary tw:hover:text-primary tw:cursor-pointer tw:no-underline tw:text-sm',\n this.topLinkClass(),\n ),\n );\n\n mobileMenuItemClass = commonLinkClasses;\n\n footerEnabled = input<boolean>(false);\n footerMenus = input<MenuItem[]>([]);\n footerMenuClass = input<ClassValue>('', { alias: 'footerMenuClass' });\n footerLinkClass = input<ClassValue>('', { alias: 'footerLinkClass' });\n footerContent = input<string>('© 2024 My Company');\n footerClass = input<ClassValue>('', { alias: 'footerClass' });\n\n protected readonly _footerClass = computed(() =>\n hlm(\n 'tw:px-4 tw:py-4 tw:bg-gray-100 tw:border-t tw:border-gray-300 tw:text-sm tw:text-gray-600',\n this.footerClass(),\n ),\n );\n\n protected readonly _computedFooterMenuClass = computed(() =>\n hlm('tw:flex tw:flex-wrap tw:justify-center tw:space-x-4', this.footerMenuClass()),\n );\n\n protected readonly _computedFooterLinkClass = computed(() =>\n hlm('tw:text-secondary tw:hover:text-primary tw:cursor-pointer tw:no-underline', this.footerLinkClass()),\n );\n\n /** Mobile menu state */\n mobileMenuOpen = false;\n isMobile = signal(false);\n\n constructor(private breakpointObserver: BreakpointObserver) {\n this.breakpointObserver.observe([Breakpoints.Handset]).subscribe((result) => {\n this.isMobile.set(result.matches);\n });\n }\n\n toggleMobileMenu() {\n this.mobileMenuOpen = !this.mobileMenuOpen;\n }\n\n onSearchOptionChange(value: TItem) {\n this.searchOptionChange.emit(value);\n }\n\n public readonly viewchildSheetRef = viewChild(EgLayoutSimpleSidebar);\n\n openSidebar() {\n this.viewchildSheetRef()?.openSheet();\n }\n\n closeSidebar() {\n this.viewchildSheetRef()?.closeSheet();\n }\n}\n","<ng-template #menuIconTemplate>\n <ng-icon [svg]=\"menuIcon\" size=\"20px\" class=\"tw:[&_svg]:w-[inherit]! tw:[&_svg]:h-[inherit]!\" />\n</ng-template>\n\n<eg-layout-simple-sidebar\n [title]=\"sidebarTitle()\"\n [content]=\"sidebarContent()\"\n [contentContext]=\"{ close: closeSidebar.bind(this) }\"\n/>\n\n<div class=\"tw:flex tw:flex-col tw:min-h-screen\">\n <!-- Header -->\n <header [class]=\"_headerClass()\">\n <div class=\"tw:flex tw:items-center tw:space-x-4\">\n @if (sidebarEnabled()) {\n <button\n hlmButton\n variant=\"secondary\"\n appearance=\"outline\"\n size=\"icon\"\n [icon]=\"menuIconTemplate\"\n iconPosition=\"left\"\n class=\"tw:bg-transparent! tw:border-gray-400! tw:hover:border-gray-500!\"\n (click)=\"openSidebar()\"\n ></button>\n }\n\n <div class=\"logo\">\n <a [routerLink]=\"logoLink()\">\n <img [src]=\"logo()\" alt=\"Logo\" [class]=\"_logoClass()\" />\n </a>\n </div>\n <!-- Left menus (desktop) -->\n <nav [class]=\"_computedLeftClass()\">\n @for (item of leftMenus(); track item.label) { @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedLeftLinkClass(), item.class || '')\"> {{ item.label }} </a>\n } @else {\n <button type=\"button\" (click)=\"item.action?.()\" [class]=\"hlm(_computedLeftLinkClass(), item.class || '')\">\n {{ item.label }}\n </button>\n } } @for (group of leftMenuGroups(); track $index) {\n <div class=\"tw:relative tw:group\">\n <button\n type=\"button\"\n class=\"tw:text-left tw:text-secondary tw:hover:text-primary tw:cursor-pointer tw:no-underline tw:py-1 tw:flex tw:items-center tw:gap-1\"\n >\n {{ group.label ?? 'Menu' }}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"tw:h-3 tw:w-3\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n <div\n class=\"tw:absolute tw:left-0 tw:top-full tw:mt-1 tw:hidden tw:group-hover:flex tw:flex-col tw:min-w-[12rem] tw:bg-popover tw:text-popover-foreground tw:border tw:border-gray-200 tw:rounded-md tw:shadow-md tw:py-1 tw:z-50\"\n >\n @if (group.label) {\n <div class=\"tw:px-3 tw:py-1 tw:text-xs tw:font-semibold tw:text-muted-foreground\">{{ group.label }}</div>\n } @for (item of group.items; track item.label) { @if (item.link) {\n <a\n [routerLink]=\"item.link\"\n [class]=\"hlm('tw:px-3 tw:py-1.5 tw:text-sm tw:no-underline tw:hover:bg-secondary tw:cursor-pointer', item.class || '')\"\n >\n {{ item.label }}\n </a>\n } @else {\n <button\n type=\"button\"\n (click)=\"item.action?.()\"\n [class]=\"hlm('tw:px-3 tw:py-1.5 tw:text-sm tw:text-left tw:hover:bg-secondary tw:cursor-pointer tw:bg-transparent tw:border-0 tw:w-full', item.class || '')\"\n >\n {{ item.label }}\n </button>\n } }\n </div>\n </div>\n }\n </nav>\n </div>\n\n <!-- Right menus (desktop) -->\n <nav [class]=\"_computedRightClass()\">\n @if (searchEnabled()) {\n <eg-generic-autocomplete\n [loaderFn]=\"searchLoaderFn()\"\n [transformValueToSearch]=\"searchTransformValueToSearch()\"\n [placeholderText]=\"searchPlaceholderText()\"\n [emptyText]=\"searchEmptyText()\"\n (optionChange)=\"onSearchOptionChange($event)\"\n ></eg-generic-autocomplete>\n } @for (item of rightMenus(); track item.label) { @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedRightLinkClass(), item.class || '')\"> {{ item.label }} </a>\n } @else {\n <button type=\"button\" (click)=\"item.action?.()\" [class]=\"hlm(_computedRightLinkClass(), item.class || '')\">\n {{ item.label }}\n </button>\n } } @let uMenus = userMenus(); @if (uMenus && uMenus.length > 0) {\n <eg-layout-simple-user-menu [menus]=\"uMenus\" [menuTrigger]=\"userMenuTrigger()\" />\n }\n </nav>\n\n <!-- Mobile menu button -->\n <button\n (click)=\"toggleMobileMenu()\"\n class=\"tw:md:hidden tw:p-2 tw:text-gray-700 tw:hover:text-primary tw:focus:outline-none tw:cursor-pointer\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"tw:h-6 tw:w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 6h16M4 12h16M4 18h16\" />\n </svg>\n </button>\n </header>\n\n @let _topMenus = leftMenus().concat(rightMenus()); @let _userMenus = userMenus(); @let _leftMenuGroups =\n leftMenuGroups(); @let _topMenuItems = topMenus(); @let _topSecondaryGroups = topSecondaryMenus();\n\n <!-- Top menus (desktop) -->\n @if (_topMenuItems.length > 0) {\n <nav [class]=\"_computedTopClass()\">\n @for (item of _topMenuItems; track item.label) { @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedTopLinkClass(), item.class || '')\"> {{ item.label }} </a>\n } @else {\n <span [class]=\"hlm(_computedTopLinkClass(), item.class || '')\">{{ item.label }}</span>\n } }\n </nav>\n }\n\n <!-- Top secondary menus (desktop) — second row showing items grouped by parent label -->\n @if (_topSecondaryGroups.length > 0) {\n <nav [class]=\"_computedTopSecondaryClass()\">\n @for (group of _topSecondaryGroups; track group.label) {\n <span class=\"tw:flex tw:flex-wrap tw:items-center tw:gap-x-3\">\n @if (group.label) {\n <span class=\"tw:text-xs tw:font-semibold tw:uppercase tw:text-muted-foreground\">{{ group.label }}</span>\n } @for (item of group.items; track item.label) { @if (item.link) {\n <a\n [routerLink]=\"item.link\"\n [class]=\"hlm(_computedTopLinkClass(), 'tw:text-xs tw:hover:underline', item.class || '')\"\n >\n {{ item.label }}\n </a>\n } @else {\n <button\n type=\"button\"\n (click)=\"item.action?.()\"\n [class]=\"hlm(_computedTopLinkClass(), 'tw:text-xs tw:hover:underline', item.class || '')\"\n >\n {{ item.label }}\n </button>\n } }\n </span>\n }\n </nav>\n }\n\n <!-- Mobile menu -->\n @if (isMobile() && mobileMenuOpen) {\n <div class=\"tw:w-full tw:border-none\">\n @if (_topMenuItems.length > 0) {\n <eg-layout-simple-mobile-menu-group [items]=\"_topMenuItems\" (itemClick)=\"toggleMobileMenu()\" />\n }\n\n @for (group of _topSecondaryGroups; track group.label) { @if (group.items && group.items.length > 0) {\n <eg-layout-simple-mobile-menu-group\n [items]=\"group.items\"\n [label]=\"group.label\"\n (itemClick)=\"toggleMobileMenu()\"\n ></eg-layout-simple-mobile-menu-group>\n } }\n\n <eg-layout-simple-mobile-menu-group [items]=\"_topMenus\" (itemClick)=\"toggleMobileMenu()\" />\n\n @for (group of _leftMenuGroups; track $index) { @if (group.items && group.items.length > 0) {\n <eg-layout-simple-mobile-menu-group\n [items]=\"group.items\"\n [label]=\"group.label\"\n (itemClick)=\"toggleMobileMenu()\"\n ></eg-layout-simple-mobile-menu-group>\n } } @if ((_topMenus.length > 0 || _leftMenuGroups.length > 0) && _userMenus.length > 0) {\n <hr class=\"tw:border-gray-300 tw:my-2\" />\n } @for (section of userMenus(); track section.label) {\n <eg-layout-simple-mobile-menu-group\n [items]=\"section.items\"\n [label]=\"section.label\"\n (itemClick)=\"toggleMobileMenu()\"\n ></eg-layout-simple-mobile-menu-group>\n\n @if (section.separator) {\n <hr class=\"tw:border-gray-300 tw:my-2\" />\n } }\n </div>\n }\n\n <!-- Main content -->\n <main [class]=\"_contentClass()\">\n @if (!loading()) {\n <div class=\"tw:flex tw:items-center tw:justify-center tw:h-full\">\n <ng-content />\n </div>\n }\n <div [class]=\"_contentBottomClass()\"></div>\n </main>\n\n @if (footerEnabled()) {\n <footer [class]=\"_footerClass()\">\n <nav [class]=\"_computedFooterMenuClass()\">\n @for (item of footerMenus(); track item.label) { @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedFooterLinkClass(), item.class || '')\"> {{ item.label }} </a>\n } @else {\n <button type=\"button\" (click)=\"item.action?.()\" [class]=\"hlm(_computedFooterLinkClass(), item.class || '')\">\n {{ item.label }}\n </button>\n } }\n </nav>\n\n <div class=\"tw:mt-2 tw:text-center\">{{ footerContent() }}</div>\n </footer>\n }\n</div>\n","/*\n * Public API Surface of layout-simple\n */\n\nexport * from './lib/layout';\nexport * from './lib/user-menu';\nexport * from './lib/search';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "layout-simple",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^20.3.0 || ^22.0.0",
|
|
6
|
+
"@angular/core": "^20.3.0 || ^22.0.0"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"module": "fesm2022/layout-simple.mjs",
|
|
13
|
+
"typings": "types/layout-simple.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
"./package.json": {
|
|
16
|
+
"default": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./types/layout-simple.d.ts",
|
|
20
|
+
"default": "./fesm2022/layout-simple.mjs"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"type": "module"
|
|
24
|
+
}
|
|
@@ -3,9 +3,7 @@ import { TemplateRef } from '@angular/core';
|
|
|
3
3
|
import { BreakpointObserver } from '@angular/cdk/layout';
|
|
4
4
|
import { ClassValue } from 'clsx';
|
|
5
5
|
import { hlm } from '@egose/shadcn-theme-ng/utils';
|
|
6
|
-
import { HlmAutocompleteOption } from '@egose/shadcn-theme-ng/autocomplete';
|
|
7
6
|
import { BrnSheet } from '@spartan-ng/brain/sheet';
|
|
8
|
-
import * as _angular_forms from '@angular/forms';
|
|
9
7
|
|
|
10
8
|
interface UserMenuItem {
|
|
11
9
|
label: string;
|
|
@@ -48,6 +46,10 @@ interface MenuItem {
|
|
|
48
46
|
action?: () => void;
|
|
49
47
|
class?: string;
|
|
50
48
|
}
|
|
49
|
+
interface MenuGroup {
|
|
50
|
+
label?: string;
|
|
51
|
+
items: MenuItem[];
|
|
52
|
+
}
|
|
51
53
|
declare class EgLayoutSimple<TItem, TParams extends object = {
|
|
52
54
|
search: string;
|
|
53
55
|
}> {
|
|
@@ -60,7 +62,10 @@ declare class EgLayoutSimple<TItem, TParams extends object = {
|
|
|
60
62
|
userMenuTrigger: _angular_core.InputSignal<TemplateRef<any> | undefined>;
|
|
61
63
|
/** Menu data inputs */
|
|
62
64
|
leftMenus: _angular_core.InputSignal<MenuItem[]>;
|
|
65
|
+
leftMenuGroups: _angular_core.InputSignal<MenuGroup[]>;
|
|
63
66
|
rightMenus: _angular_core.InputSignal<MenuItem[]>;
|
|
67
|
+
topMenus: _angular_core.InputSignal<MenuItem[]>;
|
|
68
|
+
topSecondaryMenus: _angular_core.InputSignal<MenuGroup[]>;
|
|
64
69
|
userMenus: _angular_core.InputSignal<UserMenuSection[]>;
|
|
65
70
|
logo: _angular_core.InputSignal<string>;
|
|
66
71
|
logoLink: _angular_core.InputSignal<string>;
|
|
@@ -71,14 +76,16 @@ declare class EgLayoutSimple<TItem, TParams extends object = {
|
|
|
71
76
|
/** Container class inputs */
|
|
72
77
|
leftMenuClass: _angular_core.InputSignal<ClassValue>;
|
|
73
78
|
rightMenuClass: _angular_core.InputSignal<ClassValue>;
|
|
79
|
+
topMenuClass: _angular_core.InputSignal<ClassValue>;
|
|
74
80
|
/** Link/button base class inputs */
|
|
75
81
|
leftLinkClass: _angular_core.InputSignal<ClassValue>;
|
|
76
82
|
rightLinkClass: _angular_core.InputSignal<ClassValue>;
|
|
83
|
+
topLinkClass: _angular_core.InputSignal<ClassValue>;
|
|
77
84
|
searchEnabled: _angular_core.InputSignal<boolean>;
|
|
78
85
|
loading: _angular_core.InputSignal<boolean>;
|
|
79
86
|
searchPlaceholderText: _angular_core.InputSignal<string>;
|
|
80
87
|
searchEmptyText: _angular_core.InputSignal<string>;
|
|
81
|
-
searchOptionTemplate: _angular_core.InputSignal<TemplateRef<
|
|
88
|
+
searchOptionTemplate: _angular_core.InputSignal<TemplateRef<any> | undefined>;
|
|
82
89
|
searchLoaderFn: _angular_core.InputSignal<((params: TParams) => Promise<TItem[]>) | undefined>;
|
|
83
90
|
searchTransformValueToSearch: _angular_core.InputSignal<((value: TItem) => string) | undefined>;
|
|
84
91
|
readonly searchOptionChange: _angular_core.OutputEmitterRef<TItem>;
|
|
@@ -89,9 +96,12 @@ declare class EgLayoutSimple<TItem, TParams extends object = {
|
|
|
89
96
|
/** Computed merged classes for containers */
|
|
90
97
|
protected readonly _computedLeftClass: _angular_core.Signal<string>;
|
|
91
98
|
protected readonly _computedRightClass: _angular_core.Signal<string>;
|
|
99
|
+
protected readonly _computedTopClass: _angular_core.Signal<string>;
|
|
100
|
+
protected readonly _computedTopSecondaryClass: _angular_core.Signal<string>;
|
|
92
101
|
/** Computed merged classes for link/button elements */
|
|
93
102
|
protected readonly _computedLeftLinkClass: _angular_core.Signal<string>;
|
|
94
103
|
protected readonly _computedRightLinkClass: _angular_core.Signal<string>;
|
|
104
|
+
protected readonly _computedTopLinkClass: _angular_core.Signal<string>;
|
|
95
105
|
mobileMenuItemClass: string;
|
|
96
106
|
footerEnabled: _angular_core.InputSignal<boolean>;
|
|
97
107
|
footerMenus: _angular_core.InputSignal<MenuItem[]>;
|
|
@@ -112,31 +122,32 @@ declare class EgLayoutSimple<TItem, TParams extends object = {
|
|
|
112
122
|
openSidebar(): void;
|
|
113
123
|
closeSidebar(): void;
|
|
114
124
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgLayoutSimple<any, any>, never>;
|
|
115
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgLayoutSimple<any, any>, "eg-layout-simple", never, { "sidebarEnabled": { "alias": "sidebarEnabled"; "required": false; "isSignal": true; }; "sidebarTitle": { "alias": "sidebarTitle"; "required": false; "isSignal": true; }; "sidebarContent": { "alias": "sidebarContent"; "required": false; "isSignal": true; }; "userMenuTrigger": { "alias": "userMenuTrigger"; "required": false; "isSignal": true; }; "leftMenus": { "alias": "leftMenus"; "required": false; "isSignal": true; }; "rightMenus": { "alias": "rightMenus"; "required": false; "isSignal": true; }; "userMenus": { "alias": "userMenus"; "required": false; "isSignal": true; }; "logo": { "alias": "logo"; "required": false; "isSignal": true; }; "logoLink": { "alias": "logoLink"; "required": false; "isSignal": true; }; "logoClass": { "alias": "logoClass"; "required": false; "isSignal": true; }; "headerClass": { "alias": "headerClass"; "required": false; "isSignal": true; }; "contentClass": { "alias": "contentClass"; "required": false; "isSignal": true; }; "contentBottomClass": { "alias": "contentBottomClass"; "required": false; "isSignal": true; }; "leftMenuClass": { "alias": "leftClass"; "required": false; "isSignal": true; }; "rightMenuClass": { "alias": "rightClass"; "required": false; "isSignal": true; }; "leftLinkClass": { "alias": "leftLinkClass"; "required": false; "isSignal": true; }; "rightLinkClass": { "alias": "rightLinkClass"; "required": false; "isSignal": true; }; "searchEnabled": { "alias": "searchEnabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "searchPlaceholderText": { "alias": "searchPlaceholderText"; "required": false; "isSignal": true; }; "searchEmptyText": { "alias": "searchEmptyText"; "required": false; "isSignal": true; }; "searchOptionTemplate": { "alias": "searchOptionTemplate"; "required": false; "isSignal": true; }; "searchLoaderFn": { "alias": "searchLoaderFn"; "required": false; "isSignal": true; }; "searchTransformValueToSearch": { "alias": "searchTransformValueToSearch"; "required": false; "isSignal": true; }; "footerEnabled": { "alias": "footerEnabled"; "required": false; "isSignal": true; }; "footerMenus": { "alias": "footerMenus"; "required": false; "isSignal": true; }; "footerMenuClass": { "alias": "footerMenuClass"; "required": false; "isSignal": true; }; "footerLinkClass": { "alias": "footerLinkClass"; "required": false; "isSignal": true; }; "footerContent": { "alias": "footerContent"; "required": false; "isSignal": true; }; "footerClass": { "alias": "footerClass"; "required": false; "isSignal": true; }; }, { "searchOptionChange": "searchOptionChange"; }, never, ["*"], true, never>;
|
|
125
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgLayoutSimple<any, any>, "eg-layout-simple", never, { "sidebarEnabled": { "alias": "sidebarEnabled"; "required": false; "isSignal": true; }; "sidebarTitle": { "alias": "sidebarTitle"; "required": false; "isSignal": true; }; "sidebarContent": { "alias": "sidebarContent"; "required": false; "isSignal": true; }; "userMenuTrigger": { "alias": "userMenuTrigger"; "required": false; "isSignal": true; }; "leftMenus": { "alias": "leftMenus"; "required": false; "isSignal": true; }; "leftMenuGroups": { "alias": "leftMenuGroups"; "required": false; "isSignal": true; }; "rightMenus": { "alias": "rightMenus"; "required": false; "isSignal": true; }; "topMenus": { "alias": "topMenus"; "required": false; "isSignal": true; }; "topSecondaryMenus": { "alias": "topSecondaryMenus"; "required": false; "isSignal": true; }; "userMenus": { "alias": "userMenus"; "required": false; "isSignal": true; }; "logo": { "alias": "logo"; "required": false; "isSignal": true; }; "logoLink": { "alias": "logoLink"; "required": false; "isSignal": true; }; "logoClass": { "alias": "logoClass"; "required": false; "isSignal": true; }; "headerClass": { "alias": "headerClass"; "required": false; "isSignal": true; }; "contentClass": { "alias": "contentClass"; "required": false; "isSignal": true; }; "contentBottomClass": { "alias": "contentBottomClass"; "required": false; "isSignal": true; }; "leftMenuClass": { "alias": "leftClass"; "required": false; "isSignal": true; }; "rightMenuClass": { "alias": "rightClass"; "required": false; "isSignal": true; }; "topMenuClass": { "alias": "topClass"; "required": false; "isSignal": true; }; "leftLinkClass": { "alias": "leftLinkClass"; "required": false; "isSignal": true; }; "rightLinkClass": { "alias": "rightLinkClass"; "required": false; "isSignal": true; }; "topLinkClass": { "alias": "topLinkClass"; "required": false; "isSignal": true; }; "searchEnabled": { "alias": "searchEnabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "searchPlaceholderText": { "alias": "searchPlaceholderText"; "required": false; "isSignal": true; }; "searchEmptyText": { "alias": "searchEmptyText"; "required": false; "isSignal": true; }; "searchOptionTemplate": { "alias": "searchOptionTemplate"; "required": false; "isSignal": true; }; "searchLoaderFn": { "alias": "searchLoaderFn"; "required": false; "isSignal": true; }; "searchTransformValueToSearch": { "alias": "searchTransformValueToSearch"; "required": false; "isSignal": true; }; "footerEnabled": { "alias": "footerEnabled"; "required": false; "isSignal": true; }; "footerMenus": { "alias": "footerMenus"; "required": false; "isSignal": true; }; "footerMenuClass": { "alias": "footerMenuClass"; "required": false; "isSignal": true; }; "footerLinkClass": { "alias": "footerLinkClass"; "required": false; "isSignal": true; }; "footerContent": { "alias": "footerContent"; "required": false; "isSignal": true; }; "footerClass": { "alias": "footerClass"; "required": false; "isSignal": true; }; }, { "searchOptionChange": "searchOptionChange"; }, never, ["*"], true, never>;
|
|
116
126
|
}
|
|
117
127
|
|
|
128
|
+
interface AutocompleteOption<T = unknown> {
|
|
129
|
+
label: string;
|
|
130
|
+
value: T;
|
|
131
|
+
raw?: T;
|
|
132
|
+
}
|
|
118
133
|
declare class EgGenericAutocomplete<TItem, TParams extends object = {
|
|
119
134
|
search: string;
|
|
120
135
|
}> {
|
|
121
|
-
defaultOptionTemplate: _angular_core.Signal<TemplateRef<HlmAutocompleteOption<TItem>> | undefined>;
|
|
122
|
-
controlId: _angular_core.InputSignal<string>;
|
|
123
136
|
placeholderText: _angular_core.InputSignal<string>;
|
|
124
137
|
emptyText: _angular_core.InputSignal<string>;
|
|
125
|
-
|
|
138
|
+
/** Loader function: takes search string, returns options. */
|
|
126
139
|
loaderFn: _angular_core.InputSignal<((params: TParams) => Promise<TItem[]>) | undefined>;
|
|
127
140
|
transformValueToSearch: _angular_core.InputSignal<((value: TItem) => string) | undefined>;
|
|
128
|
-
readonly optionChange: _angular_core.OutputEmitterRef<TItem>;
|
|
129
|
-
private readonly _formBuilder;
|
|
130
|
-
form: _angular_forms.FormGroup<{
|
|
131
|
-
option: _angular_forms.FormControl<null>;
|
|
132
|
-
}>;
|
|
133
141
|
readonly search: _angular_core.WritableSignal<string>;
|
|
134
|
-
options: _angular_core.
|
|
135
|
-
|
|
136
|
-
|
|
142
|
+
readonly options: _angular_core.WritableSignal<TItem[]>;
|
|
143
|
+
protected readonly filtered: _angular_core.Signal<AutocompleteOption<TItem>[]>;
|
|
144
|
+
readonly optionChange: _angular_core.OutputEmitterRef<TItem>;
|
|
145
|
+
constructor();
|
|
146
|
+
private loadOptions;
|
|
147
|
+
select(opt: AutocompleteOption<TItem>): void;
|
|
137
148
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgGenericAutocomplete<any, any>, never>;
|
|
138
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgGenericAutocomplete<any, any>, "eg-generic-autocomplete", never, { "
|
|
149
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgGenericAutocomplete<any, any>, "eg-generic-autocomplete", never, { "placeholderText": { "alias": "placeholderText"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loaderFn": { "alias": "loaderFn"; "required": false; "isSignal": true; }; "transformValueToSearch": { "alias": "transformValueToSearch"; "required": false; "isSignal": true; }; }, { "optionChange": "optionChange"; }, never, never, true, never>;
|
|
139
150
|
}
|
|
140
151
|
|
|
141
152
|
export { EgGenericAutocomplete, EgLayoutSimple, EgLayoutSimpleUserMenu };
|
|
142
|
-
export type { MenuItem, UserMenuItem, UserMenuSection };
|
|
153
|
+
export type { AutocompleteOption, MenuGroup, MenuItem, UserMenuItem, UserMenuSection };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Directive, InjectionToken, inject, input, booleanAttribute, computed, effect, forwardRef, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/cdk/menu';
|
|
4
|
+
import { CdkMenuBar, CdkMenuTrigger, CdkMenuItem } from '@angular/cdk/menu';
|
|
5
|
+
import { classes } from '@egose/shadcn-theme-ng-tw/utils';
|
|
6
|
+
import { createMenuPosition, MENU_SIDE } from '@spartan-ng/brain/core';
|
|
7
|
+
|
|
8
|
+
class HlmMenubar {
|
|
9
|
+
constructor() {
|
|
10
|
+
classes(() => 'bg-background h-9 gap-1 rounded-md border p-1 shadow-xs flex items-center');
|
|
11
|
+
}
|
|
12
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmMenubar, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
13
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: HlmMenubar, isStandalone: true, selector: "[hlmMenubar],hlm-menubar", host: { attributes: { "data-slot": "menubar" } }, hostDirectives: [{ directive: i1.CdkMenuBar }], ngImport: i0 });
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmMenubar, decorators: [{
|
|
16
|
+
type: Directive,
|
|
17
|
+
args: [{
|
|
18
|
+
selector: '[hlmMenubar],hlm-menubar',
|
|
19
|
+
hostDirectives: [CdkMenuBar],
|
|
20
|
+
host: {
|
|
21
|
+
'data-slot': 'menubar',
|
|
22
|
+
},
|
|
23
|
+
}]
|
|
24
|
+
}], ctorParameters: () => [] });
|
|
25
|
+
|
|
26
|
+
const defaultConfig = {
|
|
27
|
+
align: 'start',
|
|
28
|
+
side: 'bottom',
|
|
29
|
+
};
|
|
30
|
+
const HlmMenubarConfigToken = new InjectionToken('HlmMenubarConfig');
|
|
31
|
+
function provideHlmMenubarConfig(config) {
|
|
32
|
+
return { provide: HlmMenubarConfigToken, useValue: { ...defaultConfig, ...config } };
|
|
33
|
+
}
|
|
34
|
+
function injectHlmMenubarConfig() {
|
|
35
|
+
return inject(HlmMenubarConfigToken, { optional: true }) ?? defaultConfig;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
class HlmMenubarTrigger {
|
|
39
|
+
_cdkTrigger = inject(CdkMenuTrigger, { host: true });
|
|
40
|
+
_config = injectHlmMenubarConfig();
|
|
41
|
+
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
42
|
+
align = input(this._config.align, /* @ts-ignore */
|
|
43
|
+
...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
44
|
+
side = input(this._config.side, /* @ts-ignore */
|
|
45
|
+
...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
|
|
46
|
+
_menuPosition = computed(() => createMenuPosition(this.align(), this.side()), /* @ts-ignore */
|
|
47
|
+
...(ngDevMode ? [{ debugName: "_menuPosition" }] : /* istanbul ignore next */ []));
|
|
48
|
+
constructor() {
|
|
49
|
+
// CDK sets transform-origin on the menu content (a shared hlm-dropdown-menu) from the resolved
|
|
50
|
+
// position; the content reads it to animate from the anchored corner and to derive its data-side.
|
|
51
|
+
// Cast tolerates @angular/cdk < 21.2 (we still support >=21.0), where the property is absent and
|
|
52
|
+
// the assignment is a harmless no-op.
|
|
53
|
+
this._cdkTrigger.transformOriginSelector = '[data-slot="dropdown-menu"]';
|
|
54
|
+
effect(() => {
|
|
55
|
+
this._cdkTrigger.menuPosition = this._menuPosition();
|
|
56
|
+
});
|
|
57
|
+
classes(() => 'hover:bg-muted aria-expanded:bg-muted rounded-sm px-2 py-1 text-sm font-medium flex items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50');
|
|
58
|
+
}
|
|
59
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmMenubarTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
60
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: HlmMenubarTrigger, isStandalone: true, selector: "button[hlmMenubarTrigger]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "menubar-trigger" }, properties: { "disabled": "disabled() ", "attr.data-disabled": "disabled() ? \"\" : null" } }, providers: [{ provide: MENU_SIDE, useExisting: forwardRef(() => HlmMenubarTrigger) }], hostDirectives: [{ directive: i1.CdkMenuItem, inputs: ["cdkMenuItemDisabled", "disabled"] }, { directive: i1.CdkMenuTrigger, inputs: ["cdkMenuTriggerFor", "hlmMenubarTrigger", "cdkMenuTriggerData", "hlmMenubarTriggerData"], outputs: ["cdkMenuOpened", "hlmDropdownMenuOpened", "cdkMenuClosed", "hlmDropdownMenuClosed"] }], ngImport: i0 });
|
|
61
|
+
}
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmMenubarTrigger, decorators: [{
|
|
63
|
+
type: Directive,
|
|
64
|
+
args: [{
|
|
65
|
+
selector: 'button[hlmMenubarTrigger]',
|
|
66
|
+
providers: [{ provide: MENU_SIDE, useExisting: forwardRef(() => HlmMenubarTrigger) }],
|
|
67
|
+
hostDirectives: [
|
|
68
|
+
{
|
|
69
|
+
directive: CdkMenuItem,
|
|
70
|
+
inputs: ['cdkMenuItemDisabled: disabled'],
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
directive: CdkMenuTrigger,
|
|
74
|
+
inputs: ['cdkMenuTriggerFor: hlmMenubarTrigger', 'cdkMenuTriggerData: hlmMenubarTriggerData'],
|
|
75
|
+
outputs: ['cdkMenuOpened: hlmDropdownMenuOpened', 'cdkMenuClosed: hlmDropdownMenuClosed'],
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
host: {
|
|
79
|
+
'data-slot': 'menubar-trigger',
|
|
80
|
+
'[disabled]': 'disabled() ',
|
|
81
|
+
'[attr.data-disabled]': 'disabled() ? "" : null',
|
|
82
|
+
},
|
|
83
|
+
}]
|
|
84
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }] } });
|
|
85
|
+
|
|
86
|
+
/*
|
|
87
|
+
* Public API Surface of menubar
|
|
88
|
+
*/
|
|
89
|
+
const HlmMenubarImports = [HlmMenubar, HlmMenubarTrigger];
|
|
90
|
+
class HlmMenubarModule {
|
|
91
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmMenubarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
92
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: HlmMenubarModule, imports: [HlmMenubar, HlmMenubarTrigger], exports: [HlmMenubar, HlmMenubarTrigger] });
|
|
93
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmMenubarModule });
|
|
94
|
+
}
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmMenubarModule, decorators: [{
|
|
96
|
+
type: NgModule,
|
|
97
|
+
args: [{
|
|
98
|
+
imports: [...HlmMenubarImports],
|
|
99
|
+
exports: [...HlmMenubarImports],
|
|
100
|
+
}]
|
|
101
|
+
}] });
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Generated bundle index. Do not edit.
|
|
105
|
+
*/
|
|
106
|
+
|
|
107
|
+
export { HlmMenubar, HlmMenubarImports, HlmMenubarModule, HlmMenubarTrigger, injectHlmMenubarConfig, provideHlmMenubarConfig };
|
|
108
|
+
//# sourceMappingURL=menubar.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menubar.mjs","sources":["../../../projects/menubar/src/lib/hlm-menubar.ts","../../../projects/menubar/src/lib/hlm-menubar-token.ts","../../../projects/menubar/src/lib/hlm-menubar-trigger.ts","../../../projects/menubar/src/public-api.ts","../../../projects/menubar/src/menubar.ts"],"sourcesContent":["import { CdkMenuBar } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\nimport { classes } from '@egose/shadcn-theme-ng/utils';\n\n@Directive({\n selector: '[hlmMenubar],hlm-menubar',\n hostDirectives: [CdkMenuBar],\n host: {\n 'data-slot': 'menubar',\n },\n})\nexport class HlmMenubar {\n constructor() {\n classes(() => 'bg-background h-9 gap-1 rounded-md border p-1 shadow-xs flex items-center');\n }\n}\n","import { InjectionToken, type ValueProvider, inject } from '@angular/core';\nimport { type MenuAlign, type MenuSide } from '@spartan-ng/brain/core';\n\nexport interface HlmMenubarConfig {\n align: MenuAlign;\n side: MenuSide;\n}\n\nconst defaultConfig: HlmMenubarConfig = {\n align: 'start',\n side: 'bottom',\n};\n\nconst HlmMenubarConfigToken = new InjectionToken<HlmMenubarConfig>('HlmMenubarConfig');\n\nexport function provideHlmMenubarConfig(config: Partial<HlmMenubarConfig>): ValueProvider {\n return { provide: HlmMenubarConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectHlmMenubarConfig(): HlmMenubarConfig {\n return inject(HlmMenubarConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import { type BooleanInput } from '@angular/cdk/coercion';\nimport { CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { booleanAttribute, computed, Directive, effect, forwardRef, inject, input } from '@angular/core';\nimport { createMenuPosition, MENU_SIDE, type MenuAlign, type MenuSide } from '@spartan-ng/brain/core';\nimport { classes } from '@egose/shadcn-theme-ng/utils';\nimport { injectHlmMenubarConfig } from './hlm-menubar-token';\n\n@Directive({\n selector: 'button[hlmMenubarTrigger]',\n providers: [{ provide: MENU_SIDE, useExisting: forwardRef(() => HlmMenubarTrigger) }],\n hostDirectives: [\n {\n directive: CdkMenuItem,\n inputs: ['cdkMenuItemDisabled: disabled'],\n },\n {\n directive: CdkMenuTrigger,\n inputs: ['cdkMenuTriggerFor: hlmMenubarTrigger', 'cdkMenuTriggerData: hlmMenubarTriggerData'],\n outputs: ['cdkMenuOpened: hlmDropdownMenuOpened', 'cdkMenuClosed: hlmDropdownMenuClosed'],\n },\n ],\n host: {\n 'data-slot': 'menubar-trigger',\n '[disabled]': 'disabled() ',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class HlmMenubarTrigger {\n private readonly _cdkTrigger = inject(CdkMenuTrigger, { host: true });\n private readonly _config = injectHlmMenubarConfig();\n\n public readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n public readonly align = input<MenuAlign>(this._config.align);\n public readonly side = input<MenuSide>(this._config.side);\n\n private readonly _menuPosition = computed(() => createMenuPosition(this.align(), this.side()));\n\n constructor() {\n // CDK sets transform-origin on the menu content (a shared hlm-dropdown-menu) from the resolved\n // position; the content reads it to animate from the anchored corner and to derive its data-side.\n // Cast tolerates @angular/cdk < 21.2 (we still support >=21.0), where the property is absent and\n // the assignment is a harmless no-op.\n (this._cdkTrigger as { transformOriginSelector?: string }).transformOriginSelector = '[data-slot=\"dropdown-menu\"]';\n\n effect(() => {\n this._cdkTrigger.menuPosition = this._menuPosition();\n });\n\n classes(\n () =>\n 'hover:bg-muted aria-expanded:bg-muted rounded-sm px-2 py-1 text-sm font-medium flex items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50',\n );\n }\n}\n","/*\n * Public API Surface of menubar\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { HlmMenubar } from './lib/hlm-menubar';\nimport { HlmMenubarTrigger } from './lib/hlm-menubar-trigger';\n\nexport * from './lib/hlm-menubar';\nexport * from './lib/hlm-menubar-token';\nexport * from './lib/hlm-menubar-trigger';\n\nexport const HlmMenubarImports = [HlmMenubar, HlmMenubarTrigger] as const;\n\n@NgModule({\n imports: [...HlmMenubarImports],\n exports: [...HlmMenubarImports],\n})\nexport class HlmMenubarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "menubar",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^22.0.0",
|
|
6
|
+
"@angular/core": "^22.0.0",
|
|
7
|
+
"@spartan-ng/brain": "^1.1.1"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"tslib": "^2.3.0"
|
|
11
|
+
},
|
|
12
|
+
"sideEffects": false,
|
|
13
|
+
"module": "fesm2022/menubar.mjs",
|
|
14
|
+
"typings": "types/menubar.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
"./package.json": {
|
|
17
|
+
"default": "./package.json"
|
|
18
|
+
},
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./types/menubar.d.ts",
|
|
21
|
+
"default": "./fesm2022/menubar.mjs"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"type": "module"
|
|
25
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { ValueProvider } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/cdk/menu';
|
|
4
|
+
import { BooleanInput } from '@angular/cdk/coercion';
|
|
5
|
+
import { MenuAlign, MenuSide } from '@spartan-ng/brain/core';
|
|
6
|
+
|
|
7
|
+
declare class HlmMenubar {
|
|
8
|
+
constructor();
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HlmMenubar, never>;
|
|
10
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<HlmMenubar, "[hlmMenubar],hlm-menubar", never, {}, {}, never, never, true, [{ directive: typeof i1.CdkMenuBar; inputs: {}; outputs: {}; }]>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
declare class HlmMenubarTrigger {
|
|
14
|
+
private readonly _cdkTrigger;
|
|
15
|
+
private readonly _config;
|
|
16
|
+
readonly disabled: i0.InputSignalWithTransform<boolean, BooleanInput>;
|
|
17
|
+
readonly align: i0.InputSignal<MenuAlign>;
|
|
18
|
+
readonly side: i0.InputSignal<MenuSide>;
|
|
19
|
+
private readonly _menuPosition;
|
|
20
|
+
constructor();
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HlmMenubarTrigger, never>;
|
|
22
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<HlmMenubarTrigger, "button[hlmMenubarTrigger]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.CdkMenuItem; inputs: { "cdkMenuItemDisabled": "disabled"; }; outputs: {}; }, { directive: typeof i1.CdkMenuTrigger; inputs: { "cdkMenuTriggerFor": "hlmMenubarTrigger"; "cdkMenuTriggerData": "hlmMenubarTriggerData"; }; outputs: { "cdkMenuOpened": "hlmDropdownMenuOpened"; "cdkMenuClosed": "hlmDropdownMenuClosed"; }; }]>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface HlmMenubarConfig {
|
|
26
|
+
align: MenuAlign;
|
|
27
|
+
side: MenuSide;
|
|
28
|
+
}
|
|
29
|
+
declare function provideHlmMenubarConfig(config: Partial<HlmMenubarConfig>): ValueProvider;
|
|
30
|
+
declare function injectHlmMenubarConfig(): HlmMenubarConfig;
|
|
31
|
+
|
|
32
|
+
declare const HlmMenubarImports: readonly [typeof HlmMenubar, typeof HlmMenubarTrigger];
|
|
33
|
+
declare class HlmMenubarModule {
|
|
34
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HlmMenubarModule, never>;
|
|
35
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<HlmMenubarModule, never, [typeof HlmMenubar, typeof HlmMenubarTrigger], [typeof HlmMenubar, typeof HlmMenubarTrigger]>;
|
|
36
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<HlmMenubarModule>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { HlmMenubar, HlmMenubarImports, HlmMenubarModule, HlmMenubarTrigger, injectHlmMenubarConfig, provideHlmMenubarConfig };
|
|
40
|
+
export type { HlmMenubarConfig };
|