@3ddv/software-division-components 2.0.1 → 2.0.3
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/fesm2022/3ddv-software-division-components-backoffice-datepicker.mjs +4 -4
- package/fesm2022/3ddv-software-division-components-backoffice-datepicker.mjs.map +1 -1
- package/fesm2022/3ddv-software-division-components-backoffice-table.mjs +2 -2
- package/fesm2022/3ddv-software-division-components-backoffice-table.mjs.map +1 -1
- package/fesm2022/3ddv-software-division-components-dvm-legend.mjs +4 -4
- package/fesm2022/3ddv-software-division-components-dvm-legend.mjs.map +1 -1
- package/fesm2022/3ddv-software-division-components-dvm-popover.mjs.map +1 -1
- package/fesm2022/3ddv-software-division-components-generic-button.mjs +4 -2
- package/fesm2022/3ddv-software-division-components-generic-button.mjs.map +1 -1
- package/fesm2022/3ddv-software-division-components-generic-carousel.mjs +354 -0
- package/fesm2022/3ddv-software-division-components-generic-carousel.mjs.map +1 -0
- package/fesm2022/3ddv-software-division-components-generic-dialog.mjs +1 -1
- package/fesm2022/3ddv-software-division-components-generic-dialog.mjs.map +1 -1
- package/fesm2022/3ddv-software-division-components-generic-icon.mjs +28 -5
- package/fesm2022/3ddv-software-division-components-generic-icon.mjs.map +1 -1
- package/fesm2022/3ddv-software-division-components-generic-select.mjs +31 -11
- package/fesm2022/3ddv-software-division-components-generic-select.mjs.map +1 -1
- package/package.json +5 -1
- package/styles.css +1 -1
- package/types/3ddv-software-division-components-generic-button.d.ts +3 -1
- package/types/3ddv-software-division-components-generic-carousel.d.ts +53 -0
- package/types/3ddv-software-division-components-generic-icon.d.ts +10 -1
- package/types/3ddv-software-division-components-generic-select.d.ts +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3ddv-software-division-components-generic-button.mjs","sources":["../../generic/button/ui/ui-button-helm/src/lib/hlm-button.token.ts","../../generic/button/ui/ui-button-helm/src/lib/hlm-button.ts","../../generic/button/ui/ui-button-helm/src/index.ts","../../generic/button/button.component.ts","../../generic/button/button.component.html","../../generic/button/public-api.ts","../../generic/button/3ddv-software-division-components-generic-button.ts"],"sourcesContent":["import { InjectionToken, ValueProvider, inject } from '@angular/core';\nimport type { ButtonVariants } from './hlm-button';\n\nexport interface BrnButtonConfig {\n\tvariant: ButtonVariants['variant'];\n\tsize: ButtonVariants['size'];\n}\n\nconst defaultConfig: BrnButtonConfig = {\n\tvariant: 'default',\n\tsize: 'default',\n};\n\nconst BrnButtonConfigToken = new InjectionToken<BrnButtonConfig>('BrnButtonConfig');\n\nexport function provideBrnButtonConfig(config: Partial<BrnButtonConfig>): ValueProvider {\n\treturn { provide: BrnButtonConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectBrnButtonConfig(): BrnButtonConfig {\n\treturn inject(BrnButtonConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import { Directive, computed, input, signal } from '@angular/core';\nimport { hlm } from '@spartan-ng/brain/core';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport type { ClassValue } from 'clsx';\nimport { injectBrnButtonConfig } from './hlm-button.token';\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_ng-icon]:pointer-events-none shrink-0 [&_ng-icon]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-default',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90',\n destructive:\n 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\n outline: 'border bg-background shadow-xs dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n secondary: 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2 has-[>ng-icon]:px-3',\n sm: 'h-8 rounded-md gap-1.5 px-3 has-[>ng-icon]:px-2.5',\n lg: 'h-10 rounded-md px-6 has-[>ng-icon]:px-4',\n icon: 'size-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nexport type ButtonVariants = VariantProps<typeof buttonVariants>;\n\n@Directive({\n selector: '[hlmBtn]',\n standalone: true,\n exportAs: 'hlmBtn',\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class HlmButton {\n private readonly _config = injectBrnButtonConfig();\n\n private readonly _additionalClasses = signal<ClassValue>('');\n\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n protected readonly _computedClass = computed(() =>\n hlm(buttonVariants({ variant: this.variant(), size: this.size() }), this.userClass(), this._additionalClasses())\n );\n\n public readonly variant = input<ButtonVariants['variant']>(this._config.variant);\n\n public readonly size = input<ButtonVariants['size']>(this._config.size);\n\n setClass(classes: string): void {\n this._additionalClasses.set(classes);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { HlmButton } from './lib/hlm-button';\nexport * from './lib/hlm-button';\nexport * from './lib/hlm-button.token';\n\n@NgModule({\n\timports: [HlmButton],\n\texports: [HlmButton],\n})\nexport class HlmButtonModule {}\n","import { Size, SIZES, ThemeClass } from '@3ddv/software-division-components/shared';\nimport { Component, computed, effect, ElementRef, input, output, signal } from '@angular/core';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { HlmButtonModule } from './ui/ui-button-helm/src';\n\nconst BUTTON_VARIANTS = {\n primary: 'primary',\n secondary: 'secondary',\n accent: 'accent',\n alternative: 'alternative',\n warning: 'warning',\n success: 'success',\n outline: 'outline',\n destructive: 'destructive',\n 'primary-light': 'primary-light',\n 'alternative-light': 'alternative-light',\n 'success-muted': 'success-muted',\n 'accent-light': 'accent-light',\n 'warning-light': 'warning-light',\n 'destructive-light': 'destructive-light',\n 'outline-white': 'outline-white',\n 'outline-alternative': 'outline-alternative',\n 'outline-accent': 'outline-accent',\n link: 'link',\n} as const;\n\ntype ButtonVariant = (typeof BUTTON_VARIANTS)[keyof typeof BUTTON_VARIANTS];\n\ntype ButtonType = 'button' | 'submit' | 'reset';\n\nexport type ButtonStyleClasses = ReturnType<(typeof ButtonComponent.prototype)['styleClass']>;\n\n/**\n * A customizable button component built on Spartan UI Button.\n *\n * This component supports various configurations and exposes all Spartan UI button functionality.\n * All HTML button attributes and events are automatically forwarded to the inner button element.\n *\n * @since 1.0.0-alpha.1\n * @updated 1.0.0-alpha.3\n */\n@Component({\n selector: 'sdc-button',\n styleUrls: ['./button.component.css'],\n templateUrl: './button.component.html',\n imports: [HlmButtonModule],\n})\nexport class ButtonComponent {\n private readonly allowedVariants = Object.values(BUTTON_VARIANTS).map(v => `variant-${v}` as const);\n private readonly allowedSizes = Object.values(SIZES).map(v => `size-${v}` as const);\n private readonly allowedCircleSizes = [\n 'size-circle-sm',\n 'size-circle-md',\n 'size-circle-lg',\n 'size-circle-xl',\n ] as const;\n private readonly allowedRadius = [\n 'radius-default',\n 'radius-sm',\n 'radius-md',\n 'radius-lg',\n 'radius-xl',\n 'radius-2xl',\n 'radius-full',\n ] as const;\n private readonly allowedBorder = ['border-0', 'border-default', 'border-2', 'border-4', 'border-8'] as const;\n\n /**\n * The current theme applied to the component.\n */\n public readonly theme = input<ThemeClass>('theme-sdc');\n\n /**\n * Predefined styles to apply to the component.\n * Can be a single class or multiple classes from different categories.\n */\n public readonly styleClass = input<\n (\n | (typeof this.allowedVariants)[number]\n | (typeof this.allowedSizes)[number]\n | (typeof this.allowedCircleSizes)[number]\n | (typeof this.allowedRadius)[number]\n | (typeof this.allowedBorder)[number]\n )[]\n >([]);\n\n // Computed signal that validates and filters the styleClass input\n private readonly _validatedStyleClass = computed(() => {\n const value = this.styleClass();\n\n if (!Array.isArray(value)) {\n console.warn('ButtonComponent: styleClass must be an array, defaulting to empty array');\n return [];\n }\n\n const validValues = value.filter(\n style =>\n this.allowedVariants.includes(style as any) ||\n this.allowedSizes.includes(style as any) ||\n this.allowedCircleSizes.includes(style as any) ||\n this.allowedRadius.includes(style as any) ||\n this.allowedBorder.includes(style as any)\n );\n\n const invalidValues = value.filter(\n style =>\n !this.allowedVariants.includes(style as any) &&\n !this.allowedSizes.includes(style as any) &&\n !this.allowedCircleSizes.includes(style as any) &&\n !this.allowedRadius.includes(style as any) &&\n !this.allowedBorder.includes(style as any)\n );\n\n if (invalidValues.length > 0) {\n throw new Error(\n `ButtonComponent: Invalid styleClass values ignored: ${invalidValues.join(', ')}. Allowed values: ${[\n ...this.allowedVariants,\n ...this.allowedSizes,\n ...this.allowedCircleSizes,\n ...this.allowedRadius,\n ...this.allowedBorder,\n ].join(', ')}`\n );\n }\n\n return validValues;\n });\n\n /**\n * Additional classes\n */\n public readonly className = input<string>('');\n\n /**\n * Button component style variant\n */\n public readonly variant = input<ButtonVariant>('primary');\n\n /**\n * Button component size variant\n */\n public readonly size = input<Size>('md');\n\n /**\n * Native button type attribute\n */\n public readonly type = input<ButtonType>('button');\n\n /**\n * Whether the component is disabled.\n */\n public readonly disabled = input<boolean>(false);\n\n /**\n * Whether to enable the ripple effect on the component.\n * Default value is false.\n */\n public readonly ripple = input<boolean>(false);\n\n /**\n * Event emitted when the component is clicked.\n */\n public readonly onClick = output<MouseEvent>();\n\n /**\n * Event emitted when the component receives focus.\n */\n public readonly onFocus = output<FocusEvent>();\n\n /**\n * Event emitted when the component loses focus.\n */\n public readonly onBlur = output<FocusEvent>();\n\n protected readonly _sizeClass = computed(() => {\n const size = SIZES[this.size()];\n\n if (!size) {\n throw new Error(`size must be one of these: ${Object.values(SIZES).join(', ')}}`);\n }\n\n return `size-${size}`;\n });\n\n protected readonly _variantClass = computed(() => {\n const variant = BUTTON_VARIANTS[this.variant()];\n\n if (!variant) {\n throw new Error(`variant must be one of these: ${Object.values(BUTTON_VARIANTS).join(', ')}}`);\n }\n\n return `variant-${variant}`;\n });\n\n /**\n * Computed class string that combines theme and user classes.\n */\n protected readonly computedClass = computed(() => {\n const themeClass = this.theme();\n const styleClass = this._validatedStyleClass();\n const sizeClass = this._sizeClass();\n const variantClass = this._variantClass();\n const className = this.className();\n return Array.from(new Set(['sdc-button', themeClass, sizeClass, variantClass, ...styleClass, className]))\n .filter(Boolean)\n .join(' ');\n });\n\n /**\n * Debounce time in milliseconds. When null, no debounce is applied.\n * Default value is null (no debounce).\n */\n public readonly debounce = input<number | null>(null);\n\n /**\n * Event emitted to notify the debounce state.\n * Returns true while the component is debounced, false when not.\n */\n public readonly isDebounced = output<boolean>();\n\n /**\n * Signal to track the current debounce state of the component.\n */\n protected readonly debounceState = signal<boolean>(false);\n\n /**\n * Subject for handling click events with debounce.\n */\n private readonly clickSubject = new Subject<MouseEvent>();\n\n /**\n * Subject for cleanup.\n */\n private readonly destroy$ = new Subject<void>();\n\n /**\n * Current subscription for debounce.\n */\n private debounceSubscription: Subscription | null = null;\n\n /**\n * Current debounce timeout.\n */\n private debounceTimeout: ReturnType<typeof setTimeout> | null = null;\n\n constructor(private elementRef: ElementRef) {\n // Set up reactive debounce handling within injection context\n effect(() => {\n const debounceTime = this.debounce();\n this.setupDebounce(debounceTime);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.clickSubject.complete();\n if (this.debounceSubscription) {\n this.debounceSubscription.unsubscribe();\n }\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n }\n\n /**\n * Sets up the debounce functionality for click events.\n */\n private setupDebounce(debounceTime: number | null): void {\n // Clear existing subscription\n if (this.debounceSubscription) {\n this.debounceSubscription.unsubscribe();\n }\n\n // Clear existing timeout\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = null;\n }\n\n // Set up new subscription\n this.debounceSubscription = this.clickSubject.pipe(takeUntil(this.destroy$)).subscribe((event: MouseEvent) => {\n // Clear existing timeout\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n\n // Set new timeout\n this.debounceTimeout = setTimeout(() => {\n this.debounceState.set(false);\n this.isDebounced.emit(false);\n this.onClick.emit(event);\n this.debounceTimeout = null;\n }, debounceTime ?? 0);\n });\n }\n\n /**\n * Handles click events with debounce functionality.\n */\n protected handleClick(event: MouseEvent): void {\n const debounceTime = this.debounce();\n\n if (debounceTime !== null && debounceTime > 0) {\n // Apply debounce\n this.debounceState.set(true);\n this.isDebounced.emit(true);\n this.clickSubject.next(event);\n } else {\n // No debounce, emit immediately\n this.onClick.emit(event);\n }\n }\n\n /**\n * Handles focus events and emits the onFocus output.\n */\n protected handleFocus(event: FocusEvent): void {\n this.onFocus.emit(event);\n }\n\n /**\n * Handles blur events and emits the onBlur output.\n */\n protected handleBlur(event: FocusEvent): void {\n this.onBlur.emit(event);\n }\n\n /**\n * Creates a ripple effect at the specified position.\n */\n protected createRipple(event: MouseEvent): void {\n if (!this.ripple()) return;\n\n const button = event.currentTarget as HTMLElement;\n const rect = button.getBoundingClientRect();\n const size = Math.max(rect.width, rect.height);\n const x = event.clientX - rect.left - size / 2;\n const y = event.clientY - rect.top - size / 2;\n\n const ripple = document.createElement('span');\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = x + 'px';\n ripple.style.top = y + 'px';\n ripple.classList.add('sdc-ripple');\n\n button.appendChild(ripple);\n\n setTimeout(() => {\n ripple.remove();\n }, 600);\n }\n}\n","<button\n hlmBtn\n [class]=\"computedClass()\"\n [disabled]=\"disabled() || debounceState()\"\n (click)=\"handleClick($event); createRipple($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [type]=\"type()\">\n <ng-content></ng-content>\n</button>\n","/*\n * Public API Surface of software-division-components\n */\n\nexport * from './button.component';\nexport { HlmButton, HlmButtonModule, buttonVariants, provideBrnButtonConfig } from './ui/ui-button-helm/src';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.HlmButton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"3ddv-software-division-components-generic-button.mjs","sources":["../../generic/button/ui/ui-button-helm/src/lib/hlm-button.token.ts","../../generic/button/ui/ui-button-helm/src/lib/hlm-button.ts","../../generic/button/ui/ui-button-helm/src/index.ts","../../generic/button/button.component.ts","../../generic/button/button.component.html","../../generic/button/public-api.ts","../../generic/button/3ddv-software-division-components-generic-button.ts"],"sourcesContent":["import { InjectionToken, ValueProvider, inject } from '@angular/core';\nimport type { ButtonVariants } from './hlm-button';\n\nexport interface BrnButtonConfig {\n\tvariant: ButtonVariants['variant'];\n\tsize: ButtonVariants['size'];\n}\n\nconst defaultConfig: BrnButtonConfig = {\n\tvariant: 'default',\n\tsize: 'default',\n};\n\nconst BrnButtonConfigToken = new InjectionToken<BrnButtonConfig>('BrnButtonConfig');\n\nexport function provideBrnButtonConfig(config: Partial<BrnButtonConfig>): ValueProvider {\n\treturn { provide: BrnButtonConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectBrnButtonConfig(): BrnButtonConfig {\n\treturn inject(BrnButtonConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import { Directive, computed, input, signal } from '@angular/core';\nimport { hlm } from '@spartan-ng/brain/core';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport type { ClassValue } from 'clsx';\nimport { injectBrnButtonConfig } from './hlm-button.token';\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_ng-icon]:pointer-events-none shrink-0 [&_ng-icon]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-default',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90',\n destructive:\n 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\n outline: 'border bg-background shadow-xs dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n secondary: 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2 has-[>ng-icon]:px-3',\n sm: 'h-8 rounded-md gap-1.5 px-3 has-[>ng-icon]:px-2.5',\n lg: 'h-10 rounded-md px-6 has-[>ng-icon]:px-4',\n icon: 'size-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nexport type ButtonVariants = VariantProps<typeof buttonVariants>;\n\n@Directive({\n selector: '[hlmBtn]',\n standalone: true,\n exportAs: 'hlmBtn',\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class HlmButton {\n private readonly _config = injectBrnButtonConfig();\n\n private readonly _additionalClasses = signal<ClassValue>('');\n\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n protected readonly _computedClass = computed(() =>\n hlm(buttonVariants({ variant: this.variant(), size: this.size() }), this.userClass(), this._additionalClasses())\n );\n\n public readonly variant = input<ButtonVariants['variant']>(this._config.variant);\n\n public readonly size = input<ButtonVariants['size']>(this._config.size);\n\n setClass(classes: string): void {\n this._additionalClasses.set(classes);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { HlmButton } from './lib/hlm-button';\nexport * from './lib/hlm-button';\nexport * from './lib/hlm-button.token';\n\n@NgModule({\n\timports: [HlmButton],\n\texports: [HlmButton],\n})\nexport class HlmButtonModule {}\n","import { Size, SIZES, ThemeClass } from '@3ddv/software-division-components/shared';\nimport { Component, computed, effect, ElementRef, input, output, signal } from '@angular/core';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { HlmButtonModule } from './ui/ui-button-helm/src';\n\nconst BUTTON_VARIANTS = {\n primary: 'primary',\n secondary: 'secondary',\n accent: 'accent',\n alternative: 'alternative',\n warning: 'warning',\n success: 'success',\n outline: 'outline',\n destructive: 'destructive',\n 'primary-light': 'primary-light',\n 'alternative-light': 'alternative-light',\n 'success-muted': 'success-muted',\n 'accent-light': 'accent-light',\n 'warning-light': 'warning-light',\n 'destructive-light': 'destructive-light',\n 'outline-white': 'outline-white',\n 'outline-alternative': 'outline-alternative',\n 'outline-accent': 'outline-accent',\n link: 'link',\n gray: 'gray',\n white: 'white',\n} as const;\n\ntype ButtonVariant = (typeof BUTTON_VARIANTS)[keyof typeof BUTTON_VARIANTS];\n\ntype ButtonType = 'button' | 'submit' | 'reset';\n\nexport type ButtonStyleClasses = ReturnType<(typeof ButtonComponent.prototype)['styleClass']>;\n\n/**\n * A customizable button component built on Spartan UI Button.\n *\n * This component supports various configurations and exposes all Spartan UI button functionality.\n * All HTML button attributes and events are automatically forwarded to the inner button element.\n *\n * @since 1.0.0-alpha.1\n * @updated 1.0.0-alpha.3\n */\n@Component({\n selector: 'sdc-button',\n styleUrls: ['./button.component.css'],\n templateUrl: './button.component.html',\n imports: [HlmButtonModule],\n})\nexport class ButtonComponent {\n private readonly allowedVariants = Object.values(BUTTON_VARIANTS).map(v => `variant-${v}` as const);\n private readonly allowedSizes = Object.values(SIZES).map(v => `size-${v}` as const);\n private readonly allowedCircleSizes = [\n 'size-circle-sm',\n 'size-circle-md',\n 'size-circle-lg',\n 'size-circle-xl',\n ] as const;\n private readonly allowedRadius = [\n 'radius-default',\n 'radius-sm',\n 'radius-md',\n 'radius-lg',\n 'radius-xl',\n 'radius-2xl',\n 'radius-full',\n ] as const;\n private readonly allowedBorder = ['border-0', 'border-default', 'border-2', 'border-4', 'border-8'] as const;\n\n /**\n * The current theme applied to the component.\n */\n public readonly theme = input<ThemeClass>('theme-sdc');\n\n /**\n * Predefined styles to apply to the component.\n * Can be a single class or multiple classes from different categories.\n */\n public readonly styleClass = input<\n (\n | (typeof this.allowedVariants)[number]\n | (typeof this.allowedSizes)[number]\n | (typeof this.allowedCircleSizes)[number]\n | (typeof this.allowedRadius)[number]\n | (typeof this.allowedBorder)[number]\n )[]\n >([]);\n\n // Computed signal that validates and filters the styleClass input\n private readonly _validatedStyleClass = computed(() => {\n const value = this.styleClass();\n\n if (!Array.isArray(value)) {\n console.warn('ButtonComponent: styleClass must be an array, defaulting to empty array');\n return [];\n }\n\n const validValues = value.filter(\n style =>\n this.allowedVariants.includes(style as any) ||\n this.allowedSizes.includes(style as any) ||\n this.allowedCircleSizes.includes(style as any) ||\n this.allowedRadius.includes(style as any) ||\n this.allowedBorder.includes(style as any)\n );\n\n const invalidValues = value.filter(\n style =>\n !this.allowedVariants.includes(style as any) &&\n !this.allowedSizes.includes(style as any) &&\n !this.allowedCircleSizes.includes(style as any) &&\n !this.allowedRadius.includes(style as any) &&\n !this.allowedBorder.includes(style as any)\n );\n\n if (invalidValues.length > 0) {\n throw new Error(\n `ButtonComponent: Invalid styleClass values ignored: ${invalidValues.join(', ')}. Allowed values: ${[\n ...this.allowedVariants,\n ...this.allowedSizes,\n ...this.allowedCircleSizes,\n ...this.allowedRadius,\n ...this.allowedBorder,\n ].join(', ')}`\n );\n }\n\n return validValues;\n });\n\n /**\n * Additional classes\n */\n public readonly className = input<string>('');\n\n /**\n * Button component style variant\n */\n public readonly variant = input<ButtonVariant>('primary');\n\n /**\n * Button component size variant\n */\n public readonly size = input<Size>('md');\n\n /**\n * Native button type attribute\n */\n public readonly type = input<ButtonType>('button');\n\n /**\n * Whether the component is disabled.\n */\n public readonly disabled = input<boolean>(false);\n\n /**\n * Whether to enable the ripple effect on the component.\n * Default value is false.\n */\n public readonly ripple = input<boolean>(false);\n\n /**\n * Event emitted when the component is clicked.\n */\n public readonly onClick = output<MouseEvent>();\n\n /**\n * Event emitted when the component receives focus.\n */\n public readonly onFocus = output<FocusEvent>();\n\n /**\n * Event emitted when the component loses focus.\n */\n public readonly onBlur = output<FocusEvent>();\n\n protected readonly _sizeClass = computed(() => {\n const size = SIZES[this.size()];\n\n if (!size) {\n throw new Error(`size must be one of these: ${Object.values(SIZES).join(', ')}}`);\n }\n\n return `size-${size}`;\n });\n\n protected readonly _variantClass = computed(() => {\n const variant = BUTTON_VARIANTS[this.variant()];\n\n if (!variant) {\n throw new Error(`variant must be one of these: ${Object.values(BUTTON_VARIANTS).join(', ')}}`);\n }\n\n return `variant-${variant}`;\n });\n\n /**\n * Computed class string that combines theme and user classes.\n */\n protected readonly computedClass = computed(() => {\n const themeClass = this.theme();\n const styleClass = this._validatedStyleClass();\n const sizeClass = this._sizeClass();\n const variantClass = this._variantClass();\n const className = this.className();\n return Array.from(new Set(['sdc-button', themeClass, sizeClass, variantClass, ...styleClass, className]))\n .filter(Boolean)\n .join(' ');\n });\n\n /**\n * Debounce time in milliseconds. When null, no debounce is applied.\n * Default value is null (no debounce).\n */\n public readonly debounce = input<number | null>(null);\n\n /**\n * Event emitted to notify the debounce state.\n * Returns true while the component is debounced, false when not.\n */\n public readonly isDebounced = output<boolean>();\n\n /**\n * Signal to track the current debounce state of the component.\n */\n protected readonly debounceState = signal<boolean>(false);\n\n /**\n * Subject for handling click events with debounce.\n */\n private readonly clickSubject = new Subject<MouseEvent>();\n\n /**\n * Subject for cleanup.\n */\n private readonly destroy$ = new Subject<void>();\n\n /**\n * Current subscription for debounce.\n */\n private debounceSubscription: Subscription | null = null;\n\n /**\n * Current debounce timeout.\n */\n private debounceTimeout: ReturnType<typeof setTimeout> | null = null;\n\n constructor(private elementRef: ElementRef) {\n // Set up reactive debounce handling within injection context\n effect(() => {\n const debounceTime = this.debounce();\n this.setupDebounce(debounceTime);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.clickSubject.complete();\n if (this.debounceSubscription) {\n this.debounceSubscription.unsubscribe();\n }\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n }\n\n /**\n * Sets up the debounce functionality for click events.\n */\n private setupDebounce(debounceTime: number | null): void {\n // Clear existing subscription\n if (this.debounceSubscription) {\n this.debounceSubscription.unsubscribe();\n }\n\n // Clear existing timeout\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = null;\n }\n\n // Set up new subscription\n this.debounceSubscription = this.clickSubject.pipe(takeUntil(this.destroy$)).subscribe((event: MouseEvent) => {\n // Clear existing timeout\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n\n // Set new timeout\n this.debounceTimeout = setTimeout(() => {\n this.debounceState.set(false);\n this.isDebounced.emit(false);\n this.onClick.emit(event);\n this.debounceTimeout = null;\n }, debounceTime ?? 0);\n });\n }\n\n /**\n * Handles click events with debounce functionality.\n */\n protected handleClick(event: MouseEvent): void {\n const debounceTime = this.debounce();\n\n if (debounceTime !== null && debounceTime > 0) {\n // Apply debounce\n this.debounceState.set(true);\n this.isDebounced.emit(true);\n this.clickSubject.next(event);\n } else {\n // No debounce, emit immediately\n this.onClick.emit(event);\n }\n }\n\n /**\n * Handles focus events and emits the onFocus output.\n */\n protected handleFocus(event: FocusEvent): void {\n this.onFocus.emit(event);\n }\n\n /**\n * Handles blur events and emits the onBlur output.\n */\n protected handleBlur(event: FocusEvent): void {\n this.onBlur.emit(event);\n }\n\n /**\n * Creates a ripple effect at the specified position.\n */\n protected createRipple(event: MouseEvent): void {\n if (!this.ripple()) return;\n\n const button = event.currentTarget as HTMLElement;\n const rect = button.getBoundingClientRect();\n const size = Math.max(rect.width, rect.height);\n const x = event.clientX - rect.left - size / 2;\n const y = event.clientY - rect.top - size / 2;\n\n const ripple = document.createElement('span');\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = x + 'px';\n ripple.style.top = y + 'px';\n ripple.classList.add('sdc-ripple');\n\n button.appendChild(ripple);\n\n setTimeout(() => {\n ripple.remove();\n }, 600);\n }\n}\n","<button\n hlmBtn\n [class]=\"computedClass()\"\n [disabled]=\"disabled() || debounceState()\"\n (click)=\"handleClick($event); createRipple($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [type]=\"type()\">\n <ng-content></ng-content>\n</button>\n","/*\n * Public API Surface of software-division-components\n */\n\nexport * from './button.component';\nexport { HlmButton, HlmButtonModule, buttonVariants, provideBrnButtonConfig } from './ui/ui-button-helm/src';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.HlmButton"],"mappings":"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"}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { ViewChild, ChangeDetectionStrategy, Component, viewChild, input, computed, signal, ViewEncapsulation, inject, effect, untracked, NgModule, contentChildren } from '@angular/core';
|
|
3
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
4
|
+
import { hlm } from '@spartan-ng/brain/core';
|
|
5
|
+
import { EmblaCarouselDirective } from 'embla-carousel-angular';
|
|
6
|
+
import * as i1 from '@3ddv/software-division-components/generic/button';
|
|
7
|
+
import { HlmButton, provideBrnButtonConfig } from '@3ddv/software-division-components/generic/button';
|
|
8
|
+
import { HlmIcon } from '@3ddv/software-division-components/generic/icon';
|
|
9
|
+
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
10
|
+
import { lucideArrowRight, lucideArrowLeft } from '@ng-icons/lucide';
|
|
11
|
+
|
|
12
|
+
class CarouselItemComponent {
|
|
13
|
+
template;
|
|
14
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CarouselItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CarouselItemComponent, isStandalone: true, selector: "sdc-carousel-item", viewQueries: [{ propertyName: "template", first: true, predicate: ["content"], descendants: true, static: true }], ngImport: i0, template: `
|
|
16
|
+
<ng-template #content>
|
|
17
|
+
<ng-content></ng-content>
|
|
18
|
+
</ng-template>
|
|
19
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CarouselItemComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{
|
|
24
|
+
standalone: true,
|
|
25
|
+
selector: 'sdc-carousel-item',
|
|
26
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
27
|
+
template: `
|
|
28
|
+
<ng-template #content>
|
|
29
|
+
<ng-content></ng-content>
|
|
30
|
+
</ng-template>
|
|
31
|
+
`,
|
|
32
|
+
}]
|
|
33
|
+
}], propDecorators: { template: [{
|
|
34
|
+
type: ViewChild,
|
|
35
|
+
args: ['content', { static: true }]
|
|
36
|
+
}] } });
|
|
37
|
+
|
|
38
|
+
class HlmCarousel {
|
|
39
|
+
_emblaCarousel = viewChild.required(EmblaCarouselDirective);
|
|
40
|
+
userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : {}), alias: 'class' });
|
|
41
|
+
_computedClass = computed(() => hlm('relative', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
42
|
+
orientation = input('horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : []));
|
|
43
|
+
options = input(...(ngDevMode ? [undefined, { debugName: "options" }] : []));
|
|
44
|
+
plugins = input([], ...(ngDevMode ? [{ debugName: "plugins" }] : []));
|
|
45
|
+
_emblaOptions = computed(() => ({
|
|
46
|
+
...this.options(),
|
|
47
|
+
axis: this.orientation() === 'horizontal' ? 'x' : 'y',
|
|
48
|
+
}), ...(ngDevMode ? [{ debugName: "_emblaOptions" }] : []));
|
|
49
|
+
_canScrollPrev = signal(false, ...(ngDevMode ? [{ debugName: "_canScrollPrev" }] : []));
|
|
50
|
+
canScrollPrev = this._canScrollPrev.asReadonly();
|
|
51
|
+
_canScrollNext = signal(false, ...(ngDevMode ? [{ debugName: "_canScrollNext" }] : []));
|
|
52
|
+
canScrollNext = this._canScrollNext.asReadonly();
|
|
53
|
+
_currentSlide = signal(0, ...(ngDevMode ? [{ debugName: "_currentSlide" }] : []));
|
|
54
|
+
currentSlide = this._currentSlide.asReadonly();
|
|
55
|
+
_slideCount = signal(0, ...(ngDevMode ? [{ debugName: "_slideCount" }] : []));
|
|
56
|
+
slideCount = this._slideCount.asReadonly();
|
|
57
|
+
onEmblaEvent(event) {
|
|
58
|
+
const emblaApi = this._emblaCarousel().emblaApi;
|
|
59
|
+
if (!emblaApi) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (event === 'select' || event === 'init' || event === 'reInit') {
|
|
63
|
+
this._canScrollPrev.set(emblaApi.canScrollPrev());
|
|
64
|
+
this._canScrollNext.set(emblaApi.canScrollNext());
|
|
65
|
+
this._currentSlide.set(emblaApi.selectedScrollSnap());
|
|
66
|
+
this._slideCount.set(emblaApi.scrollSnapList().length);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
onKeydown(event) {
|
|
70
|
+
if (event.key === 'ArrowLeft') {
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
this._emblaCarousel().scrollPrev();
|
|
73
|
+
}
|
|
74
|
+
else if (event.key === 'ArrowRight') {
|
|
75
|
+
event.preventDefault();
|
|
76
|
+
this._emblaCarousel().scrollNext();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
scrollPrev() {
|
|
80
|
+
this._emblaCarousel().scrollPrev();
|
|
81
|
+
}
|
|
82
|
+
scrollNext() {
|
|
83
|
+
this._emblaCarousel().scrollNext();
|
|
84
|
+
}
|
|
85
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarousel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
86
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.4", type: HlmCarousel, isStandalone: true, selector: "hlm-carousel", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, plugins: { classPropertyName: "plugins", publicName: "plugins", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "region", "aria-roledescription": "carousel" }, listeners: { "keydown": "onKeydown($event)" }, properties: { "class": "_computedClass()" } }, viewQueries: [{ propertyName: "_emblaCarousel", first: true, predicate: EmblaCarouselDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
87
|
+
<div
|
|
88
|
+
emblaCarousel
|
|
89
|
+
class="overflow-hidden"
|
|
90
|
+
[plugins]="plugins()"
|
|
91
|
+
[options]="_emblaOptions()"
|
|
92
|
+
[subscribeToEvents]="['init', 'select', 'reInit']"
|
|
93
|
+
(emblaChange)="onEmblaEvent($event)">
|
|
94
|
+
<ng-content select="hlm-carousel-content" />
|
|
95
|
+
</div>
|
|
96
|
+
<ng-content />
|
|
97
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: EmblaCarouselDirective, selector: "[emblaCarousel]", inputs: ["options", "plugins", "subscribeToEvents", "eventsThrottleTime"], outputs: ["emblaChange"], exportAs: ["emblaCarousel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
98
|
+
}
|
|
99
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarousel, decorators: [{
|
|
100
|
+
type: Component,
|
|
101
|
+
args: [{
|
|
102
|
+
selector: 'hlm-carousel',
|
|
103
|
+
standalone: true,
|
|
104
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
105
|
+
encapsulation: ViewEncapsulation.None,
|
|
106
|
+
host: {
|
|
107
|
+
'[class]': '_computedClass()',
|
|
108
|
+
role: 'region',
|
|
109
|
+
'aria-roledescription': 'carousel',
|
|
110
|
+
'(keydown)': 'onKeydown($event)',
|
|
111
|
+
},
|
|
112
|
+
imports: [EmblaCarouselDirective],
|
|
113
|
+
template: `
|
|
114
|
+
<div
|
|
115
|
+
emblaCarousel
|
|
116
|
+
class="overflow-hidden"
|
|
117
|
+
[plugins]="plugins()"
|
|
118
|
+
[options]="_emblaOptions()"
|
|
119
|
+
[subscribeToEvents]="['init', 'select', 'reInit']"
|
|
120
|
+
(emblaChange)="onEmblaEvent($event)">
|
|
121
|
+
<ng-content select="hlm-carousel-content" />
|
|
122
|
+
</div>
|
|
123
|
+
<ng-content />
|
|
124
|
+
`,
|
|
125
|
+
}]
|
|
126
|
+
}], propDecorators: { _emblaCarousel: [{ type: i0.ViewChild, args: [i0.forwardRef(() => EmblaCarouselDirective), { isSignal: true }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], plugins: [{ type: i0.Input, args: [{ isSignal: true, alias: "plugins", required: false }] }] } });
|
|
127
|
+
|
|
128
|
+
class HlmCarouselContent {
|
|
129
|
+
_orientation = inject(HlmCarousel).orientation;
|
|
130
|
+
userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : {}), alias: 'class' });
|
|
131
|
+
_computedClass = computed(() => hlm('flex', this._orientation() === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
132
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
133
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: HlmCarouselContent, isStandalone: true, selector: "hlm-carousel-content", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0, template: ` <ng-content /> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
134
|
+
}
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselContent, decorators: [{
|
|
136
|
+
type: Component,
|
|
137
|
+
args: [{
|
|
138
|
+
selector: 'hlm-carousel-content',
|
|
139
|
+
standalone: true,
|
|
140
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
141
|
+
encapsulation: ViewEncapsulation.None,
|
|
142
|
+
host: {
|
|
143
|
+
'[class]': '_computedClass()',
|
|
144
|
+
},
|
|
145
|
+
template: ` <ng-content /> `,
|
|
146
|
+
}]
|
|
147
|
+
}], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
148
|
+
|
|
149
|
+
class HlmCarouselItem {
|
|
150
|
+
_orientation = inject(HlmCarousel).orientation;
|
|
151
|
+
userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : {}), alias: 'class' });
|
|
152
|
+
_computedClass = computed(() => hlm('min-w-0 shrink-0 grow-0 basis-full', this._orientation() === 'horizontal' ? 'pl-4' : 'pt-4', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
153
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
154
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: HlmCarouselItem, isStandalone: true, selector: "hlm-carousel-item", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "group", "aria-roledescription": "slide" }, properties: { "class": "_computedClass()" } }, ngImport: i0, template: ` <ng-content /> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
155
|
+
}
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselItem, decorators: [{
|
|
157
|
+
type: Component,
|
|
158
|
+
args: [{
|
|
159
|
+
selector: 'hlm-carousel-item',
|
|
160
|
+
standalone: true,
|
|
161
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
162
|
+
encapsulation: ViewEncapsulation.None,
|
|
163
|
+
host: {
|
|
164
|
+
'[class]': '_computedClass()',
|
|
165
|
+
role: 'group',
|
|
166
|
+
'aria-roledescription': 'slide',
|
|
167
|
+
},
|
|
168
|
+
template: ` <ng-content /> `,
|
|
169
|
+
}]
|
|
170
|
+
}], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
171
|
+
|
|
172
|
+
class HlmCarouselNext {
|
|
173
|
+
_button = inject(HlmButton);
|
|
174
|
+
_carousel = inject(HlmCarousel);
|
|
175
|
+
userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : {}), alias: 'class' });
|
|
176
|
+
_computedClass = computed(() => hlm('absolute h-8 w-8 rounded-full', this._carousel.orientation() === 'horizontal'
|
|
177
|
+
? '-right-12 top-1/2 -translate-y-1/2'
|
|
178
|
+
: '-bottom-12 left-1/2 -translate-x-1/2 rotate-90', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
179
|
+
isDisabled = () => !this._carousel.canScrollNext();
|
|
180
|
+
constructor() {
|
|
181
|
+
effect(() => {
|
|
182
|
+
const computedClass = this._computedClass();
|
|
183
|
+
untracked(() => this._button.setClass(computedClass));
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselNext, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
187
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: HlmCarouselNext, isStandalone: true, selector: "button[hlm-carousel-next], button[hlmCarouselNext]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_carousel.scrollNext()" }, properties: { "disabled": "isDisabled()" } }, providers: [provideIcons({ lucideArrowRight }), provideBrnButtonConfig({ variant: 'outline', size: 'icon' })], hostDirectives: [{ directive: i1.HlmButton, inputs: ["variant", "variant", "size", "size"] }], ngImport: i0, template: `
|
|
188
|
+
<ng-icon hlm size="sm" name="lucideArrowRight" />
|
|
189
|
+
<span class="sr-only">Next slide</span>
|
|
190
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: HlmIcon, selector: "ng-icon[hlm]", inputs: ["size", "variant"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
191
|
+
}
|
|
192
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselNext, decorators: [{
|
|
193
|
+
type: Component,
|
|
194
|
+
args: [{
|
|
195
|
+
selector: 'button[hlm-carousel-next], button[hlmCarouselNext]',
|
|
196
|
+
standalone: true,
|
|
197
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
198
|
+
encapsulation: ViewEncapsulation.None,
|
|
199
|
+
host: {
|
|
200
|
+
'[disabled]': 'isDisabled()',
|
|
201
|
+
'(click)': '_carousel.scrollNext()',
|
|
202
|
+
},
|
|
203
|
+
hostDirectives: [{ directive: HlmButton, inputs: ['variant', 'size'] }],
|
|
204
|
+
providers: [provideIcons({ lucideArrowRight }), provideBrnButtonConfig({ variant: 'outline', size: 'icon' })],
|
|
205
|
+
imports: [NgIcon, HlmIcon],
|
|
206
|
+
template: `
|
|
207
|
+
<ng-icon hlm size="sm" name="lucideArrowRight" />
|
|
208
|
+
<span class="sr-only">Next slide</span>
|
|
209
|
+
`,
|
|
210
|
+
}]
|
|
211
|
+
}], ctorParameters: () => [], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
212
|
+
|
|
213
|
+
class HlmCarouselPrevious {
|
|
214
|
+
_button = inject(HlmButton);
|
|
215
|
+
_carousel = inject(HlmCarousel);
|
|
216
|
+
userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : {}), alias: 'class' });
|
|
217
|
+
_computedClass = computed(() => hlm('absolute h-8 w-8 rounded-full', this._carousel.orientation() === 'horizontal'
|
|
218
|
+
? '-left-12 top-1/2 -translate-y-1/2'
|
|
219
|
+
: '-top-12 left-1/2 -translate-x-1/2 rotate-90', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
220
|
+
isDisabled = () => !this._carousel.canScrollPrev();
|
|
221
|
+
constructor() {
|
|
222
|
+
effect(() => {
|
|
223
|
+
const computedClass = this._computedClass();
|
|
224
|
+
untracked(() => this._button.setClass(computedClass));
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselPrevious, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
228
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: HlmCarouselPrevious, isStandalone: true, selector: "button[hlm-carousel-previous], button[hlmCarouselPrevious]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_carousel.scrollPrev()" }, properties: { "disabled": "isDisabled()" } }, providers: [provideIcons({ lucideArrowLeft }), provideBrnButtonConfig({ variant: 'outline', size: 'icon' })], hostDirectives: [{ directive: i1.HlmButton, inputs: ["variant", "variant", "size", "size"] }], ngImport: i0, template: `
|
|
229
|
+
<ng-icon hlm size="sm" name="lucideArrowLeft" />
|
|
230
|
+
<span class="sr-only">Previous slide</span>
|
|
231
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: HlmIcon, selector: "ng-icon[hlm]", inputs: ["size", "variant"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
232
|
+
}
|
|
233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselPrevious, decorators: [{
|
|
234
|
+
type: Component,
|
|
235
|
+
args: [{
|
|
236
|
+
selector: 'button[hlm-carousel-previous], button[hlmCarouselPrevious]',
|
|
237
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
238
|
+
standalone: true,
|
|
239
|
+
encapsulation: ViewEncapsulation.None,
|
|
240
|
+
host: {
|
|
241
|
+
'[disabled]': 'isDisabled()',
|
|
242
|
+
'(click)': '_carousel.scrollPrev()',
|
|
243
|
+
},
|
|
244
|
+
hostDirectives: [{ directive: HlmButton, inputs: ['variant', 'size'] }],
|
|
245
|
+
providers: [provideIcons({ lucideArrowLeft }), provideBrnButtonConfig({ variant: 'outline', size: 'icon' })],
|
|
246
|
+
imports: [NgIcon, HlmIcon],
|
|
247
|
+
template: `
|
|
248
|
+
<ng-icon hlm size="sm" name="lucideArrowLeft" />
|
|
249
|
+
<span class="sr-only">Previous slide</span>
|
|
250
|
+
`,
|
|
251
|
+
}]
|
|
252
|
+
}], ctorParameters: () => [], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
253
|
+
|
|
254
|
+
class HlmCarouselSlideDisplay {
|
|
255
|
+
_carousel = inject(HlmCarousel);
|
|
256
|
+
_currentSlide = computed(() => this._carousel.currentSlide() + 1, ...(ngDevMode ? [{ debugName: "_currentSlide" }] : []));
|
|
257
|
+
userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : {}), alias: 'class' });
|
|
258
|
+
_computedClass = computed(() => hlm('', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
259
|
+
slideClass = input('text-muted-foreground text-sm', ...(ngDevMode ? [{ debugName: "slideClass" }] : []));
|
|
260
|
+
/** Screen reader only text for the slide display */
|
|
261
|
+
label = input('Slide', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
262
|
+
_labelContent = computed(() => {
|
|
263
|
+
const currentSlide = this._currentSlide();
|
|
264
|
+
const slideCount = this._carousel.slideCount();
|
|
265
|
+
return `${this.label()} ${currentSlide} of ${slideCount} is displayed`;
|
|
266
|
+
}, ...(ngDevMode ? [{ debugName: "_labelContent" }] : []));
|
|
267
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselSlideDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
268
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: HlmCarouselSlideDisplay, isStandalone: true, selector: "hlm-carousel-slide-display", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, slideClass: { classPropertyName: "slideClass", publicName: "slideClass", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0, template: `
|
|
269
|
+
<span class="sr-only">{{ _labelContent() }}</span>
|
|
270
|
+
<div aria-hidden="true" [class]="slideClass()">{{ _currentSlide() }} / {{ _carousel.slideCount() }}</div>
|
|
271
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
272
|
+
}
|
|
273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselSlideDisplay, decorators: [{
|
|
274
|
+
type: Component,
|
|
275
|
+
args: [{
|
|
276
|
+
selector: 'hlm-carousel-slide-display',
|
|
277
|
+
standalone: true,
|
|
278
|
+
template: `
|
|
279
|
+
<span class="sr-only">{{ _labelContent() }}</span>
|
|
280
|
+
<div aria-hidden="true" [class]="slideClass()">{{ _currentSlide() }} / {{ _carousel.slideCount() }}</div>
|
|
281
|
+
`,
|
|
282
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
283
|
+
host: {
|
|
284
|
+
'[class]': '_computedClass()',
|
|
285
|
+
},
|
|
286
|
+
}]
|
|
287
|
+
}], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], slideClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "slideClass", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }] } });
|
|
288
|
+
|
|
289
|
+
const HlmCarouselImports = [
|
|
290
|
+
HlmCarousel,
|
|
291
|
+
HlmCarouselContent,
|
|
292
|
+
HlmCarouselItem,
|
|
293
|
+
HlmCarouselPrevious,
|
|
294
|
+
HlmCarouselNext,
|
|
295
|
+
HlmCarouselSlideDisplay,
|
|
296
|
+
];
|
|
297
|
+
class HlmCarouselModule {
|
|
298
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
299
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselModule, imports: [HlmCarousel,
|
|
300
|
+
HlmCarouselContent,
|
|
301
|
+
HlmCarouselItem,
|
|
302
|
+
HlmCarouselPrevious,
|
|
303
|
+
HlmCarouselNext,
|
|
304
|
+
HlmCarouselSlideDisplay], exports: [HlmCarousel,
|
|
305
|
+
HlmCarouselContent,
|
|
306
|
+
HlmCarouselItem,
|
|
307
|
+
HlmCarouselPrevious,
|
|
308
|
+
HlmCarouselNext,
|
|
309
|
+
HlmCarouselSlideDisplay] });
|
|
310
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselModule, imports: [HlmCarouselPrevious,
|
|
311
|
+
HlmCarouselNext] });
|
|
312
|
+
}
|
|
313
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmCarouselModule, decorators: [{
|
|
314
|
+
type: NgModule,
|
|
315
|
+
args: [{
|
|
316
|
+
imports: [...HlmCarouselImports],
|
|
317
|
+
exports: [...HlmCarouselImports],
|
|
318
|
+
}]
|
|
319
|
+
}] });
|
|
320
|
+
|
|
321
|
+
class CarouselComponent {
|
|
322
|
+
carouselItems = contentChildren(CarouselItemComponent, ...(ngDevMode ? [{ debugName: "carouselItems" }] : []));
|
|
323
|
+
/** Reference to the underlying HlmCarousel */
|
|
324
|
+
hlmCarousel = viewChild(HlmCarousel, ...(ngDevMode ? [{ debugName: "hlmCarousel" }] : []));
|
|
325
|
+
/** Gap between slides in pixels */
|
|
326
|
+
gap = input(16, ...(ngDevMode ? [{ debugName: "gap" }] : []));
|
|
327
|
+
/** Computed Embla options based on inputs */
|
|
328
|
+
emblaOptions = computed(() => ({
|
|
329
|
+
align: 'start',
|
|
330
|
+
containScroll: 'trimSnaps',
|
|
331
|
+
}), ...(ngDevMode ? [{ debugName: "emblaOptions" }] : []));
|
|
332
|
+
/** Whether scrolling is possible (show navigation only when true) */
|
|
333
|
+
canScroll = computed(() => {
|
|
334
|
+
const carousel = this.hlmCarousel();
|
|
335
|
+
if (!carousel)
|
|
336
|
+
return false;
|
|
337
|
+
return carousel.canScrollPrev() || carousel.canScrollNext();
|
|
338
|
+
}, ...(ngDevMode ? [{ debugName: "canScroll" }] : []));
|
|
339
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
340
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: CarouselComponent, isStandalone: true, selector: "sdc-carousel", inputs: { gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--carousel-gap.px": "gap()" } }, queries: [{ propertyName: "carouselItems", predicate: CarouselItemComponent, isSignal: true }], viewQueries: [{ propertyName: "hlmCarousel", first: true, predicate: HlmCarousel, descendants: true, isSignal: true }], ngImport: i0, template: "<hlm-carousel class=\"sdc-carousel\" [options]=\"emblaOptions()\">\n <hlm-carousel-content class=\"pl-1 sdc-carousel-content\">\n @for (item of carouselItems(); track $index) {\n <hlm-carousel-item class=\"-ml-1 sdc-carousel-item\">\n <ng-container *ngTemplateOutlet=\"item.template\"></ng-container>\n </hlm-carousel-item>\n }\n </hlm-carousel-content>\n @if (canScroll()) {\n <button class=\"bg-transparent text-primary\" hlm-carousel-previous></button>\n <button class=\"bg-transparent text-primary\" hlm-carousel-next></button>\n }\n</hlm-carousel>\n", styles: [":host{--carousel-gap: 16px;--carousel-arrow-color: var(--color-alternative, #f45f10);--carousel-arrow-size: 2.5rem;--carousel-arrow-icon-size: 1.5rem;display:block}.sdc-carousel{--sdc-carousel-max-width: 100%;display:block;position:relative;width:100%;max-width:var(--sdc-carousel-max-width)}.sdc-carousel-content{justify-content:flex-start;gap:var(--carousel-gap)}.sdc-carousel-item{flex:0 0 auto;min-width:0}.sdc-carousel :global(button[hlm-carousel-previous]),.sdc-carousel :global(button[hlm-carousel-next]){width:var(--carousel-arrow-size);height:var(--carousel-arrow-size);background-color:transparent;border:none;color:var(--carousel-arrow-color);cursor:pointer;transition:opacity .2s ease,transform .2s ease}.sdc-carousel :global(button[hlm-carousel-previous]){left:0;right:auto}.sdc-carousel :global(button[hlm-carousel-next]){right:0;left:auto}.sdc-carousel :global(button[hlm-carousel-previous]:hover),.sdc-carousel :global(button[hlm-carousel-next]:hover){opacity:.8;transform:translateY(-50%) scale(1.1)}.sdc-carousel :global(button[hlm-carousel-previous]:disabled),.sdc-carousel :global(button[hlm-carousel-next]:disabled){opacity:.3;cursor:not-allowed;color:var(--color-alternative, #f45f10);background-color:transparent}.sdc-carousel :global(button[hlm-carousel-previous]:disabled:hover),.sdc-carousel :global(button[hlm-carousel-next]:disabled:hover){transform:translateY(-50%)}.sdc-carousel :global(button[hlm-carousel-previous] ng-icon),.sdc-carousel :global(button[hlm-carousel-next] ng-icon){width:var(--carousel-arrow-icon-size);height:var(--carousel-arrow-icon-size)}@media(width>=768px){:host{--carousel-arrow-size: 3rem;--carousel-arrow-icon-size: 1.75rem}}@media(width>=1024px){:host{--carousel-arrow-size: 3.5rem;--carousel-arrow-icon-size: 2rem}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: HlmCarousel, selector: "hlm-carousel", inputs: ["class", "orientation", "options", "plugins"] }, { kind: "component", type: HlmCarouselContent, selector: "hlm-carousel-content", inputs: ["class"] }, { kind: "component", type: HlmCarouselItem, selector: "hlm-carousel-item", inputs: ["class"] }, { kind: "component", type: HlmCarouselNext, selector: "button[hlm-carousel-next], button[hlmCarouselNext]", inputs: ["class"] }, { kind: "component", type: HlmCarouselPrevious, selector: "button[hlm-carousel-previous], button[hlmCarouselPrevious]", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
341
|
+
}
|
|
342
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
343
|
+
type: Component,
|
|
344
|
+
args: [{ standalone: true, selector: 'sdc-carousel', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, HlmCarousel, HlmCarouselContent, HlmCarouselItem, HlmCarouselNext, HlmCarouselPrevious], host: {
|
|
345
|
+
'[style.--carousel-gap.px]': 'gap()',
|
|
346
|
+
}, template: "<hlm-carousel class=\"sdc-carousel\" [options]=\"emblaOptions()\">\n <hlm-carousel-content class=\"pl-1 sdc-carousel-content\">\n @for (item of carouselItems(); track $index) {\n <hlm-carousel-item class=\"-ml-1 sdc-carousel-item\">\n <ng-container *ngTemplateOutlet=\"item.template\"></ng-container>\n </hlm-carousel-item>\n }\n </hlm-carousel-content>\n @if (canScroll()) {\n <button class=\"bg-transparent text-primary\" hlm-carousel-previous></button>\n <button class=\"bg-transparent text-primary\" hlm-carousel-next></button>\n }\n</hlm-carousel>\n", styles: [":host{--carousel-gap: 16px;--carousel-arrow-color: var(--color-alternative, #f45f10);--carousel-arrow-size: 2.5rem;--carousel-arrow-icon-size: 1.5rem;display:block}.sdc-carousel{--sdc-carousel-max-width: 100%;display:block;position:relative;width:100%;max-width:var(--sdc-carousel-max-width)}.sdc-carousel-content{justify-content:flex-start;gap:var(--carousel-gap)}.sdc-carousel-item{flex:0 0 auto;min-width:0}.sdc-carousel :global(button[hlm-carousel-previous]),.sdc-carousel :global(button[hlm-carousel-next]){width:var(--carousel-arrow-size);height:var(--carousel-arrow-size);background-color:transparent;border:none;color:var(--carousel-arrow-color);cursor:pointer;transition:opacity .2s ease,transform .2s ease}.sdc-carousel :global(button[hlm-carousel-previous]){left:0;right:auto}.sdc-carousel :global(button[hlm-carousel-next]){right:0;left:auto}.sdc-carousel :global(button[hlm-carousel-previous]:hover),.sdc-carousel :global(button[hlm-carousel-next]:hover){opacity:.8;transform:translateY(-50%) scale(1.1)}.sdc-carousel :global(button[hlm-carousel-previous]:disabled),.sdc-carousel :global(button[hlm-carousel-next]:disabled){opacity:.3;cursor:not-allowed;color:var(--color-alternative, #f45f10);background-color:transparent}.sdc-carousel :global(button[hlm-carousel-previous]:disabled:hover),.sdc-carousel :global(button[hlm-carousel-next]:disabled:hover){transform:translateY(-50%)}.sdc-carousel :global(button[hlm-carousel-previous] ng-icon),.sdc-carousel :global(button[hlm-carousel-next] ng-icon){width:var(--carousel-arrow-icon-size);height:var(--carousel-arrow-icon-size)}@media(width>=768px){:host{--carousel-arrow-size: 3rem;--carousel-arrow-icon-size: 1.75rem}}@media(width>=1024px){:host{--carousel-arrow-size: 3.5rem;--carousel-arrow-icon-size: 2rem}}\n"] }]
|
|
347
|
+
}], propDecorators: { carouselItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => CarouselItemComponent), { isSignal: true }] }], hlmCarousel: [{ type: i0.ViewChild, args: [i0.forwardRef(() => HlmCarousel), { isSignal: true }] }], gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }] } });
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* Generated bundle index. Do not edit.
|
|
351
|
+
*/
|
|
352
|
+
|
|
353
|
+
export { CarouselComponent, CarouselItemComponent };
|
|
354
|
+
//# sourceMappingURL=3ddv-software-division-components-generic-carousel.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"3ddv-software-division-components-generic-carousel.mjs","sources":["../../generic/carousel/carousel-item.component.ts","../../generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel.ts","../../generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-content.ts","../../generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-item.ts","../../generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-next.ts","../../generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.ts","../../generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-slide-display.ts","../../generic/carousel/ui/ui-carousel-helm/src/index.ts","../../generic/carousel/carousel.component.ts","../../generic/carousel/carousel.component.html","../../generic/carousel/3ddv-software-division-components-generic-carousel.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n standalone: true,\n selector: 'sdc-carousel-item',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n `,\n})\nexport class CarouselItemComponent {\n @ViewChild('content', { static: true }) template!: TemplateRef<void>;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n type InputSignal,\n type Signal,\n ViewEncapsulation,\n computed,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { hlm } from '@spartan-ng/brain/core';\nimport type { ClassValue } from 'clsx';\nimport {\n EmblaCarouselDirective,\n type EmblaEventType,\n type EmblaOptionsType,\n type EmblaPluginType,\n} from 'embla-carousel-angular';\n\n@Component({\n selector: 'hlm-carousel',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '_computedClass()',\n role: 'region',\n 'aria-roledescription': 'carousel',\n '(keydown)': 'onKeydown($event)',\n },\n imports: [EmblaCarouselDirective],\n template: `\n <div\n emblaCarousel\n class=\"overflow-hidden\"\n [plugins]=\"plugins()\"\n [options]=\"_emblaOptions()\"\n [subscribeToEvents]=\"['init', 'select', 'reInit']\"\n (emblaChange)=\"onEmblaEvent($event)\">\n <ng-content select=\"hlm-carousel-content\" />\n </div>\n <ng-content />\n `,\n})\nexport class HlmCarousel {\n protected readonly _emblaCarousel = viewChild.required(EmblaCarouselDirective);\n\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n protected readonly _computedClass = computed(() => hlm('relative', this.userClass()));\n\n public readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n public readonly options: InputSignal<Omit<EmblaOptionsType, 'axis'> | undefined> =\n input<Omit<EmblaOptionsType, 'axis'>>();\n public readonly plugins: InputSignal<EmblaPluginType[]> = input<EmblaPluginType[]>([]);\n\n protected readonly _emblaOptions: Signal<EmblaOptionsType> = computed(() => ({\n ...this.options(),\n axis: this.orientation() === 'horizontal' ? 'x' : 'y',\n }));\n\n private readonly _canScrollPrev = signal(false);\n public readonly canScrollPrev = this._canScrollPrev.asReadonly();\n private readonly _canScrollNext = signal(false);\n public readonly canScrollNext = this._canScrollNext.asReadonly();\n\n private readonly _currentSlide = signal(0);\n public readonly currentSlide = this._currentSlide.asReadonly();\n private readonly _slideCount = signal(0);\n public readonly slideCount = this._slideCount.asReadonly();\n\n protected onEmblaEvent(event: EmblaEventType) {\n const emblaApi = this._emblaCarousel().emblaApi;\n\n if (!emblaApi) {\n return;\n }\n\n if (event === 'select' || event === 'init' || event === 'reInit') {\n this._canScrollPrev.set(emblaApi.canScrollPrev());\n this._canScrollNext.set(emblaApi.canScrollNext());\n\n this._currentSlide.set(emblaApi.selectedScrollSnap());\n this._slideCount.set(emblaApi.scrollSnapList().length);\n }\n }\n\n protected onKeydown(event: KeyboardEvent) {\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n this._emblaCarousel().scrollPrev();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n this._emblaCarousel().scrollNext();\n }\n }\n\n scrollPrev() {\n this._emblaCarousel().scrollPrev();\n }\n\n scrollNext() {\n this._emblaCarousel().scrollNext();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject, input } from '@angular/core';\nimport { hlm } from '@spartan-ng/brain/core';\nimport type { ClassValue } from 'clsx';\nimport { HlmCarousel } from './hlm-carousel';\n\n@Component({\n selector: 'hlm-carousel-content',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '_computedClass()',\n },\n template: ` <ng-content /> `,\n})\nexport class HlmCarouselContent {\n private readonly _orientation = inject(HlmCarousel).orientation;\n\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n protected readonly _computedClass = computed(() =>\n hlm('flex', this._orientation() === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', this.userClass())\n );\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject, input } from '@angular/core';\nimport { hlm } from '@spartan-ng/brain/core';\nimport type { ClassValue } from 'clsx';\nimport { HlmCarousel } from './hlm-carousel';\n\n@Component({\n selector: 'hlm-carousel-item',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '_computedClass()',\n role: 'group',\n 'aria-roledescription': 'slide',\n },\n template: ` <ng-content /> `,\n})\nexport class HlmCarouselItem {\n private readonly _orientation = inject(HlmCarousel).orientation;\n\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n protected readonly _computedClass = computed(() =>\n hlm('min-w-0 shrink-0 grow-0 basis-full', this._orientation() === 'horizontal' ? 'pl-4' : 'pt-4', this.userClass())\n );\n}\n","import { HlmButton, provideBrnButtonConfig } from '@3ddv/software-division-components/generic/button';\nimport { HlmIcon } from '@3ddv/software-division-components/generic/icon';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n untracked,\n} from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { hlm } from '@spartan-ng/brain/core';\nimport type { ClassValue } from 'clsx';\nimport { HlmCarousel } from './hlm-carousel';\n\n@Component({\n selector: 'button[hlm-carousel-next], button[hlmCarouselNext]',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[disabled]': 'isDisabled()',\n '(click)': '_carousel.scrollNext()',\n },\n hostDirectives: [{ directive: HlmButton, inputs: ['variant', 'size'] }],\n providers: [provideIcons({ lucideArrowRight }), provideBrnButtonConfig({ variant: 'outline', size: 'icon' })],\n imports: [NgIcon, HlmIcon],\n template: `\n <ng-icon hlm size=\"sm\" name=\"lucideArrowRight\" />\n <span class=\"sr-only\">Next slide</span>\n `,\n})\nexport class HlmCarouselNext {\n private readonly _button = inject(HlmButton);\n protected readonly _carousel = inject(HlmCarousel);\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n private readonly _computedClass = computed(() =>\n hlm(\n 'absolute h-8 w-8 rounded-full',\n this._carousel.orientation() === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n this.userClass()\n )\n );\n protected readonly isDisabled = () => !this._carousel.canScrollNext();\n\n constructor() {\n effect(() => {\n const computedClass = this._computedClass();\n\n untracked(() => this._button.setClass(computedClass));\n });\n }\n}\n","import { HlmButton, provideBrnButtonConfig } from '@3ddv/software-division-components/generic/button';\nimport { HlmIcon } from '@3ddv/software-division-components/generic/icon';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n untracked,\n} from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowLeft } from '@ng-icons/lucide';\nimport { hlm } from '@spartan-ng/brain/core';\nimport type { ClassValue } from 'clsx';\nimport { HlmCarousel } from './hlm-carousel';\n\n@Component({\n selector: 'button[hlm-carousel-previous], button[hlmCarouselPrevious]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[disabled]': 'isDisabled()',\n '(click)': '_carousel.scrollPrev()',\n },\n hostDirectives: [{ directive: HlmButton, inputs: ['variant', 'size'] }],\n providers: [provideIcons({ lucideArrowLeft }), provideBrnButtonConfig({ variant: 'outline', size: 'icon' })],\n imports: [NgIcon, HlmIcon],\n template: `\n <ng-icon hlm size=\"sm\" name=\"lucideArrowLeft\" />\n <span class=\"sr-only\">Previous slide</span>\n `,\n})\nexport class HlmCarouselPrevious {\n private readonly _button = inject(HlmButton);\n\n protected readonly _carousel = inject(HlmCarousel);\n\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n private readonly _computedClass = computed(() =>\n hlm(\n 'absolute h-8 w-8 rounded-full',\n this._carousel.orientation() === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n this.userClass()\n )\n );\n protected readonly isDisabled = () => !this._carousel.canScrollPrev();\n\n constructor() {\n effect(() => {\n const computedClass = this._computedClass();\n\n untracked(() => this._button.setClass(computedClass));\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { hlm } from '@spartan-ng/brain/core';\nimport { ClassValue } from 'clsx';\nimport { HlmCarousel } from './hlm-carousel';\n\n@Component({\n selector: 'hlm-carousel-slide-display',\n standalone: true,\n template: `\n <span class=\"sr-only\">{{ _labelContent() }}</span>\n <div aria-hidden=\"true\" [class]=\"slideClass()\">{{ _currentSlide() }} / {{ _carousel.slideCount() }}</div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class HlmCarouselSlideDisplay {\n protected readonly _carousel = inject(HlmCarousel);\n\n protected readonly _currentSlide = computed(() => this._carousel.currentSlide() + 1);\n\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n protected _computedClass = computed(() => hlm('', this.userClass()));\n\n public readonly slideClass = input<ClassValue>('text-muted-foreground text-sm');\n\n /** Screen reader only text for the slide display */\n public readonly label = input<string>('Slide');\n\n protected readonly _labelContent = computed(() => {\n const currentSlide = this._currentSlide();\n const slideCount = this._carousel.slideCount();\n return `${this.label()} ${currentSlide} of ${slideCount} is displayed`;\n });\n}\n","import { NgModule } from '@angular/core';\nimport { HlmCarousel } from './lib/hlm-carousel';\nimport { HlmCarouselContent } from './lib/hlm-carousel-content';\nimport { HlmCarouselItem } from './lib/hlm-carousel-item';\nimport { HlmCarouselNext } from './lib/hlm-carousel-next';\nimport { HlmCarouselPrevious } from './lib/hlm-carousel-previous';\nimport { HlmCarouselSlideDisplay } from './lib/hlm-carousel-slide-display';\n\nexport * from './lib/hlm-carousel';\nexport * from './lib/hlm-carousel-content';\nexport * from './lib/hlm-carousel-item';\nexport * from './lib/hlm-carousel-next';\nexport * from './lib/hlm-carousel-previous';\nexport * from './lib/hlm-carousel-slide-display';\n\nexport const HlmCarouselImports = [\n HlmCarousel,\n HlmCarouselContent,\n HlmCarouselItem,\n HlmCarouselPrevious,\n HlmCarouselNext,\n HlmCarouselSlideDisplay,\n] as const;\n\n@NgModule({\n imports: [...HlmCarouselImports],\n exports: [...HlmCarouselImports],\n})\nexport class HlmCarouselModule {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, input, viewChild } from '@angular/core';\nimport { CarouselItemComponent } from './carousel-item.component';\nimport {\n HlmCarousel,\n HlmCarouselContent,\n HlmCarouselItem,\n HlmCarouselNext,\n HlmCarouselPrevious,\n} from './ui/ui-carousel-helm/src';\n\n@Component({\n standalone: true,\n selector: 'sdc-carousel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, HlmCarousel, HlmCarouselContent, HlmCarouselItem, HlmCarouselNext, HlmCarouselPrevious],\n templateUrl: './carousel.component.html',\n styleUrls: ['./carousel.component.css'],\n host: {\n '[style.--carousel-gap.px]': 'gap()',\n },\n})\nexport class CarouselComponent {\n public carouselItems = contentChildren(CarouselItemComponent);\n\n /** Reference to the underlying HlmCarousel */\n protected hlmCarousel = viewChild(HlmCarousel);\n\n /** Gap between slides in pixels */\n public gap = input<number>(16);\n\n /** Computed Embla options based on inputs */\n protected emblaOptions = computed(() => ({\n align: 'start' as const,\n containScroll: 'trimSnaps' as const,\n }));\n\n /** Whether scrolling is possible (show navigation only when true) */\n protected canScroll = computed(() => {\n const carousel = this.hlmCarousel();\n if (!carousel) return false;\n return carousel.canScrollPrev() || carousel.canScrollNext();\n });\n}\n","<hlm-carousel class=\"sdc-carousel\" [options]=\"emblaOptions()\">\n <hlm-carousel-content class=\"pl-1 sdc-carousel-content\">\n @for (item of carouselItems(); track $index) {\n <hlm-carousel-item class=\"-ml-1 sdc-carousel-item\">\n <ng-container *ngTemplateOutlet=\"item.template\"></ng-container>\n </hlm-carousel-item>\n }\n </hlm-carousel-content>\n @if (canScroll()) {\n <button class=\"bg-transparent text-primary\" hlm-carousel-previous></button>\n <button class=\"bg-transparent text-primary\" hlm-carousel-next></button>\n }\n</hlm-carousel>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -118,7 +118,7 @@ class HlmDialogContent {
|
|
|
118
118
|
<span class="sr-only">Close</span>
|
|
119
119
|
<ng-icon hlm name="lucideX" size="sm" />
|
|
120
120
|
</button>
|
|
121
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: BrnDialogClose, selector: "button[brnDialogClose]", inputs: ["delay"] }, { kind: "directive", type: HlmDialogClose, selector: "[hlmDialogClose],[brnDialogClose][hlm]", inputs: ["class"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: HlmIcon, selector: "ng-icon[hlm]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
121
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: BrnDialogClose, selector: "button[brnDialogClose]", inputs: ["delay"] }, { kind: "directive", type: HlmDialogClose, selector: "[hlmDialogClose],[brnDialogClose][hlm]", inputs: ["class"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: HlmIcon, selector: "ng-icon[hlm]", inputs: ["size", "variant"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
122
122
|
}
|
|
123
123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HlmDialogContent, decorators: [{
|
|
124
124
|
type: Component,
|