udp-stencil-component-library 26.2.0-beta.0 → 26.2.0-beta.14

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 (88) hide show
  1. package/dist/cjs/{SearchBuilder-BsB_257b.js → SearchBuilder-aqpLQz8E.js} +4 -0
  2. package/dist/cjs/ag-grid-base_63.cjs.entry.js +64 -23
  3. package/dist/cjs/api-method-instance-grid.cjs.entry.js +7 -2
  4. package/dist/cjs/{apiMethodInstance-B_zfUIFl.js → apiMethodInstance-DymTfku4.js} +1 -1
  5. package/dist/cjs/{configureUdpColumnMods-MGNO-bXn.js → configureUdpColumnMods-DtsJ11YI.js} +17 -2
  6. package/dist/cjs/index.cjs.js +4 -3
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/lookupHelper-fokGJbeb.js +86 -0
  9. package/dist/cjs/resource-timeline-calendar.cjs.entry.js +14 -2
  10. package/dist/cjs/resource-timeline-primary-bar.cjs.entry.js +5 -1
  11. package/dist/cjs/search-method-grid.cjs.entry.js +2 -69
  12. package/dist/cjs/stencil-library.cjs.js +1 -1
  13. package/dist/cjs/udp-detail-list-item.cjs.entry.js +1 -1
  14. package/dist/cjs/udp-detail-list.cjs.entry.js +21 -9
  15. package/dist/cjs/udp-fluent-file-input.cjs.entry.js +6 -2
  16. package/dist/cjs/udp-forms-renderer.cjs.entry.js +1 -1
  17. package/dist/collection/components/data-display/detail-list/udp-detail-list.js +47 -9
  18. package/dist/collection/components/data-display/detail-list-item/udp-detail-list-item.css +7 -0
  19. package/dist/collection/components/fluent-ui/file-input/udp-fluent-file-input.js +6 -2
  20. package/dist/collection/components/fluent-ui/tablist/udp-fluent-tablist.js +2 -2
  21. package/dist/collection/components/fluent-ui/tree/udp-tree.css +3 -0
  22. package/dist/collection/components/fluent-ui/tree/udp-tree.js +11 -1
  23. package/dist/collection/components/grid/new-grid/ag-grid-base.js +6 -2
  24. package/dist/collection/components/grid/new-grid/grid-header.js +9 -5
  25. package/dist/collection/components/grid/new-grid/gridFunctions/savedViews.js +33 -6
  26. package/dist/collection/components/grid/new-grid/helperFunctions/configureUdpColumnMods.js +16 -2
  27. package/dist/collection/components/grid/new-grid/helperFunctions/lookupHelper.js +54 -47
  28. package/dist/collection/components/grid/resource-timeline-calendar/resource-timeline-calendar.js +14 -2
  29. package/dist/collection/components/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +5 -1
  30. package/dist/collection/components/layout/primary-action-header/udp-primary-action-header.js +5 -1
  31. package/dist/collection/udp-utilities/search/SearchBuilder.js +4 -0
  32. package/dist/components/SearchBuilder.js +1 -1
  33. package/dist/components/ag-grid-base2.js +1 -1
  34. package/dist/components/configureUdpColumnMods.js +1 -1
  35. package/dist/components/grid-header2.js +1 -1
  36. package/dist/components/resource-timeline-calendar.js +1 -1
  37. package/dist/components/resource-timeline-primary-bar2.js +1 -1
  38. package/dist/components/search-method-grid2.js +1 -1
  39. package/dist/components/udp-detail-list-item.js +1 -1
  40. package/dist/components/udp-detail-list.js +1 -1
  41. package/dist/components/udp-fluent-file-input.js +1 -1
  42. package/dist/components/udp-fluent-tablist2.js +1 -1
  43. package/dist/components/udp-primary-action-header2.js +1 -1
  44. package/dist/components/udp-tree2.js +1 -1
  45. package/dist/docs.json +105 -11
  46. package/dist/esm/{SearchBuilder-CiCHnrfs.js → SearchBuilder-DlL9u8ku.js} +4 -0
  47. package/dist/esm/ag-grid-base_63.entry.js +59 -18
  48. package/dist/esm/api-method-instance-grid.entry.js +7 -2
  49. package/dist/esm/{apiMethodInstance-WU8uISWJ.js → apiMethodInstance-BVrO2muA.js} +1 -1
  50. package/dist/esm/{configureUdpColumnMods-UsX5iItH.js → configureUdpColumnMods-CKOL0XD9.js} +17 -2
  51. package/dist/esm/index.js +4 -3
  52. package/dist/esm/loader.js +1 -1
  53. package/dist/esm/lookupHelper-C0n7Ube1.js +81 -0
  54. package/dist/esm/resource-timeline-calendar.entry.js +14 -2
  55. package/dist/esm/resource-timeline-primary-bar.entry.js +5 -1
  56. package/dist/esm/search-method-grid.entry.js +2 -69
  57. package/dist/esm/stencil-library.js +1 -1
  58. package/dist/esm/udp-detail-list-item.entry.js +1 -1
  59. package/dist/esm/udp-detail-list.entry.js +21 -9
  60. package/dist/esm/udp-fluent-file-input.entry.js +6 -2
  61. package/dist/esm/udp-forms-renderer.entry.js +1 -1
  62. package/dist/stencil-library/{SearchBuilder-CiCHnrfs.js → SearchBuilder-DlL9u8ku.js} +1 -1
  63. package/dist/stencil-library/ag-grid-base_63.entry.js +1 -1
  64. package/dist/stencil-library/api-method-instance-grid.entry.js +1 -1
  65. package/dist/stencil-library/{apiMethodInstance-WU8uISWJ.js → apiMethodInstance-BVrO2muA.js} +1 -1
  66. package/dist/stencil-library/configureUdpColumnMods-CKOL0XD9.js +1 -0
  67. package/dist/stencil-library/index.esm.js +1 -1
  68. package/dist/stencil-library/lookupHelper-C0n7Ube1.js +1 -0
  69. package/dist/stencil-library/resource-timeline-calendar.entry.js +1 -1
  70. package/dist/stencil-library/resource-timeline-primary-bar.entry.js +1 -1
  71. package/dist/stencil-library/search-method-grid.entry.js +1 -1
  72. package/dist/stencil-library/stencil-library.esm.js +1 -1
  73. package/dist/stencil-library/udp-detail-list-item.entry.js +1 -1
  74. package/dist/stencil-library/udp-detail-list.entry.js +1 -1
  75. package/dist/stencil-library/udp-fluent-file-input.entry.js +1 -1
  76. package/dist/stencil-library/udp-forms-renderer.entry.js +1 -1
  77. package/dist/types/components/data-display/detail-list/udp-detail-list.d.ts +6 -2
  78. package/dist/types/components/grid/new-grid/ag-grid-base.d.ts +2 -1
  79. package/dist/types/components/grid/new-grid/gridFunctions/savedViews.d.ts +2 -0
  80. package/dist/types/components/grid/new-grid/helperFunctions/lookupHelper.d.ts +7 -0
  81. package/dist/types/components/grid/new-grid/interfaces/grid.d.ts +2 -0
  82. package/dist/types/components/layout/primary-action-header/udp-primary-action-header.d.ts +2 -0
  83. package/dist/types/components.d.ts +12 -2
  84. package/package.json +1 -1
  85. package/dist/cjs/getCurrentApiCatalogId-D7xHCEzs.js +0 -7
  86. package/dist/esm/getCurrentApiCatalogId-DeurXd9l.js +0 -5
  87. package/dist/stencil-library/configureUdpColumnMods-UsX5iItH.js +0 -1
  88. package/dist/stencil-library/getCurrentApiCatalogId-DeurXd9l.js +0 -1
@@ -309,6 +309,10 @@ class SearchUtilities {
309
309
  if (!validation.isValid) {
310
310
  throw new Error(`Invalid search: ${validation.errors.join(', ')}`);
311
311
  }
312
+ // Wait for ConfigService to be initialized — callers may invoke this from
313
+ // top-level effects that mount before the app sets PRODUCT_API_DOMAIN,
314
+ // which would otherwise produce a relative URL and fail the request.
315
+ await configService.ConfigService.waitForConfig();
312
316
  // Build the API URL
313
317
  const url = `${configService.ConfigService.productV1ApiUrl}/${tableName}/search`;
314
318
  // Execute the search
@@ -3,10 +3,10 @@
3
3
  var index = require('./index-G1ccGqOs.js');
4
4
  var agGridEnterpriseV33 = require('ag-grid-enterprise-v33');
5
5
  var apiUtils = require('./apiUtils-ELzOoTQ0.js');
6
- var getCurrentApiCatalogId = require('./getCurrentApiCatalogId-D7xHCEzs.js');
6
+ var lookupHelper = require('./lookupHelper-fokGJbeb.js');
7
7
  var tenantUtils = require('./tenantUtils-BCKSE0vq.js');
8
8
  var statusRenderer = require('./status-renderer-9CQ-hhq8.js');
9
- var configureUdpColumnMods = require('./configureUdpColumnMods-MGNO-bXn.js');
9
+ var configureUdpColumnMods = require('./configureUdpColumnMods-DtsJ11YI.js');
10
10
  var lodashEs = require('lodash-es');
11
11
  var makeApiCall = require('./makeApiCall-CFfg9gI0.js');
12
12
  var configService = require('./configService-BqiLnW8G.js');
@@ -291,10 +291,15 @@ class SavedViews {
291
291
  var _a;
292
292
  if (!this.baseColumnState)
293
293
  return;
294
- const currentColIds = ((_a = this.api.getColumnState()) !== null && _a !== void 0 ? _a : []).map(c => c.colId).join(',');
295
- const baseColIds = JSON.parse(this.baseColumnState)
294
+ // Compare only primary (user-defined) colIds pivot result columns regenerate
295
+ // from filtered data and shouldn't be treated as external column-def updates.
296
+ const primaryColIds = this.getPrimaryColIds();
297
+ const collectColIds = (state) => state
298
+ .filter(c => primaryColIds.has(c.colId))
296
299
  .map(c => c.colId)
297
300
  .join(',');
301
+ const currentColIds = collectColIds((_a = this.api.getColumnState()) !== null && _a !== void 0 ? _a : []);
302
+ const baseColIds = collectColIds(JSON.parse(this.baseColumnState));
298
303
  if (currentColIds !== baseColIds) {
299
304
  this.baseColumnState = JSON.stringify(this.api.getColumnState());
300
305
  if (this.isDirty) {
@@ -350,8 +355,26 @@ class SavedViews {
350
355
  this.saveCurrentStateToLocalStorage();
351
356
  });
352
357
  };
358
+ // Returns the set of colIds for primary (user-defined) columns. Pivot result
359
+ // columns are secondary and excluded — they regenerate from filtered data and
360
+ // would cause spurious dirty diffs.
361
+ this.getPrimaryColIds = () => {
362
+ var _a;
363
+ return new Set(((_a = this.api.getColumns()) !== null && _a !== void 0 ? _a : [])
364
+ .filter(c => c.isPrimary())
365
+ .map(c => c.getColId()));
366
+ };
367
+ // Serializes column state to a JSON string filtered to primary columns only.
368
+ // Using a positive include filter (vs. excluding pivot result ids) keeps the
369
+ // comparison symmetric across snapshots — stale pivot ids in older baselines
370
+ // get dropped automatically because they aren't in the current primary set.
371
+ this.serializeUserColumnState = (state) => {
372
+ const primaryColIds = this.getPrimaryColIds();
373
+ return JSON.stringify(state.filter(c => primaryColIds.has(c.colId)));
374
+ };
353
375
  // Compare current grid state against snapshot (view active) or default empty state (no view)
354
376
  this.checkIfDirty = () => {
377
+ var _a, _b;
355
378
  // Skip during initial setup — baseline will be recaptured after parent
356
379
  // gridReady handlers (e.g. search-method-grid) finish applying state.
357
380
  if (this.baselineRecaptureId !== null)
@@ -359,18 +382,22 @@ class SavedViews {
359
382
  let dirty;
360
383
  if (this.activeViewId && this.activeViewState) {
361
384
  // Named view active: compare against the snapshot taken when the view was applied
362
- const currentColumnState = JSON.stringify(this.api.getColumnState());
385
+ const currentColumnState = this.serializeUserColumnState((_a = this.api.getColumnState()) !== null && _a !== void 0 ? _a : []);
386
+ const baseColumnState = this.serializeUserColumnState(JSON.parse(this.activeViewState.columnState));
363
387
  const currentFilterModel = JSON.stringify(this.api.getFilterModel());
364
388
  dirty =
365
- currentColumnState !== this.activeViewState.columnState ||
389
+ currentColumnState !== baseColumnState ||
366
390
  currentFilterModel !== this.activeViewState.filterModel;
367
391
  }
368
392
  else {
369
393
  // No view: dirty if there are any active filters or column state changes vs baseline
370
394
  const filterModel = this.api.getFilterModel();
371
395
  const hasFilters = Object.keys(filterModel !== null && filterModel !== void 0 ? filterModel : {}).length > 0;
372
- const columnState = this.api.getColumnState();
373
- const hasColumnChanges = this.baseColumnState !== null && JSON.stringify(columnState) !== this.baseColumnState;
396
+ const currentColumnState = this.serializeUserColumnState((_b = this.api.getColumnState()) !== null && _b !== void 0 ? _b : []);
397
+ const baseColumnState = this.baseColumnState !== null
398
+ ? this.serializeUserColumnState(JSON.parse(this.baseColumnState))
399
+ : null;
400
+ const hasColumnChanges = baseColumnState !== null && currentColumnState !== baseColumnState;
374
401
  dirty = hasFilters || hasColumnChanges;
375
402
  }
376
403
  if (dirty !== this.isDirty) {
@@ -624,7 +651,7 @@ class SavedViews {
624
651
  },
625
652
  ];
626
653
  try {
627
- await apiUtils.updateViewAndConfigurations(view.gridViewId, getUserId(), context === null || context === void 0 ? void 0 : context.gridId, getCurrentApiCatalogId.getCurrentApiCatalogId(), view.name, saveState, view.isDefault ? 1 : 0, context === null || context === void 0 ? void 0 : context.entityName, (_a = view.gridViewVisibilityTypeId) !== null && _a !== void 0 ? _a : 1, () => null);
654
+ await apiUtils.updateViewAndConfigurations(view.gridViewId, getUserId(), context === null || context === void 0 ? void 0 : context.gridId, lookupHelper.getCurrentApiCatalogId(), view.name, saveState, view.isDefault ? 1 : 0, context === null || context === void 0 ? void 0 : context.entityName, (_a = view.gridViewVisibilityTypeId) !== null && _a !== void 0 ? _a : 1, () => null);
628
655
  await this.fetchViews();
629
656
  const updated = this.filteredViews.find(v => v.gridViewId === view.gridViewId);
630
657
  if (updated)
@@ -786,7 +813,7 @@ class SavedViews {
786
813
  },
787
814
  ];
788
815
  try {
789
- await apiUtils.saveView(getUserId(), context === null || context === void 0 ? void 0 : context.gridId, getCurrentApiCatalogId.getCurrentApiCatalogId(), name, context === null || context === void 0 ? void 0 : context.entityName, saveState, visibilityTypeId, 0, // not set as default
816
+ await apiUtils.saveView(getUserId(), context === null || context === void 0 ? void 0 : context.gridId, lookupHelper.getCurrentApiCatalogId(), name, context === null || context === void 0 ? void 0 : context.entityName, saveState, visibilityTypeId, 0, // not set as default
790
817
  () => null);
791
818
  await this.fetchViews();
792
819
  const newView = this.filteredViews.find(v => v.name === name);
@@ -806,7 +833,7 @@ class SavedViews {
806
833
  this.refresh();
807
834
  const context = this.api.getGridOption('context');
808
835
  try {
809
- await apiUtils.updateView(view.gridViewId, getUserId(), context === null || context === void 0 ? void 0 : context.gridId, getCurrentApiCatalogId.getCurrentApiCatalogId(), name, view.isDefault ? 1 : 0, context === null || context === void 0 ? void 0 : context.entityName, visibilityTypeId, () => null);
836
+ await apiUtils.updateView(view.gridViewId, getUserId(), context === null || context === void 0 ? void 0 : context.gridId, lookupHelper.getCurrentApiCatalogId(), name, view.isDefault ? 1 : 0, context === null || context === void 0 ? void 0 : context.entityName, visibilityTypeId, () => null);
810
837
  await this.fetchViews();
811
838
  }
812
839
  catch (err) {
@@ -824,12 +851,12 @@ class SavedViews {
824
851
  const context = this.api.getGridOption('context');
825
852
  const isCurrentlyDefault = view.isDefault;
826
853
  try {
827
- await apiUtils.updateView(view.gridViewId, getUserId(), context === null || context === void 0 ? void 0 : context.gridId, getCurrentApiCatalogId.getCurrentApiCatalogId(), view.name, isCurrentlyDefault ? 0 : 1, context === null || context === void 0 ? void 0 : context.entityName, (_a = view.gridViewVisibilityTypeId) !== null && _a !== void 0 ? _a : 1, () => null);
854
+ await apiUtils.updateView(view.gridViewId, getUserId(), context === null || context === void 0 ? void 0 : context.gridId, lookupHelper.getCurrentApiCatalogId(), view.name, isCurrentlyDefault ? 0 : 1, context === null || context === void 0 ? void 0 : context.entityName, (_a = view.gridViewVisibilityTypeId) !== null && _a !== void 0 ? _a : 1, () => null);
828
855
  if (!isCurrentlyDefault) {
829
856
  // Unset the previous default if there was one
830
857
  const currentDefault = this.filteredViews.find(v => v.isDefault);
831
858
  if (currentDefault) {
832
- await apiUtils.updateView(currentDefault.gridViewId, getUserId(), context === null || context === void 0 ? void 0 : context.gridId, getCurrentApiCatalogId.getCurrentApiCatalogId(), currentDefault.name, 0, context === null || context === void 0 ? void 0 : context.entityName, (_b = currentDefault.gridViewVisibilityTypeId) !== null && _b !== void 0 ? _b : 1, () => null).catch(err => console.log(err));
859
+ await apiUtils.updateView(currentDefault.gridViewId, getUserId(), context === null || context === void 0 ? void 0 : context.gridId, lookupHelper.getCurrentApiCatalogId(), currentDefault.name, 0, context === null || context === void 0 ? void 0 : context.entityName, (_b = currentDefault.gridViewVisibilityTypeId) !== null && _b !== void 0 ? _b : 1, () => null).catch(err => console.log(err));
833
860
  }
834
861
  }
835
862
  await this.fetchViews();
@@ -1444,6 +1471,9 @@ const AgGridBase = class {
1444
1471
  * Refresh key for the grid. Used by grid functions.
1445
1472
  */
1446
1473
  this.refreshKey = 0;
1474
+ // @State so reassignment in onGridReady triggers a re-render — otherwise
1475
+ // grid-header receives only the initial empty array and downstream relies on
1476
+ // savedViews.init() firing refreshKey++ as a side effect to update the prop.
1447
1477
  this.gridFunctionInstances = [];
1448
1478
  this.myTheme = agGridEnterpriseV33.themeQuartz.withParams({
1449
1479
  wrapperBorderRadius: 0,
@@ -1621,7 +1651,7 @@ const AgGridBase = class {
1621
1651
  this.updateGridContextValues();
1622
1652
  }
1623
1653
  render() {
1624
- return (index.h("div", { key: '28295b31bb57a79c026571c4bc2658bc142a6044', ref: el => (this.gridContainerEl = el) }, index.h("ghost-render", { key: '00d8044044b9df22e0b9ea5384b299aaa71d1962' }, index.h("div", { key: 'f1b96881e7881fb6d815c090ae3ce41e7cd0d3fe' }, index.h("udp-dialog", { key: '07cabede25361ce396c09de8e858d140ad581345' }), index.h("udp-list-item", { key: '2706ad0e6c0dd7ce5cf12cb490f7709ca5c0956c' }), index.h("hint-panel", { key: '9893d09d8fa85966e08feaa32b423e4ef28946ca' }), index.h("udp-side-sheet", { key: 'd24b860add93c6455938fd83b1830188b08536c1' }), index.h("udp-fluent-dialog", { key: '68b35903b5f563d6c93d5a0b28f01a880f7dca2a' }), index.h("udp-fluent-text", { key: 'c0b84fc1e06db10433cd9bf255c916d965f943b0' }), index.h("udp-fluent-text-input", { key: '4125ae2f44e892b4a4304b593d1ec783807d765e' }), index.h("udp-fluent-switch", { key: 'acb3cc843565fc2a276a5ace8af9f2273be5751e' }), index.h("udp-fluent-button", { key: 'b339290e313091f1cb02e87bceab213ff0cfe48d' }), index.h("udp-text", { key: '6f562b11231b95ff2ab5263fd93d50e692f4c535' }), index.h("udp-search-input", { key: 'de54983644895e8bc6f084c7b17abbd3b4eabae2' }), index.h("udp-fluent-avatar", { key: '7f07751beadae953c84f12577517e72d08662296' }), index.h("udp-fluent-icon-button", { key: '92ca31065f3af5c6e89ae945de004bfd18c418de' }), index.h("udp-fluent-icon", { key: '4a82b60fbfbe19cde29280c0abd71dcfaa53c6a5' }), index.h("udp-fluent-badge", { key: '392307e71d90db19c34099aedba1db573fc1e601' }))), index.h("grid-header", { key: 'c13cac1e69b3006a053501fcbf5d5729c12f112e', headerConfig: this.headerConfig, gridFunctions: this.gridFunctions, gridFunctionInstances: this.gridFunctionInstances, refreshKey: this.refreshKey, onHeaderAction: this.onHeaderAction }), index.h("div", { key: '06cf43709ccf9e5d75a7c6a35dce3561adea98f2', ref: el => (this.gridEl = el) })));
1654
+ return (index.h("div", { key: '787b7be7f7b05c843a6a01c6e1566847bf7b22b4', ref: el => (this.gridContainerEl = el) }, index.h("ghost-render", { key: '703da83d17a7676b36233e07a3bd46a206f7963d' }, index.h("div", { key: 'b604c343a6d15887f1a2b1a1b2406d2818f9eadf' }, index.h("udp-dialog", { key: '88d07504f07a14bda85af5e2ff27c41461a3fd6a' }), index.h("udp-list-item", { key: '8e695bdf55f5101e625f67567d4e475ec33450d5' }), index.h("hint-panel", { key: '845b944175b2c33229529e743d55dbe099da503f' }), index.h("udp-side-sheet", { key: '7e2005fb4e179e5b02eaa2489c32dd210e42e5a4' }), index.h("udp-fluent-dialog", { key: '9a167175826cc762c81e36d716be28118d2d2505' }), index.h("udp-fluent-text", { key: 'fd36f31c317dc8e01d4db0c44e00fcafbace768c' }), index.h("udp-fluent-text-input", { key: '732d9df42b2922acc0883d0ccc443d4ad2b9445d' }), index.h("udp-fluent-switch", { key: 'bffc7d2fb3a370936fd239864f2a0c46ee6a9361' }), index.h("udp-fluent-button", { key: '9dcbe7e3d774db0d98ca516841b1f61c84d71840' }), index.h("udp-text", { key: '55f4db1ac90181b5584d2819b08c52b140820e92' }), index.h("udp-search-input", { key: 'c8fed21ba25c4e5d1041834a285c64e66a6576b0' }), index.h("udp-fluent-avatar", { key: 'cc196444d1bc69bd495ec192d64079de9437e849' }), index.h("udp-fluent-icon-button", { key: '785862e322d8a6a74aee88396ec757c8852e12ec' }), index.h("udp-fluent-icon", { key: '94b21290732e5cb9cbbfe48a6795fc2af91e7c20' }), index.h("udp-fluent-badge", { key: '7c4b77948a2569614d3bd80c5d2de9d974c75427' }))), index.h("grid-header", { key: '1f42c9f41eab77a2f9bf7fe36b41b5871e1d6e26', headerConfig: this.headerConfig, gridFunctions: this.gridFunctions, gridFunctionInstances: this.gridFunctionInstances, refreshKey: this.refreshKey, onHeaderAction: this.onHeaderAction }), index.h("div", { key: '8f563ca751e9377dbedc4c225be264bb293f746f', ref: el => (this.gridEl = el) })));
1625
1655
  }
1626
1656
  static get watchers() { return {
1627
1657
  "gridFunctions": [{
@@ -1807,7 +1837,7 @@ const GridHeader = class {
1807
1837
  this.headerAction.emit({ name, payload });
1808
1838
  }
1809
1839
  render() {
1810
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
1840
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
1811
1841
  // ── Layout decision ───────────────────────────────────────────────────────
1812
1842
  const hasScopingTools = computeHasScopingTools(this.gridFunctions);
1813
1843
  // ── PAH (Row 1) content ───────────────────────────────────────────────────
@@ -1827,6 +1857,7 @@ const GridHeader = class {
1827
1857
  onClick: a.onClick,
1828
1858
  iconName: a.iconName,
1829
1859
  disabled: a.disabled,
1860
+ iconOnly: a.iconOnly,
1830
1861
  }));
1831
1862
  const subtitle = (_d = this.headerConfig) === null || _d === void 0 ? void 0 : _d.subtitle;
1832
1863
  // ── Function name lookup ──────────────────────────────────────────────────
@@ -1887,8 +1918,11 @@ const GridHeader = class {
1887
1918
  return null;
1888
1919
  // Promote grid functions into PAH actions row when both exist but no scoping tools
1889
1920
  const isPromoted = hasHeaderConfig && hasGridFunctions && !hasScopingTools;
1921
+ // When title and subtitle are both absent, promote scoping tools into the PAH row too
1922
+ const hasTitleOrSubtitle = !!(((_k = this.headerConfig) === null || _k === void 0 ? void 0 : _k.title) || subtitle);
1923
+ const isFullyPromoted = hasHeaderConfig && hasGridFunctions && hasScopingTools && !hasTitleOrSubtitle;
1890
1924
  // Separate toolbar row when grid functions are not promoted into PAH
1891
- const showToolbar = hasGridFunctions && !isPromoted;
1925
+ const showToolbar = hasGridFunctions && !isPromoted && !isFullyPromoted;
1892
1926
  // ── Zone B renderer (Utilities) ───────────────────────────────────────────
1893
1927
  const renderUtilitiesZone = () => {
1894
1928
  var _a, _b, _c, _d;
@@ -1916,11 +1950,11 @@ const GridHeader = class {
1916
1950
  return renderToolbar();
1917
1951
  }
1918
1952
  // Promoted layout + bulk active: overlay bulk bar on hidden PAH to preserve height
1919
- if (isPromoted && isBulkActive) {
1920
- return (index.h("div", { class: "bulk-overlay-wrapper" }, index.h("div", { class: "bulk-overlay-ghost", "aria-hidden": "true" }, index.h("udp-primary-action-header", { title: (_k = this.headerConfig) === null || _k === void 0 ? void 0 : _k.title, subtitle: subtitle, primaryAction: primaryAction, secondaryActions: secondaryActions })), index.h("div", { class: "bulk-overlay-bar" }, (_l = bulkActionsInstance.render) === null || _l === void 0 ? void 0 : _l.call(bulkActionsInstance))));
1953
+ if ((isPromoted || isFullyPromoted) && isBulkActive) {
1954
+ return (index.h("div", { class: "bulk-overlay-wrapper" }, index.h("div", { class: "bulk-overlay-ghost", "aria-hidden": "true" }, index.h("udp-primary-action-header", { title: (_l = this.headerConfig) === null || _l === void 0 ? void 0 : _l.title, subtitle: subtitle, primaryAction: primaryAction, secondaryActions: secondaryActions })), index.h("div", { class: "bulk-overlay-bar" }, (_m = bulkActionsInstance.render) === null || _m === void 0 ? void 0 : _m.call(bulkActionsInstance))));
1921
1955
  }
1922
1956
  return [
1923
- index.h("udp-primary-action-header", { title: (_m = this.headerConfig) === null || _m === void 0 ? void 0 : _m.title, subtitle: subtitle, primaryAction: primaryAction, secondaryActions: secondaryActions }, isPromoted && hasUtilityButtons && (index.h("div", { slot: "actions", class: "promoted-utilities" }, renderUtilitiesZone()))),
1957
+ index.h("udp-primary-action-header", { title: (_o = this.headerConfig) === null || _o === void 0 ? void 0 : _o.title, subtitle: subtitle, primaryAction: primaryAction, secondaryActions: secondaryActions }, isFullyPromoted && (index.h("div", { slot: "inline", class: "promoted-scoping" }, renderScopingZone())), (isPromoted || isFullyPromoted) && hasUtilityButtons && (index.h("div", { slot: "actions", class: "promoted-utilities" }, renderUtilitiesZone()))),
1924
1958
  showToolbar && renderToolbar(),
1925
1959
  ];
1926
1960
  }
@@ -7419,10 +7453,10 @@ const UdpFluentTablist = class {
7419
7453
  return (index.h("div", { class: {
7420
7454
  'tablist-scroll-wrapper': true,
7421
7455
  'contained-variant': this.appearance === 'contained',
7422
- } }, index.h("div", { class: {
7456
+ } }, this.overflowStrategy === 'scroll' && (index.h("div", { class: {
7423
7457
  'scroll-shadow-start': true,
7424
7458
  'is-visible': this.showStartShadow,
7425
- } }, index.h("div", { class: "scroll-button-container start" }, index.h("udp-fluent-icon-button", { iconName: "chevron-left", size: "small", shape: "circular", onClick: this.handleScrollStart, ariaLabel: "Scroll to start", tabIndex: this.showStartShadow ? 0 : -1 }))), index.h("div", { class: {
7459
+ } }, index.h("div", { class: "scroll-button-container start" }, index.h("udp-fluent-icon-button", { iconName: "chevron-left", size: "small", shape: "circular", onClick: this.handleScrollStart, ariaLabel: "Scroll to start", tabIndex: this.showStartShadow ? 0 : -1 })))), index.h("div", { class: {
7426
7460
  'tablist-scroll-container': true,
7427
7461
  'collapse-mode': this.overflowStrategy === 'collapse',
7428
7462
  }, ref: el => (this.scrollContainer = el) }, index.h("fluent-tablist", { ref: el => (this.tablistEl = el), class: "tablist-inner", appearance: 'subtle', disabled: this.disabled, size: this.size, orientation: this.orientation, activeid: this.activeId != null ? String(this.activeId) : undefined, onChange: this.handleTabChange }, this.orderedTabs.map(tab => this.renderTab(tab))), this.overflowStrategy === 'collapse' && (index.h("div", { class: {
@@ -8569,6 +8603,10 @@ const UdpPrimaryActionHeader = class {
8569
8603
  const nodes = [];
8570
8604
  // 1. Render visible secondary buttons
8571
8605
  visibleActions.forEach((action, idx) => {
8606
+ if (action.iconOnly && action.iconName) {
8607
+ nodes.push(index.h("udp-tooltip", { content: action.label }, index.h("udp-fluent-icon-button", { class: "secondary-action", "data-index": idx, appearance: "secondary", shape: "rounded", iconName: action.iconName, ariaLabel: action.label, disabled: action.disabled, onClick: action.onClick })));
8608
+ return;
8609
+ }
8572
8610
  nodes.push(index.h("udp-fluent-button", { class: "secondary-action", "data-index": idx, appearance: "secondary", startIconName: action.iconName, disabled: action.disabled, onClick: action.onClick }, action.label));
8573
8611
  });
8574
8612
  // 2. Render overflow menu if needed
@@ -8623,7 +8661,7 @@ const UdpPrimaryActionHeader = class {
8623
8661
  render() {
8624
8662
  var _a;
8625
8663
  const hasPropActions = !!this.primaryAction || (((_a = this.secondaryActions) === null || _a === void 0 ? void 0 : _a.length) || 0) > 0;
8626
- return (index.h(index.Host, { key: '1d8abd00824841de306864a45054105e6ef33523' }, index.h("div", { key: 'b5ed8c883d6025707e575fe0e6114a37a64a097e', class: { 'header-body': true, 'has-toolbar': this.hasToolbar } }, index.h("div", { key: '60740ab4155a2be9e29d15c7f99c24076b1a7ecc', class: "title-row" }, index.h("div", { key: 'e14b3a04a26363bb56a3a739b2a63edc6ef3bd50', class: "title-inline" }, index.h("udp-text", { key: '9c7cd71a71d481412b48d023db0dc44272333044', variant: "subtitle1", block: false }, this.title !== undefined ? (this.title) : (index.h("slot", { name: "title", onSlotchange: this.handleSlotChange }))), index.h("div", { key: '29932908336c129c534ccc5a69ec9dac350589e8', class: { 'slot-inline': true, 'hidden': !this.hasInline } }, index.h("slot", { key: 'c50275589a52839bc8b721ef07b99a4fb98acbe8', name: "inline", onSlotchange: this.handleSlotChange }))), index.h("div", { key: '8925ba9dcb145f57f62d2475bbf289bb0dd75295', class: { 'slot-actions': true, 'hidden': !this.hasActions } }, index.h("slot", { key: '64636c73913b0d84eb89c5e33b17082a3d0a148d', name: "actions", onSlotchange: this.handleSlotChange })), index.h("div", { key: '8ed41da19a0eb0c25399baf94f033f05a8fa79e5', class: { 'system-actions': true, 'hidden': !hasPropActions } }, this.renderSecondaryActions(), this.renderPrimaryAction())), index.h("div", { key: 'dcd517f65a42bb90ebd2d03c9609b6ac320d49a2', class: { 'subtitle-row': true, 'hidden': !this.hasSubtitle && !this.subtitle } }, index.h("udp-text", { key: '2c4e3f453cd2e2a4d4c96217c45b2752942f968a', variant: "caption1" }, this.subtitle !== undefined ? (this.subtitle) : (index.h("slot", { name: "subtitle", onSlotchange: this.handleSlotChange }))))), index.h("div", { key: '152c7500ab9e891f8a29169056d61358e73ad9fd', class: { 'toolbar-row': true, 'hidden': !this.hasToolbar } }, index.h("slot", { key: '08e36b83baf508179a43c762722d3785f8fa2633', name: "toolbar", onSlotchange: this.handleSlotChange }))));
8664
+ return (index.h(index.Host, { key: '891c4bec1849babcde0df74c9cc88ace52aa6413' }, index.h("div", { key: 'dbf047733fce860f40108ca55381a775ff15577f', class: { 'header-body': true, 'has-toolbar': this.hasToolbar } }, index.h("div", { key: '2cd2a74501522f4755a18145f0223bd3f30ea484', class: "title-row" }, index.h("div", { key: '70199f1352a70ccea8a546838683fe356850b4ec', class: "title-inline" }, index.h("udp-text", { key: '1d7b7b31d7e5ab4cc2e85352d3b3b070c8ee305d', variant: "subtitle1", block: false }, this.title !== undefined ? (this.title) : (index.h("slot", { name: "title", onSlotchange: this.handleSlotChange }))), index.h("div", { key: '231848030113338d29b8f4112f8bf501b894d360', class: { 'slot-inline': true, 'hidden': !this.hasInline } }, index.h("slot", { key: '3a1c4787e3863cec14cb1d9408bdc05cac63d507', name: "inline", onSlotchange: this.handleSlotChange }))), index.h("div", { key: 'f9ae8c74bd146e25c22283840fa0f3f3108a5963', class: { 'slot-actions': true, 'hidden': !this.hasActions } }, index.h("slot", { key: '4b7ec1141c81f4fa42bd35e9092d1039df77347e', name: "actions", onSlotchange: this.handleSlotChange })), index.h("div", { key: '38fb067d1994e3da0c386fa14b28d331ff877d8a', class: { 'system-actions': true, 'hidden': !hasPropActions } }, this.renderSecondaryActions(), this.renderPrimaryAction())), index.h("div", { key: 'dcc5d876de696637c9235c8e8c278328487c6edc', class: { 'subtitle-row': true, 'hidden': !this.hasSubtitle && !this.subtitle } }, index.h("udp-text", { key: '3361b776dbf5858a37510bfea28bc35b2a676c01', variant: "caption1" }, this.subtitle !== undefined ? (this.subtitle) : (index.h("slot", { name: "subtitle", onSlotchange: this.handleSlotChange }))))), index.h("div", { key: '30f53cfed6eb9f8195c044fea87e7d6f0f0ae5d3', class: { 'toolbar-row': true, 'hidden': !this.hasToolbar } }, index.h("slot", { key: '857f80365ab34a1808405b486d595a59add6c475', name: "toolbar", onSlotchange: this.handleSlotChange }))));
8627
8665
  }
8628
8666
  get el() { return index.getElement(this); }
8629
8667
  };
@@ -9986,6 +10024,8 @@ const UdpTooltip = class {
9986
10024
  };
9987
10025
  UdpTooltip.style = udpTooltipCss();
9988
10026
 
10027
+ const udpTreeCss = () => `:host{display:block}`;
10028
+
9989
10029
  const UdpTree = class {
9990
10030
  constructor(hostRef) {
9991
10031
  index.registerInstance(this, hostRef);
@@ -10061,9 +10101,10 @@ const UdpTree = class {
10061
10101
  });
10062
10102
  }
10063
10103
  render() {
10064
- return (index.h(index.Host, { key: '2754d7150b5897e41cf1f7d868a1de6664892c22' }, index.h("fluent-tree", { key: '692285cd9677a3cdc3a633c0007b772ae4b46748', size: this.size, appearance: this.appearance }, this.treeItems.length > 0 ? this.renderTreeItems(this.treeItems) : index.h("slot", null))));
10104
+ return (index.h(index.Host, { key: 'ce8a81be751210838218e6028763c013ad6da35c' }, index.h("fluent-tree", { key: '141917f5a8cef5c005519ff387a41f5bff2d09cc', size: this.size, appearance: this.appearance }, this.treeItems.length > 0 ? this.renderTreeItems(this.treeItems) : index.h("slot", null))));
10065
10105
  }
10066
10106
  };
10107
+ UdpTree.style = udpTreeCss();
10067
10108
 
10068
10109
  const unityTypographyCss = () => `body{font-family:var(--font-family)}:host{display:block;overflow:visible !important}h1,h2,h3,h4,h5,h6,p,span{margin:0;padding:0}:host([gutterBottom]) h1,:host([gutterBottom]) h2,:host([gutterBottom]) h3,:host([gutterBottom]) h4,:host([gutterBottom]) h5,:host([gutterBottom]) h6,:host([gutterBottom]) p,:host([gutterBottom]) span{margin-bottom:var(--spacing-02)}.body1{font-size:var(--body-font-size);font-weight:var(--body-font-weight);line-height:var(--body-line-height);font-family:var(--font-family)}.body2{font-size:var(--body-font-size);font-weight:var(--body-font-weight);line-height:var(--body-line-height);font-family:var(--font-family)}h1{font-size:var(--h1-font-size);font-weight:var(--h1-font-weight);line-height:var(--h1-line-height);font-family:var(--font-family)}h2{font-size:var(--h2-font-size);font-weight:var(--h2-font-weight);line-height:var(--h2-line-height);font-family:var(--font-family)}h3{font-size:var(--h3-font-size);font-weight:var(--h3-font-weight);line-height:var(--h3-line-height);font-family:var(--font-family)}h4{font-size:var(--h4-font-size);font-weight:var(--h4-font-weight);line-height:var(--h4-line-height);font-family:var(--font-family)}h5{font-size:var(--h5-font-size);font-weight:var(--h5-font-weight);line-height:var(--h5-line-height);font-family:var(--font-family)}h6{font-size:var(--h6-font-size);font-weight:var(--h6-font-weight);line-height:var(--h6-line-height);font-family:var(--font-family)}p{font-size:var(--body-font-size);font-weight:var(--body-font-weight);line-height:var(--body-line-height);font-family:var(--font-family)}.caption-text{font-size:var(--caption-text-font-size);font-weight:var(--caption-text-font-weight);line-height:var(--caption-text-line-height);font-family:var(--font-family)}.data-display-one{font-size:var(--data-display-one-font-size);font-weight:var(--data-display-one-font-weight);line-height:var(--data-display-one-line-height);font-family:var(--font-family)}.data-display-two{font-size:var(--data-display-two-font-size);font-weight:var(--data-display-two-font-weight);line-height:var(--data-display-two-line-height);font-family:var(--font-family)}.data-display-three{font-size:var(--data-display-three-font-size);font-weight:var(--data-display-three-font-weight);line-height:var(--data-display-three-line-height);font-family:var(--font-family)}.data-display-four{font-size:var(--data-display-four-font-size);font-weight:var(--data-display-four-font-weight);line-height:var(--data-display-four-line-height);font-family:var(--font-family)}.button{font-size:var(--button-font-size);font-weight:var(--button-font-weight);line-height:var(--button-line-height);font-family:var(--font-family)}.bold{font-weight:var(--font-weight-bold, 700) !important}.color-main{color:var(--text-main)}.color-textSecondary{color:var(--text-secondary)}.color-primary{color:var(--primary-color)}.color-secondary{color:var(--secondary-color)}.color-disabled{color:var(--text-disabled)}.color-hint{color:var(--text-hint)}.color-inherit{color:inherit}.color-error{color:var(--error-color-main, #d32f2f) !important}`;
10069
10110
 
@@ -4,10 +4,15 @@ var index = require('./index-G1ccGqOs.js');
4
4
  var makeApiCall = require('./makeApiCall-CFfg9gI0.js');
5
5
  var searchObject = require('./searchObject-DeDFFGcx.js');
6
6
  var lodashEs = require('lodash-es');
7
- var apiMethodInstance = require('./apiMethodInstance-B_zfUIFl.js');
7
+ var apiMethodInstance = require('./apiMethodInstance-DymTfku4.js');
8
8
  var configService = require('./configService-BqiLnW8G.js');
9
9
  require('axios');
10
- require('./configureUdpColumnMods-MGNO-bXn.js');
10
+ require('./configureUdpColumnMods-DtsJ11YI.js');
11
+ require('./lookupHelper-fokGJbeb.js');
12
+ require('./apiUtils-ELzOoTQ0.js');
13
+ require('deep-equal');
14
+ require('@stencil/store');
15
+ require('./tenantUtils-BCKSE0vq.js');
11
16
 
12
17
  function mergeSearchObjects(baseSearchObject, searchObjectOverrides) {
13
18
  var _a, _b, _c, _d, _e, _f, _g;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var configureUdpColumnMods = require('./configureUdpColumnMods-MGNO-bXn.js');
3
+ var configureUdpColumnMods = require('./configureUdpColumnMods-DtsJ11YI.js');
4
4
 
5
5
  function mapDotNetTypeToAgGridType(type) {
6
6
  const normalized = type.replace(/\?$/, '').trim().toLowerCase();
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ var lookupHelper = require('./lookupHelper-fokGJbeb.js');
4
+
3
5
  /**
4
6
  * Finds an existing 'actions' column in an array of ColDefs and applies
5
7
  * a dynamic fixed width and right pinning.
@@ -28,9 +30,22 @@ function configureUdpColumnMods(columnDefs, disableColumnFiltering = false) {
28
30
  // Return a new object with the original properties plus our overrides
29
31
  return Object.assign(Object.assign({}, colDef), { pinned: 'right', width: calculatedWidth, minWidth: calculatedWidth, maxWidth: calculatedWidth, sortable: false, filter: false, suppressHeaderMenuButton: true, suppressMovable: true });
30
32
  }
31
- // If a column contains a lookup id, set a valuegetter on the column def and disable filtering and sorting
33
+ // Lookup columns: display the resolved label, but filter against the underlying key.
34
+ // The set filter values + dropdown labels come from the cached lookup table, so the
35
+ // filter model holds keys (server-side IN clause works unchanged). Sort is left off
36
+ // because the backend can only order by the stored key, not the resolved label.
32
37
  if ((_e = colDef === null || colDef === void 0 ? void 0 : colDef.context) === null || _e === void 0 ? void 0 : _e.lookupId) {
33
- return Object.assign(Object.assign({}, colDef), { valueGetter: (params) => params.data[(colDef === null || colDef === void 0 ? void 0 : colDef.field) + 'LookupValue'], filter: false, sortable: false });
38
+ const lookupId = colDef.context.lookupId;
39
+ const field = colDef.field;
40
+ return Object.assign(Object.assign({}, colDef), { valueGetter: (params) => params.data[field + 'LookupValue'], filterValueGetter: (params) => { var _a; return (_a = params.data) === null || _a === void 0 ? void 0 : _a[field]; }, filter: 'agSetColumnFilter', filterParams: Object.assign({ values: (params) => {
41
+ lookupHelper.getLookupTable(lookupId).then(table => {
42
+ params.success(Array.from(table.valueMap.keys()));
43
+ });
44
+ }, valueFormatter: (params) => {
45
+ var _a, _b;
46
+ const key = params.value == null ? '' : String(params.value);
47
+ return (_b = (_a = lookupHelper.getLookupTableSync(lookupId)) === null || _a === void 0 ? void 0 : _a.valueMap.get(key)) !== null && _b !== void 0 ? _b : key;
48
+ } }, colDef.filterParams), sortable: false });
34
49
  }
35
50
  if (disableColumnFiltering) {
36
51
  return Object.assign(Object.assign({}, colDef), { filter: false });
@@ -4,11 +4,11 @@ var formRegistry = require('./form-registry-Cme6U-bl.js');
4
4
  var axios = require('axios');
5
5
  var transformSearchData = require('./transformSearchData-B4bk4Aik.js');
6
6
  var catalogStore = require('./catalog-store-COlrLo9B.js');
7
- var SearchBuilder = require('./SearchBuilder-BsB_257b.js');
7
+ var SearchBuilder = require('./SearchBuilder-aqpLQz8E.js');
8
8
  var searchObject = require('./searchObject-DeDFFGcx.js');
9
9
  var catalogTree = require('./catalogTree-CnzW15ah.js');
10
10
  var configService = require('./configService-BqiLnW8G.js');
11
- var apiMethodInstance = require('./apiMethodInstance-B_zfUIFl.js');
11
+ var apiMethodInstance = require('./apiMethodInstance-DymTfku4.js');
12
12
  var webComponents = require('@fluentui/web-components');
13
13
  var tokens = require('@fluentui/tokens');
14
14
  var agGridEnterpriseV33 = require('ag-grid-enterprise-v33');
@@ -17,7 +17,8 @@ require('./apiUtils-ELzOoTQ0.js');
17
17
  require('deep-equal');
18
18
  require('./makeApiCall-CFfg9gI0.js');
19
19
  require('./tenantUtils-BCKSE0vq.js');
20
- require('./configureUdpColumnMods-MGNO-bXn.js');
20
+ require('./configureUdpColumnMods-DtsJ11YI.js');
21
+ require('./lookupHelper-fokGJbeb.js');
21
22
 
22
23
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
23
24