@vc-shell/framework 1.0.293 → 1.0.295
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/CHANGELOG.md +21 -0
- package/core/composables/useLanguages/index.ts +26 -0
- package/core/composables/useMenuService/index.ts +1 -1
- package/core/composables/useSettings/index.ts +2 -3
- package/core/composables/useTheme/index.ts +2 -1
- package/core/composables/useUser/index.ts +4 -76
- package/core/constants/index.ts +1 -0
- package/core/constants/locale.ts +78 -0
- package/core/interceptors/index.ts +3 -0
- package/core/plugins/modularity/index.ts +106 -16
- package/dist/core/composables/useLanguages/index.d.ts +5 -0
- package/dist/core/composables/useLanguages/index.d.ts.map +1 -1
- package/dist/core/composables/useSettings/index.d.ts.map +1 -1
- package/dist/core/composables/useTheme/index.d.ts.map +1 -1
- package/dist/core/composables/useUser/index.d.ts +1 -3
- package/dist/core/composables/useUser/index.d.ts.map +1 -1
- package/dist/core/constants/index.d.ts +2 -0
- package/dist/core/constants/index.d.ts.map +1 -0
- package/dist/core/constants/locale.d.ts +7 -0
- package/dist/core/constants/locale.d.ts.map +1 -0
- package/dist/core/interceptors/index.d.ts.map +1 -1
- package/dist/core/plugins/modularity/index.d.ts.map +1 -1
- package/dist/framework.js +34165 -30178
- package/dist/index.css +1 -1
- package/dist/index.d.ts +9 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/locales/en.json +2 -1
- package/dist/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue.d.ts.map +1 -1
- package/dist/shared/components/index.d.ts +1 -0
- package/dist/shared/components/index.d.ts.map +1 -1
- package/dist/shared/components/language-selector/language-selector.vue.d.ts.map +1 -1
- package/dist/shared/components/sidebar/sidebar.vue.d.ts +1 -1
- package/dist/shared/components/sidebar/sidebar.vue.d.ts.map +1 -1
- package/dist/shared/components/sign-in/azuread.vue.d.ts +17 -0
- package/dist/shared/components/sign-in/azuread.vue.d.ts.map +1 -0
- package/dist/shared/components/sign-in/external-provider.vue.d.ts +23 -0
- package/dist/shared/components/sign-in/external-provider.vue.d.ts.map +1 -0
- package/dist/shared/components/sign-in/external-providers.vue.d.ts +16 -0
- package/dist/shared/components/sign-in/external-providers.vue.d.ts.map +1 -0
- package/dist/shared/components/sign-in/index.d.ts +2 -0
- package/dist/shared/components/sign-in/index.d.ts.map +1 -0
- package/dist/shared/components/sign-in/useExternalProvider.d.ts +12 -0
- package/dist/shared/components/sign-in/useExternalProvider.d.ts.map +1 -0
- package/dist/shared/components/theme-selector/theme-selector.vue.d.ts.map +1 -1
- package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/index.d.ts +13 -10
- package/dist/shared/modules/dynamic/index.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts +1 -0
- package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts.map +1 -1
- package/dist/shared/pages/LoginPage/components/login/Login.vue.d.ts.map +1 -1
- package/dist/tailwind.config.d.ts +1 -1
- package/dist/tailwind.config.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/ui/components/atoms/vc-image/index.d.ts +1 -68
- package/dist/ui/components/atoms/vc-image/index.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-image/vc-image.stories.d.ts +3 -3
- package/dist/ui/components/atoms/vc-image/vc-image.vue.d.ts +2 -2
- package/dist/ui/components/atoms/vc-image/vc-image.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts +2 -2
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts +30 -30
- package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +9 -6
- package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
- package/package.json +6 -6
- package/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue +1 -2
- package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +1 -1
- package/shared/components/index.ts +1 -0
- package/shared/components/language-selector/language-selector.vue +59 -6
- package/shared/components/sidebar/sidebar.vue +1 -1
- package/shared/components/sign-in/azuread.vue +24 -0
- package/shared/components/sign-in/external-provider.vue +38 -0
- package/shared/components/sign-in/external-providers.vue +39 -0
- package/shared/components/sign-in/index.ts +1 -0
- package/shared/components/sign-in/useExternalProvider.ts +102 -0
- package/shared/components/theme-selector/theme-selector.vue +7 -8
- package/shared/components/user-dropdown-button/user-dropdown-button.vue +5 -0
- package/shared/modules/dynamic/helpers/nodeBuilder.ts +2 -2
- package/shared/modules/dynamic/helpers/override.ts +1 -1
- package/shared/modules/dynamic/index.ts +166 -63
- package/shared/modules/dynamic/pages/dynamic-blade-form.vue +99 -20
- package/shared/modules/dynamic/pages/dynamic-blade-list.vue +1 -1
- package/shared/pages/LoginPage/components/login/Login.vue +8 -40
- package/tailwind.config.ts +6 -198
- package/ui/components/atoms/vc-image/index.ts +1 -3
- package/ui/components/atoms/vc-image/vc-image.vue +3 -2
- package/ui/components/atoms/vc-tooltip/vc-tooltip.vue +7 -2
- package/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue +1 -1
- package/ui/components/molecules/vc-input/vc-input.vue +38 -0
- package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +1 -1
- package/ui/components/molecules/vc-select/vc-select.vue +15 -5
- package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +1 -1
- package/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue +2 -24
- package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +12 -3
- package/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue +1 -1
- package/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue +2 -0
- package/ui/components/organisms/vc-table/vc-table.vue +124 -65
|
@@ -329,7 +329,7 @@
|
|
|
329
329
|
>
|
|
330
330
|
<VcTableCell
|
|
331
331
|
:item="item as TableItem"
|
|
332
|
-
:cell="cell"
|
|
332
|
+
:cell="cell as ITableColumns"
|
|
333
333
|
:index="itemIndex"
|
|
334
334
|
:editing="editing"
|
|
335
335
|
@update="$emit('onEditComplete', { event: $event, index: itemIndex })"
|
|
@@ -484,12 +484,18 @@ export interface TableItem {
|
|
|
484
484
|
actions?: IActionBuilderResult[];
|
|
485
485
|
}
|
|
486
486
|
|
|
487
|
+
export type TableColPartial = Partial<
|
|
488
|
+
ITableColumns & {
|
|
489
|
+
predefined?: boolean;
|
|
490
|
+
}
|
|
491
|
+
>;
|
|
492
|
+
|
|
487
493
|
defineSlots<{
|
|
488
494
|
header: (props: { header: VNode }) => any;
|
|
489
495
|
filters: (args: { closePanel: () => void }) => any;
|
|
490
496
|
"mobile-item": (args: { item: T }) => any;
|
|
491
497
|
[key: `header_${string}`]: (props: any) => any;
|
|
492
|
-
[key: `item_${string}`]: (args: { item: T; cell: ITableColumns; index: number }) => any;
|
|
498
|
+
[key: `item_${string}`]: (args: { item: T; cell: ITableColumns | TableColPartial; index: number }) => any;
|
|
493
499
|
notfound: (props: any) => any;
|
|
494
500
|
empty: (props: any) => any;
|
|
495
501
|
footer: (props: any) => any;
|
|
@@ -586,18 +592,15 @@ const itemActions: Ref<IActionBuilderResult[][]> = ref([]);
|
|
|
586
592
|
const disabledSelection: Ref<T[]> = ref([]);
|
|
587
593
|
const mobileSwipeItem = ref<string>();
|
|
588
594
|
const columnResizing = ref(false);
|
|
589
|
-
const resizeColumnElement = ref<
|
|
590
|
-
const nextColumn = ref<
|
|
595
|
+
const resizeColumnElement = ref<TableColPartial>();
|
|
596
|
+
const nextColumn = ref<TableColPartial>();
|
|
591
597
|
const lastResize = ref<number>();
|
|
592
598
|
const table = useCurrentElement();
|
|
593
599
|
const resizer = ref();
|
|
594
600
|
const isHeaderHover = ref(false);
|
|
595
601
|
const columnSwitcherActive = ref(false);
|
|
596
|
-
const state = useLocalStorage<
|
|
597
|
-
|
|
598
|
-
[],
|
|
599
|
-
);
|
|
600
|
-
const internalColumns: Ref<ITableColumns[]> = ref([]);
|
|
602
|
+
const state = useLocalStorage<TableColPartial[]>("VC_TABLE_STATE_" + props.stateKey.toUpperCase(), []);
|
|
603
|
+
const internalColumns: Ref<TableColPartial[]> = ref([]);
|
|
601
604
|
const draggedColumn = ref();
|
|
602
605
|
const draggedElement = ref<HTMLElement>();
|
|
603
606
|
const dropPosition = ref();
|
|
@@ -711,7 +714,7 @@ const headerComponent = () =>
|
|
|
711
714
|
: undefined,
|
|
712
715
|
);
|
|
713
716
|
|
|
714
|
-
const allColumns = ref([]) as Ref<
|
|
717
|
+
const allColumns = ref([]) as Ref<TableColPartial[]>;
|
|
715
718
|
|
|
716
719
|
const mobileTemplateRenderer = ({ item, index }: { item: TableItem | string; index: number }) => {
|
|
717
720
|
return h(
|
|
@@ -759,11 +762,12 @@ watch(
|
|
|
759
762
|
);
|
|
760
763
|
|
|
761
764
|
watch(
|
|
762
|
-
() => props.items,
|
|
763
|
-
(
|
|
765
|
+
[() => props.items, () => props.columns],
|
|
766
|
+
([newValItems, newValCols]) => {
|
|
764
767
|
let cols: ITableColumns[] = [];
|
|
765
|
-
|
|
766
|
-
|
|
768
|
+
let predefinedCols: ITableColumns[] = [];
|
|
769
|
+
if (newValItems && newValItems.length) {
|
|
770
|
+
cols = Object.keys(newValItems[0]).map((key) => {
|
|
767
771
|
return {
|
|
768
772
|
id: key,
|
|
769
773
|
// From camelCase to human readable with first letter capitalized
|
|
@@ -774,14 +778,18 @@ watch(
|
|
|
774
778
|
});
|
|
775
779
|
}
|
|
776
780
|
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
781
|
+
if (newValCols && newValCols.length) {
|
|
782
|
+
// Update internal columns based on predefined columns
|
|
783
|
+
predefinedCols = newValCols.map((item) => ({
|
|
784
|
+
...item,
|
|
785
|
+
predefined: true,
|
|
786
|
+
visible: typeof item.visible !== "undefined" ? item.visible : true,
|
|
787
|
+
}));
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
allColumns.value = _.unionBy(predefinedCols, cols, "id");
|
|
783
791
|
|
|
784
|
-
restoreState();
|
|
792
|
+
restoreState(predefinedCols);
|
|
785
793
|
columnsInit.value = false;
|
|
786
794
|
},
|
|
787
795
|
{ deep: true, immediate: true },
|
|
@@ -960,11 +968,13 @@ function handleSwipe(id: string) {
|
|
|
960
968
|
mobileSwipeItem.value = id;
|
|
961
969
|
}
|
|
962
970
|
|
|
963
|
-
function handleHeaderClick(item:
|
|
964
|
-
|
|
971
|
+
function handleHeaderClick(item: TableColPartial) {
|
|
972
|
+
const cleanCol = item;
|
|
973
|
+
delete cleanCol.predefined;
|
|
974
|
+
emit("headerClick", cleanCol as ITableColumns);
|
|
965
975
|
}
|
|
966
976
|
|
|
967
|
-
function handleMouseDown(e: MouseEvent, item:
|
|
977
|
+
function handleMouseDown(e: MouseEvent, item: TableColPartial) {
|
|
968
978
|
if (props.resizableColumns) {
|
|
969
979
|
const containerLeft = getOffset(table.value as HTMLElement).left;
|
|
970
980
|
resizeColumnElement.value = item;
|
|
@@ -1068,15 +1078,26 @@ function onColumnResizeEnd() {
|
|
|
1068
1078
|
}
|
|
1069
1079
|
|
|
1070
1080
|
function resizeTableCells(newColumnWidth: number, nextColumnWidth: number) {
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1081
|
+
const colIndex = internalColumns.value.findIndex((col) => col.id === resizeColumnElement.value?.id);
|
|
1082
|
+
const widths: number[] = [];
|
|
1083
|
+
const tableHeaders = (table.value as HTMLDivElement)?.querySelectorAll(
|
|
1084
|
+
".vc-table__header-cell",
|
|
1085
|
+
) as NodeListOf<HTMLElement>;
|
|
1086
|
+
tableHeaders.forEach((header) => widths.push(header.offsetWidth));
|
|
1087
|
+
|
|
1088
|
+
internalColumns.value.forEach((col, index) => {
|
|
1089
|
+
col.width = widths[index] + "px";
|
|
1090
|
+
});
|
|
1091
|
+
|
|
1092
|
+
widths.forEach((width, index) => {
|
|
1093
|
+
const colWidth =
|
|
1094
|
+
index === colIndex ? newColumnWidth : nextColumnWidth && index === colIndex + 1 ? nextColumnWidth : width;
|
|
1095
|
+
|
|
1096
|
+
internalColumns.value[index].width = colWidth + "px";
|
|
1097
|
+
});
|
|
1077
1098
|
}
|
|
1078
1099
|
|
|
1079
|
-
function onColumnHeaderDragStart(event: DragEvent, item:
|
|
1100
|
+
function onColumnHeaderDragStart(event: DragEvent, item: TableColPartial) {
|
|
1080
1101
|
if (columnResizing.value) {
|
|
1081
1102
|
event.preventDefault();
|
|
1082
1103
|
return;
|
|
@@ -1090,12 +1111,12 @@ function onColumnHeaderDragStart(event: DragEvent, item: ITableColumns) {
|
|
|
1090
1111
|
}
|
|
1091
1112
|
|
|
1092
1113
|
function findParentHeader(element: HTMLElement) {
|
|
1093
|
-
if (element.classList.contains("vc-table__header")) {
|
|
1114
|
+
if (element.classList.contains("vc-table__header-cell")) {
|
|
1094
1115
|
return element;
|
|
1095
1116
|
} else {
|
|
1096
1117
|
let parent = element.parentElement;
|
|
1097
1118
|
|
|
1098
|
-
while (parent && !parent.classList.contains("vc-table__header")) {
|
|
1119
|
+
while (parent && !parent.classList.contains("vc-table__header-cell")) {
|
|
1099
1120
|
parent = parent.parentElement;
|
|
1100
1121
|
if (!parent) break;
|
|
1101
1122
|
}
|
|
@@ -1141,7 +1162,7 @@ function onColumnHeaderDragLeave(event: DragEvent) {
|
|
|
1141
1162
|
}
|
|
1142
1163
|
}
|
|
1143
1164
|
|
|
1144
|
-
function onColumnHeaderDrop(event: DragEvent, item:
|
|
1165
|
+
function onColumnHeaderDrop(event: DragEvent, item: TableColPartial) {
|
|
1145
1166
|
event.preventDefault();
|
|
1146
1167
|
|
|
1147
1168
|
if (draggedColumn.value) {
|
|
@@ -1182,37 +1203,79 @@ function saveState() {
|
|
|
1182
1203
|
state.value = colsClone.map((col) => _.pick(col, "id", "visible", "width", "predefined"));
|
|
1183
1204
|
}
|
|
1184
1205
|
|
|
1185
|
-
function restoreState() {
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
if (
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
if (matchingColumn) {
|
|
1193
|
-
matchingColumn.width = item.width || matchingColumn.width;
|
|
1194
|
-
matchingColumn.visible = item.visible;
|
|
1195
|
-
// Remove the matched column from internalColumns
|
|
1196
|
-
internalColumns.value = internalColumns.value.filter((col) => col.id !== matchingColumn.id);
|
|
1197
|
-
}
|
|
1198
|
-
if (item.predefined && !props.columns.some((col) => col.id === item.id)) {
|
|
1199
|
-
_.remove(state.value, item);
|
|
1200
|
-
}
|
|
1201
|
-
}
|
|
1202
|
-
// Merge the updated columns with the remaining state columns
|
|
1203
|
-
internalColumns.value = state.value.map((stateItem) => {
|
|
1204
|
-
const id = stateItem.id;
|
|
1206
|
+
function restoreState(predefinedColumns: TableColPartial[] = []) {
|
|
1207
|
+
const storedState = state.value;
|
|
1208
|
+
|
|
1209
|
+
if (!storedState?.length) {
|
|
1210
|
+
internalColumns.value = allColumns.value;
|
|
1211
|
+
return;
|
|
1212
|
+
}
|
|
1205
1213
|
|
|
1206
|
-
|
|
1207
|
-
const allColumn = _.find(allColumns.value, { id });
|
|
1214
|
+
const predefinedMap = new Map(predefinedColumns.map((col) => [col.id, col]));
|
|
1208
1215
|
|
|
1209
|
-
|
|
1210
|
-
|
|
1216
|
+
const mergedColumns = storedState.map((storedCol) => {
|
|
1217
|
+
const predefinedCol = predefinedMap.get(storedCol.id);
|
|
1218
|
+
return mergeColumns(storedCol, predefinedCol);
|
|
1219
|
+
});
|
|
1220
|
+
|
|
1221
|
+
resetRemovedColumns(storedState, predefinedMap, mergedColumns);
|
|
1222
|
+
|
|
1223
|
+
setTitles(mergedColumns);
|
|
1224
|
+
|
|
1225
|
+
allColumns.value = [...mergedColumns];
|
|
1226
|
+
internalColumns.value = allColumns.value;
|
|
1227
|
+
|
|
1228
|
+
saveState();
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
function mergeColumns(storedCol: TableColPartial, predefinedCol: TableColPartial | undefined) {
|
|
1232
|
+
if (predefinedCol) {
|
|
1233
|
+
if (predefinedCol.predefined && !storedCol.predefined) {
|
|
1234
|
+
return { ...predefinedCol, predefined: true };
|
|
1235
|
+
} else {
|
|
1236
|
+
return {
|
|
1237
|
+
...predefinedCol,
|
|
1238
|
+
visible: storedCol.visible,
|
|
1239
|
+
width: storedCol.width,
|
|
1240
|
+
title: predefinedCol.title || storedCol.title || "",
|
|
1241
|
+
};
|
|
1242
|
+
}
|
|
1211
1243
|
} else {
|
|
1212
|
-
|
|
1244
|
+
return { ...storedCol, predefined: false };
|
|
1213
1245
|
}
|
|
1214
1246
|
}
|
|
1215
1247
|
|
|
1248
|
+
function resetRemovedColumns(
|
|
1249
|
+
storedState: TableColPartial[],
|
|
1250
|
+
predefinedMap: Map<string | undefined, TableColPartial>,
|
|
1251
|
+
mergedColumns: TableColPartial[],
|
|
1252
|
+
) {
|
|
1253
|
+
storedState.forEach((storedCol) => {
|
|
1254
|
+
if (storedCol.predefined && !predefinedMap.has(storedCol.id)) {
|
|
1255
|
+
const existingColumnIndex = mergedColumns.findIndex((col) => col.id === storedCol.id);
|
|
1256
|
+
if (existingColumnIndex !== -1) {
|
|
1257
|
+
mergedColumns[existingColumnIndex] = {
|
|
1258
|
+
...mergedColumns[existingColumnIndex],
|
|
1259
|
+
visible: false,
|
|
1260
|
+
width: undefined,
|
|
1261
|
+
predefined: false,
|
|
1262
|
+
};
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
});
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
function setTitles(mergedColumns: TableColPartial[]) {
|
|
1269
|
+
mergedColumns.forEach((col) => {
|
|
1270
|
+
if (!col.title) {
|
|
1271
|
+
const originalColumn = allColumns.value.find((c) => c.id === col.id);
|
|
1272
|
+
if (originalColumn) {
|
|
1273
|
+
col.title = originalColumn.title;
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
});
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1216
1279
|
function reorderArray(value: unknown[], from: number, to: number) {
|
|
1217
1280
|
if (value && from !== to) {
|
|
1218
1281
|
if (to >= value.length) {
|
|
@@ -1433,7 +1496,7 @@ $variants: (
|
|
|
1433
1496
|
&__mobile-view {
|
|
1434
1497
|
@apply tw-grow tw-basis-0 tw-relative;
|
|
1435
1498
|
.vc-container__inner {
|
|
1436
|
-
@apply tw-flex tw-flex-grow;
|
|
1499
|
+
@apply tw-flex tw-flex-grow tw-flex-col;
|
|
1437
1500
|
}
|
|
1438
1501
|
}
|
|
1439
1502
|
|
|
@@ -1449,12 +1512,8 @@ $variants: (
|
|
|
1449
1512
|
@apply tw-relative tw-box-border tw-w-full tw-h-full tw-flex tw-flex-col;
|
|
1450
1513
|
}
|
|
1451
1514
|
|
|
1452
|
-
&__header {
|
|
1453
|
-
@apply tw-flex tw-flex-col tw-sticky tw-top-0 tw-bg-[--table-header-bg] tw-z-[1] tw-box-border;
|
|
1454
|
-
}
|
|
1455
|
-
|
|
1456
1515
|
&__header-row {
|
|
1457
|
-
@apply tw-flex tw-flex-row;
|
|
1516
|
+
@apply tw-flex tw-flex-row [box-shadow:var(--table-header-border)];
|
|
1458
1517
|
}
|
|
1459
1518
|
|
|
1460
1519
|
&__header-checkbox {
|