@ojiepermana/angular-component 22.0.27 → 22.0.29
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/README.md +9 -0
- package/fesm2022/ojiepermana-angular-component-accordion.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-alert.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-avatar.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-badge.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-button-group.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-button.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-calendar.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-card.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-carousel.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-checkbox.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-collapsible.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-combobox.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-command.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-composer.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-context-menu.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-date-picker.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-dialog.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-drawer.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-editor.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-empty.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-form.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-hover-card.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-icon.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-input-group.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-input-otp.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-input.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-item.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-kanban.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-kbd.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-label.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-menubar.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-native-select.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-pagination.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-pillbox.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-popover.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-progress.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-radio.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-resizable.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-select.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-separator.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-sheet.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-skeleton.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-slider.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-spinner.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-switch.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-table.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-tabs.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-textarea.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-timeline.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-toast.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-toggle.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-tooltip.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component-utils.mjs +1 -2
- package/fesm2022/ojiepermana-angular-component.mjs +1 -2
- package/package.json +2 -2
- package/fesm2022/ojiepermana-angular-component-accordion.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-alert.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-avatar.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-badge.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-button-group.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-button.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-calendar.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-card.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-carousel.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-checkbox.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-collapsible.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-combobox.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-command.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-composer.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-context-menu.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-date-picker.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-dialog.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-drawer.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-editor.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-empty.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-form.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-hover-card.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-icon.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-input-group.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-input-otp.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-input.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-item.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-kanban.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-kbd.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-label.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-menubar.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-native-select.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-pagination.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-pillbox.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-popover.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-progress.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-radio.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-resizable.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-scroll-area.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-select.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-separator.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-sheet.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-skeleton.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-slider.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-spinner.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-switch.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-table.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-tabs.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-textarea.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-timeline.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-toast.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-toggle-group.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-toggle.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-tooltip.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-utils.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-kanban.mjs","sources":["../../../library/component/kanban/kanban.component.ts","../../../library/component/kanban/ojiepermana-angular-component-kanban.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\nexport type KanbanColumnWidth = 'sm' | 'default' | 'lg';\n\nconst kanbanColumnWidthClasses: Record<KanbanColumnWidth, string> = {\n sm: '[--kanban-column-width:16rem]',\n default: '[--kanban-column-width:18rem]',\n lg: '[--kanban-column-width:22rem]',\n};\n\n@Component({\n selector: 'Kanban',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kanban\"',\n '[attr.data-column-width]': 'columnWidth()',\n '[attr.data-dense]': 'dense() ? \"\" : null',\n },\n template: `<ng-content />`,\n})\nexport class KanbanComponent {\n readonly columnWidth = input<KanbanColumnWidth>('default');\n readonly dense = input(false, { transform: booleanAttribute });\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'flex w-full min-w-0 gap-[var(--kanban-column-gap)] overflow-x-auto pb-3 text-sm text-foreground',\n '[--kanban-card-gap:0.75rem] [--kanban-column-gap:1rem]',\n kanbanColumnWidthClasses[this.columnWidth()],\n this.dense() ? '[--kanban-card-gap:0.5rem] [--kanban-column-gap:0.75rem]' : '',\n this.class(),\n ),\n );\n}\n\n@Component({\n selector: 'KanbanColumn',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kanban-column\"',\n },\n template: `<ng-content />`,\n})\nexport class KanbanColumnComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'flex max-h-full min-h-0 w-[var(--kanban-column-width)] shrink-0 flex-col overflow-hidden rounded-lg border border-border bg-muted/35 text-foreground shadow-sm',\n this.class(),\n ),\n );\n}\n\n@Component({\n selector: 'KanbanColumnHeader',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kanban-column-header\"',\n },\n template: `\n <div class=\"order-2 inline-flex shrink-0 items-center gap-1\">\n <ng-content select=\"KanbanColumnActions,[KanbanColumnActions]\" />\n </div>\n\n <div class=\"order-1 min-w-0 flex-1\">\n @if (heading()) {\n <div class=\"flex min-w-0 items-center gap-2\">\n <h3 class=\"truncate text-sm font-semibold leading-none text-foreground\">{{ heading() }}</h3>\n @if (displayCount() !== null) {\n <span\n class=\"inline-flex h-5 min-w-5 shrink-0 items-center justify-center rounded-full bg-muted px-1.5 text-xs font-medium text-muted-foreground\">\n {{ displayCount() }}\n </span>\n }\n @if (badge()) {\n <span\n class=\"inline-flex shrink-0 items-center rounded-md border border-border bg-background px-1.5 py-0.5 text-xs font-medium text-muted-foreground\">\n {{ badge() }}\n </span>\n }\n </div>\n }\n\n @if (subheading()) {\n <p class=\"mt-1 truncate text-xs leading-5 text-muted-foreground\">{{ subheading() }}</p>\n }\n\n <ng-content />\n </div>\n `,\n})\nexport class KanbanColumnHeaderComponent {\n readonly heading = input<string>('');\n readonly subheading = input<string>('');\n readonly count = input<string | number | null>(null);\n readonly badge = input<string>('');\n readonly class = input<string>('');\n\n protected readonly displayCount = computed(() => {\n const count = this.count();\n return count === null || count === undefined || count === '' ? null : count;\n });\n\n protected readonly classes = computed(() =>\n cn('flex items-start gap-3 border-b border-border/80 px-3 py-3', this.class()),\n );\n}\n\n@Component({\n selector: 'KanbanColumnActions, [KanbanColumnActions]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kanban-column-actions\"',\n },\n template: `<ng-content />`,\n})\nexport class KanbanColumnActionsComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('inline-flex items-center gap-1', this.class()));\n}\n\n@Component({\n selector: 'KanbanColumnCards',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kanban-column-cards\"',\n },\n template: `<ng-content />`,\n})\nexport class KanbanColumnCardsComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn('flex min-h-0 flex-1 flex-col gap-[var(--kanban-card-gap)] overflow-y-auto p-2', this.class()),\n );\n}\n\n@Component({\n selector: 'KanbanColumnFooter',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kanban-column-footer\"',\n },\n template: `<ng-content />`,\n})\nexport class KanbanColumnFooterComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn('flex flex-col gap-2 border-t border-border/80 px-2 py-2', this.class()),\n );\n}\n\n@Component({\n selector: 'KanbanCard, button[KanbanCard], a[KanbanCard]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kanban-card\"',\n '[attr.data-selected]': 'selected() ? \"\" : null',\n '[attr.aria-current]': 'selected() ? \"true\" : null',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n template: `\n <div class=\"order-1\">\n <ng-content select=\"KanbanCardHeader,[KanbanCardHeader]\" />\n </div>\n\n <div class=\"order-3\">\n <ng-content select=\"KanbanCardFooter,[KanbanCardFooter]\" />\n </div>\n\n <div class=\"order-2 min-w-0\">\n @if (heading()) {\n <p class=\"text-sm font-medium leading-5 text-card-foreground\">{{ heading() }}</p>\n }\n\n <ng-content />\n </div>\n `,\n})\nexport class KanbanCardComponent {\n readonly heading = input<string>('');\n readonly selected = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'flex w-full flex-col gap-3 rounded-lg border border-border bg-card p-3 text-left text-card-foreground shadow-sm transition-colors',\n 'hover:border-ring/60 hover:bg-accent/30 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n 'disabled:pointer-events-none disabled:opacity-50',\n this.selected() ? 'border-ring bg-accent/40 ring-1 ring-ring' : '',\n this.disabled() ? 'pointer-events-none opacity-50' : '',\n this.class(),\n ),\n );\n}\n\n@Component({\n selector: 'KanbanCardHeader, [KanbanCardHeader]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kanban-card-header\"',\n },\n template: `<ng-content />`,\n})\nexport class KanbanCardHeaderComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('flex min-w-0 flex-wrap items-center gap-1.5', this.class()));\n}\n\n@Component({\n selector: 'KanbanCardFooter, [KanbanCardFooter]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kanban-card-footer\"',\n },\n template: `<ng-content />`,\n})\nexport class KanbanCardFooterComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn('flex min-w-0 items-center justify-between gap-2 text-xs text-muted-foreground', this.class()),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAKA,MAAM,wBAAwB,GAAsC;AAClE,IAAA,EAAE,EAAE,+BAA+B;AACnC,IAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,EAAE,EAAE,+BAA+B;CACpC;MAaY,eAAe,CAAA;IACjB,WAAW,GAAG,KAAK,CAAoB,SAAS;oFAAC;IACjD,KAAK,GAAG,KAAK,CAAC,KAAK,6EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACrD,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA,iGAAiG,EACjG,wDAAwD,EACxD,wBAAwB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAC5C,IAAI,CAAC,KAAK,EAAE,GAAG,0DAA0D,GAAG,EAAE,EAC9E,IAAI,CAAC,KAAK,EAAE,CACb;gFACF;uGAbU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,+mBAFhB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,QAAQ;oBAClB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,0BAA0B,EAAE,eAAe;AAC3C,wBAAA,mBAAmB,EAAE,qBAAqB;AAC3C,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MA0BY,qBAAqB,CAAA;IACvB,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA,gKAAgK,EAChK,IAAI,CAAC,KAAK,EAAE,CACb;gFACF;uGARU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,mSAFtB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;oBACxB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,iBAAiB;AACtC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAmDY,2BAA2B,CAAA;IAC7B,OAAO,GAAG,KAAK,CAAS,EAAE;gFAAC;IAC3B,UAAU,GAAG,KAAK,CAAS,EAAE;mFAAC;IAC9B,KAAK,GAAG,KAAK,CAAyB,IAAI;8EAAC;IAC3C,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,GAAG,IAAI,GAAG,KAAK;IAC7E,CAAC;qFAAC;AAEiB,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CAAC,4DAA4D,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAC/E;uGAdU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAvCvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,wBAAwB;AAC7C,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA;AACF,iBAAA;;MA2BY,4BAA4B,CAAA;IAC9B,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,gCAAgC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;uGAHpF,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,yUAF7B,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBATxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4CAA4C;oBACtD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,yBAAyB;AAC9C,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAgBY,0BAA0B,CAAA;IAC5B,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CAAC,+EAA+E,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAClG;uGALU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,8SAF3B,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBATtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;oBAC7B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,uBAAuB;AAC5C,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAkBY,2BAA2B,CAAA;IAC7B,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CAAC,yDAAyD,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAC5E;uGALU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,gTAF5B,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,wBAAwB;AAC7C,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAsCY,mBAAmB,CAAA;IACrB,OAAO,GAAG,KAAK,CAAS,EAAE;gFAAC;IAC3B,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IAEf,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA,mIAAmI,EACnI,kLAAkL,EAClL,kDAAkD,EAClD,IAAI,CAAC,QAAQ,EAAE,GAAG,2CAA2C,GAAG,EAAE,EAClE,IAAI,CAAC,QAAQ,EAAE,GAAG,gCAAgC,GAAG,EAAE,EACvD,IAAI,CAAC,KAAK,EAAE,CACb;gFACF;uGAfU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,8BAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBpB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA7B/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+CAA+C;oBACzD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,eAAe;AACnC,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,qBAAqB,EAAE,4BAA4B;AACnD,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,iBAAiB,EAAE,wBAAwB;AAC5C,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;MA4BY,yBAAyB,CAAA;IAC3B,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,6CAA6C,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;uGAHjG,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,gUAF1B,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sCAAsC;oBAChD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,sBAAsB;AAC3C,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAgBY,yBAAyB,CAAA;IAC3B,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CAAC,+EAA+E,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAClG;uGALU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,gUAF1B,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sCAAsC;oBAChD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,sBAAsB;AAC3C,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;ACzOD;;AAEG;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-kbd.mjs","sources":["../../../library/component/kbd/kbd.component.ts","../../../library/component/kbd/ojiepermana-angular-component-kbd.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n@Component({\n selector: 'Kbd, [Kbd]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kbd\"',\n },\n template: `<ng-content />`,\n})\nexport class KbdComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n [\n 'inline-flex min-h-6 min-w-6 select-none items-center justify-center gap-1 whitespace-nowrap rounded-md',\n 'border border-border bg-background px-1.5 font-mono text-2xs-plus font-medium leading-none text-foreground shadow-sm',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-3',\n ].join(' '),\n this.class(),\n ),\n );\n}\n\n@Component({\n selector: 'KbdGroup, [KbdGroup]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kbd-group\"',\n },\n template: `<ng-content />`,\n})\nexport class KbdGroupComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('inline-flex flex-wrap items-center gap-1.5', this.class()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAYa,YAAY,CAAA;IACd,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA;QACE,wGAAwG;QACxG,sHAAsH;QACtH,iFAAiF;KAClF,CAAC,IAAI,CAAC,GAAG,CAAC,EACX,IAAI,CAAC,KAAK,EAAE,CACb;gFACF;uGAZU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,uRAFb,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;oBACtB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,OAAO;AAC5B,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAyBY,iBAAiB,CAAA;IACnB,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,4CAA4C,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;uGAHhG,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,uSAFlB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,aAAa;AAClC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;ACnCD;;AAEG;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-label.mjs","sources":["../../../library/component/label/label.component.ts","../../../library/component/label/ojiepermana-angular-component-label.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n@Component({\n selector: 'Label, label[Label]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.for]': 'for() || null',\n },\n template: `<ng-content />`,\n})\nexport class LabelComponent {\n readonly for = input<string | null>(null);\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'text-sm font-medium leading-none text-foreground',\n 'peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n this.class(),\n ),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAYa,cAAc,CAAA;IAChB,GAAG,GAAG,KAAK,CAAgB,IAAI;4EAAC;IAChC,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA,kDAAkD,EAClD,2DAA2D,EAC3D,IAAI,CAAC,KAAK,EAAE,CACb;gFACF;uGAVU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,kZAFf,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;oBAC/B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,YAAY,EAAE,eAAe;AAC9B,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;ACXD;;AAEG;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-menubar.mjs","sources":["../../../library/component/menubar/menubar.component.ts","../../../library/component/menubar/ojiepermana-angular-component-menubar.ts"],"sourcesContent":["import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n QueryList,\n TemplateRef,\n ViewContainerRef,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { cn, connectedPositionFor } from '@ojiepermana/angular-component/utils';\nimport { merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport type MenubarAlign = 'start' | 'center' | 'end';\n\nfunction position(align: MenubarAlign, side: 'bottom' | 'top'): ConnectedPosition {\n return connectedPositionFor(side, align, 4);\n}\n\n@Component({\n selector: 'Menubar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.role]': '\"menubar\"',\n '(keydown)': 'onKeydown($any($event))',\n },\n template: `<ng-content />`,\n})\nexport class MenubarComponent {\n readonly class = input<string>('');\n readonly loop = input<boolean>(true);\n\n @ContentChildren(forwardRef(() => MenubarTriggerDirective), { descendants: true })\n private readonly triggers!: QueryList<MenubarTriggerDirective>;\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly activeTrigger = signal<MenubarTriggerDirective | null>(null);\n private readonly openTrigger = signal<MenubarTriggerDirective | null>(null);\n\n protected readonly classes = computed(() =>\n cn(\n 'inline-flex min-h-10 items-center gap-1 rounded-md border border-border bg-background p-1 text-foreground shadow-sm',\n this.class(),\n ),\n );\n\n setActiveTrigger(trigger: MenubarTriggerDirective): void {\n if (trigger.disabled()) {\n return;\n }\n\n this.activeTrigger.set(trigger);\n }\n\n tabIndexFor(trigger: MenubarTriggerDirective): number {\n if (trigger.disabled()) {\n return -1;\n }\n\n const enabledTriggers = this.enabledTriggers();\n\n if (enabledTriggers.length === 0) {\n return -1;\n }\n\n const activeTrigger = this.activeTrigger();\n const resolvedActiveTrigger =\n activeTrigger && enabledTriggers.includes(activeTrigger) ? activeTrigger : enabledTriggers[0];\n\n return resolvedActiveTrigger === trigger ? 0 : -1;\n }\n\n hasOpenTrigger(except?: MenubarTriggerDirective): boolean {\n const currentOpenTrigger = this.openTrigger();\n return !!currentOpenTrigger && currentOpenTrigger !== except;\n }\n\n notifyOpen(trigger: MenubarTriggerDirective): void {\n const currentOpenTrigger = this.openTrigger();\n\n if (currentOpenTrigger && currentOpenTrigger !== trigger) {\n currentOpenTrigger.close({ restoreFocus: false });\n }\n\n this.openTrigger.set(trigger);\n this.setActiveTrigger(trigger);\n }\n\n notifyClosed(trigger: MenubarTriggerDirective): void {\n if (this.openTrigger() === trigger) {\n this.openTrigger.set(null);\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const currentTrigger = this.resolveTrigger(event.target);\n\n if (!currentTrigger) {\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentTrigger.open({ focusFirstItem: true });\n return;\n }\n\n if (event.key === 'Home' || event.key === 'End') {\n event.preventDefault();\n this.moveFocus(currentTrigger, event.key === 'Home' ? 'start' : 'end');\n return;\n }\n\n if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {\n event.preventDefault();\n this.moveFocus(currentTrigger, event.key === 'ArrowRight' ? 'next' : 'previous');\n }\n }\n\n private enabledTriggers(): MenubarTriggerDirective[] {\n return this.triggers ? this.triggers.toArray().filter((trigger) => !trigger.disabled()) : [];\n }\n\n private resolveTrigger(target: EventTarget | null): MenubarTriggerDirective | null {\n return this.triggers?.toArray().find((trigger) => trigger.containsTarget(target)) ?? null;\n }\n\n private moveFocus(currentTrigger: MenubarTriggerDirective, direction: 'previous' | 'next' | 'start' | 'end'): void {\n const enabledTriggers = this.enabledTriggers();\n\n if (enabledTriggers.length === 0) {\n return;\n }\n\n const currentIndex = enabledTriggers.indexOf(currentTrigger);\n\n if (currentIndex === -1) {\n enabledTriggers[0]?.focus();\n return;\n }\n\n const nextTrigger =\n direction === 'start'\n ? enabledTriggers[0]\n : direction === 'end'\n ? enabledTriggers[enabledTriggers.length - 1]\n : enabledTriggers[\n this.nextIndex(\n currentIndex,\n direction === 'next' ? this.horizontalStep() : -this.horizontalStep(),\n enabledTriggers.length,\n )\n ];\n\n if (!nextTrigger || nextTrigger === currentTrigger) {\n return;\n }\n\n nextTrigger.focus();\n this.setActiveTrigger(nextTrigger);\n\n if (this.hasOpenTrigger(nextTrigger)) {\n nextTrigger.open();\n }\n }\n\n private nextIndex(currentIndex: number, delta: number, length: number): number {\n const rawIndex = currentIndex + delta;\n\n if (this.loop()) {\n return (rawIndex + length) % length;\n }\n\n return Math.max(0, Math.min(length - 1, rawIndex));\n }\n\n private horizontalStep(): number {\n return getComputedStyle(this.host.nativeElement).direction === 'rtl' ? -1 : 1;\n }\n}\n\n@Component({\n selector: 'MenubarMenu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'contents',\n },\n template: `<ng-content />`,\n})\nexport class MenubarMenuComponent {}\n\n@Directive({\n selector: 'ng-template[MenubarContent]',\n exportAs: 'MenubarContent',\n})\nexport class MenubarContentDirective {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n@Directive({\n selector: '[MenubarTrigger]',\n exportAs: 'MenubarTrigger',\n host: {\n class:\n 'inline-flex min-w-0 select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n '[attr.role]': '\"menuitem\"',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '(click)': 'toggle()',\n '(keydown.enter)': 'openFromKeyboard($any($event), false)',\n '(keydown.space)': 'openFromKeyboard($any($event), false)',\n '(keydown.arrowDown)': 'openFromKeyboard($any($event), true)',\n '(focus)': 'syncActiveState()',\n '(mouseenter)': 'openFromHover()',\n },\n})\nexport class MenubarTriggerDirective {\n readonly MenubarTrigger = input.required<MenubarContentDirective>();\n readonly align = input<MenubarAlign>('start');\n readonly disabled = input<boolean>(false);\n\n readonly openedChange = output<boolean>();\n readonly isOpen = signal(false);\n\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly menubar = inject(MenubarComponent, { optional: true });\n private readonly destroyRef = inject(DestroyRef);\n\n private overlayRef: OverlayRef | null = null;\n\n constructor() {\n this.destroyRef.onDestroy(() => this.close({ restoreFocus: false, emitOpenedChange: false }));\n }\n\n toggle(): void {\n if (this.disabled()) {\n return;\n }\n\n this.isOpen() ? this.close() : this.open();\n }\n\n open(options: { focusFirstItem?: boolean } = {}): void {\n if (this.isOpen() || this.disabled()) {\n return;\n }\n\n this.menubar?.notifyOpen(this);\n\n const overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.el)\n .withFlexibleDimensions(false)\n .withPush(false)\n .withPositions([position(this.align(), 'bottom'), position(this.align(), 'top')]),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n panelClass: 'menubar-panel',\n });\n\n const portal = new TemplatePortal(this.MenubarTrigger().template, this.vcr);\n\n overlayRef.attach(portal);\n this.overlayRef = overlayRef;\n\n merge(\n overlayRef.outsidePointerEvents().pipe(filter((event) => !this.el.nativeElement.contains(event.target as Node))),\n overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')),\n overlayRef.detachments(),\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.close());\n\n this.isOpen.set(true);\n this.openedChange.emit(true);\n\n if (options.focusFirstItem) {\n queueMicrotask(() => this.focusFirstItem());\n }\n }\n\n close(options: { restoreFocus?: boolean; emitOpenedChange?: boolean } = {}): void {\n const { restoreFocus = true, emitOpenedChange = true } = options;\n\n if (!this.isOpen()) {\n return;\n }\n\n const overlayRef = this.overlayRef;\n this.overlayRef = null;\n this.isOpen.set(false);\n overlayRef?.dispose();\n\n if (emitOpenedChange) {\n this.openedChange.emit(false);\n }\n\n this.menubar?.notifyClosed(this);\n\n if (restoreFocus) {\n this.el.nativeElement.focus();\n }\n }\n\n focus(): void {\n this.el.nativeElement.focus();\n }\n\n containsTarget(target: EventTarget | null): boolean {\n return target instanceof Node && this.el.nativeElement.contains(target);\n }\n\n protected tabIndex(): number {\n return this.menubar?.tabIndexFor(this) ?? (this.disabled() ? -1 : 0);\n }\n\n protected openFromKeyboard(event: KeyboardEvent, focusFirstItem: boolean): void {\n if (this.disabled()) {\n return;\n }\n\n event.preventDefault();\n this.open({ focusFirstItem });\n }\n\n protected syncActiveState(): void {\n this.menubar?.setActiveTrigger(this);\n }\n\n protected openFromHover(): void {\n if (this.disabled() || !this.menubar?.hasOpenTrigger(this)) {\n return;\n }\n\n this.open();\n }\n\n private focusFirstItem(): void {\n const overlayElement = this.overlayRef?.overlayElement;\n\n if (!overlayElement) {\n return;\n }\n\n const firstItem = overlayElement.querySelector<HTMLElement>(\n '[role=\"menuitem\"]:not([aria-disabled=\"true\"]), [role=\"menuitemcheckbox\"]:not([aria-disabled=\"true\"]), [role=\"menuitemradio\"]:not([aria-disabled=\"true\"])',\n );\n\n if (firstItem) {\n firstItem.focus();\n return;\n }\n\n // No enabled item (all disabled or content not rendered yet): move focus\n // into the menu surface so keyboard focus still enters the popup.\n const surface = overlayElement.querySelector<HTMLElement>('[role=\"menu\"]');\n if (surface) {\n surface.tabIndex = -1;\n surface.focus();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AA0BA,SAAS,QAAQ,CAAC,KAAmB,EAAE,IAAsB,EAAA;IAC3D,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7C;MAYa,gBAAgB,CAAA;IAClB,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,IAAI,GAAG,KAAK,CAAU,IAAI;6EAAC;AAGnB,IAAA,QAAQ;AAER,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;IAClD,aAAa,GAAG,MAAM,CAAiC,IAAI;sFAAC;IAC5D,WAAW,GAAG,MAAM,CAAiC,IAAI;oFAAC;AAExD,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA,qHAAqH,EACrH,IAAI,CAAC,KAAK,EAAE,CACb;gFACF;AAED,IAAA,gBAAgB,CAAC,OAAgC,EAAA;AAC/C,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;IACjC;AAEA,IAAA,WAAW,CAAC,OAAgC,EAAA;AAC1C,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;YACtB,OAAO,CAAC,CAAC;QACX;AAEA,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAE9C,QAAA,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO,CAAC,CAAC;QACX;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;QAC1C,MAAM,qBAAqB,GACzB,aAAa,IAAI,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC;AAE/F,QAAA,OAAO,qBAAqB,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IACnD;AAEA,IAAA,cAAc,CAAC,MAAgC,EAAA;AAC7C,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE;AAC7C,QAAA,OAAO,CAAC,CAAC,kBAAkB,IAAI,kBAAkB,KAAK,MAAM;IAC9D;AAEA,IAAA,UAAU,CAAC,OAAgC,EAAA;AACzC,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE;AAE7C,QAAA,IAAI,kBAAkB,IAAI,kBAAkB,KAAK,OAAO,EAAE;YACxD,kBAAkB,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QACnD;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;IAChC;AAEA,IAAA,YAAY,CAAC,OAAgC,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;AAClC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B;IACF;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC;QAExD,IAAI,CAAC,cAAc,EAAE;YACnB;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC7B,KAAK,CAAC,cAAc,EAAE;YACtB,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;YAC7C;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YAC/C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,KAAK,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;YACtE;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC3D,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,KAAK,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;QAClF;IACF;IAEQ,eAAe,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE;IAC9F;AAEQ,IAAA,cAAc,CAAC,MAA0B,EAAA;QAC/C,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI;IAC3F;IAEQ,SAAS,CAAC,cAAuC,EAAE,SAAgD,EAAA;AACzG,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAE9C,QAAA,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC;QACF;QAEA,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC;AAE5D,QAAA,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;AACvB,YAAA,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;YAC3B;QACF;AAEA,QAAA,MAAM,WAAW,GACf,SAAS,KAAK;AACZ,cAAE,eAAe,CAAC,CAAC;cACjB,SAAS,KAAK;kBACZ,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;AAC5C,kBAAE,eAAe,CACb,IAAI,CAAC,SAAS,CACZ,YAAY,EACZ,SAAS,KAAK,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EACrE,eAAe,CAAC,MAAM,CACvB,CACF;AAET,QAAA,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,cAAc,EAAE;YAClD;QACF;QAEA,WAAW,CAAC,KAAK,EAAE;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;AAElC,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;YACpC,WAAW,CAAC,IAAI,EAAE;QACpB;IACF;AAEQ,IAAA,SAAS,CAAC,YAAoB,EAAE,KAAa,EAAE,MAAc,EAAA;AACnE,QAAA,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK;AAErC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,YAAA,OAAO,CAAC,QAAQ,GAAG,MAAM,IAAI,MAAM;QACrC;AAEA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpD;IAEQ,cAAc,GAAA;QACpB,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;IAC/E;uGAtJW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAIO,uBAAuB,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAN/C,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;oBACnB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,aAAa,EAAE,WAAW;AAC1B,wBAAA,WAAW,EAAE,yBAAyB;AACvC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;sBAKE,eAAe;uBAAC,UAAU,CAAC,MAAM,uBAAuB,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;MA6JtE,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,6GAFrB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;oBACvB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AAClB,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAOY,uBAAuB,CAAA;AACzB,IAAA,QAAQ,GAAG,MAAM,CAAuB,WAAW,CAAC;uGADlD,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,QAAQ,EAAE,gBAAgB;AAC3B,iBAAA;;MAyBY,uBAAuB,CAAA;IACzB,cAAc,GAAG,KAAK,CAAC,QAAQ;uFAA2B;IAC1D,KAAK,GAAG,KAAK,CAAe,OAAO;8EAAC;IACpC,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;IAEhC,YAAY,GAAG,MAAM,EAAW;IAChC,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;AAEd,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;IAChD,OAAO,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACtD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAExC,UAAU,GAAsB,IAAI;AAE5C,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/F;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;IAC5C;IAEA,IAAI,CAAC,UAAwC,EAAE,EAAA;QAC7C,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpC;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC;AAE9B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACrC,gBAAgB,EAAE,IAAI,CAAC;AACpB,iBAAA,QAAQ;AACR,iBAAA,mBAAmB,CAAC,IAAI,CAAC,EAAE;iBAC3B,sBAAsB,CAAC,KAAK;iBAC5B,QAAQ,CAAC,KAAK;iBACd,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;YACnF,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,UAAU,EAAE,eAAe;AAC5B,SAAA,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC;AAE3E,QAAA,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;QAE5B,KAAK,CACH,UAAU,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,CAAC,CAAC,EAChH,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,EAC1E,UAAU,CAAC,WAAW,EAAE;AAEvB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AAEhC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAE5B,QAAA,IAAI,OAAO,CAAC,cAAc,EAAE;YAC1B,cAAc,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C;IACF;IAEA,KAAK,CAAC,UAAkE,EAAE,EAAA;QACxE,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,gBAAgB,GAAG,IAAI,EAAE,GAAG,OAAO;AAEhE,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,UAAU,EAAE,OAAO,EAAE;QAErB,IAAI,gBAAgB,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B;AAEA,QAAA,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC;QAEhC,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;QAC/B;IACF;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;IAC/B;AAEA,IAAA,cAAc,CAAC,MAA0B,EAAA;AACvC,QAAA,OAAO,MAAM,YAAY,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;IACzE;IAEU,QAAQ,GAAA;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACtE;IAEU,gBAAgB,CAAC,KAAoB,EAAE,cAAuB,EAAA;AACtE,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;QAEA,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B;IAEU,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC;IACtC;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE;YAC1D;QACF;QAEA,IAAI,CAAC,IAAI,EAAE;IACb;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc;QAEtD,IAAI,CAAC,cAAc,EAAE;YACnB;QACF;QAEA,MAAM,SAAS,GAAG,cAAc,CAAC,aAAa,CAC5C,0JAA0J,CAC3J;QAED,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,KAAK,EAAE;YACjB;QACF;;;QAIA,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAc,eAAe,CAAC;QAC1E,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO,CAAC,KAAK,EAAE;QACjB;IACF;uGAnJW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,uCAAA,EAAA,eAAA,EAAA,uCAAA,EAAA,mBAAA,EAAA,sCAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,kCAAA,EAAA,eAAA,EAAA,YAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,qYAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBApBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EACH,qYAAqY;AACvY,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,sBAAsB,EAAE,QAAQ;AAChC,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,mBAAmB,EAAE,8BAA8B;AACnD,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,iBAAiB,EAAE,wBAAwB;AAC3C,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,iBAAiB,EAAE,uCAAuC;AAC1D,wBAAA,iBAAiB,EAAE,uCAAuC;AAC1D,wBAAA,qBAAqB,EAAE,sCAAsC;AAC7D,wBAAA,SAAS,EAAE,mBAAmB;AAC9B,wBAAA,cAAc,EAAE,iBAAiB;AAClC,qBAAA;AACF,iBAAA;;;ACtOD;;AAEG;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-native-select.mjs","sources":["../../../library/component/native-select/native-select.component.ts","../../../library/component/native-select/native-select-option.directive.ts","../../../library/component/native-select/native-select-opt-group.directive.ts","../../../library/component/native-select/ojiepermana-angular-component-native-select.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, computed, inject, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\nconst BASE = [\n 'block h-9 w-full appearance-none rounded-md border border-input bg-transparent px-3 py-2',\n 'pr-10 text-sm shadow-sm transition-colors',\n 'text-foreground',\n 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'aria-[invalid=true]:border-destructive aria-[invalid=true]:focus-visible:ring-destructive',\n].join(' ');\n\n@Component({\n selector: 'select[NativeSelect]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: '<ng-content />',\n styleUrl: './native-select.component.css',\n})\nexport class NativeSelectComponent {\n private readonly el = inject<ElementRef<HTMLSelectElement>>(ElementRef);\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn(BASE, this.class()));\n\n focus(): void {\n this.el.nativeElement.focus();\n }\n}\n","import { Directive, computed, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n@Directive({\n selector: 'option[NativeSelectOption]',\n host: { '[class]': 'classes()' },\n})\nexport class NativeSelectOptionDirective {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn(this.class()));\n}\n","import { Directive, computed, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n@Directive({\n selector: 'optgroup[NativeSelectOptGroup]',\n host: { '[class]': 'classes()' },\n})\nexport class NativeSelectOptGroupDirective {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn(this.class()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-navigation-menu.mjs","sources":["../../../library/component/navigation-menu/navigation-menu.component.ts","../../../library/component/navigation-menu/ojiepermana-angular-component-navigation-menu.ts"],"sourcesContent":["import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n QueryList,\n TemplateRef,\n ViewContainerRef,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { cn, connectedPositionFor } from '@ojiepermana/angular-component/utils';\nimport { merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport type NavigationMenuAlign = 'start' | 'center' | 'end';\nexport type NavigationMenuLinkVariant = 'trigger' | 'content';\n\nfunction position(align: NavigationMenuAlign, side: 'bottom' | 'top'): ConnectedPosition {\n return connectedPositionFor(side, align, 8);\n}\n\n@Directive()\nexport abstract class NavigationMenuRootItem {\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly disabled = input<boolean>(false);\n\n isWithin(container: HTMLElement): boolean {\n return container.contains(this.elementRef.nativeElement);\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n containsTarget(target: EventTarget | null): boolean {\n return target instanceof Node && this.elementRef.nativeElement.contains(target);\n }\n}\n\n@Component({\n selector: 'NavigationMenu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.role]': '\"navigation\"',\n '[attr.aria-label]': 'ariaLabel() || null',\n '(keydown)': 'onKeydown($any($event))',\n },\n template: `<ng-content />`,\n})\nexport class NavigationMenuComponent {\n readonly class = input<string>('');\n readonly ariaLabel = input<string>('Main navigation');\n readonly loop = input<boolean>(true);\n\n @ContentChildren(forwardRef(() => NavigationMenuRootItem), { descendants: true })\n private readonly items!: QueryList<NavigationMenuRootItem>;\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly activeItem = signal<NavigationMenuRootItem | null>(null);\n private readonly openTrigger = signal<NavigationMenuTriggerDirective | null>(null);\n\n protected readonly classes = computed(() =>\n cn('relative z-10 flex max-w-max flex-1 items-center justify-center', this.class()),\n );\n\n setActiveItem(item: NavigationMenuRootItem): void {\n if (item.disabled()) {\n return;\n }\n\n this.activeItem.set(item);\n }\n\n tabIndexFor(item: NavigationMenuRootItem): number {\n if (item.disabled()) {\n return -1;\n }\n\n const enabledItems = this.enabledItems();\n\n if (enabledItems.length === 0) {\n return -1;\n }\n\n const activeItem = this.activeItem();\n const resolvedActiveItem = activeItem && enabledItems.includes(activeItem) ? activeItem : enabledItems[0];\n\n return resolvedActiveItem === item ? 0 : -1;\n }\n\n hasOpenTrigger(except?: NavigationMenuTriggerDirective): boolean {\n const currentOpenTrigger = this.openTrigger();\n return !!currentOpenTrigger && currentOpenTrigger !== except;\n }\n\n notifyOpen(trigger: NavigationMenuTriggerDirective): void {\n const currentOpenTrigger = this.openTrigger();\n\n if (currentOpenTrigger && currentOpenTrigger !== trigger) {\n currentOpenTrigger.close({ restoreFocus: false });\n }\n\n this.openTrigger.set(trigger);\n this.setActiveItem(trigger);\n }\n\n notifyClosed(trigger: NavigationMenuTriggerDirective): void {\n if (this.openTrigger() === trigger) {\n this.openTrigger.set(null);\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const currentItem = this.resolveItem(event.target);\n\n if (!currentItem) {\n return;\n }\n\n if (event.key === 'ArrowDown' && currentItem instanceof NavigationMenuTriggerDirective) {\n event.preventDefault();\n currentItem.open({ focusFirstItem: true });\n return;\n }\n\n if (event.key === 'Home' || event.key === 'End') {\n event.preventDefault();\n this.moveFocus(currentItem, event.key === 'Home' ? 'start' : 'end');\n return;\n }\n\n if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {\n event.preventDefault();\n this.moveFocus(currentItem, event.key === 'ArrowRight' ? 'next' : 'previous');\n }\n }\n\n private enabledItems(): NavigationMenuRootItem[] {\n return this.items\n ? this.items.toArray().filter((item) => !item.disabled() && item.isWithin(this.host.nativeElement))\n : [];\n }\n\n private resolveItem(target: EventTarget | null): NavigationMenuRootItem | null {\n return this.enabledItems().find((item) => item.containsTarget(target)) ?? null;\n }\n\n private moveFocus(currentItem: NavigationMenuRootItem, direction: 'previous' | 'next' | 'start' | 'end'): void {\n const enabledItems = this.enabledItems();\n\n if (enabledItems.length === 0) {\n return;\n }\n\n const currentIndex = enabledItems.indexOf(currentItem);\n\n if (currentIndex === -1) {\n enabledItems[0]?.focus();\n return;\n }\n\n const nextItem =\n direction === 'start'\n ? enabledItems[0]\n : direction === 'end'\n ? enabledItems[enabledItems.length - 1]\n : enabledItems[\n this.nextIndex(\n currentIndex,\n direction === 'next' ? this.horizontalStep() : -this.horizontalStep(),\n enabledItems.length,\n )\n ];\n\n if (!nextItem || nextItem === currentItem) {\n return;\n }\n\n const currentOpenTrigger = this.openTrigger();\n\n if (!currentOpenTrigger) {\n nextItem.focus();\n this.setActiveItem(nextItem);\n return;\n }\n\n if (nextItem instanceof NavigationMenuTriggerDirective) {\n nextItem.open({ focusFirstItem: true });\n return;\n }\n\n currentOpenTrigger.close({ restoreFocus: false });\n this.setActiveItem(nextItem);\n queueMicrotask(() => nextItem.focus());\n }\n\n private nextIndex(currentIndex: number, delta: number, length: number): number {\n const rawIndex = currentIndex + delta;\n\n if (this.loop()) {\n return (rawIndex + length) % length;\n }\n\n return Math.max(0, Math.min(length - 1, rawIndex));\n }\n\n private horizontalStep(): number {\n return getComputedStyle(this.host.nativeElement).direction === 'rtl' ? -1 : 1;\n }\n}\n\n@Component({\n selector: 'NavigationMenuList',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.role]': '\"menubar\"',\n },\n template: `<ng-content />`,\n})\nexport class NavigationMenuListComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn('group flex flex-1 list-none items-center justify-center gap-1', this.class()),\n );\n}\n\n@Component({\n selector: 'NavigationMenuItem',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<ng-content />`,\n})\nexport class NavigationMenuItemComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('relative', this.class()));\n}\n\n@Directive({\n selector: 'ng-template[NavigationMenuContent]',\n exportAs: 'NavigationMenuContent',\n})\nexport class NavigationMenuContentDirective {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n@Directive({\n selector: '[NavigationMenuTrigger]',\n exportAs: 'NavigationMenuTrigger',\n providers: [{ provide: NavigationMenuRootItem, useExisting: forwardRef(() => NavigationMenuTriggerDirective) }],\n host: {\n '[class]': 'classes()',\n '[attr.role]': '\"menuitem\"',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '(click)': 'toggle()',\n '(keydown.enter)': 'openFromKeyboard($any($event), false)',\n '(keydown.space)': 'openFromKeyboard($any($event), false)',\n '(keydown.arrowDown)': 'openFromKeyboard($any($event), true)',\n '(focus)': 'syncActiveState()',\n '(mouseenter)': 'openFromHover()',\n },\n})\nexport class NavigationMenuTriggerDirective extends NavigationMenuRootItem {\n readonly NavigationMenuTrigger = input.required<NavigationMenuContentDirective>();\n readonly align = input<NavigationMenuAlign>('start');\n readonly class = input<string>('');\n\n readonly openedChange = output<boolean>();\n readonly isOpen = signal(false);\n\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly navigationMenu = inject(NavigationMenuComponent, { optional: true });\n private readonly destroyRef = inject(DestroyRef);\n\n private overlayRef: OverlayRef | null = null;\n\n constructor() {\n super();\n this.destroyRef.onDestroy(() => this.close({ restoreFocus: false, emitOpenedChange: false }));\n }\n\n protected readonly classes = computed(() =>\n cn(\n 'group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors',\n 'after:mb-0.5 after:ml-2 after:inline-block after:h-2 after:w-2 after:shrink-0 after:rotate-45 after:border-b after:border-r after:border-current after:transition-transform after:content-[\"\"]',\n 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground data-[state=open]:after:-rotate-135',\n this.class(),\n ),\n );\n\n toggle(): void {\n if (this.disabled()) {\n return;\n }\n\n this.isOpen() ? this.close() : this.open();\n }\n\n open(options: { focusFirstItem?: boolean } = {}): void {\n if (this.isOpen() || this.disabled()) {\n return;\n }\n\n this.navigationMenu?.notifyOpen(this);\n\n const overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withFlexibleDimensions(false)\n .withPush(false)\n .withPositions([position(this.align(), 'bottom'), position(this.align(), 'top')]),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n panelClass: 'navigation-menu-panel',\n });\n\n const portal = new TemplatePortal(this.NavigationMenuTrigger().template, this.vcr);\n\n overlayRef.attach(portal);\n this.overlayRef = overlayRef;\n\n merge(\n overlayRef\n .outsidePointerEvents()\n .pipe(filter((event) => !this.elementRef.nativeElement.contains(event.target as Node))),\n overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')),\n overlayRef.detachments(),\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.close());\n\n this.isOpen.set(true);\n this.openedChange.emit(true);\n\n if (options.focusFirstItem) {\n queueMicrotask(() => this.focusFirstItem());\n }\n }\n\n close(options: { restoreFocus?: boolean; emitOpenedChange?: boolean } = {}): void {\n const { restoreFocus = true, emitOpenedChange = true } = options;\n\n if (!this.isOpen()) {\n return;\n }\n\n const overlayRef = this.overlayRef;\n this.overlayRef = null;\n this.isOpen.set(false);\n\n if (emitOpenedChange) {\n this.openedChange.emit(false);\n }\n\n this.navigationMenu?.notifyClosed(this);\n overlayRef?.dispose();\n\n if (restoreFocus) {\n this.elementRef.nativeElement.focus();\n }\n }\n\n protected tabIndex(): number {\n return this.navigationMenu?.tabIndexFor(this) ?? (this.disabled() ? -1 : 0);\n }\n\n protected openFromKeyboard(event: KeyboardEvent, focusFirstItem: boolean): void {\n if (this.disabled()) {\n return;\n }\n\n event.preventDefault();\n this.open({ focusFirstItem });\n }\n\n protected syncActiveState(): void {\n this.navigationMenu?.setActiveItem(this);\n }\n\n protected openFromHover(): void {\n if (this.disabled() || !this.navigationMenu?.hasOpenTrigger(this)) {\n return;\n }\n\n this.open();\n }\n\n private focusFirstItem(): void {\n const overlayElement = this.overlayRef?.overlayElement;\n\n if (!overlayElement) {\n return;\n }\n\n const firstItem = overlayElement.querySelector<HTMLElement>(\n 'a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n );\n\n firstItem?.focus();\n }\n}\n\n@Directive({\n selector: 'a[NavigationMenuLink], button[NavigationMenuLink]',\n exportAs: 'NavigationMenuLink',\n providers: [{ provide: NavigationMenuRootItem, useExisting: forwardRef(() => NavigationMenuLinkDirective) }],\n host: {\n '[class]': 'classes()',\n '[attr.role]': '\"menuitem\"',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.data-variant]': 'variant()',\n '(focus)': 'syncActiveState()',\n '(click)': 'preventDisabled($any($event))',\n },\n})\nexport class NavigationMenuLinkDirective extends NavigationMenuRootItem {\n readonly class = input<string>('');\n readonly variant = input<NavigationMenuLinkVariant>('content');\n\n private readonly navigationMenu = inject(NavigationMenuComponent, { optional: true });\n\n protected readonly classes = computed(() =>\n this.variant() === 'trigger'\n ? cn(\n 'inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors',\n 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n this.class(),\n )\n : cn(\n 'block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors',\n 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n this.class(),\n ),\n );\n\n protected tabIndex(): number {\n if (this.variant() !== 'trigger') {\n return this.disabled() ? -1 : 0;\n }\n\n return this.navigationMenu?.tabIndexFor(this) ?? (this.disabled() ? -1 : 0);\n }\n\n override focus(): void {\n if (this.variant() === 'trigger' && this.elementRef.nativeElement.tabIndex < 0) {\n this.elementRef.nativeElement.tabIndex = 0;\n }\n\n super.focus();\n }\n\n protected syncActiveState(): void {\n if (this.variant() === 'trigger') {\n this.navigationMenu?.setActiveItem(this);\n }\n }\n\n protected preventDisabled(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-pagination.mjs","sources":["../../../library/component/pagination/pagination.component.ts","../../../library/component/pagination/ojiepermana-angular-component-pagination.ts"],"sourcesContent":["import { buttonVariants } from '@ojiepermana/angular-component/button';\nimport { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n/**\n * Simple pagination. Emits the desired page via `(pageChange)` and reflects\n * the current page through the `page` model input while allowing lightweight\n * label and visibility tweaks for localized and icon-only demos.\n */\n@Component({\n selector: 'Pagination, nav[Pagination]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'navigation',\n 'aria-label': 'pagination',\n '[class]': 'classes()',\n },\n template: `\n <ul class=\"flex flex-row items-center gap-1\">\n <li>\n <button\n type=\"button\"\n [disabled]=\"page() <= 1 || null\"\n [attr.aria-label]=\"previousAriaLabel()\"\n [class]=\"navClasses(previousText().length > 0)\"\n (click)=\"go(page() - 1)\">\n <svg\n aria-hidden=\"true\"\n class=\"h-4 w-4\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n @if (previousText()) {\n <span>{{ previousText() }}</span>\n }\n </button>\n </li>\n\n @for (p of pages(); track p.key) {\n <li>\n @if (p.kind === 'page') {\n <button\n type=\"button\"\n [attr.aria-current]=\"p.value === page() ? 'page' : null\"\n [class]=\"pageClasses(p.value === page())\"\n (click)=\"go(p.value)\">\n {{ formatPageLabel()(p.value) }}\n </button>\n } @else {\n <span class=\"flex h-9 w-9 items-center justify-center\" aria-hidden=\"true\">…</span>\n }\n </li>\n }\n\n <li>\n <button\n type=\"button\"\n [disabled]=\"page() >= total() || null\"\n [attr.aria-label]=\"nextAriaLabel()\"\n [class]=\"navClasses(nextText().length > 0)\"\n (click)=\"go(page() + 1)\">\n @if (nextText()) {\n <span>{{ nextText() }}</span>\n }\n <svg\n aria-hidden=\"true\"\n class=\"h-4 w-4\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </li>\n </ul>\n `,\n})\nexport class PaginationComponent {\n readonly page = model<number>(1);\n readonly total = input<number>(1);\n /** Number of sibling pages on each side of current. */\n readonly siblingCount = input<number>(1);\n readonly showPageNumbers = input<boolean>(true);\n readonly previousText = input<string>('Previous');\n readonly nextText = input<string>('Next');\n readonly previousAriaLabel = input<string>('Go to previous page');\n readonly nextAriaLabel = input<string>('Go to next page');\n readonly formatPageLabel = input<(page: number) => string>((page) => page.toString());\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('mx-auto flex w-full justify-center', this.class()));\n\n protected readonly pages = computed(() => {\n if (!this.showPageNumbers()) {\n return [];\n }\n\n const total = Math.max(1, this.total());\n const current = Math.min(Math.max(1, this.page()), total);\n const siblings = Math.max(0, this.siblingCount());\n const range: Array<{ key: string; kind: 'page' | 'ellipsis'; value: number }> = [];\n const start = Math.max(2, current - siblings);\n const end = Math.min(total - 1, current + siblings);\n\n range.push({ key: 'p-1', kind: 'page', value: 1 });\n if (start > 2) range.push({ key: 'e-start', kind: 'ellipsis', value: -1 });\n for (let i = start; i <= end; i++) range.push({ key: `p-${i}`, kind: 'page', value: i });\n if (end < total - 1) range.push({ key: 'e-end', kind: 'ellipsis', value: -1 });\n if (total > 1) range.push({ key: `p-${total}`, kind: 'page', value: total });\n return range;\n });\n\n protected navClasses(hasText: boolean): string {\n return hasText\n ? cn(buttonVariants({ variant: 'ghost', size: 'default' }), 'gap-1 pl-2.5 pr-2.5')\n : cn(buttonVariants({ variant: 'ghost', size: 'icon' }), 'h-9 w-9');\n }\n\n protected pageClasses(active: boolean): string {\n return cn(buttonVariants({ variant: active ? 'outline' : 'ghost', size: 'icon' }), 'h-9 w-9');\n }\n\n protected go(target: number): void {\n const total = Math.max(1, this.total());\n const next = Math.min(Math.max(1, target), total);\n if (next === this.page()) return;\n this.page.set(next);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-pillbox.mjs","sources":["../../../library/component/pillbox/pillbox.component.ts","../../../library/component/pillbox/ojiepermana-angular-component-pillbox.ts"],"sourcesContent":["import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n DestroyRef,\n ElementRef,\n Signal,\n TemplateRef,\n WritableSignal,\n booleanAttribute,\n contentChild,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cn, uniqueId } from '@ojiepermana/angular-component/utils';\n\nexport type PillboxSize = 'default' | 'sm';\nexport type PillboxVariant = 'default' | 'combobox';\n\ninterface PillboxSelectedItem {\n readonly value: unknown;\n readonly label: string;\n readonly template: TemplateRef<unknown> | null;\n readonly track: unknown;\n}\n\nabstract class PillboxContext {\n abstract readonly query: WritableSignal<string>;\n abstract readonly openState: Signal<boolean>;\n abstract optionVisible(option: PillboxOptionComponent): boolean;\n abstract optionSelected(option: PillboxOptionComponent): boolean;\n abstract chooseOption(option: PillboxOptionComponent, event: Event): void;\n abstract createVisible(option: PillboxOptionCreateComponent): boolean;\n abstract chooseCreate(option: PillboxOptionCreateComponent, event: Event): void;\n abstract emptyVisible(): boolean;\n abstract emptyMessage(): string;\n}\n\nconst pillboxTriggerSizeClasses: Record<PillboxSize, string> = {\n default: 'min-h-10 px-3 py-2 text-sm',\n sm: 'min-h-8 px-2.5 py-1.5 text-xs',\n};\n\nconst pillboxPillSizeClasses: Record<PillboxSize, string> = {\n default: 'min-h-6 px-2 text-xs',\n sm: 'min-h-5 px-1.5 text-2xs-plus',\n};\n\n@Directive({\n selector: 'ng-template[PillboxSelected]',\n exportAs: 'PillboxSelected',\n})\nexport class PillboxSelectedDirective {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n@Component({\n selector: 'PillboxOption, button[PillboxOption]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n type: 'button',\n '[class]': 'classes()',\n '[attr.data-slot]': '\"pillbox-option\"',\n '[attr.data-selected]': 'selected() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.role]': '\"option\"',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[hidden]': '!visible()',\n '(click)': 'handleClick($event)',\n '(keydown.enter)': 'handleKeydown($any($event))',\n '(keydown.space)': 'handleKeydown($any($event))',\n },\n template: `\n <span class=\"min-w-0 flex-1 truncate text-left\"><ng-content /></span>\n @if (selected()) {\n <svg\n aria-hidden=\"true\"\n class=\"ml-auto size-4 shrink-0\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n }\n `,\n})\nexport class PillboxOptionComponent {\n private readonly context = inject(PillboxContext);\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly selectedTemplate = contentChild(PillboxSelectedDirective);\n\n readonly value = input.required<unknown>();\n readonly label = input<string>('');\n readonly selectedLabel = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly filterable = input(true, { transform: booleanAttribute });\n readonly class = input<string>('');\n\n readonly selectedChange = output<unknown>();\n\n protected readonly selected = computed(() => this.context.optionSelected(this));\n protected readonly visible = computed(() => this.context.optionVisible(this));\n protected readonly classes = computed(() =>\n cn(\n 'relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors',\n 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground',\n 'data-[selected]:bg-accent data-[selected]:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n this.class(),\n ),\n );\n\n textLabel(): string {\n return (this.label() || this.element.nativeElement.textContent || String(this.value())).trim();\n }\n\n pillLabel(): string {\n return (this.selectedLabel() || this.textLabel()).trim();\n }\n\n pillTemplate(): TemplateRef<unknown> | null {\n return this.selectedTemplate()?.template ?? null;\n }\n\n protected handleClick(event: Event): void {\n this.context.chooseOption(this, event);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n event.preventDefault();\n this.context.chooseOption(this, event);\n }\n}\n\n@Component({\n selector: 'PillboxOptionCreate, button[PillboxOptionCreate]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n type: 'button',\n '[class]': 'classes()',\n '[attr.data-slot]': '\"pillbox-option-create\"',\n '[attr.role]': '\"option\"',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[hidden]': '!visible()',\n '(click)': 'handleClick($event)',\n '(keydown.enter)': 'handleKeydown($any($event))',\n '(keydown.space)': 'handleKeydown($any($event))',\n },\n template: `<ng-content />`,\n})\nexport class PillboxOptionCreateComponent {\n private readonly context = inject(PillboxContext);\n\n readonly minLength = input(1, { transform: numberAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly class = input<string>('');\n\n readonly selected = output<string>();\n\n protected readonly visible = computed(() => this.context.createVisible(this));\n protected readonly classes = computed(() =>\n cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm font-medium text-primary outline-none transition-colors',\n 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n this.class(),\n ),\n );\n\n protected handleClick(event: Event): void {\n this.context.chooseCreate(this, event);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n event.preventDefault();\n this.context.chooseCreate(this, event);\n }\n}\n\n@Component({\n selector: 'PillboxOptionEmpty',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"pillbox-option-empty\"',\n role: 'presentation',\n '[hidden]': '!context.emptyVisible()',\n },\n template: `\n @if (context.emptyMessage()) {\n {{ context.emptyMessage() }}\n } @else {\n <ng-content />\n }\n `,\n})\nexport class PillboxOptionEmptyComponent {\n protected readonly context = inject(PillboxContext);\n\n readonly whenLoading = input<string>('');\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('px-2 py-6 text-center text-sm text-muted-foreground', this.class()));\n}\n\n@Component({\n selector: 'Pillbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n providers: [\n { provide: PillboxContext, useExisting: forwardRef(() => PillboxComponent) },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => PillboxComponent), multi: true },\n ],\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"pillbox\"',\n '[attr.data-open]': 'openState() ? \"\" : null',\n '[attr.data-size]': 'size()',\n '[attr.data-variant]': 'variant()',\n },\n template: `\n <div\n #trigger\n [attr.id]=\"resolvedId()\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"openState()\"\n [attr.aria-controls]=\"openState() ? panelId : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-disabled]=\"disabledState() ? 'true' : null\"\n [attr.tabindex]=\"disabledState() ? -1 : 0\"\n [class]=\"triggerClasses()\"\n (click)=\"handleTriggerClick()\"\n (keydown.enter)=\"handleTriggerKeydown($any($event))\"\n (keydown.space)=\"handleTriggerKeydown($any($event))\"\n (keydown.arrowDown)=\"handleTriggerKeydown($any($event))\"\n (keydown.escape)=\"close()\">\n <div class=\"flex min-w-0 flex-1 flex-wrap items-center gap-1.5\">\n @if (selectedItems().length > 0) {\n @for (item of selectedItems(); track item.track) {\n <span [class]=\"pillClasses()\">\n @if (item.template; as template) {\n <span class=\"inline-flex min-w-0 max-w-40 items-center gap-1 truncate\">\n <ng-container *ngTemplateOutlet=\"template\" />\n </span>\n } @else {\n <span class=\"max-w-40 truncate\">{{ item.label }}</span>\n }\n <button\n type=\"button\"\n class=\"-mr-1 inline-flex size-4 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n [attr.aria-label]=\"'Remove ' + item.label\"\n [disabled]=\"disabledState() || null\"\n (click)=\"removeSelected(item.value, $event)\">\n <svg\n aria-hidden=\"true\"\n class=\"size-3\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n </span>\n }\n }\n\n @if (variant() === 'combobox') {\n <input\n #inlineSearch\n class=\"min-w-28 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n [placeholder]=\"selectedItems().length === 0 ? placeholder() : ''\"\n [value]=\"query()\"\n [disabled]=\"disabledState() || null\"\n (click)=\"$event.stopPropagation(); open()\"\n (focus)=\"open()\"\n (input)=\"handleSearchInput($event)\"\n (keydown.backspace)=\"handleInlineBackspace($any($event))\"\n (keydown.escape)=\"close()\" />\n } @else if (selectedItems().length === 0) {\n <span class=\"truncate text-muted-foreground\">{{ placeholder() }}</span>\n }\n </div>\n\n @if (clearable() && selectedItems().length > 0 && !disabledState()) {\n <button\n type=\"button\"\n class=\"inline-flex size-5 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-label=\"Clear selected options\"\n (click)=\"clear($event)\">\n <svg\n aria-hidden=\"true\"\n class=\"size-3.5\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n }\n\n <svg\n aria-hidden=\"true\"\n class=\"size-4 shrink-0 text-muted-foreground transition-transform\"\n [class.rotate-180]=\"openState()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </div>\n\n <div [attr.id]=\"panelId\" [class]=\"panelClasses()\" [hidden]=\"!openState()\" role=\"listbox\">\n @if (searchable() && variant() !== 'combobox') {\n <div class=\"border-b border-border p-2\">\n <div class=\"flex items-center gap-2 rounded-md border border-input bg-background px-2\">\n <svg\n aria-hidden=\"true\"\n class=\"size-4 shrink-0 text-muted-foreground\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.35-4.35\" />\n </svg>\n <input\n #panelSearch\n class=\"h-9 min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"query()\"\n (input)=\"handleSearchInput($event)\"\n (keydown.escape)=\"close()\" />\n @if (query().length > 0) {\n <button\n type=\"button\"\n class=\"inline-flex size-6 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground\"\n aria-label=\"Clear search\"\n (click)=\"clearSearch($event)\">\n <svg\n aria-hidden=\"true\"\n class=\"size-3.5\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n }\n </div>\n </div>\n }\n\n <div class=\"max-h-72 overflow-y-auto p-1\">\n <ng-content />\n </div>\n </div>\n `,\n})\nexport class PillboxComponent extends PillboxContext implements ControlValueAccessor {\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly id = input<string | null>(null);\n readonly placeholder = input<string>('Choose options...');\n readonly searchPlaceholder = input<string>('Search...');\n readonly size = input<PillboxSize>('default');\n readonly variant = input<PillboxVariant>('default');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly searchable = input(false, { transform: booleanAttribute });\n readonly filter = input(true, { transform: booleanAttribute });\n readonly clearable = input(true, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly emptyText = input<string>('No options found.');\n readonly loadingText = input<string>('Loading...');\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n readonly class = input<string>('');\n\n readonly valueChange = output<unknown>();\n readonly searchChange = output<string>();\n readonly create = output<string>();\n readonly openedChange = output<boolean>();\n\n override readonly query = signal('');\n override readonly openState = signal(false);\n\n private readonly selectedValues = signal<readonly unknown[]>([]);\n private readonly disabledFromControl = signal(false);\n private readonly generatedId = uniqueId('Pillbox');\n private readonly trigger = viewChild.required<ElementRef<HTMLElement>>('trigger');\n private readonly inlineSearch = viewChild<ElementRef<HTMLInputElement>>('inlineSearch');\n private readonly panelSearch = viewChild<ElementRef<HTMLInputElement>>('panelSearch');\n private readonly options = contentChildren(PillboxOptionComponent, { descendants: true });\n private readonly createOptions = contentChildren(PillboxOptionCreateComponent, { descendants: true });\n private readonly emptyOptions = contentChildren(PillboxOptionEmptyComponent, { descendants: true });\n\n private removeDocumentListener: (() => void) | null = null;\n private onChange: (value: unknown) => void = () => {};\n private onTouched: () => void = () => {};\n\n protected readonly panelId = `${this.generatedId}-panel`;\n protected readonly resolvedId = computed(() => this.id() ?? this.generatedId);\n protected readonly disabledState = computed(() => this.disabled() || this.disabledFromControl());\n protected readonly classes = computed(() =>\n cn('relative block w-full min-w-0 text-sm text-foreground', this.class()),\n );\n protected readonly triggerClasses = computed(() =>\n cn(\n 'flex w-full min-w-0 cursor-default items-center gap-2 rounded-md border border-input bg-background shadow-sm transition-colors',\n 'focus-within:outline-none focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 focus-within:ring-offset-background',\n 'hover:bg-accent/20',\n pillboxTriggerSizeClasses[this.size()],\n this.invalid() ? 'border-destructive ring-1 ring-destructive' : '',\n this.disabledState() ? 'pointer-events-none cursor-not-allowed opacity-50' : '',\n ),\n );\n protected readonly pillClasses = computed(() =>\n cn(\n 'inline-flex max-w-full shrink-0 items-center gap-1 rounded-md border border-border bg-muted font-medium text-muted-foreground',\n pillboxPillSizeClasses[this.size()],\n ),\n );\n protected readonly panelClasses = computed(() =>\n cn(\n 'absolute left-0 right-0 z-50 mt-1 overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md',\n 'min-w-full',\n ),\n );\n protected readonly selectedItems = computed<readonly PillboxSelectedItem[]>(() =>\n this.selectedValues().map((value) => {\n const option = this.findOption(value);\n\n return {\n value,\n label: option?.pillLabel() || String(value),\n template: option?.pillTemplate() ?? null,\n // Track by the option value (selected values are unique) so removing a\n // middle pill doesn't recreate the DOM of every pill after it.\n track: value,\n };\n }),\n );\n\n constructor() {\n super();\n this.destroyRef.onDestroy(() => this.removeOutsideListener());\n }\n\n override optionVisible(option: PillboxOptionComponent): boolean {\n if (!this.filter() || !option.filterable()) {\n return true;\n }\n\n const query = this.query().trim().toLowerCase();\n if (!query) {\n return true;\n }\n\n return option.textLabel().toLowerCase().includes(query);\n }\n\n override optionSelected(option: PillboxOptionComponent): boolean {\n return this.hasValue(option.value());\n }\n\n override chooseOption(option: PillboxOptionComponent, event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabledState() || option.disabled()) {\n return;\n }\n\n if (this.multiple()) {\n const value = option.value();\n this.selectedValues.update((values) =>\n values.some((entry) => this.sameValue(entry, value))\n ? values.filter((entry) => !this.sameValue(entry, value))\n : [...values, value],\n );\n } else {\n this.selectedValues.set([option.value()]);\n this.close();\n }\n\n option.selectedChange.emit(option.value());\n this.query.set('');\n this.emitValue();\n }\n\n override createVisible(option: PillboxOptionCreateComponent): boolean {\n const query = this.query().trim();\n\n if (option.disabled() || query.length < option.minLength()) {\n return false;\n }\n\n return !this.options().some((entry) => entry.textLabel().trim().toLowerCase() === query.toLowerCase());\n }\n\n override chooseCreate(option: PillboxOptionCreateComponent, event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n const query = this.query().trim();\n if (this.disabledState() || option.disabled() || !this.createVisible(option)) {\n return;\n }\n\n option.selected.emit(query);\n this.create.emit(query);\n }\n\n override emptyVisible(): boolean {\n return this.options().length > 0 && !this.hasVisibleOptions() && !this.hasVisibleCreateOption();\n }\n\n override emptyMessage(): string {\n const customEmptyOption = this.emptyOptions()[0];\n if (this.loading()) {\n return customEmptyOption?.whenLoading() || this.loadingText();\n }\n\n return customEmptyOption ? '' : this.emptyText();\n }\n\n protected handleTriggerClick(): void {\n this.open();\n }\n\n protected handleTriggerKeydown(event: KeyboardEvent): void {\n if (this.disabledState()) {\n return;\n }\n\n event.preventDefault();\n this.open();\n }\n\n protected handleSearchInput(event: Event): void {\n const inputElement = event.target as HTMLInputElement;\n this.query.set(inputElement.value);\n this.searchChange.emit(inputElement.value);\n this.open();\n }\n\n protected handleInlineBackspace(event: KeyboardEvent): void {\n if ((event.target as HTMLInputElement).value.length > 0 || this.selectedValues().length === 0) {\n return;\n }\n\n event.preventDefault();\n this.selectedValues.update((values) => values.slice(0, -1));\n this.emitValue();\n }\n\n protected clearSearch(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.query.set('');\n this.searchChange.emit('');\n this.focusSearchInput();\n }\n\n protected clear(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.selectedValues.set([]);\n this.emitValue();\n }\n\n protected removeSelected(value: unknown, event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.selectedValues.update((values) => values.filter((entry) => !this.sameValue(entry, value)));\n this.emitValue();\n }\n\n open(): void {\n if (this.disabledState() || this.openState()) {\n return;\n }\n\n this.openState.set(true);\n this.openedChange.emit(true);\n queueMicrotask(() => {\n this.focusSearchInput();\n this.bindOutsideListener();\n });\n }\n\n close(): void {\n if (!this.openState()) {\n return;\n }\n\n this.openState.set(false);\n this.openedChange.emit(false);\n this.removeOutsideListener();\n this.onTouched();\n }\n\n focus(): void {\n this.trigger().nativeElement.focus();\n }\n\n writeValue(value: unknown): void {\n if (this.multiple()) {\n this.selectedValues.set(Array.isArray(value) ? value : []);\n return;\n }\n\n this.selectedValues.set(value === null || value === undefined ? [] : [value]);\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabledFromControl.set(disabled);\n }\n\n private emitValue(): void {\n const nextValue = this.multiple() ? [...this.selectedValues()] : (this.selectedValues()[0] ?? null);\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n }\n\n private hasValue(value: unknown): boolean {\n return this.selectedValues().some((entry) => this.sameValue(entry, value));\n }\n\n private findOption(value: unknown): PillboxOptionComponent | undefined {\n return this.options().find((option) => this.sameValue(option.value(), value));\n }\n\n private hasVisibleOptions(): boolean {\n return this.options().some((option) => this.optionVisible(option));\n }\n\n private hasVisibleCreateOption(): boolean {\n return this.createOptions().some((option) => this.createVisible(option));\n }\n\n private sameValue(left: unknown, right: unknown): boolean {\n return Object.is(left, right);\n }\n\n private focusSearchInput(): void {\n const searchInput =\n this.variant() === 'combobox' ? this.inlineSearch()?.nativeElement : this.panelSearch()?.nativeElement;\n searchInput?.focus();\n }\n\n private bindOutsideListener(): void {\n this.removeOutsideListener();\n\n const listener = (event: PointerEvent) => {\n if (!this.element.nativeElement.contains(event.target as Node)) {\n this.close();\n }\n };\n\n this.document.addEventListener('pointerdown', listener, true);\n this.removeDocumentListener = () => this.document.removeEventListener('pointerdown', listener, true);\n }\n\n private removeOutsideListener(): void {\n this.removeDocumentListener?.();\n this.removeDocumentListener = null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-popover.mjs","sources":["../../../library/component/popover/popover-content.directive.ts","../../../library/component/popover/popover-trigger.directive.ts","../../../library/component/popover/ojiepermana-angular-component-popover.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[PopoverContent]',\n exportAs: 'PopoverContent',\n})\nexport class PopoverContentDirective {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n InjectionToken,\n ViewContainerRef,\n inject,\n input,\n output,\n signal,\n type Signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n connectedPositionFor,\n oppositeSide,\n overlayDismissals,\n uniqueId,\n type OverlayAlign,\n type OverlaySide,\n} from '@ojiepermana/angular-component/utils';\nimport type { PopoverContentDirective } from './popover-content.directive';\n\nexport type PopoverSide = OverlaySide;\nexport type PopoverAlign = OverlayAlign;\n\nexport interface PopoverTriggerDefaults {\n readonly side?: Signal<PopoverSide>;\n readonly align?: Signal<PopoverAlign>;\n readonly sideOffset?: Signal<number>;\n}\n\nexport const POPOVER_TRIGGER_DEFAULTS = new InjectionToken<PopoverTriggerDefaults>('POPOVER_TRIGGER_DEFAULTS');\n\n@Directive({\n selector: '[PopoverTrigger]',\n exportAs: 'PopoverTrigger',\n host: {\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-haspopup]': '\"dialog\"',\n '(click)': 'toggle()',\n '(keydown.enter)': 'onKeyboardToggle($event)',\n '(keydown.space)': 'onKeyboardToggle($event)',\n '(keydown.escape)': 'close()',\n },\n})\nexport class PopoverTriggerDirective {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly defaults = inject(POPOVER_TRIGGER_DEFAULTS, { optional: true });\n\n readonly PopoverTrigger = input.required<PopoverContentDirective>();\n readonly side = input<PopoverSide | undefined>(undefined);\n readonly align = input<PopoverAlign | undefined>(undefined);\n readonly sideOffset = input<number | undefined>(undefined);\n readonly disabled = input<boolean>(false);\n\n readonly openedChange = output<boolean>();\n\n private overlayRef: OverlayRef | null = null;\n readonly isOpen = signal(false);\n\n constructor() {\n this.destroyRef.onDestroy(() => this.close(false));\n }\n\n toggle(): void {\n if (this.disabled()) return;\n this.isOpen() ? this.close() : this.open();\n }\n\n onKeyboardToggle(event: Event): void {\n if (this.disabled() || this.usesNativeKeyboardActivation()) {\n return;\n }\n\n event.preventDefault();\n this.toggle();\n }\n\n open(): void {\n if (this.isOpen() || this.disabled()) return;\n\n const side = this.side() ?? this.defaults?.side?.() ?? 'bottom';\n const align = this.align() ?? this.defaults?.align?.() ?? 'center';\n const sideOffset = this.sideOffset() ?? this.defaults?.sideOffset?.() ?? 8;\n\n const primary = connectedPositionFor(side, align, sideOffset);\n const fallback = connectedPositionFor(oppositeSide(side), align, sideOffset);\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.el)\n .withPositions([primary, fallback])\n .withPush(false)\n .withFlexibleDimensions(false);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n panelClass: 'popover-panel',\n });\n\n const portal = new TemplatePortal(this.PopoverTrigger().template, this.vcr);\n this.overlayRef.attach(portal);\n this.applyDialogSemantics(this.overlayRef.overlayElement);\n\n overlayDismissals(this.overlayRef, this.el.nativeElement)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.close());\n\n this.isOpen.set(true);\n this.openedChange.emit(true);\n }\n\n close(emitOpenedChange = true): void {\n if (!this.isOpen()) return;\n\n const overlayRef = this.overlayRef;\n this.overlayRef = null;\n this.isOpen.set(false);\n overlayRef?.dispose();\n\n if (emitOpenedChange) {\n this.openedChange.emit(false);\n }\n }\n\n /**\n * The trigger advertises `aria-haspopup=\"dialog\"`, so the opened pane must be\n * a dialog: non-modal, labelled by its trigger so screen readers announce\n * which control the content belongs to.\n */\n private applyDialogSemantics(pane: HTMLElement): void {\n const trigger = this.el.nativeElement;\n if (!trigger.id) {\n trigger.id = uniqueId('popover-trigger');\n }\n\n pane.setAttribute('role', 'dialog');\n pane.setAttribute('aria-modal', 'false');\n pane.setAttribute('aria-labelledby', trigger.id);\n }\n\n private usesNativeKeyboardActivation(): boolean {\n const host = this.el.nativeElement;\n const tagName = host.tagName;\n\n return (\n tagName === 'BUTTON' ||\n tagName === 'INPUT' ||\n tagName === 'SELECT' ||\n tagName === 'TEXTAREA' ||\n tagName === 'SUMMARY' ||\n (tagName === 'A' && host.hasAttribute('href'))\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-progress.mjs","sources":["../../../library/component/progress/progress.component.ts","../../../library/component/progress/ojiepermana-angular-component-progress.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n@Component({\n selector: 'ProgressBar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.role]': '\"progressbar\"',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-valuenow]': 'indeterminate() ? null : clamped()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-labelledby]': 'ariaLabelledby()',\n '[attr.data-state]': 'indeterminate() ? \"indeterminate\" : \"determinate\"',\n },\n template: `\n <div\n class=\"progress-indicator h-full w-full flex-1 bg-primary transition-transform\"\n [style.transform]=\"indicatorTransform()\"></div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n :host[data-state='indeterminate'] .progress-indicator {\n animation: progress-indeterminate 1.5s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n }\n @keyframes progress-indeterminate {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(100%);\n }\n }\n @media (prefers-reduced-motion: reduce) {\n :host[data-state='indeterminate'] .progress-indicator {\n animation: none;\n }\n }\n `,\n ],\n})\nexport class ProgressComponent {\n readonly value = input<number | null>(0);\n readonly max = input<number>(100);\n readonly indeterminate = input<boolean>(false);\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n readonly class = input<string>('');\n\n protected readonly clamped = computed(() => {\n const v = this.value() ?? 0;\n return Math.max(0, Math.min(this.max(), v));\n });\n\n protected readonly indicatorTransform = computed(() => {\n if (this.indeterminate()) return 'translateX(-100%)';\n const pct = (this.clamped() / this.max()) * 100;\n return `translateX(-${100 - pct}%)`;\n });\n\n protected readonly classes = computed(() =>\n cn('relative h-2 w-full overflow-hidden rounded-full bg-secondary', this.class()),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-radio.mjs","sources":["../../../library/component/radio/radio.component.ts","../../../library/component/radio/ojiepermana-angular-component-radio.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n type ElementRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cn, uniqueId } from '@ojiepermana/angular-component/utils';\n\ntype AriaInvalidValue = boolean | 'true' | 'false' | null;\n\n/**\n * Radio group built on native `<input type=\"radio\">` elements (shadcn\n * pattern) — no Material dependency. Native radios with a shared `name`\n * give arrow-key navigation and form semantics for free.\n */\n@Component({\n selector: 'RadioGroup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroupComponent), multi: true }],\n host: {\n role: 'radiogroup',\n '[class]': 'classes()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-labelledby]': 'ariaLabelledby()',\n '[attr.aria-describedby]': 'ariaDescribedby()',\n '[attr.aria-invalid]': 'ariaInvalidAttr()',\n },\n template: `<ng-content />`,\n})\nexport class RadioGroupComponent implements ControlValueAccessor {\n readonly name = input<string>('');\n readonly orientation = input<'horizontal' | 'vertical'>('vertical');\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\n readonly ariaInvalid = input<AriaInvalidValue>(null, { alias: 'aria-invalid' });\n readonly class = input<string>('');\n\n readonly valueChange = output<string>();\n\n private readonly generatedName = uniqueId('RadioGroup');\n private readonly radios = contentChildren(\n forwardRef(() => RadioComponent),\n { descendants: true },\n );\n\n readonly value = signal<string | null>(null);\n readonly disabled = signal<boolean>(false);\n\n /** Shared native `name` so the browser groups the radios. */\n readonly resolvedName = computed(() => this.name() || this.generatedName);\n\n protected readonly ariaInvalidAttr = computed(() => {\n const ariaInvalid = this.ariaInvalid();\n\n if (ariaInvalid === null) {\n return null;\n }\n\n return ariaInvalid === false || ariaInvalid === 'false' ? 'false' : 'true';\n });\n protected readonly classes = computed(() =>\n cn('RadioGroup grid gap-2', this.orientation() === 'horizontal' ? 'grid-flow-col auto-cols-max' : '', this.class()),\n );\n\n private onChange: (v: string | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n select(value: string): void {\n this.value.set(value);\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n markTouched(): void {\n this.onTouched();\n }\n\n focus(): void {\n const radios = this.radios();\n const target = radios.find((radio) => radio.value() === this.value()) ?? radios[0];\n target?.focus();\n }\n\n writeValue(v: string | null): void {\n this.value.set(v ?? null);\n }\n registerOnChange(fn: (v: string | null) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(d: boolean): void {\n this.disabled.set(d);\n }\n}\n\n@Component({\n selector: 'Radio',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'hostClasses()' },\n template: `\n <label [class]=\"labelClasses()\">\n <input\n #ref\n type=\"radio\"\n class=\"peer sr-only\"\n [attr.name]=\"group.resolvedName()\"\n [value]=\"value()\"\n [checked]=\"selected()\"\n [disabled]=\"isDisabled()\"\n (change)=\"handleChange()\"\n (blur)=\"handleBlur()\" />\n <span aria-hidden=\"true\" [class]=\"circleClasses()\">\n @if (selected()) {\n <span class=\"size-2 rounded-full bg-primary\"></span>\n }\n </span>\n <ng-content />\n </label>\n `,\n})\nexport class RadioComponent {\n protected readonly group = inject(RadioGroupComponent);\n\n readonly value = input.required<string>();\n readonly disabled = input<boolean>(false);\n readonly class = input<string>('');\n\n protected readonly selected = computed(() => this.group.value() === this.value());\n protected readonly isDisabled = computed(() => this.disabled() || this.group.disabled());\n protected readonly hostClasses = computed(() => cn('Radio inline-flex', this.class()));\n protected readonly labelClasses = computed(() =>\n cn(\n 'inline-flex select-none items-center gap-2 text-sm font-medium leading-none',\n this.isDisabled() ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n ),\n );\n protected readonly circleClasses = computed(() =>\n cn(\n 'inline-flex size-4 shrink-0 items-center justify-center rounded-full border border-input shadow-sm transition-colors',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-background',\n this.selected() ? 'border-primary' : '',\n ),\n );\n\n private readonly ref = viewChild.required<ElementRef<HTMLInputElement>>('ref');\n\n protected handleChange(): void {\n this.group.select(this.value());\n }\n\n protected handleBlur(): void {\n this.group.markTouched();\n }\n\n focus(): void {\n this.ref().nativeElement.focus();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-resizable.mjs","sources":["../../../library/component/resizable/resizable.component.ts","../../../library/component/resizable/ojiepermana-angular-component-resizable.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n OnDestroy,\n booleanAttribute,\n computed,\n contentChildren,\n effect,\n forwardRef,\n inject,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport { cn, uniqueId } from '@ojiepermana/angular-component/utils';\n\nexport type ResizableOrientation = 'horizontal' | 'vertical';\nexport type ResizableSize = string | number | null | undefined;\n\ninterface ResizablePair {\n readonly previous: ResizablePanelComponent;\n readonly next: ResizablePanelComponent;\n}\n\ninterface ResizableBounds {\n readonly min: number;\n readonly max: number;\n}\n\ninterface ResizableHandleState {\n readonly panelId: string;\n readonly valueNow: number;\n readonly valueMin: number;\n readonly valueMax: number;\n}\n\ninterface ResizablePointerSession {\n readonly handle: ResizableHandleComponent;\n readonly pair: ResizablePair;\n readonly startCoordinate: number;\n readonly previousSize: number;\n}\n\n@Directive()\nexport abstract class ResizableGroupContextBase {\n abstract groupOrientation(): ResizableOrientation;\n abstract panelDirection(): 'ltr' | 'rtl';\n abstract pairState(handle: ResizableHandleComponent): ResizableHandleState | null;\n abstract beginPointerResize(handle: ResizableHandleComponent, event: PointerEvent): void;\n abstract handleKeydown(handle: ResizableHandleComponent, event: KeyboardEvent): void;\n}\n\n@Component({\n selector: 'ResizablePanel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.id]': 'resolvedId()',\n '[style.flex]': 'flexStyle()',\n },\n template: `<ng-content />`,\n})\nexport class ResizablePanelComponent {\n private readonly ctx = inject(ResizableGroupContextBase);\n private readonly host = inject(ElementRef<HTMLElement>);\n\n readonly defaultSize = input<ResizableSize>(null);\n readonly minSize = input<ResizableSize>('10%');\n readonly maxSize = input<ResizableSize>('90%');\n readonly id = input<string | null>(null);\n readonly class = input<string>('');\n\n private readonly generatedId = uniqueId('ResizablePanel');\n private readonly currentSize = signal<number | null>(null);\n\n protected readonly resolvedId = computed(() => this.id() ?? this.generatedId);\n protected readonly classes = computed(() =>\n cn(\n 'relative block min-h-0 min-w-0 overflow-hidden',\n this.ctx.groupOrientation() === 'horizontal' ? 'h-full' : 'w-full',\n this.class(),\n ),\n );\n protected readonly flexStyle = computed(() => {\n const size = this.currentSize();\n return size == null ? '1 1 0%' : `0 0 ${size}%`;\n });\n\n panelId(): string {\n return this.resolvedId();\n }\n\n preferredSizePercent(): number | null {\n return parsePercent(this.defaultSize());\n }\n\n minSizePercent(): number {\n return clamp(parsePercent(this.minSize()) ?? 10, 0, 100);\n }\n\n maxSizePercent(): number {\n return clamp(parsePercent(this.maxSize()) ?? 90, this.minSizePercent(), 100);\n }\n\n size(): number {\n return this.currentSize() ?? 0;\n }\n\n setSize(size: number): void {\n this.currentSize.set(roundPercentage(clamp(size, 0, 100)));\n }\n\n nativeElement(): HTMLElement {\n return this.host.nativeElement;\n }\n}\n\n@Component({\n selector: 'ResizableHandle',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n role: 'separator',\n tabindex: '0',\n '[attr.data-active]': 'active() ? \"true\" : null',\n '[attr.aria-controls]': 'controls()',\n '[attr.aria-label]': 'label()',\n '[attr.aria-orientation]': 'separatorOrientation()',\n '[attr.aria-valuenow]': 'valueNow()',\n '[attr.aria-valuemin]': 'valueMin()',\n '[attr.aria-valuemax]': 'valueMax()',\n '[attr.aria-valuetext]': 'valueText()',\n '(keydown)': 'onKeydown($event)',\n '(pointerdown)': 'onPointerDown($event)',\n },\n template: `\n @if (withHandle()) {\n <span\n aria-hidden=\"true\"\n class=\"pointer-events-none inline-flex items-center justify-center rounded-sm border border-border bg-background px-1 py-0.5 shadow-sm\">\n <svg class=\"h-3 w-3 text-muted-foreground\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <circle cx=\"9\" cy=\"8\" r=\"1.25\" />\n <circle cx=\"15\" cy=\"8\" r=\"1.25\" />\n <circle cx=\"9\" cy=\"12\" r=\"1.25\" />\n <circle cx=\"15\" cy=\"12\" r=\"1.25\" />\n <circle cx=\"9\" cy=\"16\" r=\"1.25\" />\n <circle cx=\"15\" cy=\"16\" r=\"1.25\" />\n </svg>\n </span>\n }\n `,\n})\nexport class ResizableHandleComponent {\n private readonly ctx = inject(ResizableGroupContextBase);\n private readonly host = inject(ElementRef<HTMLElement>);\n\n readonly withHandle = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly class = input<string>('');\n\n private readonly lastExpandedPrimarySize = signal<number | null>(null);\n protected readonly active = signal(false);\n private readonly state = computed(() => this.ctx.pairState(this));\n protected readonly classes = computed(() =>\n cn(\n 'group relative flex shrink-0 select-none items-center justify-center bg-transparent text-foreground transition-colors',\n 'touch-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n this.ctx.groupOrientation() === 'horizontal'\n ? 'h-full w-2 cursor-col-resize before:absolute before:inset-y-0 before:left-1/2 before:w-px before:-translate-x-1/2 before:bg-border'\n : 'h-2 w-full cursor-row-resize before:absolute before:inset-x-0 before:top-1/2 before:h-px before:-translate-y-1/2 before:bg-border',\n this.active() ? 'before:bg-foreground/60' : 'hover:before:bg-foreground/40',\n this.class(),\n ),\n );\n\n protected readonly separatorOrientation = computed(() =>\n this.ctx.groupOrientation() === 'horizontal' ? 'vertical' : 'horizontal',\n );\n protected readonly controls = computed(() => this.state()?.panelId ?? null);\n protected readonly label = computed(() => this.ariaLabel() ?? 'Resize panel');\n protected readonly valueNow = computed(() => toAriaValue(this.state()?.valueNow));\n protected readonly valueMin = computed(() => toAriaValue(this.state()?.valueMin));\n protected readonly valueMax = computed(() => toAriaValue(this.state()?.valueMax));\n protected readonly valueText = computed(() => {\n const value = this.state()?.valueNow;\n return value == null ? null : `${Math.round(value)}%`;\n });\n\n onPointerDown(event: PointerEvent): void {\n if (event.button !== 0) {\n return;\n }\n\n event.preventDefault();\n this.host.nativeElement.focus();\n this.ctx.beginPointerResize(this, event);\n }\n\n onKeydown(event: KeyboardEvent): void {\n this.ctx.handleKeydown(this, event);\n }\n\n setActive(active: boolean): void {\n this.active.set(active);\n }\n\n rememberPrimarySize(size: number): void {\n this.lastExpandedPrimarySize.set(roundPercentage(size));\n }\n\n rememberedPrimarySize(): number | null {\n return this.lastExpandedPrimarySize();\n }\n\n nativeElement(): HTMLElement {\n return this.host.nativeElement;\n }\n}\n\n@Component({\n selector: 'ResizablePanelGroup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: ResizableGroupContextBase, useExisting: forwardRef(() => ResizablePanelGroupComponent) }],\n host: {\n '[class]': 'classes()',\n '[attr.data-orientation]': 'orientation()',\n },\n template: `<ng-content />`,\n})\nexport class ResizablePanelGroupComponent extends ResizableGroupContextBase implements OnDestroy {\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly document = inject(DOCUMENT);\n\n readonly orientation = input<ResizableOrientation>('horizontal');\n readonly class = input<string>('');\n\n private readonly panels = contentChildren(ResizablePanelComponent);\n private readonly handles = contentChildren(ResizableHandleComponent);\n private pointerSession: ResizablePointerSession | null = null;\n private removePointerListeners: (() => void) | null = null;\n\n protected readonly classes = computed(() =>\n cn(\n 'flex w-full min-h-0 min-w-0 items-stretch',\n this.orientation() === 'horizontal' ? 'flex-row' : 'flex-col',\n this.class(),\n ),\n );\n\n private readonly syncLayout = effect(() => {\n const panels = this.panels();\n void this.handles();\n\n if (!panels.length) {\n return;\n }\n\n untracked(() => this.initializeLayout(panels));\n });\n\n override groupOrientation(): ResizableOrientation {\n return this.orientation();\n }\n\n override panelDirection(): 'ltr' | 'rtl' {\n const view = this.document.defaultView;\n if (!view) {\n return 'ltr';\n }\n\n return view.getComputedStyle(this.host.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\n }\n\n override pairState(handle: ResizableHandleComponent): ResizableHandleState | null {\n const pair = this.resolvePair(handle);\n if (!pair) {\n return null;\n }\n\n const bounds = this.boundsForPair(pair);\n return {\n panelId: pair.previous.panelId(),\n valueNow: pair.previous.size(),\n valueMin: bounds.min,\n valueMax: bounds.max,\n };\n }\n\n override beginPointerResize(handle: ResizableHandleComponent, event: PointerEvent): void {\n const pair = this.resolvePair(handle);\n if (!pair) {\n return;\n }\n\n this.finishPointerResize();\n handle.setActive(true);\n this.pointerSession = {\n handle,\n pair,\n startCoordinate: this.coordinateFromEvent(event),\n previousSize: pair.previous.size(),\n };\n\n const move = (nextEvent: PointerEvent) => {\n const session = this.pointerSession;\n if (!session) {\n return;\n }\n\n const containerSize = this.containerSize();\n if (containerSize <= 0) {\n return;\n }\n\n const delta = this.coordinateFromEvent(nextEvent) - session.startCoordinate;\n const directionFactor = this.orientation() === 'horizontal' && this.panelDirection() === 'rtl' ? -1 : 1;\n const deltaPercent = (delta / containerSize) * 100 * directionFactor;\n this.applyPrimarySize(session.pair, session.previousSize + deltaPercent);\n };\n\n const end = () => this.finishPointerResize();\n\n this.document.addEventListener('pointermove', move);\n this.document.addEventListener('pointerup', end);\n this.document.addEventListener('pointercancel', end);\n this.removePointerListeners = () => {\n this.document.removeEventListener('pointermove', move);\n this.document.removeEventListener('pointerup', end);\n this.document.removeEventListener('pointercancel', end);\n };\n }\n\n override handleKeydown(handle: ResizableHandleComponent, event: KeyboardEvent): void {\n const pair = this.resolvePair(handle);\n if (!pair) {\n return;\n }\n\n const current = pair.previous.size();\n const bounds = this.boundsForPair(pair);\n const horizontalStep = this.panelDirection() === 'rtl' ? -10 : 10;\n\n switch (event.key) {\n case 'ArrowRight':\n if (this.orientation() !== 'horizontal') {\n return;\n }\n this.applyPrimarySize(pair, current + horizontalStep);\n break;\n case 'ArrowLeft':\n if (this.orientation() !== 'horizontal') {\n return;\n }\n this.applyPrimarySize(pair, current - horizontalStep);\n break;\n case 'ArrowDown':\n if (this.orientation() !== 'vertical') {\n return;\n }\n this.applyPrimarySize(pair, current + 10);\n break;\n case 'ArrowUp':\n if (this.orientation() !== 'vertical') {\n return;\n }\n this.applyPrimarySize(pair, current - 10);\n break;\n case 'Home':\n this.applyPrimarySize(pair, bounds.min);\n break;\n case 'End':\n this.applyPrimarySize(pair, bounds.max);\n break;\n case 'Enter': {\n const remembered = handle.rememberedPrimarySize();\n if (current > bounds.min + 0.5) {\n handle.rememberPrimarySize(current);\n this.applyPrimarySize(pair, bounds.min);\n } else if (remembered != null) {\n this.applyPrimarySize(pair, remembered);\n } else {\n this.applyPrimarySize(pair, (bounds.min + bounds.max) / 2);\n }\n break;\n }\n default:\n return;\n }\n\n event.preventDefault();\n }\n\n ngOnDestroy(): void {\n this.finishPointerResize();\n }\n\n private finishPointerResize(): void {\n this.pointerSession?.handle.setActive(false);\n this.pointerSession = null;\n this.removePointerListeners?.();\n this.removePointerListeners = null;\n }\n\n private initializeLayout(panels: readonly ResizablePanelComponent[]): void {\n const minimums = panels.map((panel) => panel.minSizePercent());\n const maximums = panels.map((panel, index) => Math.max(minimums[index], panel.maxSizePercent()));\n const preferred = panels.map((panel) => panel.preferredSizePercent());\n const sizes = resolveInitialSizes(preferred, minimums, maximums);\n\n panels.forEach((panel, index) => panel.setSize(sizes[index]));\n }\n\n private resolvePair(handle: ResizableHandleComponent): ResizablePair | null {\n const panels = new Map(this.panels().map((panel) => [panel.nativeElement(), panel] as const));\n const children = Array.from(this.host.nativeElement.children);\n const handleIndex = children.indexOf(handle.nativeElement());\n\n if (handleIndex === -1) {\n return null;\n }\n\n let previous: ResizablePanelComponent | null = null;\n let next: ResizablePanelComponent | null = null;\n\n for (let index = handleIndex - 1; index >= 0; index -= 1) {\n previous = panels.get(children[index] as HTMLElement) ?? null;\n if (previous) {\n break;\n }\n }\n\n for (let index = handleIndex + 1; index < children.length; index += 1) {\n next = panels.get(children[index] as HTMLElement) ?? null;\n if (next) {\n break;\n }\n }\n\n if (!previous || !next) {\n return null;\n }\n\n return { previous, next };\n }\n\n private boundsForPair(pair: ResizablePair): ResizableBounds {\n const pairTotal = pair.previous.size() + pair.next.size();\n const min = Math.max(pair.previous.minSizePercent(), pairTotal - pair.next.maxSizePercent());\n const max = Math.min(pair.previous.maxSizePercent(), pairTotal - pair.next.minSizePercent());\n\n if (min > max) {\n return { min: pairTotal / 2, max: pairTotal / 2 };\n }\n\n return { min: roundPercentage(min), max: roundPercentage(max) };\n }\n\n private applyPrimarySize(pair: ResizablePair, nextPrimarySize: number): void {\n const pairTotal = pair.previous.size() + pair.next.size();\n const bounds = this.boundsForPair(pair);\n const primarySize = roundPercentage(clamp(nextPrimarySize, bounds.min, bounds.max));\n const secondarySize = roundPercentage(pairTotal - primarySize);\n\n pair.previous.setSize(primarySize);\n pair.next.setSize(secondarySize);\n }\n\n private containerSize(): number {\n const rect = this.host.nativeElement.getBoundingClientRect();\n return this.orientation() === 'horizontal' ? rect.width : rect.height;\n }\n\n private coordinateFromEvent(event: PointerEvent): number {\n return this.orientation() === 'horizontal' ? event.clientX : event.clientY;\n }\n}\n\nlet _id = 0;\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction parsePercent(value: ResizableSize): number | null {\n if (value == null || value === '') {\n return null;\n }\n\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : null;\n }\n\n const parsed = Number.parseFloat(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction roundPercentage(value: number): number {\n return Math.round(value * 1000) / 1000;\n}\n\nfunction sum(values: readonly number[]): number {\n return values.reduce((total, value) => total + value, 0);\n}\n\nfunction resolveInitialSizes(\n preferred: readonly (number | null)[],\n minimums: readonly number[],\n maximums: readonly number[],\n): number[] {\n const unresolvedIndexes = preferred.flatMap((value, index) => (value == null ? [index] : []));\n const specifiedTotal = sum(preferred.flatMap((value) => (value == null ? [] : [value])));\n\n let sizes: number[];\n if (preferred.every((value) => value == null)) {\n const equalSize = 100 / preferred.length;\n sizes = preferred.map(() => equalSize);\n } else {\n const share = unresolvedIndexes.length ? Math.max(100 - specifiedTotal, 0) / unresolvedIndexes.length : 0;\n sizes = preferred.map((value) => value ?? share);\n }\n\n sizes = sizes.map((size, index) => clamp(size, minimums[index], maximums[index]));\n sizes = rebalanceSizes(sizes, minimums, maximums);\n\n return sizes.map((size) => roundPercentage(size));\n}\n\nfunction rebalanceSizes(sizes: readonly number[], minimums: readonly number[], maximums: readonly number[]): number[] {\n const next = [...sizes];\n\n for (let iteration = 0; iteration < next.length * 4; iteration += 1) {\n const difference = roundPercentage(100 - sum(next));\n if (Math.abs(difference) <= 0.001) {\n return next;\n }\n\n const adjustableIndexes = next.flatMap((size, index) => {\n const room = difference > 0 ? maximums[index] - size : size - minimums[index];\n return room > 0.001 ? [index] : [];\n });\n\n if (!adjustableIndexes.length) {\n return next;\n }\n\n const perPanelDelta = difference / adjustableIndexes.length;\n adjustableIndexes.forEach((index) => {\n next[index] = clamp(next[index] + perPanelDelta, minimums[index], maximums[index]);\n });\n }\n\n return next;\n}\n\nfunction toAriaValue(value: number | undefined): string | null {\n return value == null ? null : String(Math.round(value));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-scroll-area.mjs","sources":["../../../library/component/scroll-area/scroll-area.component.ts","../../../library/component/scroll-area/ojiepermana-angular-component-scroll-area.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input, numberAttribute } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n/**\n * Lightweight scroll area using native scrollbars styled via CSS.\n * Fully accessible — real scrolling, keyboard, wheel, momentum.\n */\n@Component({\n selector: 'ScrollArea',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `\n <div\n [class]=\"viewportClasses()\"\n [attr.aria-label]=\"viewportAriaLabel()\"\n [attr.role]=\"viewportRole()\"\n [attr.tabindex]=\"viewportTabIndex()\">\n <ng-content />\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n overflow: hidden;\n position: relative;\n }\n .scroll-area-viewport {\n overflow: auto;\n scrollbar-width: thin;\n scrollbar-color: var(--tw-scrollbar-thumb, hsl(var(--scrollbar-thumb)))\n var(--tw-scrollbar-track, hsl(var(--scrollbar-track)));\n }\n .scroll-area-viewport::-webkit-scrollbar {\n width: var(--scrollbar-size, 0.5rem);\n height: var(--scrollbar-size, 0.5rem);\n }\n .scroll-area-viewport::-webkit-scrollbar-track {\n background: var(--tw-scrollbar-track, hsl(var(--scrollbar-track)));\n }\n .scroll-area-viewport::-webkit-scrollbar-thumb {\n background: var(--tw-scrollbar-thumb, hsl(var(--scrollbar-thumb)));\n border: var(--border-width) solid transparent;\n background-clip: padding-box;\n border-radius: var(--scrollbar-radius, 9999px);\n }\n .scroll-area-viewport::-webkit-scrollbar-thumb:hover {\n background: var(--scrollbar-thumb-hover, var(--tw-scrollbar-thumb, hsl(var(--scrollbar-thumb-hover))));\n background-clip: padding-box;\n }\n @media (forced-colors: active) {\n .scroll-area-viewport {\n scrollbar-width: auto;\n scrollbar-color: auto;\n }\n .scroll-area-viewport::-webkit-scrollbar-thumb {\n background: CanvasText;\n border-color: transparent;\n }\n }\n `,\n ],\n})\nexport class ScrollAreaComponent {\n readonly class = input<string>('');\n readonly viewportClass = input<string>('');\n readonly viewportAriaLabel = input<string | null>(null);\n readonly viewportTabIndex = input(0, { transform: numberAttribute });\n protected readonly classes = computed(() => cn('relative overflow-hidden', this.class()));\n protected readonly viewportRole = computed(() => (this.viewportAriaLabel() ? 'region' : null));\n protected readonly viewportClasses = computed(() =>\n cn(\n 'scroll-area-viewport h-full w-full rounded-[inherit]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring',\n this.viewportClass(),\n ),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAGA;;;AAGG;MA2DU,mBAAmB,CAAA;IACrB,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,aAAa,GAAG,KAAK,CAAS,EAAE;sFAAC;IACjC,iBAAiB,GAAG,KAAK,CAAgB,IAAI;0FAAC;IAC9C,gBAAgB,GAAG,KAAK,CAAC,CAAC,wFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AACjD,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,0BAA0B,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;AACtE,IAAA,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,iBAAiB,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC;qFAAC;AAC3E,IAAA,eAAe,GAAG,QAAQ,CAAC,MAC5C,EAAE,CACA,sDAAsD,EACtD,kGAAkG,EAClG,IAAI,CAAC,aAAa,EAAE,CACrB;wFACF;uGAbU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApDpB;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6iCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FA4CU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA1D/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,eAAA,EACL,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,WAAW;qBACvB,EAAA,QAAA,EACS;;;;;;;;AAQT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,6iCAAA,CAAA,EAAA;;;ACrBH;;AAEG;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-component-select.mjs","sources":["../../../library/component/select/select.component.ts","../../../library/component/select/option.component.ts","../../../library/component/select/ojiepermana-angular-component-select.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, effect, forwardRef, inject, ViewEncapsulation } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MAT_OPTION_PARENT_COMPONENT } from '@angular/material/core';\nimport { MatSelect } from '@angular/material/select';\nimport { FormFieldContext } from '@ojiepermana/angular-component/form';\n\n/**\n * Custom shadcn-styled select.\n *\n * IMPORTANT: this MUST extend `MatSelect` (with a copied template) rather than\n * wrap `<mat-select>` in its own view. `mat-select` projects its options through\n * an `<ng-content>` that lives inside the deferred `cdk-connected-overlay`\n * `<ng-template>`. A wrapper that re-projects options into mat-select via its own\n * `<ng-content>` creates a *double* projection into that deferred slot, and the\n * projected options are never instantiated — `@ContentChildren(MatOption)` finds\n * zero, the trigger shows the placeholder instead of the bound value, and\n * `_canOpen()` refuses to open the panel. By BEING the mat-select, options are\n * direct (single-projection) content and register normally.\n *\n * The full MatSelect public API (`value`, `multiple`, `required`, `disabled`,\n * `placeholder`, `aria-*`, `open()/close()/focus()`, `selectionChange`,\n * `openedChange`, `valueChange`, and `ControlValueAccessor` for `ngModel`/reactive\n * forms) is inherited. Only the selector, template, styles, providers, and the\n * optional `<FormField>` bridge are declared here.\n */\n@Component({\n selector: 'SelectField',\n exportAs: 'matSelect',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [OverlayModule],\n host: {\n class: 'mat-mdc-select',\n role: 'combobox',\n 'aria-haspopup': 'listbox',\n },\n providers: [\n { provide: MatSelect, useExisting: forwardRef(() => SelectComponent) },\n { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: forwardRef(() => SelectComponent) },\n ],\n styleUrl: './select.component.css',\n template: `\n <div\n cdk-overlay-origin\n class=\"mat-mdc-select-trigger\"\n (click)=\"open()\"\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n #trigger>\n <div class=\"mat-mdc-select-value\" [attr.id]=\"_valueId\">\n @if (empty) {\n <span class=\"mat-mdc-select-placeholder mat-mdc-select-min-line\">{{ placeholder }}</span>\n } @else {\n <span class=\"mat-mdc-select-value-text\">\n @if (customTrigger) {\n <ng-content select=\"mat-select-trigger\"></ng-content>\n } @else {\n <span class=\"mat-mdc-select-min-line\">{{ triggerValue }}</span>\n }\n </span>\n }\n </div>\n\n <div class=\"mat-mdc-select-arrow-wrapper\">\n <div class=\"mat-mdc-select-arrow\">\n <!-- Use an inline SVG, because it works better than a CSS triangle in high contrast mode. -->\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\" />\n </svg>\n </div>\n </div>\n </div>\n\n <ng-template\n cdk-connected-overlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayPanelClass]=\"_overlayPanelClass\"\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayPositions]=\"_positions\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayUsePopover]=\"_popoverLocation\"\n (detach)=\"close()\"\n (backdropClick)=\"close()\"\n (overlayKeydown)=\"_handleOverlayKeydown($event)\">\n <!-- mat-undefined is weird, but we were using it internally -->\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open select-panel\"\n [class]=\"panelClass\"\n [class.mat-select-panel-animations-enabled]=\"!_animationsDisabled\"\n [class.mat-primary]=\"_parentFormField?.color === 'primary'\"\n [class.mat-accent]=\"_parentFormField?.color === 'accent'\"\n [class.mat-warn]=\"_parentFormField?.color === 'warn'\"\n [class.mat-undefined]=\"!_parentFormField?.color\"\n [attr.id]=\"id + '-panel'\"\n [attr.aria-multiselectable]=\"multiple\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"_getPanelAriaLabelledby()\"\n (keydown)=\"_handleKeydown($event)\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n `,\n})\nexport class SelectComponent extends MatSelect {\n /** Optional bridge to an enclosing edsis `<FormField>` (validation + a11y). */\n private readonly formFieldContext = inject(FormFieldContext, { optional: true });\n\n constructor() {\n super();\n\n const ctx = this.formFieldContext;\n if (ctx) {\n // Mirror the FormField invalid state onto mat-select's errorState.\n this.errorStateMatcher = { isErrorState: () => ctx.invalid() };\n // Link the FormField's description/message ids for screen readers.\n effect(() => {\n const describedBy = ctx.describedBy();\n if (describedBy) {\n this.userAriaDescribedBy = describedBy;\n }\n });\n }\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n // Register the bound control so <FormField> can derive invalid/aria state.\n this.formFieldContext?.control.set(this.ngControl?.control ?? null);\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from '@angular/core';\nimport { MatOption, MatPseudoCheckbox, MatRipple } from '@angular/material/core';\n\n/**\n * Option for `<SelectField>`.\n *\n * IMPORTANT: this MUST extend `MatOption` rather than wrap it in a child view.\n * `mat-select` discovers options via `@ContentChildren(MatOption, { descendants: true })`,\n * and Angular content queries do NOT cross into a child component's view. A\n * previous version rendered `<mat-option>` inside this component's template, so\n * mat-select found zero options — the trigger showed its placeholder instead of\n * the bound value and `MatSelect._canOpen()` refused to open (it returns false\n * when `options.length === 0`). By extending `MatOption` and re-providing it,\n * the `<SelectItem>` element IS a real option that the query matches, working\n * both at top level and nested inside `<mat-optgroup>`.\n *\n * Inputs (`value`, `disabled`, `id`), outputs, host bindings, and the internal\n * `#text` view query are inherited from `MatOption`; only the template, styles,\n * and the self-provider below are declared here. The template/styles mirror\n * Material's own option so rendering stays pixel-identical.\n */\n@Component({\n selector: 'SelectItem',\n imports: [MatPseudoCheckbox, MatRipple],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matOption',\n providers: [{ provide: MatOption, useExisting: forwardRef(() => OptionComponent) }],\n template: `\n @if (multiple) {\n <mat-pseudo-checkbox\n class=\"mat-mdc-option-pseudo-checkbox\"\n [disabled]=\"disabled\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n aria-hidden=\"true\" />\n }\n\n <ng-content select=\"mat-icon\" />\n\n <span class=\"mdc-list-item__primary-text\" #text><ng-content /></span>\n\n @if (!multiple && selected && !hideSingleSelectionIndicator) {\n <mat-pseudo-checkbox\n class=\"mat-mdc-option-pseudo-checkbox\"\n [disabled]=\"disabled\"\n state=\"checked\"\n aria-hidden=\"true\"\n appearance=\"minimal\" />\n }\n\n @if (group && group._inert) {\n <span class=\"cdk-visually-hidden\">({{ group.label }})</span>\n }\n\n <div\n class=\"mat-mdc-option-ripple mat-focus-indicator\"\n aria-hidden=\"true\"\n mat-ripple\n [matRippleTrigger]=\"_getHostElement()\"\n [matRippleDisabled]=\"disabled || disableRipple\"></div>\n `,\n styleUrl: './option.component.css',\n})\nexport class OptionComponent extends MatOption {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|