@tailng-ui/components 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +16 -5
- package/src/lib/feedback/empty/tng-empty.component.d.ts +16 -1
- package/src/lib/feedback/empty/tng-empty.component.d.ts.map +1 -1
- package/src/lib/feedback/empty/tng-empty.component.js +47 -57
- package/src/lib/feedback/empty/tng-empty.component.js.map +1 -1
- package/src/lib/feedback/index.d.ts +0 -5
- package/src/lib/feedback/index.d.ts.map +1 -1
- package/src/lib/feedback/index.js +4 -5
- package/src/lib/feedback/index.js.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts +4 -0
- package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.component.js +16 -26
- package/src/lib/feedback/progress-bar/tng-progress-bar.component.js.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts +4 -0
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js +18 -32
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts +4 -0
- package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.component.js +14 -20
- package/src/lib/feedback/skeleton/tng-skeleton.component.js.map +1 -1
- package/src/lib/feedback/toast/tng-toast.component.d.ts +4 -1
- package/src/lib/feedback/toast/tng-toast.component.d.ts.map +1 -1
- package/src/lib/feedback/toast/tng-toast.component.js +17 -19
- package/src/lib/feedback/toast/tng-toast.component.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts +4 -0
- package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.component.js +46 -49
- package/src/lib/form/autocomplete/tng-autocomplete.component.js.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts +3 -0
- package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle-group.component.js +33 -58
- package/src/lib/form/button-toggle/tng-button-toggle-group.component.js.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts +3 -0
- package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.component.js +15 -26
- package/src/lib/form/button-toggle/tng-button-toggle.component.js.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.component.d.ts +3 -0
- package/src/lib/form/checkbox/tng-checkbox.component.d.ts.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.component.js +32 -42
- package/src/lib/form/checkbox/tng-checkbox.component.js.map +1 -1
- package/src/lib/form/chips/tng-chips.component.d.ts +3 -0
- package/src/lib/form/chips/tng-chips.component.d.ts.map +1 -1
- package/src/lib/form/chips/tng-chips.component.js +14 -19
- package/src/lib/form/chips/tng-chips.component.js.map +1 -1
- package/src/lib/form/combobox/tng-combobox.component.d.ts +3 -0
- package/src/lib/form/combobox/tng-combobox.component.d.ts.map +1 -1
- package/src/lib/form/combobox/tng-combobox.component.js +10 -13
- package/src/lib/form/combobox/tng-combobox.component.js.map +1 -1
- package/src/lib/form/datepicker/tng-datepicker.component.d.ts +4 -1
- package/src/lib/form/datepicker/tng-datepicker.component.d.ts.map +1 -1
- package/src/lib/form/datepicker/tng-datepicker.component.js +58 -98
- package/src/lib/form/datepicker/tng-datepicker.component.js.map +1 -1
- package/src/lib/form/form-field/tng-form-field.component.d.ts +3 -0
- package/src/lib/form/form-field/tng-form-field.component.d.ts.map +1 -1
- package/src/lib/form/form-field/tng-form-field.component.js +28 -33
- package/src/lib/form/form-field/tng-form-field.component.js.map +1 -1
- package/src/lib/form/index.d.ts +0 -20
- package/src/lib/form/index.d.ts.map +1 -1
- package/src/lib/form/index.js +4 -20
- package/src/lib/form/index.js.map +1 -1
- package/src/lib/form/input/tng-input.component.d.ts +3 -0
- package/src/lib/form/input/tng-input.component.d.ts.map +1 -1
- package/src/lib/form/input/tng-input.component.js +49 -60
- package/src/lib/form/input/tng-input.component.js.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.component.d.ts +3 -0
- package/src/lib/form/input-otp/tng-input-otp.component.d.ts.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.component.js +55 -69
- package/src/lib/form/input-otp/tng-input-otp.component.js.map +1 -1
- package/src/lib/form/label/tng-label.component.d.ts +3 -0
- package/src/lib/form/label/tng-label.component.d.ts.map +1 -1
- package/src/lib/form/label/tng-label.component.js +12 -19
- package/src/lib/form/label/tng-label.component.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts +4 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js +40 -43
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.component.d.ts +4 -0
- package/src/lib/form/multiselect/tng-multiselect.component.d.ts.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.component.js +49 -52
- package/src/lib/form/multiselect/tng-multiselect.component.js.map +1 -1
- package/src/lib/form/radio/tng-radio.component.d.ts +3 -0
- package/src/lib/form/radio/tng-radio.component.d.ts.map +1 -1
- package/src/lib/form/radio/tng-radio.component.js +18 -33
- package/src/lib/form/radio/tng-radio.component.js.map +1 -1
- package/src/lib/form/select/tng-select.component.d.ts +4 -0
- package/src/lib/form/select/tng-select.component.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.component.js +52 -53
- package/src/lib/form/select/tng-select.component.js.map +1 -1
- package/src/lib/form/select/tng-select.slots.d.ts +5 -0
- package/src/lib/form/select/tng-select.slots.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.slots.js +21 -17
- package/src/lib/form/select/tng-select.slots.js.map +1 -1
- package/src/lib/form/slider/tng-slider.component.d.ts +3 -0
- package/src/lib/form/slider/tng-slider.component.d.ts.map +1 -1
- package/src/lib/form/slider/tng-slider.component.js +14 -27
- package/src/lib/form/slider/tng-slider.component.js.map +1 -1
- package/src/lib/form/switch/tng-switch.component.d.ts +3 -0
- package/src/lib/form/switch/tng-switch.component.d.ts.map +1 -1
- package/src/lib/form/switch/tng-switch.component.js +15 -24
- package/src/lib/form/switch/tng-switch.component.js.map +1 -1
- package/src/lib/form/textarea/tng-textarea.component.d.ts +3 -0
- package/src/lib/form/textarea/tng-textarea.component.d.ts.map +1 -1
- package/src/lib/form/textarea/tng-textarea.component.js +19 -36
- package/src/lib/form/textarea/tng-textarea.component.js.map +1 -1
- package/src/lib/form/toggle/tng-toggle.component.d.ts +3 -0
- package/src/lib/form/toggle/tng-toggle.component.d.ts.map +1 -1
- package/src/lib/form/toggle/tng-toggle.component.js +41 -41
- package/src/lib/form/toggle/tng-toggle.component.js.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts +4 -0
- package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.component.js +28 -31
- package/src/lib/form/toggle-group/tng-toggle-group.component.js.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.component.d.ts +10 -0
- package/src/lib/layout/accordion/tng-accordion.component.d.ts.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.component.js +49 -148
- package/src/lib/layout/accordion/tng-accordion.component.js.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts +3 -0
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js +10 -13
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js.map +1 -1
- package/src/lib/layout/card/tng-card.component.d.ts +21 -0
- package/src/lib/layout/card/tng-card.component.d.ts.map +1 -1
- package/src/lib/layout/card/tng-card.component.js +92 -136
- package/src/lib/layout/card/tng-card.component.js.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.component.d.ts +3 -0
- package/src/lib/layout/collapsible/tng-collapsible.component.d.ts.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.component.js +17 -24
- package/src/lib/layout/collapsible/tng-collapsible.component.js.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.component.d.ts +4 -0
- package/src/lib/layout/drawer/tng-drawer.component.d.ts.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.component.js +48 -51
- package/src/lib/layout/drawer/tng-drawer.component.js.map +1 -1
- package/src/lib/layout/grid/tng-grid.component.d.ts +8 -0
- package/src/lib/layout/grid/tng-grid.component.d.ts.map +1 -1
- package/src/lib/layout/grid/tng-grid.component.js +48 -110
- package/src/lib/layout/grid/tng-grid.component.js.map +1 -1
- package/src/lib/layout/index.d.ts +1 -8
- package/src/lib/layout/index.d.ts.map +1 -1
- package/src/lib/layout/index.js +5 -8
- package/src/lib/layout/index.js.map +1 -1
- package/src/lib/layout/separator/tng-separator.component.d.ts +3 -0
- package/src/lib/layout/separator/tng-separator.component.d.ts.map +1 -1
- package/src/lib/layout/separator/tng-separator.component.js +11 -16
- package/src/lib/layout/separator/tng-separator.component.js.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.component.d.ts +3 -0
- package/src/lib/layout/stepper/tng-stepper.component.d.ts.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.component.js +10 -13
- package/src/lib/layout/stepper/tng-stepper.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts +4 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js +47 -49
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts +4 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js +16 -18
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts +4 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js +10 -12
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts +3 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js +12 -10
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts +4 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js +12 -14
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts +4 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js +23 -25
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts +5 -0
- package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.component.js +24 -26
- package/src/lib/navigation/context-menu/tng-context-menu.component.js.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts +4 -0
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js +19 -23
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js.map +1 -1
- package/src/lib/navigation/index.d.ts +0 -12
- package/src/lib/navigation/index.d.ts.map +1 -1
- package/src/lib/navigation/index.js +4 -12
- package/src/lib/navigation/index.js.map +1 -1
- package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts +3 -0
- package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts.map +1 -1
- package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js +22 -20
- package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js.map +1 -1
- package/src/lib/navigation/menu/tng-menu.component.d.ts +5 -0
- package/src/lib/navigation/menu/tng-menu.component.d.ts.map +1 -1
- package/src/lib/navigation/menu/tng-menu.component.js +21 -23
- package/src/lib/navigation/menu/tng-menu.component.js.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.component.d.ts +5 -0
- package/src/lib/navigation/menubar/tng-menubar.component.d.ts.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.component.js +20 -22
- package/src/lib/navigation/menubar/tng-menubar.component.js.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts +4 -0
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js +11 -13
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.component.d.ts +5 -0
- package/src/lib/navigation/tabs/tng-tabs.component.d.ts.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.component.js +32 -34
- package/src/lib/navigation/tabs/tng-tabs.component.js.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts +4 -0
- package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.component.js +11 -13
- package/src/lib/navigation/toolbar/tng-toolbar.component.js.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.component.d.ts +4 -0
- package/src/lib/overlay/dialog/tng-dialog.component.d.ts.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.component.js +18 -25
- package/src/lib/overlay/dialog/tng-dialog.component.js.map +1 -1
- package/src/lib/overlay/index.d.ts +0 -3
- package/src/lib/overlay/index.d.ts.map +1 -1
- package/src/lib/overlay/index.js +4 -3
- package/src/lib/overlay/index.js.map +1 -1
- package/src/lib/overlay/popover/tng-popover.component.d.ts +4 -0
- package/src/lib/overlay/popover/tng-popover.component.d.ts.map +1 -1
- package/src/lib/overlay/popover/tng-popover.component.js +23 -37
- package/src/lib/overlay/popover/tng-popover.component.js.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts +4 -0
- package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.component.js +17 -21
- package/src/lib/overlay/tooltip/tng-tooltip.component.js.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.component.d.ts +4 -1
- package/src/lib/utility/avatar/tng-avatar.component.d.ts.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.component.js +20 -22
- package/src/lib/utility/avatar/tng-avatar.component.js.map +1 -1
- package/src/lib/utility/badge/tng-badge.component.d.ts +4 -0
- package/src/lib/utility/badge/tng-badge.component.d.ts.map +1 -1
- package/src/lib/utility/badge/tng-badge.component.js +13 -10
- package/src/lib/utility/badge/tng-badge.component.js.map +1 -1
- package/src/lib/utility/button/tng-button.component.d.ts +4 -1
- package/src/lib/utility/button/tng-button.component.d.ts.map +1 -1
- package/src/lib/utility/button/tng-button.component.js +19 -29
- package/src/lib/utility/button/tng-button.component.js.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.component.d.ts +4 -0
- package/src/lib/utility/code-block/tng-code-block.component.d.ts.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.component.js +73 -103
- package/src/lib/utility/code-block/tng-code-block.component.js.map +1 -1
- package/src/lib/utility/copy-button/tng-copy-button.component.d.ts +4 -1
- package/src/lib/utility/copy-button/tng-copy-button.component.d.ts.map +1 -1
- package/src/lib/utility/copy-button/tng-copy-button.component.js +28 -36
- package/src/lib/utility/copy-button/tng-copy-button.component.js.map +1 -1
- package/src/lib/utility/index.d.ts +1 -9
- package/src/lib/utility/index.d.ts.map +1 -1
- package/src/lib/utility/index.js +5 -8
- package/src/lib/utility/index.js.map +1 -1
- package/src/lib/utility/tag/tng-tag.component.d.ts +4 -1
- package/src/lib/utility/tag/tng-tag.component.d.ts.map +1 -1
- package/src/lib/utility/tag/tng-tag.component.js +18 -24
- package/src/lib/utility/tag/tng-tag.component.js.map +1 -1
- package/src/lib/utility/tree/tng-tree.component.d.ts +4 -1
- package/src/lib/utility/tree/tng-tree.component.d.ts.map +1 -1
- package/src/lib/utility/tree/tng-tree.component.js +23 -25
- package/src/lib/utility/tree/tng-tree.component.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-breadcrumb.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/breadcrumb/tng-breadcrumb.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ContentChild,\n ContentChildren,\n computed,\n effect,\n input,\n TemplateRef,\n type AfterContentInit,\n type QueryList,\n} from '@angular/core';\nimport { TngBreadcrumb as TngBreadcrumbPrimitive } from '@tailng-ui/primitives';\nimport { merge, Subscription } from 'rxjs';\nimport { TngBreadcrumbItemComponent, type TngBreadcrumbItemDisplayMode } from './tng-breadcrumb-item.component';\nimport { TngBreadcrumbListComponent } from './tng-breadcrumb-list.component';\nimport { TngBreadcrumbSeparatorTemplateDirective } from './tng-breadcrumb-separator-template.directive';\n\n@Component({\n selector: 'tng-breadcrumb',\n imports: [TngBreadcrumbPrimitive, TngBreadcrumbListComponent],\n templateUrl: './tng-breadcrumb.component.html',\n styleUrl: './tng-breadcrumb.component.css',\n})\nexport class TngBreadcrumbComponent implements AfterContentInit {\n @ContentChildren(TngBreadcrumbItemComponent, { descendants: true })\n private readonly breadcrumbItems?: QueryList<TngBreadcrumbItemComponent>;\n\n @ContentChild(TngBreadcrumbSeparatorTemplateDirective, { read: TemplateRef })\n private readonly separatorTemplate?: TemplateRef<unknown>;\n\n public readonly ariaLabel = input<string | null>('Breadcrumb');\n public readonly separator = input('/');\n public readonly maxItems = input<number | null>(null);\n public readonly itemsBeforeCollapse = input(1);\n public readonly itemsAfterCollapse = input(2);\n public readonly collapseLabel = input('More');\n\n protected readonly resolvedAriaLabel = computed(() => {\n const ariaLabel = this.ariaLabel();\n if (ariaLabel === null) {\n return 'Breadcrumb';\n }\n\n const trimmedAriaLabel = ariaLabel.trim();\n return trimmedAriaLabel.length > 0 ? trimmedAriaLabel : 'Breadcrumb';\n });\n\n private itemStateSubscriptions = Subscription.EMPTY;\n private readonly queryListSubscriptions = new Subscription();\n\n public constructor() {\n effect(() => {\n this.separator();\n this.maxItems();\n this.itemsBeforeCollapse();\n this.itemsAfterCollapse();\n this.collapseLabel();\n this.syncItems();\n });\n }\n\n public ngAfterContentInit(): void {\n this.rebindItemStateSubscriptions();\n if (this.breadcrumbItems === undefined) {\n return;\n }\n\n this.queryListSubscriptions.add(\n this.breadcrumbItems.changes.subscribe(() => {\n this.rebindItemStateSubscriptions();\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.itemStateSubscriptions.unsubscribe();\n this.queryListSubscriptions.unsubscribe();\n }\n\n private rebindItemStateSubscriptions(): void {\n this.itemStateSubscriptions.unsubscribe();\n\n const items = this.breadcrumbItems?.toArray() ?? [];\n if (items.length === 0) {\n this.syncItems();\n return;\n }\n\n this.itemStateSubscriptions = merge(...items.map((item) => item.stateChanges)).subscribe(() => {\n this.syncItems();\n });\n\n this.syncItems();\n }\n\n private syncItems(): void {\n const items = this.breadcrumbItems?.toArray() ?? [];\n if (items.length === 0) {\n return;\n }\n\n const currentIndex = this.resolveCurrentIndex(items);\n const displayModes = this.resolveDisplayModes(items, currentIndex);\n const visibleIndices = this.resolveVisibleIndices(displayModes);\n\n for (let index = 0; index < items.length; index += 1) {\n const item = items[index];\n const isVisible = displayModes[index] !== 'hidden';\n const isLastVisibleItem = !visibleIndices.some((visibleIndex) => visibleIndex > index);\n\n item.setResolvedCurrent(index === currentIndex);\n item.setDisplayMode(displayModes[index], this.collapseLabel());\n item.setSeparator(this.separator(), isVisible && !isLastVisibleItem, this.separatorTemplate ?? null);\n }\n }\n\n private resolveCurrentIndex(items: readonly TngBreadcrumbItemComponent[]): number {\n const explicitlyCurrentIndices = items.reduce<number[]>((accumulator, item, index) => {\n if (item.current()) {\n accumulator.push(index);\n }\n return accumulator;\n }, []);\n\n if (explicitlyCurrentIndices.length > 0) {\n return explicitlyCurrentIndices[explicitlyCurrentIndices.length - 1];\n }\n\n if (items.length === 1) {\n return 0;\n }\n\n return -1;\n }\n\n // eslint-disable-next-line complexity,max-lines-per-function\n private resolveDisplayModes(\n items: readonly TngBreadcrumbItemComponent[],\n currentIndex: number,\n ): readonly TngBreadcrumbItemDisplayMode[] {\n const itemCount = items.length;\n const maxItems = this.maxItems();\n if (maxItems === null || maxItems < 1 || itemCount <= maxItems) {\n return Array.from({ length: itemCount }, () => 'visible' as const);\n }\n\n const itemsBeforeCollapse = Math.max(1, Math.floor(this.itemsBeforeCollapse()));\n const itemsAfterCollapse = Math.max(1, Math.floor(this.itemsAfterCollapse()));\n const visibleIndices = new Set<number>();\n\n for (let index = 0; index < Math.min(itemsBeforeCollapse, itemCount); index += 1) {\n visibleIndices.add(index);\n }\n\n for (\n let index = Math.max(itemCount - itemsAfterCollapse, 0);\n index < itemCount;\n index += 1\n ) {\n visibleIndices.add(index);\n }\n\n if (currentIndex >= 0) {\n visibleIndices.add(currentIndex);\n }\n\n const hiddenIndices: number[] = [];\n for (let index = 0; index < itemCount; index += 1) {\n if (!visibleIndices.has(index)) {\n hiddenIndices.push(index);\n }\n }\n\n if (hiddenIndices.length === 0) {\n return Array.from({ length: itemCount }, () => 'visible' as const);\n }\n\n const displayModes: TngBreadcrumbItemDisplayMode[] = Array.from(\n { length: itemCount },\n () => 'visible' as const,\n );\n\n for (const hiddenIndex of hiddenIndices) {\n displayModes[hiddenIndex] = 'hidden';\n }\n\n // The first hidden item becomes the collapse marker so we avoid introducing a separate focusable node.\n displayModes[hiddenIndices[0]] = 'ellipsis';\n return displayModes;\n }\n\n private resolveVisibleIndices(displayModes: readonly TngBreadcrumbItemDisplayMode[]): readonly number[] {\n const visibleIndices: number[] = [];\n for (let index = 0; index < displayModes.length; index += 1) {\n if (displayModes[index] !== 'hidden') {\n visibleIndices.push(index);\n }\n }\n return visibleIndices;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tng-breadcrumb.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/breadcrumb/tng-breadcrumb.component.ts","../../../../../../../../libs/tailng-ui/components/src/lib/navigation/breadcrumb/tng-breadcrumb.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ContentChild,\n ContentChildren,\n computed,\n effect,\n input,\n TemplateRef,\n type AfterContentInit,\n type QueryList,\n} from '@angular/core';\nimport { TngBreadcrumb as TngBreadcrumbPrimitive } from '@tailng-ui/primitives';\nimport { merge, Subscription } from 'rxjs';\nimport { TngBreadcrumbItemComponent, type TngBreadcrumbItemDisplayMode } from './tng-breadcrumb-item.component';\nimport { TngBreadcrumbListComponent } from './tng-breadcrumb-list.component';\nimport { TngBreadcrumbSeparatorTemplateDirective } from './tng-breadcrumb-separator-template.directive';\n\n@Component({\n selector: 'tng-breadcrumb',\n imports: [TngBreadcrumbPrimitive, TngBreadcrumbListComponent],\n templateUrl: './tng-breadcrumb.component.html',\n styleUrl: './tng-breadcrumb.component.css',\n})\nexport class TngBreadcrumbComponent implements AfterContentInit {\n @ContentChildren(TngBreadcrumbItemComponent, { descendants: true })\n private readonly breadcrumbItems?: QueryList<TngBreadcrumbItemComponent>;\n\n @ContentChild(TngBreadcrumbSeparatorTemplateDirective, { read: TemplateRef })\n private readonly separatorTemplate?: TemplateRef<unknown>;\n\n public readonly ariaLabel = input<string | null>('Breadcrumb');\n public readonly separator = input('/');\n public readonly maxItems = input<number | null>(null);\n public readonly itemsBeforeCollapse = input(1);\n public readonly itemsAfterCollapse = input(2);\n public readonly collapseLabel = input('More');\n\n protected readonly resolvedAriaLabel = computed(() => {\n const ariaLabel = this.ariaLabel();\n if (ariaLabel === null) {\n return 'Breadcrumb';\n }\n\n const trimmedAriaLabel = ariaLabel.trim();\n return trimmedAriaLabel.length > 0 ? trimmedAriaLabel : 'Breadcrumb';\n });\n\n private itemStateSubscriptions = Subscription.EMPTY;\n private readonly queryListSubscriptions = new Subscription();\n\n public constructor() {\n effect(() => {\n this.separator();\n this.maxItems();\n this.itemsBeforeCollapse();\n this.itemsAfterCollapse();\n this.collapseLabel();\n this.syncItems();\n });\n }\n\n public ngAfterContentInit(): void {\n this.rebindItemStateSubscriptions();\n if (this.breadcrumbItems === undefined) {\n return;\n }\n\n this.queryListSubscriptions.add(\n this.breadcrumbItems.changes.subscribe(() => {\n this.rebindItemStateSubscriptions();\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.itemStateSubscriptions.unsubscribe();\n this.queryListSubscriptions.unsubscribe();\n }\n\n private rebindItemStateSubscriptions(): void {\n this.itemStateSubscriptions.unsubscribe();\n\n const items = this.breadcrumbItems?.toArray() ?? [];\n if (items.length === 0) {\n this.syncItems();\n return;\n }\n\n this.itemStateSubscriptions = merge(...items.map((item) => item.stateChanges)).subscribe(() => {\n this.syncItems();\n });\n\n this.syncItems();\n }\n\n private syncItems(): void {\n const items = this.breadcrumbItems?.toArray() ?? [];\n if (items.length === 0) {\n return;\n }\n\n const currentIndex = this.resolveCurrentIndex(items);\n const displayModes = this.resolveDisplayModes(items, currentIndex);\n const visibleIndices = this.resolveVisibleIndices(displayModes);\n\n for (let index = 0; index < items.length; index += 1) {\n const item = items[index];\n const isVisible = displayModes[index] !== 'hidden';\n const isLastVisibleItem = !visibleIndices.some((visibleIndex) => visibleIndex > index);\n\n item.setResolvedCurrent(index === currentIndex);\n item.setDisplayMode(displayModes[index], this.collapseLabel());\n item.setSeparator(this.separator(), isVisible && !isLastVisibleItem, this.separatorTemplate ?? null);\n }\n }\n\n private resolveCurrentIndex(items: readonly TngBreadcrumbItemComponent[]): number {\n const explicitlyCurrentIndices = items.reduce<number[]>((accumulator, item, index) => {\n if (item.current()) {\n accumulator.push(index);\n }\n return accumulator;\n }, []);\n\n if (explicitlyCurrentIndices.length > 0) {\n return explicitlyCurrentIndices[explicitlyCurrentIndices.length - 1];\n }\n\n if (items.length === 1) {\n return 0;\n }\n\n return -1;\n }\n\n // eslint-disable-next-line complexity,max-lines-per-function\n private resolveDisplayModes(\n items: readonly TngBreadcrumbItemComponent[],\n currentIndex: number,\n ): readonly TngBreadcrumbItemDisplayMode[] {\n const itemCount = items.length;\n const maxItems = this.maxItems();\n if (maxItems === null || maxItems < 1 || itemCount <= maxItems) {\n return Array.from({ length: itemCount }, () => 'visible' as const);\n }\n\n const itemsBeforeCollapse = Math.max(1, Math.floor(this.itemsBeforeCollapse()));\n const itemsAfterCollapse = Math.max(1, Math.floor(this.itemsAfterCollapse()));\n const visibleIndices = new Set<number>();\n\n for (let index = 0; index < Math.min(itemsBeforeCollapse, itemCount); index += 1) {\n visibleIndices.add(index);\n }\n\n for (\n let index = Math.max(itemCount - itemsAfterCollapse, 0);\n index < itemCount;\n index += 1\n ) {\n visibleIndices.add(index);\n }\n\n if (currentIndex >= 0) {\n visibleIndices.add(currentIndex);\n }\n\n const hiddenIndices: number[] = [];\n for (let index = 0; index < itemCount; index += 1) {\n if (!visibleIndices.has(index)) {\n hiddenIndices.push(index);\n }\n }\n\n if (hiddenIndices.length === 0) {\n return Array.from({ length: itemCount }, () => 'visible' as const);\n }\n\n const displayModes: TngBreadcrumbItemDisplayMode[] = Array.from(\n { length: itemCount },\n () => 'visible' as const,\n );\n\n for (const hiddenIndex of hiddenIndices) {\n displayModes[hiddenIndex] = 'hidden';\n }\n\n // The first hidden item becomes the collapse marker so we avoid introducing a separate focusable node.\n displayModes[hiddenIndices[0]] = 'ellipsis';\n return displayModes;\n }\n\n private resolveVisibleIndices(displayModes: readonly TngBreadcrumbItemDisplayMode[]): readonly number[] {\n const visibleIndices: number[] = [];\n for (let index = 0; index < displayModes.length; index += 1) {\n if (displayModes[index] !== 'hidden') {\n visibleIndices.push(index);\n }\n }\n return visibleIndices;\n }\n}\nexport { TngBreadcrumbComponent as TngBreadcrumb };\n","<nav tngBreadcrumb class=\"tng-breadcrumb\" [attr.aria-label]=\"resolvedAriaLabel()\">\n <tng-breadcrumb-list>\n <ng-content />\n </tng-breadcrumb-list>\n</nav>\n"]}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "@tailng-ui/primitives";
|
|
1
3
|
export declare class TngContextMenuComponent {
|
|
2
4
|
readonly ariaLabel: import("@angular/core").InputSignal<string>;
|
|
3
5
|
protected get hostAriaLabel(): string;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngContextMenuComponent, never>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TngContextMenuComponent, "tng-context-menu", ["tngContextMenuComponent"], { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.TngMenu; inputs: { "loop": "loop"; "disabled": "disabled"; "closeOnSelect": "closeOnSelect"; "dismissOnOutsideClick": "dismissOnOutsideClick"; "dismissOnFocusout": "dismissOnFocusout"; }; outputs: { "tngMenuOpened": "tngMenuOpened"; "tngMenuClosed": "tngMenuClosed"; "tngMenuSelect": "tngMenuSelect"; }; }, { directive: typeof i1.TngContextMenu; inputs: {}; outputs: {}; }]>;
|
|
4
8
|
}
|
|
9
|
+
export { TngContextMenuComponent as TngContextMenu };
|
|
5
10
|
//# sourceMappingURL=tng-context-menu.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-context-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/context-menu/tng-context-menu.component.ts"],"names":[],"mappings":"AAMA,qBAgBa,uBAAuB;IAClC,SAAgB,SAAS,8CAAiC;IAG1D,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;
|
|
1
|
+
{"version":3,"file":"tng-context-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/context-menu/tng-context-menu.component.ts"],"names":[],"mappings":";;AAMA,qBAgBa,uBAAuB;IAClC,SAAgB,SAAS,8CAAiC;IAG1D,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;yCANU,uBAAuB;2CAAvB,uBAAuB;CAOnC;AACD,OAAO,EAAE,uBAAuB,IAAI,cAAc,EAAE,CAAC"}
|
|
@@ -1,32 +1,30 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
1
|
import { Component, HostBinding, input } from '@angular/core';
|
|
3
2
|
import { TngContextMenu as TngContextMenuPrimitive, TngMenu as TngMenuPrimitive, } from '@tailng-ui/primitives';
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@tailng-ui/primitives";
|
|
5
|
+
export class TngContextMenuComponent {
|
|
6
|
+
ariaLabel = input('Context menu', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : []));
|
|
6
7
|
get hostAriaLabel() {
|
|
7
8
|
return this.ariaLabel();
|
|
8
9
|
}
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
})
|
|
30
|
-
], TngContextMenuComponent);
|
|
31
|
-
export { TngContextMenuComponent };
|
|
10
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.1", type: TngContextMenuComponent, isStandalone: true, selector: "tng-context-menu", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-label": "this.hostAriaLabel" } }, exportAs: ["tngContextMenuComponent"], hostDirectives: [{ directive: i1.TngMenu, inputs: ["loop", "loop", "disabled", "disabled", "closeOnSelect", "closeOnSelect", "dismissOnOutsideClick", "dismissOnOutsideClick", "dismissOnFocusout", "dismissOnFocusout"], outputs: ["tngMenuOpened", "tngMenuOpened", "tngMenuClosed", "tngMenuClosed", "tngMenuSelect", "tngMenuSelect"] }, { directive: i1.TngContextMenu }], ngImport: i0, template: "<ng-content />\n", styles: [":host {\n background: var(--tng-semantic-background-canvas);\n border: 1px solid var(--tng-semantic-border-subtle);\n border-radius: 0.75rem;\n color: var(--tng-semantic-foreground-primary);\n display: block;\n min-width: 14rem;\n padding: 0.45rem;\n}\n\n:host[data-state='open'] {\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 0.22rem;\n}\n\n:host[hidden] {\n display: none !important;\n}\n"] });
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngContextMenuComponent, decorators: [{
|
|
14
|
+
type: Component,
|
|
15
|
+
args: [{ selector: 'tng-context-menu', hostDirectives: [
|
|
16
|
+
{
|
|
17
|
+
directive: TngMenuPrimitive,
|
|
18
|
+
inputs: ['loop', 'disabled', 'closeOnSelect', 'dismissOnOutsideClick', 'dismissOnFocusout'],
|
|
19
|
+
outputs: ['tngMenuOpened', 'tngMenuClosed', 'tngMenuSelect'],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
directive: TngContextMenuPrimitive,
|
|
23
|
+
},
|
|
24
|
+
], exportAs: 'tngContextMenuComponent', template: "<ng-content />\n", styles: [":host {\n background: var(--tng-semantic-background-canvas);\n border: 1px solid var(--tng-semantic-border-subtle);\n border-radius: 0.75rem;\n color: var(--tng-semantic-foreground-primary);\n display: block;\n min-width: 14rem;\n padding: 0.45rem;\n}\n\n:host[data-state='open'] {\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 0.22rem;\n}\n\n:host[hidden] {\n display: none !important;\n}\n"] }]
|
|
25
|
+
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], hostAriaLabel: [{
|
|
26
|
+
type: HostBinding,
|
|
27
|
+
args: ['attr.aria-label']
|
|
28
|
+
}] } });
|
|
29
|
+
export { TngContextMenuComponent as TngContextMenu };
|
|
32
30
|
//# sourceMappingURL=tng-context-menu.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-context-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/context-menu/tng-context-menu.component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tng-context-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/context-menu/tng-context-menu.component.ts","../../../../../../../../libs/tailng-ui/components/src/lib/navigation/context-menu/tng-context-menu.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,cAAc,IAAI,uBAAuB,EACzC,OAAO,IAAI,gBAAgB,GAC5B,MAAM,uBAAuB,CAAC;;;AAkB/B,MAAM,OAAO,uBAAuB;IAClB,SAAS,GAAG,KAAK,CAAS,cAAc,qDAAC,CAAC;IAE1D,IACc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;uGANU,uBAAuB;2FAAvB,uBAAuB,srBCtBpC,kBACA;;2FDqBa,uBAAuB;kBAhBnC,SAAS;+BACE,kBAAkB,kBACZ;wBACd;4BACE,SAAS,EAAE,gBAAgB;4BAC3B,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,EAAE,mBAAmB,CAAC;4BAC3F,OAAO,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC;yBAC7D;wBACD;4BACE,SAAS,EAAE,uBAAuB;yBACnC;qBACF,YAGS,yBAAyB;;sBAKlC,WAAW;uBAAC,iBAAiB;;AAKhC,OAAO,EAAE,uBAAuB,IAAI,cAAc,EAAE,CAAC","sourcesContent":["import { Component, HostBinding, input } from '@angular/core';\nimport {\n TngContextMenu as TngContextMenuPrimitive,\n TngMenu as TngMenuPrimitive,\n} from '@tailng-ui/primitives';\n\n@Component({\n selector: 'tng-context-menu',\n hostDirectives: [\n {\n directive: TngMenuPrimitive,\n inputs: ['loop', 'disabled', 'closeOnSelect', 'dismissOnOutsideClick', 'dismissOnFocusout'],\n outputs: ['tngMenuOpened', 'tngMenuClosed', 'tngMenuSelect'],\n },\n {\n directive: TngContextMenuPrimitive,\n },\n ],\n templateUrl: './tng-context-menu.component.html',\n styleUrl: './tng-context-menu.component.css',\n exportAs: 'tngContextMenuComponent',\n})\nexport class TngContextMenuComponent {\n public readonly ariaLabel = input<string>('Context menu');\n\n @HostBinding('attr.aria-label')\n protected get hostAriaLabel(): string {\n return this.ariaLabel();\n }\n}\nexport { TngContextMenuComponent as TngContextMenu };\n","<ng-content />\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
1
2
|
export declare class TngDropdownMenuComponent {
|
|
2
3
|
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
3
4
|
readonly label: import("@angular/core").InputSignal<string>;
|
|
@@ -6,5 +7,8 @@ export declare class TngDropdownMenuComponent {
|
|
|
6
7
|
protected onDocumentClick(event: unknown): void;
|
|
7
8
|
protected onEscapeKeydown(): void;
|
|
8
9
|
protected toggleOpen(): void;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngDropdownMenuComponent, never>;
|
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TngDropdownMenuComponent, "tng-dropdown-menu", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
9
12
|
}
|
|
13
|
+
export { TngDropdownMenuComponent as TngDropdownMenu };
|
|
10
14
|
//# sourceMappingURL=tng-dropdown-menu.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-dropdown-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.ts"],"names":[],"mappings":"AAWA,qBAMa,wBAAwB;IACnC,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,8CAA4B;IAEjD,SAAS,CAAC,QAAQ,CAAC,IAAI,kDAAiB;IAExC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IAGvE,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAoB/C,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC,SAAS,CAAC,UAAU,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"tng-dropdown-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.ts"],"names":[],"mappings":";AAWA,qBAMa,wBAAwB;IACnC,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,8CAA4B;IAEjD,SAAS,CAAC,QAAQ,CAAC,IAAI,kDAAiB;IAExC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IAGvE,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAoB/C,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC,SAAS,CAAC,UAAU,IAAI,IAAI;yCAvCjB,wBAAwB;2CAAxB,wBAAwB;CA8CpC;AACD,OAAO,EAAE,wBAAwB,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
1
|
import { Component, ElementRef, HostListener, booleanAttribute, inject, input, signal, } from '@angular/core';
|
|
3
2
|
import { TngDropdownMenu as TngDropdownMenuPrimitive } from '@tailng-ui/primitives';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
open = signal(false);
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class TngDropdownMenuComponent {
|
|
5
|
+
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
|
|
6
|
+
label = input('Actions', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
7
|
+
open = signal(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
|
|
10
8
|
hostRef = inject(ElementRef);
|
|
11
9
|
onDocumentClick(event) {
|
|
12
10
|
if (!(event instanceof Event)) {
|
|
@@ -35,20 +33,18 @@ let TngDropdownMenuComponent = class TngDropdownMenuComponent {
|
|
|
35
33
|
}
|
|
36
34
|
this.open.set(!this.open());
|
|
37
35
|
}
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
],
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
], TngDropdownMenuComponent);
|
|
53
|
-
export { TngDropdownMenuComponent };
|
|
36
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngDropdownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: TngDropdownMenuComponent, isStandalone: true, selector: "tng-dropdown-menu", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "onDocumentClick($event)", "document:keydown.escape": "onEscapeKeydown()" } }, ngImport: i0, template: "<div tngDropdownMenu class=\"tng-dropdown-menu\">\n <button\n type=\"button\"\n class=\"tng-dropdown-menu__trigger\"\n [disabled]=\"disabled()\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-haspopup]=\"'menu'\"\n (click)=\"toggleOpen()\"\n >\n {{ label() }}\n </button>\n\n @if (open()) {\n <ul role=\"menu\" class=\"tng-dropdown-menu__panel\">\n <ng-content />\n </ul>\n }\n</div>\n", styles: [":host {\n display: inline-block;\n}\n\n.tng-dropdown-menu {\n display: inline-grid;\n gap: 0.45rem;\n position: relative;\n}\n\n.tng-dropdown-menu__trigger {\n align-items: center;\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-subtle);\n border-radius: 0.6rem;\n color: var(--tng-semantic-foreground-primary);\n cursor: pointer;\n display: inline-flex;\n font: inherit;\n min-height: 2.35rem;\n padding: 0 0.85rem;\n}\n\n.tng-dropdown-menu__trigger:focus-visible {\n outline: 2px solid var(--tng-semantic-focus-ring);\n outline-offset: 1px;\n}\n\n.tng-dropdown-menu__panel {\n background: var(--tng-semantic-background-base);\n border: 1px solid var(--tng-semantic-border-subtle);\n border-radius: 0.75rem;\n box-shadow: 0 16px 34px color-mix(in srgb, var(--tng-semantic-foreground-primary) 18%, transparent);\n display: grid;\n gap: 0.25rem;\n list-style: none;\n margin: 0;\n min-width: 12rem;\n padding: 0.45rem;\n position: absolute;\n top: calc(100% + 0.25rem);\n z-index: 10;\n}\n\n.tng-dropdown-menu__panel :where([role='menuitem']) {\n border-radius: 0.45rem;\n cursor: pointer;\n min-height: 2rem;\n padding: 0.35rem 0.6rem;\n}\n\n.tng-dropdown-menu__panel :where([role='menuitem']:hover, [role='menuitem']:focus-visible) {\n background: var(--tng-semantic-background-muted);\n outline: none;\n}\n"], dependencies: [{ kind: "directive", type: TngDropdownMenuPrimitive, selector: "[tngDropdownMenu]", exportAs: ["tngDropdownMenu"] }] });
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngDropdownMenuComponent, decorators: [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{ selector: 'tng-dropdown-menu', imports: [TngDropdownMenuPrimitive], template: "<div tngDropdownMenu class=\"tng-dropdown-menu\">\n <button\n type=\"button\"\n class=\"tng-dropdown-menu__trigger\"\n [disabled]=\"disabled()\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-haspopup]=\"'menu'\"\n (click)=\"toggleOpen()\"\n >\n {{ label() }}\n </button>\n\n @if (open()) {\n <ul role=\"menu\" class=\"tng-dropdown-menu__panel\">\n <ng-content />\n </ul>\n }\n</div>\n", styles: [":host {\n display: inline-block;\n}\n\n.tng-dropdown-menu {\n display: inline-grid;\n gap: 0.45rem;\n position: relative;\n}\n\n.tng-dropdown-menu__trigger {\n align-items: center;\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-subtle);\n border-radius: 0.6rem;\n color: var(--tng-semantic-foreground-primary);\n cursor: pointer;\n display: inline-flex;\n font: inherit;\n min-height: 2.35rem;\n padding: 0 0.85rem;\n}\n\n.tng-dropdown-menu__trigger:focus-visible {\n outline: 2px solid var(--tng-semantic-focus-ring);\n outline-offset: 1px;\n}\n\n.tng-dropdown-menu__panel {\n background: var(--tng-semantic-background-base);\n border: 1px solid var(--tng-semantic-border-subtle);\n border-radius: 0.75rem;\n box-shadow: 0 16px 34px color-mix(in srgb, var(--tng-semantic-foreground-primary) 18%, transparent);\n display: grid;\n gap: 0.25rem;\n list-style: none;\n margin: 0;\n min-width: 12rem;\n padding: 0.45rem;\n position: absolute;\n top: calc(100% + 0.25rem);\n z-index: 10;\n}\n\n.tng-dropdown-menu__panel :where([role='menuitem']) {\n border-radius: 0.45rem;\n cursor: pointer;\n min-height: 2rem;\n padding: 0.35rem 0.6rem;\n}\n\n.tng-dropdown-menu__panel :where([role='menuitem']:hover, [role='menuitem']:focus-visible) {\n background: var(--tng-semantic-background-muted);\n outline: none;\n}\n"] }]
|
|
42
|
+
}], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], onDocumentClick: [{
|
|
43
|
+
type: HostListener,
|
|
44
|
+
args: ['document:click', ['$event']]
|
|
45
|
+
}], onEscapeKeydown: [{
|
|
46
|
+
type: HostListener,
|
|
47
|
+
args: ['document:keydown.escape']
|
|
48
|
+
}] } });
|
|
49
|
+
export { TngDropdownMenuComponent as TngDropdownMenu };
|
|
54
50
|
//# sourceMappingURL=tng-dropdown-menu.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-dropdown-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tng-dropdown-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.ts","../../../../../../../../libs/tailng-ui/components/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,KAAK,EACL,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,IAAI,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;;AAQpF,MAAM,OAAO,wBAAwB;IACnB,QAAQ,GAAG,KAAK,CAA4B,KAAK,qDAC/D,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,KAAK,GAAG,KAAK,CAAS,SAAS,iDAAC,CAAC;IAE9B,IAAI,GAAG,MAAM,CAAC,KAAK,gDAAC,CAAC;IAEvB,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IAG7D,eAAe,CAAC,KAAc;QACtC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAGS,eAAe;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAES,UAAU;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;uGA7CU,wBAAwB;2FAAxB,wBAAwB,wcCjBrC,waAkBA,66CDLY,wBAAwB;;2FAIvB,wBAAwB;kBANpC,SAAS;+BACE,mBAAmB,WACpB,CAAC,wBAAwB,CAAC;;sBAclC,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;sBAoBzC,YAAY;uBAAC,yBAAyB;;AAiBzC,OAAO,EAAE,wBAAwB,IAAI,eAAe,EAAE,CAAC","sourcesContent":["import {\n Component,\n ElementRef,\n HostListener,\n booleanAttribute,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { TngDropdownMenu as TngDropdownMenuPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n selector: 'tng-dropdown-menu',\n imports: [TngDropdownMenuPrimitive],\n templateUrl: './tng-dropdown-menu.component.html',\n styleUrl: './tng-dropdown-menu.component.css',\n})\nexport class TngDropdownMenuComponent {\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly label = input<string>('Actions');\n\n protected readonly open = signal(false);\n\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @HostListener('document:click', ['$event'])\n protected onDocumentClick(event: unknown): void {\n if (!(event instanceof Event)) {\n return;\n }\n\n if (!this.open()) {\n return;\n }\n\n const target = event.target;\n if (!(target instanceof Node)) {\n return;\n }\n\n if (!this.hostRef.nativeElement.contains(target)) {\n this.open.set(false);\n }\n }\n\n @HostListener('document:keydown.escape')\n protected onEscapeKeydown(): void {\n if (!this.open()) {\n return;\n }\n\n this.open.set(false);\n }\n\n protected toggleOpen(): void {\n if (this.disabled()) {\n return;\n }\n\n this.open.set(!this.open());\n }\n}\nexport { TngDropdownMenuComponent as TngDropdownMenu };\n","<div tngDropdownMenu class=\"tng-dropdown-menu\">\n <button\n type=\"button\"\n class=\"tng-dropdown-menu__trigger\"\n [disabled]=\"disabled()\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-haspopup]=\"'menu'\"\n (click)=\"toggleOpen()\"\n >\n {{ label() }}\n </button>\n\n @if (open()) {\n <ul role=\"menu\" class=\"tng-dropdown-menu__panel\">\n <ng-content />\n </ul>\n }\n</div>\n"]}
|
|
@@ -1,27 +1,15 @@
|
|
|
1
1
|
export * from './breadcrumb/tng-breadcrumb.component';
|
|
2
|
-
export { TngBreadcrumbComponent as TngBreadcrumb } from './breadcrumb/tng-breadcrumb.component';
|
|
3
2
|
export * from './breadcrumb/tng-breadcrumb-item.component';
|
|
4
|
-
export { TngBreadcrumbItemComponent as TngBreadcrumbItem } from './breadcrumb/tng-breadcrumb-item.component';
|
|
5
3
|
export * from './breadcrumb/tng-breadcrumb-link.component';
|
|
6
|
-
export { TngBreadcrumbLinkComponent as TngBreadcrumbLink } from './breadcrumb/tng-breadcrumb-link.component';
|
|
7
4
|
export * from './breadcrumb/tng-breadcrumb-list.component';
|
|
8
|
-
export { TngBreadcrumbListComponent as TngBreadcrumbList } from './breadcrumb/tng-breadcrumb-list.component';
|
|
9
5
|
export * from './breadcrumb/tng-breadcrumb-separator.component';
|
|
10
|
-
export { TngBreadcrumbSeparatorComponent as TngBreadcrumbSeparator, } from './breadcrumb/tng-breadcrumb-separator.component';
|
|
11
6
|
export * from './breadcrumb/tng-breadcrumb-separator-template.directive';
|
|
12
7
|
export * from './context-menu/tng-context-menu.component';
|
|
13
|
-
export { TngContextMenuComponent as TngContextMenu } from './context-menu/tng-context-menu.component';
|
|
14
8
|
export * from './dropdown-menu/tng-dropdown-menu.component';
|
|
15
|
-
export { TngDropdownMenuComponent as TngDropdownMenu } from './dropdown-menu/tng-dropdown-menu.component';
|
|
16
9
|
export * from './menu/tng-menu.component';
|
|
17
|
-
export { TngMenuComponent as TngMenu } from './menu/tng-menu.component';
|
|
18
10
|
export * from './menu/tng-menu-trigger-for.directive';
|
|
19
11
|
export * from './menubar/tng-menubar.component';
|
|
20
|
-
export { TngMenubarComponent as TngMenubar } from './menubar/tng-menubar.component';
|
|
21
12
|
export * from './navigation-menu/tng-navigation-menu.component';
|
|
22
|
-
export { TngNavigationMenuComponent as TngNavigationMenu } from './navigation-menu/tng-navigation-menu.component';
|
|
23
13
|
export * from './tabs/tng-tabs.component';
|
|
24
|
-
export { TngTabsComponent as TngTabs } from './tabs/tng-tabs.component';
|
|
25
14
|
export * from './toolbar/tng-toolbar.component';
|
|
26
|
-
export { TngToolbarComponent as TngToolbar } from './toolbar/tng-toolbar.component';
|
|
27
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/navigation/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/navigation/index.ts"],"names":[],"mappings":"AAKA,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,iDAAiD,CAAC;AAChE,cAAc,0DAA0D,CAAC;AACzE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,iDAAiD,CAAC;AAChE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC"}
|
|
@@ -1,27 +1,19 @@
|
|
|
1
|
+
// Navigation components
|
|
2
|
+
//
|
|
3
|
+
// Note: keep exports aligned with `src/index.ts` (root barrel) so the public API stays stable.
|
|
4
|
+
// The root barrel will re-export this file.
|
|
1
5
|
export * from './breadcrumb/tng-breadcrumb.component';
|
|
2
|
-
export { TngBreadcrumbComponent as TngBreadcrumb } from './breadcrumb/tng-breadcrumb.component';
|
|
3
6
|
export * from './breadcrumb/tng-breadcrumb-item.component';
|
|
4
|
-
export { TngBreadcrumbItemComponent as TngBreadcrumbItem } from './breadcrumb/tng-breadcrumb-item.component';
|
|
5
7
|
export * from './breadcrumb/tng-breadcrumb-link.component';
|
|
6
|
-
export { TngBreadcrumbLinkComponent as TngBreadcrumbLink } from './breadcrumb/tng-breadcrumb-link.component';
|
|
7
8
|
export * from './breadcrumb/tng-breadcrumb-list.component';
|
|
8
|
-
export { TngBreadcrumbListComponent as TngBreadcrumbList } from './breadcrumb/tng-breadcrumb-list.component';
|
|
9
9
|
export * from './breadcrumb/tng-breadcrumb-separator.component';
|
|
10
|
-
export { TngBreadcrumbSeparatorComponent as TngBreadcrumbSeparator, } from './breadcrumb/tng-breadcrumb-separator.component';
|
|
11
10
|
export * from './breadcrumb/tng-breadcrumb-separator-template.directive';
|
|
12
11
|
export * from './context-menu/tng-context-menu.component';
|
|
13
|
-
export { TngContextMenuComponent as TngContextMenu } from './context-menu/tng-context-menu.component';
|
|
14
12
|
export * from './dropdown-menu/tng-dropdown-menu.component';
|
|
15
|
-
export { TngDropdownMenuComponent as TngDropdownMenu } from './dropdown-menu/tng-dropdown-menu.component';
|
|
16
13
|
export * from './menu/tng-menu.component';
|
|
17
|
-
export { TngMenuComponent as TngMenu } from './menu/tng-menu.component';
|
|
18
14
|
export * from './menu/tng-menu-trigger-for.directive';
|
|
19
15
|
export * from './menubar/tng-menubar.component';
|
|
20
|
-
export { TngMenubarComponent as TngMenubar } from './menubar/tng-menubar.component';
|
|
21
16
|
export * from './navigation-menu/tng-navigation-menu.component';
|
|
22
|
-
export { TngNavigationMenuComponent as TngNavigationMenu } from './navigation-menu/tng-navigation-menu.component';
|
|
23
17
|
export * from './tabs/tng-tabs.component';
|
|
24
|
-
export { TngTabsComponent as TngTabs } from './tabs/tng-tabs.component';
|
|
25
18
|
export * from './toolbar/tng-toolbar.component';
|
|
26
|
-
export { TngToolbarComponent as TngToolbar } from './toolbar/tng-toolbar.component';
|
|
27
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/navigation/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/navigation/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,EAAE;AACF,+FAA+F;AAC/F,4CAA4C;AAE5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,iDAAiD,CAAC;AAChE,cAAc,0DAA0D,CAAC;AACzE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,iDAAiD,CAAC;AAChE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC","sourcesContent":["// Navigation components\n//\n// Note: keep exports aligned with `src/index.ts` (root barrel) so the public API stays stable.\n// The root barrel will re-export this file.\n\nexport * from './breadcrumb/tng-breadcrumb.component';\nexport * from './breadcrumb/tng-breadcrumb-item.component';\nexport * from './breadcrumb/tng-breadcrumb-link.component';\nexport * from './breadcrumb/tng-breadcrumb-list.component';\nexport * from './breadcrumb/tng-breadcrumb-separator.component';\nexport * from './breadcrumb/tng-breadcrumb-separator-template.directive';\nexport * from './context-menu/tng-context-menu.component';\nexport * from './dropdown-menu/tng-dropdown-menu.component';\nexport * from './menu/tng-menu.component';\nexport * from './menu/tng-menu-trigger-for.directive';\nexport * from './menubar/tng-menubar.component';\nexport * from './navigation-menu/tng-navigation-menu.component';\nexport * from './tabs/tng-tabs.component';\nexport * from './toolbar/tng-toolbar.component';\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TngMenu } from '@tailng-ui/primitives';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
2
3
|
type TngMenuTriggerKeyboardEvent = Readonly<Pick<KeyboardEvent, 'key'>> & Readonly<{
|
|
3
4
|
preventDefault: () => void;
|
|
4
5
|
}>;
|
|
@@ -10,6 +11,8 @@ export declare class TngMenuTriggerFor {
|
|
|
10
11
|
protected onClick(): void;
|
|
11
12
|
protected onKeydown(event: TngMenuTriggerKeyboardEvent): void;
|
|
12
13
|
private syncAriaState;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngMenuTriggerFor, never>;
|
|
15
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngMenuTriggerFor, "[tngMenuTriggerFor]", ["tngMenuTriggerFor"], { "tngMenuTriggerFor": { "alias": "tngMenuTriggerFor"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
13
16
|
}
|
|
14
17
|
export {};
|
|
15
18
|
//# sourceMappingURL=tng-menu-trigger-for.directive.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-menu-trigger-for.directive.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu-trigger-for.directive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC
|
|
1
|
+
{"version":3,"file":"tng-menu-trigger-for.directive.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu-trigger-for.directive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;;AAEhD,KAAK,2BAA2B,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,GACrE,QAAQ,CAAC;IAAE,cAAc,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAAC;AAkB3C,qBAIa,iBAAiB;IAC5B,QAAQ,CAAC,iBAAiB,+CAA6B;IAEvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IAGvE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAG,MAAM,CAAU;;IAmBlD,SAAS,CAAC,OAAO,IAAI,IAAI;IAezB,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI;IAmB7D,OAAO,CAAC,aAAa;yCA3DV,iBAAiB;2CAAjB,iBAAiB;CAkE7B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
1
|
import { Directive, ElementRef, HostBinding, HostListener, effect, inject, input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
3
|
function resolveFocusActionForOpenKey(key) {
|
|
4
4
|
switch (key) {
|
|
5
5
|
case 'ArrowDown':
|
|
@@ -13,8 +13,8 @@ function resolveFocusActionForOpenKey(key) {
|
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
tngMenuTriggerFor = input.required();
|
|
16
|
+
export class TngMenuTriggerFor {
|
|
17
|
+
tngMenuTriggerFor = input.required(...(ngDevMode ? [{ debugName: "tngMenuTriggerFor" }] : []));
|
|
18
18
|
hostRef = inject(ElementRef);
|
|
19
19
|
ariaHasPopup = 'menu';
|
|
20
20
|
constructor() {
|
|
@@ -64,21 +64,23 @@ let TngMenuTriggerFor = class TngMenuTriggerFor {
|
|
|
64
64
|
trigger.setAttribute('aria-controls', menu.id);
|
|
65
65
|
trigger.setAttribute('aria-expanded', menu.isOpen() ? 'true' : 'false');
|
|
66
66
|
}
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
],
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
],
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
],
|
|
83
|
-
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngMenuTriggerFor, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
68
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngMenuTriggerFor, isStandalone: true, selector: "[tngMenuTriggerFor]", inputs: { tngMenuTriggerFor: { classPropertyName: "tngMenuTriggerFor", publicName: "tngMenuTriggerFor", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "onClick()", "keydown": "onKeydown($event)" }, properties: { "attr.aria-haspopup": "this.ariaHasPopup" } }, exportAs: ["tngMenuTriggerFor"], ngImport: i0 });
|
|
69
|
+
}
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngMenuTriggerFor, decorators: [{
|
|
71
|
+
type: Directive,
|
|
72
|
+
args: [{
|
|
73
|
+
selector: '[tngMenuTriggerFor]',
|
|
74
|
+
exportAs: 'tngMenuTriggerFor',
|
|
75
|
+
}]
|
|
76
|
+
}], ctorParameters: () => [], propDecorators: { tngMenuTriggerFor: [{ type: i0.Input, args: [{ isSignal: true, alias: "tngMenuTriggerFor", required: true }] }], ariaHasPopup: [{
|
|
77
|
+
type: HostBinding,
|
|
78
|
+
args: ['attr.aria-haspopup']
|
|
79
|
+
}], onClick: [{
|
|
80
|
+
type: HostListener,
|
|
81
|
+
args: ['click']
|
|
82
|
+
}], onKeydown: [{
|
|
83
|
+
type: HostListener,
|
|
84
|
+
args: ['keydown', ['$event']]
|
|
85
|
+
}] } });
|
|
84
86
|
//# sourceMappingURL=tng-menu-trigger-for.directive.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-menu-trigger-for.directive.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu-trigger-for.directive.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tng-menu-trigger-for.directive.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu-trigger-for.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, ElementRef, HostBinding, HostListener, effect, inject, input } from '@angular/core';\nimport { TngMenu } from '@tailng-ui/primitives';\n\ntype TngMenuTriggerKeyboardEvent = Readonly<Pick<KeyboardEvent, 'key'>> &\n Readonly<{ preventDefault: () => void }>;\n\ntype TngMenuOpenFocusAction = 'none' | 'first' | 'last';\n\nfunction resolveFocusActionForOpenKey(key: string): TngMenuOpenFocusAction | null {\n switch (key) {\n case 'ArrowDown':\n return 'first';\n case 'ArrowUp':\n return 'last';\n case 'Enter':\n case ' ':\n return 'none';\n default:\n return null;\n }\n}\n\n@Directive({\n selector: '[tngMenuTriggerFor]',\n exportAs: 'tngMenuTriggerFor',\n})\nexport class TngMenuTriggerFor {\n readonly tngMenuTriggerFor = input.required<TngMenu>();\n\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @HostBinding('attr.aria-haspopup')\n protected readonly ariaHasPopup = 'menu' as const;\n\n public constructor() {\n effect((onCleanup): void => {\n const menu = this.tngMenuTriggerFor();\n const trigger = this.hostRef.nativeElement;\n menu.setTriggerElement(trigger, () => this.syncAriaState());\n menu.setRestoreFocusOnOutsideClick(false);\n this.syncAriaState();\n\n onCleanup((): void => {\n menu.clearTriggerLink(trigger);\n trigger.removeAttribute('aria-controls');\n trigger.removeAttribute('aria-expanded');\n });\n });\n }\n\n @HostListener('click')\n protected onClick(): void {\n const menu = this.tngMenuTriggerFor();\n if (menu.isDisabled()) {\n return;\n }\n\n if (menu.isOpen()) {\n menu.close(true);\n return;\n }\n\n menu.open('none');\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngMenuTriggerKeyboardEvent): void {\n const menu = this.tngMenuTriggerFor();\n if (menu.isDisabled()) {\n return;\n }\n\n const focusAction = resolveFocusActionForOpenKey(event.key);\n if (focusAction !== null) {\n event.preventDefault();\n menu.open(focusAction);\n return;\n }\n\n if (event.key === 'Escape' && menu.isOpen()) {\n event.preventDefault();\n menu.close(true);\n }\n }\n\n private syncAriaState(): void {\n const trigger = this.hostRef.nativeElement;\n const menu = this.tngMenuTriggerFor();\n\n trigger.setAttribute('aria-controls', menu.id);\n trigger.setAttribute('aria-expanded', menu.isOpen() ? 'true' : 'false');\n }\n}\n"]}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "@tailng-ui/primitives";
|
|
1
3
|
export declare class TngMenuComponent {
|
|
2
4
|
private readonly hostRef;
|
|
3
5
|
private readonly primitive;
|
|
@@ -9,5 +11,8 @@ export declare class TngMenuComponent {
|
|
|
9
11
|
ngDoCheck(): void;
|
|
10
12
|
private queueFocusSync;
|
|
11
13
|
private getDeepestOpenSubmenu;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngMenuComponent, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TngMenuComponent, "tng-menu", ["tngMenuComponent"], { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.TngMenu; inputs: { "loop": "loop"; "disabled": "disabled"; "closeOnSelect": "closeOnSelect"; "dismissOnOutsideClick": "dismissOnOutsideClick"; "dismissOnFocusout": "dismissOnFocusout"; }; outputs: { "tngMenuOpened": "tngMenuOpened"; "tngMenuClosed": "tngMenuClosed"; "tngMenuSelect": "tngMenuSelect"; }; }]>;
|
|
12
16
|
}
|
|
17
|
+
export { TngMenuComponent as TngMenu };
|
|
13
18
|
//# sourceMappingURL=tng-menu.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu.component.ts"],"names":[],"mappings":"AAKA,qBAaa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;IACxE,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,iBAAiB,CAAK;IAE9B,QAAQ,CAAC,SAAS,8CAAyB;IAG3C,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;IAED,SAAS,IAAI,IAAI;IA+BjB,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"tng-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu.component.ts"],"names":[],"mappings":";;AAKA,qBAaa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;IACxE,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,iBAAiB,CAAK;IAE9B,QAAQ,CAAC,SAAS,8CAAyB;IAG3C,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;IAED,SAAS,IAAI,IAAI;IA+BjB,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,qBAAqB;yCA/ElB,gBAAgB;2CAAhB,gBAAgB;CA0F5B;AACD,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
1
|
import { Component, ElementRef, HostBinding, inject, input } from '@angular/core';
|
|
3
2
|
import { TngMenu as TngMenuPrimitive } from '@tailng-ui/primitives';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@tailng-ui/primitives";
|
|
4
5
|
const MAX_FOCUS_SYNC_ATTEMPTS = 4;
|
|
5
|
-
|
|
6
|
+
export class TngMenuComponent {
|
|
6
7
|
hostRef = inject(ElementRef);
|
|
7
8
|
primitive = inject(TngMenuPrimitive);
|
|
8
9
|
lastOpenState = false;
|
|
9
10
|
focusSyncQueued = false;
|
|
10
11
|
focusSyncAttempts = 0;
|
|
11
|
-
ariaLabel = input('Menu');
|
|
12
|
+
ariaLabel = input('Menu', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : []));
|
|
12
13
|
get hostAriaLabel() {
|
|
13
14
|
return this.ariaLabel();
|
|
14
15
|
}
|
|
@@ -68,24 +69,21 @@ let TngMenuComponent = class TngMenuComponent {
|
|
|
68
69
|
}
|
|
69
70
|
return openNestedMenus[openNestedMenus.length - 1] ?? null;
|
|
70
71
|
}
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
})
|
|
89
|
-
], TngMenuComponent);
|
|
90
|
-
export { TngMenuComponent };
|
|
72
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.1", type: TngMenuComponent, isStandalone: true, selector: "tng-menu", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-label": "this.hostAriaLabel" } }, exportAs: ["tngMenuComponent"], hostDirectives: [{ directive: i1.TngMenu, inputs: ["loop", "loop", "disabled", "disabled", "closeOnSelect", "closeOnSelect", "dismissOnOutsideClick", "dismissOnOutsideClick", "dismissOnFocusout", "dismissOnFocusout"], outputs: ["tngMenuOpened", "tngMenuOpened", "tngMenuClosed", "tngMenuClosed", "tngMenuSelect", "tngMenuSelect"] }], ngImport: i0, template: "<ng-content />\n", styles: [":host {}\n"] });
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngMenuComponent, decorators: [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'tng-menu', hostDirectives: [
|
|
78
|
+
{
|
|
79
|
+
directive: TngMenuPrimitive,
|
|
80
|
+
inputs: ['loop', 'disabled', 'closeOnSelect', 'dismissOnOutsideClick', 'dismissOnFocusout'],
|
|
81
|
+
outputs: ['tngMenuOpened', 'tngMenuClosed', 'tngMenuSelect'],
|
|
82
|
+
},
|
|
83
|
+
], exportAs: 'tngMenuComponent', template: "<ng-content />\n", styles: [":host {}\n"] }]
|
|
84
|
+
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], hostAriaLabel: [{
|
|
85
|
+
type: HostBinding,
|
|
86
|
+
args: ['attr.aria-label']
|
|
87
|
+
}] } });
|
|
88
|
+
export { TngMenuComponent as TngMenu };
|
|
91
89
|
//# sourceMappingURL=tng-menu.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu.component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tng-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu.component.ts","../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, HostBinding, inject, input } from '@angular/core';\nimport { TngMenu as TngMenuPrimitive } from '@tailng-ui/primitives';\n\nconst MAX_FOCUS_SYNC_ATTEMPTS = 4;\n\n@Component({\n selector: 'tng-menu',\n hostDirectives: [\n {\n directive: TngMenuPrimitive,\n inputs: ['loop', 'disabled', 'closeOnSelect', 'dismissOnOutsideClick', 'dismissOnFocusout'],\n outputs: ['tngMenuOpened', 'tngMenuClosed', 'tngMenuSelect'],\n },\n ],\n templateUrl: './tng-menu.component.html',\n styleUrl: './tng-menu.component.css',\n exportAs: 'tngMenuComponent',\n})\nexport class TngMenuComponent {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly primitive = inject<TngMenuPrimitive>(TngMenuPrimitive);\n private lastOpenState = false;\n private focusSyncQueued = false;\n private focusSyncAttempts = 0;\n\n readonly ariaLabel = input<string>('Menu');\n\n @HostBinding('attr.aria-label')\n protected get hostAriaLabel(): string {\n return this.ariaLabel();\n }\n\n ngDoCheck(): void {\n const isOpen = this.primitive.isOpen();\n if (!isOpen) {\n this.lastOpenState = false;\n this.focusSyncAttempts = 0;\n this.focusSyncQueued = false;\n return;\n }\n\n const host = this.hostRef.nativeElement;\n const activeElement = document.activeElement;\n const deepestOpenSubmenu = this.getDeepestOpenSubmenu(host);\n const hasFocusInDeepestOpenSubmenu =\n deepestOpenSubmenu !== null &&\n activeElement instanceof Node &&\n deepestOpenSubmenu.contains(activeElement);\n const hasFocusInsideHost = activeElement instanceof Node && host.contains(activeElement);\n\n const shouldSyncFocusToHostOrDeepestSubmenu =\n deepestOpenSubmenu !== null ? !hasFocusInDeepestOpenSubmenu : !hasFocusInsideHost;\n\n if (\n (!this.lastOpenState || shouldSyncFocusToHostOrDeepestSubmenu) &&\n this.focusSyncAttempts < MAX_FOCUS_SYNC_ATTEMPTS\n ) {\n this.queueFocusSync();\n }\n\n this.lastOpenState = true;\n }\n\n private queueFocusSync(): void {\n if (this.focusSyncQueued) {\n return;\n }\n\n this.focusSyncQueued = true;\n queueMicrotask((): void => {\n this.focusSyncQueued = false;\n\n if (!this.primitive.isOpen()) {\n return;\n }\n\n const host = this.hostRef.nativeElement;\n const activeElement = document.activeElement;\n const deepestOpenSubmenu = this.getDeepestOpenSubmenu(host);\n\n if (deepestOpenSubmenu !== null) {\n if (!(activeElement instanceof Node) || !deepestOpenSubmenu.contains(activeElement)) {\n this.focusSyncAttempts += 1;\n deepestOpenSubmenu.focus();\n }\n return;\n }\n\n if (activeElement instanceof Node && host.contains(activeElement)) {\n return;\n }\n\n this.focusSyncAttempts += 1;\n host.focus();\n });\n }\n\n private getDeepestOpenSubmenu(host: HTMLElement): HTMLElement | null {\n const openNestedMenus = Array.from(\n host.querySelectorAll<HTMLElement>('[data-slot=\"menu\"][data-state=\"open\"]'),\n ).filter((menuElement) => menuElement !== host);\n\n if (openNestedMenus.length === 0) {\n return null;\n }\n\n return openNestedMenus[openNestedMenus.length - 1] ?? null;\n }\n}\nexport { TngMenuComponent as TngMenu };\n","<ng-content />\n"]}
|