@orangelogic/design-system 2.145.0 → 2.147.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 (116) hide show
  1. package/library/chunks/{asset-link-format.D6XVEha7.js → asset-link-format.DyUDG8er.js} +882 -783
  2. package/library/chunks/{button.Bx7AnUu4.js → button.W0tW1LJ-.js} +1 -1
  3. package/library/chunks/{color-swatch-group.DORzYTrn.js → color-swatch-group.BQYOjoiA.js} +1571 -1529
  4. package/library/chunks/{color-swatch.Pczcitrc.js → color-swatch.B7X9wSl2.js} +1 -1
  5. package/library/chunks/{confirm-popover.DLb5agj9.js → confirm-popover.DWLFTk2n.js} +3 -3
  6. package/library/chunks/{dialog.B1uHEUsi.js → dialog.yZCtJRtl.js} +2 -2
  7. package/library/chunks/{document-viewer.CMHuC2Di.js → document-viewer.Cr-tkwYo.js} +5 -5
  8. package/library/chunks/{dot-pagination.171qk-p2.js → dot-pagination.C8dxu87e.js} +1 -1
  9. package/library/chunks/{folder-select.COFTAu2f.js → folder-select.CLDy4FKy.js} +4 -4
  10. package/library/chunks/{header.DP4ZGEwN.js → header.BJnsijee.js} +1 -1
  11. package/library/chunks/{i18n.DYXys45m.js → i18n.D07sG_CU.js} +2 -1
  12. package/library/chunks/{icon-button.B0L-_zT9.js → icon-button.CaUkGny9.js} +1 -1
  13. package/library/chunks/{iframe._3_Z5IJc.js → iframe.Bj3JzA9b.js} +1 -1
  14. package/library/chunks/{image.DVbY2O89.js → image.DaYfKRf4.js} +1 -1
  15. package/library/chunks/{image.BzmclWBR.js → image.QVlPFadX.js} +1 -1
  16. package/library/chunks/{input.CSI9KLz7.js → input.CtpPKmen.js} +1 -1
  17. package/library/chunks/{number.B4PQLJIg.js → number.CtCaI0T_.js} +23 -17
  18. package/library/chunks/{option.BweUpygr.js → option.DoCfNbP9.js} +1 -1
  19. package/library/chunks/{pagination.CyY982g0.js → pagination.B0VIa8Pm.js} +5 -5
  20. package/library/chunks/{tab-group.BJImZf-n.js → tab-group.CRIY9Wby.js} +3 -3
  21. package/library/chunks/{time.BSmpFe2G.js → time.DWfbnPnM.js} +1 -1
  22. package/library/chunks/transformation.DGzjBg6V.js +163 -0
  23. package/library/chunks/{tree.CvxvKWUm.js → tree.uSEgW--4.js} +1 -1
  24. package/library/components/alert.js +2 -2
  25. package/library/components/asset-link-format.js +5 -5
  26. package/library/components/atoms.js +13 -13
  27. package/library/components/audio.js +3 -3
  28. package/library/components/border-input-group.js +2 -2
  29. package/library/components/breadcrumb.js +1 -1
  30. package/library/components/button.js +2 -2
  31. package/library/components/color-picker.js +3 -3
  32. package/library/components/color-swatch-group.js +3 -3
  33. package/library/components/color-swatch.js +2 -2
  34. package/library/components/confirm-popover.js +4 -4
  35. package/library/components/copy-button.js +1 -1
  36. package/library/components/corner-position-input-group.js +3 -3
  37. package/library/components/cropper.js +2 -2
  38. package/library/components/date-calendar.js +1 -1
  39. package/library/components/details.js +1 -1
  40. package/library/components/dialog.js +3 -3
  41. package/library/components/document-viewer.js +3 -3
  42. package/library/components/dot-pagination.js +2 -2
  43. package/library/components/drawer.js +2 -2
  44. package/library/components/dropdown.js +2 -2
  45. package/library/components/dynamic-select.js +4 -4
  46. package/library/components/e-chart.js +1 -1
  47. package/library/components/element-clamp.js +2 -2
  48. package/library/components/file-on-demand.js +10 -10
  49. package/library/components/folder-select.js +4 -4
  50. package/library/components/format-bytes.js +1 -1
  51. package/library/components/format-date.js +1 -1
  52. package/library/components/format-number.js +1 -1
  53. package/library/components/format-time.js +2 -2
  54. package/library/components/header.js +2 -2
  55. package/library/components/icon-button.js +2 -2
  56. package/library/components/iframe.js +2 -2
  57. package/library/components/image-comparer.js +1 -1
  58. package/library/components/image.js +2 -2
  59. package/library/components/input.js +2 -2
  60. package/library/components/line-clamp.js +1 -1
  61. package/library/components/masonry.js +2 -2
  62. package/library/components/menu-item.js +1 -1
  63. package/library/components/menu.js +1 -1
  64. package/library/components/molecules.js +3 -3
  65. package/library/components/option.js +2 -2
  66. package/library/components/organisms.js +2 -2
  67. package/library/components/padding-input-group.js +1 -1
  68. package/library/components/pagination.js +6 -6
  69. package/library/components/popup.js +1 -1
  70. package/library/components/position-picker.js +1 -1
  71. package/library/components/progress-bar.js +1 -1
  72. package/library/components/progress-ring.js +1 -1
  73. package/library/components/range.js +1 -1
  74. package/library/components/rating.js +1 -1
  75. package/library/components/relative-time.js +1 -1
  76. package/library/components/select.js +2 -2
  77. package/library/components/shadow-input-group.js +1 -1
  78. package/library/components/share-option-list.js +1 -1
  79. package/library/components/sidebar.js +1 -1
  80. package/library/components/size-input-group.js +3 -3
  81. package/library/components/spinner.js +1 -1
  82. package/library/components/split-panel.js +1 -1
  83. package/library/components/tab-group.js +4 -4
  84. package/library/components/tab.js +2 -2
  85. package/library/components/tag.js +2 -2
  86. package/library/components/tooltip.js +1 -1
  87. package/library/components/tree-item.js +2 -2
  88. package/library/components/tree.js +2 -2
  89. package/library/components/typeface.js +2 -2
  90. package/library/components/types.js +9318 -9216
  91. package/library/components/video.js +2 -2
  92. package/library/css/ol-base.css +6 -6
  93. package/library/package.json +1 -1
  94. package/library/packages/events/src/cx-faceted-filter-remove.d.ts +9 -0
  95. package/library/packages/events/src/cx-table-applied-filter-remove.d.ts +9 -0
  96. package/library/packages/events/src/events.d.ts +2 -0
  97. package/library/packages/hybrid/table-core/src/table/styles/table-clickable-cell.styles.d.ts +3 -1
  98. package/library/packages/hybrid/table-core/src/table/table.d.ts +13 -0
  99. package/library/packages/molecules/src/faceted-filter/faceted-filter.d.ts +13 -1
  100. package/library/packages/molecules/src/icon-picker/icon-picker.d.ts +4 -0
  101. package/library/packages/molecules/src/search-box/search-box.d.ts +7 -1
  102. package/library/packages/organisms/src/asset-link-format/asset-link-format.d.ts +12 -0
  103. package/library/packages/organisms/src/asset-link-format/components/asset-link-format-crop/asset-link-format-crop.d.ts +8 -0
  104. package/library/packages/organisms/src/content-builder/configs/search-box.d.ts +2 -2
  105. package/library/packages/organisms/src/dam-custom-toolbar-buttons-editor/dam-custom-toolbar-buttons-editor.d.ts +12 -0
  106. package/library/packages/services/src/api/cms5/cms5.d.ts +7 -0
  107. package/library/packages/types/src/asset-link-format.d.ts +2 -0
  108. package/library/packages/types/src/dam-view.d.ts +23 -0
  109. package/library/packages/types/src/faceted-filter.d.ts +4 -0
  110. package/library/packages/types/src/search-box.d.ts +1 -0
  111. package/library/packages/types/src/table.d.ts +3 -0
  112. package/library/packages/utils/src/custom-element/i18n.d.ts +1 -0
  113. package/library/react-web-component.d.ts +8 -4
  114. package/library/utils.js +5 -5
  115. package/package.json +1 -1
  116. package/library/chunks/transformation.c-RS37zA.js +0 -151
@@ -1,13 +1,13 @@
1
1
  import { _ as kd, a as Sa, b as Be, c as Je } from "../chunks/inheritsLoose.BuSn_CvZ.js";
2
2
  import { c as ps, a as Bn } from "../chunks/_commonjsHelpers.DQNKXVTB.js";
3
3
  import { r as Sb } from "../chunks/___vite-browser-external_commonjs-proxy.C2tf3HsQ.js";
4
- import { C as Cb } from "../chunks/image.DVbY2O89.js";
4
+ import { C as Cb } from "../chunks/image.DaYfKRf4.js";
5
5
  import Mb from "./resize-observer.js";
6
6
  import { r as Db, R as Pb, a as Rp, b as Lb } from "../chunks/resizable-component.styles.CAfXABBc.js";
7
7
  import { c as Rb } from "../chunks/component.styles.CRO4Odto.js";
8
8
  import { b as Ib } from "../chunks/browser.BHOCIF_A.js";
9
9
  import { c as Ob } from "../chunks/custom-element.L4WJXn1j.js";
10
- import { L as kb } from "../chunks/i18n.DYXys45m.js";
10
+ import { L as kb } from "../chunks/i18n.D07sG_CU.js";
11
11
  import { w as Ki } from "../chunks/watch.K-dbDP6P.js";
12
12
  import { i as Bb, x as Qc } from "../chunks/lit-element.jLBm65_O.js";
13
13
  import { n as Ri } from "../chunks/lib-cortex-element.CVMmyPMC.js";
@@ -4,9 +4,9 @@
4
4
  */
5
5
 
6
6
  --cx-border-radius-small : 4px; /* 4px */
7
- --cx-border-radius-medium : 6px; /* 6px */
8
- --cx-border-radius-large : 8px; /* 8px */
9
- --cx-border-radius-x-large: 12px; /* 16px */
7
+ --cx-border-radius-medium : 8px; /* 8px */
8
+ --cx-border-radius-large : 12px; /* 12px */
9
+ --cx-border-radius-x-large: 16px; /* 16px */
10
10
  --cx-border-radius-circle : 50%;
11
11
  --cx-border-radius-pill : 9999px;
12
12
 
@@ -82,9 +82,9 @@
82
82
  */
83
83
 
84
84
  /* Buttons */
85
- --cx-button-border-radius-large : var(--cx-border-radius-large);
86
- --cx-button-border-radius-medium : var(--cx-border-radius-large);
87
- --cx-button-border-radius-small : var(--cx-border-radius-large);
85
+ --cx-button-border-radius-large : var(--cx-border-radius-medium);
86
+ --cx-button-border-radius-medium : var(--cx-border-radius-medium);
87
+ --cx-button-border-radius-small : var(--cx-border-radius-medium);
88
88
  --cx-button-font-size-large : var(--cx-font-size-medium);
89
89
  --cx-button-font-size-medium : var(--cx-font-size-small);
90
90
  --cx-button-font-size-small : var(--cx-font-size-x-small);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orangelogic/design-system",
3
3
  "type": "module",
4
- "version": "2.145.0",
4
+ "version": "2.147.0",
5
5
  "license": "UNLICENSED",
6
6
  "types": "library/types.d.ts",
7
7
  "scripts": {
@@ -0,0 +1,9 @@
1
+ export type CxFacetedFilterRemoveEvent = CustomEvent<{
2
+ /** The `key` of the removed applied-filter tag (see `AppliedFilterTag`). */
3
+ key: string;
4
+ }>;
5
+ declare global {
6
+ interface GlobalEventHandlersEventMap {
7
+ 'cx-faceted-filter-remove': CxFacetedFilterRemoveEvent;
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ export type CxTableAppliedFilterRemoveEvent = CustomEvent<{
2
+ /** The `key` of the removed host-provided applied-filter tag (see `additionalAppliedFilters`). */
3
+ key: string;
4
+ }>;
5
+ declare global {
6
+ interface GlobalEventHandlersEventMap {
7
+ 'cx-table-applied-filter-remove': CxTableAppliedFilterRemoveEvent;
8
+ }
9
+ }
@@ -76,6 +76,7 @@ export * from './cx-expand';
76
76
  export * from './cx-export-settings';
77
77
  export * from './cx-facet-change';
78
78
  export * from './cx-faceted-filter-change';
79
+ export * from './cx-faceted-filter-remove';
79
80
  export * from './cx-file-on-demand-load-more';
80
81
  export * from './cx-file-on-demand-pin';
81
82
  export * from './cx-file-on-demand-unpin';
@@ -194,6 +195,7 @@ export * from './cx-swatch-add';
194
195
  export * from './cx-tab-hide';
195
196
  export * from './cx-tab-show';
196
197
  export * from './cx-table-advanced-search-click';
198
+ export * from './cx-table-applied-filter-remove';
197
199
  export * from './cx-table-column-editor-apply';
198
200
  export * from './cx-table-column-editor-cancel';
199
201
  export * from './cx-table-column-visibility-change';
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * Styles for cells in columns with `clickable: true`. Renders text with a
3
3
  * link-like appearance (primary color, underline on hover) without using a
4
- * real anchor element. Consumers can override the text color via the
4
+ * real anchor element. The affordance is text-only: icons in the same cell
5
+ * keep the table's default color and are not tinted by the link style.
6
+ * Consumers can override the text color via the
5
7
  * `--clickable-cell-color` CSS custom property. For more involved styling
6
8
  * (font, padding, background) configure the column directly via `cssClass`,
7
9
  * `textFormatParams`, or a custom `formatter`.
@@ -9,6 +9,7 @@ import { default as CxSpinner } from '../../../../atoms/src/components/spinner/s
9
9
  import { default as CxTooltip } from '../../../../atoms/src/components/tooltip/tooltip.ts';
10
10
  import { default as CortexElement } from '../../../../base/src/cortex-element.ts';
11
11
  import { default as CxFacetedFilter } from '../../../../molecules/src/faceted-filter/faceted-filter.ts';
12
+ import { AppliedFilterTag } from '../../../../types/src/faceted-filter';
12
13
  import { PaginationCounter } from '../../../../types/src/pagination';
13
14
  import { DateFilterCompareFormat, HoverMenuOptions, HttpMethod, PaginationPlacement, TableClipboardAction, ColumnDefinition, Options, OptionsColumns, OptionsSpreadsheet, SheetDefinition, TableDataFormat } from '../../../../types/src/table';
14
15
  import { SavedSearchItem, TableDropdownFilterData, TableGroupByOption } from '../../../../types/src/table-toolbar';
@@ -73,6 +74,7 @@ import { CxTableColumnEditor, CxTableFooter, CxTableHeaderMenu, CxTableRowAction
73
74
  * @event {{ invalidCellCount: number, invalidCells: ICellComponent[] }} cx-table-validation-change - Emitted when the set of cells failing column `validator` rules changes (edit, load validation, or programmatic validate).
74
75
  * @event {{ field: string, visible: boolean }} cx-table-column-visibility-change - Emitted after a column's visibility changes via the header right-click "Hide column" action.
75
76
  * @event {{ field: string }} cx-table-edit-columns - Emitted when "Edit columns" is chosen from the header right-click menu. Extension point for a future manage-columns panel; no built-in panel is shown.
77
+ * @event {{ key: string }} cx-table-applied-filter-remove - Emitted when a host-provided chip from `additionalAppliedFilters` is removed (individually or via "Clear") in the faceted-filter panel. Carries the removed chip's `key`; the host owns the underlying filter and updates `additionalAppliedFilters` in response.
76
78
  */
77
79
  export default class CxTable extends CortexElement {
78
80
  #private;
@@ -331,6 +333,15 @@ export default class CxTable extends CortexElement {
331
333
  * Example: `"country:checkbox-multiple,createdAt|Create Date:datePicker-showTime,updatedAt|Updated At:dateRangePicker-showTime-showPreset"`
332
334
  */
333
335
  facetConfig: string | undefined;
336
+ /**
337
+ * Extra host-provided chips shown in the faceted-filter "Applied filters" panel,
338
+ * in addition to the ones the table manages itself (e.g. the search term). Push any
339
+ * number of `{ key, label }` entries; each renders as a removable tag. When one is
340
+ * removed (or "Clear" is clicked) the table emits `cx-table-applied-filter-remove`
341
+ * with its `key` — the host owns the underlying filter state and updates this list
342
+ * in response. Keys must be unique and must not clash with the reserved `search-keyword` key.
343
+ */
344
+ additionalAppliedFilters: AppliedFilterTag[];
334
345
  /**
335
346
  * Lookup list to link fields expected by the server to their function
336
347
  * ```typescript
@@ -823,6 +834,7 @@ export default class CxTable extends CortexElement {
823
834
  private columnEditorEntries;
824
835
  get initialized(): boolean | undefined;
825
836
  get searchValue(): string;
837
+ private get appliedFilterTags();
826
838
  get isBottomPlacement(): boolean;
827
839
  get showPaginationFooter(): boolean;
828
840
  /**
@@ -914,6 +926,7 @@ export default class CxTable extends CortexElement {
914
926
  isLoading(): boolean;
915
927
  search(searchText: string): void;
916
928
  private handleSearch;
929
+ private handleAppliedFilterRemove;
917
930
  handleSearchFieldsChange(): void;
918
931
  handleSearchMatchAnyKeywordChange(): void;
919
932
  handleDropdownFiltersPropChange(): void;
@@ -9,7 +9,7 @@ import { default as CxSpinner } from '../../../atoms/src/components/spinner/spin
9
9
  import { default as CxTag } from '../../../atoms/src/components/tag/tag.ts';
10
10
  import { default as CxTooltip } from '../../../atoms/src/components/tooltip/tooltip.ts';
11
11
  import { default as CortexElement } from '../../../base/src/cortex-element.ts';
12
- import { Facet, FacetDetails, FacetSelectionMode, SelectedDateRanges, SelectedFacets } from '../../../types/src/faceted-filter';
12
+ import { AppliedFilterTag, Facet, FacetDetails, FacetSelectionMode, SelectedDateRanges, SelectedFacets } from '../../../types/src/faceted-filter';
13
13
  import { CSSResultGroup } from 'lit';
14
14
 
15
15
  /**
@@ -18,6 +18,9 @@ import { CSSResultGroup } from 'lit';
18
18
  *
19
19
  * @event {{ selection: SelectedFacets }} cx-faceted-filter-change - Fired whenever
20
20
  * the user changes a selection, removes a tag, or clears all filters.
21
+ * @event {{ key: string }} cx-faceted-filter-remove - Fired when a host-provided
22
+ * applied-filter tag (see the `externalFilters` property) is removed, either individually
23
+ * or via "Clear". Carries the removed tag's `key`.
21
24
  *
22
25
  * @cssproperty [--panel-max-height=600px] - The maximum height of the dropdown panel and its content.
23
26
  */
@@ -49,6 +52,13 @@ export default class CxFacetedFilter extends CortexElement {
49
52
  selection: FacetSelectionMode;
50
53
  /** Whether the current selection is being applied by the consumer. */
51
54
  loading: boolean;
55
+ /**
56
+ * Removable chips supplied from OUTSIDE the component, shown in the applied-filters
57
+ * panel alongside the component's own facet/date selections (e.g. the table's
58
+ * free-text search term). Removing one — or clicking "Clear" — emits
59
+ * `cx-faceted-filter-remove` with its `key`; the owner updates this list in response.
60
+ */
61
+ externalFilters: AppliedFilterTag[];
52
62
  /** Total count of selected filter values that have a matching display name. */
53
63
  private appliedFiltersCount;
54
64
  /** Internal selection state maintained by the component. */
@@ -61,6 +71,7 @@ export default class CxFacetedFilter extends CortexElement {
61
71
  handleSelectedFacetsChange(): void;
62
72
  handleSelectedDateRangesChange(): void;
63
73
  handleInternalSelectionChange(): void;
74
+ handleExternalFiltersChange(): void;
64
75
  private updateAppliedFiltersCount;
65
76
  private getFacetSelectionMode;
66
77
  private buildRenderContext;
@@ -73,6 +84,7 @@ export default class CxFacetedFilter extends CortexElement {
73
84
  private getDateFacetLabel;
74
85
  private formatDateRangeDisplay;
75
86
  private renderDateTags;
87
+ private renderExternalFilterTags;
76
88
  private renderSelectionCheckboxTags;
77
89
  private renderFooter;
78
90
  render(): import('lit').TemplateResult<1>;
@@ -76,6 +76,10 @@ export default class CxIconPicker extends CortexElement {
76
76
  * When true, adds a Font Awesome section alongside the default Cortex icon library.
77
77
  */
78
78
  fontAwesome: boolean;
79
+ /**
80
+ * When true, hides the "Custom" icon option (asset picker) from the select footer and button-mode menu.
81
+ */
82
+ noCustomOption: boolean;
79
83
  /**
80
84
  * When true, renders a cx-bicolor-picker below the icon selector.
81
85
  * @default false
@@ -17,6 +17,12 @@ import { CSSResultGroup } from 'lit';
17
17
  var(--cx-color-neutral-1000),
18
18
  var(--cx-color-neutral-0)
19
19
  )] - pair of colors for light and dark theme
20
+ * @cssproperty [--search-box-custom-height=32px] - Input height when size is 'custom'.
21
+ * @cssproperty [--search-box-custom-padding=4px 8px 4px 8px] - Input padding when size is 'custom'.
22
+ * @cssproperty [--search-box-custom-font-size=var(--cx-font-size-medium)] - Input font size when size is 'custom'.
23
+ * @cssproperty [--search-box-custom-font-family] - Input font family when size is 'custom'.
24
+ * @cssproperty [--search-box-custom-font-style] - Input font style when size is 'custom'.
25
+ * @cssproperty [--search-box-custom-font-weight] - Input font weight when size is 'custom'.
20
26
  *
21
27
  * @event cx-input - Emitted when the control receives input.
22
28
  * @event cx-change - Emitted when an alteration to the control's value is committed by the user.
@@ -25,7 +31,7 @@ import { CSSResultGroup } from 'lit';
25
31
  * @csspart input - The input field for entering search queries.
26
32
  * @csspart icon - The icon displayed in the search box, typically a magnifying glass.
27
33
  *
28
- * @typedef SearchBoxSize - 'large' | 'medium' | 'small'
34
+ * @typedef SearchBoxSize - 'custom' | 'large' | 'medium' | 'small'
29
35
  */
30
36
  export default class CxSearchBox extends CortexElement {
31
37
  static readonly styles: CSSResultGroup;
@@ -190,6 +190,12 @@ export default class CxAssetLinkFormat extends CortexElement {
190
190
  private get hasUnfrozenTransformations();
191
191
  private apiGetTransformAssetLink;
192
192
  private apiGetCropFocusMode;
193
+ /**
194
+ * The unit of the last applied crop transformation, for the no-asset case only. Reflects
195
+ * whatever unit the last committed Crop transformation used, or Pixel when nothing has
196
+ * been applied yet.
197
+ */
198
+ get lastAppliedCropUnit(): Unit;
193
199
  /**
194
200
  * Checks if the crop apply button should be disabled.
195
201
  * This is determined by comparing the current crop size with the last crop size.
@@ -221,6 +227,12 @@ export default class CxAssetLinkFormat extends CortexElement {
221
227
  x: number;
222
228
  y: number;
223
229
  };
230
+ /**
231
+ * The last applied crop has no pixel size (only a ratio was ever committed, since
232
+ * there is no asset). Fall back to 1x1 (matching the width/height input mask's
233
+ * `min: 1`) instead of 0x0, so switching the unit selector back to Pixel and
234
+ * clicking Apply immediately still commits a meaningful crop instead of a no-op.
235
+ */
224
236
  px: {
225
237
  height: number;
226
238
  percentageHeight: number;
@@ -40,6 +40,8 @@ export type CxAssetLinkFormatCropFocusModeChangeEvent = CustomEvent<{
40
40
  * @event `cx-asset-link-format-crop-changed` - Emitted when crop input changes are complete.
41
41
  * @event `cx-asset-link-format-crop-apply` - Emitted when the crop settings are applied.
42
42
  * @event `cx-asset-link-format-crop-auto` - Emitted when the auto cropping is applied.
43
+ *
44
+ * @property {boolean} no-ratio-modes - When true, hides the ratio mode select (Free, Widescreen, Square, etc.).
43
45
  */
44
46
  export default class CxAssetLinkFormatCrop extends CortexElement {
45
47
  static readonly styles: CSSResultGroup;
@@ -106,6 +108,12 @@ export default class CxAssetLinkFormatCrop extends CortexElement {
106
108
  * Whether the apply button is disabled.
107
109
  */
108
110
  disabledApply: boolean;
111
+ /**
112
+ * Whether to hide the ratio mode select (Free, Widescreen, Square, etc.).
113
+ * Useful when no asset is attached yet, since switching between ratios
114
+ * without known dimensions only produces tiny, meaningless pixel values.
115
+ */
116
+ noRatioModes: boolean;
109
117
  /**
110
118
  * The last applied crop settings for each unit.
111
119
  * This is used to restore the last applied settings when the component is closed.
@@ -1,5 +1,5 @@
1
1
  import { default as CxSearchBox } from '../../../../molecules/src/search-box/search-box.ts';
2
- import { PropertyConfig } from '../../../../types/src/content-builder';
2
+ import { ConfigsOptions, PropertyConfig } from '../../../../types/src/content-builder';
3
3
  import { SearchBoxWidthType } from '../../../../types/src/search-box';
4
4
  import { LocalizeController } from '../../../../utils/src/custom-element/i18n';
5
5
 
@@ -10,7 +10,7 @@ type Attribute = {
10
10
  'width-type': SearchBoxWidthType;
11
11
  };
12
12
  declare const _default: {
13
- configs: (localize: LocalizeController) => Array<PropertyConfig<Attribute>>;
13
+ configs: (localize: LocalizeController, options?: ConfigsOptions) => Array<PropertyConfig<Attribute>>;
14
14
  defaultValue: Attribute;
15
15
  stylable: string[];
16
16
  };
@@ -74,6 +74,12 @@ export default class CxDamCustomToolbarButtonsEditor extends CortexElement {
74
74
  private apiGetDamViewAvailablePages;
75
75
  /** Tracks whether `subTypesApi` has resolved at least once for the current API. */
76
76
  private subTypesLoaded;
77
+ /**
78
+ * Full button config (backend `QuickAction`) for each available button option, keyed by
79
+ * its `value`. Populated by `availableButtonsApi` and consumed by
80
+ * `handleAvailableButtonSelect` to pre-fill the edit form for an existing button.
81
+ */
82
+ private availableButtonDetailsByValue;
77
83
  private readonly formApi;
78
84
  private readonly spaceApi;
79
85
  private readonly accessLevelApi;
@@ -148,6 +154,12 @@ export default class CxDamCustomToolbarButtonsEditor extends CortexElement {
148
154
  private findDefaultSubTypeFor;
149
155
  private createNewButton;
150
156
  private updateEditedItem;
157
+ /**
158
+ * True when another button (not the one currently being added/edited) already
159
+ * holds DamToolbarButtonType.Primary. Used to force/disable the "Primary" choice
160
+ * in the dialog so only one button can ever be Primary.
161
+ */
162
+ private hasOtherPrimaryButton;
151
163
  /**
152
164
  * Enforces the "single primary" constraint: at most one button may have
153
165
  * type === DamToolbarButtonType.Primary. When the button identified by
@@ -1,4 +1,5 @@
1
1
  import { EditorMode, Permission } from '../../../../types/src/content-builder';
2
+ import { DamCustomToolbarButton, DamViewAvailableButtonDetail } from '../../../../types/src/dam-view';
2
3
  import { AddTemplateRequest, AddTemplateResponse, GetAdhocPropertiesResponse, GetBlockTemplatesResponse, GetBlockTypesResponse, GetDamViewAssetStatusesResponse, GetDamViewAssetTypesResponse, GetDamViewAvailableButtonsResponse, GetDamViewAvailableFormsResponse, GetDamViewAvailableLevelsOfAccessResponse, GetDamViewAvailablePagesResponse, GetDamViewAvailablePanelsResponse, GetDamViewAvailableSpacesResponse, GetDamViewAvailableTemplatesResponse, GetDamViewDisplayModeOptionsResponse, GetPagesForBlockTemplateResponse, GetTemplatesResponse, UpdateTemplateRequest, UpdateTemplateResponse } from './cms5.types';
3
4
 
4
5
  export declare function apiAddTemplate({ blockType, description, name, settings, }: AddTemplateRequest): Promise<AddTemplateResponse | null>;
@@ -31,6 +32,12 @@ export declare function apiGetDamViewAvailableForms(params?: {
31
32
  export declare function apiGetDamViewAvailableButtons(params?: {
32
33
  teamspaceModule?: string;
33
34
  }): Promise<GetDamViewAvailableButtonsResponse>;
35
+ /**
36
+ * Maps the `detail` (backend `QuickAction`) of a `getavailablebuttons_42JU_v1` option
37
+ * onto the custom-toolbar-button editor's field shape, so selecting an existing button
38
+ * pre-fills its real action/config instead of the "new button" defaults.
39
+ */
40
+ export declare function mapDamViewAvailableButtonDetail(detail: DamViewAvailableButtonDetail | null): Partial<DamCustomToolbarButton>;
34
41
  export declare function apiGetDamViewAssetStatuses(): Promise<GetDamViewAssetStatusesResponse>;
35
42
  export declare function apiGetDamViewAssetTypes(): Promise<GetDamViewAssetTypesResponse>;
36
43
  export declare function apiGetDamViewAvailablePanels(params?: {
@@ -64,6 +64,8 @@ export type Transformation = {
64
64
  keepMetadata?: boolean;
65
65
  mode?: string;
66
66
  quality?: number;
67
+ ratioHeight?: number;
68
+ ratioWidth?: number;
67
69
  rotation?: number;
68
70
  unit?: Unit;
69
71
  width?: number;
@@ -47,3 +47,26 @@ export type DamCustomToolbarButton = {
47
47
  type: DamToolbarButtonType;
48
48
  workflowId?: string;
49
49
  };
50
+ /**
51
+ * Full button configuration returned alongside each `getavailablebuttons_42JU_v1`
52
+ * option, used to pre-fill the edit form when the user selects an existing button.
53
+ * Enum-shaped fields (`actionOnClick`, `buttonAppearanceType`, `customButtonType`)
54
+ * carry the backend's PascalCase enum member names verbatim (e.g. `'OpenForm'`).
55
+ */
56
+ export type DamViewAvailableButtonDetail = {
57
+ actionOnClick: string;
58
+ buttonActionID: string;
59
+ buttonAppearanceType: string;
60
+ completionMessage: string;
61
+ customButtonType: string;
62
+ formToOpen: string;
63
+ icon: string;
64
+ levelOfAccess: string;
65
+ link: string;
66
+ openInNewTab: boolean;
67
+ pageID: string;
68
+ spaceID: string;
69
+ subType: string;
70
+ tooltip: string;
71
+ type: string;
72
+ };
@@ -90,6 +90,10 @@ export type FacetRenderContext = {
90
90
  /** Selected checkbox values for this facet (`internalSelection[field]`). */
91
91
  selectionValues: string[];
92
92
  };
93
+ export type AppliedFilterTag = {
94
+ key: string;
95
+ label: string;
96
+ };
93
97
  /** The author-facing control token used in `cx-table`'s `facet-config` attribute. */
94
98
  export declare enum FacetConfigTableType {
95
99
  Checkbox = "checkbox",
@@ -1,4 +1,5 @@
1
1
  export declare enum SearchBoxSize {
2
+ Custom = "custom",
2
3
  Large = "large",
3
4
  Medium = "medium",
4
5
  Small = "small"
@@ -14,6 +14,9 @@ export type DropdownItem = {
14
14
  section?: string;
15
15
  style?: Record<string, string>;
16
16
  };
17
+ export declare enum AppliedFilterKey {
18
+ Search = "search-keyword"
19
+ }
17
20
  export declare enum PaginationPlacement {
18
21
  BottomCenter = "bottom-center",
19
22
  BottomEnd = "bottom-end",
@@ -852,6 +852,7 @@ export interface Translation extends DefaultTranslation {
852
852
  searchFolders: string;
853
853
  searchOptions: string;
854
854
  searchPlaceholder: string;
855
+ searchTerm: string;
855
856
  searching: string;
856
857
  second: string;
857
858
  secondary: string;
@@ -32,7 +32,7 @@
32
32
  export type CxAssetLinkFormatCropMode = { auto: boolean; disabledSize: boolean; label: string; value: string; };
33
33
  export type CxAssetLinkFormatFocusMode = { auto: boolean; label: string; value: string; };
34
34
  export type CxAssetLinkFormatProxy = { cdnName: string; extension: string; formatHeight: number; formatWidth: number; height: number; id: string; permanentLink: string; proxyLabel: string; proxyName: string; width: number; };
35
- export type CxAssetLinkFormatTransformation = { key: 'Crop' | 'Metadata' | 'Proxy' | 'Quality' | 'Resize' | 'Rotate'; value: { disabledSize: boolean; focusMode: string; height: number; isFocusModeAuto: boolean; keepMetadata: boolean; mode: string; quality: number; rotation: number; unit: '%' | 'px'; width: number; x: number; y: number; }; };
35
+ export type CxAssetLinkFormatTransformation = { key: 'Crop' | 'Metadata' | 'Proxy' | 'Quality' | 'Resize' | 'Rotate'; value: { disabledSize: boolean; focusMode: string; height: number; isFocusModeAuto: boolean; keepMetadata: boolean; mode: string; quality: number; ratioHeight: number; ratioWidth: number; rotation: number; unit: '%' | 'px'; width: number; x: number; y: number; }; };
36
36
  export type CxBentoGridGalleryItem = { additions: string[]; alt: string; cardType: 'asset' | 'folder' | 'link' | 'page' | 'space'; className: string; details: string; docType: '' | 'Album' | 'Audio' | 'Audio segment' | 'Image' | 'Multimedia' | 'ProjectDocument' | 'Story' | 'Video' | 'Widget'; filler: boolean; header: string; id: string; isClone: boolean; name: string; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; openInNewTab: boolean; pageId: string; rawId: string; size: string; src: string; url: string; };
37
37
  export type CxCarouselGalleryItem = { additions: string[]; alt: string; cardType: 'asset' | 'folder' | 'link' | 'page' | 'space'; className: string; details: string; docType: '' | 'Album' | 'Audio' | 'Audio segment' | 'Image' | 'Multimedia' | 'ProjectDocument' | 'Story' | 'Video' | 'Widget'; filler: boolean; header: string; id: string; isClone: boolean; name: string; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; openInNewTab: boolean; pageId: string; rawId: string; size: string; src: string; url: string; };
38
38
  export type CxChatbotChatbotEvent = { event: string; excludedFromPurposes: string[]; label: string; };
@@ -50,9 +50,9 @@
50
50
  export type CxColorSwatchGroupColorSwatchData = { cmyk: string; color: string; hex: string; id: string; name: string; palette: string; pms: string; rgb: string; };
51
51
  export type CxDamCustomToolbarButtonsEditorDamCustomToolbarButton = { accessLevel: string; action: 'create-record' | 'execute-workflow' | 'open-form' | 'open-link' | 'open-page' | 'open-space'; appearance: 'icon-and-label' | 'icon-only' | 'label-only'; completionMessage: string; formId: string; icon: string; id: string; label: string; link: string; name: string; openInNewTab: boolean; pageId: string; pageUrl: string; recordSubType: string; recordType: string; spaceId: string; tooltip: string; type: 'primary' | 'secondary'; workflowId: string; };
52
52
  export type CxGalleryGalleryRecord = { id: string; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; rawId: string; src: string; };
53
- export type CxGalleryTransformation = { key: 'Crop' | 'Metadata' | 'Proxy' | 'Quality' | 'Resize' | 'Rotate'; value: { disabledSize: boolean; focusMode: string; height: number; isFocusModeAuto: boolean; keepMetadata: boolean; mode: string; quality: number; rotation: number; unit: '%' | 'px'; width: number; x: number; y: number; }; };
53
+ export type CxGalleryTransformation = { key: 'Crop' | 'Metadata' | 'Proxy' | 'Quality' | 'Resize' | 'Rotate'; value: { disabledSize: boolean; focusMode: string; height: number; isFocusModeAuto: boolean; keepMetadata: boolean; mode: string; quality: number; ratioHeight: number; ratioWidth: number; rotation: number; unit: '%' | 'px'; width: number; x: number; y: number; }; };
54
54
  export type CxTimelineTimelineItem = { id: string; label: string; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; recordId: string; thumbnail: string; };
55
- export type CxTimelineTransformation = { key: 'Crop' | 'Metadata' | 'Proxy' | 'Quality' | 'Resize' | 'Rotate'; value: { disabledSize: boolean; focusMode: string; height: number; isFocusModeAuto: boolean; keepMetadata: boolean; mode: string; quality: number; rotation: number; unit: '%' | 'px'; width: number; x: number; y: number; }; };
55
+ export type CxTimelineTransformation = { key: 'Crop' | 'Metadata' | 'Proxy' | 'Quality' | 'Resize' | 'Rotate'; value: { disabledSize: boolean; focusMode: string; height: number; isFocusModeAuto: boolean; keepMetadata: boolean; mode: string; quality: number; ratioHeight: number; ratioWidth: number; rotation: number; unit: '%' | 'px'; width: number; x: number; y: number; }; };
56
56
  export type CxContentBuilderDevice = { canvasWidth: string; height: string; id: string; maxWidth: string; name: string; };
57
57
  export type CxDashboardFilterDashboardFilterControl = { controlId: string; controlType: string; id: string; label: string; maxOptionsVisible: number; optionColumnMapping: CxDashboardFilterPartial; options: CxDashboardFilterDashboardFilterOption[] | dictionary[]; placeholder: string; type: string; };
58
58
  export type CxDashboardFilterPartial = any;
@@ -6561,6 +6561,10 @@
6561
6561
  * When true, adds a Font Awesome section alongside the default Cortex icon library.
6562
6562
  */
6563
6563
  fontAwesome?: boolean;
6564
+ /**
6565
+ * When true, hides the "Custom" icon option (asset picker) from the select footer and button-mode menu.
6566
+ */
6567
+ noCustomOption?: boolean;
6564
6568
  /**
6565
6569
  * When true, renders a cx-bicolor-picker below the icon selector. <br/>@default false
6566
6570
  */
@@ -6964,7 +6968,7 @@
6964
6968
  /**
6965
6969
  * Search input's size.
6966
6970
  */
6967
- size?: 'large' | 'medium' | 'small';
6971
+ size?: 'custom' | 'large' | 'medium' | 'small';
6968
6972
  /**
6969
6973
  * Placeholder for input
6970
6974
  */
package/library/utils.js CHANGED
@@ -13,7 +13,7 @@ import { d as Fe } from "./chunks/drag.DXEXVXPv.js";
13
13
  import { f as Oe } from "./chunks/focus-when-visible.jWSw9ks0.js";
14
14
  import { f as O } from "./chunks/form.BSqXLytJ.js";
15
15
  import { F as Ne, c as Ue, g as Pe, v as _e, a as He } from "./chunks/form.BSqXLytJ.js";
16
- import { L as We, r as Be } from "./chunks/i18n.DYXys45m.js";
16
+ import { L as We, r as Be } from "./chunks/i18n.D07sG_CU.js";
17
17
  import { c as Ge, q as ze } from "./chunks/math.DuKzLacZ.js";
18
18
  import { g as Qe, l as Ze, s as je, u as Je } from "./chunks/scroll.xtO5yojm.js";
19
19
  import { j as y } from "./chunks/dom.CU_mBy9D.js";
@@ -26,14 +26,14 @@ import { C as Sr } from "./chunks/calendar-grid.CvdcwfTo.js";
26
26
  import { b as Ar, e as Ir, f as Lr, g as vr, a as br, i as Rr, d as Vr, c as Fr, n as kr, p as Or, t as Yr } from "./chunks/date.dSYNLBVO.js";
27
27
  import { e as c, a as u, D as m } from "./chunks/date-picker.DTUICGb9.js";
28
28
  import { f as Ur } from "./chunks/content-builder.DZRw6hpX.js";
29
- import { c as _r, f as Hr, e as Xr, b as Wr, g as Br, d as $r, i as Gr, r as zr, a as qr } from "./chunks/image.BzmclWBR.js";
29
+ import { c as _r, f as Hr, e as Xr, b as Wr, g as Br, d as $r, i as Gr, r as zr, a as qr } from "./chunks/image.QVlPFadX.js";
30
30
  import { b as Zr, e as jr } from "./chunks/waveform.1U9U_0rd.js";
31
- import { a as Kr, b as ta, c as ea, e as ra, d as aa, f as sa, g as oa, r as na, s as ia } from "./chunks/number.B4PQLJIg.js";
31
+ import { a as Kr, b as ta, c as ea, e as ra, d as aa, f as sa, g as oa, r as na, s as ia } from "./chunks/number.CtCaI0T_.js";
32
32
  import { s as ca } from "./chunks/parse.Cu5nBDTb.js";
33
33
  import { b as ma, d as fa, e as ha, f as ga, m as da, g as pa, h as Da, l as Ta, p as wa, w as Ca, v as xa, a as Ma, c as ya, s as Sa, r as Ea, o as Aa, t as Ia, n as La, q as va, i as ba, u as Ra } from "./chunks/string.BmBJ_BLT.js";
34
34
  import { g as Fa, a as ka } from "./chunks/template.ClovJacp.js";
35
- import { c as Ya, f as Na, a as Ua, g as Pa } from "./chunks/time.BSmpFe2G.js";
36
- import { b as Ha } from "./chunks/transformation.c-RS37zA.js";
35
+ import { c as Ya, f as Na, a as Ua, g as Pa } from "./chunks/time.DWfbnPnM.js";
36
+ import { b as Ha } from "./chunks/transformation.DGzjBg6V.js";
37
37
  function n(t) {
38
38
  const e = t.getFullYear(), r = String(t.getMonth() + 1).padStart(2, "0"), s = String(t.getDate()).padStart(2, "0");
39
39
  return `${e}-${r}-${s}`;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orangelogic/design-system",
3
3
  "type": "module",
4
- "version": "2.145.0",
4
+ "version": "2.147.0",
5
5
  "license": "UNLICENSED",
6
6
  "types": "library/types.d.ts",
7
7
  "scripts": {