@ng-cn/core 1.0.15 → 1.0.17
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 +34 -33
- package/schematics/component/index.js +454 -95
- package/schematics/component/index.ts +459 -98
- package/schematics/ng-add/index.js +539 -55
- package/schematics/ng-add/index.ts +555 -62
- package/schematics/ng-add/schema.json +8 -2
- package/schematics/test-schematic.js +1 -2
- package/src/app/lib/components/ui/.gitkeep +0 -0
- package/src/app/lib/components/ui/accordion/accordion-content.component.ts +16 -24
- package/src/app/lib/components/ui/accordion/accordion-context.ts +4 -9
- package/src/app/lib/components/ui/accordion/accordion-item.component.ts +33 -29
- package/src/app/lib/components/ui/accordion/accordion-trigger.component.ts +11 -14
- package/src/app/lib/components/ui/accordion/accordion.component.ts +60 -49
- package/src/app/lib/components/ui/accordion/index.ts +5 -6
- package/src/app/lib/components/ui/alert/alert-description.component.ts +3 -8
- package/src/app/lib/components/ui/alert/alert-title.component.ts +2 -7
- package/src/app/lib/components/ui/alert/alert-variants.ts +19 -5
- package/src/app/lib/components/ui/alert/alert.component.ts +2 -10
- package/src/app/lib/components/ui/alert/index.ts +0 -1
- package/src/app/lib/components/ui/alert-dialog/alert-dialog-action.component.ts +5 -12
- package/src/app/lib/components/ui/alert-dialog/alert-dialog-cancel.component.ts +5 -11
- package/src/app/lib/components/ui/alert-dialog/alert-dialog-content.component.ts +63 -66
- package/src/app/lib/components/ui/alert-dialog/alert-dialog-context.ts +10 -5
- package/src/app/lib/components/ui/alert-dialog/alert-dialog-description.component.ts +5 -10
- package/src/app/lib/components/ui/alert-dialog/alert-dialog-footer.component.ts +3 -7
- package/src/app/lib/components/ui/alert-dialog/alert-dialog-header.component.ts +3 -7
- package/src/app/lib/components/ui/alert-dialog/alert-dialog-title.component.ts +5 -12
- package/src/app/lib/components/ui/alert-dialog/alert-dialog-trigger.component.ts +8 -12
- package/src/app/lib/components/ui/alert-dialog/alert-dialog.component.ts +28 -34
- package/src/app/lib/components/ui/alert-dialog/index.ts +0 -1
- package/src/app/lib/components/ui/aspect-ratio/aspect-ratio.component.ts +3 -9
- package/src/app/lib/components/ui/avatar/avatar-context.ts +9 -0
- package/src/app/lib/components/ui/avatar/avatar-fallback.component.ts +7 -18
- package/src/app/lib/components/ui/avatar/avatar-image.component.ts +39 -17
- package/src/app/lib/components/ui/avatar/avatar.component.ts +17 -20
- package/src/app/lib/components/ui/avatar/index.ts +1 -1
- package/src/app/lib/components/ui/avatar/ui-avatar.component.ts +9 -30
- package/src/app/lib/components/ui/badge/badge-variants.ts +5 -5
- package/src/app/lib/components/ui/badge/badge.component.ts +4 -8
- package/src/app/lib/components/ui/badge/index.ts +0 -1
- package/src/app/lib/components/ui/breadcrumb/breadcrumb-ellipsis.component.ts +3 -7
- package/src/app/lib/components/ui/breadcrumb/breadcrumb-item.component.ts +5 -14
- package/src/app/lib/components/ui/breadcrumb/breadcrumb-link.component.ts +6 -18
- package/src/app/lib/components/ui/breadcrumb/breadcrumb-list.component.ts +6 -15
- package/src/app/lib/components/ui/breadcrumb/breadcrumb-page.component.ts +3 -7
- package/src/app/lib/components/ui/breadcrumb/breadcrumb-separator.component.ts +22 -31
- package/src/app/lib/components/ui/breadcrumb/breadcrumb.component.ts +3 -9
- package/src/app/lib/components/ui/breadcrumb/index.ts +0 -1
- package/src/app/lib/components/ui/button/button-variants.ts +6 -8
- package/src/app/lib/components/ui/button/button.component.ts +4 -8
- package/src/app/lib/components/ui/button/index.ts +0 -1
- package/src/app/lib/components/ui/button-group/button-group-variants.ts +12 -15
- package/src/app/lib/components/ui/button-group/button-group.component.ts +6 -14
- package/src/app/lib/components/ui/button-group/index.ts +1 -5
- package/src/app/lib/components/ui/calendar/calendar.component.ts +103 -115
- package/src/app/lib/components/ui/card/card-action.component.ts +2 -10
- package/src/app/lib/components/ui/card/card-content.component.ts +1 -6
- package/src/app/lib/components/ui/card/card-description.component.ts +2 -7
- package/src/app/lib/components/ui/card/card-footer.component.ts +2 -7
- package/src/app/lib/components/ui/card/card-header.component.ts +3 -8
- package/src/app/lib/components/ui/card/card-title.component.ts +2 -9
- package/src/app/lib/components/ui/card/card.component.ts +3 -8
- package/src/app/lib/components/ui/card/index.ts +0 -1
- package/src/app/lib/components/ui/carousel/carousel-content.component.ts +3 -9
- package/src/app/lib/components/ui/carousel/carousel-item.component.ts +5 -5
- package/src/app/lib/components/ui/carousel/carousel-next.component.ts +9 -8
- package/src/app/lib/components/ui/carousel/carousel-previous.component.ts +9 -8
- package/src/app/lib/components/ui/carousel/carousel.component.ts +14 -25
- package/src/app/lib/components/ui/carousel/index.ts +5 -2
- package/src/app/lib/components/ui/chart/chart-container.component.ts +20 -26
- package/src/app/lib/components/ui/chart/chart-legend-content.component.ts +6 -16
- package/src/app/lib/components/ui/chart/chart-legend.component.ts +2 -7
- package/src/app/lib/components/ui/chart/chart-tooltip-content.component.ts +2 -9
- package/src/app/lib/components/ui/chart/chart-tooltip.component.ts +2 -7
- package/src/app/lib/components/ui/chart/chart.component.ts +12 -32
- package/src/app/lib/components/ui/chart/index.ts +7 -8
- package/src/app/lib/components/ui/checkbox/checkbox.component.ts +55 -74
- package/src/app/lib/components/ui/collapsible/collapsible-content.component.ts +16 -25
- package/src/app/lib/components/ui/collapsible/collapsible-context.ts +0 -8
- package/src/app/lib/components/ui/collapsible/collapsible-trigger.component.ts +6 -16
- package/src/app/lib/components/ui/collapsible/collapsible.component.ts +29 -33
- package/src/app/lib/components/ui/collapsible/index.ts +0 -1
- package/src/app/lib/components/ui/combobox/combobox-content.component.ts +8 -15
- package/src/app/lib/components/ui/combobox/combobox-context.ts +5 -4
- package/src/app/lib/components/ui/combobox/combobox-empty.component.ts +5 -12
- package/src/app/lib/components/ui/combobox/combobox-group.component.ts +3 -7
- package/src/app/lib/components/ui/combobox/combobox-input.component.ts +25 -25
- package/src/app/lib/components/ui/combobox/combobox-item.component.ts +45 -44
- package/src/app/lib/components/ui/combobox/combobox-list.component.ts +14 -12
- package/src/app/lib/components/ui/combobox/combobox-trigger.component.ts +24 -14
- package/src/app/lib/components/ui/combobox/combobox-value.component.ts +27 -22
- package/src/app/lib/components/ui/combobox/combobox.component.ts +74 -54
- package/src/app/lib/components/ui/combobox/index.ts +1 -6
- package/src/app/lib/components/ui/command/command-context.ts +1 -5
- package/src/app/lib/components/ui/command/command-dialog.component.ts +12 -14
- package/src/app/lib/components/ui/command/command-empty.component.ts +2 -3
- package/src/app/lib/components/ui/command/command-group.component.ts +32 -25
- package/src/app/lib/components/ui/command/command-input.component.ts +29 -28
- package/src/app/lib/components/ui/command/command-item.component.ts +46 -58
- package/src/app/lib/components/ui/command/command-list.component.ts +5 -4
- package/src/app/lib/components/ui/command/command-separator.component.ts +2 -3
- package/src/app/lib/components/ui/command/command-shortcut.component.ts +2 -1
- package/src/app/lib/components/ui/command/command.component.ts +33 -22
- package/src/app/lib/components/ui/command/index.ts +0 -1
- package/src/app/lib/components/ui/context-menu/context-menu-checkbox-item.component.ts +20 -11
- package/src/app/lib/components/ui/context-menu/context-menu-content.component.ts +36 -43
- package/src/app/lib/components/ui/context-menu/context-menu-context.ts +1 -1
- package/src/app/lib/components/ui/context-menu/context-menu-item.component.ts +12 -13
- package/src/app/lib/components/ui/context-menu/context-menu-label.component.ts +2 -5
- package/src/app/lib/components/ui/context-menu/context-menu-radio-group.component.ts +9 -2
- package/src/app/lib/components/ui/context-menu/context-menu-radio-item.component.ts +14 -14
- package/src/app/lib/components/ui/context-menu/context-menu-separator.component.ts +2 -3
- package/src/app/lib/components/ui/context-menu/context-menu-shortcut.component.ts +2 -1
- package/src/app/lib/components/ui/context-menu/context-menu-sub-content.component.ts +5 -5
- package/src/app/lib/components/ui/context-menu/context-menu-sub-trigger.component.ts +8 -7
- package/src/app/lib/components/ui/context-menu/context-menu-sub.component.ts +9 -2
- package/src/app/lib/components/ui/context-menu/context-menu-trigger.component.ts +8 -7
- package/src/app/lib/components/ui/context-menu/context-menu.component.ts +1 -0
- package/src/app/lib/components/ui/context-menu/index.ts +15 -4
- package/src/app/lib/components/ui/data-table/data-table-content.component.ts +22 -28
- package/src/app/lib/components/ui/data-table/data-table-context.ts +1 -3
- package/src/app/lib/components/ui/data-table/data-table-pagination.component.ts +17 -27
- package/src/app/lib/components/ui/data-table/data-table-search.component.ts +6 -14
- package/src/app/lib/components/ui/data-table/data-table-toolbar.component.ts +3 -7
- package/src/app/lib/components/ui/data-table/data-table-view-options.component.ts +11 -20
- package/src/app/lib/components/ui/data-table/data-table.component.ts +41 -49
- package/src/app/lib/components/ui/data-table/index.ts +7 -8
- package/src/app/lib/components/ui/date-picker/date-picker.component.ts +24 -24
- package/src/app/lib/components/ui/dialog/dialog-close.component.ts +4 -8
- package/src/app/lib/components/ui/dialog/dialog-content.component.ts +72 -73
- package/src/app/lib/components/ui/dialog/dialog-context.ts +7 -5
- package/src/app/lib/components/ui/dialog/dialog-description.component.ts +5 -10
- package/src/app/lib/components/ui/dialog/dialog-footer.component.ts +3 -7
- package/src/app/lib/components/ui/dialog/dialog-header.component.ts +3 -7
- package/src/app/lib/components/ui/dialog/dialog-title.component.ts +5 -10
- package/src/app/lib/components/ui/dialog/dialog-trigger.component.ts +7 -11
- package/src/app/lib/components/ui/dialog/dialog.component.ts +29 -34
- package/src/app/lib/components/ui/dialog/index.ts +0 -1
- package/src/app/lib/components/ui/drawer/drawer-close.component.ts +4 -8
- package/src/app/lib/components/ui/drawer/drawer-content.component.ts +39 -35
- package/src/app/lib/components/ui/drawer/drawer-description.component.ts +5 -10
- package/src/app/lib/components/ui/drawer/drawer-footer.component.ts +3 -7
- package/src/app/lib/components/ui/drawer/drawer-header.component.ts +3 -7
- package/src/app/lib/components/ui/drawer/drawer-title.component.ts +5 -10
- package/src/app/lib/components/ui/drawer/drawer-trigger.component.ts +7 -11
- package/src/app/lib/components/ui/drawer/drawer.component.ts +25 -26
- package/src/app/lib/components/ui/drawer/index.ts +0 -1
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.component.ts +20 -11
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-content.component.ts +96 -61
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-context.ts +1 -1
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-group.component.ts +1 -0
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-item.component.ts +10 -11
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-label.component.ts +2 -5
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.component.ts +14 -5
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.component.ts +14 -14
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-separator.component.ts +2 -3
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.component.ts +2 -1
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.component.ts +5 -5
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.component.ts +8 -7
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-sub.component.ts +9 -2
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu-trigger.component.ts +6 -5
- package/src/app/lib/components/ui/dropdown-menu/dropdown-menu.component.ts +1 -0
- package/src/app/lib/components/ui/dropdown-menu/index.ts +10 -3
- package/src/app/lib/components/ui/empty/empty-action.component.ts +2 -9
- package/src/app/lib/components/ui/empty/empty-description.component.ts +2 -10
- package/src/app/lib/components/ui/empty/empty-icon.component.ts +3 -8
- package/src/app/lib/components/ui/empty/empty-title.component.ts +2 -9
- package/src/app/lib/components/ui/empty/empty.component.ts +3 -8
- package/src/app/lib/components/ui/empty/index.ts +0 -1
- package/src/app/lib/components/ui/form/form-context.ts +1 -11
- package/src/app/lib/components/ui/form/form-control.component.ts +22 -22
- package/src/app/lib/components/ui/form/form-description.component.ts +4 -10
- package/src/app/lib/components/ui/form/form-field.component.ts +7 -10
- package/src/app/lib/components/ui/form/form-item.component.ts +2 -12
- package/src/app/lib/components/ui/form/form-label.component.ts +15 -15
- package/src/app/lib/components/ui/form/form-message.component.ts +7 -15
- package/src/app/lib/components/ui/form/form.component.ts +9 -20
- package/src/app/lib/components/ui/form/index.ts +4 -5
- package/src/app/lib/components/ui/hover-card/hover-card-content.component.ts +21 -33
- package/src/app/lib/components/ui/hover-card/hover-card-context.ts +0 -8
- package/src/app/lib/components/ui/hover-card/hover-card-trigger.component.ts +17 -26
- package/src/app/lib/components/ui/hover-card/hover-card.component.ts +18 -28
- package/src/app/lib/components/ui/hover-card/index.ts +9 -6
- package/src/app/lib/components/ui/input/input.component.ts +57 -75
- package/src/app/lib/components/ui/input-group/index.ts +0 -1
- package/src/app/lib/components/ui/input-group/input-group-addon.component.ts +4 -11
- package/src/app/lib/components/ui/input-group/input-group-input.component.ts +3 -8
- package/src/app/lib/components/ui/input-group/input-group.component.ts +4 -9
- package/src/app/lib/components/ui/input-otp/index.ts +4 -5
- package/src/app/lib/components/ui/input-otp/input-otp-context.ts +0 -8
- package/src/app/lib/components/ui/input-otp/input-otp-group.component.ts +2 -3
- package/src/app/lib/components/ui/input-otp/input-otp-separator.component.ts +4 -3
- package/src/app/lib/components/ui/input-otp/input-otp-slot.component.ts +8 -10
- package/src/app/lib/components/ui/input-otp/input-otp.component.ts +27 -45
- package/src/app/lib/components/ui/kbd/index.ts +0 -1
- package/src/app/lib/components/ui/kbd/kbd-variants.ts +1 -1
- package/src/app/lib/components/ui/kbd/kbd.component.ts +4 -8
- package/src/app/lib/components/ui/label/label.component.ts +15 -28
- package/src/app/lib/components/ui/menubar/index.ts +11 -8
- package/src/app/lib/components/ui/menubar/menubar-checkbox-item.component.ts +21 -12
- package/src/app/lib/components/ui/menubar/menubar-content.component.ts +46 -53
- package/src/app/lib/components/ui/menubar/menubar-context.ts +3 -9
- package/src/app/lib/components/ui/menubar/menubar-item.component.ts +13 -14
- package/src/app/lib/components/ui/menubar/menubar-label.component.ts +2 -5
- package/src/app/lib/components/ui/menubar/menubar-menu.component.ts +14 -2
- package/src/app/lib/components/ui/menubar/menubar-radio-group.component.ts +9 -2
- package/src/app/lib/components/ui/menubar/menubar-radio-item.component.ts +13 -13
- package/src/app/lib/components/ui/menubar/menubar-separator.component.ts +2 -3
- package/src/app/lib/components/ui/menubar/menubar-shortcut.component.ts +2 -1
- package/src/app/lib/components/ui/menubar/menubar-sub-content.component.ts +5 -5
- package/src/app/lib/components/ui/menubar/menubar-sub-trigger.component.ts +7 -6
- package/src/app/lib/components/ui/menubar/menubar-sub.component.ts +8 -1
- package/src/app/lib/components/ui/menubar/menubar-trigger.component.ts +26 -21
- package/src/app/lib/components/ui/menubar/menubar.component.ts +6 -13
- package/src/app/lib/components/ui/native-select/index.ts +1 -5
- package/src/app/lib/components/ui/native-select/native-select-variants.ts +1 -1
- package/src/app/lib/components/ui/native-select/native-select.component.ts +14 -15
- package/src/app/lib/components/ui/navigation-menu/index.ts +10 -8
- package/src/app/lib/components/ui/navigation-menu/navigation-menu-content.component.ts +18 -13
- package/src/app/lib/components/ui/navigation-menu/navigation-menu-context.ts +2 -10
- package/src/app/lib/components/ui/navigation-menu/navigation-menu-indicator.component.ts +3 -2
- package/src/app/lib/components/ui/navigation-menu/navigation-menu-item.component.ts +6 -1
- package/src/app/lib/components/ui/navigation-menu/navigation-menu-link.component.ts +3 -8
- package/src/app/lib/components/ui/navigation-menu/navigation-menu-list.component.ts +2 -4
- package/src/app/lib/components/ui/navigation-menu/navigation-menu-trigger-style.ts +1 -1
- package/src/app/lib/components/ui/navigation-menu/navigation-menu-trigger.component.ts +8 -7
- package/src/app/lib/components/ui/navigation-menu/navigation-menu-viewport.component.ts +3 -2
- package/src/app/lib/components/ui/navigation-menu/navigation-menu.component.ts +8 -15
- package/src/app/lib/components/ui/pagination/index.ts +0 -1
- package/src/app/lib/components/ui/pagination/pagination-content.component.ts +3 -7
- package/src/app/lib/components/ui/pagination/pagination-ellipsis.component.ts +3 -7
- package/src/app/lib/components/ui/pagination/pagination-item.component.ts +3 -9
- package/src/app/lib/components/ui/pagination/pagination-link.component.ts +4 -8
- package/src/app/lib/components/ui/pagination/pagination-next.component.ts +3 -11
- package/src/app/lib/components/ui/pagination/pagination-previous.component.ts +3 -11
- package/src/app/lib/components/ui/pagination/pagination.component.ts +3 -7
- package/src/app/lib/components/ui/popover/index.ts +9 -6
- package/src/app/lib/components/ui/popover/popover-anchor.component.ts +2 -13
- package/src/app/lib/components/ui/popover/popover-content.component.ts +119 -69
- package/src/app/lib/components/ui/popover/popover-context.ts +0 -8
- package/src/app/lib/components/ui/popover/popover-trigger.component.ts +22 -22
- package/src/app/lib/components/ui/popover/popover.component.ts +20 -33
- package/src/app/lib/components/ui/progress/index.ts +1 -6
- package/src/app/lib/components/ui/progress/progress.component.ts +15 -30
- package/src/app/lib/components/ui/radio-group/index.ts +1 -4
- package/src/app/lib/components/ui/radio-group/radio-group-context.ts +1 -7
- package/src/app/lib/components/ui/radio-group/radio-group-item.component.ts +36 -69
- package/src/app/lib/components/ui/radio-group/radio-group.component.ts +38 -67
- package/src/app/lib/components/ui/resizable/index.ts +0 -1
- package/src/app/lib/components/ui/resizable/resizable-handle.component.ts +25 -39
- package/src/app/lib/components/ui/resizable/resizable-panel-group.component.ts +15 -18
- package/src/app/lib/components/ui/resizable/resizable-panel.component.ts +12 -31
- package/src/app/lib/components/ui/scroll-area/index.ts +4 -5
- package/src/app/lib/components/ui/scroll-area/scroll-area.component.ts +5 -19
- package/src/app/lib/components/ui/scroll-area/scroll-bar.component.ts +8 -27
- package/src/app/lib/components/ui/segmented/index.ts +5 -9
- package/src/app/lib/components/ui/segmented/segmented-context.ts +1 -3
- package/src/app/lib/components/ui/segmented/segmented-item.component.ts +21 -29
- package/src/app/lib/components/ui/segmented/segmented-variants.ts +2 -2
- package/src/app/lib/components/ui/segmented/segmented.component.ts +24 -32
- package/src/app/lib/components/ui/select/index.ts +5 -6
- package/src/app/lib/components/ui/select/select-content.component.ts +34 -62
- package/src/app/lib/components/ui/select/select-context.ts +4 -14
- package/src/app/lib/components/ui/select/select-group.component.ts +6 -7
- package/src/app/lib/components/ui/select/select-item.component.ts +46 -55
- package/src/app/lib/components/ui/select/select-label.component.ts +2 -7
- package/src/app/lib/components/ui/select/select-separator.component.ts +3 -8
- package/src/app/lib/components/ui/select/select-trigger.component.ts +28 -25
- package/src/app/lib/components/ui/select/select-value.component.ts +7 -13
- package/src/app/lib/components/ui/select/select.component.ts +52 -64
- package/src/app/lib/components/ui/separator/index.ts +1 -6
- package/src/app/lib/components/ui/separator/separator.component.ts +4 -19
- package/src/app/lib/components/ui/sheet/index.ts +0 -1
- package/src/app/lib/components/ui/sheet/sheet-close.component.ts +4 -8
- package/src/app/lib/components/ui/sheet/sheet-content.component.ts +31 -36
- package/src/app/lib/components/ui/sheet/sheet-description.component.ts +5 -10
- package/src/app/lib/components/ui/sheet/sheet-footer.component.ts +3 -7
- package/src/app/lib/components/ui/sheet/sheet-header.component.ts +3 -7
- package/src/app/lib/components/ui/sheet/sheet-title.component.ts +5 -10
- package/src/app/lib/components/ui/sheet/sheet-trigger.component.ts +7 -11
- package/src/app/lib/components/ui/sheet/sheet-variants.ts +1 -1
- package/src/app/lib/components/ui/sheet/sheet.component.ts +36 -36
- package/src/app/lib/components/ui/sidebar/index.ts +14 -15
- package/src/app/lib/components/ui/sidebar/sidebar-content.component.ts +4 -8
- package/src/app/lib/components/ui/sidebar/sidebar-context.ts +1 -3
- package/src/app/lib/components/ui/sidebar/sidebar-footer.component.ts +3 -9
- package/src/app/lib/components/ui/sidebar/sidebar-group-action.component.ts +4 -8
- package/src/app/lib/components/ui/sidebar/sidebar-group-content.component.ts +3 -9
- package/src/app/lib/components/ui/sidebar/sidebar-group-label.component.ts +4 -8
- package/src/app/lib/components/ui/sidebar/sidebar-group.component.ts +3 -7
- package/src/app/lib/components/ui/sidebar/sidebar-header.component.ts +3 -9
- package/src/app/lib/components/ui/sidebar/sidebar-input.component.ts +4 -8
- package/src/app/lib/components/ui/sidebar/sidebar-inset.component.ts +4 -8
- package/src/app/lib/components/ui/sidebar/sidebar-menu-action.component.ts +4 -8
- package/src/app/lib/components/ui/sidebar/sidebar-menu-badge.component.ts +4 -8
- package/src/app/lib/components/ui/sidebar/sidebar-menu-button.component.ts +4 -9
- package/src/app/lib/components/ui/sidebar/sidebar-menu-item.component.ts +3 -9
- package/src/app/lib/components/ui/sidebar/sidebar-menu-skeleton.component.ts +6 -11
- package/src/app/lib/components/ui/sidebar/sidebar-menu-sub-button.component.ts +4 -8
- package/src/app/lib/components/ui/sidebar/sidebar-menu-sub-item.component.ts +2 -6
- package/src/app/lib/components/ui/sidebar/sidebar-menu-sub.component.ts +4 -8
- package/src/app/lib/components/ui/sidebar/sidebar-menu.component.ts +3 -7
- package/src/app/lib/components/ui/sidebar/sidebar-provider.component.ts +46 -52
- package/src/app/lib/components/ui/sidebar/sidebar-rail.component.ts +6 -11
- package/src/app/lib/components/ui/sidebar/sidebar-route-active.service.ts +17 -17
- package/src/app/lib/components/ui/sidebar/sidebar-separator.component.ts +3 -7
- package/src/app/lib/components/ui/sidebar/sidebar-trigger.component.ts +6 -11
- package/src/app/lib/components/ui/sidebar/sidebar.component.ts +20 -31
- package/src/app/lib/components/ui/skeleton/skeleton.component.ts +3 -8
- package/src/app/lib/components/ui/slider/index.ts +1 -6
- package/src/app/lib/components/ui/slider/slider.component.ts +73 -138
- package/src/app/lib/components/ui/spinner/index.ts +0 -1
- package/src/app/lib/components/ui/spinner/spinner-variants.ts +19 -22
- package/src/app/lib/components/ui/spinner/spinner.component.ts +4 -8
- package/src/app/lib/components/ui/switch/index.ts +1 -6
- package/src/app/lib/components/ui/switch/switch.component.ts +83 -108
- package/src/app/lib/components/ui/table/index.ts +0 -1
- package/src/app/lib/components/ui/table/table-body.component.ts +6 -10
- package/src/app/lib/components/ui/table/table-caption.component.ts +6 -8
- package/src/app/lib/components/ui/table/table-cell.component.ts +4 -8
- package/src/app/lib/components/ui/table/table-footer.component.ts +6 -8
- package/src/app/lib/components/ui/table/table-head.component.ts +4 -8
- package/src/app/lib/components/ui/table/table-header.component.ts +6 -10
- package/src/app/lib/components/ui/table/table-row.component.ts +6 -11
- package/src/app/lib/components/ui/table/table.component.ts +4 -8
- package/src/app/lib/components/ui/tabs/index.ts +14 -7
- package/src/app/lib/components/ui/tabs/tabs-content.component.ts +11 -36
- package/src/app/lib/components/ui/tabs/tabs-context.ts +0 -8
- package/src/app/lib/components/ui/tabs/tabs-list.component.ts +54 -60
- package/src/app/lib/components/ui/tabs/tabs-trigger.component.ts +20 -35
- package/src/app/lib/components/ui/tabs/tabs.component.ts +32 -49
- package/src/app/lib/components/ui/textarea/textarea.component.ts +3 -8
- package/src/app/lib/components/ui/toast/index.ts +6 -7
- package/src/app/lib/components/ui/toast/toast-action.component.ts +7 -18
- package/src/app/lib/components/ui/toast/toast-description.component.ts +2 -11
- package/src/app/lib/components/ui/toast/toast-title.component.ts +2 -9
- package/src/app/lib/components/ui/toast/toast-variants.ts +1 -1
- package/src/app/lib/components/ui/toast/toast.component.ts +18 -24
- package/src/app/lib/components/ui/toast/toast.service.ts +22 -37
- package/src/app/lib/components/ui/toast/toaster.component.ts +6 -16
- package/src/app/lib/components/ui/toggle/index.ts +1 -5
- package/src/app/lib/components/ui/toggle/toggle-variants.ts +2 -2
- package/src/app/lib/components/ui/toggle/toggle.component.ts +32 -51
- package/src/app/lib/components/ui/toggle-group/index.ts +1 -4
- package/src/app/lib/components/ui/toggle-group/toggle-group-context.ts +1 -7
- package/src/app/lib/components/ui/toggle-group/toggle-group-item.component.ts +38 -59
- package/src/app/lib/components/ui/toggle-group/toggle-group.component.ts +33 -51
- package/src/app/lib/components/ui/tooltip/index.ts +9 -6
- package/src/app/lib/components/ui/tooltip/tooltip-content.component.ts +6 -24
- package/src/app/lib/components/ui/tooltip/tooltip-context.ts +0 -8
- package/src/app/lib/components/ui/tooltip/tooltip-provider.component.ts +12 -24
- package/src/app/lib/components/ui/tooltip/tooltip-trigger.component.ts +4 -21
- package/src/app/lib/components/ui/tooltip/tooltip.component.ts +21 -33
- package/src/app/lib/components/ui/typography/index.ts +0 -1
- package/src/app/lib/components/ui/typography/typography-blockquote.component.ts +3 -7
- package/src/app/lib/components/ui/typography/typography-h1.component.ts +3 -10
- package/src/app/lib/components/ui/typography/typography-h2.component.ts +3 -10
- package/src/app/lib/components/ui/typography/typography-h3.component.ts +3 -7
- package/src/app/lib/components/ui/typography/typography-h4.component.ts +3 -7
- package/src/app/lib/components/ui/typography/typography-inline-code.component.ts +4 -8
- package/src/app/lib/components/ui/typography/typography-large.component.ts +3 -9
- package/src/app/lib/components/ui/typography/typography-lead.component.ts +3 -7
- package/src/app/lib/components/ui/typography/typography-list.component.ts +3 -7
- package/src/app/lib/components/ui/typography/typography-muted.component.ts +3 -7
- package/src/app/lib/components/ui/typography/typography-p.component.ts +3 -7
- package/src/app/lib/components/ui/typography/typography-small.component.ts +3 -7
- package/src/app/lib/utils/accessibility/click-outside.directive.ts +1 -8
- package/src/app/lib/utils/accessibility/focus-management.service.ts +4 -15
- package/src/app/lib/utils/accessibility/focus-trap.directive.ts +32 -106
- package/src/app/lib/utils/accessibility/index.ts +16 -5
- package/src/app/lib/utils/accessibility/keyboard-navigation.directive.ts +5 -8
- package/src/app/lib/utils/accessibility/live-region.directive.ts +10 -13
- package/src/app/lib/utils/accessibility/touch-target.directive.ts +1 -8
- package/src/app/lib/utils/animation/animation.utils.ts +4 -7
- package/src/app/lib/utils/animation/index.ts +15 -5
- package/src/app/lib/utils/animation/presence.component.ts +1 -1
- package/src/app/lib/utils/animation/presence.directive.ts +2 -2
- package/src/app/lib/utils/positioning/index.ts +40 -18
- package/src/app/lib/components/ui/index.ts +0 -551
- package/src/app/lib/index.ts +0 -7
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
import { cn } from '@/lib/utils';
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
ChangeDetectionStrategy,
|
|
4
|
+
Component,
|
|
5
|
+
computed,
|
|
6
|
+
ElementRef,
|
|
7
|
+
forwardRef,
|
|
8
|
+
input,
|
|
9
|
+
model,
|
|
10
|
+
output,
|
|
11
|
+
signal,
|
|
12
|
+
viewChild,
|
|
13
13
|
} from '@angular/core';
|
|
14
14
|
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
15
15
|
|
|
16
|
-
// ============================================================================
|
|
17
|
-
// Types
|
|
18
|
-
// ============================================================================
|
|
19
|
-
|
|
20
16
|
export type SwitchState = 'checked' | 'unchecked';
|
|
21
17
|
|
|
22
18
|
export type SwitchProps = {
|
|
@@ -38,10 +34,6 @@ export type SwitchProps = {
|
|
|
38
34
|
class?: string;
|
|
39
35
|
};
|
|
40
36
|
|
|
41
|
-
// ============================================================================
|
|
42
|
-
// Switch Component
|
|
43
|
-
// ============================================================================
|
|
44
|
-
|
|
45
37
|
/**
|
|
46
38
|
* Switch component for toggling between on/off states.
|
|
47
39
|
* Based on Radix UI Switch primitive with shadcn/ui styling.
|
|
@@ -111,14 +103,11 @@ export type SwitchProps = {
|
|
|
111
103
|
[attr.data-disabled]="isDisabled() ? '' : null"
|
|
112
104
|
[disabled]="isDisabled()"
|
|
113
105
|
[class]="trackClass()"
|
|
106
|
+
[style.backgroundColor]="checked() ? checkedBgColor() : 'var(--color-input)'"
|
|
114
107
|
(click)="toggle()"
|
|
115
108
|
(keydown)="onKeyDown($event)"
|
|
116
109
|
>
|
|
117
|
-
<span
|
|
118
|
-
data-slot="switch-thumb"
|
|
119
|
-
[class]="thumbClass()"
|
|
120
|
-
[attr.data-state]="state()"
|
|
121
|
-
></span>
|
|
110
|
+
<span data-slot="switch-thumb" [class]="thumbClass()" [attr.data-state]="state()"></span>
|
|
122
111
|
</button>
|
|
123
112
|
<!-- Hidden input for form submission -->
|
|
124
113
|
@if (name()) {
|
|
@@ -148,63 +137,104 @@ export type SwitchProps = {
|
|
|
148
137
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
149
138
|
})
|
|
150
139
|
export class Switch implements ControlValueAccessor {
|
|
151
|
-
|
|
152
|
-
|
|
140
|
+
constructor() {
|
|
141
|
+
// Initialize from defaultChecked if provided
|
|
142
|
+
if (this.defaultChecked()) {
|
|
143
|
+
this.checked.set(true);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
153
146
|
|
|
154
|
-
|
|
155
|
-
|
|
147
|
+
private readonly buttonElement = viewChild<ElementRef<HTMLButtonElement>>('buttonElement');
|
|
148
|
+
|
|
149
|
+
/** Emitted when checked state changes */
|
|
150
|
+
readonly checkedChange = output<boolean>();
|
|
156
151
|
|
|
157
152
|
/** Whether the switch is checked/on */
|
|
158
153
|
readonly checked = model<boolean>(false);
|
|
159
154
|
|
|
155
|
+
/** The id for the switch button - used for label association */
|
|
156
|
+
readonly id = input<string>();
|
|
160
157
|
/** Whether the switch starts checked (uncontrolled mode) */
|
|
161
158
|
readonly defaultChecked = input<boolean>(false);
|
|
162
|
-
|
|
163
159
|
/** Whether the switch is disabled via input */
|
|
164
160
|
readonly disabled = input<boolean>(false);
|
|
165
|
-
|
|
166
161
|
/** Whether the switch is required */
|
|
167
162
|
readonly required = input<boolean>(false);
|
|
168
|
-
|
|
169
163
|
/** The name for the hidden input (form submission) */
|
|
170
164
|
readonly name = input<string>();
|
|
171
|
-
|
|
172
165
|
/** The value for the hidden input (form submission) */
|
|
173
166
|
readonly value = input<string>('on');
|
|
174
|
-
|
|
175
167
|
/** Additional CSS classes to apply */
|
|
176
168
|
readonly class = input<string>('');
|
|
169
|
+
/** Additional CSS classes to apply to the inner track button */
|
|
170
|
+
readonly buttonClass = input<string>('');
|
|
171
|
+
/** Background color for checked state (hex, rgb, or CSS color name) */
|
|
172
|
+
readonly checkedBgColor = input<string>('rgb(59, 130, 246)');
|
|
177
173
|
|
|
178
|
-
/**
|
|
179
|
-
readonly
|
|
174
|
+
/** Current state for data attribute */
|
|
175
|
+
protected readonly state = computed(
|
|
176
|
+
(): SwitchState => (this.checked() ? 'checked' : 'unchecked'),
|
|
177
|
+
);
|
|
178
|
+
/** Input value for form submission */
|
|
179
|
+
protected readonly inputValue = computed(() => (this.checked() ? this.value() : undefined));
|
|
180
|
+
/** Computed class combining base styles and custom classes */
|
|
181
|
+
protected readonly computedClass = computed(() => cn('relative inline-flex', this.class()));
|
|
182
|
+
/** Computed track class */
|
|
183
|
+
protected readonly trackClass = computed(() =>
|
|
184
|
+
cn(
|
|
185
|
+
// Custom overrides first (higher specificity)
|
|
186
|
+
this.buttonClass(),
|
|
187
|
+
// Base styles
|
|
188
|
+
'inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent',
|
|
189
|
+
'shadow-xs transition-colors duration-200',
|
|
190
|
+
// Focus styles
|
|
191
|
+
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',
|
|
192
|
+
// State styles
|
|
193
|
+
'data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',
|
|
194
|
+
'dark:data-[state=unchecked]:bg-input/80',
|
|
195
|
+
// Disabled styles
|
|
196
|
+
'disabled:cursor-not-allowed disabled:opacity-50',
|
|
197
|
+
),
|
|
198
|
+
);
|
|
199
|
+
/** Computed thumb class */
|
|
200
|
+
protected readonly thumbClass = computed(() =>
|
|
201
|
+
cn(
|
|
202
|
+
// Base styles
|
|
203
|
+
'pointer-events-none block size-4 rounded-full bg-background shadow-lg ring-0',
|
|
204
|
+
// Transition
|
|
205
|
+
'transition-transform duration-200',
|
|
206
|
+
// Position based on state
|
|
207
|
+
'data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',
|
|
208
|
+
),
|
|
209
|
+
);
|
|
210
|
+
/** Whether the switch is disabled (either via input or forms) */
|
|
211
|
+
readonly isDisabled = computed(() => this.disabled() || this.isFormsDisabled());
|
|
180
212
|
|
|
181
213
|
/** Whether the switch is disabled via forms */
|
|
182
|
-
private readonly
|
|
183
|
-
|
|
184
|
-
/** Whether the switch is disabled (either via input or forms) */
|
|
185
|
-
readonly isDisabled = computed(() => this.disabled() || this.formsDisabled());
|
|
214
|
+
private readonly isFormsDisabled = signal<boolean>(false);
|
|
186
215
|
|
|
187
216
|
/** ControlValueAccessor callbacks */
|
|
188
217
|
private onChange: (value: boolean) => void = () => {};
|
|
189
218
|
private onTouched: () => void = () => {};
|
|
190
219
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
this.checked(
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
if (this.defaultChecked()) {
|
|
204
|
-
this.checked.set(true);
|
|
205
|
-
}
|
|
220
|
+
// ControlValueAccessor implementation
|
|
221
|
+
writeValue(value: boolean): void {
|
|
222
|
+
this.checked.set(value ?? false);
|
|
223
|
+
}
|
|
224
|
+
registerOnChange(fn: (value: boolean) => void): void {
|
|
225
|
+
this.onChange = fn;
|
|
226
|
+
}
|
|
227
|
+
registerOnTouched(fn: () => void): void {
|
|
228
|
+
this.onTouched = fn;
|
|
229
|
+
}
|
|
230
|
+
setDisabledState(isDisabled: boolean): void {
|
|
231
|
+
this.isFormsDisabled.set(isDisabled);
|
|
206
232
|
}
|
|
207
233
|
|
|
234
|
+
/** Focus the switch button */
|
|
235
|
+
focus(): void {
|
|
236
|
+
this.buttonElement()?.nativeElement.focus();
|
|
237
|
+
}
|
|
208
238
|
/** Toggle the switch state */
|
|
209
239
|
toggle(): void {
|
|
210
240
|
if (!this.isDisabled()) {
|
|
@@ -224,59 +254,4 @@ export class Switch implements ControlValueAccessor {
|
|
|
224
254
|
return;
|
|
225
255
|
}
|
|
226
256
|
}
|
|
227
|
-
|
|
228
|
-
/** Focus the switch button */
|
|
229
|
-
focus(): void {
|
|
230
|
-
this.buttonElement()?.nativeElement.focus();
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
// ControlValueAccessor implementation
|
|
234
|
-
writeValue(value: boolean): void {
|
|
235
|
-
this.checked.set(value ?? false);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
registerOnChange(fn: (value: boolean) => void): void {
|
|
239
|
-
this.onChange = fn;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
registerOnTouched(fn: () => void): void {
|
|
243
|
-
this.onTouched = fn;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
setDisabledState(isDisabled: boolean): void {
|
|
247
|
-
this.formsDisabled.set(isDisabled);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/** Computed class combining base styles and custom classes */
|
|
251
|
-
protected readonly computedClass = computed(() =>
|
|
252
|
-
cn('relative inline-flex', this.class())
|
|
253
|
-
);
|
|
254
|
-
|
|
255
|
-
/** Computed track class */
|
|
256
|
-
protected readonly trackClass = computed(() =>
|
|
257
|
-
cn(
|
|
258
|
-
// Base styles
|
|
259
|
-
'inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent',
|
|
260
|
-
'shadow-xs transition-colors duration-200',
|
|
261
|
-
// Focus styles
|
|
262
|
-
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',
|
|
263
|
-
// State styles
|
|
264
|
-
'data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',
|
|
265
|
-
'dark:data-[state=unchecked]:bg-input/80',
|
|
266
|
-
// Disabled styles
|
|
267
|
-
'disabled:cursor-not-allowed disabled:opacity-50'
|
|
268
|
-
)
|
|
269
|
-
);
|
|
270
|
-
|
|
271
|
-
/** Computed thumb class */
|
|
272
|
-
protected readonly thumbClass = computed(() =>
|
|
273
|
-
cn(
|
|
274
|
-
// Base styles
|
|
275
|
-
'pointer-events-none block size-4 rounded-full bg-background shadow-lg ring-0',
|
|
276
|
-
// Transition
|
|
277
|
-
'transition-transform duration-200',
|
|
278
|
-
// Position based on state
|
|
279
|
-
'data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0'
|
|
280
|
-
)
|
|
281
|
-
);
|
|
282
257
|
}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { cn } from '@/lib/utils';
|
|
2
|
-
import {
|
|
3
|
-
ChangeDetectionStrategy,
|
|
4
|
-
Component,
|
|
5
|
-
computed,
|
|
6
|
-
input,
|
|
7
|
-
} from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
|
8
3
|
|
|
9
4
|
/**
|
|
10
5
|
* TableBody component - tbody wrapper.
|
|
@@ -12,8 +7,11 @@ import {
|
|
|
12
7
|
*/
|
|
13
8
|
@Component({
|
|
14
9
|
selector: 'TableBody',
|
|
15
|
-
template: `<tbody [class]="computedClass()"
|
|
10
|
+
template: `<tbody [class]="computedClass()">
|
|
11
|
+
<ng-content />
|
|
12
|
+
</tbody>`,
|
|
16
13
|
host: {
|
|
14
|
+
'attr.data-slot': '"table-body"',
|
|
17
15
|
class: 'contents',
|
|
18
16
|
},
|
|
19
17
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -22,7 +20,5 @@ export class TableBody {
|
|
|
22
20
|
/** Additional CSS classes */
|
|
23
21
|
readonly class = input<string>('');
|
|
24
22
|
|
|
25
|
-
protected readonly computedClass = computed(() =>
|
|
26
|
-
cn('[&_tr:last-child]:border-0', this.class())
|
|
27
|
-
);
|
|
23
|
+
protected readonly computedClass = computed(() => cn('[&_tr:last-child]:border-0', this.class()));
|
|
28
24
|
}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { cn } from '@/lib/utils';
|
|
2
|
-
import {
|
|
3
|
-
ChangeDetectionStrategy,
|
|
4
|
-
Component,
|
|
5
|
-
computed,
|
|
6
|
-
input,
|
|
7
|
-
} from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
|
8
3
|
|
|
9
4
|
/**
|
|
10
5
|
* TableCaption component - caption wrapper.
|
|
@@ -12,8 +7,11 @@ import {
|
|
|
12
7
|
*/
|
|
13
8
|
@Component({
|
|
14
9
|
selector: 'TableCaption',
|
|
15
|
-
template: `<caption [class]="computedClass()"
|
|
10
|
+
template: `<caption [class]="computedClass()">
|
|
11
|
+
<ng-content />
|
|
12
|
+
</caption>`,
|
|
16
13
|
host: {
|
|
14
|
+
'attr.data-slot': '"table-caption"',
|
|
17
15
|
class: 'contents',
|
|
18
16
|
},
|
|
19
17
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -23,6 +21,6 @@ export class TableCaption {
|
|
|
23
21
|
readonly class = input<string>('');
|
|
24
22
|
|
|
25
23
|
protected readonly computedClass = computed(() =>
|
|
26
|
-
cn('mt-4 text-sm text-muted-foreground', this.class())
|
|
24
|
+
cn('mt-4 text-sm text-muted-foreground', this.class()),
|
|
27
25
|
);
|
|
28
26
|
}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { cn } from '@/lib/utils';
|
|
2
|
-
import {
|
|
3
|
-
ChangeDetectionStrategy,
|
|
4
|
-
Component,
|
|
5
|
-
computed,
|
|
6
|
-
input,
|
|
7
|
-
} from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
|
8
3
|
|
|
9
4
|
/**
|
|
10
5
|
* TableCell component - td wrapper.
|
|
@@ -14,6 +9,7 @@ import {
|
|
|
14
9
|
selector: 'TableCell',
|
|
15
10
|
template: `<td [class]="computedClass()"><ng-content /></td>`,
|
|
16
11
|
host: {
|
|
12
|
+
'attr.data-slot': '"table-cell"',
|
|
17
13
|
class: 'contents',
|
|
18
14
|
},
|
|
19
15
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -25,7 +21,7 @@ export class TableCell {
|
|
|
25
21
|
protected readonly computedClass = computed(() =>
|
|
26
22
|
cn(
|
|
27
23
|
'p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',
|
|
28
|
-
this.class()
|
|
29
|
-
)
|
|
24
|
+
this.class(),
|
|
25
|
+
),
|
|
30
26
|
);
|
|
31
27
|
}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { cn } from '@/lib/utils';
|
|
2
|
-
import {
|
|
3
|
-
ChangeDetectionStrategy,
|
|
4
|
-
Component,
|
|
5
|
-
computed,
|
|
6
|
-
input,
|
|
7
|
-
} from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
|
8
3
|
|
|
9
4
|
/**
|
|
10
5
|
* TableFooter component - tfoot wrapper.
|
|
@@ -12,8 +7,11 @@ import {
|
|
|
12
7
|
*/
|
|
13
8
|
@Component({
|
|
14
9
|
selector: 'TableFooter',
|
|
15
|
-
template: `<tfoot [class]="computedClass()"
|
|
10
|
+
template: `<tfoot [class]="computedClass()">
|
|
11
|
+
<ng-content />
|
|
12
|
+
</tfoot>`,
|
|
16
13
|
host: {
|
|
14
|
+
'attr.data-slot': '"table-footer"',
|
|
17
15
|
class: 'contents',
|
|
18
16
|
},
|
|
19
17
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -23,6 +21,6 @@ export class TableFooter {
|
|
|
23
21
|
readonly class = input<string>('');
|
|
24
22
|
|
|
25
23
|
protected readonly computedClass = computed(() =>
|
|
26
|
-
cn('border-t bg-muted/50 font-medium [&>tr]:last:border-b-0', this.class())
|
|
24
|
+
cn('border-t bg-muted/50 font-medium [&>tr]:last:border-b-0', this.class()),
|
|
27
25
|
);
|
|
28
26
|
}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { cn } from '@/lib/utils';
|
|
2
|
-
import {
|
|
3
|
-
ChangeDetectionStrategy,
|
|
4
|
-
Component,
|
|
5
|
-
computed,
|
|
6
|
-
input,
|
|
7
|
-
} from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
|
8
3
|
|
|
9
4
|
/**
|
|
10
5
|
* TableHead component - th wrapper.
|
|
@@ -16,6 +11,7 @@ import {
|
|
|
16
11
|
selector: 'TableHead',
|
|
17
12
|
template: `<th [scope]="scope()" [class]="computedClass()"><ng-content /></th>`,
|
|
18
13
|
host: {
|
|
14
|
+
'attr.data-slot': '"table-head"',
|
|
19
15
|
class: 'contents',
|
|
20
16
|
},
|
|
21
17
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -30,7 +26,7 @@ export class TableHead {
|
|
|
30
26
|
protected readonly computedClass = computed(() =>
|
|
31
27
|
cn(
|
|
32
28
|
'h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',
|
|
33
|
-
this.class()
|
|
34
|
-
)
|
|
29
|
+
this.class(),
|
|
30
|
+
),
|
|
35
31
|
);
|
|
36
32
|
}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { cn } from '@/lib/utils';
|
|
2
|
-
import {
|
|
3
|
-
ChangeDetectionStrategy,
|
|
4
|
-
Component,
|
|
5
|
-
computed,
|
|
6
|
-
input,
|
|
7
|
-
} from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
|
8
3
|
|
|
9
4
|
/**
|
|
10
5
|
* TableHeader component - thead wrapper.
|
|
@@ -12,8 +7,11 @@ import {
|
|
|
12
7
|
*/
|
|
13
8
|
@Component({
|
|
14
9
|
selector: 'TableHeader',
|
|
15
|
-
template: `<thead [class]="computedClass()"
|
|
10
|
+
template: `<thead [class]="computedClass()">
|
|
11
|
+
<ng-content />
|
|
12
|
+
</thead>`,
|
|
16
13
|
host: {
|
|
14
|
+
'attr.data-slot': '"table-header"',
|
|
17
15
|
class: 'contents',
|
|
18
16
|
},
|
|
19
17
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -22,7 +20,5 @@ export class TableHeader {
|
|
|
22
20
|
/** Additional CSS classes */
|
|
23
21
|
readonly class = input<string>('');
|
|
24
22
|
|
|
25
|
-
protected readonly computedClass = computed(() =>
|
|
26
|
-
cn('[&_tr]:border-b', this.class())
|
|
27
|
-
);
|
|
23
|
+
protected readonly computedClass = computed(() => cn('[&_tr]:border-b', this.class()));
|
|
28
24
|
}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { cn } from '@/lib/utils';
|
|
2
|
-
import {
|
|
3
|
-
ChangeDetectionStrategy,
|
|
4
|
-
Component,
|
|
5
|
-
computed,
|
|
6
|
-
input,
|
|
7
|
-
} from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
|
8
3
|
|
|
9
4
|
/**
|
|
10
5
|
* TableRow component - tr wrapper.
|
|
@@ -12,8 +7,11 @@ import {
|
|
|
12
7
|
*/
|
|
13
8
|
@Component({
|
|
14
9
|
selector: 'TableRow',
|
|
15
|
-
template: `<tr [class]="computedClass()" [attr.data-state]="selected() ? 'selected' : null"
|
|
10
|
+
template: `<tr [class]="computedClass()" [attr.data-state]="selected() ? 'selected' : null">
|
|
11
|
+
<ng-content />
|
|
12
|
+
</tr>`,
|
|
16
13
|
host: {
|
|
14
|
+
'attr.data-slot': '"table-row"',
|
|
17
15
|
class: 'contents',
|
|
18
16
|
},
|
|
19
17
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -26,9 +24,6 @@ export class TableRow {
|
|
|
26
24
|
readonly selected = input<boolean>(false);
|
|
27
25
|
|
|
28
26
|
protected readonly computedClass = computed(() =>
|
|
29
|
-
cn(
|
|
30
|
-
'border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',
|
|
31
|
-
this.class()
|
|
32
|
-
)
|
|
27
|
+
cn('border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted', this.class()),
|
|
33
28
|
);
|
|
34
29
|
}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { cn } from '@/lib/utils';
|
|
2
|
-
import {
|
|
3
|
-
ChangeDetectionStrategy,
|
|
4
|
-
Component,
|
|
5
|
-
computed,
|
|
6
|
-
input,
|
|
7
|
-
} from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
|
8
3
|
|
|
9
4
|
/**
|
|
10
5
|
* Table component - base table wrapper.
|
|
@@ -34,6 +29,7 @@ import {
|
|
|
34
29
|
</table>
|
|
35
30
|
`,
|
|
36
31
|
host: {
|
|
32
|
+
'attr.data-slot': '"table"',
|
|
37
33
|
'[class]': 'computedClass()',
|
|
38
34
|
},
|
|
39
35
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -43,10 +39,10 @@ export class Table {
|
|
|
43
39
|
readonly class = input<string>('');
|
|
44
40
|
|
|
45
41
|
protected readonly computedClass = computed(() =>
|
|
46
|
-
cn('relative w-full overflow-auto', this.class())
|
|
42
|
+
cn('relative w-full overflow-auto', this.class()),
|
|
47
43
|
);
|
|
48
44
|
|
|
49
45
|
protected readonly tableClass = computed(() =>
|
|
50
|
-
cn('w-full caption-bottom text-sm border-collapse')
|
|
46
|
+
cn('w-full caption-bottom text-sm border-collapse'),
|
|
51
47
|
);
|
|
52
48
|
}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
// Context and types
|
|
2
2
|
export {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
TABS_CONTEXT,
|
|
4
|
+
type TabsActivationMode,
|
|
5
|
+
type TabsContext,
|
|
6
|
+
type TabsOrientation,
|
|
7
7
|
} from './tabs-context';
|
|
8
8
|
|
|
9
9
|
// Components and their types
|
|
10
|
-
export {
|
|
10
|
+
export {
|
|
11
|
+
TabsContent,
|
|
12
|
+
type TabsContentProps,
|
|
13
|
+
type TabsContentState,
|
|
14
|
+
} from './tabs-content.component';
|
|
11
15
|
export { TabsList, type TabsListProps } from './tabs-list.component';
|
|
12
|
-
export {
|
|
16
|
+
export {
|
|
17
|
+
TabsTrigger,
|
|
18
|
+
type TabsTriggerProps,
|
|
19
|
+
type TabsTriggerState,
|
|
20
|
+
} from './tabs-trigger.component';
|
|
13
21
|
export { Tabs, type TabsProps } from './tabs.component';
|
|
14
|
-
|
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
import { cn } from '@/lib/utils';
|
|
2
|
-
import {
|
|
3
|
-
ChangeDetectionStrategy,
|
|
4
|
-
Component,
|
|
5
|
-
computed,
|
|
6
|
-
inject,
|
|
7
|
-
input,
|
|
8
|
-
} from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';
|
|
9
3
|
import { TABS_CONTEXT } from './tabs-context';
|
|
10
4
|
|
|
11
|
-
// ============================================================================
|
|
12
|
-
// Types
|
|
13
|
-
// ============================================================================
|
|
14
|
-
|
|
15
5
|
export type TabsContentState = 'active' | 'inactive';
|
|
16
6
|
|
|
17
7
|
/**
|
|
@@ -28,10 +18,6 @@ export interface TabsContentProps {
|
|
|
28
18
|
class?: string;
|
|
29
19
|
}
|
|
30
20
|
|
|
31
|
-
// ============================================================================
|
|
32
|
-
// Component
|
|
33
|
-
// ============================================================================
|
|
34
|
-
|
|
35
21
|
/**
|
|
36
22
|
* @component TabsContent
|
|
37
23
|
*
|
|
@@ -73,60 +59,49 @@ export interface TabsContentProps {
|
|
|
73
59
|
*/
|
|
74
60
|
@Component({
|
|
75
61
|
selector: 'TabsContent',
|
|
76
|
-
template:
|
|
77
|
-
@if (shouldRender()) {
|
|
78
|
-
<ng-content />
|
|
79
|
-
}
|
|
80
|
-
`,
|
|
62
|
+
template: `<ng-content />`,
|
|
81
63
|
host: {
|
|
64
|
+
'attr.data-slot': '"tabs-content"',
|
|
82
65
|
'[class]': 'computedClass()',
|
|
83
66
|
'[attr.id]': 'panelId()',
|
|
84
67
|
'[attr.data-state]': 'state()',
|
|
85
68
|
'[attr.data-orientation]': 'tabs.orientation()',
|
|
86
69
|
'[attr.aria-labelledby]': 'tabId()',
|
|
87
|
-
'[attr.hidden]': '!isActive() ? true : null',
|
|
70
|
+
'[attr.hidden]': '!isActive() && !forceMount() ? true : null',
|
|
88
71
|
'[attr.tabindex]': 'isActive() ? 0 : -1',
|
|
89
|
-
|
|
72
|
+
role: 'tabpanel',
|
|
90
73
|
},
|
|
91
74
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
92
75
|
})
|
|
93
76
|
export class TabsContent {
|
|
94
|
-
protected readonly tabs = inject(TABS_CONTEXT);
|
|
95
|
-
|
|
96
77
|
/** A unique value that associates the content with a trigger */
|
|
97
78
|
readonly value = input.required<string>();
|
|
98
79
|
|
|
99
80
|
/** Used to force mounting when more control is needed */
|
|
100
81
|
readonly forceMount = input<boolean>(false);
|
|
101
|
-
|
|
102
82
|
/** Additional CSS classes */
|
|
103
83
|
readonly class = input<string>('');
|
|
104
84
|
|
|
85
|
+
protected readonly tabs = inject(TABS_CONTEXT);
|
|
86
|
+
|
|
105
87
|
/** Check if this content should be visible */
|
|
106
88
|
protected readonly isActive = computed(() => this.tabs.value() === this.value());
|
|
107
|
-
|
|
108
89
|
/** Current state: active or inactive */
|
|
109
90
|
protected readonly state = computed<TabsContentState>(() =>
|
|
110
|
-
this.isActive() ? 'active' : 'inactive'
|
|
91
|
+
this.isActive() ? 'active' : 'inactive',
|
|
111
92
|
);
|
|
112
|
-
|
|
113
93
|
/** Whether content should be rendered (force mount or active) */
|
|
114
|
-
protected readonly shouldRender = computed(() =>
|
|
115
|
-
this.forceMount() || this.isActive()
|
|
116
|
-
);
|
|
117
|
-
|
|
94
|
+
protected readonly shouldRender = computed(() => this.forceMount() || this.isActive());
|
|
118
95
|
/** Generate panel ID */
|
|
119
96
|
protected readonly panelId = computed(() => this.tabs.getPanelId(this.value()));
|
|
120
|
-
|
|
121
97
|
/** Generate tab ID for aria-labelledby */
|
|
122
98
|
protected readonly tabId = computed(() => this.tabs.getTabId(this.value()));
|
|
123
|
-
|
|
124
99
|
protected readonly computedClass = computed(() =>
|
|
125
100
|
cn(
|
|
126
101
|
'flex-1 outline-none',
|
|
127
102
|
'ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
|
|
128
103
|
'mt-2',
|
|
129
|
-
this.class()
|
|
130
|
-
)
|
|
104
|
+
this.class(),
|
|
105
|
+
),
|
|
131
106
|
);
|
|
132
107
|
}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { InjectionToken, WritableSignal } from '@angular/core';
|
|
2
2
|
|
|
3
|
-
// ============================================================================
|
|
4
|
-
// Types
|
|
5
|
-
// ============================================================================
|
|
6
|
-
|
|
7
3
|
export type TabsOrientation = 'horizontal' | 'vertical';
|
|
8
4
|
export type TabsActivationMode = 'automatic' | 'manual';
|
|
9
5
|
|
|
@@ -26,8 +22,4 @@ export interface TabsContext {
|
|
|
26
22
|
tabValues: WritableSignal<string[]>;
|
|
27
23
|
}
|
|
28
24
|
|
|
29
|
-
// ============================================================================
|
|
30
|
-
// Injection Tokens
|
|
31
|
-
// ============================================================================
|
|
32
|
-
|
|
33
25
|
export const TABS_CONTEXT = new InjectionToken<TabsContext>('TabsContext');
|