udp-stencil-component-library 26.2.0-beta.1 → 26.2.0-beta.3

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 (49) 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 +37 -7
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/resource-timeline-calendar.cjs.entry.js +14 -2
  6. package/dist/cjs/resource-timeline-primary-bar.cjs.entry.js +5 -1
  7. package/dist/cjs/stencil-library.cjs.js +1 -1
  8. package/dist/cjs/udp-detail-list-item.cjs.entry.js +1 -1
  9. package/dist/cjs/udp-detail-list.cjs.entry.js +21 -9
  10. package/dist/cjs/udp-forms-renderer.cjs.entry.js +1 -1
  11. package/dist/collection/components/data-display/detail-list/udp-detail-list.js +47 -9
  12. package/dist/collection/components/data-display/detail-list-item/udp-detail-list-item.css +7 -0
  13. package/dist/collection/components/fluent-ui/tree/udp-tree.css +3 -0
  14. package/dist/collection/components/fluent-ui/tree/udp-tree.js +11 -1
  15. package/dist/collection/components/grid/new-grid/gridFunctions/savedViews.js +33 -6
  16. package/dist/collection/components/grid/resource-timeline-calendar/resource-timeline-calendar.js +14 -2
  17. package/dist/collection/components/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +5 -1
  18. package/dist/collection/udp-utilities/search/SearchBuilder.js +4 -0
  19. package/dist/components/SearchBuilder.js +1 -1
  20. package/dist/components/ag-grid-base2.js +1 -1
  21. package/dist/components/resource-timeline-calendar.js +1 -1
  22. package/dist/components/resource-timeline-primary-bar2.js +1 -1
  23. package/dist/components/udp-detail-list-item.js +1 -1
  24. package/dist/components/udp-detail-list.js +1 -1
  25. package/dist/components/udp-tree2.js +1 -1
  26. package/dist/docs.json +53 -1
  27. package/dist/esm/{SearchBuilder-CiCHnrfs.js → SearchBuilder-DlL9u8ku.js} +4 -0
  28. package/dist/esm/ag-grid-base_63.entry.js +37 -7
  29. package/dist/esm/index.js +1 -1
  30. package/dist/esm/loader.js +1 -1
  31. package/dist/esm/resource-timeline-calendar.entry.js +14 -2
  32. package/dist/esm/resource-timeline-primary-bar.entry.js +5 -1
  33. package/dist/esm/stencil-library.js +1 -1
  34. package/dist/esm/udp-detail-list-item.entry.js +1 -1
  35. package/dist/esm/udp-detail-list.entry.js +21 -9
  36. package/dist/esm/udp-forms-renderer.entry.js +1 -1
  37. package/dist/stencil-library/{SearchBuilder-CiCHnrfs.js → SearchBuilder-DlL9u8ku.js} +1 -1
  38. package/dist/stencil-library/ag-grid-base_63.entry.js +1 -1
  39. package/dist/stencil-library/index.esm.js +1 -1
  40. package/dist/stencil-library/resource-timeline-calendar.entry.js +1 -1
  41. package/dist/stencil-library/resource-timeline-primary-bar.entry.js +1 -1
  42. package/dist/stencil-library/stencil-library.esm.js +1 -1
  43. package/dist/stencil-library/udp-detail-list-item.entry.js +1 -1
  44. package/dist/stencil-library/udp-detail-list.entry.js +1 -1
  45. package/dist/stencil-library/udp-forms-renderer.entry.js +1 -1
  46. package/dist/types/components/data-display/detail-list/udp-detail-list.d.ts +6 -2
  47. package/dist/types/components/grid/new-grid/gridFunctions/savedViews.d.ts +2 -0
  48. package/dist/types/components.d.ts +12 -2
  49. package/package.json +1 -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
@@ -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) {
@@ -9986,6 +10013,8 @@ const UdpTooltip = class {
9986
10013
  };
9987
10014
  UdpTooltip.style = udpTooltipCss();
9988
10015
 
10016
+ const udpTreeCss = () => `:host{display:block}`;
10017
+
9989
10018
  const UdpTree = class {
9990
10019
  constructor(hostRef) {
9991
10020
  index.registerInstance(this, hostRef);
@@ -10061,9 +10090,10 @@ const UdpTree = class {
10061
10090
  });
10062
10091
  }
10063
10092
  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))));
10093
+ 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
10094
  }
10066
10095
  };
10096
+ UdpTree.style = udpTreeCss();
10067
10097
 
10068
10098
  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
10099
 
@@ -4,7 +4,7 @@ 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');