@uni-design-system/uni-angular 7.1.0 → 7.2.0

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.
@@ -1388,7 +1388,13 @@ class UniIconComponent {
1388
1388
  const size = this.size();
1389
1389
  if (size === undefined || size === null || size === '')
1390
1390
  return null;
1391
- return typeof size === 'number' ? `${size}px` : size;
1391
+ if (typeof size === 'number')
1392
+ return `${size}px`;
1393
+ // A static attribute (`size="24"`) arrives as a string, so a bare number
1394
+ // has to mean px here too — otherwise it emits the invalid `width: 24`,
1395
+ // which the browser drops, silently falling back to filling the container.
1396
+ const trimmed = size.trim();
1397
+ return /^-?\d*\.?\d+$/.test(trimmed) ? `${trimmed}px` : trimmed;
1392
1398
  }, ...(ngDevMode ? [{ debugName: "sizeValue" }] : /* istanbul ignore next */ []));
1393
1399
  className = computed(() => css([{ ...this.themeService.color(this.color()) }]), ...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
1394
1400
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UniIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -2285,6 +2291,20 @@ class UniIconButtonComponent {
2285
2291
  loading = input(...(ngDevMode ? [undefined, { debugName: "loading" }] : /* istanbul ignore next */ []));
2286
2292
  opticalSize = input(24, ...(ngDevMode ? [{ debugName: "opticalSize" }] : /* istanbul ignore next */ []));
2287
2293
  srOnlyClass = css(visuallyHidden);
2294
+ /**
2295
+ * Sizes `iconName` from the size token's `fontSize`, the same value that sizes
2296
+ * a `symbolName` ligature — so the two paths render the same glyph size and
2297
+ * `symbolName` → `iconName` is a like-for-like swap. Without it a masked icon
2298
+ * fills the whole button box, since the base size tokens carry no padding.
2299
+ * Themes that do use padding (Carbon) set a matching `fontSize`, so they land
2300
+ * on the same glyph either way.
2301
+ */
2302
+ glyphSize = computed(() => {
2303
+ // Size tokens are Emotion style objects, so `fontSize` is typed wider than
2304
+ // a CSS length; anything exotic falls back to filling the button as before.
2305
+ const fontSize = this.config().sizes?.[this.size()]?.fontSize;
2306
+ return typeof fontSize === 'number' || typeof fontSize === 'string' ? fontSize : undefined;
2307
+ }, ...(ngDevMode ? [{ debugName: "glyphSize" }] : /* istanbul ignore next */ []));
2288
2308
  className = computed(() => {
2289
2309
  const { sizes, variants } = this.config();
2290
2310
  const sizeConfig = sizes && sizes[this.size()];
@@ -2300,7 +2320,15 @@ class UniIconButtonComponent {
2300
2320
  // Token-driven radius (`max` = circle) with the legacy 999 fallback
2301
2321
  // for hand-authored themes that predate iconButton options.
2302
2322
  ...(this.theme.radius(this.config().options?.borderRadius) ?? { borderRadius: 999 }),
2303
- display: 'block',
2323
+ // Block-level, but centring: the size tokens make the box bigger than
2324
+ // the glyph (an `sm` button is 22px around an 18px icon), so a plain
2325
+ // `display: block` parks the glyph in the top-left corner. Flex is
2326
+ // still block-level, so nothing about the button's own layout changes.
2327
+ // The accessible-name span is absolutely positioned and so stays out
2328
+ // of the flex flow.
2329
+ display: 'flex',
2330
+ alignItems: 'center',
2331
+ justifyContent: 'center',
2304
2332
  '&:disabled': {
2305
2333
  cursor: 'not-allowed !important',
2306
2334
  },
@@ -2343,7 +2371,7 @@ class UniIconButtonComponent {
2343
2371
  } @else if (symbolName()) {
2344
2372
  <uni-symbol [name]="symbolName()!" [opticalSize]="opticalSize()" />
2345
2373
  } @else if (iconName()) {
2346
- <uni-icon [name]="iconName()!" />
2374
+ <uni-icon [name]="iconName()!" [size]="glyphSize()" />
2347
2375
  }
2348
2376
  <!-- Projected text is the button's accessible name (visually hidden) -->
2349
2377
  <span [class]="srOnlyClass"><ng-content /></span>
@@ -2360,7 +2388,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
2360
2388
  } @else if (symbolName()) {
2361
2389
  <uni-symbol [name]="symbolName()!" [opticalSize]="opticalSize()" />
2362
2390
  } @else if (iconName()) {
2363
- <uni-icon [name]="iconName()!" />
2391
+ <uni-icon [name]="iconName()!" [size]="glyphSize()" />
2364
2392
  }
2365
2393
  <!-- Projected text is the button's accessible name (visually hidden) -->
2366
2394
  <span [class]="srOnlyClass"><ng-content /></span>
@@ -3466,6 +3494,15 @@ class UniExpandComponent {
3466
3494
  toggle() {
3467
3495
  this.collapsed.update((collapsed) => !collapsed);
3468
3496
  }
3497
+ /**
3498
+ * A custom element is `display: inline` by default, which would lay the
3499
+ * animated grid out as a block-in-inline box and distort the revealed
3500
+ * content's spacing. Every consumer would otherwise have to write
3501
+ * `uni-expand { display: block }` themselves.
3502
+ */
3503
+ hostClassName = css({
3504
+ display: 'block',
3505
+ });
3469
3506
  expandClassName = css({
3470
3507
  display: 'grid',
3471
3508
  });
@@ -3474,16 +3511,25 @@ class UniExpandComponent {
3474
3511
  });
3475
3512
  expand = keyframes({ ...expandFadeIn });
3476
3513
  collapse = keyframes({ ...collapseFadeOut });
3477
- expandAnimation = css({
3514
+ /**
3515
+ * Reveal is motion-safe (WCAG 2.3.3): under `prefers-reduced-motion` these
3516
+ * classes are empty, so the region appears and disappears instantly.
3517
+ * `overflow: hidden` rides inside the guard deliberately — it exists to clip
3518
+ * the growing box mid-animation, and leaving it applied at rest would crop
3519
+ * decorations that legitimately paint outside the region (focus rings,
3520
+ * offset outlines). Angular removes a leaving node on the next frame when it
3521
+ * detects no animation, so nothing hangs when the guard strips them.
3522
+ */
3523
+ expandAnimation = css(motionSafe({
3478
3524
  overflow: 'hidden',
3479
3525
  animation: `${this.expand} ease-in 350ms`,
3480
- });
3481
- collapseAnimation = css({
3526
+ }));
3527
+ collapseAnimation = css(motionSafe({
3482
3528
  overflow: 'hidden',
3483
3529
  animation: `${this.collapse} ease-in 350ms`,
3484
- });
3530
+ }));
3485
3531
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UniExpandComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3486
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: UniExpandComponent, isStandalone: true, selector: "uni-expand", inputs: { collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, host: { properties: { "attr.id": "regionId" } }, ngImport: i0, template: `@if (!collapsed()) {
3532
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: UniExpandComponent, isStandalone: true, selector: "uni-expand", inputs: { collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, host: { properties: { "attr.id": "regionId", "class": "hostClassName" } }, ngImport: i0, template: `@if (!collapsed()) {
3487
3533
  <div
3488
3534
  [animate.enter]="ready() ? expandAnimation : ''"
3489
3535
  [animate.leave]="collapseAnimation"
@@ -3514,6 +3560,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
3514
3560
  }`,
3515
3561
  host: {
3516
3562
  '[attr.id]': 'regionId',
3563
+ '[class]': 'hostClassName',
3517
3564
  },
3518
3565
  }]
3519
3566
  }], ctorParameters: () => [], propDecorators: { collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }] } });
@@ -3700,66 +3747,151 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
3700
3747
  }]
3701
3748
  }], ctorParameters: () => [], propDecorators: { hoverDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "hoverDelay", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], inlineText: [{ type: i0.Input, args: [{ isSignal: true, alias: "inlineText", required: false }] }], appendToBody: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendToBody", required: false }] }], tipRef: [{ type: i0.ViewChild, args: ['tip', { isSignal: true }] }] } });
3702
3749
 
3750
+ /**
3751
+ * Trigger for a {@link UniExpandComponent} region.
3752
+ *
3753
+ * Two shapes, chosen by whether `label` is set:
3754
+ * - **Icon only** (default) — the bare chevron, sized for a Card Header.
3755
+ * - **Labelled** — chevron plus a label and optional muted sublabel, as a
3756
+ * single full-width button. Most real disclosures need a name for the
3757
+ * section, and building that row by hand is the thing this saves; it also
3758
+ * makes the label the button's accessible name rather than adjacent text.
3759
+ */
3703
3760
  class UniExpandToggleComponent {
3704
3761
  collapsed = model(true, ...(ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []));
3705
3762
  /** Id of the Expand region this toggle controls (see UniExpandComponent.regionId). */
3706
3763
  ariaControls = input(...(ngDevMode ? [undefined, { debugName: "ariaControls" }] : /* istanbul ignore next */ []));
3764
+ /** Names the region. Setting it switches the toggle to its labelled shape. */
3765
+ label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
3766
+ /** Muted qualifier beside the label ("for POs & custom orders"). Needs `label`. */
3767
+ sublabel = input(...(ngDevMode ? [undefined, { debugName: "sublabel" }] : /* istanbul ignore next */ []));
3768
+ /**
3769
+ * The glyph rotates, never the host.
3770
+ *
3771
+ * The host is the tooltip's positioning box — `uni-tooltip` puts its
3772
+ * `anchor-name` on its own element, nested inside ours — so rotating the
3773
+ * host swings the anchor through the turn and the bubble visibly bobs. The
3774
+ * host is also taller than the glyph (an inline-level box reserves baseline
3775
+ * descender space), so spinning it about its own centre walks the glyph
3776
+ * off-centre. `uni-icon` is a centred square sized to the glyph, which makes
3777
+ * it the only box here that rotates symmetrically. It also keeps a label
3778
+ * from turning upside down with the chevron.
3779
+ */
3780
+ glyphStyles = computed(() => ({
3781
+ '& uni-icon': {
3782
+ flexShrink: 0,
3783
+ ...motionSafe({ transition: 'transform 350ms ease-in-out' }),
3784
+ transform: this.collapsed() ? 'rotate(-180deg)' : 'rotate(0)',
3785
+ },
3786
+ }), ...(ngDevMode ? [{ debugName: "glyphStyles" }] : /* istanbul ignore next */ []));
3707
3787
  className = computed(() => {
3788
+ if (this.label()) {
3789
+ return css({ display: 'block', ...this.glyphStyles() });
3790
+ }
3708
3791
  return css({
3709
3792
  display: 'inline-flex',
3710
3793
  cursor: 'pointer',
3711
- transition: 'transform 350ms ease-in-out',
3712
- transform: 'rotate(0)',
3713
- '&[toggled]': {
3714
- transform: 'rotate(-180deg)',
3715
- },
3794
+ ...this.glyphStyles(),
3716
3795
  });
3717
3796
  }, ...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
3797
+ triggerClassName = css({
3798
+ display: 'flex',
3799
+ alignItems: 'center',
3800
+ gap: 8,
3801
+ width: '100%',
3802
+ padding: 0,
3803
+ border: 0,
3804
+ background: 'none',
3805
+ font: 'inherit',
3806
+ color: 'inherit',
3807
+ textAlign: 'left',
3808
+ cursor: 'pointer',
3809
+ });
3810
+ labelClassName = css({
3811
+ display: 'flex',
3812
+ alignItems: 'baseline',
3813
+ gap: 6,
3814
+ minWidth: 0,
3815
+ });
3718
3816
  toggle() {
3719
3817
  this.collapsed.update((collapsed) => !collapsed);
3720
3818
  }
3721
3819
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UniExpandToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3722
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", type: UniExpandToggleComponent, isStandalone: true, selector: "uni-expand-toggle", inputs: { collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, ariaControls: { classPropertyName: "ariaControls", publicName: "ariaControls", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, host: { properties: { "class": "className()", "attr.toggled": "collapsed() || null" } }, ngImport: i0, template: `<uni-tooltip
3723
- [label]="collapsed() ? 'Expand' : 'Collapse'"
3724
- placement="right"
3725
- >
3726
- <button
3727
- icon-button
3728
- iconName="chevronUp"
3729
- (click)="toggle()"
3730
- [attr.aria-expanded]="!collapsed()"
3731
- [attr.aria-controls]="ariaControls() || null"
3732
- >
3733
- {{ collapsed() ? 'Expand' : 'Collapse' }}
3734
- </button>
3735
- </uni-tooltip>`, isInline: true, dependencies: [{ kind: "component", type: UniIconButtonComponent, selector: "button[uni-icon-button], button[icon-button]", inputs: ["ariaLabel", "iconName", "symbolName", "variant", "size", "disable", "loading", "opticalSize"] }, { kind: "component", type: UniTooltipComponent, selector: "uni-tooltip", inputs: ["hoverDelay", "label", "placement", "inlineText", "appendToBody"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3820
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: UniExpandToggleComponent, isStandalone: true, selector: "uni-expand-toggle", inputs: { collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, ariaControls: { classPropertyName: "ariaControls", publicName: "ariaControls", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, sublabel: { classPropertyName: "sublabel", publicName: "sublabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, host: { properties: { "class": "className()", "attr.toggled": "collapsed() || null" } }, ngImport: i0, template: `
3821
+ @if (label()) {
3822
+ <button
3823
+ type="button"
3824
+ [class]="triggerClassName"
3825
+ (click)="toggle()"
3826
+ [attr.aria-expanded]="!collapsed()"
3827
+ [attr.aria-controls]="ariaControls() || null"
3828
+ >
3829
+ <uni-icon name="chevronUp" size="1em" />
3830
+ <span [class]="labelClassName">
3831
+ <span uni-text="label">{{ label() }}</span>
3832
+ @if (sublabel()) {
3833
+ <span uni-text="caption" color="on-background-variant">{{ sublabel() }}</span>
3834
+ }
3835
+ </span>
3836
+ </button>
3837
+ } @else {
3838
+ <uni-tooltip [label]="collapsed() ? 'Expand' : 'Collapse'" placement="right">
3839
+ <button
3840
+ icon-button
3841
+ iconName="chevronUp"
3842
+ (click)="toggle()"
3843
+ [attr.aria-expanded]="!collapsed()"
3844
+ [attr.aria-controls]="ariaControls() || null"
3845
+ >
3846
+ {{ collapsed() ? 'Expand' : 'Collapse' }}
3847
+ </button>
3848
+ </uni-tooltip>
3849
+ }
3850
+ `, isInline: true, dependencies: [{ kind: "component", type: UniIconComponent, selector: "uni-icon", inputs: ["color", "name", "size"] }, { kind: "component", type: UniIconButtonComponent, selector: "button[uni-icon-button], button[icon-button]", inputs: ["ariaLabel", "iconName", "symbolName", "variant", "size", "disable", "loading", "opticalSize"] }, { kind: "component", type: UniTextComponent, selector: "[uni-text]", inputs: ["uni-text", "typeface", "color", "display", "align", "nowrap", "maxWidth", "ellipsis"] }, { kind: "component", type: UniTooltipComponent, selector: "uni-tooltip", inputs: ["hoverDelay", "label", "placement", "inlineText", "appendToBody"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3736
3851
  }
3737
3852
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UniExpandToggleComponent, decorators: [{
3738
3853
  type: Component,
3739
3854
  args: [{
3740
3855
  selector: 'uni-expand-toggle',
3741
- imports: [UniIconButtonComponent, UniTooltipComponent],
3742
- template: `<uni-tooltip
3743
- [label]="collapsed() ? 'Expand' : 'Collapse'"
3744
- placement="right"
3745
- >
3746
- <button
3747
- icon-button
3748
- iconName="chevronUp"
3749
- (click)="toggle()"
3750
- [attr.aria-expanded]="!collapsed()"
3751
- [attr.aria-controls]="ariaControls() || null"
3752
- >
3753
- {{ collapsed() ? 'Expand' : 'Collapse' }}
3754
- </button>
3755
- </uni-tooltip>`,
3856
+ imports: [UniIconComponent, UniIconButtonComponent, UniTextComponent, UniTooltipComponent],
3857
+ template: `
3858
+ @if (label()) {
3859
+ <button
3860
+ type="button"
3861
+ [class]="triggerClassName"
3862
+ (click)="toggle()"
3863
+ [attr.aria-expanded]="!collapsed()"
3864
+ [attr.aria-controls]="ariaControls() || null"
3865
+ >
3866
+ <uni-icon name="chevronUp" size="1em" />
3867
+ <span [class]="labelClassName">
3868
+ <span uni-text="label">{{ label() }}</span>
3869
+ @if (sublabel()) {
3870
+ <span uni-text="caption" color="on-background-variant">{{ sublabel() }}</span>
3871
+ }
3872
+ </span>
3873
+ </button>
3874
+ } @else {
3875
+ <uni-tooltip [label]="collapsed() ? 'Expand' : 'Collapse'" placement="right">
3876
+ <button
3877
+ icon-button
3878
+ iconName="chevronUp"
3879
+ (click)="toggle()"
3880
+ [attr.aria-expanded]="!collapsed()"
3881
+ [attr.aria-controls]="ariaControls() || null"
3882
+ >
3883
+ {{ collapsed() ? 'Expand' : 'Collapse' }}
3884
+ </button>
3885
+ </uni-tooltip>
3886
+ }
3887
+ `,
3756
3888
  host: {
3757
3889
  '[class]': 'className()',
3758
3890
  '[attr.toggled]': 'collapsed() || null',
3759
3891
  },
3760
3892
  changeDetection: ChangeDetectionStrategy.OnPush,
3761
3893
  }]
3762
- }], propDecorators: { collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }], ariaControls: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaControls", required: false }] }] } });
3894
+ }], propDecorators: { collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }], ariaControls: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaControls", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], sublabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "sublabel", required: false }] }] } });
3763
3895
 
3764
3896
  class UniExpandAreaComponent {
3765
3897
  title = input.required(...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
@@ -3804,7 +3936,7 @@ class UniExpandAreaComponent {
3804
3936
  </div>
3805
3937
  </uni-expand>
3806
3938
  </div>
3807
- `, isInline: true, dependencies: [{ kind: "component", type: UniBoxComponent, selector: "[uni-box-layout], [box-layout]", inputs: ["color", "backgroundColor", "borderRadius", "borderRadiusLeft", "borderRadiusRight", "borderRadiusTop", "borderRadiusBottom", "padding", "paddingHorizontal", "paddingVertical", "paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "border", "borderTop", "borderBottom", "borderLeft", "borderRight", "dashBorder", "alignSelf", "alignItems", "alignContent", "justifyContent", "grow", "display", "position", "inset", "height", "minHeight", "maxHeight", "width", "minWidth", "maxWidth", "ignoreDir", "gridArea", "gridColumn", "gridRow", "overflow", "elevation", "shadow", "gap", "fullWidth", "fullHeight", "flexDirection", "textAlign", "wrapItems", "zIndex"] }, { kind: "component", type: UniTextComponent, selector: "[uni-text]", inputs: ["uni-text", "typeface", "color", "display", "align", "nowrap", "maxWidth", "ellipsis"] }, { kind: "component", type: UniExpandToggleComponent, selector: "uni-expand-toggle", inputs: ["collapsed", "ariaControls"], outputs: ["collapsedChange"] }, { kind: "component", type: UniExpandComponent, selector: "uni-expand", inputs: ["collapsed"], outputs: ["collapsedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3939
+ `, isInline: true, dependencies: [{ kind: "component", type: UniBoxComponent, selector: "[uni-box-layout], [box-layout]", inputs: ["color", "backgroundColor", "borderRadius", "borderRadiusLeft", "borderRadiusRight", "borderRadiusTop", "borderRadiusBottom", "padding", "paddingHorizontal", "paddingVertical", "paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "border", "borderTop", "borderBottom", "borderLeft", "borderRight", "dashBorder", "alignSelf", "alignItems", "alignContent", "justifyContent", "grow", "display", "position", "inset", "height", "minHeight", "maxHeight", "width", "minWidth", "maxWidth", "ignoreDir", "gridArea", "gridColumn", "gridRow", "overflow", "elevation", "shadow", "gap", "fullWidth", "fullHeight", "flexDirection", "textAlign", "wrapItems", "zIndex"] }, { kind: "component", type: UniTextComponent, selector: "[uni-text]", inputs: ["uni-text", "typeface", "color", "display", "align", "nowrap", "maxWidth", "ellipsis"] }, { kind: "component", type: UniExpandToggleComponent, selector: "uni-expand-toggle", inputs: ["collapsed", "ariaControls", "label", "sublabel"], outputs: ["collapsedChange"] }, { kind: "component", type: UniExpandComponent, selector: "uni-expand", inputs: ["collapsed"], outputs: ["collapsedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3808
3940
  }
3809
3941
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UniExpandAreaComponent, decorators: [{
3810
3942
  type: Component,