@rt-tools/ui-kit-v2 0.38.0 → 0.39.1
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/fesm2022/rt-tools-ui-kit-v2-aside.mjs +45 -7
- package/fesm2022/rt-tools-ui-kit-v2-aside.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs +3 -0
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +10 -7
- package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +45 -44
- package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-field.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +4 -1
- package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-icon.mjs +10 -0
- package/fesm2022/rt-tools-ui-kit-v2-icon.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-input.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-message.mjs +3 -3
- package/fesm2022/rt-tools-ui-kit-v2-message.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +4 -4
- package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-popover.mjs +22 -6
- package/fesm2022/rt-tools-ui-kit-v2-popover.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs +9 -5
- package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +2 -1
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-table-core.mjs +101 -0
- package/fesm2022/rt-tools-ui-kit-v2-table-core.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-table.mjs +39 -38
- package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +41 -4
- package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs +342 -17
- package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +2 -0
- package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
- package/package.json +5 -1
- package/src/assets/icons-material/bookmark.fill.svg +5 -0
- package/src/assets/icons-material/bookmark.svg +5 -0
- package/src/assets/icons-material/flag.fill.svg +3 -0
- package/src/assets/icons-material/flag.svg +5 -0
- package/src/lib/components/aside/CONTEXT.md +4 -1
- package/src/lib/components/aside/footer/CONTEXT.md +27 -0
- package/src/lib/components/aside/footer/rt-aside-footer.component.scss +8 -3
- package/src/lib/components/aside/header/rt-aside-header.component.scss +15 -4
- package/src/lib/components/button/rt-button.directive.scss +5 -1
- package/src/lib/components/data-table/CONTEXT.md +8 -2
- package/src/lib/components/field/CONTEXT.md +4 -2
- package/src/lib/components/field/rt-field.component.scss +14 -0
- package/src/lib/components/form-control/CONTEXT.md +13 -8
- package/src/lib/components/input/rt-input.component.scss +4 -0
- package/src/lib/components/message/CONTEXT.md +1 -1
- package/src/lib/components/message/rt-message.component.scss +2 -1
- package/src/lib/components/multiselect/rt-multiselect.component.scss +21 -0
- package/src/lib/components/popover/CONTEXT.md +3 -0
- package/src/lib/components/profile-menu/CONTEXT.md +4 -0
- package/src/lib/components/profile-menu/rt-profile-menu.component.scss +11 -0
- package/src/lib/components/service-block/stories/component/test-service-block-panel.component.scss +29 -0
- package/src/lib/components/table/CONTEXT.md +3 -0
- package/src/lib/components/table/copy-cell/CONTEXT.md +32 -0
- package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +26 -0
- package/src/lib/components/tabs/CONTEXT.md +19 -16
- package/src/lib/components/tabs/rt-tabs.component.scss +25 -1
- package/src/lib/components/toolbar/CONTEXT.md +21 -4
- package/src/lib/components/toolbar/filters-aside/rt-toolbar-filters-aside.component.scss +22 -0
- package/src/lib/components/toolbar/rt-toolbar.component.scss +12 -0
- package/src/styles/_form.scss +10 -0
- package/src/styles/_semantic.scss +2 -1
- package/styles/tokens.css +29 -9
- package/types/rt-tools-ui-kit-v2-aside.d.ts +21 -2
- package/types/rt-tools-ui-kit-v2-core.d.ts +21 -5
- package/types/rt-tools-ui-kit-v2-data-table.d.ts +23 -9
- package/types/rt-tools-ui-kit-v2-form-control.d.ts +2 -2
- package/types/rt-tools-ui-kit-v2-message.d.ts +1 -1
- package/types/rt-tools-ui-kit-v2-popover.d.ts +3 -1
- package/types/rt-tools-ui-kit-v2-profile-menu.d.ts +6 -1
- package/types/rt-tools-ui-kit-v2-table-core.d.ts +76 -0
- package/types/rt-tools-ui-kit-v2-table.d.ts +21 -18
- package/types/rt-tools-ui-kit-v2-tabs.d.ts +26 -0
- package/types/rt-tools-ui-kit-v2-toolbar.d.ts +79 -2
|
@@ -3,15 +3,16 @@ import { RtIconComponent, iconMaterialMap } from "@rt-tools/ui-kit-v2/icon";
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import { ChangeDetectionStrategy, Component, DestroyRef, Directive, ElementRef, Injectable, InjectionToken, Injector, TemplateRef, ViewEncapsulation, booleanAttribute, computed, contentChild, effect, forwardRef, inject, input, linkedSignal, output, signal, untracked, viewChild } from "@angular/core";
|
|
5
5
|
import { takeUntilDestroyed, toObservable } from "@angular/core/rxjs-interop";
|
|
6
|
-
import { Subject } from "rxjs";
|
|
7
|
-
import { concatMap, filter, map, switchMap, take, takeUntil } from "rxjs/operators";
|
|
6
|
+
import { Subject, of } from "rxjs";
|
|
7
|
+
import { concatMap, filter, map, switchMap, take, takeUntil, tap } from "rxjs/operators";
|
|
8
8
|
import { BlockDirective, ConcatClassesPipe, ElemDirective, EmptyToDashPipe, IDBStorageService, ModDirective, PlatformService } from "@rt-tools/core";
|
|
9
|
+
import { BreakpointsService, ERtDataTableColumnType, ERtDataTableFilterType, ERtStorageKeys, RT_DATA_TABLE_PRESET_FROM_HOST, RT_KIT_TRANSLATOR, RT_PRESET_MATERIAL_CLASS, rtKitDefault, rtKitLabel } from "@rt-tools/ui-kit-v2/core";
|
|
9
10
|
import { Clipboard } from "@angular/cdk/clipboard";
|
|
10
11
|
import { NgTemplateOutlet, TitleCasePipe } from "@angular/common";
|
|
11
12
|
import { DomSanitizer } from "@angular/platform-browser";
|
|
12
|
-
import { BreakpointsService, ERtDataTableColumnType, ERtDataTableFilterType, RT_DATA_TABLE_PRESET_FROM_HOST, RT_KIT_TRANSLATOR, RT_PRESET_MATERIAL_CLASS, rtKitDefault, rtKitLabel } from "@rt-tools/ui-kit-v2/core";
|
|
13
13
|
import { RtIconButtonComponent } from "@rt-tools/ui-kit-v2/icon-button";
|
|
14
14
|
import { RtTooltipDirective } from "@rt-tools/ui-kit-v2/tooltip";
|
|
15
|
+
import { rtAllOnPage, rtAnyOnPage, rtAriaSortOf, rtFilterOf, rtFiltersWithOperator, rtFiltersWithValue, rtIsSortedBy, rtKeysOf, rtNextSort, rtPresetEntities, rtWithEntity, rtWithPageEntities, rtWithoutPageEntities } from "@rt-tools/ui-kit-v2/table-core";
|
|
15
16
|
import * as i1 from "@angular/forms";
|
|
16
17
|
import { FormsModule } from "@angular/forms";
|
|
17
18
|
import { RtDatePickerComponent } from "@rt-tools/ui-kit-v2/date-picker";
|
|
@@ -37,6 +38,9 @@ function dataTableCopyButtonSide(column) {
|
|
|
37
38
|
function dataTableIconName(glyph) {
|
|
38
39
|
return iconMaterialMap.find((entry) => entry.from === glyph)?.to ?? null;
|
|
39
40
|
}
|
|
41
|
+
function dataTableConfigKeyOf(storageKey) {
|
|
42
|
+
return `${ERtStorageKeys.DataTableConfigPrefix}${storageKey}`;
|
|
43
|
+
}
|
|
40
44
|
function comparePropNames(a, b) {
|
|
41
45
|
return String(a).localeCompare(String(b));
|
|
42
46
|
}
|
|
@@ -59,7 +63,7 @@ var RtDataTableConfigService = class RtDataTableConfigService {
|
|
|
59
63
|
columns: []
|
|
60
64
|
}, ...ngDevMode ? [{ debugName: "#tableConfig" }] : /* istanbul ignore next */ []);
|
|
61
65
|
this.tableConfig = this.#tableConfig.asReadonly();
|
|
62
|
-
this.#readSource.pipe(switchMap((read) => this.#
|
|
66
|
+
this.#readSource.pipe(switchMap((read) => this.#savedOf(read.storageKey).pipe(takeUntil(this.#updatedSource), map((savedConfig) => this.#configOf(read.config, savedConfig)))), takeUntilDestroyed(this.#destroyRef)).subscribe((config) => {
|
|
63
67
|
this.#tableConfig.set(config);
|
|
64
68
|
});
|
|
65
69
|
this.#writeSource.pipe(concatMap((write) => this.#writeOf(write).pipe(take(1))), takeUntilDestroyed(this.#destroyRef)).subscribe();
|
|
@@ -74,19 +78,35 @@ var RtDataTableConfigService = class RtDataTableConfigService {
|
|
|
74
78
|
this.#updatedSource.next();
|
|
75
79
|
this.#writeSource.next({
|
|
76
80
|
kind: "set",
|
|
77
|
-
storageKey,
|
|
81
|
+
storageKey: dataTableConfigKeyOf(storageKey),
|
|
78
82
|
config
|
|
79
83
|
});
|
|
80
84
|
this.#tableConfig.set(config);
|
|
81
85
|
}
|
|
82
86
|
deleteConfig(storageKey) {
|
|
87
|
+
this.#updatedSource.next();
|
|
88
|
+
this.#writeSource.next({
|
|
89
|
+
kind: "remove",
|
|
90
|
+
storageKey: dataTableConfigKeyOf(storageKey)
|
|
91
|
+
});
|
|
83
92
|
this.#writeSource.next({
|
|
84
93
|
kind: "remove",
|
|
85
94
|
storageKey
|
|
86
95
|
});
|
|
87
96
|
}
|
|
97
|
+
#savedOf(storageKey) {
|
|
98
|
+
const kitKey = dataTableConfigKeyOf(storageKey);
|
|
99
|
+
return this.#iDBStorageService.get(kitKey).pipe(take(1), switchMap((saved) => saved ? of(saved) : this.#iDBStorageService.get(storageKey).pipe(take(1), tap((old) => {
|
|
100
|
+
if (old) this.#writeSource.next({
|
|
101
|
+
kind: "copy",
|
|
102
|
+
storageKey: kitKey,
|
|
103
|
+
stored: old
|
|
104
|
+
});
|
|
105
|
+
}))));
|
|
106
|
+
}
|
|
88
107
|
#writeOf(write) {
|
|
89
108
|
if (write.kind === "remove") return this.#iDBStorageService.remove(write.storageKey);
|
|
109
|
+
if (write.kind === "copy") return this.#iDBStorageService.set(write.storageKey, write.stored);
|
|
90
110
|
const storedColumns = write.config.columns.map((el) => ({
|
|
91
111
|
displayName: el.header.label ?? el.propName.toString(),
|
|
92
112
|
propName: el.propName,
|
|
@@ -637,18 +657,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
637
657
|
}]
|
|
638
658
|
}
|
|
639
659
|
});
|
|
640
|
-
function dataTableNextSortOrder(current) {
|
|
641
|
-
return current?.
|
|
660
|
+
function dataTableNextSortOrder(current, propertyName) {
|
|
661
|
+
return rtNextSort(current, propertyName ?? current?.propertyName ?? "", "repeats")?.sortDirection ?? EListSortOrder.ASC;
|
|
642
662
|
}
|
|
643
663
|
function dataTableSortActive(sort, current) {
|
|
644
|
-
return
|
|
664
|
+
return rtIsSortedBy(current, sort?.propertyName);
|
|
645
665
|
}
|
|
646
666
|
function dataTableAriaSort(sort, current) {
|
|
647
|
-
|
|
648
|
-
if (!dataTableSortActive(sort, current)) return "none";
|
|
649
|
-
const direction = current?.sortDirection?.toLowerCase();
|
|
650
|
-
if (direction === EListSortOrder.ASC) return "ascending";
|
|
651
|
-
return direction === EListSortOrder.DESC ? "descending" : "none";
|
|
667
|
+
return sort?.propertyName ? rtAriaSortOf(current, sort.propertyName) : null;
|
|
652
668
|
}
|
|
653
669
|
const BEM_BLOCK$2 = "rt-data-table-header-cell";
|
|
654
670
|
var RtDataTableHeaderCellComponent = class RtDataTableHeaderCellComponent {
|
|
@@ -701,7 +717,7 @@ var RtDataTableHeaderCellComponent = class RtDataTableHeaderCellComponent {
|
|
|
701
717
|
const propertyName = this.sortModel()?.propertyName;
|
|
702
718
|
if (propertyName) this.sortChange.emit({
|
|
703
719
|
propertyName,
|
|
704
|
-
sortDirection: dataTableNextSortOrder(this.currentSortModel())
|
|
720
|
+
sortDirection: dataTableNextSortOrder(this.currentSortModel(), propertyName)
|
|
705
721
|
});
|
|
706
722
|
}
|
|
707
723
|
static {
|
|
@@ -923,6 +939,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
923
939
|
}]
|
|
924
940
|
}
|
|
925
941
|
});
|
|
942
|
+
const DATA_TABLE_EMPTY_MODE = "falsy";
|
|
926
943
|
const DATA_TABLE_FILTER_OPERATOR_GLYPHS = {
|
|
927
944
|
[EFilterOperatorType.EQUALS]: "drag_handle",
|
|
928
945
|
[EFilterOperatorType.NOT_EQUALS]: "block",
|
|
@@ -943,33 +960,20 @@ function dataTableDefaultOperator(operator) {
|
|
|
943
960
|
return operator && FILTER_OPERATORS.includes(operator) ? operator : EFilterOperatorType.EQUALS;
|
|
944
961
|
}
|
|
945
962
|
function dataTableColumnFilter(filters, propertyName, defaultOperator) {
|
|
946
|
-
return filters
|
|
963
|
+
return rtFilterOf(filters, propertyName) ?? {
|
|
947
964
|
propertyName,
|
|
948
965
|
operatorType: defaultOperator,
|
|
949
966
|
value: ""
|
|
950
967
|
};
|
|
951
968
|
}
|
|
969
|
+
function changedOrNull(before, after) {
|
|
970
|
+
return after === before ? null : [...after];
|
|
971
|
+
}
|
|
952
972
|
function dataTableFiltersWithValue(filters, current, value) {
|
|
953
|
-
|
|
954
|
-
...filter,
|
|
955
|
-
value
|
|
956
|
-
} : filter) : filters.filter((filter) => filter.propertyName !== current.propertyName);
|
|
957
|
-
return value ? [...filters, {
|
|
958
|
-
propertyName: current.propertyName,
|
|
959
|
-
operatorType: current.operatorType,
|
|
960
|
-
value
|
|
961
|
-
}] : null;
|
|
973
|
+
return changedOrNull(filters, rtFiltersWithValue(filters, current.propertyName, current.operatorType, value, DATA_TABLE_EMPTY_MODE));
|
|
962
974
|
}
|
|
963
975
|
function dataTableFiltersWithOperator(filters, current, operatorType) {
|
|
964
|
-
|
|
965
|
-
...filter,
|
|
966
|
-
operatorType
|
|
967
|
-
} : filter);
|
|
968
|
-
return current.value ? [...filters, {
|
|
969
|
-
operatorType,
|
|
970
|
-
propertyName: current.propertyName,
|
|
971
|
-
value: current.value
|
|
972
|
-
}] : null;
|
|
976
|
+
return changedOrNull(filters, rtFiltersWithOperator(filters, current.propertyName, operatorType, current.value, DATA_TABLE_EMPTY_MODE));
|
|
973
977
|
}
|
|
974
978
|
function dataTableDayToIso(day) {
|
|
975
979
|
const [year, month, date] = day.split("-").map(Number);
|
|
@@ -1563,28 +1567,25 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
1563
1567
|
}]
|
|
1564
1568
|
});
|
|
1565
1569
|
function dataTableKeysOf(entities, keyExp) {
|
|
1566
|
-
return entities
|
|
1570
|
+
return rtKeysOf(entities, keyExp);
|
|
1567
1571
|
}
|
|
1568
1572
|
function dataTableWithPageEntities(selected, page, keyExp) {
|
|
1569
|
-
|
|
1570
|
-
return [...selected, ...page.filter((entity) => !keys.includes(entity[keyExp]))];
|
|
1573
|
+
return rtWithPageEntities(selected, page, keyExp);
|
|
1571
1574
|
}
|
|
1572
1575
|
function dataTableWithoutPageEntities(selected, page, keyExp) {
|
|
1573
|
-
|
|
1574
|
-
return selected.filter((entity) => !keys.includes(entity[keyExp]));
|
|
1576
|
+
return rtWithoutPageEntities(selected, page, keyExp);
|
|
1575
1577
|
}
|
|
1576
1578
|
function dataTableWithEntity(selected, entity, checked, keyExp) {
|
|
1577
|
-
|
|
1578
|
-
return checked ? [...without, entity] : without;
|
|
1579
|
+
return rtWithEntity(selected, entity, checked, keyExp);
|
|
1579
1580
|
}
|
|
1580
1581
|
function dataTableAnyOnPage(page, selectedKeys, keyExp) {
|
|
1581
|
-
return page
|
|
1582
|
+
return rtAnyOnPage(page, selectedKeys, keyExp);
|
|
1582
1583
|
}
|
|
1583
1584
|
function dataTableAllOnPage(page, selectedKeys, keyExp) {
|
|
1584
|
-
return page
|
|
1585
|
+
return rtAllOnPage(page, selectedKeys, keyExp);
|
|
1585
1586
|
}
|
|
1586
1587
|
function dataTablePresetEntities(entities, keys, keyExp) {
|
|
1587
|
-
return entities
|
|
1588
|
+
return rtPresetEntities(entities, keys, keyExp);
|
|
1588
1589
|
}
|
|
1589
1590
|
const BEM_BLOCK = "rt-data-table";
|
|
1590
1591
|
var RtDataTableComponent = class RtDataTableComponent {
|
|
@@ -2315,6 +2316,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2315
2316
|
}]
|
|
2316
2317
|
}
|
|
2317
2318
|
});
|
|
2318
|
-
export { DATA_TABLE_FILTER_MENU_OPERATORS, DATA_TABLE_FILTER_OPERATOR_GLYPHS, RT_DATA_TABLE_ROW_HOST, RT_DATA_TABLE_STOP_ROW_CLICK_ATTRIBUTE, RtDataTableAdditionalRowActionsDirective, RtDataTableCellComponent, RtDataTableComponent, RtDataTableConfigService, RtDataTableCustomCellsDirective, RtDataTableFilterCellComponent, RtDataTableHeaderCellComponent, RtDataTableIconDirective, RtDataTableRowActionsDirective, RtDataTableRowClickDirective, RtDataTableSelectorsDirective, RtDataTableStopRowClickDirective, comparePropNames, dataTableAllOnPage, dataTableAnyOnPage, dataTableAriaSort, dataTableCellText, dataTableCellValue, dataTableColumnFilter, dataTableCopyButtonSide, dataTableDayToIso, dataTableDefaultOperator, dataTableFiltersWithOperator, dataTableFiltersWithValue, dataTableIconName, dataTableIsoToDay, dataTableKeysOf, dataTableNextSortOrder, dataTablePresetEntities, dataTableSortActive, dataTableWithEntity, dataTableWithPageEntities, dataTableWithoutPageEntities };
|
|
2319
|
+
export { DATA_TABLE_FILTER_MENU_OPERATORS, DATA_TABLE_FILTER_OPERATOR_GLYPHS, RT_DATA_TABLE_ROW_HOST, RT_DATA_TABLE_STOP_ROW_CLICK_ATTRIBUTE, RtDataTableAdditionalRowActionsDirective, RtDataTableCellComponent, RtDataTableComponent, RtDataTableConfigService, RtDataTableCustomCellsDirective, RtDataTableFilterCellComponent, RtDataTableHeaderCellComponent, RtDataTableIconDirective, RtDataTableRowActionsDirective, RtDataTableRowClickDirective, RtDataTableSelectorsDirective, RtDataTableStopRowClickDirective, comparePropNames, dataTableAllOnPage, dataTableAnyOnPage, dataTableAriaSort, dataTableCellText, dataTableCellValue, dataTableColumnFilter, dataTableConfigKeyOf, dataTableCopyButtonSide, dataTableDayToIso, dataTableDefaultOperator, dataTableFiltersWithOperator, dataTableFiltersWithValue, dataTableIconName, dataTableIsoToDay, dataTableKeysOf, dataTableNextSortOrder, dataTablePresetEntities, dataTableSortActive, dataTableWithEntity, dataTableWithPageEntities, dataTableWithoutPageEntities };
|
|
2319
2320
|
|
|
2320
2321
|
//# sourceMappingURL=rt-tools-ui-kit-v2-data-table.mjs.map
|