@onemrvapublic/design-system 22.0.0-develop.6 → 22.0.0-develop.8
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/README.md +4 -4
- package/assets/i18n/de.json +12 -0
- package/assets/i18n/en.json +12 -0
- package/assets/i18n/fr.json +12 -0
- package/assets/i18n/nl.json +12 -0
- package/fesm2022/onemrvapublic-design-system-page-error.mjs +2 -2
- package/fesm2022/onemrvapublic-design-system-page-error.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-shared.mjs +1 -1
- package/fesm2022/onemrvapublic-design-system-shared.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-timeline.mjs +563 -0
- package/fesm2022/onemrvapublic-design-system-timeline.mjs.map +1 -0
- package/fesm2022/onemrvapublic-design-system.mjs +1 -1
- package/fesm2022/onemrvapublic-design-system.mjs.map +1 -1
- package/package.json +5 -1
- package/timeline/src/onemrva-timeline.component.scss +371 -0
- package/types/onemrvapublic-design-system-page-error.d.ts +1 -1
- package/types/onemrvapublic-design-system-timeline.d.ts +195 -0
- package/types/onemrvapublic-design-system.d.ts +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onemrvapublic-design-system-timeline.mjs","sources":["../../../../projects/onemrva/design-system/timeline/src/models/timeline-color.model.ts","../../../../projects/onemrva/design-system/timeline/src/models/timeline-filter.model.ts","../../../../projects/onemrva/design-system/timeline/src/timeline.utils.ts","../../../../projects/onemrva/design-system/timeline/src/onemrva-timeline.component.ts","../../../../projects/onemrva/design-system/timeline/src/onemrva-timeline.component.html","../../../../projects/onemrva/design-system/timeline/src/onemrva-timeline.module.ts","../../../../projects/onemrva/design-system/timeline/index.ts","../../../../projects/onemrva/design-system/timeline/onemrvapublic-design-system-timeline.ts"],"sourcesContent":["/** A palette token assigned to a legend entry; resolved to a hex value via `TIMELINE_PALETTE`. */\nexport type TimelineColor =\n | 'data-1'\n | 'data-2'\n | 'data-3'\n | 'data-4'\n | 'data-5'\n | 'data-6'\n | 'data-7';\n\n/** All palette tokens in display order. */\nexport const TIMELINE_COLORS: readonly TimelineColor[] = [\n 'data-1',\n 'data-2',\n 'data-3',\n 'data-4',\n 'data-5',\n 'data-6',\n 'data-7',\n];\n\n/** Maps each palette token to its hex value. */\nexport const TIMELINE_PALETTE: Record<TimelineColor, string> = {\n 'data-1': '#625d9c',\n 'data-2': '#7f56a2',\n 'data-3': '#9f499e',\n 'data-4': '#be358f',\n 'data-5': '#d71675',\n 'data-6': '#e70054',\n 'data-7': '#eb142a',\n};\n","/** A single-select filter toggle shown in the timeline header. */\nexport interface TimelineFilterOption {\n label: string;\n value: string;\n}\n\n/** Maximum filter options the timeline renders; extras are ignored. */\nexport const MAX_TIMELINE_FILTERS = 3;\n","import { TimelinePeriod } from './models/timeline-period.model';\nimport {\n MAX_TIMELINE_FILTERS,\n TimelineFilterOption,\n} from './models/timeline-filter.model';\n\nconst MS_PER_DAY = 1000 * 60 * 60 * 24;\n\nexport interface TimelineYearRange {\n baseBeginYear: number;\n baseEndYear: number;\n}\n\nexport interface TimelineBar {\n class: string;\n style: string;\n period?: TimelinePeriod;\n trackById: string;\n}\n\nexport function limitFilters(\n filters: TimelineFilterOption[],\n): TimelineFilterOption[] {\n return filters.slice(0, MAX_TIMELINE_FILTERS);\n}\n\nexport function daysBetween(a: Date, b: Date): number {\n return Math.max(1, Math.round((b.getTime() - a.getTime()) / MS_PER_DAY));\n}\n\nexport function formatDate(date: Date): string {\n const pad = (value: number) => value.toString().padStart(2, '0');\n return `${pad(date.getDate())}/${pad(date.getMonth() + 1)}/${date.getFullYear()}`;\n}\n\nexport function formatPeriodRange(period: TimelinePeriod): string {\n return `${formatDate(period.beginDate)} - ${formatDate(period.endDate)}`;\n}\n\nexport function monthsWithSize(\n year: number,\n): { month: number; widthPercent: number }[] {\n const daysInYear =\n (new Date(year, 11, 31).getTime() - new Date(year, 0, 1).getTime()) /\n MS_PER_DAY +\n 1;\n\n return Array.from({ length: 12 }, (_, month) => ({\n month: month + 1,\n widthPercent: (new Date(year, month + 1, 0).getDate() / daysInYear) * 100,\n }));\n}\n\nexport function fullTimelineRange(\n periods: TimelinePeriod[],\n): TimelineYearRange | null {\n if (!periods.length) return null;\n\n const minBegin = Math.min(...periods.map(p => p.beginDate.getTime()));\n const maxEnd = Math.max(...periods.map(p => p.endDate.getTime()));\n\n return {\n baseBeginYear: new Date(minBegin).getFullYear(),\n baseEndYear: new Date(maxEnd).getFullYear(),\n };\n}\n\nexport function splitIntoRows(periods: TimelinePeriod[]): TimelinePeriod[][] {\n const rows: TimelinePeriod[][] = [];\n const sorted = [...periods].sort(\n (a, b) => a.beginDate.getTime() - b.beginDate.getTime(),\n );\n\n for (const period of sorted) {\n const row = rows.find(\n r => r[r.length - 1].endDate.getTime() <= period.beginDate.getTime(),\n );\n if (row) {\n row.push(period);\n } else {\n rows.push([period]);\n }\n }\n\n return rows;\n}\n\nexport function buildRow(\n periods: TimelinePeriod[],\n range: { begin: Date; end: Date },\n colorOf: (period: TimelinePeriod) => string,\n): TimelineBar[] {\n if (!periods.length) return [];\n\n const result: TimelineBar[] = [];\n const { begin, end } = range;\n\n if (periods[0].beginDate > begin) {\n result.push(gapBar(begin, periods[0].beginDate));\n }\n\n let previous: TimelinePeriod | null = null;\n for (const period of periods) {\n if (previous) {\n result.push(gapBar(previous.endDate, period.beginDate));\n }\n result.push(periodBar(period, begin, end, colorOf(period)));\n previous = period;\n }\n\n if (previous && previous.endDate < end) {\n result.push(gapBar(previous.endDate, end));\n }\n\n return result;\n}\n\nfunction gapBar(from: Date, to: Date): TimelineBar {\n return bar(\n undefined,\n daysBetween(from, to),\n undefined,\n `gap-${from.getTime()}-${to.getTime()}`,\n );\n}\n\nfunction periodBar(\n period: TimelinePeriod,\n begin: Date,\n end: Date,\n color: string,\n): TimelineBar {\n const start = Math.max(begin.getTime(), period.beginDate.getTime());\n const stop = Math.min(end.getTime(), period.endDate.getTime());\n return bar(\n period,\n daysBetween(new Date(start), new Date(stop)),\n color,\n period.id,\n );\n}\n\nfunction bar(\n period: TimelinePeriod | undefined,\n diff: number,\n color: string | undefined,\n trackById: string,\n): TimelineBar {\n const classes = ['item'];\n if (period) classes.push('period', 'cursor');\n if (period?.disabled) classes.push('disabled');\n\n return {\n class: classes.join(' '),\n style: `flex: ${diff} 1 0${color ? `; background-color: ${color}` : ''}`,\n period,\n trackById,\n };\n}\n","import {\n Component,\n LOCALE_ID,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatDivider } from '@angular/material/divider';\nimport {\n CdkOverlayOrigin,\n ConnectedPosition,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { TimelinePeriod } from './models/timeline-period.model';\nimport {\n TimelineLegend,\n TimelineLegendItem,\n} from './models/timeline-legend.model';\nimport { TimelineFilterOption } from './models/timeline-filter.model';\nimport { TimelineColor, TIMELINE_PALETTE } from './models/timeline-color.model';\nimport {\n buildRow,\n formatPeriodRange,\n fullTimelineRange,\n limitFilters,\n monthsWithSize,\n splitIntoRows,\n} from './timeline.utils';\n\nlet nextTooltipId = 0;\n\n/**\n * Displays dated periods on a horizontal, year-based timeline. Overlapping\n * periods stack into rows and take their colour from the matching legend item.\n *\n * @example\n * ```html\n * <onemrva-timeline\n * title=\"Career timeline\"\n * [periods]=\"periods\"\n * [legend]=\"legend\"\n * [filters]=\"filters\"\n * [(activeFilter)]=\"activeFilter\"\n * [(selectedPeriod)]=\"selected\"\n * emptyMessage=\"No periods to display\"\n * />\n * ```\n */\n@Component({\n selector: 'onemrva-timeline',\n standalone: true,\n imports: [\n MatIcon,\n MatIconButton,\n MatButtonToggleModule,\n MatFormFieldModule,\n MatSelectModule,\n MatDivider,\n OverlayModule,\n TranslatePipe,\n ],\n templateUrl: './onemrva-timeline.component.html',\n styleUrl: './onemrva-timeline.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: { '[attr.title]': 'null' },\n})\nexport class OnemrvaTimelineComponent {\n private readonly fallbackColor = '#e5e5e5';\n private readonly rowHeightPx = 56;\n private readonly plotPaddingPx = 16;\n private readonly axesHeightPx = 56;\n\n /** Optional heading shown above the visible year range. */\n readonly title = input<string>('');\n\n /** Periods to plot on the timeline. */\n readonly periods = input<TimelinePeriod[]>([]);\n\n /** Legend entries that map a period `type` to its label and color. */\n readonly legend = input<TimelineLegend>();\n\n /** Size, in years, of the visible window; two-way bindable via the period dropdown. */\n readonly fixedYearCount = model<number>(5);\n\n /** Year-window sizes offered by the period dropdown. */\n readonly yearOptions = input<number[]>([1, 5, 10]);\n\n /** When true, the period dropdown offers a \"Month\" option. */\n readonly showMonthPicker = input<boolean>(false);\n\n /** Whether month numbers are shown under each year (only when the window spans at most 5 years). */\n readonly showMonths = input<boolean>(true);\n\n /** Whether period labels are rendered inside the bars. */\n readonly showLabels = input<boolean>(true);\n\n /** Whether the hover popup with period details is shown. */\n readonly showTooltip = input<boolean>(true);\n\n /** Optional max height (any CSS length) for the timeline body; rows scroll within it while the year and month axes stay pinned. Ignored when `fullSize` is true. */\n readonly maxHeight = input<string>('');\n\n /** When true, every row is shown at once and the body never scrolls; `maxHeight` is ignored. */\n readonly fullSize = input<boolean>(false);\n\n /** Single-select filter toggles shown in the header; at most three are rendered. */\n readonly filters = input<TimelineFilterOption[]>([]);\n\n /** Message shown when no periods are provided. Nothing renders when it is empty. */\n readonly emptyMessage = input<string>('');\n\n /** Currently selected period. Two-way bindable via `[(selectedPeriod)]`. */\n readonly selectedPeriod = model<TimelinePeriod | undefined>();\n\n /** Value of the currently active filter, or `undefined` when none. Two-way bindable. */\n readonly activeFilter = model<string | undefined>(undefined);\n\n /** Emits the active filter value whenever the selection changes. */\n readonly filterChange = output<string | undefined>();\n\n /**\n * Emits the unit shown on the lower axis whenever the period view changes:\n * `'months'` in the year view, or `'days'` when a single month is focused.\n */\n readonly axisUnitChange = output<'months' | 'days'>();\n\n protected readonly monthsByYear = computed(() => {\n const map = new Map<number, ReturnType<typeof monthsWithSize>>();\n for (const year of this.years()) {\n map.set(year, monthsWithSize(year));\n }\n return map;\n });\n\n protected readonly tooltipInfo = signal<TooltipInfo>({ visible: false });\n protected readonly tooltipId = `onemrva-timeline-tooltip-${nextTooltipId++}`;\n protected readonly tooltipPositions: ConnectedPosition[] = [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 15,\n },\n ];\n\n protected readonly changeRange = signal<number>(0);\n protected readonly activeType = signal<string | undefined>(undefined);\n protected readonly monthMode = signal<boolean>(false);\n\n private readonly locale = inject(LOCALE_ID);\n private readonly shortMonthFormat = new Intl.DateTimeFormat(this.locale, {\n month: 'short',\n });\n private readonly longMonthFormat = new Intl.DateTimeFormat(this.locale, {\n month: 'long',\n });\n\n protected readonly focusedDate = signal<{ year: number; month: number }>({\n year: 0,\n month: 0,\n });\n\n constructor() {\n effect(() => {\n this.periods();\n this.fixedYearCount();\n this.changeRange.set(0);\n });\n }\n\n protected readonly scrollMaxHeight = computed(() => {\n if (this.fullSize()) return null;\n\n const raw = this.maxHeight().trim();\n const match = /^(\\d+)px$/.exec(raw);\n if (!match) return raw || null;\n\n const middle = Number(match[1]) - this.axesHeightPx;\n if (middle < this.rowHeightPx) return raw;\n\n const rows = Math.floor(middle / this.rowHeightPx);\n return `${rows * this.rowHeightPx + this.axesHeightPx}px`;\n });\n\n protected readonly plotHeightPx = computed(\n () => this.displayedRows().length * this.rowHeightPx + this.plotPaddingPx,\n );\n\n private readonly fullRange = computed(() =>\n fullTimelineRange(this.periods()),\n );\n\n private readonly totalYears = computed(() => {\n const range = this.fullRange();\n return range ? range.baseEndYear - range.baseBeginYear + 1 : 0;\n });\n\n private readonly maxOffset = computed(() =>\n Math.max(0, this.totalYears() - this.fixedYearCount()),\n );\n\n private readonly offset = computed(() =>\n Math.min(Math.max(this.changeRange(), 0), this.maxOffset()),\n );\n\n protected readonly displayRange = computed(() => {\n const range = this.fullRange();\n if (!range) return null;\n\n if (this.monthMode()) {\n const year = this.focusedDate().year;\n return { beginYear: year, endYear: year };\n }\n\n if (this.fixedYearCount() >= this.totalYears()) {\n return { beginYear: range.baseBeginYear, endYear: range.baseEndYear };\n }\n\n const beginYear = range.baseBeginYear + this.offset();\n return { beginYear, endYear: beginYear + this.fixedYearCount() - 1 };\n });\n\n protected readonly canPrevious = computed(\n () => this.fixedYearCount() < this.totalYears() && this.offset() > 0,\n );\n\n protected readonly canNext = computed(\n () =>\n this.fixedYearCount() < this.totalYears() &&\n this.offset() < this.maxOffset(),\n );\n\n protected readonly monthList = computed(() => {\n const range = this.fullRange();\n if (!range) return [];\n\n const list: { value: string; label: string }[] = [];\n for (let year = range.baseBeginYear; year <= range.baseEndYear; year++) {\n for (let month = 1; month <= 12; month++) {\n list.push({\n value: `${year}-${String(month).padStart(2, '0')}`,\n label: `${this.shortMonthFormat.format(new Date(year, month - 1, 1))} ${year}`,\n });\n }\n }\n return list;\n });\n\n protected readonly monthLabel = computed(() => {\n const focused = this.focusedDate();\n return `${this.longMonthFormat.format(new Date(focused.year, focused.month, 1))} ${focused.year}`;\n });\n\n protected readonly focusedMonthValue = computed(() => {\n const focused = this.focusedDate();\n return `${focused.year}-${String(focused.month + 1).padStart(2, '0')}`;\n });\n\n protected readonly canPreviousMonth = computed(() => {\n const range = this.fullRange();\n const focused = this.focusedDate();\n if (!range) return false;\n return focused.year > range.baseBeginYear || focused.month > 0;\n });\n\n protected readonly canNextMonth = computed(() => {\n const range = this.fullRange();\n const focused = this.focusedDate();\n if (!range) return false;\n return focused.year < range.baseEndYear || focused.month < 11;\n });\n\n protected readonly years = computed(() => {\n const range = this.displayRange();\n if (!range) return [];\n\n return Array.from(\n { length: range.endYear - range.beginYear + 1 },\n (_, i) => range.beginYear + i,\n );\n });\n\n private readonly displayWindow = computed(() => {\n const range = this.displayRange();\n if (!range) return null;\n\n if (this.monthMode()) {\n const { year, month } = this.focusedDate();\n return {\n begin: new Date(year, month, 1),\n end: new Date(year, month + 1, 0),\n };\n }\n\n return {\n begin: new Date(range.beginYear, 0, 1),\n end: new Date(range.endYear, 11, 31),\n };\n });\n\n protected readonly visiblePeriods = computed(() => {\n const bounds = this.displayWindow();\n if (!bounds) return [];\n\n return this.periods()\n .filter(p => p.endDate >= bounds.begin && p.beginDate <= bounds.end)\n .sort((a, b) => a.beginDate.getTime() - b.beginDate.getTime());\n });\n\n protected readonly displayedRows = computed(() => {\n const bounds = this.displayWindow();\n const periods = this.visiblePeriods();\n if (!bounds || !periods.length) return [];\n\n return splitIntoRows(periods).map(row =>\n buildRow(row, bounds, period => this.colorOf(period)),\n );\n });\n\n protected readonly focusedMonthDays = computed(() => {\n const { year, month } = this.focusedDate();\n const days = new Date(year, month + 1, 0).getDate();\n return Array.from({ length: days }, (_, i) => i + 1);\n });\n\n protected readonly dayWidthPercent = computed(() => {\n const count = this.focusedMonthDays().length;\n return count ? 100 / count : 0;\n });\n\n protected readonly sortedLegend = computed(() => {\n const seen = new Set<string>();\n return (this.legend() ?? [])\n .filter(item => {\n if (seen.has(item.type)) return false;\n seen.add(item.type);\n return true;\n })\n .sort((a, b) => a.label.localeCompare(b.label));\n });\n\n protected readonly visibleFilters = computed(() =>\n limitFilters(this.filters()),\n );\n\n protected getLegend(type?: string): TimelineLegendItem | undefined {\n if (!type) return undefined;\n return this.legend()?.find(l => l.type === type);\n }\n\n protected colorHex(color?: TimelineColor): string {\n return color ? TIMELINE_PALETTE[color] : this.fallbackColor;\n }\n\n private colorOf(period: TimelinePeriod): string {\n return this.colorHex(this.getLegend(period.type)?.color);\n }\n\n protected periodRange(period?: TimelinePeriod): string {\n return period ? formatPeriodRange(period) : '';\n }\n\n protected nextYear(): void {\n this.changeRange.set(Math.min(this.maxOffset(), this.offset() + 1));\n }\n\n protected previousYear(): void {\n this.changeRange.set(Math.max(0, this.offset() - 1));\n }\n\n protected onPeriodChange(value: string | number): void {\n if (value === 'month') {\n const range = this.fullRange();\n const periods = this.periods();\n const earliest = periods.length\n ? periods.reduce((a, b) => (a.beginDate <= b.beginDate ? a : b))\n : null;\n this.focusedDate.set({\n year: earliest?.beginDate.getFullYear() ?? range?.baseBeginYear ?? 0,\n month: earliest?.beginDate.getMonth() ?? 0,\n });\n this.monthMode.set(true);\n this.axisUnitChange.emit('days');\n } else {\n this.monthMode.set(false);\n this.changeRange.set(0);\n this.fixedYearCount.set(Number(value));\n this.axisUnitChange.emit('months');\n }\n }\n\n protected goToMonth(value: string): void {\n if (!value) return;\n const year = Number(value.slice(0, 4));\n const month = Number(value.slice(5, 7)) - 1;\n if (Number.isNaN(year) || Number.isNaN(month)) return;\n this.focusedDate.set({ year, month });\n }\n\n protected previousMonth(): void {\n const { year, month } = this.focusedDate();\n if (!this.canPreviousMonth()) return;\n this.focusedDate.set(\n month > 0 ? { year, month: month - 1 } : { year: year - 1, month: 11 },\n );\n }\n\n protected nextMonth(): void {\n const { year, month } = this.focusedDate();\n if (!this.canNextMonth()) return;\n this.focusedDate.set(\n month < 11 ? { year, month: month + 1 } : { year: year + 1, month: 0 },\n );\n }\n\n protected onFilterChange(value: string | undefined): void {\n this.activeFilter.set(value);\n this.filterChange.emit(value);\n }\n\n protected selectPeriod(period?: TimelinePeriod): void {\n if (!period || period.disabled) return;\n this.activeType.set(undefined);\n this.selectedPeriod.set(period);\n }\n\n protected onLegendSelect(item: TimelineLegendItem): void {\n const match = this.periods().find(p => p.type === item.type && !p.disabled);\n if (!match) return;\n\n if (this.monthMode()) {\n this.focusedDate.set({\n year: match.beginDate.getFullYear(),\n month: match.beginDate.getMonth(),\n });\n } else {\n const range = this.fullRange();\n if (range) {\n const target = match.beginDate.getFullYear() - range.baseBeginYear;\n this.changeRange.set(Math.min(Math.max(target, 0), this.maxOffset()));\n }\n }\n\n this.activeType.set(item.type);\n this.selectedPeriod.set(match);\n }\n\n protected isActive(period?: TimelinePeriod): boolean {\n if (!period || period.disabled) return false;\n const type = this.activeType();\n if (type && period.type === type) return true;\n return period.id === this.selectedPeriod()?.id;\n }\n\n protected showPeriodTooltip(\n period?: TimelinePeriod,\n origin?: CdkOverlayOrigin,\n ): void {\n if (!period) return;\n this.tooltipInfo.set({ visible: true, period, origin });\n }\n\n protected hidePeriodTooltip(): void {\n this.tooltipInfo.set({ visible: false });\n }\n\n protected isTooltipOpenFor(period?: TimelinePeriod): boolean {\n const info = this.tooltipInfo();\n return info.visible && !!period && info.period?.id === period.id;\n }\n\n protected ariaLabel(period?: TimelinePeriod): string | null {\n if (!period) return null;\n const name = period.label ?? period.type ?? '';\n return [name, this.periodRange(period)].filter(Boolean).join(', ') || null;\n }\n}\n\ninterface TooltipInfo {\n visible: boolean;\n period?: TimelinePeriod;\n origin?: CdkOverlayOrigin;\n}\n","<div class=\"container\">\n @if (periods().length !== 0) {\n <div class=\"navigation\">\n <div class=\"nav-info\">\n @if (title()) {\n <p class=\"timeline-title\">{{ title() }}</p>\n }\n <span class=\"timeline-range\">\n @if (monthMode()) {\n {{ monthLabel() }}\n } @else {\n {{ displayRange()?.beginYear }} - {{ displayRange()?.endYear }}\n }\n </span>\n </div>\n\n <div class=\"nav-controls\">\n <div class=\"nav-pager\">\n <button\n mat-icon-button\n data-cy=\"timeline-prev\"\n [attr.aria-label]=\"\n (monthMode() ? 'timeline.previousMonth' : 'timeline.previousYear')\n | translate\n \"\n [disabled]=\"monthMode() ? !canPreviousMonth() : !canPrevious()\"\n (click)=\"monthMode() ? previousMonth() : previousYear()\"\n >\n <mat-icon>arrow_back_ios</mat-icon>\n </button>\n <button\n mat-icon-button\n data-cy=\"timeline-next\"\n [attr.aria-label]=\"\n (monthMode() ? 'timeline.nextMonth' : 'timeline.nextYear')\n | translate\n \"\n [disabled]=\"monthMode() ? !canNextMonth() : !canNext()\"\n (click)=\"monthMode() ? nextMonth() : nextYear()\"\n >\n <mat-icon>arrow_forward_ios</mat-icon>\n </button>\n </div>\n\n <mat-form-field\n class=\"timeline-field timeline-period\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n >\n <mat-label>{{ 'timeline.period' | translate }}</mat-label>\n <mat-select\n [attr.aria-label]=\"'timeline.period' | translate\"\n [value]=\"monthMode() ? 'month' : fixedYearCount()\"\n (selectionChange)=\"onPeriodChange($event.value)\"\n >\n @if (showMonthPicker()) {\n <mat-option value=\"month\" data-cy=\"timeline-period-month\">\n {{ 'timeline.month' | translate }}\n </mat-option>\n }\n @for (option of yearOptions(); track option) {\n <mat-option\n [value]=\"option\"\n [attr.data-cy]=\"'timeline-period-' + option\"\n >\n {{ option }}\n {{\n (option === 1 ? 'timeline.year' : 'timeline.years')\n | translate\n }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n @if (showMonthPicker() && monthMode()) {\n <mat-form-field\n class=\"timeline-field timeline-month-jump\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n >\n <mat-label>{{ 'timeline.goToMonth' | translate }}</mat-label>\n <mat-select\n data-cy=\"timeline-month-jump\"\n [attr.aria-label]=\"'timeline.goToMonth' | translate\"\n [value]=\"focusedMonthValue()\"\n (selectionChange)=\"goToMonth($event.value)\"\n >\n @for (month of monthList(); track month.value) {\n <mat-option [value]=\"month.value\">{{ month.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n\n @if (visibleFilters().length) {\n <mat-divider vertical class=\"nav-divider\" />\n <mat-button-toggle-group\n class=\"timeline-filters\"\n [value]=\"activeFilter()\"\n (change)=\"onFilterChange($any($event).value)\"\n >\n @for (filter of visibleFilters(); track filter.value) {\n <mat-button-toggle\n class=\"filter-toggle\"\n [value]=\"filter.value\"\n [attr.aria-label]=\"filter.label\"\n >\n {{ filter.label }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n }\n </div>\n </div>\n\n <div\n class=\"timeline-scroll\"\n [class.full-size]=\"fullSize()\"\n [style.max-height]=\"scrollMaxHeight()\"\n >\n <div class=\"timelineContainer\">\n <div class=\"timeline-years\">\n @for (year of years(); track 'axis-' + year) {\n <div class=\"axis-col\">{{ monthMode() ? monthLabel() : year }}</div>\n }\n </div>\n\n <div class=\"timeline-plot\" [style.height.px]=\"plotHeightPx()\">\n <div class=\"timeline-grid\">\n @for (year of years(); track 'grid-' + year) {\n <div class=\"grid-col\"></div>\n }\n </div>\n\n <div class=\"timeline\">\n @for (row of displayedRows(); track $index) {\n <div class=\"timeline-row\">\n @for (item of row; track item.trackById) {\n <div\n [class]=\"item.class\"\n [class.selected]=\"isActive(item.period)\"\n [style]=\"item.style\"\n [attr.role]=\"\n item.period && !item.period.disabled ? 'button' : null\n \"\n [attr.tabindex]=\"\n item.period && !item.period.disabled ? 0 : null\n \"\n [attr.aria-label]=\"ariaLabel(item?.period)\"\n [attr.aria-describedby]=\"\n isTooltipOpenFor(item?.period) ? tooltipId : null\n \"\n (mouseenter)=\"showPeriodTooltip(item?.period, origin)\"\n (mouseleave)=\"hidePeriodTooltip()\"\n (focus)=\"showPeriodTooltip(item?.period, origin)\"\n (blur)=\"hidePeriodTooltip()\"\n (click)=\"selectPeriod(item?.period)\"\n (keydown.enter)=\"selectPeriod(item?.period)\"\n (keydown.space)=\"selectPeriod(item?.period)\"\n (keydown.escape)=\"hidePeriodTooltip()\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n @if (showLabels() && item.period?.label) {\n <span class=\"period-label\">{{ item.period.label }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n @if (showMonths() && years().length <= 5) {\n <div class=\"timeline-months\">\n @if (monthMode()) {\n <div class=\"months-col\">\n @for (day of focusedMonthDays(); track day) {\n <span class=\"month\" [style.width.%]=\"dayWidthPercent()\">{{\n day\n }}</span>\n }\n </div>\n } @else {\n @for (year of years(); track 'months-' + year) {\n <div class=\"months-col\">\n @for (\n month of monthsByYear().get(year) ?? [];\n track month.month\n ) {\n <span class=\"month\" [style.width.%]=\"month.widthPercent\">{{\n month.month\n }}</span>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n </div>\n\n <div class=\"timeline-legend\">\n @for (legendItem of sortedLegend(); track legendItem) {\n <button\n type=\"button\"\n class=\"legend-item\"\n [attr.aria-label]=\"\n 'timeline.goTo' | translate: { label: legendItem.label }\n \"\n (click)=\"onLegendSelect(legendItem)\"\n >\n <span\n class=\"legend-color\"\n [style.background-color]=\"colorHex(legendItem.color)\"\n ></span>\n <span class=\"legend-label\">{{ legendItem.label }}</span>\n </button>\n }\n </div>\n\n @if (showTooltip() && tooltipInfo().visible && tooltipInfo().origin) {\n @let period = tooltipInfo().period;\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"tooltipInfo().origin!\"\n [cdkConnectedOverlayOpen]=\"true\"\n [cdkConnectedOverlayPositions]=\"tooltipPositions\"\n >\n <div\n class=\"tooltip\"\n role=\"tooltip\"\n [id]=\"tooltipId\"\n [style.border-color]=\"colorHex(getLegend(period?.type)?.color)\"\n >\n <div class=\"tooltip-title\">{{ periodRange(period) }}</div>\n @if (period?.label) {\n <div class=\"tooltip-label\">{{ period?.label }}</div>\n }\n @if (period?.description) {\n <div\n class=\"tooltip-description\"\n [innerHTML]=\"period?.description\"\n ></div>\n }\n </div>\n </ng-template>\n }\n } @else if (emptyMessage()) {\n <div class=\"parentDiv\">\n <p>{{ emptyMessage() }}</p>\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { OnemrvaTimelineComponent } from './onemrva-timeline.component';\n\n@NgModule({\n declarations: [],\n imports: [OnemrvaTimelineComponent],\n exports: [OnemrvaTimelineComponent],\n})\nexport class OnemrvaTimelineModule {}\n","/*\n * Public API Surface of timeline\n */\n\nexport * from './src/onemrva-timeline.component';\nexport * from './src/onemrva-timeline.module';\nexport * from './src/models/timeline-period.model';\nexport * from './src/models/timeline-legend.model';\nexport * from './src/models/timeline-filter.model';\nexport * from './src/models/timeline-color.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onemrvapublic-design-system.mjs","sources":["../../../../projects/onemrva/design-system/version.ts","../../../../projects/onemrva/design-system/index.ts","../../../../projects/onemrva/design-system/onemrvapublic-design-system.ts"],"sourcesContent":["// Auto-generated — do not edit\nexport const VERSION = '22.0.0-develop.
|
|
1
|
+
{"version":3,"file":"onemrvapublic-design-system.mjs","sources":["../../../../projects/onemrva/design-system/version.ts","../../../../projects/onemrva/design-system/index.ts","../../../../projects/onemrva/design-system/onemrvapublic-design-system.ts"],"sourcesContent":["// Auto-generated — do not edit\nexport const VERSION = '22.0.0-develop.8';\n","export { VERSION } from './version';\n\nexport const ɵɵtsModuleIndicatorApiExtractorWorkaround = true;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;AACO,MAAM,OAAO,GAAG;;ACChB,MAAM,yCAAyC,GAAG;;ACFzD;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onemrvapublic/design-system",
|
|
3
|
-
"version": "22.0.0-develop.
|
|
3
|
+
"version": "22.0.0-develop.8",
|
|
4
4
|
"description": "Design System Onem/Rva without theme included",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -218,6 +218,10 @@
|
|
|
218
218
|
"./shared": {
|
|
219
219
|
"types": "./types/onemrvapublic-design-system-shared.d.ts",
|
|
220
220
|
"default": "./fesm2022/onemrvapublic-design-system-shared.mjs"
|
|
221
|
+
},
|
|
222
|
+
"./timeline": {
|
|
223
|
+
"types": "./types/onemrvapublic-design-system-timeline.d.ts",
|
|
224
|
+
"default": "./fesm2022/onemrvapublic-design-system-timeline.mjs"
|
|
221
225
|
}
|
|
222
226
|
},
|
|
223
227
|
"module": "fesm2022/onemrvapublic-design-system.mjs",
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
$timeline-grid: #d7d5ed;
|
|
2
|
+
$timeline-ink: #242424;
|
|
3
|
+
$timeline-accent: #625d9c;
|
|
4
|
+
$timeline-muted: #78767d;
|
|
5
|
+
$timeline-bar-height: 40px;
|
|
6
|
+
$timeline-row-gap: 16px;
|
|
7
|
+
|
|
8
|
+
.container {
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
width: 100%;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.navigation {
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: row;
|
|
17
|
+
flex-wrap: wrap;
|
|
18
|
+
justify-content: space-between;
|
|
19
|
+
align-items: flex-end;
|
|
20
|
+
gap: 16px;
|
|
21
|
+
margin-bottom: 12px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.nav-info {
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.timeline-title {
|
|
30
|
+
margin: 0;
|
|
31
|
+
font-size: 18px;
|
|
32
|
+
font-weight: 600;
|
|
33
|
+
color: $timeline-ink;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.timeline-range {
|
|
37
|
+
font-size: 14px;
|
|
38
|
+
color: $timeline-ink;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.nav-controls {
|
|
42
|
+
display: flex;
|
|
43
|
+
flex-wrap: wrap;
|
|
44
|
+
align-items: flex-end;
|
|
45
|
+
gap: 12px;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.nav-pager {
|
|
49
|
+
display: flex;
|
|
50
|
+
align-items: center;
|
|
51
|
+
color: $timeline-ink;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.nav-divider {
|
|
55
|
+
align-self: center;
|
|
56
|
+
height: 28px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.timeline-field {
|
|
60
|
+
width: 150px;
|
|
61
|
+
padding: 0;
|
|
62
|
+
--mat-form-field-container-height: 40px;
|
|
63
|
+
--mat-form-field-container-vertical-padding: 8px;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.timeline-month-jump {
|
|
67
|
+
width: 168px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.timeline-field ::ng-deep .mat-mdc-form-field-subscript-wrapper {
|
|
71
|
+
display: none;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.timeline-field
|
|
75
|
+
::ng-deep
|
|
76
|
+
.mat-mdc-text-field-wrapper.mdc-text-field--outlined
|
|
77
|
+
.mdc-notched-outline--upgraded
|
|
78
|
+
.mdc-floating-label--float-above {
|
|
79
|
+
--mat-form-field-container-height: 40px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.timeline-scroll {
|
|
83
|
+
overflow: auto;
|
|
84
|
+
overscroll-behavior: contain;
|
|
85
|
+
scroll-snap-type: y mandatory;
|
|
86
|
+
scroll-padding-top: 26px;
|
|
87
|
+
scrollbar-width: thin;
|
|
88
|
+
scrollbar-color: #cfcde0 transparent;
|
|
89
|
+
|
|
90
|
+
&::-webkit-scrollbar {
|
|
91
|
+
width: 8px;
|
|
92
|
+
height: 8px;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
&::-webkit-scrollbar-track {
|
|
96
|
+
background: transparent;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
&::-webkit-scrollbar-thumb {
|
|
100
|
+
background: #cfcde0;
|
|
101
|
+
border-radius: 4px;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
&::-webkit-scrollbar-thumb:hover {
|
|
105
|
+
background: #bdbad4;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.timeline-scroll.full-size {
|
|
110
|
+
max-height: none;
|
|
111
|
+
overflow-y: hidden;
|
|
112
|
+
scroll-snap-type: none;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.timelineContainer {
|
|
116
|
+
position: relative;
|
|
117
|
+
display: inline-flex;
|
|
118
|
+
flex-direction: column;
|
|
119
|
+
min-width: 100%;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.timeline-years {
|
|
123
|
+
position: sticky;
|
|
124
|
+
top: 0;
|
|
125
|
+
z-index: 500;
|
|
126
|
+
display: flex;
|
|
127
|
+
flex-direction: row;
|
|
128
|
+
background-color: #ffffff;
|
|
129
|
+
box-shadow: 0 3px 4px -2px rgba(0, 0, 0, 0.12);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.timeline-years .axis-col {
|
|
133
|
+
flex: 1 0 56px;
|
|
134
|
+
height: 25px;
|
|
135
|
+
line-height: 25px;
|
|
136
|
+
border-right: solid 1px $timeline-grid;
|
|
137
|
+
border-bottom: solid 1px $timeline-grid;
|
|
138
|
+
text-align: center;
|
|
139
|
+
color: $timeline-ink;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.timeline-years .axis-col:first-child {
|
|
143
|
+
border-left: solid 1px $timeline-grid;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.timeline-plot {
|
|
147
|
+
position: relative;
|
|
148
|
+
overflow: hidden;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.timeline-grid {
|
|
152
|
+
position: absolute;
|
|
153
|
+
inset: 0;
|
|
154
|
+
display: flex;
|
|
155
|
+
flex-direction: row;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.timeline-grid .grid-col {
|
|
159
|
+
flex: 1 0 56px;
|
|
160
|
+
border-right: solid 1px $timeline-grid;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.timeline-grid .grid-col:first-child {
|
|
164
|
+
border-left: solid 1px $timeline-grid;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.timeline {
|
|
168
|
+
position: absolute;
|
|
169
|
+
top: 8px;
|
|
170
|
+
left: 4px;
|
|
171
|
+
right: 4px;
|
|
172
|
+
display: flex;
|
|
173
|
+
flex-direction: column;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.timeline-months {
|
|
177
|
+
position: sticky;
|
|
178
|
+
bottom: 0;
|
|
179
|
+
z-index: 500;
|
|
180
|
+
display: flex;
|
|
181
|
+
flex-direction: row;
|
|
182
|
+
background-color: #ffffff;
|
|
183
|
+
border-top: solid 1px $timeline-grid;
|
|
184
|
+
box-shadow: 0 -3px 4px -2px rgba(0, 0, 0, 0.12);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.timeline-months .months-col {
|
|
188
|
+
flex: 1 0 56px;
|
|
189
|
+
height: 29px;
|
|
190
|
+
border-right: solid 1px $timeline-grid;
|
|
191
|
+
font-size: 0;
|
|
192
|
+
white-space: nowrap;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.timeline-months .months-col:first-child {
|
|
196
|
+
border-left: solid 1px $timeline-grid;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.timeline-months .month {
|
|
200
|
+
display: inline-block;
|
|
201
|
+
box-sizing: border-box;
|
|
202
|
+
height: 29px;
|
|
203
|
+
line-height: 29px;
|
|
204
|
+
font-size: 12px;
|
|
205
|
+
color: #9a98a8;
|
|
206
|
+
text-align: center;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.timeline-row {
|
|
210
|
+
display: flex;
|
|
211
|
+
height: $timeline-bar-height;
|
|
212
|
+
margin-bottom: $timeline-row-gap;
|
|
213
|
+
scroll-snap-align: start;
|
|
214
|
+
will-change: transform;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.item {
|
|
218
|
+
height: $timeline-bar-height;
|
|
219
|
+
min-width: 0;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.period {
|
|
223
|
+
display: flex;
|
|
224
|
+
align-items: center;
|
|
225
|
+
height: $timeline-bar-height;
|
|
226
|
+
min-width: 0;
|
|
227
|
+
padding: 0 8px;
|
|
228
|
+
border-radius: 4px;
|
|
229
|
+
color: #ffffff;
|
|
230
|
+
font-size: 14px;
|
|
231
|
+
overflow: hidden;
|
|
232
|
+
z-index: 200;
|
|
233
|
+
transition:
|
|
234
|
+
box-shadow 0.15s ease,
|
|
235
|
+
opacity 0.15s ease;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.period-label {
|
|
239
|
+
overflow: hidden;
|
|
240
|
+
white-space: nowrap;
|
|
241
|
+
text-overflow: ellipsis;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.period:hover {
|
|
245
|
+
box-shadow: 0 3px 3px rgba(0, 0, 0, 0.32);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.period.selected {
|
|
249
|
+
box-shadow: 0 0 0 2px $timeline-ink;
|
|
250
|
+
z-index: 250;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.period:focus-visible {
|
|
254
|
+
outline: none;
|
|
255
|
+
box-shadow:
|
|
256
|
+
inset 0 0 0 2px #ffffff,
|
|
257
|
+
inset 0 0 0 4px $timeline-ink;
|
|
258
|
+
z-index: 250;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.period.disabled {
|
|
262
|
+
opacity: 0.4;
|
|
263
|
+
cursor: default;
|
|
264
|
+
pointer-events: none;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.cursor {
|
|
268
|
+
cursor: pointer;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.timeline-legend {
|
|
272
|
+
display: flex;
|
|
273
|
+
flex-wrap: wrap;
|
|
274
|
+
gap: 12px;
|
|
275
|
+
margin-top: 20px;
|
|
276
|
+
justify-content: flex-end;
|
|
277
|
+
|
|
278
|
+
.legend-item {
|
|
279
|
+
display: flex;
|
|
280
|
+
align-items: center;
|
|
281
|
+
gap: 6px;
|
|
282
|
+
margin: 0;
|
|
283
|
+
padding: 2px 4px;
|
|
284
|
+
background: none;
|
|
285
|
+
border: none;
|
|
286
|
+
border-radius: 4px;
|
|
287
|
+
font: inherit;
|
|
288
|
+
color: inherit;
|
|
289
|
+
cursor: pointer;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.legend-item:hover .legend-label {
|
|
293
|
+
text-decoration: underline;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.legend-item:focus-visible {
|
|
297
|
+
outline: 2px solid $timeline-accent;
|
|
298
|
+
outline-offset: 1px;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.legend-color {
|
|
302
|
+
width: 16px;
|
|
303
|
+
height: 16px;
|
|
304
|
+
border-radius: 3px;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.legend-label {
|
|
308
|
+
font-size: 14px;
|
|
309
|
+
color: $timeline-ink;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.tooltip {
|
|
314
|
+
position: absolute;
|
|
315
|
+
transform: translateX(-50%);
|
|
316
|
+
background-color: #ffffff;
|
|
317
|
+
border: 1px solid $timeline-grid;
|
|
318
|
+
border-radius: 4px;
|
|
319
|
+
padding: 10px 15px;
|
|
320
|
+
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
|
321
|
+
color: $timeline-ink;
|
|
322
|
+
z-index: 999;
|
|
323
|
+
width: 300px;
|
|
324
|
+
max-width: 90vw;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.tooltip-title {
|
|
328
|
+
font-weight: 600;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.tooltip-label {
|
|
332
|
+
margin-top: 2px;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
.tooltip-description {
|
|
336
|
+
margin-top: 2px;
|
|
337
|
+
color: $timeline-muted;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
@media (max-width: 600px) {
|
|
341
|
+
.navigation {
|
|
342
|
+
flex-direction: column;
|
|
343
|
+
align-items: stretch;
|
|
344
|
+
gap: 12px;
|
|
345
|
+
margin-bottom: 16px;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.nav-controls {
|
|
349
|
+
justify-content: flex-start;
|
|
350
|
+
gap: 12px;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.nav-divider {
|
|
354
|
+
display: none;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
.timeline-filters ::ng-deep .mat-button-toggle-label-content {
|
|
358
|
+
padding: 0 10px;
|
|
359
|
+
font-size: 0.875rem;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.timeline-title {
|
|
363
|
+
font-size: 16px;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.timeline-legend {
|
|
367
|
+
margin-top: 16px;
|
|
368
|
+
justify-content: flex-start;
|
|
369
|
+
gap: 8px 16px;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
@@ -15,8 +15,8 @@ declare class PageErrorComponent implements AfterViewInit, OnDestroy {
|
|
|
15
15
|
readonly code: _angular_core.InputSignal<number>;
|
|
16
16
|
readonly safeCode: _angular_core.Signal<number>;
|
|
17
17
|
private cdn;
|
|
18
|
+
private translateService;
|
|
18
19
|
private renderer;
|
|
19
|
-
private translate;
|
|
20
20
|
private cd;
|
|
21
21
|
constructor();
|
|
22
22
|
ngAfterViewInit(): void;
|