ps-helix 6.0.0 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ps-helix",
3
- "version": "6.0.0",
3
+ "version": "6.0.1",
4
4
  "description": "Helix Design System - A comprehensive Angular component library",
5
5
  "author": "Fabrice PEREZ - Product designer at PACK Solutions",
6
6
  "license": "MIT",
@@ -1,38 +1,39 @@
1
- /* Design Tokens - Visual Effects */
2
-
3
- :root {
4
- /* Border Radii - Semantic aliases for sizing.tokens.css radius scale */
5
- --border-radius: var(--radius-lg); /* 0.5rem / 8px - Default radius */
6
- --border-radius-lg: var(--radius-xl); /* 0.75rem / 12px - Large radius */
7
- --border-radius-full: var(--radius-full); /* 9999px - Full circle */
8
-
9
- /* Shadows */
10
- --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
11
- --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
12
- --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
13
-
14
- /* Z-Index System */
15
- --z-index-navigation: 50;
16
- --z-index-dropdown: 100;
17
- --z-index-tooltip: 200;
18
- --z-index-modal-backdrop: 999;
19
- --z-index-modal: 1000;
20
- --z-index-toast: 9999;
21
-
22
- /* Focus System */
23
- --focus-outline-width: 2px;
24
- --focus-outline-style: solid;
25
- --focus-outline-color: var(--primary-color);
26
- --focus-outline-offset: 2px;
27
- --focus-ring-width: 3px;
28
- --focus-ring-color: rgba(var(--primary-color-rgb), 0.2);
29
-
30
- /* Focus variants */
31
- --focus-ring-error: rgba(var(--danger-color-rgb), 0.2);
32
- --focus-ring-success: rgba(var(--success-color-rgb), 0.2);
33
- --focus-ring-warning: rgba(var(--warning-color-rgb), 0.2);
34
-
35
- /* Opacity System */
36
- --opacity-disabled: 0.6;
37
- --opacity-loading: 0.7;
38
- }
1
+ /* Design Tokens - Visual Effects */
2
+
3
+ :root {
4
+ /* Border Radii - Semantic aliases for sizing.tokens.css radius scale */
5
+ --border-radius: var(--radius-lg); /* 0.5rem / 8px - Default radius */
6
+ --border-radius-lg: var(--radius-xl); /* 0.75rem / 12px - Large radius */
7
+ --border-radius-full: var(--radius-full); /* 9999px - Full circle */
8
+
9
+ /* Shadows */
10
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
11
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
12
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
13
+
14
+ /* Z-Index System */
15
+ --z-index-navigation: 50;
16
+ --z-index-dropdown: 100;
17
+ --z-index-tooltip: 200;
18
+ --z-index-modal-backdrop: 999;
19
+ --z-index-modal: 1000;
20
+ --z-index-overlay: 1100; /* body-teleported popovers (select/dropdown/menu) above modals */
21
+ --z-index-toast: 9999;
22
+
23
+ /* Focus System */
24
+ --focus-outline-width: 2px;
25
+ --focus-outline-style: solid;
26
+ --focus-outline-color: var(--primary-color);
27
+ --focus-outline-offset: 2px;
28
+ --focus-ring-width: 3px;
29
+ --focus-ring-color: rgba(var(--primary-color-rgb), 0.2);
30
+
31
+ /* Focus variants */
32
+ --focus-ring-error: rgba(var(--danger-color-rgb), 0.2);
33
+ --focus-ring-success: rgba(var(--success-color-rgb), 0.2);
34
+ --focus-ring-warning: rgba(var(--warning-color-rgb), 0.2);
35
+
36
+ /* Opacity System */
37
+ --opacity-disabled: 0.6;
38
+ --opacity-loading: 0.7;
39
+ }
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { AfterContentChecked, OnDestroy, AfterContentInit, InjectionToken, AfterViewInit, EventEmitter, TemplateRef, Type } from '@angular/core';
2
+ import { AfterContentChecked, OnDestroy, AfterContentInit, InjectionToken, AfterViewInit, EventEmitter, TemplateRef, Type, ViewContainerRef } from '@angular/core';
3
3
  import { ControlValueAccessor } from '@angular/forms';
4
4
  import { FormCheckboxControl, FormValueControl } from '@angular/forms/signals';
5
5
  import * as ps_helix from 'ps-helix';
@@ -123,7 +123,7 @@ declare class PshAvatarComponent {
123
123
  hasIcon: _angular_core.Signal<boolean>;
124
124
  computedAriaLabel: _angular_core.Signal<string>;
125
125
  statusColor: _angular_core.Signal<string | undefined>;
126
- state: _angular_core.Signal<"default" | AvatarStatus>;
126
+ state: _angular_core.Signal<AvatarStatus | "default">;
127
127
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PshAvatarComponent, never>;
128
128
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<PshAvatarComponent, "psh-avatar", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "initials": { "alias": "initials"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "size": "sizeChange"; "shape": "shapeChange"; "src": "srcChange"; "alt": "altChange"; }, never, never, true, never>;
129
129
  }
@@ -288,7 +288,7 @@ declare class PshCardComponent implements OnDestroy {
288
288
  /** État désactivé - réduit l'opacité */
289
289
  disabled: _angular_core.InputSignal<boolean>;
290
290
  /** Émis lors du clic sur la carte (si interactive) */
291
- clicked: _angular_core.OutputEmitterRef<KeyboardEvent | MouseEvent>;
291
+ clicked: _angular_core.OutputEmitterRef<MouseEvent | KeyboardEvent>;
292
292
  /** Classes CSS calculées selon les propriétés */
293
293
  computedClasses: _angular_core.Signal<string>;
294
294
  /** Styles calculés */
@@ -356,7 +356,7 @@ declare class PshStatCardComponent {
356
356
  /** Active la direction row pour le card-body (icône et contenu côte à côte en flex-row) */
357
357
  rowDirection: _angular_core.InputSignal<boolean>;
358
358
  /** Émis lors du clic sur la carte */
359
- clicked: _angular_core.OutputEmitterRef<KeyboardEvent | MouseEvent>;
359
+ clicked: _angular_core.OutputEmitterRef<MouseEvent | KeyboardEvent>;
360
360
  private computedValue;
361
361
  private computedDescription;
362
362
  private computedIcon;
@@ -450,7 +450,7 @@ declare class PshHorizontalCardComponent {
450
450
  /** Hauteur du contenu latéral sur mobile (utiliser les tokens de sizing) */
451
451
  mobileHeight: _angular_core.InputSignal<string>;
452
452
  /** Émis lors du clic sur la carte */
453
- clicked: _angular_core.OutputEmitterRef<KeyboardEvent | MouseEvent>;
453
+ clicked: _angular_core.OutputEmitterRef<MouseEvent | KeyboardEvent>;
454
454
  /** Classes CSS calculées selon les propriétés */
455
455
  computedClasses: _angular_core.Signal<string>;
456
456
  /** Styles calculés */
@@ -560,7 +560,7 @@ declare class PshInfoCardComponent implements AfterContentInit, OnDestroy {
560
560
  /** Whether the card is disabled */
561
561
  disabled: _angular_core.InputSignal<boolean>;
562
562
  /** Emitted when card is clicked */
563
- clicked: _angular_core.OutputEmitterRef<KeyboardEvent | MouseEvent>;
563
+ clicked: _angular_core.OutputEmitterRef<MouseEvent | KeyboardEvent>;
564
564
  /** Whether to show copy buttons on rows (opt-in) */
565
565
  copyable: _angular_core.InputSignal<boolean>;
566
566
  /** Label prefix for the copy button aria-label */
@@ -1006,7 +1006,7 @@ declare class PshTextareaComponent implements ControlValueAccessor, FormValueCon
1006
1006
  hasError: _angular_core.Signal<boolean>;
1007
1007
  computedAriaLabel: _angular_core.Signal<string | null>;
1008
1008
  describedBy: _angular_core.Signal<string | null>;
1009
- state: _angular_core.Signal<"default" | "success" | "disabled" | "error" | "readonly" | "focused">;
1009
+ state: _angular_core.Signal<"success" | "default" | "disabled" | "error" | "readonly" | "focused">;
1010
1010
  characterCountLabel: "caractères";
1011
1011
  constructor();
1012
1012
  private onChange;
@@ -1649,7 +1649,11 @@ declare class PshSelectComponent<T = unknown> implements ControlValueAccessor, F
1649
1649
  private readonly elementRef;
1650
1650
  private readonly destroyRef;
1651
1651
  private readonly overlayPosition;
1652
- private readonly injector;
1652
+ private readonly portal;
1653
+ private readonly viewContainer;
1654
+ private readonly panelTpl;
1655
+ private portalRef;
1656
+ private readonly repositionHandler;
1653
1657
  protected readonly resolvedSide: _angular_core.WritableSignal<"top" | "bottom">;
1654
1658
  protected readonly selectId: string;
1655
1659
  readonly value: _angular_core.ModelSignal<T | T[] | null>;
@@ -1684,7 +1688,7 @@ declare class PshSelectComponent<T = unknown> implements ControlValueAccessor, F
1684
1688
  scrollEnd: _angular_core.OutputEmitterRef<void>;
1685
1689
  isOpen: _angular_core.Signal<boolean>;
1686
1690
  searchTerm: _angular_core.Signal<string>;
1687
- state: _angular_core.Signal<"default" | "success" | "disabled" | "error">;
1691
+ state: _angular_core.Signal<"success" | "default" | "disabled" | "error">;
1688
1692
  computedAriaLabel: _angular_core.Signal<string>;
1689
1693
  describedBy: _angular_core.Signal<"error-message" | "success-message" | "hint-message" | null>;
1690
1694
  flatFilteredOptions: _angular_core.Signal<FlatOption<T>[]>;
@@ -1692,6 +1696,9 @@ declare class PshSelectComponent<T = unknown> implements ControlValueAccessor, F
1692
1696
  selectedLabel: _angular_core.Signal<string>;
1693
1697
  filteredOptions: _angular_core.Signal<(SelectOption<T> | SelectOptionGroup<T>)[]>;
1694
1698
  constructor();
1699
+ /** Teleports the options panel to the body-level overlay layer and positions it. */
1700
+ private openPanel;
1701
+ private closePanel;
1695
1702
  private reposition;
1696
1703
  private onChange;
1697
1704
  private onTouched;
@@ -2254,7 +2261,7 @@ declare const TABLE_CONFIG: InjectionToken<Partial<TableConfig>>;
2254
2261
  declare class PshTableComponent {
2255
2262
  private config;
2256
2263
  variant: _angular_core.InputSignal<"default" | "outline">;
2257
- size: _angular_core.InputSignal<"medium" | "small" | "large">;
2264
+ size: _angular_core.InputSignal<"small" | "medium" | "large">;
2258
2265
  striped: _angular_core.InputSignal<boolean>;
2259
2266
  hoverable: _angular_core.InputSignal<boolean>;
2260
2267
  bordered: _angular_core.InputSignal<boolean>;
@@ -2266,7 +2273,7 @@ declare class PshTableComponent {
2266
2273
  emptyMessage: _angular_core.InputSignal<string>;
2267
2274
  noResultsMessage: _angular_core.InputSignal<string>;
2268
2275
  globalSearchPlaceholder: _angular_core.InputSignal<string>;
2269
- tableLayout: _angular_core.InputSignal<"auto" | "fixed">;
2276
+ tableLayout: _angular_core.InputSignal<"fixed" | "auto">;
2270
2277
  truncateText: _angular_core.InputSignal<boolean>;
2271
2278
  expandable: _angular_core.InputSignal<boolean>;
2272
2279
  singleExpand: _angular_core.InputSignal<boolean>;
@@ -2851,5 +2858,43 @@ declare class PshOverlayService {
2851
2858
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PshOverlayService>;
2852
2859
  }
2853
2860
 
2854
- export { CHECKBOX_CONFIG, CUSTOMER_CONTEXT_SERVICE, INPUT_LABELS, MODAL_CONFIG, ModalService, NgxTranslateProvider, PAGINATION_CONFIG, PROGRESSBAR_CONFIG, PSH_THEME_OPTIONS, PshAlertComponent, PshAvatarComponent, PshBadgeComponent, PshButtonComponent, PshCardComponent, PshCheckboxComponent, PshClickOutsideDirective, PshCollapseComponent, PshDropdownComponent, PshFlowStepComponent, PshFocusTrapDirective, PshHorizontalCardComponent, PshInfoCardComponent, PshInputComponent, PshLiveAnnouncerService, PshMenuComponent, PshModalComponent, PshOverlayPositionService, PshOverlayService, PshPaginationComponent, PshProgressbarComponent, PshRadioComponent, PshSelectComponent, PshSidebarComponent, PshSpinLoaderComponent, PshStatCardComponent, PshStateFlowIndicatorComponent, PshStepComponent, PshStepperComponent, PshSwitchComponent, PshTabBarComponent, PshTabComponent, PshTableComponent, PshTabsComponent, PshTagComponent, PshTextareaComponent, PshToastComponent, PshToastService, PshTooltipComponent, RADIO_CONFIG, RADIO_STYLES, SIDEBAR_CONFIG, SPINLOADER_CONFIG, STATE_FLOW_INDICATOR_CONFIG, STEPPER_CONFIG, SWITCH_CONFIG, ScrollService, TABLE_CONFIG, TABS_CONFIG, TAB_BAR_CONFIG, TAG_CONFIG, TEXTAREA_LABELS, TOAST_CONFIG, TOOLTIP_CONFIG, TRANSLATION_PROVIDER, ThemeService, ToastComponent, ToastService, provideTranslation };
2855
- export type { AlertConfig, AlertLabels, AlertRole, AlertSize, AlertType, AnnouncerPoliteness, AutocompleteConfig, AvatarConfig, AvatarShape, AvatarSize, AvatarStatus, BadgeDisplayType, BadgePosition, BadgeSize, BadgeVariant, ButtonAppearance, ButtonIconPosition, ButtonSize, ButtonVariant, CardActionsAlignment, CardColorVariant, CardDensity, CardVariant, CheckboxConfig, CheckboxLabelPosition, CheckboxSize, CollapseSize, CollapseVariant, CustomerContextService, DropdownAppearance, DropdownConfig, DropdownItem, DropdownPlacement, DropdownSize, DropdownVariant, FlowStepConfig, IconPosition, InfoCardData, InfoCardOptions, InfoCardVariant, InputConfig, InputSize, InputType, InputVariant, MenuItem, MenuMode, MenuVariant, ModalConfig, ModalSize, OverlayHandle, OverlayPositionOptions, OverlaySide, PaginationConfig, PaginationSize, PaginationVariant, ProgressbarConfig, ProgressbarLabelPosition, ProgressbarMode, ProgressbarSize, ProgressbarVariant, PshThemeOptions, RadioConfig, RadioSize, SearchConfig, SelectOption, SelectOptionGroup, SelectSize, SelectVariant, SidebarConfig, SidebarMode, SidebarPosition, SpinLoaderColor, SpinLoaderConfig, SpinLoaderSize, SpinLoaderVariant, StatCardLayout, StatCardVariant, StatTagVariant, StateFlowIndicatorAriaLabels, StateFlowIndicatorConfig, StateFlowIndicatorSize, StepConfig, StepperAriaLabels, StepperConfig, StepperVariant, SuggestionResult, SwitchConfig, SwitchSize, Tab, TabBarChangeEvent, TabBarConfig, TabBarItem, TabChangeEvent, TableCellContext, TableColumn, TableConfig, TableExpandedRowContext, TableRow, TableRowClickEvent, TableRowExpandEvent, TableSort, TabsConfig, TabsSize, TabsVariant, TagConfig, TagSize, TagVariant, TextareaConfig, TextareaResize, TextareaSize, TextareaVariant, Theme, ThemeConfig, Toast, ToastConfig, ToastPosition, ToastType, TooltipConfig, TooltipPosition, TooltipVariant, TranslationConfig, TranslationEntry, TranslationProvider };
2861
+ /** A handle to a teleported overlay panel. */
2862
+ interface PshPortalRef {
2863
+ /** The panel's root element — use it to position and to scope click-outside. */
2864
+ readonly panel: HTMLElement;
2865
+ /**
2866
+ * Positions the panel as `fixed` relative to `anchor`'s viewport rect, on the
2867
+ * given side with `gap` px of spacing. Bounds `max-height` to the available
2868
+ * viewport space so the panel never overflows the screen.
2869
+ */
2870
+ position(anchor: HTMLElement, side: 'top' | 'bottom', gap: number): void;
2871
+ /** Destroys the embedded view and removes the panel from the overlay layer. */
2872
+ detach(): void;
2873
+ }
2874
+ /**
2875
+ * Teleports a `TemplateRef` into a single body-level overlay layer so popover
2876
+ * panels (select / dropdown / menu…) escape any ancestor `overflow`, `transform`
2877
+ * or stacking context and can layer above modals.
2878
+ *
2879
+ * A lightweight, CDK-free "manual portal": the embedded view is created from the
2880
+ * consumer's `ViewContainerRef` (so it stays in that component's change-detection
2881
+ * tree and keeps its bindings reactive), then its root nodes are moved into the
2882
+ * shared `.psh-overlay-layer`. The layer is `position: fixed; inset: 0;
2883
+ * pointer-events: none` at `z-index: var(--z-index-overlay)`; panels re-enable
2884
+ * pointer events. The layer is created lazily and removed once empty.
2885
+ */
2886
+ declare class PshPortalService {
2887
+ private readonly document;
2888
+ private layer;
2889
+ private count;
2890
+ /** Teleports `tpl` into the overlay layer and returns a handle to control it. */
2891
+ attach(tpl: TemplateRef<unknown>, vcr: ViewContainerRef): PshPortalRef;
2892
+ private position;
2893
+ private detach;
2894
+ private ensureLayer;
2895
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PshPortalService, never>;
2896
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<PshPortalService>;
2897
+ }
2898
+
2899
+ export { CHECKBOX_CONFIG, CUSTOMER_CONTEXT_SERVICE, INPUT_LABELS, MODAL_CONFIG, ModalService, NgxTranslateProvider, PAGINATION_CONFIG, PROGRESSBAR_CONFIG, PSH_THEME_OPTIONS, PshAlertComponent, PshAvatarComponent, PshBadgeComponent, PshButtonComponent, PshCardComponent, PshCheckboxComponent, PshClickOutsideDirective, PshCollapseComponent, PshDropdownComponent, PshFlowStepComponent, PshFocusTrapDirective, PshHorizontalCardComponent, PshInfoCardComponent, PshInputComponent, PshLiveAnnouncerService, PshMenuComponent, PshModalComponent, PshOverlayPositionService, PshOverlayService, PshPaginationComponent, PshPortalService, PshProgressbarComponent, PshRadioComponent, PshSelectComponent, PshSidebarComponent, PshSpinLoaderComponent, PshStatCardComponent, PshStateFlowIndicatorComponent, PshStepComponent, PshStepperComponent, PshSwitchComponent, PshTabBarComponent, PshTabComponent, PshTableComponent, PshTabsComponent, PshTagComponent, PshTextareaComponent, PshToastComponent, PshToastService, PshTooltipComponent, RADIO_CONFIG, RADIO_STYLES, SIDEBAR_CONFIG, SPINLOADER_CONFIG, STATE_FLOW_INDICATOR_CONFIG, STEPPER_CONFIG, SWITCH_CONFIG, ScrollService, TABLE_CONFIG, TABS_CONFIG, TAB_BAR_CONFIG, TAG_CONFIG, TEXTAREA_LABELS, TOAST_CONFIG, TOOLTIP_CONFIG, TRANSLATION_PROVIDER, ThemeService, ToastComponent, ToastService, provideTranslation };
2900
+ export type { AlertConfig, AlertLabels, AlertRole, AlertSize, AlertType, AnnouncerPoliteness, AutocompleteConfig, AvatarConfig, AvatarShape, AvatarSize, AvatarStatus, BadgeDisplayType, BadgePosition, BadgeSize, BadgeVariant, ButtonAppearance, ButtonIconPosition, ButtonSize, ButtonVariant, CardActionsAlignment, CardColorVariant, CardDensity, CardVariant, CheckboxConfig, CheckboxLabelPosition, CheckboxSize, CollapseSize, CollapseVariant, CustomerContextService, DropdownAppearance, DropdownConfig, DropdownItem, DropdownPlacement, DropdownSize, DropdownVariant, FlowStepConfig, IconPosition, InfoCardData, InfoCardOptions, InfoCardVariant, InputConfig, InputSize, InputType, InputVariant, MenuItem, MenuMode, MenuVariant, ModalConfig, ModalSize, OverlayHandle, OverlayPositionOptions, OverlaySide, PaginationConfig, PaginationSize, PaginationVariant, ProgressbarConfig, ProgressbarLabelPosition, ProgressbarMode, ProgressbarSize, ProgressbarVariant, PshPortalRef, PshThemeOptions, RadioConfig, RadioSize, SearchConfig, SelectOption, SelectOptionGroup, SelectSize, SelectVariant, SidebarConfig, SidebarMode, SidebarPosition, SpinLoaderColor, SpinLoaderConfig, SpinLoaderSize, SpinLoaderVariant, StatCardLayout, StatCardVariant, StatTagVariant, StateFlowIndicatorAriaLabels, StateFlowIndicatorConfig, StateFlowIndicatorSize, StepConfig, StepperAriaLabels, StepperConfig, StepperVariant, SuggestionResult, SwitchConfig, SwitchSize, Tab, TabBarChangeEvent, TabBarConfig, TabBarItem, TabChangeEvent, TableCellContext, TableColumn, TableConfig, TableExpandedRowContext, TableRow, TableRowClickEvent, TableRowExpandEvent, TableSort, TabsConfig, TabsSize, TabsVariant, TagConfig, TagSize, TagVariant, TextareaConfig, TextareaResize, TextareaSize, TextareaVariant, Theme, ThemeConfig, Toast, ToastConfig, ToastPosition, ToastType, TooltipConfig, TooltipPosition, TooltipVariant, TranslationConfig, TranslationEntry, TranslationProvider };