@smartbit4all/ng-client 7.2.0 → 7.2.2
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.
- package/HTML-WIDGET.md +75 -7
- package/MIGRATION-7.0.md +21 -7
- package/fesm2022/smartbit4all-ng-client.mjs +122 -35
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/package.json +1 -1
- package/smartbit4all-ng-client-7.2.2.tgz +0 -0
- package/types/smartbit4all-ng-client.d.ts +73 -29
- package/smartbit4all-ng-client-7.2.0.tgz +0 -0
package/HTML-WIDGET.md
CHANGED
|
@@ -140,6 +140,54 @@ távozását:
|
|
|
140
140
|
- A `backwards` kitöltés a belépésnél azért jó, mert a vége után a `:hover` és a többi szabály
|
|
141
141
|
ismét mozgathatja az elemet (a `both` vagy a `forwards` animációs értéke felülírná őket).
|
|
142
142
|
|
|
143
|
+
## A szerver-fázis
|
|
144
|
+
|
|
145
|
+
A szerver-helyőrző a platform template-dialektusa: `${alias:/útvonal#mező?stratégia}`, mellette a
|
|
146
|
+
`data-sb4-context` (iteráció) és a `data-sb4-if` (feltétel) attribútum. A builder a **nyitásáról**
|
|
147
|
+
ismeri fel — `${alias:/` —, a sima `${name}` neki és a motornak is közömbös szöveg. Literálként
|
|
148
|
+
`${`-nak írd.
|
|
149
|
+
|
|
150
|
+
Három út oldja fel, és **egyik sem fut magától**:
|
|
151
|
+
|
|
152
|
+
| Út | Mikor | Hiba esetén |
|
|
153
|
+
|---|---|---|
|
|
154
|
+
| `resolveTemplate(ctx, …)`, és az eredmény megy a `html(...)`-be | a build előtt | elnyel: logol, és a kulcsot vagy üres stringet ad vissza |
|
|
155
|
+
| `h.template(ctx, KEY)` | a widget felépítésekor, kulcsból (lásd *Stíluslap a template-kulcs mellől*) | dob |
|
|
156
|
+
| `h.resolveLater()` + `resolveHtml(ctx, layout)` | a **felépített layouton** | dob |
|
|
157
|
+
|
|
158
|
+
```java
|
|
159
|
+
SmartComponentLayoutDefinition layout = layoutBuilder(view)
|
|
160
|
+
.vForm(f -> f.html(h -> h.html(CARD_HTML).resolveLater()))
|
|
161
|
+
.build();
|
|
162
|
+
resolveHtml(objectApi.contextObject().set("contact", contact), layout); // PageApiImpl
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
- A `resolveHtml` bejárja a layout `FORM` / `CONTAINER` fáját és a widgetek gyerek-widgetjeit, és
|
|
166
|
+
minden HTML widget `html`-jét feloldja **ugyanazzal a ctx-szel**. A `css`, a `root` és a `fields`
|
|
167
|
+
marad. A gridekhez nem nyúl — egy sor-layout maga is layout, arra külön hívható. Page-en kívül:
|
|
168
|
+
`ObjectLayouts.resolveHtml(layout, resolver, objectApi, ctx)`; listára is van változata.
|
|
169
|
+
- **Amiben nincs `${alias:/`, ahhoz hozzá sem ér** — az a html nem megy át a motoron, tehát nem is
|
|
170
|
+
normalizálódik. Ezért bármilyen layoutra ráhívható, és a második futás egy már feloldott
|
|
171
|
+
widgeten nem csinál semmit.
|
|
172
|
+
- **Helyben módosít.** Ha az adat változik, **építsd újra a layoutot, ne oldd fel újra**: a
|
|
173
|
+
view-ban tárolt, egyszer már feloldott layoutban nincs mit feloldani, az új ctx-szel hívott
|
|
174
|
+
második futás némán a régi értékeket hagyja. Aki a feloldatlan eredetit meg akarja tartani,
|
|
175
|
+
másolaton hívja.
|
|
176
|
+
- **Hangosan bukik** (`IllegalStateException`): ha van `${alias:/`, de nincs template-modul a
|
|
177
|
+
hostban; és ha a feloldás **után** is maradt — a motor az ismeretlen aliasú helyőrzőt ugyanis
|
|
178
|
+
szó nélkül benne hagyja. A motor másik két csendes esete megmarad: a hiányzó / `null` mező
|
|
179
|
+
helyére szóköz kerül, a mezőszintű feloldási hiba helyére a „Feldolgozási hiba" szöveg.
|
|
180
|
+
|
|
181
|
+
**A `build()` őre.** Az a `${alias:/`, amit a három út egyike sem oldott fel, régen szó nélkül
|
|
182
|
+
kiment a kliensre, és nyersen megjelent. Most a `HtmlWidgetBuilder.build()` `IllegalStateException`-t
|
|
183
|
+
dob rá, kivéve ha a widget `resolveLater()`-t mondott. Ez a `vf.html(String)`, az
|
|
184
|
+
`ObjectLayoutBuilder.html(...)` és a `GridBuilder.htmlColumn(...)` útjára is igaz.
|
|
185
|
+
|
|
186
|
+
**Üres ctx-szel semmi nem oldódik fel**: a `${…}` literál marad (és a `build()` elbukik rajta), a
|
|
187
|
+
`data-sb4-context` elemek eltűnnek. A grid-szintű sor-layoutnak és az oszlop-sablonnak nincs
|
|
188
|
+
szerver-oldali, soronkénti kontextusa — ott a sorból jövő érték `{{…}}`, a szerveren számolt érték
|
|
189
|
+
pedig a sor egy mezője legyen.
|
|
190
|
+
|
|
143
191
|
## A kliens-helyőrzők nyelvtana
|
|
144
192
|
|
|
145
193
|
Logika-mentes Mustache-részhalmaz. Ugyanezt a nyelvtant olvassa a Java-oldali
|
|
@@ -253,6 +301,7 @@ escape-pel), a pipe-ok balról jobbra láncolhatók, a kimenetük is escape-en m
|
|
|
253
301
|
| Hol | Mi történik |
|
|
254
302
|
|---|---|
|
|
255
303
|
| Java-builder (`build()`) | `IllegalArgumentException`: párosítatlan / keresztezett szekció, raw tag, érvénytelen path vagy `root`, a `root` fölé mutató `../`, ismeretlen pipe, rossz pipe-szintaxis, üres `data-sb4-toolbar` / `data-sb4-action` |
|
|
304
|
+
| Java-builder (`build()`), `resolveHtml` | `IllegalStateException`: feloldatlan szerver-helyőrző (`${alias:/`), lásd *A szerver-fázis* |
|
|
256
305
|
| kliens | nem dob: `console.error`, és a html **feloldatlanul** kerül ki — látható hiba, nem üres kártya |
|
|
257
306
|
|
|
258
307
|
Egyetlen szándékos különbség: az ismeretlen pipe-név a kliensen csak warn (az érték formázatlanul
|
|
@@ -264,7 +313,10 @@ Ha a html átmegy a szerver template-motorján (Jsoup), akkor:
|
|
|
264
313
|
|
|
265
314
|
- **egy gyökérelem kötelező** — a gyökér-szintű szöveg és szekció-tag eldobódik;
|
|
266
315
|
- táblázatban **explicit `<tbody>`** kell, különben a parser a `{{#rows}}` után szúr egyet;
|
|
267
|
-
- a whitespace-re (`:empty`, `white-space: pre
|
|
316
|
+
- a whitespace-re (`:empty`, `white-space: pre`, ` `) ne építs, a motor átírja;
|
|
317
|
+
- a szerverről behelyettesített **érték ne tartalmazzon `{{`-t**: a motor HTML-escape-eli, de a
|
|
318
|
+
`{{` átmegy rajta, és a kliens helyőrzőnek olvasná (a néző saját adatán oldaná fel);
|
|
319
|
+
- `?stratégia` után is állhat `{{…}}` — a stratégia a `{{`-on nem nyúl át.
|
|
268
320
|
|
|
269
321
|
## Toolbar-slot
|
|
270
322
|
|
|
@@ -355,14 +407,30 @@ oszlop fedi a `card.parties.displayName`-et). A mezőlista ellenőriz, nem vála
|
|
|
355
407
|
Szerver-származtatott mező (pl. `partyCount`) legyen valódi oszlop.
|
|
356
408
|
|
|
357
409
|
**Kattintás** (csak a layoutból renderelt kártyán; a host-regisztrált kártya maga kezeli a saját
|
|
358
|
-
klikkjeit):
|
|
410
|
+
klikkjeit). Két független tengely, ugyanaz a modell, mint a táblán:
|
|
359
411
|
|
|
360
|
-
- **
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
- a toolbar-gomb és a trigger megtartja magának a kattintást.
|
|
412
|
+
- **a kijelölést a `selectionMode` adja** (hiányzó = `NONE` = nincs kijelölés);
|
|
413
|
+
- **a default sor-akció gesztusát a `GridViewDescriptor.defaultRowActionTrigger`**
|
|
414
|
+
(`click` | `doubleClick`), Java: `GridBuilder.defaultRowActionTrigger(...)`.
|
|
364
415
|
|
|
365
|
-
|
|
416
|
+
| `defaultRowActionTrigger` | klikk | dupla klikk |
|
|
417
|
+
|---|---|---|
|
|
418
|
+
| nincs megadva (kártyán = `click`) | a sor **első** illő default akciója | — |
|
|
419
|
+
| `click` | default akció; több illő akciónál **menü az egérnél** | — |
|
|
420
|
+
| `doubleClick` | kijelölés, ha a grid és a sor jelölhető | default akció; több illőnél menü |
|
|
421
|
+
|
|
422
|
+
- **A klikkes trigger elviszi a klikket a kijelölés elől**: ha a sornak van default akciója és a
|
|
423
|
+
trigger `click` (vagy nincs megadva), a kártya klikkre nem jelölhető ki, akármi a
|
|
424
|
+
`selectionMode`. Kártya-kijelöléshez `doubleClick` trigger kell, vagy default akció nélküli grid.
|
|
425
|
+
- „Illő" default akció: a grid `defaultRowActions` kódjai közül az, amit a sor `actions`-e kínál —
|
|
426
|
+
a menü tehát soronként más lehet. Megadott trigger mellett egy illő akció azonnal elsül.
|
|
427
|
+
- A dupla klikk második klikkje nem számít külön klikknek: nem nyit kétszer, és nem vonja vissza
|
|
428
|
+
az első klikk kijelölését (dupla klikk = kijelöl + megnyit). Amíg a default akció fut, az újabb
|
|
429
|
+
klikk is eldobódik.
|
|
430
|
+
- A kijelölt kártya hostja `selected` osztályt és egy minimális, felülírható outline-t kap. A
|
|
431
|
+
kijelölés toggle, mint a táblán; `selectionType: CHECKBOX` a kártyán nem rajzol checkboxot.
|
|
432
|
+
- A toolbar-gomb és a trigger megtartja magának a kattintást.
|
|
433
|
+
- A tábla gesztusa változatlanul a dupla klikk, a mező értékétől függetlenül.
|
|
366
434
|
|
|
367
435
|
## Html a tábla cellájában
|
|
368
436
|
|
package/MIGRATION-7.0.md
CHANGED
|
@@ -1864,13 +1864,27 @@ Additive, with **one behaviour change** and one removed field. The reference is
|
|
|
1864
1864
|
(`GridViewDescriptor.rowLayouts`, picked per row by `GridRow.rowLayout`) instead of once per
|
|
1865
1865
|
row. The per-row `layoutDescriptor.GRID_ROW_LAYOUT` still works and wins over them; a
|
|
1866
1866
|
host-registered `'<GRID_ID>Card'` component still renders the rows that get no layout.
|
|
1867
|
-
- **
|
|
1868
|
-
|
|
1869
|
-
`
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1867
|
+
- **Clicking a card rendered from a layout — 7.2.0 changed it, 7.2.1 takes the change back.**
|
|
1868
|
+
7.2.0 made a click select the row and moved the default row action to the double click. That
|
|
1869
|
+
broke `mod-contact`'s contact list, and a cards grid naming no `selectionMode` lost its click
|
|
1870
|
+
altogether. **From 7.2.1 a card behaves as in 7.1.x again unless the server says otherwise**: a
|
|
1871
|
+
click fires the row's first applicable default action, and nothing is selected by click while
|
|
1872
|
+
the click belongs to the default action. A host that put a root trigger on its cards for 7.2.0
|
|
1873
|
+
can keep it; it is no longer needed.
|
|
1874
|
+
- **`GridViewDescriptor.defaultRowActionTrigger` (7.2.1, `click` | `doubleClick`)** makes the
|
|
1875
|
+
gesture data, so a cards grid is programmed like a table: `selectionMode` decides whether rows
|
|
1876
|
+
are selectable, the trigger decides what fires the default row action. With `doubleClick` a
|
|
1877
|
+
click selects the card and a double click fires the default action, as on a `ROW_SELECT` table.
|
|
1878
|
+
With an explicit trigger several applicable default actions open a menu at the pointer, filtered
|
|
1879
|
+
to what the row offers. Without a value a card keeps the click and a table the double click; the
|
|
1880
|
+
table fires on double click whatever the value is. The second click of a double click is not a
|
|
1881
|
+
click of its own on a card: it neither fires the default action again nor toggles the selection
|
|
1882
|
+
back, and further clicks are dropped while the default action runs. Needs a platform that knows
|
|
1883
|
+
the field; an older client ignores it.
|
|
1884
|
+
- **The double-click menu of a table works again.** A grid row offering several of the grid's
|
|
1885
|
+
`defaultRowActions` opens a menu at the pointer on double click. The position override behind it
|
|
1886
|
+
had been written for an older Material signature and threw on open, so until 7.2.1 such a double
|
|
1887
|
+
click did nothing.
|
|
1874
1888
|
- **`SmartGrid.layoutComponent` is removed.** The card gets the layout class through the
|
|
1875
1889
|
`SMART_ROW_LAYOUT_COMPONENT` token that `provideSmartNgClient()` provides, so a cards grid a
|
|
1876
1890
|
host builds with `addGrid()` renders backend layouts too. Delete the field if a host grid model
|
|
@@ -11621,6 +11621,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
11621
11621
|
class SmartformComponent {
|
|
11622
11622
|
constructor() {
|
|
11623
11623
|
this.service = inject(SmartFormService);
|
|
11624
|
+
this.changeDetector = inject(ChangeDetectorRef);
|
|
11624
11625
|
this._destroy$ = new Subject();
|
|
11625
11626
|
this.originalWidgets = [];
|
|
11626
11627
|
this.sophisticatedValueChange = new Subject();
|
|
@@ -11746,6 +11747,8 @@ class SmartformComponent {
|
|
|
11746
11747
|
this.form = this.service.toFormGroup();
|
|
11747
11748
|
this.syncClientBindings();
|
|
11748
11749
|
this.service.widgetsChanged();
|
|
11750
|
+
// A form whose widgets were all hidden has no child to mark it for check.
|
|
11751
|
+
this.changeDetector.markForCheck();
|
|
11749
11752
|
}
|
|
11750
11753
|
ngOnDestroy() {
|
|
11751
11754
|
if (this.followsClient) {
|
|
@@ -12032,14 +12035,8 @@ class MatContextMenuTriggerForDirective extends MatMenuTrigger {
|
|
|
12032
12035
|
}
|
|
12033
12036
|
ngAfterContentInit() {
|
|
12034
12037
|
// Can't just override a private method due to how the lib is compiled
|
|
12035
|
-
this['_setPosition'] = (positionStrategy) => {
|
|
12036
|
-
|
|
12037
|
-
super['_setPosition'](positionStrategy, {
|
|
12038
|
-
withPositions: (p) => {
|
|
12039
|
-
positions = p;
|
|
12040
|
-
},
|
|
12041
|
-
});
|
|
12042
|
-
// positionStrategy?.withPositions(positions);
|
|
12038
|
+
this['_setPosition'] = (menu, positionStrategy) => {
|
|
12039
|
+
super['_setPosition'](menu, positionStrategy);
|
|
12043
12040
|
if (this.lastMouseEvent) {
|
|
12044
12041
|
positionStrategy?.setOrigin({
|
|
12045
12042
|
x: this.lastMouseEvent.clientX,
|
|
@@ -18196,6 +18193,26 @@ var GridDataAccessConfigKindEnum;
|
|
|
18196
18193
|
})(GridDataAccessConfigKindEnum || (GridDataAccessConfigKindEnum = {}));
|
|
18197
18194
|
;
|
|
18198
18195
|
|
|
18196
|
+
/**
|
|
18197
|
+
* Grid api
|
|
18198
|
+
* The grid api is resposible for the grid components that shows a list of item.
|
|
18199
|
+
*
|
|
18200
|
+
* The version of the OpenAPI document: 1.0.0
|
|
18201
|
+
* Contact: info@it4all.hu
|
|
18202
|
+
*
|
|
18203
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
18204
|
+
* https://openapi-generator.tech
|
|
18205
|
+
* Do not edit the class manually.
|
|
18206
|
+
*/
|
|
18207
|
+
/**
|
|
18208
|
+
* The gesture on a row that fires the default row action. Without a value the kind of the grid decides: a click on a card, a double click on a table row. With an explicit value one applicable default row action fires directly, several open a menu at the pointer. A click trigger takes the click from the selection, so a card selects on click only with the doubleClick trigger or without a default row action. The table fires on double click whatever the value is.
|
|
18209
|
+
*/
|
|
18210
|
+
var GridDefaultRowActionTrigger;
|
|
18211
|
+
(function (GridDefaultRowActionTrigger) {
|
|
18212
|
+
GridDefaultRowActionTrigger["CLICK"] = "click";
|
|
18213
|
+
GridDefaultRowActionTrigger["DOUBLE_CLICK"] = "doubleClick";
|
|
18214
|
+
})(GridDefaultRowActionTrigger || (GridDefaultRowActionTrigger = {}));
|
|
18215
|
+
|
|
18199
18216
|
/**
|
|
18200
18217
|
* Grid api
|
|
18201
18218
|
* The grid api is resposible for the grid components that shows a list of item.
|
|
@@ -18917,6 +18934,12 @@ class SmartGridComponent {
|
|
|
18917
18934
|
};
|
|
18918
18935
|
//#region Row layouts of a cards grid
|
|
18919
18936
|
this.warnedRowLayouts = new Set();
|
|
18937
|
+
/** The row whose default row actions the menu of the cards shows. */
|
|
18938
|
+
this.cardMenuRow = signal(undefined, /* @ts-ignore */
|
|
18939
|
+
...(ngDevMode ? [{ debugName: "cardMenuRow" }] : /* istanbul ignore next */ []));
|
|
18940
|
+
this.cardMenuButtons = signal(new Map(), /* @ts-ignore */
|
|
18941
|
+
...(ngDevMode ? [{ debugName: "cardMenuButtons" }] : /* istanbul ignore next */ []));
|
|
18942
|
+
this.cardDefaultActionRunning = false;
|
|
18920
18943
|
registerSmartWidget(this.smartComponent, {
|
|
18921
18944
|
identifier: () => this.smartGrid?.gridIdentifier,
|
|
18922
18945
|
reload: () => this.refresh(),
|
|
@@ -19138,22 +19161,7 @@ class SmartGridComponent {
|
|
|
19138
19161
|
type: SmartTableInterfaceTypeEnum.NORMAL,
|
|
19139
19162
|
sortable: true,
|
|
19140
19163
|
defaultActionCodes: this.smartGrid?.gridModel.defaultRowActions,
|
|
19141
|
-
defaultActions: this.
|
|
19142
|
-
return {
|
|
19143
|
-
type: code === '_actionSeparator_'
|
|
19144
|
-
? SmartTableButtonType.SEPARATOR
|
|
19145
|
-
: SmartTableButtonType.NORMAL,
|
|
19146
|
-
callback: this.execute.bind(this),
|
|
19147
|
-
code: code,
|
|
19148
|
-
// label: this.buttonTranslator({ code: code }),
|
|
19149
|
-
translator: this.buttonTranslator.bind(this),
|
|
19150
|
-
// args: [
|
|
19151
|
-
// {
|
|
19152
|
-
// code: code,
|
|
19153
|
-
// },
|
|
19154
|
-
// ],
|
|
19155
|
-
};
|
|
19156
|
-
}),
|
|
19164
|
+
defaultActions: this.defaultActionButtons(),
|
|
19157
19165
|
};
|
|
19158
19166
|
if (this.smartGrid?.gridModel.view?.descriptor?.highlightProperty &&
|
|
19159
19167
|
this.smartGrid?.gridModel.view?.descriptor?.highlightClass) {
|
|
@@ -19582,6 +19590,24 @@ class SmartGridComponent {
|
|
|
19582
19590
|
nodeId: row.id,
|
|
19583
19591
|
});
|
|
19584
19592
|
}
|
|
19593
|
+
defaultActionButtons() {
|
|
19594
|
+
return this.smartGrid?.gridModel.defaultRowActions?.map((code) => {
|
|
19595
|
+
return {
|
|
19596
|
+
type: code === '_actionSeparator_'
|
|
19597
|
+
? SmartTableButtonType.SEPARATOR
|
|
19598
|
+
: SmartTableButtonType.NORMAL,
|
|
19599
|
+
callback: this.execute.bind(this),
|
|
19600
|
+
code: code,
|
|
19601
|
+
// label: this.buttonTranslator({ code: code }),
|
|
19602
|
+
translator: this.buttonTranslator.bind(this),
|
|
19603
|
+
// args: [
|
|
19604
|
+
// {
|
|
19605
|
+
// code: code,
|
|
19606
|
+
// },
|
|
19607
|
+
// ],
|
|
19608
|
+
};
|
|
19609
|
+
});
|
|
19610
|
+
}
|
|
19585
19611
|
buttonTranslator(uiAction) {
|
|
19586
19612
|
let desc = this.uiActionDescriptors.get(uiAction.code);
|
|
19587
19613
|
if (!desc) {
|
|
@@ -19655,28 +19681,86 @@ class SmartGridComponent {
|
|
|
19655
19681
|
}
|
|
19656
19682
|
return fallback;
|
|
19657
19683
|
}
|
|
19658
|
-
/**
|
|
19684
|
+
/**
|
|
19685
|
+
* The gesture that fires the default row action of a card. A grid that names no trigger keeps
|
|
19686
|
+
* the click, which is what a card did before it could be selected.
|
|
19687
|
+
*/
|
|
19688
|
+
get cardActionTrigger() {
|
|
19689
|
+
return (this.smartGrid?.gridModel.view?.descriptor?.defaultRowActionTrigger ??
|
|
19690
|
+
GridDefaultRowActionTrigger.CLICK);
|
|
19691
|
+
}
|
|
19692
|
+
/**
|
|
19693
|
+
* Whether a click on the card of this row toggles its selection. A click that fires the
|
|
19694
|
+
* default row action is taken, so such a card is not selectable by click.
|
|
19695
|
+
*/
|
|
19659
19696
|
isCardSelectable(row) {
|
|
19660
19697
|
const selectionMode = this.smartGrid?.gridModel.view?.descriptor?.selectionMode;
|
|
19661
19698
|
return (!!this.rowLayoutOf(row) &&
|
|
19662
19699
|
!!selectionMode &&
|
|
19663
19700
|
selectionMode !== GridSelectionMode.NONE &&
|
|
19664
|
-
row.selectable !== false
|
|
19701
|
+
row.selectable !== false &&
|
|
19702
|
+
!(this.cardActionTrigger === GridDefaultRowActionTrigger.CLICK && this.hasCardDefaultAction(row)));
|
|
19665
19703
|
}
|
|
19666
|
-
/** Whether
|
|
19704
|
+
/** Whether the trigger gesture on the card of this row fires a default row action. */
|
|
19667
19705
|
hasCardDefaultAction(row) {
|
|
19668
19706
|
return !!this.rowLayoutOf(row) && !!this.defaultRowActionOf(row);
|
|
19669
19707
|
}
|
|
19670
|
-
onCardClick(row) {
|
|
19671
|
-
if (this.
|
|
19708
|
+
onCardClick(row, event) {
|
|
19709
|
+
if (this.cardActionTrigger === GridDefaultRowActionTrigger.CLICK && this.hasCardDefaultAction(row)) {
|
|
19710
|
+
// The later clicks of a double click: an action that returns between the two would fire again.
|
|
19711
|
+
if (event.detail <= 1) {
|
|
19712
|
+
this.fireCardDefaultAction(row, event);
|
|
19713
|
+
}
|
|
19714
|
+
}
|
|
19715
|
+
else if (this.isCardSelectable(row) && event.detail <= 1) {
|
|
19716
|
+
// The second click of a double click would toggle the selection back.
|
|
19672
19717
|
this.onSelect(row.id);
|
|
19673
19718
|
}
|
|
19674
19719
|
}
|
|
19675
|
-
onCardDoubleClick(row) {
|
|
19676
|
-
if (this.
|
|
19677
|
-
this.
|
|
19720
|
+
onCardDoubleClick(row, event) {
|
|
19721
|
+
if (this.cardActionTrigger === GridDefaultRowActionTrigger.DOUBLE_CLICK &&
|
|
19722
|
+
this.hasCardDefaultAction(row)) {
|
|
19723
|
+
this.fireCardDefaultAction(row, event);
|
|
19678
19724
|
}
|
|
19679
19725
|
}
|
|
19726
|
+
/**
|
|
19727
|
+
* Fires the default row action of a card. With an explicit trigger several applicable default
|
|
19728
|
+
* row actions open a menu at the pointer, as a table row does; without one the first fires.
|
|
19729
|
+
* While the action runs the gesture is dropped, so an impatient second click does not fire it
|
|
19730
|
+
* again.
|
|
19731
|
+
*/
|
|
19732
|
+
async fireCardDefaultAction(row, event) {
|
|
19733
|
+
const buttons = this.cardDefaultActionButtonsOf(row);
|
|
19734
|
+
if (this.smartGrid?.gridModel.view?.descriptor?.defaultRowActionTrigger && buttons.size > 1) {
|
|
19735
|
+
this.cardMenuRow.set(row);
|
|
19736
|
+
this.cardMenuButtons.set(buttons);
|
|
19737
|
+
// The menu reads its inputs when it opens, which is now.
|
|
19738
|
+
this.changeDetector.detectChanges();
|
|
19739
|
+
this.cardDefaultActionsMenu?.openDefaultActionsMenu(event);
|
|
19740
|
+
return;
|
|
19741
|
+
}
|
|
19742
|
+
if (this.cardDefaultActionRunning) {
|
|
19743
|
+
return;
|
|
19744
|
+
}
|
|
19745
|
+
this.cardDefaultActionRunning = true;
|
|
19746
|
+
try {
|
|
19747
|
+
await this.execute([], row, this.defaultRowActionOf(row));
|
|
19748
|
+
}
|
|
19749
|
+
finally {
|
|
19750
|
+
this.cardDefaultActionRunning = false;
|
|
19751
|
+
}
|
|
19752
|
+
}
|
|
19753
|
+
/** The default row actions this row offers, in the order the grid lists them. */
|
|
19754
|
+
cardDefaultActionButtonsOf(row) {
|
|
19755
|
+
const buttons = new Map();
|
|
19756
|
+
for (const button of this.defaultActionButtons() ?? []) {
|
|
19757
|
+
const uiAction = row.actions.find((action) => action.code === button.code);
|
|
19758
|
+
if (uiAction) {
|
|
19759
|
+
buttons.set(button, uiAction);
|
|
19760
|
+
}
|
|
19761
|
+
}
|
|
19762
|
+
return buttons;
|
|
19763
|
+
}
|
|
19680
19764
|
//#endregion
|
|
19681
19765
|
async onSelect(rowId) {
|
|
19682
19766
|
this.isBlocked = true;
|
|
@@ -19733,11 +19817,11 @@ class SmartGridComponent {
|
|
|
19733
19817
|
};
|
|
19734
19818
|
}
|
|
19735
19819
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19736
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SmartGridComponent, isStandalone: true, selector: "smart-grid", inputs: { smartGrid: { classPropertyName: "smartGrid", publicName: "smartGrid", isSignal: false, isRequired: false, transformFunction: null }, uuid: { classPropertyName: "uuid", publicName: "uuid", isSignal: false, isRequired: false, transformFunction: null }, parentLayoutComponent: { classPropertyName: "parentLayoutComponent", publicName: "parentLayoutComponent", isSignal: true, isRequired: false, transformFunction: null }, dev: { classPropertyName: "dev", publicName: "dev", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-testid": "this.testId" } }, providers: [SmartGridService], viewQueries: [{ propertyName: "vcRefTable", first: true, predicate: ["table"], descendants: true, read: ViewContainerRef }, { propertyName: "expandedRowsComps", predicate: ExpandedRowRendererComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (smartGrid) {\n<div class=\"smartGrid-container\">\n <div class=\"smart-grid-toolbar\">\n <smart-ui-action-toolbar [id]=\"toolbarId\"></smart-ui-action-toolbar>\n @if (smartGrid.showEditColumns) {\n <ui-action-button (actionClick)=\"editColumns()\" [descriptor]=\"showEditColumns\">\n </ui-action-button>\n }\n </div>\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\n <div class=\"smartGridContent\">\n <div>\n @if (smartGrid.showResultCount) {\n <div>\n <div class=\"smartGrid-data-number\">\n {{ smartGrid.gridModel.totalRowCount }}\n </div>\n </div>\n }\n </div>\n <div class=\"smart-grid-table-container\">\n <ng-template #table></ng-template>\n </div>\n @if (smartGrid.layoutDef === layoutDef().EXPANDABLE) {\n <div>\n @for (expandableSection of expandableSections; track expandableSection) {\n <smart-expandable-section #gridExpandableSection [data]=\"expandableSection\"></smart-expandable-section>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef) {\n <div class=\"cards-container\" [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\">\n @for (row of smartGrid.gridModel.page.rows; track row.id) {\n\n <app-smart-grid-card class=\"smartGrid-card-container\" [ngClass]=\"calcClasses(row.style)\"\n [ngStyle]=\"calcStyle(row.style)\"\n [class.clickable-row]=\"isCardSelectable(row) || hasCardDefaultAction(row)\"\n [class.selected]=\"!!row.selected && !!rowLayoutOf(row)\"\n (click)=\"onCardClick(row)\" (dblclick)=\"onCardDoubleClick(row)\" [item]=\"row\"\n [layout]=\"rowLayoutOf(row)\" [smartGrid]=\"smartGrid\"\n [parentLayoutComponent]=\"parentLayoutComponent()\"></app-smart-grid-card>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().TREE && treeControl) {\n <div class=\"tree-container\" [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\">\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding matTreeNodePaddingIndent=\"24\">\n <button mat-icon-button disabled class=\"tree-button\"></button>\n <mat-checkbox class=\"checklist-leaf-node\"\n [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n (change)=\"treeNodeSelectionToggle(node)\">{{ getTreeItem(node) }}</mat-checkbox>\n </mat-tree-node>\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding matTreeNodePaddingIndent=\"24\">\n <button mat-icon-button matTreeNodeToggle class=\"tree-button\" [attr.aria-label]=\"'Toggle ' + node.item\">\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </button>\n <mat-checkbox [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n [indeterminate]=\"descendantsPartiallySelected(node)\" (change)=\"treeNodeSelectionToggle(node)\">{{\n getTreeItem(node) }}</mat-checkbox>\n </mat-tree-node>\n </mat-tree>\n </div>\n }\n </div>\n @if (smartGrid.paginator) {\n <div class=\"paginator-row-material\">\n @if (smartGrid.gridModel.refreshEnabled) {\n <button mat-icon-button type=\"button\" matTooltip=\"Friss\u00EDt\u00E9s\" (click)=\"refreshPartialResults()\">\n <mat-icon>refresh</mat-icon>\n </button>\n }\n @if (smartGrid.paginator && !treeControl) {\n <mat-paginator #paginator [length]=\"length\" [pageIndex]=\"pageIndex\" [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\" (page)=\"onChangePage($event)\"></mat-paginator>\n }\n </div>\n }\n</div>\n}", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.paginator-row-material{display:flex;align-items:center;align-self:flex-end;gap:.25rem}.clickable-row{cursor:pointer}.smartGrid-card-container.selected{outline:2px solid var(--mat-sys-primary, currentColor)}\n"], dependencies: [{ kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "executor", "widgetId", "nodeId", "actionParams", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "identifier", "viewActivated", "addedCssClass", "addBasicClasses", "iconPlaceholder"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SmartGridCardComponent, selector: "app-smart-grid-card", inputs: ["item", "smartGrid", "parentLayoutComponent", "layout"] }, { kind: "component", type: MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "directive", type: MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "directive", type: MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }] }); }
|
|
19820
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SmartGridComponent, isStandalone: true, selector: "smart-grid", inputs: { smartGrid: { classPropertyName: "smartGrid", publicName: "smartGrid", isSignal: false, isRequired: false, transformFunction: null }, uuid: { classPropertyName: "uuid", publicName: "uuid", isSignal: false, isRequired: false, transformFunction: null }, parentLayoutComponent: { classPropertyName: "parentLayoutComponent", publicName: "parentLayoutComponent", isSignal: true, isRequired: false, transformFunction: null }, dev: { classPropertyName: "dev", publicName: "dev", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-testid": "this.testId" } }, providers: [SmartGridService], viewQueries: [{ propertyName: "vcRefTable", first: true, predicate: ["table"], descendants: true, read: ViewContainerRef }, { propertyName: "cardDefaultActionsMenu", first: true, predicate: DefaultActionsPopupComponent, descendants: true }, { propertyName: "expandedRowsComps", predicate: ExpandedRowRendererComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (smartGrid) {\n<div class=\"smartGrid-container\">\n <div class=\"smart-grid-toolbar\">\n <smart-ui-action-toolbar [id]=\"toolbarId\"></smart-ui-action-toolbar>\n @if (smartGrid.showEditColumns) {\n <ui-action-button (actionClick)=\"editColumns()\" [descriptor]=\"showEditColumns\">\n </ui-action-button>\n }\n </div>\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\n <div class=\"smartGridContent\">\n <div>\n @if (smartGrid.showResultCount) {\n <div>\n <div class=\"smartGrid-data-number\">\n {{ smartGrid.gridModel.totalRowCount }}\n </div>\n </div>\n }\n </div>\n <div class=\"smart-grid-table-container\">\n <ng-template #table></ng-template>\n </div>\n @if (smartGrid.layoutDef === layoutDef().EXPANDABLE) {\n <div>\n @for (expandableSection of expandableSections; track expandableSection) {\n <smart-expandable-section #gridExpandableSection [data]=\"expandableSection\"></smart-expandable-section>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef) {\n <div class=\"cards-container\" [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\">\n @for (row of smartGrid.gridModel.page.rows; track row.id) {\n\n <app-smart-grid-card class=\"smartGrid-card-container\" [ngClass]=\"calcClasses(row.style)\"\n [ngStyle]=\"calcStyle(row.style)\"\n [class.clickable-row]=\"isCardSelectable(row) || hasCardDefaultAction(row)\"\n [class.selected]=\"!!row.selected && !!rowLayoutOf(row)\"\n (click)=\"onCardClick(row, $event)\" (dblclick)=\"onCardDoubleClick(row, $event)\" [item]=\"row\"\n [layout]=\"rowLayoutOf(row)\" [smartGrid]=\"smartGrid\"\n [parentLayoutComponent]=\"parentLayoutComponent()\"></app-smart-grid-card>\n }\n @if (cardMenuRow(); as menuRow) {\n <lib-default-actions-popup [buttons]=\"cardMenuButtons()\" [row]=\"menuRow\"></lib-default-actions-popup>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().TREE && treeControl) {\n <div class=\"tree-container\" [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\">\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding matTreeNodePaddingIndent=\"24\">\n <button mat-icon-button disabled class=\"tree-button\"></button>\n <mat-checkbox class=\"checklist-leaf-node\"\n [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n (change)=\"treeNodeSelectionToggle(node)\">{{ getTreeItem(node) }}</mat-checkbox>\n </mat-tree-node>\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding matTreeNodePaddingIndent=\"24\">\n <button mat-icon-button matTreeNodeToggle class=\"tree-button\" [attr.aria-label]=\"'Toggle ' + node.item\">\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </button>\n <mat-checkbox [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n [indeterminate]=\"descendantsPartiallySelected(node)\" (change)=\"treeNodeSelectionToggle(node)\">{{\n getTreeItem(node) }}</mat-checkbox>\n </mat-tree-node>\n </mat-tree>\n </div>\n }\n </div>\n @if (smartGrid.paginator) {\n <div class=\"paginator-row-material\">\n @if (smartGrid.gridModel.refreshEnabled) {\n <button mat-icon-button type=\"button\" matTooltip=\"Friss\u00EDt\u00E9s\" (click)=\"refreshPartialResults()\">\n <mat-icon>refresh</mat-icon>\n </button>\n }\n @if (smartGrid.paginator && !treeControl) {\n <mat-paginator #paginator [length]=\"length\" [pageIndex]=\"pageIndex\" [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\" (page)=\"onChangePage($event)\"></mat-paginator>\n }\n </div>\n }\n</div>\n}", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.paginator-row-material{display:flex;align-items:center;align-self:flex-end;gap:.25rem}.clickable-row{cursor:pointer}.smartGrid-card-container.selected{outline:2px solid var(--mat-sys-primary, currentColor)}\n"], dependencies: [{ kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "executor", "widgetId", "nodeId", "actionParams", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "identifier", "viewActivated", "addedCssClass", "addBasicClasses", "iconPlaceholder"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SmartGridCardComponent, selector: "app-smart-grid-card", inputs: ["item", "smartGrid", "parentLayoutComponent", "layout"] }, { kind: "component", type: DefaultActionsPopupComponent, selector: "lib-default-actions-popup", inputs: ["buttons", "row", "colIdx"] }, { kind: "component", type: MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "directive", type: MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "directive", type: MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }] }); }
|
|
19737
19821
|
}
|
|
19738
19822
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartGridComponent, decorators: [{
|
|
19739
19823
|
type: Component,
|
|
19740
|
-
args: [{ selector: 'smart-grid', providers: [SmartGridService], imports: [UiActionToolbarComponent, UiActionButtonComponent, MatMiniFabButton, MatIcon, ExpandableSectionComponent, NgStyle, NgClass, SmartGridCardComponent, MatTree, MatTreeNodeDef, MatTreeNode, MatTreeNodeToggle, MatTreeNodePadding, MatIconButton, MatCheckbox, MatTooltip, MatPaginator], template: "@if (smartGrid) {\n<div class=\"smartGrid-container\">\n <div class=\"smart-grid-toolbar\">\n <smart-ui-action-toolbar [id]=\"toolbarId\"></smart-ui-action-toolbar>\n @if (smartGrid.showEditColumns) {\n <ui-action-button (actionClick)=\"editColumns()\" [descriptor]=\"showEditColumns\">\n </ui-action-button>\n }\n </div>\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\n <div class=\"smartGridContent\">\n <div>\n @if (smartGrid.showResultCount) {\n <div>\n <div class=\"smartGrid-data-number\">\n {{ smartGrid.gridModel.totalRowCount }}\n </div>\n </div>\n }\n </div>\n <div class=\"smart-grid-table-container\">\n <ng-template #table></ng-template>\n </div>\n @if (smartGrid.layoutDef === layoutDef().EXPANDABLE) {\n <div>\n @for (expandableSection of expandableSections; track expandableSection) {\n <smart-expandable-section #gridExpandableSection [data]=\"expandableSection\"></smart-expandable-section>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef) {\n <div class=\"cards-container\" [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\">\n @for (row of smartGrid.gridModel.page.rows; track row.id) {\n\n <app-smart-grid-card class=\"smartGrid-card-container\" [ngClass]=\"calcClasses(row.style)\"\n [ngStyle]=\"calcStyle(row.style)\"\n [class.clickable-row]=\"isCardSelectable(row) || hasCardDefaultAction(row)\"\n [class.selected]=\"!!row.selected && !!rowLayoutOf(row)\"\n (click)=\"onCardClick(row)\" (dblclick)=\"onCardDoubleClick(row)\" [item]=\"row\"\n [layout]=\"rowLayoutOf(row)\" [smartGrid]=\"smartGrid\"\n [parentLayoutComponent]=\"parentLayoutComponent()\"></app-smart-grid-card>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().TREE && treeControl) {\n <div class=\"tree-container\" [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\">\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding matTreeNodePaddingIndent=\"24\">\n <button mat-icon-button disabled class=\"tree-button\"></button>\n <mat-checkbox class=\"checklist-leaf-node\"\n [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n (change)=\"treeNodeSelectionToggle(node)\">{{ getTreeItem(node) }}</mat-checkbox>\n </mat-tree-node>\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding matTreeNodePaddingIndent=\"24\">\n <button mat-icon-button matTreeNodeToggle class=\"tree-button\" [attr.aria-label]=\"'Toggle ' + node.item\">\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </button>\n <mat-checkbox [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n [indeterminate]=\"descendantsPartiallySelected(node)\" (change)=\"treeNodeSelectionToggle(node)\">{{\n getTreeItem(node) }}</mat-checkbox>\n </mat-tree-node>\n </mat-tree>\n </div>\n }\n </div>\n @if (smartGrid.paginator) {\n <div class=\"paginator-row-material\">\n @if (smartGrid.gridModel.refreshEnabled) {\n <button mat-icon-button type=\"button\" matTooltip=\"Friss\u00EDt\u00E9s\" (click)=\"refreshPartialResults()\">\n <mat-icon>refresh</mat-icon>\n </button>\n }\n @if (smartGrid.paginator && !treeControl) {\n <mat-paginator #paginator [length]=\"length\" [pageIndex]=\"pageIndex\" [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\" (page)=\"onChangePage($event)\"></mat-paginator>\n }\n </div>\n }\n</div>\n}", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.paginator-row-material{display:flex;align-items:center;align-self:flex-end;gap:.25rem}.clickable-row{cursor:pointer}.smartGrid-card-container.selected{outline:2px solid var(--mat-sys-primary, currentColor)}\n"] }]
|
|
19824
|
+
args: [{ selector: 'smart-grid', providers: [SmartGridService], imports: [UiActionToolbarComponent, UiActionButtonComponent, MatMiniFabButton, MatIcon, ExpandableSectionComponent, NgStyle, NgClass, SmartGridCardComponent, DefaultActionsPopupComponent, MatTree, MatTreeNodeDef, MatTreeNode, MatTreeNodeToggle, MatTreeNodePadding, MatIconButton, MatCheckbox, MatTooltip, MatPaginator], template: "@if (smartGrid) {\n<div class=\"smartGrid-container\">\n <div class=\"smart-grid-toolbar\">\n <smart-ui-action-toolbar [id]=\"toolbarId\"></smart-ui-action-toolbar>\n @if (smartGrid.showEditColumns) {\n <ui-action-button (actionClick)=\"editColumns()\" [descriptor]=\"showEditColumns\">\n </ui-action-button>\n }\n </div>\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\n <div class=\"smartGridContent\">\n <div>\n @if (smartGrid.showResultCount) {\n <div>\n <div class=\"smartGrid-data-number\">\n {{ smartGrid.gridModel.totalRowCount }}\n </div>\n </div>\n }\n </div>\n <div class=\"smart-grid-table-container\">\n <ng-template #table></ng-template>\n </div>\n @if (smartGrid.layoutDef === layoutDef().EXPANDABLE) {\n <div>\n @for (expandableSection of expandableSections; track expandableSection) {\n <smart-expandable-section #gridExpandableSection [data]=\"expandableSection\"></smart-expandable-section>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef) {\n <div class=\"cards-container\" [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\">\n @for (row of smartGrid.gridModel.page.rows; track row.id) {\n\n <app-smart-grid-card class=\"smartGrid-card-container\" [ngClass]=\"calcClasses(row.style)\"\n [ngStyle]=\"calcStyle(row.style)\"\n [class.clickable-row]=\"isCardSelectable(row) || hasCardDefaultAction(row)\"\n [class.selected]=\"!!row.selected && !!rowLayoutOf(row)\"\n (click)=\"onCardClick(row, $event)\" (dblclick)=\"onCardDoubleClick(row, $event)\" [item]=\"row\"\n [layout]=\"rowLayoutOf(row)\" [smartGrid]=\"smartGrid\"\n [parentLayoutComponent]=\"parentLayoutComponent()\"></app-smart-grid-card>\n }\n @if (cardMenuRow(); as menuRow) {\n <lib-default-actions-popup [buttons]=\"cardMenuButtons()\" [row]=\"menuRow\"></lib-default-actions-popup>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().TREE && treeControl) {\n <div class=\"tree-container\" [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\">\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding matTreeNodePaddingIndent=\"24\">\n <button mat-icon-button disabled class=\"tree-button\"></button>\n <mat-checkbox class=\"checklist-leaf-node\"\n [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n (change)=\"treeNodeSelectionToggle(node)\">{{ getTreeItem(node) }}</mat-checkbox>\n </mat-tree-node>\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding matTreeNodePaddingIndent=\"24\">\n <button mat-icon-button matTreeNodeToggle class=\"tree-button\" [attr.aria-label]=\"'Toggle ' + node.item\">\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </button>\n <mat-checkbox [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n [indeterminate]=\"descendantsPartiallySelected(node)\" (change)=\"treeNodeSelectionToggle(node)\">{{\n getTreeItem(node) }}</mat-checkbox>\n </mat-tree-node>\n </mat-tree>\n </div>\n }\n </div>\n @if (smartGrid.paginator) {\n <div class=\"paginator-row-material\">\n @if (smartGrid.gridModel.refreshEnabled) {\n <button mat-icon-button type=\"button\" matTooltip=\"Friss\u00EDt\u00E9s\" (click)=\"refreshPartialResults()\">\n <mat-icon>refresh</mat-icon>\n </button>\n }\n @if (smartGrid.paginator && !treeControl) {\n <mat-paginator #paginator [length]=\"length\" [pageIndex]=\"pageIndex\" [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\" (page)=\"onChangePage($event)\"></mat-paginator>\n }\n </div>\n }\n</div>\n}", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.paginator-row-material{display:flex;align-items:center;align-self:flex-end;gap:.25rem}.clickable-row{cursor:pointer}.smartGrid-card-container.selected{outline:2px solid var(--mat-sys-primary, currentColor)}\n"] }]
|
|
19741
19825
|
}], ctorParameters: () => [], propDecorators: { smartGrid: [{
|
|
19742
19826
|
type: Input
|
|
19743
19827
|
}], uuid: [{
|
|
@@ -19751,6 +19835,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
19751
19835
|
}], expandedRowsComps: [{
|
|
19752
19836
|
type: ViewChildren,
|
|
19753
19837
|
args: [ExpandedRowRendererComponent]
|
|
19838
|
+
}], cardDefaultActionsMenu: [{
|
|
19839
|
+
type: ViewChild,
|
|
19840
|
+
args: [DefaultActionsPopupComponent]
|
|
19754
19841
|
}] } });
|
|
19755
19842
|
|
|
19756
19843
|
/*
|
|
@@ -24754,5 +24841,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
24754
24841
|
* Generated bundle index. Do not edit.
|
|
24755
24842
|
*/
|
|
24756
24843
|
|
|
24757
|
-
export { ACLEntry, APIS$5 as APIS, AclEditingViewComponent, ApiQueueService, BASE_PATH$7 as BASE_PATH, COLLECTION_FORMATS$7 as COLLECTION_FORMATS, CUSTOM_DIAGRAM_OPTIONS, CloseResult, ComponentFactoryService, ComponentType, ComponentWidgetType, Configuration$7 as Configuration, DEFAULT_ROW_LAYOUT, DIALOG_DISABLE_CLOSE, DataChangeKind, DefaultChartOptionsProvider, DefaultUiActionCode_CLOSE, DrawTime, EMPTY_PARAMS, ExpandableSectionButtonIconPosition, ExpandableSectionButtonType, ExpandableSectionComponent, FilterExpressionBoolOperator$1 as FilterExpressionBoolOperator, FilterExpressionBuilderGroupBuilderGroupKindEnum, FilterExpressionBuilderUiModelTypeEnum, FilterExpressionDataType, FilterExpressionFieldWidgetType, FilterExpressionOperation, FilterExpressionOrderByOrderEnum, GenericPageComponent, GeoMapDataLoadingMode, GeoMapDataSourceType, GeoMapItemKind, GeoMapOperationMode, GeoMapSelectionMode, GeoMapTextType, GridColumnContentType, GridDataAccessConfigKindEnum, GridSelectionMode, GridSelectionType, GridUiActionType, GridViewDescriptorKindEnum, HighlightPipe, IS_ASYNC_PARAM_NAME, IconPosition, ImageResourceKindEnum, InvalidSmartlinkComponent, LayoutDirection, LinkTargetEnum, MAP_ENGINE, MapEngine, MenuOpenDirection, MenuTriggerType, MessageOptionType, MessageTextType, MessageType, NAMED_VALIDATOR, NamedValidatorOperationEnum, NamedValidatorService, NoPermissionPageComponent, REUSE_ROUTER_SLOT_COMPONENT, ROOT_CONTAINER_UUID, ROUTER_SLOT_ID, RecordingUploaderPropertiesOpenDirectionEnum, SMART_DATE_FORMATS, SMART_DEFAULT_VIEW_COMPONENTS, SMART_NG_CLIENT_CONFIG, SMART_ROW_LAYOUT_COMPONENT, SearchPageComponent, SelectionDefinitionTypeEnum, SelectionDefinitionValueSetValueTypeEnum, ServerRequestType, SessionAPIS, SessionErrorBehaviour, SessionService, SmartActionHost, SmartActionType, SmartBackendBootstrapService, SmartComponent, SmartComponentApiClient, SmartComponentDetachedDirective, SmartComponentHost, SmartComponentLayoutComponent, SmartDateFnsAdapter, SmartDatePipe, SmartDateTimePipe, SmartDefaultErrorUiService, SmartDiagramComponent, SmartDialog, SmartEmbeddedSlotDirective, SmartExpandableSectionService, SmartFileEditorComponent, SmartFilterComponent, SmartFilterEditorContentComponent, SmartFilterEditorService, SmartFilterExpressionFieldComponent, SmartFilterPosition, SmartFilterType, SmartFilterWidgetComponent, SmartFormInputMode, SmartFormTextFieldButtonIconPosition, SmartFormWidgetDirection, SmartFormWidgetType, SmartFormWidgetWidth, SmartGridButtonType, SmartGridComponent, SmartGridDataLayout, SmartGridService, SmartGridType, SmartIconComponent, SmartIconService, SmartLayoutDef, SmartLinkChannelVariableInPath, SmartLinkMigrationStatusStatusEnum, SmartLinkUuidVariableInPath, SmartMapComponent, SmartMultiFileEditorComponent, SmartNavbarComponent, SmartNavbarService, SmartNavigationService, SmartNgClientFeatureKind, SmartService, SmartSessionService, SmartSessionTimerComponent, SmartTable, SmartTableButtonType, SmartTableHeaderPropertyType, SmartTableInterfaceTypeEnum, SmartTableOptionButtonDirection, SmartTableOrder, SmartTableType, SmartTimePipe, SmartTooltipDirective, SmartTreeComponent, SmartTreeNodeButtonType, SmartUserSettinsIconPosition, SmartValidatorName, SmartViewContextService, SmartViewRedirect, SmartVoiceRecorderComponent, SmartWidgetHintPosition, SmartWidgetHintPositionEnum, SmartdialogService, SmartfileuploaderComponent, SmartformComponent, SmartformLayoutDefinitionService, SmarttreeGenericService, SmarttreeService, SubjectSelectorComponent, ThemeService, ToggleLabelPosition, ToolbarAlignment, ToolbarDirection, TreeArrowPosition, USE_ADVANCED_FILTER, UiActionButtonComponent, UiActionButtonType, UiActionConfirmDialogService, UiActionDescriptorService, UiActionDialogButtonComponent, UiActionDialogType, UiActionFeedbackType, UiActionInputDialogService, UiActionInputType, UiActionService, UiActionToolbarComponent, UiActionTooltipTooltipPositionEnum, UiBadgeComponent, UiBadgeDirective, UploadWidgetType, ValidationResultPageComponent, ValueChangeMode, ViewContextRebuiltError, ViewEventHandlerViewEventTypeEnum, ViewService, ViewState, ViewType, barChart, bubbleChart, createBasicOptions, doughnutChart, horizontalBarChart, horizontalStackedBarChart, injectSmartComponent, multiAxisLineChart, pieChart, polarAreaChart, provideSmartNgClient, radarChart, registerSmartWidget, resolveDateLocale, resolveSlot, resolveSmartNgClientConfig, resolveViewHandler, scatterChart, stackedBarChart, transformDataToBarLikeDataSet, transformDataToBasicDataSets, transformDataToBubble, transformDataToScatter, withSmartDiagram, withSmartMap };
|
|
24844
|
+
export { ACLEntry, APIS$5 as APIS, AclEditingViewComponent, ApiQueueService, BASE_PATH$7 as BASE_PATH, COLLECTION_FORMATS$7 as COLLECTION_FORMATS, CUSTOM_DIAGRAM_OPTIONS, CloseResult, ComponentFactoryService, ComponentType, ComponentWidgetType, Configuration$7 as Configuration, DEFAULT_ROW_LAYOUT, DIALOG_DISABLE_CLOSE, DataChangeKind, DefaultChartOptionsProvider, DefaultUiActionCode_CLOSE, DrawTime, EMPTY_PARAMS, ExpandableSectionButtonIconPosition, ExpandableSectionButtonType, ExpandableSectionComponent, FilterExpressionBoolOperator$1 as FilterExpressionBoolOperator, FilterExpressionBuilderGroupBuilderGroupKindEnum, FilterExpressionBuilderUiModelTypeEnum, FilterExpressionDataType, FilterExpressionFieldWidgetType, FilterExpressionOperation, FilterExpressionOrderByOrderEnum, GenericPageComponent, GeoMapDataLoadingMode, GeoMapDataSourceType, GeoMapItemKind, GeoMapOperationMode, GeoMapSelectionMode, GeoMapTextType, GridColumnContentType, GridDataAccessConfigKindEnum, GridDefaultRowActionTrigger, GridSelectionMode, GridSelectionType, GridUiActionType, GridViewDescriptorKindEnum, HighlightPipe, IS_ASYNC_PARAM_NAME, IconPosition, ImageResourceKindEnum, InvalidSmartlinkComponent, LayoutDirection, LinkTargetEnum, MAP_ENGINE, MapEngine, MenuOpenDirection, MenuTriggerType, MessageOptionType, MessageTextType, MessageType, NAMED_VALIDATOR, NamedValidatorOperationEnum, NamedValidatorService, NoPermissionPageComponent, REUSE_ROUTER_SLOT_COMPONENT, ROOT_CONTAINER_UUID, ROUTER_SLOT_ID, RecordingUploaderPropertiesOpenDirectionEnum, SMART_DATE_FORMATS, SMART_DEFAULT_VIEW_COMPONENTS, SMART_NG_CLIENT_CONFIG, SMART_ROW_LAYOUT_COMPONENT, SearchPageComponent, SelectionDefinitionTypeEnum, SelectionDefinitionValueSetValueTypeEnum, ServerRequestType, SessionAPIS, SessionErrorBehaviour, SessionService, SmartActionHost, SmartActionType, SmartBackendBootstrapService, SmartComponent, SmartComponentApiClient, SmartComponentDetachedDirective, SmartComponentHost, SmartComponentLayoutComponent, SmartDateFnsAdapter, SmartDatePipe, SmartDateTimePipe, SmartDefaultErrorUiService, SmartDiagramComponent, SmartDialog, SmartEmbeddedSlotDirective, SmartExpandableSectionService, SmartFileEditorComponent, SmartFilterComponent, SmartFilterEditorContentComponent, SmartFilterEditorService, SmartFilterExpressionFieldComponent, SmartFilterPosition, SmartFilterType, SmartFilterWidgetComponent, SmartFormInputMode, SmartFormTextFieldButtonIconPosition, SmartFormWidgetDirection, SmartFormWidgetType, SmartFormWidgetWidth, SmartGridButtonType, SmartGridComponent, SmartGridDataLayout, SmartGridService, SmartGridType, SmartIconComponent, SmartIconService, SmartLayoutDef, SmartLinkChannelVariableInPath, SmartLinkMigrationStatusStatusEnum, SmartLinkUuidVariableInPath, SmartMapComponent, SmartMultiFileEditorComponent, SmartNavbarComponent, SmartNavbarService, SmartNavigationService, SmartNgClientFeatureKind, SmartService, SmartSessionService, SmartSessionTimerComponent, SmartTable, SmartTableButtonType, SmartTableHeaderPropertyType, SmartTableInterfaceTypeEnum, SmartTableOptionButtonDirection, SmartTableOrder, SmartTableType, SmartTimePipe, SmartTooltipDirective, SmartTreeComponent, SmartTreeNodeButtonType, SmartUserSettinsIconPosition, SmartValidatorName, SmartViewContextService, SmartViewRedirect, SmartVoiceRecorderComponent, SmartWidgetHintPosition, SmartWidgetHintPositionEnum, SmartdialogService, SmartfileuploaderComponent, SmartformComponent, SmartformLayoutDefinitionService, SmarttreeGenericService, SmarttreeService, SubjectSelectorComponent, ThemeService, ToggleLabelPosition, ToolbarAlignment, ToolbarDirection, TreeArrowPosition, USE_ADVANCED_FILTER, UiActionButtonComponent, UiActionButtonType, UiActionConfirmDialogService, UiActionDescriptorService, UiActionDialogButtonComponent, UiActionDialogType, UiActionFeedbackType, UiActionInputDialogService, UiActionInputType, UiActionService, UiActionToolbarComponent, UiActionTooltipTooltipPositionEnum, UiBadgeComponent, UiBadgeDirective, UploadWidgetType, ValidationResultPageComponent, ValueChangeMode, ViewContextRebuiltError, ViewEventHandlerViewEventTypeEnum, ViewService, ViewState, ViewType, barChart, bubbleChart, createBasicOptions, doughnutChart, horizontalBarChart, horizontalStackedBarChart, injectSmartComponent, multiAxisLineChart, pieChart, polarAreaChart, provideSmartNgClient, radarChart, registerSmartWidget, resolveDateLocale, resolveSlot, resolveSmartNgClientConfig, resolveViewHandler, scatterChart, stackedBarChart, transformDataToBarLikeDataSet, transformDataToBasicDataSets, transformDataToBubble, transformDataToScatter, withSmartDiagram, withSmartMap };
|
|
24758
24845
|
//# sourceMappingURL=smartbit4all-ng-client.mjs.map
|