mn-angular-lib 1.0.108 → 1.0.110

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": "mn-angular-lib",
3
- "version": "1.0.108",
3
+ "version": "1.0.110",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.1.3",
6
6
  "@angular/core": "^21.1.3"
@@ -2411,6 +2411,20 @@ type MnMultiSelectProps<TValue = unknown> = {
2411
2411
  searchPlaceholder?: string;
2412
2412
  /** Maximum number of items that can be selected (undefined = unlimited) */
2413
2413
  maxSelections?: number;
2414
+ /**
2415
+ * Once the number of selected options is strictly greater than this value, the
2416
+ * trigger collapses to a single count summary instead of rendering every chip.
2417
+ * Opt-in: collapsing is active when this or `collapsePlaceholder` is set. When
2418
+ * collapsing is enabled but this is omitted, the effective threshold defaults to 5.
2419
+ */
2420
+ collapseThreshold?: number;
2421
+ /**
2422
+ * Summary text shown when the trigger is collapsed. The `{count}` token is
2423
+ * replaced with the number of selected options (e.g. `"{count} selected"` →
2424
+ * `"18 selected"`). Setting this enables collapsing on its own; when omitted
2425
+ * while collapsing is active, `"{count} selected"` is used as the fallback.
2426
+ */
2427
+ collapsePlaceholder?: string;
2414
2428
  /** Size variant of the multi-select (default: 'md') */
2415
2429
  size?: MnMultiSelectVariants['size'];
2416
2430
  /** Border radius variant (default: 'md') */
@@ -2514,6 +2528,29 @@ declare class MnMultiSelect implements OnInit {
2514
2528
  onSearch(term: string): void;
2515
2529
  get filteredOptions(): MnMultiSelectOption[];
2516
2530
  get selectedOptions(): MnMultiSelectOption[];
2531
+ /**
2532
+ * Whether the collapse-to-summary feature is opted into. Active when either
2533
+ * `collapsePlaceholder` or `collapseThreshold` is supplied; existing usages
2534
+ * with neither prop are unaffected.
2535
+ */
2536
+ get collapseEnabled(): boolean;
2537
+ /**
2538
+ * The threshold above which the trigger collapses. Defaults to 5 when collapsing
2539
+ * is enabled via `collapsePlaceholder` alone (no explicit `collapseThreshold`).
2540
+ */
2541
+ get effectiveCollapseThreshold(): number;
2542
+ /**
2543
+ * Whether the trigger should currently render the count summary instead of the
2544
+ * individual chips: only when collapsing is enabled and the number of selected
2545
+ * options exceeds the effective threshold.
2546
+ */
2547
+ get isCollapsed(): boolean;
2548
+ /**
2549
+ * The summary text shown while collapsed, with the `{count}` token replaced by
2550
+ * the number of selected options. Falls back to `"{count} selected"` when no
2551
+ * `collapsePlaceholder` is provided.
2552
+ */
2553
+ get collapseSummaryText(): string;
2517
2554
  handleBlur(): void;
2518
2555
  get control(): _angular_forms.AbstractControl<any, any, any> | null;
2519
2556
  get showError(): boolean;
@@ -3602,6 +3639,14 @@ type WizardStepConfig<TModel = unknown> = {
3602
3639
  title: string;
3603
3640
  state?: StepState;
3604
3641
  body?: StepBodyConfig;
3642
+ /**
3643
+ * Inputs passed to the step {@link body} when it is a component or template
3644
+ * (ignored for a plain-string body). Each key is assigned to the matching
3645
+ * `@Input()` on the rendered component; a `modalRef` property, if present, is
3646
+ * populated automatically. Mirrors {@link CustomModalConfig.inputs} but scoped
3647
+ * to a single wizard step.
3648
+ */
3649
+ bodyInputs?: ModalInputMap;
3605
3650
  fields?: FormFieldConfig<TModel>[];
3606
3651
  rows?: FormRow<TModel>[];
3607
3652
  fieldGroups?: FormFieldGroup<TModel>[];
@@ -4324,7 +4369,12 @@ declare class StepBuilder<TModel = unknown> {
4324
4369
  private config;
4325
4370
  private layoutBuilder;
4326
4371
  constructor(id: string, title: string);
4327
- body(body: StepBodyConfig): this;
4372
+ /**
4373
+ * Set the step body. Accepts plain text, a component, or a template.
4374
+ * @param body The step body content (string, component `Type`, or `TemplateRef`).
4375
+ * @param inputs Optional inputs for a component/template body (ignored for text).
4376
+ */
4377
+ body(body: StepBodyConfig, inputs?: ModalInputMap): this;
4328
4378
  state(state: StepState): this;
4329
4379
  guard(guard: StepGuard): this;
4330
4380
  validators(validators: StepValidator[]): this;
@@ -4820,11 +4870,24 @@ declare class MnWizardBodyComponent implements OnInit, AfterViewInit, OnDestroy
4820
4870
  };
4821
4871
  /** Pre-built form configs keyed by step id — only for steps that have fields */
4822
4872
  stepFormConfigs: Record<ModalStepId, FormModalConfig<unknown, unknown>>;
4873
+ /**
4874
+ * Pre-built host configs keyed by step id — only for steps whose body is a
4875
+ * component or template (not a plain string) and that have no form fields.
4876
+ * Drives the `mn-custom-body-host` rendered for those steps.
4877
+ */
4878
+ stepBodyConfigs: Record<ModalStepId, CustomModalConfig>;
4823
4879
  private statusSubscription?;
4824
4880
  private formBodiesSubscription?;
4825
4881
  ngOnInit(): void;
4826
4882
  ngAfterViewInit(): void;
4827
4883
  isTextBody(step: WizardStepConfig): boolean;
4884
+ /**
4885
+ * Builds the {@link CustomModalConfig} used to render a step whose body is a
4886
+ * component or template. Returns `undefined` for steps with no body or a
4887
+ * plain-string body (those render through their own template branches).
4888
+ * @param step The wizard step to inspect.
4889
+ */
4890
+ private buildStepBodyConfig;
4828
4891
  goToStep(step: WizardStepConfig): Promise<void>;
4829
4892
  ngOnDestroy(): void;
4830
4893
  /**