@theseam/ui-common 1.0.2-beta.63 → 1.0.2-beta.70

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.
@@ -5,23 +5,39 @@
5
5
 
6
6
  /* Keyframes */
7
7
  @keyframes seam-slide-in-left {
8
- from { transform: translateX(100%); }
9
- to { transform: translateX(0); }
8
+ from {
9
+ transform: translateX(100%);
10
+ }
11
+ to {
12
+ transform: translateX(0);
13
+ }
10
14
  }
11
15
 
12
16
  @keyframes seam-slide-in-right {
13
- from { transform: translateX(-100%); }
14
- to { transform: translateX(0); }
17
+ from {
18
+ transform: translateX(-100%);
19
+ }
20
+ to {
21
+ transform: translateX(0);
22
+ }
15
23
  }
16
24
 
17
25
  @keyframes seam-slide-out-left {
18
- from { transform: translateX(0); }
19
- to { transform: translateX(-100%); }
26
+ from {
27
+ transform: translateX(0);
28
+ }
29
+ to {
30
+ transform: translateX(-100%);
31
+ }
20
32
  }
21
33
 
22
34
  @keyframes seam-slide-out-right {
23
- from { transform: translateX(0); }
24
- to { transform: translateX(100%); }
35
+ from {
36
+ transform: translateX(0);
37
+ }
38
+ to {
39
+ transform: translateX(100%);
40
+ }
25
41
  }
26
42
 
27
43
  /*
@@ -94,57 +110,91 @@ html[data-route-direction]::view-transition-new(root) {
94
110
  */
95
111
 
96
112
  /* Sibling swap: current slides right, new slides left */
97
- html[data-route-direction="sibling"]::view-transition-old(seam-route-content-0),
98
- html[data-route-direction="sibling"]::view-transition-old(seam-route-content-1),
99
- html[data-route-direction="sibling"]::view-transition-old(seam-route-content-2),
100
- html[data-route-direction="sibling"]::view-transition-old(seam-route-content-3),
101
- html[data-route-direction="sibling"]::view-transition-old(seam-route-content-4),
102
- html[data-route-direction="sibling"]::view-transition-old(seam-route-content-5) {
103
- animation: var(--seam-route-transition-duration) var(--seam-route-transition-easing) both seam-slide-out-right;
104
- }
105
- html[data-route-direction="sibling"]::view-transition-new(seam-route-content-0),
106
- html[data-route-direction="sibling"]::view-transition-new(seam-route-content-1),
107
- html[data-route-direction="sibling"]::view-transition-new(seam-route-content-2),
108
- html[data-route-direction="sibling"]::view-transition-new(seam-route-content-3),
109
- html[data-route-direction="sibling"]::view-transition-new(seam-route-content-4),
110
- html[data-route-direction="sibling"]::view-transition-new(seam-route-content-5) {
111
- animation: var(--seam-route-transition-duration) var(--seam-route-transition-easing) both seam-slide-in-left;
113
+ html[data-route-direction='sibling']::view-transition-old(seam-route-content-0),
114
+ html[data-route-direction='sibling']::view-transition-old(seam-route-content-1),
115
+ html[data-route-direction='sibling']::view-transition-old(seam-route-content-2),
116
+ html[data-route-direction='sibling']::view-transition-old(seam-route-content-3),
117
+ html[data-route-direction='sibling']::view-transition-old(seam-route-content-4),
118
+ html[data-route-direction='sibling']::view-transition-old(
119
+ seam-route-content-5
120
+ ) {
121
+ animation: var(--seam-route-transition-duration)
122
+ var(--seam-route-transition-easing) both seam-slide-out-right;
123
+ }
124
+ html[data-route-direction='sibling']::view-transition-new(seam-route-content-0),
125
+ html[data-route-direction='sibling']::view-transition-new(seam-route-content-1),
126
+ html[data-route-direction='sibling']::view-transition-new(seam-route-content-2),
127
+ html[data-route-direction='sibling']::view-transition-new(seam-route-content-3),
128
+ html[data-route-direction='sibling']::view-transition-new(seam-route-content-4),
129
+ html[data-route-direction='sibling']::view-transition-new(
130
+ seam-route-content-5
131
+ ) {
132
+ animation: var(--seam-route-transition-duration)
133
+ var(--seam-route-transition-easing) both seam-slide-in-left;
112
134
  }
113
135
 
114
136
  /* Deeper: both slide left */
115
- html[data-route-direction="deeper"]::view-transition-old(seam-route-content-0),
116
- html[data-route-direction="deeper"]::view-transition-old(seam-route-content-1),
117
- html[data-route-direction="deeper"]::view-transition-old(seam-route-content-2),
118
- html[data-route-direction="deeper"]::view-transition-old(seam-route-content-3),
119
- html[data-route-direction="deeper"]::view-transition-old(seam-route-content-4),
120
- html[data-route-direction="deeper"]::view-transition-old(seam-route-content-5) {
121
- animation: var(--seam-route-transition-duration) var(--seam-route-transition-easing) both seam-slide-out-left;
122
- }
123
- html[data-route-direction="deeper"]::view-transition-new(seam-route-content-0),
124
- html[data-route-direction="deeper"]::view-transition-new(seam-route-content-1),
125
- html[data-route-direction="deeper"]::view-transition-new(seam-route-content-2),
126
- html[data-route-direction="deeper"]::view-transition-new(seam-route-content-3),
127
- html[data-route-direction="deeper"]::view-transition-new(seam-route-content-4),
128
- html[data-route-direction="deeper"]::view-transition-new(seam-route-content-5) {
129
- animation: var(--seam-route-transition-duration) var(--seam-route-transition-easing) both seam-slide-in-left;
137
+ html[data-route-direction='deeper']::view-transition-old(seam-route-content-0),
138
+ html[data-route-direction='deeper']::view-transition-old(seam-route-content-1),
139
+ html[data-route-direction='deeper']::view-transition-old(seam-route-content-2),
140
+ html[data-route-direction='deeper']::view-transition-old(seam-route-content-3),
141
+ html[data-route-direction='deeper']::view-transition-old(seam-route-content-4),
142
+ html[data-route-direction='deeper']::view-transition-old(seam-route-content-5) {
143
+ animation: var(--seam-route-transition-duration)
144
+ var(--seam-route-transition-easing) both seam-slide-out-left;
145
+ }
146
+ html[data-route-direction='deeper']::view-transition-new(seam-route-content-0),
147
+ html[data-route-direction='deeper']::view-transition-new(seam-route-content-1),
148
+ html[data-route-direction='deeper']::view-transition-new(seam-route-content-2),
149
+ html[data-route-direction='deeper']::view-transition-new(seam-route-content-3),
150
+ html[data-route-direction='deeper']::view-transition-new(seam-route-content-4),
151
+ html[data-route-direction='deeper']::view-transition-new(seam-route-content-5) {
152
+ animation: var(--seam-route-transition-duration)
153
+ var(--seam-route-transition-easing) both seam-slide-in-left;
130
154
  }
131
155
 
132
156
  /* Shallower: both slide right */
133
- html[data-route-direction="shallower"]::view-transition-old(seam-route-content-0),
134
- html[data-route-direction="shallower"]::view-transition-old(seam-route-content-1),
135
- html[data-route-direction="shallower"]::view-transition-old(seam-route-content-2),
136
- html[data-route-direction="shallower"]::view-transition-old(seam-route-content-3),
137
- html[data-route-direction="shallower"]::view-transition-old(seam-route-content-4),
138
- html[data-route-direction="shallower"]::view-transition-old(seam-route-content-5) {
139
- animation: var(--seam-route-transition-duration) var(--seam-route-transition-easing) both seam-slide-out-right;
140
- }
141
- html[data-route-direction="shallower"]::view-transition-new(seam-route-content-0),
142
- html[data-route-direction="shallower"]::view-transition-new(seam-route-content-1),
143
- html[data-route-direction="shallower"]::view-transition-new(seam-route-content-2),
144
- html[data-route-direction="shallower"]::view-transition-new(seam-route-content-3),
145
- html[data-route-direction="shallower"]::view-transition-new(seam-route-content-4),
146
- html[data-route-direction="shallower"]::view-transition-new(seam-route-content-5) {
147
- animation: var(--seam-route-transition-duration) var(--seam-route-transition-easing) both seam-slide-in-right;
157
+ html[data-route-direction='shallower']::view-transition-old(
158
+ seam-route-content-0
159
+ ),
160
+ html[data-route-direction='shallower']::view-transition-old(
161
+ seam-route-content-1
162
+ ),
163
+ html[data-route-direction='shallower']::view-transition-old(
164
+ seam-route-content-2
165
+ ),
166
+ html[data-route-direction='shallower']::view-transition-old(
167
+ seam-route-content-3
168
+ ),
169
+ html[data-route-direction='shallower']::view-transition-old(
170
+ seam-route-content-4
171
+ ),
172
+ html[data-route-direction='shallower']::view-transition-old(
173
+ seam-route-content-5
174
+ ) {
175
+ animation: var(--seam-route-transition-duration)
176
+ var(--seam-route-transition-easing) both seam-slide-out-right;
177
+ }
178
+ html[data-route-direction='shallower']::view-transition-new(
179
+ seam-route-content-0
180
+ ),
181
+ html[data-route-direction='shallower']::view-transition-new(
182
+ seam-route-content-1
183
+ ),
184
+ html[data-route-direction='shallower']::view-transition-new(
185
+ seam-route-content-2
186
+ ),
187
+ html[data-route-direction='shallower']::view-transition-new(
188
+ seam-route-content-3
189
+ ),
190
+ html[data-route-direction='shallower']::view-transition-new(
191
+ seam-route-content-4
192
+ ),
193
+ html[data-route-direction='shallower']::view-transition-new(
194
+ seam-route-content-5
195
+ ) {
196
+ animation: var(--seam-route-transition-duration)
197
+ var(--seam-route-transition-easing) both seam-slide-in-right;
148
198
  }
149
199
 
150
200
  /* Reduced motion: disable all route transition animations */
@@ -8,7 +8,7 @@ import * as apollo_angular from 'apollo-angular';
8
8
  import { QueryRef, WatchQueryOptions, Apollo } from 'apollo-angular';
9
9
  import { DataFilterState } from '@theseam/ui-common/data-filters';
10
10
  import * as i0 from '@angular/core';
11
- import { InjectionToken, Type, Provider, EventEmitter } from '@angular/core';
11
+ import { InjectionToken, Type, Provider, OutputRef, EventEmitter } from '@angular/core';
12
12
  import { OperationVariables } from '@apollo/client/core/types';
13
13
  import * as _fortawesome_fontawesome_common_types from '@fortawesome/fontawesome-common-types';
14
14
  import { IDataExporter } from '@theseam/ui-common/data-exporter';
@@ -192,7 +192,7 @@ declare class GQLVariable {
192
192
  constructor(name: string, type: string);
193
193
  }
194
194
 
195
- type GqlDatatableAccessor = Pick<DatatableComponent, 'page' | 'sort' | 'sorts' | 'filterStates' | 'pageInfo' | 'externalSorting' | 'columns$'> & {
195
+ type GqlDatatableAccessor = Pick<DatatableComponent, 'page' | 'sort' | 'sorts' | 'filterStates' | 'pageInfo' | 'externalSorting' | 'columns$' | 'refreshRequested'> & {
196
196
  ngxDatatable: {
197
197
  offset: number;
198
198
  pageSize: number;
@@ -711,6 +711,10 @@ declare class MockDatatable implements GqlDatatableAccessor {
711
711
  private readonly _columnsSubject;
712
712
  readonly columns$: Observable<TheSeamDatatableColumn[]>;
713
713
  private readonly _filterStatesSubject;
714
+ private readonly _refreshSubject;
715
+ readonly refreshRequested: OutputRef<void>;
716
+ /** Test helper: simulate the refresh button being clicked. */
717
+ triggerRefresh(): void;
714
718
  private _sorts;
715
719
  private _rows;
716
720
  private _offset;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theseam/ui-common",
3
- "version": "1.0.2-beta.63",
3
+ "version": "1.0.2-beta.70",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^20.2.3",
6
6
  "@angular/common": "^20.3.0",
package/utils/index.d.ts CHANGED
@@ -366,24 +366,21 @@ declare class PollingTickerOptions {
366
366
  */
367
367
  declare function pollingTicker<R>(action: PollingActionFn<R>, pollingInterval?: number, ticker?: Observable<number | void>, options?: PollingTickerOptions): Observable<R>;
368
368
 
369
+ interface RefreshableOptions<T> {
370
+ action: () => Observable<T>;
371
+ invalidate$?: Observable<unknown>;
372
+ poll$?: Observable<unknown>;
373
+ }
369
374
  declare class Refreshable<T> {
370
- private _initialized;
371
- private _pollingInterval;
372
- private _ticker;
373
- private _pending;
374
- data$: Observable<T>;
375
- pending$: Observable<boolean>;
376
- constructor(action: () => T | Observable<T>, pollingInterval?: number);
377
- get initialized(): boolean;
378
- /**
379
- * Intercepts the action call to monitor pending state
380
- */
381
- private _actionHandler;
382
- /**
383
- * Selects the data observable
384
- */
385
- select(refresh?: boolean): Observable<T>;
386
- refresh(): Observable<void>;
375
+ private readonly _refresh$;
376
+ private readonly _cache$;
377
+ private readonly _loading$;
378
+ private _dataSubCount;
379
+ readonly loading$: Observable<boolean>;
380
+ readonly initialized$: Observable<boolean>;
381
+ readonly data$: Observable<T>;
382
+ constructor(opts: RefreshableOptions<T>);
383
+ refresh(): void;
387
384
  }
388
385
 
389
386
  declare function wrapIntoObservable<T>(value: T | Promise<T> | Observable<T>): Observable<T>;
@@ -456,4 +453,4 @@ interface SanitizeFilenameOptions {
456
453
  declare function sanitizeFilename(filename: string, options?: SanitizeFilenameOptions): string;
457
454
 
458
455
  export { IS_FEATURE_COLLECTION_VALIDATOR_NAME, IS_ONLY_GEOMETRY_TYPES_VALIDATOR_NAME, MIN_MAX_POINTS_VALIDATOR_NAME, NO_EMPTY_FEATURE_COLLECTION_VALIDATOR_NAME, NO_INNER_RINGS_VALIDATOR_NAME, NO_KINKS_VALIDATOR_NAME, PollingTickerOptions, Refreshable, activatedRoutesWithDataProperty, arrayMoveImmutable, arrayMoveMutable, calcPercentage, closePolygons, coerceFeatureCollection, createPadding, deleteProperties, deleteProperty, fileBufferToBlob, fileBufferToObjectUrl, fileDataFromBuffer, fractionalDigitsCount, geoJsonToArea, getAttribute, getClosestWidgetCdkDrag, getControlName, getControlPath, hasAttribute, hasProperty, hasRequiredControl, isAbsoluteUrl, isEmptyInputValue, isEmptyUrlRoute, isFeatureCollectionValidator, isNullOrUndefined, isNullOrUndefinedOrEmpty, isNumeric, isOnlyGeometryTypes, isOnlyGeometryTypesValidator, leafChildRoute, loadStyle, loadStyleSheet, mapEach, mergePolygons, minMaxPointsValidator, noEmptyFeatureCollectionValidator, noInnerRingsValidator, noKinksValidator, notNullOrUndefined, notNullOrUndefinedOrEmpty, observeControlIsDifferent, observeControlStatus, observeControlValid, observeControlValue, observeControlValueChange, observeQueryList, openBlob, padEnd, padStart, phoneNumberMask, pollingTicker, readFileAsDataUrlAsync, readFileAsync, readGeoFile, routeSnapshotPathFull, routeSnapshotPathRelative, sanitizeFilename, splitMultiPolygons, stripOuter, subscriberCount, tapFirst, toggleAttribute, trimRepeated, waitOnConditionAsync, waitOnNonPendingStatus, willHaveDataProp, withoutProperties, withoutProperty, wrapIntoObservable };
459
- export type { IActivatedRouteWithData, IFileData, PollingActionFn, SanitizeFilenameOptions, SubscriberCountChangedFn };
456
+ export type { IActivatedRouteWithData, IFileData, PollingActionFn, RefreshableOptions, SanitizeFilenameOptions, SubscriberCountChangedFn };