@trudb/tru-common-lib 0.2.354 → 0.2.356

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.
@@ -1730,6 +1730,15 @@ class TruEntityAccessor {
1730
1730
  return result;
1731
1731
  return null;
1732
1732
  };
1733
+ searchByRefServerOnly = (entity, ref) => {
1734
+ var queryOptions = this._entityManager.queryOptions.using({
1735
+ fetchStrategy: FetchStrategy.FromServer
1736
+ });
1737
+ var query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).where(entity.name + 'Ref', '==', ref).using(queryOptions);
1738
+ return defer(() => from(this._entityManager.executeQuery(query).then((queryData) => {
1739
+ return queryData.results[0];
1740
+ })));
1741
+ };
1733
1742
  searchByRefArrayCacheOnly = (entity, setupQuery = null, refs, includeDeleted = false) => {
1734
1743
  if (!includeDeleted)
1735
1744
  includeDeleted = false;
@@ -7740,23 +7749,24 @@ class TruDataGrid {
7740
7749
  //let parentName = this.entity.constructor.name;
7741
7750
  let unassociatedType = this.config.resultConfig.entityManyToManyType;
7742
7751
  let ref = this.selectedUnassociatedChoice.value.$;
7743
- let childToAssociate = this.dataContext.entityAccess().searchByRefCacheOnly(unassociatedType, ref, true);
7744
- if (!childToAssociate)
7745
- childToAssociate = this.appEnvironment.globalDataContext?.entityAccess().searchByRefCacheOnly(unassociatedType, ref, true);
7746
- if (childToAssociate) {
7747
- let enhancedEntity = this.enhanceRowDataForEntity(newEntity);
7748
- enhancedEntity.$entity[this.config.resultConfig.entityManyToManyTypeNameWithPrefix + 'Ref'] = childToAssociate[unassociatedType.name + 'Ref'];
7749
- enhancedEntity.$entity[this.config.parentTableRelationshipRefName] = this.entity[this.config.parentTableRefName];
7750
- // remove item from the add dropdown control
7751
- let itemIndex = this.unassociatedChoices.findIndex((choice) => {
7752
- return choice.value.$ === childToAssociate[unassociatedType.name + 'Ref'];
7753
- });
7754
- this.unassociatedChoices.splice(itemIndex, 1);
7755
- // clear add selection
7756
- this.selectedUnassociatedChoice = undefined;
7757
- // add row to grid
7758
- this.unsavedEntities.push(enhancedEntity);
7759
- }
7752
+ this.dataContext.entityAccess().searchByRefServerOnly(unassociatedType, ref).subscribe((childToAssociate) => {
7753
+ if (!childToAssociate)
7754
+ childToAssociate = this.appEnvironment.globalDataContext?.entityAccess().searchByRefCacheOnly(unassociatedType, ref, true);
7755
+ if (childToAssociate) {
7756
+ let enhancedEntity = this.enhanceRowDataForEntity(newEntity);
7757
+ enhancedEntity.$entity[this.config.resultConfig.entityManyToManyTypeNameWithPrefix + 'Ref'] = childToAssociate[unassociatedType.name + 'Ref'];
7758
+ enhancedEntity.$entity[this.config.parentTableRelationshipRefName] = this.entity[this.config.parentTableRefName];
7759
+ // remove item from the add dropdown control
7760
+ let itemIndex = this.unassociatedChoices.findIndex((choice) => {
7761
+ return choice.value.$ === childToAssociate[unassociatedType.name + 'Ref'];
7762
+ });
7763
+ this.unassociatedChoices.splice(itemIndex, 1);
7764
+ // clear add selection
7765
+ this.selectedUnassociatedChoice = undefined;
7766
+ // add row to grid
7767
+ this.unsavedEntities.push(enhancedEntity);
7768
+ }
7769
+ });
7760
7770
  }
7761
7771
  };
7762
7772
  subscribeTo = () => {
@@ -8341,8 +8351,14 @@ class TruDataGrid {
8341
8351
  const headerHeight = 25;
8342
8352
  const minRows = this.config.minimumRows ?? 0;
8343
8353
  const maxRows = this.config.maximumRows;
8344
- const minPx = (minRows * rowHeight) + headerHeight;
8345
- const maxPx = typeof maxRows === 'number' ? (maxRows * rowHeight) + headerHeight : undefined;
8354
+ const gridTopOffset = this.label ? 48 : 28;
8355
+ const gridBottomOffset = 23; // status bar height/bottom offset
8356
+ const gridChromePx = gridTopOffset + gridBottomOffset;
8357
+ // Ensure space for either the minimum rows or the overlay box (50px high).
8358
+ const overlayMinPx = 50;
8359
+ const contentMinPx = Math.max((minRows * rowHeight) + headerHeight, overlayMinPx);
8360
+ const minPx = contentMinPx + gridChromePx;
8361
+ const maxPx = typeof maxRows === 'number' ? ((maxRows * rowHeight) + headerHeight + gridChromePx) : undefined;
8346
8362
  let targetHeight = distributedHeight;
8347
8363
  if (!this.config.fill) {
8348
8364
  if (maxPx !== undefined && maxPx < targetHeight)