@orangelogic/design-system 3.21.0 → 3.22.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.
Files changed (117) hide show
  1. package/library/chunks/{asset-link-format.DjxLUjGN.js → asset-link-format.B5E00Je6.js} +407 -388
  2. package/library/chunks/{button.CklW2xIt.js → button.cbDkxJHn.js} +1 -1
  3. package/library/chunks/{color-swatch-group.B_eqaBlU.js → color-swatch-group.BxmlqPZe.js} +7 -7
  4. package/library/chunks/{confirm-popover.T7M1IynK.js → confirm-popover.Dvgoz-oA.js} +3 -3
  5. package/library/chunks/{dialog.ATeOYqwC.js → dialog.BvSMV36r.js} +2 -2
  6. package/library/chunks/{document-viewer.DcR3RRh7.js → document-viewer.Dm9pcb0o.js} +7 -7
  7. package/library/chunks/{dot-pagination.BrDTro_E.js → dot-pagination.CukHxNBk.js} +1 -1
  8. package/library/chunks/{folder-select.ChVr6nVx.js → folder-select.BQqwlVaD.js} +4 -4
  9. package/library/chunks/form-control.styles.CHC7Q08Q.js +5 -0
  10. package/library/chunks/{header.BeRkHwrR.js → header.2RH_nPmz.js} +1 -1
  11. package/library/chunks/{i18n.CcvOGKg6.js → i18n.BSPmBQ73.js} +9 -7
  12. package/library/chunks/{icon-button.CXELPgXm.js → icon-button.DV5Fks8j.js} +1 -1
  13. package/library/chunks/{iframe.CT5jmGYk.js → iframe.ddX2kGu3.js} +1 -1
  14. package/library/chunks/{image.CqTbFbtg.js → image.BM7bPTub.js} +174 -143
  15. package/library/chunks/{index.DgCcXGmO.js → index.SMjV3S2z.js} +75 -71
  16. package/library/chunks/{input.DRdoQJOD.js → input.7pumTpdu.js} +2 -2
  17. package/library/chunks/{markdown.BF9bqmMv.js → markdown.LHSzm035.js} +2 -2
  18. package/library/chunks/{menu-item.C0sQ8KjF.js → menu-item.DsJZ7i0J.js} +1 -1
  19. package/library/chunks/{option.mXqrZbpB.js → option.C5f7yDqN.js} +1 -1
  20. package/library/chunks/{pagination.C5DtaMQU.js → pagination.CMwpX60h.js} +5 -5
  21. package/library/chunks/{resizable-component.styles.CAfXABBc.js → resizable-component.styles.kMFDlGgv.js} +2 -2
  22. package/library/chunks/{tab-group.OEwvRv7m.js → tab-group.D_QAkP8s.js} +4 -4
  23. package/library/chunks/{tree.DlO3BFjn.js → tree.BHrf5WIc.js} +1 -1
  24. package/library/chunks/{types.VFIFor5z.js → types.BDM-NtAR.js} +2578 -2470
  25. package/library/components/alert.js +2 -2
  26. package/library/components/asset-link-format.js +3 -3
  27. package/library/components/atoms.js +15 -15
  28. package/library/components/audio.js +3 -3
  29. package/library/components/border-input-group.js +2 -2
  30. package/library/components/breadcrumb.js +1 -1
  31. package/library/components/button.js +2 -2
  32. package/library/components/checkbox.js +1 -1
  33. package/library/components/color-picker.js +6 -6
  34. package/library/components/color-swatch-group.js +2 -2
  35. package/library/components/color-swatch.js +1 -1
  36. package/library/components/confirm-popover.js +4 -4
  37. package/library/components/copy-button.js +1 -1
  38. package/library/components/corner-position-input-group.js +3 -3
  39. package/library/components/date-calendar.js +1 -1
  40. package/library/components/details.js +1 -1
  41. package/library/components/dialog.js +3 -3
  42. package/library/components/document-viewer.js +4 -4
  43. package/library/components/dot-pagination.js +2 -2
  44. package/library/components/drawer.js +2 -2
  45. package/library/components/dropdown.js +2 -2
  46. package/library/components/dynamic-select.js +4 -4
  47. package/library/components/e-chart.js +1 -1
  48. package/library/components/element-clamp.js +2 -2
  49. package/library/components/file-on-demand.js +9 -9
  50. package/library/components/folder-select.js +4 -4
  51. package/library/components/format-bytes.js +1 -1
  52. package/library/components/format-date.js +1 -1
  53. package/library/components/format-number.js +1 -1
  54. package/library/components/format-time.js +1 -1
  55. package/library/components/header.js +2 -2
  56. package/library/components/icon-button.js +2 -2
  57. package/library/components/iframe.js +2 -2
  58. package/library/components/image-comparer.js +1 -1
  59. package/library/components/image.js +3 -3
  60. package/library/components/input-group.js +1 -1
  61. package/library/components/input.js +3 -3
  62. package/library/components/line-clamp.js +1 -1
  63. package/library/components/markdown.js +3 -3
  64. package/library/components/masonry.js +2 -2
  65. package/library/components/menu-item.js +2 -2
  66. package/library/components/menu.js +2 -2
  67. package/library/components/molecules.js +2 -2
  68. package/library/components/option.js +2 -2
  69. package/library/components/organisms.js +2 -2
  70. package/library/components/padding-input-group.js +1 -1
  71. package/library/components/pagination.js +6 -6
  72. package/library/components/popup.js +1 -1
  73. package/library/components/position-picker.js +1 -1
  74. package/library/components/progress-bar.js +1 -1
  75. package/library/components/progress-ring.js +1 -1
  76. package/library/components/radio-group.js +1 -1
  77. package/library/components/range.js +2 -2
  78. package/library/components/rating.js +1 -1
  79. package/library/components/relative-time.js +1 -1
  80. package/library/components/select.js +3 -3
  81. package/library/components/shadow-input-group.js +1 -1
  82. package/library/components/share-option-list.js +1 -1
  83. package/library/components/sidebar.js +1 -1
  84. package/library/components/size-input-group.js +3 -3
  85. package/library/components/spinner.js +1 -1
  86. package/library/components/split-panel.js +1 -1
  87. package/library/components/switch.js +1 -1
  88. package/library/components/tab-group.js +5 -5
  89. package/library/components/tab.js +2 -2
  90. package/library/components/tag.js +2 -2
  91. package/library/components/textarea.js +1 -1
  92. package/library/components/tooltip.js +1 -1
  93. package/library/components/tree-item.js +2 -2
  94. package/library/components/tree.js +2 -2
  95. package/library/components/typeface.js +2 -2
  96. package/library/components/types.js +21 -21
  97. package/library/components/video.js +1341 -1294
  98. package/library/css/ol-base.css +1 -0
  99. package/library/package.json +1 -1
  100. package/library/packages/atoms/src/components/image/image.d.ts +16 -0
  101. package/library/packages/atoms/src/components/video/video.d.ts +6 -0
  102. package/library/packages/events/src/cx-asset-transformation-dialog-confirm.d.ts +2 -0
  103. package/library/packages/molecules/src/icon-picker/icon-picker.d.ts +5 -6
  104. package/library/packages/organisms/src/asset-link-format/asset-link-format.d.ts +6 -0
  105. package/library/packages/organisms/src/asset-transformation-dialog/asset-transformation-dialog.d.ts +5 -1
  106. package/library/packages/organisms/src/content-builder/blocks/image/image.d.ts +10 -3
  107. package/library/packages/organisms/src/content-builder/configs/header.d.ts +1 -1
  108. package/library/packages/organisms/src/content-builder/configs/image.d.ts +2 -0
  109. package/library/packages/organisms/src/content-builder/configs-controller.d.ts +13 -0
  110. package/library/packages/organisms/src/content-builder/styleController.d.ts +2 -0
  111. package/library/packages/organisms/src/form/control-renderer/control-renderer.d.ts +6 -0
  112. package/library/packages/types/src/content-builder.d.ts +6 -2
  113. package/library/packages/utils/src/custom-element/i18n.d.ts +2 -0
  114. package/library/react-web-component.d.ts +4 -0
  115. package/library/utils.js +1 -1
  116. package/package.json +1 -1
  117. package/library/chunks/form-control.styles.CaGWmeAS.js +0 -5
@@ -110,6 +110,7 @@
110
110
  --cx-input-height-small : 24px;
111
111
  --cx-input-letter-spacing : var(--cx-letter-spacing-normal);
112
112
  --cx-input-required-content : '*';
113
+ --cx-input-required-content-display: inline;
113
114
  --cx-input-required-content-offset: -2px;
114
115
  --cx-input-spacing-large : var(--cx-spacing-medium);
115
116
  --cx-input-spacing-medium : var(--cx-spacing-medium);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orangelogic/design-system",
3
3
  "type": "module",
4
- "version": "3.21.0",
4
+ "version": "3.22.0",
5
5
  "license": "UNLICENSED",
6
6
  "types": "library/types.d.ts",
7
7
  "scripts": {
@@ -69,6 +69,10 @@ export default class CxImage extends ResizableElement {
69
69
  * The path to the image to load.
70
70
  */
71
71
  src: string;
72
+ /** Intrinsic width / height used to reserve space while loading with Height Auto.
73
+ * @defaultValue 0
74
+ */
75
+ aspectRatio: number;
72
76
  /**
73
77
  * Candidate sources for the underlying `<img>`, as a standard `srcset` value
74
78
  * (e.g. `"…/re_w_400/img.jpg 400w, …/re_w_800/img.jpg 800w"`).
@@ -179,6 +183,18 @@ export default class CxImage extends ResizableElement {
179
183
  'highlightable-item': boolean;
180
184
  'highlightable-item--effect-text-reveal': boolean;
181
185
  };
186
+ protected get currentAspectRatio(): number;
187
+ private get loadingAspectRatio();
188
+ getHighlighterClass(isError?: boolean): {
189
+ 'highlighter--loading-ratio': boolean;
190
+ highlighter: boolean;
191
+ 'highlighter--background': boolean;
192
+ 'highlighter--border': boolean;
193
+ 'highlighter--centered': boolean;
194
+ 'highlighter--color-overlay': boolean;
195
+ 'highlighter--drop-shadow': boolean;
196
+ 'highlighter--opacity': boolean;
197
+ };
182
198
  get imageClass(): {
183
199
  [x: string]: boolean;
184
200
  image: boolean;
@@ -154,6 +154,11 @@ export default class CxVideo extends ResizableElement {
154
154
  protected removeVideoEventListeners(): void;
155
155
  attachSeekbar(): void;
156
156
  private applyBigPlayButtonVisibility;
157
+ /**
158
+ * Keeps the big play button centered in the visible video content rather than
159
+ * the full player when object-fit leaves empty space around the video.
160
+ */
161
+ private updateBigPlayButtonPosition;
157
162
  protected setupVideoJsPlayer(src?: string): Promise<void>;
158
163
  handleLoopChange(): Promise<void>;
159
164
  handleMutedChange(): Promise<void>;
@@ -162,6 +167,7 @@ export default class CxVideo extends ResizableElement {
162
167
  handleDisableRemotePlaybackChange(): Promise<void>;
163
168
  handleDisableVolumePanelChange(): Promise<void>;
164
169
  handleHideBigPlayButtonChange(): Promise<void>;
170
+ handleVideoPlacementChange(): void;
165
171
  handlePosterChange(): Promise<void>;
166
172
  handleFormattedPosterChange(): Promise<void>;
167
173
  handleSrcChange(): Promise<void>;
@@ -1,6 +1,8 @@
1
1
  import { Transformation } from '../../types/src/asset-link-format';
2
2
 
3
3
  export type CxAssetTransformationDialogConfirmEvent = CustomEvent<{
4
+ /** Width / height from the applied transformation response, when available. */
5
+ aspectRatio?: number;
4
6
  format: string;
5
7
  /** False when the format follows the asset's file extension instead of an explicit pick. */
6
8
  manualFormat: boolean;
@@ -175,14 +175,13 @@ export default class CxIconPicker extends CortexElement {
175
175
  * re-focuses on a timer), so a focus-driven load would re-fire long after
176
176
  * the dropdown closed.
177
177
  *
178
- * The early return matters too: cx-after-show fires on every open, and
179
- * chaining onto the already-settled promise would land a requestUpdate()
180
- * a microtask into the open sequence, re-rendering the virtualizer while
181
- * cx-select is still animating open with its document mousedown/focusin
182
- * listeners armed — which intermittently closed the dropdown right after
183
- * it appeared.
178
+ * The virtualizer waits for the first catalog request to settle before it
179
+ * mounts. Mounting it with an empty item set can leave its visible range
180
+ * empty until the user scrolls. The open-state guard also prevents a late
181
+ * request from mounting the list after the control has already closed.
184
182
  */
185
183
  private ensureIconsData;
184
+ private showVirtualizerWhenReady;
186
185
  private handleSelectShow;
187
186
  private handleSelectHide;
188
187
  private handleDropdownShow;
@@ -212,6 +212,7 @@ export default class CxAssetLinkFormat extends CortexElement {
212
212
  /** True when there are transformations beyond the frozen index (i.e. user has added new ones). */
213
213
  private get hasUnfrozenTransformations();
214
214
  private apiGetTransformAssetLink;
215
+ private transformRequest?;
215
216
  private apiGetCropFocusMode;
216
217
  /**
217
218
  * The unit of the last applied crop transformation, for the no-asset case only. Reflects
@@ -327,6 +328,11 @@ export default class CxAssetLinkFormat extends CortexElement {
327
328
  x: number;
328
329
  y: number;
329
330
  };
331
+ /** Captures the current request synchronously; later edits cannot change Save's ratio. */
332
+ getAppliedAspectRatio(): Promise<number | undefined>;
333
+ private get transformRequestOptions();
334
+ private getTransformRequest;
335
+ private requestTransformAsset;
330
336
  setActiveSetting(activeSetting: string): void;
331
337
  private freezeTransformations;
332
338
  private upsertTransformation;
@@ -20,7 +20,7 @@ import { default as CxAssetLinkFormat } from '../asset-link-format/asset-link-fo
20
20
  * `cx-icon-button`. Automatically disabled when `asset-id` is not set.
21
21
  *
22
22
  * @event cx-asset-transformation-dialog-cancel - Emitted when the user closes or cancels the dialog.
23
- * @event {{ detail: { format: string; manualFormat: boolean; transformations: Transformation[] } }} cx-asset-transformation-dialog-confirm - Emitted when the user saves, with the resolved proxy id, whether that id was picked by hand rather than derived from the asset extension, and the transformation array.
23
+ * @event {{ detail: { aspectRatio?: number; format: string; manualFormat: boolean; transformations: Transformation[] } }} cx-asset-transformation-dialog-confirm - Emitted when the user saves, with the applied image ratio, resolved proxy id, whether that id was picked by hand, and the transformation array.
24
24
  * @event cx-asset-transformation-dialog-delete - Emitted when the user resets the format to its default and clears the saved transformations via the reset button.
25
25
  */
26
26
  export default class CxAssetTransformationDialog extends CortexElement {
@@ -91,6 +91,10 @@ export default class CxAssetTransformationDialog extends CortexElement {
91
91
  private proxies;
92
92
  /** False while the authorization check is in flight or after it confirms no access. */
93
93
  private canAccess;
94
+ private saving;
95
+ /** Seeds one editing session; subsequent Apply changes belong to the child. */
96
+ private initialDraft;
97
+ private editSession;
94
98
  /**
95
99
  * Whether the author changed anything away from the block's defaults, which is what the
96
100
  * Reset control acts on.
@@ -5,7 +5,7 @@ import { Transformation } from '../../../../../types/src/asset-link-format';
5
5
  import { TeamSpace } from '../../../../../types/src/content-builder';
6
6
  import { ContentType } from '../../../../../types/src/gallery';
7
7
  import { HighlightableElementContentPosition } from '../../../../../types/src/highlightable-element';
8
- import { TemplateResult } from 'lit';
8
+ import { PropertyValues, TemplateResult } from 'lit';
9
9
 
10
10
  /**
11
11
  * @summary Images are wrappers for img elements with built-in lazy loading, skeleton, and fallback support.
@@ -25,7 +25,7 @@ import { TemplateResult } from 'lit';
25
25
  * @cssproperty --border-radius - The border-radius of the image.
26
26
  * @cssproperty --border - The border of the image.
27
27
  *
28
- * @event cx-load - Emitted when the image has loaded.
28
+ * @event cx-load - Emitted on each successful image load, including subsequent srcset candidate loads. May fire multiple times for the same block.
29
29
  * @event cx-error - Emitted when the image has failed to load.
30
30
  * @event cx-image-zoom-open - Emitted when the image zoom is opened.
31
31
  * @event cx-image-zoom-close - Emitted when the image zoom is closed.
@@ -96,6 +96,8 @@ export default class CxSbImage extends CxImage {
96
96
  manualFormat: boolean;
97
97
  /** Whether `formatDarkMode` was picked by hand. See `manualFormat`. */
98
98
  manualFormatDarkMode: boolean;
99
+ /** Saved intrinsic width / height for the dark image. */
100
+ aspectRatioDarkMode: number;
99
101
  /**
100
102
  * Asset transformations applied to the image.
101
103
  */
@@ -154,6 +156,7 @@ export default class CxSbImage extends CxImage {
154
156
  * alt text and overlay content instead.
155
157
  */
156
158
  fetchedAssetData: Record<string, unknown>;
159
+ private renderedImageSrc;
157
160
  /**
158
161
  * Indicates whether the image is currently zoomed.
159
162
  */
@@ -218,7 +221,7 @@ export default class CxSbImage extends CxImage {
218
221
  * getters key off this single predicate so alt, recordId, transformations and
219
222
  * click handlers stay aligned with whichever image is actually being displayed.
220
223
  */
221
- private get useDarkVariant();
224
+ get useDarkVariant(): boolean;
222
225
  get currentAltValue(): string;
223
226
  get currentRecordId(): string;
224
227
  get currentSrc(): string;
@@ -271,6 +274,7 @@ export default class CxSbImage extends CxImage {
271
274
  image: boolean;
272
275
  'image--hidden': boolean;
273
276
  };
277
+ protected get currentAspectRatio(): number;
274
278
  /**
275
279
  * Whether the image have zoom action.
276
280
  */
@@ -299,6 +303,8 @@ export default class CxSbImage extends CxImage {
299
303
  */
300
304
  handleRecordIdChangeForExtension(): void;
301
305
  handleFetchedAssetDataChange(): void;
306
+ protected update(changedProps: PropertyValues): void;
307
+ protected handleLoad(event: Event): void;
302
308
  /**
303
309
  * Support CMS5 click action for the image.
304
310
  */
@@ -333,6 +339,7 @@ export default class CxSbImage extends CxImage {
333
339
  */
334
340
  private recoverExpiredSources;
335
341
  private recoverExpiredSource;
342
+ private get renderedSrc();
336
343
  protected renderContent(): TemplateResult;
337
344
  render(): TemplateResult;
338
345
  }
@@ -16,7 +16,7 @@ type Attribute = {
16
16
  };
17
17
  declare const _default: {
18
18
  configs: (localize: LocalizeController, options?: ConfigsOptions) => Array<PropertyConfig<Attribute>>;
19
- defaultValue: Attribute;
19
+ defaultValue: Partial<Attribute>;
20
20
  stylable: string[];
21
21
  };
22
22
  export default _default;
@@ -5,6 +5,8 @@ import { default as CxImage } from '../blocks/image/image';
5
5
  type Attribute = {
6
6
  'additional-fields': string;
7
7
  'alt-source-field': CxImage['altSourceField'];
8
+ 'aspect-ratio': CxImage['aspectRatio'];
9
+ 'aspect-ratio-dark-mode': CxImage['aspectRatioDarkMode'];
8
10
  'click-action': CxImage['clickAction'];
9
11
  'click-link'?: CxImage['clickLink'];
10
12
  'click-page'?: CxImage['clickPage'];
@@ -310,6 +310,8 @@ export default class ConfigsController {
310
310
  }>[] | import('../../../types/src/content-builder').PropertyConfig<{
311
311
  'additional-fields': string;
312
312
  'alt-source-field': import('./blocks/image/image').default["altSourceField"];
313
+ 'aspect-ratio': import('./blocks/image/image').default["aspectRatio"];
314
+ 'aspect-ratio-dark-mode': import('./blocks/image/image').default["aspectRatioDarkMode"];
313
315
  'click-action': import('./blocks/image/image').default["clickAction"];
314
316
  'click-link'?: import('./blocks/image/image').default["clickLink"];
315
317
  'click-page'?: import('./blocks/image/image').default["clickPage"];
@@ -704,6 +706,17 @@ export default class ConfigsController {
704
706
  variant: import('../../../types/src/gallery').GalleryVariant;
705
707
  width: string;
706
708
  'zoom-style': import('../../../types/src/highlightable-element').HighlightableElementZoomStyle;
709
+ }> | Partial<{
710
+ alignment: import('../../../types/src/header').Alignment;
711
+ 'custom-line-height': boolean;
712
+ 'data-constraints': boolean;
713
+ 'disabled-copy-button': boolean;
714
+ 'font-size': string;
715
+ 'font-size-desktop': string;
716
+ 'font-size-tablet': string;
717
+ 'has-anchor-link': boolean;
718
+ role: string;
719
+ variant: import('../../../types/src/header').Variant;
707
720
  }> | {
708
721
  name: string;
709
722
  'page-id': string;
@@ -55,6 +55,7 @@ export default class StyleController {
55
55
  versionLabelKey?: string;
56
56
  };
57
57
  assetTransformationConfigs?: {
58
+ aspectRatioKey?: string;
58
59
  assetIdKey?: string;
59
60
  defaultFormat?: string;
60
61
  dialogLabel?: string;
@@ -144,6 +145,7 @@ export default class StyleController {
144
145
  multiple?: boolean;
145
146
  pickerConfigs?: {
146
147
  accepts?: string[];
148
+ aspectRatioKey?: string;
147
149
  defaultFormat?: string;
148
150
  multiple?: boolean;
149
151
  nameKey?: string;
@@ -157,6 +157,12 @@ export declare class ControlRenderer {
157
157
  * `cx-asset-transformation-dialog`.
158
158
  */
159
159
  private resolveAssetFormatSrc;
160
+ /** Resolves the URL and intrinsic ratio from the same selected media field. */
161
+ resolveAssetFormat(recordId: string, format: string): Promise<{
162
+ aspectRatio: number;
163
+ src: string;
164
+ }>;
165
+ private getResolvedImage;
160
166
  renderControl({ blockAttributes, container, currentValue, disabled, handleChange, key, label, trait, }: {
161
167
  blockAttributes: Record<string, any>;
162
168
  container?: Ref<HTMLElement>;
@@ -65,6 +65,8 @@ export type PropertyConfig<T = Record<string, any>> = Omit<TraitProperties, 'opt
65
65
  versionLabelKey?: string;
66
66
  };
67
67
  assetTransformationConfigs?: {
68
+ /** Attribute that stores the transformed image's width / height. */
69
+ aspectRatioKey?: string;
68
70
  assetIdKey?: string;
69
71
  defaultFormat?: string;
70
72
  dialogLabel?: string;
@@ -185,6 +187,8 @@ export type PropertyConfig<T = Record<string, any>> = Omit<TraitProperties, 'opt
185
187
  options?: Option[];
186
188
  pickerConfigs?: {
187
189
  accepts?: string[];
190
+ /** Attribute that stores the selected image's width / height. */
191
+ aspectRatioKey?: string;
188
192
  /** The format code used to resolve a preview src immediately after picking an image (before the user configures a format). */
189
193
  defaultFormat?: string;
190
194
  multiple?: boolean;
@@ -400,8 +404,6 @@ export declare enum DataSourceId {
400
404
  TranslatableTexts = "TRANSLATABLE_TEXTS"
401
405
  }
402
406
  export type ConfigsOptions = {
403
- enableAssetFormatControls?: boolean;
404
- enableFontFamilyControls?: boolean;
405
407
  /**
406
408
  * Variants of the font the block's container resolves for it — a font kit's
407
409
  * rows. Present means the block sits inside such a container, so its font
@@ -409,6 +411,8 @@ export type ConfigsOptions = {
409
411
  * styles, and writes every other option explicitly.
410
412
  */
411
413
  containerFontVariants?: FontFamily[];
414
+ enableAssetFormatControls?: boolean;
415
+ enableFontFamilyControls?: boolean;
412
416
  };
413
417
  /**
414
418
  * Well-known editable sections of a content-builder canvas. The page content is the implicit
@@ -697,6 +697,7 @@ export interface Translation extends DefaultTranslation {
697
697
  maxUploadRate: string;
698
698
  maxUploadRateCannotBeNegative: string;
699
699
  maxWidth: string;
700
+ maximumRows: string;
700
701
  media: string;
701
702
  medium: string;
702
703
  mediumLabeled: string;
@@ -1037,6 +1038,7 @@ export interface Translation extends DefaultTranslation {
1037
1038
  specialCharacters: string;
1038
1039
  specialCharactersEmpty: string;
1039
1040
  specificWidthInPixelsOrPercentage: string;
1041
+ specifiedWidthAsPercentageOfContainer: string;
1040
1042
  specifiedWidthInPixels: string;
1041
1043
  speed: string;
1042
1044
  spellcheck: string;
@@ -2914,6 +2914,10 @@
2914
2914
  * The path to the image to load.
2915
2915
  */
2916
2916
  src?: string;
2917
+ /**
2918
+ * Intrinsic width / height used to reserve space while loading with Height Auto. <br/>@defaultValue 0
2919
+ */
2920
+ aspectRatio?: number;
2917
2921
  /**
2918
2922
  * Candidate sources for the underlying `img`, as a standard `srcset` value (e.g. `"…/re_w_400/img.jpg 400w, …/re_w_800/img.jpg 800w"`). <br/> Lets the browser fetch and decode only the pixels the layout needs, which is what bounds memory on image-heavy pages — a large original decodes to `naturalWidth × naturalHeight × 4` bytes regardless of its display size. Pair with `sizes`; without it the browser assumes the image is `100vw` wide.
2919
2923
  */
package/library/utils.js CHANGED
@@ -13,7 +13,7 @@ import { d as Xe } from "./chunks/drag.DenOh3AE.js";
13
13
  import { f as Be } from "./chunks/focus-when-visible.jWSw9ks0.js";
14
14
  import { f as N } from "./chunks/form.LpappO1d.js";
15
15
  import { F as $e, c as ze, g as qe, v as Qe, a as je } from "./chunks/form.LpappO1d.js";
16
- import { L as Je, r as Ke } from "./chunks/i18n.CcvOGKg6.js";
16
+ import { L as Je, r as Ke } from "./chunks/i18n.BSPmBQ73.js";
17
17
  import { c as er, q as rr } from "./chunks/math.DuKzLacZ.js";
18
18
  import { g as sr } from "./chunks/modal.Ct0bJBSe.js";
19
19
  import { g as nr, l as ir, s as lr, u as cr } from "./chunks/scroll.xtO5yojm.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orangelogic/design-system",
3
3
  "type": "module",
4
- "version": "3.21.0",
4
+ "version": "3.22.0",
5
5
  "license": "UNLICENSED",
6
6
  "types": "library/types.d.ts",
7
7
  "scripts": {
@@ -1,5 +0,0 @@
1
- import { i as o } from "./lit-element.jLBm65_O.js";
2
- const r = o`.form-control .form-control__label,.form-control .form-control__help-text{display:none}.form-control--has-label .form-control__label{color:var(--cx-input-label-color);margin-bottom:var(--cx-spacing-3x-small);display:inline-block}.form-control--has-label.form-control--small .form-control__label{font-size:var(--cx-input-label-font-size-small)}.form-control--has-label.form-control--medium .form-control__label{font-size:var(--cx-input-label-font-size-medium)}.form-control--has-label.form-control--large .form-control__label{font-size:var(--cx-input-label-font-size-large)}:host([required]) .form-control--has-label .form-control__label:after{color:var(--cx-input-required-content-color);content:var(--cx-input-required-content);margin-inline-start:var(--cx-input-required-content-offset)}.form-control--has-help-text .form-control__help-text{color:var(--cx-input-help-text-color);margin-top:max(var(--cx-spacing-3x-small), 3px);display:block}.form-control--has-help-text.form-control--small .form-control__help-text{font-size:var(--cx-input-help-text-font-size-small)}.form-control--has-help-text.form-control--medium .form-control__help-text{font-size:var(--cx-input-help-text-font-size-medium)}.form-control--has-help-text.form-control--large .form-control__help-text{font-size:var(--cx-input-help-text-font-size-large)}.form-control--has-help-text.form-control--radio-group .form-control__help-text{margin-top:max(var(--cx-spacing-2x-small), 3px)}:host([data-user-invalid])::part(form-control-help-text){color:var(--cx-input-invalid-color)}`;
3
- export {
4
- r as f
5
- };