@seniorsistemas/data-seniorx-core 2.2.0 → 2.3.0
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/core/types/table-options.type.d.ts +11 -0
- package/core/types/table.type.d.ts +2 -1
- package/esm2022/core/types/table-options.type.mjs +8 -2
- package/esm2022/core/types/table.type.mjs +2 -2
- package/esm2022/features/loading-state/loading-state.component.mjs +63 -6
- package/esm2022/features/table/components/table-actions-menu.component.mjs +151 -4
- package/esm2022/features/table/components/table-cell-content.component.mjs +6 -3
- package/esm2022/features/table/table.component.mjs +42 -5
- package/features/loading-state/loading-state.component.d.ts +2 -0
- package/features/table/components/table-actions-menu.component.d.ts +18 -4
- package/features/table/components/table-cell-content.component.d.ts +2 -1
- package/features/table/table.component.d.ts +6 -2
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs +381 -133
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -19,8 +19,6 @@ import * as i1$2 from '@angular/forms';
|
|
|
19
19
|
import { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule, NG_VALIDATORS } from '@angular/forms';
|
|
20
20
|
import * as i4 from '@seniorsistemas/angular-components/switch';
|
|
21
21
|
import { SwitchModule } from '@seniorsistemas/angular-components/switch';
|
|
22
|
-
import * as i2 from '@seniorsistemas/angular-components/common';
|
|
23
|
-
import { SVGFactoryModule } from '@seniorsistemas/angular-components/common';
|
|
24
22
|
import { autocompletion } from '@codemirror/autocomplete';
|
|
25
23
|
import { basicSetup } from 'codemirror';
|
|
26
24
|
import { html } from '@codemirror/lang-html';
|
|
@@ -33,7 +31,7 @@ import { trigger, state, style, transition, animate } from '@angular/animations'
|
|
|
33
31
|
import * as i1$3 from '@seniorsistemas/angular-components/panel';
|
|
34
32
|
import { PanelModule } from '@seniorsistemas/angular-components/panel';
|
|
35
33
|
import { EnumSeverity } from '@seniorsistemas/angular-components/shared';
|
|
36
|
-
import * as i2
|
|
34
|
+
import * as i2 from '@seniorsistemas/angular-components/template';
|
|
37
35
|
import * as i1$4 from '@angular/router';
|
|
38
36
|
import { NavigationEnd, PRIMARY_OUTLET, RouterModule, RouterOutlet } from '@angular/router';
|
|
39
37
|
import * as i3 from '@seniorsistemas/angular-components/product-header';
|
|
@@ -15895,127 +15893,6 @@ const DEFAULT_LOADING_STATE_UNBLOCK_DELAY_MS = 200;
|
|
|
15895
15893
|
const DEFAULT_LOADING_STATE_ID_PREFIX = 'sdc-loading-state';
|
|
15896
15894
|
const DEFAULT_LOADING_STATE_FULLSCREEN_Z_INDEX = 1005;
|
|
15897
15895
|
|
|
15898
|
-
class LoadingStateComponent {
|
|
15899
|
-
contents = null;
|
|
15900
|
-
indicator = 'dots';
|
|
15901
|
-
id = nextSequentialId(DEFAULT_LOADING_STATE_ID_PREFIX);
|
|
15902
|
-
blockWindow = false;
|
|
15903
|
-
blockDelayMs = DEFAULT_LOADING_STATE_BLOCK_DELAY_MS;
|
|
15904
|
-
unblockDelayMs = DEFAULT_LOADING_STATE_UNBLOCK_DELAY_MS;
|
|
15905
|
-
set loading(value) {
|
|
15906
|
-
const isLoading = Boolean(value);
|
|
15907
|
-
this._loading.set(isLoading);
|
|
15908
|
-
if (isLoading) {
|
|
15909
|
-
this.scheduleBlock();
|
|
15910
|
-
}
|
|
15911
|
-
else {
|
|
15912
|
-
this.scheduleUnblock();
|
|
15913
|
-
}
|
|
15914
|
-
}
|
|
15915
|
-
get loading() {
|
|
15916
|
-
return this._loading();
|
|
15917
|
-
}
|
|
15918
|
-
get blocking() {
|
|
15919
|
-
return this._blocking();
|
|
15920
|
-
}
|
|
15921
|
-
fullscreenZIndex = DEFAULT_LOADING_STATE_FULLSCREEN_Z_INDEX;
|
|
15922
|
-
_loading = signal(false);
|
|
15923
|
-
_blocking = signal(false);
|
|
15924
|
-
blockTimeoutId;
|
|
15925
|
-
unblockTimeoutId;
|
|
15926
|
-
ngOnDestroy() {
|
|
15927
|
-
if (this.blockTimeoutId) {
|
|
15928
|
-
clearTimeout(this.blockTimeoutId);
|
|
15929
|
-
}
|
|
15930
|
-
if (this.unblockTimeoutId) {
|
|
15931
|
-
clearTimeout(this.unblockTimeoutId);
|
|
15932
|
-
}
|
|
15933
|
-
}
|
|
15934
|
-
scheduleBlock() {
|
|
15935
|
-
if (this.unblockTimeoutId) {
|
|
15936
|
-
clearTimeout(this.unblockTimeoutId);
|
|
15937
|
-
this.unblockTimeoutId = undefined;
|
|
15938
|
-
}
|
|
15939
|
-
if (!this.blockTimeoutId) {
|
|
15940
|
-
this.blockTimeoutId = setTimeout(() => {
|
|
15941
|
-
this._blocking.set(true);
|
|
15942
|
-
this.blockTimeoutId = undefined;
|
|
15943
|
-
}, this.blockDelayMs);
|
|
15944
|
-
}
|
|
15945
|
-
}
|
|
15946
|
-
scheduleUnblock() {
|
|
15947
|
-
if (this.blockTimeoutId) {
|
|
15948
|
-
clearTimeout(this.blockTimeoutId);
|
|
15949
|
-
this.blockTimeoutId = undefined;
|
|
15950
|
-
}
|
|
15951
|
-
if (!this.unblockTimeoutId) {
|
|
15952
|
-
this.unblockTimeoutId = setTimeout(() => {
|
|
15953
|
-
this._blocking.set(false);
|
|
15954
|
-
this.unblockTimeoutId = undefined;
|
|
15955
|
-
}, this.unblockDelayMs);
|
|
15956
|
-
}
|
|
15957
|
-
}
|
|
15958
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15959
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LoadingStateComponent, isStandalone: true, selector: "sdc-loading-state", inputs: { indicator: "indicator", id: "id", blockWindow: "blockWindow", blockDelayMs: "blockDelayMs", unblockDelayMs: "unblockDelayMs", loading: "loading" }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"sdc-loading-state\"\n [ngClass]=\"{\n 'sdc-loading-state--loading': loading,\n 'sdc-loading-state--blocking': blocking,\n 'sdc-loading-state--fullscreen': blockWindow\n }\"\n>\n <div [id]=\"id + '-loader'\" class=\"sdc-loading-state__loader\">\n <div [id]=\"id + '-spinner'\" class=\"sdc-loading-state__spinner\">\n @switch (indicator) {\n @case ('logo') {\n <div class=\"sdc-loading-state__logo\" aria-hidden=\"true\">\n <span class=\"sdc-loading-state__logo-icon-scale\">\n <span class=\"sdc-loading-state__logo-icon\" *sSVGFactory=\"'senior'\"></span>\n </span>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @case ('spinner') {\n <div class=\"sdc-loading-state__spinner-indicator\" aria-hidden=\"true\"></div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @default {\n <div class=\"sdc-loading-state__dots\" aria-hidden=\"true\">\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--1\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--2\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--3\"></div>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n }\n </div>\n <div [id]=\"id + '-overlay'\" class=\"sdc-loading-state__overlay\"></div>\n </div>\n\n <div [id]=\"id + '-contents'\" class=\"sdc-loading-state__contents\">\n <ng-container *ngTemplateOutlet=\"contents || originalContent\"></ng-container>\n <ng-template #originalContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", styles: [".sdc-loading-state{position:relative;overflow:visible;border-radius:inherit;box-sizing:border-box;isolation:isolate}.sdc-loading-state .sdc-loading-state__loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease-out,visibility .2s ease-out;z-index:2;pointer-events:none;overflow:visible}.sdc-loading-state .sdc-loading-state__overlay{position:absolute;inset:0;width:100%;height:100%;background-color:var(--sdc-loading-overlay-bg, #ffffff);opacity:var(--sdc-loading-overlay-opacity, .8);transition:opacity .2s ease-out;border-radius:inherit;box-sizing:border-box;z-index:0}.sdc-loading-state .sdc-loading-state__spinner{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;overflow:visible;padding:var(--sdc-loading-indicator-safe-space, 40px);box-sizing:border-box}.sdc-loading-state .sdc-loading-state__contents{position:relative;z-index:0;width:100%;box-sizing:border-box;border-radius:inherit;overflow:visible}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__loader,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__loader{visibility:visible;cursor:wait;pointer-events:auto}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__contents,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__contents{position:relative;z-index:0!important}.sdc-loading-state.sdc-loading-state--blocking.sdc-loading-state--loading>.sdc-loading-state__loader{opacity:1}.sdc-loading-state.sdc-loading-state--fullscreen>.sdc-loading-state__loader{position:fixed;inset:0;z-index:var(--sdc-loading-fullscreen-z-index, 1005)}.sdc-loading-state .sdc-loading-state__spinner-indicator{width:var(--sdc-loading-spinner-size, 32px);height:var(--sdc-loading-spinner-size, 32px);border-radius:999px;border-width:var(--sdc-loading-spinner-stroke, 3px);border-style:solid;border-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));border-right-color:transparent;animation:sdc-spin .8s linear infinite}.sdc-loading-state .sdc-loading-state__logo{width:var(--sdc-loading-logo-size, 64px);height:var(--sdc-loading-logo-size, 64px);border-radius:50%;background-color:var(--sdc-loading-logo-bg, #00c89a);box-shadow:0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843));display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;animation:sdc-pulsar 1s infinite,sdc-scale 1s infinite;transform-origin:center}.sdc-loading-state .sdc-loading-state__logo-icon-scale{display:inline-flex;align-items:center;justify-content:center;transform:scale(var(--sdc-loading-logo-svg-scale, .4));transform-origin:center;line-height:0}.sdc-loading-state .sdc-loading-state__logo-icon{display:inline-flex;align-items:center;justify-content:center;line-height:0}.sdc-loading-state .sdc-loading-state__dots{display:inline-flex;align-items:center}.sdc-loading-state .sdc-loading-state__dot{width:var(--sdc-loading-dot-size, 10px);height:var(--sdc-loading-dot-size, 10px);border-radius:999px;background-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));display:inline-block;animation:sdc-bounce 1.2s infinite ease-out}.sdc-loading-state .sdc-loading-state__dot+.sdc-loading-state__dot{margin-left:var(--sdc-loading-dot-gap, 15px)}.sdc-loading-state .sdc-loading-state__dot--1{animation-delay:0ms}.sdc-loading-state .sdc-loading-state__dot--2{animation-delay:.1s}.sdc-loading-state .sdc-loading-state__dot--3{animation-delay:.2s}:host ::ng-deep .sdc-loading-state__logo-icon-scale>*{display:inline-flex;align-items:center;justify-content:center}:host ::ng-deep .sdc-loading-state__logo-icon-scale svg{display:block}@keyframes sdc-spin{to{transform:rotate(360deg)}}@keyframes sdc-bounce{80%{transform:scale(1)}90%{transform:scale(1.8)}to{transform:scale(1)}}@keyframes sdc-pulsar{0%{box-shadow:0 0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843))}70%{box-shadow:0 0 0 40px #00c89a00}to{box-shadow:0 0 #00c89a00}}@keyframes sdc-scale{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: SVGFactoryModule }, { kind: "directive", type: i2.SVGFactoryDirective, selector: "[sSVGFactory]", inputs: ["sSVGFactory"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15960
|
-
}
|
|
15961
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateComponent, decorators: [{
|
|
15962
|
-
type: Component,
|
|
15963
|
-
args: [{ selector: 'sdc-loading-state', standalone: true, imports: [CommonModule, SVGFactoryModule, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div\n [id]=\"id\"\n class=\"sdc-loading-state\"\n [ngClass]=\"{\n 'sdc-loading-state--loading': loading,\n 'sdc-loading-state--blocking': blocking,\n 'sdc-loading-state--fullscreen': blockWindow\n }\"\n>\n <div [id]=\"id + '-loader'\" class=\"sdc-loading-state__loader\">\n <div [id]=\"id + '-spinner'\" class=\"sdc-loading-state__spinner\">\n @switch (indicator) {\n @case ('logo') {\n <div class=\"sdc-loading-state__logo\" aria-hidden=\"true\">\n <span class=\"sdc-loading-state__logo-icon-scale\">\n <span class=\"sdc-loading-state__logo-icon\" *sSVGFactory=\"'senior'\"></span>\n </span>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @case ('spinner') {\n <div class=\"sdc-loading-state__spinner-indicator\" aria-hidden=\"true\"></div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @default {\n <div class=\"sdc-loading-state__dots\" aria-hidden=\"true\">\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--1\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--2\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--3\"></div>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n }\n </div>\n <div [id]=\"id + '-overlay'\" class=\"sdc-loading-state__overlay\"></div>\n </div>\n\n <div [id]=\"id + '-contents'\" class=\"sdc-loading-state__contents\">\n <ng-container *ngTemplateOutlet=\"contents || originalContent\"></ng-container>\n <ng-template #originalContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", styles: [".sdc-loading-state{position:relative;overflow:visible;border-radius:inherit;box-sizing:border-box;isolation:isolate}.sdc-loading-state .sdc-loading-state__loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease-out,visibility .2s ease-out;z-index:2;pointer-events:none;overflow:visible}.sdc-loading-state .sdc-loading-state__overlay{position:absolute;inset:0;width:100%;height:100%;background-color:var(--sdc-loading-overlay-bg, #ffffff);opacity:var(--sdc-loading-overlay-opacity, .8);transition:opacity .2s ease-out;border-radius:inherit;box-sizing:border-box;z-index:0}.sdc-loading-state .sdc-loading-state__spinner{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;overflow:visible;padding:var(--sdc-loading-indicator-safe-space, 40px);box-sizing:border-box}.sdc-loading-state .sdc-loading-state__contents{position:relative;z-index:0;width:100%;box-sizing:border-box;border-radius:inherit;overflow:visible}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__loader,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__loader{visibility:visible;cursor:wait;pointer-events:auto}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__contents,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__contents{position:relative;z-index:0!important}.sdc-loading-state.sdc-loading-state--blocking.sdc-loading-state--loading>.sdc-loading-state__loader{opacity:1}.sdc-loading-state.sdc-loading-state--fullscreen>.sdc-loading-state__loader{position:fixed;inset:0;z-index:var(--sdc-loading-fullscreen-z-index, 1005)}.sdc-loading-state .sdc-loading-state__spinner-indicator{width:var(--sdc-loading-spinner-size, 32px);height:var(--sdc-loading-spinner-size, 32px);border-radius:999px;border-width:var(--sdc-loading-spinner-stroke, 3px);border-style:solid;border-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));border-right-color:transparent;animation:sdc-spin .8s linear infinite}.sdc-loading-state .sdc-loading-state__logo{width:var(--sdc-loading-logo-size, 64px);height:var(--sdc-loading-logo-size, 64px);border-radius:50%;background-color:var(--sdc-loading-logo-bg, #00c89a);box-shadow:0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843));display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;animation:sdc-pulsar 1s infinite,sdc-scale 1s infinite;transform-origin:center}.sdc-loading-state .sdc-loading-state__logo-icon-scale{display:inline-flex;align-items:center;justify-content:center;transform:scale(var(--sdc-loading-logo-svg-scale, .4));transform-origin:center;line-height:0}.sdc-loading-state .sdc-loading-state__logo-icon{display:inline-flex;align-items:center;justify-content:center;line-height:0}.sdc-loading-state .sdc-loading-state__dots{display:inline-flex;align-items:center}.sdc-loading-state .sdc-loading-state__dot{width:var(--sdc-loading-dot-size, 10px);height:var(--sdc-loading-dot-size, 10px);border-radius:999px;background-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));display:inline-block;animation:sdc-bounce 1.2s infinite ease-out}.sdc-loading-state .sdc-loading-state__dot+.sdc-loading-state__dot{margin-left:var(--sdc-loading-dot-gap, 15px)}.sdc-loading-state .sdc-loading-state__dot--1{animation-delay:0ms}.sdc-loading-state .sdc-loading-state__dot--2{animation-delay:.1s}.sdc-loading-state .sdc-loading-state__dot--3{animation-delay:.2s}:host ::ng-deep .sdc-loading-state__logo-icon-scale>*{display:inline-flex;align-items:center;justify-content:center}:host ::ng-deep .sdc-loading-state__logo-icon-scale svg{display:block}@keyframes sdc-spin{to{transform:rotate(360deg)}}@keyframes sdc-bounce{80%{transform:scale(1)}90%{transform:scale(1.8)}to{transform:scale(1)}}@keyframes sdc-pulsar{0%{box-shadow:0 0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843))}70%{box-shadow:0 0 0 40px #00c89a00}to{box-shadow:0 0 #00c89a00}}@keyframes sdc-scale{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}\n"] }]
|
|
15964
|
-
}], propDecorators: { indicator: [{
|
|
15965
|
-
type: Input
|
|
15966
|
-
}], id: [{
|
|
15967
|
-
type: Input
|
|
15968
|
-
}], blockWindow: [{
|
|
15969
|
-
type: Input
|
|
15970
|
-
}], blockDelayMs: [{
|
|
15971
|
-
type: Input
|
|
15972
|
-
}], unblockDelayMs: [{
|
|
15973
|
-
type: Input
|
|
15974
|
-
}], loading: [{
|
|
15975
|
-
type: Input,
|
|
15976
|
-
args: [{ required: true }]
|
|
15977
|
-
}] } });
|
|
15978
|
-
|
|
15979
|
-
const PAGINATOR_FIRST_PAGE_INDEX = 0;
|
|
15980
|
-
const PAGINATOR_MIN_ROWS = 1;
|
|
15981
|
-
const PAGINATOR_MOBILE_WINDOW_SIZE = 3;
|
|
15982
|
-
const PAGINATOR_DESKTOP_WINDOW_SIZE = 7;
|
|
15983
|
-
const PAGINATOR_DEFAULT_ROWS_OPTIONS = [10, 20, 50];
|
|
15984
|
-
const PAGINATOR_DEFAULT_SHOW_ROWS_PER_PAGE_SELECTOR = false;
|
|
15985
|
-
const PAGINATOR_DEFAULT_IS_MOBILE = false;
|
|
15986
|
-
const PAGINATOR_DEFAULT_TOTAL_RECORDS_LABEL = '';
|
|
15987
|
-
const PAGINATOR_TOTAL_RECORDS_LABEL = 'platform.datacore.total_records';
|
|
15988
|
-
const PAGINATOR_RECORD_FOUND_LABEL = 'platform.datacore.record_found';
|
|
15989
|
-
const PAGINATOR_RECORDS_FOUND_LABEL = 'platform.datacore.records_found';
|
|
15990
|
-
|
|
15991
|
-
const COMBOBOX_DEFAULT_Z_INDEX = 9999;
|
|
15992
|
-
const COMBOBOX_DEFAULT_MAX_SELECTED_LABELS = 1;
|
|
15993
|
-
const COMBOBOX_DEFAULT_PANEL_MAX_HEIGHT = 280;
|
|
15994
|
-
const COMBOBOX_ICON_SELECTOR_BUFFER_SIZE = 6;
|
|
15995
|
-
const COMBOBOX_ICON_SELECTOR_DEFAULT_ROW_HEIGHT = 52;
|
|
15996
|
-
const COMBOBOX_ICON_SELECTOR_ROW_HEIGHT_WITH_CLASS = 64;
|
|
15997
|
-
const COMBOBOX_ICON_SELECTOR_VIEWPORT_FALLBACK_HEIGHT = 216;
|
|
15998
|
-
const COMBOBOX_SELECTED_ITEMS_LABEL_KEY = 'platform.datacore.accessibility.items_selected';
|
|
15999
|
-
const COMBOBOX_CLEAR_FIELD_LABEL_KEY = 'platform.datacore.accessibility.clear_field';
|
|
16000
|
-
const COMBOBOX_EMPTY_TITLE_KEY = 'platform.datacore.no_results';
|
|
16001
|
-
const COMBOBOX_EMPTY_TEXT_KEY = 'platform.datacore.try_other_filters';
|
|
16002
|
-
const COMBOBOX_REMOVE_CHIP_LABEL_KEY = 'platform.datacore.accessibility.remove_selected_item';
|
|
16003
|
-
|
|
16004
|
-
class IconSelectorDataService {
|
|
16005
|
-
fontAwesomeSolidIconsPromise;
|
|
16006
|
-
loadFontAwesomeV5SolidIcons() {
|
|
16007
|
-
this.fontAwesomeSolidIconsPromise ??= import('./seniorsistemas-data-seniorx-core-fontawesome-v5-solid-icons.data-B7opbaVg.mjs')
|
|
16008
|
-
.then((module) => module.FONTAWESOME_V5_SOLID_ICONS);
|
|
16009
|
-
return this.fontAwesomeSolidIconsPromise;
|
|
16010
|
-
}
|
|
16011
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IconSelectorDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16012
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IconSelectorDataService, providedIn: 'root' });
|
|
16013
|
-
}
|
|
16014
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IconSelectorDataService, decorators: [{
|
|
16015
|
-
type: Injectable,
|
|
16016
|
-
args: [{ providedIn: 'root' }]
|
|
16017
|
-
}] });
|
|
16018
|
-
|
|
16019
15896
|
class IconRendererComponent {
|
|
16020
15897
|
static SAFE_REFERENCE_PROTOCOLS = new Set(['http', 'https', 'mailto', 'tel']);
|
|
16021
15898
|
renderer = inject(Renderer2);
|
|
@@ -16199,6 +16076,185 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
16199
16076
|
args: ['svgHost']
|
|
16200
16077
|
}] } });
|
|
16201
16078
|
|
|
16079
|
+
class LoadingStateComponent {
|
|
16080
|
+
static LOGO_SVG = `
|
|
16081
|
+
<svg
|
|
16082
|
+
viewBox="0 0 348 613"
|
|
16083
|
+
fill="none"
|
|
16084
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
16085
|
+
>
|
|
16086
|
+
<g filter="url(#sdcLoadingLogoShadow)">
|
|
16087
|
+
<path
|
|
16088
|
+
d="M174.719 518.932L258.161 439.782C264.546 433.762 269.614 426.603 273.072 418.719C276.53 410.834 278.31 402.378 278.31 393.838C278.31 385.298 276.53 376.843 273.072 368.958C269.614 361.073 264.546 353.915 258.161 347.895L174.719 269.199C168.45 263.304 163.474 256.289 160.077 248.56C156.681 240.83 154.933 232.539 154.933 224.165C154.933 215.792 156.681 207.501 160.077 199.771C163.474 192.042 168.45 185.027 174.719 179.132L303.718 301.496C329.517 326.089 344 359.371 344 394.066C344 428.76 329.517 462.043 303.718 486.635L174.719 609C168.45 603.105 163.474 596.09 160.077 588.36C156.681 580.631 154.933 572.34 154.933 563.966C154.933 555.592 156.681 547.301 160.077 539.572C163.474 531.842 168.45 524.828 174.719 518.932ZM173.76 94.0677L90.3189 173.218C83.9334 179.238 78.8659 186.397 75.408 194.281C71.95 202.166 70.1698 210.622 70.1698 219.162C70.1698 227.702 71.95 236.157 75.408 244.042C78.8659 251.927 83.9334 259.085 90.3189 265.105L173.76 344.256C180.03 350.151 185.006 357.166 188.402 364.895C191.798 372.625 193.547 380.916 193.547 389.289C193.547 397.663 191.798 405.954 188.402 413.684C185.006 421.413 180.03 428.428 173.76 434.323L44.2823 311.504C18.4832 286.911 4 253.629 4 218.934C4 184.24 18.4832 150.957 44.2823 126.365L173.76 4C186.213 16.0129 193.192 32.1861 193.192 49.0338C193.192 65.8815 186.213 82.0547 173.76 94.0677Z"
|
|
16089
|
+
fill="white"
|
|
16090
|
+
/>
|
|
16091
|
+
</g>
|
|
16092
|
+
<defs>
|
|
16093
|
+
<filter
|
|
16094
|
+
id="sdcLoadingLogoShadow"
|
|
16095
|
+
x="0"
|
|
16096
|
+
y="0"
|
|
16097
|
+
width="348"
|
|
16098
|
+
height="613"
|
|
16099
|
+
filterUnits="userSpaceOnUse"
|
|
16100
|
+
color-interpolation-filters="sRGB"
|
|
16101
|
+
>
|
|
16102
|
+
<feFlood
|
|
16103
|
+
flood-opacity="0"
|
|
16104
|
+
result="BackgroundImageFix"
|
|
16105
|
+
/>
|
|
16106
|
+
<feColorMatrix
|
|
16107
|
+
in="SourceAlpha"
|
|
16108
|
+
type="matrix"
|
|
16109
|
+
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
|
16110
|
+
result="hardAlpha"
|
|
16111
|
+
/>
|
|
16112
|
+
<feOffset />
|
|
16113
|
+
<feGaussianBlur stdDeviation="2" />
|
|
16114
|
+
<feComposite
|
|
16115
|
+
in2="hardAlpha"
|
|
16116
|
+
operator="out"
|
|
16117
|
+
/>
|
|
16118
|
+
<feColorMatrix
|
|
16119
|
+
type="matrix"
|
|
16120
|
+
values="0 0 0 0 0.418936 0 0 0 0 1 0 0 0 0 0.930272 0 0 0 0.35 0"
|
|
16121
|
+
/>
|
|
16122
|
+
<feBlend
|
|
16123
|
+
mode="normal"
|
|
16124
|
+
in2="BackgroundImageFix"
|
|
16125
|
+
result="effect1_dropShadow"
|
|
16126
|
+
/>
|
|
16127
|
+
<feBlend
|
|
16128
|
+
mode="normal"
|
|
16129
|
+
in="SourceGraphic"
|
|
16130
|
+
in2="effect1_dropShadow"
|
|
16131
|
+
result="shape"
|
|
16132
|
+
/>
|
|
16133
|
+
</filter>
|
|
16134
|
+
</defs>
|
|
16135
|
+
</svg>
|
|
16136
|
+
`.trim();
|
|
16137
|
+
contents = null;
|
|
16138
|
+
indicator = 'dots';
|
|
16139
|
+
id = nextSequentialId(DEFAULT_LOADING_STATE_ID_PREFIX);
|
|
16140
|
+
blockWindow = false;
|
|
16141
|
+
blockDelayMs = DEFAULT_LOADING_STATE_BLOCK_DELAY_MS;
|
|
16142
|
+
unblockDelayMs = DEFAULT_LOADING_STATE_UNBLOCK_DELAY_MS;
|
|
16143
|
+
set loading(value) {
|
|
16144
|
+
const isLoading = Boolean(value);
|
|
16145
|
+
this._loading.set(isLoading);
|
|
16146
|
+
if (isLoading) {
|
|
16147
|
+
this.scheduleBlock();
|
|
16148
|
+
}
|
|
16149
|
+
else {
|
|
16150
|
+
this.scheduleUnblock();
|
|
16151
|
+
}
|
|
16152
|
+
}
|
|
16153
|
+
get loading() {
|
|
16154
|
+
return this._loading();
|
|
16155
|
+
}
|
|
16156
|
+
get blocking() {
|
|
16157
|
+
return this._blocking();
|
|
16158
|
+
}
|
|
16159
|
+
fullscreenZIndex = DEFAULT_LOADING_STATE_FULLSCREEN_Z_INDEX;
|
|
16160
|
+
logoSvg = LoadingStateComponent.LOGO_SVG;
|
|
16161
|
+
_loading = signal(false);
|
|
16162
|
+
_blocking = signal(false);
|
|
16163
|
+
blockTimeoutId;
|
|
16164
|
+
unblockTimeoutId;
|
|
16165
|
+
ngOnDestroy() {
|
|
16166
|
+
if (this.blockTimeoutId) {
|
|
16167
|
+
clearTimeout(this.blockTimeoutId);
|
|
16168
|
+
}
|
|
16169
|
+
if (this.unblockTimeoutId) {
|
|
16170
|
+
clearTimeout(this.unblockTimeoutId);
|
|
16171
|
+
}
|
|
16172
|
+
}
|
|
16173
|
+
scheduleBlock() {
|
|
16174
|
+
if (this.unblockTimeoutId) {
|
|
16175
|
+
clearTimeout(this.unblockTimeoutId);
|
|
16176
|
+
this.unblockTimeoutId = undefined;
|
|
16177
|
+
}
|
|
16178
|
+
if (!this.blockTimeoutId) {
|
|
16179
|
+
this.blockTimeoutId = setTimeout(() => {
|
|
16180
|
+
this._blocking.set(true);
|
|
16181
|
+
this.blockTimeoutId = undefined;
|
|
16182
|
+
}, this.blockDelayMs);
|
|
16183
|
+
}
|
|
16184
|
+
}
|
|
16185
|
+
scheduleUnblock() {
|
|
16186
|
+
if (this.blockTimeoutId) {
|
|
16187
|
+
clearTimeout(this.blockTimeoutId);
|
|
16188
|
+
this.blockTimeoutId = undefined;
|
|
16189
|
+
}
|
|
16190
|
+
if (!this.unblockTimeoutId) {
|
|
16191
|
+
this.unblockTimeoutId = setTimeout(() => {
|
|
16192
|
+
this._blocking.set(false);
|
|
16193
|
+
this.unblockTimeoutId = undefined;
|
|
16194
|
+
}, this.unblockDelayMs);
|
|
16195
|
+
}
|
|
16196
|
+
}
|
|
16197
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16198
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LoadingStateComponent, isStandalone: true, selector: "sdc-loading-state", inputs: { indicator: "indicator", id: "id", blockWindow: "blockWindow", blockDelayMs: "blockDelayMs", unblockDelayMs: "unblockDelayMs", loading: "loading" }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"sdc-loading-state\"\n [ngClass]=\"{\n 'sdc-loading-state--loading': loading,\n 'sdc-loading-state--blocking': blocking,\n 'sdc-loading-state--fullscreen': blockWindow\n }\"\n>\n <div [id]=\"id + '-loader'\" class=\"sdc-loading-state__loader\">\n <div [id]=\"id + '-spinner'\" class=\"sdc-loading-state__spinner\">\n @switch (indicator) {\n @case ('logo') {\n <div class=\"sdc-loading-state__logo\" aria-hidden=\"true\">\n <span class=\"sdc-loading-state__logo-icon-wrap\">\n <sdc-icon-renderer\n class=\"sdc-loading-state__logo-icon\"\n [icon]=\"logoSvg\"\n iconType=\"svg\"\n ></sdc-icon-renderer>\n </span>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @case ('spinner') {\n <div class=\"sdc-loading-state__spinner-indicator\" aria-hidden=\"true\"></div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @default {\n <div class=\"sdc-loading-state__dots\" aria-hidden=\"true\">\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--1\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--2\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--3\"></div>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n }\n </div>\n <div [id]=\"id + '-overlay'\" class=\"sdc-loading-state__overlay\"></div>\n </div>\n\n <div [id]=\"id + '-contents'\" class=\"sdc-loading-state__contents\">\n <ng-container *ngTemplateOutlet=\"contents || originalContent\"></ng-container>\n <ng-template #originalContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", styles: [".sdc-loading-state{position:relative;overflow:visible;border-radius:inherit;box-sizing:border-box;isolation:isolate}.sdc-loading-state .sdc-loading-state__loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease-out,visibility .2s ease-out;z-index:2;pointer-events:none;overflow:visible}.sdc-loading-state .sdc-loading-state__overlay{position:absolute;inset:0;width:100%;height:100%;background-color:var(--sdc-loading-overlay-bg, #ffffff);opacity:var(--sdc-loading-overlay-opacity, .8);transition:opacity .2s ease-out;border-radius:inherit;box-sizing:border-box;z-index:0}.sdc-loading-state .sdc-loading-state__spinner{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;overflow:visible;padding:var(--sdc-loading-indicator-safe-space, 40px);box-sizing:border-box}.sdc-loading-state .sdc-loading-state__contents{position:relative;z-index:0;width:100%;box-sizing:border-box;border-radius:inherit;overflow:visible}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__loader,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__loader{visibility:visible;cursor:wait;pointer-events:auto}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__contents,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__contents{position:relative;z-index:0!important}.sdc-loading-state.sdc-loading-state--blocking.sdc-loading-state--loading>.sdc-loading-state__loader{opacity:1}.sdc-loading-state.sdc-loading-state--fullscreen>.sdc-loading-state__loader{position:fixed;inset:0;z-index:var(--sdc-loading-fullscreen-z-index, 1005)}.sdc-loading-state .sdc-loading-state__spinner-indicator{width:var(--sdc-loading-spinner-size, 32px);height:var(--sdc-loading-spinner-size, 32px);border-radius:999px;border-width:var(--sdc-loading-spinner-stroke, 3px);border-style:solid;border-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));border-right-color:transparent;animation:sdc-spin .8s linear infinite}.sdc-loading-state .sdc-loading-state__logo{width:var(--sdc-loading-logo-size, 64px);height:var(--sdc-loading-logo-size, 64px);border-radius:50%;background-color:var(--sdc-loading-logo-bg, #00c89a);box-shadow:0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843));display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;animation:sdc-pulsar 1s infinite,sdc-scale 1s infinite;transform-origin:center}.sdc-loading-state .sdc-loading-state__logo-icon-wrap{display:inline-flex;align-items:center;justify-content:center;width:calc(var(--sdc-loading-logo-size, 64px) * .68);height:calc(var(--sdc-loading-logo-size, 64px) * .68);line-height:0}.sdc-loading-state .sdc-loading-state__logo-icon{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;line-height:0}.sdc-loading-state .sdc-loading-state__dots{display:inline-flex;align-items:center}.sdc-loading-state .sdc-loading-state__dot{width:var(--sdc-loading-dot-size, 10px);height:var(--sdc-loading-dot-size, 10px);border-radius:999px;background-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));display:inline-block;animation:sdc-bounce 1.2s infinite ease-out}.sdc-loading-state .sdc-loading-state__dot+.sdc-loading-state__dot{margin-left:var(--sdc-loading-dot-gap, 15px)}.sdc-loading-state .sdc-loading-state__dot--1{animation-delay:0ms}.sdc-loading-state .sdc-loading-state__dot--2{animation-delay:.1s}.sdc-loading-state .sdc-loading-state__dot--3{animation-delay:.2s}:host ::ng-deep .sdc-loading-state__logo-icon>*{display:inline-flex;align-items:center;justify-content:center}:host ::ng-deep .sdc-loading-state__logo-icon .sdc-icon-renderer--svg{width:100%!important;height:100%!important}:host ::ng-deep .sdc-loading-state__logo-icon svg{display:block;width:100%;height:100%}@keyframes sdc-spin{to{transform:rotate(360deg)}}@keyframes sdc-bounce{80%{transform:scale(1)}90%{transform:scale(1.8)}to{transform:scale(1)}}@keyframes sdc-pulsar{0%{box-shadow:0 0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843))}70%{box-shadow:0 0 0 40px #00c89a00}to{box-shadow:0 0 #00c89a00}}@keyframes sdc-scale{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconRendererComponent, selector: "sdc-icon-renderer", inputs: ["icon", "iconType", "size"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16199
|
+
}
|
|
16200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateComponent, decorators: [{
|
|
16201
|
+
type: Component,
|
|
16202
|
+
args: [{ selector: 'sdc-loading-state', standalone: true, imports: [CommonModule, IconRendererComponent, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div\n [id]=\"id\"\n class=\"sdc-loading-state\"\n [ngClass]=\"{\n 'sdc-loading-state--loading': loading,\n 'sdc-loading-state--blocking': blocking,\n 'sdc-loading-state--fullscreen': blockWindow\n }\"\n>\n <div [id]=\"id + '-loader'\" class=\"sdc-loading-state__loader\">\n <div [id]=\"id + '-spinner'\" class=\"sdc-loading-state__spinner\">\n @switch (indicator) {\n @case ('logo') {\n <div class=\"sdc-loading-state__logo\" aria-hidden=\"true\">\n <span class=\"sdc-loading-state__logo-icon-wrap\">\n <sdc-icon-renderer\n class=\"sdc-loading-state__logo-icon\"\n [icon]=\"logoSvg\"\n iconType=\"svg\"\n ></sdc-icon-renderer>\n </span>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @case ('spinner') {\n <div class=\"sdc-loading-state__spinner-indicator\" aria-hidden=\"true\"></div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @default {\n <div class=\"sdc-loading-state__dots\" aria-hidden=\"true\">\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--1\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--2\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--3\"></div>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n }\n </div>\n <div [id]=\"id + '-overlay'\" class=\"sdc-loading-state__overlay\"></div>\n </div>\n\n <div [id]=\"id + '-contents'\" class=\"sdc-loading-state__contents\">\n <ng-container *ngTemplateOutlet=\"contents || originalContent\"></ng-container>\n <ng-template #originalContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", styles: [".sdc-loading-state{position:relative;overflow:visible;border-radius:inherit;box-sizing:border-box;isolation:isolate}.sdc-loading-state .sdc-loading-state__loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease-out,visibility .2s ease-out;z-index:2;pointer-events:none;overflow:visible}.sdc-loading-state .sdc-loading-state__overlay{position:absolute;inset:0;width:100%;height:100%;background-color:var(--sdc-loading-overlay-bg, #ffffff);opacity:var(--sdc-loading-overlay-opacity, .8);transition:opacity .2s ease-out;border-radius:inherit;box-sizing:border-box;z-index:0}.sdc-loading-state .sdc-loading-state__spinner{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;overflow:visible;padding:var(--sdc-loading-indicator-safe-space, 40px);box-sizing:border-box}.sdc-loading-state .sdc-loading-state__contents{position:relative;z-index:0;width:100%;box-sizing:border-box;border-radius:inherit;overflow:visible}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__loader,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__loader{visibility:visible;cursor:wait;pointer-events:auto}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__contents,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__contents{position:relative;z-index:0!important}.sdc-loading-state.sdc-loading-state--blocking.sdc-loading-state--loading>.sdc-loading-state__loader{opacity:1}.sdc-loading-state.sdc-loading-state--fullscreen>.sdc-loading-state__loader{position:fixed;inset:0;z-index:var(--sdc-loading-fullscreen-z-index, 1005)}.sdc-loading-state .sdc-loading-state__spinner-indicator{width:var(--sdc-loading-spinner-size, 32px);height:var(--sdc-loading-spinner-size, 32px);border-radius:999px;border-width:var(--sdc-loading-spinner-stroke, 3px);border-style:solid;border-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));border-right-color:transparent;animation:sdc-spin .8s linear infinite}.sdc-loading-state .sdc-loading-state__logo{width:var(--sdc-loading-logo-size, 64px);height:var(--sdc-loading-logo-size, 64px);border-radius:50%;background-color:var(--sdc-loading-logo-bg, #00c89a);box-shadow:0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843));display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;animation:sdc-pulsar 1s infinite,sdc-scale 1s infinite;transform-origin:center}.sdc-loading-state .sdc-loading-state__logo-icon-wrap{display:inline-flex;align-items:center;justify-content:center;width:calc(var(--sdc-loading-logo-size, 64px) * .68);height:calc(var(--sdc-loading-logo-size, 64px) * .68);line-height:0}.sdc-loading-state .sdc-loading-state__logo-icon{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;line-height:0}.sdc-loading-state .sdc-loading-state__dots{display:inline-flex;align-items:center}.sdc-loading-state .sdc-loading-state__dot{width:var(--sdc-loading-dot-size, 10px);height:var(--sdc-loading-dot-size, 10px);border-radius:999px;background-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));display:inline-block;animation:sdc-bounce 1.2s infinite ease-out}.sdc-loading-state .sdc-loading-state__dot+.sdc-loading-state__dot{margin-left:var(--sdc-loading-dot-gap, 15px)}.sdc-loading-state .sdc-loading-state__dot--1{animation-delay:0ms}.sdc-loading-state .sdc-loading-state__dot--2{animation-delay:.1s}.sdc-loading-state .sdc-loading-state__dot--3{animation-delay:.2s}:host ::ng-deep .sdc-loading-state__logo-icon>*{display:inline-flex;align-items:center;justify-content:center}:host ::ng-deep .sdc-loading-state__logo-icon .sdc-icon-renderer--svg{width:100%!important;height:100%!important}:host ::ng-deep .sdc-loading-state__logo-icon svg{display:block;width:100%;height:100%}@keyframes sdc-spin{to{transform:rotate(360deg)}}@keyframes sdc-bounce{80%{transform:scale(1)}90%{transform:scale(1.8)}to{transform:scale(1)}}@keyframes sdc-pulsar{0%{box-shadow:0 0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843))}70%{box-shadow:0 0 0 40px #00c89a00}to{box-shadow:0 0 #00c89a00}}@keyframes sdc-scale{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}\n"] }]
|
|
16203
|
+
}], propDecorators: { indicator: [{
|
|
16204
|
+
type: Input
|
|
16205
|
+
}], id: [{
|
|
16206
|
+
type: Input
|
|
16207
|
+
}], blockWindow: [{
|
|
16208
|
+
type: Input
|
|
16209
|
+
}], blockDelayMs: [{
|
|
16210
|
+
type: Input
|
|
16211
|
+
}], unblockDelayMs: [{
|
|
16212
|
+
type: Input
|
|
16213
|
+
}], loading: [{
|
|
16214
|
+
type: Input,
|
|
16215
|
+
args: [{ required: true }]
|
|
16216
|
+
}] } });
|
|
16217
|
+
|
|
16218
|
+
const PAGINATOR_FIRST_PAGE_INDEX = 0;
|
|
16219
|
+
const PAGINATOR_MIN_ROWS = 1;
|
|
16220
|
+
const PAGINATOR_MOBILE_WINDOW_SIZE = 3;
|
|
16221
|
+
const PAGINATOR_DESKTOP_WINDOW_SIZE = 7;
|
|
16222
|
+
const PAGINATOR_DEFAULT_ROWS_OPTIONS = [10, 20, 50];
|
|
16223
|
+
const PAGINATOR_DEFAULT_SHOW_ROWS_PER_PAGE_SELECTOR = false;
|
|
16224
|
+
const PAGINATOR_DEFAULT_IS_MOBILE = false;
|
|
16225
|
+
const PAGINATOR_DEFAULT_TOTAL_RECORDS_LABEL = '';
|
|
16226
|
+
const PAGINATOR_TOTAL_RECORDS_LABEL = 'platform.datacore.total_records';
|
|
16227
|
+
const PAGINATOR_RECORD_FOUND_LABEL = 'platform.datacore.record_found';
|
|
16228
|
+
const PAGINATOR_RECORDS_FOUND_LABEL = 'platform.datacore.records_found';
|
|
16229
|
+
|
|
16230
|
+
const COMBOBOX_DEFAULT_Z_INDEX = 9999;
|
|
16231
|
+
const COMBOBOX_DEFAULT_MAX_SELECTED_LABELS = 1;
|
|
16232
|
+
const COMBOBOX_DEFAULT_PANEL_MAX_HEIGHT = 280;
|
|
16233
|
+
const COMBOBOX_ICON_SELECTOR_BUFFER_SIZE = 6;
|
|
16234
|
+
const COMBOBOX_ICON_SELECTOR_DEFAULT_ROW_HEIGHT = 52;
|
|
16235
|
+
const COMBOBOX_ICON_SELECTOR_ROW_HEIGHT_WITH_CLASS = 64;
|
|
16236
|
+
const COMBOBOX_ICON_SELECTOR_VIEWPORT_FALLBACK_HEIGHT = 216;
|
|
16237
|
+
const COMBOBOX_SELECTED_ITEMS_LABEL_KEY = 'platform.datacore.accessibility.items_selected';
|
|
16238
|
+
const COMBOBOX_CLEAR_FIELD_LABEL_KEY = 'platform.datacore.accessibility.clear_field';
|
|
16239
|
+
const COMBOBOX_EMPTY_TITLE_KEY = 'platform.datacore.no_results';
|
|
16240
|
+
const COMBOBOX_EMPTY_TEXT_KEY = 'platform.datacore.try_other_filters';
|
|
16241
|
+
const COMBOBOX_REMOVE_CHIP_LABEL_KEY = 'platform.datacore.accessibility.remove_selected_item';
|
|
16242
|
+
|
|
16243
|
+
class IconSelectorDataService {
|
|
16244
|
+
fontAwesomeSolidIconsPromise;
|
|
16245
|
+
loadFontAwesomeV5SolidIcons() {
|
|
16246
|
+
this.fontAwesomeSolidIconsPromise ??= import('./seniorsistemas-data-seniorx-core-fontawesome-v5-solid-icons.data-B7opbaVg.mjs')
|
|
16247
|
+
.then((module) => module.FONTAWESOME_V5_SOLID_ICONS);
|
|
16248
|
+
return this.fontAwesomeSolidIconsPromise;
|
|
16249
|
+
}
|
|
16250
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IconSelectorDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16251
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IconSelectorDataService, providedIn: 'root' });
|
|
16252
|
+
}
|
|
16253
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IconSelectorDataService, decorators: [{
|
|
16254
|
+
type: Injectable,
|
|
16255
|
+
args: [{ providedIn: 'root' }]
|
|
16256
|
+
}] });
|
|
16257
|
+
|
|
16202
16258
|
class CheckboxComponent {
|
|
16203
16259
|
label = '';
|
|
16204
16260
|
disabled = false;
|
|
@@ -21395,7 +21451,7 @@ class PanelComponent {
|
|
|
21395
21451
|
return 'platform.datacore.accessibility.panel_collapse';
|
|
21396
21452
|
}
|
|
21397
21453
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
21398
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PanelComponent, isStandalone: true, selector: "sdc-panel", inputs: { header: "header", toggleable: "toggleable", collapsed: "collapsed", severity: "severity", borderButtonOptions: "borderButtonOptions", panelClass: ["class", "panelClass"], ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy" }, outputs: { collapsedChange: "collapsedChange" }, ngImport: i0, template: "<s-panel [(collapsed)]=\"collapsed\" [header]=\"header | translate\" [toggleable]=\"toggleable\" [severity]=\"severity\"\n [borderButtonOptions]=\"borderButtonOptions\" [class]=\"panelClasses\" (collapsedChange)=\"onCollapsedChanged($event)\"\n [attr.aria-label]=\"(ariaLabel || header) | translate\" [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-expanded]=\"toggleable ? !collapsed : null\">\n <div class=\"sdc-panel-content\" [attr.aria-label]=\"'platform.datacore.accessibility.panel_content' | translate\">\n <ng-content></ng-content>\n </div>\n\n <ng-template sTemplate=\"footer\">\n <div class=\"sdc-panel-footer\">\n <ng-content select=\"[sdcFooter]\"></ng-content>\n </div>\n </ng-template>\n</s-panel>\n", styles: [":host{display:contents}.sdc-panel-content,.sdc-panel-footer{display:contents}.sdc-panel-footer:empty{display:none}::ng-deep s-panel .panel.sdc-panel{background-color:var(--sdc-panel-bg, var(--sdc-surface-bg, #ffffff));border:var(--sdc-panel-border, var(--sdc-surface-border, 1px solid #dedce5));border-radius:var(--sdc-panel-radius, var(--sdc-surface-radius, 4px));box-shadow:var(--sdc-panel-shadow, var(--sdc-surface-shadow, none));padding:var(--sdc-panel-padding, var(--sdc-surface-padding, 22px 22px 20px))!important;transition:var(--sdc-panel-transition, var(--sdc-surface-transition, border-color .5s ease))}::ng-deep s-panel .panel.sdc-panel .header{align-items:center;border-bottom:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5));color:var(--sdc-panel-title-color, var(--sdc-surface-title-color, #212533));font-size:var(--sdc-panel-title-font-size, var(--sdc-surface-title-font-size, 14px));font-weight:var(--sdc-panel-title-font-weight, var(--sdc-surface-title-font-weight, 400));line-height:var(--sdc-panel-title-line-height, var(--sdc-surface-title-line-height, 20px));min-height:var(--sdc-panel-header-min-height, var(--sdc-surface-header-min-height, 34px));padding-bottom:var(--sdc-panel-header-padding-bottom, var(--sdc-surface-header-padding-bottom, 20px))}::ng-deep s-panel .panel.sdc-panel .header-content{display:flex;align-items:center;min-height:var(--sdc-panel-title-line-height, var(--sdc-surface-title-line-height, 20px))}::ng-deep s-panel .panel.sdc-panel .collapse-button,::ng-deep s-panel .panel.sdc-panel .s-panel-header-icon,::ng-deep s-panel .panel.sdc-panel .s-panel-header button{min-width:var(--sdc-panel-action-size, 24px);min-height:var(--sdc-panel-action-size, 24px)}::ng-deep s-panel .panel.sdc-panel .collapse-button,::ng-deep s-panel .panel.sdc-panel .s-panel-header button{display:inline-flex;align-items:center;justify-content:center}::ng-deep s-panel .panel.sdc-panel .collapse-button:focus-visible,::ng-deep s-panel .panel.sdc-panel .s-panel-header button:focus-visible{outline:2px solid currentColor;outline-offset:2px}::ng-deep s-panel .panel.sdc-panel .panel-content .body{padding:var(--sdc-panel-content-padding, var(--sdc-surface-content-padding, 15px 0))!important}::ng-deep s-panel .panel.sdc-panel .panel-content .footer{border-top:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5))!important;margin-top:var(--sdc-panel-footer-margin-top, var(--sdc-surface-footer-margin-top, 0));padding-top:var(--sdc-panel-footer-padding-top, var(--sdc-surface-footer-padding-top, 15px))}::ng-deep s-panel .panel.sdc-panel .panel-content .footer:has(>.sdc-panel-footer:empty){display:none}::ng-deep s-panel .panel.sdc-panel .panel-content .footer .sdc-panel-footer>[sdcFooter]{margin-top:0!important}::ng-deep s-panel .panel.sdc-panel.panel--collapsed .header{border-bottom:none;min-height:0;padding-bottom:0}\n"], dependencies: [{ kind: "ngmodule", type: PanelModule }, { kind: "component", type: i1$3.PanelComponent, selector: "s-panel", inputs: ["header", "toggleable", "collapsed", "severity", "borderButtonOptions", "class"], outputs: ["collapsedChange"] }, { kind: "directive", type: i2
|
|
21454
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PanelComponent, isStandalone: true, selector: "sdc-panel", inputs: { header: "header", toggleable: "toggleable", collapsed: "collapsed", severity: "severity", borderButtonOptions: "borderButtonOptions", panelClass: ["class", "panelClass"], ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy" }, outputs: { collapsedChange: "collapsedChange" }, ngImport: i0, template: "<s-panel [(collapsed)]=\"collapsed\" [header]=\"header | translate\" [toggleable]=\"toggleable\" [severity]=\"severity\"\n [borderButtonOptions]=\"borderButtonOptions\" [class]=\"panelClasses\" (collapsedChange)=\"onCollapsedChanged($event)\"\n [attr.aria-label]=\"(ariaLabel || header) | translate\" [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-expanded]=\"toggleable ? !collapsed : null\">\n <div class=\"sdc-panel-content\" [attr.aria-label]=\"'platform.datacore.accessibility.panel_content' | translate\">\n <ng-content></ng-content>\n </div>\n\n <ng-template sTemplate=\"footer\">\n <div class=\"sdc-panel-footer\">\n <ng-content select=\"[sdcFooter]\"></ng-content>\n </div>\n </ng-template>\n</s-panel>\n", styles: [":host{display:contents}.sdc-panel-content,.sdc-panel-footer{display:contents}.sdc-panel-footer:empty{display:none}::ng-deep s-panel .panel.sdc-panel{background-color:var(--sdc-panel-bg, var(--sdc-surface-bg, #ffffff));border:var(--sdc-panel-border, var(--sdc-surface-border, 1px solid #dedce5));border-radius:var(--sdc-panel-radius, var(--sdc-surface-radius, 4px));box-shadow:var(--sdc-panel-shadow, var(--sdc-surface-shadow, none));padding:var(--sdc-panel-padding, var(--sdc-surface-padding, 22px 22px 20px))!important;transition:var(--sdc-panel-transition, var(--sdc-surface-transition, border-color .5s ease))}::ng-deep s-panel .panel.sdc-panel .header{align-items:center;border-bottom:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5));color:var(--sdc-panel-title-color, var(--sdc-surface-title-color, #212533));font-size:var(--sdc-panel-title-font-size, var(--sdc-surface-title-font-size, 14px));font-weight:var(--sdc-panel-title-font-weight, var(--sdc-surface-title-font-weight, 400));line-height:var(--sdc-panel-title-line-height, var(--sdc-surface-title-line-height, 20px));min-height:var(--sdc-panel-header-min-height, var(--sdc-surface-header-min-height, 34px));padding-bottom:var(--sdc-panel-header-padding-bottom, var(--sdc-surface-header-padding-bottom, 20px))}::ng-deep s-panel .panel.sdc-panel .header-content{display:flex;align-items:center;min-height:var(--sdc-panel-title-line-height, var(--sdc-surface-title-line-height, 20px))}::ng-deep s-panel .panel.sdc-panel .collapse-button,::ng-deep s-panel .panel.sdc-panel .s-panel-header-icon,::ng-deep s-panel .panel.sdc-panel .s-panel-header button{min-width:var(--sdc-panel-action-size, 24px);min-height:var(--sdc-panel-action-size, 24px)}::ng-deep s-panel .panel.sdc-panel .collapse-button,::ng-deep s-panel .panel.sdc-panel .s-panel-header button{display:inline-flex;align-items:center;justify-content:center}::ng-deep s-panel .panel.sdc-panel .collapse-button:focus-visible,::ng-deep s-panel .panel.sdc-panel .s-panel-header button:focus-visible{outline:2px solid currentColor;outline-offset:2px}::ng-deep s-panel .panel.sdc-panel .panel-content .body{padding:var(--sdc-panel-content-padding, var(--sdc-surface-content-padding, 15px 0))!important}::ng-deep s-panel .panel.sdc-panel .panel-content .footer{border-top:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5))!important;margin-top:var(--sdc-panel-footer-margin-top, var(--sdc-surface-footer-margin-top, 0));padding-top:var(--sdc-panel-footer-padding-top, var(--sdc-surface-footer-padding-top, 15px))}::ng-deep s-panel .panel.sdc-panel .panel-content .footer:has(>.sdc-panel-footer:empty){display:none}::ng-deep s-panel .panel.sdc-panel .panel-content .footer .sdc-panel-footer>[sdcFooter]{margin-top:0!important}::ng-deep s-panel .panel.sdc-panel.panel--collapsed .header{border-bottom:none;min-height:0;padding-bottom:0}\n"], dependencies: [{ kind: "ngmodule", type: PanelModule }, { kind: "component", type: i1$3.PanelComponent, selector: "s-panel", inputs: ["header", "toggleable", "collapsed", "severity", "borderButtonOptions", "class"], outputs: ["collapsedChange"] }, { kind: "directive", type: i2.TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21399
21455
|
}
|
|
21400
21456
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PanelComponent, decorators: [{
|
|
21401
21457
|
type: Component,
|
|
@@ -23882,30 +23938,168 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
23882
23938
|
type: Input
|
|
23883
23939
|
}] } });
|
|
23884
23940
|
|
|
23941
|
+
var TableMenuFocusTarget;
|
|
23942
|
+
(function (TableMenuFocusTarget) {
|
|
23943
|
+
TableMenuFocusTarget["Next"] = "next";
|
|
23944
|
+
TableMenuFocusTarget["None"] = "none";
|
|
23945
|
+
TableMenuFocusTarget["Previous"] = "previous";
|
|
23946
|
+
TableMenuFocusTarget["Trigger"] = "trigger";
|
|
23947
|
+
})(TableMenuFocusTarget || (TableMenuFocusTarget = {}));
|
|
23948
|
+
|
|
23885
23949
|
class TableActionsMenuComponent {
|
|
23950
|
+
menuItems;
|
|
23951
|
+
ariaLabel = 'platform.datacore.accessibility.actions_menu';
|
|
23886
23952
|
items = [];
|
|
23887
23953
|
left = 0;
|
|
23954
|
+
menuId = '';
|
|
23888
23955
|
top = 0;
|
|
23889
23956
|
width = 0;
|
|
23957
|
+
close = new EventEmitter();
|
|
23890
23958
|
select = new EventEmitter();
|
|
23959
|
+
activeIndex = -1;
|
|
23960
|
+
ngAfterViewInit() {
|
|
23961
|
+
queueMicrotask(() => this.focusFirstEnabledItem());
|
|
23962
|
+
}
|
|
23963
|
+
onItemFocus(index) {
|
|
23964
|
+
if (this.items[index]?.disabled) {
|
|
23965
|
+
return;
|
|
23966
|
+
}
|
|
23967
|
+
this.activeIndex = index;
|
|
23968
|
+
}
|
|
23969
|
+
onItemKeydown(event, index) {
|
|
23970
|
+
switch (event.key) {
|
|
23971
|
+
case 'ArrowDown':
|
|
23972
|
+
event.preventDefault();
|
|
23973
|
+
this.focusRelative(index, 1);
|
|
23974
|
+
break;
|
|
23975
|
+
case 'ArrowUp':
|
|
23976
|
+
event.preventDefault();
|
|
23977
|
+
this.focusRelative(index, -1);
|
|
23978
|
+
break;
|
|
23979
|
+
case 'Home':
|
|
23980
|
+
event.preventDefault();
|
|
23981
|
+
this.focusEdge('start');
|
|
23982
|
+
break;
|
|
23983
|
+
case 'End':
|
|
23984
|
+
event.preventDefault();
|
|
23985
|
+
this.focusEdge('end');
|
|
23986
|
+
break;
|
|
23987
|
+
case 'Escape':
|
|
23988
|
+
event.preventDefault();
|
|
23989
|
+
event.stopPropagation();
|
|
23990
|
+
this.close.emit({ focusTarget: TableMenuFocusTarget.Trigger });
|
|
23991
|
+
break;
|
|
23992
|
+
case 'Tab':
|
|
23993
|
+
this.handleTabNavigation(event, index);
|
|
23994
|
+
break;
|
|
23995
|
+
default:
|
|
23996
|
+
return;
|
|
23997
|
+
}
|
|
23998
|
+
}
|
|
23999
|
+
focusFirstEnabledItem() {
|
|
24000
|
+
this.focusEdge('start');
|
|
24001
|
+
}
|
|
24002
|
+
focusEdge(edge) {
|
|
24003
|
+
const enabledIndexes = this.enabledIndexes();
|
|
24004
|
+
if (!enabledIndexes.length) {
|
|
24005
|
+
return;
|
|
24006
|
+
}
|
|
24007
|
+
const targetIndex = edge === 'start'
|
|
24008
|
+
? enabledIndexes[0]
|
|
24009
|
+
: enabledIndexes[enabledIndexes.length - 1];
|
|
24010
|
+
this.focusIndex(targetIndex);
|
|
24011
|
+
}
|
|
24012
|
+
focusRelative(currentIndex, direction) {
|
|
24013
|
+
const enabledIndexes = this.enabledIndexes();
|
|
24014
|
+
if (!enabledIndexes.length) {
|
|
24015
|
+
return;
|
|
24016
|
+
}
|
|
24017
|
+
const currentEnabledPosition = enabledIndexes.indexOf(currentIndex);
|
|
24018
|
+
const fallbackPosition = direction === 1 ? -1 : 0;
|
|
24019
|
+
const currentPosition = currentEnabledPosition === -1 ? fallbackPosition : currentEnabledPosition;
|
|
24020
|
+
const nextPosition = (currentPosition + direction + enabledIndexes.length) % enabledIndexes.length;
|
|
24021
|
+
this.focusIndex(enabledIndexes[nextPosition]);
|
|
24022
|
+
}
|
|
24023
|
+
focusIndex(index) {
|
|
24024
|
+
const element = this.menuItems.get(index)?.nativeElement;
|
|
24025
|
+
if (!element || element.disabled) {
|
|
24026
|
+
return;
|
|
24027
|
+
}
|
|
24028
|
+
this.activeIndex = index;
|
|
24029
|
+
element.focus();
|
|
24030
|
+
}
|
|
24031
|
+
enabledIndexes() {
|
|
24032
|
+
return this.items.reduce((indexes, item, index) => {
|
|
24033
|
+
if (!item.disabled) {
|
|
24034
|
+
indexes.push(index);
|
|
24035
|
+
}
|
|
24036
|
+
return indexes;
|
|
24037
|
+
}, []);
|
|
24038
|
+
}
|
|
24039
|
+
handleTabNavigation(event, index) {
|
|
24040
|
+
const enabledIndexes = this.enabledIndexes();
|
|
24041
|
+
if (!enabledIndexes.length) {
|
|
24042
|
+
this.close.emit({
|
|
24043
|
+
focusTarget: event.shiftKey ? TableMenuFocusTarget.Previous : TableMenuFocusTarget.Next
|
|
24044
|
+
});
|
|
24045
|
+
return;
|
|
24046
|
+
}
|
|
24047
|
+
const currentEnabledPosition = enabledIndexes.indexOf(index);
|
|
24048
|
+
if (currentEnabledPosition === -1) {
|
|
24049
|
+
event.preventDefault();
|
|
24050
|
+
event.stopPropagation();
|
|
24051
|
+
this.close.emit({
|
|
24052
|
+
focusTarget: event.shiftKey ? TableMenuFocusTarget.Previous : TableMenuFocusTarget.Next
|
|
24053
|
+
});
|
|
24054
|
+
return;
|
|
24055
|
+
}
|
|
24056
|
+
const isFirstEnabledItem = currentEnabledPosition === 0;
|
|
24057
|
+
const isLastEnabledItem = currentEnabledPosition === enabledIndexes.length - 1;
|
|
24058
|
+
if (event.shiftKey) {
|
|
24059
|
+
if (isFirstEnabledItem) {
|
|
24060
|
+
event.preventDefault();
|
|
24061
|
+
event.stopPropagation();
|
|
24062
|
+
this.close.emit({ focusTarget: TableMenuFocusTarget.Previous });
|
|
24063
|
+
return;
|
|
24064
|
+
}
|
|
24065
|
+
event.preventDefault();
|
|
24066
|
+
this.focusIndex(enabledIndexes[currentEnabledPosition - 1]);
|
|
24067
|
+
return;
|
|
24068
|
+
}
|
|
24069
|
+
if (isLastEnabledItem) {
|
|
24070
|
+
event.preventDefault();
|
|
24071
|
+
event.stopPropagation();
|
|
24072
|
+
this.close.emit({ focusTarget: TableMenuFocusTarget.Next });
|
|
24073
|
+
return;
|
|
24074
|
+
}
|
|
24075
|
+
event.preventDefault();
|
|
24076
|
+
this.focusIndex(enabledIndexes[currentEnabledPosition + 1]);
|
|
24077
|
+
}
|
|
23891
24078
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableActionsMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23892
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableActionsMenuComponent, isStandalone: true, selector: "sdc-table-actions-menu", inputs: { items: "items", left: "left", top: "top", width: "width" }, outputs: { select: "select" }, ngImport: i0, template: `
|
|
24079
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableActionsMenuComponent, isStandalone: true, selector: "sdc-table-actions-menu", inputs: { ariaLabel: "ariaLabel", items: "items", left: "left", menuId: "menuId", top: "top", width: "width" }, outputs: { close: "close", select: "select" }, viewQueries: [{ propertyName: "menuItems", predicate: ["menuItem"], descendants: true }], ngImport: i0, template: `
|
|
23893
24080
|
<div
|
|
23894
24081
|
class="sdc-actions-menu sdc-actions-menu--portal"
|
|
24082
|
+
[id]="menuId || null"
|
|
23895
24083
|
[style.top.px]="top"
|
|
23896
24084
|
[style.left.px]="left"
|
|
23897
24085
|
[style.min-width.px]="width"
|
|
23898
24086
|
role="menu"
|
|
24087
|
+
[attr.aria-label]="ariaLabel | translate"
|
|
24088
|
+
aria-orientation="vertical"
|
|
23899
24089
|
(click)="$event.stopPropagation()"
|
|
23900
24090
|
>
|
|
23901
24091
|
@for (item of items; track item.key + '-' + $index) {
|
|
23902
24092
|
<button
|
|
24093
|
+
#menuItem
|
|
23903
24094
|
type="button"
|
|
23904
24095
|
role="menuitem"
|
|
23905
24096
|
class="sdc-actions-item"
|
|
23906
24097
|
[disabled]="item.disabled"
|
|
23907
24098
|
[class.sdc-actions-item--disabled]="item.disabled"
|
|
23908
24099
|
[attr.aria-disabled]="item.disabled || null"
|
|
24100
|
+
[attr.tabindex]="item.disabled ? -1 : (activeIndex === $index ? 0 : -1)"
|
|
24101
|
+
(focus)="onItemFocus($index)"
|
|
24102
|
+
(keydown)="onItemKeydown($event, $index)"
|
|
23909
24103
|
(click)="select.emit(item)"
|
|
23910
24104
|
>
|
|
23911
24105
|
<span class="sdc-actions-item__content">
|
|
@@ -23924,20 +24118,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
23924
24118
|
args: [{ selector: 'sdc-table-actions-menu', standalone: true, imports: [CommonModule, TranslateModule, IconRendererComponent], template: `
|
|
23925
24119
|
<div
|
|
23926
24120
|
class="sdc-actions-menu sdc-actions-menu--portal"
|
|
24121
|
+
[id]="menuId || null"
|
|
23927
24122
|
[style.top.px]="top"
|
|
23928
24123
|
[style.left.px]="left"
|
|
23929
24124
|
[style.min-width.px]="width"
|
|
23930
24125
|
role="menu"
|
|
24126
|
+
[attr.aria-label]="ariaLabel | translate"
|
|
24127
|
+
aria-orientation="vertical"
|
|
23931
24128
|
(click)="$event.stopPropagation()"
|
|
23932
24129
|
>
|
|
23933
24130
|
@for (item of items; track item.key + '-' + $index) {
|
|
23934
24131
|
<button
|
|
24132
|
+
#menuItem
|
|
23935
24133
|
type="button"
|
|
23936
24134
|
role="menuitem"
|
|
23937
24135
|
class="sdc-actions-item"
|
|
23938
24136
|
[disabled]="item.disabled"
|
|
23939
24137
|
[class.sdc-actions-item--disabled]="item.disabled"
|
|
23940
24138
|
[attr.aria-disabled]="item.disabled || null"
|
|
24139
|
+
[attr.tabindex]="item.disabled ? -1 : (activeIndex === $index ? 0 : -1)"
|
|
24140
|
+
(focus)="onItemFocus($index)"
|
|
24141
|
+
(keydown)="onItemKeydown($event, $index)"
|
|
23941
24142
|
(click)="select.emit(item)"
|
|
23942
24143
|
>
|
|
23943
24144
|
<span class="sdc-actions-item__content">
|
|
@@ -23950,14 +24151,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
23950
24151
|
}
|
|
23951
24152
|
</div>
|
|
23952
24153
|
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".sdc-actions-menu{background:#fff;border:1px solid #d1d5db;border-radius:0;box-shadow:0 1px 2px #0f172a14;padding:0}.sdc-actions-menu--portal{position:fixed;z-index:2147483647}.sdc-actions-item{width:100%;display:flex;align-items:stretch;justify-content:flex-start;border:0;border-bottom:1px solid #e5e7eb;background:#fff;padding:0;text-align:left;cursor:pointer;font:inherit;color:#374151;min-height:2.25rem;transition:background-color .15s ease,color .15s ease}.sdc-actions-item:last-child{border-bottom:0}.sdc-actions-item__content{display:inline-flex;align-items:center;gap:.5rem;padding:.625rem .875rem;width:100%;font-size:.8125rem;line-height:1.2}.sdc-actions-item:hover:not(:disabled),.sdc-actions-item:focus-visible:not(:disabled){background:#f9fafb;outline:none}.sdc-actions-item:disabled,.sdc-actions-item.sdc-actions-item--disabled,.sdc-actions-item[data-disabled=true]{color:#9ca3af;cursor:not-allowed;background:#fff;pointer-events:none}.sdc-actions-item:disabled .sdc-actions-item__content,.sdc-actions-item.sdc-actions-item--disabled .sdc-actions-item__content,.sdc-actions-item[data-disabled=true] .sdc-actions-item__content{opacity:.55}\n"] }]
|
|
23953
|
-
}], propDecorators: {
|
|
24154
|
+
}], propDecorators: { menuItems: [{
|
|
24155
|
+
type: ViewChildren,
|
|
24156
|
+
args: ['menuItem']
|
|
24157
|
+
}], ariaLabel: [{
|
|
24158
|
+
type: Input
|
|
24159
|
+
}], items: [{
|
|
23954
24160
|
type: Input
|
|
23955
24161
|
}], left: [{
|
|
23956
24162
|
type: Input
|
|
24163
|
+
}], menuId: [{
|
|
24164
|
+
type: Input
|
|
23957
24165
|
}], top: [{
|
|
23958
24166
|
type: Input
|
|
23959
24167
|
}], width: [{
|
|
23960
24168
|
type: Input
|
|
24169
|
+
}], close: [{
|
|
24170
|
+
type: Output
|
|
23961
24171
|
}], select: [{
|
|
23962
24172
|
type: Output
|
|
23963
24173
|
}] } });
|
|
@@ -24322,6 +24532,7 @@ class TableCellContentComponent {
|
|
|
24322
24532
|
resolveValue;
|
|
24323
24533
|
row;
|
|
24324
24534
|
actionsMenuOpen = false;
|
|
24535
|
+
actionsMenuId = null;
|
|
24325
24536
|
defaultTextOverflow;
|
|
24326
24537
|
rowCheckboxId = '';
|
|
24327
24538
|
rowLabel = 'item';
|
|
@@ -24387,7 +24598,7 @@ class TableCellContentComponent {
|
|
|
24387
24598
|
this.toggleActionsMenu.emit({ event, trigger });
|
|
24388
24599
|
}
|
|
24389
24600
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableCellContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
24390
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableCellContentComponent, isStandalone: true, selector: "sdc-table-cell-content", inputs: { cellConfigs: "cellConfigs", col: "col", resolveValue: "resolveValue", row: "row", actionsMenuOpen: "actionsMenuOpen", defaultTextOverflow: "defaultTextOverflow", rowCheckboxId: "rowCheckboxId", rowLabel: "rowLabel", rowSelected: "rowSelected" }, outputs: { toggleActionsMenu: "toggleActionsMenu", toggleRow: "toggleRow", triggerButtonAction: "triggerButtonAction" }, host: { properties: { "class.sdc-table-cell-content--align-left": "resolvedAlignment === 'left'", "class.sdc-table-cell-content--align-center": "resolvedAlignment === 'center'", "class.sdc-table-cell-content--align-right": "resolvedAlignment === 'right'", "class.sdc-table-cell-content--nowrap": "col?.textOverflow === 'none'" } }, ngImport: i0, template: "<div class=\"sdc-table-content\">\n @if (col.content?.length) {\n <div class=\"sdc-table-multi-content\">\n @for (item of col.content!; track $index) {\n @switch (item.type ?? 'text') {\n @case ('strong') {\n <strong\n [ngStyle]=\"item.style\"\n [class]=\"item.class ?? ''\"\n >{{ cellTextValue(item.field) | translate }}</strong>\n }\n @case ('code') {\n <code [ngStyle]=\"item.style\" [class]=\"item.class ?? ''\">{{ cellTextValue(item.field) }}</code>\n }\n @default {\n <span [ngStyle]=\"item.style\" [class]=\"item.class ?? ''\">{{ cellTextValue(item.field) | translate }}</span>\n }\n }\n }\n </div>\n } @else {\n @switch (col.type ?? 'text') {\n @case ('checkbox-selection') {\n <div class=\"sdc-table-checkbox\">\n <input\n type=\"checkbox\"\n [id]=\"rowCheckboxId\"\n [checked]=\"rowSelected\"\n (change)=\"toggleRow.emit(getCheckedValue($event))\"\n [attr.aria-label]=\"\n 'platform.datacore.accessibility.select_row'\n | translate: { name: (rowLabel | translate) }\n \"\n [attr.aria-checked]=\"rowSelected\"\n />\n <label [attr.for]=\"rowCheckboxId\" class=\"sr-only\">\n {{\n 'platform.datacore.accessibility.select_row'\n | translate: { name: (rowLabel | translate) }\n }}\n </label>\n </div>\n }\n\n @case ('date') {\n <span class=\"sdc-table-text\" [attr.title]=\"ellipsisTitleText(formatDate())\">{{ formatDate() }}</span>\n }\n\n @case ('strong') {\n <span class=\"sdc-table-strong-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n\n @case ('code') {\n <code class=\"sdc-table-code-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue())\">{{ displayText() }}</code>\n }\n\n @case ('currency') {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(formatCurrency())\">{{ formatCurrency() }}</span>\n }\n\n @case ('tag') {\n <div class=\"sdc-table-tags\">\n @for (tagItem of tagItems(); track tagItem.label + '-' + $index) {\n <span\n class=\"sdc-table-tag\"\n [class.sdc-table-tag--enabled]=\"tagItem.tone === 'enabled'\"\n [class.sdc-table-tag--disabled]=\"tagItem.tone === 'disabled'\"\n [ngStyle]=\"tagItem.styles\"\n [attr.title]=\"tagItem.tooltip ? (tagItem.tooltip | translate) : null\"\n >\n @if (tagItem.icon) {\n <sdc-icon-renderer\n class=\"sdc-table-tag__icon\"\n [icon]=\"tagItem.icon\"\n [iconType]=\"tagItem.iconType\"\n [size]=\"tagIconSize\"\n ></sdc-icon-renderer>\n }\n {{ tagItem.label | translate }}\n </span>\n }\n </div>\n }\n\n @case ('button') {\n <div class=\"sdc-table-button\">\n <sdc-button\n class=\"sdc-table-action-button\"\n [size]=\"cellConfigs.button.size ?? 'default'\"\n [priority]=\"cellConfigs.button.priority || 'primary'\"\n [icon]=\"cellConfigs.button.icon\"\n [label]=\"cellConfigs.button.label ?? ''\"\n [disabled]=\"cellConfigs.button.disabled ?? false\"\n [title]=\"cellConfigs.button.tooltip\"\n [attr.size]=\"cellConfigs.button.size\"\n [attr.priority]=\"cellConfigs.button.priority || 'primary'\"\n [attr.severity]=\"cellConfigs.button.priority || 'primary'\"\n [attr.icon]=\"cellConfigs.button.icon\"\n [attr.label]=\"cellConfigs.button.label\"\n [attr.disabled]=\"cellConfigs.button.disabled ? '' : null\"\n [attr.title]=\"cellConfigs.button.tooltip || null\"\n [attr.aria-label]=\"\n (buttonAriaLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.data-key]=\"buttonKey()\"\n (click)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.enter)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.space)=\"$event.preventDefault(); cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n ></sdc-button>\n </div>\n }\n\n @case ('actions') {\n <div\n class=\"sdc-table-actions\"\n [class.sdc-table-actions--open]=\"actionsMenuOpen\"\n >\n <button\n #actionsTrigger\n type=\"button\"\n class=\"sdc-table-actions-trigger\"\n [class.sdc-table-actions-trigger--open]=\"actionsMenuOpen\"\n [attr.aria-label]=\"\n (actionsButtonLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-expanded]=\"actionsMenuOpen\"\n (click)=\"onActionsClick($event, actionsTrigger)\"\n >\n <span class=\"sdc-table-actions-trigger__label\">\n {{ actionsButtonLabel() | translate }}\n </span>\n <i class=\"fas fa-chevron-down sdc-table-actions-trigger__icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n\n @case ('icon') {\n @if (iconPresentation(); as iconItem) {\n <span\n class=\"sdc-table-icon\"\n [ngStyle]=\"iconItem.colorStyle\"\n [attr.title]=\"iconItem.tooltip ? (iconItem.tooltip | translate) : null\"\n [attr.aria-label]=\"\n (iconItem.label || iconItem.tooltip)\n ? ((iconItem.label || iconItem.tooltip)! | translate)\n : null\n \"\n >\n @if (iconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"iconItem.icon\"\n [iconType]=\"iconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (iconItem.label) {\n <span class=\"sdc-table-icon__label\">{{ iconItem.label | translate }}</span>\n }\n </span>\n }\n }\n\n @case ('icon-title') {\n @if (titleIconPresentation(); as titleIconItem) {\n <span\n class=\"sdc-table-icon-title\"\n [ngStyle]=\"titleIconItem.colorStyle\"\n [attr.title]=\"titleIconItem.tooltip ? (titleIconItem.tooltip | translate) : null\"\n >\n @if (titleIconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"titleIconItem.icon\"\n [iconType]=\"titleIconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (titleIconItem.label) {\n <span [attr.title]=\"ellipsisTitleText(titleIconItem.label | translate)\">\n {{ titleIconItem.label | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n </span>\n }\n }\n\n @default {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n }\n }\n</div>\n", styles: [":host{display:block;width:100%;min-width:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sdc-table-content{display:flex;align-items:center;width:100%;min-width:0}:host(.sdc-table-cell-content--align-left) .sdc-table-content{justify-content:flex-start;text-align:left}:host(.sdc-table-cell-content--align-center) .sdc-table-content{justify-content:center;text-align:center}:host(.sdc-table-cell-content--align-right) .sdc-table-content{justify-content:flex-end;text-align:right}.sdc-table-multi-content{display:flex;flex-direction:column;gap:.25rem;min-width:0;max-width:100%}.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span,.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label{min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-table-strong-label{font-weight:500}.sdc-table-code-label{color:var(--sdc-tab-primary)}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:.5rem;min-width:0;max-width:100%}.sdc-table-tag{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;width:fit-content;min-width:fit-content;max-width:100%;border-radius:9999px;font-weight:500;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid currentColor;box-sizing:border-box;font-size:.875rem;padding:.35rem .875rem}.sdc-table-tag__icon{flex:0 0 auto}.sdc-table-tag--enabled{background:#dcfce7;color:#16a34a;border-color:#16a34a}.sdc-table-tag--disabled{background:#fee2e2;color:#ef4444;border-color:#ef4444}.sdc-table-button{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%;min-width:0}.sdc-table-button ::ng-deep sdc-button,.sdc-table-button ::ng-deep button{min-height:unset;min-width:unset;max-width:100%}.sdc-table-action-button{width:100%;max-width:100%;min-width:0}.sdc-table-icon,.sdc-table-icon-title{display:inline-flex;align-items:center;gap:.5rem;min-width:0;max-width:100%}.sdc-table-icon__label,.sdc-table-icon-title span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-checkbox input[type=checkbox]{cursor:pointer}.sdc-table-actions{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100%;min-width:0}.sdc-table-actions-trigger{appearance:none;border:1px solid #c9ced6;background:#fff;border-radius:999px;min-width:4.875rem;height:2rem;padding:0 .75rem;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;font:inherit;font-size:.8125rem;color:#374151;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.sdc-table-actions-trigger:hover{background:#f9fafb}.sdc-table-actions-trigger:focus-visible,.sdc-table-actions-trigger--open{outline:none;border-color:#9ca3af;box-shadow:0 0 0 2px #1118270a}.sdc-table-actions-trigger__label{line-height:1;white-space:nowrap}.sdc-table-actions-trigger__icon{font-size:.625rem;line-height:1;color:#6b7280}@media (max-width: 768px){.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}.sdc-table-tag{font-size:.8125rem;padding:.35rem .75rem}.sdc-table-actions-trigger{min-width:4.375rem;height:1.75rem;padding:0 .625rem;font-size:.75rem}.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label,.sdc-table-icon__label,.sdc-table-icon-title span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}:host(.sdc-table-cell-content--align-center) .sdc-table-content,:host(.sdc-table-cell-content--align-right) .sdc-table-content{justify-content:flex-start;text-align:left}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["id", "label", "ariaLabel", "disabled", "width", "priority", "size", "type", "icon", "rightIcon", "auxiliary", "caret", "tooltip", "animation", "slide", "styleClass", "badge", "menuOptions", "menuContext", "model"], outputs: ["clicked"] }, { kind: "component", type: IconRendererComponent, selector: "sdc-icon-renderer", inputs: ["icon", "iconType", "size"] }, { kind: "pipe", type: SdcTruncatePipe, name: "sdcTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
24601
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableCellContentComponent, isStandalone: true, selector: "sdc-table-cell-content", inputs: { cellConfigs: "cellConfigs", col: "col", resolveValue: "resolveValue", row: "row", actionsMenuOpen: "actionsMenuOpen", actionsMenuId: "actionsMenuId", defaultTextOverflow: "defaultTextOverflow", rowCheckboxId: "rowCheckboxId", rowLabel: "rowLabel", rowSelected: "rowSelected" }, outputs: { toggleActionsMenu: "toggleActionsMenu", toggleRow: "toggleRow", triggerButtonAction: "triggerButtonAction" }, host: { properties: { "class.sdc-table-cell-content--align-left": "resolvedAlignment === 'left'", "class.sdc-table-cell-content--align-center": "resolvedAlignment === 'center'", "class.sdc-table-cell-content--align-right": "resolvedAlignment === 'right'", "class.sdc-table-cell-content--nowrap": "col?.textOverflow === 'none'" } }, ngImport: i0, template: "<div class=\"sdc-table-content\">\n @if (col.content?.length) {\n <div class=\"sdc-table-multi-content\">\n @for (item of col.content!; track $index) {\n @switch (item.type ?? 'text') {\n @case ('strong') {\n <strong\n [ngStyle]=\"item.style\"\n [class]=\"item.class ?? ''\"\n >{{ cellTextValue(item.field) | translate }}</strong>\n }\n @case ('code') {\n <code [ngStyle]=\"item.style\" [class]=\"item.class ?? ''\">{{ cellTextValue(item.field) }}</code>\n }\n @default {\n <span [ngStyle]=\"item.style\" [class]=\"item.class ?? ''\">{{ cellTextValue(item.field) | translate }}</span>\n }\n }\n }\n </div>\n } @else {\n @switch (col.type ?? 'text') {\n @case ('checkbox-selection') {\n <div class=\"sdc-table-checkbox\">\n <input\n type=\"checkbox\"\n [id]=\"rowCheckboxId\"\n [checked]=\"rowSelected\"\n (change)=\"toggleRow.emit(getCheckedValue($event))\"\n [attr.aria-label]=\"\n 'platform.datacore.accessibility.select_row'\n | translate: { name: (rowLabel | translate) }\n \"\n [attr.aria-checked]=\"rowSelected\"\n />\n <label [attr.for]=\"rowCheckboxId\" class=\"sr-only\">\n {{\n 'platform.datacore.accessibility.select_row'\n | translate: { name: (rowLabel | translate) }\n }}\n </label>\n </div>\n }\n\n @case ('date') {\n <span class=\"sdc-table-text\" [attr.title]=\"ellipsisTitleText(formatDate())\">{{ formatDate() }}</span>\n }\n\n @case ('strong') {\n <span class=\"sdc-table-strong-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n\n @case ('code') {\n <code class=\"sdc-table-code-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue())\">{{ displayText() }}</code>\n }\n\n @case ('currency') {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(formatCurrency())\">{{ formatCurrency() }}</span>\n }\n\n @case ('tag') {\n <div class=\"sdc-table-tags\">\n @for (tagItem of tagItems(); track tagItem.label + '-' + $index) {\n <span\n class=\"sdc-table-tag\"\n [class.sdc-table-tag--enabled]=\"tagItem.tone === 'enabled'\"\n [class.sdc-table-tag--disabled]=\"tagItem.tone === 'disabled'\"\n [ngStyle]=\"tagItem.styles\"\n [attr.title]=\"tagItem.tooltip ? (tagItem.tooltip | translate) : null\"\n >\n @if (tagItem.icon) {\n <sdc-icon-renderer\n class=\"sdc-table-tag__icon\"\n [icon]=\"tagItem.icon\"\n [iconType]=\"tagItem.iconType\"\n [size]=\"tagIconSize\"\n ></sdc-icon-renderer>\n }\n {{ tagItem.label | translate }}\n </span>\n }\n </div>\n }\n\n @case ('button') {\n <div class=\"sdc-table-button\">\n <sdc-button\n class=\"sdc-table-action-button\"\n [size]=\"cellConfigs.button.size ?? 'default'\"\n [priority]=\"cellConfigs.button.priority || 'primary'\"\n [icon]=\"cellConfigs.button.icon\"\n [label]=\"cellConfigs.button.label ?? ''\"\n [disabled]=\"cellConfigs.button.disabled ?? false\"\n [title]=\"cellConfigs.button.tooltip\"\n [attr.size]=\"cellConfigs.button.size\"\n [attr.priority]=\"cellConfigs.button.priority || 'primary'\"\n [attr.severity]=\"cellConfigs.button.priority || 'primary'\"\n [attr.icon]=\"cellConfigs.button.icon\"\n [attr.label]=\"cellConfigs.button.label\"\n [attr.disabled]=\"cellConfigs.button.disabled ? '' : null\"\n [attr.title]=\"cellConfigs.button.tooltip || null\"\n [attr.aria-label]=\"\n (buttonAriaLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.data-key]=\"buttonKey()\"\n (click)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.enter)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.space)=\"$event.preventDefault(); cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n ></sdc-button>\n </div>\n }\n\n @case ('actions') {\n <div\n class=\"sdc-table-actions\"\n [class.sdc-table-actions--open]=\"actionsMenuOpen\"\n >\n <button\n #actionsTrigger\n type=\"button\"\n class=\"sdc-table-actions-trigger\"\n [class.sdc-table-actions-trigger--open]=\"actionsMenuOpen\"\n [attr.aria-label]=\"\n (actionsButtonLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-controls]=\"actionsMenuOpen ? actionsMenuId : null\"\n [attr.aria-expanded]=\"actionsMenuOpen\"\n (click)=\"onActionsClick($event, actionsTrigger)\"\n >\n <span class=\"sdc-table-actions-trigger__label\">\n {{ actionsButtonLabel() | translate }}\n </span>\n <i class=\"fas fa-chevron-down sdc-table-actions-trigger__icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n\n @case ('icon') {\n @if (iconPresentation(); as iconItem) {\n <span\n class=\"sdc-table-icon\"\n [ngStyle]=\"iconItem.colorStyle\"\n [attr.title]=\"iconItem.tooltip ? (iconItem.tooltip | translate) : null\"\n [attr.aria-label]=\"\n (iconItem.label || iconItem.tooltip)\n ? ((iconItem.label || iconItem.tooltip)! | translate)\n : null\n \"\n >\n @if (iconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"iconItem.icon\"\n [iconType]=\"iconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (iconItem.label) {\n <span class=\"sdc-table-icon__label\">{{ iconItem.label | translate }}</span>\n }\n </span>\n }\n }\n\n @case ('icon-title') {\n @if (titleIconPresentation(); as titleIconItem) {\n <span\n class=\"sdc-table-icon-title\"\n [ngStyle]=\"titleIconItem.colorStyle\"\n [attr.title]=\"titleIconItem.tooltip ? (titleIconItem.tooltip | translate) : null\"\n >\n @if (titleIconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"titleIconItem.icon\"\n [iconType]=\"titleIconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (titleIconItem.label) {\n <span [attr.title]=\"ellipsisTitleText(titleIconItem.label | translate)\">\n {{ titleIconItem.label | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n </span>\n }\n }\n\n @default {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n }\n }\n</div>\n", styles: [":host{display:block;width:100%;min-width:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sdc-table-content{display:flex;align-items:center;width:100%;min-width:0}:host(.sdc-table-cell-content--align-left) .sdc-table-content{justify-content:flex-start;text-align:left}:host(.sdc-table-cell-content--align-center) .sdc-table-content{justify-content:center;text-align:center}:host(.sdc-table-cell-content--align-right) .sdc-table-content{justify-content:flex-end;text-align:right}.sdc-table-multi-content{display:flex;flex-direction:column;gap:.25rem;min-width:0;max-width:100%}.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span,.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label{min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-table-strong-label{font-weight:500}.sdc-table-code-label{color:var(--sdc-tab-primary)}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:.5rem;min-width:0;max-width:100%}.sdc-table-tag{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;width:fit-content;min-width:fit-content;max-width:100%;border-radius:9999px;font-weight:500;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid currentColor;box-sizing:border-box;font-size:.875rem;padding:.35rem .875rem}.sdc-table-tag__icon{flex:0 0 auto}.sdc-table-tag--enabled{background:#dcfce7;color:#16a34a;border-color:#16a34a}.sdc-table-tag--disabled{background:#fee2e2;color:#ef4444;border-color:#ef4444}.sdc-table-button{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%;min-width:0}.sdc-table-button ::ng-deep sdc-button,.sdc-table-button ::ng-deep button{min-height:unset;min-width:unset;max-width:100%}.sdc-table-action-button{width:100%;max-width:100%;min-width:0}.sdc-table-icon,.sdc-table-icon-title{display:inline-flex;align-items:center;gap:.5rem;min-width:0;max-width:100%}.sdc-table-icon__label,.sdc-table-icon-title span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-checkbox input[type=checkbox]{cursor:pointer}.sdc-table-actions{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100%;min-width:0}.sdc-table-actions-trigger{appearance:none;border:1px solid #c9ced6;background:#fff;border-radius:999px;min-width:4.875rem;height:2rem;padding:0 .75rem;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;font:inherit;font-size:.8125rem;color:#374151;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.sdc-table-actions-trigger:hover{background:#f9fafb}.sdc-table-actions-trigger:focus-visible,.sdc-table-actions-trigger--open{outline:none;border-color:#9ca3af;box-shadow:0 0 0 2px #1118270a}.sdc-table-actions-trigger__label{line-height:1;white-space:nowrap}.sdc-table-actions-trigger__icon{font-size:.625rem;line-height:1;color:#6b7280}@media (max-width: 768px){.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}.sdc-table-tag{font-size:.8125rem;padding:.35rem .75rem}.sdc-table-actions-trigger{min-width:4.375rem;height:1.75rem;padding:0 .625rem;font-size:.75rem}.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label,.sdc-table-icon__label,.sdc-table-icon-title span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}:host(.sdc-table-cell-content--align-center) .sdc-table-content,:host(.sdc-table-cell-content--align-right) .sdc-table-content{justify-content:flex-start;text-align:left}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["id", "label", "ariaLabel", "disabled", "width", "priority", "size", "type", "icon", "rightIcon", "auxiliary", "caret", "tooltip", "animation", "slide", "styleClass", "badge", "menuOptions", "menuContext", "model"], outputs: ["clicked"] }, { kind: "component", type: IconRendererComponent, selector: "sdc-icon-renderer", inputs: ["icon", "iconType", "size"] }, { kind: "pipe", type: SdcTruncatePipe, name: "sdcTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
24391
24602
|
}
|
|
24392
24603
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableCellContentComponent, decorators: [{
|
|
24393
24604
|
type: Component,
|
|
@@ -24396,7 +24607,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
24396
24607
|
'[class.sdc-table-cell-content--align-center]': "resolvedAlignment === 'center'",
|
|
24397
24608
|
'[class.sdc-table-cell-content--align-right]': "resolvedAlignment === 'right'",
|
|
24398
24609
|
'[class.sdc-table-cell-content--nowrap]': "col?.textOverflow === 'none'"
|
|
24399
|
-
}, template: "<div class=\"sdc-table-content\">\n @if (col.content?.length) {\n <div class=\"sdc-table-multi-content\">\n @for (item of col.content!; track $index) {\n @switch (item.type ?? 'text') {\n @case ('strong') {\n <strong\n [ngStyle]=\"item.style\"\n [class]=\"item.class ?? ''\"\n >{{ cellTextValue(item.field) | translate }}</strong>\n }\n @case ('code') {\n <code [ngStyle]=\"item.style\" [class]=\"item.class ?? ''\">{{ cellTextValue(item.field) }}</code>\n }\n @default {\n <span [ngStyle]=\"item.style\" [class]=\"item.class ?? ''\">{{ cellTextValue(item.field) | translate }}</span>\n }\n }\n }\n </div>\n } @else {\n @switch (col.type ?? 'text') {\n @case ('checkbox-selection') {\n <div class=\"sdc-table-checkbox\">\n <input\n type=\"checkbox\"\n [id]=\"rowCheckboxId\"\n [checked]=\"rowSelected\"\n (change)=\"toggleRow.emit(getCheckedValue($event))\"\n [attr.aria-label]=\"\n 'platform.datacore.accessibility.select_row'\n | translate: { name: (rowLabel | translate) }\n \"\n [attr.aria-checked]=\"rowSelected\"\n />\n <label [attr.for]=\"rowCheckboxId\" class=\"sr-only\">\n {{\n 'platform.datacore.accessibility.select_row'\n | translate: { name: (rowLabel | translate) }\n }}\n </label>\n </div>\n }\n\n @case ('date') {\n <span class=\"sdc-table-text\" [attr.title]=\"ellipsisTitleText(formatDate())\">{{ formatDate() }}</span>\n }\n\n @case ('strong') {\n <span class=\"sdc-table-strong-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n\n @case ('code') {\n <code class=\"sdc-table-code-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue())\">{{ displayText() }}</code>\n }\n\n @case ('currency') {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(formatCurrency())\">{{ formatCurrency() }}</span>\n }\n\n @case ('tag') {\n <div class=\"sdc-table-tags\">\n @for (tagItem of tagItems(); track tagItem.label + '-' + $index) {\n <span\n class=\"sdc-table-tag\"\n [class.sdc-table-tag--enabled]=\"tagItem.tone === 'enabled'\"\n [class.sdc-table-tag--disabled]=\"tagItem.tone === 'disabled'\"\n [ngStyle]=\"tagItem.styles\"\n [attr.title]=\"tagItem.tooltip ? (tagItem.tooltip | translate) : null\"\n >\n @if (tagItem.icon) {\n <sdc-icon-renderer\n class=\"sdc-table-tag__icon\"\n [icon]=\"tagItem.icon\"\n [iconType]=\"tagItem.iconType\"\n [size]=\"tagIconSize\"\n ></sdc-icon-renderer>\n }\n {{ tagItem.label | translate }}\n </span>\n }\n </div>\n }\n\n @case ('button') {\n <div class=\"sdc-table-button\">\n <sdc-button\n class=\"sdc-table-action-button\"\n [size]=\"cellConfigs.button.size ?? 'default'\"\n [priority]=\"cellConfigs.button.priority || 'primary'\"\n [icon]=\"cellConfigs.button.icon\"\n [label]=\"cellConfigs.button.label ?? ''\"\n [disabled]=\"cellConfigs.button.disabled ?? false\"\n [title]=\"cellConfigs.button.tooltip\"\n [attr.size]=\"cellConfigs.button.size\"\n [attr.priority]=\"cellConfigs.button.priority || 'primary'\"\n [attr.severity]=\"cellConfigs.button.priority || 'primary'\"\n [attr.icon]=\"cellConfigs.button.icon\"\n [attr.label]=\"cellConfigs.button.label\"\n [attr.disabled]=\"cellConfigs.button.disabled ? '' : null\"\n [attr.title]=\"cellConfigs.button.tooltip || null\"\n [attr.aria-label]=\"\n (buttonAriaLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.data-key]=\"buttonKey()\"\n (click)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.enter)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.space)=\"$event.preventDefault(); cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n ></sdc-button>\n </div>\n }\n\n @case ('actions') {\n <div\n class=\"sdc-table-actions\"\n [class.sdc-table-actions--open]=\"actionsMenuOpen\"\n >\n <button\n #actionsTrigger\n type=\"button\"\n class=\"sdc-table-actions-trigger\"\n [class.sdc-table-actions-trigger--open]=\"actionsMenuOpen\"\n [attr.aria-label]=\"\n (actionsButtonLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-expanded]=\"actionsMenuOpen\"\n (click)=\"onActionsClick($event, actionsTrigger)\"\n >\n <span class=\"sdc-table-actions-trigger__label\">\n {{ actionsButtonLabel() | translate }}\n </span>\n <i class=\"fas fa-chevron-down sdc-table-actions-trigger__icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n\n @case ('icon') {\n @if (iconPresentation(); as iconItem) {\n <span\n class=\"sdc-table-icon\"\n [ngStyle]=\"iconItem.colorStyle\"\n [attr.title]=\"iconItem.tooltip ? (iconItem.tooltip | translate) : null\"\n [attr.aria-label]=\"\n (iconItem.label || iconItem.tooltip)\n ? ((iconItem.label || iconItem.tooltip)! | translate)\n : null\n \"\n >\n @if (iconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"iconItem.icon\"\n [iconType]=\"iconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (iconItem.label) {\n <span class=\"sdc-table-icon__label\">{{ iconItem.label | translate }}</span>\n }\n </span>\n }\n }\n\n @case ('icon-title') {\n @if (titleIconPresentation(); as titleIconItem) {\n <span\n class=\"sdc-table-icon-title\"\n [ngStyle]=\"titleIconItem.colorStyle\"\n [attr.title]=\"titleIconItem.tooltip ? (titleIconItem.tooltip | translate) : null\"\n >\n @if (titleIconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"titleIconItem.icon\"\n [iconType]=\"titleIconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (titleIconItem.label) {\n <span [attr.title]=\"ellipsisTitleText(titleIconItem.label | translate)\">\n {{ titleIconItem.label | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n </span>\n }\n }\n\n @default {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n }\n }\n</div>\n", styles: [":host{display:block;width:100%;min-width:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sdc-table-content{display:flex;align-items:center;width:100%;min-width:0}:host(.sdc-table-cell-content--align-left) .sdc-table-content{justify-content:flex-start;text-align:left}:host(.sdc-table-cell-content--align-center) .sdc-table-content{justify-content:center;text-align:center}:host(.sdc-table-cell-content--align-right) .sdc-table-content{justify-content:flex-end;text-align:right}.sdc-table-multi-content{display:flex;flex-direction:column;gap:.25rem;min-width:0;max-width:100%}.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span,.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label{min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-table-strong-label{font-weight:500}.sdc-table-code-label{color:var(--sdc-tab-primary)}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:.5rem;min-width:0;max-width:100%}.sdc-table-tag{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;width:fit-content;min-width:fit-content;max-width:100%;border-radius:9999px;font-weight:500;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid currentColor;box-sizing:border-box;font-size:.875rem;padding:.35rem .875rem}.sdc-table-tag__icon{flex:0 0 auto}.sdc-table-tag--enabled{background:#dcfce7;color:#16a34a;border-color:#16a34a}.sdc-table-tag--disabled{background:#fee2e2;color:#ef4444;border-color:#ef4444}.sdc-table-button{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%;min-width:0}.sdc-table-button ::ng-deep sdc-button,.sdc-table-button ::ng-deep button{min-height:unset;min-width:unset;max-width:100%}.sdc-table-action-button{width:100%;max-width:100%;min-width:0}.sdc-table-icon,.sdc-table-icon-title{display:inline-flex;align-items:center;gap:.5rem;min-width:0;max-width:100%}.sdc-table-icon__label,.sdc-table-icon-title span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-checkbox input[type=checkbox]{cursor:pointer}.sdc-table-actions{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100%;min-width:0}.sdc-table-actions-trigger{appearance:none;border:1px solid #c9ced6;background:#fff;border-radius:999px;min-width:4.875rem;height:2rem;padding:0 .75rem;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;font:inherit;font-size:.8125rem;color:#374151;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.sdc-table-actions-trigger:hover{background:#f9fafb}.sdc-table-actions-trigger:focus-visible,.sdc-table-actions-trigger--open{outline:none;border-color:#9ca3af;box-shadow:0 0 0 2px #1118270a}.sdc-table-actions-trigger__label{line-height:1;white-space:nowrap}.sdc-table-actions-trigger__icon{font-size:.625rem;line-height:1;color:#6b7280}@media (max-width: 768px){.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}.sdc-table-tag{font-size:.8125rem;padding:.35rem .75rem}.sdc-table-actions-trigger{min-width:4.375rem;height:1.75rem;padding:0 .625rem;font-size:.75rem}.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label,.sdc-table-icon__label,.sdc-table-icon-title span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}:host(.sdc-table-cell-content--align-center) .sdc-table-content,:host(.sdc-table-cell-content--align-right) .sdc-table-content{justify-content:flex-start;text-align:left}}\n"] }]
|
|
24610
|
+
}, template: "<div class=\"sdc-table-content\">\n @if (col.content?.length) {\n <div class=\"sdc-table-multi-content\">\n @for (item of col.content!; track $index) {\n @switch (item.type ?? 'text') {\n @case ('strong') {\n <strong\n [ngStyle]=\"item.style\"\n [class]=\"item.class ?? ''\"\n >{{ cellTextValue(item.field) | translate }}</strong>\n }\n @case ('code') {\n <code [ngStyle]=\"item.style\" [class]=\"item.class ?? ''\">{{ cellTextValue(item.field) }}</code>\n }\n @default {\n <span [ngStyle]=\"item.style\" [class]=\"item.class ?? ''\">{{ cellTextValue(item.field) | translate }}</span>\n }\n }\n }\n </div>\n } @else {\n @switch (col.type ?? 'text') {\n @case ('checkbox-selection') {\n <div class=\"sdc-table-checkbox\">\n <input\n type=\"checkbox\"\n [id]=\"rowCheckboxId\"\n [checked]=\"rowSelected\"\n (change)=\"toggleRow.emit(getCheckedValue($event))\"\n [attr.aria-label]=\"\n 'platform.datacore.accessibility.select_row'\n | translate: { name: (rowLabel | translate) }\n \"\n [attr.aria-checked]=\"rowSelected\"\n />\n <label [attr.for]=\"rowCheckboxId\" class=\"sr-only\">\n {{\n 'platform.datacore.accessibility.select_row'\n | translate: { name: (rowLabel | translate) }\n }}\n </label>\n </div>\n }\n\n @case ('date') {\n <span class=\"sdc-table-text\" [attr.title]=\"ellipsisTitleText(formatDate())\">{{ formatDate() }}</span>\n }\n\n @case ('strong') {\n <span class=\"sdc-table-strong-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n\n @case ('code') {\n <code class=\"sdc-table-code-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue())\">{{ displayText() }}</code>\n }\n\n @case ('currency') {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(formatCurrency())\">{{ formatCurrency() }}</span>\n }\n\n @case ('tag') {\n <div class=\"sdc-table-tags\">\n @for (tagItem of tagItems(); track tagItem.label + '-' + $index) {\n <span\n class=\"sdc-table-tag\"\n [class.sdc-table-tag--enabled]=\"tagItem.tone === 'enabled'\"\n [class.sdc-table-tag--disabled]=\"tagItem.tone === 'disabled'\"\n [ngStyle]=\"tagItem.styles\"\n [attr.title]=\"tagItem.tooltip ? (tagItem.tooltip | translate) : null\"\n >\n @if (tagItem.icon) {\n <sdc-icon-renderer\n class=\"sdc-table-tag__icon\"\n [icon]=\"tagItem.icon\"\n [iconType]=\"tagItem.iconType\"\n [size]=\"tagIconSize\"\n ></sdc-icon-renderer>\n }\n {{ tagItem.label | translate }}\n </span>\n }\n </div>\n }\n\n @case ('button') {\n <div class=\"sdc-table-button\">\n <sdc-button\n class=\"sdc-table-action-button\"\n [size]=\"cellConfigs.button.size ?? 'default'\"\n [priority]=\"cellConfigs.button.priority || 'primary'\"\n [icon]=\"cellConfigs.button.icon\"\n [label]=\"cellConfigs.button.label ?? ''\"\n [disabled]=\"cellConfigs.button.disabled ?? false\"\n [title]=\"cellConfigs.button.tooltip\"\n [attr.size]=\"cellConfigs.button.size\"\n [attr.priority]=\"cellConfigs.button.priority || 'primary'\"\n [attr.severity]=\"cellConfigs.button.priority || 'primary'\"\n [attr.icon]=\"cellConfigs.button.icon\"\n [attr.label]=\"cellConfigs.button.label\"\n [attr.disabled]=\"cellConfigs.button.disabled ? '' : null\"\n [attr.title]=\"cellConfigs.button.tooltip || null\"\n [attr.aria-label]=\"\n (buttonAriaLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.data-key]=\"buttonKey()\"\n (click)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.enter)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.space)=\"$event.preventDefault(); cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n ></sdc-button>\n </div>\n }\n\n @case ('actions') {\n <div\n class=\"sdc-table-actions\"\n [class.sdc-table-actions--open]=\"actionsMenuOpen\"\n >\n <button\n #actionsTrigger\n type=\"button\"\n class=\"sdc-table-actions-trigger\"\n [class.sdc-table-actions-trigger--open]=\"actionsMenuOpen\"\n [attr.aria-label]=\"\n (actionsButtonLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-controls]=\"actionsMenuOpen ? actionsMenuId : null\"\n [attr.aria-expanded]=\"actionsMenuOpen\"\n (click)=\"onActionsClick($event, actionsTrigger)\"\n >\n <span class=\"sdc-table-actions-trigger__label\">\n {{ actionsButtonLabel() | translate }}\n </span>\n <i class=\"fas fa-chevron-down sdc-table-actions-trigger__icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n\n @case ('icon') {\n @if (iconPresentation(); as iconItem) {\n <span\n class=\"sdc-table-icon\"\n [ngStyle]=\"iconItem.colorStyle\"\n [attr.title]=\"iconItem.tooltip ? (iconItem.tooltip | translate) : null\"\n [attr.aria-label]=\"\n (iconItem.label || iconItem.tooltip)\n ? ((iconItem.label || iconItem.tooltip)! | translate)\n : null\n \"\n >\n @if (iconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"iconItem.icon\"\n [iconType]=\"iconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (iconItem.label) {\n <span class=\"sdc-table-icon__label\">{{ iconItem.label | translate }}</span>\n }\n </span>\n }\n }\n\n @case ('icon-title') {\n @if (titleIconPresentation(); as titleIconItem) {\n <span\n class=\"sdc-table-icon-title\"\n [ngStyle]=\"titleIconItem.colorStyle\"\n [attr.title]=\"titleIconItem.tooltip ? (titleIconItem.tooltip | translate) : null\"\n >\n @if (titleIconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"titleIconItem.icon\"\n [iconType]=\"titleIconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (titleIconItem.label) {\n <span [attr.title]=\"ellipsisTitleText(titleIconItem.label | translate)\">\n {{ titleIconItem.label | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n </span>\n }\n }\n\n @default {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n }\n }\n</div>\n", styles: [":host{display:block;width:100%;min-width:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sdc-table-content{display:flex;align-items:center;width:100%;min-width:0}:host(.sdc-table-cell-content--align-left) .sdc-table-content{justify-content:flex-start;text-align:left}:host(.sdc-table-cell-content--align-center) .sdc-table-content{justify-content:center;text-align:center}:host(.sdc-table-cell-content--align-right) .sdc-table-content{justify-content:flex-end;text-align:right}.sdc-table-multi-content{display:flex;flex-direction:column;gap:.25rem;min-width:0;max-width:100%}.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span,.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label{min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-table-strong-label{font-weight:500}.sdc-table-code-label{color:var(--sdc-tab-primary)}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:.5rem;min-width:0;max-width:100%}.sdc-table-tag{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;width:fit-content;min-width:fit-content;max-width:100%;border-radius:9999px;font-weight:500;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid currentColor;box-sizing:border-box;font-size:.875rem;padding:.35rem .875rem}.sdc-table-tag__icon{flex:0 0 auto}.sdc-table-tag--enabled{background:#dcfce7;color:#16a34a;border-color:#16a34a}.sdc-table-tag--disabled{background:#fee2e2;color:#ef4444;border-color:#ef4444}.sdc-table-button{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%;min-width:0}.sdc-table-button ::ng-deep sdc-button,.sdc-table-button ::ng-deep button{min-height:unset;min-width:unset;max-width:100%}.sdc-table-action-button{width:100%;max-width:100%;min-width:0}.sdc-table-icon,.sdc-table-icon-title{display:inline-flex;align-items:center;gap:.5rem;min-width:0;max-width:100%}.sdc-table-icon__label,.sdc-table-icon-title span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-checkbox input[type=checkbox]{cursor:pointer}.sdc-table-actions{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100%;min-width:0}.sdc-table-actions-trigger{appearance:none;border:1px solid #c9ced6;background:#fff;border-radius:999px;min-width:4.875rem;height:2rem;padding:0 .75rem;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;font:inherit;font-size:.8125rem;color:#374151;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.sdc-table-actions-trigger:hover{background:#f9fafb}.sdc-table-actions-trigger:focus-visible,.sdc-table-actions-trigger--open{outline:none;border-color:#9ca3af;box-shadow:0 0 0 2px #1118270a}.sdc-table-actions-trigger__label{line-height:1;white-space:nowrap}.sdc-table-actions-trigger__icon{font-size:.625rem;line-height:1;color:#6b7280}@media (max-width: 768px){.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}.sdc-table-tag{font-size:.8125rem;padding:.35rem .75rem}.sdc-table-actions-trigger{min-width:4.375rem;height:1.75rem;padding:0 .625rem;font-size:.75rem}.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label,.sdc-table-icon__label,.sdc-table-icon-title span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}:host(.sdc-table-cell-content--align-center) .sdc-table-content,:host(.sdc-table-cell-content--align-right) .sdc-table-content{justify-content:flex-start;text-align:left}}\n"] }]
|
|
24400
24611
|
}], propDecorators: { cellConfigs: [{
|
|
24401
24612
|
type: Input,
|
|
24402
24613
|
args: [{ required: true }]
|
|
@@ -24411,6 +24622,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
24411
24622
|
args: [{ required: true }]
|
|
24412
24623
|
}], actionsMenuOpen: [{
|
|
24413
24624
|
type: Input
|
|
24625
|
+
}], actionsMenuId: [{
|
|
24626
|
+
type: Input
|
|
24414
24627
|
}], defaultTextOverflow: [{
|
|
24415
24628
|
type: Input
|
|
24416
24629
|
}], rowCheckboxId: [{
|
|
@@ -24524,6 +24737,7 @@ function buildTableCellConfigMap(options) {
|
|
|
24524
24737
|
}
|
|
24525
24738
|
|
|
24526
24739
|
class TableComponent {
|
|
24740
|
+
actionsMenuIdSequence = 0;
|
|
24527
24741
|
colsSignal = signal([]);
|
|
24528
24742
|
dataSignal = signal([]);
|
|
24529
24743
|
loadingSignal = signal(false);
|
|
@@ -24664,7 +24878,7 @@ class TableComponent {
|
|
|
24664
24878
|
this.closeActionsMenu();
|
|
24665
24879
|
}
|
|
24666
24880
|
onEscapeKey() {
|
|
24667
|
-
this.closeActionsMenu();
|
|
24881
|
+
this.closeActionsMenu(TableMenuFocusTarget.Trigger);
|
|
24668
24882
|
}
|
|
24669
24883
|
onWindowResize() {
|
|
24670
24884
|
this.viewportWidthSignal.set(getViewportWidth());
|
|
@@ -24821,18 +25035,26 @@ class TableComponent {
|
|
|
24821
25035
|
const actionsOptions = this.cellCfg('actions');
|
|
24822
25036
|
const items = this.actionItemsFor(row, actionsOptions);
|
|
24823
25037
|
const rect = triggerElement.getBoundingClientRect();
|
|
25038
|
+
const menuId = this.nextActionsMenuId();
|
|
24824
25039
|
this.openMenuState.set({
|
|
24825
25040
|
row,
|
|
24826
25041
|
col,
|
|
24827
25042
|
items,
|
|
25043
|
+
menuId,
|
|
24828
25044
|
closeOnClick: actionsOptions?.closeOnClick !== false,
|
|
25045
|
+
trigger: triggerElement,
|
|
24829
25046
|
top: rect.bottom + TABLE_MENU_GAP_PX,
|
|
24830
25047
|
left: rect.left,
|
|
24831
25048
|
width: rect.width
|
|
24832
25049
|
});
|
|
24833
25050
|
}
|
|
24834
|
-
closeActionsMenu() {
|
|
25051
|
+
closeActionsMenu(focusTarget = TableMenuFocusTarget.None) {
|
|
25052
|
+
const menu = this.openMenuState();
|
|
24835
25053
|
this.openMenuState.set(null);
|
|
25054
|
+
if (!menu || focusTarget === TableMenuFocusTarget.None) {
|
|
25055
|
+
return;
|
|
25056
|
+
}
|
|
25057
|
+
queueMicrotask(() => this.focusClosedMenuTarget(menu.trigger, menu.menuId, focusTarget));
|
|
24836
25058
|
}
|
|
24837
25059
|
isActionsMenuOpen(row, col) {
|
|
24838
25060
|
const menu = this.openMenuState();
|
|
@@ -24863,6 +25085,9 @@ class TableComponent {
|
|
|
24863
25085
|
this.closeActionsMenu();
|
|
24864
25086
|
}
|
|
24865
25087
|
}
|
|
25088
|
+
onMenuClose(event) {
|
|
25089
|
+
this.closeActionsMenu(event.focusTarget);
|
|
25090
|
+
}
|
|
24866
25091
|
onActionSelect(row, col, item) {
|
|
24867
25092
|
if (item.disabled) {
|
|
24868
25093
|
return;
|
|
@@ -24907,8 +25132,31 @@ class TableComponent {
|
|
|
24907
25132
|
}
|
|
24908
25133
|
return item.disabled === true;
|
|
24909
25134
|
}
|
|
25135
|
+
nextActionsMenuId() {
|
|
25136
|
+
this.actionsMenuIdSequence += 1;
|
|
25137
|
+
return `sdc-table-actions-menu-${this.actionsMenuIdSequence}`;
|
|
25138
|
+
}
|
|
25139
|
+
focusClosedMenuTarget(trigger, menuId, focusTarget) {
|
|
25140
|
+
if (!trigger.isConnected) {
|
|
25141
|
+
return;
|
|
25142
|
+
}
|
|
25143
|
+
if (focusTarget === TableMenuFocusTarget.Trigger) {
|
|
25144
|
+
trigger.focus();
|
|
25145
|
+
return;
|
|
25146
|
+
}
|
|
25147
|
+
const ownerDocument = trigger.ownerDocument;
|
|
25148
|
+
const menuElement = ownerDocument.getElementById(menuId);
|
|
25149
|
+
const focusableElements = getFocusableElements(ownerDocument).filter((element) => !menuElement?.contains(element));
|
|
25150
|
+
const currentIndex = focusableElements.indexOf(trigger);
|
|
25151
|
+
if (currentIndex === -1) {
|
|
25152
|
+
return;
|
|
25153
|
+
}
|
|
25154
|
+
const targetIndex = focusTarget === TableMenuFocusTarget.Next ? currentIndex + 1 : currentIndex - 1;
|
|
25155
|
+
const nextElement = focusableElements[targetIndex];
|
|
25156
|
+
nextElement?.focus();
|
|
25157
|
+
}
|
|
24910
25158
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
24911
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableComponent, isStandalone: true, selector: "sdc-table", inputs: { cols: "cols", data: "data", loading: "loading", config: "config", ariaLabel: "ariaLabel" }, outputs: { action: "action", lazyLoad: "lazyLoad" }, host: { listeners: { "document:click": "onDocumentClick()", "document:keydown.escape": "onEscapeKey()", "window:resize": "onWindowResize()", "window:scroll": "onWindowScroll()" } }, ngImport: i0, template: "<section\n class=\"sdc-table\"\n [class.sdc-table-stack]=\"isMobile()\"\n [class.sdc-table-filtered]=\"!!globalFilter().trim()\"\n [class.sdc-table--loading]=\"isLoading\"\n [class.sdc-table--initial-loading]=\"showInitialLoading()\"\n>\n <sdc-loading-state\n class=\"sdc-table-loading-wrap\"\n [loading]=\"isLoading\"\n [blockWindow]=\"false\"\n [blockDelayMs]=\"0\"\n [indicator]=\"'dots'\"\n >\n <div class=\"sdc-table-shell\" [style.--sdc-table-body-height.px]=\"bodyViewportHeightPx()\">\n @if (showSearch()) {\n <div class=\"sdc-table-caption\">\n <div class=\"sdc-table-caption__search\">\n <sdc-searchbox\n [disabled]=\"isLoading\"\n [placeholder]=\"searchPlaceholder()\"\n [triggerMode]=\"triggerMode()\"\n (onSearch)=\"onSearchTerm($event)\"\n (onClear)=\"onClearSearch()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.search_field' | translate\"\n />\n </div>\n </div>\n }\n\n @if (!isMobile()) {\n <div class=\"sdc-table-scroll\" [style.--sdc-table-min-width.px]=\"tableMinWidthPx()\">\n <table\n class=\"sdc-table-grid\"\n role=\"table\"\n [attr.aria-label]=\"tableAriaLabelKey() | translate\"\n [attr.aria-rowcount]=\"totalRecords()\"\n [attr.aria-busy]=\"isLoading\"\n >\n <colgroup>\n @for (col of cols; track $index) {\n <col [style.width]=\"col.width ?? (columnMinWidthPx(col) + 'px')\" />\n }\n </colgroup>\n\n <thead>\n <tr role=\"row\">\n @for (col of cols; track $index) {\n <th\n scope=\"col\"\n role=\"columnheader\"\n [class.sdc-table-th-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-th-currency]=\"col.type === 'currency'\"\n [class.sdc-table-th-button]=\"col.type === 'button'\"\n [class.sdc-table-th-actions]=\"col.type === 'actions'\"\n [class.sdc-table-sortable]=\"isSortableColumn(col)\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [attr.aria-sort]=\"getSortAriaAttribute(col)\"\n [attr.tabindex]=\"isSortableColumn(col) ? 0 : null\"\n [attr.aria-label]=\"\n isSortableColumn(col)\n ? (\n (col.header | translate)\n + ' - '\n + ('platform.datacore.accessibility.sortable_column' | translate)\n )\n : (col.header | translate)\n \"\n (click)=\"col.field ? toggleSort(col.field, isSortableColumn(col)) : null\"\n (keydown.enter)=\"col.field ? toggleSort(col.field, isSortableColumn(col)) : null\"\n (keydown.space)=\"$event.preventDefault();\n col.field ? toggleSort(col.field, isSortableColumn(col)) : null\"\n >\n <div class=\"sdc-table-th-inner\" [class.sdc-table-sortable]=\"isSortableColumn(col)\">\n <span class=\"sdc-table-th-label\" aria-hidden=\"true\">{{ col.header | translate }}</span>\n\n <span class=\"sdc-table-sort-overlay\" aria-hidden=\"true\">\n <sdc-table-sort-indicator\n [columnField]=\"col.field || null\"\n [columnType]=\"col.type\"\n [sortable]=\"isSortableColumn(col)\"\n [sortField]=\"sortField()\"\n [sortOrder]=\"sortOrder()\"\n ></sdc-table-sort-indicator>\n </span>\n </div>\n\n @if (col.type === 'checkbox-selection' && (cellsCfg().checkbox.selectAll ?? true)) {\n <span class=\"sdc-table-th-center\">\n <input\n type=\"checkbox\"\n [id]=\"'select-all-checkbox'\"\n [checked]=\"isPageFullySelected()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelectPage(getCheckedValue($event))\"\n (keydown.space)=\"$event.preventDefault(); toggleSelectPage(!isPageFullySelected())\"\n [attr.aria-label]=\"'platform.datacore.accessibility.select_all_rows' | translate\"\n [attr.aria-checked]=\"isPageFullySelected()\"\n />\n <label for=\"select-all-checkbox\" class=\"sr-only\">\n {{ 'platform.datacore.accessibility.select_all_rows' | translate }}\n </label>\n </span>\n }\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (showInitialLoading()) {\n @for (rowIndex of initialLoadingRows(); track rowIndex; let r = $index) {\n <tr class=\"sdc-table-initial-loading-row\" role=\"row\" [attr.aria-rowindex]=\"r + 1\" aria-hidden=\"true\">\n @for (col of cols; track $index) {\n <td\n class=\"sdc-table-td sdc-table-tdc sdc-table-td--initial-loading\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-td-currency]=\"col.type === 'currency'\"\n [class.sdc-table-td-button]=\"col.type === 'button'\"\n [class.sdc-table-td-actions]=\"col.type === 'actions'\"\n [ngClass]=\"columnAlignClass(col)\"\n [attr.data-title]=\"col.header | translate\"\n role=\"cell\"\n >\n <div class=\"sdc-table-td-val sdc-table-td-val--initial-loading\"></div>\n </td>\n }\n </tr>\n }\n } @else {\n @for (row of pageData(); track $index; let r = $index) {\n <tr role=\"row\" [attr.aria-rowindex]=\"r + 1\">\n @for (col of cols; track $index) {\n <td\n class=\"sdc-table-td sdc-table-tdc\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-td-currency]=\"col.type === 'currency'\"\n [class.sdc-table-td-button]=\"col.type === 'button'\"\n [class.sdc-table-td-actions]=\"col.type === 'actions'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [ngClass]=\"columnAlignClass(col)\"\n [attr.data-title]=\"col.header | translate\"\n [attr.id]=\"col.colId || null\"\n role=\"cell\"\n >\n @if (col.cellTag === 'span') {\n <span class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </span>\n } @else if (col.cellTag === 'i') {\n <i class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </i>\n } @else if (col.cellTag === 'p') {\n <p class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </p>\n } @else {\n <div class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </div>\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n\n @if (!isLoading && options().empty?.show !== false && totalRecords() === 0) {\n <sdc-empty-state\n id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-table-empty-state\"\n [style.min-height.px]=\"emptyBodyHeightPx()\"\n ></sdc-empty-state>\n }\n </div>\n } @else {\n <div\n class=\"sdc-table-mobile-list\"\n [attr.aria-label]=\"tableAriaLabelKey() | translate\"\n [attr.aria-busy]=\"isLoading\"\n >\n @if (showInitialLoading()) {\n @for (rowIndex of initialLoadingRows(); track rowIndex; let r = $index) {\n <div class=\"sdc-table-mobile-card sdc-table-mobile-card--loading\" aria-hidden=\"true\">\n @for (col of cols; track $index) {\n <div class=\"sdc-table-mobile-field sdc-table-mobile-field--loading\">\n <div class=\"sdc-table-mobile-label sdc-table-mobile-label--loading\"></div>\n <div class=\"sdc-table-mobile-skeleton\"></div>\n </div>\n }\n </div>\n }\n } @else {\n @for (row of pageData(); track $index; let r = $index) {\n <div class=\"sdc-table-mobile-card\">\n @for (col of cols; track $index) {\n <div\n class=\"sdc-table-mobile-field\"\n [class.sdc-table-mobile-field--full-width]=\"\n col.type === 'button' || col.type === 'actions' || col.type === 'checkbox-selection'\n \"\n [class.sdc-table-mobile-field--selected]=\"sortField() === col.field\"\n [class.sdc-table-mobile-field--sortable]=\"col.field && isSortableColumn(col)\"\n (click)=\"col.field && toggleSort(col.field, isSortableColumn(col))\"\n >\n @if (mobileFieldLabel(col)) {\n <div class=\"sdc-table-mobile-label-wrap\">\n @if (col.field && isSortableColumn(col)) {\n <button\n type=\"button\"\n class=\"sdc-table-mobile-label sdc-table-mobile-label--sortable\"\n [attr.aria-label]=\"\n (mobileFieldLabel(col) | translate)\n + ' - '\n + ('platform.datacore.accessibility.sortable_column' | translate)\n \"\n (click)=\"$event.stopPropagation(); toggleSort(col.field, isSortableColumn(col))\"\n (keydown.enter)=\"toggleSort(col.field, isSortableColumn(col))\"\n (keydown.space)=\"$event.preventDefault(); toggleSort(col.field, isSortableColumn(col))\"\n >\n <span>{{ mobileFieldLabel(col) | translate }}</span>\n <sdc-table-sort-indicator\n [columnField]=\"col.field || null\"\n [columnType]=\"col.type\"\n [sortable]=\"isSortableColumn(col)\"\n [sortField]=\"sortField()\"\n [sortOrder]=\"sortOrder()\"\n ></sdc-table-sort-indicator>\n </button>\n } @else {\n <div class=\"sdc-table-mobile-label\">\n <span>{{ mobileFieldLabel(col) | translate }}</span>\n </div>\n }\n </div>\n }\n\n <div class=\"sdc-table-mobile-value\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n\n @if (!isLoading && options().empty?.show !== false && totalRecords() === 0) {\n <sdc-empty-state\n id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-table-empty-state\"\n [style.min-height.px]=\"emptyBodyHeightPx()\"\n ></sdc-empty-state>\n }\n }\n\n @if (showPaginator()) {\n <div class=\"sdc-table-paginator\">\n <sdc-paginator\n [first]=\"first()\"\n [rows]=\"rows()\"\n [totalRecords]=\"totalRecords()\"\n [rowsPerPageOptions]=\"isMobile() ? [] : rowsPerPageOptions()\"\n [isMobile]=\"isMobile()\"\n [totalRecordsLabel]=\"totalRecordsLabel()\"\n (pageChange)=\"onPageChange($event)\"\n ></sdc-paginator>\n </div>\n }\n </div>\n </sdc-loading-state>\n</section>\n\n@if (openMenuState(); as menu) {\n <sdc-table-actions-menu\n [items]=\"menu.items\"\n [top]=\"menu.top\"\n [left]=\"menu.left\"\n [width]=\"menu.width\"\n (select)=\"onPortalActionClick($event)\"\n ></sdc-table-actions-menu>\n}\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sdc-table{width:100%;box-sizing:border-box;overflow:visible;background:var(--sdc-table-bg-card)}.sdc-table-shell{display:block;--sdc-table-body-height: 220px;overflow:visible}.sdc-table-loading-wrap{display:block;width:100%;overflow:visible}.sdc-table-caption{width:100%;justify-content:flex-end;display:flex;padding:.75rem 0}.sdc-table-caption__search{width:min(100%,22rem)}.sdc-table-scroll{width:100%;overflow-x:auto;overflow-y:visible}.sdc-table-grid{min-width:var(--sdc-table-min-width, 100%);width:100%;border-collapse:collapse;table-layout:auto}thead th{padding:var(--sdc-table-padding-cell);background:var(--sdc-table-bg-card);border-bottom:1px solid var(--sdc-formfield-default-border);-webkit-user-select:none;user-select:none;transition:background var(--sdc-table-transition-fast),border var(--sdc-table-transition-fast);min-height:44px;position:relative;overflow:hidden;text-align:left}thead th.sdc-table-sortable{cursor:pointer}thead th.sdc-table-sortable:hover{background:var(--sdc-table-th-hover-bg)}thead th.sdc-table-sortable:focus,thead th.sdc-table-sortable:focus-visible{outline:2px solid var(--sdc-tab-primary, #007bff);outline-offset:-2px;box-shadow:inset 0 0 0 3px #007bff33;position:relative;z-index:1}thead th.sdc-table-is-selected{background:var(--sdc-table-th-selected-bg)!important}.sdc-table-th-inner{display:flex;align-items:center;gap:var(--sdc-table-gap-th-inner);width:100%;min-width:0;overflow:hidden}.sdc-table-sort-overlay{position:relative;margin-left:auto}tbody td{padding:.5rem var(--sdc-table-padding-cell);border-bottom:1px solid var(--sdc-table-border-gray);vertical-align:middle;overflow:visible}.sdc-table-td-val{display:flex;align-items:center;width:100%;min-width:0}.sdc-table-td-val--initial-loading{min-height:1.5rem}.sdc-table-initial-loading-row{background:var(--sdc-table-bg-card)}.sdc-table-td--initial-loading{height:3.625rem}.sdc-table-th-label{color:#333!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;display:block;flex:1 1 auto}.sdc-table-empty-state{display:flex;align-items:center;justify-content:center;min-height:var(--sdc-table-body-height);padding:0}.sdc-table--loading .sdc-table-shell{pointer-events:none;-webkit-user-select:none;user-select:none}thead th.sdc-table-th-checkbox .sdc-table-th-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:flex-end;padding-right:10px;pointer-events:none}thead th.sdc-table-th-checkbox .sdc-table-th-center input{pointer-events:auto}thead th.sdc-table-th-checkbox .sdc-table-th-inner{padding-right:28px}.sdc-table-paginator{padding:.5rem 0}.sdc-table-td-align-left{text-align:left}.sdc-table-td-align-center{text-align:center}.sdc-table-td-align-right{text-align:right}.sdc-table-cell-content--nowrap .sdc-table-text,.sdc-table-cell-content--nowrap .sdc-table-strong-label,.sdc-table-cell-content--nowrap .sdc-table-code-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.sdc-table-mobile-list{display:flex;flex-direction:column;gap:.375rem;width:100%}.sdc-table-mobile-card{display:flex;flex-direction:column;border:1px solid var(--sdc-border-strong, #d1d5db);border-radius:.25rem;background:var(--sdc-surface-bg, #ffffff);overflow:hidden}.sdc-table-mobile-card--loading{gap:0}.sdc-table-mobile-field{display:grid;grid-template-columns:minmax(0,8.5rem) minmax(0,1fr);gap:.875rem 1rem;align-items:start;padding:.9rem 1rem;border-top:1px solid var(--sdc-border-default, #cccccc);background:transparent}.sdc-table-mobile-field:first-child{border-top:0}.sdc-table-mobile-field--selected{background:#11182705}.sdc-table-mobile-field--full-width{grid-template-columns:1fr;gap:.625rem}.sdc-table-mobile-label-wrap,.sdc-table-mobile-value{min-width:0}.sdc-table-mobile-label,.sdc-table-mobile-label--sortable{display:flex;align-items:center;justify-content:space-between;gap:.625rem;width:100%;margin:0;padding:0;border:0;background:transparent;color:var(--sdc-text-muted, #6b7280);font:inherit;font-size:.75rem;font-weight:600;line-height:1.35;letter-spacing:.01em;text-align:left}.sdc-table-mobile-label--sortable{cursor:pointer}.sdc-table-mobile-label--sortable:focus-visible{outline:2px solid var(--sdc-tab-primary, #428bca);outline-offset:3px;border-radius:.375rem}.sdc-table-mobile-label--loading{width:7rem;height:.75rem;border-radius:999px;background:linear-gradient(90deg,#94a3b82e,#94a3b852,#94a3b82e)}.sdc-table-mobile-skeleton{min-height:2.75rem;border-radius:.75rem;background:linear-gradient(90deg,#94a3b81f,#94a3b833,#94a3b81f)}.sdc-table-mobile-value{display:flex;align-items:flex-start}@media (max-width: 768px){.sdc-table-caption__search{width:100%}.sdc-table-paginator{justify-content:center!important;border-top:1px solid var(--sdc-table-border-gray)}.sdc-table-mobile-field--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.sdc-table-mobile-field--sortable:hover{background:#11182706}}@media (max-width: 540px){.sdc-table-mobile-field{grid-template-columns:1fr;gap:.5rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SearchboxComponent, selector: "sdc-searchbox", inputs: ["triggerMode", "debounceTimeMs", "ariaLabel", "inputRole", "inputAriaControls", "inputAriaDescribedBy", "inputAriaActiveDescendant", "inputAriaHaspopup", "inputAriaExpanded", "inputAutocomplete", "submitOnEnter", "clearOnEscape"], outputs: ["debouncedValueChange", "onSearch", "onClear"] }, { kind: "component", type: PaginatorComponent, selector: "sdc-paginator", inputs: ["first", "rows", "totalRecords", "rowsPerPageOptions", "showRowsPerPageSelector", "isMobile", "totalRecordsLabel"], outputs: ["pageChange"] }, { kind: "component", type: LoadingStateComponent, selector: "sdc-loading-state", inputs: ["indicator", "id", "blockWindow", "blockDelayMs", "unblockDelayMs", "loading"] }, { kind: "component", type: EmptyStateComponent, selector: "sdc-empty-state", inputs: ["id", "title", "variant", "titleParams", "iconClass", "description", "descriptionParams", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "primaryActionLabelParams", "secondaryActionLabel", "secondaryActionLabelParams", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: TableSortIndicatorComponent, selector: "sdc-table-sort-indicator", inputs: ["columnField", "columnType", "sortField", "sortOrder", "sortable"] }, { kind: "component", type: TableCellContentComponent, selector: "sdc-table-cell-content", inputs: ["cellConfigs", "col", "resolveValue", "row", "actionsMenuOpen", "defaultTextOverflow", "rowCheckboxId", "rowLabel", "rowSelected"], outputs: ["toggleActionsMenu", "toggleRow", "triggerButtonAction"] }, { kind: "component", type: TableActionsMenuComponent, selector: "sdc-table-actions-menu", inputs: ["items", "left", "top", "width"], outputs: ["select"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
25159
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableComponent, isStandalone: true, selector: "sdc-table", inputs: { cols: "cols", data: "data", loading: "loading", config: "config", ariaLabel: "ariaLabel" }, outputs: { action: "action", lazyLoad: "lazyLoad" }, host: { listeners: { "document:click": "onDocumentClick()", "document:keydown.escape": "onEscapeKey()", "window:resize": "onWindowResize()", "window:scroll": "onWindowScroll()" } }, ngImport: i0, template: "<section\n class=\"sdc-table\"\n [class.sdc-table-stack]=\"isMobile()\"\n [class.sdc-table-filtered]=\"!!globalFilter().trim()\"\n [class.sdc-table--loading]=\"isLoading\"\n [class.sdc-table--initial-loading]=\"showInitialLoading()\"\n>\n <sdc-loading-state\n class=\"sdc-table-loading-wrap\"\n [loading]=\"isLoading\"\n [blockWindow]=\"false\"\n [blockDelayMs]=\"0\"\n [indicator]=\"'dots'\"\n >\n <div class=\"sdc-table-shell\" [style.--sdc-table-body-height.px]=\"bodyViewportHeightPx()\">\n @if (showSearch()) {\n <div class=\"sdc-table-caption\">\n <div class=\"sdc-table-caption__search\">\n <sdc-searchbox\n [disabled]=\"isLoading\"\n [placeholder]=\"searchPlaceholder()\"\n [triggerMode]=\"triggerMode()\"\n (onSearch)=\"onSearchTerm($event)\"\n (onClear)=\"onClearSearch()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.search_field' | translate\"\n />\n </div>\n </div>\n }\n\n @if (!isMobile()) {\n <div class=\"sdc-table-scroll\" [style.--sdc-table-min-width.px]=\"tableMinWidthPx()\">\n <table\n class=\"sdc-table-grid\"\n role=\"table\"\n [attr.aria-label]=\"tableAriaLabelKey() | translate\"\n [attr.aria-rowcount]=\"totalRecords()\"\n [attr.aria-busy]=\"isLoading\"\n >\n <colgroup>\n @for (col of cols; track $index) {\n <col [style.width]=\"col.width ?? (columnMinWidthPx(col) + 'px')\" />\n }\n </colgroup>\n\n <thead>\n <tr role=\"row\">\n @for (col of cols; track $index) {\n <th\n scope=\"col\"\n role=\"columnheader\"\n [class.sdc-table-th-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-th-currency]=\"col.type === 'currency'\"\n [class.sdc-table-th-button]=\"col.type === 'button'\"\n [class.sdc-table-th-actions]=\"col.type === 'actions'\"\n [class.sdc-table-sortable]=\"isSortableColumn(col)\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [attr.aria-sort]=\"getSortAriaAttribute(col)\"\n [attr.tabindex]=\"isSortableColumn(col) ? 0 : null\"\n [attr.aria-label]=\"\n isSortableColumn(col)\n ? (\n (col.header | translate)\n + ' - '\n + ('platform.datacore.accessibility.sortable_column' | translate)\n )\n : (col.header | translate)\n \"\n (click)=\"col.field ? toggleSort(col.field, isSortableColumn(col)) : null\"\n (keydown.enter)=\"col.field ? toggleSort(col.field, isSortableColumn(col)) : null\"\n (keydown.space)=\"$event.preventDefault();\n col.field ? toggleSort(col.field, isSortableColumn(col)) : null\"\n >\n <div class=\"sdc-table-th-inner\" [class.sdc-table-sortable]=\"isSortableColumn(col)\">\n <span class=\"sdc-table-th-label\" aria-hidden=\"true\">{{ col.header | translate }}</span>\n\n <span class=\"sdc-table-sort-overlay\" aria-hidden=\"true\">\n <sdc-table-sort-indicator\n [columnField]=\"col.field || null\"\n [columnType]=\"col.type\"\n [sortable]=\"isSortableColumn(col)\"\n [sortField]=\"sortField()\"\n [sortOrder]=\"sortOrder()\"\n ></sdc-table-sort-indicator>\n </span>\n </div>\n\n @if (col.type === 'checkbox-selection' && (cellsCfg().checkbox.selectAll ?? true)) {\n <span class=\"sdc-table-th-center\">\n <input\n type=\"checkbox\"\n [id]=\"'select-all-checkbox'\"\n [checked]=\"isPageFullySelected()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelectPage(getCheckedValue($event))\"\n (keydown.space)=\"$event.preventDefault(); toggleSelectPage(!isPageFullySelected())\"\n [attr.aria-label]=\"'platform.datacore.accessibility.select_all_rows' | translate\"\n [attr.aria-checked]=\"isPageFullySelected()\"\n />\n <label for=\"select-all-checkbox\" class=\"sr-only\">\n {{ 'platform.datacore.accessibility.select_all_rows' | translate }}\n </label>\n </span>\n }\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (showInitialLoading()) {\n @for (rowIndex of initialLoadingRows(); track rowIndex; let r = $index) {\n <tr class=\"sdc-table-initial-loading-row\" role=\"row\" [attr.aria-rowindex]=\"r + 1\" aria-hidden=\"true\">\n @for (col of cols; track $index) {\n <td\n class=\"sdc-table-td sdc-table-tdc sdc-table-td--initial-loading\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-td-currency]=\"col.type === 'currency'\"\n [class.sdc-table-td-button]=\"col.type === 'button'\"\n [class.sdc-table-td-actions]=\"col.type === 'actions'\"\n [ngClass]=\"columnAlignClass(col)\"\n [attr.data-title]=\"col.header | translate\"\n role=\"cell\"\n >\n <div class=\"sdc-table-td-val sdc-table-td-val--initial-loading\"></div>\n </td>\n }\n </tr>\n }\n } @else {\n @for (row of pageData(); track $index; let r = $index) {\n <tr role=\"row\" [attr.aria-rowindex]=\"r + 1\">\n @for (col of cols; track $index) {\n <td\n class=\"sdc-table-td sdc-table-tdc\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-td-currency]=\"col.type === 'currency'\"\n [class.sdc-table-td-button]=\"col.type === 'button'\"\n [class.sdc-table-td-actions]=\"col.type === 'actions'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [ngClass]=\"columnAlignClass(col)\"\n [attr.data-title]=\"col.header | translate\"\n [attr.id]=\"col.colId || null\"\n role=\"cell\"\n >\n @if (col.cellTag === 'span') {\n <span class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n [actionsMenuId]=\"isActionsMenuOpen(row, col) ? openMenuState()?.menuId ?? null : null\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </span>\n } @else if (col.cellTag === 'i') {\n <i class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n [actionsMenuId]=\"isActionsMenuOpen(row, col) ? openMenuState()?.menuId ?? null : null\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </i>\n } @else if (col.cellTag === 'p') {\n <p class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n [actionsMenuId]=\"isActionsMenuOpen(row, col) ? openMenuState()?.menuId ?? null : null\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </p>\n } @else {\n <div class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n [actionsMenuId]=\"isActionsMenuOpen(row, col) ? openMenuState()?.menuId ?? null : null\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </div>\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n\n @if (!isLoading && options().empty?.show !== false && totalRecords() === 0) {\n <sdc-empty-state\n id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-table-empty-state\"\n [style.min-height.px]=\"emptyBodyHeightPx()\"\n ></sdc-empty-state>\n }\n </div>\n } @else {\n <div\n class=\"sdc-table-mobile-list\"\n [attr.aria-label]=\"tableAriaLabelKey() | translate\"\n [attr.aria-busy]=\"isLoading\"\n >\n @if (showInitialLoading()) {\n @for (rowIndex of initialLoadingRows(); track rowIndex; let r = $index) {\n <div class=\"sdc-table-mobile-card sdc-table-mobile-card--loading\" aria-hidden=\"true\">\n @for (col of cols; track $index) {\n <div class=\"sdc-table-mobile-field sdc-table-mobile-field--loading\">\n <div class=\"sdc-table-mobile-label sdc-table-mobile-label--loading\"></div>\n <div class=\"sdc-table-mobile-skeleton\"></div>\n </div>\n }\n </div>\n }\n } @else {\n @for (row of pageData(); track $index; let r = $index) {\n <div class=\"sdc-table-mobile-card\">\n @for (col of cols; track $index) {\n <div\n class=\"sdc-table-mobile-field\"\n [class.sdc-table-mobile-field--full-width]=\"\n col.type === 'button' || col.type === 'actions' || col.type === 'checkbox-selection'\n \"\n [class.sdc-table-mobile-field--selected]=\"sortField() === col.field\"\n [class.sdc-table-mobile-field--sortable]=\"col.field && isSortableColumn(col)\"\n (click)=\"col.field && toggleSort(col.field, isSortableColumn(col))\"\n >\n @if (mobileFieldLabel(col)) {\n <div class=\"sdc-table-mobile-label-wrap\">\n @if (col.field && isSortableColumn(col)) {\n <button\n type=\"button\"\n class=\"sdc-table-mobile-label sdc-table-mobile-label--sortable\"\n [attr.aria-label]=\"\n (mobileFieldLabel(col) | translate)\n + ' - '\n + ('platform.datacore.accessibility.sortable_column' | translate)\n \"\n (click)=\"$event.stopPropagation(); toggleSort(col.field, isSortableColumn(col))\"\n (keydown.enter)=\"toggleSort(col.field, isSortableColumn(col))\"\n (keydown.space)=\"$event.preventDefault(); toggleSort(col.field, isSortableColumn(col))\"\n >\n <span>{{ mobileFieldLabel(col) | translate }}</span>\n <sdc-table-sort-indicator\n [columnField]=\"col.field || null\"\n [columnType]=\"col.type\"\n [sortable]=\"isSortableColumn(col)\"\n [sortField]=\"sortField()\"\n [sortOrder]=\"sortOrder()\"\n ></sdc-table-sort-indicator>\n </button>\n } @else {\n <div class=\"sdc-table-mobile-label\">\n <span>{{ mobileFieldLabel(col) | translate }}</span>\n </div>\n }\n </div>\n }\n\n <div class=\"sdc-table-mobile-value\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n [actionsMenuId]=\"isActionsMenuOpen(row, col) ? openMenuState()?.menuId ?? null : null\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n\n @if (!isLoading && options().empty?.show !== false && totalRecords() === 0) {\n <sdc-empty-state\n id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-table-empty-state\"\n [style.min-height.px]=\"emptyBodyHeightPx()\"\n ></sdc-empty-state>\n }\n }\n\n @if (showPaginator()) {\n <div class=\"sdc-table-paginator\">\n <sdc-paginator\n [first]=\"first()\"\n [rows]=\"rows()\"\n [totalRecords]=\"totalRecords()\"\n [rowsPerPageOptions]=\"isMobile() ? [] : rowsPerPageOptions()\"\n [isMobile]=\"isMobile()\"\n [totalRecordsLabel]=\"totalRecordsLabel()\"\n (pageChange)=\"onPageChange($event)\"\n ></sdc-paginator>\n </div>\n }\n </div>\n </sdc-loading-state>\n</section>\n\n@if (openMenuState(); as menu) {\n <sdc-table-actions-menu\n [items]=\"menu.items\"\n [menuId]=\"menu.menuId\"\n [top]=\"menu.top\"\n [left]=\"menu.left\"\n [width]=\"menu.width\"\n (close)=\"onMenuClose($event)\"\n (select)=\"onPortalActionClick($event)\"\n ></sdc-table-actions-menu>\n}\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sdc-table{width:100%;box-sizing:border-box;overflow:visible;background:var(--sdc-table-bg-card)}.sdc-table-shell{display:block;--sdc-table-body-height: 220px;overflow:visible}.sdc-table-loading-wrap{display:block;width:100%;overflow:visible}.sdc-table-caption{width:100%;justify-content:flex-end;display:flex;padding:.75rem 0}.sdc-table-caption__search{width:min(100%,22rem)}.sdc-table-scroll{width:100%;overflow-x:auto;overflow-y:visible}.sdc-table-grid{min-width:var(--sdc-table-min-width, 100%);width:100%;border-collapse:collapse;table-layout:auto}thead th{padding:var(--sdc-table-padding-cell);background:var(--sdc-table-bg-card);border-bottom:1px solid var(--sdc-formfield-default-border);-webkit-user-select:none;user-select:none;transition:background var(--sdc-table-transition-fast),border var(--sdc-table-transition-fast);min-height:44px;position:relative;overflow:hidden;text-align:left}thead th.sdc-table-sortable{cursor:pointer}thead th.sdc-table-sortable:hover{background:var(--sdc-table-th-hover-bg)}thead th.sdc-table-sortable:focus,thead th.sdc-table-sortable:focus-visible{outline:2px solid var(--sdc-tab-primary, #007bff);outline-offset:-2px;box-shadow:inset 0 0 0 3px #007bff33;position:relative;z-index:1}thead th.sdc-table-is-selected{background:var(--sdc-table-th-selected-bg)!important}.sdc-table-th-inner{display:flex;align-items:center;gap:var(--sdc-table-gap-th-inner);width:100%;min-width:0;overflow:hidden}.sdc-table-sort-overlay{position:relative;margin-left:auto}tbody td{padding:.5rem var(--sdc-table-padding-cell);border-bottom:1px solid var(--sdc-table-border-gray);vertical-align:middle;overflow:visible}.sdc-table-td-val{display:flex;align-items:center;width:100%;min-width:0}.sdc-table-td-val--initial-loading{min-height:1.5rem}.sdc-table-initial-loading-row{background:var(--sdc-table-bg-card)}.sdc-table-td--initial-loading{height:3.625rem}.sdc-table-th-label{color:#333!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;display:block;flex:1 1 auto}.sdc-table-empty-state{display:flex;align-items:center;justify-content:center;min-height:var(--sdc-table-body-height);padding:0}.sdc-table--loading .sdc-table-shell{pointer-events:none;-webkit-user-select:none;user-select:none}thead th.sdc-table-th-checkbox .sdc-table-th-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:flex-end;padding-right:10px;pointer-events:none}thead th.sdc-table-th-checkbox .sdc-table-th-center input{pointer-events:auto}thead th.sdc-table-th-checkbox .sdc-table-th-inner{padding-right:28px}.sdc-table-paginator{padding:.5rem 0}.sdc-table-td-align-left{text-align:left}.sdc-table-td-align-center{text-align:center}.sdc-table-td-align-right{text-align:right}.sdc-table-cell-content--nowrap .sdc-table-text,.sdc-table-cell-content--nowrap .sdc-table-strong-label,.sdc-table-cell-content--nowrap .sdc-table-code-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.sdc-table-mobile-list{display:flex;flex-direction:column;gap:.375rem;width:100%}.sdc-table-mobile-card{display:flex;flex-direction:column;border:1px solid var(--sdc-border-strong, #d1d5db);border-radius:.25rem;background:var(--sdc-surface-bg, #ffffff);overflow:hidden}.sdc-table-mobile-card--loading{gap:0}.sdc-table-mobile-field{display:grid;grid-template-columns:minmax(0,8.5rem) minmax(0,1fr);gap:.875rem 1rem;align-items:start;padding:.9rem 1rem;border-top:1px solid var(--sdc-border-default, #cccccc);background:transparent}.sdc-table-mobile-field:first-child{border-top:0}.sdc-table-mobile-field--selected{background:#11182705}.sdc-table-mobile-field--full-width{grid-template-columns:1fr;gap:.625rem}.sdc-table-mobile-label-wrap,.sdc-table-mobile-value{min-width:0}.sdc-table-mobile-label,.sdc-table-mobile-label--sortable{display:flex;align-items:center;justify-content:space-between;gap:.625rem;width:100%;margin:0;padding:0;border:0;background:transparent;color:var(--sdc-text-muted, #6b7280);font:inherit;font-size:.75rem;font-weight:600;line-height:1.35;letter-spacing:.01em;text-align:left}.sdc-table-mobile-label--sortable{cursor:pointer}.sdc-table-mobile-label--sortable:focus-visible{outline:2px solid var(--sdc-tab-primary, #428bca);outline-offset:3px;border-radius:.375rem}.sdc-table-mobile-label--loading{width:7rem;height:.75rem;border-radius:999px;background:linear-gradient(90deg,#94a3b82e,#94a3b852,#94a3b82e)}.sdc-table-mobile-skeleton{min-height:2.75rem;border-radius:.75rem;background:linear-gradient(90deg,#94a3b81f,#94a3b833,#94a3b81f)}.sdc-table-mobile-value{display:flex;align-items:flex-start}@media (max-width: 768px){.sdc-table-caption__search{width:100%}.sdc-table-paginator{justify-content:center!important;border-top:1px solid var(--sdc-table-border-gray)}.sdc-table-mobile-field--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.sdc-table-mobile-field--sortable:hover{background:#11182706}}@media (max-width: 540px){.sdc-table-mobile-field{grid-template-columns:1fr;gap:.5rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SearchboxComponent, selector: "sdc-searchbox", inputs: ["triggerMode", "debounceTimeMs", "ariaLabel", "inputRole", "inputAriaControls", "inputAriaDescribedBy", "inputAriaActiveDescendant", "inputAriaHaspopup", "inputAriaExpanded", "inputAutocomplete", "submitOnEnter", "clearOnEscape"], outputs: ["debouncedValueChange", "onSearch", "onClear"] }, { kind: "component", type: PaginatorComponent, selector: "sdc-paginator", inputs: ["first", "rows", "totalRecords", "rowsPerPageOptions", "showRowsPerPageSelector", "isMobile", "totalRecordsLabel"], outputs: ["pageChange"] }, { kind: "component", type: LoadingStateComponent, selector: "sdc-loading-state", inputs: ["indicator", "id", "blockWindow", "blockDelayMs", "unblockDelayMs", "loading"] }, { kind: "component", type: EmptyStateComponent, selector: "sdc-empty-state", inputs: ["id", "title", "variant", "titleParams", "iconClass", "description", "descriptionParams", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "primaryActionLabelParams", "secondaryActionLabel", "secondaryActionLabelParams", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: TableSortIndicatorComponent, selector: "sdc-table-sort-indicator", inputs: ["columnField", "columnType", "sortField", "sortOrder", "sortable"] }, { kind: "component", type: TableCellContentComponent, selector: "sdc-table-cell-content", inputs: ["cellConfigs", "col", "resolveValue", "row", "actionsMenuOpen", "actionsMenuId", "defaultTextOverflow", "rowCheckboxId", "rowLabel", "rowSelected"], outputs: ["toggleActionsMenu", "toggleRow", "triggerButtonAction"] }, { kind: "component", type: TableActionsMenuComponent, selector: "sdc-table-actions-menu", inputs: ["ariaLabel", "items", "left", "menuId", "top", "width"], outputs: ["close", "select"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
24912
25160
|
}
|
|
24913
25161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableComponent, decorators: [{
|
|
24914
25162
|
type: Component,
|
|
@@ -24923,7 +25171,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
24923
25171
|
TableSortIndicatorComponent,
|
|
24924
25172
|
TableCellContentComponent,
|
|
24925
25173
|
TableActionsMenuComponent
|
|
24926
|
-
], encapsulation: ViewEncapsulation.Emulated, changeDetection: ChangeDetectionStrategy.OnPush, template: "<section\n class=\"sdc-table\"\n [class.sdc-table-stack]=\"isMobile()\"\n [class.sdc-table-filtered]=\"!!globalFilter().trim()\"\n [class.sdc-table--loading]=\"isLoading\"\n [class.sdc-table--initial-loading]=\"showInitialLoading()\"\n>\n <sdc-loading-state\n class=\"sdc-table-loading-wrap\"\n [loading]=\"isLoading\"\n [blockWindow]=\"false\"\n [blockDelayMs]=\"0\"\n [indicator]=\"'dots'\"\n >\n <div class=\"sdc-table-shell\" [style.--sdc-table-body-height.px]=\"bodyViewportHeightPx()\">\n @if (showSearch()) {\n <div class=\"sdc-table-caption\">\n <div class=\"sdc-table-caption__search\">\n <sdc-searchbox\n [disabled]=\"isLoading\"\n [placeholder]=\"searchPlaceholder()\"\n [triggerMode]=\"triggerMode()\"\n (onSearch)=\"onSearchTerm($event)\"\n (onClear)=\"onClearSearch()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.search_field' | translate\"\n />\n </div>\n </div>\n }\n\n @if (!isMobile()) {\n <div class=\"sdc-table-scroll\" [style.--sdc-table-min-width.px]=\"tableMinWidthPx()\">\n <table\n class=\"sdc-table-grid\"\n role=\"table\"\n [attr.aria-label]=\"tableAriaLabelKey() | translate\"\n [attr.aria-rowcount]=\"totalRecords()\"\n [attr.aria-busy]=\"isLoading\"\n >\n <colgroup>\n @for (col of cols; track $index) {\n <col [style.width]=\"col.width ?? (columnMinWidthPx(col) + 'px')\" />\n }\n </colgroup>\n\n <thead>\n <tr role=\"row\">\n @for (col of cols; track $index) {\n <th\n scope=\"col\"\n role=\"columnheader\"\n [class.sdc-table-th-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-th-currency]=\"col.type === 'currency'\"\n [class.sdc-table-th-button]=\"col.type === 'button'\"\n [class.sdc-table-th-actions]=\"col.type === 'actions'\"\n [class.sdc-table-sortable]=\"isSortableColumn(col)\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [attr.aria-sort]=\"getSortAriaAttribute(col)\"\n [attr.tabindex]=\"isSortableColumn(col) ? 0 : null\"\n [attr.aria-label]=\"\n isSortableColumn(col)\n ? (\n (col.header | translate)\n + ' - '\n + ('platform.datacore.accessibility.sortable_column' | translate)\n )\n : (col.header | translate)\n \"\n (click)=\"col.field ? toggleSort(col.field, isSortableColumn(col)) : null\"\n (keydown.enter)=\"col.field ? toggleSort(col.field, isSortableColumn(col)) : null\"\n (keydown.space)=\"$event.preventDefault();\n col.field ? toggleSort(col.field, isSortableColumn(col)) : null\"\n >\n <div class=\"sdc-table-th-inner\" [class.sdc-table-sortable]=\"isSortableColumn(col)\">\n <span class=\"sdc-table-th-label\" aria-hidden=\"true\">{{ col.header | translate }}</span>\n\n <span class=\"sdc-table-sort-overlay\" aria-hidden=\"true\">\n <sdc-table-sort-indicator\n [columnField]=\"col.field || null\"\n [columnType]=\"col.type\"\n [sortable]=\"isSortableColumn(col)\"\n [sortField]=\"sortField()\"\n [sortOrder]=\"sortOrder()\"\n ></sdc-table-sort-indicator>\n </span>\n </div>\n\n @if (col.type === 'checkbox-selection' && (cellsCfg().checkbox.selectAll ?? true)) {\n <span class=\"sdc-table-th-center\">\n <input\n type=\"checkbox\"\n [id]=\"'select-all-checkbox'\"\n [checked]=\"isPageFullySelected()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelectPage(getCheckedValue($event))\"\n (keydown.space)=\"$event.preventDefault(); toggleSelectPage(!isPageFullySelected())\"\n [attr.aria-label]=\"'platform.datacore.accessibility.select_all_rows' | translate\"\n [attr.aria-checked]=\"isPageFullySelected()\"\n />\n <label for=\"select-all-checkbox\" class=\"sr-only\">\n {{ 'platform.datacore.accessibility.select_all_rows' | translate }}\n </label>\n </span>\n }\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (showInitialLoading()) {\n @for (rowIndex of initialLoadingRows(); track rowIndex; let r = $index) {\n <tr class=\"sdc-table-initial-loading-row\" role=\"row\" [attr.aria-rowindex]=\"r + 1\" aria-hidden=\"true\">\n @for (col of cols; track $index) {\n <td\n class=\"sdc-table-td sdc-table-tdc sdc-table-td--initial-loading\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-td-currency]=\"col.type === 'currency'\"\n [class.sdc-table-td-button]=\"col.type === 'button'\"\n [class.sdc-table-td-actions]=\"col.type === 'actions'\"\n [ngClass]=\"columnAlignClass(col)\"\n [attr.data-title]=\"col.header | translate\"\n role=\"cell\"\n >\n <div class=\"sdc-table-td-val sdc-table-td-val--initial-loading\"></div>\n </td>\n }\n </tr>\n }\n } @else {\n @for (row of pageData(); track $index; let r = $index) {\n <tr role=\"row\" [attr.aria-rowindex]=\"r + 1\">\n @for (col of cols; track $index) {\n <td\n class=\"sdc-table-td sdc-table-tdc\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-td-currency]=\"col.type === 'currency'\"\n [class.sdc-table-td-button]=\"col.type === 'button'\"\n [class.sdc-table-td-actions]=\"col.type === 'actions'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [ngClass]=\"columnAlignClass(col)\"\n [attr.data-title]=\"col.header | translate\"\n [attr.id]=\"col.colId || null\"\n role=\"cell\"\n >\n @if (col.cellTag === 'span') {\n <span class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </span>\n } @else if (col.cellTag === 'i') {\n <i class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </i>\n } @else if (col.cellTag === 'p') {\n <p class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </p>\n } @else {\n <div class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </div>\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n\n @if (!isLoading && options().empty?.show !== false && totalRecords() === 0) {\n <sdc-empty-state\n id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-table-empty-state\"\n [style.min-height.px]=\"emptyBodyHeightPx()\"\n ></sdc-empty-state>\n }\n </div>\n } @else {\n <div\n class=\"sdc-table-mobile-list\"\n [attr.aria-label]=\"tableAriaLabelKey() | translate\"\n [attr.aria-busy]=\"isLoading\"\n >\n @if (showInitialLoading()) {\n @for (rowIndex of initialLoadingRows(); track rowIndex; let r = $index) {\n <div class=\"sdc-table-mobile-card sdc-table-mobile-card--loading\" aria-hidden=\"true\">\n @for (col of cols; track $index) {\n <div class=\"sdc-table-mobile-field sdc-table-mobile-field--loading\">\n <div class=\"sdc-table-mobile-label sdc-table-mobile-label--loading\"></div>\n <div class=\"sdc-table-mobile-skeleton\"></div>\n </div>\n }\n </div>\n }\n } @else {\n @for (row of pageData(); track $index; let r = $index) {\n <div class=\"sdc-table-mobile-card\">\n @for (col of cols; track $index) {\n <div\n class=\"sdc-table-mobile-field\"\n [class.sdc-table-mobile-field--full-width]=\"\n col.type === 'button' || col.type === 'actions' || col.type === 'checkbox-selection'\n \"\n [class.sdc-table-mobile-field--selected]=\"sortField() === col.field\"\n [class.sdc-table-mobile-field--sortable]=\"col.field && isSortableColumn(col)\"\n (click)=\"col.field && toggleSort(col.field, isSortableColumn(col))\"\n >\n @if (mobileFieldLabel(col)) {\n <div class=\"sdc-table-mobile-label-wrap\">\n @if (col.field && isSortableColumn(col)) {\n <button\n type=\"button\"\n class=\"sdc-table-mobile-label sdc-table-mobile-label--sortable\"\n [attr.aria-label]=\"\n (mobileFieldLabel(col) | translate)\n + ' - '\n + ('platform.datacore.accessibility.sortable_column' | translate)\n \"\n (click)=\"$event.stopPropagation(); toggleSort(col.field, isSortableColumn(col))\"\n (keydown.enter)=\"toggleSort(col.field, isSortableColumn(col))\"\n (keydown.space)=\"$event.preventDefault(); toggleSort(col.field, isSortableColumn(col))\"\n >\n <span>{{ mobileFieldLabel(col) | translate }}</span>\n <sdc-table-sort-indicator\n [columnField]=\"col.field || null\"\n [columnType]=\"col.type\"\n [sortable]=\"isSortableColumn(col)\"\n [sortField]=\"sortField()\"\n [sortOrder]=\"sortOrder()\"\n ></sdc-table-sort-indicator>\n </button>\n } @else {\n <div class=\"sdc-table-mobile-label\">\n <span>{{ mobileFieldLabel(col) | translate }}</span>\n </div>\n }\n </div>\n }\n\n <div class=\"sdc-table-mobile-value\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n\n @if (!isLoading && options().empty?.show !== false && totalRecords() === 0) {\n <sdc-empty-state\n id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-table-empty-state\"\n [style.min-height.px]=\"emptyBodyHeightPx()\"\n ></sdc-empty-state>\n }\n }\n\n @if (showPaginator()) {\n <div class=\"sdc-table-paginator\">\n <sdc-paginator\n [first]=\"first()\"\n [rows]=\"rows()\"\n [totalRecords]=\"totalRecords()\"\n [rowsPerPageOptions]=\"isMobile() ? [] : rowsPerPageOptions()\"\n [isMobile]=\"isMobile()\"\n [totalRecordsLabel]=\"totalRecordsLabel()\"\n (pageChange)=\"onPageChange($event)\"\n ></sdc-paginator>\n </div>\n }\n </div>\n </sdc-loading-state>\n</section>\n\n@if (openMenuState(); as menu) {\n <sdc-table-actions-menu\n [items]=\"menu.items\"\n [top]=\"menu.top\"\n [left]=\"menu.left\"\n [width]=\"menu.width\"\n (select)=\"onPortalActionClick($event)\"\n ></sdc-table-actions-menu>\n}\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sdc-table{width:100%;box-sizing:border-box;overflow:visible;background:var(--sdc-table-bg-card)}.sdc-table-shell{display:block;--sdc-table-body-height: 220px;overflow:visible}.sdc-table-loading-wrap{display:block;width:100%;overflow:visible}.sdc-table-caption{width:100%;justify-content:flex-end;display:flex;padding:.75rem 0}.sdc-table-caption__search{width:min(100%,22rem)}.sdc-table-scroll{width:100%;overflow-x:auto;overflow-y:visible}.sdc-table-grid{min-width:var(--sdc-table-min-width, 100%);width:100%;border-collapse:collapse;table-layout:auto}thead th{padding:var(--sdc-table-padding-cell);background:var(--sdc-table-bg-card);border-bottom:1px solid var(--sdc-formfield-default-border);-webkit-user-select:none;user-select:none;transition:background var(--sdc-table-transition-fast),border var(--sdc-table-transition-fast);min-height:44px;position:relative;overflow:hidden;text-align:left}thead th.sdc-table-sortable{cursor:pointer}thead th.sdc-table-sortable:hover{background:var(--sdc-table-th-hover-bg)}thead th.sdc-table-sortable:focus,thead th.sdc-table-sortable:focus-visible{outline:2px solid var(--sdc-tab-primary, #007bff);outline-offset:-2px;box-shadow:inset 0 0 0 3px #007bff33;position:relative;z-index:1}thead th.sdc-table-is-selected{background:var(--sdc-table-th-selected-bg)!important}.sdc-table-th-inner{display:flex;align-items:center;gap:var(--sdc-table-gap-th-inner);width:100%;min-width:0;overflow:hidden}.sdc-table-sort-overlay{position:relative;margin-left:auto}tbody td{padding:.5rem var(--sdc-table-padding-cell);border-bottom:1px solid var(--sdc-table-border-gray);vertical-align:middle;overflow:visible}.sdc-table-td-val{display:flex;align-items:center;width:100%;min-width:0}.sdc-table-td-val--initial-loading{min-height:1.5rem}.sdc-table-initial-loading-row{background:var(--sdc-table-bg-card)}.sdc-table-td--initial-loading{height:3.625rem}.sdc-table-th-label{color:#333!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;display:block;flex:1 1 auto}.sdc-table-empty-state{display:flex;align-items:center;justify-content:center;min-height:var(--sdc-table-body-height);padding:0}.sdc-table--loading .sdc-table-shell{pointer-events:none;-webkit-user-select:none;user-select:none}thead th.sdc-table-th-checkbox .sdc-table-th-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:flex-end;padding-right:10px;pointer-events:none}thead th.sdc-table-th-checkbox .sdc-table-th-center input{pointer-events:auto}thead th.sdc-table-th-checkbox .sdc-table-th-inner{padding-right:28px}.sdc-table-paginator{padding:.5rem 0}.sdc-table-td-align-left{text-align:left}.sdc-table-td-align-center{text-align:center}.sdc-table-td-align-right{text-align:right}.sdc-table-cell-content--nowrap .sdc-table-text,.sdc-table-cell-content--nowrap .sdc-table-strong-label,.sdc-table-cell-content--nowrap .sdc-table-code-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.sdc-table-mobile-list{display:flex;flex-direction:column;gap:.375rem;width:100%}.sdc-table-mobile-card{display:flex;flex-direction:column;border:1px solid var(--sdc-border-strong, #d1d5db);border-radius:.25rem;background:var(--sdc-surface-bg, #ffffff);overflow:hidden}.sdc-table-mobile-card--loading{gap:0}.sdc-table-mobile-field{display:grid;grid-template-columns:minmax(0,8.5rem) minmax(0,1fr);gap:.875rem 1rem;align-items:start;padding:.9rem 1rem;border-top:1px solid var(--sdc-border-default, #cccccc);background:transparent}.sdc-table-mobile-field:first-child{border-top:0}.sdc-table-mobile-field--selected{background:#11182705}.sdc-table-mobile-field--full-width{grid-template-columns:1fr;gap:.625rem}.sdc-table-mobile-label-wrap,.sdc-table-mobile-value{min-width:0}.sdc-table-mobile-label,.sdc-table-mobile-label--sortable{display:flex;align-items:center;justify-content:space-between;gap:.625rem;width:100%;margin:0;padding:0;border:0;background:transparent;color:var(--sdc-text-muted, #6b7280);font:inherit;font-size:.75rem;font-weight:600;line-height:1.35;letter-spacing:.01em;text-align:left}.sdc-table-mobile-label--sortable{cursor:pointer}.sdc-table-mobile-label--sortable:focus-visible{outline:2px solid var(--sdc-tab-primary, #428bca);outline-offset:3px;border-radius:.375rem}.sdc-table-mobile-label--loading{width:7rem;height:.75rem;border-radius:999px;background:linear-gradient(90deg,#94a3b82e,#94a3b852,#94a3b82e)}.sdc-table-mobile-skeleton{min-height:2.75rem;border-radius:.75rem;background:linear-gradient(90deg,#94a3b81f,#94a3b833,#94a3b81f)}.sdc-table-mobile-value{display:flex;align-items:flex-start}@media (max-width: 768px){.sdc-table-caption__search{width:100%}.sdc-table-paginator{justify-content:center!important;border-top:1px solid var(--sdc-table-border-gray)}.sdc-table-mobile-field--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.sdc-table-mobile-field--sortable:hover{background:#11182706}}@media (max-width: 540px){.sdc-table-mobile-field{grid-template-columns:1fr;gap:.5rem}}\n"] }]
|
|
25174
|
+
], encapsulation: ViewEncapsulation.Emulated, changeDetection: ChangeDetectionStrategy.OnPush, template: "<section\n class=\"sdc-table\"\n [class.sdc-table-stack]=\"isMobile()\"\n [class.sdc-table-filtered]=\"!!globalFilter().trim()\"\n [class.sdc-table--loading]=\"isLoading\"\n [class.sdc-table--initial-loading]=\"showInitialLoading()\"\n>\n <sdc-loading-state\n class=\"sdc-table-loading-wrap\"\n [loading]=\"isLoading\"\n [blockWindow]=\"false\"\n [blockDelayMs]=\"0\"\n [indicator]=\"'dots'\"\n >\n <div class=\"sdc-table-shell\" [style.--sdc-table-body-height.px]=\"bodyViewportHeightPx()\">\n @if (showSearch()) {\n <div class=\"sdc-table-caption\">\n <div class=\"sdc-table-caption__search\">\n <sdc-searchbox\n [disabled]=\"isLoading\"\n [placeholder]=\"searchPlaceholder()\"\n [triggerMode]=\"triggerMode()\"\n (onSearch)=\"onSearchTerm($event)\"\n (onClear)=\"onClearSearch()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.search_field' | translate\"\n />\n </div>\n </div>\n }\n\n @if (!isMobile()) {\n <div class=\"sdc-table-scroll\" [style.--sdc-table-min-width.px]=\"tableMinWidthPx()\">\n <table\n class=\"sdc-table-grid\"\n role=\"table\"\n [attr.aria-label]=\"tableAriaLabelKey() | translate\"\n [attr.aria-rowcount]=\"totalRecords()\"\n [attr.aria-busy]=\"isLoading\"\n >\n <colgroup>\n @for (col of cols; track $index) {\n <col [style.width]=\"col.width ?? (columnMinWidthPx(col) + 'px')\" />\n }\n </colgroup>\n\n <thead>\n <tr role=\"row\">\n @for (col of cols; track $index) {\n <th\n scope=\"col\"\n role=\"columnheader\"\n [class.sdc-table-th-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-th-currency]=\"col.type === 'currency'\"\n [class.sdc-table-th-button]=\"col.type === 'button'\"\n [class.sdc-table-th-actions]=\"col.type === 'actions'\"\n [class.sdc-table-sortable]=\"isSortableColumn(col)\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [attr.aria-sort]=\"getSortAriaAttribute(col)\"\n [attr.tabindex]=\"isSortableColumn(col) ? 0 : null\"\n [attr.aria-label]=\"\n isSortableColumn(col)\n ? (\n (col.header | translate)\n + ' - '\n + ('platform.datacore.accessibility.sortable_column' | translate)\n )\n : (col.header | translate)\n \"\n (click)=\"col.field ? toggleSort(col.field, isSortableColumn(col)) : null\"\n (keydown.enter)=\"col.field ? toggleSort(col.field, isSortableColumn(col)) : null\"\n (keydown.space)=\"$event.preventDefault();\n col.field ? toggleSort(col.field, isSortableColumn(col)) : null\"\n >\n <div class=\"sdc-table-th-inner\" [class.sdc-table-sortable]=\"isSortableColumn(col)\">\n <span class=\"sdc-table-th-label\" aria-hidden=\"true\">{{ col.header | translate }}</span>\n\n <span class=\"sdc-table-sort-overlay\" aria-hidden=\"true\">\n <sdc-table-sort-indicator\n [columnField]=\"col.field || null\"\n [columnType]=\"col.type\"\n [sortable]=\"isSortableColumn(col)\"\n [sortField]=\"sortField()\"\n [sortOrder]=\"sortOrder()\"\n ></sdc-table-sort-indicator>\n </span>\n </div>\n\n @if (col.type === 'checkbox-selection' && (cellsCfg().checkbox.selectAll ?? true)) {\n <span class=\"sdc-table-th-center\">\n <input\n type=\"checkbox\"\n [id]=\"'select-all-checkbox'\"\n [checked]=\"isPageFullySelected()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelectPage(getCheckedValue($event))\"\n (keydown.space)=\"$event.preventDefault(); toggleSelectPage(!isPageFullySelected())\"\n [attr.aria-label]=\"'platform.datacore.accessibility.select_all_rows' | translate\"\n [attr.aria-checked]=\"isPageFullySelected()\"\n />\n <label for=\"select-all-checkbox\" class=\"sr-only\">\n {{ 'platform.datacore.accessibility.select_all_rows' | translate }}\n </label>\n </span>\n }\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (showInitialLoading()) {\n @for (rowIndex of initialLoadingRows(); track rowIndex; let r = $index) {\n <tr class=\"sdc-table-initial-loading-row\" role=\"row\" [attr.aria-rowindex]=\"r + 1\" aria-hidden=\"true\">\n @for (col of cols; track $index) {\n <td\n class=\"sdc-table-td sdc-table-tdc sdc-table-td--initial-loading\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-td-currency]=\"col.type === 'currency'\"\n [class.sdc-table-td-button]=\"col.type === 'button'\"\n [class.sdc-table-td-actions]=\"col.type === 'actions'\"\n [ngClass]=\"columnAlignClass(col)\"\n [attr.data-title]=\"col.header | translate\"\n role=\"cell\"\n >\n <div class=\"sdc-table-td-val sdc-table-td-val--initial-loading\"></div>\n </td>\n }\n </tr>\n }\n } @else {\n @for (row of pageData(); track $index; let r = $index) {\n <tr role=\"row\" [attr.aria-rowindex]=\"r + 1\">\n @for (col of cols; track $index) {\n <td\n class=\"sdc-table-td sdc-table-tdc\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-td-currency]=\"col.type === 'currency'\"\n [class.sdc-table-td-button]=\"col.type === 'button'\"\n [class.sdc-table-td-actions]=\"col.type === 'actions'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [ngClass]=\"columnAlignClass(col)\"\n [attr.data-title]=\"col.header | translate\"\n [attr.id]=\"col.colId || null\"\n role=\"cell\"\n >\n @if (col.cellTag === 'span') {\n <span class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n [actionsMenuId]=\"isActionsMenuOpen(row, col) ? openMenuState()?.menuId ?? null : null\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </span>\n } @else if (col.cellTag === 'i') {\n <i class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n [actionsMenuId]=\"isActionsMenuOpen(row, col) ? openMenuState()?.menuId ?? null : null\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </i>\n } @else if (col.cellTag === 'p') {\n <p class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n [actionsMenuId]=\"isActionsMenuOpen(row, col) ? openMenuState()?.menuId ?? null : null\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </p>\n } @else {\n <div class=\"sdc-table-td-val\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n [actionsMenuId]=\"isActionsMenuOpen(row, col) ? openMenuState()?.menuId ?? null : null\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </div>\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n\n @if (!isLoading && options().empty?.show !== false && totalRecords() === 0) {\n <sdc-empty-state\n id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-table-empty-state\"\n [style.min-height.px]=\"emptyBodyHeightPx()\"\n ></sdc-empty-state>\n }\n </div>\n } @else {\n <div\n class=\"sdc-table-mobile-list\"\n [attr.aria-label]=\"tableAriaLabelKey() | translate\"\n [attr.aria-busy]=\"isLoading\"\n >\n @if (showInitialLoading()) {\n @for (rowIndex of initialLoadingRows(); track rowIndex; let r = $index) {\n <div class=\"sdc-table-mobile-card sdc-table-mobile-card--loading\" aria-hidden=\"true\">\n @for (col of cols; track $index) {\n <div class=\"sdc-table-mobile-field sdc-table-mobile-field--loading\">\n <div class=\"sdc-table-mobile-label sdc-table-mobile-label--loading\"></div>\n <div class=\"sdc-table-mobile-skeleton\"></div>\n </div>\n }\n </div>\n }\n } @else {\n @for (row of pageData(); track $index; let r = $index) {\n <div class=\"sdc-table-mobile-card\">\n @for (col of cols; track $index) {\n <div\n class=\"sdc-table-mobile-field\"\n [class.sdc-table-mobile-field--full-width]=\"\n col.type === 'button' || col.type === 'actions' || col.type === 'checkbox-selection'\n \"\n [class.sdc-table-mobile-field--selected]=\"sortField() === col.field\"\n [class.sdc-table-mobile-field--sortable]=\"col.field && isSortableColumn(col)\"\n (click)=\"col.field && toggleSort(col.field, isSortableColumn(col))\"\n >\n @if (mobileFieldLabel(col)) {\n <div class=\"sdc-table-mobile-label-wrap\">\n @if (col.field && isSortableColumn(col)) {\n <button\n type=\"button\"\n class=\"sdc-table-mobile-label sdc-table-mobile-label--sortable\"\n [attr.aria-label]=\"\n (mobileFieldLabel(col) | translate)\n + ' - '\n + ('platform.datacore.accessibility.sortable_column' | translate)\n \"\n (click)=\"$event.stopPropagation(); toggleSort(col.field, isSortableColumn(col))\"\n (keydown.enter)=\"toggleSort(col.field, isSortableColumn(col))\"\n (keydown.space)=\"$event.preventDefault(); toggleSort(col.field, isSortableColumn(col))\"\n >\n <span>{{ mobileFieldLabel(col) | translate }}</span>\n <sdc-table-sort-indicator\n [columnField]=\"col.field || null\"\n [columnType]=\"col.type\"\n [sortable]=\"isSortableColumn(col)\"\n [sortField]=\"sortField()\"\n [sortOrder]=\"sortOrder()\"\n ></sdc-table-sort-indicator>\n </button>\n } @else {\n <div class=\"sdc-table-mobile-label\">\n <span>{{ mobileFieldLabel(col) | translate }}</span>\n </div>\n }\n </div>\n }\n\n <div class=\"sdc-table-mobile-value\" [ngStyle]=\"col.cellStyle\" [attr.id]=\"resolveCellId(col, row)\">\n <sdc-table-cell-content\n [row]=\"row\"\n [col]=\"col\"\n [cellConfigs]=\"cellsCfg()\"\n [resolveValue]=\"resolveValue\"\n [rowCheckboxId]=\"getRowCheckboxId(row)\"\n [rowLabel]=\"getRowCheckboxLabel(row)\"\n [rowSelected]=\"isRowSelected(row)\"\n [actionsMenuOpen]=\"isActionsMenuOpen(row, col)\"\n [actionsMenuId]=\"isActionsMenuOpen(row, col) ? openMenuState()?.menuId ?? null : null\"\n (toggleRow)=\"onToggleRow(row, $event)\"\n (triggerButtonAction)=\"onButtonClick(row, col)\"\n [defaultTextOverflow]=\"defaultTextOverflow()\"\n (toggleActionsMenu)=\"toggleActionsMenu($event.event, row, col, $event.trigger)\"\n ></sdc-table-cell-content>\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n\n @if (!isLoading && options().empty?.show !== false && totalRecords() === 0) {\n <sdc-empty-state\n id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-table-empty-state\"\n [style.min-height.px]=\"emptyBodyHeightPx()\"\n ></sdc-empty-state>\n }\n }\n\n @if (showPaginator()) {\n <div class=\"sdc-table-paginator\">\n <sdc-paginator\n [first]=\"first()\"\n [rows]=\"rows()\"\n [totalRecords]=\"totalRecords()\"\n [rowsPerPageOptions]=\"isMobile() ? [] : rowsPerPageOptions()\"\n [isMobile]=\"isMobile()\"\n [totalRecordsLabel]=\"totalRecordsLabel()\"\n (pageChange)=\"onPageChange($event)\"\n ></sdc-paginator>\n </div>\n }\n </div>\n </sdc-loading-state>\n</section>\n\n@if (openMenuState(); as menu) {\n <sdc-table-actions-menu\n [items]=\"menu.items\"\n [menuId]=\"menu.menuId\"\n [top]=\"menu.top\"\n [left]=\"menu.left\"\n [width]=\"menu.width\"\n (close)=\"onMenuClose($event)\"\n (select)=\"onPortalActionClick($event)\"\n ></sdc-table-actions-menu>\n}\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sdc-table{width:100%;box-sizing:border-box;overflow:visible;background:var(--sdc-table-bg-card)}.sdc-table-shell{display:block;--sdc-table-body-height: 220px;overflow:visible}.sdc-table-loading-wrap{display:block;width:100%;overflow:visible}.sdc-table-caption{width:100%;justify-content:flex-end;display:flex;padding:.75rem 0}.sdc-table-caption__search{width:min(100%,22rem)}.sdc-table-scroll{width:100%;overflow-x:auto;overflow-y:visible}.sdc-table-grid{min-width:var(--sdc-table-min-width, 100%);width:100%;border-collapse:collapse;table-layout:auto}thead th{padding:var(--sdc-table-padding-cell);background:var(--sdc-table-bg-card);border-bottom:1px solid var(--sdc-formfield-default-border);-webkit-user-select:none;user-select:none;transition:background var(--sdc-table-transition-fast),border var(--sdc-table-transition-fast);min-height:44px;position:relative;overflow:hidden;text-align:left}thead th.sdc-table-sortable{cursor:pointer}thead th.sdc-table-sortable:hover{background:var(--sdc-table-th-hover-bg)}thead th.sdc-table-sortable:focus,thead th.sdc-table-sortable:focus-visible{outline:2px solid var(--sdc-tab-primary, #007bff);outline-offset:-2px;box-shadow:inset 0 0 0 3px #007bff33;position:relative;z-index:1}thead th.sdc-table-is-selected{background:var(--sdc-table-th-selected-bg)!important}.sdc-table-th-inner{display:flex;align-items:center;gap:var(--sdc-table-gap-th-inner);width:100%;min-width:0;overflow:hidden}.sdc-table-sort-overlay{position:relative;margin-left:auto}tbody td{padding:.5rem var(--sdc-table-padding-cell);border-bottom:1px solid var(--sdc-table-border-gray);vertical-align:middle;overflow:visible}.sdc-table-td-val{display:flex;align-items:center;width:100%;min-width:0}.sdc-table-td-val--initial-loading{min-height:1.5rem}.sdc-table-initial-loading-row{background:var(--sdc-table-bg-card)}.sdc-table-td--initial-loading{height:3.625rem}.sdc-table-th-label{color:#333!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;display:block;flex:1 1 auto}.sdc-table-empty-state{display:flex;align-items:center;justify-content:center;min-height:var(--sdc-table-body-height);padding:0}.sdc-table--loading .sdc-table-shell{pointer-events:none;-webkit-user-select:none;user-select:none}thead th.sdc-table-th-checkbox .sdc-table-th-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:flex-end;padding-right:10px;pointer-events:none}thead th.sdc-table-th-checkbox .sdc-table-th-center input{pointer-events:auto}thead th.sdc-table-th-checkbox .sdc-table-th-inner{padding-right:28px}.sdc-table-paginator{padding:.5rem 0}.sdc-table-td-align-left{text-align:left}.sdc-table-td-align-center{text-align:center}.sdc-table-td-align-right{text-align:right}.sdc-table-cell-content--nowrap .sdc-table-text,.sdc-table-cell-content--nowrap .sdc-table-strong-label,.sdc-table-cell-content--nowrap .sdc-table-code-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.sdc-table-mobile-list{display:flex;flex-direction:column;gap:.375rem;width:100%}.sdc-table-mobile-card{display:flex;flex-direction:column;border:1px solid var(--sdc-border-strong, #d1d5db);border-radius:.25rem;background:var(--sdc-surface-bg, #ffffff);overflow:hidden}.sdc-table-mobile-card--loading{gap:0}.sdc-table-mobile-field{display:grid;grid-template-columns:minmax(0,8.5rem) minmax(0,1fr);gap:.875rem 1rem;align-items:start;padding:.9rem 1rem;border-top:1px solid var(--sdc-border-default, #cccccc);background:transparent}.sdc-table-mobile-field:first-child{border-top:0}.sdc-table-mobile-field--selected{background:#11182705}.sdc-table-mobile-field--full-width{grid-template-columns:1fr;gap:.625rem}.sdc-table-mobile-label-wrap,.sdc-table-mobile-value{min-width:0}.sdc-table-mobile-label,.sdc-table-mobile-label--sortable{display:flex;align-items:center;justify-content:space-between;gap:.625rem;width:100%;margin:0;padding:0;border:0;background:transparent;color:var(--sdc-text-muted, #6b7280);font:inherit;font-size:.75rem;font-weight:600;line-height:1.35;letter-spacing:.01em;text-align:left}.sdc-table-mobile-label--sortable{cursor:pointer}.sdc-table-mobile-label--sortable:focus-visible{outline:2px solid var(--sdc-tab-primary, #428bca);outline-offset:3px;border-radius:.375rem}.sdc-table-mobile-label--loading{width:7rem;height:.75rem;border-radius:999px;background:linear-gradient(90deg,#94a3b82e,#94a3b852,#94a3b82e)}.sdc-table-mobile-skeleton{min-height:2.75rem;border-radius:.75rem;background:linear-gradient(90deg,#94a3b81f,#94a3b833,#94a3b81f)}.sdc-table-mobile-value{display:flex;align-items:flex-start}@media (max-width: 768px){.sdc-table-caption__search{width:100%}.sdc-table-paginator{justify-content:center!important;border-top:1px solid var(--sdc-table-border-gray)}.sdc-table-mobile-field--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.sdc-table-mobile-field--sortable:hover{background:#11182706}}@media (max-width: 540px){.sdc-table-mobile-field{grid-template-columns:1fr;gap:.5rem}}\n"] }]
|
|
24927
25175
|
}], propDecorators: { cols: [{
|
|
24928
25176
|
type: Input,
|
|
24929
25177
|
args: [{ required: true }]
|