Compare commits

...

7 Commits

Author SHA1 Message Date
Nicoleta Panaghiu
5e26e217a1 RED-10509: added disableStopPropagation option for action config. 2024-11-25 10:40:42 +02:00
Timo Bejan
24b67f3fb4 removed logging 2024-11-06 15:55:44 +02:00
Timo Bejan
2a486236aa Removed offset and fixed notification polling 2024-11-06 15:55:40 +02:00
Nicoleta Panaghiu
97b614a899 RED-9985: prevent filter categories from collapsing upon selection. 2024-09-26 11:54:09 +03:00
Nicoleta Panaghiu
9ca054613c RED-9372: always include scroll-bar mixin. 2024-09-10 11:38:59 +03:00
Nicoleta Panaghiu
5a751932a6 RED-9372: fixed table-items moving on hover. 2024-09-05 17:20:08 +03:00
Nicoleta Panaghiu
cdd6ed5607 RED-9777: increase dialog help button z-index. 2024-08-14 11:44:53 +03:00
10 changed files with 24 additions and 25 deletions

View File

@ -159,10 +159,10 @@ section.settings {
transition: transition:
width ease-in-out 0.2s, width ease-in-out 0.2s,
min-width ease-in-out 0.2s; min-width ease-in-out 0.2s;
@include common-mixins.scroll-bar;
&:hover { &:hover {
overflow-y: auto; overflow-y: auto;
@include common-mixins.scroll-bar;
} }
.collapsed-wrapper { .collapsed-wrapper {

View File

@ -14,7 +14,7 @@
@if (primaryFilters$ | async; as filters) { @if (primaryFilters$ | async; as filters) {
<div class="filter-content"> <div class="filter-content">
@for (filter of filters; track filter) { @for (filter of filters; track filter.id) {
<ng-container <ng-container
[ngTemplateOutletContext]="{ [ngTemplateOutletContext]="{
filter: filter, filter: filter,
@ -33,7 +33,7 @@
<div class="all-caps-label" translate="filter-menu.filter-options"></div> <div class="all-caps-label" translate="filter-menu.filter-options"></div>
</div> </div>
@for (filter of secondaryGroup.filters; track filter) { @for (filter of secondaryGroup.filters; track filter.id) {
<ng-container <ng-container
[ngTemplateOutletContext]="{ [ngTemplateOutletContext]="{
filter: filter, filter: filter,

View File

@ -16,6 +16,7 @@ function copySettings(oldFilters: INestedFilter[], newFilters: INestedFilter[])
const newFilter = newFilters.find(f => f.id === filter.id); const newFilter = newFilters.find(f => f.id === filter.id);
if (newFilter) { if (newFilter) {
newFilter.checked = filter.checked; newFilter.checked = filter.checked;
newFilter.expanded = filter.expanded;
newFilter.indeterminate = filter.indeterminate; newFilter.indeterminate = filter.indeterminate;
if (filter.children && newFilter.children) { if (filter.children && newFilter.children) {
copySettings(filter.children, newFilter.children); copySettings(filter.children, newFilter.children);

View File

@ -14,7 +14,7 @@
&.active, &.active,
&.dialog-toggle { &.dialog-toggle {
z-index: 1100; z-index: 1200;
} }
.toggle-input { .toggle-input {

View File

@ -1,9 +1,10 @@
import { BaseHeaderConfig } from './base-config.model'; import { BaseHeaderConfig } from './base-config.model';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { OverlappingElement } from '../../../help-mode';
export interface ActionConfig extends BaseHeaderConfig { export interface ActionConfig extends BaseHeaderConfig {
readonly action: ($event: MouseEvent) => void; readonly action: ($event: MouseEvent) => void;
readonly helpModeKey?: string; readonly helpModeKey?: string;
readonly disabled$?: Observable<boolean>; readonly disabled$?: Observable<boolean>;
readonly disabled?: boolean;
readonly disableStopPropagation?: boolean;
} }

View File

@ -60,10 +60,11 @@
<iqser-circle-button <iqser-circle-button
(action)="config.action($event)" (action)="config.action($event)"
[buttonId]="config.id" [buttonId]="config.id"
[disabled]="config.disabled$ && (config.disabled$ | async)" [disabled]="config.disabled"
[icon]="config.icon" [icon]="config.icon"
[tooltip]="config.label | translate" [tooltip]="config.label | translate"
[attr.help-mode-key]="config.helpModeKey" [attr.help-mode-key]="config.helpModeKey"
[iqserDisableStopPropagation]="config.disableStopPropagation"
></iqser-circle-button> ></iqser-circle-button>
} }
} }

View File

@ -15,6 +15,7 @@ import { filterEach } from '../../utils';
import { List } from '../../utils'; import { List } from '../../utils';
import { IListable } from '../models'; import { IListable } from '../models';
import { ActionConfig, ButtonConfig, SearchPosition, SearchPositions } from './models'; import { ActionConfig, ButtonConfig, SearchPosition, SearchPositions } from './models';
import { DisableStopPropagationDirective } from '../../directives';
@Component({ @Component({
selector: 'iqser-page-header', selector: 'iqser-page-header',
@ -31,6 +32,7 @@ import { ActionConfig, ButtonConfig, SearchPosition, SearchPositions } from './m
CircleButtonComponent, CircleButtonComponent,
TranslateModule, TranslateModule,
InputWithActionComponent, InputWithActionComponent,
DisableStopPropagationDirective,
], ],
}) })
export class PageHeaderComponent<T extends IListable> { export class PageHeaderComponent<T extends IListable> {

View File

@ -2,7 +2,7 @@
:host cdk-virtual-scroll-viewport { :host cdk-virtual-scroll-viewport {
height: calc(100vh - 50px - 31px - var(--iqser-top-bar-height) - 50px); height: calc(100vh - 50px - 31px - var(--iqser-top-bar-height) - 50px);
overflow-y: hidden !important; overflow-y: auto !important;
background-color: var(--iqser-background); background-color: var(--iqser-background);
@include mixins.scroll-bar; @include mixins.scroll-bar;
@ -10,10 +10,6 @@
display: none; display: none;
} }
&.has-scrollbar:hover ::ng-deep.cdk-virtual-scroll-content-wrapper {
grid-template-columns: var(--gridTemplateColumnsHover);
}
::ng-deep.cdk-virtual-scroll-content-wrapper { ::ng-deep.cdk-virtual-scroll-content-wrapper {
grid-template-columns: var(--gridTemplateColumns); grid-template-columns: var(--gridTemplateColumns);
display: grid; display: grid;
@ -53,6 +49,10 @@
> * > div { > * > div {
background-color: var(--iqser-not-disabled-table-item); background-color: var(--iqser-not-disabled-table-item);
} }
.scrollbar-placeholder {
background-color: var(--iqser-side-nav);
}
} }
} }
} }
@ -65,10 +65,6 @@
right: 0; right: 0;
padding-right: 10px; padding-right: 10px;
} }
.scrollbar-placeholder {
display: none !important;
}
} }
} }
} }

View File

@ -87,18 +87,17 @@ export class TableComponent<Class extends IListable<PrimaryKey>, PrimaryKey exte
} }
private _setColumnsWidth(element: HTMLElement) { private _setColumnsWidth(element: HTMLElement) {
let gridTemplateColumnsHover = ''; let gridTemplateColumns = '';
if (this.selectionEnabled) { if (this.selectionEnabled) {
gridTemplateColumnsHover += '30px '; gridTemplateColumns += '30px ';
} }
for (const config of this.tableColumnConfigs) { for (const config of this.tableColumnConfigs) {
gridTemplateColumnsHover += `${config.width || '1fr'} `; gridTemplateColumns += `${config.width || '1fr'} `;
} }
gridTemplateColumnsHover += this.emptyColumnWidth || ''; gridTemplateColumns += this.emptyColumnWidth || '';
const gridTemplateColumns = `${gridTemplateColumnsHover} ${SCROLLBAR_WIDTH}px`; gridTemplateColumns = `${gridTemplateColumns} ${SCROLLBAR_WIDTH}px`;
element.style.setProperty('--gridTemplateColumns', gridTemplateColumns); element.style.setProperty('--gridTemplateColumns', gridTemplateColumns);
element.style.setProperty('--gridTemplateColumnsHover', gridTemplateColumnsHover);
} }
private _setItemSize(element: HTMLElement) { private _setItemSize(element: HTMLElement) {

View File

@ -6,7 +6,6 @@ import { HeadersConfiguration } from '../utils/headers-configuration';
import { List } from '../utils/types/iqser-types'; import { List } from '../utils/types/iqser-types';
export const ROOT_CHANGES_KEY = 'root'; export const ROOT_CHANGES_KEY = 'root';
export const LAST_CHECKED_OFFSET = 30000;
export interface QueryParam { export interface QueryParam {
readonly key: string; readonly key: string;
@ -20,7 +19,7 @@ export interface QueryParam {
export abstract class GenericService<I> { export abstract class GenericService<I> {
protected readonly _http = inject(HttpClient); protected readonly _http = inject(HttpClient);
protected readonly _lastCheckedForChanges = new Map<string, string>([ protected readonly _lastCheckedForChanges = new Map<string, string>([
[ROOT_CHANGES_KEY, new Date(Date.now() - LAST_CHECKED_OFFSET).toISOString()], [ROOT_CHANGES_KEY, new Date(Date.now()).toISOString()],
]); ]);
protected abstract readonly _defaultModelPath: string; protected abstract readonly _defaultModelPath: string;
protected readonly _serviceName: string = 'redaction-gateway-v1'; protected readonly _serviceName: string = 'redaction-gateway-v1';
@ -41,7 +40,7 @@ export abstract class GenericService<I> {
headers: HeadersConfiguration.getHeaders({ contentType: false }), headers: HeadersConfiguration.getHeaders({ contentType: false }),
observe: 'body', observe: 'body',
params: this._queryParams(queryParams), params: this._queryParams(queryParams),
}); })
} }
getFor<R = I[]>(entityId: string, queryParams?: List<QueryParam>): Observable<R> { getFor<R = I[]>(entityId: string, queryParams?: List<QueryParam>): Observable<R> {
@ -126,6 +125,6 @@ export abstract class GenericService<I> {
} }
protected _updateLastChanged(key = ROOT_CHANGES_KEY): void { protected _updateLastChanged(key = ROOT_CHANGES_KEY): void {
this._lastCheckedForChanges.set(key, new Date(Date.now() - LAST_CHECKED_OFFSET).toISOString()); this._lastCheckedForChanges.set(key, new Date().toISOString());
} }
} }